agentbyte 0.50.0__tar.gz → 0.52.0__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 (438) hide show
  1. {agentbyte-0.50.0 → agentbyte-0.52.0}/CHANGELOG.md +46 -0
  2. {agentbyte-0.50.0 → agentbyte-0.52.0}/PKG-INFO +11 -3
  3. {agentbyte-0.50.0 → agentbyte-0.52.0}/README.md +4 -2
  4. {agentbyte-0.50.0 → agentbyte-0.52.0}/pyproject.toml +11 -1
  5. agentbyte-0.52.0/src/agentbyte/__about__.py +2 -0
  6. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/eval/workbench/compare.py +21 -3
  7. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/eval/workbench/verdict.py +18 -2
  8. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/llm/__init__.py +47 -4
  9. agentbyte-0.52.0/src/agentbyte/llm/anthropic/__init__.py +10 -0
  10. agentbyte-0.52.0/src/agentbyte/llm/anthropic/_conversion.py +439 -0
  11. agentbyte-0.52.0/src/agentbyte/llm/anthropic/chat.py +160 -0
  12. agentbyte-0.52.0/src/agentbyte/llm/anthropic/settings.py +22 -0
  13. agentbyte-0.52.0/src/agentbyte/llm/bedrock/__init__.py +58 -0
  14. agentbyte-0.52.0/src/agentbyte/llm/bedrock/_client.py +24 -0
  15. agentbyte-0.52.0/src/agentbyte/llm/bedrock/anthropic_chat.py +170 -0
  16. agentbyte-0.52.0/src/agentbyte/llm/bedrock/cohere_embedding.py +136 -0
  17. agentbyte-0.52.0/src/agentbyte/llm/bedrock/settings.py +16 -0
  18. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/llm/pricing.py +111 -1
  19. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/presets/clients.py +26 -4
  20. agentbyte-0.52.0/src/agentbyte/webui/ui/assets/index-BreogZut.js +82 -0
  21. agentbyte-0.52.0/src/agentbyte/webui/ui/assets/index-ptxe7GHs.css +1 -0
  22. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/webui/ui/index.html +2 -2
  23. agentbyte-0.52.0/tests/eval/test_dimension_scores.py +108 -0
  24. agentbyte-0.52.0/tests/llm/test_anthropic_bedrock_client.py +153 -0
  25. agentbyte-0.52.0/tests/llm/test_anthropic_client.py +388 -0
  26. agentbyte-0.52.0/tests/llm/test_cohere_bedrock_embedding_client.py +237 -0
  27. agentbyte-0.50.0/src/agentbyte/__about__.py +0 -2
  28. agentbyte-0.50.0/src/agentbyte/webui/ui/assets/index-BjfexJCO.css +0 -1
  29. agentbyte-0.50.0/src/agentbyte/webui/ui/assets/index-jmZ_5o6A.js +0 -82
  30. {agentbyte-0.50.0 → agentbyte-0.52.0}/.gitignore +0 -0
  31. {agentbyte-0.50.0 → agentbyte-0.52.0}/LICENSE +0 -0
  32. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/__init__.py +0 -0
  33. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/_optional.py +0 -0
  34. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/a2a/__init__.py +0 -0
  35. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/a2a/app.py +0 -0
  36. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/a2a/distributed_context.py +0 -0
  37. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/a2a/executor.py +0 -0
  38. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/a2a/tool.py +0 -0
  39. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/agents/__init__.py +0 -0
  40. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/agents/agent.py +0 -0
  41. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/agents/agent_as_tool.py +0 -0
  42. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/agents/base.py +0 -0
  43. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/agents/embedding_agent.py +0 -0
  44. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/agents/types.py +0 -0
  45. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/cancellation_token.py +0 -0
  46. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/catalog.py +0 -0
  47. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/cli/__init__.py +0 -0
  48. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/cli/__main__.py +0 -0
  49. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/cli/eval_commands.py +0 -0
  50. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/cli/history_args.py +0 -0
  51. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/cli/loading.py +0 -0
  52. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/cli/main.py +0 -0
  53. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/cli/optim_commands.py +0 -0
  54. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/cli/report_output.py +0 -0
  55. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/cli/serve_commands.py +0 -0
  56. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/compaction/__init__.py +0 -0
  57. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/compaction/counters.py +0 -0
  58. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/compaction/errors.py +0 -0
  59. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/compaction/grouping.py +0 -0
  60. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/compaction/strategies.py +0 -0
  61. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/component.py +0 -0
  62. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/context.py +0 -0
  63. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/context_providers/__init__.py +0 -0
  64. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/context_providers/base.py +0 -0
  65. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/context_providers/skill_tools.py +0 -0
  66. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/context_providers/skills.py +0 -0
  67. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/dataset/__init__.py +0 -0
  68. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/dataset/_aiosqlite.py +0 -0
  69. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/dataset/base.py +0 -0
  70. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/dataset/config.py +0 -0
  71. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/dataset/importer.py +0 -0
  72. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/dataset/json.py +0 -0
  73. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/dataset/loader.py +0 -0
  74. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/dataset/publish.py +0 -0
  75. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/dataset/publish_config.py +0 -0
  76. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/dataset/publishers.py +0 -0
  77. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/dataset/s3.py +0 -0
  78. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/dataset/sources.py +0 -0
  79. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/dataset/sqlite.py +0 -0
  80. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/dataset/sqlite_db.py +0 -0
  81. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/dataset/write_config.py +0 -0
  82. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/dataset/writers.py +0 -0
  83. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/entity.py +0 -0
  84. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/eval/__init__.py +0 -0
  85. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/eval/base.py +0 -0
  86. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/eval/checks/__init__.py +0 -0
  87. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/eval/checks/decorator.py +0 -0
  88. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/eval/checks/keyword.py +0 -0
  89. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/eval/checks/local.py +0 -0
  90. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/eval/checks/process.py +0 -0
  91. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/eval/checks/tool.py +0 -0
  92. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/eval/checks/types.py +0 -0
  93. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/eval/comparison.py +0 -0
  94. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/eval/eval_dataset.py +0 -0
  95. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/eval/history/__init__.py +0 -0
  96. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/eval/history/_writer_lock.py +0 -0
  97. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/eval/history/config.py +0 -0
  98. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/eval/history/conformance.py +0 -0
  99. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/eval/history/errors.py +0 -0
  100. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/eval/history/models.py +0 -0
  101. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/eval/history/recorder.py +0 -0
  102. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/eval/history/sql.py +0 -0
  103. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/eval/history/sqlite.py +0 -0
  104. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/eval/history/store.py +0 -0
  105. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/eval/history/transitions.py +0 -0
  106. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/eval/judges/__init__.py +0 -0
  107. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/eval/judges/base.py +0 -0
  108. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/eval/judges/composite.py +0 -0
  109. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/eval/judges/llm.py +0 -0
  110. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/eval/judges/pairwise.py +0 -0
  111. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/eval/judges/reference.py +0 -0
  112. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/eval/judges/trajectory.py +0 -0
  113. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/eval/judges/validation.py +0 -0
  114. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/eval/pairwise.py +0 -0
  115. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/eval/report.py +0 -0
  116. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/eval/runner.py +0 -0
  117. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/eval/splitting.py +0 -0
  118. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/eval/targets/__init__.py +0 -0
  119. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/eval/targets/agent.py +0 -0
  120. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/eval/targets/model.py +0 -0
  121. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/eval/targets/multi_turn.py +0 -0
  122. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/eval/targets/orchestrator.py +0 -0
  123. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/eval/targets/runtime.py +0 -0
  124. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/eval/targets/workflow.py +0 -0
  125. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/eval/types.py +0 -0
  126. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/eval/workbench/__init__.py +0 -0
  127. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/eval/workbench/benchmark.py +0 -0
  128. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/eval/workbench/coordinator.py +0 -0
  129. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/eval/workbench/jobs.py +0 -0
  130. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/eval/workbench/smoke.py +0 -0
  131. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/eval/workbench/smoke_tasks.json +0 -0
  132. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/eval/workbench/suite.py +0 -0
  133. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/execution_trace/__init__.py +0 -0
  134. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/execution_trace/collector.py +0 -0
  135. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/execution_trace/models.py +0 -0
  136. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/llm/_retry_observability.py +0 -0
  137. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/llm/auth.py +0 -0
  138. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/llm/azure/__init__.py +0 -0
  139. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/llm/azure/auth.py +0 -0
  140. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/llm/azure/chat.py +0 -0
  141. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/llm/azure/embedding.py +0 -0
  142. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/llm/azure/settings.py +0 -0
  143. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/llm/azure_openai.py +0 -0
  144. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/llm/azure_openai_embedding.py +0 -0
  145. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/llm/base.py +0 -0
  146. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/llm/embeddings_base.py +0 -0
  147. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/llm/openai/__init__.py +0 -0
  148. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/llm/openai/chat.py +0 -0
  149. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/llm/openai/embedding.py +0 -0
  150. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/llm/openai/settings.py +0 -0
  151. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/llm/openai_embedding.py +0 -0
  152. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/llm/retry_policy.py +0 -0
  153. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/llm/settings.py +0 -0
  154. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/llm/types.py +0 -0
  155. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/logger.py +0 -0
  156. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/memory/__init__.py +0 -0
  157. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/memory/base.py +0 -0
  158. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/messages.py +0 -0
  159. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/middleware/__init__.py +0 -0
  160. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/middleware/base.py +0 -0
  161. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/middleware/otel.py +0 -0
  162. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/middleware/retry.py +0 -0
  163. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/middleware/sql_usage.py +0 -0
  164. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/middleware/usage_logger.py +0 -0
  165. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/notebook.py +0 -0
  166. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/optim/__init__.py +0 -0
  167. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/optim/base.py +0 -0
  168. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/optim/binding.py +0 -0
  169. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/optim/config.py +0 -0
  170. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/optim/gepa.py +0 -0
  171. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/optim/job.py +0 -0
  172. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/optim/mipro.py +0 -0
  173. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/optim/pareto.py +0 -0
  174. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/optim/reflective.py +0 -0
  175. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/optim/report.py +0 -0
  176. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/optim/spec.py +0 -0
  177. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/optim/trace.py +0 -0
  178. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/orchestration/__init__.py +0 -0
  179. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/orchestration/ai.py +0 -0
  180. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/orchestration/base.py +0 -0
  181. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/orchestration/handoff.py +0 -0
  182. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/orchestration/plan.py +0 -0
  183. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/orchestration/policies.py +0 -0
  184. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/orchestration/round_robin.py +0 -0
  185. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/presets/__init__.py +0 -0
  186. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/presets/agents.py +0 -0
  187. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/presets/benchmark.py +0 -0
  188. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/presets/capitals.py +0 -0
  189. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/presets/instruction_registry.py +0 -0
  190. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/presets/instructions/orchestrator.yaml +0 -0
  191. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/presets/instructions/query_rewriter.yaml +0 -0
  192. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/presets/instructions/researcher.yaml +0 -0
  193. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/presets/instructions/reviewer.yaml +0 -0
  194. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/presets/instructions/writer.yaml +0 -0
  195. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/presets/orchestration.py +0 -0
  196. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/presets/skills/capitals-format/SKILL.md +0 -0
  197. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/presets/skills/contracts-analyst/SKILL.md +0 -0
  198. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/presets/skills/hr-analyst/SKILL.md +0 -0
  199. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/presets/skills/hr-analyst/resources/departments.md +0 -0
  200. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/presets/skills/hr-analyst/resources/employees.md +0 -0
  201. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/presets/skills/hr-analyst/resources/payroll.md +0 -0
  202. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/presets/streaming.py +0 -0
  203. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/presets/workflow.py +0 -0
  204. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/session_store.py +0 -0
  205. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/skills/__init__.py +0 -0
  206. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/skills/base.py +0 -0
  207. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/skills/resources.py +0 -0
  208. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/skills/scripts.py +0 -0
  209. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/skills/sources.py +0 -0
  210. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/skills/validation.py +0 -0
  211. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/termination/__init__.py +0 -0
  212. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/termination/base.py +0 -0
  213. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/termination/cancellation.py +0 -0
  214. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/termination/composite.py +0 -0
  215. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/termination/consecutive_agent.py +0 -0
  216. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/termination/external.py +0 -0
  217. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/termination/function_call.py +0 -0
  218. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/termination/handoff.py +0 -0
  219. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/termination/max_message.py +0 -0
  220. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/termination/predicate.py +0 -0
  221. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/termination/source.py +0 -0
  222. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/termination/text_mention.py +0 -0
  223. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/termination/timeout.py +0 -0
  224. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/termination/token_usage.py +0 -0
  225. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/tools/__init__.py +0 -0
  226. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/tools/base.py +0 -0
  227. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/tools/coding_tools.py +0 -0
  228. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/tools/core_tools.py +0 -0
  229. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/tools/decorator.py +0 -0
  230. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/tools/mcp/__init__.py +0 -0
  231. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/tools/mcp/client.py +0 -0
  232. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/tools/mcp/config.py +0 -0
  233. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/tools/mcp/errors.py +0 -0
  234. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/tools/mcp/tool.py +0 -0
  235. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/tools/mcp/transports.py +0 -0
  236. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/tools/memory_tool.py +0 -0
  237. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/tools/research_tools.py +0 -0
  238. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/types.py +0 -0
  239. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/webui/__init__.py +0 -0
  240. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/webui/discovery.py +0 -0
  241. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/webui/eval_routes.py +0 -0
  242. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/webui/execution.py +0 -0
  243. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/webui/mcp/__init__.py +0 -0
  244. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/webui/mcp/servers/__init__.py +0 -0
  245. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/webui/mcp/servers/apps_server.py +0 -0
  246. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/webui/mcp/servers/auth_server.py +0 -0
  247. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/webui/mcp/servers/basic_server.py +0 -0
  248. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/webui/mcp/servers/mrtr_server.py +0 -0
  249. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/webui/mcp/servers/notify_server.py +0 -0
  250. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/webui/mcp_playground.py +0 -0
  251. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/webui/mcp_routes.py +0 -0
  252. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/webui/models.py +0 -0
  253. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/webui/registry.py +0 -0
  254. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/webui/server.py +0 -0
  255. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/webui/session_store.py +0 -0
  256. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/webui/sessions.py +0 -0
  257. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/webui/ui/vite.svg +0 -0
  258. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/workflow/__init__.py +0 -0
  259. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/workflow/agent.py +0 -0
  260. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/workflow/core/__init__.py +0 -0
  261. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/workflow/core/_structure_hash.py +0 -0
  262. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/workflow/core/checkpoint.py +0 -0
  263. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/workflow/core/models.py +0 -0
  264. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/workflow/core/runner.py +0 -0
  265. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/workflow/core/workflow.py +0 -0
  266. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/workflow/defaults.py +0 -0
  267. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/workflow/errors.py +0 -0
  268. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/workflow/loader.py +0 -0
  269. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/workflow/schema.py +0 -0
  270. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/workflow/schema_utils.py +0 -0
  271. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/workflow/sqlite_checkpoint.py +0 -0
  272. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/workflow/steps/__init__.py +0 -0
  273. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/workflow/steps/agent.py +0 -0
  274. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/workflow/steps/echo.py +0 -0
  275. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/workflow/steps/function.py +0 -0
  276. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/workflow/steps/http.py +0 -0
  277. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/workflow/steps/step.py +0 -0
  278. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/workflow/steps/subworkflow.py +0 -0
  279. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/workflow/steps/transform.py +0 -0
  280. {agentbyte-0.50.0 → agentbyte-0.52.0}/src/agentbyte/workflow/visualizer.py +0 -0
  281. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/a2a/a2a_helpers.py +0 -0
  282. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/a2a/test_a2a_adapters.py +0 -0
  283. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/a2a/test_distributed_context.py +0 -0
  284. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/agents/test_agent_as_tool.py +0 -0
  285. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/agents/test_agent_basic.py +0 -0
  286. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/agents/test_agent_context_providers.py +0 -0
  287. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/agents/test_agent_error_response.py +0 -0
  288. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/agents/test_agent_event_types.py +0 -0
  289. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/agents/test_agent_memory_integration.py +0 -0
  290. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/agents/test_agent_middleware_integration.py +0 -0
  291. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/agents/test_agent_response_accessors.py +0 -0
  292. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/agents/test_agent_retry_middleware.py +0 -0
  293. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/agents/test_agent_stop_at_tools.py +0 -0
  294. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/agents/test_agent_stream_events.py +0 -0
  295. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/agents/test_embedding_agent.py +0 -0
  296. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/agents/test_tool_approval.py +0 -0
  297. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/agents/test_tool_batch_resolution.py +0 -0
  298. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/agents/test_tool_metadata.py +0 -0
  299. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/cli/test_eval_benchmark_commands.py +0 -0
  300. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/cli/test_loading.py +0 -0
  301. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/cli/test_registry_check.py +0 -0
  302. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/cli/test_report_output.py +0 -0
  303. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/cli/test_serve_command.py +0 -0
  304. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/compaction/test_compaction.py +0 -0
  305. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/conftest.py +0 -0
  306. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/context_providers/__init__.py +0 -0
  307. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/context_providers/test_skill_tools.py +0 -0
  308. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/context_providers/test_skills_provider.py +0 -0
  309. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/dataset/fake_s3.py +0 -0
  310. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/dataset/test_dataset_exit.py +0 -0
  311. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/dataset/test_loader.py +0 -0
  312. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/dataset/test_multi_table.py +0 -0
  313. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/dataset/test_publish.py +0 -0
  314. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/dataset/test_sqlite_db.py +0 -0
  315. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/eval/test_eval_benchmarks.py +0 -0
  316. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/eval/test_eval_dataset.py +0 -0
  317. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/eval/test_eval_history.py +0 -0
  318. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/eval/test_eval_history_backends.py +0 -0
  319. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/eval/test_eval_jobs.py +0 -0
  320. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/eval/test_eval_workbench.py +0 -0
  321. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/eval/test_execution_trajectories.py +0 -0
  322. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/eval/test_history_config.py +0 -0
  323. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/eval/test_multi_turn.py +0 -0
  324. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/eval/test_pairwise.py +0 -0
  325. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/eval/test_phase1_runner_and_targets.py +0 -0
  326. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/eval/test_phase2_checks_and_reports.py +0 -0
  327. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/eval/test_run_comparison.py +0 -0
  328. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/eval/test_score_integrity.py +0 -0
  329. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/eval/test_splitting.py +0 -0
  330. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/eval/test_types_and_judges.py +0 -0
  331. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/llm/test_azure_client.py +0 -0
  332. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/llm/test_azure_embedding_client.py +0 -0
  333. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/llm/test_llm_types.py +0 -0
  334. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/llm/test_openai_client.py +0 -0
  335. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/llm/test_openai_embedding_client.py +0 -0
  336. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/llm/test_pricing.py +0 -0
  337. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/llm/test_retry_observability.py +0 -0
  338. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/llm/test_retry_policy_api.py +0 -0
  339. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/llm/test_retryable_error_substrings.py +0 -0
  340. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/memory/test_memory.py +0 -0
  341. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/middleware/test_context_compaction.py +0 -0
  342. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/middleware/test_deduplicate_tool_result.py +0 -0
  343. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/middleware/test_middleware_chain.py +0 -0
  344. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/middleware/test_otel.py +0 -0
  345. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/middleware/test_retry_middleware.py +0 -0
  346. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/middleware/test_sql_usage.py +0 -0
  347. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/middleware/test_usage_logger.py +0 -0
  348. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/optim/__init__.py +0 -0
  349. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/optim/fakes.py +0 -0
  350. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/optim/test_base.py +0 -0
  351. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/optim/test_base_integration.py +0 -0
  352. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/optim/test_binding.py +0 -0
  353. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/optim/test_config.py +0 -0
  354. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/optim/test_description_tunable.py +0 -0
  355. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/optim/test_gepa.py +0 -0
  356. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/optim/test_mipro.py +0 -0
  357. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/optim/test_orchestrator_optim.py +0 -0
  358. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/optim/test_pareto.py +0 -0
  359. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/optim/test_reflective.py +0 -0
  360. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/optim/test_report.py +0 -0
  361. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/optim/test_score_integrity.py +0 -0
  362. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/optim/test_spec.py +0 -0
  363. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/optim/test_trace.py +0 -0
  364. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/orchestration/test_ai_orchestrator.py +0 -0
  365. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/orchestration/test_base_orchestrator.py +0 -0
  366. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/orchestration/test_handoff_orchestrator.py +0 -0
  367. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/orchestration/test_history_tool_call_pairing.py +0 -0
  368. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/orchestration/test_orchestration_usage_breakdown.py +0 -0
  369. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/orchestration/test_orchestrator_agent_contract.py +0 -0
  370. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/orchestration/test_orchestrator_finalization.py +0 -0
  371. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/orchestration/test_orchestrator_member_events.py +0 -0
  372. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/orchestration/test_orchestrator_otel.py +0 -0
  373. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/orchestration/test_orchestrator_synthesis.py +0 -0
  374. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/orchestration/test_plan_orchestrator.py +0 -0
  375. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/orchestration/test_round_robin.py +0 -0
  376. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/presets/test_agents.py +0 -0
  377. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/presets/test_benchmark.py +0 -0
  378. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/presets/test_capitals.py +0 -0
  379. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/presets/test_clients.py +0 -0
  380. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/presets/test_instruction_registry.py +0 -0
  381. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/presets/test_orchestration.py +0 -0
  382. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/presets/test_streaming.py +0 -0
  383. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/presets/test_workflow.py +0 -0
  384. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/skills/__init__.py +0 -0
  385. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/skills/test_base.py +0 -0
  386. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/skills/test_resources.py +0 -0
  387. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/skills/test_scripts.py +0 -0
  388. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/skills/test_sources.py +0 -0
  389. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/termination/test_base.py +0 -0
  390. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/termination/test_cancellation.py +0 -0
  391. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/termination/test_composite.py +0 -0
  392. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/termination/test_consecutive_agent.py +0 -0
  393. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/termination/test_external.py +0 -0
  394. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/termination/test_function_call.py +0 -0
  395. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/termination/test_handoff.py +0 -0
  396. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/termination/test_max_message.py +0 -0
  397. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/termination/test_predicate.py +0 -0
  398. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/termination/test_source.py +0 -0
  399. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/termination/test_text_mention.py +0 -0
  400. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/termination/test_timeout.py +0 -0
  401. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/termination/test_token_usage.py +0 -0
  402. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/test_cancellation_token.py +0 -0
  403. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/test_context.py +0 -0
  404. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/test_logger.py +0 -0
  405. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/test_messages.py +0 -0
  406. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/test_option_enums.py +0 -0
  407. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/test_optional_extras.py +0 -0
  408. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/test_package_api.py +0 -0
  409. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/test_session_store.py +0 -0
  410. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/test_types.py +0 -0
  411. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/tools/fixtures/mcp_stdio_server.py +0 -0
  412. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/tools/test_coding_tools.py +0 -0
  413. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/tools/test_mcp_tools.py +0 -0
  414. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/tools/test_memory_tool.py +0 -0
  415. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/tools/test_research_tools.py +0 -0
  416. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/tools/test_tools.py +0 -0
  417. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/webui/__init__.py +0 -0
  418. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/webui/helpers.py +0 -0
  419. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/webui/test_eval_routes.py +0 -0
  420. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/webui/test_execution.py +0 -0
  421. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/webui/test_mcp_routes.py +0 -0
  422. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/webui/test_package_api.py +0 -0
  423. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/webui/test_registry.py +0 -0
  424. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/webui/test_server.py +0 -0
  425. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/webui/test_sessions.py +0 -0
  426. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/webui/test_workflow_streaming.py +0 -0
  427. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/workflow/recovery_worker.py +0 -0
  428. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/workflow/test_agent_step_imports.py +0 -0
  429. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/workflow/test_checkpoint.py +0 -0
  430. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/workflow/test_subworkflow_step.py +0 -0
  431. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/workflow/test_workflow_agent.py +0 -0
  432. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/workflow/test_workflow_class.py +0 -0
  433. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/workflow/test_workflow_models.py +0 -0
  434. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/workflow/test_workflow_reliability.py +0 -0
  435. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/workflow/test_workflow_runner.py +0 -0
  436. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/workflow/test_workflow_schema.py +0 -0
  437. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/workflow/test_workflow_steps.py +0 -0
  438. {agentbyte-0.50.0 → agentbyte-0.52.0}/tests/workflow/test_workflow_visualizer.py +0 -0
@@ -6,6 +6,52 @@ The format follows Keep a Changelog principles and semantic versioning.
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [0.52.0] - 2026-10-10
10
+
11
+ ### Added
12
+
13
+ - `AnthropicChatCompletionClient`: direct Anthropic Claude chat client (`agentbyte[anthropic]`),
14
+ matching the existing `OpenAIChatCompletionClient` construction/DI/retry/pricing/error-mapping
15
+ contract (`from_api_key()`, `_to_config`/`_from_config` without persisting secrets, tool-use,
16
+ streaming).
17
+ - `AnthropicBedrockChatCompletionClient`: the same Claude Messages API client transported through
18
+ AWS Bedrock (`agentbyte[bedrock]`) via `AsyncAnthropicBedrock` (SigV4, boto3 credential chain),
19
+ constructed with `from_region()`. Shares conversion/parsing logic with the direct client through
20
+ `AnthropicConversionMixin`.
21
+ - `CohereBedrockEmbeddingClient`: Cohere Embed v3 (English/Multilingual) and v4 embeddings via AWS
22
+ Bedrock Runtime (`agentbyte[aws]`, `aioboto3`), with `CohereInputType`/`CohereTruncate` options
23
+ and the same injected-or-fresh-client pattern as `dataset/s3.py`'s `s3_client()`.
24
+ - `build_chat_client` auto-detects `anthropic` (`ANTHROPIC_API_KEY`) and `anthropic-bedrock`
25
+ (`AWS_REGION` + `ANTHROPIC_BEDROCK_MODEL`) alongside the existing OpenAI/Azure detection.
26
+ - Pricing for Claude 5.5 (`claude-opus-5-5`, `claude-haiku-5-5`), Cohere Embed v3 (English/
27
+ Multilingual, estimate), and Cohere Embed v4 (verified against AWS Bedrock's own pricing page).
28
+
29
+ ### Fixed
30
+
31
+ - `AnthropicBedrockChatCompletionClient` was built on `AsyncAnthropicBedrockMantle`, a Bedrock
32
+ access path authenticated by a bearer token (`AWS_BEARER_TOKEN_BEDROCK`), not AWS IAM
33
+ credentials — every call 404'd with a misleading "model does not exist" error against a real
34
+ account. Caught by live smoke-testing against real Bedrock, invisible to the mocked unit tests.
35
+ Swapped to `AsyncAnthropicBedrock`, the real SigV4/boto3-credential-chain transport.
36
+ - The Bedrock Claude pricing normalizer didn't strip cross-region inference-profile prefixes
37
+ (`eu.`/`global.`, required for on-demand invoke on most accounts), silently falling back to
38
+ default pricing for real Bedrock calls.
39
+ - `CohereBedrockEmbeddingClient` read billed tokens from a response-body field that doesn't exist
40
+ on real Bedrock responses, so `tokens_input`/`cost_estimate` were silently always zero despite
41
+ successful calls. Now reads the real `x-amzn-bedrock-input-token-count` response header.
42
+
43
+ ## [0.51.0] - 2026-10-09
44
+
45
+ ### Added
46
+
47
+ - Per-dimension scores in the WebUI and reports: `SuiteItemVerdict.dimensions` and
48
+ `SuiteRunSummary.dimension_means`, `TaskCell.dimensions` and `RunColumn.mean_dimensions` (over the
49
+ shared tasks). The run page gets a Dimensions table, run comparisons and benchmark reports get
50
+ per-dimension means with the change against the baseline plus a per-task breakdown, and the run and
51
+ benchmark Markdown reports list the dimension means. Runs without dimensions are unchanged.
52
+ - Benchmark report page: a "Show per-task" selector switches the task-by-variant matrix between the
53
+ overall score and any judged dimension, with the change against the baseline variant.
54
+
9
55
  ## [0.50.0] - 2026-10-09
10
56
 
11
57
  ### Changed (breaking)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: agentbyte
3
- Version: 0.50.0
3
+ Version: 0.52.0
4
4
  Summary: A toolkit for designing multiagent systems
5
5
  Author-email: MrDataPsycho <mr.data.psycho@gmail.com>
6
6
  License-Expression: LicenseRef-Proprietary
@@ -17,6 +17,8 @@ Requires-Dist: uvicorn[standard]>=0.44.0; extra == 'a2a'
17
17
  Provides-Extra: all
18
18
  Requires-Dist: aioboto3>=15.5.0; extra == 'all'
19
19
  Requires-Dist: aiosqlite>=0.22.1; extra == 'all'
20
+ Requires-Dist: anthropic>=1.13.0; extra == 'all'
21
+ Requires-Dist: anthropic[bedrock]>=1.13.0; extra == 'all'
20
22
  Requires-Dist: arxiv>=2.1; extra == 'all'
21
23
  Requires-Dist: asyncpg>=0.31.0; extra == 'all'
22
24
  Requires-Dist: azure-identity>=1.25.1; extra == 'all'
@@ -35,11 +37,15 @@ Requires-Dist: sqlmodel>=0.0.38; extra == 'all'
35
37
  Requires-Dist: tiktoken>=0.9.0; extra == 'all'
36
38
  Requires-Dist: uvicorn[standard]>=0.44.0; extra == 'all'
37
39
  Requires-Dist: youtube-transcript-api>=0.6; extra == 'all'
40
+ Provides-Extra: anthropic
41
+ Requires-Dist: anthropic>=1.13.0; extra == 'anthropic'
38
42
  Provides-Extra: aws
39
43
  Requires-Dist: aioboto3>=15.5.0; extra == 'aws'
40
44
  Provides-Extra: azureopenai
41
45
  Requires-Dist: azure-identity>=1.25.1; extra == 'azureopenai'
42
46
  Requires-Dist: openai>=1.107.1; extra == 'azureopenai'
47
+ Provides-Extra: bedrock
48
+ Requires-Dist: anthropic[bedrock]>=1.13.0; extra == 'bedrock'
43
49
  Provides-Extra: gunicorn
44
50
  Requires-Dist: fastapi>=0.135.2; extra == 'gunicorn'
45
51
  Requires-Dist: gunicorn>=23.0.0; extra == 'gunicorn'
@@ -84,7 +90,7 @@ Description-Content-Type: text/markdown
84
90
 
85
91
  Agentbyte is an observability-first agentic AI framework for building and studying multiagent systems with a learning-first, implementation-oriented workflow.
86
92
 
87
- Current release: **0.50.0**
93
+ Current release: **0.51.0**
88
94
 
89
95
  ## Building an Agent
90
96
 
@@ -333,7 +339,9 @@ uv add "agentbyte[openai,sqlite]"
333
339
  | --- | --- | --- |
334
340
  | `openai` | `openai` | `OpenAIChatCompletionClient`, `OpenAIEmbeddingClient` |
335
341
  | `azureopenai` | `openai`, `azure-identity` | Azure OpenAI clients and Entra ID credentials |
336
- | `aws` | `aioboto3` | S3 dataset sources, writers and publishers |
342
+ | `anthropic` | `anthropic` | Direct Anthropic Claude chat client |
343
+ | `bedrock` | `anthropic[bedrock]` | Anthropic Claude chat through AWS Bedrock |
344
+ | `aws` | `aioboto3` | S3 dataset I/O and Cohere Bedrock embedding client |
337
345
  | `otel` | OpenTelemetry API, SDK, OTLP exporter | OpenTelemetry tracing and metrics |
338
346
  | `webui` | `fastapi`, `uvicorn` | `agentbyte webui` |
339
347
  | `gunicorn` | `webui` + `gunicorn` | Production single-worker serving (`gunicorn -k uvicorn.workers.UvicornWorker -w 1`) |
@@ -2,7 +2,7 @@
2
2
 
3
3
  Agentbyte is an observability-first agentic AI framework for building and studying multiagent systems with a learning-first, implementation-oriented workflow.
4
4
 
5
- Current release: **0.50.0**
5
+ Current release: **0.51.0**
6
6
 
7
7
  ## Building an Agent
8
8
 
@@ -251,7 +251,9 @@ uv add "agentbyte[openai,sqlite]"
251
251
  | --- | --- | --- |
252
252
  | `openai` | `openai` | `OpenAIChatCompletionClient`, `OpenAIEmbeddingClient` |
253
253
  | `azureopenai` | `openai`, `azure-identity` | Azure OpenAI clients and Entra ID credentials |
254
- | `aws` | `aioboto3` | S3 dataset sources, writers and publishers |
254
+ | `anthropic` | `anthropic` | Direct Anthropic Claude chat client |
255
+ | `bedrock` | `anthropic[bedrock]` | Anthropic Claude chat through AWS Bedrock |
256
+ | `aws` | `aioboto3` | S3 dataset I/O and Cohere Bedrock embedding client |
255
257
  | `otel` | OpenTelemetry API, SDK, OTLP exporter | OpenTelemetry tracing and metrics |
256
258
  | `webui` | `fastapi`, `uvicorn` | `agentbyte webui` |
257
259
  | `gunicorn` | `webui` + `gunicorn` | Production single-worker serving (`gunicorn -k uvicorn.workers.UvicornWorker -w 1`) |
@@ -24,6 +24,16 @@ azureopenai = [
24
24
  "openai>=1.107.1",
25
25
  "azure-identity>=1.25.1",
26
26
  ]
27
+ anthropic = [
28
+ "anthropic>=1.13.0",
29
+ ]
30
+ # anthropic[bedrock] does its own AWS SigV4 signing via AnthropicBedrock*; deliberately
31
+ # not named "aws" (that extra is aioboto3, which this one does not need).
32
+ bedrock = [
33
+ "anthropic[bedrock]>=1.13.0",
34
+ ]
35
+ # aioboto3 for AWS I/O: S3 dataset access (dataset/s3.py) and Bedrock Runtime
36
+ # (llm/bedrock/, e.g. CohereBedrockEmbeddingClient).
27
37
  aws = [
28
38
  "aioboto3>=15.5.0",
29
39
  ]
@@ -76,7 +86,7 @@ a2a = [
76
86
  "agentbyte[webui]",
77
87
  ]
78
88
  all = [
79
- "agentbyte[openai,azureopenai,aws,otel,webui,gunicorn,sql,tiktoken,optim,viz,research]",
89
+ "agentbyte[openai,azureopenai,anthropic,bedrock,aws,otel,webui,gunicorn,sql,tiktoken,optim,viz,research]",
80
90
  ]
81
91
 
82
92
 
@@ -0,0 +1,2 @@
1
+ __version__ = "0.52.0"
2
+ VERSION = __version__
@@ -17,14 +17,13 @@ from collections.abc import Sequence
17
17
  from enum import StrEnum
18
18
  from typing import Any
19
19
 
20
- from pydantic import BaseModel, ConfigDict
21
-
20
+ from pydantic import BaseModel, ConfigDict, Field
22
21
  from agentbyte.eval.comparison import improvement_pct
23
22
  from agentbyte.messages import Usage
24
23
 
25
24
  from .benchmark import EvalBenchmark, TaskSet, combine_task_sets
26
25
  from .suite import EvalSuiteConfigError
27
- from .verdict import ItemOutcome, SuiteItemVerdict, SuiteRunSummary
26
+ from .verdict import ItemOutcome, SuiteItemVerdict, SuiteRunSummary, mean_dimensions
28
27
 
29
28
 
30
29
  class RegressionFlag(StrEnum):
@@ -44,6 +43,7 @@ class TaskCell(BaseModel):
44
43
  run_id: str
45
44
  present: bool
46
45
  overall: float | None = None
46
+ dimensions: dict[str, float] = Field(default_factory=dict)
47
47
  outcome: ItemOutcome | None = None
48
48
  passed: bool | None = None
49
49
  delta_vs_baseline: float | None = None
@@ -83,6 +83,7 @@ class RunColumn(BaseModel):
83
83
  min_score: float
84
84
  is_baseline: bool
85
85
  mean_overall: float | None = None
86
+ mean_dimensions: dict[str, float] = Field(default_factory=dict)
86
87
  passed_count: int = 0
87
88
  scored_count: int = 0
88
89
  improvement_pct: float | None = None
@@ -163,6 +164,19 @@ class ComparisonReport(BaseModel):
163
164
  )
164
165
  lines.append("")
165
166
 
167
+ dimension_names = list(
168
+ dict.fromkeys(name for variant in self.variants for name in variant.run.mean_dimensions)
169
+ )
170
+ if dimension_names:
171
+ lines.append("## Dimension means")
172
+ dimension_header = ["Dimension", *(variant.variant_name for variant in self.variants)]
173
+ lines.append("| " + " | ".join(dimension_header) + " |")
174
+ lines.append("| " + " | ".join(["---"] * len(dimension_header)) + " |")
175
+ for name in dimension_names:
176
+ means = " | ".join(_fmt(variant.run.mean_dimensions.get(name)) for variant in self.variants)
177
+ lines.append(f"| {name} | {means} |")
178
+ lines.append("")
179
+
166
180
  if self.failed_variants:
167
181
  lines.append("## Failed variants")
168
182
  for failed in self.failed_variants:
@@ -375,6 +389,7 @@ def _cell(
375
389
  run_id=run_id,
376
390
  present=True,
377
391
  overall=verdict.overall,
392
+ dimensions=dict(verdict.dimensions),
378
393
  outcome=verdict.outcome,
379
394
  passed=verdict.passed,
380
395
  delta_vs_baseline=delta,
@@ -404,6 +419,9 @@ def _column(
404
419
  min_score=summary.min_score,
405
420
  is_baseline=is_baseline,
406
421
  mean_overall=mean,
422
+ mean_dimensions=mean_dimensions(
423
+ [v for name in shared_names if (v := run.get(name)) is not None]
424
+ ),
407
425
  passed_count=passed,
408
426
  scored_count=scored,
409
427
  improvement_pct=None if is_baseline else improvement_pct(baseline_mean, mean),
@@ -6,8 +6,7 @@ import math
6
6
  from datetime import datetime
7
7
  from enum import StrEnum
8
8
 
9
- from pydantic import BaseModel, ConfigDict
10
-
9
+ from pydantic import BaseModel, ConfigDict, Field
11
10
  from agentbyte.eval.history import (
12
11
  CaptureMode,
13
12
  EvalItemRecord,
@@ -44,6 +43,7 @@ class SuiteItemVerdict(BaseModel):
44
43
  outcome: ItemOutcome
45
44
  passed: bool
46
45
  overall: float | None = None
46
+ dimensions: dict[str, float] = Field(default_factory=dict)
47
47
  scoring_status: ScoringStatus | None = None
48
48
  failure_reason: str | None = None
49
49
  execution_status: ExecutionStatus | None = None
@@ -82,6 +82,7 @@ class SuiteRunSummary(BaseModel):
82
82
  started_at: datetime | None
83
83
  finished_at: datetime | None
84
84
  items: list[SuiteItemVerdict]
85
+ dimension_means: dict[str, float] = Field(default_factory=dict)
85
86
 
86
87
  @property
87
88
  def failed_count(self) -> int:
@@ -120,6 +121,9 @@ class SuiteRunSummary(BaseModel):
120
121
  rows.append(("Error", _cell(self.error)))
121
122
  lines = [f"# Eval run: {self.suite or self.run_id}", "", "| | |", "|---|---|"]
122
123
  lines += [f"| {key} | {value} |" for key, value in rows]
124
+ if self.dimension_means:
125
+ lines += ["", "## Dimensions (mean over scored items)", "", "| Dimension | Mean |", "|---|---|"]
126
+ lines += [f"| {_cell(name)} | {mean:.2f} |" for name, mean in self.dimension_means.items()]
123
127
  lines += ["", "## Items", "", "| # | Task | Outcome | Score | Reason |", "|---|---|---|---|---|"]
124
128
  for item in self.items:
125
129
  score = f"{item.overall:g}" if item.overall is not None else "-"
@@ -148,6 +152,7 @@ def item_verdict(item: EvalItemRecord, min_score: float) -> SuiteItemVerdict:
148
152
  outcome=outcome,
149
153
  passed=outcome == "passed",
150
154
  overall=item.overall if item.scoring_status == "scored" else None,
155
+ dimensions=dict(item.dimensions) if item.scoring_status == "scored" else {},
151
156
  scoring_status=item.scoring_status,
152
157
  failure_reason=item.failure_reason,
153
158
  execution_status=item.execution_status,
@@ -216,9 +221,20 @@ def summarize(
216
221
  started_at=run.started_at,
217
222
  finished_at=run.finished_at,
218
223
  items=verdicts,
224
+ dimension_means=mean_dimensions(verdicts),
219
225
  )
220
226
 
221
227
 
228
+ def mean_dimensions(verdicts: list[SuiteItemVerdict]) -> dict[str, float]:
229
+ """Mean score per dimension over the items that scored it, in first-seen order."""
230
+ values: dict[str, list[float]] = {}
231
+ for verdict in verdicts:
232
+ for name, value in verdict.dimensions.items():
233
+ if math.isfinite(value):
234
+ values.setdefault(name, []).append(value)
235
+ return {name: sum(scores) / len(scores) for name, scores in values.items()}
236
+
237
+
222
238
  def _total_usage(items: list[EvalItemRecord]) -> Usage | None:
223
239
  usages = [item.usage for item in items if item.usage is not None]
224
240
  if not usages:
@@ -69,6 +69,8 @@ __all__ = [
69
69
  "AzureOpenAIChatCompletionClientConfig",
70
70
  "AzureOpenAIEmbeddingClient",
71
71
  "AzureOpenAIEmbeddingClientConfig",
72
+ "AnthropicChatCompletionClient",
73
+ "AnthropicChatCompletionClientConfig",
72
74
  # Authentication utilities
73
75
  "get_default_token_provider",
74
76
  "get_certificate_token_provider",
@@ -77,6 +79,12 @@ __all__ = [
77
79
  "OpenAISettings",
78
80
  "AzureOpenAISettings",
79
81
  "AzureServicePrincipalSettings",
82
+ "AnthropicSettings",
83
+ "AnthropicBedrockChatCompletionClient",
84
+ "AnthropicBedrockChatCompletionClientConfig",
85
+ "CohereBedrockEmbeddingClient",
86
+ "CohereBedrockEmbeddingClientConfig",
87
+ "BedrockSettings",
80
88
  # Retry policy
81
89
  "RetryPolicy",
82
90
  # Exception types
@@ -123,9 +131,22 @@ if TYPE_CHECKING: # editors and type checkers see the provider classes eagerly
123
131
  OpenAIEmbeddingClientConfig,
124
132
  OpenAISettings,
125
133
  )
134
+ from .anthropic import (
135
+ AnthropicChatCompletionClient,
136
+ AnthropicChatCompletionClientConfig,
137
+ AnthropicSettings,
138
+ )
139
+ from .bedrock import (
140
+ AnthropicBedrockChatCompletionClient,
141
+ AnthropicBedrockChatCompletionClientConfig,
142
+ BedrockSettings,
143
+ CohereBedrockEmbeddingClient,
144
+ CohereBedrockEmbeddingClientConfig,
145
+ )
126
146
 
127
- # Provider clients need optional extras (``openai``, ``azureopenai``); they are
128
- # imported on first access so ``import agentbyte`` works with core dependencies only.
147
+ # Provider clients need optional extras (``openai``, ``azureopenai``, ``anthropic``);
148
+ # they are imported on first access so ``import agentbyte`` works with core
149
+ # dependencies only.
129
150
  _PROVIDER_EXPORTS = {
130
151
  "OpenAIChatCompletionClient": ".openai",
131
152
  "OpenAIChatCompletionClientConfig": ".openai",
@@ -141,6 +162,25 @@ _PROVIDER_EXPORTS = {
141
162
  "create_token_provider_from_string": ".azure",
142
163
  "AzureOpenAISettings": ".azure",
143
164
  "AzureServicePrincipalSettings": ".azure",
165
+ "AnthropicChatCompletionClient": ".anthropic",
166
+ "AnthropicChatCompletionClientConfig": ".anthropic",
167
+ "AnthropicSettings": ".anthropic",
168
+ "AnthropicBedrockChatCompletionClient": ".bedrock",
169
+ "AnthropicBedrockChatCompletionClientConfig": ".bedrock",
170
+ "CohereBedrockEmbeddingClient": ".bedrock",
171
+ "CohereBedrockEmbeddingClientConfig": ".bedrock",
172
+ "BedrockSettings": ".bedrock",
173
+ }
174
+
175
+ _PROVIDER_EXTRAS = {
176
+ ".openai": ("openai", "openai"),
177
+ ".azure": ("openai", "azureopenai"),
178
+ ".anthropic": ("anthropic", "anthropic"),
179
+ # `.bedrock` is intentionally absent: its two clients need different extras
180
+ # (`anthropic[bedrock]` vs. `aioboto3`/`aws`), so `llm/bedrock/__init__.py`
181
+ # does its own fine-grained, per-symbol `require()` check instead -- a
182
+ # single module-level check here would wrongly demand both extras for
183
+ # either client.
144
184
  }
145
185
 
146
186
 
@@ -150,9 +190,12 @@ def __getattr__(name: str):
150
190
  raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
151
191
  from importlib import import_module
152
192
 
153
- from agentbyte._optional import require
193
+ extra_spec = _PROVIDER_EXTRAS.get(module_name)
194
+ if extra_spec is not None:
195
+ from agentbyte._optional import require
154
196
 
155
- require("openai", extra="openai" if module_name == ".openai" else "azureopenai", feature=name)
197
+ required_module, extra = extra_spec
198
+ require(required_module, extra=extra, feature=name)
156
199
  value = getattr(import_module(module_name, __name__), name)
157
200
  globals()[name] = value
158
201
  return value
@@ -0,0 +1,10 @@
1
+ """Anthropic provider package."""
2
+
3
+ from .chat import AnthropicChatCompletionClient, AnthropicChatCompletionClientConfig
4
+ from .settings import AnthropicSettings
5
+
6
+ __all__ = [
7
+ "AnthropicChatCompletionClient",
8
+ "AnthropicChatCompletionClientConfig",
9
+ "AnthropicSettings",
10
+ ]