agentbyte 0.4.0__tar.gz → 0.4.2__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.4.0 → agentbyte-0.4.2}/.gitignore +3 -1
- {agentbyte-0.4.0 → agentbyte-0.4.2}/CHANGELOG.md +25 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/PKG-INFO +135 -3
- {agentbyte-0.4.0 → agentbyte-0.4.2}/README.md +129 -2
- {agentbyte-0.4.0 → agentbyte-0.4.2}/pyproject.toml +12 -1
- {agentbyte-0.4.0 → agentbyte-0.4.2}/src/agentbyte/__about__.py +1 -1
- {agentbyte-0.4.0 → agentbyte-0.4.2}/src/agentbyte/__init__.py +5 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/src/agentbyte/cli/main.py +84 -1
- {agentbyte-0.4.0 → agentbyte-0.4.2}/src/agentbyte/llm/azure_openai_embedding.py +1 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/src/agentbyte/llm/embeddings_base.py +10 -2
- {agentbyte-0.4.0 → agentbyte-0.4.2}/src/agentbyte/llm/openai_embedding.py +1 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/src/agentbyte/llm/types.py +13 -1
- agentbyte-0.4.2/src/agentbyte/webui/__init__.py +52 -0
- agentbyte-0.4.2/src/agentbyte/webui/agent_framework_devui/ui/assets/index-BzhEszHZ.css +1 -0
- agentbyte-0.4.2/src/agentbyte/webui/agent_framework_devui/ui/assets/index-DByFJNGD.js +245 -0
- agentbyte-0.4.2/src/agentbyte/webui/agent_framework_devui/ui/index.html +14 -0
- agentbyte-0.4.2/src/agentbyte/webui/agent_framework_devui/ui/vite.svg +1 -0
- agentbyte-0.4.2/src/agentbyte/webui/discovery.py +230 -0
- agentbyte-0.4.2/src/agentbyte/webui/execution.py +268 -0
- agentbyte-0.4.2/src/agentbyte/webui/frontend/.gitignore +22 -0
- agentbyte-0.4.2/src/agentbyte/webui/frontend/README.md +69 -0
- agentbyte-0.4.2/src/agentbyte/webui/frontend/components.json +21 -0
- agentbyte-0.4.2/src/agentbyte/webui/frontend/eslint.config.js +23 -0
- agentbyte-0.4.2/src/agentbyte/webui/frontend/index.html +13 -0
- agentbyte-0.4.2/src/agentbyte/webui/frontend/package.json +47 -0
- agentbyte-0.4.2/src/agentbyte/webui/frontend/plan.md +0 -0
- agentbyte-0.4.2/src/agentbyte/webui/frontend/public/vite.svg +1 -0
- agentbyte-0.4.2/src/agentbyte/webui/frontend/src/App.css +42 -0
- agentbyte-0.4.2/src/agentbyte/webui/frontend/src/App.tsx +486 -0
- agentbyte-0.4.2/src/agentbyte/webui/frontend/src/assets/react.svg +1 -0
- agentbyte-0.4.2/src/agentbyte/webui/frontend/src/components/agent/agent-view.tsx +312 -0
- agentbyte-0.4.2/src/agentbyte/webui/frontend/src/components/message_renderer/ContentRenderer.tsx +275 -0
- agentbyte-0.4.2/src/agentbyte/webui/frontend/src/components/message_renderer/MessageRenderer.tsx +20 -0
- agentbyte-0.4.2/src/agentbyte/webui/frontend/src/components/message_renderer/index.ts +7 -0
- agentbyte-0.4.2/src/agentbyte/webui/frontend/src/components/message_renderer/types.ts +24 -0
- agentbyte-0.4.2/src/agentbyte/webui/frontend/src/components/mode-toggle.tsx +39 -0
- agentbyte-0.4.2/src/agentbyte/webui/frontend/src/components/orchestrator/orchestrator-view.tsx +280 -0
- agentbyte-0.4.2/src/agentbyte/webui/frontend/src/components/shared/app-header.tsx +49 -0
- agentbyte-0.4.2/src/agentbyte/webui/frontend/src/components/shared/chat-base.tsx +253 -0
- agentbyte-0.4.2/src/agentbyte/webui/frontend/src/components/shared/context-inspector.tsx +460 -0
- agentbyte-0.4.2/src/agentbyte/webui/frontend/src/components/shared/debug-panel.tsx +266 -0
- agentbyte-0.4.2/src/agentbyte/webui/frontend/src/components/shared/entity-selector.tsx +264 -0
- agentbyte-0.4.2/src/agentbyte/webui/frontend/src/components/shared/example-tasks-display.tsx +41 -0
- agentbyte-0.4.2/src/agentbyte/webui/frontend/src/components/shared/examples-gallery.tsx +268 -0
- agentbyte-0.4.2/src/agentbyte/webui/frontend/src/components/shared/session-switcher.tsx +198 -0
- agentbyte-0.4.2/src/agentbyte/webui/frontend/src/components/shared/tool-approval-banner.tsx +142 -0
- agentbyte-0.4.2/src/agentbyte/webui/frontend/src/components/theme-provider.tsx +33 -0
- agentbyte-0.4.2/src/agentbyte/webui/frontend/src/components/ui/attachment-gallery.tsx +166 -0
- agentbyte-0.4.2/src/agentbyte/webui/frontend/src/components/ui/badge.tsx +36 -0
- agentbyte-0.4.2/src/agentbyte/webui/frontend/src/components/ui/button.tsx +59 -0
- agentbyte-0.4.2/src/agentbyte/webui/frontend/src/components/ui/card.tsx +92 -0
- agentbyte-0.4.2/src/agentbyte/webui/frontend/src/components/ui/dialog.tsx +71 -0
- agentbyte-0.4.2/src/agentbyte/webui/frontend/src/components/ui/dropdown-menu.tsx +255 -0
- agentbyte-0.4.2/src/agentbyte/webui/frontend/src/components/ui/file-upload.tsx +141 -0
- agentbyte-0.4.2/src/agentbyte/webui/frontend/src/components/ui/input.tsx +21 -0
- agentbyte-0.4.2/src/agentbyte/webui/frontend/src/components/ui/label.tsx +22 -0
- agentbyte-0.4.2/src/agentbyte/webui/frontend/src/components/ui/loading-spinner.tsx +23 -0
- agentbyte-0.4.2/src/agentbyte/webui/frontend/src/components/ui/loading-state.tsx +52 -0
- agentbyte-0.4.2/src/agentbyte/webui/frontend/src/components/ui/message-input.tsx +237 -0
- agentbyte-0.4.2/src/agentbyte/webui/frontend/src/components/ui/scroll-area.tsx +46 -0
- agentbyte-0.4.2/src/agentbyte/webui/frontend/src/components/ui/slider.tsx +26 -0
- agentbyte-0.4.2/src/agentbyte/webui/frontend/src/components/ui/tabs.tsx +53 -0
- agentbyte-0.4.2/src/agentbyte/webui/frontend/src/components/ui/textarea.tsx +24 -0
- agentbyte-0.4.2/src/agentbyte/webui/frontend/src/components/workflow/workflow-view.tsx +422 -0
- agentbyte-0.4.2/src/agentbyte/webui/frontend/src/hooks/messageHandlers.ts +274 -0
- agentbyte-0.4.2/src/agentbyte/webui/frontend/src/hooks/useEntityExecution.ts +312 -0
- agentbyte-0.4.2/src/agentbyte/webui/frontend/src/index.css +147 -0
- agentbyte-0.4.2/src/agentbyte/webui/frontend/src/main.tsx +18 -0
- agentbyte-0.4.2/src/agentbyte/webui/frontend/src/services/api.ts +290 -0
- agentbyte-0.4.2/src/agentbyte/webui/frontend/src/types/index.ts +52 -0
- agentbyte-0.4.2/src/agentbyte/webui/frontend/src/types/picoagents.ts +261 -0
- agentbyte-0.4.2/src/agentbyte/webui/frontend/src/utils/message-utils.ts +149 -0
- agentbyte-0.4.2/src/agentbyte/webui/frontend/src/vite-env.d.ts +9 -0
- agentbyte-0.4.2/src/agentbyte/webui/frontend/tsconfig.app.json +31 -0
- agentbyte-0.4.2/src/agentbyte/webui/frontend/tsconfig.json +13 -0
- agentbyte-0.4.2/src/agentbyte/webui/frontend/tsconfig.node.json +25 -0
- agentbyte-0.4.2/src/agentbyte/webui/frontend/vite.config.ts +34 -0
- agentbyte-0.4.2/src/agentbyte/webui/frontend/yarn.lock +2282 -0
- agentbyte-0.4.2/src/agentbyte/webui/models.py +174 -0
- agentbyte-0.4.2/src/agentbyte/webui/registry.py +130 -0
- agentbyte-0.4.2/src/agentbyte/webui/server.py +431 -0
- agentbyte-0.4.2/src/agentbyte/webui/session_store.py +63 -0
- agentbyte-0.4.2/src/agentbyte/webui/sessions.py +99 -0
- agentbyte-0.4.2/src/agentbyte/webui/ui/assets/index-CWk64UM3.js +359 -0
- agentbyte-0.4.2/src/agentbyte/webui/ui/assets/index-vt1cujlT.css +1 -0
- agentbyte-0.4.2/src/agentbyte/webui/ui/index.html +14 -0
- agentbyte-0.4.2/src/agentbyte/webui/ui/vite.svg +1 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/tests/llm/test_azure_embedding_client.py +3 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/tests/llm/test_openai_embedding_client.py +3 -0
- agentbyte-0.4.2/tests/webui/__init__.py +1 -0
- agentbyte-0.4.2/tests/webui/helpers.py +142 -0
- agentbyte-0.4.2/tests/webui/test_execution.py +139 -0
- agentbyte-0.4.2/tests/webui/test_package_api.py +14 -0
- agentbyte-0.4.2/tests/webui/test_registry.py +79 -0
- agentbyte-0.4.2/tests/webui/test_server.py +54 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/.github/skills/agentbyte-agent-as-tool/SKILL.md +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/.github/skills/agentbyte-ai-driven-orchestration/SKILL.md +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/.github/skills/agentbyte-dataset/SKILL.md +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/.github/skills/agentbyte-function-tools/SKILL.md +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/.github/skills/agentbyte-list-memory/SKILL.md +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/.github/skills/agentbyte-llm-client/SKILL.md +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/.github/skills/agentbyte-memory-tool/SKILL.md +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/.github/skills/agentbyte-middleware/SKILL.md +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/.github/skills/agentbyte-multi-turn-context/SKILL.md +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/.github/skills/agentbyte-otel-tracing/SKILL.md +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/.github/skills/agentbyte-round-robin-orchestration/SKILL.md +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/.github/skills/agentbyte-simple-agent/SKILL.md +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/.github/skills/agentbyte-tool-approval/SKILL.md +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/.github/skills/skill-authoring/SKILL.md +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/LICENSE +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/src/agentbyte/agents/__init__.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/src/agentbyte/agents/agent.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/src/agentbyte/agents/agent_as_tool.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/src/agentbyte/agents/base.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/src/agentbyte/agents/types.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/src/agentbyte/cancellation_token.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/src/agentbyte/cli/__init__.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/src/agentbyte/component.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/src/agentbyte/context.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/src/agentbyte/dataset/__init__.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/src/agentbyte/dataset/base.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/src/agentbyte/dataset/json.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/src/agentbyte/dataset/loader.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/src/agentbyte/dataset/loaders.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/src/agentbyte/dataset/sqlite.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/src/agentbyte/entity.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/src/agentbyte/llm/__init__.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/src/agentbyte/llm/auth.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/src/agentbyte/llm/azure_openai.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/src/agentbyte/llm/base.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/src/agentbyte/llm/openai.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/src/agentbyte/llm/pricing.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/src/agentbyte/llm/settings.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/src/agentbyte/memory/__init__.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/src/agentbyte/memory/base.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/src/agentbyte/messages.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/src/agentbyte/middleware/__init__.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/src/agentbyte/middleware/base.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/src/agentbyte/middleware/otel.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/src/agentbyte/notebook.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/src/agentbyte/orchestration/__init__.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/src/agentbyte/orchestration/ai.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/src/agentbyte/orchestration/base.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/src/agentbyte/orchestration/plan.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/src/agentbyte/orchestration/round_robin.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/src/agentbyte/session.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/src/agentbyte/termination/__init__.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/src/agentbyte/termination/base.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/src/agentbyte/termination/cancellation.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/src/agentbyte/termination/composite.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/src/agentbyte/termination/external.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/src/agentbyte/termination/function_call.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/src/agentbyte/termination/handoff.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/src/agentbyte/termination/max_message.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/src/agentbyte/termination/text_mention.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/src/agentbyte/termination/timeout.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/src/agentbyte/termination/token_usage.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/src/agentbyte/tools/__init__.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/src/agentbyte/tools/base.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/src/agentbyte/tools/core_tools.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/src/agentbyte/tools/decorator.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/src/agentbyte/tools/memory_tool.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/src/agentbyte/types.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/src/agentbyte/workflow/__init__.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/src/agentbyte/workflow/core/__init__.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/src/agentbyte/workflow/core/checkpoint.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/src/agentbyte/workflow/core/models.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/src/agentbyte/workflow/core/runner.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/src/agentbyte/workflow/core/workflow.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/src/agentbyte/workflow/defaults.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/src/agentbyte/workflow/schema_utils.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/src/agentbyte/workflow/steps/__init__.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/src/agentbyte/workflow/steps/agentbyte_agent.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/src/agentbyte/workflow/steps/echo.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/src/agentbyte/workflow/steps/function.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/src/agentbyte/workflow/steps/http.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/src/agentbyte/workflow/steps/step.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/src/agentbyte/workflow/steps/transform.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/src/agentbyte/workflow/visualizer.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/tests/agents/test_agent_as_tool.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/tests/agents/test_agent_basic.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/tests/agents/test_agent_event_types.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/tests/agents/test_agent_memory_integration.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/tests/agents/test_agent_middleware_integration.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/tests/agents/test_agent_stream_events.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/tests/agents/test_tool_approval.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/tests/cli/test_create_skills.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/tests/llm/test_azure_client.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/tests/llm/test_llm_types.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/tests/llm/test_openai_client.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/tests/memory/test_memory.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/tests/middleware/test_middleware_chain.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/tests/middleware/test_otel.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/tests/orchestration/test_ai_orchestrator.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/tests/orchestration/test_base_orchestrator.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/tests/orchestration/test_plan_orchestrator.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/tests/orchestration/test_round_robin.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/tests/termination/test_base.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/tests/termination/test_cancellation.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/tests/termination/test_composite.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/tests/termination/test_external.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/tests/termination/test_function_call.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/tests/termination/test_handoff.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/tests/termination/test_max_message.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/tests/termination/test_text_mention.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/tests/termination/test_timeout.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/tests/termination/test_token_usage.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/tests/test_cancellation_token.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/tests/test_context.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/tests/test_messages.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/tests/test_package_api.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/tests/test_session.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/tests/test_types.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/tests/tools/test_memory_tool.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/tests/tools/test_tools.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/tests/workflow/test_checkpoint.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/tests/workflow/test_workflow_class.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/tests/workflow/test_workflow_models.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/tests/workflow/test_workflow_runner.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/tests/workflow/test_workflow_steps.py +0 -0
- {agentbyte-0.4.0 → agentbyte-0.4.2}/tests/workflow/test_workflow_visualizer.py +0 -0
|
@@ -4,6 +4,31 @@ 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
|
+
## [0.4.2] - 2026-03-25
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
- Added the copied picoagents `agent_framework_devui` assets under `src/agentbyte/webui/` for local parity/reference work.
|
|
11
|
+
- Added the upstream frontend workspace files that now live under `src/agentbyte/webui/frontend/`, including new public assets and shared UI components.
|
|
12
|
+
|
|
13
|
+
### Changed
|
|
14
|
+
- Replaced the previous in-repo WebUI frontend source with the picoagents frontend snapshot copied into `src/agentbyte/webui/frontend/`.
|
|
15
|
+
- Removed the redundant Hatch wheel `force-include` for `src/agentbyte/webui/ui`, fixing duplicate archive entries during wheel builds.
|
|
16
|
+
|
|
17
|
+
### Fixed
|
|
18
|
+
- Fixed PyPI publish failures caused by duplicate `agentbyte/webui/ui/*` filenames in the generated wheel.
|
|
19
|
+
|
|
20
|
+
## [0.4.1] - 2026-03-25
|
|
21
|
+
|
|
22
|
+
### Added
|
|
23
|
+
- Added a single-vector `embedding` field to `EmbeddingResult` while preserving the existing `embeddings`, `usage`, `model`, and `metadata` payload.
|
|
24
|
+
|
|
25
|
+
### Changed
|
|
26
|
+
- Updated OpenAI and Azure embedding clients so `create()` and `create_batch()` both return an `EmbeddingResult` with `embedding == embeddings[0]`.
|
|
27
|
+
- Shipped the packaged Chapter 8 WebUI assets and parity updates that landed after `0.4.0`.
|
|
28
|
+
|
|
29
|
+
### Testing
|
|
30
|
+
- Added focused embedding assertions for the dual-field result contract across OpenAI and Azure embedding clients.
|
|
31
|
+
|
|
7
32
|
## [0.4.0] - 2026-03-24
|
|
8
33
|
|
|
9
34
|
### Added
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: agentbyte
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.2
|
|
4
4
|
Summary: A toolkit for designing multiagent systems
|
|
5
5
|
Project-URL: Homepage, https://gitlab.com/pyninja/aiengineering/agentbyte
|
|
6
6
|
Project-URL: Repository, https://gitlab.com/pyninja/aiengineering/agentbyte
|
|
@@ -15,10 +15,12 @@ Requires-Dist: pydantic-settings>=2.13.0
|
|
|
15
15
|
Requires-Dist: pydantic>=2.12.5
|
|
16
16
|
Provides-Extra: all
|
|
17
17
|
Requires-Dist: azure-identity>=1.25.1; extra == 'all'
|
|
18
|
+
Requires-Dist: fastapi>=0.135.2; extra == 'all'
|
|
18
19
|
Requires-Dist: openai>=1.107.1; extra == 'all'
|
|
19
20
|
Requires-Dist: opentelemetry-api>=1.39.1; extra == 'all'
|
|
20
21
|
Requires-Dist: opentelemetry-exporter-otlp-proto-http>=1.39.1; extra == 'all'
|
|
21
22
|
Requires-Dist: opentelemetry-sdk>=1.39.1; extra == 'all'
|
|
23
|
+
Requires-Dist: uvicorn>=0.42.0; extra == 'all'
|
|
22
24
|
Provides-Extra: azureopenai
|
|
23
25
|
Requires-Dist: azure-identity>=1.25.1; extra == 'azureopenai'
|
|
24
26
|
Requires-Dist: openai>=1.107.1; extra == 'azureopenai'
|
|
@@ -28,20 +30,35 @@ Provides-Extra: otel
|
|
|
28
30
|
Requires-Dist: opentelemetry-api>=1.39.1; extra == 'otel'
|
|
29
31
|
Requires-Dist: opentelemetry-exporter-otlp-proto-http>=1.39.1; extra == 'otel'
|
|
30
32
|
Requires-Dist: opentelemetry-sdk>=1.39.1; extra == 'otel'
|
|
33
|
+
Provides-Extra: webui
|
|
34
|
+
Requires-Dist: fastapi>=0.135.2; extra == 'webui'
|
|
35
|
+
Requires-Dist: uvicorn>=0.42.0; extra == 'webui'
|
|
31
36
|
Description-Content-Type: text/markdown
|
|
32
37
|
|
|
33
38
|
<p align="center">
|
|
34
|
-
<img src="https://gitlab.com/pyninja/aiengineering/agentbyte/-/raw/v0.4.
|
|
39
|
+
<img src="https://gitlab.com/pyninja/aiengineering/agentbyte/-/raw/v0.4.2/logo/agent-byte-avatar-low.png" alt="Agentbyte" width="200"/>
|
|
35
40
|
</p>
|
|
36
41
|
|
|
37
42
|
# Agentbyte
|
|
38
43
|
|
|
39
44
|
Agentbyte is an observability-first agentic AI framework for building and studying multiagent systems with a learning-first, implementation-oriented workflow.
|
|
40
45
|
|
|
41
|
-
Current release: **0.4.
|
|
46
|
+
Current release: **0.4.2**
|
|
42
47
|
|
|
43
48
|
Repository: [gitlab.com/pyninja/aiengineering/agentbyte](https://gitlab.com/pyninja/aiengineering/agentbyte)
|
|
44
49
|
|
|
50
|
+
## What's New in 0.4.2
|
|
51
|
+
|
|
52
|
+
- Rebased the WebUI source frontend on the picoagents frontend snapshot copied into `src/agentbyte/webui/frontend/`.
|
|
53
|
+
- Added the packaged picoagents-style `agent_framework_devui` assets under `src/agentbyte/webui/` for parity/reference work.
|
|
54
|
+
- Fixed wheel packaging so the bundled WebUI assets are included once, unblocking PyPI publish.
|
|
55
|
+
|
|
56
|
+
## What's New in 0.4.1
|
|
57
|
+
|
|
58
|
+
- Extended `EmbeddingResult` with a single-vector `embedding` field while preserving `embeddings`, `usage`, `model`, and `metadata`.
|
|
59
|
+
- Updated OpenAI and Azure embedding clients so single-input calls are easier to consume without losing batch compatibility.
|
|
60
|
+
- Added and validated focused embedding client coverage for the new dual-field result contract.
|
|
61
|
+
|
|
45
62
|
## What's New in 0.4.0
|
|
46
63
|
|
|
47
64
|
- Added multi-agent orchestration foundations with `BaseOrchestrator`.
|
|
@@ -49,6 +66,7 @@ Repository: [gitlab.com/pyninja/aiengineering/agentbyte](https://gitlab.com/pyni
|
|
|
49
66
|
- Added a full termination system for autonomous orchestration flows.
|
|
50
67
|
- Added plan-based orchestration examples, tests, and study/tutorial docs.
|
|
51
68
|
- Expanded OpenTelemetry coverage across agents, workflows, and orchestration roots with aggregate usage summaries.
|
|
69
|
+
- Added a packaged Chapter 8 WebUI with FastAPI + SSE, session handling, discovery, and a browser UI for agents, workflows, and orchestrators.
|
|
52
70
|
|
|
53
71
|
## What's New in 0.3.5
|
|
54
72
|
|
|
@@ -132,6 +150,7 @@ Optional extras:
|
|
|
132
150
|
uv sync --extra openai
|
|
133
151
|
uv sync --extra azureopenai
|
|
134
152
|
uv sync --extra otel
|
|
153
|
+
uv sync --extra webui
|
|
135
154
|
```
|
|
136
155
|
|
|
137
156
|
### Install in another project (pip / uv add)
|
|
@@ -146,6 +165,14 @@ pip install "agentbyte[azureopenai,otel]"
|
|
|
146
165
|
uv add "agentbyte[azureopenai,otel]"
|
|
147
166
|
```
|
|
148
167
|
|
|
168
|
+
For the browser WebUI:
|
|
169
|
+
|
|
170
|
+
```bash
|
|
171
|
+
pip install "agentbyte[webui]"
|
|
172
|
+
# or
|
|
173
|
+
uv add "agentbyte[webui]"
|
|
174
|
+
```
|
|
175
|
+
|
|
149
176
|
Install all optional features:
|
|
150
177
|
|
|
151
178
|
```bash
|
|
@@ -181,6 +208,111 @@ agent = Agent(
|
|
|
181
208
|
)
|
|
182
209
|
```
|
|
183
210
|
|
|
211
|
+
## Run The WebUI
|
|
212
|
+
|
|
213
|
+
### Option 1: Run the included demo app
|
|
214
|
+
|
|
215
|
+
This is the easiest way to see the WebUI working end to end with:
|
|
216
|
+
- one demo agent
|
|
217
|
+
- one demo workflow
|
|
218
|
+
- one demo orchestrator
|
|
219
|
+
|
|
220
|
+
Step 1. Install the WebUI extra:
|
|
221
|
+
|
|
222
|
+
```bash
|
|
223
|
+
uv sync --extra webui
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
Step 2. Start the demo app:
|
|
227
|
+
|
|
228
|
+
```bash
|
|
229
|
+
uv run python examples/webui/basic_webui.py
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
Step 3. Open the browser:
|
|
233
|
+
|
|
234
|
+
```text
|
|
235
|
+
http://127.0.0.1:8080
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
If auto-open is enabled in your environment, the browser may open automatically.
|
|
239
|
+
|
|
240
|
+
### Option 2: Run the WebUI against your current project directory
|
|
241
|
+
|
|
242
|
+
Use this when you want Agentbyte to scan a directory for exported `agent`, `workflow`, or `orchestrator` objects.
|
|
243
|
+
|
|
244
|
+
Important: discovery is convention-based. The scanned directory must contain Python modules that expose top-level variables literally named `agent`, `workflow`, or `orchestrator`. If you point `--dir` at a folder that does not export those names, the UI will load but show `No entities found`.
|
|
245
|
+
|
|
246
|
+
Step 1. Install the WebUI extra:
|
|
247
|
+
|
|
248
|
+
```bash
|
|
249
|
+
uv sync --extra webui
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
Step 2. Launch the WebUI and scan the current directory:
|
|
253
|
+
|
|
254
|
+
```bash
|
|
255
|
+
uv run agentbyte webui --dir .
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
Step 3. Open the browser:
|
|
259
|
+
|
|
260
|
+
```text
|
|
261
|
+
http://127.0.0.1:8080
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
Useful variants:
|
|
265
|
+
|
|
266
|
+
```bash
|
|
267
|
+
uv run agentbyte webui --dir . --port 8080 --host 127.0.0.1 --no-open
|
|
268
|
+
uv run agentbyte webui --dir examples --port 8090
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
For this repository, the most reliable first-run path is still the bundled demo:
|
|
272
|
+
|
|
273
|
+
```bash
|
|
274
|
+
uv run python examples/webui/basic_webui.py
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
Use `agentbyte webui --dir ...` when you have a directory of exportable demo modules, for example:
|
|
278
|
+
|
|
279
|
+
```python
|
|
280
|
+
# my_entities.py
|
|
281
|
+
agent = ...
|
|
282
|
+
workflow = ...
|
|
283
|
+
orchestrator = ...
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
### Option 3: Run it programmatically
|
|
287
|
+
|
|
288
|
+
Use this when you want to serve in-memory entities directly from Python.
|
|
289
|
+
|
|
290
|
+
```python
|
|
291
|
+
from agentbyte.webui import serve
|
|
292
|
+
|
|
293
|
+
serve(entities=[agent], port=8080, auto_open=True)
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
### Quick Troubleshooting
|
|
297
|
+
|
|
298
|
+
If the app does not start:
|
|
299
|
+
|
|
300
|
+
```bash
|
|
301
|
+
uv sync --extra webui
|
|
302
|
+
```
|
|
303
|
+
|
|
304
|
+
If port `8080` is already in use:
|
|
305
|
+
|
|
306
|
+
```bash
|
|
307
|
+
uv run agentbyte webui --dir . --port 8090
|
|
308
|
+
```
|
|
309
|
+
|
|
310
|
+
If you do not want the browser to open automatically:
|
|
311
|
+
|
|
312
|
+
```bash
|
|
313
|
+
uv run agentbyte webui --dir . --no-open
|
|
314
|
+
```
|
|
315
|
+
|
|
184
316
|
## Project Layout
|
|
185
317
|
|
|
186
318
|
```
|
|
@@ -1,15 +1,27 @@
|
|
|
1
1
|
<p align="center">
|
|
2
|
-
<img src="https://gitlab.com/pyninja/aiengineering/agentbyte/-/raw/v0.4.
|
|
2
|
+
<img src="https://gitlab.com/pyninja/aiengineering/agentbyte/-/raw/v0.4.2/logo/agent-byte-avatar-low.png" alt="Agentbyte" width="200"/>
|
|
3
3
|
</p>
|
|
4
4
|
|
|
5
5
|
# Agentbyte
|
|
6
6
|
|
|
7
7
|
Agentbyte is an observability-first agentic AI framework for building and studying multiagent systems with a learning-first, implementation-oriented workflow.
|
|
8
8
|
|
|
9
|
-
Current release: **0.4.
|
|
9
|
+
Current release: **0.4.2**
|
|
10
10
|
|
|
11
11
|
Repository: [gitlab.com/pyninja/aiengineering/agentbyte](https://gitlab.com/pyninja/aiengineering/agentbyte)
|
|
12
12
|
|
|
13
|
+
## What's New in 0.4.2
|
|
14
|
+
|
|
15
|
+
- Rebased the WebUI source frontend on the picoagents frontend snapshot copied into `src/agentbyte/webui/frontend/`.
|
|
16
|
+
- Added the packaged picoagents-style `agent_framework_devui` assets under `src/agentbyte/webui/` for parity/reference work.
|
|
17
|
+
- Fixed wheel packaging so the bundled WebUI assets are included once, unblocking PyPI publish.
|
|
18
|
+
|
|
19
|
+
## What's New in 0.4.1
|
|
20
|
+
|
|
21
|
+
- Extended `EmbeddingResult` with a single-vector `embedding` field while preserving `embeddings`, `usage`, `model`, and `metadata`.
|
|
22
|
+
- Updated OpenAI and Azure embedding clients so single-input calls are easier to consume without losing batch compatibility.
|
|
23
|
+
- Added and validated focused embedding client coverage for the new dual-field result contract.
|
|
24
|
+
|
|
13
25
|
## What's New in 0.4.0
|
|
14
26
|
|
|
15
27
|
- Added multi-agent orchestration foundations with `BaseOrchestrator`.
|
|
@@ -17,6 +29,7 @@ Repository: [gitlab.com/pyninja/aiengineering/agentbyte](https://gitlab.com/pyni
|
|
|
17
29
|
- Added a full termination system for autonomous orchestration flows.
|
|
18
30
|
- Added plan-based orchestration examples, tests, and study/tutorial docs.
|
|
19
31
|
- Expanded OpenTelemetry coverage across agents, workflows, and orchestration roots with aggregate usage summaries.
|
|
32
|
+
- Added a packaged Chapter 8 WebUI with FastAPI + SSE, session handling, discovery, and a browser UI for agents, workflows, and orchestrators.
|
|
20
33
|
|
|
21
34
|
## What's New in 0.3.5
|
|
22
35
|
|
|
@@ -100,6 +113,7 @@ Optional extras:
|
|
|
100
113
|
uv sync --extra openai
|
|
101
114
|
uv sync --extra azureopenai
|
|
102
115
|
uv sync --extra otel
|
|
116
|
+
uv sync --extra webui
|
|
103
117
|
```
|
|
104
118
|
|
|
105
119
|
### Install in another project (pip / uv add)
|
|
@@ -114,6 +128,14 @@ pip install "agentbyte[azureopenai,otel]"
|
|
|
114
128
|
uv add "agentbyte[azureopenai,otel]"
|
|
115
129
|
```
|
|
116
130
|
|
|
131
|
+
For the browser WebUI:
|
|
132
|
+
|
|
133
|
+
```bash
|
|
134
|
+
pip install "agentbyte[webui]"
|
|
135
|
+
# or
|
|
136
|
+
uv add "agentbyte[webui]"
|
|
137
|
+
```
|
|
138
|
+
|
|
117
139
|
Install all optional features:
|
|
118
140
|
|
|
119
141
|
```bash
|
|
@@ -149,6 +171,111 @@ agent = Agent(
|
|
|
149
171
|
)
|
|
150
172
|
```
|
|
151
173
|
|
|
174
|
+
## Run The WebUI
|
|
175
|
+
|
|
176
|
+
### Option 1: Run the included demo app
|
|
177
|
+
|
|
178
|
+
This is the easiest way to see the WebUI working end to end with:
|
|
179
|
+
- one demo agent
|
|
180
|
+
- one demo workflow
|
|
181
|
+
- one demo orchestrator
|
|
182
|
+
|
|
183
|
+
Step 1. Install the WebUI extra:
|
|
184
|
+
|
|
185
|
+
```bash
|
|
186
|
+
uv sync --extra webui
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
Step 2. Start the demo app:
|
|
190
|
+
|
|
191
|
+
```bash
|
|
192
|
+
uv run python examples/webui/basic_webui.py
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
Step 3. Open the browser:
|
|
196
|
+
|
|
197
|
+
```text
|
|
198
|
+
http://127.0.0.1:8080
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
If auto-open is enabled in your environment, the browser may open automatically.
|
|
202
|
+
|
|
203
|
+
### Option 2: Run the WebUI against your current project directory
|
|
204
|
+
|
|
205
|
+
Use this when you want Agentbyte to scan a directory for exported `agent`, `workflow`, or `orchestrator` objects.
|
|
206
|
+
|
|
207
|
+
Important: discovery is convention-based. The scanned directory must contain Python modules that expose top-level variables literally named `agent`, `workflow`, or `orchestrator`. If you point `--dir` at a folder that does not export those names, the UI will load but show `No entities found`.
|
|
208
|
+
|
|
209
|
+
Step 1. Install the WebUI extra:
|
|
210
|
+
|
|
211
|
+
```bash
|
|
212
|
+
uv sync --extra webui
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
Step 2. Launch the WebUI and scan the current directory:
|
|
216
|
+
|
|
217
|
+
```bash
|
|
218
|
+
uv run agentbyte webui --dir .
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
Step 3. Open the browser:
|
|
222
|
+
|
|
223
|
+
```text
|
|
224
|
+
http://127.0.0.1:8080
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
Useful variants:
|
|
228
|
+
|
|
229
|
+
```bash
|
|
230
|
+
uv run agentbyte webui --dir . --port 8080 --host 127.0.0.1 --no-open
|
|
231
|
+
uv run agentbyte webui --dir examples --port 8090
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
For this repository, the most reliable first-run path is still the bundled demo:
|
|
235
|
+
|
|
236
|
+
```bash
|
|
237
|
+
uv run python examples/webui/basic_webui.py
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
Use `agentbyte webui --dir ...` when you have a directory of exportable demo modules, for example:
|
|
241
|
+
|
|
242
|
+
```python
|
|
243
|
+
# my_entities.py
|
|
244
|
+
agent = ...
|
|
245
|
+
workflow = ...
|
|
246
|
+
orchestrator = ...
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
### Option 3: Run it programmatically
|
|
250
|
+
|
|
251
|
+
Use this when you want to serve in-memory entities directly from Python.
|
|
252
|
+
|
|
253
|
+
```python
|
|
254
|
+
from agentbyte.webui import serve
|
|
255
|
+
|
|
256
|
+
serve(entities=[agent], port=8080, auto_open=True)
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
### Quick Troubleshooting
|
|
260
|
+
|
|
261
|
+
If the app does not start:
|
|
262
|
+
|
|
263
|
+
```bash
|
|
264
|
+
uv sync --extra webui
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
If port `8080` is already in use:
|
|
268
|
+
|
|
269
|
+
```bash
|
|
270
|
+
uv run agentbyte webui --dir . --port 8090
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
If you do not want the browser to open automatically:
|
|
274
|
+
|
|
275
|
+
```bash
|
|
276
|
+
uv run agentbyte webui --dir . --no-open
|
|
277
|
+
```
|
|
278
|
+
|
|
152
279
|
## Project Layout
|
|
153
280
|
|
|
154
281
|
```
|
|
@@ -35,14 +35,21 @@ azureopenai = [
|
|
|
35
35
|
"openai>=1.107.1",
|
|
36
36
|
"azure-identity>=1.25.1",
|
|
37
37
|
]
|
|
38
|
+
webui = [
|
|
39
|
+
"fastapi>=0.135.2",
|
|
40
|
+
"uvicorn>=0.42.0",
|
|
41
|
+
]
|
|
38
42
|
all = [
|
|
39
43
|
"openai>=1.107.1",
|
|
40
44
|
"azure-identity>=1.25.1",
|
|
41
45
|
"opentelemetry-api>=1.39.1",
|
|
42
46
|
"opentelemetry-exporter-otlp-proto-http>=1.39.1",
|
|
43
47
|
"opentelemetry-sdk>=1.39.1",
|
|
48
|
+
"fastapi>=0.135.2",
|
|
49
|
+
"uvicorn>=0.42.0",
|
|
44
50
|
]
|
|
45
51
|
|
|
52
|
+
|
|
46
53
|
[project.scripts]
|
|
47
54
|
agentbyte = "agentbyte.cli:main"
|
|
48
55
|
|
|
@@ -60,7 +67,7 @@ packages = ["src/agentbyte"]
|
|
|
60
67
|
".github/skills" = "agentbyte/skills"
|
|
61
68
|
|
|
62
69
|
[tool.hatch.build.targets.sdist]
|
|
63
|
-
include = ["/src", "/tests", "/README.md", "/LICENSE", "/CHANGELOG.md", "/.github/skills"]
|
|
70
|
+
include = ["/src", "/tests", "/README.md", "/LICENSE", "/CHANGELOG.md", "/.github/skills", "/src/agentbyte/webui/ui"]
|
|
64
71
|
|
|
65
72
|
[dependency-groups]
|
|
66
73
|
dev = [
|
|
@@ -84,6 +91,10 @@ test = [
|
|
|
84
91
|
viz = [
|
|
85
92
|
"graphviz>=0.21",
|
|
86
93
|
]
|
|
94
|
+
webui = [
|
|
95
|
+
"fastapi>=0.135.2",
|
|
96
|
+
"uvicorn>=0.42.0",
|
|
97
|
+
]
|
|
87
98
|
|
|
88
99
|
[tool.pytest.ini_options]
|
|
89
100
|
testpaths = ["tests"]
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
__version__ = "0.4.
|
|
1
|
+
__version__ = "0.4.2"
|
|
2
2
|
VERSION = __version__
|
|
@@ -47,6 +47,7 @@ from agentbyte.termination import (
|
|
|
47
47
|
TimeoutTermination,
|
|
48
48
|
TokenUsageTermination,
|
|
49
49
|
)
|
|
50
|
+
from agentbyte.webui import WebUIServer, create_app, serve
|
|
50
51
|
|
|
51
52
|
# Auto-instrument with OpenTelemetry if enabled.
|
|
52
53
|
# Must be set BEFORE importing agentbyte for transparent instrumentation.
|
|
@@ -90,4 +91,8 @@ __all__ = [
|
|
|
90
91
|
"ExternalTermination",
|
|
91
92
|
"CancellationTermination",
|
|
92
93
|
"CompositeTermination",
|
|
94
|
+
# WebUI
|
|
95
|
+
"WebUIServer",
|
|
96
|
+
"create_app",
|
|
97
|
+
"serve",
|
|
93
98
|
]
|
|
@@ -137,9 +137,42 @@ def cmd_create_skills(args: argparse.Namespace, cwd: Path | None = None) -> int:
|
|
|
137
137
|
|
|
138
138
|
_COMMANDS = [
|
|
139
139
|
("create-skills", "Copy AI assistant skills into this project"),
|
|
140
|
+
("webui", "Launch the Agentbyte WebUI"),
|
|
140
141
|
]
|
|
141
142
|
|
|
142
143
|
|
|
144
|
+
def cmd_webui(args: argparse.Namespace) -> int:
|
|
145
|
+
"""Implement the webui sub-command."""
|
|
146
|
+
try:
|
|
147
|
+
from agentbyte.webui import launch
|
|
148
|
+
except Exception as exc:
|
|
149
|
+
print(
|
|
150
|
+
"Error: WebUI dependencies are not available. "
|
|
151
|
+
"Install them with `uv sync --extra webui` or `pip install agentbyte[webui]`.",
|
|
152
|
+
file=sys.stderr,
|
|
153
|
+
)
|
|
154
|
+
print(f"Details: {exc}", file=sys.stderr)
|
|
155
|
+
return 1
|
|
156
|
+
|
|
157
|
+
try:
|
|
158
|
+
launch(
|
|
159
|
+
entities_dir=args.dir,
|
|
160
|
+
port=args.port,
|
|
161
|
+
host=args.host,
|
|
162
|
+
auto_open=not args.no_open,
|
|
163
|
+
reload=args.reload,
|
|
164
|
+
log_level=args.log_level,
|
|
165
|
+
)
|
|
166
|
+
except KeyboardInterrupt:
|
|
167
|
+
print("\nShutting down Agentbyte WebUI.")
|
|
168
|
+
return 0
|
|
169
|
+
except Exception as exc:
|
|
170
|
+
print(f"Error starting Agentbyte WebUI: {exc}", file=sys.stderr)
|
|
171
|
+
return 1
|
|
172
|
+
|
|
173
|
+
return 0
|
|
174
|
+
|
|
175
|
+
|
|
143
176
|
def _prompt_choice(prompt: str, choices: list[str], default: int = 1) -> str | None:
|
|
144
177
|
"""Print a numbered menu and return the selected string value.
|
|
145
178
|
|
|
@@ -203,6 +236,17 @@ def _interactive_wizard() -> int:
|
|
|
203
236
|
args = argparse.Namespace(provider=provider)
|
|
204
237
|
return cmd_create_skills(args)
|
|
205
238
|
|
|
239
|
+
if command == "webui":
|
|
240
|
+
args = argparse.Namespace(
|
|
241
|
+
dir=".",
|
|
242
|
+
port=8080,
|
|
243
|
+
host="127.0.0.1",
|
|
244
|
+
no_open=False,
|
|
245
|
+
reload=False,
|
|
246
|
+
log_level="info",
|
|
247
|
+
)
|
|
248
|
+
return cmd_webui(args)
|
|
249
|
+
|
|
206
250
|
return 0
|
|
207
251
|
|
|
208
252
|
|
|
@@ -240,6 +284,44 @@ def _build_parser() -> argparse.ArgumentParser:
|
|
|
240
284
|
),
|
|
241
285
|
)
|
|
242
286
|
|
|
287
|
+
webui_parser = subparsers.add_parser(
|
|
288
|
+
"webui",
|
|
289
|
+
help="Launch the packaged Agentbyte WebUI",
|
|
290
|
+
)
|
|
291
|
+
webui_parser.add_argument(
|
|
292
|
+
"--dir",
|
|
293
|
+
default=".",
|
|
294
|
+
help="Directory to scan for agents, workflows, and orchestrators",
|
|
295
|
+
)
|
|
296
|
+
webui_parser.add_argument(
|
|
297
|
+
"--port",
|
|
298
|
+
"-p",
|
|
299
|
+
type=int,
|
|
300
|
+
default=8080,
|
|
301
|
+
help="Port to run the server on (default: 8080)",
|
|
302
|
+
)
|
|
303
|
+
webui_parser.add_argument(
|
|
304
|
+
"--host",
|
|
305
|
+
default="127.0.0.1",
|
|
306
|
+
help="Host to bind the server to (default: 127.0.0.1)",
|
|
307
|
+
)
|
|
308
|
+
webui_parser.add_argument(
|
|
309
|
+
"--no-open",
|
|
310
|
+
action="store_true",
|
|
311
|
+
help="Do not automatically open the browser",
|
|
312
|
+
)
|
|
313
|
+
webui_parser.add_argument(
|
|
314
|
+
"--reload",
|
|
315
|
+
action="store_true",
|
|
316
|
+
help="Enable auto-reload for development",
|
|
317
|
+
)
|
|
318
|
+
webui_parser.add_argument(
|
|
319
|
+
"--log-level",
|
|
320
|
+
choices=["debug", "info", "warning", "error"],
|
|
321
|
+
default="info",
|
|
322
|
+
help="Server log level (default: info)",
|
|
323
|
+
)
|
|
324
|
+
|
|
243
325
|
return parser
|
|
244
326
|
|
|
245
327
|
|
|
@@ -257,7 +339,8 @@ def main() -> None:
|
|
|
257
339
|
|
|
258
340
|
if args.command == "create-skills":
|
|
259
341
|
sys.exit(cmd_create_skills(args))
|
|
342
|
+
if args.command == "webui":
|
|
343
|
+
sys.exit(cmd_webui(args))
|
|
260
344
|
|
|
261
345
|
parser.print_help()
|
|
262
346
|
sys.exit(1)
|
|
263
|
-
|
|
@@ -50,7 +50,11 @@ class BaseEmbeddingClient(ABC, ComponentLoader):
|
|
|
50
50
|
|
|
51
51
|
@abstractmethod
|
|
52
52
|
async def create(self, input_text: str, **kwargs: Any) -> EmbeddingResult:
|
|
53
|
-
"""Create one embedding result from one text input.
|
|
53
|
+
"""Create one embedding result from one text input.
|
|
54
|
+
|
|
55
|
+
Consumers should read `result.embedding` for the single returned vector.
|
|
56
|
+
The batch-oriented `result.embeddings` field still contains one item.
|
|
57
|
+
"""
|
|
54
58
|
|
|
55
59
|
@abstractmethod
|
|
56
60
|
async def create_batch(
|
|
@@ -58,7 +62,11 @@ class BaseEmbeddingClient(ABC, ComponentLoader):
|
|
|
58
62
|
input_texts: List[str],
|
|
59
63
|
**kwargs: Any,
|
|
60
64
|
) -> EmbeddingResult:
|
|
61
|
-
"""Create one embedding result from a batch of text inputs.
|
|
65
|
+
"""Create one embedding result from a batch of text inputs.
|
|
66
|
+
|
|
67
|
+
Consumers should read `result.embeddings` for the full batch in request
|
|
68
|
+
order. The `result.embedding` field mirrors the first vector.
|
|
69
|
+
"""
|
|
62
70
|
|
|
63
71
|
async def _execute_embedding_operation(
|
|
64
72
|
self,
|
|
@@ -158,12 +158,25 @@ class EmbeddingResult(BaseModel):
|
|
|
158
158
|
Response payload for embedding generation.
|
|
159
159
|
|
|
160
160
|
Attributes:
|
|
161
|
+
embedding: First embedding vector in request order. For single-input
|
|
162
|
+
calls, this is the embedding for the provided text.
|
|
161
163
|
embeddings: Embedding vectors in request order.
|
|
162
164
|
model: Model/deployment used by the provider.
|
|
163
165
|
usage: Token usage and execution metadata.
|
|
164
166
|
metadata: Provider-specific metadata.
|
|
167
|
+
|
|
168
|
+
Invariant:
|
|
169
|
+
`embedding == embeddings[0]`
|
|
170
|
+
|
|
171
|
+
Single-input `create()` calls return exactly one vector in
|
|
172
|
+
`embeddings`, while batch `create_batch()` calls return all vectors in
|
|
173
|
+
request order and expose the first vector through `embedding`.
|
|
165
174
|
"""
|
|
166
175
|
|
|
176
|
+
embedding: list[float] = Field(
|
|
177
|
+
...,
|
|
178
|
+
description="First embedding vector in request order",
|
|
179
|
+
)
|
|
167
180
|
embeddings: list[list[float]] = Field(
|
|
168
181
|
...,
|
|
169
182
|
description="Embedding vectors in request order",
|
|
@@ -212,4 +225,3 @@ __all__ = [
|
|
|
212
225
|
"ModelClientError",
|
|
213
226
|
]
|
|
214
227
|
|
|
215
|
-
|