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.
Files changed (299) hide show
  1. {agentbyte-0.24.2 → agentbyte-0.26.0}/CHANGELOG.md +35 -1
  2. {agentbyte-0.24.2 → agentbyte-0.26.0}/PKG-INFO +5 -2
  3. {agentbyte-0.24.2 → agentbyte-0.26.0}/README.md +1 -1
  4. {agentbyte-0.24.2 → agentbyte-0.26.0}/pyproject.toml +8 -0
  5. agentbyte-0.26.0/src/agentbyte/__about__.py +2 -0
  6. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/context_providers/skill_tools.py +24 -5
  7. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/context_providers/skills.py +17 -4
  8. agentbyte-0.26.0/src/agentbyte/optim/__init__.py +66 -0
  9. agentbyte-0.26.0/src/agentbyte/optim/base.py +405 -0
  10. agentbyte-0.26.0/src/agentbyte/optim/config.py +124 -0
  11. agentbyte-0.26.0/src/agentbyte/optim/gepa.py +397 -0
  12. agentbyte-0.26.0/src/agentbyte/optim/mipro.py +164 -0
  13. agentbyte-0.26.0/src/agentbyte/optim/pareto.py +72 -0
  14. agentbyte-0.26.0/src/agentbyte/optim/reflective.py +169 -0
  15. agentbyte-0.26.0/src/agentbyte/optim/spec.py +331 -0
  16. agentbyte-0.26.0/src/agentbyte/optim/trace.py +171 -0
  17. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/skills/base.py +14 -3
  18. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/skills/sources.py +47 -23
  19. agentbyte-0.26.0/src/agentbyte/skills/validation.py +42 -0
  20. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/tools/base.py +117 -144
  21. {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/context_providers/test_skill_tools.py +21 -3
  22. {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/context_providers/test_skills_provider.py +71 -0
  23. agentbyte-0.26.0/tests/optim/test_base.py +256 -0
  24. agentbyte-0.26.0/tests/optim/test_base_integration.py +79 -0
  25. agentbyte-0.26.0/tests/optim/test_config.py +241 -0
  26. agentbyte-0.26.0/tests/optim/test_gepa.py +220 -0
  27. agentbyte-0.26.0/tests/optim/test_mipro.py +120 -0
  28. agentbyte-0.26.0/tests/optim/test_pareto.py +112 -0
  29. agentbyte-0.26.0/tests/optim/test_reflective.py +160 -0
  30. agentbyte-0.26.0/tests/optim/test_spec.py +374 -0
  31. agentbyte-0.26.0/tests/optim/test_trace.py +176 -0
  32. agentbyte-0.26.0/tests/skills/__init__.py +0 -0
  33. {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/skills/test_base.py +44 -0
  34. {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/skills/test_sources.py +90 -0
  35. {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/tools/test_tools.py +183 -3
  36. agentbyte-0.24.2/src/agentbyte/__about__.py +0 -2
  37. {agentbyte-0.24.2 → agentbyte-0.26.0}/.gitignore +0 -0
  38. {agentbyte-0.24.2 → agentbyte-0.26.0}/LICENSE +0 -0
  39. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/__init__.py +0 -0
  40. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/agents/__init__.py +0 -0
  41. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/agents/agent.py +0 -0
  42. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/agents/agent_as_tool.py +0 -0
  43. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/agents/base.py +0 -0
  44. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/agents/embedding_agent.py +0 -0
  45. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/agents/types.py +0 -0
  46. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/cancellation_token.py +0 -0
  47. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/catalog.py +0 -0
  48. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/cli/__init__.py +0 -0
  49. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/cli/main.py +0 -0
  50. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/component.py +0 -0
  51. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/context.py +0 -0
  52. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/context_providers/__init__.py +0 -0
  53. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/context_providers/base.py +0 -0
  54. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/dataset/__init__.py +0 -0
  55. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/dataset/base.py +0 -0
  56. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/dataset/config.py +0 -0
  57. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/dataset/importer.py +0 -0
  58. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/dataset/json.py +0 -0
  59. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/dataset/loader.py +0 -0
  60. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/dataset/publish.py +0 -0
  61. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/dataset/publish_config.py +0 -0
  62. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/dataset/publishers.py +0 -0
  63. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/dataset/sources.py +0 -0
  64. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/dataset/sqlite.py +0 -0
  65. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/dataset/sqlite_db.py +0 -0
  66. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/dataset/write_config.py +0 -0
  67. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/dataset/writers.py +0 -0
  68. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/entity.py +0 -0
  69. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/eval/__init__.py +0 -0
  70. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/eval/base.py +0 -0
  71. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/eval/checks/__init__.py +0 -0
  72. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/eval/checks/decorator.py +0 -0
  73. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/eval/checks/keyword.py +0 -0
  74. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/eval/checks/local.py +0 -0
  75. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/eval/checks/tool.py +0 -0
  76. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/eval/checks/types.py +0 -0
  77. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/eval/comparison.py +0 -0
  78. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/eval/eval_dataset.py +0 -0
  79. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/eval/judges/__init__.py +0 -0
  80. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/eval/judges/base.py +0 -0
  81. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/eval/judges/composite.py +0 -0
  82. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/eval/judges/llm.py +0 -0
  83. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/eval/judges/pairwise.py +0 -0
  84. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/eval/judges/reference.py +0 -0
  85. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/eval/pairwise.py +0 -0
  86. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/eval/report.py +0 -0
  87. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/eval/runner.py +0 -0
  88. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/eval/splitting.py +0 -0
  89. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/eval/targets/__init__.py +0 -0
  90. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/eval/targets/agent.py +0 -0
  91. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/eval/targets/model.py +0 -0
  92. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/eval/targets/multi_turn.py +0 -0
  93. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/eval/targets/orchestrator.py +0 -0
  94. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/eval/types.py +0 -0
  95. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/llm/__init__.py +0 -0
  96. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/llm/_retry_observability.py +0 -0
  97. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/llm/auth.py +0 -0
  98. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/llm/azure/__init__.py +0 -0
  99. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/llm/azure/auth.py +0 -0
  100. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/llm/azure/chat.py +0 -0
  101. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/llm/azure/embedding.py +0 -0
  102. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/llm/azure/settings.py +0 -0
  103. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/llm/azure_openai.py +0 -0
  104. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/llm/azure_openai_embedding.py +0 -0
  105. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/llm/base.py +0 -0
  106. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/llm/embeddings_base.py +0 -0
  107. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/llm/openai/__init__.py +0 -0
  108. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/llm/openai/chat.py +0 -0
  109. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/llm/openai/embedding.py +0 -0
  110. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/llm/openai/settings.py +0 -0
  111. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/llm/openai_embedding.py +0 -0
  112. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/llm/pricing.py +0 -0
  113. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/llm/retry_policy.py +0 -0
  114. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/llm/settings.py +0 -0
  115. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/llm/types.py +0 -0
  116. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/logger.py +0 -0
  117. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/memory/__init__.py +0 -0
  118. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/memory/base.py +0 -0
  119. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/messages.py +0 -0
  120. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/middleware/__init__.py +0 -0
  121. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/middleware/base.py +0 -0
  122. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/middleware/otel.py +0 -0
  123. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/middleware/retry.py +0 -0
  124. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/middleware/sql_usage.py +0 -0
  125. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/middleware/usage_logger.py +0 -0
  126. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/notebook.py +0 -0
  127. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/orchestration/__init__.py +0 -0
  128. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/orchestration/ai.py +0 -0
  129. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/orchestration/base.py +0 -0
  130. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/orchestration/handoff.py +0 -0
  131. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/orchestration/plan.py +0 -0
  132. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/orchestration/policies.py +0 -0
  133. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/orchestration/round_robin.py +0 -0
  134. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/presets/__init__.py +0 -0
  135. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/presets/agents.py +0 -0
  136. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/presets/clients.py +0 -0
  137. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/presets/instruction_registry.py +0 -0
  138. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/presets/instructions/orchestrator.yaml +0 -0
  139. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/presets/instructions/query_rewriter.yaml +0 -0
  140. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/presets/instructions/researcher.yaml +0 -0
  141. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/presets/instructions/reviewer.yaml +0 -0
  142. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/presets/instructions/writer.yaml +0 -0
  143. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/presets/orchestration.py +0 -0
  144. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/presets/skills/contracts-analyst/SKILL.md +0 -0
  145. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/presets/skills/hr-analyst/SKILL.md +0 -0
  146. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/presets/skills/hr-analyst/resources/departments.md +0 -0
  147. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/presets/skills/hr-analyst/resources/employees.md +0 -0
  148. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/presets/skills/hr-analyst/resources/payroll.md +0 -0
  149. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/presets/streaming.py +0 -0
  150. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/presets/workflow.py +0 -0
  151. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/session_store.py +0 -0
  152. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/skills/__init__.py +0 -0
  153. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/skills/resources.py +0 -0
  154. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/skills/scripts.py +0 -0
  155. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/termination/__init__.py +0 -0
  156. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/termination/base.py +0 -0
  157. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/termination/cancellation.py +0 -0
  158. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/termination/composite.py +0 -0
  159. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/termination/consecutive_agent.py +0 -0
  160. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/termination/external.py +0 -0
  161. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/termination/function_call.py +0 -0
  162. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/termination/handoff.py +0 -0
  163. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/termination/max_message.py +0 -0
  164. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/termination/predicate.py +0 -0
  165. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/termination/source.py +0 -0
  166. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/termination/text_mention.py +0 -0
  167. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/termination/timeout.py +0 -0
  168. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/termination/token_usage.py +0 -0
  169. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/tools/__init__.py +0 -0
  170. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/tools/coding_tools.py +0 -0
  171. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/tools/core_tools.py +0 -0
  172. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/tools/decorator.py +0 -0
  173. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/tools/memory_tool.py +0 -0
  174. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/tools/research_tools.py +0 -0
  175. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/types.py +0 -0
  176. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/webui/__init__.py +0 -0
  177. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/webui/discovery.py +0 -0
  178. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/webui/execution.py +0 -0
  179. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/webui/models.py +0 -0
  180. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/webui/registry.py +0 -0
  181. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/webui/server.py +0 -0
  182. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/webui/session_store.py +0 -0
  183. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/webui/sessions.py +0 -0
  184. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/webui/ui/assets/index-BF3DwXaF.js +0 -0
  185. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/webui/ui/assets/index-ar5tOeqt.css +0 -0
  186. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/webui/ui/index.html +0 -0
  187. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/webui/ui/vite.svg +0 -0
  188. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/workflow/__init__.py +0 -0
  189. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/workflow/agent.py +0 -0
  190. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/workflow/core/__init__.py +0 -0
  191. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/workflow/core/_structure_hash.py +0 -0
  192. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/workflow/core/checkpoint.py +0 -0
  193. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/workflow/core/models.py +0 -0
  194. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/workflow/core/runner.py +0 -0
  195. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/workflow/core/workflow.py +0 -0
  196. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/workflow/defaults.py +0 -0
  197. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/workflow/loader.py +0 -0
  198. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/workflow/schema.py +0 -0
  199. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/workflow/schema_utils.py +0 -0
  200. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/workflow/steps/__init__.py +0 -0
  201. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/workflow/steps/agentbyte_agent.py +0 -0
  202. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/workflow/steps/echo.py +0 -0
  203. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/workflow/steps/function.py +0 -0
  204. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/workflow/steps/http.py +0 -0
  205. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/workflow/steps/step.py +0 -0
  206. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/workflow/steps/subworkflow.py +0 -0
  207. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/workflow/steps/transform.py +0 -0
  208. {agentbyte-0.24.2 → agentbyte-0.26.0}/src/agentbyte/workflow/visualizer.py +0 -0
  209. {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/agents/test_agent_as_tool.py +0 -0
  210. {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/agents/test_agent_basic.py +0 -0
  211. {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/agents/test_agent_context_providers.py +0 -0
  212. {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/agents/test_agent_event_types.py +0 -0
  213. {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/agents/test_agent_memory_integration.py +0 -0
  214. {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/agents/test_agent_middleware_integration.py +0 -0
  215. {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/agents/test_agent_response_accessors.py +0 -0
  216. {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/agents/test_agent_retry_middleware.py +0 -0
  217. {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/agents/test_agent_stream_events.py +0 -0
  218. {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/agents/test_embedding_agent.py +0 -0
  219. {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/agents/test_tool_approval.py +0 -0
  220. {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/cli/test_registry_check.py +0 -0
  221. {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/context_providers/__init__.py +0 -0
  222. {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/dataset/test_loader.py +0 -0
  223. {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/dataset/test_multi_table.py +0 -0
  224. {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/dataset/test_publish.py +0 -0
  225. {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/dataset/test_sqlite_db.py +0 -0
  226. {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/eval/test_eval_dataset.py +0 -0
  227. {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/eval/test_multi_turn.py +0 -0
  228. {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/eval/test_pairwise.py +0 -0
  229. {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/eval/test_phase1_runner_and_targets.py +0 -0
  230. {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/eval/test_phase2_checks_and_reports.py +0 -0
  231. {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/eval/test_splitting.py +0 -0
  232. {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/eval/test_types_and_judges.py +0 -0
  233. {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/llm/test_azure_client.py +0 -0
  234. {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/llm/test_azure_embedding_client.py +0 -0
  235. {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/llm/test_llm_types.py +0 -0
  236. {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/llm/test_openai_client.py +0 -0
  237. {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/llm/test_openai_embedding_client.py +0 -0
  238. {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/llm/test_pricing.py +0 -0
  239. {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/llm/test_retry_observability.py +0 -0
  240. {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/llm/test_retry_policy_api.py +0 -0
  241. {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/memory/test_memory.py +0 -0
  242. {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/middleware/test_middleware_chain.py +0 -0
  243. {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/middleware/test_otel.py +0 -0
  244. {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/middleware/test_retry_middleware.py +0 -0
  245. {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/middleware/test_sql_usage.py +0 -0
  246. {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/middleware/test_usage_logger.py +0 -0
  247. {agentbyte-0.24.2/tests/skills → agentbyte-0.26.0/tests/optim}/__init__.py +0 -0
  248. {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/orchestration/test_ai_orchestrator.py +0 -0
  249. {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/orchestration/test_base_orchestrator.py +0 -0
  250. {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/orchestration/test_handoff_orchestrator.py +0 -0
  251. {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/orchestration/test_plan_orchestrator.py +0 -0
  252. {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/orchestration/test_round_robin.py +0 -0
  253. {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/presets/test_agents.py +0 -0
  254. {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/presets/test_clients.py +0 -0
  255. {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/presets/test_instruction_registry.py +0 -0
  256. {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/presets/test_orchestration.py +0 -0
  257. {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/presets/test_streaming.py +0 -0
  258. {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/presets/test_workflow.py +0 -0
  259. {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/skills/test_resources.py +0 -0
  260. {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/skills/test_scripts.py +0 -0
  261. {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/termination/test_base.py +0 -0
  262. {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/termination/test_cancellation.py +0 -0
  263. {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/termination/test_composite.py +0 -0
  264. {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/termination/test_consecutive_agent.py +0 -0
  265. {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/termination/test_external.py +0 -0
  266. {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/termination/test_function_call.py +0 -0
  267. {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/termination/test_handoff.py +0 -0
  268. {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/termination/test_max_message.py +0 -0
  269. {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/termination/test_predicate.py +0 -0
  270. {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/termination/test_source.py +0 -0
  271. {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/termination/test_text_mention.py +0 -0
  272. {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/termination/test_timeout.py +0 -0
  273. {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/termination/test_token_usage.py +0 -0
  274. {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/test_cancellation_token.py +0 -0
  275. {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/test_context.py +0 -0
  276. {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/test_logger.py +0 -0
  277. {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/test_messages.py +0 -0
  278. {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/test_package_api.py +0 -0
  279. {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/test_session_store.py +0 -0
  280. {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/test_types.py +0 -0
  281. {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/tools/test_coding_tools.py +0 -0
  282. {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/tools/test_memory_tool.py +0 -0
  283. {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/tools/test_research_tools.py +0 -0
  284. {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/webui/__init__.py +0 -0
  285. {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/webui/helpers.py +0 -0
  286. {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/webui/test_execution.py +0 -0
  287. {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/webui/test_package_api.py +0 -0
  288. {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/webui/test_registry.py +0 -0
  289. {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/webui/test_server.py +0 -0
  290. {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/webui/test_sessions.py +0 -0
  291. {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/workflow/test_checkpoint.py +0 -0
  292. {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/workflow/test_subworkflow_step.py +0 -0
  293. {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/workflow/test_workflow_agent.py +0 -0
  294. {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/workflow/test_workflow_class.py +0 -0
  295. {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/workflow/test_workflow_models.py +0 -0
  296. {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/workflow/test_workflow_runner.py +0 -0
  297. {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/workflow/test_workflow_schema.py +0 -0
  298. {agentbyte-0.24.2 → agentbyte-0.26.0}/tests/workflow/test_workflow_steps.py +0 -0
  299. {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
- ## [Unreleased]
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.24.2
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.24.2**
89
+ Current release: **0.26.0**
87
90
 
88
91
  ## Building an Agent
89
92
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  Agentbyte is an observability-first agentic AI framework for building and studying multiagent systems with a learning-first, implementation-oriented workflow.
4
4
 
5
- Current release: **0.24.2**
5
+ Current release: **0.26.0**
6
6
 
7
7
  ## Building an Agent
8
8
 
@@ -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]
@@ -0,0 +1,2 @@
1
+ __version__ = "0.26.0"
2
+ VERSION = __version__
@@ -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
- return _error(f"Error: Skill '{skill_name}' not found.")
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
- return _error(f"Error: Skill '{skill_name}' not found.")
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
- return _error(f"Error: Skill '{skill_name}' not found.")
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 FileSkillsSource, InMemorySkillsSource, SkillsSource
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
- self._source: SkillsSource = InMemorySkillsSource([source])
93
+ skill_source: SkillsSource = InMemorySkillsSource([source])
84
94
  elif isinstance(source, list):
85
- self._source = InMemorySkillsSource(source)
95
+ skill_source = InMemorySkillsSource(source)
86
96
  else:
87
- self._source = source
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
+ ]