agentbyte 0.47.0__tar.gz → 0.48.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.47.0 → agentbyte-0.48.0}/CHANGELOG.md +27 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/PKG-INFO +5 -4
- {agentbyte-0.47.0 → agentbyte-0.48.0}/README.md +3 -3
- {agentbyte-0.47.0 → agentbyte-0.48.0}/pyproject.toml +1 -0
- agentbyte-0.48.0/src/agentbyte/__about__.py +2 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/eval/base.py +5 -1
- agentbyte-0.48.0/src/agentbyte/eval/history/_writer_lock.py +46 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/eval/history/conformance.py +41 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/eval/history/models.py +73 -8
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/eval/history/recorder.py +12 -4
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/eval/history/sql.py +219 -13
- agentbyte-0.48.0/src/agentbyte/eval/history/sqlite.py +48 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/eval/history/store.py +13 -4
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/eval/targets/agent.py +11 -2
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/eval/workbench/__init__.py +4 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/eval/workbench/coordinator.py +13 -3
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/eval/workbench/jobs.py +18 -2
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/eval/workbench/suite.py +77 -2
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/eval/workbench/verdict.py +4 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/optim/__init__.py +4 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/optim/base.py +8 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/optim/report.py +133 -7
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/optim/trace.py +12 -1
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/presets/__init__.py +12 -0
- agentbyte-0.48.0/src/agentbyte/presets/capitals.py +87 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/webui/eval_routes.py +27 -4
- agentbyte-0.48.0/src/agentbyte/webui/ui/assets/index-DGIjPh4H.css +1 -0
- agentbyte-0.48.0/src/agentbyte/webui/ui/assets/index-XUXdsPv4.js +82 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/webui/ui/index.html +2 -2
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/eval/test_eval_history.py +32 -7
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/eval/test_eval_history_backends.py +1 -1
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/eval/test_eval_jobs.py +5 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/eval/test_eval_workbench.py +32 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/optim/test_report.py +165 -0
- agentbyte-0.48.0/tests/presets/test_capitals.py +63 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/webui/test_eval_routes.py +30 -0
- agentbyte-0.47.0/src/agentbyte/__about__.py +0 -2
- agentbyte-0.47.0/src/agentbyte/eval/history/sqlite.py +0 -498
- agentbyte-0.47.0/src/agentbyte/webui/ui/assets/index-BVwldkgS.js +0 -82
- agentbyte-0.47.0/src/agentbyte/webui/ui/assets/index-u5LbPGVH.css +0 -1
- {agentbyte-0.47.0 → agentbyte-0.48.0}/.gitignore +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/LICENSE +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/__init__.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/_optional.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/a2a/__init__.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/a2a/app.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/a2a/distributed_context.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/a2a/executor.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/a2a/tool.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/agents/__init__.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/agents/agent.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/agents/agent_as_tool.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/agents/base.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/agents/embedding_agent.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/agents/types.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/cancellation_token.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/catalog.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/cli/__init__.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/cli/__main__.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/cli/eval_commands.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/cli/loading.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/cli/main.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/cli/optim_commands.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/cli/serve_commands.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/compaction/__init__.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/compaction/counters.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/compaction/errors.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/compaction/grouping.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/compaction/strategies.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/component.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/context.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/context_providers/__init__.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/context_providers/base.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/context_providers/skill_tools.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/context_providers/skills.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/dataset/__init__.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/dataset/_aiosqlite.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/dataset/base.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/dataset/config.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/dataset/importer.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/dataset/json.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/dataset/loader.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/dataset/publish.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/dataset/publish_config.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/dataset/publishers.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/dataset/s3.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/dataset/sources.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/dataset/sqlite.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/dataset/sqlite_db.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/dataset/write_config.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/dataset/writers.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/entity.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/eval/__init__.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/eval/checks/__init__.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/eval/checks/decorator.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/eval/checks/keyword.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/eval/checks/local.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/eval/checks/process.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/eval/checks/tool.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/eval/checks/types.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/eval/comparison.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/eval/eval_dataset.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/eval/history/__init__.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/eval/history/errors.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/eval/history/transitions.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/eval/judges/__init__.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/eval/judges/base.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/eval/judges/composite.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/eval/judges/llm.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/eval/judges/pairwise.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/eval/judges/reference.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/eval/judges/trajectory.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/eval/judges/validation.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/eval/pairwise.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/eval/report.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/eval/runner.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/eval/splitting.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/eval/targets/__init__.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/eval/targets/model.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/eval/targets/multi_turn.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/eval/targets/orchestrator.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/eval/targets/runtime.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/eval/targets/workflow.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/eval/types.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/eval/workbench/smoke.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/eval/workbench/smoke_tasks.json +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/execution_trace/__init__.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/execution_trace/collector.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/execution_trace/models.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/llm/__init__.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/llm/_retry_observability.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/llm/auth.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/llm/azure/__init__.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/llm/azure/auth.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/llm/azure/chat.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/llm/azure/embedding.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/llm/azure/settings.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/llm/azure_openai.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/llm/azure_openai_embedding.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/llm/base.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/llm/embeddings_base.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/llm/openai/__init__.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/llm/openai/chat.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/llm/openai/embedding.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/llm/openai/settings.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/llm/openai_embedding.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/llm/pricing.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/llm/retry_policy.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/llm/settings.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/llm/types.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/logger.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/memory/__init__.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/memory/base.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/messages.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/middleware/__init__.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/middleware/base.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/middleware/otel.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/middleware/retry.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/middleware/sql_usage.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/middleware/usage_logger.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/notebook.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/optim/config.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/optim/gepa.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/optim/mipro.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/optim/pareto.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/optim/reflective.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/optim/spec.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/orchestration/__init__.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/orchestration/ai.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/orchestration/base.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/orchestration/handoff.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/orchestration/plan.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/orchestration/policies.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/orchestration/round_robin.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/presets/agents.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/presets/clients.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/presets/instruction_registry.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/presets/instructions/orchestrator.yaml +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/presets/instructions/query_rewriter.yaml +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/presets/instructions/researcher.yaml +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/presets/instructions/reviewer.yaml +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/presets/instructions/writer.yaml +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/presets/orchestration.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/presets/skills/contracts-analyst/SKILL.md +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/presets/skills/hr-analyst/SKILL.md +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/presets/skills/hr-analyst/resources/departments.md +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/presets/skills/hr-analyst/resources/employees.md +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/presets/skills/hr-analyst/resources/payroll.md +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/presets/streaming.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/presets/workflow.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/session_store.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/skills/__init__.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/skills/base.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/skills/resources.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/skills/scripts.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/skills/sources.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/skills/validation.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/termination/__init__.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/termination/base.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/termination/cancellation.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/termination/composite.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/termination/consecutive_agent.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/termination/external.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/termination/function_call.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/termination/handoff.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/termination/max_message.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/termination/predicate.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/termination/source.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/termination/text_mention.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/termination/timeout.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/termination/token_usage.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/tools/__init__.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/tools/base.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/tools/coding_tools.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/tools/core_tools.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/tools/decorator.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/tools/mcp/__init__.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/tools/mcp/client.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/tools/mcp/config.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/tools/mcp/errors.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/tools/mcp/tool.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/tools/mcp/transports.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/tools/memory_tool.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/tools/research_tools.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/types.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/webui/__init__.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/webui/discovery.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/webui/execution.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/webui/mcp/__init__.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/webui/mcp/servers/__init__.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/webui/mcp/servers/apps_server.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/webui/mcp/servers/auth_server.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/webui/mcp/servers/basic_server.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/webui/mcp/servers/mrtr_server.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/webui/mcp/servers/notify_server.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/webui/mcp_playground.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/webui/mcp_routes.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/webui/models.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/webui/registry.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/webui/server.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/webui/session_store.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/webui/sessions.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/webui/ui/vite.svg +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/workflow/__init__.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/workflow/agent.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/workflow/core/__init__.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/workflow/core/_structure_hash.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/workflow/core/checkpoint.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/workflow/core/models.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/workflow/core/runner.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/workflow/core/workflow.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/workflow/defaults.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/workflow/errors.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/workflow/loader.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/workflow/schema.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/workflow/schema_utils.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/workflow/sqlite_checkpoint.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/workflow/steps/__init__.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/workflow/steps/agent.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/workflow/steps/echo.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/workflow/steps/function.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/workflow/steps/http.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/workflow/steps/step.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/workflow/steps/subworkflow.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/workflow/steps/transform.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/src/agentbyte/workflow/visualizer.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/a2a/a2a_helpers.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/a2a/test_a2a_adapters.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/a2a/test_distributed_context.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/agents/test_agent_as_tool.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/agents/test_agent_basic.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/agents/test_agent_context_providers.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/agents/test_agent_error_response.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/agents/test_agent_event_types.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/agents/test_agent_memory_integration.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/agents/test_agent_middleware_integration.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/agents/test_agent_response_accessors.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/agents/test_agent_retry_middleware.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/agents/test_agent_stop_at_tools.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/agents/test_agent_stream_events.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/agents/test_embedding_agent.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/agents/test_tool_approval.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/agents/test_tool_batch_resolution.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/agents/test_tool_metadata.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/cli/test_loading.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/cli/test_registry_check.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/cli/test_serve_command.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/compaction/test_compaction.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/context_providers/__init__.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/context_providers/test_skill_tools.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/context_providers/test_skills_provider.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/dataset/fake_s3.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/dataset/test_dataset_exit.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/dataset/test_loader.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/dataset/test_multi_table.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/dataset/test_publish.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/dataset/test_sqlite_db.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/eval/test_eval_dataset.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/eval/test_execution_trajectories.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/eval/test_multi_turn.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/eval/test_pairwise.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/eval/test_phase1_runner_and_targets.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/eval/test_phase2_checks_and_reports.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/eval/test_score_integrity.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/eval/test_splitting.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/eval/test_types_and_judges.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/examples/test_compaction_webapp.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/llm/test_azure_client.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/llm/test_azure_embedding_client.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/llm/test_llm_types.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/llm/test_openai_client.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/llm/test_openai_embedding_client.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/llm/test_pricing.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/llm/test_retry_observability.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/llm/test_retry_policy_api.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/llm/test_retryable_error_substrings.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/memory/test_memory.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/middleware/test_context_compaction.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/middleware/test_deduplicate_tool_result.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/middleware/test_middleware_chain.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/middleware/test_otel.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/middleware/test_retry_middleware.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/middleware/test_sql_usage.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/middleware/test_usage_logger.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/optim/__init__.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/optim/test_base.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/optim/test_base_integration.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/optim/test_config.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/optim/test_description_tunable.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/optim/test_gepa.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/optim/test_mipro.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/optim/test_orchestrator_optim.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/optim/test_pareto.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/optim/test_reflective.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/optim/test_score_integrity.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/optim/test_spec.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/optim/test_trace.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/orchestration/test_ai_orchestrator.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/orchestration/test_base_orchestrator.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/orchestration/test_handoff_orchestrator.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/orchestration/test_history_tool_call_pairing.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/orchestration/test_orchestration_usage_breakdown.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/orchestration/test_orchestrator_agent_contract.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/orchestration/test_orchestrator_finalization.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/orchestration/test_orchestrator_member_events.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/orchestration/test_orchestrator_otel.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/orchestration/test_orchestrator_synthesis.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/orchestration/test_plan_orchestrator.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/orchestration/test_round_robin.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/presets/test_agents.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/presets/test_clients.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/presets/test_instruction_registry.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/presets/test_orchestration.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/presets/test_streaming.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/presets/test_workflow.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/skills/__init__.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/skills/test_base.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/skills/test_resources.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/skills/test_scripts.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/skills/test_sources.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/termination/test_base.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/termination/test_cancellation.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/termination/test_composite.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/termination/test_consecutive_agent.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/termination/test_external.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/termination/test_function_call.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/termination/test_handoff.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/termination/test_max_message.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/termination/test_predicate.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/termination/test_source.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/termination/test_text_mention.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/termination/test_timeout.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/termination/test_token_usage.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/test_cancellation_token.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/test_context.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/test_logger.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/test_messages.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/test_option_enums.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/test_optional_extras.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/test_package_api.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/test_session_store.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/test_types.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/test_vanilla_chunker.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/tools/fixtures/mcp_stdio_server.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/tools/test_coding_tools.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/tools/test_mcp_tools.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/tools/test_memory_tool.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/tools/test_research_tools.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/tools/test_tools.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/webui/__init__.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/webui/helpers.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/webui/test_execution.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/webui/test_mcp_routes.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/webui/test_package_api.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/webui/test_registry.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/webui/test_server.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/webui/test_sessions.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/webui/test_workflow_streaming.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/workflow/recovery_worker.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/workflow/test_agent_step_imports.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/workflow/test_checkpoint.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/workflow/test_subworkflow_step.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/workflow/test_workflow_agent.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/workflow/test_workflow_class.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/workflow/test_workflow_models.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/workflow/test_workflow_reliability.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/workflow/test_workflow_runner.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/workflow/test_workflow_schema.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/workflow/test_workflow_steps.py +0 -0
- {agentbyte-0.47.0 → agentbyte-0.48.0}/tests/workflow/test_workflow_visualizer.py +0 -0
|
@@ -6,6 +6,33 @@ The format follows Keep a Changelog principles and semantic versioning.
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
+
## [0.48.0] - 2026-10-06
|
|
10
|
+
|
|
11
|
+
### Added
|
|
12
|
+
|
|
13
|
+
- Evaluation suite workspace and score-aware optimization outcome (spec 0069): `suite` is a
|
|
14
|
+
first-class, indexed column on eval runs (`list_runs(suite=)`, `GET /api/eval/runs?suite=`), and
|
|
15
|
+
`OptimizationReport`/`OptimizationRunRecord` expose a shared `OptimizationOutcome`
|
|
16
|
+
(`improved` / `seed_kept` / `best_candidate_changed`) via `classify_outcome`.
|
|
17
|
+
- Agent as a first-class history dimension (spec 0070): `agent_id`/`agent_name` on `EvalRunRecord`
|
|
18
|
+
and `OptimizationRunRecord` (indexed `agent_id`, defaulted from `target_id`), `list_runs(agent=)`
|
|
19
|
+
/ `list_optimizations(agent=)`, `GET /api/eval/agents` and `?agent=` filters. `EvalSuite` declares
|
|
20
|
+
`agent_id`/`agent_name`/`agent_description`; `EvalSuiteRegistry` builds agent cards and raises
|
|
21
|
+
`DuplicateAgentError` when one `agent_id` maps to two names. The WebUI Evaluations tab is now an
|
|
22
|
+
agent-card gallery with per-agent pages (suites + Run, grouped history, server-side pagination).
|
|
23
|
+
- `SqlEvalRunStore.from_sqlite_path` / `from_url` convenience constructors that own the engine
|
|
24
|
+
(spec 0071).
|
|
25
|
+
|
|
26
|
+
### Changed
|
|
27
|
+
|
|
28
|
+
- One storage backend for evaluation history (spec 0071): `SqlEvalRunStore` (SQLAlchemy Core) now
|
|
29
|
+
serves both SQLite and PostgreSQL. The hand-written raw-SQL SQLite store was retired;
|
|
30
|
+
`SQLiteEvalRunStore` is kept as a thin backward-compatible alias. SQLite gets a single-writer file
|
|
31
|
+
lock, `PRAGMA synchronous=FULL` and schema auto-migration; the row format is unchanged, so existing
|
|
32
|
+
`.sqlite` files open with no data migration. History store schema migrates forward to layout 4.
|
|
33
|
+
- The `sqlite` extra now also provides `sqlalchemy[asyncio]` (needed by the unified store); `import
|
|
34
|
+
agentbyte` with core dependencies only is unchanged.
|
|
35
|
+
|
|
9
36
|
## [0.47.0] - 2026-10-06
|
|
10
37
|
|
|
11
38
|
### Added
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: agentbyte
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.48.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
|
|
@@ -70,6 +70,7 @@ Requires-Dist: sqlalchemy[asyncio]>=2.0.43; extra == 'sql'
|
|
|
70
70
|
Requires-Dist: sqlmodel>=0.0.38; extra == 'sql'
|
|
71
71
|
Provides-Extra: sqlite
|
|
72
72
|
Requires-Dist: aiosqlite>=0.22.1; extra == 'sqlite'
|
|
73
|
+
Requires-Dist: sqlalchemy[asyncio]>=2.0.43; extra == 'sqlite'
|
|
73
74
|
Provides-Extra: tiktoken
|
|
74
75
|
Requires-Dist: tiktoken>=0.9.0; extra == 'tiktoken'
|
|
75
76
|
Provides-Extra: viz
|
|
@@ -83,7 +84,7 @@ Description-Content-Type: text/markdown
|
|
|
83
84
|
|
|
84
85
|
Agentbyte is an observability-first agentic AI framework for building and studying multiagent systems with a learning-first, implementation-oriented workflow.
|
|
85
86
|
|
|
86
|
-
Current release: **0.
|
|
87
|
+
Current release: **0.48.0**
|
|
87
88
|
|
|
88
89
|
## Building an Agent
|
|
89
90
|
|
|
@@ -317,8 +318,8 @@ uv add "agentbyte[openai,sqlite]"
|
|
|
317
318
|
| `otel` | OpenTelemetry API, SDK, OTLP exporter | OpenTelemetry tracing and metrics |
|
|
318
319
|
| `webui` | `fastapi`, `uvicorn` | `agentbyte webui` |
|
|
319
320
|
| `gunicorn` | `webui` + `gunicorn` | Production single-worker serving (`gunicorn -k uvicorn.workers.UvicornWorker -w 1`) |
|
|
320
|
-
| `sqlite` | `aiosqlite` | SQLite datasets, workflow checkpoints, evaluation history |
|
|
321
|
-
| `postgres` | `sqlalchemy[asyncio]`, `sqlmodel`, `asyncpg` | `SqlUsageBackend`, `SqlEvalRunStore` |
|
|
321
|
+
| `sqlite` | `aiosqlite`, `sqlalchemy[asyncio]` | SQLite datasets, workflow checkpoints, evaluation history (`SqlEvalRunStore` over `sqlite+aiosqlite`) |
|
|
322
|
+
| `postgres` | `sqlalchemy[asyncio]`, `sqlmodel`, `asyncpg` | `SqlUsageBackend`, PostgreSQL `SqlEvalRunStore` |
|
|
322
323
|
| `sql` | `sqlite` + `postgres` | Both SQL backends |
|
|
323
324
|
| `tiktoken` | `tiktoken` | `TiktokenCounter` for exact compaction token counts |
|
|
324
325
|
| `optim` | `gepa` | `optimize_with_gepa()` |
|
|
@@ -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.48.0**
|
|
6
6
|
|
|
7
7
|
## Building an Agent
|
|
8
8
|
|
|
@@ -236,8 +236,8 @@ uv add "agentbyte[openai,sqlite]"
|
|
|
236
236
|
| `otel` | OpenTelemetry API, SDK, OTLP exporter | OpenTelemetry tracing and metrics |
|
|
237
237
|
| `webui` | `fastapi`, `uvicorn` | `agentbyte webui` |
|
|
238
238
|
| `gunicorn` | `webui` + `gunicorn` | Production single-worker serving (`gunicorn -k uvicorn.workers.UvicornWorker -w 1`) |
|
|
239
|
-
| `sqlite` | `aiosqlite` | SQLite datasets, workflow checkpoints, evaluation history |
|
|
240
|
-
| `postgres` | `sqlalchemy[asyncio]`, `sqlmodel`, `asyncpg` | `SqlUsageBackend`, `SqlEvalRunStore` |
|
|
239
|
+
| `sqlite` | `aiosqlite`, `sqlalchemy[asyncio]` | SQLite datasets, workflow checkpoints, evaluation history (`SqlEvalRunStore` over `sqlite+aiosqlite`) |
|
|
240
|
+
| `postgres` | `sqlalchemy[asyncio]`, `sqlmodel`, `asyncpg` | `SqlUsageBackend`, PostgreSQL `SqlEvalRunStore` |
|
|
241
241
|
| `sql` | `sqlite` + `postgres` | Both SQL backends |
|
|
242
242
|
| `tiktoken` | `tiktoken` | `TiktokenCounter` for exact compaction token counts |
|
|
243
243
|
| `optim` | `gepa` | `optimize_with_gepa()` |
|
|
@@ -46,8 +46,12 @@ class JudgeScoringError(Exception):
|
|
|
46
46
|
class BaseEvalTarget(ABC):
|
|
47
47
|
"""Anything that can execute an evaluation task into a trajectory."""
|
|
48
48
|
|
|
49
|
-
def __init__(self, name: str):
|
|
49
|
+
def __init__(self, name: str, *, agent_id: str | None = None, agent_name: str | None = None):
|
|
50
50
|
self.name = name
|
|
51
|
+
# Optional stable agent identity (spec 0070). ``agent_name`` defaults to the target name;
|
|
52
|
+
# ``agent_id`` falls back to the name when not supplied by the caller or suite.
|
|
53
|
+
self.agent_id = agent_id
|
|
54
|
+
self.agent_name = agent_name or name
|
|
51
55
|
|
|
52
56
|
@abstractmethod
|
|
53
57
|
async def run(
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"""Exclusive single-writer file lock for file-backed history databases (SQLite).
|
|
2
|
+
|
|
3
|
+
Shared by the SQLite path of ``SqlEvalRunStore`` (spec 0071). PostgreSQL uses session-level
|
|
4
|
+
advisory locks instead; SQLite has no server, so a ``<path>.writer.lock`` file holds exclusive
|
|
5
|
+
writer ownership for a store's lifetime and the OS releases it on process exit.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from __future__ import annotations
|
|
9
|
+
|
|
10
|
+
import os
|
|
11
|
+
|
|
12
|
+
from .errors import EvalStoreOwnershipError
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class WriterLock:
|
|
16
|
+
"""Exclusive per-database writer ownership, released by the OS on process exit."""
|
|
17
|
+
|
|
18
|
+
def __init__(self, path: str) -> None:
|
|
19
|
+
self.path = f"{path}.writer.lock"
|
|
20
|
+
self._fd: int | None = None
|
|
21
|
+
|
|
22
|
+
def acquire(self) -> None:
|
|
23
|
+
fd = os.open(self.path, os.O_RDWR | os.O_CREAT, 0o600)
|
|
24
|
+
try:
|
|
25
|
+
try:
|
|
26
|
+
import fcntl
|
|
27
|
+
|
|
28
|
+
fcntl.flock(fd, fcntl.LOCK_EX | fcntl.LOCK_NB)
|
|
29
|
+
except ImportError: # pragma: no cover - Windows
|
|
30
|
+
import msvcrt
|
|
31
|
+
|
|
32
|
+
msvcrt.locking(fd, msvcrt.LK_NBLCK, 1)
|
|
33
|
+
except OSError as exc:
|
|
34
|
+
os.close(fd)
|
|
35
|
+
raise EvalStoreOwnershipError(
|
|
36
|
+
f"Another writer owns {self.path.removesuffix('.writer.lock')}"
|
|
37
|
+
) from exc
|
|
38
|
+
self._fd = fd
|
|
39
|
+
|
|
40
|
+
def release(self) -> None:
|
|
41
|
+
fd, self._fd = self._fd, None
|
|
42
|
+
if fd is not None:
|
|
43
|
+
os.close(fd)
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
__all__ = ["WriterLock"]
|
|
@@ -282,6 +282,47 @@ async def check_queries_paginate_filter_and_delete(store: EvalRunStore) -> None:
|
|
|
282
282
|
assert await store.delete_run(runs[0].id) is False
|
|
283
283
|
|
|
284
284
|
|
|
285
|
+
async def check_suite_is_derived_from_labels_and_filterable(store: EvalRunStore) -> None:
|
|
286
|
+
from .models import SUITE_LABEL_KEY
|
|
287
|
+
|
|
288
|
+
alpha = _run(labels={SUITE_LABEL_KEY: "alpha"})
|
|
289
|
+
beta = _run(labels={SUITE_LABEL_KEY: "beta"})
|
|
290
|
+
unlabelled = _run()
|
|
291
|
+
assert (alpha.suite, beta.suite, unlabelled.suite) == ("alpha", "beta", None)
|
|
292
|
+
explicit = _run(suite="gamma", labels={SUITE_LABEL_KEY: "alpha"})
|
|
293
|
+
assert explicit.suite == "gamma" # an explicit suite wins over the label
|
|
294
|
+
|
|
295
|
+
for run in (alpha, beta, unlabelled):
|
|
296
|
+
await store.create_run(run, _items(run, 1))
|
|
297
|
+
|
|
298
|
+
assert [r.id for r in await store.list_runs(suite="alpha")] == [alpha.id]
|
|
299
|
+
assert [r.id for r in await store.list_runs(suite="beta")] == [beta.id]
|
|
300
|
+
assert await store.list_runs(suite="absent") == []
|
|
301
|
+
assert {r.id for r in await store.list_runs()} == {alpha.id, beta.id, unlabelled.id}
|
|
302
|
+
|
|
303
|
+
|
|
304
|
+
async def check_agent_is_recorded_and_filterable(store: EvalRunStore) -> None:
|
|
305
|
+
# spec 0070: agent_id defaults from target_id and is filterable, orthogonally to suite.
|
|
306
|
+
from .models import SUITE_LABEL_KEY
|
|
307
|
+
|
|
308
|
+
geo = _run(agent_id="geo-support", agent_name="Geo Support", labels={SUITE_LABEL_KEY: "capitals"})
|
|
309
|
+
acme = _run(agent_id="acme-support", labels={SUITE_LABEL_KEY: "capitals"})
|
|
310
|
+
defaulted = _run() # no agent_id -> falls back to target_id ("t")
|
|
311
|
+
assert (geo.agent_id, geo.agent_name) == ("geo-support", "Geo Support")
|
|
312
|
+
assert (acme.agent_id, acme.agent_name) == ("acme-support", "acme-support") # name defaults to id
|
|
313
|
+
assert defaulted.agent_id == "t" # the target_id default
|
|
314
|
+
|
|
315
|
+
for run in (geo, acme, defaulted):
|
|
316
|
+
await store.create_run(run, _items(run, 1))
|
|
317
|
+
|
|
318
|
+
assert [r.id for r in await store.list_runs(agent="geo-support")] == [geo.id]
|
|
319
|
+
assert [r.id for r in await store.list_runs(agent="t")] == [defaulted.id]
|
|
320
|
+
assert await store.list_runs(agent="absent") == []
|
|
321
|
+
# agent and suite filter independently
|
|
322
|
+
assert [r.id for r in await store.list_runs(agent="geo-support", suite="capitals")] == [geo.id]
|
|
323
|
+
assert await store.list_runs(agent="geo-support", suite="other") == []
|
|
324
|
+
|
|
325
|
+
|
|
285
326
|
async def check_unknown_run_is_reported(store: EvalRunStore) -> None:
|
|
286
327
|
assert await store.get_run("missing") is None
|
|
287
328
|
await _raises(EvalRunNotFoundError, store.start_run("missing"))
|
|
@@ -16,7 +16,7 @@ from enum import StrEnum
|
|
|
16
16
|
from typing import Any
|
|
17
17
|
from uuid import uuid4
|
|
18
18
|
|
|
19
|
-
from pydantic import BaseModel, ConfigDict, Field
|
|
19
|
+
from pydantic import BaseModel, ConfigDict, Field, computed_field, model_validator
|
|
20
20
|
|
|
21
21
|
from agentbyte.eval.types import EvalScore, EvalTask, MultiTurnEvalTask, ScoringStatus, WorkflowEvalTask
|
|
22
22
|
from agentbyte.execution_trace.models import ExecutionStatus
|
|
@@ -27,8 +27,14 @@ from .errors import EvalSchemaVersionError, EvalSerializationError
|
|
|
27
27
|
SCHEMA_VERSION = 1
|
|
28
28
|
"""Version of the stored run/item record layout."""
|
|
29
29
|
|
|
30
|
-
STORE_SCHEMA_VERSION =
|
|
31
|
-
"""Version of the history database layout. 2 adds the ``optimization_runs`` table (spec 0068)
|
|
30
|
+
STORE_SCHEMA_VERSION = 4
|
|
31
|
+
"""Version of the history database layout. 2 adds the ``optimization_runs`` table (spec 0068);
|
|
32
|
+
3 adds an indexed ``suite`` column on eval runs for suite-scoped listing (spec 0069); 4 adds an
|
|
33
|
+
indexed ``agent_id`` column on eval runs and optimization runs for agent-scoped listing (spec 0070)."""
|
|
34
|
+
|
|
35
|
+
SUITE_LABEL_KEY = "agentbyte.suite"
|
|
36
|
+
"""Run-label key carrying the suite name. Workbench's ``SUITE_LABEL`` re-exports this so the
|
|
37
|
+
history layer can derive ``EvalRunRecord.suite`` without importing the workbench package."""
|
|
32
38
|
|
|
33
39
|
EVIDENCE_VERSION = 1
|
|
34
40
|
"""Version of the serialized full-capture evidence envelope."""
|
|
@@ -134,10 +140,40 @@ class EvalRunRecord(BaseModel):
|
|
|
134
140
|
judge_type: str
|
|
135
141
|
criteria: list[str] | None = None
|
|
136
142
|
labels: dict[str, str] = Field(default_factory=dict)
|
|
143
|
+
suite: str | None = None
|
|
144
|
+
agent_id: str | None = None
|
|
145
|
+
agent_name: str | None = None
|
|
137
146
|
owner: str | None = None
|
|
138
147
|
worker_id: str | None = None
|
|
139
148
|
idempotency_key: str | None = None
|
|
140
149
|
previous_run_id: str | None = None
|
|
150
|
+
|
|
151
|
+
@model_validator(mode="before")
|
|
152
|
+
@classmethod
|
|
153
|
+
def _derive_suite_from_labels(cls, data: Any) -> Any:
|
|
154
|
+
"""Default ``suite`` from the suite label so suite-scoped queries work for every run."""
|
|
155
|
+
if isinstance(data, dict) and not data.get("suite"):
|
|
156
|
+
labels = data.get("labels") or {}
|
|
157
|
+
if isinstance(labels, dict) and labels.get(SUITE_LABEL_KEY):
|
|
158
|
+
data = {**data, "suite": labels[SUITE_LABEL_KEY]}
|
|
159
|
+
return data
|
|
160
|
+
|
|
161
|
+
@model_validator(mode="before")
|
|
162
|
+
@classmethod
|
|
163
|
+
def _default_agent_from_target(cls, data: Any) -> Any:
|
|
164
|
+
"""Default agent identity from ``target_id`` so agent-scoped queries work for every run.
|
|
165
|
+
|
|
166
|
+
``agent_id`` is the machine-readable identity; when a caller does not supply one it falls
|
|
167
|
+
back to ``target_id`` (the agent's name). ``agent_name`` is a human label defaulting to the
|
|
168
|
+
resolved ``agent_id`` (spec 0070).
|
|
169
|
+
"""
|
|
170
|
+
if isinstance(data, dict):
|
|
171
|
+
agent_id = data.get("agent_id") or data.get("target_id")
|
|
172
|
+
if agent_id and not data.get("agent_id"):
|
|
173
|
+
data = {**data, "agent_id": agent_id}
|
|
174
|
+
if agent_id and not data.get("agent_name"):
|
|
175
|
+
data = {**data, "agent_name": agent_id}
|
|
176
|
+
return data
|
|
141
177
|
created_at: datetime = Field(default_factory=utc_now)
|
|
142
178
|
started_at: datetime | None = None
|
|
143
179
|
finished_at: datetime | None = None
|
|
@@ -315,6 +351,8 @@ class OptimizationRunRecord(BaseModel):
|
|
|
315
351
|
|
|
316
352
|
id: str = Field(default_factory=lambda: str(uuid4()))
|
|
317
353
|
suite: str
|
|
354
|
+
agent_id: str | None = None
|
|
355
|
+
agent_name: str | None = None
|
|
318
356
|
created_at: datetime = Field(default_factory=utc_now)
|
|
319
357
|
title: str = "Optimization run"
|
|
320
358
|
optimizer: str | None = None
|
|
@@ -328,23 +366,50 @@ class OptimizationRunRecord(BaseModel):
|
|
|
328
366
|
pass_score: float = 10.0
|
|
329
367
|
trace: dict[str, Any] | None = None
|
|
330
368
|
|
|
369
|
+
@computed_field # serialized so the suite listing shows the outcome without the full trace
|
|
370
|
+
@property
|
|
371
|
+
def outcome(self) -> str:
|
|
372
|
+
"""Score-aware outcome string, from the same shared classifier the report uses (spec 0069)."""
|
|
373
|
+
from agentbyte.optim.report import classify_outcome
|
|
374
|
+
|
|
375
|
+
return str(classify_outcome(self.seed, self.best, self.seed_avg, self.best_avg))
|
|
376
|
+
|
|
331
377
|
@classmethod
|
|
332
378
|
def from_result(
|
|
333
|
-
cls,
|
|
379
|
+
cls,
|
|
380
|
+
result: Any,
|
|
381
|
+
*,
|
|
382
|
+
suite: str,
|
|
383
|
+
pass_score: float = 10.0,
|
|
384
|
+
title: str | None = None,
|
|
385
|
+
agent_id: str | None = None,
|
|
386
|
+
agent_name: str | None = None,
|
|
334
387
|
) -> OptimizationRunRecord:
|
|
335
|
-
"""Record an ``OptimizationResult`` under ``suite
|
|
336
|
-
return cls.from_trace(
|
|
388
|
+
"""Record an ``OptimizationResult`` under ``suite`` (and optionally an agent, spec 0070)."""
|
|
389
|
+
return cls.from_trace(
|
|
390
|
+
result.trace, suite=suite, pass_score=pass_score, title=title,
|
|
391
|
+
agent_id=agent_id, agent_name=agent_name,
|
|
392
|
+
)
|
|
337
393
|
|
|
338
394
|
@classmethod
|
|
339
395
|
def from_trace(
|
|
340
|
-
cls,
|
|
396
|
+
cls,
|
|
397
|
+
trace: Any,
|
|
398
|
+
*,
|
|
399
|
+
suite: str,
|
|
400
|
+
pass_score: float = 10.0,
|
|
401
|
+
title: str | None = None,
|
|
402
|
+
agent_id: str | None = None,
|
|
403
|
+
agent_name: str | None = None,
|
|
341
404
|
) -> OptimizationRunRecord:
|
|
342
|
-
"""Record an ``OptimizationTrace`` (live or loaded) under ``suite
|
|
405
|
+
"""Record an ``OptimizationTrace`` (live or loaded) under ``suite`` (and optional agent)."""
|
|
343
406
|
from agentbyte.optim.report import build_report
|
|
344
407
|
|
|
345
408
|
report = build_report(trace, title=title or suite, pass_score=pass_score)
|
|
346
409
|
return cls(
|
|
347
410
|
suite=suite,
|
|
411
|
+
agent_id=agent_id,
|
|
412
|
+
agent_name=agent_name or agent_id,
|
|
348
413
|
title=report.title,
|
|
349
414
|
optimizer=report.optimizer,
|
|
350
415
|
seed=report.seed,
|
|
@@ -92,6 +92,8 @@ class EvalRunRecorder:
|
|
|
92
92
|
dataset_revision: str | None = None,
|
|
93
93
|
criteria: list[str] | None = None,
|
|
94
94
|
target_fingerprint: str | None = None,
|
|
95
|
+
agent_id: str | None = None,
|
|
96
|
+
agent_name: str | None = None,
|
|
95
97
|
labels: dict[str, str] | None = None,
|
|
96
98
|
owner: str | None = None,
|
|
97
99
|
previous_run_id: str | None = None,
|
|
@@ -106,8 +108,8 @@ class EvalRunRecorder:
|
|
|
106
108
|
run, _ = await self.admit(
|
|
107
109
|
runner, tasks, dataset_id=dataset_id, target_id=target_id,
|
|
108
110
|
dataset_revision=dataset_revision, criteria=criteria,
|
|
109
|
-
target_fingerprint=target_fingerprint,
|
|
110
|
-
previous_run_id=previous_run_id,
|
|
111
|
+
target_fingerprint=target_fingerprint, agent_id=agent_id, agent_name=agent_name,
|
|
112
|
+
labels=labels, owner=owner, previous_run_id=previous_run_id,
|
|
111
113
|
)
|
|
112
114
|
async with contextlib.aclosing(
|
|
113
115
|
self.execute_stream(
|
|
@@ -132,6 +134,8 @@ class EvalRunRecorder:
|
|
|
132
134
|
dataset_revision: str | None = None,
|
|
133
135
|
criteria: list[str] | None = None,
|
|
134
136
|
target_fingerprint: str | None = None,
|
|
137
|
+
agent_id: str | None = None,
|
|
138
|
+
agent_name: str | None = None,
|
|
135
139
|
labels: dict[str, str] | None = None,
|
|
136
140
|
owner: str | None = None,
|
|
137
141
|
previous_run_id: str | None = None,
|
|
@@ -148,8 +152,8 @@ class EvalRunRecorder:
|
|
|
148
152
|
run, _ = await self.admit(
|
|
149
153
|
runner, tasks, dataset_id=dataset_id, target_id=target_id,
|
|
150
154
|
dataset_revision=dataset_revision, criteria=criteria,
|
|
151
|
-
target_fingerprint=target_fingerprint,
|
|
152
|
-
previous_run_id=previous_run_id,
|
|
155
|
+
target_fingerprint=target_fingerprint, agent_id=agent_id, agent_name=agent_name,
|
|
156
|
+
labels=labels, owner=owner, previous_run_id=previous_run_id,
|
|
153
157
|
)
|
|
154
158
|
async with contextlib.aclosing(
|
|
155
159
|
self.execute_stream(
|
|
@@ -169,6 +173,8 @@ class EvalRunRecorder:
|
|
|
169
173
|
dataset_revision: str | None = None,
|
|
170
174
|
criteria: list[str] | None = None,
|
|
171
175
|
target_fingerprint: str | None = None,
|
|
176
|
+
agent_id: str | None = None,
|
|
177
|
+
agent_name: str | None = None,
|
|
172
178
|
labels: dict[str, str] | None = None,
|
|
173
179
|
owner: str | None = None,
|
|
174
180
|
previous_run_id: str | None = None,
|
|
@@ -189,6 +195,8 @@ class EvalRunRecorder:
|
|
|
189
195
|
dataset_revision=dataset_revision,
|
|
190
196
|
target_id=target_id,
|
|
191
197
|
target_fingerprint=target_fingerprint,
|
|
198
|
+
agent_id=agent_id,
|
|
199
|
+
agent_name=agent_name,
|
|
192
200
|
judge_name=runner.judge.name,
|
|
193
201
|
judge_type=type(runner.judge).__qualname__,
|
|
194
202
|
criteria=list(criteria) if criteria is not None else None,
|