agentbyte 0.56.0__tar.gz → 0.57.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 (441) hide show
  1. {agentbyte-0.56.0 → agentbyte-0.57.0}/CHANGELOG.md +18 -0
  2. {agentbyte-0.56.0 → agentbyte-0.57.0}/PKG-INFO +6 -2
  3. {agentbyte-0.56.0 → agentbyte-0.57.0}/README.md +5 -1
  4. agentbyte-0.57.0/src/agentbyte/__about__.py +2 -0
  5. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/llm/anthropic/_conversion.py +26 -5
  6. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/llm/anthropic/chat.py +12 -10
  7. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/llm/azure/chat.py +16 -16
  8. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/llm/azure/embedding.py +16 -16
  9. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/llm/bedrock/anthropic_chat.py +11 -24
  10. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/llm/bedrock/cohere_embedding.py +13 -8
  11. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/llm/openai/chat.py +12 -10
  12. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/llm/openai/embedding.py +12 -10
  13. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/llm/pricing.py +78 -34
  14. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/llm/test_anthropic_bedrock_client.py +2 -2
  15. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/llm/test_anthropic_client.py +67 -5
  16. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/llm/test_azure_client.py +4 -4
  17. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/llm/test_azure_embedding_client.py +2 -2
  18. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/llm/test_cohere_bedrock_embedding_client.py +76 -17
  19. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/llm/test_openai_client.py +4 -4
  20. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/llm/test_openai_embedding_client.py +2 -2
  21. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/llm/test_pricing.py +1 -1
  22. agentbyte-0.57.0/tests/llm/test_pricing_model.py +454 -0
  23. agentbyte-0.57.0/tests/llm/test_pricing_resolution.py +171 -0
  24. agentbyte-0.56.0/src/agentbyte/__about__.py +0 -2
  25. agentbyte-0.56.0/tests/llm/test_pricing_model.py +0 -197
  26. {agentbyte-0.56.0 → agentbyte-0.57.0}/.gitignore +0 -0
  27. {agentbyte-0.56.0 → agentbyte-0.57.0}/LICENSE +0 -0
  28. {agentbyte-0.56.0 → agentbyte-0.57.0}/pyproject.toml +0 -0
  29. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/__init__.py +0 -0
  30. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/_optional.py +0 -0
  31. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/a2a/__init__.py +0 -0
  32. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/a2a/app.py +0 -0
  33. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/a2a/distributed_context.py +0 -0
  34. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/a2a/executor.py +0 -0
  35. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/a2a/tool.py +0 -0
  36. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/agents/__init__.py +0 -0
  37. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/agents/agent.py +0 -0
  38. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/agents/agent_as_tool.py +0 -0
  39. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/agents/base.py +0 -0
  40. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/agents/types.py +0 -0
  41. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/cancellation_token.py +0 -0
  42. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/catalog.py +0 -0
  43. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/cli/__init__.py +0 -0
  44. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/cli/__main__.py +0 -0
  45. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/cli/eval_commands.py +0 -0
  46. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/cli/history_args.py +0 -0
  47. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/cli/loading.py +0 -0
  48. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/cli/main.py +0 -0
  49. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/cli/optim_commands.py +0 -0
  50. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/cli/report_output.py +0 -0
  51. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/cli/serve_commands.py +0 -0
  52. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/compaction/__init__.py +0 -0
  53. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/compaction/counters.py +0 -0
  54. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/compaction/errors.py +0 -0
  55. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/compaction/grouping.py +0 -0
  56. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/compaction/strategies.py +0 -0
  57. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/component.py +0 -0
  58. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/context.py +0 -0
  59. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/context_providers/__init__.py +0 -0
  60. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/context_providers/base.py +0 -0
  61. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/context_providers/skill_tools.py +0 -0
  62. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/context_providers/skills.py +0 -0
  63. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/dataset/__init__.py +0 -0
  64. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/dataset/_aiosqlite.py +0 -0
  65. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/dataset/base.py +0 -0
  66. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/dataset/config.py +0 -0
  67. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/dataset/importer.py +0 -0
  68. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/dataset/json.py +0 -0
  69. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/dataset/loader.py +0 -0
  70. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/dataset/publish.py +0 -0
  71. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/dataset/publish_config.py +0 -0
  72. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/dataset/publishers.py +0 -0
  73. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/dataset/s3.py +0 -0
  74. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/dataset/sources.py +0 -0
  75. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/dataset/sqlite.py +0 -0
  76. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/dataset/sqlite_db.py +0 -0
  77. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/dataset/write_config.py +0 -0
  78. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/dataset/writers.py +0 -0
  79. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/entity.py +0 -0
  80. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/__init__.py +0 -0
  81. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/base.py +0 -0
  82. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/checks/__init__.py +0 -0
  83. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/checks/decorator.py +0 -0
  84. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/checks/keyword.py +0 -0
  85. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/checks/local.py +0 -0
  86. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/checks/process.py +0 -0
  87. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/checks/tool.py +0 -0
  88. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/checks/types.py +0 -0
  89. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/comparison.py +0 -0
  90. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/eval_dataset.py +0 -0
  91. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/history/__init__.py +0 -0
  92. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/history/_writer_lock.py +0 -0
  93. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/history/config.py +0 -0
  94. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/history/conformance.py +0 -0
  95. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/history/errors.py +0 -0
  96. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/history/models.py +0 -0
  97. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/history/recorder.py +0 -0
  98. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/history/sql.py +0 -0
  99. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/history/sqlite.py +0 -0
  100. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/history/store.py +0 -0
  101. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/history/transitions.py +0 -0
  102. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/judges/__init__.py +0 -0
  103. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/judges/base.py +0 -0
  104. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/judges/composite.py +0 -0
  105. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/judges/llm.py +0 -0
  106. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/judges/pairwise.py +0 -0
  107. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/judges/reference.py +0 -0
  108. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/judges/trajectory.py +0 -0
  109. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/judges/validation.py +0 -0
  110. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/pairwise.py +0 -0
  111. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/report.py +0 -0
  112. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/runner.py +0 -0
  113. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/splitting.py +0 -0
  114. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/targets/__init__.py +0 -0
  115. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/targets/agent.py +0 -0
  116. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/targets/model.py +0 -0
  117. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/targets/multi_turn.py +0 -0
  118. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/targets/orchestrator.py +0 -0
  119. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/targets/runtime.py +0 -0
  120. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/targets/workflow.py +0 -0
  121. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/types.py +0 -0
  122. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/workbench/__init__.py +0 -0
  123. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/workbench/benchmark.py +0 -0
  124. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/workbench/compare.py +0 -0
  125. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/workbench/coordinator.py +0 -0
  126. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/workbench/jobs.py +0 -0
  127. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/workbench/smoke.py +0 -0
  128. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/workbench/smoke_tasks.json +0 -0
  129. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/workbench/suite.py +0 -0
  130. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/workbench/verdict.py +0 -0
  131. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/execution_trace/__init__.py +0 -0
  132. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/execution_trace/collector.py +0 -0
  133. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/execution_trace/models.py +0 -0
  134. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/llm/__init__.py +0 -0
  135. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/llm/_retry_observability.py +0 -0
  136. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/llm/anthropic/__init__.py +0 -0
  137. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/llm/anthropic/settings.py +0 -0
  138. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/llm/auth.py +0 -0
  139. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/llm/azure/__init__.py +0 -0
  140. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/llm/azure/auth.py +0 -0
  141. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/llm/azure/settings.py +0 -0
  142. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/llm/azure_openai.py +0 -0
  143. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/llm/azure_openai_embedding.py +0 -0
  144. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/llm/base.py +0 -0
  145. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/llm/bedrock/__init__.py +0 -0
  146. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/llm/bedrock/_client.py +0 -0
  147. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/llm/bedrock/settings.py +0 -0
  148. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/llm/embedding_batcher.py +0 -0
  149. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/llm/embeddings_base.py +0 -0
  150. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/llm/openai/__init__.py +0 -0
  151. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/llm/openai/settings.py +0 -0
  152. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/llm/openai_embedding.py +0 -0
  153. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/llm/retry_policy.py +0 -0
  154. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/llm/settings.py +0 -0
  155. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/llm/types.py +0 -0
  156. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/logger.py +0 -0
  157. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/memory/__init__.py +0 -0
  158. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/memory/base.py +0 -0
  159. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/messages.py +0 -0
  160. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/middleware/__init__.py +0 -0
  161. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/middleware/base.py +0 -0
  162. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/middleware/otel.py +0 -0
  163. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/middleware/retry.py +0 -0
  164. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/middleware/sql_usage.py +0 -0
  165. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/middleware/usage_logger.py +0 -0
  166. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/notebook.py +0 -0
  167. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/optim/__init__.py +0 -0
  168. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/optim/base.py +0 -0
  169. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/optim/binding.py +0 -0
  170. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/optim/config.py +0 -0
  171. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/optim/gepa.py +0 -0
  172. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/optim/job.py +0 -0
  173. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/optim/mipro.py +0 -0
  174. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/optim/pareto.py +0 -0
  175. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/optim/reflective.py +0 -0
  176. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/optim/report.py +0 -0
  177. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/optim/spec.py +0 -0
  178. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/optim/trace.py +0 -0
  179. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/orchestration/__init__.py +0 -0
  180. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/orchestration/ai.py +0 -0
  181. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/orchestration/base.py +0 -0
  182. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/orchestration/handoff.py +0 -0
  183. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/orchestration/plan.py +0 -0
  184. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/orchestration/policies.py +0 -0
  185. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/orchestration/round_robin.py +0 -0
  186. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/presets/__init__.py +0 -0
  187. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/presets/agents.py +0 -0
  188. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/presets/benchmark.py +0 -0
  189. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/presets/capitals.py +0 -0
  190. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/presets/clients.py +0 -0
  191. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/presets/instruction_registry.py +0 -0
  192. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/presets/instructions/orchestrator.yaml +0 -0
  193. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/presets/instructions/query_rewriter.yaml +0 -0
  194. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/presets/instructions/researcher.yaml +0 -0
  195. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/presets/instructions/reviewer.yaml +0 -0
  196. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/presets/instructions/writer.yaml +0 -0
  197. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/presets/orchestration.py +0 -0
  198. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/presets/skills/capitals-format/SKILL.md +0 -0
  199. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/presets/skills/contracts-analyst/SKILL.md +0 -0
  200. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/presets/skills/hr-analyst/SKILL.md +0 -0
  201. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/presets/skills/hr-analyst/resources/departments.md +0 -0
  202. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/presets/skills/hr-analyst/resources/employees.md +0 -0
  203. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/presets/skills/hr-analyst/resources/payroll.md +0 -0
  204. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/presets/streaming.py +0 -0
  205. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/presets/workflow.py +0 -0
  206. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/session_store.py +0 -0
  207. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/skills/__init__.py +0 -0
  208. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/skills/base.py +0 -0
  209. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/skills/resources.py +0 -0
  210. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/skills/scripts.py +0 -0
  211. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/skills/sources.py +0 -0
  212. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/skills/validation.py +0 -0
  213. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/termination/__init__.py +0 -0
  214. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/termination/base.py +0 -0
  215. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/termination/cancellation.py +0 -0
  216. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/termination/composite.py +0 -0
  217. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/termination/consecutive_agent.py +0 -0
  218. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/termination/external.py +0 -0
  219. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/termination/function_call.py +0 -0
  220. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/termination/handoff.py +0 -0
  221. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/termination/max_message.py +0 -0
  222. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/termination/predicate.py +0 -0
  223. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/termination/source.py +0 -0
  224. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/termination/text_mention.py +0 -0
  225. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/termination/timeout.py +0 -0
  226. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/termination/token_usage.py +0 -0
  227. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/tools/__init__.py +0 -0
  228. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/tools/base.py +0 -0
  229. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/tools/coding_tools.py +0 -0
  230. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/tools/core_tools.py +0 -0
  231. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/tools/decorator.py +0 -0
  232. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/tools/mcp/__init__.py +0 -0
  233. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/tools/mcp/client.py +0 -0
  234. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/tools/mcp/config.py +0 -0
  235. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/tools/mcp/errors.py +0 -0
  236. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/tools/mcp/tool.py +0 -0
  237. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/tools/mcp/transports.py +0 -0
  238. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/tools/memory_tool.py +0 -0
  239. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/tools/research_tools.py +0 -0
  240. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/types.py +0 -0
  241. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/webui/__init__.py +0 -0
  242. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/webui/discovery.py +0 -0
  243. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/webui/eval_routes.py +0 -0
  244. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/webui/execution.py +0 -0
  245. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/webui/mcp/__init__.py +0 -0
  246. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/webui/mcp/servers/__init__.py +0 -0
  247. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/webui/mcp/servers/apps_server.py +0 -0
  248. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/webui/mcp/servers/auth_server.py +0 -0
  249. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/webui/mcp/servers/basic_server.py +0 -0
  250. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/webui/mcp/servers/mrtr_server.py +0 -0
  251. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/webui/mcp/servers/notify_server.py +0 -0
  252. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/webui/mcp_playground.py +0 -0
  253. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/webui/mcp_routes.py +0 -0
  254. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/webui/models.py +0 -0
  255. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/webui/registry.py +0 -0
  256. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/webui/server.py +0 -0
  257. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/webui/session_store.py +0 -0
  258. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/webui/sessions.py +0 -0
  259. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/webui/ui/assets/index-BreogZut.js +0 -0
  260. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/webui/ui/assets/index-ptxe7GHs.css +0 -0
  261. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/webui/ui/index.html +0 -0
  262. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/webui/ui/vite.svg +0 -0
  263. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/workflow/__init__.py +0 -0
  264. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/workflow/agent.py +0 -0
  265. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/workflow/core/__init__.py +0 -0
  266. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/workflow/core/_structure_hash.py +0 -0
  267. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/workflow/core/checkpoint.py +0 -0
  268. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/workflow/core/models.py +0 -0
  269. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/workflow/core/runner.py +0 -0
  270. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/workflow/core/workflow.py +0 -0
  271. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/workflow/defaults.py +0 -0
  272. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/workflow/errors.py +0 -0
  273. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/workflow/loader.py +0 -0
  274. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/workflow/schema.py +0 -0
  275. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/workflow/schema_utils.py +0 -0
  276. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/workflow/sqlite_checkpoint.py +0 -0
  277. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/workflow/steps/__init__.py +0 -0
  278. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/workflow/steps/agent.py +0 -0
  279. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/workflow/steps/echo.py +0 -0
  280. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/workflow/steps/function.py +0 -0
  281. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/workflow/steps/http.py +0 -0
  282. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/workflow/steps/step.py +0 -0
  283. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/workflow/steps/subworkflow.py +0 -0
  284. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/workflow/steps/transform.py +0 -0
  285. {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/workflow/visualizer.py +0 -0
  286. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/a2a/a2a_helpers.py +0 -0
  287. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/a2a/test_a2a_adapters.py +0 -0
  288. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/a2a/test_distributed_context.py +0 -0
  289. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/agents/test_agent_as_tool.py +0 -0
  290. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/agents/test_agent_basic.py +0 -0
  291. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/agents/test_agent_client_middleware_overlap.py +0 -0
  292. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/agents/test_agent_context_providers.py +0 -0
  293. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/agents/test_agent_error_response.py +0 -0
  294. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/agents/test_agent_event_types.py +0 -0
  295. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/agents/test_agent_memory_integration.py +0 -0
  296. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/agents/test_agent_middleware_integration.py +0 -0
  297. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/agents/test_agent_response_accessors.py +0 -0
  298. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/agents/test_agent_retry_middleware.py +0 -0
  299. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/agents/test_agent_stop_at_tools.py +0 -0
  300. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/agents/test_agent_stream_events.py +0 -0
  301. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/agents/test_tool_approval.py +0 -0
  302. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/agents/test_tool_batch_resolution.py +0 -0
  303. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/agents/test_tool_metadata.py +0 -0
  304. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/cli/test_eval_benchmark_commands.py +0 -0
  305. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/cli/test_loading.py +0 -0
  306. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/cli/test_registry_check.py +0 -0
  307. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/cli/test_report_output.py +0 -0
  308. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/cli/test_serve_command.py +0 -0
  309. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/compaction/test_compaction.py +0 -0
  310. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/conftest.py +0 -0
  311. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/context_providers/__init__.py +0 -0
  312. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/context_providers/test_skill_tools.py +0 -0
  313. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/context_providers/test_skills_provider.py +0 -0
  314. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/dataset/fake_s3.py +0 -0
  315. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/dataset/test_dataset_exit.py +0 -0
  316. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/dataset/test_loader.py +0 -0
  317. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/dataset/test_multi_table.py +0 -0
  318. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/dataset/test_publish.py +0 -0
  319. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/dataset/test_sqlite_db.py +0 -0
  320. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/eval/test_dimension_scores.py +0 -0
  321. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/eval/test_eval_benchmarks.py +0 -0
  322. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/eval/test_eval_dataset.py +0 -0
  323. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/eval/test_eval_history.py +0 -0
  324. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/eval/test_eval_history_backends.py +0 -0
  325. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/eval/test_eval_jobs.py +0 -0
  326. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/eval/test_eval_workbench.py +0 -0
  327. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/eval/test_execution_trajectories.py +0 -0
  328. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/eval/test_history_config.py +0 -0
  329. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/eval/test_multi_turn.py +0 -0
  330. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/eval/test_pairwise.py +0 -0
  331. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/eval/test_phase1_runner_and_targets.py +0 -0
  332. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/eval/test_phase2_checks_and_reports.py +0 -0
  333. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/eval/test_run_comparison.py +0 -0
  334. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/eval/test_score_integrity.py +0 -0
  335. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/eval/test_splitting.py +0 -0
  336. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/eval/test_types_and_judges.py +0 -0
  337. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/llm/test_client_middleware.py +0 -0
  338. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/llm/test_embedding_batcher.py +0 -0
  339. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/llm/test_llm_types.py +0 -0
  340. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/llm/test_retry_observability.py +0 -0
  341. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/llm/test_retry_policy_api.py +0 -0
  342. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/llm/test_retryable_error_substrings.py +0 -0
  343. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/memory/test_memory.py +0 -0
  344. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/middleware/test_context_compaction.py +0 -0
  345. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/middleware/test_deduplicate_tool_result.py +0 -0
  346. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/middleware/test_middleware_chain.py +0 -0
  347. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/middleware/test_otel.py +0 -0
  348. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/middleware/test_retry_middleware.py +0 -0
  349. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/middleware/test_sql_usage.py +0 -0
  350. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/middleware/test_usage_logger.py +0 -0
  351. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/optim/__init__.py +0 -0
  352. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/optim/fakes.py +0 -0
  353. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/optim/test_base.py +0 -0
  354. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/optim/test_base_integration.py +0 -0
  355. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/optim/test_binding.py +0 -0
  356. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/optim/test_config.py +0 -0
  357. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/optim/test_description_tunable.py +0 -0
  358. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/optim/test_gepa.py +0 -0
  359. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/optim/test_mipro.py +0 -0
  360. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/optim/test_orchestrator_optim.py +0 -0
  361. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/optim/test_pareto.py +0 -0
  362. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/optim/test_reflective.py +0 -0
  363. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/optim/test_report.py +0 -0
  364. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/optim/test_score_integrity.py +0 -0
  365. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/optim/test_spec.py +0 -0
  366. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/optim/test_trace.py +0 -0
  367. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/orchestration/test_ai_orchestrator.py +0 -0
  368. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/orchestration/test_base_orchestrator.py +0 -0
  369. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/orchestration/test_handoff_orchestrator.py +0 -0
  370. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/orchestration/test_history_tool_call_pairing.py +0 -0
  371. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/orchestration/test_orchestration_usage_breakdown.py +0 -0
  372. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/orchestration/test_orchestrator_agent_contract.py +0 -0
  373. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/orchestration/test_orchestrator_finalization.py +0 -0
  374. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/orchestration/test_orchestrator_member_events.py +0 -0
  375. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/orchestration/test_orchestrator_otel.py +0 -0
  376. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/orchestration/test_orchestrator_synthesis.py +0 -0
  377. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/orchestration/test_plan_orchestrator.py +0 -0
  378. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/orchestration/test_round_robin.py +0 -0
  379. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/presets/test_agents.py +0 -0
  380. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/presets/test_benchmark.py +0 -0
  381. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/presets/test_capitals.py +0 -0
  382. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/presets/test_clients.py +0 -0
  383. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/presets/test_instruction_registry.py +0 -0
  384. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/presets/test_orchestration.py +0 -0
  385. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/presets/test_streaming.py +0 -0
  386. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/presets/test_workflow.py +0 -0
  387. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/skills/__init__.py +0 -0
  388. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/skills/test_base.py +0 -0
  389. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/skills/test_resources.py +0 -0
  390. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/skills/test_scripts.py +0 -0
  391. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/skills/test_sources.py +0 -0
  392. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/termination/test_base.py +0 -0
  393. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/termination/test_cancellation.py +0 -0
  394. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/termination/test_composite.py +0 -0
  395. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/termination/test_consecutive_agent.py +0 -0
  396. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/termination/test_external.py +0 -0
  397. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/termination/test_function_call.py +0 -0
  398. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/termination/test_handoff.py +0 -0
  399. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/termination/test_max_message.py +0 -0
  400. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/termination/test_predicate.py +0 -0
  401. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/termination/test_source.py +0 -0
  402. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/termination/test_text_mention.py +0 -0
  403. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/termination/test_timeout.py +0 -0
  404. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/termination/test_token_usage.py +0 -0
  405. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/test_cancellation_token.py +0 -0
  406. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/test_context.py +0 -0
  407. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/test_logger.py +0 -0
  408. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/test_messages.py +0 -0
  409. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/test_option_enums.py +0 -0
  410. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/test_optional_extras.py +0 -0
  411. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/test_package_api.py +0 -0
  412. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/test_session_store.py +0 -0
  413. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/test_types.py +0 -0
  414. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/tools/fixtures/mcp_stdio_server.py +0 -0
  415. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/tools/test_coding_tools.py +0 -0
  416. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/tools/test_mcp_tools.py +0 -0
  417. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/tools/test_memory_tool.py +0 -0
  418. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/tools/test_research_tools.py +0 -0
  419. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/tools/test_tools.py +0 -0
  420. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/webui/__init__.py +0 -0
  421. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/webui/helpers.py +0 -0
  422. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/webui/test_eval_routes.py +0 -0
  423. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/webui/test_execution.py +0 -0
  424. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/webui/test_mcp_routes.py +0 -0
  425. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/webui/test_package_api.py +0 -0
  426. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/webui/test_registry.py +0 -0
  427. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/webui/test_server.py +0 -0
  428. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/webui/test_sessions.py +0 -0
  429. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/webui/test_workflow_streaming.py +0 -0
  430. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/workflow/recovery_worker.py +0 -0
  431. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/workflow/test_agent_step_imports.py +0 -0
  432. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/workflow/test_checkpoint.py +0 -0
  433. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/workflow/test_subworkflow_step.py +0 -0
  434. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/workflow/test_workflow_agent.py +0 -0
  435. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/workflow/test_workflow_class.py +0 -0
  436. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/workflow/test_workflow_models.py +0 -0
  437. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/workflow/test_workflow_reliability.py +0 -0
  438. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/workflow/test_workflow_runner.py +0 -0
  439. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/workflow/test_workflow_schema.py +0 -0
  440. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/workflow/test_workflow_steps.py +0 -0
  441. {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/workflow/test_workflow_visualizer.py +0 -0
@@ -6,6 +6,24 @@ The format follows Keep a Changelog principles and semantic versioning.
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [0.57.0] - 2026-10-27
10
+
11
+ ### Changed
12
+
13
+ - **Breaking:** manual pricing is now `pricing_override=` on all chat and embedding clients and
14
+ factories (formerly `model_pricing=`). `model` is the invocation target, `pricing_model` selects
15
+ catalog pricing, and `pricing_override` supplies explicit rates (spec 0078).
16
+ - Pricing lookup is shared across providers: exact, normalized (Bedrock inference-profile IDs),
17
+ boundary-compatible prefix/family, then default, with warnings for approximate and default matches.
18
+ `eu.cohere.embed-v4:0` now resolves to the Cohere v4 entry.
19
+
20
+ ### Fixed
21
+
22
+ - Anthropic and Bedrock Anthropic cost estimates no longer go negative with prompt caching.
23
+ Anthropic's `input_tokens` excludes cache reads, so `Usage.tokens_input` now includes
24
+ `cache_read_input_tokens` and `cache_creation_input_tokens` (normal and streaming), and
25
+ `tokens_cached` stays a subset of it. Cache-write tokens are billed at the plain input rate.
26
+
9
27
  ## [0.56.0] - 2026-10-23
10
28
 
11
29
  ### Added
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: agentbyte
3
- Version: 0.56.0
3
+ Version: 0.57.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
@@ -90,7 +90,7 @@ Description-Content-Type: text/markdown
90
90
 
91
91
  Agentbyte is an observability-first agentic AI framework for building and studying multiagent systems with a learning-first, implementation-oriented workflow.
92
92
 
93
- Current release: **0.56.0**
93
+ Current release: **0.57.0**
94
94
 
95
95
  ## Building an Agent
96
96
 
@@ -323,6 +323,10 @@ Examples are grouped by capability. Start with the folder indexes for
323
323
  [optimization](examples/optim/), [evaluation](examples/eval/), or
324
324
  [orchestration](examples/orchestration/).
325
325
 
326
+ For deployment aliases and custom rates across chat and embedding providers, see the
327
+ [pricing guide](docs/design-guide/01-agent_topics/topic_model_client.md#catalog-pricing-and-deployment-aliases)
328
+ and [offline pricing example](examples/llm/pricing_resolution.py).
329
+
326
330
  ## Installation
327
331
 
328
332
  Python requirement: **3.11+**
@@ -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.56.0**
5
+ Current release: **0.57.0**
6
6
 
7
7
  ## Building an Agent
8
8
 
@@ -235,6 +235,10 @@ Examples are grouped by capability. Start with the folder indexes for
235
235
  [optimization](examples/optim/), [evaluation](examples/eval/), or
236
236
  [orchestration](examples/orchestration/).
237
237
 
238
+ For deployment aliases and custom rates across chat and embedding providers, see the
239
+ [pricing guide](docs/design-guide/01-agent_topics/topic_model_client.md#catalog-pricing-and-deployment-aliases)
240
+ and [offline pricing example](examples/llm/pricing_resolution.py).
241
+
238
242
  ## Installation
239
243
 
240
244
  Python requirement: **3.11+**
@@ -0,0 +1,2 @@
1
+ __version__ = "0.57.0"
2
+ VERSION = __version__
@@ -126,7 +126,7 @@ class AnthropicConversionMixin:
126
126
  except Exception as e:
127
127
  logger.warning(f"Failed to parse structured output: {e}. Using raw content.")
128
128
 
129
- cached_tokens = response.usage.cache_read_input_tokens or 0
129
+ input_tokens, cached_tokens = self._normalize_input_usage(response.usage)
130
130
 
131
131
  return ChatCompletionResult(
132
132
  message=AssistantMessage(
@@ -137,12 +137,12 @@ class AnthropicConversionMixin:
137
137
  usage=Usage(
138
138
  duration_ms=duration_ms,
139
139
  llm_calls=1,
140
- tokens_input=response.usage.input_tokens,
140
+ tokens_input=input_tokens,
141
141
  tokens_output=response.usage.output_tokens,
142
142
  tokens_cached=cached_tokens,
143
143
  tool_calls=len(tool_calls) if tool_calls else 0,
144
144
  cost_estimate=self._estimate_cost(
145
- response.usage.input_tokens,
145
+ input_tokens,
146
146
  response.usage.output_tokens,
147
147
  cached_tokens,
148
148
  ),
@@ -214,6 +214,9 @@ class AnthropicConversionMixin:
214
214
  )
215
215
 
216
216
  model_name = self.model
217
+ # Input/cache counts arrive on message_start; message_delta may repeat
218
+ # them (cumulative) or omit them, so keep the latest non-empty values.
219
+ input_tokens, cached_tokens = 0, 0
217
220
  # Anthropic's input_json_delta streams raw JSON-fragment text per
218
221
  # content-block index, the same accumulator shape openai/chat.py uses
219
222
  # for streamed tool-call arguments.
@@ -222,6 +225,9 @@ class AnthropicConversionMixin:
222
225
  async for event in stream:
223
226
  if event.type == "message_start":
224
227
  model_name = event.message.model
228
+ start_usage = getattr(event.message, "usage", None)
229
+ if start_usage is not None:
230
+ input_tokens, cached_tokens = self._normalize_input_usage(start_usage)
225
231
  continue
226
232
 
227
233
  if event.type == "content_block_start":
@@ -266,9 +272,10 @@ class AnthropicConversionMixin:
266
272
 
267
273
  if event.type == "message_delta":
268
274
  duration_ms = int((time.perf_counter() - start_time) * 1000)
269
- input_tokens = event.usage.input_tokens or 0
275
+ delta_input, delta_cached = self._normalize_input_usage(event.usage)
276
+ if delta_input:
277
+ input_tokens, cached_tokens = delta_input, delta_cached
270
278
  output_tokens = event.usage.output_tokens or 0
271
- cached_tokens = event.usage.cache_read_input_tokens or 0
272
279
  usage = Usage(
273
280
  duration_ms=duration_ms,
274
281
  llm_calls=1,
@@ -287,6 +294,20 @@ class AnthropicConversionMixin:
287
294
  )
288
295
  continue
289
296
 
297
+ @staticmethod
298
+ def _normalize_input_usage(usage: Any) -> tuple[int, int]:
299
+ """Return `(total_input_tokens, cached_tokens)` from an Anthropic usage block.
300
+
301
+ Anthropic reports `input_tokens` as only the uncached tokens after the
302
+ last cache breakpoint; cache reads and cache writes are separate
303
+ counters. AgentByte's `Usage.tokens_input` is the total prompt size with
304
+ `tokens_cached` as a subset, so fold the counters together here.
305
+ """
306
+ uncached = getattr(usage, "input_tokens", None) or 0
307
+ cache_read = getattr(usage, "cache_read_input_tokens", None) or 0
308
+ cache_write = getattr(usage, "cache_creation_input_tokens", None) or 0
309
+ return uncached + cache_read + cache_write, cache_read
310
+
290
311
  @staticmethod
291
312
  def _extract_system(messages: List[Message]) -> Optional[str]:
292
313
  """Pull SystemMessages out as Anthropic's top-level `system` param."""
@@ -10,7 +10,7 @@ from agentbyte.component import Component
10
10
  from agentbyte.middleware.base import ClientMiddleware
11
11
 
12
12
  from ..base import BaseChatCompletionClient, BaseChatCompletionClientConfig
13
- from ..pricing import PricingRegistry
13
+ from ..pricing import PricingModelName, PricingRegistry, validate_pricing_model
14
14
  from ..retry_policy import RetryMixin, RetryPolicy
15
15
  from ..types import ModelPricing
16
16
  from ._conversion import AnthropicConversionMixin
@@ -19,7 +19,7 @@ from ._conversion import AnthropicConversionMixin
19
19
  class AnthropicChatCompletionClientConfig(BaseChatCompletionClientConfig):
20
20
  """Configuration for AnthropicChatCompletionClient serialization."""
21
21
 
22
- pricing_model: str | None = None
22
+ pricing_model: PricingModelName | None = None
23
23
  retry_policy: RetryPolicy = RetryPolicy()
24
24
  key_env_var: str = "ANTHROPIC_API_KEY"
25
25
 
@@ -41,7 +41,7 @@ class AnthropicChatCompletionClient(
41
41
  model: str,
42
42
  client: AsyncAnthropic,
43
43
  config: Optional[Dict[str, Any]] = None,
44
- model_pricing: Optional[ModelPricing] = None,
44
+ pricing_override: Optional[ModelPricing] = None,
45
45
  max_retries: int = 3,
46
46
  initial_retry_delay: float = 1.0,
47
47
  max_retry_delay: float = 60.0,
@@ -50,8 +50,8 @@ class AnthropicChatCompletionClient(
50
50
  pricing_model: str | None = None,
51
51
  ):
52
52
  super().__init__(model, client, config, middlewares=middlewares)
53
- self.model_pricing = model_pricing
54
- self.pricing_model = pricing_model
53
+ self.pricing_override = pricing_override
54
+ self.pricing_model = validate_pricing_model(pricing_model)
55
55
  if retry_policy is not None:
56
56
  self.retry_policy = retry_policy
57
57
  else:
@@ -80,7 +80,7 @@ class AnthropicChatCompletionClient(
80
80
  api_key: Optional[str] = None,
81
81
  base_url: Optional[str] = None,
82
82
  config: Optional[Dict[str, Any]] = None,
83
- model_pricing: Optional[ModelPricing] = None,
83
+ pricing_override: Optional[ModelPricing] = None,
84
84
  max_retries: int = 3,
85
85
  initial_retry_delay: float = 1.0,
86
86
  max_retry_delay: float = 60.0,
@@ -112,7 +112,7 @@ class AnthropicChatCompletionClient(
112
112
  model=model,
113
113
  client=anthropic_client,
114
114
  config=config,
115
- model_pricing=model_pricing,
115
+ pricing_override=pricing_override,
116
116
  pricing_model=pricing_model,
117
117
  max_retries=max_retries,
118
118
  initial_retry_delay=initial_retry_delay,
@@ -128,10 +128,12 @@ class AnthropicChatCompletionClient(
128
128
  cached_tokens: int = 0,
129
129
  ) -> float:
130
130
  """Estimate cost from token usage, discounting cached prompt tokens."""
131
- if self.model_pricing is not None:
132
- pricing = self.model_pricing
131
+ if self.pricing_override is not None:
132
+ pricing = self.pricing_override
133
133
  else:
134
- pricing = PricingRegistry.resolve_anthropic_chat_pricing(self.pricing_model or self.model)
134
+ pricing = PricingRegistry.resolve_anthropic_chat_pricing(
135
+ self.pricing_model if self.pricing_model is not None else self.model
136
+ )
135
137
  return pricing.calculate_cost(input_tokens, output_tokens, cached_tokens)
136
138
 
137
139
  def _to_config(self) -> AnthropicChatCompletionClientConfig:
@@ -24,7 +24,7 @@ from ..base import (
24
24
  AuthenticationError,
25
25
  InvalidRequestError,
26
26
  )
27
- from ..pricing import PricingRegistry
27
+ from ..pricing import PricingModelName, PricingRegistry, validate_pricing_model
28
28
  from ..retry_policy import RetryMixin, RetryPolicy
29
29
  from ..types import (
30
30
  ChatCompletionChunk,
@@ -43,7 +43,7 @@ class AzureOpenAIChatCompletionClientConfig(BaseChatCompletionClientConfig):
43
43
  """Configuration for AzureOpenAIChatCompletionClient serialization."""
44
44
 
45
45
  retry_policy: RetryPolicy = RetryPolicy()
46
- pricing_model: str | None = None
46
+ pricing_model: PricingModelName | None = None
47
47
  key_env_var: str = "AZURE_OPENAI_API_KEY"
48
48
  deployment_env_var: str = "AZURE_OPENAI_CHAT_DEPLOYMENT_NAME"
49
49
  api_version_env_var: str = "AZURE_OPENAI_API_VERSION"
@@ -65,7 +65,7 @@ class AzureOpenAIChatCompletionClient(
65
65
  model: str,
66
66
  client: AsyncAzureOpenAI,
67
67
  config: Optional[Dict[str, Any]] = None,
68
- model_pricing: Optional[ModelPricing] = None,
68
+ pricing_override: Optional[ModelPricing] = None,
69
69
  pricing_model: str | None = None,
70
70
  max_retries: int = 3,
71
71
  initial_retry_delay: float = 1.0,
@@ -74,8 +74,8 @@ class AzureOpenAIChatCompletionClient(
74
74
  middlewares: Optional[List[ClientMiddleware]] = None,
75
75
  ):
76
76
  super().__init__(model, client, config, middlewares=middlewares)
77
- self.model_pricing = model_pricing
78
- self.pricing_model = pricing_model
77
+ self.pricing_override = pricing_override
78
+ self.pricing_model = validate_pricing_model(pricing_model)
79
79
  if retry_policy is not None:
80
80
  self.retry_policy = retry_policy
81
81
  else:
@@ -106,7 +106,7 @@ class AzureOpenAIChatCompletionClient(
106
106
  api_key: Optional[str] = None,
107
107
  service_settings: Optional[Any] = None,
108
108
  config: Optional[Dict[str, Any]] = None,
109
- model_pricing: Optional[ModelPricing] = None,
109
+ pricing_override: Optional[ModelPricing] = None,
110
110
  max_retries: int = 3,
111
111
  initial_retry_delay: float = 1.0,
112
112
  max_retry_delay: float = 60.0,
@@ -156,7 +156,7 @@ class AzureOpenAIChatCompletionClient(
156
156
  model=resolved_model,
157
157
  client=azure_client,
158
158
  config=config,
159
- model_pricing=model_pricing,
159
+ pricing_override=pricing_override,
160
160
  pricing_model=pricing_model,
161
161
  max_retries=max_retries,
162
162
  initial_retry_delay=initial_retry_delay,
@@ -174,7 +174,7 @@ class AzureOpenAIChatCompletionClient(
174
174
  service_settings: Optional[Any] = None,
175
175
  scope: str = "https://cognitiveservices.azure.com/.default",
176
176
  config: Optional[Dict[str, Any]] = None,
177
- model_pricing: Optional[ModelPricing] = None,
177
+ pricing_override: Optional[ModelPricing] = None,
178
178
  max_retries: int = 3,
179
179
  initial_retry_delay: float = 1.0,
180
180
  max_retry_delay: float = 60.0,
@@ -225,7 +225,7 @@ class AzureOpenAIChatCompletionClient(
225
225
  model=resolved_model,
226
226
  client=azure_client,
227
227
  config=config,
228
- model_pricing=model_pricing,
228
+ pricing_override=pricing_override,
229
229
  pricing_model=pricing_model,
230
230
  max_retries=max_retries,
231
231
  initial_retry_delay=initial_retry_delay,
@@ -244,7 +244,7 @@ class AzureOpenAIChatCompletionClient(
244
244
  principal_settings: Optional[Any] = None,
245
245
  scope: Optional[str] = None,
246
246
  config: Optional[Dict[str, Any]] = None,
247
- model_pricing: Optional[ModelPricing] = None,
247
+ pricing_override: Optional[ModelPricing] = None,
248
248
  max_retries: int = 3,
249
249
  initial_retry_delay: float = 1.0,
250
250
  max_retry_delay: float = 60.0,
@@ -304,7 +304,7 @@ class AzureOpenAIChatCompletionClient(
304
304
  model=resolved_model,
305
305
  client=azure_client,
306
306
  config=config,
307
- model_pricing=model_pricing,
307
+ pricing_override=pricing_override,
308
308
  pricing_model=pricing_model,
309
309
  max_retries=max_retries,
310
310
  initial_retry_delay=initial_retry_delay,
@@ -322,7 +322,7 @@ class AzureOpenAIChatCompletionClient(
322
322
  api_version: Optional[str] = None,
323
323
  service_settings: Optional[Any] = None,
324
324
  config: Optional[Dict[str, Any]] = None,
325
- model_pricing: Optional[ModelPricing] = None,
325
+ pricing_override: Optional[ModelPricing] = None,
326
326
  max_retries: int = 3,
327
327
  initial_retry_delay: float = 1.0,
328
328
  max_retry_delay: float = 60.0,
@@ -365,7 +365,7 @@ class AzureOpenAIChatCompletionClient(
365
365
  model=resolved_model,
366
366
  client=azure_client,
367
367
  config=config,
368
- model_pricing=model_pricing,
368
+ pricing_override=pricing_override,
369
369
  pricing_model=pricing_model,
370
370
  max_retries=max_retries,
371
371
  initial_retry_delay=initial_retry_delay,
@@ -662,11 +662,11 @@ class AzureOpenAIChatCompletionClient(
662
662
  cached_tokens: int = 0,
663
663
  ) -> float:
664
664
  """Estimate cost from token usage, discounting cached prompt tokens."""
665
- if self.model_pricing is not None:
666
- pricing = self.model_pricing
665
+ if self.pricing_override is not None:
666
+ pricing = self.pricing_override
667
667
  else:
668
668
  pricing = PricingRegistry.resolve_azure_chat_pricing(
669
- self.pricing_model or self.model
669
+ self.pricing_model if self.pricing_model is not None else self.model
670
670
  )
671
671
  return pricing.calculate_cost(prompt_tokens, completion_tokens, cached_tokens)
672
672
 
@@ -15,7 +15,7 @@ from agentbyte.middleware.base import ClientMiddleware
15
15
  from .._retry_observability import build_retry_summary
16
16
  from ..base import AuthenticationError, InvalidRequestError, RateLimitError
17
17
  from ..embeddings_base import BaseEmbeddingClient, BaseEmbeddingClientConfig
18
- from ..pricing import PricingRegistry
18
+ from ..pricing import PricingModelName, PricingRegistry, validate_pricing_model
19
19
  from ..retry_policy import RetryMixin, RetryPolicy
20
20
  from ..types import EmbeddingResult, ModelClientError, ModelPricing, Usage
21
21
 
@@ -26,7 +26,7 @@ class AzureOpenAIEmbeddingClientConfig(BaseEmbeddingClientConfig):
26
26
  """Configuration for AzureOpenAIEmbeddingClient serialization."""
27
27
 
28
28
  retry_policy: RetryPolicy = RetryPolicy()
29
- pricing_model: str | None = None
29
+ pricing_model: PricingModelName | None = None
30
30
  key_env_var: str = "AZURE_OPENAI_API_KEY"
31
31
  deployment_env_var: str = "AZURE_OPENAI_EMBEDDING_DEPLOYMENT_NAME"
32
32
  api_version_env_var: str = "AZURE_OPENAI_API_VERSION"
@@ -48,7 +48,7 @@ class AzureOpenAIEmbeddingClient(
48
48
  model: str,
49
49
  client: AsyncAzureOpenAI,
50
50
  config: Optional[Dict[str, Any]] = None,
51
- model_pricing: Optional[ModelPricing] = None,
51
+ pricing_override: Optional[ModelPricing] = None,
52
52
  pricing_model: str | None = None,
53
53
  max_retries: int = 3,
54
54
  initial_retry_delay: float = 1.0,
@@ -57,8 +57,8 @@ class AzureOpenAIEmbeddingClient(
57
57
  middlewares: Optional[List[ClientMiddleware]] = None,
58
58
  ):
59
59
  super().__init__(model, client, config, middlewares=middlewares)
60
- self.model_pricing = model_pricing
61
- self.pricing_model = pricing_model
60
+ self.pricing_override = pricing_override
61
+ self.pricing_model = validate_pricing_model(pricing_model)
62
62
  if retry_policy is not None:
63
63
  self.retry_policy = retry_policy
64
64
  else:
@@ -90,7 +90,7 @@ class AzureOpenAIEmbeddingClient(
90
90
  service_settings: Optional[Any] = None,
91
91
  config: Optional[Dict[str, Any]] = None,
92
92
 
93
- model_pricing: Optional[ModelPricing] = None,
93
+ pricing_override: Optional[ModelPricing] = None,
94
94
  max_retries: int = 3,
95
95
  initial_retry_delay: float = 1.0,
96
96
  max_retry_delay: float = 60.0,
@@ -140,7 +140,7 @@ class AzureOpenAIEmbeddingClient(
140
140
  model=resolved_model,
141
141
  client=azure_client,
142
142
  config=config,
143
- model_pricing=model_pricing,
143
+ pricing_override=pricing_override,
144
144
  pricing_model=pricing_model,
145
145
  max_retries=max_retries,
146
146
  initial_retry_delay=initial_retry_delay,
@@ -159,7 +159,7 @@ class AzureOpenAIEmbeddingClient(
159
159
  scope: str = "https://cognitiveservices.azure.com/.default",
160
160
  config: Optional[Dict[str, Any]] = None,
161
161
 
162
- model_pricing: Optional[ModelPricing] = None,
162
+ pricing_override: Optional[ModelPricing] = None,
163
163
  max_retries: int = 3,
164
164
  initial_retry_delay: float = 1.0,
165
165
  max_retry_delay: float = 60.0,
@@ -210,7 +210,7 @@ class AzureOpenAIEmbeddingClient(
210
210
  model=resolved_model,
211
211
  client=azure_client,
212
212
  config=config,
213
- model_pricing=model_pricing,
213
+ pricing_override=pricing_override,
214
214
  pricing_model=pricing_model,
215
215
  max_retries=max_retries,
216
216
  initial_retry_delay=initial_retry_delay,
@@ -230,7 +230,7 @@ class AzureOpenAIEmbeddingClient(
230
230
  scope: Optional[str] = None,
231
231
  config: Optional[Dict[str, Any]] = None,
232
232
 
233
- model_pricing: Optional[ModelPricing] = None,
233
+ pricing_override: Optional[ModelPricing] = None,
234
234
  max_retries: int = 3,
235
235
  initial_retry_delay: float = 1.0,
236
236
  max_retry_delay: float = 60.0,
@@ -290,7 +290,7 @@ class AzureOpenAIEmbeddingClient(
290
290
  model=resolved_model,
291
291
  client=azure_client,
292
292
  config=config,
293
- model_pricing=model_pricing,
293
+ pricing_override=pricing_override,
294
294
  pricing_model=pricing_model,
295
295
  max_retries=max_retries,
296
296
  initial_retry_delay=initial_retry_delay,
@@ -309,7 +309,7 @@ class AzureOpenAIEmbeddingClient(
309
309
  service_settings: Optional[Any] = None,
310
310
  config: Optional[Dict[str, Any]] = None,
311
311
 
312
- model_pricing: Optional[ModelPricing] = None,
312
+ pricing_override: Optional[ModelPricing] = None,
313
313
  max_retries: int = 3,
314
314
  initial_retry_delay: float = 1.0,
315
315
  max_retry_delay: float = 60.0,
@@ -352,7 +352,7 @@ class AzureOpenAIEmbeddingClient(
352
352
  model=resolved_model,
353
353
  client=azure_client,
354
354
  config=config,
355
- model_pricing=model_pricing,
355
+ pricing_override=pricing_override,
356
356
  pricing_model=pricing_model,
357
357
  max_retries=max_retries,
358
358
  initial_retry_delay=initial_retry_delay,
@@ -468,11 +468,11 @@ class AzureOpenAIEmbeddingClient(
468
468
 
469
469
  def _estimate_cost(self, prompt_tokens: int, completion_tokens: int = 0) -> float:
470
470
  """Estimate embedding call cost from token usage."""
471
- if self.model_pricing is not None:
472
- pricing = self.model_pricing
471
+ if self.pricing_override is not None:
472
+ pricing = self.pricing_override
473
473
  else:
474
474
  pricing = PricingRegistry.resolve_azure_embedding_pricing(
475
- self.pricing_model or self.model
475
+ self.pricing_model if self.pricing_model is not None else self.model
476
476
  )
477
477
  return pricing.calculate_cost(prompt_tokens, completion_tokens)
478
478
 
@@ -1,6 +1,5 @@
1
1
  """Anthropic Claude chat client transported through AWS Bedrock."""
2
2
 
3
- import re
4
3
  from typing import Any, Dict, List, Optional
5
4
 
6
5
  from anthropic import AsyncAnthropicBedrock
@@ -9,25 +8,17 @@ from agentbyte.component import Component
9
8
  from agentbyte.middleware.base import ClientMiddleware
10
9
  from agentbyte.llm.anthropic._conversion import AnthropicConversionMixin
11
10
  from agentbyte.llm.base import BaseChatCompletionClient, BaseChatCompletionClientConfig
12
- from agentbyte.llm.pricing import PricingRegistry
11
+ from agentbyte.llm.pricing import PricingModelName, PricingRegistry, validate_pricing_model
13
12
  from agentbyte.llm.retry_policy import RetryMixin, RetryPolicy
14
13
  from agentbyte.llm.types import ModelPricing
15
14
 
16
15
  from .settings import BedrockSettings
17
16
 
18
- # Bedrock model/inference-profile IDs carry an optional region prefix ("eu."/
19
- # "global."), an "anthropic." prefix, and a trailing "-vN:0" suffix (e.g.
20
- # "eu.anthropic.claude-opus-5-5-v1:0"), none of which the shared Anthropic
21
- # pricing table's longest-prefix match understands. Strip all three before
22
- # resolving.
23
- _BEDROCK_ID_REGION_PREFIX_RE = re.compile(r"^[a-z]+\.(?=anthropic\.)")
24
- _BEDROCK_ID_SUFFIX_RE = re.compile(r"-v\d+:\d+$")
25
-
26
17
 
27
18
  class AnthropicBedrockChatCompletionClientConfig(BaseChatCompletionClientConfig):
28
19
  """Serializable Bedrock Claude client configuration."""
29
20
 
30
- pricing_model: str | None = None
21
+ pricing_model: PricingModelName | None = None
31
22
  retry_policy: RetryPolicy = RetryPolicy()
32
23
  region_env_var: str = "AWS_REGION"
33
24
  profile_env_var: str = "AWS_PROFILE"
@@ -64,7 +55,7 @@ class AnthropicBedrockChatCompletionClient(
64
55
  model: str,
65
56
  client: AsyncAnthropicBedrock,
66
57
  config: Optional[Dict[str, Any]] = None,
67
- model_pricing: Optional[ModelPricing] = None,
58
+ pricing_override: Optional[ModelPricing] = None,
68
59
  max_retries: int = 3,
69
60
  initial_retry_delay: float = 1.0,
70
61
  max_retry_delay: float = 60.0,
@@ -73,8 +64,8 @@ class AnthropicBedrockChatCompletionClient(
73
64
  pricing_model: str | None = None,
74
65
  ):
75
66
  super().__init__(model, client, config, middlewares=middlewares)
76
- self.model_pricing = model_pricing
77
- self.pricing_model = pricing_model
67
+ self.pricing_override = pricing_override
68
+ self.pricing_model = validate_pricing_model(pricing_model)
78
69
  if retry_policy is not None:
79
70
  self.retry_policy = retry_policy
80
71
  else:
@@ -103,7 +94,7 @@ class AnthropicBedrockChatCompletionClient(
103
94
  region: Optional[str] = None,
104
95
  profile: Optional[str] = None,
105
96
  config: Optional[Dict[str, Any]] = None,
106
- model_pricing: Optional[ModelPricing] = None,
97
+ pricing_override: Optional[ModelPricing] = None,
107
98
  max_retries: int = 3,
108
99
  initial_retry_delay: float = 1.0,
109
100
  max_retry_delay: float = 60.0,
@@ -130,7 +121,7 @@ class AnthropicBedrockChatCompletionClient(
130
121
  model=model,
131
122
  client=bedrock_client,
132
123
  config=config,
133
- model_pricing=model_pricing,
124
+ pricing_override=pricing_override,
134
125
  pricing_model=pricing_model,
135
126
  max_retries=max_retries,
136
127
  initial_retry_delay=initial_retry_delay,
@@ -146,16 +137,12 @@ class AnthropicBedrockChatCompletionClient(
146
137
  cached_tokens: int = 0,
147
138
  ) -> float:
148
139
  """Estimate cost, normalizing the Bedrock model ID before resolving."""
149
- if self.model_pricing is not None:
150
- pricing = self.model_pricing
151
- elif self.pricing_model is not None:
152
- pricing = PricingRegistry.resolve_anthropic_chat_pricing(self.pricing_model)
140
+ if self.pricing_override is not None:
141
+ pricing = self.pricing_override
153
142
  else:
154
- stripped_region = _BEDROCK_ID_REGION_PREFIX_RE.sub("", self.model)
155
- normalized_model = _BEDROCK_ID_SUFFIX_RE.sub(
156
- "", stripped_region.removeprefix("anthropic.")
143
+ pricing = PricingRegistry.resolve_anthropic_chat_pricing(
144
+ self.pricing_model if self.pricing_model is not None else self.model
157
145
  )
158
- pricing = PricingRegistry.resolve_anthropic_chat_pricing(normalized_model)
159
146
  return pricing.calculate_cost(input_tokens, output_tokens, cached_tokens)
160
147
 
161
148
  def _to_config(self) -> AnthropicBedrockChatCompletionClientConfig:
@@ -10,7 +10,7 @@ from agentbyte.llm._retry_observability import build_retry_summary
10
10
  from agentbyte.middleware.base import ClientMiddleware
11
11
  from agentbyte.llm.base import AuthenticationError, InvalidRequestError, RateLimitError
12
12
  from agentbyte.llm.embeddings_base import BaseEmbeddingClient, BaseEmbeddingClientConfig
13
- from agentbyte.llm.pricing import PricingRegistry
13
+ from agentbyte.llm.pricing import PricingModelName, PricingRegistry, validate_pricing_model
14
14
  from agentbyte.llm.retry_policy import RetryMixin, RetryPolicy
15
15
  from agentbyte.llm.types import EmbeddingResult, ModelClientError, ModelPricing, Usage
16
16
 
@@ -32,7 +32,7 @@ class CohereTruncate(StrEnum):
32
32
 
33
33
 
34
34
  class CohereBedrockEmbeddingClientConfig(BaseEmbeddingClientConfig):
35
- pricing_model: str | None = None
35
+ pricing_model: PricingModelName | None = None
36
36
  retry_policy: RetryPolicy = RetryPolicy()
37
37
  region_env_var: str = "AWS_REGION"
38
38
  profile_env_var: str = "AWS_PROFILE"
@@ -48,25 +48,25 @@ class CohereBedrockEmbeddingClient(
48
48
  component_provider_override = "agentbyte.llm.CohereBedrockEmbeddingClient"
49
49
 
50
50
  def __init__(self, model: str, client: Any | None = None, config: Optional[Dict[str, Any]] = None,
51
- model_pricing: Optional[ModelPricing] = None, max_retries: int = 3,
51
+ pricing_override: Optional[ModelPricing] = None, max_retries: int = 3,
52
52
  initial_retry_delay: float = 1.0, max_retry_delay: float = 60.0,
53
53
  retry_policy: Optional[RetryPolicy] = None, region: str | None = None,
54
54
  profile: str | None = None, middlewares: Optional[List[ClientMiddleware]] = None,
55
55
  pricing_model: str | None = None):
56
56
  super().__init__(model, client, config, middlewares=middlewares)
57
- self.pricing_model = pricing_model
58
- self.model_pricing, self.region, self.profile = model_pricing, region, profile
57
+ self.pricing_model = validate_pricing_model(pricing_model)
58
+ self.pricing_override, self.region, self.profile = pricing_override, region, profile
59
59
  self.retry_policy = retry_policy or RetryPolicy(max_retries=max_retries, initial_retry_delay=initial_retry_delay, max_retry_delay=max_retry_delay)
60
60
 
61
61
  @classmethod
62
62
  def from_region(cls, model: str, region: str | None = None, profile: str | None = None,
63
- config: Optional[Dict[str, Any]] = None, model_pricing: Optional[ModelPricing] = None,
63
+ config: Optional[Dict[str, Any]] = None, pricing_override: Optional[ModelPricing] = None,
64
64
  max_retries: int = 3, initial_retry_delay: float = 1.0, max_retry_delay: float = 60.0,
65
65
  retry_policy: Optional[RetryPolicy] = None,
66
66
  middlewares: Optional[List[ClientMiddleware]] = None,
67
67
  pricing_model: str | None = None) -> "CohereBedrockEmbeddingClient":
68
68
  settings = BedrockSettings()
69
- return cls(model, config=config, model_pricing=model_pricing, pricing_model=pricing_model, max_retries=max_retries,
69
+ return cls(model, config=config, pricing_override=pricing_override, pricing_model=pricing_model, max_retries=max_retries,
70
70
  initial_retry_delay=initial_retry_delay, max_retry_delay=max_retry_delay, retry_policy=retry_policy,
71
71
  region=region or settings.region, profile=profile or settings.profile, middlewares=middlewares)
72
72
 
@@ -118,7 +118,12 @@ class CohereBedrockEmbeddingClient(
118
118
  return await client.invoke_model(modelId=self.model, body=json.dumps(request), contentType="application/json", accept="application/json")
119
119
 
120
120
  def _estimate_cost(self, tokens: int) -> float:
121
- pricing = self.model_pricing or PricingRegistry.resolve_cohere_bedrock_embedding_pricing(self.pricing_model or self.model)
121
+ if self.pricing_override is not None:
122
+ pricing = self.pricing_override
123
+ else:
124
+ pricing = PricingRegistry.resolve_cohere_bedrock_embedding_pricing(
125
+ self.pricing_model if self.pricing_model is not None else self.model
126
+ )
122
127
  return pricing.calculate_cost(tokens, 0)
123
128
 
124
129
  def _to_config(self) -> CohereBedrockEmbeddingClientConfig: