agentbyte 0.22.4__tar.gz → 0.22.6__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.22.4 → agentbyte-0.22.6}/CHANGELOG.md +19 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/PKG-INFO +7 -2
- {agentbyte-0.22.4 → agentbyte-0.22.6}/README.md +1 -1
- {agentbyte-0.22.4 → agentbyte-0.22.6}/pyproject.toml +10 -1
- agentbyte-0.22.6/src/agentbyte/__about__.py +2 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/skills/sources.py +2 -9
- {agentbyte-0.22.4 → agentbyte-0.22.6}/tests/skills/test_sources.py +16 -0
- agentbyte-0.22.4/src/agentbyte/__about__.py +0 -2
- agentbyte-0.22.4/src/agentbyte/microwebui/__init__.py +0 -9
- agentbyte-0.22.4/src/agentbyte/microwebui/server.py +0 -312
- agentbyte-0.22.4/src/agentbyte/microwebui/ui/index.html +0 -1499
- agentbyte-0.22.4/tests/webui/test_microwebui_server.py +0 -27
- {agentbyte-0.22.4 → agentbyte-0.22.6}/.gitignore +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/LICENSE +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/__init__.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/agents/__init__.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/agents/agent.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/agents/agent_as_tool.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/agents/base.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/agents/embedding_agent.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/agents/types.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/cancellation_token.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/catalog.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/cli/__init__.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/cli/main.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/component.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/context.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/context_providers/__init__.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/context_providers/base.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/context_providers/skill_tools.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/context_providers/skills.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/dataset/__init__.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/dataset/base.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/dataset/config.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/dataset/importer.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/dataset/json.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/dataset/loader.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/dataset/publish.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/dataset/publish_config.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/dataset/publishers.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/dataset/sources.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/dataset/sqlite.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/dataset/sqlite_db.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/dataset/write_config.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/dataset/writers.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/entity.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/eval/__init__.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/eval/base.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/eval/checks/__init__.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/eval/checks/decorator.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/eval/checks/keyword.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/eval/checks/local.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/eval/checks/tool.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/eval/checks/types.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/eval/comparison.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/eval/eval_dataset.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/eval/judges/__init__.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/eval/judges/base.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/eval/judges/composite.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/eval/judges/llm.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/eval/judges/pairwise.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/eval/judges/reference.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/eval/pairwise.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/eval/report.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/eval/runner.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/eval/targets/__init__.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/eval/targets/agent.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/eval/targets/model.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/eval/targets/multi_turn.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/eval/targets/orchestrator.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/eval/types.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/llm/__init__.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/llm/_retry_observability.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/llm/auth.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/llm/azure/__init__.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/llm/azure/auth.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/llm/azure/chat.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/llm/azure/embedding.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/llm/azure/settings.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/llm/azure_openai.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/llm/azure_openai_embedding.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/llm/base.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/llm/embeddings_base.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/llm/openai/__init__.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/llm/openai/chat.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/llm/openai/embedding.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/llm/openai/settings.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/llm/openai.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/llm/openai_embedding.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/llm/pricing.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/llm/retry_policy.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/llm/settings.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/llm/types.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/logger.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/memory/__init__.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/memory/base.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/messages.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/middleware/__init__.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/middleware/base.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/middleware/otel.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/middleware/retry.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/middleware/sql_usage.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/middleware/usage_logger.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/notebook.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/orchestration/__init__.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/orchestration/ai.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/orchestration/base.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/orchestration/handoff.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/orchestration/plan.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/orchestration/policies.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/orchestration/round_robin.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/presets/__init__.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/presets/agents.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/presets/clients.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/presets/instruction_registry.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/presets/instructions/orchestrator.yaml +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/presets/instructions/query_rewriter.yaml +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/presets/instructions/researcher.yaml +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/presets/instructions/reviewer.yaml +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/presets/instructions/writer.yaml +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/presets/orchestration.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/presets/skills/contracts-analyst/SKILL.md +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/presets/skills/hr-analyst/SKILL.md +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/presets/skills/hr-analyst/resources/departments.md +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/presets/skills/hr-analyst/resources/employees.md +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/presets/skills/hr-analyst/resources/payroll.md +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/presets/streaming.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/presets/workflow.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/session_store.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/skills/__init__.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/skills/base.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/skills/resources.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/skills/scripts.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/termination/__init__.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/termination/base.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/termination/cancellation.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/termination/composite.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/termination/consecutive_agent.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/termination/external.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/termination/function_call.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/termination/handoff.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/termination/max_message.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/termination/predicate.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/termination/source.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/termination/text_mention.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/termination/timeout.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/termination/token_usage.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/tools/__init__.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/tools/base.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/tools/coding_tools.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/tools/core_tools.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/tools/decorator.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/tools/memory_tool.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/tools/research_tools.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/types.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/webui/__init__.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/webui/discovery.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/webui/execution.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/webui/frontend/.gitignore +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/webui/frontend/README.md +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/webui/frontend/components.json +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/webui/frontend/eslint.config.js +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/webui/frontend/index.html +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/webui/frontend/package-lock.json +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/webui/frontend/package.json +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/webui/frontend/plan.md +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/webui/frontend/public/vite.svg +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/webui/frontend/src/App.css +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/webui/frontend/src/App.tsx +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/webui/frontend/src/assets/react.svg +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/webui/frontend/src/components/agent/agent-view.tsx +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/webui/frontend/src/components/message_renderer/ContentRenderer.tsx +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/webui/frontend/src/components/message_renderer/MessageRenderer.tsx +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/webui/frontend/src/components/message_renderer/index.ts +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/webui/frontend/src/components/message_renderer/types.ts +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/webui/frontend/src/components/mode-toggle.tsx +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/webui/frontend/src/components/orchestrator/orchestrator-view.tsx +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/webui/frontend/src/components/shared/app-header.tsx +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/webui/frontend/src/components/shared/chat-base.tsx +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/webui/frontend/src/components/shared/context-inspector.tsx +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/webui/frontend/src/components/shared/debug-panel.tsx +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/webui/frontend/src/components/shared/entity-selector.tsx +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/webui/frontend/src/components/shared/example-tasks-display.tsx +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/webui/frontend/src/components/shared/session-switcher.tsx +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/webui/frontend/src/components/shared/tool-approval-banner.tsx +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/webui/frontend/src/components/theme-provider.tsx +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/webui/frontend/src/components/ui/attachment-gallery.tsx +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/webui/frontend/src/components/ui/badge.tsx +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/webui/frontend/src/components/ui/button.tsx +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/webui/frontend/src/components/ui/card.tsx +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/webui/frontend/src/components/ui/dialog.tsx +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/webui/frontend/src/components/ui/dropdown-menu.tsx +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/webui/frontend/src/components/ui/file-upload.tsx +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/webui/frontend/src/components/ui/input.tsx +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/webui/frontend/src/components/ui/label.tsx +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/webui/frontend/src/components/ui/loading-spinner.tsx +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/webui/frontend/src/components/ui/loading-state.tsx +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/webui/frontend/src/components/ui/message-input.tsx +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/webui/frontend/src/components/ui/scroll-area.tsx +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/webui/frontend/src/components/ui/slider.tsx +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/webui/frontend/src/components/ui/tabs.tsx +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/webui/frontend/src/components/ui/textarea.tsx +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/webui/frontend/src/components/workflow/workflow-result-renderer.tsx +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/webui/frontend/src/components/workflow/workflow-view.tsx +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/webui/frontend/src/hooks/messageHandlers.ts +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/webui/frontend/src/hooks/useEntityExecution.ts +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/webui/frontend/src/index.css +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/webui/frontend/src/lib/format-utils.ts +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/webui/frontend/src/lib/user-id.ts +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/webui/frontend/src/lib/utils.ts +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/webui/frontend/src/main.tsx +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/webui/frontend/src/services/api.ts +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/webui/frontend/src/types/index.ts +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/webui/frontend/src/types/picoagents.ts +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/webui/frontend/src/utils/message-utils.ts +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/webui/frontend/src/vite-env.d.ts +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/webui/frontend/tsconfig.app.json +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/webui/frontend/tsconfig.json +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/webui/frontend/tsconfig.node.json +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/webui/frontend/vite.config.ts +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/webui/frontend/yarn.lock +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/webui/models.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/webui/registry.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/webui/server.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/webui/session_store.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/webui/sessions.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/webui/ui/assets/index-DDp5MYFO.js +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/webui/ui/assets/index-ar5tOeqt.css +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/webui/ui/index.html +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/webui/ui/vite.svg +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/workflow/__init__.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/workflow/agent.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/workflow/core/__init__.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/workflow/core/_structure_hash.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/workflow/core/checkpoint.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/workflow/core/models.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/workflow/core/runner.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/workflow/core/workflow.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/workflow/defaults.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/workflow/loader.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/workflow/schema.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/workflow/schema_utils.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/workflow/steps/__init__.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/workflow/steps/agentbyte_agent.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/workflow/steps/echo.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/workflow/steps/function.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/workflow/steps/http.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/workflow/steps/step.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/workflow/steps/subworkflow.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/workflow/steps/transform.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/src/agentbyte/workflow/visualizer.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/tests/agents/test_agent_as_tool.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/tests/agents/test_agent_basic.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/tests/agents/test_agent_context_providers.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/tests/agents/test_agent_event_types.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/tests/agents/test_agent_memory_integration.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/tests/agents/test_agent_middleware_integration.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/tests/agents/test_agent_response_accessors.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/tests/agents/test_agent_retry_middleware.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/tests/agents/test_agent_stream_events.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/tests/agents/test_embedding_agent.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/tests/agents/test_tool_approval.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/tests/cli/test_registry_check.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/tests/context_providers/__init__.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/tests/context_providers/test_skill_tools.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/tests/context_providers/test_skills_provider.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/tests/dataset/test_loader.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/tests/dataset/test_multi_table.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/tests/dataset/test_publish.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/tests/dataset/test_sqlite_db.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/tests/eval/test_eval_dataset.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/tests/eval/test_multi_turn.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/tests/eval/test_pairwise.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/tests/eval/test_phase1_runner_and_targets.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/tests/eval/test_phase2_checks_and_reports.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/tests/eval/test_types_and_judges.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/tests/llm/test_azure_client.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/tests/llm/test_azure_embedding_client.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/tests/llm/test_llm_types.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/tests/llm/test_openai_client.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/tests/llm/test_openai_embedding_client.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/tests/llm/test_retry_observability.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/tests/llm/test_retry_policy_api.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/tests/memory/test_memory.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/tests/middleware/test_middleware_chain.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/tests/middleware/test_otel.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/tests/middleware/test_retry_middleware.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/tests/middleware/test_sql_usage.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/tests/middleware/test_usage_logger.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/tests/orchestration/test_ai_orchestrator.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/tests/orchestration/test_base_orchestrator.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/tests/orchestration/test_handoff_orchestrator.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/tests/orchestration/test_plan_orchestrator.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/tests/orchestration/test_round_robin.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/tests/presets/test_agents.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/tests/presets/test_clients.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/tests/presets/test_instruction_registry.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/tests/presets/test_orchestration.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/tests/presets/test_streaming.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/tests/presets/test_workflow.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/tests/skills/__init__.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/tests/skills/test_base.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/tests/skills/test_resources.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/tests/skills/test_scripts.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/tests/termination/test_base.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/tests/termination/test_cancellation.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/tests/termination/test_composite.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/tests/termination/test_consecutive_agent.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/tests/termination/test_external.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/tests/termination/test_function_call.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/tests/termination/test_handoff.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/tests/termination/test_max_message.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/tests/termination/test_predicate.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/tests/termination/test_source.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/tests/termination/test_text_mention.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/tests/termination/test_timeout.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/tests/termination/test_token_usage.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/tests/test_cancellation_token.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/tests/test_context.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/tests/test_logger.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/tests/test_messages.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/tests/test_package_api.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/tests/test_session_store.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/tests/test_types.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/tests/tools/test_coding_tools.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/tests/tools/test_memory_tool.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/tests/tools/test_research_tools.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/tests/tools/test_tools.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/tests/webui/__init__.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/tests/webui/helpers.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/tests/webui/test_execution.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/tests/webui/test_package_api.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/tests/webui/test_registry.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/tests/webui/test_server.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/tests/webui/test_sessions.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/tests/workflow/test_checkpoint.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/tests/workflow/test_subworkflow_step.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/tests/workflow/test_workflow_agent.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/tests/workflow/test_workflow_class.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/tests/workflow/test_workflow_models.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/tests/workflow/test_workflow_runner.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/tests/workflow/test_workflow_schema.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/tests/workflow/test_workflow_steps.py +0 -0
- {agentbyte-0.22.4 → agentbyte-0.22.6}/tests/workflow/test_workflow_visualizer.py +0 -0
|
@@ -4,6 +4,25 @@ All notable changes to Agentbyte are documented in this file.
|
|
|
4
4
|
|
|
5
5
|
The format follows Keep a Changelog principles and semantic versioning.
|
|
6
6
|
|
|
7
|
+
## [Unreleased]
|
|
8
|
+
|
|
9
|
+
### Removed
|
|
10
|
+
|
|
11
|
+
- Removed `agentbyte.microwebui` (`MicroWebUIServer`, `create_app`, `serve`) — the lightweight single-file demo UI is superseded by `agentbyte.webui` (Playground), which supports agents, orchestrators, and workflows with a React frontend and typed session management. Callers using `from agentbyte.microwebui import serve` should migrate to `agentbyte.webui`.
|
|
12
|
+
|
|
13
|
+
## [0.22.6] - 2026-07-09
|
|
14
|
+
|
|
15
|
+
### Fixed
|
|
16
|
+
|
|
17
|
+
- Fixed packaging extras so `agentbyte[sql]` explicitly installs `sqlalchemy` alongside `sqlmodel`, `asyncpg`, and `aiosqlite`, and the `all` extra includes that same SQL stack.
|
|
18
|
+
- Fixed the FastAPI example dependency surface to use `agentbyte[sql,azureopenai]` for Agentbyte-managed SQL and Azure OpenAI support, while removing redundant direct `azure-identity` and `greenlet` declarations.
|
|
19
|
+
|
|
20
|
+
## [0.22.5] - 2026-07-08
|
|
21
|
+
|
|
22
|
+
### Fixed
|
|
23
|
+
|
|
24
|
+
- Fixed file-backed skill resources to load eagerly during `FileSkillsSource.get_skills()`, so runtime `read_skill_resource` calls return the agent-owned snapshot instead of rereading mutable files from disk.
|
|
25
|
+
|
|
7
26
|
## [0.22.4] - 2026-07-07
|
|
8
27
|
|
|
9
28
|
### Fixed
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: agentbyte
|
|
3
|
-
Version: 0.22.
|
|
3
|
+
Version: 0.22.6
|
|
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
|
|
@@ -12,7 +12,9 @@ Requires-Dist: pydantic>=2.12.5
|
|
|
12
12
|
Requires-Dist: pyyaml>=6.0.3
|
|
13
13
|
Provides-Extra: all
|
|
14
14
|
Requires-Dist: aioboto3>=15.5.0; extra == 'all'
|
|
15
|
+
Requires-Dist: aiosqlite>=0.22.1; extra == 'all'
|
|
15
16
|
Requires-Dist: arxiv>=2.1; extra == 'all'
|
|
17
|
+
Requires-Dist: asyncpg>=0.31.0; extra == 'all'
|
|
16
18
|
Requires-Dist: azure-identity>=1.25.1; extra == 'all'
|
|
17
19
|
Requires-Dist: beautifulsoup4>=4.12; extra == 'all'
|
|
18
20
|
Requires-Dist: fastapi>=0.135.2; extra == 'all'
|
|
@@ -22,6 +24,8 @@ Requires-Dist: openai>=1.107.1; extra == 'all'
|
|
|
22
24
|
Requires-Dist: opentelemetry-api>=1.39.1; extra == 'all'
|
|
23
25
|
Requires-Dist: opentelemetry-exporter-otlp-proto-http>=1.39.1; extra == 'all'
|
|
24
26
|
Requires-Dist: opentelemetry-sdk>=1.39.1; extra == 'all'
|
|
27
|
+
Requires-Dist: sqlalchemy>=2.0.43; extra == 'all'
|
|
28
|
+
Requires-Dist: sqlmodel>=0.0.38; extra == 'all'
|
|
25
29
|
Requires-Dist: uvicorn>=0.42.0; extra == 'all'
|
|
26
30
|
Requires-Dist: youtube-transcript-api>=0.6; extra == 'all'
|
|
27
31
|
Provides-Extra: aws
|
|
@@ -54,6 +58,7 @@ Requires-Dist: youtube-transcript-api>=0.6; extra == 'research'
|
|
|
54
58
|
Provides-Extra: sql
|
|
55
59
|
Requires-Dist: aiosqlite>=0.22.1; extra == 'sql'
|
|
56
60
|
Requires-Dist: asyncpg>=0.31.0; extra == 'sql'
|
|
61
|
+
Requires-Dist: sqlalchemy>=2.0.43; extra == 'sql'
|
|
57
62
|
Requires-Dist: sqlmodel>=0.0.38; extra == 'sql'
|
|
58
63
|
Provides-Extra: test
|
|
59
64
|
Requires-Dist: aiosqlite>=0.22.1; extra == 'test'
|
|
@@ -78,7 +83,7 @@ Description-Content-Type: text/markdown
|
|
|
78
83
|
|
|
79
84
|
Agentbyte is an observability-first agentic AI framework for building and studying multiagent systems with a learning-first, implementation-oriented workflow.
|
|
80
85
|
|
|
81
|
-
Current release: **0.22.
|
|
86
|
+
Current release: **0.22.6**
|
|
82
87
|
|
|
83
88
|
## Current Capabilities
|
|
84
89
|
|
|
@@ -42,6 +42,7 @@ dataset = [
|
|
|
42
42
|
"aiosqlite>=0.22.1",
|
|
43
43
|
]
|
|
44
44
|
sql = [
|
|
45
|
+
"sqlalchemy>=2.0.43",
|
|
45
46
|
"sqlmodel>=0.0.38",
|
|
46
47
|
"asyncpg>=0.31.0",
|
|
47
48
|
"aiosqlite>=0.22.1",
|
|
@@ -82,6 +83,10 @@ all = [
|
|
|
82
83
|
"openai>=1.107.1",
|
|
83
84
|
"azure-identity>=1.25.1",
|
|
84
85
|
"aioboto3>=15.5.0",
|
|
86
|
+
"sqlalchemy>=2.0.43",
|
|
87
|
+
"sqlmodel>=0.0.38",
|
|
88
|
+
"asyncpg>=0.31.0",
|
|
89
|
+
"aiosqlite>=0.22.1",
|
|
85
90
|
"opentelemetry-api>=1.39.1",
|
|
86
91
|
"opentelemetry-exporter-otlp-proto-http>=1.39.1",
|
|
87
92
|
"opentelemetry-sdk>=1.39.1",
|
|
@@ -109,7 +114,7 @@ path = "src/agentbyte/__about__.py"
|
|
|
109
114
|
packages = ["src/agentbyte"]
|
|
110
115
|
|
|
111
116
|
[tool.hatch.build.targets.sdist]
|
|
112
|
-
include = ["/src", "/tests", "/README.md", "/LICENSE", "/CHANGELOG.md", "/src/agentbyte/webui/ui"
|
|
117
|
+
include = ["/src", "/tests", "/README.md", "/LICENSE", "/CHANGELOG.md", "/src/agentbyte/webui/ui"]
|
|
113
118
|
|
|
114
119
|
[dependency-groups]
|
|
115
120
|
openai = [
|
|
@@ -146,6 +151,7 @@ dataset = [
|
|
|
146
151
|
"aiosqlite>=0.22.1",
|
|
147
152
|
]
|
|
148
153
|
sql = [
|
|
154
|
+
"sqlalchemy>=2.0.43",
|
|
149
155
|
"sqlmodel>=0.0.38",
|
|
150
156
|
"asyncpg>=0.31.0",
|
|
151
157
|
"aiosqlite>=0.22.1",
|
|
@@ -181,6 +187,9 @@ all = [
|
|
|
181
187
|
"openai>=1.107.1",
|
|
182
188
|
"azure-identity>=1.25.1",
|
|
183
189
|
"aioboto3>=15.5.0",
|
|
190
|
+
"sqlalchemy>=2.0.43",
|
|
191
|
+
"sqlmodel>=0.0.38",
|
|
192
|
+
"asyncpg>=0.31.0",
|
|
184
193
|
"aiosqlite>=0.22.1",
|
|
185
194
|
"opentelemetry-api>=1.39.1",
|
|
186
195
|
"opentelemetry-exporter-otlp-proto-http>=1.39.1",
|
|
@@ -5,7 +5,7 @@ import os
|
|
|
5
5
|
import re
|
|
6
6
|
from abc import ABC, abstractmethod
|
|
7
7
|
from pathlib import Path
|
|
8
|
-
from typing import
|
|
8
|
+
from typing import Callable, Sequence
|
|
9
9
|
|
|
10
10
|
from agentbyte.skills.base import FileSkill, Skill
|
|
11
11
|
from agentbyte.skills.resources import InlineSkillResource
|
|
@@ -79,7 +79,7 @@ class FileSkillsSource(SkillsSource):
|
|
|
79
79
|
resources = [
|
|
80
80
|
InlineSkillResource(
|
|
81
81
|
name=rf,
|
|
82
|
-
|
|
82
|
+
content=Path(os.path.join(skill_dir, rf)).read_text(encoding="utf-8"),
|
|
83
83
|
)
|
|
84
84
|
for rf in resource_files
|
|
85
85
|
]
|
|
@@ -101,13 +101,6 @@ class FileSkillsSource(SkillsSource):
|
|
|
101
101
|
)
|
|
102
102
|
return list(skills.values())
|
|
103
103
|
|
|
104
|
-
@staticmethod
|
|
105
|
-
def _make_file_reader(full_path: str) -> Callable[..., Any]:
|
|
106
|
-
def read(**kwargs: Any) -> str:
|
|
107
|
-
with open(full_path, encoding="utf-8") as f:
|
|
108
|
-
return f.read()
|
|
109
|
-
return read
|
|
110
|
-
|
|
111
104
|
@staticmethod
|
|
112
105
|
def _discover_skill_directories(root_paths: list[str]) -> list[str]:
|
|
113
106
|
discovered: list[str] = []
|
|
@@ -107,6 +107,22 @@ class TestFileSkillsSource:
|
|
|
107
107
|
skills = await source.get_skills()
|
|
108
108
|
assert len(skills[0].resources) == 1
|
|
109
109
|
|
|
110
|
+
@pytest.mark.asyncio
|
|
111
|
+
async def test_resource_content_is_loaded_once_when_skills_are_created(
|
|
112
|
+
self, tmp_path: Path
|
|
113
|
+
) -> None:
|
|
114
|
+
skill_dir = _write_skill_md(tmp_path, "sql-query", "SQL")
|
|
115
|
+
resource_path = skill_dir / "tables.json"
|
|
116
|
+
resource_path.write_text('{"version": 1}')
|
|
117
|
+
|
|
118
|
+
source = FileSkillsSource(str(tmp_path))
|
|
119
|
+
skills = await source.get_skills()
|
|
120
|
+
|
|
121
|
+
resource_path.write_text('{"version": 2}')
|
|
122
|
+
|
|
123
|
+
content = await skills[0].resources[0].read()
|
|
124
|
+
assert content == '{"version": 1}'
|
|
125
|
+
|
|
110
126
|
@pytest.mark.asyncio
|
|
111
127
|
async def test_auto_discovers_script_files(self, tmp_path: Path) -> None:
|
|
112
128
|
skill_dir = _write_skill_md(tmp_path, "sql-query", "SQL")
|
|
@@ -1,312 +0,0 @@
|
|
|
1
|
-
"""Minimal FastAPI-based web UI for small Agentbyte demos."""
|
|
2
|
-
|
|
3
|
-
from __future__ import annotations
|
|
4
|
-
|
|
5
|
-
import json
|
|
6
|
-
from collections.abc import Iterable, Sequence
|
|
7
|
-
from pathlib import Path
|
|
8
|
-
from typing import Any
|
|
9
|
-
from uuid import uuid4
|
|
10
|
-
|
|
11
|
-
from agentbyte import InMemorySessionStore
|
|
12
|
-
from agentbyte.agents import Agent, AgentResponse
|
|
13
|
-
from agentbyte.context import AgentContext
|
|
14
|
-
from pydantic import BaseModel
|
|
15
|
-
|
|
16
|
-
EVENT_STREAM_KEY = "microwebui_event_stream"
|
|
17
|
-
RUN_COUNTER_KEY = "microwebui_run_counter"
|
|
18
|
-
UI_INDEX = Path(__file__).resolve().parent / "ui" / "index.html"
|
|
19
|
-
NO_CACHE_HEADERS = {
|
|
20
|
-
"Cache-Control": "no-store, no-cache, must-revalidate, max-age=0",
|
|
21
|
-
"Pragma": "no-cache",
|
|
22
|
-
"Expires": "0",
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
def _require_fastapi() -> tuple[Any, Any, Any, Any, Any]:
|
|
27
|
-
try:
|
|
28
|
-
from fastapi import FastAPI, HTTPException
|
|
29
|
-
from fastapi.responses import FileResponse
|
|
30
|
-
from fastapi.sse import EventSourceResponse, ServerSentEvent
|
|
31
|
-
except ImportError as exc:
|
|
32
|
-
raise RuntimeError(
|
|
33
|
-
"Agentbyte microwebui requires optional dependencies. "
|
|
34
|
-
"Install with `uv sync --extra webui` or `pip install agentbyte[webui]`."
|
|
35
|
-
) from exc
|
|
36
|
-
return FastAPI, HTTPException, FileResponse, EventSourceResponse, ServerSentEvent
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
class ChatRequest(BaseModel):
|
|
40
|
-
"""Incoming chat payload."""
|
|
41
|
-
|
|
42
|
-
message: str
|
|
43
|
-
session_id: str | None = None
|
|
44
|
-
agent_name: str | None = None
|
|
45
|
-
user_id: str | None = None
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
class AgentSummary(BaseModel):
|
|
49
|
-
"""Compact agent metadata for the discovery dropdown."""
|
|
50
|
-
|
|
51
|
-
name: str
|
|
52
|
-
description: str
|
|
53
|
-
default: bool = False
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
class SessionSummary(BaseModel):
|
|
57
|
-
"""Compact session metadata for the session picker."""
|
|
58
|
-
|
|
59
|
-
session_id: str
|
|
60
|
-
message_count: int
|
|
61
|
-
created_at: str | None = None
|
|
62
|
-
updated_at: str | None = None
|
|
63
|
-
preview: str | None = None
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
class SessionEvent(BaseModel):
|
|
67
|
-
"""Stored SSE-style event payload for a past run."""
|
|
68
|
-
|
|
69
|
-
run_index: int
|
|
70
|
-
run_label: str
|
|
71
|
-
prompt: str
|
|
72
|
-
agent_name: str
|
|
73
|
-
event: dict[str, Any]
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
def _serialize_stream_item(item: Any) -> str:
|
|
77
|
-
"""Serialize Agentbyte stream items to JSON for SSE output."""
|
|
78
|
-
if hasattr(item, "model_dump_json"):
|
|
79
|
-
return item.model_dump_json()
|
|
80
|
-
|
|
81
|
-
if hasattr(item, "model_dump"):
|
|
82
|
-
return json.dumps(item.model_dump(mode="json"))
|
|
83
|
-
|
|
84
|
-
return json.dumps(
|
|
85
|
-
{
|
|
86
|
-
"event_type": "unknown",
|
|
87
|
-
"content": str(item),
|
|
88
|
-
"python_type": type(item).__name__,
|
|
89
|
-
}
|
|
90
|
-
)
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
def _parse_stream_item(item: Any) -> dict[str, Any]:
|
|
94
|
-
"""Parse a stream item into a JSON-friendly dict."""
|
|
95
|
-
return json.loads(_serialize_stream_item(item))
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
def _iter_visible_messages(context: AgentContext) -> Iterable[dict[str, Any]]:
|
|
99
|
-
"""Yield user/assistant/tool messages with JSON-friendly shape."""
|
|
100
|
-
for message in context.messages:
|
|
101
|
-
if hasattr(message, "model_dump"):
|
|
102
|
-
yield message.model_dump(mode="json")
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
def _session_preview(context: AgentContext) -> str | None:
|
|
106
|
-
"""Return a short preview for a stored session."""
|
|
107
|
-
for message in context.messages:
|
|
108
|
-
role = getattr(message, "role", None)
|
|
109
|
-
content = getattr(message, "content", None)
|
|
110
|
-
if role == "user" and content:
|
|
111
|
-
return str(content)[:72]
|
|
112
|
-
return None
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
def _stored_event_stream(context: AgentContext) -> list[dict[str, Any]]:
|
|
116
|
-
"""Return the stored event stream list from session metadata."""
|
|
117
|
-
events = context.metadata.get(EVENT_STREAM_KEY, [])
|
|
118
|
-
return events if isinstance(events, list) else []
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
def _next_run_index(context: AgentContext) -> int:
|
|
122
|
-
"""Return the next run index for this stored session."""
|
|
123
|
-
current_value = context.metadata.get(RUN_COUNTER_KEY, 0)
|
|
124
|
-
return int(current_value) + 1
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
class MicroWebUIServer:
|
|
128
|
-
"""Serve a small multi-agent web UI from a list of Agent objects."""
|
|
129
|
-
|
|
130
|
-
def __init__(self, entities: Sequence[Agent]) -> None:
|
|
131
|
-
if not entities:
|
|
132
|
-
raise ValueError("microwebui requires at least one agent")
|
|
133
|
-
|
|
134
|
-
self.entities = list(entities)
|
|
135
|
-
self.entity_lookup = {entity.name: entity for entity in self.entities}
|
|
136
|
-
self.session_store = InMemorySessionStore()
|
|
137
|
-
|
|
138
|
-
def default_agent(self) -> Agent:
|
|
139
|
-
"""Return the first registered agent as the default selection."""
|
|
140
|
-
return self.entities[0]
|
|
141
|
-
|
|
142
|
-
def resolve_agent(self, agent_name: str | None, http_exception: Any) -> Agent:
|
|
143
|
-
"""Resolve a requested agent name or fall back to the default agent."""
|
|
144
|
-
if agent_name is None:
|
|
145
|
-
return self.default_agent()
|
|
146
|
-
|
|
147
|
-
agent = self.entity_lookup.get(agent_name)
|
|
148
|
-
if agent is None:
|
|
149
|
-
raise http_exception(status_code=404, detail=f"Unknown agent: {agent_name}")
|
|
150
|
-
return agent
|
|
151
|
-
|
|
152
|
-
async def stream_agent_events(
|
|
153
|
-
self,
|
|
154
|
-
message: str,
|
|
155
|
-
session_id: str | None,
|
|
156
|
-
agent_name: str | None,
|
|
157
|
-
user_id: str | None,
|
|
158
|
-
http_exception: Any,
|
|
159
|
-
server_sent_event: Any,
|
|
160
|
-
):
|
|
161
|
-
"""Stream agent execution as SSE and persist emitted events in memory."""
|
|
162
|
-
selected_agent = self.resolve_agent(agent_name, http_exception)
|
|
163
|
-
effective_session_id = session_id or str(uuid4())
|
|
164
|
-
context = await self.session_store.get(effective_session_id)
|
|
165
|
-
if context is None:
|
|
166
|
-
context = AgentContext(session_id=effective_session_id, user_id=user_id)
|
|
167
|
-
else:
|
|
168
|
-
context.session_id = effective_session_id
|
|
169
|
-
if user_id is not None:
|
|
170
|
-
context.user_id = user_id
|
|
171
|
-
|
|
172
|
-
current_run_index = _next_run_index(context)
|
|
173
|
-
current_run_events: list[SessionEvent] = []
|
|
174
|
-
|
|
175
|
-
async for event in selected_agent.run_stream(
|
|
176
|
-
message,
|
|
177
|
-
context=context,
|
|
178
|
-
verbose=True,
|
|
179
|
-
stream_tokens=True,
|
|
180
|
-
):
|
|
181
|
-
event_payload = _parse_stream_item(event)
|
|
182
|
-
current_run_events.append(
|
|
183
|
-
SessionEvent(
|
|
184
|
-
run_index=current_run_index,
|
|
185
|
-
run_label=f"Run {current_run_index}",
|
|
186
|
-
prompt=message,
|
|
187
|
-
agent_name=selected_agent.name,
|
|
188
|
-
event=event_payload,
|
|
189
|
-
)
|
|
190
|
-
)
|
|
191
|
-
if isinstance(event, AgentResponse):
|
|
192
|
-
event.context.metadata[EVENT_STREAM_KEY] = [
|
|
193
|
-
*_stored_event_stream(event.context),
|
|
194
|
-
*(stored_event.model_dump(mode="json") for stored_event in current_run_events),
|
|
195
|
-
]
|
|
196
|
-
event.context.metadata[RUN_COUNTER_KEY] = current_run_index
|
|
197
|
-
await self.session_store.save(effective_session_id, event.context)
|
|
198
|
-
yield server_sent_event(data=event_payload)
|
|
199
|
-
|
|
200
|
-
def create_app(self) -> Any:
|
|
201
|
-
"""Build the FastAPI application for the microwebui server."""
|
|
202
|
-
FastAPI, HTTPException, FileResponse, EventSourceResponse, ServerSentEvent = (
|
|
203
|
-
_require_fastapi()
|
|
204
|
-
)
|
|
205
|
-
|
|
206
|
-
app = FastAPI(title="Agentbyte MicroWebUI")
|
|
207
|
-
|
|
208
|
-
@app.post("/chat/stream", response_class=EventSourceResponse)
|
|
209
|
-
async def chat_stream(request: ChatRequest) -> Any:
|
|
210
|
-
async for event in self.stream_agent_events(
|
|
211
|
-
request.message,
|
|
212
|
-
request.session_id,
|
|
213
|
-
request.agent_name,
|
|
214
|
-
request.user_id,
|
|
215
|
-
HTTPException,
|
|
216
|
-
ServerSentEvent,
|
|
217
|
-
):
|
|
218
|
-
yield event
|
|
219
|
-
|
|
220
|
-
@app.get("/api/agents")
|
|
221
|
-
async def list_agents() -> list[AgentSummary]:
|
|
222
|
-
default_name = self.default_agent().name
|
|
223
|
-
return [
|
|
224
|
-
AgentSummary(
|
|
225
|
-
name=agent.name,
|
|
226
|
-
description=getattr(agent, "description", "") or "",
|
|
227
|
-
default=agent.name == default_name,
|
|
228
|
-
)
|
|
229
|
-
for agent in self.entities
|
|
230
|
-
]
|
|
231
|
-
|
|
232
|
-
@app.get("/api/sessions")
|
|
233
|
-
async def list_sessions(user_id: str | None = None) -> list[SessionSummary]:
|
|
234
|
-
session_items = (
|
|
235
|
-
await self.session_store.list_by_user(user_id)
|
|
236
|
-
if user_id
|
|
237
|
-
else await self.session_store.list()
|
|
238
|
-
)
|
|
239
|
-
sessions = [
|
|
240
|
-
SessionSummary(
|
|
241
|
-
session_id=session_id,
|
|
242
|
-
message_count=len(context.messages),
|
|
243
|
-
created_at=context.created_at.isoformat() if context.created_at else None,
|
|
244
|
-
updated_at=context.updated_at.isoformat() if context.updated_at else None,
|
|
245
|
-
preview=_session_preview(context),
|
|
246
|
-
)
|
|
247
|
-
for session_id, context in session_items
|
|
248
|
-
]
|
|
249
|
-
sessions.sort(
|
|
250
|
-
key=lambda session: session.updated_at or session.created_at or "",
|
|
251
|
-
reverse=True,
|
|
252
|
-
)
|
|
253
|
-
return sessions
|
|
254
|
-
|
|
255
|
-
@app.get("/api/sessions/{session_id}")
|
|
256
|
-
async def get_session(session_id: str) -> dict[str, Any]:
|
|
257
|
-
context = await self.session_store.get(session_id)
|
|
258
|
-
if context is None:
|
|
259
|
-
raise HTTPException(status_code=404, detail="Session not found")
|
|
260
|
-
|
|
261
|
-
return {
|
|
262
|
-
"session_id": session_id,
|
|
263
|
-
"message_count": len(context.messages),
|
|
264
|
-
"context": context.model_dump(mode="json"),
|
|
265
|
-
"visible_messages": list(_iter_visible_messages(context)),
|
|
266
|
-
}
|
|
267
|
-
|
|
268
|
-
@app.get("/api/sessions/{session_id}/events")
|
|
269
|
-
async def get_session_events(session_id: str) -> dict[str, Any]:
|
|
270
|
-
context = await self.session_store.get(session_id)
|
|
271
|
-
if context is None:
|
|
272
|
-
raise HTTPException(status_code=404, detail="Session not found")
|
|
273
|
-
|
|
274
|
-
events = _stored_event_stream(context)
|
|
275
|
-
return {
|
|
276
|
-
"session_id": session_id,
|
|
277
|
-
"event_count": len(events),
|
|
278
|
-
"events": events,
|
|
279
|
-
}
|
|
280
|
-
|
|
281
|
-
@app.get("/")
|
|
282
|
-
async def serve_frontend() -> Any:
|
|
283
|
-
return FileResponse(UI_INDEX, headers=NO_CACHE_HEADERS)
|
|
284
|
-
|
|
285
|
-
return app
|
|
286
|
-
|
|
287
|
-
def serve(self, host: str = "127.0.0.1", port: int = 8070) -> None:
|
|
288
|
-
"""Run the microwebui application with uvicorn."""
|
|
289
|
-
try:
|
|
290
|
-
import uvicorn
|
|
291
|
-
except ImportError as exc:
|
|
292
|
-
raise RuntimeError(
|
|
293
|
-
"Agentbyte microwebui requires optional dependencies. "
|
|
294
|
-
"Install with `uv sync --extra webui` or `pip install agentbyte[webui]`."
|
|
295
|
-
) from exc
|
|
296
|
-
|
|
297
|
-
print(f"Starting Agentbyte MicroWebUI on http://{host}:{port}/")
|
|
298
|
-
uvicorn.run(self.create_app(), host=host, port=port)
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
def create_app(entities: Sequence[Agent]) -> Any:
|
|
302
|
-
"""Create a FastAPI app for the given list of agents."""
|
|
303
|
-
return MicroWebUIServer(entities).create_app()
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
def serve(
|
|
307
|
-
entities: Sequence[Agent],
|
|
308
|
-
host: str = "127.0.0.1",
|
|
309
|
-
port: int = 8070,
|
|
310
|
-
) -> None:
|
|
311
|
-
"""Serve a minimal built-in web UI for the given list of agents."""
|
|
312
|
-
MicroWebUIServer(entities).serve(host=host, port=port)
|