agentbyte 0.55.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 (440) hide show
  1. {agentbyte-0.55.0 → agentbyte-0.57.0}/.gitignore +4 -0
  2. {agentbyte-0.55.0 → agentbyte-0.57.0}/CHANGELOG.md +40 -0
  3. {agentbyte-0.55.0 → agentbyte-0.57.0}/PKG-INFO +6 -2
  4. {agentbyte-0.55.0 → agentbyte-0.57.0}/README.md +5 -1
  5. agentbyte-0.57.0/src/agentbyte/__about__.py +2 -0
  6. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/llm/anthropic/_conversion.py +26 -5
  7. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/llm/anthropic/chat.py +17 -8
  8. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/llm/azure/chat.py +16 -16
  9. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/llm/azure/embedding.py +16 -16
  10. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/llm/bedrock/anthropic_chat.py +16 -20
  11. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/llm/bedrock/cohere_embedding.py +19 -10
  12. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/llm/openai/chat.py +17 -8
  13. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/llm/openai/embedding.py +17 -8
  14. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/llm/pricing.py +153 -39
  15. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/llm/test_anthropic_bedrock_client.py +2 -2
  16. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/llm/test_anthropic_client.py +67 -5
  17. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/llm/test_azure_client.py +4 -4
  18. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/llm/test_azure_embedding_client.py +2 -2
  19. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/llm/test_cohere_bedrock_embedding_client.py +76 -17
  20. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/llm/test_openai_client.py +4 -4
  21. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/llm/test_openai_embedding_client.py +2 -2
  22. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/llm/test_pricing.py +1 -1
  23. agentbyte-0.57.0/tests/llm/test_pricing_model.py +454 -0
  24. agentbyte-0.57.0/tests/llm/test_pricing_resolution.py +171 -0
  25. agentbyte-0.55.0/src/agentbyte/__about__.py +0 -2
  26. {agentbyte-0.55.0 → agentbyte-0.57.0}/LICENSE +0 -0
  27. {agentbyte-0.55.0 → agentbyte-0.57.0}/pyproject.toml +0 -0
  28. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/__init__.py +0 -0
  29. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/_optional.py +0 -0
  30. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/a2a/__init__.py +0 -0
  31. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/a2a/app.py +0 -0
  32. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/a2a/distributed_context.py +0 -0
  33. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/a2a/executor.py +0 -0
  34. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/a2a/tool.py +0 -0
  35. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/agents/__init__.py +0 -0
  36. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/agents/agent.py +0 -0
  37. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/agents/agent_as_tool.py +0 -0
  38. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/agents/base.py +0 -0
  39. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/agents/types.py +0 -0
  40. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/cancellation_token.py +0 -0
  41. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/catalog.py +0 -0
  42. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/cli/__init__.py +0 -0
  43. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/cli/__main__.py +0 -0
  44. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/cli/eval_commands.py +0 -0
  45. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/cli/history_args.py +0 -0
  46. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/cli/loading.py +0 -0
  47. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/cli/main.py +0 -0
  48. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/cli/optim_commands.py +0 -0
  49. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/cli/report_output.py +0 -0
  50. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/cli/serve_commands.py +0 -0
  51. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/compaction/__init__.py +0 -0
  52. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/compaction/counters.py +0 -0
  53. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/compaction/errors.py +0 -0
  54. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/compaction/grouping.py +0 -0
  55. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/compaction/strategies.py +0 -0
  56. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/component.py +0 -0
  57. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/context.py +0 -0
  58. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/context_providers/__init__.py +0 -0
  59. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/context_providers/base.py +0 -0
  60. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/context_providers/skill_tools.py +0 -0
  61. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/context_providers/skills.py +0 -0
  62. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/dataset/__init__.py +0 -0
  63. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/dataset/_aiosqlite.py +0 -0
  64. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/dataset/base.py +0 -0
  65. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/dataset/config.py +0 -0
  66. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/dataset/importer.py +0 -0
  67. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/dataset/json.py +0 -0
  68. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/dataset/loader.py +0 -0
  69. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/dataset/publish.py +0 -0
  70. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/dataset/publish_config.py +0 -0
  71. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/dataset/publishers.py +0 -0
  72. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/dataset/s3.py +0 -0
  73. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/dataset/sources.py +0 -0
  74. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/dataset/sqlite.py +0 -0
  75. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/dataset/sqlite_db.py +0 -0
  76. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/dataset/write_config.py +0 -0
  77. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/dataset/writers.py +0 -0
  78. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/entity.py +0 -0
  79. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/eval/__init__.py +0 -0
  80. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/eval/base.py +0 -0
  81. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/eval/checks/__init__.py +0 -0
  82. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/eval/checks/decorator.py +0 -0
  83. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/eval/checks/keyword.py +0 -0
  84. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/eval/checks/local.py +0 -0
  85. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/eval/checks/process.py +0 -0
  86. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/eval/checks/tool.py +0 -0
  87. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/eval/checks/types.py +0 -0
  88. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/eval/comparison.py +0 -0
  89. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/eval/eval_dataset.py +0 -0
  90. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/eval/history/__init__.py +0 -0
  91. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/eval/history/_writer_lock.py +0 -0
  92. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/eval/history/config.py +0 -0
  93. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/eval/history/conformance.py +0 -0
  94. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/eval/history/errors.py +0 -0
  95. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/eval/history/models.py +0 -0
  96. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/eval/history/recorder.py +0 -0
  97. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/eval/history/sql.py +0 -0
  98. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/eval/history/sqlite.py +0 -0
  99. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/eval/history/store.py +0 -0
  100. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/eval/history/transitions.py +0 -0
  101. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/eval/judges/__init__.py +0 -0
  102. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/eval/judges/base.py +0 -0
  103. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/eval/judges/composite.py +0 -0
  104. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/eval/judges/llm.py +0 -0
  105. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/eval/judges/pairwise.py +0 -0
  106. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/eval/judges/reference.py +0 -0
  107. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/eval/judges/trajectory.py +0 -0
  108. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/eval/judges/validation.py +0 -0
  109. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/eval/pairwise.py +0 -0
  110. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/eval/report.py +0 -0
  111. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/eval/runner.py +0 -0
  112. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/eval/splitting.py +0 -0
  113. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/eval/targets/__init__.py +0 -0
  114. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/eval/targets/agent.py +0 -0
  115. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/eval/targets/model.py +0 -0
  116. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/eval/targets/multi_turn.py +0 -0
  117. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/eval/targets/orchestrator.py +0 -0
  118. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/eval/targets/runtime.py +0 -0
  119. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/eval/targets/workflow.py +0 -0
  120. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/eval/types.py +0 -0
  121. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/eval/workbench/__init__.py +0 -0
  122. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/eval/workbench/benchmark.py +0 -0
  123. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/eval/workbench/compare.py +0 -0
  124. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/eval/workbench/coordinator.py +0 -0
  125. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/eval/workbench/jobs.py +0 -0
  126. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/eval/workbench/smoke.py +0 -0
  127. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/eval/workbench/smoke_tasks.json +0 -0
  128. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/eval/workbench/suite.py +0 -0
  129. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/eval/workbench/verdict.py +0 -0
  130. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/execution_trace/__init__.py +0 -0
  131. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/execution_trace/collector.py +0 -0
  132. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/execution_trace/models.py +0 -0
  133. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/llm/__init__.py +0 -0
  134. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/llm/_retry_observability.py +0 -0
  135. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/llm/anthropic/__init__.py +0 -0
  136. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/llm/anthropic/settings.py +0 -0
  137. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/llm/auth.py +0 -0
  138. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/llm/azure/__init__.py +0 -0
  139. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/llm/azure/auth.py +0 -0
  140. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/llm/azure/settings.py +0 -0
  141. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/llm/azure_openai.py +0 -0
  142. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/llm/azure_openai_embedding.py +0 -0
  143. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/llm/base.py +0 -0
  144. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/llm/bedrock/__init__.py +0 -0
  145. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/llm/bedrock/_client.py +0 -0
  146. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/llm/bedrock/settings.py +0 -0
  147. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/llm/embedding_batcher.py +0 -0
  148. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/llm/embeddings_base.py +0 -0
  149. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/llm/openai/__init__.py +0 -0
  150. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/llm/openai/settings.py +0 -0
  151. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/llm/openai_embedding.py +0 -0
  152. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/llm/retry_policy.py +0 -0
  153. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/llm/settings.py +0 -0
  154. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/llm/types.py +0 -0
  155. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/logger.py +0 -0
  156. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/memory/__init__.py +0 -0
  157. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/memory/base.py +0 -0
  158. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/messages.py +0 -0
  159. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/middleware/__init__.py +0 -0
  160. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/middleware/base.py +0 -0
  161. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/middleware/otel.py +0 -0
  162. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/middleware/retry.py +0 -0
  163. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/middleware/sql_usage.py +0 -0
  164. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/middleware/usage_logger.py +0 -0
  165. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/notebook.py +0 -0
  166. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/optim/__init__.py +0 -0
  167. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/optim/base.py +0 -0
  168. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/optim/binding.py +0 -0
  169. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/optim/config.py +0 -0
  170. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/optim/gepa.py +0 -0
  171. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/optim/job.py +0 -0
  172. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/optim/mipro.py +0 -0
  173. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/optim/pareto.py +0 -0
  174. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/optim/reflective.py +0 -0
  175. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/optim/report.py +0 -0
  176. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/optim/spec.py +0 -0
  177. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/optim/trace.py +0 -0
  178. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/orchestration/__init__.py +0 -0
  179. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/orchestration/ai.py +0 -0
  180. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/orchestration/base.py +0 -0
  181. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/orchestration/handoff.py +0 -0
  182. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/orchestration/plan.py +0 -0
  183. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/orchestration/policies.py +0 -0
  184. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/orchestration/round_robin.py +0 -0
  185. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/presets/__init__.py +0 -0
  186. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/presets/agents.py +0 -0
  187. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/presets/benchmark.py +0 -0
  188. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/presets/capitals.py +0 -0
  189. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/presets/clients.py +0 -0
  190. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/presets/instruction_registry.py +0 -0
  191. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/presets/instructions/orchestrator.yaml +0 -0
  192. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/presets/instructions/query_rewriter.yaml +0 -0
  193. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/presets/instructions/researcher.yaml +0 -0
  194. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/presets/instructions/reviewer.yaml +0 -0
  195. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/presets/instructions/writer.yaml +0 -0
  196. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/presets/orchestration.py +0 -0
  197. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/presets/skills/capitals-format/SKILL.md +0 -0
  198. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/presets/skills/contracts-analyst/SKILL.md +0 -0
  199. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/presets/skills/hr-analyst/SKILL.md +0 -0
  200. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/presets/skills/hr-analyst/resources/departments.md +0 -0
  201. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/presets/skills/hr-analyst/resources/employees.md +0 -0
  202. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/presets/skills/hr-analyst/resources/payroll.md +0 -0
  203. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/presets/streaming.py +0 -0
  204. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/presets/workflow.py +0 -0
  205. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/session_store.py +0 -0
  206. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/skills/__init__.py +0 -0
  207. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/skills/base.py +0 -0
  208. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/skills/resources.py +0 -0
  209. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/skills/scripts.py +0 -0
  210. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/skills/sources.py +0 -0
  211. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/skills/validation.py +0 -0
  212. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/termination/__init__.py +0 -0
  213. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/termination/base.py +0 -0
  214. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/termination/cancellation.py +0 -0
  215. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/termination/composite.py +0 -0
  216. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/termination/consecutive_agent.py +0 -0
  217. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/termination/external.py +0 -0
  218. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/termination/function_call.py +0 -0
  219. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/termination/handoff.py +0 -0
  220. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/termination/max_message.py +0 -0
  221. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/termination/predicate.py +0 -0
  222. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/termination/source.py +0 -0
  223. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/termination/text_mention.py +0 -0
  224. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/termination/timeout.py +0 -0
  225. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/termination/token_usage.py +0 -0
  226. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/tools/__init__.py +0 -0
  227. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/tools/base.py +0 -0
  228. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/tools/coding_tools.py +0 -0
  229. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/tools/core_tools.py +0 -0
  230. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/tools/decorator.py +0 -0
  231. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/tools/mcp/__init__.py +0 -0
  232. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/tools/mcp/client.py +0 -0
  233. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/tools/mcp/config.py +0 -0
  234. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/tools/mcp/errors.py +0 -0
  235. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/tools/mcp/tool.py +0 -0
  236. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/tools/mcp/transports.py +0 -0
  237. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/tools/memory_tool.py +0 -0
  238. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/tools/research_tools.py +0 -0
  239. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/types.py +0 -0
  240. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/webui/__init__.py +0 -0
  241. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/webui/discovery.py +0 -0
  242. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/webui/eval_routes.py +0 -0
  243. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/webui/execution.py +0 -0
  244. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/webui/mcp/__init__.py +0 -0
  245. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/webui/mcp/servers/__init__.py +0 -0
  246. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/webui/mcp/servers/apps_server.py +0 -0
  247. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/webui/mcp/servers/auth_server.py +0 -0
  248. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/webui/mcp/servers/basic_server.py +0 -0
  249. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/webui/mcp/servers/mrtr_server.py +0 -0
  250. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/webui/mcp/servers/notify_server.py +0 -0
  251. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/webui/mcp_playground.py +0 -0
  252. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/webui/mcp_routes.py +0 -0
  253. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/webui/models.py +0 -0
  254. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/webui/registry.py +0 -0
  255. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/webui/server.py +0 -0
  256. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/webui/session_store.py +0 -0
  257. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/webui/sessions.py +0 -0
  258. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/webui/ui/assets/index-BreogZut.js +0 -0
  259. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/webui/ui/assets/index-ptxe7GHs.css +0 -0
  260. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/webui/ui/index.html +0 -0
  261. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/webui/ui/vite.svg +0 -0
  262. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/workflow/__init__.py +0 -0
  263. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/workflow/agent.py +0 -0
  264. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/workflow/core/__init__.py +0 -0
  265. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/workflow/core/_structure_hash.py +0 -0
  266. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/workflow/core/checkpoint.py +0 -0
  267. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/workflow/core/models.py +0 -0
  268. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/workflow/core/runner.py +0 -0
  269. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/workflow/core/workflow.py +0 -0
  270. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/workflow/defaults.py +0 -0
  271. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/workflow/errors.py +0 -0
  272. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/workflow/loader.py +0 -0
  273. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/workflow/schema.py +0 -0
  274. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/workflow/schema_utils.py +0 -0
  275. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/workflow/sqlite_checkpoint.py +0 -0
  276. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/workflow/steps/__init__.py +0 -0
  277. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/workflow/steps/agent.py +0 -0
  278. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/workflow/steps/echo.py +0 -0
  279. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/workflow/steps/function.py +0 -0
  280. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/workflow/steps/http.py +0 -0
  281. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/workflow/steps/step.py +0 -0
  282. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/workflow/steps/subworkflow.py +0 -0
  283. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/workflow/steps/transform.py +0 -0
  284. {agentbyte-0.55.0 → agentbyte-0.57.0}/src/agentbyte/workflow/visualizer.py +0 -0
  285. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/a2a/a2a_helpers.py +0 -0
  286. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/a2a/test_a2a_adapters.py +0 -0
  287. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/a2a/test_distributed_context.py +0 -0
  288. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/agents/test_agent_as_tool.py +0 -0
  289. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/agents/test_agent_basic.py +0 -0
  290. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/agents/test_agent_client_middleware_overlap.py +0 -0
  291. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/agents/test_agent_context_providers.py +0 -0
  292. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/agents/test_agent_error_response.py +0 -0
  293. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/agents/test_agent_event_types.py +0 -0
  294. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/agents/test_agent_memory_integration.py +0 -0
  295. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/agents/test_agent_middleware_integration.py +0 -0
  296. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/agents/test_agent_response_accessors.py +0 -0
  297. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/agents/test_agent_retry_middleware.py +0 -0
  298. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/agents/test_agent_stop_at_tools.py +0 -0
  299. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/agents/test_agent_stream_events.py +0 -0
  300. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/agents/test_tool_approval.py +0 -0
  301. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/agents/test_tool_batch_resolution.py +0 -0
  302. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/agents/test_tool_metadata.py +0 -0
  303. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/cli/test_eval_benchmark_commands.py +0 -0
  304. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/cli/test_loading.py +0 -0
  305. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/cli/test_registry_check.py +0 -0
  306. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/cli/test_report_output.py +0 -0
  307. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/cli/test_serve_command.py +0 -0
  308. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/compaction/test_compaction.py +0 -0
  309. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/conftest.py +0 -0
  310. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/context_providers/__init__.py +0 -0
  311. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/context_providers/test_skill_tools.py +0 -0
  312. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/context_providers/test_skills_provider.py +0 -0
  313. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/dataset/fake_s3.py +0 -0
  314. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/dataset/test_dataset_exit.py +0 -0
  315. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/dataset/test_loader.py +0 -0
  316. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/dataset/test_multi_table.py +0 -0
  317. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/dataset/test_publish.py +0 -0
  318. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/dataset/test_sqlite_db.py +0 -0
  319. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/eval/test_dimension_scores.py +0 -0
  320. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/eval/test_eval_benchmarks.py +0 -0
  321. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/eval/test_eval_dataset.py +0 -0
  322. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/eval/test_eval_history.py +0 -0
  323. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/eval/test_eval_history_backends.py +0 -0
  324. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/eval/test_eval_jobs.py +0 -0
  325. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/eval/test_eval_workbench.py +0 -0
  326. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/eval/test_execution_trajectories.py +0 -0
  327. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/eval/test_history_config.py +0 -0
  328. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/eval/test_multi_turn.py +0 -0
  329. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/eval/test_pairwise.py +0 -0
  330. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/eval/test_phase1_runner_and_targets.py +0 -0
  331. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/eval/test_phase2_checks_and_reports.py +0 -0
  332. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/eval/test_run_comparison.py +0 -0
  333. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/eval/test_score_integrity.py +0 -0
  334. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/eval/test_splitting.py +0 -0
  335. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/eval/test_types_and_judges.py +0 -0
  336. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/llm/test_client_middleware.py +0 -0
  337. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/llm/test_embedding_batcher.py +0 -0
  338. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/llm/test_llm_types.py +0 -0
  339. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/llm/test_retry_observability.py +0 -0
  340. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/llm/test_retry_policy_api.py +0 -0
  341. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/llm/test_retryable_error_substrings.py +0 -0
  342. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/memory/test_memory.py +0 -0
  343. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/middleware/test_context_compaction.py +0 -0
  344. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/middleware/test_deduplicate_tool_result.py +0 -0
  345. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/middleware/test_middleware_chain.py +0 -0
  346. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/middleware/test_otel.py +0 -0
  347. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/middleware/test_retry_middleware.py +0 -0
  348. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/middleware/test_sql_usage.py +0 -0
  349. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/middleware/test_usage_logger.py +0 -0
  350. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/optim/__init__.py +0 -0
  351. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/optim/fakes.py +0 -0
  352. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/optim/test_base.py +0 -0
  353. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/optim/test_base_integration.py +0 -0
  354. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/optim/test_binding.py +0 -0
  355. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/optim/test_config.py +0 -0
  356. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/optim/test_description_tunable.py +0 -0
  357. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/optim/test_gepa.py +0 -0
  358. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/optim/test_mipro.py +0 -0
  359. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/optim/test_orchestrator_optim.py +0 -0
  360. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/optim/test_pareto.py +0 -0
  361. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/optim/test_reflective.py +0 -0
  362. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/optim/test_report.py +0 -0
  363. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/optim/test_score_integrity.py +0 -0
  364. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/optim/test_spec.py +0 -0
  365. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/optim/test_trace.py +0 -0
  366. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/orchestration/test_ai_orchestrator.py +0 -0
  367. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/orchestration/test_base_orchestrator.py +0 -0
  368. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/orchestration/test_handoff_orchestrator.py +0 -0
  369. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/orchestration/test_history_tool_call_pairing.py +0 -0
  370. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/orchestration/test_orchestration_usage_breakdown.py +0 -0
  371. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/orchestration/test_orchestrator_agent_contract.py +0 -0
  372. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/orchestration/test_orchestrator_finalization.py +0 -0
  373. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/orchestration/test_orchestrator_member_events.py +0 -0
  374. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/orchestration/test_orchestrator_otel.py +0 -0
  375. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/orchestration/test_orchestrator_synthesis.py +0 -0
  376. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/orchestration/test_plan_orchestrator.py +0 -0
  377. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/orchestration/test_round_robin.py +0 -0
  378. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/presets/test_agents.py +0 -0
  379. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/presets/test_benchmark.py +0 -0
  380. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/presets/test_capitals.py +0 -0
  381. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/presets/test_clients.py +0 -0
  382. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/presets/test_instruction_registry.py +0 -0
  383. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/presets/test_orchestration.py +0 -0
  384. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/presets/test_streaming.py +0 -0
  385. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/presets/test_workflow.py +0 -0
  386. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/skills/__init__.py +0 -0
  387. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/skills/test_base.py +0 -0
  388. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/skills/test_resources.py +0 -0
  389. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/skills/test_scripts.py +0 -0
  390. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/skills/test_sources.py +0 -0
  391. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/termination/test_base.py +0 -0
  392. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/termination/test_cancellation.py +0 -0
  393. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/termination/test_composite.py +0 -0
  394. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/termination/test_consecutive_agent.py +0 -0
  395. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/termination/test_external.py +0 -0
  396. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/termination/test_function_call.py +0 -0
  397. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/termination/test_handoff.py +0 -0
  398. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/termination/test_max_message.py +0 -0
  399. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/termination/test_predicate.py +0 -0
  400. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/termination/test_source.py +0 -0
  401. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/termination/test_text_mention.py +0 -0
  402. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/termination/test_timeout.py +0 -0
  403. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/termination/test_token_usage.py +0 -0
  404. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/test_cancellation_token.py +0 -0
  405. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/test_context.py +0 -0
  406. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/test_logger.py +0 -0
  407. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/test_messages.py +0 -0
  408. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/test_option_enums.py +0 -0
  409. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/test_optional_extras.py +0 -0
  410. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/test_package_api.py +0 -0
  411. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/test_session_store.py +0 -0
  412. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/test_types.py +0 -0
  413. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/tools/fixtures/mcp_stdio_server.py +0 -0
  414. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/tools/test_coding_tools.py +0 -0
  415. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/tools/test_mcp_tools.py +0 -0
  416. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/tools/test_memory_tool.py +0 -0
  417. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/tools/test_research_tools.py +0 -0
  418. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/tools/test_tools.py +0 -0
  419. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/webui/__init__.py +0 -0
  420. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/webui/helpers.py +0 -0
  421. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/webui/test_eval_routes.py +0 -0
  422. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/webui/test_execution.py +0 -0
  423. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/webui/test_mcp_routes.py +0 -0
  424. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/webui/test_package_api.py +0 -0
  425. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/webui/test_registry.py +0 -0
  426. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/webui/test_server.py +0 -0
  427. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/webui/test_sessions.py +0 -0
  428. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/webui/test_workflow_streaming.py +0 -0
  429. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/workflow/recovery_worker.py +0 -0
  430. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/workflow/test_agent_step_imports.py +0 -0
  431. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/workflow/test_checkpoint.py +0 -0
  432. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/workflow/test_subworkflow_step.py +0 -0
  433. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/workflow/test_workflow_agent.py +0 -0
  434. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/workflow/test_workflow_class.py +0 -0
  435. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/workflow/test_workflow_models.py +0 -0
  436. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/workflow/test_workflow_reliability.py +0 -0
  437. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/workflow/test_workflow_runner.py +0 -0
  438. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/workflow/test_workflow_schema.py +0 -0
  439. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/workflow/test_workflow_steps.py +0 -0
  440. {agentbyte-0.55.0 → agentbyte-0.57.0}/tests/workflow/test_workflow_visualizer.py +0 -0
@@ -84,3 +84,7 @@ optim-reports/
84
84
 
85
85
  # marimo local session cache
86
86
  __marimo__/
87
+
88
+ # Local Claude worktrees and machine-specific permissions
89
+ .claude/worktrees/
90
+ .claude/settings.local.json
@@ -6,6 +6,46 @@ 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
+
27
+ ## [0.56.0] - 2026-10-23
28
+
29
+ ### Added
30
+
31
+ - `pricing_model=` on OpenAI chat/embedding, Anthropic direct/Bedrock chat, and Cohere Bedrock
32
+ embedding constructors and factories, matching Azure pricing aliases. Component configs preserve
33
+ the alias; manual `model_pricing` takes precedence while transport model IDs remain unchanged.
34
+ - Standard short-context catalog entries for `gpt-6.1-sol`, `gpt-6-astra`, and `gpt-6-luna`,
35
+ including cached-input and 30-minute cache-write metadata.
36
+
37
+ ### Changed
38
+
39
+ - Consolidated 19 AgentByte coding skills into one topic router with references loaded on demand;
40
+ removed the WebUI smoke-test skill and repaired migration-guide links.
41
+ - Added proposed spec 0077 for OpenAI models on Bedrock over SigV4 and updated the spec index.
42
+
43
+ ### Fixed
44
+
45
+ - Exact Claude Sonnet 5.5, Fable 5.1, Mythos 5, and Mythos 5.1 pricing prevents sibling fallback.
46
+ Claude 5-series rates now include cache reads and 5-minute cache-write metadata, including
47
+ Haiku 5.5 below the 100K prompt threshold.
48
+
9
49
  ## [0.55.0] - 2026-10-12
10
50
 
11
51
  ### Added
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: agentbyte
3
- Version: 0.55.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.55.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.55.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,6 +19,7 @@ from ._conversion import AnthropicConversionMixin
19
19
  class AnthropicChatCompletionClientConfig(BaseChatCompletionClientConfig):
20
20
  """Configuration for AnthropicChatCompletionClient serialization."""
21
21
 
22
+ pricing_model: PricingModelName | None = None
22
23
  retry_policy: RetryPolicy = RetryPolicy()
23
24
  key_env_var: str = "ANTHROPIC_API_KEY"
24
25
 
@@ -40,15 +41,17 @@ class AnthropicChatCompletionClient(
40
41
  model: str,
41
42
  client: AsyncAnthropic,
42
43
  config: Optional[Dict[str, Any]] = None,
43
- model_pricing: Optional[ModelPricing] = None,
44
+ pricing_override: Optional[ModelPricing] = None,
44
45
  max_retries: int = 3,
45
46
  initial_retry_delay: float = 1.0,
46
47
  max_retry_delay: float = 60.0,
47
48
  retry_policy: Optional[RetryPolicy] = None,
48
49
  middlewares: Optional[List[ClientMiddleware]] = None,
50
+ pricing_model: str | None = None,
49
51
  ):
50
52
  super().__init__(model, client, config, middlewares=middlewares)
51
- self.model_pricing = model_pricing
53
+ self.pricing_override = pricing_override
54
+ self.pricing_model = validate_pricing_model(pricing_model)
52
55
  if retry_policy is not None:
53
56
  self.retry_policy = retry_policy
54
57
  else:
@@ -77,12 +80,13 @@ class AnthropicChatCompletionClient(
77
80
  api_key: Optional[str] = None,
78
81
  base_url: Optional[str] = None,
79
82
  config: Optional[Dict[str, Any]] = None,
80
- model_pricing: Optional[ModelPricing] = None,
83
+ pricing_override: Optional[ModelPricing] = None,
81
84
  max_retries: int = 3,
82
85
  initial_retry_delay: float = 1.0,
83
86
  max_retry_delay: float = 60.0,
84
87
  retry_policy: Optional[RetryPolicy] = None,
85
88
  middlewares: Optional[List[ClientMiddleware]] = None,
89
+ pricing_model: str | None = None,
86
90
  ) -> "AnthropicChatCompletionClient":
87
91
  """Create a client from an explicit or env-backed API key."""
88
92
  from pydantic import ValidationError
@@ -108,7 +112,8 @@ class AnthropicChatCompletionClient(
108
112
  model=model,
109
113
  client=anthropic_client,
110
114
  config=config,
111
- model_pricing=model_pricing,
115
+ pricing_override=pricing_override,
116
+ pricing_model=pricing_model,
112
117
  max_retries=max_retries,
113
118
  initial_retry_delay=initial_retry_delay,
114
119
  max_retry_delay=max_retry_delay,
@@ -123,16 +128,19 @@ class AnthropicChatCompletionClient(
123
128
  cached_tokens: int = 0,
124
129
  ) -> float:
125
130
  """Estimate cost from token usage, discounting cached prompt tokens."""
126
- if self.model_pricing is not None:
127
- pricing = self.model_pricing
131
+ if self.pricing_override is not None:
132
+ pricing = self.pricing_override
128
133
  else:
129
- pricing = PricingRegistry.resolve_anthropic_chat_pricing(self.model)
134
+ pricing = PricingRegistry.resolve_anthropic_chat_pricing(
135
+ self.pricing_model if self.pricing_model is not None else self.model
136
+ )
130
137
  return pricing.calculate_cost(input_tokens, output_tokens, cached_tokens)
131
138
 
132
139
  def _to_config(self) -> AnthropicChatCompletionClientConfig:
133
140
  """Serialize to config without persisting secrets."""
134
141
  return AnthropicChatCompletionClientConfig(
135
142
  model=self.model,
143
+ pricing_model=self.pricing_model,
136
144
  config=self.config.copy(),
137
145
  retry_policy=self.retry_policy,
138
146
  key_env_var=getattr(self, "_key_env_var", "ANTHROPIC_API_KEY"),
@@ -153,6 +161,7 @@ class AnthropicChatCompletionClient(
153
161
  )
154
162
  instance = cls.from_api_key(
155
163
  model=config.model,
164
+ pricing_model=config.pricing_model,
156
165
  api_key=api_key,
157
166
  config=config.config or None,
158
167
  retry_policy=config.retry_policy,
@@ -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,24 +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
 
21
+ pricing_model: PricingModelName | None = None
30
22
  retry_policy: RetryPolicy = RetryPolicy()
31
23
  region_env_var: str = "AWS_REGION"
32
24
  profile_env_var: str = "AWS_PROFILE"
@@ -63,15 +55,17 @@ class AnthropicBedrockChatCompletionClient(
63
55
  model: str,
64
56
  client: AsyncAnthropicBedrock,
65
57
  config: Optional[Dict[str, Any]] = None,
66
- model_pricing: Optional[ModelPricing] = None,
58
+ pricing_override: Optional[ModelPricing] = None,
67
59
  max_retries: int = 3,
68
60
  initial_retry_delay: float = 1.0,
69
61
  max_retry_delay: float = 60.0,
70
62
  retry_policy: Optional[RetryPolicy] = None,
71
63
  middlewares: Optional[List[ClientMiddleware]] = None,
64
+ pricing_model: str | None = None,
72
65
  ):
73
66
  super().__init__(model, client, config, middlewares=middlewares)
74
- self.model_pricing = model_pricing
67
+ self.pricing_override = pricing_override
68
+ self.pricing_model = validate_pricing_model(pricing_model)
75
69
  if retry_policy is not None:
76
70
  self.retry_policy = retry_policy
77
71
  else:
@@ -100,12 +94,13 @@ class AnthropicBedrockChatCompletionClient(
100
94
  region: Optional[str] = None,
101
95
  profile: Optional[str] = None,
102
96
  config: Optional[Dict[str, Any]] = None,
103
- model_pricing: Optional[ModelPricing] = None,
97
+ pricing_override: Optional[ModelPricing] = None,
104
98
  max_retries: int = 3,
105
99
  initial_retry_delay: float = 1.0,
106
100
  max_retry_delay: float = 60.0,
107
101
  retry_policy: Optional[RetryPolicy] = None,
108
102
  middlewares: Optional[List[ClientMiddleware]] = None,
103
+ pricing_model: str | None = None,
109
104
  ) -> "AnthropicBedrockChatCompletionClient":
110
105
  """Create a client from an explicit or env-backed AWS region/profile.
111
106
 
@@ -126,7 +121,8 @@ class AnthropicBedrockChatCompletionClient(
126
121
  model=model,
127
122
  client=bedrock_client,
128
123
  config=config,
129
- model_pricing=model_pricing,
124
+ pricing_override=pricing_override,
125
+ pricing_model=pricing_model,
130
126
  max_retries=max_retries,
131
127
  initial_retry_delay=initial_retry_delay,
132
128
  max_retry_delay=max_retry_delay,
@@ -141,20 +137,19 @@ class AnthropicBedrockChatCompletionClient(
141
137
  cached_tokens: int = 0,
142
138
  ) -> float:
143
139
  """Estimate cost, normalizing the Bedrock model ID before resolving."""
144
- if self.model_pricing is not None:
145
- pricing = self.model_pricing
140
+ if self.pricing_override is not None:
141
+ pricing = self.pricing_override
146
142
  else:
147
- stripped_region = _BEDROCK_ID_REGION_PREFIX_RE.sub("", self.model)
148
- normalized_model = _BEDROCK_ID_SUFFIX_RE.sub(
149
- "", 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
150
145
  )
151
- pricing = PricingRegistry.resolve_anthropic_chat_pricing(normalized_model)
152
146
  return pricing.calculate_cost(input_tokens, output_tokens, cached_tokens)
153
147
 
154
148
  def _to_config(self) -> AnthropicBedrockChatCompletionClientConfig:
155
149
  """Serialize to config without persisting secrets (region/profile stay in env)."""
156
150
  return AnthropicBedrockChatCompletionClientConfig(
157
151
  model=self.model,
152
+ pricing_model=self.pricing_model,
158
153
  config=self.config.copy(),
159
154
  retry_policy=self.retry_policy,
160
155
  )
@@ -166,6 +161,7 @@ class AnthropicBedrockChatCompletionClient(
166
161
  """Reconstruct client from saved config, re-resolving region/profile from env."""
167
162
  return cls.from_region(
168
163
  model=config.model,
164
+ pricing_model=config.pricing_model,
169
165
  config=config.config or None,
170
166
  retry_policy=config.retry_policy,
171
167
  )