openai-agents 0.2.2__tar.gz → 0.2.4__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.

Potentially problematic release.


This version of openai-agents might be problematic. Click here for more details.

Files changed (479) hide show
  1. openai_agents-0.2.4/.github/codex/home/config.toml +1 -0
  2. openai_agents-0.2.4/.github/codex/labels/codex-attempt.md +9 -0
  3. openai_agents-0.2.4/.github/codex/labels/codex-review.md +7 -0
  4. openai_agents-0.2.4/.github/codex/labels/codex-triage.md +7 -0
  5. openai_agents-0.2.4/.github/workflows/codex.yml +60 -0
  6. {openai_agents-0.2.2 → openai_agents-0.2.4}/Makefile +1 -0
  7. {openai_agents-0.2.2 → openai_agents-0.2.4}/PKG-INFO +116 -112
  8. {openai_agents-0.2.2 → openai_agents-0.2.4}/README.md +114 -110
  9. {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/agents.md +98 -1
  10. openai_agents-0.2.4/docs/ja/agents.md +248 -0
  11. openai_agents-0.2.4/docs/ja/config.md +98 -0
  12. openai_agents-0.2.4/docs/ja/context.md +82 -0
  13. openai_agents-0.2.4/docs/ja/examples.md +47 -0
  14. {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ja/guardrails.md +17 -17
  15. openai_agents-0.2.4/docs/ja/handoffs.md +117 -0
  16. openai_agents-0.2.4/docs/ja/index.md +58 -0
  17. openai_agents-0.2.4/docs/ja/mcp.md +191 -0
  18. openai_agents-0.2.4/docs/ja/models/index.md +159 -0
  19. {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ja/models/litellm.md +10 -10
  20. openai_agents-0.2.4/docs/ja/multi_agent.md +41 -0
  21. {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ja/quickstart.md +30 -20
  22. openai_agents-0.2.4/docs/ja/realtime/guide.md +156 -0
  23. openai_agents-0.2.4/docs/ja/realtime/quickstart.md +179 -0
  24. openai_agents-0.2.4/docs/ja/release.md +32 -0
  25. openai_agents-0.2.4/docs/ja/repl.md +21 -0
  26. openai_agents-0.2.4/docs/ja/results.md +56 -0
  27. openai_agents-0.2.4/docs/ja/running_agents.md +138 -0
  28. openai_agents-0.2.4/docs/ja/sessions.md +315 -0
  29. {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ja/streaming.md +7 -7
  30. {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ja/tools.md +62 -35
  31. openai_agents-0.2.4/docs/ja/tracing.md +124 -0
  32. openai_agents-0.2.4/docs/ja/visualization.md +87 -0
  33. openai_agents-0.2.4/docs/ja/voice/pipeline.md +86 -0
  34. {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ja/voice/quickstart.md +10 -10
  35. openai_agents-0.2.4/docs/ja/voice/tracing.md +18 -0
  36. {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/quickstart.md +15 -5
  37. {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/realtime/guide.md +11 -0
  38. openai_agents-0.2.4/docs/ref/computer.md +3 -0
  39. openai_agents-0.2.4/docs/ref/extensions/models/litellm_model.md +3 -0
  40. openai_agents-0.2.4/docs/ref/extensions/models/litellm_provider.md +3 -0
  41. openai_agents-0.2.4/docs/ref/extensions/visualization.md +3 -0
  42. openai_agents-0.2.4/docs/ref/logger.md +3 -0
  43. openai_agents-0.2.4/docs/ref/models/chatcmpl_converter.md +3 -0
  44. openai_agents-0.2.4/docs/ref/models/chatcmpl_helpers.md +3 -0
  45. openai_agents-0.2.4/docs/ref/models/chatcmpl_stream_handler.md +3 -0
  46. openai_agents-0.2.4/docs/ref/models/fake_id.md +3 -0
  47. openai_agents-0.2.4/docs/ref/models/multi_provider.md +3 -0
  48. openai_agents-0.2.4/docs/ref/models/openai_provider.md +3 -0
  49. openai_agents-0.2.4/docs/ref/prompts.md +3 -0
  50. openai_agents-0.2.4/docs/ref/realtime/model.md +3 -0
  51. openai_agents-0.2.4/docs/ref/strict_schema.md +3 -0
  52. openai_agents-0.2.4/docs/ref/tool_context.md +3 -0
  53. openai_agents-0.2.4/docs/ref/tracing/logger.md +3 -0
  54. openai_agents-0.2.4/docs/ref/tracing/provider.md +3 -0
  55. openai_agents-0.2.4/docs/ref/version.md +3 -0
  56. openai_agents-0.2.4/docs/ref/voice/imports.md +3 -0
  57. openai_agents-0.2.4/docs/ref/voice/models/openai_model_provider.md +3 -0
  58. {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/running_agents.md +3 -2
  59. openai_agents-0.2.4/docs/scripts/generate_ref_files.py +78 -0
  60. {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/tracing.md +2 -1
  61. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/agent_patterns/llm_as_a_judge.py +4 -4
  62. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/financial_research_agent/agents/writer_agent.py +1 -1
  63. openai_agents-0.2.4/examples/realtime/twilio/README.md +86 -0
  64. openai_agents-0.2.4/examples/realtime/twilio/requirements.txt +5 -0
  65. openai_agents-0.2.4/examples/realtime/twilio/server.py +80 -0
  66. openai_agents-0.2.4/examples/realtime/twilio/twilio_handler.py +264 -0
  67. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/reasoning_content/main.py +2 -1
  68. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/tools/image_generator.py +1 -1
  69. {openai_agents-0.2.2 → openai_agents-0.2.4}/mkdocs.yml +2 -0
  70. {openai_agents-0.2.2 → openai_agents-0.2.4}/pyproject.toml +2 -2
  71. {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/agent.py +1 -28
  72. {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/agent_output.py +1 -1
  73. {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/extensions/models/litellm_model.py +14 -1
  74. {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/function_schema.py +3 -3
  75. {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/guardrail.py +9 -4
  76. {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/items.py +2 -1
  77. {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/model_settings.py +2 -1
  78. {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/models/chatcmpl_converter.py +12 -1
  79. {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/models/chatcmpl_stream_handler.py +17 -14
  80. {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/realtime/__init__.py +4 -0
  81. openai_agents-0.2.4/src/agents/realtime/_default_tracker.py +47 -0
  82. openai_agents-0.2.4/src/agents/realtime/_util.py +9 -0
  83. {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/realtime/events.py +18 -0
  84. openai_agents-0.2.4/src/agents/realtime/model.py +163 -0
  85. {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/realtime/model_events.py +28 -0
  86. {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/realtime/openai_realtime.py +97 -29
  87. {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/realtime/session.py +37 -10
  88. {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/tool.py +5 -0
  89. {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/tracing/create.py +1 -2
  90. {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/tracing/processors.py +4 -5
  91. {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/tracing/traces.py +1 -1
  92. {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/usage.py +2 -1
  93. {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/realtime/test_agent.py +2 -0
  94. {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/realtime/test_conversion_helpers.py +2 -0
  95. {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/realtime/test_openai_realtime.py +64 -45
  96. openai_agents-0.2.4/tests/realtime/test_playback_tracker.py +112 -0
  97. {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/realtime/test_session.py +181 -13
  98. {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/realtime/test_tracing.py +3 -1
  99. openai_agents-0.2.4/tests/voice/__init__.py +0 -0
  100. {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/voice/test_workflow.py +1 -0
  101. {openai_agents-0.2.2 → openai_agents-0.2.4}/uv.lock +5 -5
  102. openai_agents-0.2.2/docs/ja/agents.md +0 -151
  103. openai_agents-0.2.2/docs/ja/config.md +0 -98
  104. openai_agents-0.2.2/docs/ja/context.md +0 -81
  105. openai_agents-0.2.2/docs/ja/examples.md +0 -45
  106. openai_agents-0.2.2/docs/ja/handoffs.md +0 -117
  107. openai_agents-0.2.2/docs/ja/index.md +0 -56
  108. openai_agents-0.2.2/docs/ja/mcp.md +0 -72
  109. openai_agents-0.2.2/docs/ja/models/index.md +0 -155
  110. openai_agents-0.2.2/docs/ja/multi_agent.md +0 -41
  111. openai_agents-0.2.2/docs/ja/repl.md +0 -22
  112. openai_agents-0.2.2/docs/ja/results.md +0 -56
  113. openai_agents-0.2.2/docs/ja/running_agents.md +0 -99
  114. openai_agents-0.2.2/docs/ja/tracing.md +0 -123
  115. openai_agents-0.2.2/docs/ja/visualization.md +0 -87
  116. openai_agents-0.2.2/docs/ja/voice/pipeline.md +0 -81
  117. openai_agents-0.2.2/docs/ja/voice/tracing.md +0 -18
  118. openai_agents-0.2.2/src/agents/realtime/model.py +0 -69
  119. {openai_agents-0.2.2 → openai_agents-0.2.4}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  120. {openai_agents-0.2.2 → openai_agents-0.2.4}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  121. {openai_agents-0.2.2 → openai_agents-0.2.4}/.github/ISSUE_TEMPLATE/model_provider.md +0 -0
  122. {openai_agents-0.2.2 → openai_agents-0.2.4}/.github/ISSUE_TEMPLATE/question.md +0 -0
  123. {openai_agents-0.2.2 → openai_agents-0.2.4}/.github/PULL_REQUEST_TEMPLATE/pull_request_template.md +0 -0
  124. {openai_agents-0.2.2 → openai_agents-0.2.4}/.github/workflows/docs.yml +0 -0
  125. {openai_agents-0.2.2 → openai_agents-0.2.4}/.github/workflows/issues.yml +0 -0
  126. {openai_agents-0.2.2 → openai_agents-0.2.4}/.github/workflows/publish.yml +0 -0
  127. {openai_agents-0.2.2 → openai_agents-0.2.4}/.github/workflows/tests.yml +0 -0
  128. {openai_agents-0.2.2 → openai_agents-0.2.4}/.github/workflows/update-docs.yml +0 -0
  129. {openai_agents-0.2.2 → openai_agents-0.2.4}/.gitignore +0 -0
  130. {openai_agents-0.2.2 → openai_agents-0.2.4}/.prettierrc +0 -0
  131. {openai_agents-0.2.2 → openai_agents-0.2.4}/.vscode/launch.json +0 -0
  132. {openai_agents-0.2.2 → openai_agents-0.2.4}/.vscode/settings.json +0 -0
  133. {openai_agents-0.2.2 → openai_agents-0.2.4}/AGENTS.md +0 -0
  134. {openai_agents-0.2.2 → openai_agents-0.2.4}/CLAUDE.md +0 -0
  135. {openai_agents-0.2.2 → openai_agents-0.2.4}/LICENSE +0 -0
  136. {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/assets/images/favicon-platform.svg +0 -0
  137. {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/assets/images/graph.png +0 -0
  138. {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/assets/images/mcp-tracing.jpg +0 -0
  139. {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/assets/images/orchestration.png +0 -0
  140. {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/assets/logo.svg +0 -0
  141. {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/config.md +0 -0
  142. {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/context.md +0 -0
  143. {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/examples.md +0 -0
  144. {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/guardrails.md +0 -0
  145. {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/handoffs.md +0 -0
  146. {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/index.md +0 -0
  147. {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/mcp.md +0 -0
  148. {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/models/index.md +0 -0
  149. {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/models/litellm.md +0 -0
  150. {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/multi_agent.md +0 -0
  151. {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/realtime/quickstart.md +0 -0
  152. {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/agent.md +0 -0
  153. {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/agent_output.md +0 -0
  154. {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/exceptions.md +0 -0
  155. {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/extensions/handoff_filters.md +0 -0
  156. {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/extensions/handoff_prompt.md +0 -0
  157. {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/extensions/litellm.md +0 -0
  158. {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/function_schema.md +0 -0
  159. {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/guardrail.md +0 -0
  160. {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/handoffs.md +0 -0
  161. {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/index.md +0 -0
  162. {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/items.md +0 -0
  163. {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/lifecycle.md +0 -0
  164. {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/mcp/server.md +0 -0
  165. {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/mcp/util.md +0 -0
  166. {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/memory.md +0 -0
  167. {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/model_settings.md +0 -0
  168. {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/models/interface.md +0 -0
  169. {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/models/openai_chatcompletions.md +0 -0
  170. {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/models/openai_responses.md +0 -0
  171. {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/realtime/agent.md +0 -0
  172. {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/realtime/config.md +0 -0
  173. {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/realtime/events.md +0 -0
  174. {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/realtime/runner.md +0 -0
  175. {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/realtime/session.md +0 -0
  176. {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/repl.md +0 -0
  177. {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/result.md +0 -0
  178. {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/run.md +0 -0
  179. {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/run_context.md +0 -0
  180. {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/stream_events.md +0 -0
  181. {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/tool.md +0 -0
  182. {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/tracing/create.md +0 -0
  183. {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/tracing/index.md +0 -0
  184. {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/tracing/processor_interface.md +0 -0
  185. {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/tracing/processors.md +0 -0
  186. {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/tracing/scope.md +0 -0
  187. {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/tracing/setup.md +0 -0
  188. {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/tracing/span_data.md +0 -0
  189. {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/tracing/spans.md +0 -0
  190. {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/tracing/traces.md +0 -0
  191. {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/tracing/util.md +0 -0
  192. {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/usage.md +0 -0
  193. {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/voice/events.md +0 -0
  194. {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/voice/exceptions.md +0 -0
  195. {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/voice/input.md +0 -0
  196. {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/voice/model.md +0 -0
  197. {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/voice/models/openai_provider.md +0 -0
  198. {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/voice/models/openai_stt.md +0 -0
  199. {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/voice/models/openai_tts.md +0 -0
  200. {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/voice/pipeline.md +0 -0
  201. {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/voice/pipeline_config.md +0 -0
  202. {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/voice/result.md +0 -0
  203. {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/voice/utils.md +0 -0
  204. {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/voice/workflow.md +0 -0
  205. {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/release.md +0 -0
  206. {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/repl.md +0 -0
  207. {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/results.md +0 -0
  208. {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/scripts/translate_docs.py +0 -0
  209. {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/sessions.md +0 -0
  210. {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/streaming.md +0 -0
  211. {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/stylesheets/extra.css +0 -0
  212. {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/tools.md +0 -0
  213. {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/visualization.md +0 -0
  214. {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/voice/pipeline.md +0 -0
  215. {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/voice/quickstart.md +0 -0
  216. {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/voice/tracing.md +0 -0
  217. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/__init__.py +0 -0
  218. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/agent_patterns/README.md +0 -0
  219. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/agent_patterns/agents_as_tools.py +0 -0
  220. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/agent_patterns/deterministic.py +0 -0
  221. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/agent_patterns/forcing_tool_use.py +0 -0
  222. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/agent_patterns/input_guardrails.py +0 -0
  223. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/agent_patterns/output_guardrails.py +0 -0
  224. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/agent_patterns/parallelization.py +0 -0
  225. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/agent_patterns/routing.py +0 -0
  226. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/agent_patterns/streaming_guardrails.py +0 -0
  227. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/basic/agent_lifecycle_example.py +0 -0
  228. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/basic/dynamic_system_prompt.py +0 -0
  229. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/basic/hello_world.py +0 -0
  230. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/basic/hello_world_jupyter.ipynb +0 -0
  231. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/basic/lifecycle_example.py +0 -0
  232. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/basic/local_image.py +0 -0
  233. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/basic/media/image_bison.jpg +0 -0
  234. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/basic/non_strict_output_type.py +0 -0
  235. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/basic/previous_response_id.py +0 -0
  236. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/basic/prompt_template.py +0 -0
  237. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/basic/remote_image.py +0 -0
  238. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/basic/session_example.py +0 -0
  239. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/basic/stream_items.py +0 -0
  240. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/basic/stream_text.py +0 -0
  241. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/basic/tools.py +0 -0
  242. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/customer_service/main.py +0 -0
  243. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/financial_research_agent/README.md +0 -0
  244. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/financial_research_agent/__init__.py +0 -0
  245. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/financial_research_agent/agents/__init__.py +0 -0
  246. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/financial_research_agent/agents/financials_agent.py +0 -0
  247. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/financial_research_agent/agents/planner_agent.py +0 -0
  248. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/financial_research_agent/agents/risk_agent.py +0 -0
  249. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/financial_research_agent/agents/search_agent.py +0 -0
  250. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/financial_research_agent/agents/verifier_agent.py +0 -0
  251. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/financial_research_agent/main.py +0 -0
  252. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/financial_research_agent/manager.py +0 -0
  253. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/financial_research_agent/printer.py +0 -0
  254. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/handoffs/message_filter.py +0 -0
  255. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/handoffs/message_filter_streaming.py +0 -0
  256. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/hosted_mcp/__init__.py +0 -0
  257. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/hosted_mcp/approvals.py +0 -0
  258. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/hosted_mcp/simple.py +0 -0
  259. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/mcp/filesystem_example/README.md +0 -0
  260. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/mcp/filesystem_example/main.py +0 -0
  261. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/mcp/filesystem_example/sample_files/favorite_books.txt +0 -0
  262. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/mcp/filesystem_example/sample_files/favorite_cities.txt +0 -0
  263. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/mcp/filesystem_example/sample_files/favorite_songs.txt +0 -0
  264. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/mcp/git_example/README.md +0 -0
  265. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/mcp/git_example/main.py +0 -0
  266. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/mcp/prompt_server/README.md +0 -0
  267. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/mcp/prompt_server/main.py +0 -0
  268. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/mcp/prompt_server/server.py +0 -0
  269. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/mcp/sse_example/README.md +0 -0
  270. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/mcp/sse_example/main.py +0 -0
  271. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/mcp/sse_example/server.py +0 -0
  272. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/mcp/streamablehttp_example/README.md +0 -0
  273. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/mcp/streamablehttp_example/main.py +0 -0
  274. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/mcp/streamablehttp_example/server.py +0 -0
  275. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/model_providers/README.md +0 -0
  276. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/model_providers/custom_example_agent.py +0 -0
  277. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/model_providers/custom_example_global.py +0 -0
  278. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/model_providers/custom_example_provider.py +0 -0
  279. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/model_providers/litellm_auto.py +0 -0
  280. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/model_providers/litellm_provider.py +0 -0
  281. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/realtime/app/README.md +0 -0
  282. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/realtime/app/server.py +0 -0
  283. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/realtime/app/static/app.js +0 -0
  284. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/realtime/app/static/index.html +0 -0
  285. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/realtime/cli/demo.py +0 -0
  286. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/realtime/cli/ui.py +0 -0
  287. {openai_agents-0.2.2/examples/research_bot/agents → openai_agents-0.2.4/examples/realtime/twilio}/__init__.py +0 -0
  288. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/reasoning_content/__init__.py +0 -0
  289. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/reasoning_content/runner_example.py +0 -0
  290. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/research_bot/README.md +0 -0
  291. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/research_bot/__init__.py +0 -0
  292. {openai_agents-0.2.2/examples/voice → openai_agents-0.2.4/examples/research_bot/agents}/__init__.py +0 -0
  293. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/research_bot/agents/planner_agent.py +0 -0
  294. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/research_bot/agents/search_agent.py +0 -0
  295. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/research_bot/agents/writer_agent.py +0 -0
  296. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/research_bot/main.py +0 -0
  297. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/research_bot/manager.py +0 -0
  298. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/research_bot/printer.py +0 -0
  299. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/research_bot/sample_outputs/product_recs.md +0 -0
  300. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/research_bot/sample_outputs/product_recs.txt +0 -0
  301. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/research_bot/sample_outputs/vacation.md +0 -0
  302. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/research_bot/sample_outputs/vacation.txt +0 -0
  303. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/tools/code_interpreter.py +0 -0
  304. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/tools/computer_use.py +0 -0
  305. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/tools/file_search.py +0 -0
  306. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/tools/web_search.py +0 -0
  307. {openai_agents-0.2.2/examples/voice/static → openai_agents-0.2.4/examples/voice}/__init__.py +0 -0
  308. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/voice/static/README.md +0 -0
  309. {openai_agents-0.2.2/examples/voice/streamed → openai_agents-0.2.4/examples/voice/static}/__init__.py +0 -0
  310. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/voice/static/main.py +0 -0
  311. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/voice/static/util.py +0 -0
  312. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/voice/streamed/README.md +0 -0
  313. {openai_agents-0.2.2/src/agents/extensions → openai_agents-0.2.4/examples/voice/streamed}/__init__.py +0 -0
  314. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/voice/streamed/main.py +0 -0
  315. {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/voice/streamed/my_workflow.py +0 -0
  316. {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/__init__.py +0 -0
  317. {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/_config.py +0 -0
  318. {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/_debug.py +0 -0
  319. {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/_run_impl.py +0 -0
  320. {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/computer.py +0 -0
  321. {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/exceptions.py +0 -0
  322. {openai_agents-0.2.2/src/agents/extensions/models → openai_agents-0.2.4/src/agents/extensions}/__init__.py +0 -0
  323. {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/extensions/handoff_filters.py +0 -0
  324. {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/extensions/handoff_prompt.py +0 -0
  325. {openai_agents-0.2.2/src/agents → openai_agents-0.2.4/src/agents/extensions}/models/__init__.py +0 -0
  326. {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/extensions/models/litellm_provider.py +0 -0
  327. {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/extensions/visualization.py +0 -0
  328. {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/handoffs.py +0 -0
  329. {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/lifecycle.py +0 -0
  330. {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/logger.py +0 -0
  331. {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/mcp/__init__.py +0 -0
  332. {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/mcp/server.py +0 -0
  333. {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/mcp/util.py +0 -0
  334. {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/memory/__init__.py +0 -0
  335. {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/memory/session.py +0 -0
  336. {openai_agents-0.2.2/src/agents/util → openai_agents-0.2.4/src/agents/models}/__init__.py +0 -0
  337. {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/models/_openai_shared.py +0 -0
  338. {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/models/chatcmpl_helpers.py +0 -0
  339. {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/models/fake_id.py +0 -0
  340. {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/models/interface.py +0 -0
  341. {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/models/multi_provider.py +0 -0
  342. {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/models/openai_chatcompletions.py +0 -0
  343. {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/models/openai_provider.py +0 -0
  344. {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/models/openai_responses.py +0 -0
  345. {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/prompts.py +0 -0
  346. {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/py.typed +0 -0
  347. {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/realtime/README.md +0 -0
  348. {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/realtime/agent.py +0 -0
  349. {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/realtime/config.py +0 -0
  350. {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/realtime/handoffs.py +0 -0
  351. {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/realtime/items.py +0 -0
  352. {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/realtime/model_inputs.py +0 -0
  353. {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/realtime/runner.py +0 -0
  354. {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/repl.py +0 -0
  355. {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/result.py +0 -0
  356. {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/run.py +0 -0
  357. {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/run_context.py +0 -0
  358. {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/stream_events.py +0 -0
  359. {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/strict_schema.py +0 -0
  360. {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/tool_context.py +0 -0
  361. {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/tracing/__init__.py +0 -0
  362. {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/tracing/logger.py +0 -0
  363. {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/tracing/processor_interface.py +0 -0
  364. {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/tracing/provider.py +0 -0
  365. {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/tracing/scope.py +0 -0
  366. {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/tracing/setup.py +0 -0
  367. {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/tracing/span_data.py +0 -0
  368. {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/tracing/spans.py +0 -0
  369. {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/tracing/util.py +0 -0
  370. {openai_agents-0.2.2/src/agents/voice/models → openai_agents-0.2.4/src/agents/util}/__init__.py +0 -0
  371. {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/util/_coro.py +0 -0
  372. {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/util/_error_tracing.py +0 -0
  373. {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/util/_json.py +0 -0
  374. {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/util/_pretty_print.py +0 -0
  375. {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/util/_transforms.py +0 -0
  376. {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/util/_types.py +0 -0
  377. {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/version.py +0 -0
  378. {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/voice/__init__.py +0 -0
  379. {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/voice/events.py +0 -0
  380. {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/voice/exceptions.py +0 -0
  381. {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/voice/imports.py +0 -0
  382. {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/voice/input.py +0 -0
  383. {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/voice/model.py +0 -0
  384. {openai_agents-0.2.2/tests → openai_agents-0.2.4/src/agents/voice/models}/__init__.py +0 -0
  385. {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/voice/models/openai_model_provider.py +0 -0
  386. {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/voice/models/openai_stt.py +0 -0
  387. {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/voice/models/openai_tts.py +0 -0
  388. {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/voice/pipeline.py +0 -0
  389. {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/voice/pipeline_config.py +0 -0
  390. {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/voice/result.py +0 -0
  391. {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/voice/utils.py +0 -0
  392. {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/voice/workflow.py +0 -0
  393. {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/README.md +0 -0
  394. {openai_agents-0.2.2/tests/fastapi → openai_agents-0.2.4/tests}/__init__.py +0 -0
  395. {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/conftest.py +0 -0
  396. {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/fake_model.py +0 -0
  397. {openai_agents-0.2.2/tests/mcp → openai_agents-0.2.4/tests/fastapi}/__init__.py +0 -0
  398. {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/fastapi/streaming_app.py +0 -0
  399. {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/fastapi/test_streaming_context.py +0 -0
  400. {openai_agents-0.2.2/tests/models → openai_agents-0.2.4/tests/mcp}/__init__.py +0 -0
  401. {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/mcp/conftest.py +0 -0
  402. {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/mcp/helpers.py +0 -0
  403. {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/mcp/test_caching.py +0 -0
  404. {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/mcp/test_connect_disconnect.py +0 -0
  405. {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/mcp/test_mcp_tracing.py +0 -0
  406. {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/mcp/test_mcp_util.py +0 -0
  407. {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/mcp/test_prompt_server.py +0 -0
  408. {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/mcp/test_runner_calls_mcp.py +0 -0
  409. {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/mcp/test_server_errors.py +0 -0
  410. {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/mcp/test_tool_filtering.py +0 -0
  411. {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/model_settings/test_serialization.py +0 -0
  412. {openai_agents-0.2.2/tests/realtime → openai_agents-0.2.4/tests/models}/__init__.py +0 -0
  413. {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/models/conftest.py +0 -0
  414. {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/models/test_kwargs_functionality.py +0 -0
  415. {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/models/test_litellm_chatcompletions_stream.py +0 -0
  416. {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/models/test_litellm_extra_body.py +0 -0
  417. {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/models/test_map.py +0 -0
  418. {openai_agents-0.2.2/tests/voice → openai_agents-0.2.4/tests/realtime}/__init__.py +0 -0
  419. {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/realtime/test_item_parsing.py +0 -0
  420. {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/realtime/test_model_events.py +0 -0
  421. {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/realtime/test_realtime_handoffs.py +0 -0
  422. {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/realtime/test_runner.py +0 -0
  423. {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/test_agent_config.py +0 -0
  424. {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/test_agent_hooks.py +0 -0
  425. {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/test_agent_prompt.py +0 -0
  426. {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/test_agent_runner.py +0 -0
  427. {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/test_agent_runner_streamed.py +0 -0
  428. {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/test_agent_tracing.py +0 -0
  429. {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/test_cancel_streaming.py +0 -0
  430. {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/test_computer_action.py +0 -0
  431. {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/test_config.py +0 -0
  432. {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/test_doc_parsing.py +0 -0
  433. {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/test_extension_filters.py +0 -0
  434. {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/test_extra_headers.py +0 -0
  435. {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/test_function_schema.py +0 -0
  436. {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/test_function_tool.py +0 -0
  437. {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/test_function_tool_decorator.py +0 -0
  438. {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/test_global_hooks.py +0 -0
  439. {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/test_guardrails.py +0 -0
  440. {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/test_handoff_tool.py +0 -0
  441. {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/test_items_helpers.py +0 -0
  442. {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/test_max_turns.py +0 -0
  443. {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/test_openai_chatcompletions.py +0 -0
  444. {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/test_openai_chatcompletions_converter.py +0 -0
  445. {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/test_openai_chatcompletions_stream.py +0 -0
  446. {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/test_openai_responses_converter.py +0 -0
  447. {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/test_output_tool.py +0 -0
  448. {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/test_pretty_print.py +0 -0
  449. {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/test_reasoning_content.py +0 -0
  450. {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/test_repl.py +0 -0
  451. {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/test_responses.py +0 -0
  452. {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/test_responses_tracing.py +0 -0
  453. {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/test_result_cast.py +0 -0
  454. {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/test_run.py +0 -0
  455. {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/test_run_config.py +0 -0
  456. {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/test_run_error_details.py +0 -0
  457. {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/test_run_step_execution.py +0 -0
  458. {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/test_run_step_processing.py +0 -0
  459. {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/test_session.py +0 -0
  460. {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/test_session_exceptions.py +0 -0
  461. {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/test_strict_schema.py +0 -0
  462. {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/test_tool_choice_reset.py +0 -0
  463. {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/test_tool_converter.py +0 -0
  464. {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/test_tool_use_behavior.py +0 -0
  465. {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/test_trace_processor.py +0 -0
  466. {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/test_tracing.py +0 -0
  467. {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/test_tracing_errors.py +0 -0
  468. {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/test_tracing_errors_streamed.py +0 -0
  469. {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/test_usage.py +0 -0
  470. {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/test_visualization.py +0 -0
  471. {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/testing_processor.py +0 -0
  472. {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/tracing/test_processor_api_key.py +0 -0
  473. {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/voice/conftest.py +0 -0
  474. {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/voice/fake_models.py +0 -0
  475. {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/voice/helpers.py +0 -0
  476. {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/voice/test_input.py +0 -0
  477. {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/voice/test_openai_stt.py +0 -0
  478. {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/voice/test_openai_tts.py +0 -0
  479. {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/voice/test_pipeline.py +0 -0
@@ -0,0 +1 @@
1
+ model = "o3"
@@ -0,0 +1,9 @@
1
+ Attempt to solve the reported issue.
2
+
3
+ If a code change is required, create a new branch, commit the fix, and open a pull request that resolves the problem.
4
+
5
+ Here is the original GitHub issue that triggered this run:
6
+
7
+ ### {CODEX_ACTION_ISSUE_TITLE}
8
+
9
+ {CODEX_ACTION_ISSUE_BODY}
@@ -0,0 +1,7 @@
1
+ Review this PR and respond with a very concise final message, formatted in Markdown.
2
+
3
+ There should be a summary of the changes (1-2 sentences) and a few bullet points if necessary.
4
+
5
+ Then provide the **review** (1-2 sentences plus bullet points, friendly tone).
6
+
7
+ {CODEX_ACTION_GITHUB_EVENT_PATH} contains the JSON that triggered this GitHub workflow. It contains the `base` and `head` refs that define this PR. Both refs are available locally.
@@ -0,0 +1,7 @@
1
+ Troubleshoot whether the reported issue is valid.
2
+
3
+ Provide a concise and respectful comment summarizing the findings.
4
+
5
+ ### {CODEX_ACTION_ISSUE_TITLE}
6
+
7
+ {CODEX_ACTION_ISSUE_BODY}
@@ -0,0 +1,60 @@
1
+ name: Codex
2
+
3
+ on:
4
+ issues:
5
+ types: [opened, labeled]
6
+ pull_request:
7
+ branches: [main]
8
+ types: [labeled]
9
+
10
+ jobs:
11
+ codex:
12
+ # This `if` check provides complex filtering logic to avoid running Codex
13
+ # on every PR. Admittedly, one thing this does not verify is whether the
14
+ # sender has write access to the repo: that must be done as part of a
15
+ # runtime step.
16
+ #
17
+ # Note the label values should match the ones in the .github/codex/labels
18
+ # folder.
19
+ if: |
20
+ (github.event_name == 'issues' && (
21
+ (github.event.action == 'labeled' && (github.event.label.name == 'codex-attempt' || github.event.label.name == 'codex-triage'))
22
+ )) ||
23
+ (github.event_name == 'pull_request' && github.event.action == 'labeled' && github.event.label.name == 'codex-review')
24
+ runs-on: ubuntu-latest
25
+ permissions:
26
+ contents: write # can push or create branches
27
+ issues: write # for comments + labels on issues/PRs
28
+ pull-requests: write # for PR comments/labels
29
+ steps:
30
+ # TODO: Consider adding an optional mode (--dry-run?) to actions/codex
31
+ # that verifies whether Codex should actually be run for this event.
32
+ # (For example, it may be rejected because the sender does not have
33
+ # write access to the repo.) The benefit would be two-fold:
34
+ # 1. As the first step of this job, it gives us a chance to add a reaction
35
+ # or comment to the PR/issue ASAP to "ack" the request.
36
+ # 2. It saves resources by skipping the clone and setup steps below if
37
+ # Codex is not going to run.
38
+
39
+ - name: Checkout repository
40
+ uses: actions/checkout@v4
41
+
42
+ # We install the dependencies like we would for an ordinary CI job,
43
+ # particularly because Codex will not have network access to install
44
+ # these dependencies.
45
+ - name: Setup uv
46
+ uses: astral-sh/setup-uv@v5
47
+ with:
48
+ enable-cache: true
49
+
50
+ - name: Install dependencies
51
+ run: make sync
52
+
53
+ # Note it is possible that the `verify` step internal to Run Codex will
54
+ # fail, in which case the work to setup the repo was worthless :(
55
+ - name: Run Codex
56
+ uses: openai/codex/.github/actions/codex@main
57
+ with:
58
+ openai_api_key: ${{ secrets.PROD_OPENAI_API_KEY }}
59
+ github_token: ${{ secrets.GITHUB_TOKEN }}
60
+ codex_home: ./.github/codex/home
@@ -44,6 +44,7 @@ old_version_tests:
44
44
 
45
45
  .PHONY: build-docs
46
46
  build-docs:
47
+ uv run docs/scripts/generate_ref_files.py
47
48
  uv run mkdocs build
48
49
 
49
50
  .PHONY: build-full-docs
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: openai-agents
3
- Version: 0.2.2
3
+ Version: 0.2.4
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
@@ -21,7 +21,7 @@ Classifier: Typing :: Typed
21
21
  Requires-Python: >=3.9
22
22
  Requires-Dist: griffe<2,>=1.5.6
23
23
  Requires-Dist: mcp<2,>=1.11.0; python_version >= '3.10'
24
- Requires-Dist: openai<2,>=1.96.1
24
+ Requires-Dist: openai<2,>=1.97.1
25
25
  Requires-Dist: pydantic<3,>=2.10
26
26
  Requires-Dist: requests<3,>=2.0
27
27
  Requires-Dist: types-requests<3,>=2.0
@@ -56,125 +56,19 @@ The OpenAI Agents SDK is a lightweight yet powerful framework for building multi
56
56
 
57
57
  Explore the [examples](examples) directory to see the SDK in action, and read our [documentation](https://openai.github.io/openai-agents-python/) for more details.
58
58
 
59
- ## Sessions
60
-
61
- The Agents SDK provides built-in session memory to automatically maintain conversation history across multiple agent runs, eliminating the need to manually handle `.to_input_list()` between turns.
62
-
63
- ### Quick start
64
-
65
- ```python
66
- from agents import Agent, Runner, SQLiteSession
67
-
68
- # Create agent
69
- agent = Agent(
70
- name="Assistant",
71
- instructions="Reply very concisely.",
72
- )
73
-
74
- # Create a session instance
75
- session = SQLiteSession("conversation_123")
76
-
77
- # First turn
78
- result = await Runner.run(
79
- agent,
80
- "What city is the Golden Gate Bridge in?",
81
- session=session
82
- )
83
- print(result.final_output) # "San Francisco"
84
-
85
- # Second turn - agent automatically remembers previous context
86
- result = await Runner.run(
87
- agent,
88
- "What state is it in?",
89
- session=session
90
- )
91
- print(result.final_output) # "California"
92
-
93
- # Also works with synchronous runner
94
- result = Runner.run_sync(
95
- agent,
96
- "What's the population?",
97
- session=session
98
- )
99
- print(result.final_output) # "Approximately 39 million"
100
- ```
101
-
102
- ### Session options
103
-
104
- - **No memory** (default): No session memory when session parameter is omitted
105
- - **`session: Session = DatabaseSession(...)`**: Use a Session instance to manage conversation history
106
-
107
- ```python
108
- from agents import Agent, Runner, SQLiteSession
109
-
110
- # Custom SQLite database file
111
- session = SQLiteSession("user_123", "conversations.db")
112
- agent = Agent(name="Assistant")
113
-
114
- # Different session IDs maintain separate conversation histories
115
- result1 = await Runner.run(
116
- agent,
117
- "Hello",
118
- session=session
119
- )
120
- result2 = await Runner.run(
121
- agent,
122
- "Hello",
123
- session=SQLiteSession("user_456", "conversations.db")
124
- )
125
- ```
126
-
127
- ### Custom session implementations
128
-
129
- You can implement your own session memory by creating a class that follows the `Session` protocol:
130
-
131
- ```python
132
- from agents.memory import Session
133
- from typing import List
134
-
135
- class MyCustomSession:
136
- """Custom session implementation following the Session protocol."""
137
-
138
- def __init__(self, session_id: str):
139
- self.session_id = session_id
140
- # Your initialization here
141
-
142
- async def get_items(self, limit: int | None = None) -> List[dict]:
143
- # Retrieve conversation history for the session
144
- pass
145
-
146
- async def add_items(self, items: List[dict]) -> None:
147
- # Store new items for the session
148
- pass
149
-
150
- async def pop_item(self) -> dict | None:
151
- # Remove and return the most recent item from the session
152
- pass
153
-
154
- async def clear_session(self) -> None:
155
- # Clear all items for the session
156
- pass
157
-
158
- # Use your custom session
159
- agent = Agent(name="Assistant")
160
- result = await Runner.run(
161
- agent,
162
- "Hello",
163
- session=MyCustomSession("my_session")
164
- )
165
- ```
166
-
167
59
  ## Get started
168
60
 
169
61
  1. Set up your Python environment
170
62
 
171
- - Option A: Using venv (traditional method)
63
+ - Option A: Using venv (traditional method)
64
+
172
65
  ```bash
173
66
  python -m venv env
174
67
  source env/bin/activate # On Windows: env\Scripts\activate
175
68
  ```
176
69
 
177
- - Option B: Using uv (recommended)
70
+ - Option B: Using uv (recommended)
71
+
178
72
  ```bash
179
73
  uv venv
180
74
  source .venv/bin/activate # On Windows: .venv\Scripts\activate
@@ -302,6 +196,114 @@ The Agents SDK is designed to be highly flexible, allowing you to model a wide r
302
196
 
303
197
  The Agents SDK automatically traces your agent runs, making it easy to track and debug the behavior of your agents. Tracing is extensible by design, supporting custom spans and a wide variety of external destinations, including [Logfire](https://logfire.pydantic.dev/docs/integrations/llms/openai/#openai-agents), [AgentOps](https://docs.agentops.ai/v1/integrations/agentssdk), [Braintrust](https://braintrust.dev/docs/guides/traces/integrations#openai-agents-sdk), [Scorecard](https://docs.scorecard.io/docs/documentation/features/tracing#openai-agents-sdk-integration), and [Keywords AI](https://docs.keywordsai.co/integration/development-frameworks/openai-agent). For more details about how to customize or disable tracing, see [Tracing](http://openai.github.io/openai-agents-python/tracing), which also includes a larger list of [external tracing processors](http://openai.github.io/openai-agents-python/tracing/#external-tracing-processors-list).
304
198
 
199
+ ## Sessions
200
+
201
+ The Agents SDK provides built-in session memory to automatically maintain conversation history across multiple agent runs, eliminating the need to manually handle `.to_input_list()` between turns.
202
+
203
+ ### Quick start
204
+
205
+ ```python
206
+ from agents import Agent, Runner, SQLiteSession
207
+
208
+ # Create agent
209
+ agent = Agent(
210
+ name="Assistant",
211
+ instructions="Reply very concisely.",
212
+ )
213
+
214
+ # Create a session instance
215
+ session = SQLiteSession("conversation_123")
216
+
217
+ # First turn
218
+ result = await Runner.run(
219
+ agent,
220
+ "What city is the Golden Gate Bridge in?",
221
+ session=session
222
+ )
223
+ print(result.final_output) # "San Francisco"
224
+
225
+ # Second turn - agent automatically remembers previous context
226
+ result = await Runner.run(
227
+ agent,
228
+ "What state is it in?",
229
+ session=session
230
+ )
231
+ print(result.final_output) # "California"
232
+
233
+ # Also works with synchronous runner
234
+ result = Runner.run_sync(
235
+ agent,
236
+ "What's the population?",
237
+ session=session
238
+ )
239
+ print(result.final_output) # "Approximately 39 million"
240
+ ```
241
+
242
+ ### Session options
243
+
244
+ - **No memory** (default): No session memory when session parameter is omitted
245
+ - **`session: Session = DatabaseSession(...)`**: Use a Session instance to manage conversation history
246
+
247
+ ```python
248
+ from agents import Agent, Runner, SQLiteSession
249
+
250
+ # Custom SQLite database file
251
+ session = SQLiteSession("user_123", "conversations.db")
252
+ agent = Agent(name="Assistant")
253
+
254
+ # Different session IDs maintain separate conversation histories
255
+ result1 = await Runner.run(
256
+ agent,
257
+ "Hello",
258
+ session=session
259
+ )
260
+ result2 = await Runner.run(
261
+ agent,
262
+ "Hello",
263
+ session=SQLiteSession("user_456", "conversations.db")
264
+ )
265
+ ```
266
+
267
+ ### Custom session implementations
268
+
269
+ You can implement your own session memory by creating a class that follows the `Session` protocol:
270
+
271
+ ```python
272
+ from agents.memory import Session
273
+ from typing import List
274
+
275
+ class MyCustomSession:
276
+ """Custom session implementation following the Session protocol."""
277
+
278
+ def __init__(self, session_id: str):
279
+ self.session_id = session_id
280
+ # Your initialization here
281
+
282
+ async def get_items(self, limit: int | None = None) -> List[dict]:
283
+ # Retrieve conversation history for the session
284
+ pass
285
+
286
+ async def add_items(self, items: List[dict]) -> None:
287
+ # Store new items for the session
288
+ pass
289
+
290
+ async def pop_item(self) -> dict | None:
291
+ # Remove and return the most recent item from the session
292
+ pass
293
+
294
+ async def clear_session(self) -> None:
295
+ # Clear all items for the session
296
+ pass
297
+
298
+ # Use your custom session
299
+ agent = Agent(name="Assistant")
300
+ result = await Runner.run(
301
+ agent,
302
+ "Hello",
303
+ session=MyCustomSession("my_session")
304
+ )
305
+ ```
306
+
305
307
  ## Development (only needed if you need to edit the SDK/examples)
306
308
 
307
309
  0. Ensure you have [`uv`](https://docs.astral.sh/uv/) installed.
@@ -323,6 +325,7 @@ make check # run tests linter and typechecker
323
325
  ```
324
326
 
325
327
  Or to run them individually:
328
+
326
329
  ```
327
330
  make tests # run tests
328
331
  make mypy # run typechecker
@@ -335,6 +338,7 @@ make format-check # run style checker
335
338
  We'd like to acknowledge the excellent work of the open-source community, especially:
336
339
 
337
340
  - [Pydantic](https://docs.pydantic.dev/latest/) (data validation) and [PydanticAI](https://ai.pydantic.dev/) (advanced agent framework)
341
+ - [LiteLLM](https://github.com/BerriAI/litellm) (unified interface for 100+ LLMs)
338
342
  - [MkDocs](https://github.com/squidfunk/mkdocs-material)
339
343
  - [Griffe](https://github.com/mkdocstrings/griffe)
340
344
  - [uv](https://github.com/astral-sh/uv) and [ruff](https://github.com/astral-sh/ruff)
@@ -17,125 +17,19 @@ The OpenAI Agents SDK is a lightweight yet powerful framework for building multi
17
17
 
18
18
  Explore the [examples](examples) directory to see the SDK in action, and read our [documentation](https://openai.github.io/openai-agents-python/) for more details.
19
19
 
20
- ## Sessions
21
-
22
- The Agents SDK provides built-in session memory to automatically maintain conversation history across multiple agent runs, eliminating the need to manually handle `.to_input_list()` between turns.
23
-
24
- ### Quick start
25
-
26
- ```python
27
- from agents import Agent, Runner, SQLiteSession
28
-
29
- # Create agent
30
- agent = Agent(
31
- name="Assistant",
32
- instructions="Reply very concisely.",
33
- )
34
-
35
- # Create a session instance
36
- session = SQLiteSession("conversation_123")
37
-
38
- # First turn
39
- result = await Runner.run(
40
- agent,
41
- "What city is the Golden Gate Bridge in?",
42
- session=session
43
- )
44
- print(result.final_output) # "San Francisco"
45
-
46
- # Second turn - agent automatically remembers previous context
47
- result = await Runner.run(
48
- agent,
49
- "What state is it in?",
50
- session=session
51
- )
52
- print(result.final_output) # "California"
53
-
54
- # Also works with synchronous runner
55
- result = Runner.run_sync(
56
- agent,
57
- "What's the population?",
58
- session=session
59
- )
60
- print(result.final_output) # "Approximately 39 million"
61
- ```
62
-
63
- ### Session options
64
-
65
- - **No memory** (default): No session memory when session parameter is omitted
66
- - **`session: Session = DatabaseSession(...)`**: Use a Session instance to manage conversation history
67
-
68
- ```python
69
- from agents import Agent, Runner, SQLiteSession
70
-
71
- # Custom SQLite database file
72
- session = SQLiteSession("user_123", "conversations.db")
73
- agent = Agent(name="Assistant")
74
-
75
- # Different session IDs maintain separate conversation histories
76
- result1 = await Runner.run(
77
- agent,
78
- "Hello",
79
- session=session
80
- )
81
- result2 = await Runner.run(
82
- agent,
83
- "Hello",
84
- session=SQLiteSession("user_456", "conversations.db")
85
- )
86
- ```
87
-
88
- ### Custom session implementations
89
-
90
- You can implement your own session memory by creating a class that follows the `Session` protocol:
91
-
92
- ```python
93
- from agents.memory import Session
94
- from typing import List
95
-
96
- class MyCustomSession:
97
- """Custom session implementation following the Session protocol."""
98
-
99
- def __init__(self, session_id: str):
100
- self.session_id = session_id
101
- # Your initialization here
102
-
103
- async def get_items(self, limit: int | None = None) -> List[dict]:
104
- # Retrieve conversation history for the session
105
- pass
106
-
107
- async def add_items(self, items: List[dict]) -> None:
108
- # Store new items for the session
109
- pass
110
-
111
- async def pop_item(self) -> dict | None:
112
- # Remove and return the most recent item from the session
113
- pass
114
-
115
- async def clear_session(self) -> None:
116
- # Clear all items for the session
117
- pass
118
-
119
- # Use your custom session
120
- agent = Agent(name="Assistant")
121
- result = await Runner.run(
122
- agent,
123
- "Hello",
124
- session=MyCustomSession("my_session")
125
- )
126
- ```
127
-
128
20
  ## Get started
129
21
 
130
22
  1. Set up your Python environment
131
23
 
132
- - Option A: Using venv (traditional method)
24
+ - Option A: Using venv (traditional method)
25
+
133
26
  ```bash
134
27
  python -m venv env
135
28
  source env/bin/activate # On Windows: env\Scripts\activate
136
29
  ```
137
30
 
138
- - Option B: Using uv (recommended)
31
+ - Option B: Using uv (recommended)
32
+
139
33
  ```bash
140
34
  uv venv
141
35
  source .venv/bin/activate # On Windows: .venv\Scripts\activate
@@ -263,6 +157,114 @@ The Agents SDK is designed to be highly flexible, allowing you to model a wide r
263
157
 
264
158
  The Agents SDK automatically traces your agent runs, making it easy to track and debug the behavior of your agents. Tracing is extensible by design, supporting custom spans and a wide variety of external destinations, including [Logfire](https://logfire.pydantic.dev/docs/integrations/llms/openai/#openai-agents), [AgentOps](https://docs.agentops.ai/v1/integrations/agentssdk), [Braintrust](https://braintrust.dev/docs/guides/traces/integrations#openai-agents-sdk), [Scorecard](https://docs.scorecard.io/docs/documentation/features/tracing#openai-agents-sdk-integration), and [Keywords AI](https://docs.keywordsai.co/integration/development-frameworks/openai-agent). For more details about how to customize or disable tracing, see [Tracing](http://openai.github.io/openai-agents-python/tracing), which also includes a larger list of [external tracing processors](http://openai.github.io/openai-agents-python/tracing/#external-tracing-processors-list).
265
159
 
160
+ ## Sessions
161
+
162
+ The Agents SDK provides built-in session memory to automatically maintain conversation history across multiple agent runs, eliminating the need to manually handle `.to_input_list()` between turns.
163
+
164
+ ### Quick start
165
+
166
+ ```python
167
+ from agents import Agent, Runner, SQLiteSession
168
+
169
+ # Create agent
170
+ agent = Agent(
171
+ name="Assistant",
172
+ instructions="Reply very concisely.",
173
+ )
174
+
175
+ # Create a session instance
176
+ session = SQLiteSession("conversation_123")
177
+
178
+ # First turn
179
+ result = await Runner.run(
180
+ agent,
181
+ "What city is the Golden Gate Bridge in?",
182
+ session=session
183
+ )
184
+ print(result.final_output) # "San Francisco"
185
+
186
+ # Second turn - agent automatically remembers previous context
187
+ result = await Runner.run(
188
+ agent,
189
+ "What state is it in?",
190
+ session=session
191
+ )
192
+ print(result.final_output) # "California"
193
+
194
+ # Also works with synchronous runner
195
+ result = Runner.run_sync(
196
+ agent,
197
+ "What's the population?",
198
+ session=session
199
+ )
200
+ print(result.final_output) # "Approximately 39 million"
201
+ ```
202
+
203
+ ### Session options
204
+
205
+ - **No memory** (default): No session memory when session parameter is omitted
206
+ - **`session: Session = DatabaseSession(...)`**: Use a Session instance to manage conversation history
207
+
208
+ ```python
209
+ from agents import Agent, Runner, SQLiteSession
210
+
211
+ # Custom SQLite database file
212
+ session = SQLiteSession("user_123", "conversations.db")
213
+ agent = Agent(name="Assistant")
214
+
215
+ # Different session IDs maintain separate conversation histories
216
+ result1 = await Runner.run(
217
+ agent,
218
+ "Hello",
219
+ session=session
220
+ )
221
+ result2 = await Runner.run(
222
+ agent,
223
+ "Hello",
224
+ session=SQLiteSession("user_456", "conversations.db")
225
+ )
226
+ ```
227
+
228
+ ### Custom session implementations
229
+
230
+ You can implement your own session memory by creating a class that follows the `Session` protocol:
231
+
232
+ ```python
233
+ from agents.memory import Session
234
+ from typing import List
235
+
236
+ class MyCustomSession:
237
+ """Custom session implementation following the Session protocol."""
238
+
239
+ def __init__(self, session_id: str):
240
+ self.session_id = session_id
241
+ # Your initialization here
242
+
243
+ async def get_items(self, limit: int | None = None) -> List[dict]:
244
+ # Retrieve conversation history for the session
245
+ pass
246
+
247
+ async def add_items(self, items: List[dict]) -> None:
248
+ # Store new items for the session
249
+ pass
250
+
251
+ async def pop_item(self) -> dict | None:
252
+ # Remove and return the most recent item from the session
253
+ pass
254
+
255
+ async def clear_session(self) -> None:
256
+ # Clear all items for the session
257
+ pass
258
+
259
+ # Use your custom session
260
+ agent = Agent(name="Assistant")
261
+ result = await Runner.run(
262
+ agent,
263
+ "Hello",
264
+ session=MyCustomSession("my_session")
265
+ )
266
+ ```
267
+
266
268
  ## Development (only needed if you need to edit the SDK/examples)
267
269
 
268
270
  0. Ensure you have [`uv`](https://docs.astral.sh/uv/) installed.
@@ -284,6 +286,7 @@ make check # run tests linter and typechecker
284
286
  ```
285
287
 
286
288
  Or to run them individually:
289
+
287
290
  ```
288
291
  make tests # run tests
289
292
  make mypy # run typechecker
@@ -296,6 +299,7 @@ make format-check # run style checker
296
299
  We'd like to acknowledge the excellent work of the open-source community, especially:
297
300
 
298
301
  - [Pydantic](https://docs.pydantic.dev/latest/) (data validation) and [PydanticAI](https://ai.pydantic.dev/) (advanced agent framework)
302
+ - [LiteLLM](https://github.com/BerriAI/litellm) (unified interface for 100+ LLMs)
299
303
  - [MkDocs](https://github.com/squidfunk/mkdocs-material)
300
304
  - [Griffe](https://github.com/mkdocstrings/griffe)
301
305
  - [uv](https://github.com/astral-sh/uv) and [ruff](https://github.com/astral-sh/ruff)