openai-agents 0.4.1__tar.gz → 0.4.2__tar.gz

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 (622) hide show
  1. {openai_agents-0.4.1 → openai_agents-0.4.2}/.github/workflows/tests.yml +2 -0
  2. {openai_agents-0.4.1 → openai_agents-0.4.2}/PKG-INFO +2 -2
  3. {openai_agents-0.4.1 → openai_agents-0.4.2}/README.md +1 -1
  4. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/realtime/app/agent.py +12 -4
  5. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/realtime/app/server.py +3 -0
  6. {openai_agents-0.4.1 → openai_agents-0.4.2}/pyproject.toml +1 -1
  7. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/extensions/models/litellm_model.py +45 -11
  8. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/models/chatcmpl_stream_handler.py +7 -1
  9. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/realtime/config.py +3 -0
  10. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/realtime/session.py +59 -8
  11. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/models/test_kwargs_functionality.py +38 -0
  12. openai_agents-0.4.2/tests/models/test_litellm_extra_body.py +157 -0
  13. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/realtime/test_openai_realtime.py +2 -6
  14. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/realtime/test_session.py +40 -3
  15. {openai_agents-0.4.1 → openai_agents-0.4.2}/uv.lock +1 -1
  16. openai_agents-0.4.1/tests/models/test_litellm_extra_body.py +0 -44
  17. {openai_agents-0.4.1 → openai_agents-0.4.2}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  18. {openai_agents-0.4.1 → openai_agents-0.4.2}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  19. {openai_agents-0.4.1 → openai_agents-0.4.2}/.github/ISSUE_TEMPLATE/model_provider.md +0 -0
  20. {openai_agents-0.4.1 → openai_agents-0.4.2}/.github/ISSUE_TEMPLATE/question.md +0 -0
  21. {openai_agents-0.4.1 → openai_agents-0.4.2}/.github/PULL_REQUEST_TEMPLATE/pull_request_template.md +0 -0
  22. {openai_agents-0.4.1 → openai_agents-0.4.2}/.github/workflows/docs.yml +0 -0
  23. {openai_agents-0.4.1 → openai_agents-0.4.2}/.github/workflows/issues.yml +0 -0
  24. {openai_agents-0.4.1 → openai_agents-0.4.2}/.github/workflows/publish.yml +0 -0
  25. {openai_agents-0.4.1 → openai_agents-0.4.2}/.github/workflows/update-docs.yml +0 -0
  26. {openai_agents-0.4.1 → openai_agents-0.4.2}/.gitignore +0 -0
  27. {openai_agents-0.4.1 → openai_agents-0.4.2}/.prettierrc +0 -0
  28. {openai_agents-0.4.1 → openai_agents-0.4.2}/.vscode/launch.json +0 -0
  29. {openai_agents-0.4.1 → openai_agents-0.4.2}/.vscode/settings.json +0 -0
  30. {openai_agents-0.4.1 → openai_agents-0.4.2}/AGENTS.md +0 -0
  31. {openai_agents-0.4.1 → openai_agents-0.4.2}/CLAUDE.md +0 -0
  32. {openai_agents-0.4.1 → openai_agents-0.4.2}/LICENSE +0 -0
  33. {openai_agents-0.4.1 → openai_agents-0.4.2}/Makefile +0 -0
  34. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/agents.md +0 -0
  35. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/assets/images/favicon-platform.svg +0 -0
  36. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/assets/images/graph.png +0 -0
  37. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/assets/images/mcp-tracing.jpg +0 -0
  38. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/assets/images/orchestration.png +0 -0
  39. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/assets/logo.svg +0 -0
  40. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/config.md +0 -0
  41. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/context.md +0 -0
  42. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/examples.md +0 -0
  43. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/guardrails.md +0 -0
  44. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/handoffs.md +0 -0
  45. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/index.md +0 -0
  46. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ja/agents.md +0 -0
  47. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ja/config.md +0 -0
  48. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ja/context.md +0 -0
  49. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ja/examples.md +0 -0
  50. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ja/guardrails.md +0 -0
  51. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ja/handoffs.md +0 -0
  52. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ja/index.md +0 -0
  53. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ja/mcp.md +0 -0
  54. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ja/models/index.md +0 -0
  55. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ja/models/litellm.md +0 -0
  56. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ja/multi_agent.md +0 -0
  57. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ja/quickstart.md +0 -0
  58. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ja/realtime/guide.md +0 -0
  59. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ja/realtime/quickstart.md +0 -0
  60. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ja/release.md +0 -0
  61. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ja/repl.md +0 -0
  62. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ja/results.md +0 -0
  63. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ja/running_agents.md +0 -0
  64. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ja/sessions/advanced_sqlite_session.md +0 -0
  65. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ja/sessions/encrypted_session.md +0 -0
  66. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ja/sessions/index.md +0 -0
  67. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ja/sessions/sqlalchemy_session.md +0 -0
  68. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ja/sessions.md +0 -0
  69. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ja/streaming.md +0 -0
  70. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ja/tools.md +0 -0
  71. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ja/tracing.md +0 -0
  72. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ja/usage.md +0 -0
  73. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ja/visualization.md +0 -0
  74. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ja/voice/pipeline.md +0 -0
  75. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ja/voice/quickstart.md +0 -0
  76. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ja/voice/tracing.md +0 -0
  77. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ko/agents.md +0 -0
  78. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ko/config.md +0 -0
  79. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ko/context.md +0 -0
  80. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ko/examples.md +0 -0
  81. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ko/guardrails.md +0 -0
  82. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ko/handoffs.md +0 -0
  83. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ko/index.md +0 -0
  84. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ko/mcp.md +0 -0
  85. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ko/models/index.md +0 -0
  86. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ko/models/litellm.md +0 -0
  87. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ko/multi_agent.md +0 -0
  88. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ko/quickstart.md +0 -0
  89. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ko/realtime/guide.md +0 -0
  90. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ko/realtime/quickstart.md +0 -0
  91. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ko/release.md +0 -0
  92. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ko/repl.md +0 -0
  93. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ko/results.md +0 -0
  94. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ko/running_agents.md +0 -0
  95. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ko/sessions/advanced_sqlite_session.md +0 -0
  96. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ko/sessions/encrypted_session.md +0 -0
  97. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ko/sessions/index.md +0 -0
  98. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ko/sessions/sqlalchemy_session.md +0 -0
  99. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ko/sessions.md +0 -0
  100. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ko/streaming.md +0 -0
  101. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ko/tools.md +0 -0
  102. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ko/tracing.md +0 -0
  103. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ko/usage.md +0 -0
  104. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ko/visualization.md +0 -0
  105. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ko/voice/pipeline.md +0 -0
  106. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ko/voice/quickstart.md +0 -0
  107. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ko/voice/tracing.md +0 -0
  108. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/llms-full.txt +0 -0
  109. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/llms.txt +0 -0
  110. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/mcp.md +0 -0
  111. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/models/index.md +0 -0
  112. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/models/litellm.md +0 -0
  113. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/multi_agent.md +0 -0
  114. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/quickstart.md +0 -0
  115. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/realtime/guide.md +0 -0
  116. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/realtime/quickstart.md +0 -0
  117. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ref/agent.md +0 -0
  118. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ref/agent_output.md +0 -0
  119. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ref/computer.md +0 -0
  120. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ref/exceptions.md +0 -0
  121. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ref/extensions/handoff_filters.md +0 -0
  122. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ref/extensions/handoff_prompt.md +0 -0
  123. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ref/extensions/litellm.md +0 -0
  124. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ref/extensions/memory/advanced_sqlite_session.md +0 -0
  125. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ref/extensions/memory/encrypt_session.md +0 -0
  126. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ref/extensions/memory/redis_session.md +0 -0
  127. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ref/extensions/memory/sqlalchemy_session.md +0 -0
  128. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ref/extensions/models/litellm_model.md +0 -0
  129. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ref/extensions/models/litellm_provider.md +0 -0
  130. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ref/extensions/visualization.md +0 -0
  131. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ref/function_schema.md +0 -0
  132. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ref/guardrail.md +0 -0
  133. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ref/handoffs.md +0 -0
  134. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ref/index.md +0 -0
  135. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ref/items.md +0 -0
  136. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ref/lifecycle.md +0 -0
  137. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ref/logger.md +0 -0
  138. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ref/mcp/server.md +0 -0
  139. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ref/mcp/util.md +0 -0
  140. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ref/memory/openai_conversations_session.md +0 -0
  141. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ref/memory/session.md +0 -0
  142. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ref/memory/sqlite_session.md +0 -0
  143. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ref/memory/util.md +0 -0
  144. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ref/memory.md +0 -0
  145. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ref/model_settings.md +0 -0
  146. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ref/models/chatcmpl_converter.md +0 -0
  147. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ref/models/chatcmpl_helpers.md +0 -0
  148. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ref/models/chatcmpl_stream_handler.md +0 -0
  149. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ref/models/default_models.md +0 -0
  150. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ref/models/fake_id.md +0 -0
  151. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ref/models/interface.md +0 -0
  152. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ref/models/multi_provider.md +0 -0
  153. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ref/models/openai_chatcompletions.md +0 -0
  154. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ref/models/openai_provider.md +0 -0
  155. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ref/models/openai_responses.md +0 -0
  156. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ref/prompts.md +0 -0
  157. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ref/realtime/agent.md +0 -0
  158. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ref/realtime/audio_formats.md +0 -0
  159. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ref/realtime/config.md +0 -0
  160. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ref/realtime/events.md +0 -0
  161. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ref/realtime/handoffs.md +0 -0
  162. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ref/realtime/items.md +0 -0
  163. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ref/realtime/model.md +0 -0
  164. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ref/realtime/model_events.md +0 -0
  165. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ref/realtime/model_inputs.md +0 -0
  166. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ref/realtime/openai_realtime.md +0 -0
  167. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ref/realtime/runner.md +0 -0
  168. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ref/realtime/session.md +0 -0
  169. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ref/repl.md +0 -0
  170. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ref/result.md +0 -0
  171. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ref/run.md +0 -0
  172. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ref/run_context.md +0 -0
  173. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ref/stream_events.md +0 -0
  174. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ref/strict_schema.md +0 -0
  175. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ref/tool.md +0 -0
  176. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ref/tool_context.md +0 -0
  177. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ref/tool_guardrails.md +0 -0
  178. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ref/tracing/create.md +0 -0
  179. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ref/tracing/index.md +0 -0
  180. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ref/tracing/logger.md +0 -0
  181. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ref/tracing/processor_interface.md +0 -0
  182. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ref/tracing/processors.md +0 -0
  183. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ref/tracing/provider.md +0 -0
  184. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ref/tracing/scope.md +0 -0
  185. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ref/tracing/setup.md +0 -0
  186. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ref/tracing/span_data.md +0 -0
  187. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ref/tracing/spans.md +0 -0
  188. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ref/tracing/traces.md +0 -0
  189. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ref/tracing/util.md +0 -0
  190. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ref/usage.md +0 -0
  191. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ref/version.md +0 -0
  192. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ref/voice/events.md +0 -0
  193. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ref/voice/exceptions.md +0 -0
  194. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ref/voice/imports.md +0 -0
  195. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ref/voice/input.md +0 -0
  196. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ref/voice/model.md +0 -0
  197. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ref/voice/models/openai_model_provider.md +0 -0
  198. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ref/voice/models/openai_provider.md +0 -0
  199. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ref/voice/models/openai_stt.md +0 -0
  200. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ref/voice/models/openai_tts.md +0 -0
  201. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ref/voice/pipeline.md +0 -0
  202. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ref/voice/pipeline_config.md +0 -0
  203. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ref/voice/result.md +0 -0
  204. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ref/voice/utils.md +0 -0
  205. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/ref/voice/workflow.md +0 -0
  206. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/release.md +0 -0
  207. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/repl.md +0 -0
  208. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/results.md +0 -0
  209. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/running_agents.md +0 -0
  210. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/scripts/generate_ref_files.py +0 -0
  211. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/scripts/translate_docs.py +0 -0
  212. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/sessions/advanced_sqlite_session.md +0 -0
  213. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/sessions/encrypted_session.md +0 -0
  214. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/sessions/index.md +0 -0
  215. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/sessions/sqlalchemy_session.md +0 -0
  216. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/streaming.md +0 -0
  217. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/stylesheets/extra.css +0 -0
  218. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/tools.md +0 -0
  219. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/tracing.md +0 -0
  220. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/usage.md +0 -0
  221. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/visualization.md +0 -0
  222. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/voice/pipeline.md +0 -0
  223. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/voice/quickstart.md +0 -0
  224. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/voice/tracing.md +0 -0
  225. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/zh/agents.md +0 -0
  226. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/zh/config.md +0 -0
  227. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/zh/context.md +0 -0
  228. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/zh/examples.md +0 -0
  229. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/zh/guardrails.md +0 -0
  230. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/zh/handoffs.md +0 -0
  231. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/zh/index.md +0 -0
  232. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/zh/mcp.md +0 -0
  233. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/zh/models/index.md +0 -0
  234. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/zh/models/litellm.md +0 -0
  235. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/zh/multi_agent.md +0 -0
  236. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/zh/quickstart.md +0 -0
  237. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/zh/realtime/guide.md +0 -0
  238. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/zh/realtime/quickstart.md +0 -0
  239. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/zh/release.md +0 -0
  240. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/zh/repl.md +0 -0
  241. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/zh/results.md +0 -0
  242. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/zh/running_agents.md +0 -0
  243. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/zh/sessions/advanced_sqlite_session.md +0 -0
  244. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/zh/sessions/encrypted_session.md +0 -0
  245. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/zh/sessions/index.md +0 -0
  246. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/zh/sessions/sqlalchemy_session.md +0 -0
  247. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/zh/sessions.md +0 -0
  248. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/zh/streaming.md +0 -0
  249. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/zh/tools.md +0 -0
  250. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/zh/tracing.md +0 -0
  251. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/zh/usage.md +0 -0
  252. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/zh/visualization.md +0 -0
  253. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/zh/voice/pipeline.md +0 -0
  254. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/zh/voice/quickstart.md +0 -0
  255. {openai_agents-0.4.1 → openai_agents-0.4.2}/docs/zh/voice/tracing.md +0 -0
  256. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/__init__.py +0 -0
  257. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/agent_patterns/README.md +0 -0
  258. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/agent_patterns/agents_as_tools.py +0 -0
  259. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/agent_patterns/agents_as_tools_conditional.py +0 -0
  260. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/agent_patterns/deterministic.py +0 -0
  261. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/agent_patterns/forcing_tool_use.py +0 -0
  262. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/agent_patterns/input_guardrails.py +0 -0
  263. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/agent_patterns/llm_as_a_judge.py +0 -0
  264. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/agent_patterns/output_guardrails.py +0 -0
  265. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/agent_patterns/parallelization.py +0 -0
  266. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/agent_patterns/routing.py +0 -0
  267. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/agent_patterns/streaming_guardrails.py +0 -0
  268. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/basic/agent_lifecycle_example.py +0 -0
  269. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/basic/dynamic_system_prompt.py +0 -0
  270. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/basic/hello_world.py +0 -0
  271. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/basic/hello_world_gpt_5.py +0 -0
  272. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/basic/hello_world_gpt_oss.py +0 -0
  273. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/basic/hello_world_jupyter.ipynb +0 -0
  274. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/basic/image_tool_output.py +0 -0
  275. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/basic/lifecycle_example.py +0 -0
  276. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/basic/local_file.py +0 -0
  277. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/basic/local_image.py +0 -0
  278. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/basic/media/image_bison.jpg +0 -0
  279. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/basic/media/partial_o3-and-o4-mini-system-card.pdf +0 -0
  280. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/basic/non_strict_output_type.py +0 -0
  281. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/basic/previous_response_id.py +0 -0
  282. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/basic/prompt_template.py +0 -0
  283. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/basic/remote_image.py +0 -0
  284. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/basic/remote_pdf.py +0 -0
  285. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/basic/stream_function_call_args.py +0 -0
  286. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/basic/stream_items.py +0 -0
  287. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/basic/stream_text.py +0 -0
  288. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/basic/tool_guardrails.py +0 -0
  289. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/basic/tools.py +0 -0
  290. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/basic/usage_tracking.py +0 -0
  291. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/customer_service/main.py +0 -0
  292. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/financial_research_agent/README.md +0 -0
  293. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/financial_research_agent/__init__.py +0 -0
  294. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/financial_research_agent/agents/__init__.py +0 -0
  295. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/financial_research_agent/agents/financials_agent.py +0 -0
  296. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/financial_research_agent/agents/planner_agent.py +0 -0
  297. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/financial_research_agent/agents/risk_agent.py +0 -0
  298. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/financial_research_agent/agents/search_agent.py +0 -0
  299. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/financial_research_agent/agents/verifier_agent.py +0 -0
  300. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/financial_research_agent/agents/writer_agent.py +0 -0
  301. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/financial_research_agent/main.py +0 -0
  302. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/financial_research_agent/manager.py +0 -0
  303. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/financial_research_agent/printer.py +0 -0
  304. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/handoffs/message_filter.py +0 -0
  305. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/handoffs/message_filter_streaming.py +0 -0
  306. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/hosted_mcp/__init__.py +0 -0
  307. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/hosted_mcp/approvals.py +0 -0
  308. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/hosted_mcp/connectors.py +0 -0
  309. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/hosted_mcp/simple.py +0 -0
  310. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/mcp/filesystem_example/README.md +0 -0
  311. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/mcp/filesystem_example/main.py +0 -0
  312. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/mcp/filesystem_example/sample_files/favorite_books.txt +0 -0
  313. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/mcp/filesystem_example/sample_files/favorite_cities.txt +0 -0
  314. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/mcp/filesystem_example/sample_files/favorite_songs.txt +0 -0
  315. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/mcp/git_example/README.md +0 -0
  316. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/mcp/git_example/main.py +0 -0
  317. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/mcp/prompt_server/README.md +0 -0
  318. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/mcp/prompt_server/main.py +0 -0
  319. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/mcp/prompt_server/server.py +0 -0
  320. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/mcp/sse_example/README.md +0 -0
  321. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/mcp/sse_example/main.py +0 -0
  322. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/mcp/sse_example/server.py +0 -0
  323. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/mcp/streamablehttp_custom_client_example/README.md +0 -0
  324. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/mcp/streamablehttp_custom_client_example/main.py +0 -0
  325. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/mcp/streamablehttp_custom_client_example/server.py +0 -0
  326. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/mcp/streamablehttp_example/README.md +0 -0
  327. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/mcp/streamablehttp_example/main.py +0 -0
  328. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/mcp/streamablehttp_example/server.py +0 -0
  329. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/memory/advanced_sqlite_session_example.py +0 -0
  330. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/memory/encrypted_session_example.py +0 -0
  331. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/memory/openai_session_example.py +0 -0
  332. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/memory/redis_session_example.py +0 -0
  333. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/memory/sqlalchemy_session_example.py +0 -0
  334. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/memory/sqlite_session_example.py +0 -0
  335. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/model_providers/README.md +0 -0
  336. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/model_providers/custom_example_agent.py +0 -0
  337. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/model_providers/custom_example_global.py +0 -0
  338. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/model_providers/custom_example_provider.py +0 -0
  339. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/model_providers/litellm_auto.py +0 -0
  340. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/model_providers/litellm_provider.py +0 -0
  341. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/realtime/app/README.md +0 -0
  342. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/realtime/app/static/app.js +0 -0
  343. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/realtime/app/static/audio-playback.worklet.js +0 -0
  344. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/realtime/app/static/audio-recorder.worklet.js +0 -0
  345. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/realtime/app/static/favicon.ico +0 -0
  346. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/realtime/app/static/index.html +0 -0
  347. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/realtime/cli/demo.py +0 -0
  348. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/realtime/twilio/README.md +0 -0
  349. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/realtime/twilio/__init__.py +0 -0
  350. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/realtime/twilio/requirements.txt +0 -0
  351. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/realtime/twilio/server.py +0 -0
  352. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/realtime/twilio/twilio_handler.py +0 -0
  353. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/reasoning_content/__init__.py +0 -0
  354. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/reasoning_content/gpt_oss_stream.py +0 -0
  355. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/reasoning_content/main.py +0 -0
  356. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/reasoning_content/runner_example.py +0 -0
  357. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/research_bot/README.md +0 -0
  358. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/research_bot/__init__.py +0 -0
  359. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/research_bot/agents/__init__.py +0 -0
  360. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/research_bot/agents/planner_agent.py +0 -0
  361. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/research_bot/agents/search_agent.py +0 -0
  362. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/research_bot/agents/writer_agent.py +0 -0
  363. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/research_bot/main.py +0 -0
  364. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/research_bot/manager.py +0 -0
  365. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/research_bot/printer.py +0 -0
  366. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/research_bot/sample_outputs/product_recs.md +0 -0
  367. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/research_bot/sample_outputs/product_recs.txt +0 -0
  368. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/research_bot/sample_outputs/vacation.md +0 -0
  369. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/research_bot/sample_outputs/vacation.txt +0 -0
  370. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/tools/code_interpreter.py +0 -0
  371. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/tools/computer_use.py +0 -0
  372. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/tools/file_search.py +0 -0
  373. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/tools/image_generator.py +0 -0
  374. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/tools/local_shell.py +0 -0
  375. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/tools/web_search.py +0 -0
  376. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/tools/web_search_filters.py +0 -0
  377. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/voice/__init__.py +0 -0
  378. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/voice/static/README.md +0 -0
  379. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/voice/static/__init__.py +0 -0
  380. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/voice/static/main.py +0 -0
  381. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/voice/static/util.py +0 -0
  382. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/voice/streamed/README.md +0 -0
  383. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/voice/streamed/__init__.py +0 -0
  384. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/voice/streamed/main.py +0 -0
  385. {openai_agents-0.4.1 → openai_agents-0.4.2}/examples/voice/streamed/my_workflow.py +0 -0
  386. {openai_agents-0.4.1 → openai_agents-0.4.2}/mkdocs.yml +0 -0
  387. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/__init__.py +0 -0
  388. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/_config.py +0 -0
  389. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/_debug.py +0 -0
  390. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/_run_impl.py +0 -0
  391. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/agent.py +0 -0
  392. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/agent_output.py +0 -0
  393. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/computer.py +0 -0
  394. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/exceptions.py +0 -0
  395. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/extensions/__init__.py +0 -0
  396. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/extensions/handoff_filters.py +0 -0
  397. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/extensions/handoff_prompt.py +0 -0
  398. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/extensions/memory/__init__.py +0 -0
  399. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/extensions/memory/advanced_sqlite_session.py +0 -0
  400. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/extensions/memory/encrypt_session.py +0 -0
  401. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/extensions/memory/redis_session.py +0 -0
  402. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/extensions/memory/sqlalchemy_session.py +0 -0
  403. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/extensions/models/__init__.py +0 -0
  404. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/extensions/models/litellm_provider.py +0 -0
  405. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/extensions/visualization.py +0 -0
  406. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/function_schema.py +0 -0
  407. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/guardrail.py +0 -0
  408. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/handoffs.py +0 -0
  409. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/items.py +0 -0
  410. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/lifecycle.py +0 -0
  411. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/logger.py +0 -0
  412. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/mcp/__init__.py +0 -0
  413. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/mcp/server.py +0 -0
  414. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/mcp/util.py +0 -0
  415. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/memory/__init__.py +0 -0
  416. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/memory/openai_conversations_session.py +0 -0
  417. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/memory/session.py +0 -0
  418. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/memory/sqlite_session.py +0 -0
  419. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/memory/util.py +0 -0
  420. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/model_settings.py +0 -0
  421. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/models/__init__.py +0 -0
  422. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/models/_openai_shared.py +0 -0
  423. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/models/chatcmpl_converter.py +0 -0
  424. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/models/chatcmpl_helpers.py +0 -0
  425. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/models/default_models.py +0 -0
  426. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/models/fake_id.py +0 -0
  427. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/models/interface.py +0 -0
  428. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/models/multi_provider.py +0 -0
  429. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/models/openai_chatcompletions.py +0 -0
  430. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/models/openai_provider.py +0 -0
  431. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/models/openai_responses.py +0 -0
  432. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/prompts.py +0 -0
  433. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/py.typed +0 -0
  434. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/realtime/README.md +0 -0
  435. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/realtime/__init__.py +0 -0
  436. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/realtime/_default_tracker.py +0 -0
  437. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/realtime/_util.py +0 -0
  438. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/realtime/agent.py +0 -0
  439. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/realtime/audio_formats.py +0 -0
  440. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/realtime/events.py +0 -0
  441. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/realtime/handoffs.py +0 -0
  442. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/realtime/items.py +0 -0
  443. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/realtime/model.py +0 -0
  444. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/realtime/model_events.py +0 -0
  445. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/realtime/model_inputs.py +0 -0
  446. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/realtime/openai_realtime.py +0 -0
  447. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/realtime/runner.py +0 -0
  448. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/repl.py +0 -0
  449. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/result.py +0 -0
  450. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/run.py +0 -0
  451. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/run_context.py +0 -0
  452. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/stream_events.py +0 -0
  453. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/strict_schema.py +0 -0
  454. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/tool.py +0 -0
  455. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/tool_context.py +0 -0
  456. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/tool_guardrails.py +0 -0
  457. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/tracing/__init__.py +0 -0
  458. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/tracing/create.py +0 -0
  459. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/tracing/logger.py +0 -0
  460. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/tracing/processor_interface.py +0 -0
  461. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/tracing/processors.py +0 -0
  462. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/tracing/provider.py +0 -0
  463. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/tracing/scope.py +0 -0
  464. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/tracing/setup.py +0 -0
  465. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/tracing/span_data.py +0 -0
  466. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/tracing/spans.py +0 -0
  467. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/tracing/traces.py +0 -0
  468. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/tracing/util.py +0 -0
  469. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/usage.py +0 -0
  470. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/util/__init__.py +0 -0
  471. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/util/_coro.py +0 -0
  472. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/util/_error_tracing.py +0 -0
  473. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/util/_json.py +0 -0
  474. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/util/_pretty_print.py +0 -0
  475. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/util/_transforms.py +0 -0
  476. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/util/_types.py +0 -0
  477. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/version.py +0 -0
  478. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/voice/__init__.py +0 -0
  479. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/voice/events.py +0 -0
  480. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/voice/exceptions.py +0 -0
  481. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/voice/imports.py +0 -0
  482. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/voice/input.py +0 -0
  483. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/voice/model.py +0 -0
  484. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/voice/models/__init__.py +0 -0
  485. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/voice/models/openai_model_provider.py +0 -0
  486. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/voice/models/openai_stt.py +0 -0
  487. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/voice/models/openai_tts.py +0 -0
  488. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/voice/pipeline.py +0 -0
  489. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/voice/pipeline_config.py +0 -0
  490. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/voice/result.py +0 -0
  491. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/voice/utils.py +0 -0
  492. {openai_agents-0.4.1 → openai_agents-0.4.2}/src/agents/voice/workflow.py +0 -0
  493. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/README.md +0 -0
  494. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/__init__.py +0 -0
  495. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/conftest.py +0 -0
  496. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/extensions/memory/test_advanced_sqlite_session.py +0 -0
  497. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/extensions/memory/test_encrypt_session.py +0 -0
  498. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/extensions/memory/test_redis_session.py +0 -0
  499. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/extensions/memory/test_sqlalchemy_session.py +0 -0
  500. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/fake_model.py +0 -0
  501. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/fastapi/__init__.py +0 -0
  502. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/fastapi/streaming_app.py +0 -0
  503. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/fastapi/test_streaming_context.py +0 -0
  504. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/mcp/__init__.py +0 -0
  505. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/mcp/conftest.py +0 -0
  506. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/mcp/helpers.py +0 -0
  507. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/mcp/test_caching.py +0 -0
  508. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/mcp/test_client_session_retries.py +0 -0
  509. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/mcp/test_connect_disconnect.py +0 -0
  510. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/mcp/test_mcp_tracing.py +0 -0
  511. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/mcp/test_mcp_util.py +0 -0
  512. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/mcp/test_message_handler.py +0 -0
  513. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/mcp/test_prompt_server.py +0 -0
  514. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/mcp/test_runner_calls_mcp.py +0 -0
  515. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/mcp/test_server_errors.py +0 -0
  516. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/mcp/test_streamable_http_client_factory.py +0 -0
  517. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/mcp/test_tool_filtering.py +0 -0
  518. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/model_settings/test_serialization.py +0 -0
  519. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/models/__init__.py +0 -0
  520. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/models/conftest.py +0 -0
  521. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/models/test_default_models.py +0 -0
  522. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/models/test_litellm_chatcompletions_stream.py +0 -0
  523. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/models/test_litellm_user_agent.py +0 -0
  524. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/models/test_map.py +0 -0
  525. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/realtime/__init__.py +0 -0
  526. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/realtime/test_agent.py +0 -0
  527. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/realtime/test_audio_formats_unit.py +0 -0
  528. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/realtime/test_conversion_helpers.py +0 -0
  529. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/realtime/test_ga_session_update_normalization.py +0 -0
  530. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/realtime/test_item_parsing.py +0 -0
  531. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/realtime/test_model_events.py +0 -0
  532. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/realtime/test_openai_realtime_conversions.py +0 -0
  533. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/realtime/test_playback_tracker.py +0 -0
  534. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/realtime/test_playback_tracker_manual_unit.py +0 -0
  535. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/realtime/test_realtime_handoffs.py +0 -0
  536. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/realtime/test_runner.py +0 -0
  537. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/realtime/test_session_payload_and_formats.py +0 -0
  538. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/realtime/test_tracing.py +0 -0
  539. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/test_agent_as_tool.py +0 -0
  540. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/test_agent_clone_shallow_copy.py +0 -0
  541. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/test_agent_config.py +0 -0
  542. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/test_agent_hooks.py +0 -0
  543. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/test_agent_instructions_signature.py +0 -0
  544. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/test_agent_llm_hooks.py +0 -0
  545. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/test_agent_prompt.py +0 -0
  546. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/test_agent_runner.py +0 -0
  547. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/test_agent_runner_streamed.py +0 -0
  548. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/test_agent_tracing.py +0 -0
  549. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/test_anthropic_thinking_blocks.py +0 -0
  550. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/test_call_model_input_filter.py +0 -0
  551. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/test_call_model_input_filter_unit.py +0 -0
  552. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/test_cancel_streaming.py +0 -0
  553. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/test_computer_action.py +0 -0
  554. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/test_config.py +0 -0
  555. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/test_debug.py +0 -0
  556. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/test_doc_parsing.py +0 -0
  557. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/test_extended_thinking_message_order.py +0 -0
  558. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/test_extension_filters.py +0 -0
  559. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/test_extra_headers.py +0 -0
  560. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/test_function_schema.py +0 -0
  561. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/test_function_tool.py +0 -0
  562. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/test_function_tool_decorator.py +0 -0
  563. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/test_global_hooks.py +0 -0
  564. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/test_guardrails.py +0 -0
  565. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/test_handoff_tool.py +0 -0
  566. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/test_items_helpers.py +0 -0
  567. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/test_local_shell_tool.py +0 -0
  568. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/test_logprobs.py +0 -0
  569. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/test_max_turns.py +0 -0
  570. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/test_model_payload_iterators.py +0 -0
  571. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/test_openai_chatcompletions.py +0 -0
  572. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/test_openai_chatcompletions_converter.py +0 -0
  573. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/test_openai_chatcompletions_stream.py +0 -0
  574. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/test_openai_conversations_session.py +0 -0
  575. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/test_openai_responses.py +0 -0
  576. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/test_openai_responses_converter.py +0 -0
  577. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/test_output_tool.py +0 -0
  578. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/test_pretty_print.py +0 -0
  579. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/test_reasoning_content.py +0 -0
  580. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/test_repl.py +0 -0
  581. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/test_responses.py +0 -0
  582. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/test_responses_tracing.py +0 -0
  583. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/test_result_cast.py +0 -0
  584. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/test_run.py +0 -0
  585. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/test_run_config.py +0 -0
  586. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/test_run_error_details.py +0 -0
  587. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/test_run_hooks.py +0 -0
  588. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/test_run_step_execution.py +0 -0
  589. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/test_run_step_processing.py +0 -0
  590. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/test_session.py +0 -0
  591. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/test_session_exceptions.py +0 -0
  592. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/test_soft_cancel.py +0 -0
  593. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/test_stream_events.py +0 -0
  594. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/test_stream_input_guardrail_timing.py +0 -0
  595. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/test_streaming_tool_call_arguments.py +0 -0
  596. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/test_strict_schema.py +0 -0
  597. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/test_strict_schema_oneof.py +0 -0
  598. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/test_tool_choice_reset.py +0 -0
  599. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/test_tool_converter.py +0 -0
  600. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/test_tool_guardrails.py +0 -0
  601. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/test_tool_output_conversion.py +0 -0
  602. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/test_tool_use_behavior.py +0 -0
  603. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/test_trace_processor.py +0 -0
  604. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/test_tracing.py +0 -0
  605. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/test_tracing_errors.py +0 -0
  606. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/test_tracing_errors_streamed.py +0 -0
  607. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/test_usage.py +0 -0
  608. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/test_visualization.py +0 -0
  609. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/testing_processor.py +0 -0
  610. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/tracing/test_processor_api_key.py +0 -0
  611. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/tracing/test_set_api_key_fix.py +0 -0
  612. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/utils/simple_session.py +0 -0
  613. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/utils/test_json.py +0 -0
  614. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/voice/__init__.py +0 -0
  615. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/voice/conftest.py +0 -0
  616. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/voice/fake_models.py +0 -0
  617. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/voice/helpers.py +0 -0
  618. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/voice/test_input.py +0 -0
  619. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/voice/test_openai_stt.py +0 -0
  620. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/voice/test_openai_tts.py +0 -0
  621. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/voice/test_pipeline.py +0 -0
  622. {openai_agents-0.4.1 → openai_agents-0.4.2}/tests/voice/test_workflow.py +0 -0
@@ -22,6 +22,8 @@ jobs:
22
22
  enable-cache: true
23
23
  - name: Install dependencies
24
24
  run: make sync
25
+ - name: Verify formatting
26
+ run: make format-check
25
27
  - name: Run lint
26
28
  run: make lint
27
29
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: openai-agents
3
- Version: 0.4.1
3
+ Version: 0.4.2
4
4
  Summary: OpenAI Agents SDK
5
5
  Project-URL: Homepage, https://openai.github.io/openai-agents-python/
6
6
  Project-URL: Repository, https://github.com/openai/openai-agents-python
@@ -44,7 +44,7 @@ Requires-Dist: numpy<3,>=2.2.0; (python_version >= '3.10') and extra == 'voice'
44
44
  Requires-Dist: websockets<16,>=15.0; extra == 'voice'
45
45
  Description-Content-Type: text/markdown
46
46
 
47
- # OpenAI Agents SDK
47
+ # OpenAI Agents SDK [![PyPI](https://img.shields.io/pypi/v/openai-agents?label=pypi%20package)](https://pypi.org/project/openai-agents/)
48
48
 
49
49
  The OpenAI Agents SDK is a lightweight yet powerful framework for building multi-agent workflows. It is provider-agnostic, supporting the OpenAI Responses and Chat Completions APIs, as well as 100+ other LLMs.
50
50
 
@@ -1,4 +1,4 @@
1
- # OpenAI Agents SDK
1
+ # OpenAI Agents SDK [![PyPI](https://img.shields.io/pypi/v/openai-agents?label=pypi%20package)](https://pypi.org/project/openai-agents/)
2
2
 
3
3
  The OpenAI Agents SDK is a lightweight yet powerful framework for building multi-agent workflows. It is provider-agnostic, supporting the OpenAI Responses and Chat Completions APIs, as well as 100+ other LLMs.
4
4
 
@@ -1,3 +1,5 @@
1
+ import asyncio
2
+
1
3
  from agents import function_tool
2
4
  from agents.extensions.handoff_prompt import RECOMMENDED_PROMPT_PREFIX
3
5
  from agents.realtime import RealtimeAgent, realtime_handoff
@@ -13,20 +15,26 @@ will use the agent returned from get_starting_agent() as the starting agent."""
13
15
  name_override="faq_lookup_tool", description_override="Lookup frequently asked questions."
14
16
  )
15
17
  async def faq_lookup_tool(question: str) -> str:
16
- if "bag" in question or "baggage" in question:
18
+ print("faq_lookup_tool called with question:", question)
19
+
20
+ # Simulate a slow API call
21
+ await asyncio.sleep(3)
22
+
23
+ q = question.lower()
24
+ if "wifi" in q or "wi-fi" in q:
25
+ return "We have free wifi on the plane, join Airline-Wifi"
26
+ elif "bag" in q or "baggage" in q:
17
27
  return (
18
28
  "You are allowed to bring one bag on the plane. "
19
29
  "It must be under 50 pounds and 22 inches x 14 inches x 9 inches."
20
30
  )
21
- elif "seats" in question or "plane" in question:
31
+ elif "seats" in q or "plane" in q:
22
32
  return (
23
33
  "There are 120 seats on the plane. "
24
34
  "There are 22 business class seats and 98 economy seats. "
25
35
  "Exit rows are rows 4 and 16. "
26
36
  "Rows 5-8 are Economy Plus, with extra legroom. "
27
37
  )
28
- elif "wifi" in question:
29
- return "We have free wifi on the plane, join Airline-Wifi"
30
38
  return "I'm sorry, I don't know the answer to that question."
31
39
 
32
40
 
@@ -47,6 +47,9 @@ class RealtimeWebSocketManager:
47
47
 
48
48
  agent = get_starting_agent()
49
49
  runner = RealtimeRunner(agent)
50
+ # If you want to customize the runner behavior, you can pass options:
51
+ # runner_config = RealtimeRunConfig(async_tool_calls=False)
52
+ # runner = RealtimeRunner(agent, config=runner_config)
50
53
  model_config: RealtimeModelConfig = {
51
54
  "initial_model_settings": {
52
55
  "turn_detection": {
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "openai-agents"
3
- version = "0.4.1"
3
+ version = "0.4.2"
4
4
  description = "OpenAI Agents SDK"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.9"
@@ -110,18 +110,26 @@ class LitellmModel(Model):
110
110
  prompt=prompt,
111
111
  )
112
112
 
113
- assert isinstance(response.choices[0], litellm.types.utils.Choices)
113
+ message: litellm.types.utils.Message | None = None
114
+ first_choice: litellm.types.utils.Choices | None = None
115
+ if response.choices and len(response.choices) > 0:
116
+ choice = response.choices[0]
117
+ if isinstance(choice, litellm.types.utils.Choices):
118
+ first_choice = choice
119
+ message = first_choice.message
114
120
 
115
121
  if _debug.DONT_LOG_MODEL_DATA:
116
122
  logger.debug("Received model response")
117
123
  else:
118
- logger.debug(
119
- f"""LLM resp:\n{
120
- json.dumps(
121
- response.choices[0].message.model_dump(), indent=2, ensure_ascii=False
122
- )
123
- }\n"""
124
- )
124
+ if message is not None:
125
+ logger.debug(
126
+ f"""LLM resp:\n{
127
+ json.dumps(message.model_dump(), indent=2, ensure_ascii=False)
128
+ }\n"""
129
+ )
130
+ else:
131
+ finish_reason = first_choice.finish_reason if first_choice else "-"
132
+ logger.debug(f"LLM resp had no message. finish_reason: {finish_reason}")
125
133
 
126
134
  if hasattr(response, "usage"):
127
135
  response_usage = response.usage
@@ -152,14 +160,20 @@ class LitellmModel(Model):
152
160
  logger.warning("No usage information returned from Litellm")
153
161
 
154
162
  if tracing.include_data():
155
- span_generation.span_data.output = [response.choices[0].message.model_dump()]
163
+ span_generation.span_data.output = (
164
+ [message.model_dump()] if message is not None else []
165
+ )
156
166
  span_generation.span_data.usage = {
157
167
  "input_tokens": usage.input_tokens,
158
168
  "output_tokens": usage.output_tokens,
159
169
  }
160
170
 
161
- items = Converter.message_to_output_items(
162
- LitellmConverter.convert_message_to_openai(response.choices[0].message)
171
+ items = (
172
+ Converter.message_to_output_items(
173
+ LitellmConverter.convert_message_to_openai(message)
174
+ )
175
+ if message is not None
176
+ else []
163
177
  )
164
178
 
165
179
  return ModelResponse(
@@ -326,6 +340,23 @@ class LitellmModel(Model):
326
340
  )
327
341
 
328
342
  reasoning_effort = model_settings.reasoning.effort if model_settings.reasoning else None
343
+ # Enable developers to pass non-OpenAI compatible reasoning_effort data like "none"
344
+ # Priority order:
345
+ # 1. model_settings.reasoning.effort
346
+ # 2. model_settings.extra_body["reasoning_effort"]
347
+ # 3. model_settings.extra_args["reasoning_effort"]
348
+ if (
349
+ reasoning_effort is None # Unset in model_settings
350
+ and isinstance(model_settings.extra_body, dict)
351
+ and "reasoning_effort" in model_settings.extra_body
352
+ ):
353
+ reasoning_effort = model_settings.extra_body["reasoning_effort"]
354
+ if (
355
+ reasoning_effort is None # Unset in both model_settings and model_settings.extra_body
356
+ and model_settings.extra_args
357
+ and "reasoning_effort" in model_settings.extra_args
358
+ ):
359
+ reasoning_effort = model_settings.extra_args["reasoning_effort"]
329
360
 
330
361
  stream_options = None
331
362
  if stream and model_settings.include_usage is not None:
@@ -343,6 +374,9 @@ class LitellmModel(Model):
343
374
  if model_settings.extra_args:
344
375
  extra_kwargs.update(model_settings.extra_args)
345
376
 
377
+ # Prevent duplicate reasoning_effort kwargs when it was promoted to a top-level argument.
378
+ extra_kwargs.pop("reasoning_effort", None)
379
+
346
380
  ret = await litellm.acompletion(
347
381
  model=self.model,
348
382
  messages=converted_messages,
@@ -150,6 +150,12 @@ class ChatCmplStreamHandler:
150
150
  )
151
151
 
152
152
  if reasoning_content and state.reasoning_content_index_and_output:
153
+ # Ensure summary list has at least one element
154
+ if not state.reasoning_content_index_and_output[1].summary:
155
+ state.reasoning_content_index_and_output[1].summary = [
156
+ Summary(text="", type="summary_text")
157
+ ]
158
+
153
159
  yield ResponseReasoningSummaryTextDeltaEvent(
154
160
  delta=reasoning_content,
155
161
  item_id=FAKE_RESPONSES_ID,
@@ -201,7 +207,7 @@ class ChatCmplStreamHandler:
201
207
  )
202
208
 
203
209
  # Create a new summary with updated text
204
- if state.reasoning_content_index_and_output[1].content is None:
210
+ if not state.reasoning_content_index_and_output[1].content:
205
211
  state.reasoning_content_index_and_output[1].content = [
206
212
  Content(text="", type="reasoning_text")
207
213
  ]
@@ -184,6 +184,9 @@ class RealtimeRunConfig(TypedDict):
184
184
  tracing_disabled: NotRequired[bool]
185
185
  """Whether tracing is disabled for this run."""
186
186
 
187
+ async_tool_calls: NotRequired[bool]
188
+ """Whether function tool calls should run asynchronously. Defaults to True."""
189
+
187
190
  # TODO (rm) Add history audio storage config
188
191
 
189
192
 
@@ -112,7 +112,7 @@ class RealtimeSession(RealtimeModelListener):
112
112
  }
113
113
  self._event_queue: asyncio.Queue[RealtimeSessionEvent] = asyncio.Queue()
114
114
  self._closed = False
115
- self._stored_exception: Exception | None = None
115
+ self._stored_exception: BaseException | None = None
116
116
 
117
117
  # Guardrails state tracking
118
118
  self._interrupted_response_ids: set[str] = set()
@@ -123,6 +123,8 @@ class RealtimeSession(RealtimeModelListener):
123
123
  )
124
124
 
125
125
  self._guardrail_tasks: set[asyncio.Task[Any]] = set()
126
+ self._tool_call_tasks: set[asyncio.Task[Any]] = set()
127
+ self._async_tool_calls: bool = bool(self._run_config.get("async_tool_calls", True))
126
128
 
127
129
  @property
128
130
  def model(self) -> RealtimeModel:
@@ -216,7 +218,11 @@ class RealtimeSession(RealtimeModelListener):
216
218
  if event.type == "error":
217
219
  await self._put_event(RealtimeError(info=self._event_info, error=event.error))
218
220
  elif event.type == "function_call":
219
- await self._handle_tool_call(event)
221
+ agent_snapshot = self._current_agent
222
+ if self._async_tool_calls:
223
+ self._enqueue_tool_call_task(event, agent_snapshot)
224
+ else:
225
+ await self._handle_tool_call(event, agent_snapshot=agent_snapshot)
220
226
  elif event.type == "audio":
221
227
  await self._put_event(
222
228
  RealtimeAudio(
@@ -384,11 +390,17 @@ class RealtimeSession(RealtimeModelListener):
384
390
  """Put an event into the queue."""
385
391
  await self._event_queue.put(event)
386
392
 
387
- async def _handle_tool_call(self, event: RealtimeModelToolCallEvent) -> None:
393
+ async def _handle_tool_call(
394
+ self,
395
+ event: RealtimeModelToolCallEvent,
396
+ *,
397
+ agent_snapshot: RealtimeAgent | None = None,
398
+ ) -> None:
388
399
  """Handle a tool call event."""
400
+ agent = agent_snapshot or self._current_agent
389
401
  tools, handoffs = await asyncio.gather(
390
- self._current_agent.get_all_tools(self._context_wrapper),
391
- self._get_handoffs(self._current_agent, self._context_wrapper),
402
+ agent.get_all_tools(self._context_wrapper),
403
+ self._get_handoffs(agent, self._context_wrapper),
392
404
  )
393
405
  function_map = {tool.name: tool for tool in tools if isinstance(tool, FunctionTool)}
394
406
  handoff_map = {handoff.tool_name: handoff for handoff in handoffs}
@@ -398,7 +410,7 @@ class RealtimeSession(RealtimeModelListener):
398
410
  RealtimeToolStart(
399
411
  info=self._event_info,
400
412
  tool=function_map[event.name],
401
- agent=self._current_agent,
413
+ agent=agent,
402
414
  )
403
415
  )
404
416
 
@@ -423,7 +435,7 @@ class RealtimeSession(RealtimeModelListener):
423
435
  info=self._event_info,
424
436
  tool=func_tool,
425
437
  output=result,
426
- agent=self._current_agent,
438
+ agent=agent,
427
439
  )
428
440
  )
429
441
  elif event.name in handoff_map:
@@ -444,7 +456,7 @@ class RealtimeSession(RealtimeModelListener):
444
456
  )
445
457
 
446
458
  # Store previous agent for event
447
- previous_agent = self._current_agent
459
+ previous_agent = agent
448
460
 
449
461
  # Update current agent
450
462
  self._current_agent = result
@@ -752,10 +764,49 @@ class RealtimeSession(RealtimeModelListener):
752
764
  task.cancel()
753
765
  self._guardrail_tasks.clear()
754
766
 
767
+ def _enqueue_tool_call_task(
768
+ self, event: RealtimeModelToolCallEvent, agent_snapshot: RealtimeAgent
769
+ ) -> None:
770
+ """Run tool calls in the background to avoid blocking realtime transport."""
771
+ task = asyncio.create_task(self._handle_tool_call(event, agent_snapshot=agent_snapshot))
772
+ self._tool_call_tasks.add(task)
773
+ task.add_done_callback(self._on_tool_call_task_done)
774
+
775
+ def _on_tool_call_task_done(self, task: asyncio.Task[Any]) -> None:
776
+ self._tool_call_tasks.discard(task)
777
+
778
+ if task.cancelled():
779
+ return
780
+
781
+ exception = task.exception()
782
+ if exception is None:
783
+ return
784
+
785
+ logger.exception("Realtime tool call task failed", exc_info=exception)
786
+
787
+ if self._stored_exception is None:
788
+ self._stored_exception = exception
789
+
790
+ asyncio.create_task(
791
+ self._put_event(
792
+ RealtimeError(
793
+ info=self._event_info,
794
+ error={"message": f"Tool call task failed: {exception}"},
795
+ )
796
+ )
797
+ )
798
+
799
+ def _cleanup_tool_call_tasks(self) -> None:
800
+ for task in self._tool_call_tasks:
801
+ if not task.done():
802
+ task.cancel()
803
+ self._tool_call_tasks.clear()
804
+
755
805
  async def _cleanup(self) -> None:
756
806
  """Clean up all resources and mark session as closed."""
757
807
  # Cancel and cleanup guardrail tasks
758
808
  self._cleanup_guardrail_tasks()
809
+ self._cleanup_tool_call_tasks()
759
810
 
760
811
  # Remove ourselves as a listener
761
812
  self._model.remove_listener(self)
@@ -176,3 +176,41 @@ async def test_empty_kwargs_handling(monkeypatch):
176
176
 
177
177
  # Should work without error and include regular parameters
178
178
  assert captured["temperature"] == 0.3
179
+
180
+
181
+ @pytest.mark.allow_call_model_methods
182
+ @pytest.mark.asyncio
183
+ async def test_reasoning_effort_falls_back_to_extra_args(monkeypatch):
184
+ """
185
+ Ensure reasoning_effort from extra_args is promoted when reasoning settings are missing.
186
+ """
187
+ captured: dict[str, object] = {}
188
+
189
+ async def fake_acompletion(model, messages=None, **kwargs):
190
+ captured.update(kwargs)
191
+ msg = Message(role="assistant", content="test response")
192
+ choice = Choices(index=0, message=msg)
193
+ return ModelResponse(choices=[choice], usage=Usage(0, 0, 0))
194
+
195
+ monkeypatch.setattr(litellm, "acompletion", fake_acompletion)
196
+
197
+ # GitHub issue context: https://github.com/openai/openai-agents-python/issues/1764.
198
+ settings = ModelSettings(
199
+ extra_args={"reasoning_effort": "none", "custom_param": "custom_value"}
200
+ )
201
+ model = LitellmModel(model="test-model")
202
+
203
+ await model.get_response(
204
+ system_instructions=None,
205
+ input="test input",
206
+ model_settings=settings,
207
+ tools=[],
208
+ output_schema=None,
209
+ handoffs=[],
210
+ tracing=ModelTracing.DISABLED,
211
+ previous_response_id=None,
212
+ )
213
+
214
+ assert captured["reasoning_effort"] == "none"
215
+ assert captured["custom_param"] == "custom_value"
216
+ assert settings.extra_args == {"reasoning_effort": "none", "custom_param": "custom_value"}
@@ -0,0 +1,157 @@
1
+ import litellm
2
+ import pytest
3
+ from litellm.types.utils import Choices, Message, ModelResponse, Usage
4
+
5
+ from agents.extensions.models.litellm_model import LitellmModel
6
+ from agents.model_settings import ModelSettings
7
+ from agents.models.interface import ModelTracing
8
+
9
+
10
+ @pytest.mark.allow_call_model_methods
11
+ @pytest.mark.asyncio
12
+ async def test_extra_body_is_forwarded(monkeypatch):
13
+ """
14
+ Forward `extra_body` entries into litellm.acompletion kwargs.
15
+
16
+ This ensures that user-provided parameters (e.g. cached_content)
17
+ arrive alongside default arguments.
18
+ """
19
+ captured: dict[str, object] = {}
20
+
21
+ async def fake_acompletion(model, messages=None, **kwargs):
22
+ captured.update(kwargs)
23
+ msg = Message(role="assistant", content="ok")
24
+ choice = Choices(index=0, message=msg)
25
+ return ModelResponse(choices=[choice], usage=Usage(0, 0, 0))
26
+
27
+ monkeypatch.setattr(litellm, "acompletion", fake_acompletion)
28
+ settings = ModelSettings(
29
+ temperature=0.1, extra_body={"cached_content": "some_cache", "foo": 123}
30
+ )
31
+ model = LitellmModel(model="test-model")
32
+
33
+ await model.get_response(
34
+ system_instructions=None,
35
+ input=[],
36
+ model_settings=settings,
37
+ tools=[],
38
+ output_schema=None,
39
+ handoffs=[],
40
+ tracing=ModelTracing.DISABLED,
41
+ previous_response_id=None,
42
+ )
43
+
44
+ assert {"cached_content": "some_cache", "foo": 123}.items() <= captured.items()
45
+
46
+
47
+ @pytest.mark.allow_call_model_methods
48
+ @pytest.mark.asyncio
49
+ async def test_extra_body_reasoning_effort_is_promoted(monkeypatch):
50
+ """
51
+ Ensure reasoning_effort from extra_body is promoted to the top-level parameter.
52
+ """
53
+ captured: dict[str, object] = {}
54
+
55
+ async def fake_acompletion(model, messages=None, **kwargs):
56
+ captured.update(kwargs)
57
+ msg = Message(role="assistant", content="ok")
58
+ choice = Choices(index=0, message=msg)
59
+ return ModelResponse(choices=[choice], usage=Usage(0, 0, 0))
60
+
61
+ monkeypatch.setattr(litellm, "acompletion", fake_acompletion)
62
+ # GitHub issue context: https://github.com/openai/openai-agents-python/issues/1764.
63
+ settings = ModelSettings(
64
+ extra_body={"reasoning_effort": "none", "cached_content": "some_cache"}
65
+ )
66
+ model = LitellmModel(model="test-model")
67
+
68
+ await model.get_response(
69
+ system_instructions=None,
70
+ input=[],
71
+ model_settings=settings,
72
+ tools=[],
73
+ output_schema=None,
74
+ handoffs=[],
75
+ tracing=ModelTracing.DISABLED,
76
+ previous_response_id=None,
77
+ )
78
+
79
+ assert captured["reasoning_effort"] == "none"
80
+ assert captured["cached_content"] == "some_cache"
81
+ assert settings.extra_body == {"reasoning_effort": "none", "cached_content": "some_cache"}
82
+
83
+
84
+ @pytest.mark.allow_call_model_methods
85
+ @pytest.mark.asyncio
86
+ async def test_reasoning_effort_prefers_model_settings(monkeypatch):
87
+ """
88
+ Verify explicit ModelSettings.reasoning takes precedence over extra_body entries.
89
+ """
90
+ from openai.types.shared import Reasoning
91
+
92
+ captured: dict[str, object] = {}
93
+
94
+ async def fake_acompletion(model, messages=None, **kwargs):
95
+ captured.update(kwargs)
96
+ msg = Message(role="assistant", content="ok")
97
+ choice = Choices(index=0, message=msg)
98
+ return ModelResponse(choices=[choice], usage=Usage(0, 0, 0))
99
+
100
+ monkeypatch.setattr(litellm, "acompletion", fake_acompletion)
101
+ settings = ModelSettings(
102
+ reasoning=Reasoning(effort="low"),
103
+ extra_body={"reasoning_effort": "high"},
104
+ )
105
+ model = LitellmModel(model="test-model")
106
+
107
+ await model.get_response(
108
+ system_instructions=None,
109
+ input=[],
110
+ model_settings=settings,
111
+ tools=[],
112
+ output_schema=None,
113
+ handoffs=[],
114
+ tracing=ModelTracing.DISABLED,
115
+ previous_response_id=None,
116
+ )
117
+
118
+ assert captured["reasoning_effort"] == "low"
119
+ assert settings.extra_body == {"reasoning_effort": "high"}
120
+
121
+
122
+ @pytest.mark.allow_call_model_methods
123
+ @pytest.mark.asyncio
124
+ async def test_extra_body_reasoning_effort_overrides_extra_args(monkeypatch):
125
+ """
126
+ Ensure extra_body reasoning_effort wins over extra_args when both are provided.
127
+ """
128
+ captured: dict[str, object] = {}
129
+
130
+ async def fake_acompletion(model, messages=None, **kwargs):
131
+ captured.update(kwargs)
132
+ msg = Message(role="assistant", content="ok")
133
+ choice = Choices(index=0, message=msg)
134
+ return ModelResponse(choices=[choice], usage=Usage(0, 0, 0))
135
+
136
+ monkeypatch.setattr(litellm, "acompletion", fake_acompletion)
137
+ # GitHub issue context: https://github.com/openai/openai-agents-python/issues/1764.
138
+ settings = ModelSettings(
139
+ extra_body={"reasoning_effort": "none"},
140
+ extra_args={"reasoning_effort": "low", "custom_param": "custom"},
141
+ )
142
+ model = LitellmModel(model="test-model")
143
+
144
+ await model.get_response(
145
+ system_instructions=None,
146
+ input=[],
147
+ model_settings=settings,
148
+ tools=[],
149
+ output_schema=None,
150
+ handoffs=[],
151
+ tracing=ModelTracing.DISABLED,
152
+ previous_response_id=None,
153
+ )
154
+
155
+ assert captured["reasoning_effort"] == "none"
156
+ assert captured["custom_param"] == "custom"
157
+ assert settings.extra_args == {"reasoning_effort": "low", "custom_param": "custom"}
@@ -518,9 +518,7 @@ class TestSendEventAndConfig(TestOpenAIRealtimeWebSocketModel):
518
518
  model._ongoing_response = True
519
519
  model._created_session = SimpleNamespace(
520
520
  audio=SimpleNamespace(
521
- input=SimpleNamespace(
522
- turn_detection=SimpleNamespace(interrupt_response=True)
523
- )
521
+ input=SimpleNamespace(turn_detection=SimpleNamespace(interrupt_response=True))
524
522
  )
525
523
  )
526
524
 
@@ -545,9 +543,7 @@ class TestSendEventAndConfig(TestOpenAIRealtimeWebSocketModel):
545
543
  model._ongoing_response = True
546
544
  model._created_session = SimpleNamespace(
547
545
  audio=SimpleNamespace(
548
- input=SimpleNamespace(
549
- turn_detection=SimpleNamespace(interrupt_response=True)
550
- )
546
+ input=SimpleNamespace(turn_detection=SimpleNamespace(interrupt_response=True))
551
547
  )
552
548
  )
553
549
 
@@ -561,8 +561,13 @@ class TestEventHandling:
561
561
 
562
562
  @pytest.mark.asyncio
563
563
  async def test_function_call_event_triggers_tool_handling(self, mock_model, mock_agent):
564
- """Test that function_call events trigger tool call handling"""
565
- session = RealtimeSession(mock_model, mock_agent, None)
564
+ """Test that function_call events trigger tool call handling synchronously when disabled"""
565
+ session = RealtimeSession(
566
+ mock_model,
567
+ mock_agent,
568
+ None,
569
+ run_config={"async_tool_calls": False},
570
+ )
566
571
 
567
572
  # Create function call event
568
573
  function_call_event = RealtimeModelToolCallEvent(
@@ -578,7 +583,9 @@ class TestEventHandling:
578
583
  await session.on_event(function_call_event)
579
584
 
580
585
  # Should have called the tool handler
581
- handle_tool_call_mock.assert_called_once_with(function_call_event)
586
+ handle_tool_call_mock.assert_called_once_with(
587
+ function_call_event, agent_snapshot=mock_agent
588
+ )
582
589
 
583
590
  # Should still have raw event
584
591
  assert session._event_queue.qsize() == 1
@@ -586,6 +593,36 @@ class TestEventHandling:
586
593
  assert isinstance(raw_event, RealtimeRawModelEvent)
587
594
  assert raw_event.data == function_call_event
588
595
 
596
+ @pytest.mark.asyncio
597
+ async def test_function_call_event_runs_async_by_default(self, mock_model, mock_agent):
598
+ """Function call handling should be scheduled asynchronously by default"""
599
+ session = RealtimeSession(mock_model, mock_agent, None)
600
+
601
+ function_call_event = RealtimeModelToolCallEvent(
602
+ name="test_function",
603
+ call_id="call_async",
604
+ arguments='{"param": "value"}',
605
+ )
606
+
607
+ with pytest.MonkeyPatch().context() as m:
608
+ handle_tool_call_mock = AsyncMock()
609
+ m.setattr(session, "_handle_tool_call", handle_tool_call_mock)
610
+
611
+ await session.on_event(function_call_event)
612
+
613
+ # Let the background task run
614
+ await asyncio.sleep(0)
615
+
616
+ handle_tool_call_mock.assert_awaited_once_with(
617
+ function_call_event, agent_snapshot=mock_agent
618
+ )
619
+
620
+ # Raw event still enqueued
621
+ assert session._event_queue.qsize() == 1
622
+ raw_event = await session._event_queue.get()
623
+ assert isinstance(raw_event, RealtimeRawModelEvent)
624
+ assert raw_event.data == function_call_event
625
+
589
626
 
590
627
  class TestHistoryManagement:
591
628
  """Test suite for history management and audio transcription in
@@ -1877,7 +1877,7 @@ wheels = [
1877
1877
 
1878
1878
  [[package]]
1879
1879
  name = "openai-agents"
1880
- version = "0.4.1"
1880
+ version = "0.4.2"
1881
1881
  source = { editable = "." }
1882
1882
  dependencies = [
1883
1883
  { name = "griffe" },