agentbyte 0.24.2__tar.gz → 0.26.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {agentbyte-0.24.2 → agentbyte-0.26.0}/CHANGELOG.md +35 -1
- {agentbyte-0.24.2 → agentbyte-0.26.0}/PKG-INFO +5 -2
- {agentbyte-0.24.2 → agentbyte-0.26.0}/README.md +1 -1
- {agentbyte-0.24.2 → agentbyte-0.26.0}/pyproject.toml +8 -0
- agentbyte-0.26.0/src/agentbyte/__about__.py +2 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/context_providers/skill_tools.py +24 -5
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/context_providers/skills.py +17 -4
- agentbyte-0.26.0/src/agentbyte/optim/__init__.py +66 -0
- agentbyte-0.26.0/src/agentbyte/optim/base.py +405 -0
- agentbyte-0.26.0/src/agentbyte/optim/config.py +124 -0
- agentbyte-0.26.0/src/agentbyte/optim/gepa.py +397 -0
- agentbyte-0.26.0/src/agentbyte/optim/mipro.py +164 -0
- agentbyte-0.26.0/src/agentbyte/optim/pareto.py +72 -0
- agentbyte-0.26.0/src/agentbyte/optim/reflective.py +169 -0
- agentbyte-0.26.0/src/agentbyte/optim/spec.py +331 -0
- agentbyte-0.26.0/src/agentbyte/optim/trace.py +171 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/skills/base.py +14 -3
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/skills/sources.py +47 -23
- agentbyte-0.26.0/src/agentbyte/skills/validation.py +42 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/tools/base.py +117 -144
- {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/context_providers/test_skill_tools.py +21 -3
- {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/context_providers/test_skills_provider.py +71 -0
- agentbyte-0.26.0/tests/optim/test_base.py +256 -0
- agentbyte-0.26.0/tests/optim/test_base_integration.py +79 -0
- agentbyte-0.26.0/tests/optim/test_config.py +241 -0
- agentbyte-0.26.0/tests/optim/test_gepa.py +220 -0
- agentbyte-0.26.0/tests/optim/test_mipro.py +120 -0
- agentbyte-0.26.0/tests/optim/test_pareto.py +112 -0
- agentbyte-0.26.0/tests/optim/test_reflective.py +160 -0
- agentbyte-0.26.0/tests/optim/test_spec.py +374 -0
- agentbyte-0.26.0/tests/optim/test_trace.py +176 -0
- agentbyte-0.26.0/tests/skills/__init__.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/skills/test_base.py +44 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/skills/test_sources.py +90 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/tools/test_tools.py +183 -3
- agentbyte-0.24.2/src/agentbyte/__about__.py +0 -2
- {agentbyte-0.24.2 → agentbyte-0.26.0}/.gitignore +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/LICENSE +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/__init__.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/agents/__init__.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/agents/agent.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/agents/agent_as_tool.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/agents/base.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/agents/embedding_agent.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/agents/types.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/cancellation_token.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/catalog.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/cli/__init__.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/cli/main.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/component.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/context.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/context_providers/__init__.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/context_providers/base.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/dataset/__init__.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/dataset/base.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/dataset/config.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/dataset/importer.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/dataset/json.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/dataset/loader.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/dataset/publish.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/dataset/publish_config.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/dataset/publishers.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/dataset/sources.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/dataset/sqlite.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/dataset/sqlite_db.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/dataset/write_config.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/dataset/writers.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/entity.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/eval/__init__.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/eval/base.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/eval/checks/__init__.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/eval/checks/decorator.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/eval/checks/keyword.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/eval/checks/local.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/eval/checks/tool.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/eval/checks/types.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/eval/comparison.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/eval/eval_dataset.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/eval/judges/__init__.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/eval/judges/base.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/eval/judges/composite.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/eval/judges/llm.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/eval/judges/pairwise.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/eval/judges/reference.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/eval/pairwise.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/eval/report.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/eval/runner.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/eval/splitting.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/eval/targets/__init__.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/eval/targets/agent.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/eval/targets/model.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/eval/targets/multi_turn.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/eval/targets/orchestrator.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/eval/types.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/llm/__init__.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/llm/_retry_observability.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/llm/auth.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/llm/azure/__init__.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/llm/azure/auth.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/llm/azure/chat.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/llm/azure/embedding.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/llm/azure/settings.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/llm/azure_openai.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/llm/azure_openai_embedding.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/llm/base.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/llm/embeddings_base.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/llm/openai/__init__.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/llm/openai/chat.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/llm/openai/embedding.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/llm/openai/settings.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/llm/openai_embedding.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/llm/pricing.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/llm/retry_policy.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/llm/settings.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/llm/types.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/logger.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/memory/__init__.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/memory/base.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/messages.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/middleware/__init__.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/middleware/base.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/middleware/otel.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/middleware/retry.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/middleware/sql_usage.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/middleware/usage_logger.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/notebook.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/orchestration/__init__.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/orchestration/ai.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/orchestration/base.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/orchestration/handoff.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/orchestration/plan.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/orchestration/policies.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/orchestration/round_robin.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/presets/__init__.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/presets/agents.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/presets/clients.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/presets/instruction_registry.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/presets/instructions/orchestrator.yaml +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/presets/instructions/query_rewriter.yaml +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/presets/instructions/researcher.yaml +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/presets/instructions/reviewer.yaml +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/presets/instructions/writer.yaml +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/presets/orchestration.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/presets/skills/contracts-analyst/SKILL.md +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/presets/skills/hr-analyst/SKILL.md +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/presets/skills/hr-analyst/resources/departments.md +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/presets/skills/hr-analyst/resources/employees.md +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/presets/skills/hr-analyst/resources/payroll.md +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/presets/streaming.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/presets/workflow.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/session_store.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/skills/__init__.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/skills/resources.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/skills/scripts.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/termination/__init__.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/termination/base.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/termination/cancellation.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/termination/composite.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/termination/consecutive_agent.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/termination/external.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/termination/function_call.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/termination/handoff.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/termination/max_message.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/termination/predicate.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/termination/source.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/termination/text_mention.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/termination/timeout.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/termination/token_usage.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/tools/__init__.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/tools/coding_tools.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/tools/core_tools.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/tools/decorator.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/tools/memory_tool.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/tools/research_tools.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/types.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/webui/__init__.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/webui/discovery.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/webui/execution.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/webui/models.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/webui/registry.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/webui/server.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/webui/session_store.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/webui/sessions.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/webui/ui/assets/index-BF3DwXaF.js +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/webui/ui/assets/index-ar5tOeqt.css +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/webui/ui/index.html +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/webui/ui/vite.svg +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/workflow/__init__.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/workflow/agent.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/workflow/core/__init__.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/workflow/core/_structure_hash.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/workflow/core/checkpoint.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/workflow/core/models.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/workflow/core/runner.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/workflow/core/workflow.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/workflow/defaults.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/workflow/loader.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/workflow/schema.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/workflow/schema_utils.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/workflow/steps/__init__.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/workflow/steps/agentbyte_agent.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/workflow/steps/echo.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/workflow/steps/function.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/workflow/steps/http.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/workflow/steps/step.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/workflow/steps/subworkflow.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/workflow/steps/transform.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/workflow/visualizer.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/agents/test_agent_as_tool.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/agents/test_agent_basic.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/agents/test_agent_context_providers.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/agents/test_agent_event_types.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/agents/test_agent_memory_integration.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/agents/test_agent_middleware_integration.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/agents/test_agent_response_accessors.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/agents/test_agent_retry_middleware.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/agents/test_agent_stream_events.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/agents/test_embedding_agent.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/agents/test_tool_approval.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/cli/test_registry_check.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/context_providers/__init__.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/dataset/test_loader.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/dataset/test_multi_table.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/dataset/test_publish.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/dataset/test_sqlite_db.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/eval/test_eval_dataset.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/eval/test_multi_turn.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/eval/test_pairwise.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/eval/test_phase1_runner_and_targets.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/eval/test_phase2_checks_and_reports.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/eval/test_splitting.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/eval/test_types_and_judges.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/llm/test_azure_client.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/llm/test_azure_embedding_client.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/llm/test_llm_types.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/llm/test_openai_client.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/llm/test_openai_embedding_client.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/llm/test_pricing.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/llm/test_retry_observability.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/llm/test_retry_policy_api.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/memory/test_memory.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/middleware/test_middleware_chain.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/middleware/test_otel.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/middleware/test_retry_middleware.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/middleware/test_sql_usage.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/middleware/test_usage_logger.py +0 -0
- {agentbyte-0.24.2/tests/skills → agentbyte-0.26.0/tests/optim}/__init__.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/orchestration/test_ai_orchestrator.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/orchestration/test_base_orchestrator.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/orchestration/test_handoff_orchestrator.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/orchestration/test_plan_orchestrator.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/orchestration/test_round_robin.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/presets/test_agents.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/presets/test_clients.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/presets/test_instruction_registry.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/presets/test_orchestration.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/presets/test_streaming.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/presets/test_workflow.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/skills/test_resources.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/skills/test_scripts.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/termination/test_base.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/termination/test_cancellation.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/termination/test_composite.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/termination/test_consecutive_agent.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/termination/test_external.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/termination/test_function_call.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/termination/test_handoff.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/termination/test_max_message.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/termination/test_predicate.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/termination/test_source.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/termination/test_text_mention.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/termination/test_timeout.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/termination/test_token_usage.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/test_cancellation_token.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/test_context.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/test_logger.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/test_messages.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/test_package_api.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/test_session_store.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/test_types.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/tools/test_coding_tools.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/tools/test_memory_tool.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/tools/test_research_tools.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/webui/__init__.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/webui/helpers.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/webui/test_execution.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/webui/test_package_api.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/webui/test_registry.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/webui/test_server.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/webui/test_sessions.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/workflow/test_checkpoint.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/workflow/test_subworkflow_step.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/workflow/test_workflow_agent.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/workflow/test_workflow_class.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/workflow/test_workflow_models.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/workflow/test_workflow_runner.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/workflow/test_workflow_schema.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/workflow/test_workflow_steps.py +0 -0
- {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/workflow/test_workflow_visualizer.py +0 -0
|
@@ -4,7 +4,41 @@ 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
|
-
## [
|
|
7
|
+
## [0.26.0] - 2026-09-04
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
|
|
11
|
+
- `FunctionTool` now supports structured parameters backed by Pydantic models, including nested models, optional collections, typed dictionaries, tuples, unions, field constraints, and `Annotated` parameter descriptions.
|
|
12
|
+
|
|
13
|
+
### Changed
|
|
14
|
+
|
|
15
|
+
- Function-tool schema generation and execution now share one strict Pydantic validation model. Validated object arguments reach Pydantic-annotated functions as model instances, dictionary annotations remain dictionaries, and JSON arrays are converted to declared tuple types.
|
|
16
|
+
- Function tools now reject unexpected arguments and unsupported annotations at the boundary instead of silently accepting or flattening them.
|
|
17
|
+
|
|
18
|
+
### Fixed
|
|
19
|
+
|
|
20
|
+
- Fixed optional and model-shaped tool parameters being incorrectly advertised as strings, which caused valid object-shaped LLM tool calls to fail with `Invalid parameters provided` before tool execution.
|
|
21
|
+
- Parameter schemas now use author-provided `Field` or string `Annotated` descriptions instead of leaking Python builtin and typing documentation.
|
|
22
|
+
|
|
23
|
+
## [0.25.0] - 2026-09-01
|
|
24
|
+
|
|
25
|
+
### Added
|
|
26
|
+
|
|
27
|
+
- New `agentbyte.optim` subpackage: an autotune harness for searching an agent's instructions, skills, and tool selection against an `agentbyte.eval` dataset. Includes `AgentConfig`/`OptimizationSpec` with six tunables, `BaseOptimizer`/`CostLog`/`OptimizationTrace`, `ReflectiveOptimizer`, `ReflectiveParetoOptimizer`, `MIPROOptimizer`, and an optional GEPA bridge (`optimize_with_gepa`) behind a new `agentbyte[optim]` extra.
|
|
28
|
+
- Structured skill discovery triggers: `Skill.triggers` (normalized, deduplicated, capped at 20 entries of up to 100 characters each) can now be declared on `InlineSkill`, `FileSkill` (via `SKILL.md` YAML frontmatter), and `ClassSkill`, and are rendered as nested `<triggers>` elements in the provider's skill advertisement.
|
|
29
|
+
- `AgentSkillConfig` in `agentbyte.optim` gained a `triggers` field and a new `SkillTriggersTunable`, so trigger phrases can be searched alongside instructions and descriptions.
|
|
30
|
+
|
|
31
|
+
### Changed
|
|
32
|
+
|
|
33
|
+
- **Breaking:** `AgentConfig.skills` now requires structured `AgentSkillConfig` values (`description` + `instructions`, both non-empty) instead of plain instruction strings; legacy string values are rejected.
|
|
34
|
+
- Skill providers now register only the tools (`load_skill`, `read_skill_resource`, `run_skill_script`) actually needed by their resolved skills, instead of always registering all three.
|
|
35
|
+
- Duplicate skill/resource/script names across providers and file roots now resolve deterministically via case-insensitive, first-declared-wins precedence.
|
|
36
|
+
|
|
37
|
+
### Fixed
|
|
38
|
+
|
|
39
|
+
- `AgentConfig.model` is now honored by `to_agent()` — previously the field was accepted but silently ignored, always reusing the passed-in `model_client` unchanged. The override now round-trips through the client's `_to_config()`/`_from_config()` methods.
|
|
40
|
+
- `FileSkillsSource` skill-directory discovery now sorts directory entries before recursing, making duplicate-name resolution deterministic across filesystems/platforms instead of depending on OS-level `iterdir()` ordering.
|
|
41
|
+
- Missing skill/resource/script lookups now return actionable errors listing the available names instead of a bare "not found".
|
|
8
42
|
|
|
9
43
|
## [0.24.2] - 2026-08-31
|
|
10
44
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: agentbyte
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.26.0
|
|
4
4
|
Summary: A toolkit for designing multiagent systems
|
|
5
5
|
Author-email: MrDataPsycho <mr.data.psycho@gmail.com>
|
|
6
6
|
License-Expression: LicenseRef-Proprietary
|
|
@@ -18,6 +18,7 @@ Requires-Dist: asyncpg>=0.31.0; extra == 'all'
|
|
|
18
18
|
Requires-Dist: azure-identity>=1.25.1; extra == 'all'
|
|
19
19
|
Requires-Dist: beautifulsoup4>=4.12; extra == 'all'
|
|
20
20
|
Requires-Dist: fastapi>=0.135.2; extra == 'all'
|
|
21
|
+
Requires-Dist: gepa>=0.1; extra == 'all'
|
|
21
22
|
Requires-Dist: graphviz>=0.21; extra == 'all'
|
|
22
23
|
Requires-Dist: html2text>=2024.2; extra == 'all'
|
|
23
24
|
Requires-Dist: openai>=1.107.1; extra == 'all'
|
|
@@ -46,6 +47,8 @@ Requires-Dist: pymupdf-layout>=1.26.6; extra == 'dev'
|
|
|
46
47
|
Requires-Dist: pymupdf4llm>=0.2.9; extra == 'dev'
|
|
47
48
|
Provides-Extra: openai
|
|
48
49
|
Requires-Dist: openai>=1.107.1; extra == 'openai'
|
|
50
|
+
Provides-Extra: optim
|
|
51
|
+
Requires-Dist: gepa>=0.1; extra == 'optim'
|
|
49
52
|
Provides-Extra: otel
|
|
50
53
|
Requires-Dist: opentelemetry-api>=1.39.1; extra == 'otel'
|
|
51
54
|
Requires-Dist: opentelemetry-exporter-otlp-proto-http>=1.39.1; extra == 'otel'
|
|
@@ -83,7 +86,7 @@ Description-Content-Type: text/markdown
|
|
|
83
86
|
|
|
84
87
|
Agentbyte is an observability-first agentic AI framework for building and studying multiagent systems with a learning-first, implementation-oriented workflow.
|
|
85
88
|
|
|
86
|
-
Current release: **0.
|
|
89
|
+
Current release: **0.26.0**
|
|
87
90
|
|
|
88
91
|
## Building an Agent
|
|
89
92
|
|
|
@@ -47,6 +47,9 @@ sql = [
|
|
|
47
47
|
"asyncpg>=0.31.0",
|
|
48
48
|
"aiosqlite>=0.22.1",
|
|
49
49
|
]
|
|
50
|
+
optim = [
|
|
51
|
+
"gepa>=0.1",
|
|
52
|
+
]
|
|
50
53
|
viz = [
|
|
51
54
|
"graphviz>=0.21",
|
|
52
55
|
]
|
|
@@ -97,6 +100,7 @@ all = [
|
|
|
97
100
|
"html2text>=2024.2",
|
|
98
101
|
"arxiv>=2.1",
|
|
99
102
|
"youtube-transcript-api>=0.6",
|
|
103
|
+
"gepa>=0.1",
|
|
100
104
|
]
|
|
101
105
|
|
|
102
106
|
|
|
@@ -156,6 +160,9 @@ sql = [
|
|
|
156
160
|
"asyncpg>=0.31.0",
|
|
157
161
|
"aiosqlite>=0.22.1",
|
|
158
162
|
]
|
|
163
|
+
optim = [
|
|
164
|
+
"gepa>=0.1",
|
|
165
|
+
]
|
|
159
166
|
test = [
|
|
160
167
|
"pytest>=9.0.1",
|
|
161
168
|
"pytest-asyncio>=1.3.0",
|
|
@@ -201,6 +208,7 @@ all = [
|
|
|
201
208
|
"html2text>=2024.2",
|
|
202
209
|
"arxiv>=2.1",
|
|
203
210
|
"youtube-transcript-api>=0.6",
|
|
211
|
+
"gepa>=0.1",
|
|
204
212
|
]
|
|
205
213
|
|
|
206
214
|
[tool.pytest.ini_options]
|
|
@@ -19,6 +19,14 @@ def _find_skill(skills: Sequence[Skill], name: str) -> Skill | None:
|
|
|
19
19
|
return None
|
|
20
20
|
|
|
21
21
|
|
|
22
|
+
def _available_names(kind: str, names: Sequence[str]) -> str:
|
|
23
|
+
unique_names = {name.lower(): name for name in reversed(names)}
|
|
24
|
+
available = sorted(unique_names.values(), key=str.lower)
|
|
25
|
+
if not available:
|
|
26
|
+
return f"No {kind} are available."
|
|
27
|
+
return f"Available {kind}: {', '.join(available)}."
|
|
28
|
+
|
|
29
|
+
|
|
22
30
|
def _error(message: str) -> ToolResult:
|
|
23
31
|
return ToolResult(success=False, result=message, error=message, metadata={})
|
|
24
32
|
|
|
@@ -57,7 +65,8 @@ class LoadSkillTool(BaseTool):
|
|
|
57
65
|
return _error("Error: Skill name cannot be empty.")
|
|
58
66
|
skill = _find_skill(self._skills, skill_name)
|
|
59
67
|
if skill is None:
|
|
60
|
-
|
|
68
|
+
available = _available_names("skills", [skill.name for skill in self._skills])
|
|
69
|
+
return _error(f"Error: Skill '{skill_name}' not found. {available}")
|
|
61
70
|
logger.info("Loading skill: %s", skill_name)
|
|
62
71
|
return _ok(skill.content)
|
|
63
72
|
|
|
@@ -104,7 +113,8 @@ class ReadSkillResourceTool(BaseTool):
|
|
|
104
113
|
|
|
105
114
|
skill = _find_skill(self._skills, skill_name)
|
|
106
115
|
if skill is None:
|
|
107
|
-
|
|
116
|
+
available = _available_names("skills", [skill.name for skill in self._skills])
|
|
117
|
+
return _error(f"Error: Skill '{skill_name}' not found. {available}")
|
|
108
118
|
|
|
109
119
|
resource_name_lower = resource_name.lower()
|
|
110
120
|
resource = next(
|
|
@@ -112,8 +122,12 @@ class ReadSkillResourceTool(BaseTool):
|
|
|
112
122
|
None,
|
|
113
123
|
)
|
|
114
124
|
if resource is None:
|
|
125
|
+
available = _available_names(
|
|
126
|
+
"resources", [resource.name for resource in skill.resources]
|
|
127
|
+
)
|
|
115
128
|
return _error(
|
|
116
|
-
f"Error: Resource '{resource_name}' not found in skill '{skill_name}'."
|
|
129
|
+
f"Error: Resource '{resource_name}' not found in skill '{skill_name}'. "
|
|
130
|
+
f"{available}"
|
|
117
131
|
)
|
|
118
132
|
|
|
119
133
|
try:
|
|
@@ -183,15 +197,20 @@ class RunSkillScriptTool(BaseTool):
|
|
|
183
197
|
|
|
184
198
|
skill = _find_skill(self._skills, skill_name)
|
|
185
199
|
if skill is None:
|
|
186
|
-
|
|
200
|
+
available = _available_names("skills", [skill.name for skill in self._skills])
|
|
201
|
+
return _error(f"Error: Skill '{skill_name}' not found. {available}")
|
|
187
202
|
|
|
188
203
|
script = next(
|
|
189
204
|
(s for s in skill.scripts if s.name.lower() == script_name.lower()),
|
|
190
205
|
None,
|
|
191
206
|
)
|
|
192
207
|
if script is None:
|
|
208
|
+
available = _available_names(
|
|
209
|
+
"scripts", [script.name for script in skill.scripts]
|
|
210
|
+
)
|
|
193
211
|
return _error(
|
|
194
|
-
f"Error: Script '{script_name}' not found in skill '{skill_name}'."
|
|
212
|
+
f"Error: Script '{script_name}' not found in skill '{skill_name}'. "
|
|
213
|
+
f"{available}"
|
|
195
214
|
)
|
|
196
215
|
|
|
197
216
|
try:
|
|
@@ -12,7 +12,12 @@ from agentbyte.context_providers.skill_tools import (
|
|
|
12
12
|
)
|
|
13
13
|
from agentbyte.skills.base import Skill
|
|
14
14
|
from agentbyte.skills.scripts import SkillScriptRunner
|
|
15
|
-
from agentbyte.skills.sources import
|
|
15
|
+
from agentbyte.skills.sources import (
|
|
16
|
+
DeduplicatingSkillsSource,
|
|
17
|
+
FileSkillsSource,
|
|
18
|
+
InMemorySkillsSource,
|
|
19
|
+
SkillsSource,
|
|
20
|
+
)
|
|
16
21
|
from agentbyte.tools import BaseTool
|
|
17
22
|
|
|
18
23
|
_DEFAULT_TEMPLATE = """\
|
|
@@ -47,6 +52,11 @@ def _build_advertisement(skills: Sequence[Skill]) -> str:
|
|
|
47
52
|
lines.append(" <skill>")
|
|
48
53
|
lines.append(f" <name>{xml_escape(skill.name)}</name>")
|
|
49
54
|
lines.append(f" <description>{xml_escape(skill.description)}</description>")
|
|
55
|
+
if skill.triggers:
|
|
56
|
+
lines.append(" <triggers>")
|
|
57
|
+
for trigger in skill.triggers:
|
|
58
|
+
lines.append(f" <trigger>{xml_escape(trigger)}</trigger>")
|
|
59
|
+
lines.append(" </triggers>")
|
|
50
60
|
lines.append(" </skill>")
|
|
51
61
|
return "\n".join(lines)
|
|
52
62
|
|
|
@@ -80,11 +90,12 @@ class SkillsProvider(ContextProvider):
|
|
|
80
90
|
disable_caching: bool = False,
|
|
81
91
|
) -> None:
|
|
82
92
|
if isinstance(source, Skill):
|
|
83
|
-
|
|
93
|
+
skill_source: SkillsSource = InMemorySkillsSource([source])
|
|
84
94
|
elif isinstance(source, list):
|
|
85
|
-
|
|
95
|
+
skill_source = InMemorySkillsSource(source)
|
|
86
96
|
else:
|
|
87
|
-
|
|
97
|
+
skill_source = source
|
|
98
|
+
self._source = DeduplicatingSkillsSource(skill_source)
|
|
88
99
|
self._instruction_template = instruction_template
|
|
89
100
|
self._require_script_approval = require_script_approval
|
|
90
101
|
self._disable_caching = disable_caching
|
|
@@ -132,7 +143,9 @@ class SkillsProvider(ContextProvider):
|
|
|
132
143
|
tools: list[BaseTool] = []
|
|
133
144
|
if skills:
|
|
134
145
|
tools.append(LoadSkillTool(skills))
|
|
146
|
+
if has_resources:
|
|
135
147
|
tools.append(ReadSkillResourceTool(skills))
|
|
148
|
+
if has_scripts:
|
|
136
149
|
tools.append(
|
|
137
150
|
RunSkillScriptTool(skills, require_approval=self._require_script_approval)
|
|
138
151
|
)
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"""Agent optimization (autotune) for agentbyte.
|
|
2
|
+
|
|
3
|
+
See docs/specs/0038-agent-optimization-autotune for the full design.
|
|
4
|
+
"""
|
|
5
|
+
|
|
6
|
+
from .base import BaseOptimizer, Candidate, CostLog, OptimizationResult, task_key
|
|
7
|
+
from .config import AgentConfig, AgentSkillConfig
|
|
8
|
+
from .gepa import GEPA_AVAILABLE, AgentbyteGepaAdapter, GepaRunResult, optimize_with_gepa
|
|
9
|
+
from .mipro import TIPS, MIPROOptimizer
|
|
10
|
+
from .pareto import ReflectiveParetoOptimizer, pareto_frontier
|
|
11
|
+
from .reflective import EditOut, ReflectionOut, ReflectiveOptimizer
|
|
12
|
+
from .spec import (
|
|
13
|
+
CatalogEntry,
|
|
14
|
+
Component,
|
|
15
|
+
Edit,
|
|
16
|
+
InstructionTunable,
|
|
17
|
+
Operation,
|
|
18
|
+
OptimizationSpec,
|
|
19
|
+
ProposalMode,
|
|
20
|
+
SkillDescriptionTunable,
|
|
21
|
+
SkillTunable,
|
|
22
|
+
SkillTriggersTunable,
|
|
23
|
+
ToolDescriptionTunable,
|
|
24
|
+
ToolSelectionTunable,
|
|
25
|
+
Tunable,
|
|
26
|
+
)
|
|
27
|
+
from .trace import OptimizationTrace, load_trace, serialize_messages, task_record, usage_dict
|
|
28
|
+
|
|
29
|
+
__all__ = [
|
|
30
|
+
"AgentConfig",
|
|
31
|
+
"AgentSkillConfig",
|
|
32
|
+
"Operation",
|
|
33
|
+
"ProposalMode",
|
|
34
|
+
"CatalogEntry",
|
|
35
|
+
"Component",
|
|
36
|
+
"Edit",
|
|
37
|
+
"Tunable",
|
|
38
|
+
"InstructionTunable",
|
|
39
|
+
"SkillTunable",
|
|
40
|
+
"SkillDescriptionTunable",
|
|
41
|
+
"SkillTriggersTunable",
|
|
42
|
+
"ToolDescriptionTunable",
|
|
43
|
+
"ToolSelectionTunable",
|
|
44
|
+
"OptimizationSpec",
|
|
45
|
+
"OptimizationTrace",
|
|
46
|
+
"load_trace",
|
|
47
|
+
"task_record",
|
|
48
|
+
"usage_dict",
|
|
49
|
+
"serialize_messages",
|
|
50
|
+
"CostLog",
|
|
51
|
+
"Candidate",
|
|
52
|
+
"OptimizationResult",
|
|
53
|
+
"BaseOptimizer",
|
|
54
|
+
"task_key",
|
|
55
|
+
"ReflectiveOptimizer",
|
|
56
|
+
"EditOut",
|
|
57
|
+
"ReflectionOut",
|
|
58
|
+
"ReflectiveParetoOptimizer",
|
|
59
|
+
"pareto_frontier",
|
|
60
|
+
"MIPROOptimizer",
|
|
61
|
+
"TIPS",
|
|
62
|
+
"GEPA_AVAILABLE",
|
|
63
|
+
"AgentbyteGepaAdapter",
|
|
64
|
+
"GepaRunResult",
|
|
65
|
+
"optimize_with_gepa",
|
|
66
|
+
]
|