autobyteus 1.1.3__tar.gz → 1.1.5__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 (506) hide show
  1. {autobyteus-1.1.3 → autobyteus-1.1.5}/PKG-INFO +16 -14
  2. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/agent/agent.py +1 -1
  3. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/agent/bootstrap_steps/system_prompt_processing_step.py +4 -2
  4. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/agent/context/__init__.py +4 -2
  5. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/agent/context/agent_config.py +35 -8
  6. autobyteus-1.1.5/autobyteus/agent/context/agent_context_registry.py +73 -0
  7. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/agent/events/notifiers.py +4 -0
  8. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/agent/events/worker_event_dispatcher.py +1 -2
  9. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/agent/handlers/inter_agent_message_event_handler.py +8 -3
  10. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/agent/handlers/llm_complete_response_received_event_handler.py +19 -19
  11. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/agent/handlers/llm_user_message_ready_event_handler.py +2 -2
  12. autobyteus-1.1.5/autobyteus/agent/handlers/tool_result_event_handler.py +129 -0
  13. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/agent/handlers/user_input_message_event_handler.py +16 -1
  14. autobyteus-1.1.5/autobyteus/agent/input_processor/__init__.py +12 -0
  15. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/agent/message/context_file_type.py +6 -0
  16. autobyteus-1.1.5/autobyteus/agent/message/send_message_to.py +125 -0
  17. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/agent/phases/discover.py +2 -1
  18. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/agent/runtime/agent_runtime.py +10 -2
  19. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/agent/runtime/agent_worker.py +1 -0
  20. autobyteus-1.1.5/autobyteus/agent/sender_type.py +15 -0
  21. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/agent/streaming/agent_event_stream.py +6 -0
  22. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/agent/streaming/stream_event_payloads.py +12 -0
  23. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/agent/streaming/stream_events.py +3 -0
  24. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/agent/system_prompt_processor/tool_manifest_injector_processor.py +7 -4
  25. autobyteus-1.1.5/autobyteus/agent/tool_execution_result_processor/__init__.py +9 -0
  26. autobyteus-1.1.5/autobyteus/agent/tool_execution_result_processor/base_processor.py +46 -0
  27. autobyteus-1.1.5/autobyteus/agent/tool_execution_result_processor/processor_definition.py +36 -0
  28. autobyteus-1.1.5/autobyteus/agent/tool_execution_result_processor/processor_meta.py +36 -0
  29. autobyteus-1.1.5/autobyteus/agent/tool_execution_result_processor/processor_registry.py +70 -0
  30. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/agent/workspace/base_workspace.py +17 -2
  31. autobyteus-1.1.5/autobyteus/agent_team/__init__.py +1 -0
  32. autobyteus-1.1.5/autobyteus/agent_team/agent_team.py +93 -0
  33. autobyteus-1.1.5/autobyteus/agent_team/agent_team_builder.py +184 -0
  34. autobyteus-1.1.5/autobyteus/agent_team/base_agent_team.py +86 -0
  35. autobyteus-1.1.5/autobyteus/agent_team/bootstrap_steps/__init__.py +24 -0
  36. autobyteus-1.1.5/autobyteus/agent_team/bootstrap_steps/agent_configuration_preparation_step.py +73 -0
  37. autobyteus-1.1.5/autobyteus/agent_team/bootstrap_steps/agent_team_bootstrapper.py +54 -0
  38. autobyteus-1.1.5/autobyteus/agent_team/bootstrap_steps/agent_team_runtime_queue_initialization_step.py +25 -0
  39. autobyteus-1.1.5/autobyteus/agent_team/bootstrap_steps/base_agent_team_bootstrap_step.py +23 -0
  40. autobyteus-1.1.5/autobyteus/agent_team/bootstrap_steps/coordinator_initialization_step.py +41 -0
  41. autobyteus-1.1.5/autobyteus/agent_team/bootstrap_steps/coordinator_prompt_preparation_step.py +85 -0
  42. autobyteus-1.1.5/autobyteus/agent_team/bootstrap_steps/task_notifier_initialization_step.py +51 -0
  43. autobyteus-1.1.5/autobyteus/agent_team/bootstrap_steps/team_context_initialization_step.py +45 -0
  44. autobyteus-1.1.5/autobyteus/agent_team/context/__init__.py +17 -0
  45. autobyteus-1.1.5/autobyteus/agent_team/context/agent_team_config.py +33 -0
  46. autobyteus-1.1.5/autobyteus/agent_team/context/agent_team_context.py +61 -0
  47. autobyteus-1.1.5/autobyteus/agent_team/context/agent_team_runtime_state.py +56 -0
  48. autobyteus-1.1.5/autobyteus/agent_team/context/team_manager.py +147 -0
  49. autobyteus-1.1.5/autobyteus/agent_team/context/team_node_config.py +76 -0
  50. autobyteus-1.1.5/autobyteus/agent_team/events/__init__.py +29 -0
  51. autobyteus-1.1.5/autobyteus/agent_team/events/agent_team_event_dispatcher.py +39 -0
  52. autobyteus-1.1.5/autobyteus/agent_team/events/agent_team_events.py +53 -0
  53. autobyteus-1.1.5/autobyteus/agent_team/events/agent_team_input_event_queue_manager.py +21 -0
  54. autobyteus-1.1.5/autobyteus/agent_team/exceptions.py +8 -0
  55. autobyteus-1.1.5/autobyteus/agent_team/factory/__init__.py +9 -0
  56. autobyteus-1.1.5/autobyteus/agent_team/factory/agent_team_factory.py +99 -0
  57. autobyteus-1.1.5/autobyteus/agent_team/handlers/__init__.py +19 -0
  58. autobyteus-1.1.5/autobyteus/agent_team/handlers/agent_team_event_handler_registry.py +23 -0
  59. autobyteus-1.1.5/autobyteus/agent_team/handlers/base_agent_team_event_handler.py +16 -0
  60. autobyteus-1.1.5/autobyteus/agent_team/handlers/inter_agent_message_request_event_handler.py +61 -0
  61. autobyteus-1.1.5/autobyteus/agent_team/handlers/lifecycle_agent_team_event_handler.py +27 -0
  62. autobyteus-1.1.5/autobyteus/agent_team/handlers/process_user_message_event_handler.py +46 -0
  63. autobyteus-1.1.5/autobyteus/agent_team/handlers/tool_approval_team_event_handler.py +48 -0
  64. autobyteus-1.1.5/autobyteus/agent_team/phases/__init__.py +11 -0
  65. autobyteus-1.1.5/autobyteus/agent_team/phases/agent_team_operational_phase.py +19 -0
  66. autobyteus-1.1.5/autobyteus/agent_team/phases/agent_team_phase_manager.py +48 -0
  67. autobyteus-1.1.5/autobyteus/agent_team/runtime/__init__.py +13 -0
  68. autobyteus-1.1.5/autobyteus/agent_team/runtime/agent_team_runtime.py +82 -0
  69. autobyteus-1.1.5/autobyteus/agent_team/runtime/agent_team_worker.py +117 -0
  70. autobyteus-1.1.5/autobyteus/agent_team/shutdown_steps/__init__.py +17 -0
  71. autobyteus-1.1.5/autobyteus/agent_team/shutdown_steps/agent_team_shutdown_orchestrator.py +35 -0
  72. autobyteus-1.1.5/autobyteus/agent_team/shutdown_steps/agent_team_shutdown_step.py +42 -0
  73. autobyteus-1.1.5/autobyteus/agent_team/shutdown_steps/base_agent_team_shutdown_step.py +16 -0
  74. autobyteus-1.1.5/autobyteus/agent_team/shutdown_steps/bridge_cleanup_step.py +28 -0
  75. autobyteus-1.1.5/autobyteus/agent_team/shutdown_steps/sub_team_shutdown_step.py +41 -0
  76. autobyteus-1.1.5/autobyteus/agent_team/streaming/__init__.py +26 -0
  77. autobyteus-1.1.5/autobyteus/agent_team/streaming/agent_event_bridge.py +48 -0
  78. autobyteus-1.1.5/autobyteus/agent_team/streaming/agent_event_multiplexer.py +70 -0
  79. autobyteus-1.1.5/autobyteus/agent_team/streaming/agent_team_event_notifier.py +64 -0
  80. autobyteus-1.1.5/autobyteus/agent_team/streaming/agent_team_event_stream.py +33 -0
  81. autobyteus-1.1.5/autobyteus/agent_team/streaming/agent_team_stream_event_payloads.py +32 -0
  82. autobyteus-1.1.5/autobyteus/agent_team/streaming/agent_team_stream_events.py +56 -0
  83. autobyteus-1.1.5/autobyteus/agent_team/streaming/team_event_bridge.py +50 -0
  84. autobyteus-1.1.5/autobyteus/agent_team/task_notification/__init__.py +11 -0
  85. autobyteus-1.1.5/autobyteus/agent_team/task_notification/system_event_driven_agent_task_notifier.py +164 -0
  86. autobyteus-1.1.5/autobyteus/agent_team/task_notification/task_notification_mode.py +24 -0
  87. autobyteus-1.1.5/autobyteus/agent_team/utils/__init__.py +9 -0
  88. autobyteus-1.1.5/autobyteus/agent_team/utils/wait_for_idle.py +46 -0
  89. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/cli/__init__.py +1 -1
  90. autobyteus-1.1.5/autobyteus/cli/agent_team_tui/__init__.py +4 -0
  91. autobyteus-1.1.5/autobyteus/cli/agent_team_tui/app.py +210 -0
  92. autobyteus-1.1.5/autobyteus/cli/agent_team_tui/state.py +180 -0
  93. autobyteus-1.1.5/autobyteus/cli/agent_team_tui/widgets/__init__.py +6 -0
  94. autobyteus-1.1.5/autobyteus/cli/agent_team_tui/widgets/agent_list_sidebar.py +149 -0
  95. autobyteus-1.1.5/autobyteus/cli/agent_team_tui/widgets/focus_pane.py +320 -0
  96. autobyteus-1.1.5/autobyteus/cli/agent_team_tui/widgets/logo.py +20 -0
  97. autobyteus-1.1.5/autobyteus/cli/agent_team_tui/widgets/renderables.py +77 -0
  98. autobyteus-1.1.5/autobyteus/cli/agent_team_tui/widgets/shared.py +60 -0
  99. autobyteus-1.1.5/autobyteus/cli/agent_team_tui/widgets/status_bar.py +14 -0
  100. autobyteus-1.1.5/autobyteus/cli/agent_team_tui/widgets/task_board_panel.py +82 -0
  101. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/cli/cli_display.py +1 -1
  102. autobyteus-1.1.5/autobyteus/cli/workflow_tui/__init__.py +4 -0
  103. autobyteus-1.1.5/autobyteus/cli/workflow_tui/app.py +210 -0
  104. autobyteus-1.1.5/autobyteus/cli/workflow_tui/state.py +189 -0
  105. autobyteus-1.1.5/autobyteus/cli/workflow_tui/widgets/__init__.py +6 -0
  106. autobyteus-1.1.5/autobyteus/cli/workflow_tui/widgets/agent_list_sidebar.py +149 -0
  107. autobyteus-1.1.5/autobyteus/cli/workflow_tui/widgets/focus_pane.py +335 -0
  108. autobyteus-1.1.5/autobyteus/cli/workflow_tui/widgets/logo.py +27 -0
  109. autobyteus-1.1.5/autobyteus/cli/workflow_tui/widgets/renderables.py +70 -0
  110. autobyteus-1.1.5/autobyteus/cli/workflow_tui/widgets/shared.py +51 -0
  111. autobyteus-1.1.5/autobyteus/cli/workflow_tui/widgets/status_bar.py +14 -0
  112. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/events/event_types.py +8 -0
  113. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/llm/api/autobyteus_llm.py +11 -12
  114. autobyteus-1.1.5/autobyteus/llm/api/lmstudio_llm.py +34 -0
  115. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/llm/api/ollama_llm.py +8 -13
  116. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/llm/api/openai_compatible_llm.py +20 -3
  117. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/llm/autobyteus_provider.py +73 -46
  118. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/llm/llm_factory.py +103 -139
  119. autobyteus-1.1.5/autobyteus/llm/lmstudio_provider.py +104 -0
  120. autobyteus-1.1.5/autobyteus/llm/models.py +190 -0
  121. autobyteus-1.1.5/autobyteus/llm/ollama_provider.py +111 -0
  122. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/llm/ollama_provider_resolver.py +1 -0
  123. autobyteus-1.1.5/autobyteus/llm/providers.py +16 -0
  124. autobyteus-1.1.5/autobyteus/llm/runtimes.py +11 -0
  125. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/llm/token_counter/token_counter_factory.py +2 -0
  126. autobyteus-1.1.5/autobyteus/task_management/__init__.py +43 -0
  127. autobyteus-1.1.5/autobyteus/task_management/base_task_board.py +68 -0
  128. autobyteus-1.1.5/autobyteus/task_management/converters/__init__.py +11 -0
  129. autobyteus-1.1.5/autobyteus/task_management/converters/task_board_converter.py +64 -0
  130. autobyteus-1.1.5/autobyteus/task_management/converters/task_plan_converter.py +48 -0
  131. autobyteus-1.1.5/autobyteus/task_management/deliverable.py +16 -0
  132. autobyteus-1.1.5/autobyteus/task_management/deliverables/__init__.py +8 -0
  133. autobyteus-1.1.5/autobyteus/task_management/deliverables/file_deliverable.py +15 -0
  134. autobyteus-1.1.5/autobyteus/task_management/events.py +27 -0
  135. autobyteus-1.1.5/autobyteus/task_management/in_memory_task_board.py +126 -0
  136. autobyteus-1.1.5/autobyteus/task_management/schemas/__init__.py +15 -0
  137. autobyteus-1.1.5/autobyteus/task_management/schemas/deliverable_schema.py +13 -0
  138. autobyteus-1.1.5/autobyteus/task_management/schemas/plan_definition.py +35 -0
  139. autobyteus-1.1.5/autobyteus/task_management/schemas/task_status_report.py +27 -0
  140. autobyteus-1.1.5/autobyteus/task_management/task_plan.py +110 -0
  141. autobyteus-1.1.5/autobyteus/task_management/tools/__init__.py +14 -0
  142. autobyteus-1.1.5/autobyteus/task_management/tools/get_task_board_status.py +68 -0
  143. autobyteus-1.1.5/autobyteus/task_management/tools/publish_task_plan.py +113 -0
  144. autobyteus-1.1.5/autobyteus/task_management/tools/update_task_status.py +135 -0
  145. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/tools/__init__.py +2 -0
  146. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/tools/ask_user_input.py +2 -1
  147. autobyteus-1.1.5/autobyteus/tools/bash/bash_executor.py +100 -0
  148. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/tools/browser/session_aware/browser_session_aware_navigate_to.py +2 -0
  149. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/tools/browser/session_aware/browser_session_aware_web_element_trigger.py +3 -0
  150. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/tools/browser/session_aware/browser_session_aware_webpage_reader.py +3 -0
  151. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/tools/browser/session_aware/browser_session_aware_webpage_screenshot_taker.py +3 -0
  152. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/tools/browser/standalone/google_search_ui.py +2 -0
  153. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/tools/browser/standalone/navigate_to.py +2 -0
  154. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/tools/browser/standalone/web_page_pdf_generator.py +3 -0
  155. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/tools/browser/standalone/webpage_image_downloader.py +3 -0
  156. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/tools/browser/standalone/webpage_reader.py +2 -0
  157. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/tools/browser/standalone/webpage_screenshot_taker.py +3 -0
  158. autobyteus-1.1.5/autobyteus/tools/file/file_reader.py +56 -0
  159. autobyteus-1.1.5/autobyteus/tools/file/file_writer.py +59 -0
  160. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/tools/functional_tool.py +5 -4
  161. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/tools/image_downloader.py +2 -0
  162. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/tools/mcp/config_service.py +63 -58
  163. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/tools/mcp/server/http_managed_mcp_server.py +14 -2
  164. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/tools/mcp/server/stdio_managed_mcp_server.py +14 -2
  165. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/tools/mcp/server_instance_manager.py +30 -4
  166. autobyteus-1.1.5/autobyteus/tools/mcp/tool_registrar.py +232 -0
  167. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/tools/parameter_schema.py +17 -11
  168. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/tools/pdf_downloader.py +2 -1
  169. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/tools/registry/tool_definition.py +36 -37
  170. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/tools/registry/tool_registry.py +50 -2
  171. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/tools/timer.py +2 -0
  172. autobyteus-1.1.5/autobyteus/tools/tool_category.py +22 -0
  173. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/tools/tool_meta.py +6 -1
  174. autobyteus-1.1.5/autobyteus/tools/tool_origin.py +10 -0
  175. autobyteus-1.1.5/autobyteus/tools/usage/formatters/default_json_example_formatter.py +117 -0
  176. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/tools/usage/formatters/default_xml_example_formatter.py +23 -3
  177. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/tools/usage/formatters/gemini_json_example_formatter.py +6 -0
  178. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/tools/usage/formatters/google_json_example_formatter.py +7 -0
  179. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/tools/usage/formatters/openai_json_example_formatter.py +6 -4
  180. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/tools/usage/parsers/gemini_json_tool_usage_parser.py +23 -7
  181. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/tools/usage/parsers/provider_aware_tool_usage_parser.py +14 -25
  182. autobyteus-1.1.5/autobyteus/tools/usage/providers/__init__.py +12 -0
  183. autobyteus-1.1.5/autobyteus/tools/usage/providers/tool_manifest_provider.py +75 -0
  184. autobyteus-1.1.5/autobyteus/tools/usage/registries/__init__.py +15 -0
  185. autobyteus-1.1.5/autobyteus/tools/usage/registries/tool_formatter_pair.py +15 -0
  186. autobyteus-1.1.5/autobyteus/tools/usage/registries/tool_formatting_registry.py +58 -0
  187. autobyteus-1.1.5/autobyteus/tools/usage/registries/tool_usage_parser_registry.py +55 -0
  188. autobyteus-1.1.5/autobyteus/workflow/agentic_workflow.py +93 -0
  189. {autobyteus-1.1.3/autobyteus/agent → autobyteus-1.1.5/autobyteus}/workflow/base_agentic_workflow.py +19 -27
  190. autobyteus-1.1.5/autobyteus/workflow/bootstrap_steps/__init__.py +20 -0
  191. autobyteus-1.1.5/autobyteus/workflow/bootstrap_steps/agent_tool_injection_step.py +34 -0
  192. autobyteus-1.1.5/autobyteus/workflow/bootstrap_steps/base_workflow_bootstrap_step.py +23 -0
  193. autobyteus-1.1.5/autobyteus/workflow/bootstrap_steps/coordinator_initialization_step.py +41 -0
  194. autobyteus-1.1.5/autobyteus/workflow/bootstrap_steps/coordinator_prompt_preparation_step.py +108 -0
  195. autobyteus-1.1.5/autobyteus/workflow/bootstrap_steps/workflow_bootstrapper.py +50 -0
  196. autobyteus-1.1.5/autobyteus/workflow/bootstrap_steps/workflow_runtime_queue_initialization_step.py +25 -0
  197. autobyteus-1.1.5/autobyteus/workflow/context/__init__.py +17 -0
  198. autobyteus-1.1.5/autobyteus/workflow/context/team_manager.py +147 -0
  199. autobyteus-1.1.5/autobyteus/workflow/context/workflow_config.py +30 -0
  200. autobyteus-1.1.5/autobyteus/workflow/context/workflow_context.py +61 -0
  201. autobyteus-1.1.5/autobyteus/workflow/context/workflow_node_config.py +76 -0
  202. autobyteus-1.1.5/autobyteus/workflow/context/workflow_runtime_state.py +53 -0
  203. autobyteus-1.1.5/autobyteus/workflow/events/__init__.py +29 -0
  204. autobyteus-1.1.5/autobyteus/workflow/events/workflow_event_dispatcher.py +39 -0
  205. autobyteus-1.1.5/autobyteus/workflow/events/workflow_events.py +53 -0
  206. autobyteus-1.1.5/autobyteus/workflow/events/workflow_input_event_queue_manager.py +21 -0
  207. autobyteus-1.1.5/autobyteus/workflow/exceptions.py +8 -0
  208. autobyteus-1.1.5/autobyteus/workflow/factory/__init__.py +9 -0
  209. autobyteus-1.1.5/autobyteus/workflow/factory/workflow_factory.py +99 -0
  210. autobyteus-1.1.5/autobyteus/workflow/handlers/__init__.py +19 -0
  211. autobyteus-1.1.5/autobyteus/workflow/handlers/base_workflow_event_handler.py +16 -0
  212. autobyteus-1.1.5/autobyteus/workflow/handlers/inter_agent_message_request_event_handler.py +61 -0
  213. autobyteus-1.1.5/autobyteus/workflow/handlers/lifecycle_workflow_event_handler.py +27 -0
  214. autobyteus-1.1.5/autobyteus/workflow/handlers/process_user_message_event_handler.py +46 -0
  215. autobyteus-1.1.5/autobyteus/workflow/handlers/tool_approval_workflow_event_handler.py +39 -0
  216. autobyteus-1.1.5/autobyteus/workflow/handlers/workflow_event_handler_registry.py +23 -0
  217. autobyteus-1.1.5/autobyteus/workflow/phases/__init__.py +11 -0
  218. autobyteus-1.1.5/autobyteus/workflow/phases/workflow_operational_phase.py +19 -0
  219. autobyteus-1.1.5/autobyteus/workflow/phases/workflow_phase_manager.py +48 -0
  220. autobyteus-1.1.5/autobyteus/workflow/runtime/__init__.py +13 -0
  221. autobyteus-1.1.5/autobyteus/workflow/runtime/workflow_runtime.py +82 -0
  222. autobyteus-1.1.5/autobyteus/workflow/runtime/workflow_worker.py +117 -0
  223. autobyteus-1.1.5/autobyteus/workflow/shutdown_steps/__init__.py +17 -0
  224. autobyteus-1.1.5/autobyteus/workflow/shutdown_steps/agent_team_shutdown_step.py +42 -0
  225. autobyteus-1.1.5/autobyteus/workflow/shutdown_steps/base_workflow_shutdown_step.py +16 -0
  226. autobyteus-1.1.5/autobyteus/workflow/shutdown_steps/bridge_cleanup_step.py +28 -0
  227. autobyteus-1.1.5/autobyteus/workflow/shutdown_steps/sub_workflow_shutdown_step.py +41 -0
  228. autobyteus-1.1.5/autobyteus/workflow/shutdown_steps/workflow_shutdown_orchestrator.py +35 -0
  229. autobyteus-1.1.5/autobyteus/workflow/streaming/__init__.py +26 -0
  230. autobyteus-1.1.5/autobyteus/workflow/streaming/agent_event_bridge.py +48 -0
  231. autobyteus-1.1.5/autobyteus/workflow/streaming/agent_event_multiplexer.py +70 -0
  232. autobyteus-1.1.5/autobyteus/workflow/streaming/workflow_event_bridge.py +50 -0
  233. autobyteus-1.1.5/autobyteus/workflow/streaming/workflow_event_notifier.py +83 -0
  234. autobyteus-1.1.5/autobyteus/workflow/streaming/workflow_event_stream.py +33 -0
  235. autobyteus-1.1.5/autobyteus/workflow/streaming/workflow_stream_event_payloads.py +28 -0
  236. autobyteus-1.1.5/autobyteus/workflow/streaming/workflow_stream_events.py +45 -0
  237. autobyteus-1.1.5/autobyteus/workflow/utils/__init__.py +9 -0
  238. autobyteus-1.1.5/autobyteus/workflow/utils/wait_for_idle.py +46 -0
  239. autobyteus-1.1.5/autobyteus/workflow/workflow_builder.py +151 -0
  240. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus.egg-info/PKG-INFO +16 -14
  241. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus.egg-info/SOURCES.txt +174 -31
  242. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus.egg-info/requires.txt +15 -13
  243. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus.egg-info/top_level.txt +1 -0
  244. autobyteus-1.1.5/examples/__init__.py +1 -0
  245. autobyteus-1.1.5/examples/agent_team/__init__.py +1 -0
  246. autobyteus-1.1.5/examples/discover_phase_transitions.py +104 -0
  247. autobyteus-1.1.5/examples/run_browser_agent.py +262 -0
  248. autobyteus-1.1.5/examples/run_google_slides_agent.py +287 -0
  249. autobyteus-1.1.5/examples/run_mcp_browser_client.py +174 -0
  250. autobyteus-1.1.5/examples/run_mcp_google_slides_client.py +270 -0
  251. autobyteus-1.1.5/examples/run_mcp_list_tools.py +189 -0
  252. autobyteus-1.1.5/examples/run_poem_writer.py +284 -0
  253. autobyteus-1.1.5/examples/run_sqlite_agent.py +295 -0
  254. {autobyteus-1.1.3 → autobyteus-1.1.5}/setup.py +16 -14
  255. autobyteus-1.1.3/autobyteus/agent/context/agent_phase_manager.py +0 -264
  256. autobyteus-1.1.3/autobyteus/agent/context/phases.py +0 -49
  257. autobyteus-1.1.3/autobyteus/agent/group/agent_group.py +0 -164
  258. autobyteus-1.1.3/autobyteus/agent/group/agent_group_context.py +0 -81
  259. autobyteus-1.1.3/autobyteus/agent/handlers/tool_result_event_handler.py +0 -101
  260. autobyteus-1.1.3/autobyteus/agent/input_processor/__init__.py +0 -18
  261. autobyteus-1.1.3/autobyteus/agent/input_processor/content_prefixing_input_processor.py +0 -41
  262. autobyteus-1.1.3/autobyteus/agent/input_processor/metadata_appending_input_processor.py +0 -34
  263. autobyteus-1.1.3/autobyteus/agent/input_processor/passthrough_input_processor.py +0 -33
  264. autobyteus-1.1.3/autobyteus/agent/message/send_message_to.py +0 -150
  265. autobyteus-1.1.3/autobyteus/agent/workflow/__init__.py +0 -11
  266. autobyteus-1.1.3/autobyteus/agent/workflow/agentic_workflow.py +0 -89
  267. autobyteus-1.1.3/autobyteus/llm/models.py +0 -160
  268. autobyteus-1.1.3/autobyteus/llm/ollama_provider.py +0 -103
  269. autobyteus-1.1.3/autobyteus/llm/providers.py +0 -15
  270. autobyteus-1.1.3/autobyteus/tools/bash/bash_executor.py +0 -54
  271. autobyteus-1.1.3/autobyteus/tools/file/file_reader.py +0 -29
  272. autobyteus-1.1.3/autobyteus/tools/file/file_writer.py +0 -31
  273. autobyteus-1.1.3/autobyteus/tools/mcp/call_handlers/__init__.py +0 -16
  274. autobyteus-1.1.3/autobyteus/tools/mcp/call_handlers/base_handler.py +0 -40
  275. autobyteus-1.1.3/autobyteus/tools/mcp/call_handlers/stdio_handler.py +0 -76
  276. autobyteus-1.1.3/autobyteus/tools/mcp/call_handlers/streamable_http_handler.py +0 -55
  277. autobyteus-1.1.3/autobyteus/tools/mcp/registrar.py +0 -202
  278. autobyteus-1.1.3/autobyteus/tools/mcp/tool_registrar.py +0 -177
  279. autobyteus-1.1.3/autobyteus/tools/tool_category.py +0 -11
  280. autobyteus-1.1.3/autobyteus/tools/usage/formatters/default_json_example_formatter.py +0 -42
  281. autobyteus-1.1.3/autobyteus/tools/usage/providers/__init__.py +0 -22
  282. autobyteus-1.1.3/autobyteus/tools/usage/providers/json_example_provider.py +0 -32
  283. autobyteus-1.1.3/autobyteus/tools/usage/providers/json_schema_provider.py +0 -35
  284. autobyteus-1.1.3/autobyteus/tools/usage/providers/json_tool_usage_parser_provider.py +0 -28
  285. autobyteus-1.1.3/autobyteus/tools/usage/providers/tool_manifest_provider.py +0 -68
  286. autobyteus-1.1.3/autobyteus/tools/usage/providers/xml_example_provider.py +0 -28
  287. autobyteus-1.1.3/autobyteus/tools/usage/providers/xml_schema_provider.py +0 -29
  288. autobyteus-1.1.3/autobyteus/tools/usage/providers/xml_tool_usage_parser_provider.py +0 -26
  289. autobyteus-1.1.3/autobyteus/tools/usage/registries/__init__.py +0 -20
  290. autobyteus-1.1.3/autobyteus/tools/usage/registries/json_example_formatter_registry.py +0 -51
  291. autobyteus-1.1.3/autobyteus/tools/usage/registries/json_schema_formatter_registry.py +0 -51
  292. autobyteus-1.1.3/autobyteus/tools/usage/registries/json_tool_usage_parser_registry.py +0 -42
  293. autobyteus-1.1.3/autobyteus/tools/usage/registries/xml_example_formatter_registry.py +0 -30
  294. autobyteus-1.1.3/autobyteus/tools/usage/registries/xml_schema_formatter_registry.py +0 -33
  295. autobyteus-1.1.3/autobyteus/tools/usage/registries/xml_tool_usage_parser_registry.py +0 -30
  296. autobyteus-1.1.3/autobyteus/workflow/__init__.py +0 -0
  297. autobyteus-1.1.3/autobyteus/workflow/simple_task.py +0 -98
  298. autobyteus-1.1.3/autobyteus/workflow/task.py +0 -147
  299. autobyteus-1.1.3/autobyteus/workflow/workflow.py +0 -49
  300. {autobyteus-1.1.3 → autobyteus-1.1.5}/LICENSE +0 -0
  301. {autobyteus-1.1.3 → autobyteus-1.1.5}/README.md +0 -0
  302. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/__init__.py +0 -0
  303. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/agent/__init__.py +0 -0
  304. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/agent/bootstrap_steps/__init__.py +0 -0
  305. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/agent/bootstrap_steps/agent_bootstrapper.py +0 -0
  306. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/agent/bootstrap_steps/agent_runtime_queue_initialization_step.py +0 -0
  307. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/agent/bootstrap_steps/base_bootstrap_step.py +0 -0
  308. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/agent/bootstrap_steps/mcp_server_prewarming_step.py +0 -0
  309. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/agent/bootstrap_steps/workspace_context_initialization_step.py +0 -0
  310. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/agent/context/agent_context.py +0 -0
  311. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/agent/context/agent_runtime_state.py +0 -0
  312. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/agent/events/__init__.py +0 -0
  313. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/agent/events/agent_events.py +0 -0
  314. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/agent/events/agent_input_event_queue_manager.py +0 -0
  315. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/agent/exceptions.py +0 -0
  316. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/agent/factory/__init__.py +0 -0
  317. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/agent/factory/agent_factory.py +0 -0
  318. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/agent/handlers/__init__.py +0 -0
  319. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/agent/handlers/approved_tool_invocation_event_handler.py +0 -0
  320. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/agent/handlers/base_event_handler.py +0 -0
  321. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/agent/handlers/event_handler_registry.py +0 -0
  322. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/agent/handlers/generic_event_handler.py +0 -0
  323. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/agent/handlers/lifecycle_event_logger.py +0 -0
  324. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/agent/handlers/tool_execution_approval_event_handler.py +0 -0
  325. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/agent/handlers/tool_invocation_request_event_handler.py +0 -0
  326. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/agent/hooks/__init__.py +0 -0
  327. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/agent/hooks/base_phase_hook.py +0 -0
  328. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/agent/hooks/hook_definition.py +0 -0
  329. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/agent/hooks/hook_meta.py +0 -0
  330. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/agent/hooks/hook_registry.py +0 -0
  331. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/agent/input_processor/base_user_input_processor.py +0 -0
  332. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/agent/input_processor/processor_definition.py +0 -0
  333. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/agent/input_processor/processor_meta.py +0 -0
  334. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/agent/input_processor/processor_registry.py +0 -0
  335. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/agent/llm_response_processor/__init__.py +0 -0
  336. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/agent/llm_response_processor/base_processor.py +0 -0
  337. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/agent/llm_response_processor/processor_definition.py +0 -0
  338. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/agent/llm_response_processor/processor_meta.py +0 -0
  339. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/agent/llm_response_processor/processor_registry.py +0 -0
  340. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/agent/llm_response_processor/provider_aware_tool_usage_processor.py +0 -0
  341. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/agent/message/__init__.py +0 -0
  342. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/agent/message/agent_input_user_message.py +0 -0
  343. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/agent/message/context_file.py +0 -0
  344. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/agent/message/inter_agent_message.py +0 -0
  345. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/agent/message/inter_agent_message_type.py +0 -0
  346. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/agent/phases/__init__.py +0 -0
  347. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/agent/phases/manager.py +0 -0
  348. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/agent/phases/phase_enum.py +0 -0
  349. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/agent/phases/transition_decorator.py +0 -0
  350. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/agent/phases/transition_info.py +0 -0
  351. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/agent/remote_agent.py +0 -0
  352. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/agent/runtime/__init__.py +0 -0
  353. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/agent/runtime/agent_thread_pool_manager.py +0 -0
  354. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/agent/shutdown_steps/__init__.py +0 -0
  355. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/agent/shutdown_steps/agent_shutdown_orchestrator.py +0 -0
  356. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/agent/shutdown_steps/base_shutdown_step.py +0 -0
  357. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/agent/shutdown_steps/llm_instance_cleanup_step.py +0 -0
  358. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/agent/shutdown_steps/mcp_server_cleanup_step.py +0 -0
  359. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/agent/streaming/__init__.py +0 -0
  360. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/agent/streaming/queue_streamer.py +0 -0
  361. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/agent/system_prompt_processor/__init__.py +0 -0
  362. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/agent/system_prompt_processor/base_processor.py +0 -0
  363. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/agent/system_prompt_processor/processor_definition.py +0 -0
  364. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/agent/system_prompt_processor/processor_meta.py +0 -0
  365. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/agent/system_prompt_processor/processor_registry.py +0 -0
  366. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/agent/tool_invocation.py +0 -0
  367. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/agent/utils/__init__.py +0 -0
  368. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/agent/utils/wait_for_idle.py +0 -0
  369. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/agent/workspace/__init__.py +0 -0
  370. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/agent/workspace/workspace_config.py +0 -0
  371. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/agent/workspace/workspace_definition.py +0 -0
  372. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/agent/workspace/workspace_meta.py +0 -0
  373. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/agent/workspace/workspace_registry.py +0 -0
  374. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/check_requirements.py +0 -0
  375. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/cli/agent_cli.py +0 -0
  376. {autobyteus-1.1.3/autobyteus/agent/group → autobyteus-1.1.5/autobyteus/events}/__init__.py +0 -0
  377. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/events/event_emitter.py +0 -0
  378. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/events/event_manager.py +0 -0
  379. {autobyteus-1.1.3/autobyteus/events → autobyteus-1.1.5/autobyteus/llm}/__init__.py +0 -0
  380. {autobyteus-1.1.3/autobyteus/llm → autobyteus-1.1.5/autobyteus/llm/api}/__init__.py +0 -0
  381. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/llm/api/bedrock_llm.py +0 -0
  382. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/llm/api/claude_llm.py +0 -0
  383. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/llm/api/deepseek_llm.py +0 -0
  384. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/llm/api/gemini_llm.py +0 -0
  385. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/llm/api/grok_llm.py +0 -0
  386. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/llm/api/groq_llm.py +0 -0
  387. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/llm/api/kimi_llm.py +0 -0
  388. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/llm/api/mistral_llm.py +0 -0
  389. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/llm/api/nvidia_llm.py +0 -0
  390. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/llm/api/openai_llm.py +0 -0
  391. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/llm/base_llm.py +0 -0
  392. {autobyteus-1.1.3/autobyteus/llm/api → autobyteus-1.1.5/autobyteus/llm/extensions}/__init__.py +0 -0
  393. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/llm/extensions/base_extension.py +0 -0
  394. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/llm/extensions/extension_registry.py +0 -0
  395. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/llm/extensions/token_usage_tracking_extension.py +0 -0
  396. {autobyteus-1.1.3/autobyteus/llm/extensions → autobyteus-1.1.5/autobyteus/llm/token_counter}/__init__.py +0 -0
  397. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/llm/token_counter/base_token_counter.py +0 -0
  398. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/llm/token_counter/claude_token_counter.py +0 -0
  399. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/llm/token_counter/deepseek_token_counter.py +0 -0
  400. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/llm/token_counter/kimi_token_counter.py +0 -0
  401. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/llm/token_counter/mistral_token_counter.py +0 -0
  402. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/llm/token_counter/openai_token_counter.py +0 -0
  403. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/llm/user_message.py +0 -0
  404. {autobyteus-1.1.3/autobyteus/llm/token_counter → autobyteus-1.1.5/autobyteus/llm/utils}/__init__.py +0 -0
  405. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/llm/utils/image_payload_formatter.py +0 -0
  406. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/llm/utils/llm_config.py +0 -0
  407. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/llm/utils/messages.py +0 -0
  408. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/llm/utils/rate_limiter.py +0 -0
  409. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/llm/utils/response_types.py +0 -0
  410. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/llm/utils/token_pricing_config.py +0 -0
  411. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/llm/utils/token_usage.py +0 -0
  412. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/llm/utils/token_usage_tracker.py +0 -0
  413. {autobyteus-1.1.3/autobyteus/llm/utils → autobyteus-1.1.5/autobyteus/person}/__init__.py +0 -0
  414. {autobyteus-1.1.3/autobyteus/person → autobyteus-1.1.5/autobyteus/person/examples}/__init__.py +0 -0
  415. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/person/examples/sample_persons.py +0 -0
  416. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/person/examples/sample_roles.py +0 -0
  417. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/person/person.py +0 -0
  418. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/person/role.py +0 -0
  419. {autobyteus-1.1.3/autobyteus/person/examples → autobyteus-1.1.5/autobyteus/prompt}/__init__.py +0 -0
  420. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/prompt/prompt_builder.py +0 -0
  421. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/prompt/prompt_template.py +0 -0
  422. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/rpc/__init__.py +0 -0
  423. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/rpc/client/__init__.py +0 -0
  424. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/rpc/client/abstract_client_connection.py +0 -0
  425. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/rpc/client/client_connection_manager.py +0 -0
  426. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/rpc/client/sse_client_connection.py +0 -0
  427. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/rpc/client/stdio_client_connection.py +0 -0
  428. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/rpc/config/__init__.py +0 -0
  429. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/rpc/config/agent_server_config.py +0 -0
  430. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/rpc/config/agent_server_registry.py +0 -0
  431. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/rpc/hosting.py +0 -0
  432. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/rpc/protocol.py +0 -0
  433. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/rpc/server/__init__.py +0 -0
  434. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/rpc/server/agent_server_endpoint.py +0 -0
  435. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/rpc/server/base_method_handler.py +0 -0
  436. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/rpc/server/method_handlers.py +0 -0
  437. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/rpc/server/sse_server_handler.py +0 -0
  438. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/rpc/server/stdio_server_handler.py +0 -0
  439. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/rpc/server_main.py +0 -0
  440. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/rpc/transport_type.py +0 -0
  441. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/tools/base_tool.py +0 -0
  442. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/tools/bash/__init__.py +0 -0
  443. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/tools/browser/__init__.py +0 -0
  444. {autobyteus-1.1.3/autobyteus/prompt → autobyteus-1.1.5/autobyteus/tools/browser/session_aware}/__init__.py +0 -0
  445. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/tools/browser/session_aware/browser_session_aware_tool.py +0 -0
  446. {autobyteus-1.1.3/autobyteus/tools/browser/session_aware → autobyteus-1.1.5/autobyteus/tools/browser/session_aware/factory}/__init__.py +0 -0
  447. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/tools/browser/session_aware/factory/browser_session_aware_web_element_trigger_factory.py +0 -0
  448. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/tools/browser/session_aware/factory/browser_session_aware_webpage_reader_factory.py +0 -0
  449. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/tools/browser/session_aware/factory/browser_session_aware_webpage_screenshot_taker_factory.py +0 -0
  450. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/tools/browser/session_aware/shared_browser_session.py +0 -0
  451. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/tools/browser/session_aware/shared_browser_session_manager.py +0 -0
  452. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/tools/browser/session_aware/web_element_action.py +0 -0
  453. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/tools/browser/standalone/__init__.py +0 -0
  454. {autobyteus-1.1.3/autobyteus/tools/browser/session_aware → autobyteus-1.1.5/autobyteus/tools/browser/standalone}/factory/__init__.py +0 -0
  455. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/tools/browser/standalone/factory/google_search_factory.py +0 -0
  456. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/tools/browser/standalone/factory/webpage_reader_factory.py +0 -0
  457. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/tools/browser/standalone/factory/webpage_screenshot_taker_factory.py +0 -0
  458. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/tools/factory/__init__.py +0 -0
  459. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/tools/factory/tool_factory.py +0 -0
  460. {autobyteus-1.1.3/autobyteus/tools/browser/standalone/factory → autobyteus-1.1.5/autobyteus/tools/file}/__init__.py +0 -0
  461. {autobyteus-1.1.3/autobyteus/tools/file → autobyteus-1.1.5/autobyteus/tools/handlers}/__init__.py +0 -0
  462. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/tools/handlers/shell_handler.py +0 -0
  463. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/tools/mcp/__init__.py +0 -0
  464. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/tools/mcp/factory.py +0 -0
  465. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/tools/mcp/schema_mapper.py +0 -0
  466. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/tools/mcp/server/__init__.py +0 -0
  467. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/tools/mcp/server/base_managed_mcp_server.py +0 -0
  468. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/tools/mcp/server/proxy.py +0 -0
  469. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/tools/mcp/tool.py +0 -0
  470. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/tools/mcp/types.py +0 -0
  471. {autobyteus-1.1.3/autobyteus/tools/handlers → autobyteus-1.1.5/autobyteus/tools/operation}/__init__.py +0 -0
  472. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/tools/operation/file_operation.py +0 -0
  473. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/tools/operation/file_rename_operation.py +0 -0
  474. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/tools/operation/operation.py +0 -0
  475. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/tools/operation/shell_operation.py +0 -0
  476. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/tools/registry/__init__.py +0 -0
  477. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/tools/tool_config.py +0 -0
  478. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/tools/tool_state.py +0 -0
  479. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/tools/usage/__init__.py +0 -0
  480. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/tools/usage/formatters/__init__.py +0 -0
  481. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/tools/usage/formatters/anthropic_json_example_formatter.py +0 -0
  482. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/tools/usage/formatters/anthropic_json_schema_formatter.py +0 -0
  483. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/tools/usage/formatters/base_formatter.py +0 -0
  484. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/tools/usage/formatters/default_json_schema_formatter.py +0 -0
  485. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/tools/usage/formatters/default_xml_schema_formatter.py +0 -0
  486. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/tools/usage/formatters/gemini_json_schema_formatter.py +0 -0
  487. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/tools/usage/formatters/google_json_schema_formatter.py +0 -0
  488. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/tools/usage/formatters/openai_json_schema_formatter.py +0 -0
  489. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/tools/usage/parsers/__init__.py +0 -0
  490. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/tools/usage/parsers/_json_extractor.py +0 -0
  491. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/tools/usage/parsers/anthropic_xml_tool_usage_parser.py +0 -0
  492. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/tools/usage/parsers/base_parser.py +0 -0
  493. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/tools/usage/parsers/default_json_tool_usage_parser.py +0 -0
  494. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/tools/usage/parsers/default_xml_tool_usage_parser.py +0 -0
  495. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/tools/usage/parsers/exceptions.py +0 -0
  496. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/tools/usage/parsers/openai_json_tool_usage_parser.py +0 -0
  497. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/tools/utils.py +0 -0
  498. {autobyteus-1.1.3/autobyteus/tools/operation → autobyteus-1.1.5/autobyteus/utils}/__init__.py +0 -0
  499. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/utils/dynamic_enum.py +0 -0
  500. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/utils/file_utils.py +0 -0
  501. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/utils/html_cleaner.py +0 -0
  502. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus/utils/singleton.py +0 -0
  503. {autobyteus-1.1.3/autobyteus/utils → autobyteus-1.1.5/autobyteus/workflow}/__init__.py +0 -0
  504. {autobyteus-1.1.3 → autobyteus-1.1.5}/autobyteus.egg-info/dependency_links.txt +0 -0
  505. {autobyteus-1.1.3 → autobyteus-1.1.5}/pyproject.toml +0 -0
  506. {autobyteus-1.1.3 → autobyteus-1.1.5}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: autobyteus
3
- Version: 1.1.3
3
+ Version: 1.1.5
4
4
  Summary: Multi-Agent framework
5
5
  Home-page: https://github.com/AutoByteus/autobyteus
6
6
  Author: Ryan Zheng
@@ -14,26 +14,28 @@ Classifier: Programming Language :: Python :: 3.10
14
14
  Requires-Python: >=3.8
15
15
  Description-Content-Type: text/markdown
16
16
  License-File: LICENSE
17
+ Requires-Dist: aiohttp
18
+ Requires-Dist: anthropic==0.37.1
19
+ Requires-Dist: autobyteus-llm-client==1.1.2
17
20
  Requires-Dist: beautifulsoup4>=4.12.2
18
- Requires-Dist: openai
19
- Requires-Dist: requests
20
- Requires-Dist: tiktoken==0.7.0
21
- Requires-Dist: google-api-python-client
22
- Requires-Dist: google-generativeai
23
- Requires-Dist: mistralai
24
21
  Requires-Dist: boto3
25
22
  Requires-Dist: botocore
26
- Requires-Dist: anthropic==0.37.1
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
27
  Requires-Dist: Jinja2
28
- Requires-Dist: ollama
28
+ Requires-Dist: mcp[cli]==1.9.1
29
29
  Requires-Dist: mistral_common==1.6.3
30
+ Requires-Dist: mistralai
30
31
  Requires-Dist: mistralai==1.5.2
31
- Requires-Dist: certifi==2025.4.26
32
32
  Requires-Dist: numpy==2.2.5
33
- Requires-Dist: aiohttp
34
- Requires-Dist: autobyteus-llm-client==1.1.1
35
- Requires-Dist: brui-core==1.0.8
36
- Requires-Dist: mcp[cli]==1.9.1
33
+ Requires-Dist: ollama
34
+ Requires-Dist: openai
35
+ Requires-Dist: requests
36
+ Requires-Dist: rich
37
+ Requires-Dist: textual
38
+ Requires-Dist: tiktoken==0.7.0
37
39
  Provides-Extra: dev
38
40
  Requires-Dist: coverage; extra == "dev"
39
41
  Requires-Dist: flake8; extra == "dev"
@@ -4,7 +4,7 @@ import logging
4
4
  from typing import AsyncIterator, Optional, List, Any, Dict, TYPE_CHECKING
5
5
 
6
6
  from autobyteus.agent.runtime.agent_runtime import AgentRuntime
7
- from autobyteus.agent.context.phases import AgentOperationalPhase
7
+ from autobyteus.agent.phases.phase_enum import AgentOperationalPhase
8
8
  from autobyteus.agent.message.agent_input_user_message import AgentInputUserMessage
9
9
  from autobyteus.agent.message.inter_agent_message import InterAgentMessage
10
10
  from autobyteus.agent.events import UserMessageReceivedEvent, InterAgentMessageReceivedEvent, ToolExecutionApprovalEvent, BaseEvent
@@ -34,8 +34,10 @@ class SystemPromptProcessingStep(BaseBootstrapStep):
34
34
  if not llm_instance:
35
35
  raise ValueError("LLM instance not found in agent state. It must be provided in AgentConfig.")
36
36
 
37
- current_system_prompt = context.config.system_prompt
38
- logger.debug(f"Agent '{agent_id}': Retrieved base system prompt from agent config.")
37
+ # If a specific system_prompt is not provided in AgentConfig, fall back
38
+ # to the default system_message from the LLM's own configuration.
39
+ current_system_prompt = context.config.system_prompt or llm_instance.config.system_message
40
+ logger.debug(f"Agent '{agent_id}': Retrieved base system prompt.")
39
41
 
40
42
  processor_instances = context.config.system_prompt_processors
41
43
  tool_instances_for_processor = context.tool_instances
@@ -4,10 +4,12 @@ Components related to the agent's runtime context, state, config, and status man
4
4
  """
5
5
  from .agent_config import AgentConfig
6
6
  from .agent_runtime_state import AgentRuntimeState
7
- from .agent_context import AgentContext
7
+ from .agent_context import AgentContext
8
+ from .agent_context_registry import AgentContextRegistry
8
9
 
9
10
  __all__ = [
10
11
  "AgentContext",
11
12
  "AgentConfig",
12
- "AgentRuntimeState",
13
+ "AgentRuntimeState",
14
+ "AgentContextRegistry",
13
15
  ]
@@ -1,5 +1,6 @@
1
1
  # file: autobyteus/autobyteus/agent/context/agent_config.py
2
2
  import logging
3
+ import copy
3
4
  from typing import List, Optional, Union, Tuple, TYPE_CHECKING, Dict, Any
4
5
 
5
6
  # Correctly import the new master processor and the base class
@@ -10,6 +11,7 @@ from autobyteus.agent.llm_response_processor import ProviderAwareToolUsageProces
10
11
  if TYPE_CHECKING:
11
12
  from autobyteus.tools.base_tool import BaseTool
12
13
  from autobyteus.agent.input_processor import BaseAgentUserInputMessageProcessor
14
+ from autobyteus.agent.tool_execution_result_processor import BaseToolExecutionResultProcessor
13
15
  from autobyteus.llm.base_llm import BaseLLM
14
16
  from autobyteus.agent.workspace.base_workspace import BaseAgentWorkspace
15
17
  from autobyteus.agent.hooks.base_phase_hook import BasePhaseHook
@@ -32,13 +34,13 @@ class AgentConfig:
32
34
  role: str,
33
35
  description: str,
34
36
  llm_instance: 'BaseLLM',
35
- system_prompt: str,
36
- tools: List['BaseTool'],
37
+ system_prompt: Optional[str] = None,
38
+ tools: Optional[List['BaseTool']] = None,
37
39
  auto_execute_tools: bool = True,
38
- use_xml_tool_format: bool = True,
39
40
  input_processors: Optional[List['BaseAgentUserInputMessageProcessor']] = None,
40
41
  llm_response_processors: Optional[List['BaseLLMResponseProcessor']] = None,
41
42
  system_prompt_processors: Optional[List['BaseSystemPromptProcessor']] = None,
43
+ tool_execution_result_processors: Optional[List['BaseToolExecutionResultProcessor']] = None,
42
44
  workspace: Optional['BaseAgentWorkspace'] = None,
43
45
  phase_hooks: Optional[List['BasePhaseHook']] = None,
44
46
  initial_custom_data: Optional[Dict[str, Any]] = None):
@@ -51,13 +53,14 @@ class AgentConfig:
51
53
  description: A description of the agent.
52
54
  llm_instance: A pre-initialized LLM instance (subclass of BaseLLM).
53
55
  The user is responsible for creating and configuring this instance.
54
- system_prompt: The base system prompt.
55
- tools: A list of pre-initialized tool instances (subclasses of BaseTool).
56
+ system_prompt: The base system prompt. If None, the system_message from the
57
+ llm_instance's config will be used as the base.
58
+ tools: An optional list of pre-initialized tool instances (subclasses of BaseTool).
56
59
  auto_execute_tools: If True, the agent will execute tools without approval.
57
- use_xml_tool_format: Whether to use XML for tool descriptions and examples.
58
60
  input_processors: A list of input processor instances.
59
61
  llm_response_processors: A list of LLM response processor instances.
60
62
  system_prompt_processors: A list of system prompt processor instances.
63
+ tool_execution_result_processors: A list of tool execution result processor instances.
61
64
  workspace: An optional pre-initialized workspace instance for the agent.
62
65
  phase_hooks: An optional list of phase transition hook instances.
63
66
  initial_custom_data: An optional dictionary of data to pre-populate
@@ -68,17 +71,41 @@ class AgentConfig:
68
71
  self.description = description
69
72
  self.llm_instance = llm_instance
70
73
  self.system_prompt = system_prompt
71
- self.tools = tools
74
+ self.tools = tools or []
72
75
  self.workspace = workspace
73
76
  self.auto_execute_tools = auto_execute_tools
74
- self.use_xml_tool_format = use_xml_tool_format
75
77
  self.input_processors = input_processors or []
76
78
  self.llm_response_processors = llm_response_processors if llm_response_processors is not None else list(self.DEFAULT_LLM_RESPONSE_PROCESSORS)
77
79
  self.system_prompt_processors = system_prompt_processors if system_prompt_processors is not None else list(self.DEFAULT_SYSTEM_PROMPT_PROCESSORS)
80
+ self.tool_execution_result_processors = tool_execution_result_processors or []
78
81
  self.phase_hooks = phase_hooks or []
79
82
  self.initial_custom_data = initial_custom_data
80
83
 
81
84
  logger.debug(f"AgentConfig created for name '{self.name}', role '{self.role}'.")
82
85
 
86
+ def copy(self) -> 'AgentConfig':
87
+ """
88
+ Creates a copy of this AgentConfig. It avoids deep-copying complex objects
89
+ like tools, workspaces, and processors that may contain un-pickleable state.
90
+ Instead, it creates shallow copies of the lists, allowing the lists themselves
91
+ to be modified independently while sharing the object instances within them.
92
+ """
93
+ return AgentConfig(
94
+ name=self.name,
95
+ role=self.role,
96
+ description=self.description,
97
+ llm_instance=self.llm_instance, # Keep reference, do not copy
98
+ system_prompt=self.system_prompt,
99
+ tools=self.tools.copy(), # Shallow copy the list, but reference the original tool instances
100
+ auto_execute_tools=self.auto_execute_tools,
101
+ input_processors=self.input_processors.copy(), # Shallow copy the list
102
+ llm_response_processors=self.llm_response_processors.copy(), # Shallow copy the list
103
+ system_prompt_processors=self.system_prompt_processors.copy(), # Shallow copy the list
104
+ tool_execution_result_processors=self.tool_execution_result_processors.copy(), # Shallow copy the list
105
+ workspace=self.workspace, # Pass by reference, do not copy
106
+ phase_hooks=self.phase_hooks.copy(), # Shallow copy the list
107
+ initial_custom_data=copy.deepcopy(self.initial_custom_data) # Deep copy for simple data
108
+ )
109
+
83
110
  def __repr__(self) -> str:
84
111
  return (f"AgentConfig(name='{self.name}', role='{self.role}', llm_instance='{self.llm_instance.__class__.__name__}', workspace_configured={self.workspace is not None})")
@@ -0,0 +1,73 @@
1
+ # file: autobyteus/autobyteus/agent/context/agent_context_registry.py
2
+ import logging
3
+ from typing import Dict, Optional, TYPE_CHECKING
4
+ import weakref
5
+
6
+ from autobyteus.utils.singleton import SingletonMeta
7
+
8
+ if TYPE_CHECKING:
9
+ from .agent_context import AgentContext
10
+
11
+ logger = logging.getLogger(__name__)
12
+
13
+ class AgentContextRegistry(metaclass=SingletonMeta):
14
+ """
15
+ A singleton registry that holds weak references to active AgentContext objects,
16
+ keyed by their agent_id.
17
+
18
+ This allows other services to look up an agent's context without creating
19
+ tight coupling or preventing garbage collection.
20
+ """
21
+ def __init__(self):
22
+ self._contexts: Dict[str, weakref.ReferenceType['AgentContext']] = {}
23
+ logger.info("AgentContextRegistry (Singleton) initialized.")
24
+
25
+ def register_context(self, context: 'AgentContext'):
26
+ """
27
+ Registers an agent's context. A weak reference is stored to prevent
28
+ circular references and allow for proper garbage collection.
29
+
30
+ Args:
31
+ context: The AgentContext instance to register.
32
+ """
33
+ agent_id = context.agent_id
34
+ if agent_id in self._contexts and self._contexts[agent_id]() is not None:
35
+ logger.warning(f"AgentContext for agent_id '{agent_id}' is already registered. Overwriting.")
36
+
37
+ self._contexts[agent_id] = weakref.ref(context)
38
+ logger.info(f"Registered AgentContext for agent_id '{agent_id}'. Total registered contexts: {len(self._contexts)}")
39
+
40
+ def unregister_context(self, agent_id: str):
41
+ """
42
+ Unregisters an agent's context, typically on agent shutdown.
43
+
44
+ Args:
45
+ agent_id: The ID of the agent whose context should be removed.
46
+ """
47
+ if agent_id in self._contexts:
48
+ del self._contexts[agent_id]
49
+ logger.info(f"Unregistered AgentContext for agent_id '{agent_id}'.")
50
+ else:
51
+ logger.warning(f"Attempted to unregister a non-existent AgentContext for agent_id '{agent_id}'.")
52
+
53
+ def get_context(self, agent_id: str) -> Optional['AgentContext']:
54
+ """
55
+ Retrieves an active agent's context by its ID.
56
+
57
+ Args:
58
+ agent_id: The ID of the agent.
59
+
60
+ Returns:
61
+ The AgentContext instance if found and still alive, otherwise None.
62
+ """
63
+ context_ref = self._contexts.get(agent_id)
64
+ if context_ref:
65
+ context = context_ref()
66
+ if context:
67
+ return context
68
+ else:
69
+ # The weak reference is dead, so we can clean it up.
70
+ logger.debug(f"Cleaning up dead weak reference for agent_id '{agent_id}'.")
71
+ del self._contexts[agent_id]
72
+
73
+ return None
@@ -112,6 +112,10 @@ class AgentExternalEventNotifier(EventEmitter):
112
112
  def notify_agent_tool_invocation_auto_executing(self, auto_exec_data: Dict[str, Any]):
113
113
  """Notifies that a tool is being automatically executed."""
114
114
  self._emit_event(EventType.AGENT_TOOL_INVOCATION_AUTO_EXECUTING, payload_content=auto_exec_data)
115
+
116
+ def notify_agent_data_system_task_notification_received(self, notification_data: Dict[str, Any]):
117
+ """Notifies that the agent has received a system-generated task notification."""
118
+ self._emit_event(EventType.AGENT_DATA_SYSTEM_TASK_NOTIFICATION_RECEIVED, payload_content=notification_data)
115
119
 
116
120
  def notify_agent_error_output_generation(self, error_source: str, error_message: str, error_details: Optional[str] = None):
117
121
  payload_dict = {
@@ -21,8 +21,7 @@ from autobyteus.agent.events.agent_events import ( # Updated relative import pat
21
21
  if TYPE_CHECKING:
22
22
  from autobyteus.agent.context import AgentContext
23
23
  from autobyteus.agent.handlers import EventHandlerRegistry
24
- from autobyteus.agent.context.agent_phase_manager import AgentPhaseManager
25
-
24
+ from autobyteus.agent.phases import AgentPhaseManager
26
25
  logger = logging.getLogger(__name__)
27
26
 
28
27
  class WorkerEventDispatcher:
@@ -6,9 +6,11 @@ from autobyteus.agent.handlers.base_event_handler import AgentEventHandler
6
6
  from autobyteus.agent.events import InterAgentMessageReceivedEvent, LLMUserMessageReadyEvent
7
7
  from autobyteus.agent.message.inter_agent_message import InterAgentMessage
8
8
  from autobyteus.llm.user_message import LLMUserMessage
9
+ from autobyteus.agent.sender_type import TASK_NOTIFIER_SENDER_ID # New import
9
10
 
10
11
  if TYPE_CHECKING:
11
12
  from autobyteus.agent.context import AgentContext
13
+ from autobyteus.agent.events.notifiers import AgentExternalEventNotifier
12
14
 
13
15
  logger = logging.getLogger(__name__)
14
16
 
@@ -43,9 +45,13 @@ class InterAgentMessageReceivedEventHandler(AgentEventHandler):
43
45
  logger.info(
44
46
  f"Agent '{context.agent_id}' handling InterAgentMessageReceivedEvent from sender "
45
47
  f"'{inter_agent_msg.sender_agent_id}', type '{inter_agent_msg.message_type.value}'. "
46
- f"Content: '{inter_agent_msg.content[:100]}...'"
48
+ f"Content: '{inter_agent_msg.content}'"
47
49
  )
48
50
 
51
+ # This handler now only deals with messages from other agents, not the system notifier.
52
+ # The logic for system task notifications has been moved to UserInputMessageEventHandler
53
+ # by checking the message metadata.
54
+
49
55
  content_for_llm = (
50
56
  f"You have received a message from another agent.\n"
51
57
  f"Sender Agent ID: {inter_agent_msg.sender_agent_id}\n"
@@ -54,7 +60,7 @@ class InterAgentMessageReceivedEventHandler(AgentEventHandler):
54
60
  f"--- Message Content ---\n"
55
61
  f"{inter_agent_msg.content}\n"
56
62
  f"--- End of Message Content ---\n"
57
- f"Please process this information and respond or act accordingly."
63
+ f"Please process this information and act accordingly."
58
64
  )
59
65
 
60
66
  context.state.add_message_to_history({
@@ -67,7 +73,6 @@ class InterAgentMessageReceivedEventHandler(AgentEventHandler):
67
73
  llm_user_message = LLMUserMessage(content=content_for_llm)
68
74
 
69
75
  llm_user_message_ready_event = LLMUserMessageReadyEvent(llm_user_message=llm_user_message)
70
- # MODIFIED: Use context.input_event_queues and not context.state.queues
71
76
  await context.input_event_queues.enqueue_internal_system_event(llm_user_message_ready_event)
72
77
 
73
78
  logger.info(
@@ -86,10 +86,8 @@ class LLMCompleteResponseReceivedEventHandler(AgentEventHandler):
86
86
  any_processor_took_action = True
87
87
  logger.info(
88
88
  f"Agent '{agent_id}': LLMResponseProcessor '{processor_name_for_log}' "
89
- f"handled the response. This LLM response "
90
- f"will not be emitted as a complete response by this handler instance."
89
+ f"handled the response."
91
90
  )
92
- break
93
91
  else:
94
92
  logger.debug(f"Agent '{agent_id}': LLMResponseProcessor '{processor_name_for_log}' did not handle the response.")
95
93
 
@@ -102,8 +100,7 @@ class LLMCompleteResponseReceivedEventHandler(AgentEventHandler):
102
100
  error_message="The model's response contained a malformed tool call that could not be understood.",
103
101
  error_details=str(e_parse)
104
102
  )
105
- any_processor_took_action = True # Mark as handled to prevent printing raw response
106
- break
103
+ # A parsing failure should not prevent other processors from running.
107
104
 
108
105
  except Exception as e: # pragma: no cover
109
106
  logger.error(f"Agent '{agent_id}': Error while using LLMResponseProcessor '{processor_name_for_log}': {e}. This processor is skipped.", exc_info=True)
@@ -118,21 +115,24 @@ class LLMCompleteResponseReceivedEventHandler(AgentEventHandler):
118
115
  f"Skipping LLMResponseProcessor attempts."
119
116
  )
120
117
 
121
- if not any_processor_took_action:
122
- if is_error_response:
123
- logger.info(
124
- f"Agent '{agent_id}' emitting a received error message as a complete response: '{complete_response_text[:100]}...'"
118
+ # Always notify that the LLM's response is complete, regardless of processor actions.
119
+ # This serves as a critical signal to the frontend that the stream for this turn has ended.
120
+ if notifier:
121
+ if any_processor_took_action:
122
+ log_message = (
123
+ f"Agent '{agent_id}': One or more LLMResponseProcessors handled the response. "
124
+ f"Now emitting AGENT_DATA_ASSISTANT_COMPLETE_RESPONSE as a completion signal."
125
125
  )
126
126
  else:
127
- logger.info(
127
+ log_message = (
128
128
  f"Agent '{agent_id}': No LLMResponseProcessor handled the response. "
129
- f"Emitting the current LLM response as a complete response for this leg."
129
+ f"Emitting the full LLM response as a final answer and completion signal."
130
130
  )
131
-
132
- if notifier:
133
- try:
134
- # The complete_response object now contains both content and reasoning
135
- notifier.notify_agent_data_assistant_complete_response(complete_response)
136
- logger.debug(f"Agent '{agent_id}' emitted AGENT_DATA_ASSISTANT_COMPLETE_RESPONSE event.")
137
- except Exception as e_notify: # pragma: no cover
138
- logger.error(f"Agent '{agent_id}': Error emitting AGENT_DATA_ASSISTANT_COMPLETE_RESPONSE: {e_notify}", exc_info=True)
131
+ logger.info(log_message)
132
+
133
+ try:
134
+ # The complete_response object now contains both content and reasoning
135
+ notifier.notify_agent_data_assistant_complete_response(complete_response)
136
+ logger.debug(f"Agent '{agent_id}' emitted AGENT_DATA_ASSISTANT_COMPLETE_RESPONSE event successfully.")
137
+ except Exception as e_notify: # pragma: no cover
138
+ logger.error(f"Agent '{agent_id}': Error emitting AGENT_DATA_ASSISTANT_COMPLETE_RESPONSE: {e_notify}", exc_info=True)
@@ -45,7 +45,7 @@ class LLMUserMessageReadyEventHandler(AgentEventHandler):
45
45
  raise RuntimeError(error_msg)
46
46
 
47
47
  llm_user_message: LLMUserMessage = event.llm_user_message
48
- logger.info(f"Agent '{agent_id}' handling LLMUserMessageReadyEvent: '{llm_user_message.content[:100]}...'")
48
+ logger.info(f"Agent '{agent_id}' handling LLMUserMessageReadyEvent: '{llm_user_message.content}'")
49
49
  logger.debug(f"Agent '{agent_id}' preparing to send full message to LLM:\n---\n{llm_user_message.content}\n---")
50
50
 
51
51
  context.state.add_message_to_history({"role": "user", "content": llm_user_message.content})
@@ -137,4 +137,4 @@ class LLMUserMessageReadyEventHandler(AgentEventHandler):
137
137
  complete_response=complete_response_obj
138
138
  )
139
139
  await context.input_event_queues.enqueue_internal_system_event(llm_complete_event)
140
- logger.info(f"Agent '{agent_id}' enqueued LLMCompleteResponseReceivedEvent from LLMUserMessageReadyEventHandler.")
140
+ logger.info(f"Agent '{agent_id}' enqueued LLMCompleteResponseReceivedEvent from LLMUserMessageReadyEventHandler.")
@@ -0,0 +1,129 @@
1
+ # file: autobyteus/autobyteus/agent/handlers/tool_result_event_handler.py
2
+ import logging
3
+ import json
4
+ from typing import TYPE_CHECKING, Optional
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 by formatting the tool's output (or error)
20
+ as a new LLMUserMessage, emitting AGENT_DATA_TOOL_LOG event for this outcome,
21
+ and enqueuing an LLMUserMessageReadyEvent for further LLM processing.
22
+ """
23
+ def __init__(self):
24
+ logger.info("ToolResultEventHandler initialized.")
25
+
26
+ async def handle(self,
27
+ event: ToolResultEvent,
28
+ context: 'AgentContext') -> None:
29
+ if not isinstance(event, ToolResultEvent):
30
+ logger.warning(f"ToolResultEventHandler received non-ToolResultEvent: {type(event)}. Skipping.")
31
+ return
32
+
33
+ agent_id = context.agent_id
34
+ processed_event = event
35
+
36
+ # --- New: Apply Tool Execution Result Processors ---
37
+ processor_instances = context.config.tool_execution_result_processors
38
+ if processor_instances:
39
+ processor_names = [p.get_name() for p in processor_instances]
40
+ logger.debug(f"Agent '{agent_id}': Applying tool execution result processors: {processor_names}")
41
+ for processor_instance in processor_instances:
42
+ processor_name_for_log = "unknown"
43
+ try:
44
+ if not isinstance(processor_instance, BaseToolExecutionResultProcessor):
45
+ logger.error(f"Agent '{agent_id}': Invalid tool result processor type: {type(processor_instance)}. Skipping.")
46
+ continue
47
+
48
+ processor_name_for_log = processor_instance.get_name()
49
+ logger.debug(f"Agent '{agent_id}': Applying tool result processor '{processor_name_for_log}'.")
50
+
51
+ event_before_proc = processed_event
52
+ processed_event = await processor_instance.process(event_before_proc, context)
53
+ logger.info(f"Agent '{agent_id}': Tool result processor '{processor_name_for_log}' applied successfully.")
54
+
55
+ except Exception as e:
56
+ logger.error(f"Agent '{agent_id}': Error applying tool result processor '{processor_name_for_log}': {e}. "
57
+ f"Skipping and continuing with result from before this processor.", exc_info=True)
58
+ processed_event = event_before_proc
59
+ # --- End New ---
60
+
61
+ tool_invocation_id = processed_event.tool_invocation_id if processed_event.tool_invocation_id else 'N/A'
62
+
63
+ logger.info(f"Agent '{agent_id}' handling processed ToolResultEvent from tool: '{processed_event.tool_name}' (Invocation ID: {tool_invocation_id}). Error: {processed_event.error is not None}")
64
+
65
+ notifier: Optional['AgentExternalEventNotifier'] = None
66
+ if context.phase_manager:
67
+ notifier = context.phase_manager.notifier
68
+
69
+ if not notifier: # pragma: no cover
70
+ logger.error(f"Agent '{agent_id}': Notifier not available in ToolResultEventHandler. Tool result processing logs will not be emitted.")
71
+
72
+ if processed_event.error:
73
+ logger.debug(f"Agent '{agent_id}' tool '{processed_event.tool_name}' (ID: {tool_invocation_id}) raw error details: {processed_event.error}")
74
+ else:
75
+ try:
76
+ raw_result_str_for_debug_log = json.dumps(processed_event.result, indent=2)
77
+ except TypeError: # pragma: no cover
78
+ raw_result_str_for_debug_log = str(processed_event.result)
79
+ logger.debug(f"Agent '{agent_id}' tool '{processed_event.tool_name}' (ID: {tool_invocation_id}) raw result:\n---\n{raw_result_str_for_debug_log}\n---")
80
+
81
+
82
+ content_for_llm: str
83
+ if processed_event.error:
84
+ content_for_llm = (
85
+ f"The tool '{processed_event.tool_name}' (invocation ID: {tool_invocation_id}) encountered an error.\n"
86
+ f"Error details: {processed_event.error}\n"
87
+ f"Please analyze this error and decide the next course of action."
88
+ )
89
+ log_msg_error_processed = f"[TOOL_RESULT_ERROR_PROCESSED] Agent_ID: {agent_id}, Tool: {processed_event.tool_name}, Invocation_ID: {tool_invocation_id}, Error: {processed_event.error}"
90
+ if notifier:
91
+ try:
92
+ log_data = {
93
+ "log_entry": log_msg_error_processed,
94
+ "tool_invocation_id": tool_invocation_id,
95
+ "tool_name": processed_event.tool_name,
96
+ }
97
+ notifier.notify_agent_data_tool_log(log_data)
98
+ except Exception as e_notify:
99
+ logger.error(f"Agent '{agent_id}': Error notifying tool result error log: {e_notify}", exc_info=True)
100
+ else:
101
+ try:
102
+ result_str_for_llm = json.dumps(processed_event.result, indent=2) if not isinstance(processed_event.result, str) else processed_event.result
103
+ except TypeError: # pragma: no cover
104
+ result_str_for_llm = str(processed_event.result)
105
+
106
+ content_for_llm = (
107
+ f"The tool '{processed_event.tool_name}' (invocation ID: {tool_invocation_id}) has executed.\n"
108
+ f"Result:\n{result_str_for_llm}\n"
109
+ f"Based on this result, what is the next step or final answer?"
110
+ )
111
+ log_msg_success_processed = f"[TOOL_RESULT_SUCCESS_PROCESSED] Agent_ID: {agent_id}, Tool: {processed_event.tool_name}, Invocation_ID: {tool_invocation_id}, Result: {str(processed_event.result)}"
112
+ if notifier:
113
+ try:
114
+ log_data = {
115
+ "log_entry": log_msg_success_processed,
116
+ "tool_invocation_id": tool_invocation_id,
117
+ "tool_name": processed_event.tool_name,
118
+ }
119
+ notifier.notify_agent_data_tool_log(log_data)
120
+ except Exception as e_notify:
121
+ logger.error(f"Agent '{agent_id}': Error notifying tool result success log: {e_notify}", exc_info=True)
122
+
123
+ logger.debug(f"Agent '{agent_id}' preparing message for LLM based on tool '{processed_event.tool_name}' (ID: {tool_invocation_id}) result:\n---\n{content_for_llm}\n---")
124
+ llm_user_message = LLMUserMessage(content=content_for_llm)
125
+
126
+ next_event = LLMUserMessageReadyEvent(llm_user_message=llm_user_message)
127
+ await context.input_event_queues.enqueue_internal_system_event(next_event)
128
+
129
+ logger.info(f"Agent '{agent_id}' enqueued LLMUserMessageReadyEvent for LLM based on tool '{processed_event.tool_name}' (ID: {tool_invocation_id}) result summary.")
@@ -11,6 +11,7 @@ from autobyteus.llm.user_message import LLMUserMessage
11
11
 
12
12
  if TYPE_CHECKING:
13
13
  from autobyteus.agent.context import AgentContext
14
+ from autobyteus.agent.events.notifiers import AgentExternalEventNotifier
14
15
 
15
16
  logger = logging.getLogger(__name__)
16
17
 
@@ -20,6 +21,7 @@ class UserInputMessageEventHandler(AgentEventHandler):
20
21
  AgentUserInputMessageProcessors (provided as instances) to the AgentInputUserMessage,
21
22
  then converting the processed message into an LLMUserMessage, and finally
22
23
  enqueuing an LLMUserMessageReadyEvent for further processing by the LLM.
24
+ It also checks for metadata to emit special notifications for system-generated tasks.
23
25
  """
24
26
 
25
27
  def __init__(self):
@@ -33,9 +35,22 @@ class UserInputMessageEventHandler(AgentEventHandler):
33
35
  return
34
36
 
35
37
  original_agent_input_user_msg: AgentInputUserMessage = event.agent_input_user_message
38
+
39
+ # --- NEW LOGIC: Check metadata for system-generated tasks and notify TUI ---
40
+ if original_agent_input_user_msg.metadata.get('source') == 'system_task_notifier':
41
+ if context.phase_manager:
42
+ notifier: 'AgentExternalEventNotifier' = context.phase_manager.notifier
43
+ notification_data = {
44
+ "sender_id": "system.task_notifier",
45
+ "content": original_agent_input_user_msg.content,
46
+ }
47
+ notifier.notify_agent_data_system_task_notification_received(notification_data)
48
+ logger.info(f"Agent '{context.agent_id}' emitted system task notification for TUI.")
49
+ # --- END NEW LOGIC ---
50
+
36
51
  processed_agent_input_user_msg: AgentInputUserMessage = original_agent_input_user_msg
37
52
 
38
- logger.info(f"Agent '{context.agent_id}' handling UserMessageReceivedEvent: '{original_agent_input_user_msg.content[:100]}...'")
53
+ logger.info(f"Agent '{context.agent_id}' handling UserMessageReceivedEvent: '{original_agent_input_user_msg.content}'")
39
54
 
40
55
  processor_instances = context.config.input_processors
41
56
  if processor_instances:
@@ -0,0 +1,12 @@
1
+ # file: autobyteus/autobyteus/agent/input_processor/__init__.py
2
+ """
3
+ Components for pre-processing AgentUserMessage objects.
4
+ """
5
+ from .base_user_input_processor import BaseAgentUserInputMessageProcessor
6
+
7
+ # Concrete processors have been removed. Users can define their own.
8
+
9
+
10
+ __all__ = [
11
+ "BaseAgentUserInputMessageProcessor",
12
+ ]
@@ -17,6 +17,8 @@ class ContextFileType(str, Enum):
17
17
  HTML = "html" # .html, .htm
18
18
  PYTHON = "python" # .py
19
19
  JAVASCRIPT = "javascript" # .js
20
+ AUDIO = "audio" # .mp3, .wav, .m4a, .flac, .ogg
21
+ VIDEO = "video" # .mp4, .mov, .avi, .mkv, .webm
20
22
  IMAGE = "image" # .png, .jpg, .jpeg, .gif, .webp (when image is for contextual analysis, not direct LLM vision input)
21
23
  UNKNOWN = "unknown" # Fallback for unrecognized types
22
24
 
@@ -54,6 +56,10 @@ class ContextFileType(str, Enum):
54
56
  return cls.PYTHON
55
57
  elif extension == ".js":
56
58
  return cls.JAVASCRIPT
59
+ elif extension in [".mp3", ".wav", ".m4a", ".flac", ".ogg"]:
60
+ return cls.AUDIO
61
+ elif extension in [".mp4", ".mov", ".avi", ".mkv", ".webm"]:
62
+ return cls.VIDEO
57
63
  elif extension in [".png", ".jpg", ".jpeg", ".gif", ".webp"]:
58
64
  return cls.IMAGE
59
65
  else: