agentbyte 0.56.0__tar.gz → 0.57.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {agentbyte-0.56.0 → agentbyte-0.57.0}/CHANGELOG.md +18 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/PKG-INFO +6 -2
- {agentbyte-0.56.0 → agentbyte-0.57.0}/README.md +5 -1
- agentbyte-0.57.0/src/agentbyte/__about__.py +2 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/llm/anthropic/_conversion.py +26 -5
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/llm/anthropic/chat.py +12 -10
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/llm/azure/chat.py +16 -16
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/llm/azure/embedding.py +16 -16
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/llm/bedrock/anthropic_chat.py +11 -24
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/llm/bedrock/cohere_embedding.py +13 -8
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/llm/openai/chat.py +12 -10
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/llm/openai/embedding.py +12 -10
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/llm/pricing.py +78 -34
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/llm/test_anthropic_bedrock_client.py +2 -2
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/llm/test_anthropic_client.py +67 -5
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/llm/test_azure_client.py +4 -4
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/llm/test_azure_embedding_client.py +2 -2
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/llm/test_cohere_bedrock_embedding_client.py +76 -17
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/llm/test_openai_client.py +4 -4
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/llm/test_openai_embedding_client.py +2 -2
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/llm/test_pricing.py +1 -1
- agentbyte-0.57.0/tests/llm/test_pricing_model.py +454 -0
- agentbyte-0.57.0/tests/llm/test_pricing_resolution.py +171 -0
- agentbyte-0.56.0/src/agentbyte/__about__.py +0 -2
- agentbyte-0.56.0/tests/llm/test_pricing_model.py +0 -197
- {agentbyte-0.56.0 → agentbyte-0.57.0}/.gitignore +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/LICENSE +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/pyproject.toml +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/__init__.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/_optional.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/a2a/__init__.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/a2a/app.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/a2a/distributed_context.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/a2a/executor.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/a2a/tool.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/agents/__init__.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/agents/agent.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/agents/agent_as_tool.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/agents/base.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/agents/types.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/cancellation_token.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/catalog.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/cli/__init__.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/cli/__main__.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/cli/eval_commands.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/cli/history_args.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/cli/loading.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/cli/main.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/cli/optim_commands.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/cli/report_output.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/cli/serve_commands.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/compaction/__init__.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/compaction/counters.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/compaction/errors.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/compaction/grouping.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/compaction/strategies.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/component.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/context.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/context_providers/__init__.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/context_providers/base.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/context_providers/skill_tools.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/context_providers/skills.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/dataset/__init__.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/dataset/_aiosqlite.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/dataset/base.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/dataset/config.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/dataset/importer.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/dataset/json.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/dataset/loader.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/dataset/publish.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/dataset/publish_config.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/dataset/publishers.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/dataset/s3.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/dataset/sources.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/dataset/sqlite.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/dataset/sqlite_db.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/dataset/write_config.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/dataset/writers.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/entity.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/__init__.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/base.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/checks/__init__.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/checks/decorator.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/checks/keyword.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/checks/local.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/checks/process.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/checks/tool.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/checks/types.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/comparison.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/eval_dataset.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/history/__init__.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/history/_writer_lock.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/history/config.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/history/conformance.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/history/errors.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/history/models.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/history/recorder.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/history/sql.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/history/sqlite.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/history/store.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/history/transitions.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/judges/__init__.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/judges/base.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/judges/composite.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/judges/llm.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/judges/pairwise.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/judges/reference.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/judges/trajectory.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/judges/validation.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/pairwise.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/report.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/runner.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/splitting.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/targets/__init__.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/targets/agent.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/targets/model.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/targets/multi_turn.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/targets/orchestrator.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/targets/runtime.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/targets/workflow.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/types.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/workbench/__init__.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/workbench/benchmark.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/workbench/compare.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/workbench/coordinator.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/workbench/jobs.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/workbench/smoke.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/workbench/smoke_tasks.json +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/workbench/suite.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/eval/workbench/verdict.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/execution_trace/__init__.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/execution_trace/collector.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/execution_trace/models.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/llm/__init__.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/llm/_retry_observability.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/llm/anthropic/__init__.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/llm/anthropic/settings.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/llm/auth.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/llm/azure/__init__.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/llm/azure/auth.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/llm/azure/settings.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/llm/azure_openai.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/llm/azure_openai_embedding.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/llm/base.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/llm/bedrock/__init__.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/llm/bedrock/_client.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/llm/bedrock/settings.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/llm/embedding_batcher.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/llm/embeddings_base.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/llm/openai/__init__.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/llm/openai/settings.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/llm/openai_embedding.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/llm/retry_policy.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/llm/settings.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/llm/types.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/logger.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/memory/__init__.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/memory/base.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/messages.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/middleware/__init__.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/middleware/base.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/middleware/otel.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/middleware/retry.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/middleware/sql_usage.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/middleware/usage_logger.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/notebook.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/optim/__init__.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/optim/base.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/optim/binding.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/optim/config.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/optim/gepa.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/optim/job.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/optim/mipro.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/optim/pareto.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/optim/reflective.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/optim/report.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/optim/spec.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/optim/trace.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/orchestration/__init__.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/orchestration/ai.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/orchestration/base.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/orchestration/handoff.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/orchestration/plan.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/orchestration/policies.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/orchestration/round_robin.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/presets/__init__.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/presets/agents.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/presets/benchmark.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/presets/capitals.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/presets/clients.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/presets/instruction_registry.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/presets/instructions/orchestrator.yaml +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/presets/instructions/query_rewriter.yaml +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/presets/instructions/researcher.yaml +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/presets/instructions/reviewer.yaml +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/presets/instructions/writer.yaml +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/presets/orchestration.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/presets/skills/capitals-format/SKILL.md +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/presets/skills/contracts-analyst/SKILL.md +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/presets/skills/hr-analyst/SKILL.md +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/presets/skills/hr-analyst/resources/departments.md +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/presets/skills/hr-analyst/resources/employees.md +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/presets/skills/hr-analyst/resources/payroll.md +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/presets/streaming.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/presets/workflow.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/session_store.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/skills/__init__.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/skills/base.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/skills/resources.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/skills/scripts.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/skills/sources.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/skills/validation.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/termination/__init__.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/termination/base.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/termination/cancellation.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/termination/composite.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/termination/consecutive_agent.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/termination/external.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/termination/function_call.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/termination/handoff.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/termination/max_message.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/termination/predicate.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/termination/source.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/termination/text_mention.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/termination/timeout.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/termination/token_usage.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/tools/__init__.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/tools/base.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/tools/coding_tools.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/tools/core_tools.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/tools/decorator.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/tools/mcp/__init__.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/tools/mcp/client.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/tools/mcp/config.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/tools/mcp/errors.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/tools/mcp/tool.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/tools/mcp/transports.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/tools/memory_tool.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/tools/research_tools.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/types.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/webui/__init__.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/webui/discovery.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/webui/eval_routes.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/webui/execution.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/webui/mcp/__init__.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/webui/mcp/servers/__init__.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/webui/mcp/servers/apps_server.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/webui/mcp/servers/auth_server.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/webui/mcp/servers/basic_server.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/webui/mcp/servers/mrtr_server.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/webui/mcp/servers/notify_server.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/webui/mcp_playground.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/webui/mcp_routes.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/webui/models.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/webui/registry.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/webui/server.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/webui/session_store.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/webui/sessions.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/webui/ui/assets/index-BreogZut.js +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/webui/ui/assets/index-ptxe7GHs.css +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/webui/ui/index.html +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/webui/ui/vite.svg +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/workflow/__init__.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/workflow/agent.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/workflow/core/__init__.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/workflow/core/_structure_hash.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/workflow/core/checkpoint.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/workflow/core/models.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/workflow/core/runner.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/workflow/core/workflow.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/workflow/defaults.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/workflow/errors.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/workflow/loader.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/workflow/schema.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/workflow/schema_utils.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/workflow/sqlite_checkpoint.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/workflow/steps/__init__.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/workflow/steps/agent.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/workflow/steps/echo.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/workflow/steps/function.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/workflow/steps/http.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/workflow/steps/step.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/workflow/steps/subworkflow.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/workflow/steps/transform.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/src/agentbyte/workflow/visualizer.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/a2a/a2a_helpers.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/a2a/test_a2a_adapters.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/a2a/test_distributed_context.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/agents/test_agent_as_tool.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/agents/test_agent_basic.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/agents/test_agent_client_middleware_overlap.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/agents/test_agent_context_providers.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/agents/test_agent_error_response.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/agents/test_agent_event_types.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/agents/test_agent_memory_integration.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/agents/test_agent_middleware_integration.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/agents/test_agent_response_accessors.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/agents/test_agent_retry_middleware.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/agents/test_agent_stop_at_tools.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/agents/test_agent_stream_events.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/agents/test_tool_approval.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/agents/test_tool_batch_resolution.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/agents/test_tool_metadata.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/cli/test_eval_benchmark_commands.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/cli/test_loading.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/cli/test_registry_check.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/cli/test_report_output.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/cli/test_serve_command.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/compaction/test_compaction.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/conftest.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/context_providers/__init__.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/context_providers/test_skill_tools.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/context_providers/test_skills_provider.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/dataset/fake_s3.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/dataset/test_dataset_exit.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/dataset/test_loader.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/dataset/test_multi_table.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/dataset/test_publish.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/dataset/test_sqlite_db.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/eval/test_dimension_scores.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/eval/test_eval_benchmarks.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/eval/test_eval_dataset.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/eval/test_eval_history.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/eval/test_eval_history_backends.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/eval/test_eval_jobs.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/eval/test_eval_workbench.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/eval/test_execution_trajectories.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/eval/test_history_config.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/eval/test_multi_turn.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/eval/test_pairwise.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/eval/test_phase1_runner_and_targets.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/eval/test_phase2_checks_and_reports.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/eval/test_run_comparison.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/eval/test_score_integrity.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/eval/test_splitting.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/eval/test_types_and_judges.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/llm/test_client_middleware.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/llm/test_embedding_batcher.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/llm/test_llm_types.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/llm/test_retry_observability.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/llm/test_retry_policy_api.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/llm/test_retryable_error_substrings.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/memory/test_memory.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/middleware/test_context_compaction.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/middleware/test_deduplicate_tool_result.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/middleware/test_middleware_chain.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/middleware/test_otel.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/middleware/test_retry_middleware.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/middleware/test_sql_usage.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/middleware/test_usage_logger.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/optim/__init__.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/optim/fakes.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/optim/test_base.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/optim/test_base_integration.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/optim/test_binding.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/optim/test_config.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/optim/test_description_tunable.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/optim/test_gepa.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/optim/test_mipro.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/optim/test_orchestrator_optim.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/optim/test_pareto.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/optim/test_reflective.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/optim/test_report.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/optim/test_score_integrity.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/optim/test_spec.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/optim/test_trace.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/orchestration/test_ai_orchestrator.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/orchestration/test_base_orchestrator.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/orchestration/test_handoff_orchestrator.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/orchestration/test_history_tool_call_pairing.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/orchestration/test_orchestration_usage_breakdown.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/orchestration/test_orchestrator_agent_contract.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/orchestration/test_orchestrator_finalization.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/orchestration/test_orchestrator_member_events.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/orchestration/test_orchestrator_otel.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/orchestration/test_orchestrator_synthesis.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/orchestration/test_plan_orchestrator.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/orchestration/test_round_robin.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/presets/test_agents.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/presets/test_benchmark.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/presets/test_capitals.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/presets/test_clients.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/presets/test_instruction_registry.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/presets/test_orchestration.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/presets/test_streaming.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/presets/test_workflow.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/skills/__init__.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/skills/test_base.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/skills/test_resources.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/skills/test_scripts.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/skills/test_sources.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/termination/test_base.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/termination/test_cancellation.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/termination/test_composite.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/termination/test_consecutive_agent.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/termination/test_external.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/termination/test_function_call.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/termination/test_handoff.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/termination/test_max_message.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/termination/test_predicate.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/termination/test_source.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/termination/test_text_mention.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/termination/test_timeout.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/termination/test_token_usage.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/test_cancellation_token.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/test_context.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/test_logger.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/test_messages.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/test_option_enums.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/test_optional_extras.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/test_package_api.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/test_session_store.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/test_types.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/tools/fixtures/mcp_stdio_server.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/tools/test_coding_tools.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/tools/test_mcp_tools.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/tools/test_memory_tool.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/tools/test_research_tools.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/tools/test_tools.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/webui/__init__.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/webui/helpers.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/webui/test_eval_routes.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/webui/test_execution.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/webui/test_mcp_routes.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/webui/test_package_api.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/webui/test_registry.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/webui/test_server.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/webui/test_sessions.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/webui/test_workflow_streaming.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/workflow/recovery_worker.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/workflow/test_agent_step_imports.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/workflow/test_checkpoint.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/workflow/test_subworkflow_step.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/workflow/test_workflow_agent.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/workflow/test_workflow_class.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/workflow/test_workflow_models.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/workflow/test_workflow_reliability.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/workflow/test_workflow_runner.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/workflow/test_workflow_schema.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/workflow/test_workflow_steps.py +0 -0
- {agentbyte-0.56.0 → agentbyte-0.57.0}/tests/workflow/test_workflow_visualizer.py +0 -0
|
@@ -6,6 +6,24 @@ The format follows Keep a Changelog principles and semantic versioning.
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
+
## [0.57.0] - 2026-10-27
|
|
10
|
+
|
|
11
|
+
### Changed
|
|
12
|
+
|
|
13
|
+
- **Breaking:** manual pricing is now `pricing_override=` on all chat and embedding clients and
|
|
14
|
+
factories (formerly `model_pricing=`). `model` is the invocation target, `pricing_model` selects
|
|
15
|
+
catalog pricing, and `pricing_override` supplies explicit rates (spec 0078).
|
|
16
|
+
- Pricing lookup is shared across providers: exact, normalized (Bedrock inference-profile IDs),
|
|
17
|
+
boundary-compatible prefix/family, then default, with warnings for approximate and default matches.
|
|
18
|
+
`eu.cohere.embed-v4:0` now resolves to the Cohere v4 entry.
|
|
19
|
+
|
|
20
|
+
### Fixed
|
|
21
|
+
|
|
22
|
+
- Anthropic and Bedrock Anthropic cost estimates no longer go negative with prompt caching.
|
|
23
|
+
Anthropic's `input_tokens` excludes cache reads, so `Usage.tokens_input` now includes
|
|
24
|
+
`cache_read_input_tokens` and `cache_creation_input_tokens` (normal and streaming), and
|
|
25
|
+
`tokens_cached` stays a subset of it. Cache-write tokens are billed at the plain input rate.
|
|
26
|
+
|
|
9
27
|
## [0.56.0] - 2026-10-23
|
|
10
28
|
|
|
11
29
|
### Added
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: agentbyte
|
|
3
|
-
Version: 0.
|
|
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.
|
|
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.
|
|
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+**
|
|
@@ -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
|
|
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=
|
|
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
|
-
|
|
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
|
-
|
|
275
|
+
delta_input, delta_cached = self._normalize_input_usage(event.usage)
|
|
276
|
+
if delta_input:
|
|
277
|
+
input_tokens, cached_tokens = delta_input, delta_cached
|
|
270
278
|
output_tokens = event.usage.output_tokens or 0
|
|
271
|
-
cached_tokens = event.usage.cache_read_input_tokens or 0
|
|
272
279
|
usage = Usage(
|
|
273
280
|
duration_ms=duration_ms,
|
|
274
281
|
llm_calls=1,
|
|
@@ -287,6 +294,20 @@ class AnthropicConversionMixin:
|
|
|
287
294
|
)
|
|
288
295
|
continue
|
|
289
296
|
|
|
297
|
+
@staticmethod
|
|
298
|
+
def _normalize_input_usage(usage: Any) -> tuple[int, int]:
|
|
299
|
+
"""Return `(total_input_tokens, cached_tokens)` from an Anthropic usage block.
|
|
300
|
+
|
|
301
|
+
Anthropic reports `input_tokens` as only the uncached tokens after the
|
|
302
|
+
last cache breakpoint; cache reads and cache writes are separate
|
|
303
|
+
counters. AgentByte's `Usage.tokens_input` is the total prompt size with
|
|
304
|
+
`tokens_cached` as a subset, so fold the counters together here.
|
|
305
|
+
"""
|
|
306
|
+
uncached = getattr(usage, "input_tokens", None) or 0
|
|
307
|
+
cache_read = getattr(usage, "cache_read_input_tokens", None) or 0
|
|
308
|
+
cache_write = getattr(usage, "cache_creation_input_tokens", None) or 0
|
|
309
|
+
return uncached + cache_read + cache_write, cache_read
|
|
310
|
+
|
|
290
311
|
@staticmethod
|
|
291
312
|
def _extract_system(messages: List[Message]) -> Optional[str]:
|
|
292
313
|
"""Pull SystemMessages out as Anthropic's top-level `system` param."""
|
|
@@ -10,7 +10,7 @@ from agentbyte.component import Component
|
|
|
10
10
|
from agentbyte.middleware.base import ClientMiddleware
|
|
11
11
|
|
|
12
12
|
from ..base import BaseChatCompletionClient, BaseChatCompletionClientConfig
|
|
13
|
-
from ..pricing import PricingRegistry
|
|
13
|
+
from ..pricing import PricingModelName, PricingRegistry, validate_pricing_model
|
|
14
14
|
from ..retry_policy import RetryMixin, RetryPolicy
|
|
15
15
|
from ..types import ModelPricing
|
|
16
16
|
from ._conversion import AnthropicConversionMixin
|
|
@@ -19,7 +19,7 @@ from ._conversion import AnthropicConversionMixin
|
|
|
19
19
|
class AnthropicChatCompletionClientConfig(BaseChatCompletionClientConfig):
|
|
20
20
|
"""Configuration for AnthropicChatCompletionClient serialization."""
|
|
21
21
|
|
|
22
|
-
pricing_model:
|
|
22
|
+
pricing_model: PricingModelName | None = None
|
|
23
23
|
retry_policy: RetryPolicy = RetryPolicy()
|
|
24
24
|
key_env_var: str = "ANTHROPIC_API_KEY"
|
|
25
25
|
|
|
@@ -41,7 +41,7 @@ class AnthropicChatCompletionClient(
|
|
|
41
41
|
model: str,
|
|
42
42
|
client: AsyncAnthropic,
|
|
43
43
|
config: Optional[Dict[str, Any]] = None,
|
|
44
|
-
|
|
44
|
+
pricing_override: Optional[ModelPricing] = None,
|
|
45
45
|
max_retries: int = 3,
|
|
46
46
|
initial_retry_delay: float = 1.0,
|
|
47
47
|
max_retry_delay: float = 60.0,
|
|
@@ -50,8 +50,8 @@ class AnthropicChatCompletionClient(
|
|
|
50
50
|
pricing_model: str | None = None,
|
|
51
51
|
):
|
|
52
52
|
super().__init__(model, client, config, middlewares=middlewares)
|
|
53
|
-
self.
|
|
54
|
-
self.pricing_model = pricing_model
|
|
53
|
+
self.pricing_override = pricing_override
|
|
54
|
+
self.pricing_model = validate_pricing_model(pricing_model)
|
|
55
55
|
if retry_policy is not None:
|
|
56
56
|
self.retry_policy = retry_policy
|
|
57
57
|
else:
|
|
@@ -80,7 +80,7 @@ class AnthropicChatCompletionClient(
|
|
|
80
80
|
api_key: Optional[str] = None,
|
|
81
81
|
base_url: Optional[str] = None,
|
|
82
82
|
config: Optional[Dict[str, Any]] = None,
|
|
83
|
-
|
|
83
|
+
pricing_override: Optional[ModelPricing] = None,
|
|
84
84
|
max_retries: int = 3,
|
|
85
85
|
initial_retry_delay: float = 1.0,
|
|
86
86
|
max_retry_delay: float = 60.0,
|
|
@@ -112,7 +112,7 @@ class AnthropicChatCompletionClient(
|
|
|
112
112
|
model=model,
|
|
113
113
|
client=anthropic_client,
|
|
114
114
|
config=config,
|
|
115
|
-
|
|
115
|
+
pricing_override=pricing_override,
|
|
116
116
|
pricing_model=pricing_model,
|
|
117
117
|
max_retries=max_retries,
|
|
118
118
|
initial_retry_delay=initial_retry_delay,
|
|
@@ -128,10 +128,12 @@ class AnthropicChatCompletionClient(
|
|
|
128
128
|
cached_tokens: int = 0,
|
|
129
129
|
) -> float:
|
|
130
130
|
"""Estimate cost from token usage, discounting cached prompt tokens."""
|
|
131
|
-
if self.
|
|
132
|
-
pricing = self.
|
|
131
|
+
if self.pricing_override is not None:
|
|
132
|
+
pricing = self.pricing_override
|
|
133
133
|
else:
|
|
134
|
-
pricing = PricingRegistry.resolve_anthropic_chat_pricing(
|
|
134
|
+
pricing = PricingRegistry.resolve_anthropic_chat_pricing(
|
|
135
|
+
self.pricing_model if self.pricing_model is not None else self.model
|
|
136
|
+
)
|
|
135
137
|
return pricing.calculate_cost(input_tokens, output_tokens, cached_tokens)
|
|
136
138
|
|
|
137
139
|
def _to_config(self) -> AnthropicChatCompletionClientConfig:
|
|
@@ -24,7 +24,7 @@ from ..base import (
|
|
|
24
24
|
AuthenticationError,
|
|
25
25
|
InvalidRequestError,
|
|
26
26
|
)
|
|
27
|
-
from ..pricing import PricingRegistry
|
|
27
|
+
from ..pricing import PricingModelName, PricingRegistry, validate_pricing_model
|
|
28
28
|
from ..retry_policy import RetryMixin, RetryPolicy
|
|
29
29
|
from ..types import (
|
|
30
30
|
ChatCompletionChunk,
|
|
@@ -43,7 +43,7 @@ class AzureOpenAIChatCompletionClientConfig(BaseChatCompletionClientConfig):
|
|
|
43
43
|
"""Configuration for AzureOpenAIChatCompletionClient serialization."""
|
|
44
44
|
|
|
45
45
|
retry_policy: RetryPolicy = RetryPolicy()
|
|
46
|
-
pricing_model:
|
|
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
|
-
|
|
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.
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
666
|
-
pricing = self.
|
|
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
|
|
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:
|
|
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
|
-
|
|
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.
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
472
|
-
pricing = self.
|
|
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
|
|
475
|
+
self.pricing_model if self.pricing_model is not None else self.model
|
|
476
476
|
)
|
|
477
477
|
return pricing.calculate_cost(prompt_tokens, completion_tokens)
|
|
478
478
|
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
"""Anthropic Claude chat client transported through AWS Bedrock."""
|
|
2
2
|
|
|
3
|
-
import re
|
|
4
3
|
from typing import Any, Dict, List, Optional
|
|
5
4
|
|
|
6
5
|
from anthropic import AsyncAnthropicBedrock
|
|
@@ -9,25 +8,17 @@ from agentbyte.component import Component
|
|
|
9
8
|
from agentbyte.middleware.base import ClientMiddleware
|
|
10
9
|
from agentbyte.llm.anthropic._conversion import AnthropicConversionMixin
|
|
11
10
|
from agentbyte.llm.base import BaseChatCompletionClient, BaseChatCompletionClientConfig
|
|
12
|
-
from agentbyte.llm.pricing import PricingRegistry
|
|
11
|
+
from agentbyte.llm.pricing import PricingModelName, PricingRegistry, validate_pricing_model
|
|
13
12
|
from agentbyte.llm.retry_policy import RetryMixin, RetryPolicy
|
|
14
13
|
from agentbyte.llm.types import ModelPricing
|
|
15
14
|
|
|
16
15
|
from .settings import BedrockSettings
|
|
17
16
|
|
|
18
|
-
# Bedrock model/inference-profile IDs carry an optional region prefix ("eu."/
|
|
19
|
-
# "global."), an "anthropic." prefix, and a trailing "-vN:0" suffix (e.g.
|
|
20
|
-
# "eu.anthropic.claude-opus-5-5-v1:0"), none of which the shared Anthropic
|
|
21
|
-
# pricing table's longest-prefix match understands. Strip all three before
|
|
22
|
-
# resolving.
|
|
23
|
-
_BEDROCK_ID_REGION_PREFIX_RE = re.compile(r"^[a-z]+\.(?=anthropic\.)")
|
|
24
|
-
_BEDROCK_ID_SUFFIX_RE = re.compile(r"-v\d+:\d+$")
|
|
25
|
-
|
|
26
17
|
|
|
27
18
|
class AnthropicBedrockChatCompletionClientConfig(BaseChatCompletionClientConfig):
|
|
28
19
|
"""Serializable Bedrock Claude client configuration."""
|
|
29
20
|
|
|
30
|
-
pricing_model:
|
|
21
|
+
pricing_model: PricingModelName | None = None
|
|
31
22
|
retry_policy: RetryPolicy = RetryPolicy()
|
|
32
23
|
region_env_var: str = "AWS_REGION"
|
|
33
24
|
profile_env_var: str = "AWS_PROFILE"
|
|
@@ -64,7 +55,7 @@ class AnthropicBedrockChatCompletionClient(
|
|
|
64
55
|
model: str,
|
|
65
56
|
client: AsyncAnthropicBedrock,
|
|
66
57
|
config: Optional[Dict[str, Any]] = None,
|
|
67
|
-
|
|
58
|
+
pricing_override: Optional[ModelPricing] = None,
|
|
68
59
|
max_retries: int = 3,
|
|
69
60
|
initial_retry_delay: float = 1.0,
|
|
70
61
|
max_retry_delay: float = 60.0,
|
|
@@ -73,8 +64,8 @@ class AnthropicBedrockChatCompletionClient(
|
|
|
73
64
|
pricing_model: str | None = None,
|
|
74
65
|
):
|
|
75
66
|
super().__init__(model, client, config, middlewares=middlewares)
|
|
76
|
-
self.
|
|
77
|
-
self.pricing_model = pricing_model
|
|
67
|
+
self.pricing_override = pricing_override
|
|
68
|
+
self.pricing_model = validate_pricing_model(pricing_model)
|
|
78
69
|
if retry_policy is not None:
|
|
79
70
|
self.retry_policy = retry_policy
|
|
80
71
|
else:
|
|
@@ -103,7 +94,7 @@ class AnthropicBedrockChatCompletionClient(
|
|
|
103
94
|
region: Optional[str] = None,
|
|
104
95
|
profile: Optional[str] = None,
|
|
105
96
|
config: Optional[Dict[str, Any]] = None,
|
|
106
|
-
|
|
97
|
+
pricing_override: Optional[ModelPricing] = None,
|
|
107
98
|
max_retries: int = 3,
|
|
108
99
|
initial_retry_delay: float = 1.0,
|
|
109
100
|
max_retry_delay: float = 60.0,
|
|
@@ -130,7 +121,7 @@ class AnthropicBedrockChatCompletionClient(
|
|
|
130
121
|
model=model,
|
|
131
122
|
client=bedrock_client,
|
|
132
123
|
config=config,
|
|
133
|
-
|
|
124
|
+
pricing_override=pricing_override,
|
|
134
125
|
pricing_model=pricing_model,
|
|
135
126
|
max_retries=max_retries,
|
|
136
127
|
initial_retry_delay=initial_retry_delay,
|
|
@@ -146,16 +137,12 @@ class AnthropicBedrockChatCompletionClient(
|
|
|
146
137
|
cached_tokens: int = 0,
|
|
147
138
|
) -> float:
|
|
148
139
|
"""Estimate cost, normalizing the Bedrock model ID before resolving."""
|
|
149
|
-
if self.
|
|
150
|
-
pricing = self.
|
|
151
|
-
elif self.pricing_model is not None:
|
|
152
|
-
pricing = PricingRegistry.resolve_anthropic_chat_pricing(self.pricing_model)
|
|
140
|
+
if self.pricing_override is not None:
|
|
141
|
+
pricing = self.pricing_override
|
|
153
142
|
else:
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
"", stripped_region.removeprefix("anthropic.")
|
|
143
|
+
pricing = PricingRegistry.resolve_anthropic_chat_pricing(
|
|
144
|
+
self.pricing_model if self.pricing_model is not None else self.model
|
|
157
145
|
)
|
|
158
|
-
pricing = PricingRegistry.resolve_anthropic_chat_pricing(normalized_model)
|
|
159
146
|
return pricing.calculate_cost(input_tokens, output_tokens, cached_tokens)
|
|
160
147
|
|
|
161
148
|
def _to_config(self) -> AnthropicBedrockChatCompletionClientConfig:
|
|
@@ -10,7 +10,7 @@ from agentbyte.llm._retry_observability import build_retry_summary
|
|
|
10
10
|
from agentbyte.middleware.base import ClientMiddleware
|
|
11
11
|
from agentbyte.llm.base import AuthenticationError, InvalidRequestError, RateLimitError
|
|
12
12
|
from agentbyte.llm.embeddings_base import BaseEmbeddingClient, BaseEmbeddingClientConfig
|
|
13
|
-
from agentbyte.llm.pricing import PricingRegistry
|
|
13
|
+
from agentbyte.llm.pricing import PricingModelName, PricingRegistry, validate_pricing_model
|
|
14
14
|
from agentbyte.llm.retry_policy import RetryMixin, RetryPolicy
|
|
15
15
|
from agentbyte.llm.types import EmbeddingResult, ModelClientError, ModelPricing, Usage
|
|
16
16
|
|
|
@@ -32,7 +32,7 @@ class CohereTruncate(StrEnum):
|
|
|
32
32
|
|
|
33
33
|
|
|
34
34
|
class CohereBedrockEmbeddingClientConfig(BaseEmbeddingClientConfig):
|
|
35
|
-
pricing_model:
|
|
35
|
+
pricing_model: PricingModelName | None = None
|
|
36
36
|
retry_policy: RetryPolicy = RetryPolicy()
|
|
37
37
|
region_env_var: str = "AWS_REGION"
|
|
38
38
|
profile_env_var: str = "AWS_PROFILE"
|
|
@@ -48,25 +48,25 @@ class CohereBedrockEmbeddingClient(
|
|
|
48
48
|
component_provider_override = "agentbyte.llm.CohereBedrockEmbeddingClient"
|
|
49
49
|
|
|
50
50
|
def __init__(self, model: str, client: Any | None = None, config: Optional[Dict[str, Any]] = None,
|
|
51
|
-
|
|
51
|
+
pricing_override: Optional[ModelPricing] = None, max_retries: int = 3,
|
|
52
52
|
initial_retry_delay: float = 1.0, max_retry_delay: float = 60.0,
|
|
53
53
|
retry_policy: Optional[RetryPolicy] = None, region: str | None = None,
|
|
54
54
|
profile: str | None = None, middlewares: Optional[List[ClientMiddleware]] = None,
|
|
55
55
|
pricing_model: str | None = None):
|
|
56
56
|
super().__init__(model, client, config, middlewares=middlewares)
|
|
57
|
-
self.pricing_model = pricing_model
|
|
58
|
-
self.
|
|
57
|
+
self.pricing_model = validate_pricing_model(pricing_model)
|
|
58
|
+
self.pricing_override, self.region, self.profile = pricing_override, region, profile
|
|
59
59
|
self.retry_policy = retry_policy or RetryPolicy(max_retries=max_retries, initial_retry_delay=initial_retry_delay, max_retry_delay=max_retry_delay)
|
|
60
60
|
|
|
61
61
|
@classmethod
|
|
62
62
|
def from_region(cls, model: str, region: str | None = None, profile: str | None = None,
|
|
63
|
-
config: Optional[Dict[str, Any]] = None,
|
|
63
|
+
config: Optional[Dict[str, Any]] = None, pricing_override: Optional[ModelPricing] = None,
|
|
64
64
|
max_retries: int = 3, initial_retry_delay: float = 1.0, max_retry_delay: float = 60.0,
|
|
65
65
|
retry_policy: Optional[RetryPolicy] = None,
|
|
66
66
|
middlewares: Optional[List[ClientMiddleware]] = None,
|
|
67
67
|
pricing_model: str | None = None) -> "CohereBedrockEmbeddingClient":
|
|
68
68
|
settings = BedrockSettings()
|
|
69
|
-
return cls(model, config=config,
|
|
69
|
+
return cls(model, config=config, pricing_override=pricing_override, pricing_model=pricing_model, max_retries=max_retries,
|
|
70
70
|
initial_retry_delay=initial_retry_delay, max_retry_delay=max_retry_delay, retry_policy=retry_policy,
|
|
71
71
|
region=region or settings.region, profile=profile or settings.profile, middlewares=middlewares)
|
|
72
72
|
|
|
@@ -118,7 +118,12 @@ class CohereBedrockEmbeddingClient(
|
|
|
118
118
|
return await client.invoke_model(modelId=self.model, body=json.dumps(request), contentType="application/json", accept="application/json")
|
|
119
119
|
|
|
120
120
|
def _estimate_cost(self, tokens: int) -> float:
|
|
121
|
-
|
|
121
|
+
if self.pricing_override is not None:
|
|
122
|
+
pricing = self.pricing_override
|
|
123
|
+
else:
|
|
124
|
+
pricing = PricingRegistry.resolve_cohere_bedrock_embedding_pricing(
|
|
125
|
+
self.pricing_model if self.pricing_model is not None else self.model
|
|
126
|
+
)
|
|
122
127
|
return pricing.calculate_cost(tokens, 0)
|
|
123
128
|
|
|
124
129
|
def _to_config(self) -> CohereBedrockEmbeddingClientConfig:
|