agentbyte 0.44.0__tar.gz → 0.44.1__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.44.0 → agentbyte-0.44.1}/CHANGELOG.md +15 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/PKG-INFO +2 -2
- {agentbyte-0.44.0 → agentbyte-0.44.1}/README.md +1 -1
- agentbyte-0.44.1/src/agentbyte/__about__.py +2 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/agents/agent.py +2 -2
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/eval/history/conformance.py +3 -3
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/eval/workbench/smoke.py +2 -2
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/execution_trace/__init__.py +2 -1
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/execution_trace/collector.py +17 -17
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/execution_trace/models.py +23 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/orchestration/base.py +2 -2
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/workflow/agent.py +2 -2
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/workflow/core/runner.py +2 -2
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/workflow/steps/agent.py +2 -1
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/workflow/steps/step.py +2 -2
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/eval/test_eval_workbench.py +24 -1
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/test_option_enums.py +19 -1
- agentbyte-0.44.0/src/agentbyte/__about__.py +0 -2
- {agentbyte-0.44.0 → agentbyte-0.44.1}/.gitignore +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/LICENSE +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/pyproject.toml +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/__init__.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/_optional.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/agents/__init__.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/agents/agent_as_tool.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/agents/base.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/agents/embedding_agent.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/agents/types.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/cancellation_token.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/catalog.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/cli/__init__.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/cli/__main__.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/cli/eval_commands.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/cli/loading.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/cli/main.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/compaction/__init__.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/compaction/counters.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/compaction/errors.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/compaction/grouping.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/compaction/strategies.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/component.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/context.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/context_providers/__init__.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/context_providers/base.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/context_providers/skill_tools.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/context_providers/skills.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/dataset/__init__.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/dataset/_aiosqlite.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/dataset/base.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/dataset/config.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/dataset/importer.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/dataset/json.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/dataset/loader.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/dataset/publish.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/dataset/publish_config.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/dataset/publishers.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/dataset/s3.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/dataset/sources.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/dataset/sqlite.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/dataset/sqlite_db.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/dataset/write_config.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/dataset/writers.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/entity.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/eval/__init__.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/eval/base.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/eval/checks/__init__.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/eval/checks/decorator.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/eval/checks/keyword.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/eval/checks/local.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/eval/checks/process.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/eval/checks/tool.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/eval/checks/types.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/eval/comparison.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/eval/eval_dataset.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/eval/history/__init__.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/eval/history/errors.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/eval/history/models.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/eval/history/recorder.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/eval/history/sql.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/eval/history/sqlite.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/eval/history/store.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/eval/history/transitions.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/eval/judges/__init__.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/eval/judges/base.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/eval/judges/composite.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/eval/judges/llm.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/eval/judges/pairwise.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/eval/judges/reference.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/eval/judges/trajectory.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/eval/judges/validation.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/eval/pairwise.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/eval/report.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/eval/runner.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/eval/splitting.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/eval/targets/__init__.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/eval/targets/agent.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/eval/targets/model.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/eval/targets/multi_turn.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/eval/targets/orchestrator.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/eval/targets/runtime.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/eval/targets/workflow.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/eval/types.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/eval/workbench/__init__.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/eval/workbench/coordinator.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/eval/workbench/jobs.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/eval/workbench/smoke_tasks.json +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/eval/workbench/suite.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/eval/workbench/verdict.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/llm/__init__.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/llm/_retry_observability.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/llm/auth.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/llm/azure/__init__.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/llm/azure/auth.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/llm/azure/chat.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/llm/azure/embedding.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/llm/azure/settings.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/llm/azure_openai.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/llm/azure_openai_embedding.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/llm/base.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/llm/embeddings_base.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/llm/openai/__init__.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/llm/openai/chat.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/llm/openai/embedding.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/llm/openai/settings.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/llm/openai_embedding.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/llm/pricing.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/llm/retry_policy.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/llm/settings.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/llm/types.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/logger.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/memory/__init__.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/memory/base.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/messages.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/middleware/__init__.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/middleware/base.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/middleware/otel.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/middleware/retry.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/middleware/sql_usage.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/middleware/usage_logger.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/notebook.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/optim/__init__.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/optim/base.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/optim/config.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/optim/gepa.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/optim/mipro.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/optim/pareto.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/optim/reflective.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/optim/spec.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/optim/trace.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/orchestration/__init__.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/orchestration/ai.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/orchestration/handoff.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/orchestration/plan.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/orchestration/policies.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/orchestration/round_robin.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/presets/__init__.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/presets/agents.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/presets/clients.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/presets/instruction_registry.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/presets/instructions/orchestrator.yaml +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/presets/instructions/query_rewriter.yaml +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/presets/instructions/researcher.yaml +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/presets/instructions/reviewer.yaml +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/presets/instructions/writer.yaml +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/presets/orchestration.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/presets/skills/contracts-analyst/SKILL.md +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/presets/skills/hr-analyst/SKILL.md +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/presets/skills/hr-analyst/resources/departments.md +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/presets/skills/hr-analyst/resources/employees.md +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/presets/skills/hr-analyst/resources/payroll.md +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/presets/streaming.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/presets/workflow.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/session_store.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/skills/__init__.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/skills/base.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/skills/resources.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/skills/scripts.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/skills/sources.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/skills/validation.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/termination/__init__.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/termination/base.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/termination/cancellation.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/termination/composite.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/termination/consecutive_agent.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/termination/external.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/termination/function_call.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/termination/handoff.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/termination/max_message.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/termination/predicate.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/termination/source.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/termination/text_mention.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/termination/timeout.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/termination/token_usage.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/tools/__init__.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/tools/base.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/tools/coding_tools.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/tools/core_tools.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/tools/decorator.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/tools/memory_tool.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/tools/research_tools.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/types.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/webui/__init__.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/webui/discovery.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/webui/eval_routes.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/webui/execution.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/webui/models.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/webui/registry.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/webui/server.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/webui/session_store.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/webui/sessions.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/webui/ui/assets/index-BsS4WYZu.css +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/webui/ui/assets/index-tGvO1yue.js +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/webui/ui/index.html +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/webui/ui/vite.svg +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/workflow/__init__.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/workflow/core/__init__.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/workflow/core/_structure_hash.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/workflow/core/checkpoint.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/workflow/core/models.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/workflow/core/workflow.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/workflow/defaults.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/workflow/errors.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/workflow/loader.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/workflow/schema.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/workflow/schema_utils.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/workflow/sqlite_checkpoint.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/workflow/steps/__init__.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/workflow/steps/echo.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/workflow/steps/function.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/workflow/steps/http.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/workflow/steps/subworkflow.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/workflow/steps/transform.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/workflow/visualizer.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/agents/test_agent_as_tool.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/agents/test_agent_basic.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/agents/test_agent_context_providers.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/agents/test_agent_error_response.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/agents/test_agent_event_types.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/agents/test_agent_memory_integration.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/agents/test_agent_middleware_integration.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/agents/test_agent_response_accessors.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/agents/test_agent_retry_middleware.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/agents/test_agent_stop_at_tools.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/agents/test_agent_stream_events.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/agents/test_embedding_agent.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/agents/test_tool_approval.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/agents/test_tool_batch_resolution.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/agents/test_tool_metadata.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/cli/test_loading.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/cli/test_registry_check.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/compaction/test_compaction.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/context_providers/__init__.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/context_providers/test_skill_tools.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/context_providers/test_skills_provider.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/dataset/fake_s3.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/dataset/test_dataset_exit.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/dataset/test_loader.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/dataset/test_multi_table.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/dataset/test_publish.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/dataset/test_sqlite_db.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/eval/test_eval_dataset.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/eval/test_eval_history.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/eval/test_eval_history_backends.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/eval/test_eval_jobs.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/eval/test_execution_trajectories.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/eval/test_multi_turn.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/eval/test_pairwise.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/eval/test_phase1_runner_and_targets.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/eval/test_phase2_checks_and_reports.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/eval/test_score_integrity.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/eval/test_splitting.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/eval/test_types_and_judges.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/examples/test_compaction_webapp.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/llm/test_azure_client.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/llm/test_azure_embedding_client.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/llm/test_llm_types.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/llm/test_openai_client.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/llm/test_openai_embedding_client.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/llm/test_pricing.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/llm/test_retry_observability.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/llm/test_retry_policy_api.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/llm/test_retryable_error_substrings.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/memory/test_memory.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/middleware/test_context_compaction.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/middleware/test_deduplicate_tool_result.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/middleware/test_middleware_chain.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/middleware/test_otel.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/middleware/test_retry_middleware.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/middleware/test_sql_usage.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/middleware/test_usage_logger.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/optim/__init__.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/optim/test_base.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/optim/test_base_integration.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/optim/test_config.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/optim/test_description_tunable.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/optim/test_gepa.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/optim/test_mipro.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/optim/test_orchestrator_optim.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/optim/test_pareto.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/optim/test_reflective.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/optim/test_score_integrity.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/optim/test_spec.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/optim/test_trace.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/orchestration/test_ai_orchestrator.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/orchestration/test_base_orchestrator.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/orchestration/test_handoff_orchestrator.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/orchestration/test_history_tool_call_pairing.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/orchestration/test_orchestration_usage_breakdown.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/orchestration/test_orchestrator_agent_contract.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/orchestration/test_orchestrator_finalization.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/orchestration/test_orchestrator_member_events.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/orchestration/test_orchestrator_otel.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/orchestration/test_orchestrator_synthesis.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/orchestration/test_plan_orchestrator.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/orchestration/test_round_robin.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/presets/test_agents.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/presets/test_clients.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/presets/test_instruction_registry.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/presets/test_orchestration.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/presets/test_streaming.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/presets/test_workflow.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/skills/__init__.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/skills/test_base.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/skills/test_resources.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/skills/test_scripts.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/skills/test_sources.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/termination/test_base.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/termination/test_cancellation.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/termination/test_composite.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/termination/test_consecutive_agent.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/termination/test_external.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/termination/test_function_call.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/termination/test_handoff.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/termination/test_max_message.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/termination/test_predicate.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/termination/test_source.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/termination/test_text_mention.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/termination/test_timeout.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/termination/test_token_usage.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/test_cancellation_token.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/test_context.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/test_logger.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/test_messages.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/test_optional_extras.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/test_package_api.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/test_session_store.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/test_types.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/test_vanilla_chunker.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/tools/test_coding_tools.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/tools/test_memory_tool.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/tools/test_research_tools.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/tools/test_tools.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/webui/__init__.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/webui/helpers.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/webui/test_eval_routes.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/webui/test_execution.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/webui/test_package_api.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/webui/test_registry.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/webui/test_server.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/webui/test_sessions.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/webui/test_workflow_streaming.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/workflow/recovery_worker.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/workflow/test_agent_step_imports.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/workflow/test_checkpoint.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/workflow/test_subworkflow_step.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/workflow/test_workflow_agent.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/workflow/test_workflow_class.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/workflow/test_workflow_models.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/workflow/test_workflow_reliability.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/workflow/test_workflow_runner.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/workflow/test_workflow_schema.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/workflow/test_workflow_steps.py +0 -0
- {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/workflow/test_workflow_visualizer.py +0 -0
|
@@ -6,6 +6,21 @@ The format follows Keep a Changelog principles and semantic versioning.
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
+
## [0.44.1] - 2026-10-05
|
|
10
|
+
|
|
11
|
+
### Added
|
|
12
|
+
|
|
13
|
+
- `agentbyte.execution_trace.SpanKind` (spec 0067): `StrEnum` of the framework's own span kinds
|
|
14
|
+
(`agent`, `invocation`, `orchestrator`, `workflow`, `workflow_agent`, `step`), used by
|
|
15
|
+
`trace_stream` and the collector. `ExecutionSpan.kind` stays an open `str`, so
|
|
16
|
+
`trace_scope(kind=...)` / `TraceCollector.start` still accept caller-defined kinds.
|
|
17
|
+
|
|
18
|
+
### Fixed
|
|
19
|
+
|
|
20
|
+
- Flaky `test_cli_interrupt_exits_130_and_records_cancelled_run`: it sent SIGINT as soon as the run
|
|
21
|
+
was admitted, sometimes before the item started, so the item was recorded `not_started` instead
|
|
22
|
+
of `cancelled`. The test now waits (read-only history store) until the item is running.
|
|
23
|
+
|
|
9
24
|
## [0.44.0] - 2026-10-05
|
|
10
25
|
|
|
11
26
|
### Changed
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: agentbyte
|
|
3
|
-
Version: 0.44.
|
|
3
|
+
Version: 0.44.1
|
|
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
|
|
@@ -77,7 +77,7 @@ Description-Content-Type: text/markdown
|
|
|
77
77
|
|
|
78
78
|
Agentbyte is an observability-first agentic AI framework for building and studying multiagent systems with a learning-first, implementation-oriented workflow.
|
|
79
79
|
|
|
80
|
-
Current release: **0.44.
|
|
80
|
+
Current release: **0.44.1**
|
|
81
81
|
|
|
82
82
|
## Building an Agent
|
|
83
83
|
|
|
@@ -12,7 +12,7 @@ from typing import List, Optional, Union
|
|
|
12
12
|
|
|
13
13
|
from agentbyte.cancellation_token import CancellationToken
|
|
14
14
|
from agentbyte.context import AgentContext
|
|
15
|
-
from agentbyte.execution_trace import trace_stream
|
|
15
|
+
from agentbyte.execution_trace import SpanKind, trace_stream
|
|
16
16
|
from agentbyte.llm.types import ChatCompletionChunk
|
|
17
17
|
from agentbyte.messages import (
|
|
18
18
|
AssistantMessage,
|
|
@@ -445,7 +445,7 @@ class Agent(BaseAgent):
|
|
|
445
445
|
)
|
|
446
446
|
yield ToolApprovalEvent(source=self.name, approval_request=request)
|
|
447
447
|
|
|
448
|
-
@trace_stream(
|
|
448
|
+
@trace_stream(SpanKind.AGENT)
|
|
449
449
|
async def run_stream(
|
|
450
450
|
self,
|
|
451
451
|
task: Optional[Union[str, UserMessage, List[Message]]] = None,
|
|
@@ -23,7 +23,7 @@ from pydantic import BaseModel
|
|
|
23
23
|
from agentbyte.eval.base import BaseEvalJudge, BaseEvalTarget, JudgeScoringError
|
|
24
24
|
from agentbyte.eval.runner import EvalRunner
|
|
25
25
|
from agentbyte.eval.types import EvalScore, EvalTask, EvalTrajectory, ScoringStatus, WorkflowEvalTask
|
|
26
|
-
from agentbyte.execution_trace.models import ExecutionEvent, ExecutionSpan, ExecutionTrace
|
|
26
|
+
from agentbyte.execution_trace.models import ExecutionEvent, ExecutionSpan, ExecutionTrace, SpanKind
|
|
27
27
|
from agentbyte.messages import AssistantMessage, UserMessage, Usage
|
|
28
28
|
|
|
29
29
|
from .errors import (
|
|
@@ -59,7 +59,7 @@ class _Target(BaseEvalTarget):
|
|
|
59
59
|
await asyncio.sleep(task.metadata.get("delay", 0))
|
|
60
60
|
if task.metadata.get("target_fails"):
|
|
61
61
|
raise RuntimeError("target failed")
|
|
62
|
-
span = ExecutionSpan(kind=
|
|
62
|
+
span = ExecutionSpan(kind=SpanKind.AGENT, name="conformance", status="completed")
|
|
63
63
|
trace = ExecutionTrace(spans=[span], events=[ExecutionEvent(span_id=span.id, kind="step")])
|
|
64
64
|
return EvalTrajectory(
|
|
65
65
|
task=task,
|
|
@@ -222,7 +222,7 @@ async def check_full_evidence_round_trips_as_data(store: EvalRunStore) -> None:
|
|
|
222
222
|
task=task,
|
|
223
223
|
messages=[*turn, *turn, AssistantMessage(content="", source="a", structured_content=_Answer(city="Rome"))],
|
|
224
224
|
success=True,
|
|
225
|
-
trace=ExecutionTrace(spans=[ExecutionSpan(kind=
|
|
225
|
+
trace=ExecutionTrace(spans=[ExecutionSpan(kind=SpanKind.AGENT, name="a")]),
|
|
226
226
|
)
|
|
227
227
|
score = EvalScore(overall=8.0, reasoning={"q": "why"}, trajectory=trajectory)
|
|
228
228
|
run = await _started(store, 1)
|
|
@@ -18,7 +18,7 @@ from agentbyte.cancellation_token import CancellationToken
|
|
|
18
18
|
from agentbyte.eval.base import BaseEvalTarget
|
|
19
19
|
from agentbyte.eval.judges import ContainsJudge
|
|
20
20
|
from agentbyte.eval.types import EvalTask, EvalTrajectory
|
|
21
|
-
from agentbyte.execution_trace.models import ExecutionSpan, ExecutionStatus, ExecutionTrace
|
|
21
|
+
from agentbyte.execution_trace.models import ExecutionSpan, ExecutionStatus, ExecutionTrace, SpanKind
|
|
22
22
|
from agentbyte.messages import AssistantMessage, UserMessage
|
|
23
23
|
|
|
24
24
|
from .suite import EvalSuite, EvalSuiteRegistry
|
|
@@ -37,7 +37,7 @@ class ArithmeticTarget(BaseEvalTarget):
|
|
|
37
37
|
self, task: EvalTask, cancellation_token: CancellationToken | None = None
|
|
38
38
|
) -> EvalTrajectory:
|
|
39
39
|
started = time.perf_counter()
|
|
40
|
-
span = ExecutionSpan(kind=
|
|
40
|
+
span = ExecutionSpan(kind=SpanKind.AGENT, name=self.name, input=task.input)
|
|
41
41
|
match = _QUESTION.search(task.input)
|
|
42
42
|
if match is None:
|
|
43
43
|
answer, status, error = None, ExecutionStatus.FAILED, "unsupported_question"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"""Runtime-neutral execution evidence, independent of evaluation and OpenTelemetry."""
|
|
2
2
|
|
|
3
|
-
from .models import ExecutionEvent, ExecutionSpan, ExecutionTrace,
|
|
3
|
+
from .models import ExecutionEvent, ExecutionSpan, ExecutionStatus, ExecutionTrace, SpanKind
|
|
4
4
|
from .collector import (
|
|
5
5
|
TraceCollector,
|
|
6
6
|
current_collector,
|
|
@@ -14,6 +14,7 @@ __all__ = [
|
|
|
14
14
|
"ExecutionSpan",
|
|
15
15
|
"ExecutionTrace",
|
|
16
16
|
"ExecutionStatus",
|
|
17
|
+
"SpanKind",
|
|
17
18
|
"TraceCollector",
|
|
18
19
|
"current_collector",
|
|
19
20
|
"trace_call",
|
|
@@ -16,7 +16,7 @@ from pydantic import BaseModel
|
|
|
16
16
|
|
|
17
17
|
from agentbyte.messages import BaseMessage, UserMessage, SystemMessage
|
|
18
18
|
from agentbyte.types import OrchestrationEvent
|
|
19
|
-
from .models import ExecutionEvent, ExecutionSpan, ExecutionTrace,
|
|
19
|
+
from .models import ExecutionEvent, ExecutionSpan, ExecutionStatus, ExecutionTrace, SpanKind
|
|
20
20
|
|
|
21
21
|
if TYPE_CHECKING:
|
|
22
22
|
from agentbyte.types import TurnKind
|
|
@@ -79,8 +79,8 @@ class TraceCollector:
|
|
|
79
79
|
_parent.reset(parent)
|
|
80
80
|
_collector.reset(token)
|
|
81
81
|
|
|
82
|
-
def start(self, kind: str, name: str, **kwargs: Any) -> ExecutionSpan:
|
|
83
|
-
span = ExecutionSpan(kind=kind, name=name, parent_id=_parent.get(), **kwargs)
|
|
82
|
+
def start(self, kind: SpanKind | str, name: str, **kwargs: Any) -> ExecutionSpan:
|
|
83
|
+
span = ExecutionSpan(kind=str(kind), name=name, parent_id=_parent.get(), **kwargs)
|
|
84
84
|
self.trace.spans.append(span)
|
|
85
85
|
return span
|
|
86
86
|
|
|
@@ -95,7 +95,7 @@ class TraceCollector:
|
|
|
95
95
|
if isinstance(item, BaseMessage):
|
|
96
96
|
if (
|
|
97
97
|
self.capture_payloads
|
|
98
|
-
and span.kind ==
|
|
98
|
+
and span.kind == SpanKind.AGENT
|
|
99
99
|
and not isinstance(item, (UserMessage, SystemMessage))
|
|
100
100
|
and item not in span.messages
|
|
101
101
|
):
|
|
@@ -107,7 +107,7 @@ class TraceCollector:
|
|
|
107
107
|
if item.needs_approval and self.capture_payloads:
|
|
108
108
|
span.metadata["pending_requests"] = snapshot(item.approval_requests)
|
|
109
109
|
span.usage = item.usage
|
|
110
|
-
if span.kind ==
|
|
110
|
+
if span.kind == SpanKind.AGENT:
|
|
111
111
|
span.usage = span.usage + self.trace.aggregate_usage(span.id)
|
|
112
112
|
span.error = item.error.message if item.error is not None else None
|
|
113
113
|
orchestration = getattr(item, "orchestration", None)
|
|
@@ -117,7 +117,7 @@ class TraceCollector:
|
|
|
117
117
|
span.output = item.final_content
|
|
118
118
|
return
|
|
119
119
|
if hasattr(item, "event_type") or isinstance(item, OrchestrationEvent):
|
|
120
|
-
if self.capture_payloads and span.kind !=
|
|
120
|
+
if self.capture_payloads and span.kind != SpanKind.WORKFLOW_AGENT:
|
|
121
121
|
self.trace.events.append(
|
|
122
122
|
ExecutionEvent(
|
|
123
123
|
span_id=span.id,
|
|
@@ -136,7 +136,7 @@ class TraceCollector:
|
|
|
136
136
|
|
|
137
137
|
|
|
138
138
|
@contextmanager
|
|
139
|
-
def trace_scope(kind: str, name: str, **kwargs: Any) -> Iterator[ExecutionSpan | None]:
|
|
139
|
+
def trace_scope(kind: SpanKind | str, name: str, **kwargs: Any) -> Iterator[ExecutionSpan | None]:
|
|
140
140
|
"""Record a scope only when capture is active."""
|
|
141
141
|
collector = current_collector()
|
|
142
142
|
if collector is None:
|
|
@@ -164,7 +164,7 @@ def trace_scope(kind: str, name: str, **kwargs: Any) -> Iterator[ExecutionSpan |
|
|
|
164
164
|
_parent.reset(token)
|
|
165
165
|
|
|
166
166
|
|
|
167
|
-
def trace_call(kind: str) -> Callable:
|
|
167
|
+
def trace_call(kind: SpanKind | str) -> Callable:
|
|
168
168
|
"""Instrument an async runtime method without changing its public signature."""
|
|
169
169
|
|
|
170
170
|
def decorate(fn):
|
|
@@ -193,7 +193,7 @@ async def capture_agent_call(agent: Any, **kwargs: Any) -> Any:
|
|
|
193
193
|
context = kwargs.get("context")
|
|
194
194
|
history = list(context.messages) if context is not None else []
|
|
195
195
|
with trace_scope(
|
|
196
|
-
|
|
196
|
+
SpanKind.INVOCATION, getattr(agent, "name", type(agent).__name__)
|
|
197
197
|
) as span:
|
|
198
198
|
try:
|
|
199
199
|
result = await agent.run(**kwargs)
|
|
@@ -217,7 +217,7 @@ async def capture_agent_call(agent: Any, **kwargs: Any) -> Any:
|
|
|
217
217
|
return result
|
|
218
218
|
|
|
219
219
|
|
|
220
|
-
def trace_stream(kind: str, *, accounting: bool = False) -> Callable:
|
|
220
|
+
def trace_stream(kind: SpanKind | str, *, accounting: bool = False) -> Callable:
|
|
221
221
|
"""Instrument streams, keeping collector/parent bindings out of consumer code."""
|
|
222
222
|
|
|
223
223
|
def decorate(fn):
|
|
@@ -267,13 +267,13 @@ def trace_stream(kind: str, *, accounting: bool = False) -> Callable:
|
|
|
267
267
|
try:
|
|
268
268
|
item = await anext(stream)
|
|
269
269
|
is_forwarded_member_event = (
|
|
270
|
-
kind ==
|
|
270
|
+
kind == SpanKind.ORCHESTRATOR
|
|
271
271
|
and hasattr(item, "event_type")
|
|
272
272
|
and getattr(item, "source", "orchestrator") != "orchestrator"
|
|
273
273
|
)
|
|
274
274
|
if not is_forwarded_member_event:
|
|
275
275
|
collector.observe(span, item)
|
|
276
|
-
if kind ==
|
|
276
|
+
if kind == SpanKind.INVOCATION and hasattr(item, "finish_reason"):
|
|
277
277
|
if any(
|
|
278
278
|
s.parent_id == span.id for s in collector.trace.spans
|
|
279
279
|
):
|
|
@@ -294,7 +294,7 @@ def trace_stream(kind: str, *, accounting: bool = False) -> Callable:
|
|
|
294
294
|
collector.incomplete(
|
|
295
295
|
"Custom agent exposes response evidence only"
|
|
296
296
|
)
|
|
297
|
-
if kind ==
|
|
297
|
+
if kind == SpanKind.WORKFLOW_AGENT and hasattr(item, "finish_reason"):
|
|
298
298
|
item.usage = collector.trace.aggregate_usage(
|
|
299
299
|
span.id
|
|
300
300
|
).model_copy(
|
|
@@ -314,7 +314,7 @@ def trace_stream(kind: str, *, accounting: bool = False) -> Callable:
|
|
|
314
314
|
not original_verbose
|
|
315
315
|
and "verbose" in signature.parameters
|
|
316
316
|
and not (
|
|
317
|
-
kind ==
|
|
317
|
+
kind == SpanKind.WORKFLOW_AGENT
|
|
318
318
|
and bound.arguments.get("stream_tokens", False)
|
|
319
319
|
and getattr(item, "event_type", None) == "step_event"
|
|
320
320
|
)
|
|
@@ -332,7 +332,7 @@ def trace_stream(kind: str, *, accounting: bool = False) -> Callable:
|
|
|
332
332
|
else ExecutionStatus.FAILED
|
|
333
333
|
)
|
|
334
334
|
span.error = str(exc) or type(exc).__name__
|
|
335
|
-
if span.kind ==
|
|
335
|
+
if span.kind == SpanKind.AGENT and span.usage is None:
|
|
336
336
|
collector.incomplete(
|
|
337
337
|
"Agent ended without reporting usage", usage=True
|
|
338
338
|
)
|
|
@@ -347,7 +347,7 @@ def trace_stream(kind: str, *, accounting: bool = False) -> Callable:
|
|
|
347
347
|
_collector.reset(ct)
|
|
348
348
|
if span.status == "running":
|
|
349
349
|
span.status = ExecutionStatus.COMPLETED
|
|
350
|
-
if kind ==
|
|
350
|
+
if kind == SpanKind.ORCHESTRATOR:
|
|
351
351
|
span.usage = collector.trace.aggregate_usage(span.id)
|
|
352
352
|
for usage in self._get_additional_usage_stats():
|
|
353
353
|
span.usage = span.usage + usage
|
|
@@ -358,7 +358,7 @@ def trace_stream(kind: str, *, accounting: bool = False) -> Callable:
|
|
|
358
358
|
return decorate
|
|
359
359
|
|
|
360
360
|
|
|
361
|
-
@trace_stream(
|
|
361
|
+
@trace_stream(SpanKind.INVOCATION)
|
|
362
362
|
async def capture_agent_stream(
|
|
363
363
|
agent: Any,
|
|
364
364
|
task: Any,
|
|
@@ -12,6 +12,28 @@ from pydantic import BaseModel, Field
|
|
|
12
12
|
from agentbyte.messages import Message, Usage
|
|
13
13
|
|
|
14
14
|
|
|
15
|
+
class SpanKind(StrEnum):
|
|
16
|
+
"""The span kinds the framework itself records (spec 0067).
|
|
17
|
+
|
|
18
|
+
``ExecutionSpan.kind`` stays an open ``str``: code may open its own spans with
|
|
19
|
+
``trace_scope(kind=...)`` or ``TraceCollector.start``. Built-in kinds compare equal to
|
|
20
|
+
these members.
|
|
21
|
+
"""
|
|
22
|
+
|
|
23
|
+
AGENT = "agent"
|
|
24
|
+
"""One ``Agent.run_stream`` call."""
|
|
25
|
+
INVOCATION = "invocation"
|
|
26
|
+
"""A single captured call into an agent or step runtime."""
|
|
27
|
+
ORCHESTRATOR = "orchestrator"
|
|
28
|
+
"""One team run (any orchestration pattern)."""
|
|
29
|
+
WORKFLOW = "workflow"
|
|
30
|
+
"""One ``WorkflowRunner`` run."""
|
|
31
|
+
WORKFLOW_AGENT = "workflow_agent"
|
|
32
|
+
"""A ``workflow.as_agent()`` wrapper run."""
|
|
33
|
+
STEP = "step"
|
|
34
|
+
"""One attempt of a workflow step."""
|
|
35
|
+
|
|
36
|
+
|
|
15
37
|
class ExecutionStatus(StrEnum):
|
|
16
38
|
"""Lifecycle status of a traced execution."""
|
|
17
39
|
|
|
@@ -39,6 +61,7 @@ class ExecutionSpan(BaseModel):
|
|
|
39
61
|
id: str = Field(default_factory=lambda: str(uuid4()))
|
|
40
62
|
parent_id: str | None = None
|
|
41
63
|
kind: str
|
|
64
|
+
"""A ``SpanKind`` value for framework spans, or any caller-chosen kind."""
|
|
42
65
|
name: str
|
|
43
66
|
step_id: str | None = None
|
|
44
67
|
attempt: int | None = None
|
|
@@ -13,7 +13,7 @@ from typing import Any, Dict, List, Optional, Sequence, Union, cast
|
|
|
13
13
|
|
|
14
14
|
from agentbyte.agents.base import BaseAgent
|
|
15
15
|
from agentbyte.agents.types import AgentErrorDetail, AgentResponse, Usage
|
|
16
|
-
from agentbyte.execution_trace import trace_stream
|
|
16
|
+
from agentbyte.execution_trace import SpanKind, trace_stream
|
|
17
17
|
from agentbyte.execution_trace.collector import capture_agent_stream, normalize_status
|
|
18
18
|
from agentbyte.cancellation_token import CancellationToken
|
|
19
19
|
from agentbyte.compaction.grouping import MessageGroup, group_messages
|
|
@@ -230,7 +230,7 @@ class BaseOrchestrator(ABC):
|
|
|
230
230
|
select_final_message=False,
|
|
231
231
|
)
|
|
232
232
|
|
|
233
|
-
@trace_stream(
|
|
233
|
+
@trace_stream(SpanKind.ORCHESTRATOR)
|
|
234
234
|
async def run_stream(
|
|
235
235
|
self,
|
|
236
236
|
task: Union[str, UserMessage, List[Message], None] = None,
|
|
@@ -12,7 +12,7 @@ from agentbyte.agents.base import BaseAgent
|
|
|
12
12
|
from agentbyte.agents.types import AgentResponse, Usage
|
|
13
13
|
from agentbyte.cancellation_token import CancellationToken
|
|
14
14
|
from agentbyte.context import AgentContext
|
|
15
|
-
from agentbyte.execution_trace import trace_stream
|
|
15
|
+
from agentbyte.execution_trace import SpanKind, trace_stream
|
|
16
16
|
from agentbyte.messages import AssistantMessage, BaseMessage, Message, UserMessage
|
|
17
17
|
from agentbyte.middleware import MiddlewareChain
|
|
18
18
|
from agentbyte.workflow.core.checkpoint import (
|
|
@@ -109,7 +109,7 @@ class WorkflowAgent(BaseAgent):
|
|
|
109
109
|
raise RuntimeError(msg)
|
|
110
110
|
return final_response
|
|
111
111
|
|
|
112
|
-
@trace_stream(
|
|
112
|
+
@trace_stream(SpanKind.WORKFLOW_AGENT, accounting=True)
|
|
113
113
|
async def run_stream(
|
|
114
114
|
self,
|
|
115
115
|
task: Any = None,
|
|
@@ -16,7 +16,7 @@ from uuid import uuid4
|
|
|
16
16
|
from pydantic import BaseModel, TypeAdapter
|
|
17
17
|
|
|
18
18
|
from agentbyte.cancellation_token import CancellationToken
|
|
19
|
-
from agentbyte.execution_trace import trace_stream
|
|
19
|
+
from agentbyte.execution_trace import SpanKind, trace_stream
|
|
20
20
|
from agentbyte.workflow.core.checkpoint import (
|
|
21
21
|
CheckpointConfig,
|
|
22
22
|
CheckpointType,
|
|
@@ -132,7 +132,7 @@ class WorkflowRunner:
|
|
|
132
132
|
raise RuntimeError(msg)
|
|
133
133
|
return final_execution
|
|
134
134
|
|
|
135
|
-
@trace_stream(
|
|
135
|
+
@trace_stream(SpanKind.WORKFLOW)
|
|
136
136
|
async def run_stream(
|
|
137
137
|
self,
|
|
138
138
|
workflow: Workflow,
|
|
@@ -12,6 +12,7 @@ from agentbyte.agents import AgentResponse, BaseAgent
|
|
|
12
12
|
from agentbyte.cancellation_token import CancellationToken
|
|
13
13
|
from agentbyte.context import AgentContext, ToolApprovalResponse
|
|
14
14
|
from agentbyte.execution_trace.collector import normalize_status, trace_stream
|
|
15
|
+
from agentbyte.execution_trace.models import SpanKind
|
|
15
16
|
from agentbyte.workflow.core.models import StepMetadata, WorkflowContext, WorkflowPendingRequest
|
|
16
17
|
from agentbyte.workflow.steps.step import BaseStep
|
|
17
18
|
|
|
@@ -79,7 +80,7 @@ class AgentStep(
|
|
|
79
80
|
raise ValueError("Provide exactly one decision for every pending agent tool approval")
|
|
80
81
|
return decisions
|
|
81
82
|
|
|
82
|
-
@trace_stream(
|
|
83
|
+
@trace_stream(SpanKind.INVOCATION)
|
|
83
84
|
async def _agent_stream(
|
|
84
85
|
self, task: str | None, context: AgentContext | None,
|
|
85
86
|
cancellation_token: CancellationToken | None, verbose: bool, stream_tokens: bool,
|
|
@@ -9,7 +9,7 @@ from typing import Any, Generic, Type
|
|
|
9
9
|
|
|
10
10
|
from agentbyte.execution_trace import current_collector, trace_scope
|
|
11
11
|
from agentbyte.execution_trace.collector import snapshot
|
|
12
|
-
from agentbyte.execution_trace.models import ExecutionStatus
|
|
12
|
+
from agentbyte.execution_trace.models import ExecutionStatus, SpanKind
|
|
13
13
|
|
|
14
14
|
from agentbyte.workflow.core.models import (
|
|
15
15
|
InputType,
|
|
@@ -140,7 +140,7 @@ class BaseStep(Generic[InputType, OutputType], ABC):
|
|
|
140
140
|
) -> dict[str, Any]:
|
|
141
141
|
collector = current_collector()
|
|
142
142
|
with trace_scope(
|
|
143
|
-
|
|
143
|
+
SpanKind.STEP, self.metadata.name, step_id=self.step_id, attempt=attempt + 1
|
|
144
144
|
) as span:
|
|
145
145
|
if span is not None and collector.capture_payloads:
|
|
146
146
|
span.input = snapshot(input_data)
|
|
@@ -16,7 +16,14 @@ from pathlib import Path
|
|
|
16
16
|
import pytest
|
|
17
17
|
|
|
18
18
|
from agentbyte.eval import BaseEvalJudge, BaseEvalTarget, ContainsJudge, EvalScore, EvalTask, JudgeScoringError
|
|
19
|
-
from agentbyte.eval.history import
|
|
19
|
+
from agentbyte.eval.history import (
|
|
20
|
+
EvalItemRecord,
|
|
21
|
+
EvalRunRecord,
|
|
22
|
+
EvalRunRecorder,
|
|
23
|
+
ItemState,
|
|
24
|
+
MemoryEvalRunStore,
|
|
25
|
+
SQLiteEvalRunStore,
|
|
26
|
+
)
|
|
20
27
|
from agentbyte.eval.runner import EvalRunner
|
|
21
28
|
from agentbyte.eval.workbench import (
|
|
22
29
|
MIN_SCORE_LABEL,
|
|
@@ -427,6 +434,19 @@ def test_cli_results_for_unknown_run_exit_2(cli_env, tmp_path) -> None:
|
|
|
427
434
|
assert result.returncode == 2 and "Unknown evaluation run" in result.stderr
|
|
428
435
|
|
|
429
436
|
|
|
437
|
+
async def _wait_for_running_item(history: Path, run_id: str, timeout: float = 30.0) -> None:
|
|
438
|
+
"""Poll the CLI's history (as a read-only store) until the run's item is running."""
|
|
439
|
+
loop = asyncio.get_running_loop()
|
|
440
|
+
deadline = loop.time() + timeout
|
|
441
|
+
async with SQLiteEvalRunStore(history, writer=False) as store:
|
|
442
|
+
while loop.time() < deadline:
|
|
443
|
+
items = await store.list_items(run_id)
|
|
444
|
+
if any(item.state == ItemState.RUNNING for item in items):
|
|
445
|
+
return
|
|
446
|
+
await asyncio.sleep(0.02)
|
|
447
|
+
raise AssertionError(f"run {run_id} never started its item")
|
|
448
|
+
|
|
449
|
+
|
|
430
450
|
@pytest.mark.skipif(sys.platform == "win32", reason="POSIX signals")
|
|
431
451
|
def test_cli_interrupt_exits_130_and_records_cancelled_run(cli_env, tmp_path) -> None:
|
|
432
452
|
history = tmp_path / "slow.sqlite"
|
|
@@ -439,6 +459,9 @@ def test_cli_interrupt_exits_130_and_records_cancelled_run(cli_env, tmp_path) ->
|
|
|
439
459
|
line = process.stderr.readline()
|
|
440
460
|
assert "started" in line, line
|
|
441
461
|
run_id = line.split()[1]
|
|
462
|
+
# "started" prints when the run is admitted, before its item runs. Interrupting a
|
|
463
|
+
# still-pending item records it as not_started, so wait until it is running.
|
|
464
|
+
asyncio.run(_wait_for_running_item(history, run_id))
|
|
442
465
|
process.send_signal(signal.SIGINT)
|
|
443
466
|
_, stderr = process.communicate(timeout=60)
|
|
444
467
|
finally:
|
|
@@ -17,7 +17,7 @@ from pydantic import ValidationError
|
|
|
17
17
|
from agentbyte.eval import PairwiseWinner, ScoringStatus
|
|
18
18
|
from agentbyte.eval.history import CaptureMode, EvidenceStatus, ItemState, RunStatus, TaskType
|
|
19
19
|
from agentbyte.eval.workbench.verdict import ItemOutcome
|
|
20
|
-
from agentbyte.execution_trace import ExecutionStatus
|
|
20
|
+
from agentbyte.execution_trace import ExecutionSpan, ExecutionStatus, SpanKind, TraceCollector
|
|
21
21
|
from agentbyte.middleware.base import OperationType, RetrySequenceOutcome
|
|
22
22
|
from agentbyte.orchestration import (
|
|
23
23
|
AgentHistoryPolicy,
|
|
@@ -144,6 +144,24 @@ class TestStrEnumBehaviour:
|
|
|
144
144
|
assert "passed" in set(ItemOutcome) and CaptureMode.FULL == "full"
|
|
145
145
|
|
|
146
146
|
|
|
147
|
+
class TestSpanKind:
|
|
148
|
+
"""Built-in span kinds are a StrEnum; the span field stays open for caller kinds."""
|
|
149
|
+
|
|
150
|
+
def test_builtin_kinds(self) -> None:
|
|
151
|
+
assert [k.value for k in SpanKind] == [
|
|
152
|
+
"agent", "invocation", "orchestrator", "workflow", "workflow_agent", "step",
|
|
153
|
+
]
|
|
154
|
+
|
|
155
|
+
def test_builtin_member_is_stored_as_plain_value(self) -> None:
|
|
156
|
+
span = TraceCollector().start(SpanKind.AGENT, "a")
|
|
157
|
+
|
|
158
|
+
assert span.kind == SpanKind.AGENT == "agent"
|
|
159
|
+
assert span.model_dump(mode="json")["kind"] == "agent"
|
|
160
|
+
|
|
161
|
+
def test_caller_defined_kind_is_allowed(self) -> None:
|
|
162
|
+
assert ExecutionSpan(kind="retrieval", name="vector search").kind == "retrieval"
|
|
163
|
+
|
|
164
|
+
|
|
147
165
|
# Multi-value Literals allowed to stay: message-role / entity-type tags of a discriminated
|
|
148
166
|
# union, where each concrete class narrows the base to one value.
|
|
149
167
|
_ALLOWED_LITERALS = {
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|