agentbyte 0.44.0__tar.gz → 0.44.1__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 (373) hide show
  1. {agentbyte-0.44.0 → agentbyte-0.44.1}/CHANGELOG.md +15 -0
  2. {agentbyte-0.44.0 → agentbyte-0.44.1}/PKG-INFO +2 -2
  3. {agentbyte-0.44.0 → agentbyte-0.44.1}/README.md +1 -1
  4. agentbyte-0.44.1/src/agentbyte/__about__.py +2 -0
  5. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/agents/agent.py +2 -2
  6. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/eval/history/conformance.py +3 -3
  7. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/eval/workbench/smoke.py +2 -2
  8. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/execution_trace/__init__.py +2 -1
  9. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/execution_trace/collector.py +17 -17
  10. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/execution_trace/models.py +23 -0
  11. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/orchestration/base.py +2 -2
  12. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/workflow/agent.py +2 -2
  13. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/workflow/core/runner.py +2 -2
  14. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/workflow/steps/agent.py +2 -1
  15. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/workflow/steps/step.py +2 -2
  16. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/eval/test_eval_workbench.py +24 -1
  17. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/test_option_enums.py +19 -1
  18. agentbyte-0.44.0/src/agentbyte/__about__.py +0 -2
  19. {agentbyte-0.44.0 → agentbyte-0.44.1}/.gitignore +0 -0
  20. {agentbyte-0.44.0 → agentbyte-0.44.1}/LICENSE +0 -0
  21. {agentbyte-0.44.0 → agentbyte-0.44.1}/pyproject.toml +0 -0
  22. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/__init__.py +0 -0
  23. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/_optional.py +0 -0
  24. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/agents/__init__.py +0 -0
  25. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/agents/agent_as_tool.py +0 -0
  26. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/agents/base.py +0 -0
  27. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/agents/embedding_agent.py +0 -0
  28. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/agents/types.py +0 -0
  29. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/cancellation_token.py +0 -0
  30. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/catalog.py +0 -0
  31. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/cli/__init__.py +0 -0
  32. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/cli/__main__.py +0 -0
  33. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/cli/eval_commands.py +0 -0
  34. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/cli/loading.py +0 -0
  35. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/cli/main.py +0 -0
  36. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/compaction/__init__.py +0 -0
  37. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/compaction/counters.py +0 -0
  38. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/compaction/errors.py +0 -0
  39. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/compaction/grouping.py +0 -0
  40. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/compaction/strategies.py +0 -0
  41. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/component.py +0 -0
  42. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/context.py +0 -0
  43. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/context_providers/__init__.py +0 -0
  44. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/context_providers/base.py +0 -0
  45. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/context_providers/skill_tools.py +0 -0
  46. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/context_providers/skills.py +0 -0
  47. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/dataset/__init__.py +0 -0
  48. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/dataset/_aiosqlite.py +0 -0
  49. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/dataset/base.py +0 -0
  50. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/dataset/config.py +0 -0
  51. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/dataset/importer.py +0 -0
  52. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/dataset/json.py +0 -0
  53. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/dataset/loader.py +0 -0
  54. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/dataset/publish.py +0 -0
  55. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/dataset/publish_config.py +0 -0
  56. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/dataset/publishers.py +0 -0
  57. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/dataset/s3.py +0 -0
  58. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/dataset/sources.py +0 -0
  59. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/dataset/sqlite.py +0 -0
  60. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/dataset/sqlite_db.py +0 -0
  61. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/dataset/write_config.py +0 -0
  62. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/dataset/writers.py +0 -0
  63. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/entity.py +0 -0
  64. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/eval/__init__.py +0 -0
  65. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/eval/base.py +0 -0
  66. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/eval/checks/__init__.py +0 -0
  67. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/eval/checks/decorator.py +0 -0
  68. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/eval/checks/keyword.py +0 -0
  69. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/eval/checks/local.py +0 -0
  70. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/eval/checks/process.py +0 -0
  71. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/eval/checks/tool.py +0 -0
  72. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/eval/checks/types.py +0 -0
  73. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/eval/comparison.py +0 -0
  74. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/eval/eval_dataset.py +0 -0
  75. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/eval/history/__init__.py +0 -0
  76. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/eval/history/errors.py +0 -0
  77. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/eval/history/models.py +0 -0
  78. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/eval/history/recorder.py +0 -0
  79. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/eval/history/sql.py +0 -0
  80. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/eval/history/sqlite.py +0 -0
  81. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/eval/history/store.py +0 -0
  82. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/eval/history/transitions.py +0 -0
  83. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/eval/judges/__init__.py +0 -0
  84. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/eval/judges/base.py +0 -0
  85. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/eval/judges/composite.py +0 -0
  86. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/eval/judges/llm.py +0 -0
  87. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/eval/judges/pairwise.py +0 -0
  88. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/eval/judges/reference.py +0 -0
  89. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/eval/judges/trajectory.py +0 -0
  90. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/eval/judges/validation.py +0 -0
  91. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/eval/pairwise.py +0 -0
  92. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/eval/report.py +0 -0
  93. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/eval/runner.py +0 -0
  94. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/eval/splitting.py +0 -0
  95. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/eval/targets/__init__.py +0 -0
  96. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/eval/targets/agent.py +0 -0
  97. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/eval/targets/model.py +0 -0
  98. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/eval/targets/multi_turn.py +0 -0
  99. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/eval/targets/orchestrator.py +0 -0
  100. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/eval/targets/runtime.py +0 -0
  101. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/eval/targets/workflow.py +0 -0
  102. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/eval/types.py +0 -0
  103. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/eval/workbench/__init__.py +0 -0
  104. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/eval/workbench/coordinator.py +0 -0
  105. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/eval/workbench/jobs.py +0 -0
  106. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/eval/workbench/smoke_tasks.json +0 -0
  107. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/eval/workbench/suite.py +0 -0
  108. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/eval/workbench/verdict.py +0 -0
  109. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/llm/__init__.py +0 -0
  110. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/llm/_retry_observability.py +0 -0
  111. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/llm/auth.py +0 -0
  112. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/llm/azure/__init__.py +0 -0
  113. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/llm/azure/auth.py +0 -0
  114. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/llm/azure/chat.py +0 -0
  115. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/llm/azure/embedding.py +0 -0
  116. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/llm/azure/settings.py +0 -0
  117. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/llm/azure_openai.py +0 -0
  118. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/llm/azure_openai_embedding.py +0 -0
  119. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/llm/base.py +0 -0
  120. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/llm/embeddings_base.py +0 -0
  121. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/llm/openai/__init__.py +0 -0
  122. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/llm/openai/chat.py +0 -0
  123. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/llm/openai/embedding.py +0 -0
  124. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/llm/openai/settings.py +0 -0
  125. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/llm/openai_embedding.py +0 -0
  126. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/llm/pricing.py +0 -0
  127. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/llm/retry_policy.py +0 -0
  128. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/llm/settings.py +0 -0
  129. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/llm/types.py +0 -0
  130. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/logger.py +0 -0
  131. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/memory/__init__.py +0 -0
  132. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/memory/base.py +0 -0
  133. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/messages.py +0 -0
  134. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/middleware/__init__.py +0 -0
  135. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/middleware/base.py +0 -0
  136. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/middleware/otel.py +0 -0
  137. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/middleware/retry.py +0 -0
  138. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/middleware/sql_usage.py +0 -0
  139. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/middleware/usage_logger.py +0 -0
  140. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/notebook.py +0 -0
  141. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/optim/__init__.py +0 -0
  142. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/optim/base.py +0 -0
  143. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/optim/config.py +0 -0
  144. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/optim/gepa.py +0 -0
  145. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/optim/mipro.py +0 -0
  146. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/optim/pareto.py +0 -0
  147. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/optim/reflective.py +0 -0
  148. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/optim/spec.py +0 -0
  149. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/optim/trace.py +0 -0
  150. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/orchestration/__init__.py +0 -0
  151. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/orchestration/ai.py +0 -0
  152. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/orchestration/handoff.py +0 -0
  153. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/orchestration/plan.py +0 -0
  154. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/orchestration/policies.py +0 -0
  155. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/orchestration/round_robin.py +0 -0
  156. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/presets/__init__.py +0 -0
  157. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/presets/agents.py +0 -0
  158. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/presets/clients.py +0 -0
  159. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/presets/instruction_registry.py +0 -0
  160. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/presets/instructions/orchestrator.yaml +0 -0
  161. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/presets/instructions/query_rewriter.yaml +0 -0
  162. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/presets/instructions/researcher.yaml +0 -0
  163. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/presets/instructions/reviewer.yaml +0 -0
  164. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/presets/instructions/writer.yaml +0 -0
  165. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/presets/orchestration.py +0 -0
  166. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/presets/skills/contracts-analyst/SKILL.md +0 -0
  167. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/presets/skills/hr-analyst/SKILL.md +0 -0
  168. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/presets/skills/hr-analyst/resources/departments.md +0 -0
  169. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/presets/skills/hr-analyst/resources/employees.md +0 -0
  170. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/presets/skills/hr-analyst/resources/payroll.md +0 -0
  171. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/presets/streaming.py +0 -0
  172. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/presets/workflow.py +0 -0
  173. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/session_store.py +0 -0
  174. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/skills/__init__.py +0 -0
  175. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/skills/base.py +0 -0
  176. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/skills/resources.py +0 -0
  177. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/skills/scripts.py +0 -0
  178. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/skills/sources.py +0 -0
  179. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/skills/validation.py +0 -0
  180. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/termination/__init__.py +0 -0
  181. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/termination/base.py +0 -0
  182. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/termination/cancellation.py +0 -0
  183. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/termination/composite.py +0 -0
  184. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/termination/consecutive_agent.py +0 -0
  185. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/termination/external.py +0 -0
  186. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/termination/function_call.py +0 -0
  187. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/termination/handoff.py +0 -0
  188. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/termination/max_message.py +0 -0
  189. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/termination/predicate.py +0 -0
  190. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/termination/source.py +0 -0
  191. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/termination/text_mention.py +0 -0
  192. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/termination/timeout.py +0 -0
  193. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/termination/token_usage.py +0 -0
  194. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/tools/__init__.py +0 -0
  195. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/tools/base.py +0 -0
  196. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/tools/coding_tools.py +0 -0
  197. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/tools/core_tools.py +0 -0
  198. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/tools/decorator.py +0 -0
  199. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/tools/memory_tool.py +0 -0
  200. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/tools/research_tools.py +0 -0
  201. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/types.py +0 -0
  202. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/webui/__init__.py +0 -0
  203. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/webui/discovery.py +0 -0
  204. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/webui/eval_routes.py +0 -0
  205. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/webui/execution.py +0 -0
  206. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/webui/models.py +0 -0
  207. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/webui/registry.py +0 -0
  208. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/webui/server.py +0 -0
  209. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/webui/session_store.py +0 -0
  210. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/webui/sessions.py +0 -0
  211. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/webui/ui/assets/index-BsS4WYZu.css +0 -0
  212. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/webui/ui/assets/index-tGvO1yue.js +0 -0
  213. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/webui/ui/index.html +0 -0
  214. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/webui/ui/vite.svg +0 -0
  215. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/workflow/__init__.py +0 -0
  216. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/workflow/core/__init__.py +0 -0
  217. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/workflow/core/_structure_hash.py +0 -0
  218. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/workflow/core/checkpoint.py +0 -0
  219. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/workflow/core/models.py +0 -0
  220. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/workflow/core/workflow.py +0 -0
  221. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/workflow/defaults.py +0 -0
  222. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/workflow/errors.py +0 -0
  223. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/workflow/loader.py +0 -0
  224. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/workflow/schema.py +0 -0
  225. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/workflow/schema_utils.py +0 -0
  226. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/workflow/sqlite_checkpoint.py +0 -0
  227. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/workflow/steps/__init__.py +0 -0
  228. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/workflow/steps/echo.py +0 -0
  229. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/workflow/steps/function.py +0 -0
  230. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/workflow/steps/http.py +0 -0
  231. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/workflow/steps/subworkflow.py +0 -0
  232. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/workflow/steps/transform.py +0 -0
  233. {agentbyte-0.44.0 → agentbyte-0.44.1}/src/agentbyte/workflow/visualizer.py +0 -0
  234. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/agents/test_agent_as_tool.py +0 -0
  235. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/agents/test_agent_basic.py +0 -0
  236. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/agents/test_agent_context_providers.py +0 -0
  237. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/agents/test_agent_error_response.py +0 -0
  238. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/agents/test_agent_event_types.py +0 -0
  239. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/agents/test_agent_memory_integration.py +0 -0
  240. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/agents/test_agent_middleware_integration.py +0 -0
  241. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/agents/test_agent_response_accessors.py +0 -0
  242. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/agents/test_agent_retry_middleware.py +0 -0
  243. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/agents/test_agent_stop_at_tools.py +0 -0
  244. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/agents/test_agent_stream_events.py +0 -0
  245. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/agents/test_embedding_agent.py +0 -0
  246. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/agents/test_tool_approval.py +0 -0
  247. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/agents/test_tool_batch_resolution.py +0 -0
  248. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/agents/test_tool_metadata.py +0 -0
  249. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/cli/test_loading.py +0 -0
  250. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/cli/test_registry_check.py +0 -0
  251. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/compaction/test_compaction.py +0 -0
  252. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/context_providers/__init__.py +0 -0
  253. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/context_providers/test_skill_tools.py +0 -0
  254. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/context_providers/test_skills_provider.py +0 -0
  255. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/dataset/fake_s3.py +0 -0
  256. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/dataset/test_dataset_exit.py +0 -0
  257. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/dataset/test_loader.py +0 -0
  258. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/dataset/test_multi_table.py +0 -0
  259. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/dataset/test_publish.py +0 -0
  260. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/dataset/test_sqlite_db.py +0 -0
  261. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/eval/test_eval_dataset.py +0 -0
  262. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/eval/test_eval_history.py +0 -0
  263. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/eval/test_eval_history_backends.py +0 -0
  264. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/eval/test_eval_jobs.py +0 -0
  265. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/eval/test_execution_trajectories.py +0 -0
  266. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/eval/test_multi_turn.py +0 -0
  267. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/eval/test_pairwise.py +0 -0
  268. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/eval/test_phase1_runner_and_targets.py +0 -0
  269. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/eval/test_phase2_checks_and_reports.py +0 -0
  270. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/eval/test_score_integrity.py +0 -0
  271. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/eval/test_splitting.py +0 -0
  272. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/eval/test_types_and_judges.py +0 -0
  273. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/examples/test_compaction_webapp.py +0 -0
  274. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/llm/test_azure_client.py +0 -0
  275. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/llm/test_azure_embedding_client.py +0 -0
  276. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/llm/test_llm_types.py +0 -0
  277. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/llm/test_openai_client.py +0 -0
  278. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/llm/test_openai_embedding_client.py +0 -0
  279. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/llm/test_pricing.py +0 -0
  280. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/llm/test_retry_observability.py +0 -0
  281. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/llm/test_retry_policy_api.py +0 -0
  282. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/llm/test_retryable_error_substrings.py +0 -0
  283. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/memory/test_memory.py +0 -0
  284. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/middleware/test_context_compaction.py +0 -0
  285. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/middleware/test_deduplicate_tool_result.py +0 -0
  286. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/middleware/test_middleware_chain.py +0 -0
  287. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/middleware/test_otel.py +0 -0
  288. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/middleware/test_retry_middleware.py +0 -0
  289. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/middleware/test_sql_usage.py +0 -0
  290. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/middleware/test_usage_logger.py +0 -0
  291. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/optim/__init__.py +0 -0
  292. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/optim/test_base.py +0 -0
  293. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/optim/test_base_integration.py +0 -0
  294. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/optim/test_config.py +0 -0
  295. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/optim/test_description_tunable.py +0 -0
  296. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/optim/test_gepa.py +0 -0
  297. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/optim/test_mipro.py +0 -0
  298. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/optim/test_orchestrator_optim.py +0 -0
  299. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/optim/test_pareto.py +0 -0
  300. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/optim/test_reflective.py +0 -0
  301. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/optim/test_score_integrity.py +0 -0
  302. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/optim/test_spec.py +0 -0
  303. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/optim/test_trace.py +0 -0
  304. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/orchestration/test_ai_orchestrator.py +0 -0
  305. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/orchestration/test_base_orchestrator.py +0 -0
  306. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/orchestration/test_handoff_orchestrator.py +0 -0
  307. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/orchestration/test_history_tool_call_pairing.py +0 -0
  308. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/orchestration/test_orchestration_usage_breakdown.py +0 -0
  309. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/orchestration/test_orchestrator_agent_contract.py +0 -0
  310. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/orchestration/test_orchestrator_finalization.py +0 -0
  311. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/orchestration/test_orchestrator_member_events.py +0 -0
  312. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/orchestration/test_orchestrator_otel.py +0 -0
  313. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/orchestration/test_orchestrator_synthesis.py +0 -0
  314. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/orchestration/test_plan_orchestrator.py +0 -0
  315. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/orchestration/test_round_robin.py +0 -0
  316. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/presets/test_agents.py +0 -0
  317. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/presets/test_clients.py +0 -0
  318. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/presets/test_instruction_registry.py +0 -0
  319. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/presets/test_orchestration.py +0 -0
  320. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/presets/test_streaming.py +0 -0
  321. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/presets/test_workflow.py +0 -0
  322. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/skills/__init__.py +0 -0
  323. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/skills/test_base.py +0 -0
  324. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/skills/test_resources.py +0 -0
  325. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/skills/test_scripts.py +0 -0
  326. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/skills/test_sources.py +0 -0
  327. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/termination/test_base.py +0 -0
  328. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/termination/test_cancellation.py +0 -0
  329. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/termination/test_composite.py +0 -0
  330. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/termination/test_consecutive_agent.py +0 -0
  331. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/termination/test_external.py +0 -0
  332. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/termination/test_function_call.py +0 -0
  333. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/termination/test_handoff.py +0 -0
  334. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/termination/test_max_message.py +0 -0
  335. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/termination/test_predicate.py +0 -0
  336. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/termination/test_source.py +0 -0
  337. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/termination/test_text_mention.py +0 -0
  338. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/termination/test_timeout.py +0 -0
  339. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/termination/test_token_usage.py +0 -0
  340. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/test_cancellation_token.py +0 -0
  341. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/test_context.py +0 -0
  342. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/test_logger.py +0 -0
  343. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/test_messages.py +0 -0
  344. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/test_optional_extras.py +0 -0
  345. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/test_package_api.py +0 -0
  346. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/test_session_store.py +0 -0
  347. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/test_types.py +0 -0
  348. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/test_vanilla_chunker.py +0 -0
  349. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/tools/test_coding_tools.py +0 -0
  350. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/tools/test_memory_tool.py +0 -0
  351. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/tools/test_research_tools.py +0 -0
  352. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/tools/test_tools.py +0 -0
  353. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/webui/__init__.py +0 -0
  354. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/webui/helpers.py +0 -0
  355. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/webui/test_eval_routes.py +0 -0
  356. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/webui/test_execution.py +0 -0
  357. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/webui/test_package_api.py +0 -0
  358. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/webui/test_registry.py +0 -0
  359. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/webui/test_server.py +0 -0
  360. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/webui/test_sessions.py +0 -0
  361. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/webui/test_workflow_streaming.py +0 -0
  362. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/workflow/recovery_worker.py +0 -0
  363. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/workflow/test_agent_step_imports.py +0 -0
  364. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/workflow/test_checkpoint.py +0 -0
  365. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/workflow/test_subworkflow_step.py +0 -0
  366. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/workflow/test_workflow_agent.py +0 -0
  367. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/workflow/test_workflow_class.py +0 -0
  368. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/workflow/test_workflow_models.py +0 -0
  369. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/workflow/test_workflow_reliability.py +0 -0
  370. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/workflow/test_workflow_runner.py +0 -0
  371. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/workflow/test_workflow_schema.py +0 -0
  372. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/workflow/test_workflow_steps.py +0 -0
  373. {agentbyte-0.44.0 → agentbyte-0.44.1}/tests/workflow/test_workflow_visualizer.py +0 -0
@@ -6,6 +6,21 @@ The format follows Keep a Changelog principles and semantic versioning.
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [0.44.1] - 2026-10-05
10
+
11
+ ### Added
12
+
13
+ - `agentbyte.execution_trace.SpanKind` (spec 0067): `StrEnum` of the framework's own span kinds
14
+ (`agent`, `invocation`, `orchestrator`, `workflow`, `workflow_agent`, `step`), used by
15
+ `trace_stream` and the collector. `ExecutionSpan.kind` stays an open `str`, so
16
+ `trace_scope(kind=...)` / `TraceCollector.start` still accept caller-defined kinds.
17
+
18
+ ### Fixed
19
+
20
+ - Flaky `test_cli_interrupt_exits_130_and_records_cancelled_run`: it sent SIGINT as soon as the run
21
+ was admitted, sometimes before the item started, so the item was recorded `not_started` instead
22
+ of `cancelled`. The test now waits (read-only history store) until the item is running.
23
+
9
24
  ## [0.44.0] - 2026-10-05
10
25
 
11
26
  ### Changed
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: agentbyte
3
- Version: 0.44.0
3
+ Version: 0.44.1
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
@@ -77,7 +77,7 @@ Description-Content-Type: text/markdown
77
77
 
78
78
  Agentbyte is an observability-first agentic AI framework for building and studying multiagent systems with a learning-first, implementation-oriented workflow.
79
79
 
80
- Current release: **0.44.0**
80
+ Current release: **0.44.1**
81
81
 
82
82
  ## Building an Agent
83
83
 
@@ -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.44.0**
5
+ Current release: **0.44.1**
6
6
 
7
7
  ## Building an Agent
8
8
 
@@ -0,0 +1,2 @@
1
+ __version__ = "0.44.1"
2
+ VERSION = __version__
@@ -12,7 +12,7 @@ from typing import List, Optional, Union
12
12
 
13
13
  from agentbyte.cancellation_token import CancellationToken
14
14
  from agentbyte.context import AgentContext
15
- from agentbyte.execution_trace import trace_stream
15
+ from agentbyte.execution_trace import SpanKind, trace_stream
16
16
  from agentbyte.llm.types import ChatCompletionChunk
17
17
  from agentbyte.messages import (
18
18
  AssistantMessage,
@@ -445,7 +445,7 @@ class Agent(BaseAgent):
445
445
  )
446
446
  yield ToolApprovalEvent(source=self.name, approval_request=request)
447
447
 
448
- @trace_stream("agent")
448
+ @trace_stream(SpanKind.AGENT)
449
449
  async def run_stream(
450
450
  self,
451
451
  task: Optional[Union[str, UserMessage, List[Message]]] = None,
@@ -23,7 +23,7 @@ from pydantic import BaseModel
23
23
  from agentbyte.eval.base import BaseEvalJudge, BaseEvalTarget, JudgeScoringError
24
24
  from agentbyte.eval.runner import EvalRunner
25
25
  from agentbyte.eval.types import EvalScore, EvalTask, EvalTrajectory, ScoringStatus, WorkflowEvalTask
26
- from agentbyte.execution_trace.models import ExecutionEvent, ExecutionSpan, ExecutionTrace
26
+ from agentbyte.execution_trace.models import ExecutionEvent, ExecutionSpan, ExecutionTrace, SpanKind
27
27
  from agentbyte.messages import AssistantMessage, UserMessage, Usage
28
28
 
29
29
  from .errors import (
@@ -59,7 +59,7 @@ class _Target(BaseEvalTarget):
59
59
  await asyncio.sleep(task.metadata.get("delay", 0))
60
60
  if task.metadata.get("target_fails"):
61
61
  raise RuntimeError("target failed")
62
- span = ExecutionSpan(kind="agent", name="conformance", status="completed")
62
+ span = ExecutionSpan(kind=SpanKind.AGENT, name="conformance", status="completed")
63
63
  trace = ExecutionTrace(spans=[span], events=[ExecutionEvent(span_id=span.id, kind="step")])
64
64
  return EvalTrajectory(
65
65
  task=task,
@@ -222,7 +222,7 @@ async def check_full_evidence_round_trips_as_data(store: EvalRunStore) -> None:
222
222
  task=task,
223
223
  messages=[*turn, *turn, AssistantMessage(content="", source="a", structured_content=_Answer(city="Rome"))],
224
224
  success=True,
225
- trace=ExecutionTrace(spans=[ExecutionSpan(kind="agent", name="a")]),
225
+ trace=ExecutionTrace(spans=[ExecutionSpan(kind=SpanKind.AGENT, name="a")]),
226
226
  )
227
227
  score = EvalScore(overall=8.0, reasoning={"q": "why"}, trajectory=trajectory)
228
228
  run = await _started(store, 1)
@@ -18,7 +18,7 @@ from agentbyte.cancellation_token import CancellationToken
18
18
  from agentbyte.eval.base import BaseEvalTarget
19
19
  from agentbyte.eval.judges import ContainsJudge
20
20
  from agentbyte.eval.types import EvalTask, EvalTrajectory
21
- from agentbyte.execution_trace.models import ExecutionSpan, ExecutionStatus, ExecutionTrace
21
+ from agentbyte.execution_trace.models import ExecutionSpan, ExecutionStatus, ExecutionTrace, SpanKind
22
22
  from agentbyte.messages import AssistantMessage, UserMessage
23
23
 
24
24
  from .suite import EvalSuite, EvalSuiteRegistry
@@ -37,7 +37,7 @@ class ArithmeticTarget(BaseEvalTarget):
37
37
  self, task: EvalTask, cancellation_token: CancellationToken | None = None
38
38
  ) -> EvalTrajectory:
39
39
  started = time.perf_counter()
40
- span = ExecutionSpan(kind="agent", name=self.name, input=task.input)
40
+ span = ExecutionSpan(kind=SpanKind.AGENT, name=self.name, input=task.input)
41
41
  match = _QUESTION.search(task.input)
42
42
  if match is None:
43
43
  answer, status, error = None, ExecutionStatus.FAILED, "unsupported_question"
@@ -1,6 +1,6 @@
1
1
  """Runtime-neutral execution evidence, independent of evaluation and OpenTelemetry."""
2
2
 
3
- from .models import ExecutionEvent, ExecutionSpan, ExecutionTrace, ExecutionStatus
3
+ from .models import ExecutionEvent, ExecutionSpan, ExecutionStatus, ExecutionTrace, SpanKind
4
4
  from .collector import (
5
5
  TraceCollector,
6
6
  current_collector,
@@ -14,6 +14,7 @@ __all__ = [
14
14
  "ExecutionSpan",
15
15
  "ExecutionTrace",
16
16
  "ExecutionStatus",
17
+ "SpanKind",
17
18
  "TraceCollector",
18
19
  "current_collector",
19
20
  "trace_call",
@@ -16,7 +16,7 @@ from pydantic import BaseModel
16
16
 
17
17
  from agentbyte.messages import BaseMessage, UserMessage, SystemMessage
18
18
  from agentbyte.types import OrchestrationEvent
19
- from .models import ExecutionEvent, ExecutionSpan, ExecutionTrace, ExecutionStatus
19
+ from .models import ExecutionEvent, ExecutionSpan, ExecutionStatus, ExecutionTrace, SpanKind
20
20
 
21
21
  if TYPE_CHECKING:
22
22
  from agentbyte.types import TurnKind
@@ -79,8 +79,8 @@ class TraceCollector:
79
79
  _parent.reset(parent)
80
80
  _collector.reset(token)
81
81
 
82
- def start(self, kind: str, name: str, **kwargs: Any) -> ExecutionSpan:
83
- span = ExecutionSpan(kind=kind, name=name, parent_id=_parent.get(), **kwargs)
82
+ def start(self, kind: SpanKind | str, name: str, **kwargs: Any) -> ExecutionSpan:
83
+ span = ExecutionSpan(kind=str(kind), name=name, parent_id=_parent.get(), **kwargs)
84
84
  self.trace.spans.append(span)
85
85
  return span
86
86
 
@@ -95,7 +95,7 @@ class TraceCollector:
95
95
  if isinstance(item, BaseMessage):
96
96
  if (
97
97
  self.capture_payloads
98
- and span.kind == "agent"
98
+ and span.kind == SpanKind.AGENT
99
99
  and not isinstance(item, (UserMessage, SystemMessage))
100
100
  and item not in span.messages
101
101
  ):
@@ -107,7 +107,7 @@ class TraceCollector:
107
107
  if item.needs_approval and self.capture_payloads:
108
108
  span.metadata["pending_requests"] = snapshot(item.approval_requests)
109
109
  span.usage = item.usage
110
- if span.kind == "agent":
110
+ if span.kind == SpanKind.AGENT:
111
111
  span.usage = span.usage + self.trace.aggregate_usage(span.id)
112
112
  span.error = item.error.message if item.error is not None else None
113
113
  orchestration = getattr(item, "orchestration", None)
@@ -117,7 +117,7 @@ class TraceCollector:
117
117
  span.output = item.final_content
118
118
  return
119
119
  if hasattr(item, "event_type") or isinstance(item, OrchestrationEvent):
120
- if self.capture_payloads and span.kind != "workflow_agent":
120
+ if self.capture_payloads and span.kind != SpanKind.WORKFLOW_AGENT:
121
121
  self.trace.events.append(
122
122
  ExecutionEvent(
123
123
  span_id=span.id,
@@ -136,7 +136,7 @@ class TraceCollector:
136
136
 
137
137
 
138
138
  @contextmanager
139
- def trace_scope(kind: str, name: str, **kwargs: Any) -> Iterator[ExecutionSpan | None]:
139
+ def trace_scope(kind: SpanKind | str, name: str, **kwargs: Any) -> Iterator[ExecutionSpan | None]:
140
140
  """Record a scope only when capture is active."""
141
141
  collector = current_collector()
142
142
  if collector is None:
@@ -164,7 +164,7 @@ def trace_scope(kind: str, name: str, **kwargs: Any) -> Iterator[ExecutionSpan |
164
164
  _parent.reset(token)
165
165
 
166
166
 
167
- def trace_call(kind: str) -> Callable:
167
+ def trace_call(kind: SpanKind | str) -> Callable:
168
168
  """Instrument an async runtime method without changing its public signature."""
169
169
 
170
170
  def decorate(fn):
@@ -193,7 +193,7 @@ async def capture_agent_call(agent: Any, **kwargs: Any) -> Any:
193
193
  context = kwargs.get("context")
194
194
  history = list(context.messages) if context is not None else []
195
195
  with trace_scope(
196
- "invocation", getattr(agent, "name", type(agent).__name__)
196
+ SpanKind.INVOCATION, getattr(agent, "name", type(agent).__name__)
197
197
  ) as span:
198
198
  try:
199
199
  result = await agent.run(**kwargs)
@@ -217,7 +217,7 @@ async def capture_agent_call(agent: Any, **kwargs: Any) -> Any:
217
217
  return result
218
218
 
219
219
 
220
- def trace_stream(kind: str, *, accounting: bool = False) -> Callable:
220
+ def trace_stream(kind: SpanKind | str, *, accounting: bool = False) -> Callable:
221
221
  """Instrument streams, keeping collector/parent bindings out of consumer code."""
222
222
 
223
223
  def decorate(fn):
@@ -267,13 +267,13 @@ def trace_stream(kind: str, *, accounting: bool = False) -> Callable:
267
267
  try:
268
268
  item = await anext(stream)
269
269
  is_forwarded_member_event = (
270
- kind == "orchestrator"
270
+ kind == SpanKind.ORCHESTRATOR
271
271
  and hasattr(item, "event_type")
272
272
  and getattr(item, "source", "orchestrator") != "orchestrator"
273
273
  )
274
274
  if not is_forwarded_member_event:
275
275
  collector.observe(span, item)
276
- if kind == "invocation" and hasattr(item, "finish_reason"):
276
+ if kind == SpanKind.INVOCATION and hasattr(item, "finish_reason"):
277
277
  if any(
278
278
  s.parent_id == span.id for s in collector.trace.spans
279
279
  ):
@@ -294,7 +294,7 @@ def trace_stream(kind: str, *, accounting: bool = False) -> Callable:
294
294
  collector.incomplete(
295
295
  "Custom agent exposes response evidence only"
296
296
  )
297
- if kind == "workflow_agent" and hasattr(item, "finish_reason"):
297
+ if kind == SpanKind.WORKFLOW_AGENT and hasattr(item, "finish_reason"):
298
298
  item.usage = collector.trace.aggregate_usage(
299
299
  span.id
300
300
  ).model_copy(
@@ -314,7 +314,7 @@ def trace_stream(kind: str, *, accounting: bool = False) -> Callable:
314
314
  not original_verbose
315
315
  and "verbose" in signature.parameters
316
316
  and not (
317
- kind == "workflow_agent"
317
+ kind == SpanKind.WORKFLOW_AGENT
318
318
  and bound.arguments.get("stream_tokens", False)
319
319
  and getattr(item, "event_type", None) == "step_event"
320
320
  )
@@ -332,7 +332,7 @@ def trace_stream(kind: str, *, accounting: bool = False) -> Callable:
332
332
  else ExecutionStatus.FAILED
333
333
  )
334
334
  span.error = str(exc) or type(exc).__name__
335
- if span.kind == "agent" and span.usage is None:
335
+ if span.kind == SpanKind.AGENT and span.usage is None:
336
336
  collector.incomplete(
337
337
  "Agent ended without reporting usage", usage=True
338
338
  )
@@ -347,7 +347,7 @@ def trace_stream(kind: str, *, accounting: bool = False) -> Callable:
347
347
  _collector.reset(ct)
348
348
  if span.status == "running":
349
349
  span.status = ExecutionStatus.COMPLETED
350
- if kind == "orchestrator":
350
+ if kind == SpanKind.ORCHESTRATOR:
351
351
  span.usage = collector.trace.aggregate_usage(span.id)
352
352
  for usage in self._get_additional_usage_stats():
353
353
  span.usage = span.usage + usage
@@ -358,7 +358,7 @@ def trace_stream(kind: str, *, accounting: bool = False) -> Callable:
358
358
  return decorate
359
359
 
360
360
 
361
- @trace_stream("invocation")
361
+ @trace_stream(SpanKind.INVOCATION)
362
362
  async def capture_agent_stream(
363
363
  agent: Any,
364
364
  task: Any,
@@ -12,6 +12,28 @@ from pydantic import BaseModel, Field
12
12
  from agentbyte.messages import Message, Usage
13
13
 
14
14
 
15
+ class SpanKind(StrEnum):
16
+ """The span kinds the framework itself records (spec 0067).
17
+
18
+ ``ExecutionSpan.kind`` stays an open ``str``: code may open its own spans with
19
+ ``trace_scope(kind=...)`` or ``TraceCollector.start``. Built-in kinds compare equal to
20
+ these members.
21
+ """
22
+
23
+ AGENT = "agent"
24
+ """One ``Agent.run_stream`` call."""
25
+ INVOCATION = "invocation"
26
+ """A single captured call into an agent or step runtime."""
27
+ ORCHESTRATOR = "orchestrator"
28
+ """One team run (any orchestration pattern)."""
29
+ WORKFLOW = "workflow"
30
+ """One ``WorkflowRunner`` run."""
31
+ WORKFLOW_AGENT = "workflow_agent"
32
+ """A ``workflow.as_agent()`` wrapper run."""
33
+ STEP = "step"
34
+ """One attempt of a workflow step."""
35
+
36
+
15
37
  class ExecutionStatus(StrEnum):
16
38
  """Lifecycle status of a traced execution."""
17
39
 
@@ -39,6 +61,7 @@ class ExecutionSpan(BaseModel):
39
61
  id: str = Field(default_factory=lambda: str(uuid4()))
40
62
  parent_id: str | None = None
41
63
  kind: str
64
+ """A ``SpanKind`` value for framework spans, or any caller-chosen kind."""
42
65
  name: str
43
66
  step_id: str | None = None
44
67
  attempt: int | None = None
@@ -13,7 +13,7 @@ from typing import Any, Dict, List, Optional, Sequence, Union, cast
13
13
 
14
14
  from agentbyte.agents.base import BaseAgent
15
15
  from agentbyte.agents.types import AgentErrorDetail, AgentResponse, Usage
16
- from agentbyte.execution_trace import trace_stream
16
+ from agentbyte.execution_trace import SpanKind, trace_stream
17
17
  from agentbyte.execution_trace.collector import capture_agent_stream, normalize_status
18
18
  from agentbyte.cancellation_token import CancellationToken
19
19
  from agentbyte.compaction.grouping import MessageGroup, group_messages
@@ -230,7 +230,7 @@ class BaseOrchestrator(ABC):
230
230
  select_final_message=False,
231
231
  )
232
232
 
233
- @trace_stream("orchestrator")
233
+ @trace_stream(SpanKind.ORCHESTRATOR)
234
234
  async def run_stream(
235
235
  self,
236
236
  task: Union[str, UserMessage, List[Message], None] = None,
@@ -12,7 +12,7 @@ from agentbyte.agents.base import BaseAgent
12
12
  from agentbyte.agents.types import AgentResponse, Usage
13
13
  from agentbyte.cancellation_token import CancellationToken
14
14
  from agentbyte.context import AgentContext
15
- from agentbyte.execution_trace import trace_stream
15
+ from agentbyte.execution_trace import SpanKind, trace_stream
16
16
  from agentbyte.messages import AssistantMessage, BaseMessage, Message, UserMessage
17
17
  from agentbyte.middleware import MiddlewareChain
18
18
  from agentbyte.workflow.core.checkpoint import (
@@ -109,7 +109,7 @@ class WorkflowAgent(BaseAgent):
109
109
  raise RuntimeError(msg)
110
110
  return final_response
111
111
 
112
- @trace_stream("workflow_agent", accounting=True)
112
+ @trace_stream(SpanKind.WORKFLOW_AGENT, accounting=True)
113
113
  async def run_stream(
114
114
  self,
115
115
  task: Any = None,
@@ -16,7 +16,7 @@ from uuid import uuid4
16
16
  from pydantic import BaseModel, TypeAdapter
17
17
 
18
18
  from agentbyte.cancellation_token import CancellationToken
19
- from agentbyte.execution_trace import trace_stream
19
+ from agentbyte.execution_trace import SpanKind, trace_stream
20
20
  from agentbyte.workflow.core.checkpoint import (
21
21
  CheckpointConfig,
22
22
  CheckpointType,
@@ -132,7 +132,7 @@ class WorkflowRunner:
132
132
  raise RuntimeError(msg)
133
133
  return final_execution
134
134
 
135
- @trace_stream("workflow")
135
+ @trace_stream(SpanKind.WORKFLOW)
136
136
  async def run_stream(
137
137
  self,
138
138
  workflow: Workflow,
@@ -12,6 +12,7 @@ from agentbyte.agents import AgentResponse, BaseAgent
12
12
  from agentbyte.cancellation_token import CancellationToken
13
13
  from agentbyte.context import AgentContext, ToolApprovalResponse
14
14
  from agentbyte.execution_trace.collector import normalize_status, trace_stream
15
+ from agentbyte.execution_trace.models import SpanKind
15
16
  from agentbyte.workflow.core.models import StepMetadata, WorkflowContext, WorkflowPendingRequest
16
17
  from agentbyte.workflow.steps.step import BaseStep
17
18
 
@@ -79,7 +80,7 @@ class AgentStep(
79
80
  raise ValueError("Provide exactly one decision for every pending agent tool approval")
80
81
  return decisions
81
82
 
82
- @trace_stream("invocation")
83
+ @trace_stream(SpanKind.INVOCATION)
83
84
  async def _agent_stream(
84
85
  self, task: str | None, context: AgentContext | None,
85
86
  cancellation_token: CancellationToken | None, verbose: bool, stream_tokens: bool,
@@ -9,7 +9,7 @@ from typing import Any, Generic, Type
9
9
 
10
10
  from agentbyte.execution_trace import current_collector, trace_scope
11
11
  from agentbyte.execution_trace.collector import snapshot
12
- from agentbyte.execution_trace.models import ExecutionStatus
12
+ from agentbyte.execution_trace.models import ExecutionStatus, SpanKind
13
13
 
14
14
  from agentbyte.workflow.core.models import (
15
15
  InputType,
@@ -140,7 +140,7 @@ class BaseStep(Generic[InputType, OutputType], ABC):
140
140
  ) -> dict[str, Any]:
141
141
  collector = current_collector()
142
142
  with trace_scope(
143
- "step", self.metadata.name, step_id=self.step_id, attempt=attempt + 1
143
+ SpanKind.STEP, self.metadata.name, step_id=self.step_id, attempt=attempt + 1
144
144
  ) as span:
145
145
  if span is not None and collector.capture_payloads:
146
146
  span.input = snapshot(input_data)
@@ -16,7 +16,14 @@ from pathlib import Path
16
16
  import pytest
17
17
 
18
18
  from agentbyte.eval import BaseEvalJudge, BaseEvalTarget, ContainsJudge, EvalScore, EvalTask, JudgeScoringError
19
- from agentbyte.eval.history import EvalItemRecord, EvalRunRecord, EvalRunRecorder, MemoryEvalRunStore
19
+ from agentbyte.eval.history import (
20
+ EvalItemRecord,
21
+ EvalRunRecord,
22
+ EvalRunRecorder,
23
+ ItemState,
24
+ MemoryEvalRunStore,
25
+ SQLiteEvalRunStore,
26
+ )
20
27
  from agentbyte.eval.runner import EvalRunner
21
28
  from agentbyte.eval.workbench import (
22
29
  MIN_SCORE_LABEL,
@@ -427,6 +434,19 @@ def test_cli_results_for_unknown_run_exit_2(cli_env, tmp_path) -> None:
427
434
  assert result.returncode == 2 and "Unknown evaluation run" in result.stderr
428
435
 
429
436
 
437
+ async def _wait_for_running_item(history: Path, run_id: str, timeout: float = 30.0) -> None:
438
+ """Poll the CLI's history (as a read-only store) until the run's item is running."""
439
+ loop = asyncio.get_running_loop()
440
+ deadline = loop.time() + timeout
441
+ async with SQLiteEvalRunStore(history, writer=False) as store:
442
+ while loop.time() < deadline:
443
+ items = await store.list_items(run_id)
444
+ if any(item.state == ItemState.RUNNING for item in items):
445
+ return
446
+ await asyncio.sleep(0.02)
447
+ raise AssertionError(f"run {run_id} never started its item")
448
+
449
+
430
450
  @pytest.mark.skipif(sys.platform == "win32", reason="POSIX signals")
431
451
  def test_cli_interrupt_exits_130_and_records_cancelled_run(cli_env, tmp_path) -> None:
432
452
  history = tmp_path / "slow.sqlite"
@@ -439,6 +459,9 @@ def test_cli_interrupt_exits_130_and_records_cancelled_run(cli_env, tmp_path) ->
439
459
  line = process.stderr.readline()
440
460
  assert "started" in line, line
441
461
  run_id = line.split()[1]
462
+ # "started" prints when the run is admitted, before its item runs. Interrupting a
463
+ # still-pending item records it as not_started, so wait until it is running.
464
+ asyncio.run(_wait_for_running_item(history, run_id))
442
465
  process.send_signal(signal.SIGINT)
443
466
  _, stderr = process.communicate(timeout=60)
444
467
  finally:
@@ -17,7 +17,7 @@ from pydantic import ValidationError
17
17
  from agentbyte.eval import PairwiseWinner, ScoringStatus
18
18
  from agentbyte.eval.history import CaptureMode, EvidenceStatus, ItemState, RunStatus, TaskType
19
19
  from agentbyte.eval.workbench.verdict import ItemOutcome
20
- from agentbyte.execution_trace import ExecutionStatus
20
+ from agentbyte.execution_trace import ExecutionSpan, ExecutionStatus, SpanKind, TraceCollector
21
21
  from agentbyte.middleware.base import OperationType, RetrySequenceOutcome
22
22
  from agentbyte.orchestration import (
23
23
  AgentHistoryPolicy,
@@ -144,6 +144,24 @@ class TestStrEnumBehaviour:
144
144
  assert "passed" in set(ItemOutcome) and CaptureMode.FULL == "full"
145
145
 
146
146
 
147
+ class TestSpanKind:
148
+ """Built-in span kinds are a StrEnum; the span field stays open for caller kinds."""
149
+
150
+ def test_builtin_kinds(self) -> None:
151
+ assert [k.value for k in SpanKind] == [
152
+ "agent", "invocation", "orchestrator", "workflow", "workflow_agent", "step",
153
+ ]
154
+
155
+ def test_builtin_member_is_stored_as_plain_value(self) -> None:
156
+ span = TraceCollector().start(SpanKind.AGENT, "a")
157
+
158
+ assert span.kind == SpanKind.AGENT == "agent"
159
+ assert span.model_dump(mode="json")["kind"] == "agent"
160
+
161
+ def test_caller_defined_kind_is_allowed(self) -> None:
162
+ assert ExecutionSpan(kind="retrieval", name="vector search").kind == "retrieval"
163
+
164
+
147
165
  # Multi-value Literals allowed to stay: message-role / entity-type tags of a discriminated
148
166
  # union, where each concrete class narrows the base to one value.
149
167
  _ALLOWED_LITERALS = {
@@ -1,2 +0,0 @@
1
- __version__ = "0.44.0"
2
- VERSION = __version__
File without changes
File without changes
File without changes