agentbyte 0.55.0__tar.gz → 0.56.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 (439) hide show
  1. {agentbyte-0.55.0 → agentbyte-0.56.0}/.gitignore +4 -0
  2. {agentbyte-0.55.0 → agentbyte-0.56.0}/CHANGELOG.md +22 -0
  3. {agentbyte-0.55.0 → agentbyte-0.56.0}/PKG-INFO +2 -2
  4. {agentbyte-0.55.0 → agentbyte-0.56.0}/README.md +1 -1
  5. agentbyte-0.56.0/src/agentbyte/__about__.py +2 -0
  6. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/llm/anthropic/chat.py +8 -1
  7. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/llm/bedrock/anthropic_chat.py +9 -0
  8. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/llm/bedrock/cohere_embedding.py +10 -6
  9. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/llm/openai/chat.py +8 -1
  10. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/llm/openai/embedding.py +8 -1
  11. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/llm/pricing.py +77 -7
  12. agentbyte-0.56.0/tests/llm/test_pricing_model.py +197 -0
  13. agentbyte-0.55.0/src/agentbyte/__about__.py +0 -2
  14. {agentbyte-0.55.0 → agentbyte-0.56.0}/LICENSE +0 -0
  15. {agentbyte-0.55.0 → agentbyte-0.56.0}/pyproject.toml +0 -0
  16. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/__init__.py +0 -0
  17. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/_optional.py +0 -0
  18. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/a2a/__init__.py +0 -0
  19. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/a2a/app.py +0 -0
  20. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/a2a/distributed_context.py +0 -0
  21. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/a2a/executor.py +0 -0
  22. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/a2a/tool.py +0 -0
  23. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/agents/__init__.py +0 -0
  24. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/agents/agent.py +0 -0
  25. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/agents/agent_as_tool.py +0 -0
  26. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/agents/base.py +0 -0
  27. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/agents/types.py +0 -0
  28. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/cancellation_token.py +0 -0
  29. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/catalog.py +0 -0
  30. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/cli/__init__.py +0 -0
  31. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/cli/__main__.py +0 -0
  32. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/cli/eval_commands.py +0 -0
  33. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/cli/history_args.py +0 -0
  34. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/cli/loading.py +0 -0
  35. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/cli/main.py +0 -0
  36. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/cli/optim_commands.py +0 -0
  37. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/cli/report_output.py +0 -0
  38. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/cli/serve_commands.py +0 -0
  39. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/compaction/__init__.py +0 -0
  40. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/compaction/counters.py +0 -0
  41. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/compaction/errors.py +0 -0
  42. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/compaction/grouping.py +0 -0
  43. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/compaction/strategies.py +0 -0
  44. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/component.py +0 -0
  45. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/context.py +0 -0
  46. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/context_providers/__init__.py +0 -0
  47. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/context_providers/base.py +0 -0
  48. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/context_providers/skill_tools.py +0 -0
  49. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/context_providers/skills.py +0 -0
  50. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/dataset/__init__.py +0 -0
  51. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/dataset/_aiosqlite.py +0 -0
  52. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/dataset/base.py +0 -0
  53. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/dataset/config.py +0 -0
  54. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/dataset/importer.py +0 -0
  55. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/dataset/json.py +0 -0
  56. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/dataset/loader.py +0 -0
  57. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/dataset/publish.py +0 -0
  58. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/dataset/publish_config.py +0 -0
  59. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/dataset/publishers.py +0 -0
  60. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/dataset/s3.py +0 -0
  61. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/dataset/sources.py +0 -0
  62. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/dataset/sqlite.py +0 -0
  63. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/dataset/sqlite_db.py +0 -0
  64. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/dataset/write_config.py +0 -0
  65. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/dataset/writers.py +0 -0
  66. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/entity.py +0 -0
  67. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/eval/__init__.py +0 -0
  68. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/eval/base.py +0 -0
  69. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/eval/checks/__init__.py +0 -0
  70. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/eval/checks/decorator.py +0 -0
  71. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/eval/checks/keyword.py +0 -0
  72. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/eval/checks/local.py +0 -0
  73. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/eval/checks/process.py +0 -0
  74. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/eval/checks/tool.py +0 -0
  75. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/eval/checks/types.py +0 -0
  76. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/eval/comparison.py +0 -0
  77. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/eval/eval_dataset.py +0 -0
  78. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/eval/history/__init__.py +0 -0
  79. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/eval/history/_writer_lock.py +0 -0
  80. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/eval/history/config.py +0 -0
  81. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/eval/history/conformance.py +0 -0
  82. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/eval/history/errors.py +0 -0
  83. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/eval/history/models.py +0 -0
  84. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/eval/history/recorder.py +0 -0
  85. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/eval/history/sql.py +0 -0
  86. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/eval/history/sqlite.py +0 -0
  87. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/eval/history/store.py +0 -0
  88. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/eval/history/transitions.py +0 -0
  89. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/eval/judges/__init__.py +0 -0
  90. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/eval/judges/base.py +0 -0
  91. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/eval/judges/composite.py +0 -0
  92. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/eval/judges/llm.py +0 -0
  93. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/eval/judges/pairwise.py +0 -0
  94. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/eval/judges/reference.py +0 -0
  95. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/eval/judges/trajectory.py +0 -0
  96. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/eval/judges/validation.py +0 -0
  97. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/eval/pairwise.py +0 -0
  98. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/eval/report.py +0 -0
  99. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/eval/runner.py +0 -0
  100. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/eval/splitting.py +0 -0
  101. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/eval/targets/__init__.py +0 -0
  102. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/eval/targets/agent.py +0 -0
  103. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/eval/targets/model.py +0 -0
  104. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/eval/targets/multi_turn.py +0 -0
  105. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/eval/targets/orchestrator.py +0 -0
  106. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/eval/targets/runtime.py +0 -0
  107. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/eval/targets/workflow.py +0 -0
  108. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/eval/types.py +0 -0
  109. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/eval/workbench/__init__.py +0 -0
  110. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/eval/workbench/benchmark.py +0 -0
  111. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/eval/workbench/compare.py +0 -0
  112. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/eval/workbench/coordinator.py +0 -0
  113. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/eval/workbench/jobs.py +0 -0
  114. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/eval/workbench/smoke.py +0 -0
  115. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/eval/workbench/smoke_tasks.json +0 -0
  116. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/eval/workbench/suite.py +0 -0
  117. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/eval/workbench/verdict.py +0 -0
  118. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/execution_trace/__init__.py +0 -0
  119. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/execution_trace/collector.py +0 -0
  120. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/execution_trace/models.py +0 -0
  121. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/llm/__init__.py +0 -0
  122. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/llm/_retry_observability.py +0 -0
  123. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/llm/anthropic/__init__.py +0 -0
  124. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/llm/anthropic/_conversion.py +0 -0
  125. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/llm/anthropic/settings.py +0 -0
  126. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/llm/auth.py +0 -0
  127. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/llm/azure/__init__.py +0 -0
  128. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/llm/azure/auth.py +0 -0
  129. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/llm/azure/chat.py +0 -0
  130. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/llm/azure/embedding.py +0 -0
  131. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/llm/azure/settings.py +0 -0
  132. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/llm/azure_openai.py +0 -0
  133. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/llm/azure_openai_embedding.py +0 -0
  134. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/llm/base.py +0 -0
  135. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/llm/bedrock/__init__.py +0 -0
  136. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/llm/bedrock/_client.py +0 -0
  137. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/llm/bedrock/settings.py +0 -0
  138. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/llm/embedding_batcher.py +0 -0
  139. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/llm/embeddings_base.py +0 -0
  140. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/llm/openai/__init__.py +0 -0
  141. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/llm/openai/settings.py +0 -0
  142. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/llm/openai_embedding.py +0 -0
  143. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/llm/retry_policy.py +0 -0
  144. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/llm/settings.py +0 -0
  145. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/llm/types.py +0 -0
  146. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/logger.py +0 -0
  147. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/memory/__init__.py +0 -0
  148. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/memory/base.py +0 -0
  149. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/messages.py +0 -0
  150. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/middleware/__init__.py +0 -0
  151. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/middleware/base.py +0 -0
  152. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/middleware/otel.py +0 -0
  153. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/middleware/retry.py +0 -0
  154. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/middleware/sql_usage.py +0 -0
  155. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/middleware/usage_logger.py +0 -0
  156. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/notebook.py +0 -0
  157. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/optim/__init__.py +0 -0
  158. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/optim/base.py +0 -0
  159. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/optim/binding.py +0 -0
  160. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/optim/config.py +0 -0
  161. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/optim/gepa.py +0 -0
  162. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/optim/job.py +0 -0
  163. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/optim/mipro.py +0 -0
  164. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/optim/pareto.py +0 -0
  165. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/optim/reflective.py +0 -0
  166. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/optim/report.py +0 -0
  167. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/optim/spec.py +0 -0
  168. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/optim/trace.py +0 -0
  169. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/orchestration/__init__.py +0 -0
  170. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/orchestration/ai.py +0 -0
  171. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/orchestration/base.py +0 -0
  172. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/orchestration/handoff.py +0 -0
  173. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/orchestration/plan.py +0 -0
  174. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/orchestration/policies.py +0 -0
  175. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/orchestration/round_robin.py +0 -0
  176. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/presets/__init__.py +0 -0
  177. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/presets/agents.py +0 -0
  178. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/presets/benchmark.py +0 -0
  179. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/presets/capitals.py +0 -0
  180. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/presets/clients.py +0 -0
  181. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/presets/instruction_registry.py +0 -0
  182. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/presets/instructions/orchestrator.yaml +0 -0
  183. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/presets/instructions/query_rewriter.yaml +0 -0
  184. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/presets/instructions/researcher.yaml +0 -0
  185. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/presets/instructions/reviewer.yaml +0 -0
  186. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/presets/instructions/writer.yaml +0 -0
  187. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/presets/orchestration.py +0 -0
  188. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/presets/skills/capitals-format/SKILL.md +0 -0
  189. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/presets/skills/contracts-analyst/SKILL.md +0 -0
  190. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/presets/skills/hr-analyst/SKILL.md +0 -0
  191. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/presets/skills/hr-analyst/resources/departments.md +0 -0
  192. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/presets/skills/hr-analyst/resources/employees.md +0 -0
  193. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/presets/skills/hr-analyst/resources/payroll.md +0 -0
  194. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/presets/streaming.py +0 -0
  195. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/presets/workflow.py +0 -0
  196. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/session_store.py +0 -0
  197. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/skills/__init__.py +0 -0
  198. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/skills/base.py +0 -0
  199. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/skills/resources.py +0 -0
  200. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/skills/scripts.py +0 -0
  201. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/skills/sources.py +0 -0
  202. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/skills/validation.py +0 -0
  203. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/termination/__init__.py +0 -0
  204. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/termination/base.py +0 -0
  205. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/termination/cancellation.py +0 -0
  206. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/termination/composite.py +0 -0
  207. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/termination/consecutive_agent.py +0 -0
  208. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/termination/external.py +0 -0
  209. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/termination/function_call.py +0 -0
  210. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/termination/handoff.py +0 -0
  211. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/termination/max_message.py +0 -0
  212. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/termination/predicate.py +0 -0
  213. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/termination/source.py +0 -0
  214. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/termination/text_mention.py +0 -0
  215. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/termination/timeout.py +0 -0
  216. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/termination/token_usage.py +0 -0
  217. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/tools/__init__.py +0 -0
  218. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/tools/base.py +0 -0
  219. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/tools/coding_tools.py +0 -0
  220. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/tools/core_tools.py +0 -0
  221. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/tools/decorator.py +0 -0
  222. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/tools/mcp/__init__.py +0 -0
  223. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/tools/mcp/client.py +0 -0
  224. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/tools/mcp/config.py +0 -0
  225. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/tools/mcp/errors.py +0 -0
  226. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/tools/mcp/tool.py +0 -0
  227. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/tools/mcp/transports.py +0 -0
  228. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/tools/memory_tool.py +0 -0
  229. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/tools/research_tools.py +0 -0
  230. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/types.py +0 -0
  231. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/webui/__init__.py +0 -0
  232. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/webui/discovery.py +0 -0
  233. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/webui/eval_routes.py +0 -0
  234. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/webui/execution.py +0 -0
  235. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/webui/mcp/__init__.py +0 -0
  236. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/webui/mcp/servers/__init__.py +0 -0
  237. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/webui/mcp/servers/apps_server.py +0 -0
  238. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/webui/mcp/servers/auth_server.py +0 -0
  239. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/webui/mcp/servers/basic_server.py +0 -0
  240. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/webui/mcp/servers/mrtr_server.py +0 -0
  241. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/webui/mcp/servers/notify_server.py +0 -0
  242. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/webui/mcp_playground.py +0 -0
  243. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/webui/mcp_routes.py +0 -0
  244. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/webui/models.py +0 -0
  245. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/webui/registry.py +0 -0
  246. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/webui/server.py +0 -0
  247. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/webui/session_store.py +0 -0
  248. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/webui/sessions.py +0 -0
  249. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/webui/ui/assets/index-BreogZut.js +0 -0
  250. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/webui/ui/assets/index-ptxe7GHs.css +0 -0
  251. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/webui/ui/index.html +0 -0
  252. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/webui/ui/vite.svg +0 -0
  253. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/workflow/__init__.py +0 -0
  254. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/workflow/agent.py +0 -0
  255. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/workflow/core/__init__.py +0 -0
  256. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/workflow/core/_structure_hash.py +0 -0
  257. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/workflow/core/checkpoint.py +0 -0
  258. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/workflow/core/models.py +0 -0
  259. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/workflow/core/runner.py +0 -0
  260. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/workflow/core/workflow.py +0 -0
  261. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/workflow/defaults.py +0 -0
  262. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/workflow/errors.py +0 -0
  263. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/workflow/loader.py +0 -0
  264. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/workflow/schema.py +0 -0
  265. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/workflow/schema_utils.py +0 -0
  266. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/workflow/sqlite_checkpoint.py +0 -0
  267. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/workflow/steps/__init__.py +0 -0
  268. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/workflow/steps/agent.py +0 -0
  269. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/workflow/steps/echo.py +0 -0
  270. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/workflow/steps/function.py +0 -0
  271. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/workflow/steps/http.py +0 -0
  272. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/workflow/steps/step.py +0 -0
  273. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/workflow/steps/subworkflow.py +0 -0
  274. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/workflow/steps/transform.py +0 -0
  275. {agentbyte-0.55.0 → agentbyte-0.56.0}/src/agentbyte/workflow/visualizer.py +0 -0
  276. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/a2a/a2a_helpers.py +0 -0
  277. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/a2a/test_a2a_adapters.py +0 -0
  278. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/a2a/test_distributed_context.py +0 -0
  279. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/agents/test_agent_as_tool.py +0 -0
  280. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/agents/test_agent_basic.py +0 -0
  281. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/agents/test_agent_client_middleware_overlap.py +0 -0
  282. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/agents/test_agent_context_providers.py +0 -0
  283. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/agents/test_agent_error_response.py +0 -0
  284. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/agents/test_agent_event_types.py +0 -0
  285. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/agents/test_agent_memory_integration.py +0 -0
  286. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/agents/test_agent_middleware_integration.py +0 -0
  287. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/agents/test_agent_response_accessors.py +0 -0
  288. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/agents/test_agent_retry_middleware.py +0 -0
  289. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/agents/test_agent_stop_at_tools.py +0 -0
  290. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/agents/test_agent_stream_events.py +0 -0
  291. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/agents/test_tool_approval.py +0 -0
  292. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/agents/test_tool_batch_resolution.py +0 -0
  293. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/agents/test_tool_metadata.py +0 -0
  294. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/cli/test_eval_benchmark_commands.py +0 -0
  295. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/cli/test_loading.py +0 -0
  296. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/cli/test_registry_check.py +0 -0
  297. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/cli/test_report_output.py +0 -0
  298. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/cli/test_serve_command.py +0 -0
  299. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/compaction/test_compaction.py +0 -0
  300. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/conftest.py +0 -0
  301. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/context_providers/__init__.py +0 -0
  302. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/context_providers/test_skill_tools.py +0 -0
  303. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/context_providers/test_skills_provider.py +0 -0
  304. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/dataset/fake_s3.py +0 -0
  305. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/dataset/test_dataset_exit.py +0 -0
  306. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/dataset/test_loader.py +0 -0
  307. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/dataset/test_multi_table.py +0 -0
  308. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/dataset/test_publish.py +0 -0
  309. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/dataset/test_sqlite_db.py +0 -0
  310. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/eval/test_dimension_scores.py +0 -0
  311. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/eval/test_eval_benchmarks.py +0 -0
  312. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/eval/test_eval_dataset.py +0 -0
  313. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/eval/test_eval_history.py +0 -0
  314. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/eval/test_eval_history_backends.py +0 -0
  315. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/eval/test_eval_jobs.py +0 -0
  316. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/eval/test_eval_workbench.py +0 -0
  317. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/eval/test_execution_trajectories.py +0 -0
  318. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/eval/test_history_config.py +0 -0
  319. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/eval/test_multi_turn.py +0 -0
  320. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/eval/test_pairwise.py +0 -0
  321. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/eval/test_phase1_runner_and_targets.py +0 -0
  322. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/eval/test_phase2_checks_and_reports.py +0 -0
  323. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/eval/test_run_comparison.py +0 -0
  324. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/eval/test_score_integrity.py +0 -0
  325. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/eval/test_splitting.py +0 -0
  326. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/eval/test_types_and_judges.py +0 -0
  327. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/llm/test_anthropic_bedrock_client.py +0 -0
  328. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/llm/test_anthropic_client.py +0 -0
  329. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/llm/test_azure_client.py +0 -0
  330. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/llm/test_azure_embedding_client.py +0 -0
  331. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/llm/test_client_middleware.py +0 -0
  332. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/llm/test_cohere_bedrock_embedding_client.py +0 -0
  333. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/llm/test_embedding_batcher.py +0 -0
  334. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/llm/test_llm_types.py +0 -0
  335. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/llm/test_openai_client.py +0 -0
  336. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/llm/test_openai_embedding_client.py +0 -0
  337. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/llm/test_pricing.py +0 -0
  338. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/llm/test_retry_observability.py +0 -0
  339. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/llm/test_retry_policy_api.py +0 -0
  340. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/llm/test_retryable_error_substrings.py +0 -0
  341. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/memory/test_memory.py +0 -0
  342. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/middleware/test_context_compaction.py +0 -0
  343. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/middleware/test_deduplicate_tool_result.py +0 -0
  344. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/middleware/test_middleware_chain.py +0 -0
  345. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/middleware/test_otel.py +0 -0
  346. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/middleware/test_retry_middleware.py +0 -0
  347. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/middleware/test_sql_usage.py +0 -0
  348. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/middleware/test_usage_logger.py +0 -0
  349. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/optim/__init__.py +0 -0
  350. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/optim/fakes.py +0 -0
  351. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/optim/test_base.py +0 -0
  352. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/optim/test_base_integration.py +0 -0
  353. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/optim/test_binding.py +0 -0
  354. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/optim/test_config.py +0 -0
  355. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/optim/test_description_tunable.py +0 -0
  356. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/optim/test_gepa.py +0 -0
  357. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/optim/test_mipro.py +0 -0
  358. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/optim/test_orchestrator_optim.py +0 -0
  359. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/optim/test_pareto.py +0 -0
  360. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/optim/test_reflective.py +0 -0
  361. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/optim/test_report.py +0 -0
  362. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/optim/test_score_integrity.py +0 -0
  363. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/optim/test_spec.py +0 -0
  364. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/optim/test_trace.py +0 -0
  365. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/orchestration/test_ai_orchestrator.py +0 -0
  366. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/orchestration/test_base_orchestrator.py +0 -0
  367. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/orchestration/test_handoff_orchestrator.py +0 -0
  368. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/orchestration/test_history_tool_call_pairing.py +0 -0
  369. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/orchestration/test_orchestration_usage_breakdown.py +0 -0
  370. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/orchestration/test_orchestrator_agent_contract.py +0 -0
  371. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/orchestration/test_orchestrator_finalization.py +0 -0
  372. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/orchestration/test_orchestrator_member_events.py +0 -0
  373. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/orchestration/test_orchestrator_otel.py +0 -0
  374. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/orchestration/test_orchestrator_synthesis.py +0 -0
  375. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/orchestration/test_plan_orchestrator.py +0 -0
  376. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/orchestration/test_round_robin.py +0 -0
  377. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/presets/test_agents.py +0 -0
  378. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/presets/test_benchmark.py +0 -0
  379. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/presets/test_capitals.py +0 -0
  380. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/presets/test_clients.py +0 -0
  381. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/presets/test_instruction_registry.py +0 -0
  382. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/presets/test_orchestration.py +0 -0
  383. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/presets/test_streaming.py +0 -0
  384. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/presets/test_workflow.py +0 -0
  385. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/skills/__init__.py +0 -0
  386. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/skills/test_base.py +0 -0
  387. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/skills/test_resources.py +0 -0
  388. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/skills/test_scripts.py +0 -0
  389. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/skills/test_sources.py +0 -0
  390. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/termination/test_base.py +0 -0
  391. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/termination/test_cancellation.py +0 -0
  392. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/termination/test_composite.py +0 -0
  393. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/termination/test_consecutive_agent.py +0 -0
  394. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/termination/test_external.py +0 -0
  395. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/termination/test_function_call.py +0 -0
  396. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/termination/test_handoff.py +0 -0
  397. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/termination/test_max_message.py +0 -0
  398. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/termination/test_predicate.py +0 -0
  399. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/termination/test_source.py +0 -0
  400. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/termination/test_text_mention.py +0 -0
  401. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/termination/test_timeout.py +0 -0
  402. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/termination/test_token_usage.py +0 -0
  403. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/test_cancellation_token.py +0 -0
  404. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/test_context.py +0 -0
  405. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/test_logger.py +0 -0
  406. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/test_messages.py +0 -0
  407. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/test_option_enums.py +0 -0
  408. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/test_optional_extras.py +0 -0
  409. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/test_package_api.py +0 -0
  410. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/test_session_store.py +0 -0
  411. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/test_types.py +0 -0
  412. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/tools/fixtures/mcp_stdio_server.py +0 -0
  413. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/tools/test_coding_tools.py +0 -0
  414. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/tools/test_mcp_tools.py +0 -0
  415. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/tools/test_memory_tool.py +0 -0
  416. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/tools/test_research_tools.py +0 -0
  417. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/tools/test_tools.py +0 -0
  418. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/webui/__init__.py +0 -0
  419. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/webui/helpers.py +0 -0
  420. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/webui/test_eval_routes.py +0 -0
  421. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/webui/test_execution.py +0 -0
  422. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/webui/test_mcp_routes.py +0 -0
  423. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/webui/test_package_api.py +0 -0
  424. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/webui/test_registry.py +0 -0
  425. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/webui/test_server.py +0 -0
  426. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/webui/test_sessions.py +0 -0
  427. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/webui/test_workflow_streaming.py +0 -0
  428. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/workflow/recovery_worker.py +0 -0
  429. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/workflow/test_agent_step_imports.py +0 -0
  430. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/workflow/test_checkpoint.py +0 -0
  431. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/workflow/test_subworkflow_step.py +0 -0
  432. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/workflow/test_workflow_agent.py +0 -0
  433. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/workflow/test_workflow_class.py +0 -0
  434. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/workflow/test_workflow_models.py +0 -0
  435. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/workflow/test_workflow_reliability.py +0 -0
  436. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/workflow/test_workflow_runner.py +0 -0
  437. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/workflow/test_workflow_schema.py +0 -0
  438. {agentbyte-0.55.0 → agentbyte-0.56.0}/tests/workflow/test_workflow_steps.py +0 -0
  439. {agentbyte-0.55.0 → agentbyte-0.56.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,28 @@ The format follows Keep a Changelog principles and semantic versioning.
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [0.56.0] - 2026-10-23
10
+
11
+ ### Added
12
+
13
+ - `pricing_model=` on OpenAI chat/embedding, Anthropic direct/Bedrock chat, and Cohere Bedrock
14
+ embedding constructors and factories, matching Azure pricing aliases. Component configs preserve
15
+ the alias; manual `model_pricing` takes precedence while transport model IDs remain unchanged.
16
+ - Standard short-context catalog entries for `gpt-6.1-sol`, `gpt-6-astra`, and `gpt-6-luna`,
17
+ including cached-input and 30-minute cache-write metadata.
18
+
19
+ ### Changed
20
+
21
+ - Consolidated 19 AgentByte coding skills into one topic router with references loaded on demand;
22
+ removed the WebUI smoke-test skill and repaired migration-guide links.
23
+ - Added proposed spec 0077 for OpenAI models on Bedrock over SigV4 and updated the spec index.
24
+
25
+ ### Fixed
26
+
27
+ - Exact Claude Sonnet 5.5, Fable 5.1, Mythos 5, and Mythos 5.1 pricing prevents sibling fallback.
28
+ Claude 5-series rates now include cache reads and 5-minute cache-write metadata, including
29
+ Haiku 5.5 below the 100K prompt threshold.
30
+
9
31
  ## [0.55.0] - 2026-10-12
10
32
 
11
33
  ### Added
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: agentbyte
3
- Version: 0.55.0
3
+ Version: 0.56.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.56.0**
94
94
 
95
95
  ## Building an Agent
96
96
 
@@ -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.56.0**
6
6
 
7
7
  ## Building an Agent
8
8
 
@@ -0,0 +1,2 @@
1
+ __version__ = "0.56.0"
2
+ VERSION = __version__
@@ -19,6 +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
23
  retry_policy: RetryPolicy = RetryPolicy()
23
24
  key_env_var: str = "ANTHROPIC_API_KEY"
24
25
 
@@ -46,9 +47,11 @@ class AnthropicChatCompletionClient(
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
53
  self.model_pricing = model_pricing
54
+ self.pricing_model = pricing_model
52
55
  if retry_policy is not None:
53
56
  self.retry_policy = retry_policy
54
57
  else:
@@ -83,6 +86,7 @@ class AnthropicChatCompletionClient(
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
@@ -109,6 +113,7 @@ class AnthropicChatCompletionClient(
109
113
  client=anthropic_client,
110
114
  config=config,
111
115
  model_pricing=model_pricing,
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,
@@ -126,13 +131,14 @@ class AnthropicChatCompletionClient(
126
131
  if self.model_pricing is not None:
127
132
  pricing = self.model_pricing
128
133
  else:
129
- pricing = PricingRegistry.resolve_anthropic_chat_pricing(self.model)
134
+ pricing = PricingRegistry.resolve_anthropic_chat_pricing(self.pricing_model or self.model)
130
135
  return pricing.calculate_cost(input_tokens, output_tokens, cached_tokens)
131
136
 
132
137
  def _to_config(self) -> AnthropicChatCompletionClientConfig:
133
138
  """Serialize to config without persisting secrets."""
134
139
  return AnthropicChatCompletionClientConfig(
135
140
  model=self.model,
141
+ pricing_model=self.pricing_model,
136
142
  config=self.config.copy(),
137
143
  retry_policy=self.retry_policy,
138
144
  key_env_var=getattr(self, "_key_env_var", "ANTHROPIC_API_KEY"),
@@ -153,6 +159,7 @@ class AnthropicChatCompletionClient(
153
159
  )
154
160
  instance = cls.from_api_key(
155
161
  model=config.model,
162
+ pricing_model=config.pricing_model,
156
163
  api_key=api_key,
157
164
  config=config.config or None,
158
165
  retry_policy=config.retry_policy,
@@ -27,6 +27,7 @@ _BEDROCK_ID_SUFFIX_RE = re.compile(r"-v\d+:\d+$")
27
27
  class AnthropicBedrockChatCompletionClientConfig(BaseChatCompletionClientConfig):
28
28
  """Serializable Bedrock Claude client configuration."""
29
29
 
30
+ pricing_model: str | None = None
30
31
  retry_policy: RetryPolicy = RetryPolicy()
31
32
  region_env_var: str = "AWS_REGION"
32
33
  profile_env_var: str = "AWS_PROFILE"
@@ -69,9 +70,11 @@ class AnthropicBedrockChatCompletionClient(
69
70
  max_retry_delay: float = 60.0,
70
71
  retry_policy: Optional[RetryPolicy] = None,
71
72
  middlewares: Optional[List[ClientMiddleware]] = None,
73
+ pricing_model: str | None = None,
72
74
  ):
73
75
  super().__init__(model, client, config, middlewares=middlewares)
74
76
  self.model_pricing = model_pricing
77
+ self.pricing_model = pricing_model
75
78
  if retry_policy is not None:
76
79
  self.retry_policy = retry_policy
77
80
  else:
@@ -106,6 +109,7 @@ class AnthropicBedrockChatCompletionClient(
106
109
  max_retry_delay: float = 60.0,
107
110
  retry_policy: Optional[RetryPolicy] = None,
108
111
  middlewares: Optional[List[ClientMiddleware]] = None,
112
+ pricing_model: str | None = None,
109
113
  ) -> "AnthropicBedrockChatCompletionClient":
110
114
  """Create a client from an explicit or env-backed AWS region/profile.
111
115
 
@@ -127,6 +131,7 @@ class AnthropicBedrockChatCompletionClient(
127
131
  client=bedrock_client,
128
132
  config=config,
129
133
  model_pricing=model_pricing,
134
+ pricing_model=pricing_model,
130
135
  max_retries=max_retries,
131
136
  initial_retry_delay=initial_retry_delay,
132
137
  max_retry_delay=max_retry_delay,
@@ -143,6 +148,8 @@ class AnthropicBedrockChatCompletionClient(
143
148
  """Estimate cost, normalizing the Bedrock model ID before resolving."""
144
149
  if self.model_pricing is not None:
145
150
  pricing = self.model_pricing
151
+ elif self.pricing_model is not None:
152
+ pricing = PricingRegistry.resolve_anthropic_chat_pricing(self.pricing_model)
146
153
  else:
147
154
  stripped_region = _BEDROCK_ID_REGION_PREFIX_RE.sub("", self.model)
148
155
  normalized_model = _BEDROCK_ID_SUFFIX_RE.sub(
@@ -155,6 +162,7 @@ class AnthropicBedrockChatCompletionClient(
155
162
  """Serialize to config without persisting secrets (region/profile stay in env)."""
156
163
  return AnthropicBedrockChatCompletionClientConfig(
157
164
  model=self.model,
165
+ pricing_model=self.pricing_model,
158
166
  config=self.config.copy(),
159
167
  retry_policy=self.retry_policy,
160
168
  )
@@ -166,6 +174,7 @@ class AnthropicBedrockChatCompletionClient(
166
174
  """Reconstruct client from saved config, re-resolving region/profile from env."""
167
175
  return cls.from_region(
168
176
  model=config.model,
177
+ pricing_model=config.pricing_model,
169
178
  config=config.config or None,
170
179
  retry_policy=config.retry_policy,
171
180
  )
@@ -32,6 +32,7 @@ class CohereTruncate(StrEnum):
32
32
 
33
33
 
34
34
  class CohereBedrockEmbeddingClientConfig(BaseEmbeddingClientConfig):
35
+ pricing_model: str | None = None
35
36
  retry_policy: RetryPolicy = RetryPolicy()
36
37
  region_env_var: str = "AWS_REGION"
37
38
  profile_env_var: str = "AWS_PROFILE"
@@ -50,8 +51,10 @@ class CohereBedrockEmbeddingClient(
50
51
  model_pricing: Optional[ModelPricing] = None, max_retries: int = 3,
51
52
  initial_retry_delay: float = 1.0, max_retry_delay: float = 60.0,
52
53
  retry_policy: Optional[RetryPolicy] = None, region: str | None = None,
53
- profile: str | None = None, middlewares: Optional[List[ClientMiddleware]] = None):
54
+ profile: str | None = None, middlewares: Optional[List[ClientMiddleware]] = None,
55
+ pricing_model: str | None = None):
54
56
  super().__init__(model, client, config, middlewares=middlewares)
57
+ self.pricing_model = pricing_model
55
58
  self.model_pricing, self.region, self.profile = model_pricing, region, profile
56
59
  self.retry_policy = retry_policy or RetryPolicy(max_retries=max_retries, initial_retry_delay=initial_retry_delay, max_retry_delay=max_retry_delay)
57
60
 
@@ -60,9 +63,10 @@ class CohereBedrockEmbeddingClient(
60
63
  config: Optional[Dict[str, Any]] = None, model_pricing: Optional[ModelPricing] = None,
61
64
  max_retries: int = 3, initial_retry_delay: float = 1.0, max_retry_delay: float = 60.0,
62
65
  retry_policy: Optional[RetryPolicy] = None,
63
- middlewares: Optional[List[ClientMiddleware]] = None) -> "CohereBedrockEmbeddingClient":
66
+ middlewares: Optional[List[ClientMiddleware]] = None,
67
+ pricing_model: str | None = None) -> "CohereBedrockEmbeddingClient":
64
68
  settings = BedrockSettings()
65
- return cls(model, config=config, model_pricing=model_pricing, max_retries=max_retries,
69
+ return cls(model, config=config, model_pricing=model_pricing, pricing_model=pricing_model, max_retries=max_retries,
66
70
  initial_retry_delay=initial_retry_delay, max_retry_delay=max_retry_delay, retry_policy=retry_policy,
67
71
  region=region or settings.region, profile=profile or settings.profile, middlewares=middlewares)
68
72
 
@@ -114,15 +118,15 @@ class CohereBedrockEmbeddingClient(
114
118
  return await client.invoke_model(modelId=self.model, body=json.dumps(request), contentType="application/json", accept="application/json")
115
119
 
116
120
  def _estimate_cost(self, tokens: int) -> float:
117
- pricing = self.model_pricing or PricingRegistry.resolve_cohere_bedrock_embedding_pricing(self.model)
121
+ pricing = self.model_pricing or PricingRegistry.resolve_cohere_bedrock_embedding_pricing(self.pricing_model or self.model)
118
122
  return pricing.calculate_cost(tokens, 0)
119
123
 
120
124
  def _to_config(self) -> CohereBedrockEmbeddingClientConfig:
121
- return CohereBedrockEmbeddingClientConfig(model=self.model, config=self.config.copy(), retry_policy=self.retry_policy)
125
+ return CohereBedrockEmbeddingClientConfig(model=self.model, pricing_model=self.pricing_model, config=self.config.copy(), retry_policy=self.retry_policy)
122
126
 
123
127
  @classmethod
124
128
  def _from_config(cls, config: CohereBedrockEmbeddingClientConfig) -> "CohereBedrockEmbeddingClient":
125
- return cls.from_region(config.model, config=config.config or None, retry_policy=config.retry_policy)
129
+ return cls.from_region(config.model, pricing_model=config.pricing_model, config=config.config or None, retry_policy=config.retry_policy)
126
130
 
127
131
  def _handle_error(self, error: Exception) -> None:
128
132
  code = str(getattr(error, "response", {}).get("Error", {}).get("Code", ""))
@@ -39,6 +39,7 @@ logger = logging.getLogger(__name__)
39
39
  class OpenAIChatCompletionClientConfig(BaseChatCompletionClientConfig):
40
40
  """Configuration for OpenAIChatCompletionClient serialization."""
41
41
 
42
+ pricing_model: str | None = None
42
43
  retry_policy: RetryPolicy = RetryPolicy()
43
44
  key_env_var: str = "OPENAI_API_KEY"
44
45
 
@@ -65,9 +66,11 @@ class OpenAIChatCompletionClient(
65
66
  max_retry_delay: float = 60.0,
66
67
  retry_policy: Optional[RetryPolicy] = None,
67
68
  middlewares: Optional[List[ClientMiddleware]] = None,
69
+ pricing_model: str | None = None,
68
70
  ):
69
71
  super().__init__(model, client, config, middlewares=middlewares)
70
72
  self.model_pricing = model_pricing
73
+ self.pricing_model = pricing_model
71
74
  if retry_policy is not None:
72
75
  self.retry_policy = retry_policy
73
76
  else:
@@ -102,6 +105,7 @@ class OpenAIChatCompletionClient(
102
105
  max_retry_delay: float = 60.0,
103
106
  retry_policy: Optional[RetryPolicy] = None,
104
107
  middlewares: Optional[List[ClientMiddleware]] = None,
108
+ pricing_model: str | None = None,
105
109
  ) -> "OpenAIChatCompletionClient":
106
110
  """Create a client from an explicit or env-backed API key."""
107
111
  from pydantic import ValidationError
@@ -128,6 +132,7 @@ class OpenAIChatCompletionClient(
128
132
  client=openai_client,
129
133
  config=config,
130
134
  model_pricing=model_pricing,
135
+ pricing_model=pricing_model,
131
136
  max_retries=max_retries,
132
137
  initial_retry_delay=initial_retry_delay,
133
138
  max_retry_delay=max_retry_delay,
@@ -426,7 +431,7 @@ class OpenAIChatCompletionClient(
426
431
  if self.model_pricing is not None:
427
432
  pricing = self.model_pricing
428
433
  else:
429
- pricing = PricingRegistry.resolve_openai_chat_pricing(self.model)
434
+ pricing = PricingRegistry.resolve_openai_chat_pricing(self.pricing_model or self.model)
430
435
  return pricing.calculate_cost(prompt_tokens, completion_tokens, cached_tokens)
431
436
 
432
437
  @staticmethod
@@ -439,6 +444,7 @@ class OpenAIChatCompletionClient(
439
444
  """Serialize to config without persisting secrets."""
440
445
  return OpenAIChatCompletionClientConfig(
441
446
  model=self.model,
447
+ pricing_model=self.pricing_model,
442
448
  config=self.config.copy(),
443
449
  retry_policy=self.retry_policy,
444
450
  key_env_var=getattr(self, "_key_env_var", "OPENAI_API_KEY"),
@@ -457,6 +463,7 @@ class OpenAIChatCompletionClient(
457
463
  )
458
464
  instance = cls.from_api_key(
459
465
  model=config.model,
466
+ pricing_model=config.pricing_model,
460
467
  api_key=api_key,
461
468
  config=config.config or None,
462
469
  retry_policy=config.retry_policy,
@@ -24,6 +24,7 @@ logger = logging.getLogger(__name__)
24
24
  class OpenAIEmbeddingClientConfig(BaseEmbeddingClientConfig):
25
25
  """Configuration for OpenAIEmbeddingClient serialization."""
26
26
 
27
+ pricing_model: str | None = None
27
28
  retry_policy: RetryPolicy = RetryPolicy()
28
29
  key_env_var: str = "OPENAI_API_KEY"
29
30
 
@@ -50,9 +51,11 @@ class OpenAIEmbeddingClient(
50
51
  max_retry_delay: float = 60.0,
51
52
  retry_policy: Optional[RetryPolicy] = None,
52
53
  middlewares: Optional[List[ClientMiddleware]] = None,
54
+ pricing_model: str | None = None,
53
55
  ):
54
56
  super().__init__(model, client, config, middlewares=middlewares)
55
57
  self.model_pricing = model_pricing
58
+ self.pricing_model = pricing_model
56
59
  if retry_policy is not None:
57
60
  self.retry_policy = retry_policy
58
61
  else:
@@ -87,6 +90,7 @@ class OpenAIEmbeddingClient(
87
90
  max_retry_delay: float = 60.0,
88
91
  retry_policy: Optional[RetryPolicy] = None,
89
92
  middlewares: Optional[List[ClientMiddleware]] = None,
93
+ pricing_model: str | None = None,
90
94
  ) -> "OpenAIEmbeddingClient":
91
95
  """Create an OpenAIEmbeddingClient from explicit or env-backed API key."""
92
96
  from pydantic import ValidationError
@@ -113,6 +117,7 @@ class OpenAIEmbeddingClient(
113
117
  client=openai_client,
114
118
  config=config,
115
119
  model_pricing=model_pricing,
120
+ pricing_model=pricing_model,
116
121
  max_retries=max_retries,
117
122
  initial_retry_delay=initial_retry_delay,
118
123
  max_retry_delay=max_retry_delay,
@@ -230,13 +235,14 @@ class OpenAIEmbeddingClient(
230
235
  if self.model_pricing is not None:
231
236
  pricing = self.model_pricing
232
237
  else:
233
- pricing = PricingRegistry.resolve_openai_embedding_pricing(self.model)
238
+ pricing = PricingRegistry.resolve_openai_embedding_pricing(self.pricing_model or self.model)
234
239
  return pricing.calculate_cost(prompt_tokens, completion_tokens)
235
240
 
236
241
  def _to_config(self) -> OpenAIEmbeddingClientConfig:
237
242
  """Serialize client to config without persisting secret values."""
238
243
  return OpenAIEmbeddingClientConfig(
239
244
  model=self.model,
245
+ pricing_model=self.pricing_model,
240
246
  config=self.config.copy(),
241
247
  retry_policy=self.retry_policy,
242
248
  key_env_var=getattr(self, "_key_env_var", "OPENAI_API_KEY"),
@@ -255,6 +261,7 @@ class OpenAIEmbeddingClient(
255
261
  )
256
262
  instance = cls.from_api_key(
257
263
  model=config.model,
264
+ pricing_model=config.pricing_model,
258
265
  api_key=api_key,
259
266
  config=config.config or None,
260
267
  retry_policy=config.retry_policy,
@@ -77,7 +77,31 @@ class PricingRegistry:
77
77
  """Central registry of model pricing with resolver functions for all providers."""
78
78
 
79
79
  # ===== OpenAI Standard Short-Context Chat Model Pricing (per 1M tokens) =====
80
+ # GPT-6 Standard short-context rates verified 2026-10-23:
81
+ # https://developers.openai.com/api/docs/pricing (30-minute cache writes).
80
82
  OPENAI_CHAT_PRICING: dict[str, ModelPricing] = {
83
+ "gpt-6.1-sol": ModelPricing(
84
+ input_per_1m=2,
85
+ output_per_1m=10,
86
+ cached_input_per_1m=0.1,
87
+ cache_write_per_1m=2.5,
88
+ context_tier="short",
89
+ ),
90
+ "gpt-6-astra": ModelPricing(
91
+ input_per_1m=10,
92
+ output_per_1m=50,
93
+ cached_input_per_1m=1,
94
+ cache_write_per_1m=12.5,
95
+ context_tier="short",
96
+ ),
97
+ "gpt-6-luna": ModelPricing(
98
+ input_per_1m=0.1,
99
+ output_per_1m=0.5,
100
+ cached_input_per_1m=0.01,
101
+ cache_write_per_1m=0.125,
102
+ context_tier="short",
103
+ ),
104
+
81
105
  "gpt-5.6": ModelPricing(
82
106
  input_per_1m=4.00,
83
107
  output_per_1m=20.00,
@@ -429,9 +453,9 @@ class PricingRegistry:
429
453
 
430
454
  # ===== Anthropic Claude Chat Pricing (per 1M tokens) =====
431
455
  # Verified against platform.claude.com/docs/en/about-claude/pricing (Oct 2026).
432
- # On-demand Claude-on-Bedrock pricing matches direct-API list pricing, so the
433
- # same table is used for both AnthropicChatCompletionClient and
434
- # AnthropicBedrockChatCompletionClient.
456
+ # Shared default estimates for direct API and Bedrock; regional/transport
457
+ # premiums are not represented. Override model_pricing for negotiated rates.
458
+ # Anthropic cache-write rates below use the 5-minute TTL.
435
459
  #
436
460
  # Ordered most-specific prefix first for readability; `_resolve`'s prefix fallback
437
461
  # sorts candidate keys by length before matching, so the dict's literal insertion
@@ -447,15 +471,59 @@ class PricingRegistry:
447
471
  # has no representation in this registry (lookup is by model name only), so only
448
472
  # the common sub-100k-token rate is listed below.
449
473
  ANTHROPIC_CHAT_PRICING: dict[str, ModelPricing] = {
450
- "claude-fable-5": ModelPricing(input_per_1m=10.0, output_per_1m=50.0),
451
- "claude-opus-5-5": ModelPricing(input_per_1m=4.0, output_per_1m=20.0),
452
- "claude-opus-5": ModelPricing(input_per_1m=5.0, output_per_1m=25.0),
474
+ "claude-mythos-5-1": ModelPricing(
475
+ input_per_1m=10,
476
+ output_per_1m=50,
477
+ cached_input_per_1m=0.25,
478
+ cache_write_per_1m=12.5,
479
+ ),
480
+ "claude-mythos-5": ModelPricing(
481
+ input_per_1m=10,
482
+ output_per_1m=50,
483
+ cached_input_per_1m=1,
484
+ cache_write_per_1m=12.5,
485
+ ),
486
+ "claude-fable-5-1": ModelPricing(
487
+ input_per_1m=10,
488
+ output_per_1m=50,
489
+ cached_input_per_1m=0.25,
490
+ cache_write_per_1m=12.5,
491
+ ),
492
+ "claude-sonnet-5-5": ModelPricing(
493
+ input_per_1m=2,
494
+ output_per_1m=10,
495
+ cached_input_per_1m=0.1,
496
+ cache_write_per_1m=2.5,
497
+ ),
498
+ "claude-fable-5": ModelPricing(
499
+ input_per_1m=10.0,
500
+ output_per_1m=50.0,
501
+ cached_input_per_1m=1.0,
502
+ cache_write_per_1m=12.5,
503
+ ),
504
+ "claude-opus-5-5": ModelPricing(
505
+ input_per_1m=4.0,
506
+ output_per_1m=20.0,
507
+ cached_input_per_1m=0.2,
508
+ cache_write_per_1m=5.0,
509
+ ),
510
+ "claude-opus-5": ModelPricing(
511
+ input_per_1m=5.0,
512
+ output_per_1m=25.0,
513
+ cached_input_per_1m=0.5,
514
+ cache_write_per_1m=6.25,
515
+ ),
453
516
  "claude-opus-4-8": ModelPricing(input_per_1m=5.0, output_per_1m=25.0),
454
517
  "claude-opus-4-7": ModelPricing(input_per_1m=5.0, output_per_1m=25.0),
455
518
  "claude-opus-4-6": ModelPricing(input_per_1m=5.0, output_per_1m=25.0),
456
519
  "claude-opus-4-5": ModelPricing(input_per_1m=5.0, output_per_1m=25.0),
457
520
  "claude-opus-4": ModelPricing(input_per_1m=15.0, output_per_1m=75.0),
458
- "claude-sonnet-5": ModelPricing(input_per_1m=2.0, output_per_1m=10.0),
521
+ "claude-sonnet-5": ModelPricing(
522
+ input_per_1m=2.0,
523
+ output_per_1m=10.0,
524
+ cached_input_per_1m=0.2,
525
+ cache_write_per_1m=2.5,
526
+ ),
459
527
  # claude-sonnet-4-6/-4-5 currently price identically to claude-sonnet-4 ($3/$15,
460
528
  # verified against platform.claude.com/docs/en/about-claude/pricing), so the
461
529
  # prefix fallback already resolved them correctly -- listed explicitly anyway so a
@@ -467,6 +535,8 @@ class PricingRegistry:
467
535
  "claude-haiku-5-5": ModelPricing(
468
536
  input_per_1m=0.10,
469
537
  output_per_1m=0.50,
538
+ cached_input_per_1m=0.01,
539
+ cache_write_per_1m=0.125,
470
540
  context_tier="<=100K tokens per request",
471
541
  ),
472
542
  "claude-haiku-4-5": ModelPricing(input_per_1m=1.0, output_per_1m=5.0),
@@ -0,0 +1,197 @@
1
+ """Provider aliases select catalog pricing without changing transport model IDs."""
2
+
3
+ from importlib import import_module
4
+ from unittest.mock import Mock
5
+
6
+ import pytest
7
+
8
+ from agentbyte.llm import (
9
+ AnthropicBedrockChatCompletionClient,
10
+ AnthropicChatCompletionClient,
11
+ AzureOpenAIChatCompletionClient,
12
+ AzureOpenAIEmbeddingClient,
13
+ CohereBedrockEmbeddingClient,
14
+ OpenAIChatCompletionClient,
15
+ OpenAIEmbeddingClient,
16
+ )
17
+ from agentbyte.llm.pricing import PricingRegistry
18
+ from agentbyte.llm.types import ModelPricing
19
+
20
+
21
+ CLIENTS = [
22
+ (OpenAIChatCompletionClient, "gpt-6.1-sol", (1000, 200, 600)),
23
+ (AzureOpenAIChatCompletionClient, "gpt-5.6-sol", (1000, 200, 600)),
24
+ (AnthropicChatCompletionClient, "claude-sonnet-5-5", (1000, 200, 600)),
25
+ (AnthropicBedrockChatCompletionClient, "claude-sonnet-5-5", (1000, 200, 600)),
26
+ (OpenAIEmbeddingClient, "text-embedding-3-small", (1000,)),
27
+ (AzureOpenAIEmbeddingClient, "text-embedding-3-small", (1000,)),
28
+ (CohereBedrockEmbeddingClient, "cohere.embed-english-v3", (1000,)),
29
+ ]
30
+
31
+
32
+ @pytest.mark.parametrize("client_type,canonical,tokens", CLIENTS)
33
+ def test_pricing_precedence(client_type, canonical, tokens):
34
+ bare = client_type(model=canonical, client=Mock())
35
+ aliased = client_type(
36
+ model="account-specific-profile", pricing_model=canonical, client=Mock()
37
+ )
38
+ assert aliased._estimate_cost(*tokens) == bare._estimate_cost(*tokens)
39
+ assert aliased.model == "account-specific-profile"
40
+
41
+ manual = ModelPricing(input_per_1m=17, output_per_1m=23, cached_input_per_1m=3)
42
+ override = client_type(
43
+ model=canonical,
44
+ pricing_model="unknown-model",
45
+ model_pricing=manual,
46
+ client=Mock(),
47
+ )
48
+ assert override._estimate_cost(*tokens) == manual.calculate_cost(*tokens)
49
+
50
+
51
+ @pytest.mark.parametrize(
52
+ "client_type,canonical,tokens",
53
+ [row for row in CLIENTS if "Azure" not in row[0].__name__],
54
+ )
55
+ def test_factory_and_config_round_trip(client_type, canonical, tokens, monkeypatch):
56
+ monkeypatch.setenv("OPENAI_API_KEY", "unit-test-placeholder")
57
+ monkeypatch.setenv("ANTHROPIC_API_KEY", "unit-test-placeholder")
58
+ module = import_module(client_type.__module__)
59
+ if client_type is AnthropicBedrockChatCompletionClient:
60
+ monkeypatch.setattr(module, "AsyncAnthropicBedrock", Mock())
61
+ factory = client_type.from_region
62
+ elif client_type is CohereBedrockEmbeddingClient:
63
+ factory = client_type.from_region
64
+ else:
65
+ sdk_name = (
66
+ "AsyncAnthropic"
67
+ if client_type is AnthropicChatCompletionClient
68
+ else "AsyncOpenAI"
69
+ )
70
+ monkeypatch.setattr(module, sdk_name, Mock())
71
+ factory = client_type.from_api_key
72
+
73
+ instance = factory(model="deployment-xyz", pricing_model=canonical)
74
+ assert instance.pricing_model == canonical
75
+ config = instance._to_config()
76
+ # Cross a JSON boundary, as saved components do.
77
+ restored = client_type._from_config(
78
+ type(config).model_validate_json(config.model_dump_json())
79
+ )
80
+ assert restored.model == "deployment-xyz"
81
+ assert restored.pricing_model == canonical
82
+ assert restored._estimate_cost(*tokens) == instance._estimate_cost(*tokens)
83
+ legacy = type(config).model_validate({"model": canonical})
84
+ assert legacy.pricing_model is None
85
+
86
+
87
+ @pytest.mark.parametrize(
88
+ "model,rates",
89
+ [
90
+ ("gpt-6.1-sol", (2, 10, 0.1, 2.5)),
91
+ ("gpt-6-astra", (10, 50, 1, 12.5)),
92
+ ("gpt-6-luna", (0.1, 0.5, 0.01, 0.125)),
93
+ ("claude-sonnet-5-5", (2, 10, 0.1, 2.5)),
94
+ ("claude-opus-5-5", (4, 20, 0.2, 5)),
95
+ ("claude-fable-5-1", (10, 50, 0.25, 12.5)),
96
+ ("claude-sonnet-5", (2, 10, 0.2, 2.5)),
97
+ ("claude-opus-5", (5, 25, 0.5, 6.25)),
98
+ ("claude-fable-5", (10, 50, 1, 12.5)),
99
+ ("claude-mythos-5", (10, 50, 1, 12.5)),
100
+ ("claude-mythos-5-1", (10, 50, 0.25, 12.5)),
101
+ ("claude-haiku-5-5", (0.1, 0.5, 0.01, 0.125)),
102
+ ],
103
+ )
104
+ def test_catalog_rates_and_cached_cost(model, rates, caplog):
105
+ resolver = (
106
+ PricingRegistry.resolve_openai_chat_pricing
107
+ if model.startswith("gpt")
108
+ else PricingRegistry.resolve_anthropic_chat_pricing
109
+ )
110
+ pricing = resolver(model)
111
+ assert (
112
+ pricing.input_per_1m,
113
+ pricing.output_per_1m,
114
+ pricing.cached_input_per_1m,
115
+ pricing.cache_write_per_1m,
116
+ ) == rates
117
+ assert pricing.calculate_cost(1000, 200, 600) == pytest.approx(
118
+ (400 * rates[0] + 600 * rates[2] + 200 * rates[1]) / 1_000_000
119
+ )
120
+ assert not caplog.records
121
+
122
+
123
+ @pytest.mark.parametrize("model", list(PricingRegistry.ANTHROPIC_CHAT_PRICING))
124
+ def test_anthropic_exact_entries_win_over_nested_prefixes(model):
125
+ pricing = PricingRegistry.ANTHROPIC_CHAT_PRICING[model]
126
+ assert PricingRegistry.resolve_anthropic_chat_pricing(model) is pricing
127
+ assert (
128
+ PricingRegistry.resolve_anthropic_chat_pricing(model + "-20261023") is pricing
129
+ )
130
+
131
+
132
+ def test_bedrock_legacy_normalization_and_explicit_alias():
133
+ legacy = AnthropicBedrockChatCompletionClient(
134
+ model="eu.anthropic.claude-sonnet-5-5-v1:0", client=Mock()
135
+ )
136
+ explicit = AnthropicBedrockChatCompletionClient(
137
+ model="opaque-profile", pricing_model="claude-sonnet-5-5", client=Mock()
138
+ )
139
+ assert legacy._estimate_cost(1000, 200, 600) == explicit._estimate_cost(
140
+ 1000, 200, 600
141
+ )
142
+
143
+
144
+ @pytest.mark.asyncio
145
+ @pytest.mark.parametrize(
146
+ "client_type,canonical",
147
+ [
148
+ (OpenAIChatCompletionClient, "gpt-6.1-sol"),
149
+ (AnthropicChatCompletionClient, "claude-sonnet-5-5"),
150
+ (AnthropicBedrockChatCompletionClient, "claude-sonnet-5-5"),
151
+ ],
152
+ )
153
+ async def test_create_uses_alias_for_cost_but_profile_for_request(
154
+ client_type, canonical, caplog
155
+ ):
156
+ from types import SimpleNamespace
157
+ from unittest.mock import AsyncMock
158
+
159
+ from agentbyte.messages import UserMessage
160
+
161
+ if client_type is OpenAIChatCompletionClient:
162
+ response = SimpleNamespace(
163
+ model="account-profile",
164
+ choices=[
165
+ SimpleNamespace(
166
+ message=SimpleNamespace(content="hello", tool_calls=None),
167
+ finish_reason="stop",
168
+ )
169
+ ],
170
+ usage=SimpleNamespace(
171
+ prompt_tokens=1000,
172
+ completion_tokens=200,
173
+ prompt_tokens_details=SimpleNamespace(cached_tokens=600),
174
+ ),
175
+ )
176
+ create = AsyncMock(return_value=response)
177
+ sdk = SimpleNamespace(
178
+ chat=SimpleNamespace(completions=SimpleNamespace(create=create))
179
+ )
180
+ else:
181
+ response = SimpleNamespace(
182
+ model="account-profile",
183
+ content=[SimpleNamespace(type="text", text="hello")],
184
+ stop_reason="end_turn",
185
+ usage=SimpleNamespace(
186
+ input_tokens=1000, output_tokens=200, cache_read_input_tokens=600
187
+ ),
188
+ )
189
+ create = AsyncMock(return_value=response)
190
+ sdk = SimpleNamespace(messages=SimpleNamespace(create=create))
191
+ client = client_type(model="account-profile", pricing_model=canonical, client=sdk)
192
+ result = await client.create([UserMessage(content="hi", source="user")])
193
+ assert create.call_args.kwargs["model"] == "account-profile"
194
+ assert "pricing_model" not in create.call_args.kwargs
195
+ assert result.message.content == "hello"
196
+ assert result.usage.cost_estimate == pytest.approx(0.00286)
197
+ assert not [r for r in caplog.records if "pricing" in r.message.lower()]