autobyteus 1.1.6__tar.gz → 1.1.8__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 (504) hide show
  1. autobyteus-1.1.8/PKG-INFO +204 -0
  2. autobyteus-1.1.8/README.md +134 -0
  3. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/context/agent_runtime_state.py +7 -1
  4. autobyteus-1.1.8/autobyteus/agent/handlers/tool_result_event_handler.py +161 -0
  5. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/llm_response_processor/provider_aware_tool_usage_processor.py +7 -1
  6. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/tool_invocation.py +25 -1
  7. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent_team/agent_team_builder.py +22 -1
  8. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent_team/context/agent_team_runtime_state.py +0 -2
  9. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/llm/llm_factory.py +25 -57
  10. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/llm/ollama_provider_resolver.py +1 -0
  11. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/llm/providers.py +1 -0
  12. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/llm/token_counter/token_counter_factory.py +2 -0
  13. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/multimedia/audio/audio_model.py +2 -1
  14. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/multimedia/image/image_model.py +2 -1
  15. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/task_management/tools/publish_task_plan.py +4 -16
  16. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/task_management/tools/update_task_status.py +4 -19
  17. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/tools/__init__.py +2 -4
  18. autobyteus-1.1.8/autobyteus/tools/base_tool.py +183 -0
  19. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/tools/browser/standalone/__init__.py +0 -1
  20. autobyteus-1.1.8/autobyteus/tools/google_search.py +149 -0
  21. autobyteus-1.1.8/autobyteus/tools/mcp/schema_mapper.py +89 -0
  22. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/tools/multimedia/audio_tools.py +3 -3
  23. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/tools/multimedia/image_tools.py +5 -5
  24. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/tools/parameter_schema.py +82 -89
  25. autobyteus-1.1.8/autobyteus/tools/pydantic_schema_converter.py +81 -0
  26. autobyteus-1.1.8/autobyteus/tools/usage/formatters/default_json_example_formatter.py +186 -0
  27. autobyteus-1.1.8/autobyteus/tools/usage/formatters/default_xml_example_formatter.py +149 -0
  28. autobyteus-1.1.8/autobyteus/tools/usage/formatters/default_xml_schema_formatter.py +76 -0
  29. autobyteus-1.1.8/autobyteus/tools/usage/formatters/gemini_json_example_formatter.py +73 -0
  30. autobyteus-1.1.8/autobyteus/tools/usage/formatters/google_json_example_formatter.py +74 -0
  31. autobyteus-1.1.8/autobyteus/tools/usage/formatters/openai_json_example_formatter.py +81 -0
  32. autobyteus-1.1.8/autobyteus/tools/usage/parsers/default_xml_tool_usage_parser.py +302 -0
  33. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/tools/usage/providers/tool_manifest_provider.py +39 -14
  34. autobyteus-1.1.8/autobyteus.egg-info/PKG-INFO +204 -0
  35. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus.egg-info/SOURCES.txt +2 -3
  36. {autobyteus-1.1.6 → autobyteus-1.1.8}/examples/run_google_slides_agent.py +2 -2
  37. {autobyteus-1.1.6 → autobyteus-1.1.8}/examples/run_mcp_google_slides_client.py +1 -1
  38. {autobyteus-1.1.6 → autobyteus-1.1.8}/examples/run_sqlite_agent.py +1 -1
  39. {autobyteus-1.1.6 → autobyteus-1.1.8}/setup.py +1 -1
  40. autobyteus-1.1.6/PKG-INFO +0 -161
  41. autobyteus-1.1.6/README.md +0 -91
  42. autobyteus-1.1.6/autobyteus/agent/handlers/tool_result_event_handler.py +0 -129
  43. autobyteus-1.1.6/autobyteus/tools/ask_user_input.py +0 -40
  44. autobyteus-1.1.6/autobyteus/tools/base_tool.py +0 -114
  45. autobyteus-1.1.6/autobyteus/tools/browser/standalone/factory/google_search_factory.py +0 -25
  46. autobyteus-1.1.6/autobyteus/tools/browser/standalone/google_search_ui.py +0 -126
  47. autobyteus-1.1.6/autobyteus/tools/mcp/schema_mapper.py +0 -131
  48. autobyteus-1.1.6/autobyteus/tools/usage/formatters/default_json_example_formatter.py +0 -117
  49. autobyteus-1.1.6/autobyteus/tools/usage/formatters/default_xml_example_formatter.py +0 -75
  50. autobyteus-1.1.6/autobyteus/tools/usage/formatters/default_xml_schema_formatter.py +0 -46
  51. autobyteus-1.1.6/autobyteus/tools/usage/formatters/gemini_json_example_formatter.py +0 -40
  52. autobyteus-1.1.6/autobyteus/tools/usage/formatters/google_json_example_formatter.py +0 -41
  53. autobyteus-1.1.6/autobyteus/tools/usage/formatters/openai_json_example_formatter.py +0 -51
  54. autobyteus-1.1.6/autobyteus/tools/usage/parsers/default_xml_tool_usage_parser.py +0 -126
  55. autobyteus-1.1.6/autobyteus.egg-info/PKG-INFO +0 -161
  56. {autobyteus-1.1.6 → autobyteus-1.1.8}/LICENSE +0 -0
  57. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/__init__.py +0 -0
  58. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/__init__.py +0 -0
  59. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/agent.py +0 -0
  60. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/bootstrap_steps/__init__.py +0 -0
  61. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/bootstrap_steps/agent_bootstrapper.py +0 -0
  62. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/bootstrap_steps/agent_runtime_queue_initialization_step.py +0 -0
  63. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/bootstrap_steps/base_bootstrap_step.py +0 -0
  64. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/bootstrap_steps/mcp_server_prewarming_step.py +0 -0
  65. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/bootstrap_steps/system_prompt_processing_step.py +0 -0
  66. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/bootstrap_steps/workspace_context_initialization_step.py +0 -0
  67. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/context/__init__.py +0 -0
  68. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/context/agent_config.py +0 -0
  69. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/context/agent_context.py +0 -0
  70. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/context/agent_context_registry.py +0 -0
  71. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/events/__init__.py +0 -0
  72. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/events/agent_events.py +0 -0
  73. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/events/agent_input_event_queue_manager.py +0 -0
  74. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/events/notifiers.py +0 -0
  75. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/events/worker_event_dispatcher.py +0 -0
  76. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/exceptions.py +0 -0
  77. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/factory/__init__.py +0 -0
  78. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/factory/agent_factory.py +0 -0
  79. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/handlers/__init__.py +0 -0
  80. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/handlers/approved_tool_invocation_event_handler.py +0 -0
  81. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/handlers/base_event_handler.py +0 -0
  82. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/handlers/event_handler_registry.py +0 -0
  83. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/handlers/generic_event_handler.py +0 -0
  84. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/handlers/inter_agent_message_event_handler.py +0 -0
  85. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/handlers/lifecycle_event_logger.py +0 -0
  86. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/handlers/llm_complete_response_received_event_handler.py +0 -0
  87. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/handlers/llm_user_message_ready_event_handler.py +0 -0
  88. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/handlers/tool_execution_approval_event_handler.py +0 -0
  89. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/handlers/tool_invocation_request_event_handler.py +0 -0
  90. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/handlers/user_input_message_event_handler.py +0 -0
  91. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/hooks/__init__.py +0 -0
  92. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/hooks/base_phase_hook.py +0 -0
  93. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/hooks/hook_definition.py +0 -0
  94. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/hooks/hook_meta.py +0 -0
  95. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/hooks/hook_registry.py +0 -0
  96. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/input_processor/__init__.py +0 -0
  97. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/input_processor/base_user_input_processor.py +0 -0
  98. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/input_processor/processor_definition.py +0 -0
  99. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/input_processor/processor_meta.py +0 -0
  100. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/input_processor/processor_registry.py +0 -0
  101. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/llm_response_processor/__init__.py +0 -0
  102. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/llm_response_processor/base_processor.py +0 -0
  103. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/llm_response_processor/processor_definition.py +0 -0
  104. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/llm_response_processor/processor_meta.py +0 -0
  105. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/llm_response_processor/processor_registry.py +0 -0
  106. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/message/__init__.py +0 -0
  107. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/message/agent_input_user_message.py +0 -0
  108. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/message/context_file.py +0 -0
  109. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/message/context_file_type.py +0 -0
  110. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/message/inter_agent_message.py +0 -0
  111. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/message/inter_agent_message_type.py +0 -0
  112. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/message/multimodal_message_builder.py +0 -0
  113. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/message/send_message_to.py +0 -0
  114. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/phases/__init__.py +0 -0
  115. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/phases/discover.py +0 -0
  116. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/phases/manager.py +0 -0
  117. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/phases/phase_enum.py +0 -0
  118. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/phases/transition_decorator.py +0 -0
  119. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/phases/transition_info.py +0 -0
  120. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/remote_agent.py +0 -0
  121. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/runtime/__init__.py +0 -0
  122. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/runtime/agent_runtime.py +0 -0
  123. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/runtime/agent_thread_pool_manager.py +0 -0
  124. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/runtime/agent_worker.py +0 -0
  125. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/sender_type.py +0 -0
  126. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/shutdown_steps/__init__.py +0 -0
  127. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/shutdown_steps/agent_shutdown_orchestrator.py +0 -0
  128. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/shutdown_steps/base_shutdown_step.py +0 -0
  129. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/shutdown_steps/llm_instance_cleanup_step.py +0 -0
  130. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/shutdown_steps/mcp_server_cleanup_step.py +0 -0
  131. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/streaming/__init__.py +0 -0
  132. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/streaming/agent_event_stream.py +0 -0
  133. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/streaming/queue_streamer.py +0 -0
  134. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/streaming/stream_event_payloads.py +0 -0
  135. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/streaming/stream_events.py +0 -0
  136. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/system_prompt_processor/__init__.py +0 -0
  137. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/system_prompt_processor/base_processor.py +0 -0
  138. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/system_prompt_processor/processor_definition.py +0 -0
  139. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/system_prompt_processor/processor_meta.py +0 -0
  140. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/system_prompt_processor/processor_registry.py +0 -0
  141. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/system_prompt_processor/tool_manifest_injector_processor.py +0 -0
  142. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/tool_execution_result_processor/__init__.py +0 -0
  143. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/tool_execution_result_processor/base_processor.py +0 -0
  144. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/tool_execution_result_processor/processor_definition.py +0 -0
  145. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/tool_execution_result_processor/processor_meta.py +0 -0
  146. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/tool_execution_result_processor/processor_registry.py +0 -0
  147. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/utils/__init__.py +0 -0
  148. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/utils/wait_for_idle.py +0 -0
  149. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/workspace/__init__.py +0 -0
  150. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/workspace/base_workspace.py +0 -0
  151. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/workspace/workspace_config.py +0 -0
  152. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/workspace/workspace_definition.py +0 -0
  153. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/workspace/workspace_meta.py +0 -0
  154. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent/workspace/workspace_registry.py +0 -0
  155. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent_team/__init__.py +0 -0
  156. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent_team/agent_team.py +0 -0
  157. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent_team/base_agent_team.py +0 -0
  158. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent_team/bootstrap_steps/__init__.py +0 -0
  159. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent_team/bootstrap_steps/agent_configuration_preparation_step.py +0 -0
  160. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent_team/bootstrap_steps/agent_team_bootstrapper.py +0 -0
  161. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent_team/bootstrap_steps/agent_team_runtime_queue_initialization_step.py +0 -0
  162. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent_team/bootstrap_steps/base_agent_team_bootstrap_step.py +0 -0
  163. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent_team/bootstrap_steps/coordinator_initialization_step.py +0 -0
  164. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent_team/bootstrap_steps/coordinator_prompt_preparation_step.py +0 -0
  165. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent_team/bootstrap_steps/task_notifier_initialization_step.py +0 -0
  166. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent_team/bootstrap_steps/team_context_initialization_step.py +0 -0
  167. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent_team/context/__init__.py +0 -0
  168. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent_team/context/agent_team_config.py +0 -0
  169. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent_team/context/agent_team_context.py +0 -0
  170. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent_team/context/team_manager.py +0 -0
  171. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent_team/context/team_node_config.py +0 -0
  172. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent_team/events/__init__.py +0 -0
  173. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent_team/events/agent_team_event_dispatcher.py +0 -0
  174. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent_team/events/agent_team_events.py +0 -0
  175. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent_team/events/agent_team_input_event_queue_manager.py +0 -0
  176. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent_team/exceptions.py +0 -0
  177. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent_team/factory/__init__.py +0 -0
  178. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent_team/factory/agent_team_factory.py +0 -0
  179. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent_team/handlers/__init__.py +0 -0
  180. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent_team/handlers/agent_team_event_handler_registry.py +0 -0
  181. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent_team/handlers/base_agent_team_event_handler.py +0 -0
  182. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent_team/handlers/inter_agent_message_request_event_handler.py +0 -0
  183. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent_team/handlers/lifecycle_agent_team_event_handler.py +0 -0
  184. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent_team/handlers/process_user_message_event_handler.py +0 -0
  185. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent_team/handlers/tool_approval_team_event_handler.py +0 -0
  186. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent_team/phases/__init__.py +0 -0
  187. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent_team/phases/agent_team_operational_phase.py +0 -0
  188. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent_team/phases/agent_team_phase_manager.py +0 -0
  189. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent_team/runtime/__init__.py +0 -0
  190. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent_team/runtime/agent_team_runtime.py +0 -0
  191. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent_team/runtime/agent_team_worker.py +0 -0
  192. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent_team/shutdown_steps/__init__.py +0 -0
  193. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent_team/shutdown_steps/agent_team_shutdown_orchestrator.py +0 -0
  194. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent_team/shutdown_steps/agent_team_shutdown_step.py +0 -0
  195. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent_team/shutdown_steps/base_agent_team_shutdown_step.py +0 -0
  196. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent_team/shutdown_steps/bridge_cleanup_step.py +0 -0
  197. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent_team/shutdown_steps/sub_team_shutdown_step.py +0 -0
  198. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent_team/streaming/__init__.py +0 -0
  199. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent_team/streaming/agent_event_bridge.py +0 -0
  200. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent_team/streaming/agent_event_multiplexer.py +0 -0
  201. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent_team/streaming/agent_team_event_notifier.py +0 -0
  202. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent_team/streaming/agent_team_event_stream.py +0 -0
  203. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent_team/streaming/agent_team_stream_event_payloads.py +0 -0
  204. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent_team/streaming/agent_team_stream_events.py +0 -0
  205. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent_team/streaming/team_event_bridge.py +0 -0
  206. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent_team/task_notification/__init__.py +0 -0
  207. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent_team/task_notification/system_event_driven_agent_task_notifier.py +0 -0
  208. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent_team/task_notification/task_notification_mode.py +0 -0
  209. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent_team/utils/__init__.py +0 -0
  210. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/agent_team/utils/wait_for_idle.py +0 -0
  211. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/check_requirements.py +0 -0
  212. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/cli/__init__.py +0 -0
  213. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/cli/agent_cli.py +0 -0
  214. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/cli/agent_team_tui/__init__.py +0 -0
  215. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/cli/agent_team_tui/app.py +0 -0
  216. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/cli/agent_team_tui/state.py +0 -0
  217. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/cli/agent_team_tui/widgets/__init__.py +0 -0
  218. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/cli/agent_team_tui/widgets/agent_list_sidebar.py +0 -0
  219. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/cli/agent_team_tui/widgets/focus_pane.py +0 -0
  220. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/cli/agent_team_tui/widgets/logo.py +0 -0
  221. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/cli/agent_team_tui/widgets/renderables.py +0 -0
  222. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/cli/agent_team_tui/widgets/shared.py +0 -0
  223. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/cli/agent_team_tui/widgets/status_bar.py +0 -0
  224. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/cli/agent_team_tui/widgets/task_board_panel.py +0 -0
  225. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/cli/cli_display.py +0 -0
  226. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/cli/workflow_tui/__init__.py +0 -0
  227. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/cli/workflow_tui/app.py +0 -0
  228. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/cli/workflow_tui/state.py +0 -0
  229. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/cli/workflow_tui/widgets/__init__.py +0 -0
  230. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/cli/workflow_tui/widgets/agent_list_sidebar.py +0 -0
  231. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/cli/workflow_tui/widgets/focus_pane.py +0 -0
  232. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/cli/workflow_tui/widgets/logo.py +0 -0
  233. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/cli/workflow_tui/widgets/renderables.py +0 -0
  234. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/cli/workflow_tui/widgets/shared.py +0 -0
  235. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/cli/workflow_tui/widgets/status_bar.py +0 -0
  236. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/events/__init__.py +0 -0
  237. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/events/event_emitter.py +0 -0
  238. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/events/event_manager.py +0 -0
  239. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/events/event_types.py +0 -0
  240. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/llm/__init__.py +0 -0
  241. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/llm/api/__init__.py +0 -0
  242. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/llm/api/autobyteus_llm.py +0 -0
  243. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/llm/api/bedrock_llm.py +0 -0
  244. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/llm/api/claude_llm.py +0 -0
  245. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/llm/api/deepseek_llm.py +0 -0
  246. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/llm/api/gemini_llm.py +0 -0
  247. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/llm/api/grok_llm.py +0 -0
  248. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/llm/api/groq_llm.py +0 -0
  249. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/llm/api/kimi_llm.py +0 -0
  250. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/llm/api/lmstudio_llm.py +0 -0
  251. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/llm/api/mistral_llm.py +0 -0
  252. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/llm/api/nvidia_llm.py +0 -0
  253. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/llm/api/ollama_llm.py +0 -0
  254. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/llm/api/openai_compatible_llm.py +0 -0
  255. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/llm/api/openai_llm.py +0 -0
  256. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/llm/autobyteus_provider.py +0 -0
  257. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/llm/base_llm.py +0 -0
  258. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/llm/extensions/__init__.py +0 -0
  259. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/llm/extensions/base_extension.py +0 -0
  260. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/llm/extensions/extension_registry.py +0 -0
  261. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/llm/extensions/token_usage_tracking_extension.py +0 -0
  262. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/llm/lmstudio_provider.py +0 -0
  263. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/llm/models.py +0 -0
  264. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/llm/ollama_provider.py +0 -0
  265. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/llm/runtimes.py +0 -0
  266. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/llm/token_counter/__init__.py +0 -0
  267. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/llm/token_counter/base_token_counter.py +0 -0
  268. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/llm/token_counter/claude_token_counter.py +0 -0
  269. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/llm/token_counter/deepseek_token_counter.py +0 -0
  270. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/llm/token_counter/kimi_token_counter.py +0 -0
  271. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/llm/token_counter/mistral_token_counter.py +0 -0
  272. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/llm/token_counter/openai_token_counter.py +0 -0
  273. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/llm/user_message.py +0 -0
  274. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/llm/utils/__init__.py +0 -0
  275. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/llm/utils/llm_config.py +0 -0
  276. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/llm/utils/media_payload_formatter.py +0 -0
  277. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/llm/utils/messages.py +0 -0
  278. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/llm/utils/rate_limiter.py +0 -0
  279. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/llm/utils/response_types.py +0 -0
  280. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/llm/utils/token_pricing_config.py +0 -0
  281. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/llm/utils/token_usage.py +0 -0
  282. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/llm/utils/token_usage_tracker.py +0 -0
  283. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/multimedia/__init__.py +0 -0
  284. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/multimedia/audio/__init__.py +0 -0
  285. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/multimedia/audio/api/__init__.py +0 -0
  286. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/multimedia/audio/api/autobyteus_audio_client.py +0 -0
  287. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/multimedia/audio/api/gemini_audio_client.py +0 -0
  288. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/multimedia/audio/audio_client_factory.py +0 -0
  289. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/multimedia/audio/autobyteus_audio_provider.py +0 -0
  290. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/multimedia/audio/base_audio_client.py +0 -0
  291. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/multimedia/image/__init__.py +0 -0
  292. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/multimedia/image/api/__init__.py +0 -0
  293. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/multimedia/image/api/autobyteus_image_client.py +0 -0
  294. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/multimedia/image/api/gemini_image_client.py +0 -0
  295. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/multimedia/image/api/openai_image_client.py +0 -0
  296. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/multimedia/image/autobyteus_image_provider.py +0 -0
  297. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/multimedia/image/base_image_client.py +0 -0
  298. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/multimedia/image/image_client_factory.py +0 -0
  299. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/multimedia/providers.py +0 -0
  300. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/multimedia/runtimes.py +0 -0
  301. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/multimedia/utils/__init__.py +0 -0
  302. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/multimedia/utils/api_utils.py +0 -0
  303. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/multimedia/utils/multimedia_config.py +0 -0
  304. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/multimedia/utils/response_types.py +0 -0
  305. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/person/__init__.py +0 -0
  306. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/person/examples/__init__.py +0 -0
  307. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/person/examples/sample_persons.py +0 -0
  308. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/person/examples/sample_roles.py +0 -0
  309. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/person/person.py +0 -0
  310. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/person/role.py +0 -0
  311. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/prompt/__init__.py +0 -0
  312. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/prompt/prompt_builder.py +0 -0
  313. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/prompt/prompt_template.py +0 -0
  314. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/rpc/__init__.py +0 -0
  315. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/rpc/client/__init__.py +0 -0
  316. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/rpc/client/abstract_client_connection.py +0 -0
  317. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/rpc/client/client_connection_manager.py +0 -0
  318. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/rpc/client/sse_client_connection.py +0 -0
  319. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/rpc/client/stdio_client_connection.py +0 -0
  320. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/rpc/config/__init__.py +0 -0
  321. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/rpc/config/agent_server_config.py +0 -0
  322. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/rpc/config/agent_server_registry.py +0 -0
  323. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/rpc/hosting.py +0 -0
  324. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/rpc/protocol.py +0 -0
  325. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/rpc/server/__init__.py +0 -0
  326. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/rpc/server/agent_server_endpoint.py +0 -0
  327. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/rpc/server/base_method_handler.py +0 -0
  328. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/rpc/server/method_handlers.py +0 -0
  329. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/rpc/server/sse_server_handler.py +0 -0
  330. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/rpc/server/stdio_server_handler.py +0 -0
  331. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/rpc/server_main.py +0 -0
  332. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/rpc/transport_type.py +0 -0
  333. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/task_management/__init__.py +0 -0
  334. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/task_management/base_task_board.py +0 -0
  335. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/task_management/converters/__init__.py +0 -0
  336. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/task_management/converters/task_board_converter.py +0 -0
  337. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/task_management/converters/task_plan_converter.py +0 -0
  338. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/task_management/deliverable.py +0 -0
  339. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/task_management/deliverables/__init__.py +0 -0
  340. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/task_management/deliverables/file_deliverable.py +0 -0
  341. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/task_management/events.py +0 -0
  342. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/task_management/in_memory_task_board.py +0 -0
  343. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/task_management/schemas/__init__.py +0 -0
  344. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/task_management/schemas/deliverable_schema.py +0 -0
  345. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/task_management/schemas/plan_definition.py +0 -0
  346. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/task_management/schemas/task_status_report.py +0 -0
  347. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/task_management/task_plan.py +0 -0
  348. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/task_management/tools/__init__.py +0 -0
  349. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/task_management/tools/get_task_board_status.py +0 -0
  350. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/tools/bash/__init__.py +0 -0
  351. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/tools/bash/bash_executor.py +0 -0
  352. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/tools/browser/__init__.py +0 -0
  353. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/tools/browser/session_aware/__init__.py +0 -0
  354. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/tools/browser/session_aware/browser_session_aware_navigate_to.py +0 -0
  355. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/tools/browser/session_aware/browser_session_aware_tool.py +0 -0
  356. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/tools/browser/session_aware/browser_session_aware_web_element_trigger.py +0 -0
  357. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/tools/browser/session_aware/browser_session_aware_webpage_reader.py +0 -0
  358. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/tools/browser/session_aware/browser_session_aware_webpage_screenshot_taker.py +0 -0
  359. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/tools/browser/session_aware/factory/__init__.py +0 -0
  360. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/tools/browser/session_aware/factory/browser_session_aware_web_element_trigger_factory.py +0 -0
  361. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/tools/browser/session_aware/factory/browser_session_aware_webpage_reader_factory.py +0 -0
  362. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/tools/browser/session_aware/factory/browser_session_aware_webpage_screenshot_taker_factory.py +0 -0
  363. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/tools/browser/session_aware/shared_browser_session.py +0 -0
  364. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/tools/browser/session_aware/shared_browser_session_manager.py +0 -0
  365. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/tools/browser/session_aware/web_element_action.py +0 -0
  366. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/tools/browser/standalone/factory/__init__.py +0 -0
  367. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/tools/browser/standalone/factory/webpage_reader_factory.py +0 -0
  368. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/tools/browser/standalone/factory/webpage_screenshot_taker_factory.py +0 -0
  369. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/tools/browser/standalone/navigate_to.py +0 -0
  370. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/tools/browser/standalone/web_page_pdf_generator.py +0 -0
  371. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/tools/browser/standalone/webpage_image_downloader.py +0 -0
  372. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/tools/browser/standalone/webpage_reader.py +0 -0
  373. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/tools/browser/standalone/webpage_screenshot_taker.py +0 -0
  374. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/tools/factory/__init__.py +0 -0
  375. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/tools/factory/tool_factory.py +0 -0
  376. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/tools/file/__init__.py +0 -0
  377. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/tools/file/file_reader.py +0 -0
  378. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/tools/file/file_writer.py +0 -0
  379. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/tools/functional_tool.py +0 -0
  380. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/tools/handlers/__init__.py +0 -0
  381. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/tools/handlers/shell_handler.py +0 -0
  382. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/tools/image_downloader.py +0 -0
  383. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/tools/mcp/__init__.py +0 -0
  384. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/tools/mcp/config_service.py +0 -0
  385. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/tools/mcp/factory.py +0 -0
  386. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/tools/mcp/server/__init__.py +0 -0
  387. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/tools/mcp/server/base_managed_mcp_server.py +0 -0
  388. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/tools/mcp/server/http_managed_mcp_server.py +0 -0
  389. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/tools/mcp/server/proxy.py +0 -0
  390. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/tools/mcp/server/stdio_managed_mcp_server.py +0 -0
  391. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/tools/mcp/server_instance_manager.py +0 -0
  392. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/tools/mcp/tool.py +0 -0
  393. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/tools/mcp/tool_registrar.py +0 -0
  394. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/tools/mcp/types.py +0 -0
  395. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/tools/multimedia/__init__.py +0 -0
  396. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/tools/operation/__init__.py +0 -0
  397. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/tools/operation/file_operation.py +0 -0
  398. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/tools/operation/file_rename_operation.py +0 -0
  399. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/tools/operation/operation.py +0 -0
  400. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/tools/operation/shell_operation.py +0 -0
  401. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/tools/pdf_downloader.py +0 -0
  402. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/tools/registry/__init__.py +0 -0
  403. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/tools/registry/tool_definition.py +0 -0
  404. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/tools/registry/tool_registry.py +0 -0
  405. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/tools/timer.py +0 -0
  406. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/tools/tool_category.py +0 -0
  407. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/tools/tool_config.py +0 -0
  408. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/tools/tool_meta.py +0 -0
  409. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/tools/tool_origin.py +0 -0
  410. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/tools/tool_state.py +0 -0
  411. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/tools/usage/__init__.py +0 -0
  412. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/tools/usage/formatters/__init__.py +0 -0
  413. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/tools/usage/formatters/anthropic_json_example_formatter.py +0 -0
  414. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/tools/usage/formatters/anthropic_json_schema_formatter.py +0 -0
  415. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/tools/usage/formatters/base_formatter.py +0 -0
  416. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/tools/usage/formatters/default_json_schema_formatter.py +0 -0
  417. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/tools/usage/formatters/gemini_json_schema_formatter.py +0 -0
  418. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/tools/usage/formatters/google_json_schema_formatter.py +0 -0
  419. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/tools/usage/formatters/openai_json_schema_formatter.py +0 -0
  420. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/tools/usage/parsers/__init__.py +0 -0
  421. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/tools/usage/parsers/_json_extractor.py +0 -0
  422. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/tools/usage/parsers/anthropic_xml_tool_usage_parser.py +0 -0
  423. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/tools/usage/parsers/base_parser.py +0 -0
  424. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/tools/usage/parsers/default_json_tool_usage_parser.py +0 -0
  425. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/tools/usage/parsers/exceptions.py +0 -0
  426. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/tools/usage/parsers/gemini_json_tool_usage_parser.py +0 -0
  427. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/tools/usage/parsers/openai_json_tool_usage_parser.py +0 -0
  428. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/tools/usage/parsers/provider_aware_tool_usage_parser.py +0 -0
  429. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/tools/usage/providers/__init__.py +0 -0
  430. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/tools/usage/registries/__init__.py +0 -0
  431. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/tools/usage/registries/tool_formatter_pair.py +0 -0
  432. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/tools/usage/registries/tool_formatting_registry.py +0 -0
  433. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/tools/usage/registries/tool_usage_parser_registry.py +0 -0
  434. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/tools/utils.py +0 -0
  435. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/utils/__init__.py +0 -0
  436. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/utils/dynamic_enum.py +0 -0
  437. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/utils/file_utils.py +0 -0
  438. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/utils/html_cleaner.py +0 -0
  439. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/utils/singleton.py +0 -0
  440. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/workflow/__init__.py +0 -0
  441. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/workflow/agentic_workflow.py +0 -0
  442. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/workflow/base_agentic_workflow.py +0 -0
  443. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/workflow/bootstrap_steps/__init__.py +0 -0
  444. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/workflow/bootstrap_steps/agent_tool_injection_step.py +0 -0
  445. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/workflow/bootstrap_steps/base_workflow_bootstrap_step.py +0 -0
  446. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/workflow/bootstrap_steps/coordinator_initialization_step.py +0 -0
  447. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/workflow/bootstrap_steps/coordinator_prompt_preparation_step.py +0 -0
  448. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/workflow/bootstrap_steps/workflow_bootstrapper.py +0 -0
  449. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/workflow/bootstrap_steps/workflow_runtime_queue_initialization_step.py +0 -0
  450. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/workflow/context/__init__.py +0 -0
  451. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/workflow/context/team_manager.py +0 -0
  452. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/workflow/context/workflow_config.py +0 -0
  453. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/workflow/context/workflow_context.py +0 -0
  454. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/workflow/context/workflow_node_config.py +0 -0
  455. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/workflow/context/workflow_runtime_state.py +0 -0
  456. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/workflow/events/__init__.py +0 -0
  457. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/workflow/events/workflow_event_dispatcher.py +0 -0
  458. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/workflow/events/workflow_events.py +0 -0
  459. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/workflow/events/workflow_input_event_queue_manager.py +0 -0
  460. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/workflow/exceptions.py +0 -0
  461. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/workflow/factory/__init__.py +0 -0
  462. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/workflow/factory/workflow_factory.py +0 -0
  463. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/workflow/handlers/__init__.py +0 -0
  464. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/workflow/handlers/base_workflow_event_handler.py +0 -0
  465. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/workflow/handlers/inter_agent_message_request_event_handler.py +0 -0
  466. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/workflow/handlers/lifecycle_workflow_event_handler.py +0 -0
  467. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/workflow/handlers/process_user_message_event_handler.py +0 -0
  468. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/workflow/handlers/tool_approval_workflow_event_handler.py +0 -0
  469. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/workflow/handlers/workflow_event_handler_registry.py +0 -0
  470. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/workflow/phases/__init__.py +0 -0
  471. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/workflow/phases/workflow_operational_phase.py +0 -0
  472. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/workflow/phases/workflow_phase_manager.py +0 -0
  473. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/workflow/runtime/__init__.py +0 -0
  474. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/workflow/runtime/workflow_runtime.py +0 -0
  475. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/workflow/runtime/workflow_worker.py +0 -0
  476. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/workflow/shutdown_steps/__init__.py +0 -0
  477. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/workflow/shutdown_steps/agent_team_shutdown_step.py +0 -0
  478. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/workflow/shutdown_steps/base_workflow_shutdown_step.py +0 -0
  479. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/workflow/shutdown_steps/bridge_cleanup_step.py +0 -0
  480. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/workflow/shutdown_steps/sub_workflow_shutdown_step.py +0 -0
  481. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/workflow/shutdown_steps/workflow_shutdown_orchestrator.py +0 -0
  482. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/workflow/streaming/__init__.py +0 -0
  483. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/workflow/streaming/agent_event_bridge.py +0 -0
  484. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/workflow/streaming/agent_event_multiplexer.py +0 -0
  485. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/workflow/streaming/workflow_event_bridge.py +0 -0
  486. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/workflow/streaming/workflow_event_notifier.py +0 -0
  487. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/workflow/streaming/workflow_event_stream.py +0 -0
  488. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/workflow/streaming/workflow_stream_event_payloads.py +0 -0
  489. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/workflow/streaming/workflow_stream_events.py +0 -0
  490. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/workflow/utils/__init__.py +0 -0
  491. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/workflow/utils/wait_for_idle.py +0 -0
  492. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus/workflow/workflow_builder.py +0 -0
  493. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus.egg-info/dependency_links.txt +0 -0
  494. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus.egg-info/requires.txt +0 -0
  495. {autobyteus-1.1.6 → autobyteus-1.1.8}/autobyteus.egg-info/top_level.txt +0 -0
  496. {autobyteus-1.1.6 → autobyteus-1.1.8}/examples/__init__.py +0 -0
  497. {autobyteus-1.1.6 → autobyteus-1.1.8}/examples/agent_team/__init__.py +0 -0
  498. {autobyteus-1.1.6 → autobyteus-1.1.8}/examples/discover_phase_transitions.py +0 -0
  499. {autobyteus-1.1.6 → autobyteus-1.1.8}/examples/run_browser_agent.py +0 -0
  500. {autobyteus-1.1.6 → autobyteus-1.1.8}/examples/run_mcp_browser_client.py +0 -0
  501. {autobyteus-1.1.6 → autobyteus-1.1.8}/examples/run_mcp_list_tools.py +0 -0
  502. {autobyteus-1.1.6 → autobyteus-1.1.8}/examples/run_poem_writer.py +0 -0
  503. {autobyteus-1.1.6 → autobyteus-1.1.8}/pyproject.toml +0 -0
  504. {autobyteus-1.1.6 → autobyteus-1.1.8}/setup.cfg +0 -0
@@ -0,0 +1,204 @@
1
+ Metadata-Version: 2.4
2
+ Name: autobyteus
3
+ Version: 1.1.8
4
+ Summary: Multi-Agent framework
5
+ Home-page: https://github.com/AutoByteus/autobyteus
6
+ Author: Ryan Zheng
7
+ Author-email: ryan.zheng.work@gmail.com
8
+ Classifier: Development Status :: 3 - Alpha
9
+ Classifier: Intended Audience :: Developers
10
+ Classifier: License :: OSI Approved :: MIT License
11
+ Classifier: Programming Language :: Python :: 3.8
12
+ Classifier: Programming Language :: Python :: 3.9
13
+ Classifier: Programming Language :: Python :: 3.10
14
+ Requires-Python: >=3.8
15
+ Description-Content-Type: text/markdown
16
+ License-File: LICENSE
17
+ Requires-Dist: aiohttp
18
+ Requires-Dist: anthropic
19
+ Requires-Dist: autobyteus-llm-client==1.1.3
20
+ Requires-Dist: beautifulsoup4
21
+ Requires-Dist: boto3
22
+ Requires-Dist: botocore
23
+ Requires-Dist: brui-core==1.0.9
24
+ Requires-Dist: certifi==2025.4.26
25
+ Requires-Dist: google-api-python-client
26
+ Requires-Dist: google-generativeai
27
+ Requires-Dist: Jinja2
28
+ Requires-Dist: mcp[cli]
29
+ Requires-Dist: mistral_common
30
+ Requires-Dist: mistralai
31
+ Requires-Dist: numpy
32
+ Requires-Dist: ollama
33
+ Requires-Dist: openai
34
+ Requires-Dist: requests
35
+ Requires-Dist: rich
36
+ Requires-Dist: textual
37
+ Requires-Dist: tiktoken
38
+ Requires-Dist: tokenizers
39
+ Provides-Extra: dev
40
+ Requires-Dist: coverage; extra == "dev"
41
+ Requires-Dist: flake8; extra == "dev"
42
+ Requires-Dist: numpy; extra == "dev"
43
+ Requires-Dist: pre-commit; extra == "dev"
44
+ Requires-Dist: black; extra == "dev"
45
+ Requires-Dist: isort; extra == "dev"
46
+ Requires-Dist: gitpython==3.1.31; extra == "dev"
47
+ Requires-Dist: auto-gpt-plugin-template; extra == "dev"
48
+ Requires-Dist: mkdocs; extra == "dev"
49
+ Requires-Dist: pytest; extra == "dev"
50
+ Requires-Dist: asynctest; extra == "dev"
51
+ Requires-Dist: pytest-asyncio; extra == "dev"
52
+ Requires-Dist: pytest-benchmark; extra == "dev"
53
+ Requires-Dist: pytest-cov; extra == "dev"
54
+ Requires-Dist: pytest-integration; extra == "dev"
55
+ Requires-Dist: pytest-mock; extra == "dev"
56
+ Requires-Dist: vcrpy; extra == "dev"
57
+ Requires-Dist: pytest-vcr; extra == "dev"
58
+ Requires-Dist: load_dotenv; extra == "dev"
59
+ Dynamic: author
60
+ Dynamic: author-email
61
+ Dynamic: classifier
62
+ Dynamic: description
63
+ Dynamic: description-content-type
64
+ Dynamic: home-page
65
+ Dynamic: license-file
66
+ Dynamic: provides-extra
67
+ Dynamic: requires-dist
68
+ Dynamic: requires-python
69
+ Dynamic: summary
70
+
71
+ # Autobyteus
72
+
73
+ Autobyteus is an open-source, application-first agentic framework for Python. It is designed to help developers build, test, and deploy complex, stateful, and extensible AI agents by providing a robust architecture and a powerful set of tools.
74
+
75
+ ![Autobyteus TUI Dashboard](docs/images/image_1.png)
76
+
77
+ ## Architecture
78
+
79
+ Autobyteus is built with a modular, event-driven architecture designed for extensibility and clear separation of concerns. The key components are:
80
+
81
+ - **Agent Core**: The heart of the system. Each agent is a stateful, autonomous entity that runs as a background process in its own thread, managed by a dedicated `AgentWorker`. This design makes every agent a truly independent entity capable of handling long-running tasks.
82
+ - **Agent Teams**: The framework provides powerful constructs for building hierarchical multi-agent systems. The `AgentTeam` module allows you to compose teams of individual agents and even nest teams within other teams, enabling sophisticated, real-world organizational structures and delegation patterns.
83
+ - **Context & Configuration**: Agent behavior is defined through a static configuration (`AgentConfig`) and its dynamic state is managed in `AgentRuntimeState`. These are bundled into a comprehensive `AgentContext` that is passed to all components, providing a single source of truth.
84
+ - **Event-Driven System**: Agents operate on an internal `asyncio` event loop. User messages, tool results, and internal signals are handled as events, which are processed by dedicated `EventHandlers`. This decouples logic and makes the system highly extensible.
85
+ - **Pluggable Processors & Hooks**: The framework provides a chain of extension points to inject custom logic at every major step of an agent's reasoning loop. This architecture powers features like flexible tool format parsing. You can customize behavior by implementing:
86
+ - **`InputProcessors`**: To modify or enrich user messages *before* they are sent to the LLM.
87
+ - **`LLMResponseProcessors`**: To parse the LLM's raw output and extract structured actions, such as tool calls.
88
+ - **`ToolExecutionResultProcessors`**: To modify the result from a tool *before* it is sent back to the LLM for the next step of reasoning.
89
+ - **`PhaseHooks`**: To run custom code on specific agent lifecycle transitions (e.g., when an agent becomes `IDLE`).
90
+ - **Context-Aware Tooling**: Tools are first-class citizens that receive the agent's full `AgentContext` during execution. This allows tools to be deeply integrated with the agent's state, configuration, and workspace, enabling more intelligent and powerful actions.
91
+ - **Tool Approval Flow**: The framework has native support for human-in-the-loop workflows. By setting `auto_execute_tools=False` in the agent's configuration, the agent will pause before executing a tool, emit an event requesting permission, and wait for external approval before proceeding.
92
+ - **MCP Integration**: The framework has native support for the Model Context Protocol (MCP). This allows agents to discover and use tools from external, language-agnostic tool servers, making the ecosystem extremely flexible and ready for enterprise integration.
93
+
94
+ ## Key Features
95
+
96
+ #### 📊 Interactive TUI Dashboard
97
+ Launch and monitor your agent teams with our built-in Textual-based TUI.
98
+ - **Hierarchical View**: See the structure of your team, including sub-teams and their agents.
99
+ - **Real-Time Status**: Agent and team statuses are updated live, showing you who is idle, thinking, or executing a tool.
100
+ - **Detailed Logs**: Select any agent to view a detailed, streaming log of their thoughts, actions, and tool interactions.
101
+ - **Live Task Board**: Watch your team's `TaskBoard` update in real-time as the coordinator publishes a plan and agents complete their tasks.
102
+
103
+ | TUI - Detailed Agent Log | TUI - Task Board with Completed Task |
104
+ | :---: | :---: |
105
+ | ![Autobyteus Agent Log](docs/images/image_4.png) | ![Autobyteus Task Board](docs/images/image_3.png) |
106
+
107
+ #### 🏗️ Fluent Team Building
108
+ Define complex agent and team structures with an intuitive, fluent API. The `AgentTeamBuilder` makes composing your team simple and readable.
109
+
110
+ ```python
111
+ # --- From the Multi-Researcher Team Example ---
112
+ research_team = (
113
+ AgentTeamBuilder(
114
+ name="MultiSpecialistResearchTeam",
115
+ description="A team for delegating to multiple specialists."
116
+ )
117
+ .set_coordinator(coordinator_config)
118
+ .add_agent_node(researcher_web_config)
119
+ .add_agent_node(researcher_db_config)
120
+ .build()
121
+ )
122
+ ```
123
+
124
+ #### 🔁 Flexible Tool Formatting (JSON & XML)
125
+ Autobyteus intelligently handles tool communication with LLMs while giving you full control.
126
+ - **Provider-Aware by Default**: The framework automatically generates tool manifests and parses responses in the optimal format for the selected LLM provider (e.g., JSON for OpenAI/Gemini, XML for Anthropic).
127
+ - **XML Override for Efficiency**: You can set `use_xml_tool_format=True` on an `AgentConfig` or `AgentTeamBuilder` to force the use of XML for tool calls, which can be more efficient and reliable than JSON for complex tool schemas.
128
+
129
+ #### 📈 Flexible Communication Protocols
130
+ Choose the collaboration pattern that best fits your use case with configurable `TaskNotificationMode`s.
131
+ - **`AGENT_MANUAL_NOTIFICATION` (Default)**: A traditional approach where a coordinator agent is responsible for creating a plan and then explicitly notifying other agents to begin their work via messages.
132
+ - **`SYSTEM_EVENT_DRIVEN`**: A more automated approach where the coordinator's only job is to publish a plan to the `TaskBoard`. The framework then monitors the board and automatically notifies agents when their tasks become unblocked, enabling parallel execution and reducing coordinator overhead.
133
+
134
+ ## Requirements
135
+
136
+ - **Python Version**: Python 3.11 is the recommended and tested version for this project. Using newer versions of Python may result in dependency conflicts when installing the required packages. For a stable and tested environment, please use Python 3.11.
137
+
138
+ ## Getting Started
139
+
140
+ ### Installation
141
+
142
+ 1. **Clone the repository:**
143
+ ```bash
144
+ git clone https://github.com/your-username/autobyteus.git
145
+ cd autobyteus
146
+ ```
147
+
148
+ 2. **For users:**
149
+ To install Autobyteus and its core dependencies:
150
+ ```bash
151
+ pip install .
152
+ ```
153
+
154
+ 3. **For developers:**
155
+ To install Autobyteus with all development and example dependencies (including the TUI):
156
+ ```bash
157
+ pip install -r requirements-dev.txt
158
+ ```
159
+
160
+ 4. **Set up Environment Variables:**
161
+ Create a `.env` file in the root of the project and add your LLM provider API keys:
162
+ ```
163
+ # .env
164
+ OPENAI_API_KEY="sk-..."
165
+ KIMI_API_KEY="your-kimi-api-key"
166
+ # etc.
167
+ ```
168
+
169
+ ### Running the Examples
170
+
171
+ The best way to experience Autobyteus is to run one of the included examples. The event-driven software engineering team is a great showcase of the framework's capabilities.
172
+
173
+ ```bash
174
+ # Run the event-driven software engineering team example
175
+ python autobyteus/examples/agent_team/event_driven/run_software_engineering_team.py --llm-model gpt-4o
176
+
177
+ # Run the hierarchical debate team example
178
+ python autobyteus/examples/agent_team/manual_notification/run_debate_team.py --llm-model gpt-4-turbo
179
+ ```
180
+ You can see all available models and their identifiers by running an example with the `--help-models` flag.
181
+
182
+ ### Building the Library
183
+
184
+ To build Autobyteus as a distributable package, follow these steps:
185
+
186
+ 1. Ensure you have the latest version of `setuptools` and `wheel` installed:
187
+ ```
188
+ pip install --upgrade setuptools wheel
189
+ ```
190
+
191
+ 2. Build the distribution packages:
192
+ ```
193
+ python setup.py sdist bdist_wheel
194
+ ```
195
+
196
+ This will create a `dist` directory containing the built `sdist` and `wheel` distributions.
197
+
198
+ ## Contributing
199
+
200
+ (Add guidelines for contributing to the project)
201
+
202
+ ## License
203
+
204
+ This project is licensed under the MIT License.
@@ -0,0 +1,134 @@
1
+ # Autobyteus
2
+
3
+ Autobyteus is an open-source, application-first agentic framework for Python. It is designed to help developers build, test, and deploy complex, stateful, and extensible AI agents by providing a robust architecture and a powerful set of tools.
4
+
5
+ ![Autobyteus TUI Dashboard](docs/images/image_1.png)
6
+
7
+ ## Architecture
8
+
9
+ Autobyteus is built with a modular, event-driven architecture designed for extensibility and clear separation of concerns. The key components are:
10
+
11
+ - **Agent Core**: The heart of the system. Each agent is a stateful, autonomous entity that runs as a background process in its own thread, managed by a dedicated `AgentWorker`. This design makes every agent a truly independent entity capable of handling long-running tasks.
12
+ - **Agent Teams**: The framework provides powerful constructs for building hierarchical multi-agent systems. The `AgentTeam` module allows you to compose teams of individual agents and even nest teams within other teams, enabling sophisticated, real-world organizational structures and delegation patterns.
13
+ - **Context & Configuration**: Agent behavior is defined through a static configuration (`AgentConfig`) and its dynamic state is managed in `AgentRuntimeState`. These are bundled into a comprehensive `AgentContext` that is passed to all components, providing a single source of truth.
14
+ - **Event-Driven System**: Agents operate on an internal `asyncio` event loop. User messages, tool results, and internal signals are handled as events, which are processed by dedicated `EventHandlers`. This decouples logic and makes the system highly extensible.
15
+ - **Pluggable Processors & Hooks**: The framework provides a chain of extension points to inject custom logic at every major step of an agent's reasoning loop. This architecture powers features like flexible tool format parsing. You can customize behavior by implementing:
16
+ - **`InputProcessors`**: To modify or enrich user messages *before* they are sent to the LLM.
17
+ - **`LLMResponseProcessors`**: To parse the LLM's raw output and extract structured actions, such as tool calls.
18
+ - **`ToolExecutionResultProcessors`**: To modify the result from a tool *before* it is sent back to the LLM for the next step of reasoning.
19
+ - **`PhaseHooks`**: To run custom code on specific agent lifecycle transitions (e.g., when an agent becomes `IDLE`).
20
+ - **Context-Aware Tooling**: Tools are first-class citizens that receive the agent's full `AgentContext` during execution. This allows tools to be deeply integrated with the agent's state, configuration, and workspace, enabling more intelligent and powerful actions.
21
+ - **Tool Approval Flow**: The framework has native support for human-in-the-loop workflows. By setting `auto_execute_tools=False` in the agent's configuration, the agent will pause before executing a tool, emit an event requesting permission, and wait for external approval before proceeding.
22
+ - **MCP Integration**: The framework has native support for the Model Context Protocol (MCP). This allows agents to discover and use tools from external, language-agnostic tool servers, making the ecosystem extremely flexible and ready for enterprise integration.
23
+
24
+ ## Key Features
25
+
26
+ #### 📊 Interactive TUI Dashboard
27
+ Launch and monitor your agent teams with our built-in Textual-based TUI.
28
+ - **Hierarchical View**: See the structure of your team, including sub-teams and their agents.
29
+ - **Real-Time Status**: Agent and team statuses are updated live, showing you who is idle, thinking, or executing a tool.
30
+ - **Detailed Logs**: Select any agent to view a detailed, streaming log of their thoughts, actions, and tool interactions.
31
+ - **Live Task Board**: Watch your team's `TaskBoard` update in real-time as the coordinator publishes a plan and agents complete their tasks.
32
+
33
+ | TUI - Detailed Agent Log | TUI - Task Board with Completed Task |
34
+ | :---: | :---: |
35
+ | ![Autobyteus Agent Log](docs/images/image_4.png) | ![Autobyteus Task Board](docs/images/image_3.png) |
36
+
37
+ #### 🏗️ Fluent Team Building
38
+ Define complex agent and team structures with an intuitive, fluent API. The `AgentTeamBuilder` makes composing your team simple and readable.
39
+
40
+ ```python
41
+ # --- From the Multi-Researcher Team Example ---
42
+ research_team = (
43
+ AgentTeamBuilder(
44
+ name="MultiSpecialistResearchTeam",
45
+ description="A team for delegating to multiple specialists."
46
+ )
47
+ .set_coordinator(coordinator_config)
48
+ .add_agent_node(researcher_web_config)
49
+ .add_agent_node(researcher_db_config)
50
+ .build()
51
+ )
52
+ ```
53
+
54
+ #### 🔁 Flexible Tool Formatting (JSON & XML)
55
+ Autobyteus intelligently handles tool communication with LLMs while giving you full control.
56
+ - **Provider-Aware by Default**: The framework automatically generates tool manifests and parses responses in the optimal format for the selected LLM provider (e.g., JSON for OpenAI/Gemini, XML for Anthropic).
57
+ - **XML Override for Efficiency**: You can set `use_xml_tool_format=True` on an `AgentConfig` or `AgentTeamBuilder` to force the use of XML for tool calls, which can be more efficient and reliable than JSON for complex tool schemas.
58
+
59
+ #### 📈 Flexible Communication Protocols
60
+ Choose the collaboration pattern that best fits your use case with configurable `TaskNotificationMode`s.
61
+ - **`AGENT_MANUAL_NOTIFICATION` (Default)**: A traditional approach where a coordinator agent is responsible for creating a plan and then explicitly notifying other agents to begin their work via messages.
62
+ - **`SYSTEM_EVENT_DRIVEN`**: A more automated approach where the coordinator's only job is to publish a plan to the `TaskBoard`. The framework then monitors the board and automatically notifies agents when their tasks become unblocked, enabling parallel execution and reducing coordinator overhead.
63
+
64
+ ## Requirements
65
+
66
+ - **Python Version**: Python 3.11 is the recommended and tested version for this project. Using newer versions of Python may result in dependency conflicts when installing the required packages. For a stable and tested environment, please use Python 3.11.
67
+
68
+ ## Getting Started
69
+
70
+ ### Installation
71
+
72
+ 1. **Clone the repository:**
73
+ ```bash
74
+ git clone https://github.com/your-username/autobyteus.git
75
+ cd autobyteus
76
+ ```
77
+
78
+ 2. **For users:**
79
+ To install Autobyteus and its core dependencies:
80
+ ```bash
81
+ pip install .
82
+ ```
83
+
84
+ 3. **For developers:**
85
+ To install Autobyteus with all development and example dependencies (including the TUI):
86
+ ```bash
87
+ pip install -r requirements-dev.txt
88
+ ```
89
+
90
+ 4. **Set up Environment Variables:**
91
+ Create a `.env` file in the root of the project and add your LLM provider API keys:
92
+ ```
93
+ # .env
94
+ OPENAI_API_KEY="sk-..."
95
+ KIMI_API_KEY="your-kimi-api-key"
96
+ # etc.
97
+ ```
98
+
99
+ ### Running the Examples
100
+
101
+ The best way to experience Autobyteus is to run one of the included examples. The event-driven software engineering team is a great showcase of the framework's capabilities.
102
+
103
+ ```bash
104
+ # Run the event-driven software engineering team example
105
+ python autobyteus/examples/agent_team/event_driven/run_software_engineering_team.py --llm-model gpt-4o
106
+
107
+ # Run the hierarchical debate team example
108
+ python autobyteus/examples/agent_team/manual_notification/run_debate_team.py --llm-model gpt-4-turbo
109
+ ```
110
+ You can see all available models and their identifiers by running an example with the `--help-models` flag.
111
+
112
+ ### Building the Library
113
+
114
+ To build Autobyteus as a distributable package, follow these steps:
115
+
116
+ 1. Ensure you have the latest version of `setuptools` and `wheel` installed:
117
+ ```
118
+ pip install --upgrade setuptools wheel
119
+ ```
120
+
121
+ 2. Build the distribution packages:
122
+ ```
123
+ python setup.py sdist bdist_wheel
124
+ ```
125
+
126
+ This will create a `dist` directory containing the built `sdist` and `wheel` distributions.
127
+
128
+ ## Contributing
129
+
130
+ (Add guidelines for contributing to the project)
131
+
132
+ ## License
133
+
134
+ This project is licensed under the MIT License.
@@ -16,6 +16,7 @@ from autobyteus.agent.tool_invocation import ToolInvocation
16
16
  if TYPE_CHECKING:
17
17
  from autobyteus.agent.phases import AgentPhaseManager
18
18
  from autobyteus.tools.base_tool import BaseTool
19
+ from autobyteus.agent.tool_invocation import ToolInvocationTurn
19
20
 
20
21
  logger = logging.getLogger(__name__)
21
22
 
@@ -48,6 +49,9 @@ class AgentRuntimeState:
48
49
  self.pending_tool_approvals: Dict[str, ToolInvocation] = {}
49
50
  self.custom_data: Dict[str, Any] = custom_data or {}
50
51
 
52
+ # NEW: State for multi-tool call invocation turns, with a very explicit name.
53
+ self.active_multi_tool_call_turn: Optional['ToolInvocationTurn'] = None
54
+
51
55
  self.processed_system_prompt: Optional[str] = None
52
56
  # self.final_llm_config_for_creation removed
53
57
 
@@ -83,7 +87,9 @@ class AgentRuntimeState:
83
87
  tools_status = f"{len(self.tool_instances)} Initialized" if self.tool_instances is not None else "Not Initialized"
84
88
  input_queues_status = "Initialized" if self.input_event_queues else "Not Initialized"
85
89
  # REMOVED output_queues_status from repr
90
+ active_turn_status = "Active" if self.active_multi_tool_call_turn else "Inactive"
86
91
  return (f"AgentRuntimeState(agent_id='{self.agent_id}', current_phase='{phase_repr}', "
87
92
  f"llm_status='{llm_status}', tools_status='{tools_status}', "
88
93
  f"input_queues_status='{input_queues_status}', "
89
- f"pending_approvals={len(self.pending_tool_approvals)}, history_len={len(self.conversation_history)})")
94
+ f"pending_approvals={len(self.pending_tool_approvals)}, history_len={len(self.conversation_history)}, "
95
+ f"multi_tool_call_turn='{active_turn_status}')")
@@ -0,0 +1,161 @@
1
+ # file: autobyteus/autobyteus/agent/handlers/tool_result_event_handler.py
2
+ import logging
3
+ import json
4
+ from typing import TYPE_CHECKING, Optional, List
5
+
6
+ from autobyteus.agent.handlers.base_event_handler import AgentEventHandler
7
+ from autobyteus.agent.events import ToolResultEvent, LLMUserMessageReadyEvent
8
+ from autobyteus.llm.user_message import LLMUserMessage
9
+ from autobyteus.agent.tool_execution_result_processor import BaseToolExecutionResultProcessor
10
+
11
+ if TYPE_CHECKING:
12
+ from autobyteus.agent.context import AgentContext
13
+ from autobyteus.agent.events.notifiers import AgentExternalEventNotifier
14
+
15
+ logger = logging.getLogger(__name__)
16
+
17
+ class ToolResultEventHandler(AgentEventHandler):
18
+ """
19
+ Handles ToolResultEvents. It processes and notifies for each individual tool
20
+ result as it arrives. If a multi-tool call turn is active, it accumulates
21
+ these results until the turn is complete, re-orders them to match the original
22
+ invocation sequence, and then sends a single aggregated message to the LLM.
23
+ """
24
+ def __init__(self):
25
+ logger.info("ToolResultEventHandler initialized.")
26
+
27
+ async def _dispatch_aggregated_results_to_llm(self,
28
+ processed_events: List[ToolResultEvent],
29
+ context: 'AgentContext'):
30
+ """
31
+ Aggregates a list of PRE-PROCESSED and ORDERED tool results into a single
32
+ message and dispatches it to the LLM.
33
+ """
34
+ agent_id = context.agent_id
35
+
36
+ # --- Aggregate results into a single message ---
37
+ aggregated_content_parts = []
38
+ for p_event in processed_events:
39
+ tool_invocation_id = p_event.tool_invocation_id if p_event.tool_invocation_id else 'N/A'
40
+ content_part: str
41
+ if p_event.error:
42
+ content_part = (
43
+ f"Tool: {p_event.tool_name} (ID: {tool_invocation_id})\n"
44
+ f"Status: Error\n"
45
+ f"Details: {p_event.error}"
46
+ )
47
+ else:
48
+ try:
49
+ result_str = json.dumps(p_event.result, indent=2) if not isinstance(p_event.result, str) else p_event.result
50
+ except TypeError: # pragma: no cover
51
+ result_str = str(p_event.result)
52
+ content_part = (
53
+ f"Tool: {p_event.tool_name} (ID: {tool_invocation_id})\n"
54
+ f"Status: Success\n"
55
+ f"Result:\n{result_str}"
56
+ )
57
+ aggregated_content_parts.append(content_part)
58
+
59
+ final_content_for_llm = (
60
+ "The following tool executions have completed. Please analyze their results and decide the next course of action.\n\n"
61
+ + "\n\n---\n\n".join(aggregated_content_parts)
62
+ )
63
+
64
+ logger.debug(f"Agent '{agent_id}' preparing aggregated message for LLM:\n---\n{final_content_for_llm}\n---")
65
+ llm_user_message = LLMUserMessage(content=final_content_for_llm)
66
+
67
+ next_event = LLMUserMessageReadyEvent(llm_user_message=llm_user_message)
68
+ await context.input_event_queues.enqueue_internal_system_event(next_event)
69
+
70
+ logger.info(f"Agent '{agent_id}' enqueued LLMUserMessageReadyEvent with aggregated results from {len(processed_events)} tool(s).")
71
+
72
+
73
+ async def handle(self,
74
+ event: ToolResultEvent,
75
+ context: 'AgentContext') -> None:
76
+ if not isinstance(event, ToolResultEvent):
77
+ logger.warning(f"ToolResultEventHandler received non-ToolResultEvent: {type(event)}. Skipping.")
78
+ return
79
+
80
+ agent_id = context.agent_id
81
+ notifier: Optional['AgentExternalEventNotifier'] = context.phase_manager.notifier if context.phase_manager else None
82
+
83
+ # --- Step 1: Immediately process the incoming event ---
84
+ processed_event = event
85
+ processor_instances = context.config.tool_execution_result_processors
86
+ if processor_instances:
87
+ for processor_instance in processor_instances:
88
+ if not isinstance(processor_instance, BaseToolExecutionResultProcessor):
89
+ logger.error(f"Agent '{agent_id}': Invalid tool result processor type: {type(processor_instance)}. Skipping.")
90
+ continue
91
+ try:
92
+ processed_event = await processor_instance.process(processed_event, context)
93
+ except Exception as e:
94
+ logger.error(f"Agent '{agent_id}': Error applying tool result processor '{processor_instance.get_name()}': {e}", exc_info=True)
95
+
96
+ # --- Step 2: Immediately notify the result of this single tool call ---
97
+ tool_invocation_id = processed_event.tool_invocation_id if processed_event.tool_invocation_id else 'N/A'
98
+ if notifier:
99
+ log_message = ""
100
+ if processed_event.error:
101
+ log_message = f"[TOOL_RESULT_ERROR_PROCESSED] Agent_ID: {agent_id}, Tool: {processed_event.tool_name}, Invocation_ID: {tool_invocation_id}, Error: {processed_event.error}"
102
+ else:
103
+ log_message = f"[TOOL_RESULT_SUCCESS_PROCESSED] Agent_ID: {agent_id}, Tool: {processed_event.tool_name}, Invocation_ID: {tool_invocation_id}, Result: {str(processed_event.result)}"
104
+
105
+ try:
106
+ log_data = {
107
+ "log_entry": log_message,
108
+ "tool_invocation_id": tool_invocation_id,
109
+ "tool_name": processed_event.tool_name,
110
+ }
111
+ notifier.notify_agent_data_tool_log(log_data)
112
+ logger.debug(f"Agent '{agent_id}': Notified individual tool result for '{processed_event.tool_name}'.")
113
+ except Exception as e_notify:
114
+ logger.error(f"Agent '{agent_id}': Error notifying tool result log: {e_notify}", exc_info=True)
115
+
116
+ # --- Step 3: Manage the multi-tool call turn state ---
117
+ active_turn = context.state.active_multi_tool_call_turn
118
+
119
+ # Case 1: Not a multi-tool call turn, dispatch to LLM immediately.
120
+ if not active_turn:
121
+ logger.info(f"Agent '{agent_id}' handling single ToolResultEvent from tool: '{processed_event.tool_name}'.")
122
+ await self._dispatch_aggregated_results_to_llm([processed_event], context)
123
+ return
124
+
125
+ # Case 2: Multi-tool call turn is active, accumulate results.
126
+ active_turn.results.append(processed_event)
127
+ num_results = len(active_turn.results)
128
+ num_expected = len(active_turn.invocations)
129
+ logger.info(f"Agent '{agent_id}' handling ToolResultEvent for multi-tool call turn. "
130
+ f"Collected {num_results}/{num_expected} results.")
131
+
132
+ # If not all results are in, just wait for the next ToolResultEvent.
133
+ if not active_turn.is_complete():
134
+ return
135
+
136
+ # If all results are in, re-order them and then dispatch to the LLM.
137
+ logger.info(f"Agent '{agent_id}': All tool results for the turn collected. Re-ordering to match invocation sequence.")
138
+
139
+ # --- NEW RE-ORDERING LOGIC ---
140
+ results_by_id = {res.tool_invocation_id: res for res in active_turn.results}
141
+ sorted_results: List[ToolResultEvent] = []
142
+ for original_invocation in active_turn.invocations:
143
+ result = results_by_id.get(original_invocation.id)
144
+ if result:
145
+ sorted_results.append(result)
146
+ else:
147
+ # This should not happen if the logic is correct, but it's a good safeguard.
148
+ logger.error(f"Agent '{agent_id}': Missing result for invocation ID '{original_invocation.id}' during re-ordering.")
149
+ # Add a synthetic error result to maintain sequence length.
150
+ sorted_results.append(ToolResultEvent(
151
+ tool_name=original_invocation.name,
152
+ result=None,
153
+ error=f"Critical Error: Result for this tool call was lost.",
154
+ tool_invocation_id=original_invocation.id
155
+ ))
156
+
157
+ await self._dispatch_aggregated_results_to_llm(sorted_results, context)
158
+
159
+ context.state.active_multi_tool_call_turn = None
160
+ logger.info(f"Agent '{agent_id}': Multi-tool call turn state has been cleared.")
161
+
@@ -4,7 +4,7 @@ from typing import TYPE_CHECKING, List
4
4
 
5
5
  from .base_processor import BaseLLMResponseProcessor
6
6
  from autobyteus.agent.events import PendingToolInvocationEvent
7
- from autobyteus.agent.tool_invocation import ToolInvocation
7
+ from autobyteus.agent.tool_invocation import ToolInvocation, ToolInvocationTurn
8
8
  from autobyteus.tools.usage.parsers import ProviderAwareToolUsageParser
9
9
  from autobyteus.tools.usage.parsers.exceptions import ToolUsageParseException
10
10
 
@@ -72,6 +72,12 @@ class ProviderAwareToolUsageProcessor(BaseLLMResponseProcessor):
72
72
  processed_invocations.append(invocation)
73
73
 
74
74
  # --- END NEW LOGIC ---
75
+
76
+ # --- NEW: Initialize the multi-tool turn state ---
77
+ if len(processed_invocations) > 0:
78
+ logger.info(f"Agent '{context.agent_id}': Initializing multi-tool call turn with {len(processed_invocations)} invocations.")
79
+ context.state.active_multi_tool_call_turn = ToolInvocationTurn(invocations=processed_invocations)
80
+ # --- END NEW ---
75
81
 
76
82
  logger.info(f"Agent '{context.agent_id}': Parsed {len(processed_invocations)} tool invocations. Enqueuing events with unique IDs.")
77
83
  for invocation in processed_invocations:
@@ -2,7 +2,14 @@
2
2
  import uuid
3
3
  import hashlib
4
4
  import json
5
- from typing import Optional, Dict, Any
5
+ import logging
6
+ from typing import Optional, Dict, Any, List, TYPE_CHECKING
7
+ from dataclasses import dataclass, field
8
+
9
+ if TYPE_CHECKING:
10
+ from autobyteus.agent.events import ToolResultEvent
11
+
12
+ logger = logging.getLogger(__name__)
6
13
 
7
14
  class ToolInvocation:
8
15
  def __init__(self, name: Optional[str] = None, arguments: Optional[Dict[str, Any]] = None, id: Optional[str] = None):
@@ -39,6 +46,9 @@ class ToolInvocation:
39
46
  # Create a string to hash
40
47
  hash_string = f"{name}:{canonical_args}"
41
48
 
49
+ # --- ADDED LOGGING ---
50
+ logger.debug(f"Generating tool invocation ID from hash_string: '{hash_string}'")
51
+
42
52
  # Use SHA256 for a robust hash
43
53
  sha256_hash = hashlib.sha256(hash_string.encode('utf-8')).hexdigest()
44
54
 
@@ -55,3 +65,17 @@ class ToolInvocation:
55
65
  def __repr__(self) -> str:
56
66
  return (f"ToolInvocation(id='{self.id}', name='{self.name}', "
57
67
  f"arguments={self.arguments})")
68
+
69
+
70
+ @dataclass
71
+ class ToolInvocationTurn:
72
+ """
73
+ A data class to encapsulate the state of a multi-tool invocation turn.
74
+ Its existence in the agent's state signifies that a multi-tool turn is active.
75
+ """
76
+ invocations: List[ToolInvocation]
77
+ results: List['ToolResultEvent'] = field(default_factory=list)
78
+
79
+ def is_complete(self) -> bool:
80
+ """Checks if all expected tool results have been collected."""
81
+ return len(self.results) >= len(self.invocations)
@@ -45,6 +45,7 @@ class AgentTeamBuilder:
45
45
  self._coordinator_config: Optional[AgentConfig] = None
46
46
  self._added_node_names: Set[str] = set()
47
47
  self._task_notification_mode: TaskNotificationMode = TaskNotificationMode.AGENT_MANUAL_NOTIFICATION
48
+ self._use_xml_tool_format: Optional[bool] = None
48
49
  logger.info(f"AgentTeamBuilder initialized for team: '{self._name}'.")
49
50
 
50
51
  def add_agent_node(self, agent_config: AgentConfig, dependencies: Optional[List[NodeDefinition]] = None) -> 'AgentTeamBuilder':
@@ -142,6 +143,25 @@ class AgentTeamBuilder:
142
143
  logger.debug(f"Task notification mode set to '{mode.value}'.")
143
144
  return self
144
145
 
146
+ def set_use_xml_tool_format(self, use_xml: bool) -> 'AgentTeamBuilder':
147
+ """
148
+ Sets the team-level override for using XML tool format.
149
+
150
+ If set, this will override the setting on all individual agents within the team.
151
+
152
+ Args:
153
+ use_xml: If True, forces the team to use XML format for tool
154
+ definitions and parsing.
155
+
156
+ Returns:
157
+ The builder instance for fluent chaining.
158
+ """
159
+ if not isinstance(use_xml, bool):
160
+ raise TypeError("use_xml must be a boolean.")
161
+ self._use_xml_tool_format = use_xml
162
+ logger.debug(f"Team-level XML tool format override set to '{use_xml}'.")
163
+ return self
164
+
145
165
  def build(self) -> AgentTeam:
146
166
  """
147
167
  Constructs and returns the final AgentTeam instance using the
@@ -175,7 +195,8 @@ class AgentTeamBuilder:
175
195
  role=self._role,
176
196
  nodes=tuple(final_nodes),
177
197
  coordinator_node=coordinator_node_instance,
178
- task_notification_mode=self._task_notification_mode
198
+ task_notification_mode=self._task_notification_mode,
199
+ use_xml_tool_format=self._use_xml_tool_format
179
200
  )
180
201
 
181
202
  logger.info(f"AgentTeamConfig created successfully. Name: '{team_config.name}'. Total nodes: {len(final_nodes)}. Coordinator: '{coordinator_node_instance.name}'.")
@@ -14,7 +14,6 @@ if TYPE_CHECKING:
14
14
  from autobyteus.agent_team.context.team_manager import TeamManager
15
15
  from autobyteus.agent_team.streaming.agent_event_multiplexer import AgentEventMultiplexer
16
16
  from autobyteus.task_management.base_task_board import BaseTaskBoard
17
- from autobyteus.task_management.artifacts.artifact_manifest import ArtifactManifest
18
17
  from autobyteus.agent_team.task_notification.system_event_driven_agent_task_notifier import SystemEventDrivenAgentTaskNotifier
19
18
 
20
19
  logger = logging.getLogger(__name__)
@@ -40,7 +39,6 @@ class AgentTeamRuntimeState:
40
39
 
41
40
  # Dynamic planning and artifact state
42
41
  task_board: Optional['BaseTaskBoard'] = None
43
- artifact_registry: Dict[str, 'ArtifactManifest'] = field(default_factory=dict)
44
42
 
45
43
  def __post_init__(self):
46
44
  if not self.team_id or not isinstance(self.team_id, str):