agentbyte 0.20.3__tar.gz → 0.20.5__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.20.3 → agentbyte-0.20.5}/.github/skills/agentbyte-agent/SKILL.md +64 -2
- {agentbyte-0.20.3 → agentbyte-0.20.5}/.github/skills/agentbyte-ai-driven-orchestration/SKILL.md +11 -6
- {agentbyte-0.20.3 → agentbyte-0.20.5}/.github/skills/agentbyte-handoff-orchestration/SKILL.md +10 -7
- {agentbyte-0.20.3 → agentbyte-0.20.5}/.github/skills/agentbyte-middleware/SKILL.md +32 -2
- {agentbyte-0.20.3 → agentbyte-0.20.5}/.github/skills/agentbyte-plan-based-orchestration/SKILL.md +10 -9
- {agentbyte-0.20.3 → agentbyte-0.20.5}/.github/skills/agentbyte-round-robin-orchestration/SKILL.md +11 -6
- {agentbyte-0.20.3 → agentbyte-0.20.5}/.github/skills/agentbyte-workflow/SKILL.md +65 -1
- agentbyte-0.20.5/.github/skills/webui-smoke-test/SKILL.md +314 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/CHANGELOG.md +26 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/PKG-INFO +3 -2
- {agentbyte-0.20.3 → agentbyte-0.20.5}/README.md +2 -1
- agentbyte-0.20.5/src/agentbyte/__about__.py +2 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/__init__.py +10 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/agents/agent.py +1 -1
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/agents/agent_as_tool.py +1 -1
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/llm/azure/chat.py +4 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/llm/openai/chat.py +4 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/presets/__init__.py +12 -0
- agentbyte-0.20.5/src/agentbyte/presets/streaming.py +325 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/workflow/agent.py +33 -10
- {agentbyte-0.20.3 → agentbyte-0.20.5}/tests/agents/test_agent_as_tool.py +22 -1
- agentbyte-0.20.5/tests/presets/test_streaming.py +127 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/tests/test_package_api.py +15 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/tests/workflow/test_workflow_agent.py +107 -1
- agentbyte-0.20.3/src/agentbyte/__about__.py +0 -2
- {agentbyte-0.20.3 → agentbyte-0.20.5}/.github/skills/agentbyte-coding-tools/SKILL.md +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/.github/skills/agentbyte-dataset/SKILL.md +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/.github/skills/agentbyte-eval/SKILL.md +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/.github/skills/agentbyte-function-tools/SKILL.md +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/.github/skills/agentbyte-list-memory/SKILL.md +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/.github/skills/agentbyte-llm-client/SKILL.md +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/.github/skills/agentbyte-memory-tool/SKILL.md +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/.github/skills/agentbyte-otel-tracing/SKILL.md +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/.github/skills/agentbyte-research-tools/SKILL.md +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/.github/skills/git-multi-remote-push/SKILL.md +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/.github/skills/skill-authoring/SKILL.md +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/.gitignore +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/LICENSE +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/pyproject.toml +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/agents/__init__.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/agents/base.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/agents/embedding_agent.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/agents/types.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/cancellation_token.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/catalog.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/cli/__init__.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/cli/main.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/component.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/context.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/context_providers/__init__.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/context_providers/base.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/context_providers/skill_tools.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/context_providers/skills.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/dataset/__init__.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/dataset/base.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/dataset/config.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/dataset/json.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/dataset/loader.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/dataset/publish.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/dataset/publish_config.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/dataset/publishers.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/dataset/sources.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/dataset/sqlite.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/entity.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/eval/__init__.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/eval/base.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/eval/checks/__init__.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/eval/checks/decorator.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/eval/checks/keyword.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/eval/checks/local.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/eval/checks/tool.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/eval/checks/types.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/eval/comparison.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/eval/eval_dataset.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/eval/judges/__init__.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/eval/judges/base.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/eval/judges/composite.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/eval/judges/llm.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/eval/judges/pairwise.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/eval/judges/reference.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/eval/pairwise.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/eval/report.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/eval/runner.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/eval/targets/__init__.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/eval/targets/agent.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/eval/targets/model.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/eval/targets/orchestrator.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/eval/types.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/llm/__init__.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/llm/_retry_observability.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/llm/auth.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/llm/azure/__init__.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/llm/azure/auth.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/llm/azure/embedding.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/llm/azure/settings.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/llm/azure_openai.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/llm/azure_openai_embedding.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/llm/base.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/llm/embeddings_base.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/llm/openai/__init__.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/llm/openai/embedding.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/llm/openai/settings.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/llm/openai.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/llm/openai_embedding.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/llm/pricing.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/llm/retry_policy.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/llm/settings.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/llm/types.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/logger.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/memory/__init__.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/memory/base.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/messages.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/microwebui/__init__.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/microwebui/server.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/microwebui/ui/index.html +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/middleware/__init__.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/middleware/base.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/middleware/otel.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/middleware/retry.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/middleware/sql_usage.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/middleware/usage_logger.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/notebook.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/orchestration/__init__.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/orchestration/ai.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/orchestration/base.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/orchestration/handoff.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/orchestration/plan.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/orchestration/policies.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/orchestration/round_robin.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/presets/agents.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/presets/clients.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/presets/instruction_registry.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/presets/instructions/orchestrator.yaml +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/presets/instructions/query_rewriter.yaml +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/presets/instructions/researcher.yaml +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/presets/instructions/reviewer.yaml +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/presets/instructions/writer.yaml +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/presets/orchestration.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/presets/skills/contracts-analyst/SKILL.md +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/presets/workflow.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/session_store.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/skills/__init__.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/skills/base.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/skills/resources.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/skills/scripts.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/skills/sources.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/termination/__init__.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/termination/base.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/termination/cancellation.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/termination/composite.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/termination/consecutive_agent.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/termination/external.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/termination/function_call.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/termination/handoff.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/termination/max_message.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/termination/predicate.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/termination/source.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/termination/text_mention.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/termination/timeout.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/termination/token_usage.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/tools/__init__.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/tools/base.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/tools/coding_tools.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/tools/core_tools.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/tools/decorator.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/tools/memory_tool.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/tools/research_tools.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/types.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/webui/__init__.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/webui/discovery.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/webui/execution.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/webui/frontend/.gitignore +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/webui/frontend/README.md +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/webui/frontend/components.json +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/webui/frontend/eslint.config.js +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/webui/frontend/index.html +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/webui/frontend/package-lock.json +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/webui/frontend/package.json +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/webui/frontend/plan.md +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/webui/frontend/public/vite.svg +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/webui/frontend/src/App.css +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/webui/frontend/src/App.tsx +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/webui/frontend/src/assets/react.svg +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/webui/frontend/src/components/agent/agent-view.tsx +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/webui/frontend/src/components/message_renderer/ContentRenderer.tsx +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/webui/frontend/src/components/message_renderer/MessageRenderer.tsx +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/webui/frontend/src/components/message_renderer/index.ts +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/webui/frontend/src/components/message_renderer/types.ts +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/webui/frontend/src/components/mode-toggle.tsx +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/webui/frontend/src/components/orchestrator/orchestrator-view.tsx +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/webui/frontend/src/components/shared/app-header.tsx +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/webui/frontend/src/components/shared/chat-base.tsx +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/webui/frontend/src/components/shared/context-inspector.tsx +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/webui/frontend/src/components/shared/debug-panel.tsx +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/webui/frontend/src/components/shared/entity-selector.tsx +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/webui/frontend/src/components/shared/example-tasks-display.tsx +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/webui/frontend/src/components/shared/session-switcher.tsx +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/webui/frontend/src/components/shared/tool-approval-banner.tsx +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/webui/frontend/src/components/theme-provider.tsx +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/webui/frontend/src/components/ui/attachment-gallery.tsx +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/webui/frontend/src/components/ui/badge.tsx +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/webui/frontend/src/components/ui/button.tsx +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/webui/frontend/src/components/ui/card.tsx +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/webui/frontend/src/components/ui/dialog.tsx +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/webui/frontend/src/components/ui/dropdown-menu.tsx +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/webui/frontend/src/components/ui/file-upload.tsx +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/webui/frontend/src/components/ui/input.tsx +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/webui/frontend/src/components/ui/label.tsx +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/webui/frontend/src/components/ui/loading-spinner.tsx +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/webui/frontend/src/components/ui/loading-state.tsx +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/webui/frontend/src/components/ui/message-input.tsx +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/webui/frontend/src/components/ui/scroll-area.tsx +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/webui/frontend/src/components/ui/slider.tsx +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/webui/frontend/src/components/ui/tabs.tsx +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/webui/frontend/src/components/ui/textarea.tsx +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/webui/frontend/src/components/workflow/workflow-result-renderer.tsx +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/webui/frontend/src/components/workflow/workflow-view.tsx +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/webui/frontend/src/hooks/messageHandlers.ts +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/webui/frontend/src/hooks/useEntityExecution.ts +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/webui/frontend/src/index.css +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/webui/frontend/src/lib/format-utils.ts +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/webui/frontend/src/lib/user-id.ts +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/webui/frontend/src/lib/utils.ts +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/webui/frontend/src/main.tsx +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/webui/frontend/src/services/api.ts +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/webui/frontend/src/types/index.ts +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/webui/frontend/src/types/picoagents.ts +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/webui/frontend/src/utils/message-utils.ts +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/webui/frontend/src/vite-env.d.ts +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/webui/frontend/tsconfig.app.json +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/webui/frontend/tsconfig.json +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/webui/frontend/tsconfig.node.json +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/webui/frontend/vite.config.ts +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/webui/frontend/yarn.lock +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/webui/models.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/webui/registry.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/webui/server.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/webui/session_store.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/webui/sessions.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/webui/ui/assets/index-DDp5MYFO.js +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/webui/ui/assets/index-ar5tOeqt.css +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/webui/ui/index.html +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/webui/ui/vite.svg +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/workflow/__init__.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/workflow/core/__init__.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/workflow/core/_structure_hash.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/workflow/core/checkpoint.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/workflow/core/models.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/workflow/core/runner.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/workflow/core/workflow.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/workflow/defaults.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/workflow/loader.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/workflow/schema.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/workflow/schema_utils.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/workflow/steps/__init__.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/workflow/steps/agentbyte_agent.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/workflow/steps/echo.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/workflow/steps/function.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/workflow/steps/http.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/workflow/steps/step.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/workflow/steps/subworkflow.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/workflow/steps/transform.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/src/agentbyte/workflow/visualizer.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/tests/agents/test_agent_basic.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/tests/agents/test_agent_context_providers.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/tests/agents/test_agent_event_types.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/tests/agents/test_agent_memory_integration.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/tests/agents/test_agent_middleware_integration.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/tests/agents/test_agent_retry_middleware.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/tests/agents/test_agent_stream_events.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/tests/agents/test_embedding_agent.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/tests/agents/test_tool_approval.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/tests/cli/test_registry_check.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/tests/context_providers/__init__.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/tests/context_providers/test_skill_tools.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/tests/context_providers/test_skills_provider.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/tests/dataset/test_loader.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/tests/dataset/test_multi_table.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/tests/dataset/test_publish.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/tests/eval/test_eval_dataset.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/tests/eval/test_pairwise.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/tests/eval/test_phase1_runner_and_targets.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/tests/eval/test_phase2_checks_and_reports.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/tests/eval/test_types_and_judges.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/tests/llm/test_azure_client.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/tests/llm/test_azure_embedding_client.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/tests/llm/test_llm_types.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/tests/llm/test_openai_client.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/tests/llm/test_openai_embedding_client.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/tests/llm/test_retry_observability.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/tests/llm/test_retry_policy_api.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/tests/memory/test_memory.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/tests/middleware/test_middleware_chain.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/tests/middleware/test_otel.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/tests/middleware/test_retry_middleware.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/tests/middleware/test_sql_usage.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/tests/middleware/test_usage_logger.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/tests/orchestration/test_ai_orchestrator.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/tests/orchestration/test_base_orchestrator.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/tests/orchestration/test_handoff_orchestrator.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/tests/orchestration/test_plan_orchestrator.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/tests/orchestration/test_round_robin.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/tests/presets/test_agents.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/tests/presets/test_clients.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/tests/presets/test_instruction_registry.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/tests/presets/test_orchestration.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/tests/presets/test_workflow.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/tests/skills/__init__.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/tests/skills/test_base.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/tests/skills/test_resources.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/tests/skills/test_scripts.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/tests/skills/test_sources.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/tests/termination/test_base.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/tests/termination/test_cancellation.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/tests/termination/test_composite.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/tests/termination/test_consecutive_agent.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/tests/termination/test_external.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/tests/termination/test_function_call.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/tests/termination/test_handoff.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/tests/termination/test_max_message.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/tests/termination/test_predicate.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/tests/termination/test_source.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/tests/termination/test_text_mention.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/tests/termination/test_timeout.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/tests/termination/test_token_usage.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/tests/test_cancellation_token.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/tests/test_context.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/tests/test_logger.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/tests/test_messages.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/tests/test_session_store.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/tests/test_types.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/tests/tools/test_coding_tools.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/tests/tools/test_memory_tool.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/tests/tools/test_research_tools.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/tests/tools/test_tools.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/tests/webui/__init__.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/tests/webui/helpers.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/tests/webui/test_execution.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/tests/webui/test_microwebui_server.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/tests/webui/test_package_api.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/tests/webui/test_registry.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/tests/webui/test_server.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/tests/webui/test_sessions.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/tests/workflow/test_checkpoint.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/tests/workflow/test_subworkflow_step.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/tests/workflow/test_workflow_class.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/tests/workflow/test_workflow_models.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/tests/workflow/test_workflow_runner.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/tests/workflow/test_workflow_schema.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/tests/workflow/test_workflow_steps.py +0 -0
- {agentbyte-0.20.3 → agentbyte-0.20.5}/tests/workflow/test_workflow_visualizer.py +0 -0
|
@@ -80,6 +80,38 @@ print(response.final_content) # assistant's final text
|
|
|
80
80
|
print(response.messages[-1].content) # same, from message list
|
|
81
81
|
```
|
|
82
82
|
|
|
83
|
+
### Operation logging for run()
|
|
84
|
+
|
|
85
|
+
To see middleware logs from `agent.run(...)`, configure Python logging and add
|
|
86
|
+
`LoggingMiddleware`. The middleware emits records; logging configuration decides
|
|
87
|
+
whether they appear on stdout/stderr.
|
|
88
|
+
|
|
89
|
+
```python
|
|
90
|
+
import logging
|
|
91
|
+
|
|
92
|
+
from agentbyte.agents import Agent
|
|
93
|
+
from agentbyte.middleware import LoggingMiddleware
|
|
94
|
+
|
|
95
|
+
logging.basicConfig(
|
|
96
|
+
level=logging.INFO,
|
|
97
|
+
format="%(asctime)s %(name)s %(levelname)s %(message)s",
|
|
98
|
+
)
|
|
99
|
+
|
|
100
|
+
agent = Agent(
|
|
101
|
+
name="my-agent",
|
|
102
|
+
description="Answers simple questions.",
|
|
103
|
+
instructions="Answer concisely.",
|
|
104
|
+
model_client=client,
|
|
105
|
+
middlewares=[LoggingMiddleware()],
|
|
106
|
+
)
|
|
107
|
+
|
|
108
|
+
response = await agent.run("hello")
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
Use `model_client=...` and `middlewares=[...]` in Agentbyte. Passing only
|
|
112
|
+
`LoggingMiddleware()` is not enough if the host application has not configured
|
|
113
|
+
Python logging to show `INFO` records.
|
|
114
|
+
|
|
83
115
|
### Multi-turn (stateful — caller owns context)
|
|
84
116
|
|
|
85
117
|
```python
|
|
@@ -108,6 +140,27 @@ async for event in agent.run_stream(
|
|
|
108
140
|
# Final AgentResponse is the last item yielded
|
|
109
141
|
```
|
|
110
142
|
|
|
143
|
+
### Console stream printing
|
|
144
|
+
|
|
145
|
+
Use the preset printer for readable notebook or terminal debugging instead of
|
|
146
|
+
writing custom `isinstance(...)` dispatch in examples.
|
|
147
|
+
|
|
148
|
+
```python
|
|
149
|
+
from agentbyte.presets import ConsoleStreamPrinter, run_agent_stream
|
|
150
|
+
|
|
151
|
+
response = await run_agent_stream(
|
|
152
|
+
agent,
|
|
153
|
+
"Summarise the last 3 contracts.",
|
|
154
|
+
)
|
|
155
|
+
|
|
156
|
+
printer = ConsoleStreamPrinter(max_chars=1000)
|
|
157
|
+
async for item in agent.run_stream("Summarise the last 3 contracts.", verbose=True):
|
|
158
|
+
printer.print(item)
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
`run_agent_stream()` prints stream items and returns the final
|
|
162
|
+
`AgentResponse`. It defaults to `verbose=True` and `stream_tokens=False`.
|
|
163
|
+
|
|
111
164
|
### Stream logging with StreamEventLogger
|
|
112
165
|
|
|
113
166
|
Use `verbose=True` to emit execution events, then pass every streamed item to
|
|
@@ -141,7 +194,8 @@ async for item in agent.run_stream(
|
|
|
141
194
|
|
|
142
195
|
`StreamEventLogger` covers execution-layer events from `run_stream()`. It
|
|
143
196
|
complements `LoggingMiddleware`, which logs model and tool operations inside the
|
|
144
|
-
middleware chain.
|
|
197
|
+
middleware chain. Use `ConsoleStreamPrinter` for human-readable terminal output;
|
|
198
|
+
use `StreamEventLogger` for structured Python logs.
|
|
145
199
|
|
|
146
200
|
### run() parameters
|
|
147
201
|
|
|
@@ -353,6 +407,12 @@ response = await coordinator.run("What is the weather in Berlin in Celsius?")
|
|
|
353
407
|
|
|
354
408
|
`AgentAsTool` also accepts `context=` forwarding in `execute()` — pass a pre-seeded context to give the specialist prior history.
|
|
355
409
|
|
|
410
|
+
`AgentAsTool.execute_stream()` invokes the delegated child agent with
|
|
411
|
+
`verbose=True` and `stream_tokens=False`. This lets nested child-agent events
|
|
412
|
+
flow through a parent `agent.run_stream(..., verbose=True)` call for
|
|
413
|
+
`StreamEventLogger` or `ConsoleStreamPrinter`, while avoiding noisy nested token
|
|
414
|
+
chunks.
|
|
415
|
+
|
|
356
416
|
### Manual construction
|
|
357
417
|
|
|
358
418
|
```python
|
|
@@ -444,7 +504,7 @@ def build_contract_agent(*, model_client) -> Agent:
|
|
|
444
504
|
required_tools=["think"],
|
|
445
505
|
max_iterations=6,
|
|
446
506
|
example_tasks=[
|
|
447
|
-
"Who signed CW347209 from
|
|
507
|
+
"Who signed CW347209 from XYZ?",
|
|
448
508
|
"List all contracts expiring in Q3 2025.",
|
|
449
509
|
],
|
|
450
510
|
)
|
|
@@ -481,6 +541,7 @@ async def run_with_filters(
|
|
|
481
541
|
```python
|
|
482
542
|
from agentbyte.agents import EmbeddingAgent
|
|
483
543
|
from agentbyte.llm.openai import OpenAIEmbeddingClient
|
|
544
|
+
from agentbyte.llm.types import EmbeddingResult
|
|
484
545
|
from agentbyte.middleware import OTelMiddleware
|
|
485
546
|
|
|
486
547
|
client = OpenAIEmbeddingClient.from_api_key(model="text-embedding-3-small")
|
|
@@ -510,6 +571,7 @@ print(f"Cost: ${result.usage.cost_estimate:.4f}, tokens: {result.usage.tokens_in
|
|
|
510
571
|
|
|
511
572
|
```python
|
|
512
573
|
from agentbyte.agents import EmbeddingBatchProgressEvent
|
|
574
|
+
from agentbyte.llm.types import EmbeddingResult
|
|
513
575
|
|
|
514
576
|
async for event in agent.run_stream(texts=chunks):
|
|
515
577
|
if isinstance(event, EmbeddingBatchProgressEvent):
|
{agentbyte-0.20.3 → agentbyte-0.20.5}/.github/skills/agentbyte-ai-driven-orchestration/SKILL.md
RENAMED
|
@@ -102,6 +102,16 @@ asyncio.run(main())
|
|
|
102
102
|
|
|
103
103
|
## Pattern: Streaming AI-Driven Orchestration
|
|
104
104
|
|
|
105
|
+
For readable terminal output:
|
|
106
|
+
|
|
107
|
+
```python
|
|
108
|
+
from agentbyte.presets import run_orchestrator_stream
|
|
109
|
+
|
|
110
|
+
result = await run_orchestrator_stream(orchestrator, task)
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
For structured Python logs:
|
|
114
|
+
|
|
105
115
|
```python
|
|
106
116
|
from agentbyte.logger import StreamEventLogger
|
|
107
117
|
|
|
@@ -113,11 +123,6 @@ async for item in orchestrator.run_stream(task, verbose=True):
|
|
|
113
123
|
stream_logger.warning(item)
|
|
114
124
|
stream_logger.error(item)
|
|
115
125
|
stream_logger.exception(item)
|
|
116
|
-
|
|
117
|
-
if isinstance(item, Message):
|
|
118
|
-
print(f"[{item.source}] {item.content}")
|
|
119
|
-
elif isinstance(item, OrchestrationResponse):
|
|
120
|
-
print(f"Complete: {item.stop_message.content}")
|
|
121
126
|
```
|
|
122
127
|
|
|
123
128
|
## How AI Selection Works
|
|
@@ -273,7 +278,7 @@ termination = (
|
|
|
273
278
|
- **Safety Fallback:** If LLM selection fails, the orchestrator falls back to round-robin selection to preserve forward progress.
|
|
274
279
|
- **Usage Accounting:** Final usage includes both agent tokens AND selector tokens.
|
|
275
280
|
- **Case Insensitive:** Agent name matching is case-insensitive for robustness.
|
|
276
|
-
- **Event Observability:** Use `verbose=True` with `run_stream()` and pass items to `StreamEventLogger` for structured execution logs, including selector events.
|
|
281
|
+
- **Event Observability:** Use `verbose=True` with `run_stream()` and pass items to `StreamEventLogger` for structured execution logs, including selector events. Use `run_orchestrator_stream()` / `ConsoleStreamPrinter` for readable terminal output.
|
|
277
282
|
|
|
278
283
|
## When to Use AI-Driven vs Round-Robin
|
|
279
284
|
|
{agentbyte-0.20.3 → agentbyte-0.20.5}/.github/skills/agentbyte-handoff-orchestration/SKILL.md
RENAMED
|
@@ -85,10 +85,18 @@ asyncio.run(main())
|
|
|
85
85
|
|
|
86
86
|
## Pattern: Streaming Handoff Orchestration
|
|
87
87
|
|
|
88
|
+
For readable terminal output:
|
|
89
|
+
|
|
90
|
+
```python
|
|
91
|
+
from agentbyte.presets import run_orchestrator_stream
|
|
92
|
+
|
|
93
|
+
result = await run_orchestrator_stream(orchestrator, task)
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
For structured Python logs:
|
|
97
|
+
|
|
88
98
|
```python
|
|
89
99
|
from agentbyte.logger import StreamEventLogger
|
|
90
|
-
from agentbyte.messages import Message
|
|
91
|
-
from agentbyte.types import OrchestrationResponse
|
|
92
100
|
|
|
93
101
|
stream_logger = StreamEventLogger()
|
|
94
102
|
|
|
@@ -98,11 +106,6 @@ async for item in orchestrator.run_stream(task, verbose=True):
|
|
|
98
106
|
stream_logger.warning(item)
|
|
99
107
|
stream_logger.error(item)
|
|
100
108
|
stream_logger.exception(item)
|
|
101
|
-
|
|
102
|
-
if isinstance(item, Message):
|
|
103
|
-
print(f"[{item.source}] {item.content}")
|
|
104
|
-
elif isinstance(item, OrchestrationResponse):
|
|
105
|
-
print(f"Complete: {item.stop_message.content}")
|
|
106
109
|
```
|
|
107
110
|
|
|
108
111
|
## How Handoff Routing Works
|
|
@@ -117,13 +117,43 @@ agent = Agent(
|
|
|
117
117
|
|
|
118
118
|
### LoggingMiddleware
|
|
119
119
|
|
|
120
|
+
`LoggingMiddleware` emits standard Python log records. It does not configure
|
|
121
|
+
handlers by itself, so examples and notebooks must configure logging before the
|
|
122
|
+
agent runs.
|
|
123
|
+
|
|
120
124
|
```python
|
|
125
|
+
import logging
|
|
126
|
+
|
|
127
|
+
from agentbyte.agents import Agent
|
|
121
128
|
from agentbyte.middleware import LoggingMiddleware
|
|
122
129
|
|
|
123
|
-
|
|
124
|
-
|
|
130
|
+
logging.basicConfig(
|
|
131
|
+
level=logging.INFO,
|
|
132
|
+
format="%(asctime)s %(name)s %(levelname)s %(message)s",
|
|
133
|
+
)
|
|
134
|
+
|
|
135
|
+
agent = Agent(
|
|
136
|
+
name="my-agent",
|
|
137
|
+
description="Demonstrates operation logging.",
|
|
138
|
+
instructions="Answer concisely.",
|
|
139
|
+
model_client=client,
|
|
140
|
+
middlewares=[LoggingMiddleware()],
|
|
141
|
+
)
|
|
142
|
+
|
|
143
|
+
result = await agent.run("hello")
|
|
125
144
|
```
|
|
126
145
|
|
|
146
|
+
Logs are emitted under logger name `agentbyte.middleware`. If the application
|
|
147
|
+
already configured logging, set that logger level explicitly instead of calling
|
|
148
|
+
`basicConfig()` again:
|
|
149
|
+
|
|
150
|
+
```python
|
|
151
|
+
logging.getLogger("agentbyte.middleware").setLevel(logging.INFO)
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
Use `middlewares=[...]` and `model_client=...`; `middleware=` and `model=` are
|
|
155
|
+
not Agent constructor parameters.
|
|
156
|
+
|
|
127
157
|
### GuardrailMiddleware
|
|
128
158
|
|
|
129
159
|
```python
|
{agentbyte-0.20.3 → agentbyte-0.20.5}/.github/skills/agentbyte-plan-based-orchestration/SKILL.md
RENAMED
|
@@ -114,10 +114,18 @@ asyncio.run(main())
|
|
|
114
114
|
|
|
115
115
|
## Pattern: Streaming Plan-Based Orchestration
|
|
116
116
|
|
|
117
|
+
For readable terminal output:
|
|
118
|
+
|
|
119
|
+
```python
|
|
120
|
+
from agentbyte.presets import run_orchestrator_stream
|
|
121
|
+
|
|
122
|
+
result = await run_orchestrator_stream(orchestrator, task)
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
For structured Python logs:
|
|
126
|
+
|
|
117
127
|
```python
|
|
118
128
|
from agentbyte.logger import StreamEventLogger
|
|
119
|
-
from agentbyte.messages import Message
|
|
120
|
-
from agentbyte.types import OrchestrationResponse
|
|
121
129
|
|
|
122
130
|
stream_logger = StreamEventLogger()
|
|
123
131
|
|
|
@@ -127,12 +135,6 @@ async for item in orchestrator.run_stream(task, verbose=True):
|
|
|
127
135
|
stream_logger.warning(item)
|
|
128
136
|
stream_logger.error(item)
|
|
129
137
|
stream_logger.exception(item)
|
|
130
|
-
|
|
131
|
-
if isinstance(item, Message):
|
|
132
|
-
print(f"[MSG][{item.source}] {item.content}")
|
|
133
|
-
elif isinstance(item, OrchestrationResponse):
|
|
134
|
-
print(f"Complete: {item.stop_message.content}")
|
|
135
|
-
print(f"Steps completed: {item.pattern_metadata.get('steps_completed')}")
|
|
136
138
|
```
|
|
137
139
|
|
|
138
140
|
## How Plan-Based Orchestration Works
|
|
@@ -284,4 +286,3 @@ This makes plan-based orchestration more expensive than simpler patterns, but mu
|
|
|
284
286
|
3. Gather evidence -> synthesize -> present answer
|
|
285
287
|
4. Multi-step analyst/reporter/editor collaboration
|
|
286
288
|
5. Quality-sensitive tasks where each phase should be checked before moving on
|
|
287
|
-
|
{agentbyte-0.20.3 → agentbyte-0.20.5}/.github/skills/agentbyte-round-robin-orchestration/SKILL.md
RENAMED
|
@@ -71,6 +71,16 @@ asyncio.run(main())
|
|
|
71
71
|
|
|
72
72
|
## Pattern: Streaming Round-Robin
|
|
73
73
|
|
|
74
|
+
For readable terminal output:
|
|
75
|
+
|
|
76
|
+
```python
|
|
77
|
+
from agentbyte.presets import run_orchestrator_stream
|
|
78
|
+
|
|
79
|
+
result = await run_orchestrator_stream(orchestrator, task)
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
For structured Python logs:
|
|
83
|
+
|
|
74
84
|
```python
|
|
75
85
|
from agentbyte.logger import StreamEventLogger
|
|
76
86
|
|
|
@@ -82,11 +92,6 @@ async for item in orchestrator.run_stream(task, verbose=True):
|
|
|
82
92
|
stream_logger.warning(item)
|
|
83
93
|
stream_logger.error(item)
|
|
84
94
|
stream_logger.exception(item)
|
|
85
|
-
|
|
86
|
-
if isinstance(item, Message):
|
|
87
|
-
print(f"[{item.source}] {item.content}")
|
|
88
|
-
elif isinstance(item, OrchestrationResponse):
|
|
89
|
-
print(f"Complete: {item.stop_message.content}")
|
|
90
95
|
```
|
|
91
96
|
|
|
92
97
|
## Available Termination Conditions
|
|
@@ -220,7 +225,7 @@ result = await orchestrator.run(task, context=ctx, cancellation_token=token)
|
|
|
220
225
|
- **Safety Limit:** Set `max_iterations` as a failsafe even with other termination conditions.
|
|
221
226
|
- **Shared Context:** By default all agents see full history as text, but `HistoryContextPolicy` can narrow the window or change the format.
|
|
222
227
|
- **Model Client:** Each agent needs its own `model_client` configured.
|
|
223
|
-
- **Event Observability:** Use `verbose=True` with `run_stream()` and pass items to `StreamEventLogger` for structured execution logs.
|
|
228
|
+
- **Event Observability:** Use `verbose=True` with `run_stream()` and pass items to `StreamEventLogger` for structured execution logs. Use `run_orchestrator_stream()` / `ConsoleStreamPrinter` for readable terminal output.
|
|
224
229
|
|
|
225
230
|
## Common Use Cases
|
|
226
231
|
|
|
@@ -101,6 +101,38 @@ FunctionStep(
|
|
|
101
101
|
)
|
|
102
102
|
```
|
|
103
103
|
|
|
104
|
+
Design guidance:
|
|
105
|
+
|
|
106
|
+
- `input_type` and `output_type` should be concrete Pydantic model classes that represent the real data crossing the step boundary.
|
|
107
|
+
- Prefer step outputs as the primary transport for business data that flows from one step to the next.
|
|
108
|
+
- Use `WorkflowContext` for cross-cutting concerns such as progress, flags, lightweight shared metadata, and values that are needed outside the direct step-to-step path.
|
|
109
|
+
|
|
110
|
+
Preferred pattern:
|
|
111
|
+
|
|
112
|
+
```python
|
|
113
|
+
from pydantic import BaseModel
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
class ParsedInput(BaseModel):
|
|
117
|
+
record_id: str
|
|
118
|
+
file_name: str
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
class EnrichedOutput(ParsedInput):
|
|
122
|
+
content_hash: str
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
async def enrich(input_data: ParsedInput, context) -> EnrichedOutput:
|
|
126
|
+
context.set("started_enrichment", True)
|
|
127
|
+
return EnrichedOutput(
|
|
128
|
+
record_id=input_data.record_id,
|
|
129
|
+
file_name=input_data.file_name,
|
|
130
|
+
content_hash="abc123",
|
|
131
|
+
)
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
Avoid using placeholder or pass-through output types while putting the real business payload only into `WorkflowContext.state`. That pattern weakens validation, makes step contracts less clear, and pushes too much logic into string-keyed shared state.
|
|
135
|
+
|
|
104
136
|
### TransformStep
|
|
105
137
|
|
|
106
138
|
Maps fields from one schema to another without custom code. Use `"static:<value>"` for literal values, or a field name string to copy from input.
|
|
@@ -341,6 +373,13 @@ async def step_b(input_data: MyOutput, context: WorkflowContext) -> MyOutput:
|
|
|
341
373
|
return MyOutput(value=f"Got: {shared}")
|
|
342
374
|
```
|
|
343
375
|
|
|
376
|
+
Use `WorkflowContext` intentionally:
|
|
377
|
+
|
|
378
|
+
- Put primary business data in step outputs when that data is part of the direct step-to-step contract.
|
|
379
|
+
- Put small shared values in `WorkflowContext` when they are cross-cutting, optional, or orthogonal to the main output shape.
|
|
380
|
+
- For simple linear enrichment pipelines, a good default is typed outputs for the main payload plus a small amount of primitive state for bookkeeping.
|
|
381
|
+
- Avoid making `WorkflowContext.state` the only source of truth for the workflow's main data flow unless the workflow genuinely needs loose coupling between many steps.
|
|
382
|
+
|
|
344
383
|
`WorkflowContext` API:
|
|
345
384
|
|
|
346
385
|
| Method | Purpose |
|
|
@@ -374,6 +413,20 @@ execution.error # str | None — set when status == FAILED
|
|
|
374
413
|
|
|
375
414
|
## 9. Streaming workflow events
|
|
376
415
|
|
|
416
|
+
For human-readable terminal or notebook output, use the console streaming preset:
|
|
417
|
+
|
|
418
|
+
```python
|
|
419
|
+
from agentbyte.presets import ConsoleStreamPrinter, run_workflow_stream
|
|
420
|
+
|
|
421
|
+
execution = await run_workflow_stream(workflow, {"value": 5})
|
|
422
|
+
|
|
423
|
+
printer = ConsoleStreamPrinter()
|
|
424
|
+
async for event in WorkflowRunner().run_stream(workflow, {"value": 5}):
|
|
425
|
+
printer.print(event)
|
|
426
|
+
```
|
|
427
|
+
|
|
428
|
+
For structured Python logs, use `StreamEventLogger`:
|
|
429
|
+
|
|
377
430
|
```python
|
|
378
431
|
from agentbyte.logger import StreamEventLogger
|
|
379
432
|
|
|
@@ -447,6 +500,14 @@ resumed_execution = await runner.run(
|
|
|
447
500
|
|
|
448
501
|
The runner validates the checkpoint's structure hash against the live workflow graph on resume. If steps were added/removed, `can_resume=False` is set on the `CheckpointValidationResult`.
|
|
449
502
|
|
|
503
|
+
State size guidance:
|
|
504
|
+
|
|
505
|
+
- Workflow state is retained for the lifetime of the run.
|
|
506
|
+
- When checkpointing is enabled, that state is serialized into checkpoints.
|
|
507
|
+
- Prefer storing IDs, keys, counters, flags, and other small primitives in shared state.
|
|
508
|
+
- Avoid storing large domain objects, open clients, or heavyweight in-memory payloads in `WorkflowContext.state` unless they are truly required for resume semantics.
|
|
509
|
+
- If a step can reconstruct a full object from a lightweight identifier, prefer storing the identifier and reconstructing on demand.
|
|
510
|
+
|
|
450
511
|
---
|
|
451
512
|
|
|
452
513
|
## 11. Suspend / resume — human-in-the-loop
|
|
@@ -556,10 +617,13 @@ if not validation.is_valid:
|
|
|
556
617
|
## Guardrails
|
|
557
618
|
|
|
558
619
|
- Use `chain()` for linear flows; use `add_step()` + `add_edge()` only when branching or fan-out is required.
|
|
620
|
+
- Design `FunctionStep` input and output types as real Pydantic contracts for the data flowing between steps; do not use placeholder output models when the actual payload lives only in workflow state.
|
|
621
|
+
- Use step outputs for primary business data flow, and reserve `WorkflowContext.state` for compact shared metadata, flags, and bookkeeping.
|
|
622
|
+
- Keep workflow state small and checkpoint-friendly; prefer IDs and lightweight values over large domain objects.
|
|
559
623
|
- A fan-in join step with ≥ 2 upstream `always` edges receives `{"branch_outputs": {...}, "failed_branches": [...]}` — its input model must declare these fields, not the upstream output shape.
|
|
560
624
|
- Always pass a workflow factory (callable) to `SubWorkflowStep`, not a live instance — the runner calls it to get a fresh copy per execution.
|
|
561
625
|
- Do not pass `initial_input` and `responses` together — they are mutually exclusive.
|
|
562
626
|
- `request_input()` and `request_approval()` never return; code after them runs only on resume.
|
|
563
627
|
- Do not thread `AgentContext` through `WorkflowContext.state` — keep it in `AgentbyteAgentInput.agent_context`.
|
|
564
628
|
- `WorkflowRunner` is not thread-safe across concurrent runs of the same workflow instance; use one runner per concurrent workflow.
|
|
565
|
-
- Workflow logging is event-driven today — use `run_stream()` for observability,
|
|
629
|
+
- Workflow logging is event-driven today — use `run_stream()` for observability, pair it with `StreamEventLogger` for structured Python logs, and use `ConsoleStreamPrinter` / `run_workflow_stream()` for readable terminal output.
|