runtype 0.3.0 → 0.11.1

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 (572) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +919 -0
  3. data/README.md +118 -12
  4. data/generated/lib/runtype/agent_aliases/client.rb +153 -0
  5. data/generated/lib/runtype/agent_aliases/types/delete_v1agents_id_aliases_alias_bindings_request.rb +17 -0
  6. data/generated/lib/runtype/agent_aliases/types/delete_v1agents_id_aliases_alias_bindings_response.rb +19 -0
  7. data/generated/lib/runtype/agent_aliases/types/get_v1agents_id_aliases_alias_bindings_request.rb +13 -0
  8. data/generated/lib/runtype/agent_aliases/types/get_v1agents_id_aliases_alias_bindings_response.rb +19 -0
  9. data/generated/lib/runtype/agent_aliases/types/get_v1agents_id_aliases_alias_response.rb +2 -0
  10. data/generated/lib/runtype/agent_aliases/types/get_v1agents_id_aliases_response.rb +2 -0
  11. data/generated/lib/runtype/agent_aliases/types/get_v1agents_id_aliases_response_data_item.rb +2 -0
  12. data/generated/lib/runtype/agent_aliases/types/get_v1agents_id_deployments_response_data_item.rb +2 -0
  13. data/generated/lib/runtype/agent_aliases/types/post_v1agents_id_aliases_alias_rollback_response.rb +2 -0
  14. data/generated/lib/runtype/agent_aliases/types/put_v1agents_id_aliases_alias_bindings_request.rb +21 -0
  15. data/generated/lib/runtype/agent_aliases/types/put_v1agents_id_aliases_alias_bindings_response.rb +19 -0
  16. data/generated/lib/runtype/agent_aliases/types/put_v1agents_id_aliases_alias_response.rb +2 -0
  17. data/generated/lib/runtype/agent_feedback/client.rb +58 -0
  18. data/generated/lib/runtype/agent_feedback/types/post_v1agent_feedback_request.rb +19 -0
  19. data/generated/lib/runtype/agent_feedback/types/post_v1agent_feedback_request_category.rb +19 -0
  20. data/generated/lib/runtype/agent_feedback/types/post_v1agent_feedback_response.rb +13 -0
  21. data/generated/lib/runtype/agent_feedback/types/post_v1agent_feedback_response_status.rb +13 -0
  22. data/generated/lib/runtype/agent_versions/client.rb +13 -1
  23. data/generated/lib/runtype/agent_versions/types/post_v1agent_versions_agent_id_publish_request.rb +6 -0
  24. data/generated/lib/runtype/agent_versions/types/post_v1agent_versions_agent_id_publish_request_deployment.rb +11 -0
  25. data/generated/lib/runtype/agent_versions/types/post_v1agent_versions_agent_id_publish_request_deployment_action.rb +14 -0
  26. data/generated/lib/runtype/agent_versions/types/post_v1agent_versions_agent_id_publish_response.rb +1 -1
  27. data/generated/lib/runtype/agents/client.rb +127 -14
  28. data/generated/lib/runtype/agents/types/create_voice_agent_draft_request.rb +17 -0
  29. data/generated/lib/runtype/agents/types/create_voice_agent_draft_request_config.rb +59 -0
  30. data/generated/lib/runtype/agents/types/create_voice_agent_draft_request_config_advisor.rb +13 -0
  31. data/generated/lib/runtype/agents/types/create_voice_agent_draft_request_config_artifacts.rb +13 -0
  32. data/generated/lib/runtype/agents/types/create_voice_agent_draft_request_config_artifacts_types_item.rb +14 -0
  33. data/generated/lib/runtype/agents/types/create_voice_agent_draft_request_config_context_management.rb +13 -0
  34. data/generated/lib/runtype/agents/types/create_voice_agent_draft_request_config_context_management_compaction.rb +23 -0
  35. data/generated/lib/runtype/agents/types/create_voice_agent_draft_request_config_context_management_compaction_strategy.rb +15 -0
  36. data/generated/lib/runtype/agents/types/create_voice_agent_draft_request_config_context_management_tool_results.rb +15 -0
  37. data/generated/lib/runtype/agents/types/create_voice_agent_draft_request_config_context_management_tool_results_prune_mode.rb +14 -0
  38. data/generated/lib/runtype/agents/types/create_voice_agent_draft_request_config_durability.rb +15 -0
  39. data/generated/lib/runtype/agents/types/create_voice_agent_draft_request_config_durability_forced.rb +14 -0
  40. data/generated/lib/runtype/agents/types/create_voice_agent_draft_request_config_error_handling.rb +15 -0
  41. data/generated/lib/runtype/agents/types/create_voice_agent_draft_request_config_error_handling_fallbacks_item.rb +19 -0
  42. data/generated/lib/runtype/agents/types/create_voice_agent_draft_request_config_error_handling_fallbacks_item_message.rb +13 -0
  43. data/generated/lib/runtype/agents/types/create_voice_agent_draft_request_config_error_handling_fallbacks_item_model.rb +17 -0
  44. data/generated/lib/runtype/agents/types/create_voice_agent_draft_request_config_error_handling_fallbacks_item_retry.rb +11 -0
  45. data/generated/lib/runtype/agents/types/create_voice_agent_draft_request_config_error_handling_on_error.rb +15 -0
  46. data/generated/lib/runtype/agents/types/create_voice_agent_draft_request_config_error_handling_triggers_item.rb +11 -0
  47. data/generated/lib/runtype/agents/types/create_voice_agent_draft_request_config_error_handling_triggers_item_type.rb +14 -0
  48. data/generated/lib/runtype/agents/types/create_voice_agent_draft_request_config_logging_policy.rb +15 -0
  49. data/generated/lib/runtype/agents/types/create_voice_agent_draft_request_config_loop_config.rb +19 -0
  50. data/generated/lib/runtype/agents/types/create_voice_agent_draft_request_config_memory.rb +17 -0
  51. data/generated/lib/runtype/agents/types/create_voice_agent_draft_request_config_memory_pointer_scope.rb +15 -0
  52. data/generated/lib/runtype/agents/types/create_voice_agent_draft_request_config_pii_redaction.rb +15 -0
  53. data/generated/lib/runtype/agents/types/create_voice_agent_draft_request_config_reasoning.rb +15 -0
  54. data/generated/lib/runtype/agents/types/create_voice_agent_draft_request_config_reasoning_budget_tokens.rb +25 -0
  55. data/generated/lib/runtype/agents/types/create_voice_agent_draft_request_config_reasoning_budget_tokens_reasoning_effort.rb +17 -0
  56. data/generated/lib/runtype/agents/types/create_voice_agent_draft_request_config_reasoning_budget_tokens_reasoning_summary.rb +14 -0
  57. data/generated/lib/runtype/agents/types/create_voice_agent_draft_request_config_sandbox.rb +29 -0
  58. data/generated/lib/runtype/agents/types/create_voice_agent_draft_request_config_sandbox_coding_agents_item.rb +13 -0
  59. data/generated/lib/runtype/agents/types/create_voice_agent_draft_request_config_sandbox_instance_type.rb +16 -0
  60. data/generated/lib/runtype/agents/types/create_voice_agent_draft_request_config_sandbox_network_access.rb +15 -0
  61. data/generated/lib/runtype/agents/types/create_voice_agent_draft_request_config_sandbox_network_access_allow.rb +13 -0
  62. data/generated/lib/runtype/agents/types/create_voice_agent_draft_request_config_sandbox_network_access_allow_profile.rb +15 -0
  63. data/generated/lib/runtype/agents/types/create_voice_agent_draft_request_config_sandbox_network_access_zero.rb +15 -0
  64. data/generated/lib/runtype/agents/types/create_voice_agent_draft_request_config_sandbox_persistence.rb +15 -0
  65. data/generated/lib/runtype/agents/types/create_voice_agent_draft_request_config_sandbox_provider.rb +14 -0
  66. data/generated/lib/runtype/agents/types/create_voice_agent_draft_request_config_sandbox_sleep_after.rb +16 -0
  67. data/generated/lib/runtype/agents/types/create_voice_agent_draft_request_config_sandbox_ttl.rb +16 -0
  68. data/generated/lib/runtype/agents/types/create_voice_agent_draft_request_config_state.rb +17 -0
  69. data/generated/lib/runtype/agents/types/create_voice_agent_draft_request_config_state_merge_strategy.rb +14 -0
  70. data/generated/lib/runtype/agents/types/create_voice_agent_draft_request_config_state_predict_state_item.rb +15 -0
  71. data/generated/lib/runtype/agents/types/create_voice_agent_draft_request_config_temporal.rb +17 -0
  72. data/generated/lib/runtype/agents/types/create_voice_agent_draft_request_config_tenancy_strategy.rb +13 -0
  73. data/generated/lib/runtype/agents/types/create_voice_agent_draft_request_config_tenancy_strategy_assurance_floor.rb +13 -0
  74. data/generated/lib/runtype/agents/types/create_voice_agent_draft_request_config_tenancy_strategy_assurance_floor_end_user.rb +14 -0
  75. data/generated/lib/runtype/agents/types/create_voice_agent_draft_request_config_tenancy_strategy_assurance_floor_tenant.rb +14 -0
  76. data/generated/lib/runtype/agents/types/create_voice_agent_draft_request_config_tenancy_strategy_preset.rb +15 -0
  77. data/generated/lib/runtype/agents/types/create_voice_agent_draft_request_config_tools.rb +31 -0
  78. data/generated/lib/runtype/agents/types/create_voice_agent_draft_request_config_tools_approval.rb +17 -0
  79. data/generated/lib/runtype/agents/types/create_voice_agent_draft_request_config_tools_approval_choices.rb +13 -0
  80. data/generated/lib/runtype/agents/types/create_voice_agent_draft_request_config_tools_approval_require.rb +15 -0
  81. data/generated/lib/runtype/agents/types/create_voice_agent_draft_request_config_tools_code_mode_config.rb +15 -0
  82. data/generated/lib/runtype/agents/types/create_voice_agent_draft_request_config_tools_mcp_servers_item.rb +25 -0
  83. data/generated/lib/runtype/agents/types/create_voice_agent_draft_request_config_tools_mcp_servers_item_auth.rb +21 -0
  84. data/generated/lib/runtype/agents/types/create_voice_agent_draft_request_config_tools_mcp_servers_item_auth_type.rb +18 -0
  85. data/generated/lib/runtype/agents/types/create_voice_agent_draft_request_config_tools_mcp_servers_item_transport.rb +14 -0
  86. data/generated/lib/runtype/agents/types/create_voice_agent_draft_request_config_tools_per_tool_limits_value.rb +13 -0
  87. data/generated/lib/runtype/agents/types/create_voice_agent_draft_request_config_tools_runtime_tools_item.rb +23 -0
  88. data/generated/lib/runtype/agents/types/create_voice_agent_draft_request_config_tools_runtime_tools_item_tool_type.rb +19 -0
  89. data/generated/lib/runtype/agents/types/create_voice_agent_draft_request_config_tools_subagent_config.rb +33 -0
  90. data/generated/lib/runtype/agents/types/create_voice_agent_draft_request_config_tools_subagent_config_default_execution_mode.rb +14 -0
  91. data/generated/lib/runtype/agents/types/create_voice_agent_draft_request_config_tools_subagent_config_default_notify.rb +15 -0
  92. data/generated/lib/runtype/agents/types/create_voice_agent_draft_request_config_tools_subagent_config_execution_modes_item.rb +14 -0
  93. data/generated/lib/runtype/agents/types/create_voice_agent_draft_request_config_tools_tool_call_strategy.rb +15 -0
  94. data/generated/lib/runtype/agents/types/create_voice_agent_draft_request_config_tools_tool_search.rb +15 -0
  95. data/generated/lib/runtype/agents/types/create_voice_agent_draft_request_config_voice.rb +25 -0
  96. data/generated/lib/runtype/agents/types/create_voice_agent_draft_request_config_voice_eleven_labs.rb +17 -0
  97. data/generated/lib/runtype/agents/types/create_voice_agent_draft_request_config_voice_endpointing.rb +13 -0
  98. data/generated/lib/runtype/agents/types/create_voice_agent_draft_request_config_voice_endpointing_strategy.rb +16 -0
  99. data/generated/lib/runtype/agents/types/create_voice_agent_draft_request_config_voice_interruption_mode.rb +15 -0
  100. data/generated/lib/runtype/agents/types/create_voice_agent_draft_request_config_voice_speech.rb +15 -0
  101. data/generated/lib/runtype/agents/types/create_voice_agent_draft_request_config_voice_speech_mode.rb +15 -0
  102. data/generated/lib/runtype/agents/types/create_voice_agent_draft_request_config_voice_speech_synthesizer.rb +17 -0
  103. data/generated/lib/runtype/agents/types/create_voice_agent_draft_request_config_voice_speech_synthesizer_settings.rb +13 -0
  104. data/generated/lib/runtype/agents/types/create_voice_agent_draft_request_config_voice_speech_transcriber.rb +13 -0
  105. data/generated/lib/runtype/agents/types/get_v1agents_id_executions_execution_id_response.rb +6 -0
  106. data/generated/lib/runtype/agents/types/get_v1agents_id_executions_execution_id_response_execution_lane.rb +14 -0
  107. data/generated/lib/runtype/agents/types/get_v1agents_id_executions_execution_id_response_external_telemetry.rb +17 -0
  108. data/generated/lib/runtype/agents/types/get_v1agents_id_executions_execution_id_response_external_telemetry_completeness.rb +16 -0
  109. data/generated/lib/runtype/agents/types/get_v1agents_id_executions_execution_id_response_external_telemetry_source.rb +13 -0
  110. data/generated/lib/runtype/agents/types/get_v1agents_id_executions_execution_id_tool_calls_response_tool_calls_item.rb +14 -0
  111. data/generated/lib/runtype/agents/types/get_v1agents_id_executions_request.rb +2 -0
  112. data/generated/lib/runtype/agents/types/{get_v1agents_id_export_runtime_response_agent_type.rb → get_v1agents_id_executions_request_agent_source.rb} +4 -2
  113. data/generated/lib/runtype/agents/types/get_v1agents_id_executions_response_data_item.rb +2 -0
  114. data/generated/lib/runtype/agents/types/get_v1agents_id_executions_response_data_item_otel_producer.rb +20 -0
  115. data/generated/lib/runtype/agents/types/get_v1agents_id_export_runtime_request.rb +6 -0
  116. data/generated/lib/runtype/agents/types/get_v1agents_id_export_runtime_request_format.rb +14 -0
  117. data/generated/lib/runtype/agents/types/get_v1agents_id_run_insights_request.rb +13 -0
  118. data/generated/lib/runtype/agents/types/get_v1agents_id_run_insights_response.rb +13 -0
  119. data/generated/lib/runtype/agents/types/get_v1agents_id_run_insights_response_data.rb +27 -0
  120. data/generated/lib/runtype/agents/types/get_v1agents_id_run_insights_response_data_cost.rb +11 -0
  121. data/generated/lib/runtype/agents/types/get_v1agents_id_run_insights_response_data_tokens.rb +13 -0
  122. data/generated/lib/runtype/agents/types/get_v1agents_id_run_insights_response_data_tools_item.rb +17 -0
  123. data/generated/lib/runtype/agents/types/get_v1agents_id_run_insights_response_data_versions_item.rb +19 -0
  124. data/generated/lib/runtype/agents/types/get_v1agents_id_run_insights_response_data_window.rb +15 -0
  125. data/generated/lib/runtype/agents/types/post_v1agents_ensure_request.rb +4 -0
  126. data/generated/lib/runtype/agents/types/post_v1agents_ensure_request_definition_config_sandbox.rb +2 -0
  127. data/generated/lib/runtype/agents/types/post_v1agents_ensure_request_definition_config_sandbox_coding_agents_item.rb +13 -0
  128. data/generated/lib/runtype/agents/types/post_v1agents_ensure_request_definition_config_tools.rb +2 -0
  129. data/generated/lib/runtype/agents/types/post_v1agents_ensure_request_definition_config_tools_runtime_tools_item.rb +4 -0
  130. data/generated/lib/runtype/agents/types/post_v1agents_ensure_request_definition_config_tools_tool_search.rb +15 -0
  131. data/generated/lib/runtype/agents/types/post_v1agents_id_execute_request_x_runtype_concurrency.rb +1 -1
  132. data/generated/lib/runtype/agents/types/post_v1agents_request_claude_managed_config.rb +2 -0
  133. data/generated/lib/runtype/agents/types/post_v1agents_request_config_sandbox.rb +2 -0
  134. data/generated/lib/runtype/agents/types/post_v1agents_request_config_sandbox_coding_agents_item.rb +13 -0
  135. data/generated/lib/runtype/agents/types/post_v1agents_request_config_tools.rb +2 -0
  136. data/generated/lib/runtype/agents/types/post_v1agents_request_config_tools_runtime_tools_item.rb +4 -0
  137. data/generated/lib/runtype/agents/types/post_v1agents_request_config_tools_tool_search.rb +15 -0
  138. data/generated/lib/runtype/agents/types/put_v1agents_id_request_claude_managed_config.rb +2 -0
  139. data/generated/lib/runtype/agents/types/put_v1agents_id_request_config_sandbox.rb +2 -0
  140. data/generated/lib/runtype/agents/types/put_v1agents_id_request_config_sandbox_coding_agents_item.rb +13 -0
  141. data/generated/lib/runtype/agents/types/put_v1agents_id_request_config_tools.rb +2 -0
  142. data/generated/lib/runtype/agents/types/put_v1agents_id_request_config_tools_runtime_tools_item.rb +4 -0
  143. data/generated/lib/runtype/agents/types/put_v1agents_id_request_config_tools_tool_search.rb +15 -0
  144. data/generated/lib/runtype/agents/types/put_v1agents_id_response.rb +2 -0
  145. data/generated/lib/runtype/client.rb +25 -5
  146. data/generated/lib/runtype/client_runtime/client.rb +57 -6
  147. data/generated/lib/runtype/client_runtime/types/post_v1client_agents_agent_id_voice_prewarm_request.rb +15 -0
  148. data/generated/lib/runtype/client_runtime/types/post_v1client_chat_request_submit_mode.rb +1 -1
  149. data/generated/lib/runtype/client_runtime/types/post_v1client_init_request_session_id.rb +1 -1
  150. data/generated/lib/runtype/client_runtime/types/post_v1client_init_request_session_id_identity_proof.rb +19 -0
  151. data/generated/lib/runtype/client_runtime/types/post_v1client_init_request_session_id_identity_proof_provider.rb +17 -0
  152. data/generated/lib/runtype/client_runtime/types/post_v1client_init_request_three.rb +1 -1
  153. data/generated/lib/runtype/client_runtime/types/post_v1client_init_request_three_identity_proof.rb +19 -0
  154. data/generated/lib/runtype/client_runtime/types/post_v1client_init_request_three_identity_proof_provider.rb +17 -0
  155. data/generated/lib/runtype/client_runtime/types/post_v1client_init_request_two.rb +1 -1
  156. data/generated/lib/runtype/client_runtime/types/post_v1client_init_request_two_identity_proof.rb +19 -0
  157. data/generated/lib/runtype/client_runtime/types/post_v1client_init_request_two_identity_proof_provider.rb +17 -0
  158. data/generated/lib/runtype/client_runtime/types/post_v1client_init_request_zero.rb +1 -1
  159. data/generated/lib/runtype/client_runtime/types/post_v1client_init_request_zero_identity_proof.rb +19 -0
  160. data/generated/lib/runtype/client_runtime/types/post_v1client_init_request_zero_identity_proof_provider.rb +17 -0
  161. data/generated/lib/runtype/client_runtime/types/post_v1client_init_response_durable_recovery.rb +1 -1
  162. data/generated/lib/runtype/client_tokens/types/post_v1client_tokens_request.rb +2 -0
  163. data/generated/lib/runtype/conversations/client.rb +28 -10
  164. data/generated/lib/runtype/conversations/types/get_v1conversations_id_response.rb +3 -1
  165. data/generated/lib/runtype/conversations/types/post_v1conversations_request.rb +6 -0
  166. data/generated/lib/runtype/conversations/types/post_v1conversations_response.rb +3 -1
  167. data/generated/lib/runtype/conversations/types/put_v1conversations_id_request.rb +7 -1
  168. data/generated/lib/runtype/conversations/types/{put_v1conversations_id_request_messages_item_content_one_item_asset_ref_ref_kind.rb → put_v1conversations_id_request_messages_mode.rb} +3 -3
  169. data/generated/lib/runtype/conversations/types/put_v1conversations_id_response.rb +3 -1
  170. data/generated/lib/runtype/dispatch/client.rb +5 -4
  171. data/generated/lib/runtype/dispatch/types/post_v1dispatch_continue_request_continuation_tool_output_messages_item.rb +4 -0
  172. data/generated/lib/runtype/dispatch/types/post_v1dispatch_continue_request_continuation_tool_output_messages_item_role.rb +1 -0
  173. data/generated/lib/runtype/dispatch/types/post_v1dispatch_continue_request_continuation_tool_output_messages_item_tool_calls_item.rb +17 -0
  174. data/generated/lib/runtype/dispatch/types/post_v1dispatch_continue_request_continuation_tool_output_messages_item_tool_results_item.rb +17 -0
  175. data/generated/lib/runtype/dispatch/types/post_v1dispatch_continue_stream_request_continuation_tool_output_messages_item.rb +4 -0
  176. data/generated/lib/runtype/dispatch/types/post_v1dispatch_continue_stream_request_continuation_tool_output_messages_item_role.rb +1 -0
  177. data/generated/lib/runtype/dispatch/types/post_v1dispatch_continue_stream_request_continuation_tool_output_messages_item_tool_calls_item.rb +17 -0
  178. data/generated/lib/runtype/dispatch/types/post_v1dispatch_continue_stream_request_continuation_tool_output_messages_item_tool_results_item.rb +17 -0
  179. data/generated/lib/runtype/dispatch/types/post_v1dispatch_request_one.rb +2 -0
  180. data/generated/lib/runtype/dispatch/types/post_v1dispatch_request_one_agent_sandbox.rb +2 -0
  181. data/generated/lib/runtype/dispatch/types/post_v1dispatch_request_one_agent_sandbox_coding_agents_item.rb +13 -0
  182. data/generated/lib/runtype/dispatch/types/post_v1dispatch_request_one_history.rb +14 -0
  183. data/generated/lib/runtype/dispatch/types/post_v1dispatch_request_one_messages_item.rb +4 -0
  184. data/generated/lib/runtype/dispatch/types/post_v1dispatch_request_one_messages_item_role.rb +1 -0
  185. data/generated/lib/runtype/dispatch/types/post_v1dispatch_request_one_messages_item_tool_calls_item.rb +17 -0
  186. data/generated/lib/runtype/dispatch/types/post_v1dispatch_request_one_messages_item_tool_results_item.rb +17 -0
  187. data/generated/lib/runtype/dispatch/types/post_v1dispatch_request_zero.rb +2 -0
  188. data/generated/lib/runtype/dispatch/types/post_v1dispatch_request_zero_agent_sandbox.rb +2 -0
  189. data/generated/lib/runtype/dispatch/types/post_v1dispatch_request_zero_agent_sandbox_coding_agents_item.rb +13 -0
  190. data/generated/lib/runtype/dispatch/types/post_v1dispatch_request_zero_history.rb +14 -0
  191. data/generated/lib/runtype/dispatch/types/post_v1dispatch_request_zero_messages_item.rb +4 -0
  192. data/generated/lib/runtype/dispatch/types/post_v1dispatch_request_zero_messages_item_role.rb +1 -0
  193. data/generated/lib/runtype/dispatch/types/post_v1dispatch_request_zero_messages_item_tool_calls_item.rb +17 -0
  194. data/generated/lib/runtype/dispatch/types/post_v1dispatch_request_zero_messages_item_tool_results_item.rb +17 -0
  195. data/generated/lib/runtype/dispatch/types/post_v1dispatch_resume_request_messages_item.rb +4 -0
  196. data/generated/lib/runtype/dispatch/types/post_v1dispatch_resume_request_messages_item_role.rb +1 -0
  197. data/generated/lib/runtype/dispatch/types/post_v1dispatch_resume_request_messages_item_tool_calls_item.rb +17 -0
  198. data/generated/lib/runtype/dispatch/types/post_v1dispatch_resume_request_messages_item_tool_results_item.rb +17 -0
  199. data/generated/lib/runtype/dispatch/types/post_v1dispatch_resume_stream_request_messages_item.rb +4 -0
  200. data/generated/lib/runtype/dispatch/types/post_v1dispatch_resume_stream_request_messages_item_role.rb +1 -0
  201. data/generated/lib/runtype/dispatch/types/post_v1dispatch_resume_stream_request_messages_item_tool_calls_item.rb +17 -0
  202. data/generated/lib/runtype/dispatch/types/post_v1dispatch_resume_stream_request_messages_item_tool_results_item.rb +17 -0
  203. data/generated/lib/runtype/documentation/client.rb +2 -3
  204. data/generated/lib/runtype/documentation/types/post_v1documentation_build_instructions_request.rb +2 -0
  205. data/generated/lib/runtype/evals/client.rb +4 -1
  206. data/generated/lib/runtype/executions/client.rb +3 -1
  207. data/generated/lib/runtype/executions/types/get_v1executions_execution_id_status_response.rb +6 -0
  208. data/generated/lib/runtype/executions/types/get_v1executions_execution_id_status_response_execution_lane.rb +14 -0
  209. data/generated/lib/runtype/identity_integrations/client.rb +39 -0
  210. data/generated/lib/runtype/logs/client.rb +166 -8
  211. data/generated/lib/runtype/logs/types/get_v1logs_context_execution_id_blocks_request.rb +13 -0
  212. data/generated/lib/runtype/logs/types/get_v1logs_context_execution_id_blocks_response.rb +13 -0
  213. data/generated/lib/runtype/logs/types/get_v1logs_context_execution_id_request.rb +11 -0
  214. data/generated/lib/runtype/logs/types/{get_v1logs_debug_response.rb → get_v1logs_context_execution_id_response.rb} +2 -2
  215. data/generated/lib/runtype/logs/types/get_v1logs_entry_request.rb +15 -0
  216. data/generated/lib/runtype/logs/types/get_v1logs_entry_response.rb +13 -0
  217. data/generated/lib/runtype/logs/types/get_v1logs_entry_response_data.rb +11 -0
  218. data/generated/lib/runtype/logs/types/get_v1logs_request.rb +8 -0
  219. data/generated/lib/runtype/logs/types/get_v1logs_response.rb +2 -0
  220. data/generated/lib/runtype/logs/types/get_v1logs_response_data.rb +2 -0
  221. data/generated/lib/runtype/logs/types/get_v1logs_response_data_live.rb +17 -0
  222. data/generated/lib/runtype/logs/types/get_v1logs_response_data_live_reason.rb +14 -0
  223. data/generated/lib/runtype/logs/types/get_v1logs_response_data_pagination.rb +2 -0
  224. data/generated/lib/runtype/logs/types/get_v1logs_response_window.rb +14 -0
  225. data/generated/lib/runtype/logs/types/get_v1logs_stats_request.rb +8 -0
  226. data/generated/lib/runtype/logs/types/get_v1logs_stats_response.rb +2 -0
  227. data/generated/lib/runtype/logs/types/get_v1logs_stats_response_data.rb +4 -0
  228. data/generated/lib/runtype/logs/types/get_v1logs_stats_response_data_stats_source.rb +15 -0
  229. data/generated/lib/runtype/logs/types/get_v1logs_stats_response_window.rb +14 -0
  230. data/generated/lib/runtype/logs/types/get_v1logs_trace_conversation_conversation_id_response.rb +1 -1
  231. data/generated/lib/runtype/logs/types/get_v1logs_trace_execution_execution_id_children_request.rb +11 -0
  232. data/generated/lib/runtype/logs/types/get_v1logs_trace_execution_execution_id_children_response.rb +15 -0
  233. data/generated/lib/runtype/logs/types/get_v1logs_trace_execution_execution_id_children_response_data_item.rb +19 -0
  234. data/generated/lib/runtype/logs/types/get_v1logs_trace_execution_execution_id_response.rb +1 -1
  235. data/generated/lib/runtype/messaging_conversations/client.rb +2 -0
  236. data/generated/lib/runtype/messaging_conversations/types/get_v1messaging_conversations_id_messages_request.rb +2 -0
  237. data/generated/lib/runtype/model_configs/types/post_v1model_configs_request_settings_custom_model.rb +2 -0
  238. data/generated/lib/runtype/model_configs/types/post_v1model_configs_request_settings_custom_model_mid_conversation_system_messages.rb +14 -0
  239. data/generated/lib/runtype/model_configs/types/put_v1model_configs_id_request_settings_custom_model.rb +2 -0
  240. data/generated/lib/runtype/model_configs/types/put_v1model_configs_id_request_settings_custom_model_mid_conversation_system_messages.rb +14 -0
  241. data/generated/lib/runtype/products/client.rb +345 -4
  242. data/generated/lib/runtype/products/types/create_product_comment_request.rb +19 -0
  243. data/generated/lib/runtype/{conversations/types/put_v1conversations_id_request_messages_item_role.rb → products/types/create_product_comment_request_author_kind.rb} +2 -3
  244. data/generated/lib/runtype/products/types/create_product_comment_thread_request.rb +17 -0
  245. data/generated/lib/runtype/products/types/declare_product_stack_request.rb +15 -0
  246. data/generated/lib/runtype/products/types/declare_product_stack_request_source.rb +15 -0
  247. data/generated/lib/runtype/products/types/get_v1products_id_activity_request.rb +13 -0
  248. data/generated/lib/runtype/products/types/get_v1products_id_activity_response.rb +13 -0
  249. data/generated/lib/runtype/products/types/get_v1products_id_activity_response_data.rb +13 -0
  250. data/generated/lib/runtype/products/types/get_v1products_id_activity_response_data_agents_item.rb +17 -0
  251. data/generated/lib/runtype/products/types/get_v1products_id_activity_response_data_agents_item_data_item.rb +109 -0
  252. data/generated/lib/runtype/products/types/get_v1products_id_activity_response_data_agents_item_data_item_completeness.rb +17 -0
  253. data/generated/lib/runtype/products/types/get_v1products_id_activity_response_data_agents_item_data_item_kind.rb +14 -0
  254. data/generated/lib/runtype/products/types/get_v1products_id_activity_response_data_agents_item_data_item_origin.rb +15 -0
  255. data/generated/lib/runtype/products/types/get_v1products_id_activity_response_data_agents_item_data_item_source.rb +14 -0
  256. data/generated/lib/runtype/products/types/get_v1products_id_activity_response_data_agents_item_data_item_status.rb +18 -0
  257. data/generated/lib/runtype/products/types/get_v1products_id_activity_response_data_agents_item_error.rb +11 -0
  258. data/generated/lib/runtype/products/types/get_v1products_id_activity_response_data_surfaces_item.rb +19 -0
  259. data/generated/lib/runtype/products/types/get_v1products_id_activity_response_data_surfaces_item_data_item.rb +15 -0
  260. data/generated/lib/runtype/products/types/get_v1products_id_activity_response_data_surfaces_item_data_item_agent_mode.rb +45 -0
  261. data/generated/lib/runtype/products/types/get_v1products_id_activity_response_data_surfaces_item_data_item_available_fields.rb +39 -0
  262. data/generated/lib/runtype/products/types/get_v1products_id_activity_response_data_surfaces_item_data_item_available_fields_metadata_schema.rb +11 -0
  263. data/generated/lib/runtype/products/types/get_v1products_id_activity_response_data_surfaces_item_error.rb +11 -0
  264. data/generated/lib/runtype/products/types/get_v1products_id_activity_response_data_surfaces_item_source.rb +14 -0
  265. data/generated/lib/runtype/products/types/get_v1products_id_comments_request.rb +19 -0
  266. data/generated/lib/runtype/products/types/get_v1products_id_comments_request_status.rb +15 -0
  267. data/generated/lib/runtype/products/types/get_v1products_id_response.rb +2 -0
  268. data/generated/lib/runtype/products/types/get_v1products_id_response_editor_context.rb +6 -0
  269. data/generated/lib/runtype/products/types/get_v1products_id_response_editor_context_flow_steps_map_value_item.rb +2 -0
  270. data/generated/lib/runtype/products/types/get_v1products_id_surfaces_surface_id_response.rb +2 -0
  271. data/generated/lib/runtype/products/types/get_v1products_response_data_item_capabilities_item.rb +4 -0
  272. data/generated/lib/runtype/products/types/post_v1products_ensure_request_definition_spec_internal_docs_resources_item.rb +6 -0
  273. data/generated/lib/runtype/products/types/post_v1products_request_canvas.rb +2 -0
  274. data/generated/lib/runtype/products/types/post_v1products_request_spec.rb +2 -0
  275. data/generated/lib/runtype/products/types/post_v1products_request_spec_internal_docs_resources_item.rb +6 -0
  276. data/generated/lib/runtype/products/types/put_v1products_id_request_canvas.rb +2 -0
  277. data/generated/lib/runtype/products/types/put_v1products_id_request_spec.rb +2 -0
  278. data/generated/lib/runtype/products/types/put_v1products_id_request_spec_internal_docs_resources_item.rb +6 -0
  279. data/generated/lib/runtype/products/types/put_v1products_id_surfaces_surface_id_entry_point_request.rb +15 -0
  280. data/generated/lib/runtype/products/types/put_v1products_id_surfaces_surface_id_entry_point_response.rb +13 -0
  281. data/generated/lib/runtype/products/types/update_product_comment_thread_request.rb +15 -0
  282. data/generated/lib/runtype/provider_keys/types/post_v1provider_keys_id_sync_models_request_models_item.rb +2 -0
  283. data/generated/lib/runtype/provider_keys/types/post_v1provider_keys_id_sync_models_request_models_item_mid_conversation_system_messages.rb +14 -0
  284. data/generated/lib/runtype/question_sets/client.rb +416 -0
  285. data/generated/lib/runtype/question_sets/types/get_v1question_sets_id_request.rb +11 -0
  286. data/generated/lib/runtype/question_sets/types/get_v1question_sets_id_resolved_request.rb +13 -0
  287. data/generated/lib/runtype/question_sets/types/get_v1question_sets_id_response.rb +13 -0
  288. data/generated/lib/runtype/question_sets/types/get_v1question_sets_id_versions_request.rb +11 -0
  289. data/generated/lib/runtype/question_sets/types/get_v1question_sets_id_versions_response.rb +11 -0
  290. data/generated/lib/runtype/question_sets/types/get_v1question_sets_id_versions_version_number_calibrations_request.rb +17 -0
  291. data/generated/lib/runtype/question_sets/types/get_v1question_sets_id_versions_version_number_calibrations_response.rb +13 -0
  292. data/generated/lib/runtype/question_sets/types/get_v1question_sets_request.rb +17 -0
  293. data/generated/lib/runtype/question_sets/types/get_v1question_sets_request_direction.rb +14 -0
  294. data/generated/lib/runtype/question_sets/types/get_v1question_sets_response.rb +13 -0
  295. data/generated/lib/runtype/question_sets/types/post_v1question_sets_id_versions_version_number_calibrations_request.rb +17 -0
  296. data/generated/lib/runtype/question_sets/types/post_v1question_sets_id_versions_version_number_calibrations_request_record.rb +15 -0
  297. data/generated/lib/runtype/question_sets/types/post_v1question_sets_id_versions_version_number_calibrations_request_record_per_question_value.rb +19 -0
  298. data/generated/lib/runtype/question_sets/types/post_v1question_sets_id_versions_version_number_calibrations_response.rb +13 -0
  299. data/generated/lib/runtype/question_sets/types/post_v1question_sets_id_versions_version_number_publish_request.rb +13 -0
  300. data/generated/lib/runtype/question_sets/types/post_v1question_sets_id_versions_version_number_publish_response.rb +13 -0
  301. data/generated/lib/runtype/question_sets/types/post_v1question_sets_request.rb +21 -0
  302. data/generated/lib/runtype/question_sets/types/post_v1question_sets_response.rb +13 -0
  303. data/generated/lib/runtype/question_sets/types/put_v1question_sets_id_request.rb +21 -0
  304. data/generated/lib/runtype/question_sets/types/put_v1question_sets_id_response.rb +13 -0
  305. data/generated/lib/runtype/question_sets/types/put_v1question_sets_id_response_version.rb +30 -0
  306. data/generated/lib/runtype/runs/client.rb +150 -0
  307. data/generated/lib/runtype/runs/types/get_v1runs_execution_id_request.rb +15 -0
  308. data/generated/lib/runtype/runs/types/get_v1runs_execution_id_request_overlay.rb +14 -0
  309. data/generated/lib/runtype/runs/types/get_v1runs_execution_id_request_view.rb +14 -0
  310. data/generated/lib/runtype/runs/types/get_v1runs_execution_id_response.rb +11 -0
  311. data/generated/lib/runtype/runs/types/get_v1runs_request.rb +47 -0
  312. data/generated/lib/runtype/runs/types/get_v1runs_request_include_children.rb +14 -0
  313. data/generated/lib/runtype/runs/types/get_v1runs_request_overlay.rb +14 -0
  314. data/generated/lib/runtype/runs/types/get_v1runs_request_source.rb +14 -0
  315. data/generated/lib/runtype/runs/types/get_v1runs_request_status.rb +15 -0
  316. data/generated/lib/runtype/runs/types/get_v1runs_request_view.rb +14 -0
  317. data/generated/lib/runtype/runs/types/get_v1runs_response.rb +15 -0
  318. data/generated/lib/runtype/runs/types/get_v1runs_response_pagination.rb +19 -0
  319. data/generated/lib/runtype/runs/types/get_v1runs_response_window.rb +14 -0
  320. data/generated/lib/runtype/schedules/client.rb +97 -0
  321. data/generated/lib/runtype/schedules/types/get_v1schedules_id_runs_response_data_item.rb +2 -0
  322. data/generated/lib/runtype/schedules/types/get_v1schedules_pull_request.rb +19 -0
  323. data/generated/lib/runtype/schedules/types/get_v1schedules_runs_all_response_data_item.rb +2 -0
  324. data/generated/lib/runtype/schedules/types/post_v1schedules_ensure_request.rb +23 -0
  325. data/generated/lib/runtype/schedules/types/post_v1schedules_ensure_request_on_conflict.rb +14 -0
  326. data/generated/lib/runtype/skills/client.rb +39 -0
  327. data/generated/lib/runtype/skills/types/get_v1skills_id_bindings_request.rb +11 -0
  328. data/generated/lib/runtype/skills/types/get_v1skills_id_bindings_response.rb +11 -0
  329. data/generated/lib/runtype/skills/types/get_v1skills_id_bindings_response_data_item.rb +25 -0
  330. data/generated/lib/runtype/skills/types/get_v1skills_id_bindings_response_data_item_agent.rb +15 -0
  331. data/generated/lib/runtype/surfaces/client.rb +48 -0
  332. data/generated/lib/runtype/surfaces/types/get_v1surfaces_response_data_item_inbound.rb +16 -0
  333. data/generated/lib/runtype/surfaces/types/get_v1surfaces_response_data_item_inbound_channel_overrides_value.rb +13 -0
  334. data/generated/lib/runtype/surfaces/types/get_v1surfaces_response_data_item_inbound_channel_overrides_value_channel_response_mode.rb +15 -0
  335. data/generated/lib/runtype/surfaces/types/get_v1surfaces_response_data_item_inbound_channel_overrides_value_eagerness.rb +15 -0
  336. data/generated/lib/runtype/surfaces/types/get_v1surfaces_response_data_item_inbound_channel_response_mode.rb +15 -0
  337. data/generated/lib/runtype/surfaces/types/get_v1surfaces_response_data_item_inbound_context_backfill.rb +19 -0
  338. data/generated/lib/runtype/surfaces/types/get_v1surfaces_response_data_item_inbound_context_backfill_mode.rb +15 -0
  339. data/generated/lib/runtype/surfaces/types/get_v1surfaces_response_data_item_inbound_eagerness.rb +15 -0
  340. data/generated/lib/runtype/surfaces/types/get_v1surfaces_response_data_item_inbound_keywords.rb +15 -0
  341. data/generated/lib/runtype/surfaces/types/get_v1surfaces_response_data_item_inbound_on_uncertain.rb +14 -0
  342. data/generated/lib/runtype/surfaces/types/get_v1surfaces_surface_id_channel_context_request.rb +13 -0
  343. data/generated/lib/runtype/surfaces/types/get_v1surfaces_surface_id_channel_context_response.rb +19 -0
  344. data/generated/lib/runtype/surfaces/types/get_v1surfaces_surface_id_channel_context_response_provider.rb +15 -0
  345. data/generated/lib/runtype/surfaces/types/get_v1surfaces_surface_id_response.rb +2 -0
  346. data/generated/lib/runtype/telemetry/client.rb +58 -0
  347. data/generated/lib/runtype/telemetry/types/get_otlp_ingest_health_request.rb +11 -0
  348. data/generated/lib/runtype/telemetry/types/get_otlp_ingest_health_response.rb +27 -0
  349. data/generated/lib/runtype/telemetry/types/get_otlp_ingest_health_response_admission.rb +17 -0
  350. data/generated/lib/runtype/telemetry/types/get_otlp_ingest_health_response_errors_item.rb +13 -0
  351. data/generated/lib/runtype/telemetry/types/get_otlp_ingest_health_response_status.rb +16 -0
  352. data/generated/lib/runtype/telemetry/types/get_otlp_ingest_health_response_tiers.rb +15 -0
  353. data/generated/lib/runtype/telemetry/types/get_otlp_ingest_health_response_tiers_canonical.rb +21 -0
  354. data/generated/lib/runtype/telemetry/types/get_otlp_ingest_health_response_tiers_hot.rb +20 -0
  355. data/generated/lib/runtype/telemetry/types/get_otlp_ingest_health_response_tiers_raw.rb +21 -0
  356. data/generated/lib/runtype/telemetry/types/get_otlp_ingest_health_response_totals.rb +27 -0
  357. data/generated/lib/runtype/telemetry/types/get_otlp_ingest_health_response_trace.rb +23 -0
  358. data/generated/lib/runtype/telemetry/types/get_otlp_ingest_health_response_trace_delivery.rb +23 -0
  359. data/generated/lib/runtype/tools/types/post_v1tools_flows_flow_id_convert_to_tool_response_validation.rb +2 -0
  360. data/generated/lib/runtype/tools/types/post_v1tools_id_execute_request.rb +2 -0
  361. data/generated/lib/runtype/tools/types/post_v1tools_id_execute_response.rb +3 -7
  362. data/generated/lib/runtype/tools/types/post_v1tools_id_execute_response_error.rb +19 -0
  363. data/generated/lib/runtype/tools/types/{post_v1tools_id_execute_response_status.rb → post_v1tools_id_execute_response_error_status.rb} +1 -1
  364. data/generated/lib/runtype/tools/types/post_v1tools_id_test_response.rb +3 -7
  365. data/generated/lib/runtype/tools/types/post_v1tools_id_test_response_error.rb +19 -0
  366. data/generated/lib/runtype/tools/types/{post_v1tools_id_test_response_status.rb → post_v1tools_id_test_response_error_status.rb} +1 -1
  367. data/generated/lib/runtype/tools/types/post_v1tools_response_validation.rb +2 -0
  368. data/generated/lib/runtype/tools/types/put_v1tools_id_response_validation.rb +2 -0
  369. data/generated/lib/runtype/types/agent_ensure_capability.rb +21 -0
  370. data/generated/lib/runtype/types/agent_ensure_capability_change.rb +17 -0
  371. data/generated/lib/runtype/types/agent_ensure_capability_change_action.rb +14 -0
  372. data/generated/lib/runtype/types/agent_ensure_capability_change_kind.rb +13 -0
  373. data/generated/lib/runtype/types/agent_ensure_deploy_target.rb +2 -0
  374. data/generated/lib/runtype/types/agent_ensure_response_changed_keys.rb +4 -0
  375. data/generated/lib/runtype/types/agent_ensure_response_version_id.rb +4 -0
  376. data/generated/lib/runtype/types/agent_ensure_skill_binding.rb +13 -0
  377. data/generated/lib/runtype/types/agent_ensure_skill_binding_change.rb +17 -0
  378. data/generated/lib/runtype/types/agent_ensure_skill_binding_change_action.rb +14 -0
  379. data/generated/lib/runtype/types/agent_pull_response.rb +4 -0
  380. data/generated/lib/runtype/types/agent_pull_response_definition_config_sandbox.rb +2 -0
  381. data/generated/lib/runtype/types/agent_pull_response_definition_config_sandbox_coding_agents_item.rb +11 -0
  382. data/generated/lib/runtype/types/agent_pull_response_definition_config_tools.rb +2 -0
  383. data/generated/lib/runtype/types/agent_pull_response_definition_config_tools_runtime_tools_item.rb +4 -0
  384. data/generated/lib/runtype/types/agent_pull_response_definition_config_tools_tool_search.rb +13 -0
  385. data/generated/lib/runtype/types/builtin_tool_execute_result.rb +15 -0
  386. data/generated/lib/runtype/types/channel_context_decision.rb +17 -0
  387. data/generated/lib/runtype/types/channel_context_decision_capability.rb +15 -0
  388. data/generated/lib/runtype/types/channel_context_decision_capability_outcome.rb +14 -0
  389. data/generated/lib/runtype/types/channel_context_decision_decision.rb +14 -0
  390. data/generated/lib/runtype/types/channel_context_decision_failure.rb +17 -0
  391. data/generated/lib/runtype/types/channel_context_label.rb +17 -0
  392. data/generated/lib/runtype/types/channel_context_label_label.rb +13 -0
  393. data/generated/lib/runtype/types/channel_context_label_source.rb +15 -0
  394. data/generated/lib/runtype/types/channel_context_message.rb +25 -0
  395. data/generated/lib/runtype/types/channel_context_message_author_kind.rb +13 -0
  396. data/generated/lib/runtype/types/collection_lookup_failed_error.rb +17 -0
  397. data/generated/lib/runtype/types/collection_lookup_failed_error_code.rb +11 -0
  398. data/generated/lib/runtype/types/conflict_error_body_candidate_count.rb +21 -0
  399. data/generated/lib/runtype/types/conflict_error_body_candidate_count_code.rb +11 -0
  400. data/generated/lib/runtype/types/context_blocks.rb +11 -0
  401. data/generated/lib/runtype/types/context_blocks_blocks_item.rb +13 -0
  402. data/generated/lib/runtype/types/context_manifest_entry.rb +27 -0
  403. data/generated/lib/runtype/types/context_manifest_entry_category.rb +16 -0
  404. data/generated/lib/runtype/types/context_manifest_entry_flags_item.rb +13 -0
  405. data/generated/lib/runtype/types/context_manifest_entry_kind.rb +19 -0
  406. data/generated/lib/runtype/types/context_manifest_entry_role.rb +14 -0
  407. data/generated/lib/runtype/types/context_snapshot.rb +33 -0
  408. data/generated/lib/runtype/types/context_snapshot_removed_since_previous_item.rb +11 -0
  409. data/generated/lib/runtype/types/context_snapshot_removed_since_previous_item_reason.rb +14 -0
  410. data/generated/lib/runtype/types/context_snapshot_reported.rb +13 -0
  411. data/generated/lib/runtype/types/context_snapshots.rb +13 -0
  412. data/generated/lib/runtype/types/conversation_message_author.rb +16 -0
  413. data/generated/lib/runtype/types/conversation_message_author_type.rb +14 -0
  414. data/generated/lib/runtype/types/conversation_modified_error.rb +13 -0
  415. data/generated/lib/runtype/types/conversation_modified_error_code.rb +11 -0
  416. data/generated/lib/runtype/types/conversation_source.rb +14 -0
  417. data/generated/lib/runtype/types/conversation_trace.rb +17 -0
  418. data/generated/lib/runtype/types/conversation_trace_executions_item.rb +13 -0
  419. data/generated/lib/runtype/types/conversation_trace_produced_by.rb +38 -0
  420. data/generated/lib/runtype/types/conversation_trace_produced_by_source.rb +12 -0
  421. data/generated/lib/runtype/types/conversation_trace_truncation.rb +13 -0
  422. data/generated/lib/runtype/types/conversation_trace_truncation_reason.rb +11 -0
  423. data/generated/lib/runtype/types/conversation_transcript_message.rb +23 -0
  424. data/generated/lib/runtype/types/conversation_transcript_message_content.rb +14 -0
  425. data/generated/lib/runtype/types/conversation_transcript_message_content_one_item.rb +21 -0
  426. data/generated/lib/runtype/types/conversation_transcript_message_content_one_item_asset_ref.rb +19 -0
  427. data/generated/lib/runtype/types/conversation_transcript_message_content_one_item_asset_ref_ref_kind.rb +12 -0
  428. data/generated/lib/runtype/types/conversation_transcript_message_content_one_item_file.rb +13 -0
  429. data/generated/lib/runtype/types/conversation_transcript_message_content_one_item_image.rb +11 -0
  430. data/generated/lib/runtype/types/conversation_transcript_message_content_one_item_reasoning.rb +11 -0
  431. data/generated/lib/runtype/types/conversation_transcript_message_content_one_item_text.rb +9 -0
  432. data/generated/lib/runtype/types/conversation_transcript_message_role.rb +14 -0
  433. data/generated/lib/runtype/types/conversation_transcript_message_tool_calls_item.rb +15 -0
  434. data/generated/lib/runtype/types/conversation_transcript_message_tool_results_item.rb +15 -0
  435. data/generated/lib/runtype/types/create_voice_agent_draft_response.rb +11 -0
  436. data/generated/lib/runtype/types/declare_product_stack_response.rb +15 -0
  437. data/generated/lib/runtype/types/declare_product_stack_response_source.rb +13 -0
  438. data/generated/lib/runtype/types/dispatch_agent_json_response.rb +6 -0
  439. data/generated/lib/runtype/types/dispatch_agent_json_response_agent_target_resolution.rb +13 -0
  440. data/generated/lib/runtype/types/dispatch_detached_tool_output_json_response.rb +6 -0
  441. data/generated/lib/runtype/types/dispatch_detached_tool_output_json_response_agent_target_resolution.rb +13 -0
  442. data/generated/lib/runtype/types/dispatch_tool_output_continuation_json_response.rb +6 -0
  443. data/generated/lib/runtype/types/dispatch_tool_output_continuation_json_response_agent_target_resolution.rb +13 -0
  444. data/generated/lib/runtype/types/eval_run_scores_response.rb +2 -0
  445. data/generated/lib/runtype/types/eval_run_scores_response_cases_item.rb +2 -0
  446. data/generated/lib/runtype/types/eval_run_scores_response_cases_item_failure_kind.rb +11 -0
  447. data/generated/lib/runtype/types/eval_suite_detail.rb +2 -0
  448. data/generated/lib/runtype/types/eval_suite_detail_warnings_item.rb +13 -0
  449. data/generated/lib/runtype/types/eval_suite_latest_run.rb +2 -0
  450. data/generated/lib/runtype/types/eval_suite_summary.rb +2 -0
  451. data/generated/lib/runtype/types/eval_suite_summary_warnings_item.rb +13 -0
  452. data/generated/lib/runtype/types/execution_stream_event.rb +4 -0
  453. data/generated/lib/runtype/types/execution_stream_event_model_call_complete.rb +41 -0
  454. data/generated/lib/runtype/types/execution_stream_event_model_call_complete_attributes_value.rb +15 -0
  455. data/generated/lib/runtype/types/execution_stream_event_model_call_complete_subagent.rb +13 -0
  456. data/generated/lib/runtype/types/execution_stream_event_model_call_complete_tokens.rb +17 -0
  457. data/generated/lib/runtype/types/execution_stream_event_model_call_start.rb +29 -0
  458. data/generated/lib/runtype/types/execution_stream_event_model_call_start_subagent.rb +13 -0
  459. data/generated/lib/runtype/types/execution_stream_event_turn_complete.rb +2 -0
  460. data/generated/lib/runtype/types/execution_stream_event_turn_complete_attributes_value.rb +15 -0
  461. data/generated/lib/runtype/types/external_observed_approvals.rb +17 -0
  462. data/generated/lib/runtype/types/external_observed_approvals_availability.rb +11 -0
  463. data/generated/lib/runtype/types/external_observed_approvals_lifecycles_item.rb +23 -0
  464. data/generated/lib/runtype/types/external_observed_approvals_lifecycles_item_decision.rb +14 -0
  465. data/generated/lib/runtype/types/external_observed_approvals_lifecycles_item_observations_item.rb +15 -0
  466. data/generated/lib/runtype/types/external_observed_approvals_lifecycles_item_observations_item_source.rb +15 -0
  467. data/generated/lib/runtype/types/external_observed_approvals_lifecycles_item_observations_item_source_attribute.rb +11 -0
  468. data/generated/lib/runtype/types/external_observed_approvals_lifecycles_item_observations_item_source_kind.rb +11 -0
  469. data/generated/lib/runtype/types/external_observed_approvals_lifecycles_item_observations_item_state.rb +13 -0
  470. data/generated/lib/runtype/types/external_observed_approvals_lifecycles_item_raw_states_item.rb +13 -0
  471. data/generated/lib/runtype/types/identity_assertion_jwks.rb +9 -0
  472. data/generated/lib/runtype/types/identity_assertion_public_jwk.rb +21 -0
  473. data/generated/lib/runtype/types/judgment_calibration_record.rb +23 -0
  474. data/generated/lib/runtype/types/judgment_calibration_record_source.rb +12 -0
  475. data/generated/lib/runtype/types/list_product_comments_response.rb +13 -0
  476. data/generated/lib/runtype/types/product_canvas_block.rb +23 -0
  477. data/generated/lib/runtype/types/product_comment.rb +23 -0
  478. data/generated/lib/runtype/types/product_comment_author_kind.rb +12 -0
  479. data/generated/lib/runtype/types/product_comment_thread.rb +27 -0
  480. data/generated/lib/runtype/types/product_declared_stack.rb +15 -0
  481. data/generated/lib/runtype/types/product_pull_response_definition_spec_internal_docs_resources_item.rb +6 -0
  482. data/generated/lib/runtype/types/product_stack.rb +18 -0
  483. data/generated/lib/runtype/types/product_stack_declared.rb +14 -0
  484. data/generated/lib/runtype/types/product_stack_detected.rb +12 -0
  485. data/generated/lib/runtype/types/product_stack_item.rb +21 -0
  486. data/generated/lib/runtype/types/question_set.rb +25 -0
  487. data/generated/lib/runtype/types/question_set_error.rb +13 -0
  488. data/generated/lib/runtype/types/question_set_list_item.rb +29 -0
  489. data/generated/lib/runtype/types/question_set_version.rb +27 -0
  490. data/generated/lib/runtype/types/resolved_question_set.rb +21 -0
  491. data/generated/lib/runtype/types/resolved_question_set_calibration.rb +17 -0
  492. data/generated/lib/runtype/types/resolved_question_set_calibration_source.rb +12 -0
  493. data/generated/lib/runtype/types/run_eval_response.rb +2 -0
  494. data/generated/lib/runtype/types/run_eval_response_cases_item.rb +2 -0
  495. data/generated/lib/runtype/types/run_eval_response_cases_item_failure_kind.rb +11 -0
  496. data/generated/lib/runtype/types/run_list_pagination.rb +15 -0
  497. data/generated/lib/runtype/types/run_list_row.rb +107 -0
  498. data/generated/lib/runtype/types/run_list_row_completeness.rb +15 -0
  499. data/generated/lib/runtype/types/run_list_row_kind.rb +12 -0
  500. data/generated/lib/runtype/types/run_list_row_origin.rb +13 -0
  501. data/generated/lib/runtype/types/run_list_row_source.rb +12 -0
  502. data/generated/lib/runtype/types/run_list_row_status.rb +16 -0
  503. data/generated/lib/runtype/types/runtime_exported_skill.rb +21 -0
  504. data/generated/lib/runtype/types/schedule_ensure_conflict.rb +17 -0
  505. data/generated/lib/runtype/types/schedule_ensure_conflict_code.rb +12 -0
  506. data/generated/lib/runtype/types/schedule_ensure_definition.rb +27 -0
  507. data/generated/lib/runtype/types/schedule_ensure_definition_execution_options.rb +27 -0
  508. data/generated/lib/runtype/types/schedule_ensure_definition_execution_options_logging_policy.rb +13 -0
  509. data/generated/lib/runtype/types/schedule_ensure_definition_trigger.rb +15 -0
  510. data/generated/lib/runtype/types/schedule_ensure_definition_trigger_type.rb +12 -0
  511. data/generated/lib/runtype/types/schedule_ensure_hash_mismatch.rb +13 -0
  512. data/generated/lib/runtype/types/schedule_ensure_hash_mismatch_code.rb +11 -0
  513. data/generated/lib/runtype/types/schedule_ensure_response.rb +15 -0
  514. data/generated/lib/runtype/types/schedule_ensure_response_changed_keys.rb +19 -0
  515. data/generated/lib/runtype/types/schedule_ensure_response_changed_keys_changes.rb +13 -0
  516. data/generated/lib/runtype/types/schedule_ensure_response_changed_keys_result.rb +11 -0
  517. data/generated/lib/runtype/types/schedule_ensure_response_one.rb +9 -0
  518. data/generated/lib/runtype/types/schedule_ensure_response_one_result.rb +11 -0
  519. data/generated/lib/runtype/types/schedule_ensure_response_zero.rb +13 -0
  520. data/generated/lib/runtype/types/schedule_ensure_response_zero_result.rb +13 -0
  521. data/generated/lib/runtype/types/schedule_ensure_target.rb +15 -0
  522. data/generated/lib/runtype/types/schedule_pull_response.rb +17 -0
  523. data/generated/lib/runtype/types/schedule_run_link.rb +15 -0
  524. data/generated/lib/runtype/types/schedule_run_link_kind.rb +13 -0
  525. data/generated/lib/runtype/types/tool_execute_error.rb +13 -0
  526. data/generated/lib/runtype/types/trace_log_entry.rb +145 -0
  527. data/generated/lib/runtype/types/trace_log_entry_estimated_context_breakdown.rb +15 -0
  528. data/generated/lib/runtype/types/trace_log_entry_estimated_context_breakdown_categories_value.rb +11 -0
  529. data/generated/lib/runtype/types/trace_log_entry_estimated_cost.rb +14 -0
  530. data/generated/lib/runtype/types/trace_log_entry_level.rb +14 -0
  531. data/generated/lib/runtype/types/trace_log_entry_logging_policy.rb +11 -0
  532. data/generated/lib/runtype/types/trace_log_entry_otlp_incomplete_activity.rb +13 -0
  533. data/generated/lib/runtype/types/trace_log_entry_otlp_instrumentation_warning.rb +11 -0
  534. data/generated/lib/runtype/types/trace_log_entry_otlp_record_kind.rb +13 -0
  535. data/generated/lib/runtype/types/trace_log_entry_status.rb +16 -0
  536. data/generated/lib/runtype/types/trace_log_entry_type.rb +19 -0
  537. data/generated/lib/runtype/types/trace_node.rb +35 -0
  538. data/generated/lib/runtype/types/trace_node_lifecycle.rb +14 -0
  539. data/generated/lib/runtype/types/trace_node_node_type.rb +16 -0
  540. data/generated/lib/runtype/types/trace_produced_by.rb +37 -0
  541. data/generated/lib/runtype/types/trace_produced_by_source.rb +12 -0
  542. data/generated/lib/runtype/types/trace_tree.rb +41 -0
  543. data/generated/lib/runtype/types/trace_tree_availability.rb +13 -0
  544. data/generated/lib/runtype/types/trace_tree_availability_reason.rb +11 -0
  545. data/generated/lib/runtype/types/trace_tree_child_truncation.rb +15 -0
  546. data/generated/lib/runtype/types/trace_tree_child_truncation_reason.rb +11 -0
  547. data/generated/lib/runtype/types/trace_tree_source.rb +13 -0
  548. data/generated/lib/runtype/types/trace_tree_totals_source.rb +12 -0
  549. data/generated/lib/runtype/types/trace_tree_truncation.rb +13 -0
  550. data/generated/lib/runtype/types/trace_tree_truncation_reason.rb +11 -0
  551. data/generated/lib/runtype/users/types/get_v1users_profile_response_features.rb +2 -0
  552. data/generated/lib/runtype.rb +3506 -2863
  553. data/lib/runtype/agent_ensure.rb +97 -10
  554. data/lib/runtype/agent_release_aliases.rb +146 -2
  555. data/lib/runtype/client.rb +22 -1
  556. data/lib/runtype/config_ensure.rb +272 -0
  557. data/lib/runtype/content_hash.rb +257 -0
  558. data/lib/runtype/detached_follow.rb +12 -0
  559. data/lib/runtype/errors.rb +56 -10
  560. data/lib/runtype/local_tool_runner.rb +3 -1
  561. data/lib/runtype/raw_client_timeout.rb +56 -0
  562. data/lib/runtype/sdk_version.rb +2 -1
  563. data/lib/runtype.rb +3 -0
  564. metadata +422 -15
  565. data/generated/lib/runtype/agents/types/get_v1agents_id_export_runtime_response.rb +0 -25
  566. data/generated/lib/runtype/conversations/types/put_v1conversations_id_request_messages_item.rb +0 -17
  567. data/generated/lib/runtype/conversations/types/put_v1conversations_id_request_messages_item_content.rb +0 -15
  568. data/generated/lib/runtype/conversations/types/put_v1conversations_id_request_messages_item_content_one_item.rb +0 -21
  569. data/generated/lib/runtype/conversations/types/put_v1conversations_id_request_messages_item_content_one_item_asset_ref.rb +0 -21
  570. data/generated/lib/runtype/conversations/types/put_v1conversations_id_request_messages_item_content_one_item_file.rb +0 -15
  571. data/generated/lib/runtype/conversations/types/put_v1conversations_id_request_messages_item_content_one_item_image.rb +0 -13
  572. data/generated/lib/runtype/conversations/types/put_v1conversations_id_request_messages_item_content_one_item_text.rb +0 -11
@@ -0,0 +1,257 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "digest"
4
+
5
+ module Runtype
6
+ # Canonical content hashes for the config-as-code ensure surfaces other than
7
+ # agents (see {AgentDefinition.content_hash_for}). Each is a wire contract
8
+ # with the API and the TypeScript SDK, pinned by the corpora under
9
+ # `packages/shared/test-fixtures/*-content-hash/cases.json`. A key absent
10
+ # from a Hash plays JavaScript's `undefined` (dropped); `nil` plays `null`.
11
+ module ContentHash
12
+ MAX_ARRAY_INDEX = 4_294_967_294
13
+ FPO_OPTIONAL_SECTIONS = %w[records schedules secrets evals skills].freeze
14
+ SERVER_SET_STACK_FIELDS = %w[detected declared hiddenAt].freeze
15
+
16
+ module_function
17
+
18
+ # @param steps [Array<Hash>] a flow's steps.
19
+ # @return [String] SHA-256 hex over the canonical step list.
20
+ def flow(steps)
21
+ sha256(normalize_flow_steps(steps))
22
+ end
23
+
24
+ # @param steps [Array<Hash>]
25
+ # @return [Array<Hash>] the canonical steps, sorted by `order`.
26
+ def normalize_flow_steps(steps)
27
+ Array(steps).each_with_index
28
+ .map { |step, index| legacy_flow_step_identity(stringify(step), index) }
29
+ .each_with_index
30
+ .sort_by { |step, index| [step_order(step), index] }
31
+ .map { |step, _index| normalize_flow_step(step) }
32
+ end
33
+
34
+ # @param definition [Hash] `{ name:, manifest: { frontmatter:, runtype:, body: } }`.
35
+ # @return [String] SHA-256 hex; the frontmatter name is identity, not content.
36
+ def skill(definition)
37
+ manifest = plain(stringify(definition)["manifest"])
38
+ frontmatter = plain(manifest["frontmatter"]).except("name")
39
+ runtype_block = manifest["runtype"]
40
+ body = manifest["body"]
41
+ sha256(
42
+ "frontmatter" => normalize_value(frontmatter),
43
+ "runtype" => runtype_block.is_a?(Hash) ? normalize_value(runtype_block) : {},
44
+ "body" => body.is_a?(String) ? body : ""
45
+ )
46
+ end
47
+
48
+ # @param definition [Hash] `{ name:, description:, toolType:, parametersSchema:, config: }`.
49
+ # @return [String] SHA-256 hex; the name is identity, not content.
50
+ def tool(definition)
51
+ wire = stringify(definition)
52
+ normalized = {}
53
+ normalized["toolType"] = wire["toolType"] if wire.key?("toolType")
54
+ normalized["description"] = wire["description"] if truthy?(wire["description"])
55
+ normalized["parametersSchema"] = object_or_empty(wire["parametersSchema"])
56
+ normalized["config"] = object_or_empty(wire["config"])
57
+ sha256(normalized)
58
+ end
59
+
60
+ # @param definition [Hash] `{ name:, type:, behavior:?, inbound:?, outbound:?, status:? }`.
61
+ # @return [String] SHA-256 hex.
62
+ def surface(definition)
63
+ wire = stringify(definition)
64
+ type_entry = wire.key?("type") ? { "type" => wire["type"] } : {}
65
+ behavior = wire["behavior"]
66
+ normalized = type_entry.dup
67
+ normalized["behavior"] = behavior.is_a?(Hash) ? normalize_value(type_entry.merge(behavior)) : type_entry.dup
68
+ normalized["status"] = truthy?(wire["status"]) ? wire["status"] : "draft"
69
+ normalized["environment"] = "development"
70
+ sha256(normalized)
71
+ end
72
+
73
+ # @param definition [Hash] `{ name:, description:?, icon:?, spec:? }`.
74
+ # @return [String] SHA-256 hex; the name is identity, not content.
75
+ def product(definition)
76
+ wire = stringify(definition)
77
+ normalized = {}
78
+ normalized["description"] = wire["description"] if truthy?(wire["description"])
79
+ normalized["icon"] = wire["icon"] if truthy?(wire["icon"])
80
+ normalized["spec"] = object_or_empty(as_saved_stack(wire["spec"]))
81
+ sha256(normalized)
82
+ end
83
+
84
+ # @param fpo [Hash] a Full Product Object.
85
+ # @return [String] SHA-256 hex; `_meta` and `product.name` are excluded.
86
+ def fpo(fpo)
87
+ wire = stringify(fpo)
88
+ normalized = {}
89
+ normalized["version"] = normalize_value(wire["version"]) unless wire["version"].nil?
90
+ normalized["product"] = normalize_value(plain(wire["product"]).except("name"))
91
+ %w[capabilities tools surfaces].each { |section| normalized[section] = normalize_value(wire[section] || []) }
92
+ FPO_OPTIONAL_SECTIONS.each do |section|
93
+ normalized[section] = normalize_value(wire[section]) unless wire[section].nil?
94
+ end
95
+ sha256(normalized)
96
+ end
97
+
98
+ # @param definition [Hash] an eval suite `{ name:, target:, cases:, virtual:, ... }`.
99
+ # @return [String] SHA-256 hex; cases sort by name, grader order is kept.
100
+ def eval_suite(definition)
101
+ wire = stringify(definition)
102
+ mode = truthy?(wire["recordedToolMode"]) ? wire["recordedToolMode"] : "next_step"
103
+ policy = truthy?(wire["recordedToolUnmatchedPolicy"]) ? wire["recordedToolUnmatchedPolicy"] : "fail"
104
+ canonical = {}
105
+ canonical["target"] = sort_keeping_nil(wire["target"]) if wire.key?("target")
106
+ canonical["virtual"] = wire["virtual"] if wire.key?("virtual")
107
+ canonical["recordedToolMode"] = mode unless mode == "next_step"
108
+ canonical["recordedToolUnmatchedPolicy"] = policy unless policy == "fail"
109
+ cases = Array(wire["cases"]).map { |entry| plain(entry) }
110
+ canonical["cases"] = cases.each_with_index
111
+ .sort_by { |entry, index| [utf16(entry["name"].to_s), index] }
112
+ .map { |entry, _index| canonical_case(entry) }
113
+ sha256(canonical)
114
+ end
115
+
116
+ # Drops nil entries and orders object keys the way `JSON.stringify` emits
117
+ # sorted keys, recursively; arrays keep their order.
118
+ #
119
+ # @param value [Object]
120
+ # @return [Object]
121
+ def normalize_value(value)
122
+ case value
123
+ when Array then value.map { |entry| normalize_value(entry) }
124
+ when Hash
125
+ entries = stringify(value)
126
+ entries.keys.sort_by { |key| json_key_order(key) }.each_with_object({}) do |key, out|
127
+ out[key] = normalize_value(entries[key]) unless entries[key].nil?
128
+ end
129
+ else value
130
+ end
131
+ end
132
+
133
+ # @return [String]
134
+ def sha256(value)
135
+ Digest::SHA256.hexdigest(Runtype::CanonicalJSON.generate(value))
136
+ end
137
+
138
+ def canonical_case(entry)
139
+ canonical = {}
140
+ canonical["name"] = entry["name"] if entry.key?("name")
141
+ canonical["input"] = sort_keeping_nil(entry["input"]) if entry.key?("input")
142
+ canonical["expected"] = sort_keeping_nil(entry["expected"]) if entry.key?("expected")
143
+ canonical["expect"] = Array(entry["expect"]).map { |grader| sort_keeping_nil(grader) }
144
+ canonical
145
+ end
146
+
147
+ def normalize_flow_step(step)
148
+ normalized = {
149
+ "type" => step["type"].is_a?(String) ? step["type"] : "",
150
+ "name" => step["name"].is_a?(String) ? step["name"] : "",
151
+ "enabled" => step["enabled"] != false
152
+ }
153
+ normalized["when"] = step["when"] if step["when"].is_a?(String)
154
+ normalized["config"] = normalize_flow_config(step["config"])
155
+ normalized["order"] = step_order(step)
156
+ normalized
157
+ end
158
+
159
+ # Sorts keys and keeps nil; one level of array items is normalized, deeper
160
+ # arrays keep their insertion key order, exactly as the TypeScript SDK does.
161
+ def normalize_flow_config(config)
162
+ return {} unless config.is_a?(Hash)
163
+
164
+ entries = stringify(config)
165
+ entries.keys.sort_by { |key| json_key_order(key) }.each_with_object({}) do |key, out|
166
+ value = entries[key]
167
+ out[key] =
168
+ case value
169
+ when Hash then normalize_flow_config(value)
170
+ when Array then value.map { |item| item.is_a?(Hash) ? normalize_flow_config(item) : js_emission_order(item) }
171
+ else value
172
+ end
173
+ end
174
+ end
175
+
176
+ # The key order `JSON.stringify` gives an object nobody sorted: canonical
177
+ # array indexes first, then insertion order.
178
+ def js_emission_order(value)
179
+ case value
180
+ when Array then value.map { |entry| js_emission_order(entry) }
181
+ when Hash
182
+ entries = stringify(value)
183
+ indexes, others = entries.keys.partition { |key| json_key_order(key).first.zero? }
184
+ (indexes.sort_by { |key| json_key_order(key) } + others).to_h { |key| [key, js_emission_order(entries[key])] }
185
+ else value
186
+ end
187
+ end
188
+
189
+ def sort_keeping_nil(value)
190
+ case value
191
+ when Array then value.map { |entry| sort_keeping_nil(entry) }
192
+ when Hash
193
+ entries = stringify(value)
194
+ entries.keys.sort_by { |key| json_key_order(key) }.to_h { |key| [key, sort_keeping_nil(entries[key])] }
195
+ else value
196
+ end
197
+ end
198
+
199
+ # A legacy step missing `name`/`order` defaults to `Step N`/`N`, as flow pull emits.
200
+ def legacy_flow_step_identity(step, index)
201
+ step.merge(
202
+ "name" => step["name"].is_a?(String) ? step["name"] : "Step #{index + 1}",
203
+ "order" => step["order"].is_a?(Numeric) ? step["order"] : index + 1
204
+ )
205
+ end
206
+
207
+ def step_order(step)
208
+ order = step.is_a?(Hash) ? step["order"] : nil
209
+ order.is_a?(Numeric) ? order : 0
210
+ end
211
+
212
+ def json_key_order(key)
213
+ if key.match?(/\A(?:0|[1-9]\d*)\z/) && key.to_i <= MAX_ARRAY_INDEX
214
+ [0, key.to_i, []]
215
+ else
216
+ [1, 0, utf16(key)]
217
+ end
218
+ end
219
+
220
+ def utf16(value)
221
+ value.encode("UTF-16LE").unpack("v*")
222
+ end
223
+
224
+ def object_or_empty(value)
225
+ value.is_a?(Hash) ? normalize_value(value) : {}
226
+ end
227
+
228
+ # `spec` with its stack as a save stores it: server-set fields dropped, `hidden` deduplicated.
229
+ def as_saved_stack(spec)
230
+ return spec unless spec.is_a?(Hash)
231
+
232
+ wire = stringify(spec)
233
+ return wire unless wire["stack"].is_a?(Hash)
234
+
235
+ stack = stringify(wire["stack"]).except(*SERVER_SET_STACK_FIELDS)
236
+ stack["hidden"] = stack["hidden"].uniq if stack["hidden"].is_a?(Array)
237
+ wire.merge("stack" => stack)
238
+ end
239
+
240
+ def plain(value)
241
+ value.is_a?(Hash) ? stringify(value) : {}
242
+ end
243
+
244
+ def stringify(value)
245
+ value.is_a?(Hash) ? value.to_h { |key, entry| [key.to_s, entry] } : {}
246
+ end
247
+
248
+ # JavaScript truthiness for the values a definition can hold.
249
+ def truthy?(value)
250
+ !(value.nil? || value == false || value == "" || (value.is_a?(Numeric) && value.zero?))
251
+ end
252
+
253
+ private_class_method :canonical_case, :normalize_flow_step, :normalize_flow_config, :js_emission_order,
254
+ :sort_keeping_nil, :step_order, :json_key_order, :utf16, :object_or_empty, :plain,
255
+ :stringify, :truthy?
256
+ end
257
+ end
@@ -60,6 +60,18 @@ module Runtype
60
60
  seqs.max&.to_s
61
61
  end
62
62
 
63
+ # The agent-version keys a dispatch or resume body reports. The events
64
+ # alias never repeats them, so a followed envelope carries them forward.
65
+ RELEASE_KEYS = %w[agentVersionId alias agentTargetResolution].freeze
66
+
67
+ # @param response [Object]
68
+ # @return [Hash] the release keys `response` carries, or an empty Hash.
69
+ def release_fields(response)
70
+ return {} unless response.is_a?(Hash)
71
+
72
+ response.slice(*RELEASE_KEYS).compact
73
+ end
74
+
63
75
  # @param data [Hash]
64
76
  # @return [Boolean]
65
77
  def detached_await?(data)
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require "timeout"
4
+
3
5
  module Runtype
4
6
  # Base class for every error the overlay raises. Rescue this to catch all of
5
7
  # them regardless of which generated resource produced the failure.
@@ -28,12 +30,20 @@ module Runtype
28
30
  # Translates a Fern-generated error into the curated equivalent. Errors that
29
31
  # are not generated API errors are returned unchanged.
30
32
  #
33
+ # A socket timeout is translated too: the generated methods rescue
34
+ # `Net::HTTPRequestTimeout`, a 408 response class no socket ever raises, so
35
+ # `Net::OpenTimeout`, `Net::ReadTimeout` and `Net::WriteTimeout` reach here
36
+ # untranslated. They all descend from `Timeout::Error`, so one clause covers
37
+ # connect, read and write, matching {Runtype::Streaming::Connection}.
38
+ #
31
39
  # @param error [Exception]
32
40
  # @return [Exception]
33
41
  def self.from_generated(error)
34
42
  case error
35
43
  when Runtype::Errors::TimeoutError
36
44
  APITimeoutError.new("Request timed out")
45
+ when ::Timeout::Error
46
+ APITimeoutError.new("Request timed out: #{error.message}")
37
47
  when Runtype::Errors::ResponseError
38
48
  from_response(status: error.code, body: error.message)
39
49
  when Runtype::Errors::ApiError
@@ -180,24 +190,58 @@ module Runtype
180
190
  end
181
191
  end
182
192
 
183
- # Raised by `ensure_agent(definition, expect_no_changes: true)` when the
184
- # platform's definition no longer matches the repo's.
193
+ # Raised by `ensure_agent(definition, expect_no_changes: true)`, and by the
194
+ # other `ensure_*` methods, when the platform's definition no longer matches
195
+ # the repo's.
185
196
  class DriftError < Error
186
197
  # @return [Hash] the dry-run plan: `"changes"`, `"changedKeys"`,
187
- # `"contentHash"`, `"remoteHash"`, `"agentId"`.
198
+ # `"contentHash"`, `"remoteHash"`, and the entity's id.
188
199
  attr_reader :plan
189
200
 
190
201
  # @param plan [Hash]
191
202
  # @param name [String, nil]
192
- def initialize(plan, name: nil)
203
+ # @param entity [String] what drifted, e.g. `"Agent"` or `"Flow"`.
204
+ # @param pull_hint [String] the call that absorbs the remote edit.
205
+ # @param ensure_hint [String] the method that converges it.
206
+ def initialize(plan, name: nil, entity: "Agent", pull_hint: "client.pull_agent(name)",
207
+ ensure_hint: "ensure_agent")
193
208
  @plan = plan
194
- changed = Array(plan["changedKeys"]).join(", ")
209
+ changed = (Array(plan["changedKeys"]) + self.class.skill_changes(plan) + self.class.deployment_changes(plan) +
210
+ self.class.publish_changes(plan))
211
+ .join(", ")
195
212
  super(
196
- "Agent #{(name || plan["agentId"] || "definition").inspect} drifted: plan is #{plan["changes"].inspect} " \
197
- "(changed: #{changed.empty? ? "n/a" : changed}). Run client.pull_agent(name) to absorb the remote edit " \
198
- "into your repo, or re-run ensure_agent to converge."
213
+ "#{entity} #{(name || plan["agentId"] || "definition").inspect} drifted: plan is #{plan["changes"].inspect} " \
214
+ "(changed: #{changed.empty? ? "n/a" : changed}). Run #{pull_hint} to absorb the remote edit " \
215
+ "into your repo, or re-run #{ensure_hint} to converge."
199
216
  )
200
217
  end
218
+
219
+ # @param plan [Hash]
220
+ # @return [Array<String>] `skill:<name> (<action>)` for each binding the plan would change.
221
+ def self.skill_changes(plan)
222
+ Array(plan["skillBindings"]).reject { |binding| binding["action"] == "unchanged" }
223
+ .map { |binding| "skill:#{binding["name"]} (#{binding["action"]})" }
224
+ end
225
+
226
+ # @param plan [Hash]
227
+ # @return [Array<String>] `publish (pending)` when a `release: "publish"` dry run would re-aim the pointer.
228
+ def self.publish_changes(plan)
229
+ plan["publishPending"] == true ? ["publish (pending)"] : []
230
+ end
231
+
232
+ # @param plan [Hash]
233
+ # @return [Array<String>] `deploy:<alias> (pointer)` and `deploy:<alias> (bindings)`
234
+ # for an alias move or binding-name change the plan reports.
235
+ def self.deployment_changes(plan)
236
+ deployment = plan["deployment"]
237
+ return [] unless deployment.is_a?(Hash)
238
+
239
+ alias_name = deployment["alias"]
240
+ [
241
+ ("deploy:#{alias_name} (pointer)" if deployment["changed"] == true),
242
+ ("deploy:#{alias_name} (bindings)" if deployment["bindingsChanged"] == true)
243
+ ].compact
244
+ end
201
245
  end
202
246
 
203
247
  # A local tool could not be run during `run_with_local_tools`: the server
@@ -235,7 +279,9 @@ module Runtype
235
279
  class APIConnectionError < Error; end
236
280
 
237
281
  # Runs a block, re-raising Fern-generated errors as their curated equivalents
238
- # so callers keep one stable rescue surface across regenerations.
282
+ # so callers keep one stable rescue surface across regenerations. A socket
283
+ # timeout raised inside a generated call is curated here too, as
284
+ # {Runtype::APITimeoutError}.
239
285
  #
240
286
  # @example
241
287
  # Runtype.wrap_errors { client.flows.list_flows }
@@ -243,7 +289,7 @@ module Runtype
243
289
  # @return [Object] whatever the block returns.
244
290
  def self.wrap_errors
245
291
  yield
246
- rescue Runtype::Errors::ApiError => e
292
+ rescue Runtype::Errors::ApiError, ::Timeout::Error => e
247
293
  raise Runtype::Error.from_generated(e)
248
294
  end
249
295
  end
@@ -60,6 +60,7 @@ module Runtype
60
60
  # @return [Hash] the final JSON response body.
61
61
  def dispatch_with_local_tools(registry, params, max_rounds, request_options)
62
62
  response = dispatch(request_options: request_options, **params)
63
+ release = Runtype::DetachedFollow.release_fields(response)
63
64
  answered = AnsweredCalls.new
64
65
  replayed = false
65
66
  cursor = nil
@@ -80,6 +81,7 @@ module Runtype
80
81
  tool_outputs: registry.execute(batch),
81
82
  request_options: request_options
82
83
  )
84
+ release = release.merge(Runtype::DetachedFollow.release_fields(response))
83
85
  # A buffered continuation answers the leg in full; only a durable-lane
84
86
  # acknowledgement needs the run's events followed instead.
85
87
  next unless Runtype::DetachedFollow.detached_ack?(response)
@@ -90,7 +92,7 @@ module Runtype
90
92
  followed = Runtype::DetachedFollow.follow_buffered(
91
93
  self, collector.batch_execution_id, after: cursor, request_options: request_options
92
94
  )
93
- response = followed.envelope
95
+ response = followed.envelope.merge(release)
94
96
  cursor = followed.cursor
95
97
  replayed = true
96
98
  end
@@ -0,0 +1,56 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Runtype
4
+ # Timeout handling for the Fern-generated low-level transport.
5
+ #
6
+ # `Runtype::BaseClient` accepts no timeout and builds its
7
+ # `Runtype::Internal::Http::RawClient` with the generator's 60 second default,
8
+ # so every generated resource call ignored the timeout {Runtype::Client} was
9
+ # given. {Runtype::Client} seeds that transport through {apply}, which also
10
+ # gives it the per-call `request_options[:timeout_in_seconds]` override the
11
+ # generated methods document.
12
+ module RawClientTimeout
13
+ # Sends one request under the caller's `timeout_in_seconds` when it asked
14
+ # for one, and under the client-wide timeout otherwise. The override runs
15
+ # on a copy of the transport, so a client shared across threads is never
16
+ # mutated for the duration of one call.
17
+ #
18
+ # @param request [Runtype::Internal::Http::BaseRequest]
19
+ # @return [Net::HTTPResponse]
20
+ def send(request)
21
+ seconds = RawClientTimeout.timeout_in_seconds(request)
22
+ return super if seconds.nil? || seconds == @timeout
23
+
24
+ scoped = dup
25
+ scoped.instance_variable_set(:@timeout, seconds)
26
+ # INVARIANT: the copy's own timeout equals the override, so its send takes the branch above and cannot recur.
27
+ scoped.send(request)
28
+ end
29
+
30
+ # Reads the per-request timeout off a request's options under either key
31
+ # spelling, matching {Runtype::Client}'s streaming path.
32
+ #
33
+ # @param request [Runtype::Internal::Http::BaseRequest]
34
+ # @return [Float, nil] nil when no override was asked for, or when the
35
+ # value is not a number.
36
+ def self.timeout_in_seconds(request)
37
+ options = request.respond_to?(:request_options) ? request.request_options : nil
38
+ return nil unless options.respond_to?(:[])
39
+
40
+ value = options[:timeout_in_seconds] || options["timeout_in_seconds"]
41
+ value.nil? ? nil : Float(value, exception: false)
42
+ end
43
+
44
+ # Seeds a generated transport with the client-wide timeout and gives it
45
+ # per-request override handling.
46
+ #
47
+ # @param raw_client [Runtype::Internal::Http::RawClient]
48
+ # @param timeout [Numeric] the client-wide timeout, in seconds.
49
+ # @return [Runtype::Internal::Http::RawClient] the same object.
50
+ def self.apply(raw_client, timeout:)
51
+ raw_client.instance_variable_set(:@timeout, Float(timeout))
52
+ raw_client.extend(self)
53
+ raw_client
54
+ end
55
+ end
56
+ end
@@ -8,7 +8,8 @@ module Runtype
8
8
  # generator). The generated barrel does not require that file, so nothing
9
9
  # collides today, but re-declaring it here would make the overlay's version
10
10
  # depend on generator require order.
11
- SDK_VERSION = "0.3.0"
11
+ # Mirrored from ../../package.json by scripts/sync-sdk-versions.mjs; never hand-edit.
12
+ SDK_VERSION = "0.11.1"
12
13
 
13
14
  # Outbound User-Agent identifying the SDK kind, version, and language, e.g.
14
15
  # "runtype-sdk/0.1.0 (ruby)". The `runtype-sdk/` prefix is what the API's
data/lib/runtype.rb CHANGED
@@ -25,6 +25,7 @@ require_relative "../generated/lib/runtype"
25
25
 
26
26
  require_relative "runtype/sdk_version"
27
27
  require_relative "runtype/errors"
28
+ require_relative "runtype/raw_client_timeout"
28
29
  require_relative "runtype/streaming/event"
29
30
  require_relative "runtype/streaming/line_decoder"
30
31
  require_relative "runtype/streaming/event_parser"
@@ -33,6 +34,8 @@ require_relative "runtype/streaming/event_stream"
33
34
  require_relative "runtype/canonical_json"
34
35
  require_relative "runtype/agent_definition"
35
36
  require_relative "runtype/agent_ensure"
37
+ require_relative "runtype/content_hash"
38
+ require_relative "runtype/config_ensure"
36
39
  require_relative "runtype/agent_release_aliases"
37
40
  require_relative "runtype/local_tools"
38
41
  require_relative "runtype/detached_follow"