autobyteus 1.2.0__py3-none-any.whl → 1.2.3__py3-none-any.whl

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 (512) hide show
  1. autobyteus/agent/agent.py +15 -5
  2. autobyteus/agent/bootstrap_steps/__init__.py +1 -3
  3. autobyteus/agent/bootstrap_steps/agent_bootstrapper.py +3 -59
  4. autobyteus/agent/bootstrap_steps/base_bootstrap_step.py +1 -4
  5. autobyteus/agent/bootstrap_steps/mcp_server_prewarming_step.py +1 -3
  6. autobyteus/agent/bootstrap_steps/system_prompt_processing_step.py +16 -13
  7. autobyteus/agent/bootstrap_steps/workspace_context_initialization_step.py +2 -4
  8. autobyteus/agent/context/agent_config.py +43 -20
  9. autobyteus/agent/context/agent_context.py +23 -18
  10. autobyteus/agent/context/agent_runtime_state.py +23 -19
  11. autobyteus/agent/events/__init__.py +16 -1
  12. autobyteus/agent/events/agent_events.py +43 -3
  13. autobyteus/agent/events/agent_input_event_queue_manager.py +79 -26
  14. autobyteus/agent/events/event_store.py +57 -0
  15. autobyteus/agent/events/notifiers.py +74 -60
  16. autobyteus/agent/events/worker_event_dispatcher.py +21 -64
  17. autobyteus/agent/factory/agent_factory.py +52 -0
  18. autobyteus/agent/handlers/__init__.py +2 -0
  19. autobyteus/agent/handlers/approved_tool_invocation_event_handler.py +51 -34
  20. autobyteus/agent/handlers/bootstrap_event_handler.py +155 -0
  21. autobyteus/agent/handlers/inter_agent_message_event_handler.py +10 -0
  22. autobyteus/agent/handlers/lifecycle_event_logger.py +19 -11
  23. autobyteus/agent/handlers/llm_complete_response_received_event_handler.py +10 -15
  24. autobyteus/agent/handlers/llm_user_message_ready_event_handler.py +188 -48
  25. autobyteus/agent/handlers/tool_execution_approval_event_handler.py +0 -10
  26. autobyteus/agent/handlers/tool_invocation_request_event_handler.py +53 -48
  27. autobyteus/agent/handlers/tool_result_event_handler.py +7 -8
  28. autobyteus/agent/handlers/user_input_message_event_handler.py +10 -3
  29. autobyteus/agent/input_processor/memory_ingest_input_processor.py +40 -0
  30. autobyteus/agent/lifecycle/__init__.py +12 -0
  31. autobyteus/agent/lifecycle/base_processor.py +109 -0
  32. autobyteus/agent/lifecycle/events.py +35 -0
  33. autobyteus/agent/lifecycle/processor_definition.py +36 -0
  34. autobyteus/agent/lifecycle/processor_registry.py +106 -0
  35. autobyteus/agent/llm_request_assembler.py +98 -0
  36. autobyteus/agent/llm_response_processor/__init__.py +1 -8
  37. autobyteus/agent/message/context_file_type.py +1 -1
  38. autobyteus/agent/message/send_message_to.py +5 -4
  39. autobyteus/agent/runtime/agent_runtime.py +29 -21
  40. autobyteus/agent/runtime/agent_worker.py +98 -19
  41. autobyteus/agent/shutdown_steps/__init__.py +2 -0
  42. autobyteus/agent/shutdown_steps/agent_shutdown_orchestrator.py +2 -0
  43. autobyteus/agent/shutdown_steps/tool_cleanup_step.py +58 -0
  44. autobyteus/agent/status/__init__.py +14 -0
  45. autobyteus/agent/status/manager.py +93 -0
  46. autobyteus/agent/status/status_deriver.py +96 -0
  47. autobyteus/agent/{phases/phase_enum.py → status/status_enum.py} +16 -16
  48. autobyteus/agent/status/status_update_utils.py +73 -0
  49. autobyteus/agent/streaming/__init__.py +52 -5
  50. autobyteus/agent/streaming/adapters/__init__.py +18 -0
  51. autobyteus/agent/streaming/adapters/invocation_adapter.py +184 -0
  52. autobyteus/agent/streaming/adapters/tool_call_parsing.py +163 -0
  53. autobyteus/agent/streaming/adapters/tool_syntax_registry.py +67 -0
  54. autobyteus/agent/streaming/agent_event_stream.py +3 -178
  55. autobyteus/agent/streaming/api_tool_call/__init__.py +16 -0
  56. autobyteus/agent/streaming/api_tool_call/file_content_streamer.py +56 -0
  57. autobyteus/agent/streaming/api_tool_call/json_string_field_extractor.py +175 -0
  58. autobyteus/agent/streaming/api_tool_call_streaming_response_handler.py +4 -0
  59. autobyteus/agent/streaming/events/__init__.py +6 -0
  60. autobyteus/agent/streaming/events/stream_event_payloads.py +284 -0
  61. autobyteus/agent/streaming/events/stream_events.py +141 -0
  62. autobyteus/agent/streaming/handlers/__init__.py +15 -0
  63. autobyteus/agent/streaming/handlers/api_tool_call_streaming_response_handler.py +303 -0
  64. autobyteus/agent/streaming/handlers/parsing_streaming_response_handler.py +107 -0
  65. autobyteus/agent/streaming/handlers/pass_through_streaming_response_handler.py +107 -0
  66. autobyteus/agent/streaming/handlers/streaming_handler_factory.py +177 -0
  67. autobyteus/agent/streaming/handlers/streaming_response_handler.py +58 -0
  68. autobyteus/agent/streaming/parser/__init__.py +61 -0
  69. autobyteus/agent/streaming/parser/event_emitter.py +181 -0
  70. autobyteus/agent/streaming/parser/events.py +4 -0
  71. autobyteus/agent/streaming/parser/invocation_adapter.py +4 -0
  72. autobyteus/agent/streaming/parser/json_parsing_strategies/__init__.py +19 -0
  73. autobyteus/agent/streaming/parser/json_parsing_strategies/base.py +32 -0
  74. autobyteus/agent/streaming/parser/json_parsing_strategies/default.py +34 -0
  75. autobyteus/agent/streaming/parser/json_parsing_strategies/gemini.py +31 -0
  76. autobyteus/agent/streaming/parser/json_parsing_strategies/openai.py +64 -0
  77. autobyteus/agent/streaming/parser/json_parsing_strategies/registry.py +75 -0
  78. autobyteus/agent/streaming/parser/parser_context.py +227 -0
  79. autobyteus/agent/streaming/parser/parser_factory.py +132 -0
  80. autobyteus/agent/streaming/parser/sentinel_format.py +7 -0
  81. autobyteus/agent/streaming/parser/state_factory.py +62 -0
  82. autobyteus/agent/streaming/parser/states/__init__.py +1 -0
  83. autobyteus/agent/streaming/parser/states/base_state.py +60 -0
  84. autobyteus/agent/streaming/parser/states/custom_xml_tag_run_bash_parsing_state.py +38 -0
  85. autobyteus/agent/streaming/parser/states/custom_xml_tag_write_file_parsing_state.py +55 -0
  86. autobyteus/agent/streaming/parser/states/delimited_content_state.py +146 -0
  87. autobyteus/agent/streaming/parser/states/json_initialization_state.py +144 -0
  88. autobyteus/agent/streaming/parser/states/json_tool_parsing_state.py +137 -0
  89. autobyteus/agent/streaming/parser/states/sentinel_content_state.py +30 -0
  90. autobyteus/agent/streaming/parser/states/sentinel_initialization_state.py +117 -0
  91. autobyteus/agent/streaming/parser/states/text_state.py +78 -0
  92. autobyteus/agent/streaming/parser/states/xml_patch_file_tool_parsing_state.py +328 -0
  93. autobyteus/agent/streaming/parser/states/xml_run_bash_tool_parsing_state.py +129 -0
  94. autobyteus/agent/streaming/parser/states/xml_tag_initialization_state.py +151 -0
  95. autobyteus/agent/streaming/parser/states/xml_tool_parsing_state.py +63 -0
  96. autobyteus/agent/streaming/parser/states/xml_write_file_tool_parsing_state.py +343 -0
  97. autobyteus/agent/streaming/parser/strategies/__init__.py +17 -0
  98. autobyteus/agent/streaming/parser/strategies/base.py +24 -0
  99. autobyteus/agent/streaming/parser/strategies/json_tool_strategy.py +26 -0
  100. autobyteus/agent/streaming/parser/strategies/registry.py +28 -0
  101. autobyteus/agent/streaming/parser/strategies/sentinel_strategy.py +23 -0
  102. autobyteus/agent/streaming/parser/strategies/xml_tag_strategy.py +21 -0
  103. autobyteus/agent/streaming/parser/stream_scanner.py +167 -0
  104. autobyteus/agent/streaming/parser/streaming_parser.py +212 -0
  105. autobyteus/agent/streaming/parser/tool_call_parsing.py +4 -0
  106. autobyteus/agent/streaming/parser/tool_constants.py +7 -0
  107. autobyteus/agent/streaming/parser/tool_syntax_registry.py +4 -0
  108. autobyteus/agent/streaming/parser/xml_tool_parsing_state_registry.py +55 -0
  109. autobyteus/agent/streaming/parsing_streaming_response_handler.py +4 -0
  110. autobyteus/agent/streaming/pass_through_streaming_response_handler.py +4 -0
  111. autobyteus/agent/streaming/queue_streamer.py +3 -57
  112. autobyteus/agent/streaming/segments/__init__.py +5 -0
  113. autobyteus/agent/streaming/segments/segment_events.py +81 -0
  114. autobyteus/agent/streaming/stream_event_payloads.py +2 -198
  115. autobyteus/agent/streaming/stream_events.py +3 -128
  116. autobyteus/agent/streaming/streaming_handler_factory.py +4 -0
  117. autobyteus/agent/streaming/streaming_response_handler.py +4 -0
  118. autobyteus/agent/streaming/streams/__init__.py +5 -0
  119. autobyteus/agent/streaming/streams/agent_event_stream.py +197 -0
  120. autobyteus/agent/streaming/utils/__init__.py +5 -0
  121. autobyteus/agent/streaming/utils/queue_streamer.py +59 -0
  122. autobyteus/agent/system_prompt_processor/__init__.py +2 -0
  123. autobyteus/agent/system_prompt_processor/available_skills_processor.py +96 -0
  124. autobyteus/agent/system_prompt_processor/base_processor.py +1 -1
  125. autobyteus/agent/system_prompt_processor/processor_meta.py +15 -2
  126. autobyteus/agent/system_prompt_processor/tool_manifest_injector_processor.py +39 -58
  127. autobyteus/agent/token_budget.py +56 -0
  128. autobyteus/agent/tool_execution_result_processor/memory_ingest_tool_result_processor.py +29 -0
  129. autobyteus/agent/tool_invocation.py +16 -40
  130. autobyteus/agent/tool_invocation_preprocessor/__init__.py +9 -0
  131. autobyteus/agent/tool_invocation_preprocessor/base_preprocessor.py +45 -0
  132. autobyteus/agent/tool_invocation_preprocessor/processor_definition.py +15 -0
  133. autobyteus/agent/tool_invocation_preprocessor/processor_meta.py +33 -0
  134. autobyteus/agent/tool_invocation_preprocessor/processor_registry.py +60 -0
  135. autobyteus/agent/utils/wait_for_idle.py +12 -14
  136. autobyteus/agent/workspace/base_workspace.py +6 -27
  137. autobyteus/agent_team/agent_team.py +3 -3
  138. autobyteus/agent_team/agent_team_builder.py +1 -41
  139. autobyteus/agent_team/bootstrap_steps/__init__.py +0 -4
  140. autobyteus/agent_team/bootstrap_steps/agent_configuration_preparation_step.py +8 -18
  141. autobyteus/agent_team/bootstrap_steps/agent_team_bootstrapper.py +4 -16
  142. autobyteus/agent_team/bootstrap_steps/base_agent_team_bootstrap_step.py +1 -2
  143. autobyteus/agent_team/bootstrap_steps/coordinator_initialization_step.py +1 -2
  144. autobyteus/agent_team/bootstrap_steps/task_notifier_initialization_step.py +5 -6
  145. autobyteus/agent_team/bootstrap_steps/team_context_initialization_step.py +15 -15
  146. autobyteus/agent_team/context/agent_team_config.py +6 -3
  147. autobyteus/agent_team/context/agent_team_context.py +25 -3
  148. autobyteus/agent_team/context/agent_team_runtime_state.py +11 -8
  149. autobyteus/agent_team/events/__init__.py +11 -0
  150. autobyteus/agent_team/events/agent_team_event_dispatcher.py +22 -9
  151. autobyteus/agent_team/events/agent_team_events.py +16 -0
  152. autobyteus/agent_team/events/event_store.py +57 -0
  153. autobyteus/agent_team/factory/agent_team_factory.py +8 -0
  154. autobyteus/agent_team/handlers/inter_agent_message_request_event_handler.py +18 -2
  155. autobyteus/agent_team/handlers/lifecycle_agent_team_event_handler.py +21 -5
  156. autobyteus/agent_team/handlers/process_user_message_event_handler.py +17 -8
  157. autobyteus/agent_team/handlers/tool_approval_team_event_handler.py +19 -4
  158. autobyteus/agent_team/runtime/agent_team_runtime.py +41 -10
  159. autobyteus/agent_team/runtime/agent_team_worker.py +69 -5
  160. autobyteus/agent_team/status/__init__.py +14 -0
  161. autobyteus/agent_team/status/agent_team_status.py +18 -0
  162. autobyteus/agent_team/status/agent_team_status_manager.py +33 -0
  163. autobyteus/agent_team/status/status_deriver.py +62 -0
  164. autobyteus/agent_team/status/status_update_utils.py +42 -0
  165. autobyteus/agent_team/streaming/__init__.py +2 -2
  166. autobyteus/agent_team/streaming/agent_team_event_notifier.py +10 -10
  167. autobyteus/agent_team/streaming/agent_team_stream_event_payloads.py +7 -7
  168. autobyteus/agent_team/streaming/agent_team_stream_events.py +11 -11
  169. autobyteus/agent_team/system_prompt_processor/__init__.py +6 -0
  170. autobyteus/agent_team/system_prompt_processor/team_manifest_injector_processor.py +76 -0
  171. autobyteus/agent_team/task_notification/activation_policy.py +1 -1
  172. autobyteus/agent_team/task_notification/system_event_driven_agent_task_notifier.py +22 -22
  173. autobyteus/agent_team/task_notification/task_notification_mode.py +20 -1
  174. autobyteus/agent_team/utils/wait_for_idle.py +4 -4
  175. autobyteus/cli/agent_cli.py +18 -10
  176. autobyteus/cli/agent_team_tui/app.py +18 -15
  177. autobyteus/cli/agent_team_tui/state.py +21 -23
  178. autobyteus/cli/agent_team_tui/widgets/agent_list_sidebar.py +15 -15
  179. autobyteus/cli/agent_team_tui/widgets/focus_pane.py +146 -39
  180. autobyteus/cli/agent_team_tui/widgets/renderables.py +1 -1
  181. autobyteus/cli/agent_team_tui/widgets/shared.py +26 -26
  182. autobyteus/cli/agent_team_tui/widgets/{task_board_panel.py → task_plan_panel.py} +5 -5
  183. autobyteus/cli/cli_display.py +193 -44
  184. autobyteus/cli/workflow_tui/app.py +9 -10
  185. autobyteus/cli/workflow_tui/state.py +14 -16
  186. autobyteus/cli/workflow_tui/widgets/agent_list_sidebar.py +15 -15
  187. autobyteus/cli/workflow_tui/widgets/focus_pane.py +137 -35
  188. autobyteus/cli/workflow_tui/widgets/renderables.py +1 -1
  189. autobyteus/cli/workflow_tui/widgets/shared.py +25 -25
  190. autobyteus/clients/autobyteus_client.py +94 -1
  191. autobyteus/events/event_types.py +15 -21
  192. autobyteus/llm/api/autobyteus_llm.py +33 -29
  193. autobyteus/llm/api/claude_llm.py +142 -36
  194. autobyteus/llm/api/gemini_llm.py +163 -59
  195. autobyteus/llm/api/grok_llm.py +1 -1
  196. autobyteus/llm/api/minimax_llm.py +26 -0
  197. autobyteus/llm/api/mistral_llm.py +113 -87
  198. autobyteus/llm/api/ollama_llm.py +9 -42
  199. autobyteus/llm/api/openai_compatible_llm.py +127 -91
  200. autobyteus/llm/api/openai_llm.py +3 -3
  201. autobyteus/llm/api/openai_responses_llm.py +324 -0
  202. autobyteus/llm/api/zhipu_llm.py +21 -2
  203. autobyteus/llm/autobyteus_provider.py +70 -60
  204. autobyteus/llm/base_llm.py +85 -81
  205. autobyteus/llm/converters/__init__.py +14 -0
  206. autobyteus/llm/converters/anthropic_tool_call_converter.py +37 -0
  207. autobyteus/llm/converters/gemini_tool_call_converter.py +57 -0
  208. autobyteus/llm/converters/mistral_tool_call_converter.py +37 -0
  209. autobyteus/llm/converters/openai_tool_call_converter.py +38 -0
  210. autobyteus/llm/extensions/base_extension.py +6 -12
  211. autobyteus/llm/extensions/token_usage_tracking_extension.py +45 -18
  212. autobyteus/llm/llm_factory.py +282 -204
  213. autobyteus/llm/lmstudio_provider.py +60 -49
  214. autobyteus/llm/models.py +35 -2
  215. autobyteus/llm/ollama_provider.py +60 -49
  216. autobyteus/llm/ollama_provider_resolver.py +0 -1
  217. autobyteus/llm/prompt_renderers/__init__.py +19 -0
  218. autobyteus/llm/prompt_renderers/anthropic_prompt_renderer.py +104 -0
  219. autobyteus/llm/prompt_renderers/autobyteus_prompt_renderer.py +19 -0
  220. autobyteus/llm/prompt_renderers/base_prompt_renderer.py +10 -0
  221. autobyteus/llm/prompt_renderers/gemini_prompt_renderer.py +63 -0
  222. autobyteus/llm/prompt_renderers/mistral_prompt_renderer.py +87 -0
  223. autobyteus/llm/prompt_renderers/ollama_prompt_renderer.py +51 -0
  224. autobyteus/llm/prompt_renderers/openai_chat_renderer.py +97 -0
  225. autobyteus/llm/prompt_renderers/openai_responses_renderer.py +101 -0
  226. autobyteus/llm/providers.py +1 -3
  227. autobyteus/llm/token_counter/claude_token_counter.py +56 -25
  228. autobyteus/llm/token_counter/mistral_token_counter.py +12 -8
  229. autobyteus/llm/token_counter/openai_token_counter.py +24 -5
  230. autobyteus/llm/token_counter/token_counter_factory.py +12 -5
  231. autobyteus/llm/utils/llm_config.py +6 -12
  232. autobyteus/llm/utils/media_payload_formatter.py +27 -20
  233. autobyteus/llm/utils/messages.py +55 -3
  234. autobyteus/llm/utils/response_types.py +3 -0
  235. autobyteus/llm/utils/tool_call_delta.py +31 -0
  236. autobyteus/memory/__init__.py +32 -0
  237. autobyteus/memory/active_transcript.py +69 -0
  238. autobyteus/memory/compaction/__init__.py +9 -0
  239. autobyteus/memory/compaction/compaction_result.py +8 -0
  240. autobyteus/memory/compaction/compactor.py +89 -0
  241. autobyteus/memory/compaction/summarizer.py +11 -0
  242. autobyteus/memory/compaction_snapshot_builder.py +84 -0
  243. autobyteus/memory/memory_manager.py +183 -0
  244. autobyteus/memory/models/__init__.py +14 -0
  245. autobyteus/memory/models/episodic_item.py +41 -0
  246. autobyteus/memory/models/memory_types.py +7 -0
  247. autobyteus/memory/models/raw_trace_item.py +79 -0
  248. autobyteus/memory/models/semantic_item.py +41 -0
  249. autobyteus/memory/models/tool_interaction.py +20 -0
  250. autobyteus/memory/policies/__init__.py +5 -0
  251. autobyteus/memory/policies/compaction_policy.py +16 -0
  252. autobyteus/memory/retrieval/__init__.py +7 -0
  253. autobyteus/memory/retrieval/memory_bundle.py +11 -0
  254. autobyteus/memory/retrieval/retriever.py +13 -0
  255. autobyteus/memory/store/__init__.py +7 -0
  256. autobyteus/memory/store/base_store.py +14 -0
  257. autobyteus/memory/store/file_store.py +98 -0
  258. autobyteus/memory/tool_interaction_builder.py +46 -0
  259. autobyteus/memory/turn_tracker.py +9 -0
  260. autobyteus/multimedia/audio/api/__init__.py +3 -2
  261. autobyteus/multimedia/audio/api/autobyteus_audio_client.py +19 -5
  262. autobyteus/multimedia/audio/api/gemini_audio_client.py +108 -16
  263. autobyteus/multimedia/audio/api/openai_audio_client.py +112 -0
  264. autobyteus/multimedia/audio/audio_client_factory.py +84 -9
  265. autobyteus/multimedia/audio/audio_model.py +2 -1
  266. autobyteus/multimedia/image/api/autobyteus_image_client.py +19 -5
  267. autobyteus/multimedia/image/api/gemini_image_client.py +38 -17
  268. autobyteus/multimedia/image/api/openai_image_client.py +125 -43
  269. autobyteus/multimedia/image/autobyteus_image_provider.py +2 -1
  270. autobyteus/multimedia/image/image_client_factory.py +47 -15
  271. autobyteus/multimedia/image/image_model.py +5 -2
  272. autobyteus/multimedia/providers.py +3 -2
  273. autobyteus/skills/loader.py +71 -0
  274. autobyteus/skills/model.py +11 -0
  275. autobyteus/skills/registry.py +70 -0
  276. autobyteus/task_management/__init__.py +43 -20
  277. autobyteus/task_management/{base_task_board.py → base_task_plan.py} +16 -13
  278. autobyteus/task_management/converters/__init__.py +2 -2
  279. autobyteus/task_management/converters/{task_board_converter.py → task_plan_converter.py} +13 -13
  280. autobyteus/task_management/events.py +7 -7
  281. autobyteus/task_management/{in_memory_task_board.py → in_memory_task_plan.py} +34 -22
  282. autobyteus/task_management/schemas/__init__.py +3 -0
  283. autobyteus/task_management/schemas/task_status_report.py +2 -2
  284. autobyteus/task_management/schemas/todo_definition.py +15 -0
  285. autobyteus/task_management/todo.py +29 -0
  286. autobyteus/task_management/todo_list.py +75 -0
  287. autobyteus/task_management/tools/__init__.py +24 -8
  288. autobyteus/task_management/tools/task_tools/__init__.py +19 -0
  289. autobyteus/task_management/tools/{assign_task_to.py → task_tools/assign_task_to.py} +18 -18
  290. autobyteus/task_management/tools/{publish_task.py → task_tools/create_task.py} +16 -18
  291. autobyteus/task_management/tools/{publish_tasks.py → task_tools/create_tasks.py} +19 -19
  292. autobyteus/task_management/tools/{get_my_tasks.py → task_tools/get_my_tasks.py} +15 -15
  293. autobyteus/task_management/tools/{get_task_board_status.py → task_tools/get_task_plan_status.py} +16 -16
  294. autobyteus/task_management/tools/{update_task_status.py → task_tools/update_task_status.py} +16 -16
  295. autobyteus/task_management/tools/todo_tools/__init__.py +18 -0
  296. autobyteus/task_management/tools/todo_tools/add_todo.py +78 -0
  297. autobyteus/task_management/tools/todo_tools/create_todo_list.py +79 -0
  298. autobyteus/task_management/tools/todo_tools/get_todo_list.py +55 -0
  299. autobyteus/task_management/tools/todo_tools/update_todo_status.py +85 -0
  300. autobyteus/tools/__init__.py +43 -52
  301. autobyteus/tools/base_tool.py +7 -0
  302. autobyteus/tools/file/__init__.py +9 -0
  303. autobyteus/tools/file/patch_file.py +149 -0
  304. autobyteus/tools/file/{file_reader.py → read_file.py} +38 -7
  305. autobyteus/tools/file/{file_writer.py → write_file.py} +7 -4
  306. autobyteus/tools/functional_tool.py +53 -14
  307. autobyteus/tools/mcp/__init__.py +2 -0
  308. autobyteus/tools/mcp/config_service.py +5 -1
  309. autobyteus/tools/mcp/server/__init__.py +2 -0
  310. autobyteus/tools/mcp/server/http_managed_mcp_server.py +1 -1
  311. autobyteus/tools/mcp/server/websocket_managed_mcp_server.py +141 -0
  312. autobyteus/tools/mcp/server_instance_manager.py +8 -1
  313. autobyteus/tools/mcp/tool.py +3 -3
  314. autobyteus/tools/mcp/tool_registrar.py +5 -2
  315. autobyteus/tools/mcp/types.py +61 -0
  316. autobyteus/tools/multimedia/__init__.py +2 -1
  317. autobyteus/tools/multimedia/audio_tools.py +72 -19
  318. autobyteus/tools/{download_media_tool.py → multimedia/download_media_tool.py} +21 -7
  319. autobyteus/tools/multimedia/image_tools.py +248 -64
  320. autobyteus/tools/multimedia/media_reader_tool.py +1 -1
  321. autobyteus/tools/operation_executor/journal_manager.py +107 -0
  322. autobyteus/tools/operation_executor/operation_event_buffer.py +57 -0
  323. autobyteus/tools/operation_executor/operation_event_producer.py +29 -0
  324. autobyteus/tools/operation_executor/operation_executor.py +58 -0
  325. autobyteus/tools/registry/tool_definition.py +108 -14
  326. autobyteus/tools/registry/tool_registry.py +29 -0
  327. autobyteus/tools/search/__init__.py +17 -0
  328. autobyteus/tools/search/base_strategy.py +35 -0
  329. autobyteus/tools/search/client.py +24 -0
  330. autobyteus/tools/search/factory.py +81 -0
  331. autobyteus/tools/search/google_cse_strategy.py +68 -0
  332. autobyteus/tools/search/providers.py +10 -0
  333. autobyteus/tools/search/serpapi_strategy.py +65 -0
  334. autobyteus/tools/search/serper_strategy.py +87 -0
  335. autobyteus/tools/search_tool.py +83 -0
  336. autobyteus/tools/skill/load_skill.py +50 -0
  337. autobyteus/tools/terminal/__init__.py +45 -0
  338. autobyteus/tools/terminal/ansi_utils.py +32 -0
  339. autobyteus/tools/terminal/background_process_manager.py +233 -0
  340. autobyteus/tools/terminal/output_buffer.py +105 -0
  341. autobyteus/tools/terminal/prompt_detector.py +63 -0
  342. autobyteus/tools/terminal/pty_session.py +241 -0
  343. autobyteus/tools/terminal/session_factory.py +20 -0
  344. autobyteus/tools/terminal/terminal_session_manager.py +226 -0
  345. autobyteus/tools/terminal/tools/__init__.py +13 -0
  346. autobyteus/tools/terminal/tools/get_process_output.py +81 -0
  347. autobyteus/tools/terminal/tools/run_bash.py +109 -0
  348. autobyteus/tools/terminal/tools/start_background_process.py +104 -0
  349. autobyteus/tools/terminal/tools/stop_background_process.py +67 -0
  350. autobyteus/tools/terminal/types.py +54 -0
  351. autobyteus/tools/terminal/wsl_tmux_session.py +221 -0
  352. autobyteus/tools/terminal/wsl_utils.py +156 -0
  353. autobyteus/tools/tool_meta.py +4 -24
  354. autobyteus/tools/transaction_management/backup_handler.py +48 -0
  355. autobyteus/tools/transaction_management/operation_lifecycle_manager.py +62 -0
  356. autobyteus/tools/usage/__init__.py +1 -2
  357. autobyteus/tools/usage/formatters/__init__.py +17 -1
  358. autobyteus/tools/usage/formatters/base_formatter.py +8 -0
  359. autobyteus/tools/usage/formatters/default_xml_schema_formatter.py +2 -2
  360. autobyteus/tools/usage/formatters/mistral_json_schema_formatter.py +18 -0
  361. autobyteus/tools/usage/formatters/patch_file_xml_example_formatter.py +64 -0
  362. autobyteus/tools/usage/formatters/patch_file_xml_schema_formatter.py +31 -0
  363. autobyteus/tools/usage/formatters/run_bash_xml_example_formatter.py +32 -0
  364. autobyteus/tools/usage/formatters/run_bash_xml_schema_formatter.py +36 -0
  365. autobyteus/tools/usage/formatters/write_file_xml_example_formatter.py +53 -0
  366. autobyteus/tools/usage/formatters/write_file_xml_schema_formatter.py +31 -0
  367. autobyteus/tools/usage/providers/tool_manifest_provider.py +10 -10
  368. autobyteus/tools/usage/registries/__init__.py +1 -3
  369. autobyteus/tools/usage/registries/tool_formatting_registry.py +115 -8
  370. autobyteus/tools/usage/tool_schema_provider.py +51 -0
  371. autobyteus/tools/web/__init__.py +4 -0
  372. autobyteus/tools/web/read_url_tool.py +80 -0
  373. autobyteus/utils/diff_utils.py +271 -0
  374. autobyteus/utils/download_utils.py +109 -0
  375. autobyteus/utils/file_utils.py +57 -2
  376. autobyteus/utils/gemini_helper.py +56 -0
  377. autobyteus/utils/gemini_model_mapping.py +71 -0
  378. autobyteus/utils/llm_output_formatter.py +75 -0
  379. autobyteus/utils/tool_call_format.py +36 -0
  380. autobyteus/workflow/agentic_workflow.py +3 -3
  381. autobyteus/workflow/bootstrap_steps/agent_tool_injection_step.py +2 -2
  382. autobyteus/workflow/bootstrap_steps/base_workflow_bootstrap_step.py +2 -2
  383. autobyteus/workflow/bootstrap_steps/coordinator_initialization_step.py +2 -2
  384. autobyteus/workflow/bootstrap_steps/coordinator_prompt_preparation_step.py +4 -11
  385. autobyteus/workflow/bootstrap_steps/workflow_bootstrapper.py +6 -6
  386. autobyteus/workflow/bootstrap_steps/workflow_runtime_queue_initialization_step.py +2 -2
  387. autobyteus/workflow/context/workflow_context.py +3 -3
  388. autobyteus/workflow/context/workflow_runtime_state.py +5 -5
  389. autobyteus/workflow/events/workflow_event_dispatcher.py +5 -5
  390. autobyteus/workflow/handlers/lifecycle_workflow_event_handler.py +3 -3
  391. autobyteus/workflow/handlers/process_user_message_event_handler.py +5 -5
  392. autobyteus/workflow/handlers/tool_approval_workflow_event_handler.py +2 -2
  393. autobyteus/workflow/runtime/workflow_runtime.py +8 -8
  394. autobyteus/workflow/runtime/workflow_worker.py +3 -3
  395. autobyteus/workflow/status/__init__.py +11 -0
  396. autobyteus/workflow/status/workflow_status.py +19 -0
  397. autobyteus/workflow/status/workflow_status_manager.py +48 -0
  398. autobyteus/workflow/streaming/__init__.py +2 -2
  399. autobyteus/workflow/streaming/workflow_event_notifier.py +7 -7
  400. autobyteus/workflow/streaming/workflow_stream_event_payloads.py +4 -4
  401. autobyteus/workflow/streaming/workflow_stream_events.py +3 -3
  402. autobyteus/workflow/utils/wait_for_idle.py +4 -4
  403. autobyteus-1.2.3.dist-info/METADATA +293 -0
  404. autobyteus-1.2.3.dist-info/RECORD +600 -0
  405. {autobyteus-1.2.0.dist-info → autobyteus-1.2.3.dist-info}/WHEEL +1 -1
  406. {autobyteus-1.2.0.dist-info → autobyteus-1.2.3.dist-info}/top_level.txt +0 -1
  407. autobyteus/agent/bootstrap_steps/agent_runtime_queue_initialization_step.py +0 -57
  408. autobyteus/agent/hooks/__init__.py +0 -16
  409. autobyteus/agent/hooks/base_phase_hook.py +0 -78
  410. autobyteus/agent/hooks/hook_definition.py +0 -36
  411. autobyteus/agent/hooks/hook_meta.py +0 -37
  412. autobyteus/agent/hooks/hook_registry.py +0 -106
  413. autobyteus/agent/llm_response_processor/provider_aware_tool_usage_processor.py +0 -103
  414. autobyteus/agent/phases/__init__.py +0 -18
  415. autobyteus/agent/phases/discover.py +0 -53
  416. autobyteus/agent/phases/manager.py +0 -265
  417. autobyteus/agent/phases/transition_decorator.py +0 -40
  418. autobyteus/agent/phases/transition_info.py +0 -33
  419. autobyteus/agent/remote_agent.py +0 -244
  420. autobyteus/agent/workspace/workspace_definition.py +0 -36
  421. autobyteus/agent/workspace/workspace_meta.py +0 -37
  422. autobyteus/agent/workspace/workspace_registry.py +0 -72
  423. autobyteus/agent_team/bootstrap_steps/agent_team_runtime_queue_initialization_step.py +0 -25
  424. autobyteus/agent_team/bootstrap_steps/coordinator_prompt_preparation_step.py +0 -85
  425. autobyteus/agent_team/phases/__init__.py +0 -11
  426. autobyteus/agent_team/phases/agent_team_operational_phase.py +0 -19
  427. autobyteus/agent_team/phases/agent_team_phase_manager.py +0 -48
  428. autobyteus/llm/api/bedrock_llm.py +0 -92
  429. autobyteus/llm/api/groq_llm.py +0 -94
  430. autobyteus/llm/api/nvidia_llm.py +0 -108
  431. autobyteus/llm/utils/token_pricing_config.py +0 -87
  432. autobyteus/person/examples/sample_persons.py +0 -14
  433. autobyteus/person/examples/sample_roles.py +0 -14
  434. autobyteus/person/person.py +0 -29
  435. autobyteus/person/role.py +0 -14
  436. autobyteus/rpc/__init__.py +0 -73
  437. autobyteus/rpc/client/__init__.py +0 -17
  438. autobyteus/rpc/client/abstract_client_connection.py +0 -124
  439. autobyteus/rpc/client/client_connection_manager.py +0 -153
  440. autobyteus/rpc/client/sse_client_connection.py +0 -306
  441. autobyteus/rpc/client/stdio_client_connection.py +0 -280
  442. autobyteus/rpc/config/__init__.py +0 -13
  443. autobyteus/rpc/config/agent_server_config.py +0 -153
  444. autobyteus/rpc/config/agent_server_registry.py +0 -152
  445. autobyteus/rpc/hosting.py +0 -244
  446. autobyteus/rpc/protocol.py +0 -244
  447. autobyteus/rpc/server/__init__.py +0 -20
  448. autobyteus/rpc/server/agent_server_endpoint.py +0 -181
  449. autobyteus/rpc/server/base_method_handler.py +0 -40
  450. autobyteus/rpc/server/method_handlers.py +0 -259
  451. autobyteus/rpc/server/sse_server_handler.py +0 -182
  452. autobyteus/rpc/server/stdio_server_handler.py +0 -151
  453. autobyteus/rpc/server_main.py +0 -198
  454. autobyteus/rpc/transport_type.py +0 -13
  455. autobyteus/tools/bash/__init__.py +0 -2
  456. autobyteus/tools/bash/bash_executor.py +0 -100
  457. autobyteus/tools/browser/__init__.py +0 -2
  458. autobyteus/tools/browser/session_aware/__init__.py +0 -0
  459. autobyteus/tools/browser/session_aware/browser_session_aware_navigate_to.py +0 -75
  460. autobyteus/tools/browser/session_aware/browser_session_aware_tool.py +0 -30
  461. autobyteus/tools/browser/session_aware/browser_session_aware_web_element_trigger.py +0 -154
  462. autobyteus/tools/browser/session_aware/browser_session_aware_webpage_reader.py +0 -89
  463. autobyteus/tools/browser/session_aware/browser_session_aware_webpage_screenshot_taker.py +0 -107
  464. autobyteus/tools/browser/session_aware/factory/__init__.py +0 -0
  465. autobyteus/tools/browser/session_aware/factory/browser_session_aware_web_element_trigger_factory.py +0 -14
  466. autobyteus/tools/browser/session_aware/factory/browser_session_aware_webpage_reader_factory.py +0 -26
  467. autobyteus/tools/browser/session_aware/factory/browser_session_aware_webpage_screenshot_taker_factory.py +0 -14
  468. autobyteus/tools/browser/session_aware/shared_browser_session.py +0 -11
  469. autobyteus/tools/browser/session_aware/shared_browser_session_manager.py +0 -25
  470. autobyteus/tools/browser/session_aware/web_element_action.py +0 -20
  471. autobyteus/tools/browser/standalone/__init__.py +0 -6
  472. autobyteus/tools/browser/standalone/factory/__init__.py +0 -0
  473. autobyteus/tools/browser/standalone/factory/webpage_reader_factory.py +0 -25
  474. autobyteus/tools/browser/standalone/factory/webpage_screenshot_taker_factory.py +0 -14
  475. autobyteus/tools/browser/standalone/navigate_to.py +0 -80
  476. autobyteus/tools/browser/standalone/web_page_pdf_generator.py +0 -97
  477. autobyteus/tools/browser/standalone/webpage_image_downloader.py +0 -165
  478. autobyteus/tools/browser/standalone/webpage_reader.py +0 -101
  479. autobyteus/tools/browser/standalone/webpage_screenshot_taker.py +0 -101
  480. autobyteus/tools/file/file_editor.py +0 -200
  481. autobyteus/tools/google_search.py +0 -149
  482. autobyteus/tools/timer.py +0 -171
  483. autobyteus/tools/usage/parsers/__init__.py +0 -22
  484. autobyteus/tools/usage/parsers/_json_extractor.py +0 -99
  485. autobyteus/tools/usage/parsers/_string_decoders.py +0 -18
  486. autobyteus/tools/usage/parsers/anthropic_xml_tool_usage_parser.py +0 -10
  487. autobyteus/tools/usage/parsers/base_parser.py +0 -41
  488. autobyteus/tools/usage/parsers/default_json_tool_usage_parser.py +0 -83
  489. autobyteus/tools/usage/parsers/default_xml_tool_usage_parser.py +0 -316
  490. autobyteus/tools/usage/parsers/exceptions.py +0 -13
  491. autobyteus/tools/usage/parsers/gemini_json_tool_usage_parser.py +0 -77
  492. autobyteus/tools/usage/parsers/openai_json_tool_usage_parser.py +0 -149
  493. autobyteus/tools/usage/parsers/provider_aware_tool_usage_parser.py +0 -59
  494. autobyteus/tools/usage/registries/tool_usage_parser_registry.py +0 -62
  495. autobyteus/workflow/phases/__init__.py +0 -11
  496. autobyteus/workflow/phases/workflow_operational_phase.py +0 -19
  497. autobyteus/workflow/phases/workflow_phase_manager.py +0 -48
  498. autobyteus-1.2.0.dist-info/METADATA +0 -205
  499. autobyteus-1.2.0.dist-info/RECORD +0 -496
  500. examples/__init__.py +0 -1
  501. examples/agent_team/__init__.py +0 -1
  502. examples/discover_phase_transitions.py +0 -104
  503. examples/run_browser_agent.py +0 -262
  504. examples/run_google_slides_agent.py +0 -287
  505. examples/run_mcp_browser_client.py +0 -174
  506. examples/run_mcp_google_slides_client.py +0 -270
  507. examples/run_mcp_list_tools.py +0 -189
  508. examples/run_poem_writer.py +0 -284
  509. examples/run_sqlite_agent.py +0 -295
  510. /autobyteus/{person → skills}/__init__.py +0 -0
  511. /autobyteus/{person/examples → tools/skill}/__init__.py +0 -0
  512. {autobyteus-1.2.0.dist-info → autobyteus-1.2.3.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,48 @@
1
+ """
2
+ File: tools/coordinator/backup_handler.py
3
+
4
+ Module for handling backups of files during transactional operations.
5
+
6
+ This module provides functionalities to create backups before file
7
+ operations and restore them if needed. The BackupHandler class interacts
8
+ with the BackupLogger to log backup activities.
9
+ """
10
+
11
+ import os
12
+ import shutil
13
+
14
+
15
+ class BackupHandler:
16
+
17
+ def _backup_filename(self, transaction_id: str, filepath: str) -> str:
18
+ """Generate a backup filename based on transaction_id and original filename."""
19
+ dir_name, file_name = os.path.split(filepath)
20
+ backup_name = f"{transaction_id}_backup_{file_name}"
21
+ return os.path.join(dir_name, backup_name)
22
+
23
+ def create_backup(self, transaction_id: str, filepath: str) -> None:
24
+ """
25
+ Create a backup of the given file for the provided transaction_id.
26
+
27
+ Args:
28
+ transaction_id (str): The ID of the current transaction.
29
+ filepath (str): Path to the file that needs to be backed up.
30
+ """
31
+ backup_path = self._backup_filename(transaction_id, filepath)
32
+ shutil.copy2(filepath, backup_path) # Copying file to its backup location.
33
+ self.logger.log_backup_activity(f"Backup created for {filepath} at {backup_path}")
34
+
35
+ def restore_backup(self, transaction_id: str, filepath: str) -> None:
36
+ """
37
+ Restore a file from its backup for the given transaction_id.
38
+
39
+ Args:
40
+ transaction_id (str): The ID of the current transaction.
41
+ filepath (str): Path to the original file that needs to be restored.
42
+ """
43
+ backup_path = self._backup_filename(transaction_id, filepath)
44
+ if os.path.exists(backup_path):
45
+ shutil.move(backup_path, filepath) # Restoring original file from backup.
46
+ self.logger.log_backup_activity(f"Backup at {backup_path} restored to {filepath}")
47
+ else:
48
+ self.logger.log_backup_activity(f"No backup found for {filepath} for transaction {transaction_id}")
@@ -0,0 +1,62 @@
1
+ """
2
+ tools/coordinator/operation_lifecycle_manager.py
3
+
4
+ This module contains the OperationLifecycleManager class which manages the
5
+ transaction lifecycle including starting, committing, and rolling back transactions.
6
+ """
7
+
8
+ import uuid
9
+ from autobyteus.tools.operation_executor.journal_manager import JournalManager
10
+ from autobyteus.tools.operation_executor.operation_event_producer import OperationEventProducer
11
+ from autobyteus.tools.transaction_management.backup_handler import BackupHandler
12
+ from tools.operation_executor.operation_executor import OperationExecutor
13
+ # Assuming the other required classes are located in their respective modules.
14
+
15
+ class OperationLifecycleManager:
16
+ def __init__(self,
17
+ journal_manager: JournalManager,
18
+ operation_executor: OperationExecutor,
19
+ backup_handler: BackupHandler,
20
+ event_producer: OperationEventProducer) -> None:
21
+ self.journal_manager = journal_manager
22
+ self.operation_executor = operation_executor
23
+ self.backup_handler = backup_handler
24
+ self.event_producer = event_producer
25
+
26
+ def start_transaction(self) -> str:
27
+ """
28
+ Initializes a transaction and returns a unique transaction ID.
29
+ """
30
+ transaction_id = str(uuid.uuid4())
31
+ self.journal_manager.initialize_journal(transaction_id)
32
+ return transaction_id
33
+
34
+ def commit(self, transaction_id: str) -> None:
35
+ """
36
+ Commits all the operations, journals them, and emits an event indicating
37
+ a successful commit.
38
+
39
+ Args:
40
+ transaction_id (str): The unique ID of the transaction to be committed.
41
+ """
42
+ try:
43
+ self.journal_manager.finalize_journal(transaction_id, status="committed")
44
+ self.event_producer.emit_event(f"Transaction {transaction_id} committed.")
45
+ except Exception as e:
46
+ self.journal_manager.log_error(transaction_id, str(e))
47
+ raise
48
+
49
+ def rollback(self, transaction_id: str) -> None:
50
+ """
51
+ Reverts all executed operations, restores files if necessary, and emits a rollback event.
52
+
53
+ Args:
54
+ transaction_id (str): The unique ID of the transaction to be rolled back.
55
+ """
56
+ try:
57
+ self.operation_executor.rollback_operations()
58
+ self.backup_handler.restore_backup(transaction_id)
59
+ self.event_producer.emit_event(f"Transaction {transaction_id} rolled back.")
60
+ except Exception as e:
61
+ self.journal_manager.log_error(transaction_id, str(e))
62
+ raise
@@ -1,6 +1,5 @@
1
1
  # file: autobyteus/autobyteus/tools/usage/__init__.py
2
2
  """
3
3
  This package contains the framework for generating provider-specific
4
- tool usage information (schemas and examples) and for parsing
5
- tool usage from LLM responses.
4
+ tool usage information (schemas and examples).
6
5
  """
@@ -3,7 +3,7 @@
3
3
  This package contains concrete formatter classes that translate a BaseTool's
4
4
  metadata into a specific provider's format (e.g., OpenAI JSON, Anthropic JSON, XML).
5
5
  """
6
- from .base_formatter import BaseSchemaFormatter, BaseExampleFormatter
6
+ from .base_formatter import BaseSchemaFormatter, BaseExampleFormatter, BaseXmlSchemaFormatter
7
7
  from .default_xml_schema_formatter import DefaultXmlSchemaFormatter
8
8
  from .default_json_schema_formatter import DefaultJsonSchemaFormatter
9
9
  from .openai_json_schema_formatter import OpenAiJsonSchemaFormatter
@@ -15,9 +15,18 @@ from .openai_json_example_formatter import OpenAiJsonExampleFormatter
15
15
  from .anthropic_json_example_formatter import AnthropicJsonExampleFormatter
16
16
  from .gemini_json_example_formatter import GeminiJsonExampleFormatter
17
17
 
18
+ # Tool-specific formatters
19
+ from .write_file_xml_schema_formatter import WriteFileXmlSchemaFormatter
20
+ from .write_file_xml_example_formatter import WriteFileXmlExampleFormatter
21
+ from .patch_file_xml_schema_formatter import PatchFileXmlSchemaFormatter
22
+ from .patch_file_xml_example_formatter import PatchFileXmlExampleFormatter
23
+ from .run_bash_xml_schema_formatter import RunBashXmlSchemaFormatter
24
+ from .run_bash_xml_example_formatter import RunBashXmlExampleFormatter
25
+
18
26
  __all__ = [
19
27
  "BaseSchemaFormatter",
20
28
  "BaseExampleFormatter",
29
+ "BaseXmlSchemaFormatter",
21
30
  "DefaultXmlSchemaFormatter",
22
31
  "DefaultJsonSchemaFormatter",
23
32
  "OpenAiJsonSchemaFormatter",
@@ -28,4 +37,11 @@ __all__ = [
28
37
  "OpenAiJsonExampleFormatter",
29
38
  "AnthropicJsonExampleFormatter",
30
39
  "GeminiJsonExampleFormatter",
40
+ # Tool-specific formatters
41
+ "WriteFileXmlSchemaFormatter",
42
+ "WriteFileXmlExampleFormatter",
43
+ "PatchFileXmlSchemaFormatter",
44
+ "PatchFileXmlExampleFormatter",
45
+ "RunBashXmlSchemaFormatter",
46
+ "RunBashXmlExampleFormatter",
31
47
  ]
@@ -23,6 +23,14 @@ class BaseSchemaFormatter(ABC):
23
23
  """
24
24
  pass
25
25
 
26
+ class BaseXmlSchemaFormatter(BaseSchemaFormatter):
27
+ """
28
+ Marker base class for all XML schema formatters.
29
+ Subclass this for any formatter that produces XML output.
30
+ """
31
+ pass
32
+
33
+
26
34
  class BaseExampleFormatter(ABC):
27
35
  """
28
36
  Abstract base class for formatting a usage example of a single tool
@@ -3,12 +3,12 @@ import xml.sax.saxutils
3
3
  from typing import TYPE_CHECKING, List, Dict
4
4
 
5
5
  from autobyteus.utils.parameter_schema import ParameterType, ParameterDefinition, ParameterSchema
6
- from .base_formatter import BaseSchemaFormatter
6
+ from .base_formatter import BaseXmlSchemaFormatter
7
7
 
8
8
  if TYPE_CHECKING:
9
9
  from autobyteus.tools.registry import ToolDefinition
10
10
 
11
- class DefaultXmlSchemaFormatter(BaseSchemaFormatter):
11
+ class DefaultXmlSchemaFormatter(BaseXmlSchemaFormatter):
12
12
  """Formats a tool's schema into a standardized, potentially nested, XML string."""
13
13
 
14
14
  def provide(self, tool_definition: 'ToolDefinition') -> str:
@@ -0,0 +1,18 @@
1
+ from typing import Dict, TYPE_CHECKING
2
+ from .base_formatter import BaseSchemaFormatter
3
+
4
+ if TYPE_CHECKING:
5
+ from autobyteus.tools.registry import ToolDefinition
6
+
7
+ class MistralJsonSchemaFormatter(BaseSchemaFormatter):
8
+ """Formats a tool's schema into the Mistral JSON format (standard JSON schema)."""
9
+
10
+ def provide(self, tool_definition: 'ToolDefinition') -> Dict:
11
+ return {
12
+ "type": "function",
13
+ "function": {
14
+ "name": tool_definition.name,
15
+ "description": tool_definition.description,
16
+ "parameters": tool_definition.argument_schema.to_json_schema_dict() if tool_definition.argument_schema else {"type": "object", "properties": {}}
17
+ }
18
+ }
@@ -0,0 +1,64 @@
1
+ # file: autobyteus/autobyteus/tools/usage/formatters/patch_file_xml_example_formatter.py
2
+ """
3
+ XML Example formatter for the patch_file tool using standard <tool name="patch_file"> syntax.
4
+ """
5
+ from typing import TYPE_CHECKING
6
+
7
+ from .base_formatter import BaseExampleFormatter
8
+
9
+ if TYPE_CHECKING:
10
+ from autobyteus.tools.registry import ToolDefinition
11
+
12
+
13
+ class PatchFileXmlExampleFormatter(BaseExampleFormatter):
14
+ """
15
+ Formats usage examples for patch_file using the standard <tool name="patch_file"> XML syntax.
16
+ """
17
+
18
+ def provide(self, tool_definition: 'ToolDefinition') -> str:
19
+ """
20
+ Generates usage examples for patch_file.
21
+ """
22
+ return '''### Example 1: Modify a function in a Python file
23
+
24
+ <tool name="patch_file">
25
+ <arguments>
26
+ <arg name="path">/path/to/utils.py</arg>
27
+ <arg name="patch">
28
+ __START_PATCH__
29
+ --- a/utils.py
30
+ +++ b/utils.py
31
+ @@ -10,7 +10,7 @@
32
+ def calculate_total(items):
33
+ """Calculate the total price of items."""
34
+ total = 0
35
+ - for item in items:
36
+ + for item in sorted(items, key=lambda x: x.price):
37
+ total += item.price
38
+ return total
39
+ __END_PATCH__
40
+ </arg>
41
+ </arguments>
42
+ </tool>
43
+
44
+ ### Example 2: Add new lines to a configuration file
45
+
46
+ <tool name="patch_file">
47
+ <arguments>
48
+ <arg name="path">config/settings.yaml</arg>
49
+ <arg name="patch">
50
+ __START_PATCH__
51
+ --- a/settings.yaml
52
+ +++ b/settings.yaml
53
+ @@ -5,3 +5,6 @@
54
+ logging:
55
+ level: INFO
56
+ format: "%(asctime)s - %(message)s"
57
+ +
58
+ +cache:
59
+ + enabled: true
60
+ + ttl: 3600
61
+ __END_PATCH__
62
+ </arg>
63
+ </arguments>
64
+ </tool>'''
@@ -0,0 +1,31 @@
1
+ # file: autobyteus/autobyteus/tools/usage/formatters/patch_file_xml_schema_formatter.py
2
+ """
3
+ XML Schema formatter for the patch_file tool using standard <tool name="patch_file"> syntax.
4
+ """
5
+ from typing import TYPE_CHECKING
6
+
7
+ from .base_formatter import BaseXmlSchemaFormatter
8
+
9
+ if TYPE_CHECKING:
10
+ from autobyteus.tools.registry import ToolDefinition
11
+
12
+
13
+ class PatchFileXmlSchemaFormatter(BaseXmlSchemaFormatter):
14
+ """
15
+ Formats the patch_file tool schema using the standard <tool name="patch_file"> XML syntax.
16
+ """
17
+
18
+ def provide(self, tool_definition: 'ToolDefinition') -> str:
19
+ """
20
+ Generates the schema description for patch_file using standard XML syntax
21
+ with specific instructions for sentinel tags to support robust streaming.
22
+ """
23
+ return '''<tool name="patch_file">
24
+ <arguments>
25
+ <arg name="path" type="string" description="The absolute or relative path to the file to patch." required="true" />
26
+ <arg name="patch" type="string" description="The unified diff patch to apply to the file." required="true">
27
+ IMPORTANT: To ensure reliable streaming, you MUST enclose the patch content with the sentinel tags __START_PATCH__ and __END_PATCH__.
28
+ The parser will strip these tags, but they are critical for preventing XML parsing errors if the patch contains special characters.
29
+ </arg>
30
+ </arguments>
31
+ </tool>'''
@@ -0,0 +1,32 @@
1
+ # file: autobyteus/autobyteus/tools/usage/formatters/run_bash_xml_example_formatter.py
2
+ """
3
+ XML Example formatter for the run_bash tool using shorthand <run_bash> syntax.
4
+ """
5
+ from typing import TYPE_CHECKING
6
+
7
+ from .base_formatter import BaseExampleFormatter
8
+
9
+ if TYPE_CHECKING:
10
+ from autobyteus.tools.registry import ToolDefinition
11
+
12
+
13
+ class RunBashXmlExampleFormatter(BaseExampleFormatter):
14
+ """
15
+ Formats usage examples for run_bash using the shorthand <run_bash> XML syntax.
16
+ """
17
+
18
+ def provide(self, tool_definition: 'ToolDefinition') -> str:
19
+ """
20
+ Generates usage examples for run_bash.
21
+ """
22
+ return '''### Example 1: List files
23
+
24
+ <run_bash>
25
+ ls -la
26
+ </run_bash>
27
+
28
+ ### Example 2: Run tests
29
+
30
+ <run_bash>
31
+ python -m pytest tests/ -v
32
+ </run_bash>'''
@@ -0,0 +1,36 @@
1
+ # file: autobyteus/autobyteus/tools/usage/formatters/run_bash_xml_schema_formatter.py
2
+ """
3
+ XML Schema formatter for the run_bash tool using shorthand <run_bash> syntax.
4
+ """
5
+ from typing import TYPE_CHECKING
6
+
7
+ from .base_formatter import BaseXmlSchemaFormatter
8
+
9
+ if TYPE_CHECKING:
10
+ from autobyteus.tools.registry import ToolDefinition
11
+
12
+
13
+ class RunBashXmlSchemaFormatter(BaseXmlSchemaFormatter):
14
+ """
15
+ Formats the run_bash tool schema using the shorthand <run_bash> XML syntax.
16
+ """
17
+
18
+ def provide(self, tool_definition: 'ToolDefinition') -> str:
19
+ """
20
+ Generates the schema description for run_bash using shorthand syntax.
21
+ """
22
+ return '''## run_bash
23
+
24
+ Runs a command in the terminal.
25
+
26
+ **Syntax:**
27
+ ```xml
28
+ <run_bash>
29
+ command_to_execute
30
+ </run_bash>
31
+ ```
32
+
33
+ **Parameters:**
34
+ - Content between tags: The shell command to execute.
35
+
36
+ The command runs in the agent's configured working directory.'''
@@ -0,0 +1,53 @@
1
+ # file: autobyteus/autobyteus/tools/usage/formatters/write_file_xml_example_formatter.py
2
+ """
3
+ XML Example formatter for the write_file tool using shorthand <write_file> syntax.
4
+ """
5
+ from typing import TYPE_CHECKING
6
+
7
+ from .base_formatter import BaseExampleFormatter
8
+
9
+ if TYPE_CHECKING:
10
+ from autobyteus.tools.registry import ToolDefinition
11
+
12
+
13
+ class WriteFileXmlExampleFormatter(BaseExampleFormatter):
14
+ """
15
+ Formats usage examples for write_file using the shorthand <write_file> XML syntax.
16
+ """
17
+
18
+ def provide(self, tool_definition: 'ToolDefinition') -> str:
19
+ """
20
+ Generates usage examples for write_file.
21
+ """
22
+ return '''### Example 1: Create a Python file
23
+
24
+ <tool name="write_file">
25
+ <arguments>
26
+ <arg name="path">/path/to/hello.py</arg>
27
+ <arg name="content">
28
+ __START_CONTENT__
29
+ def hello():
30
+ print("Hello, World!")
31
+
32
+ if __name__ == "__main__":
33
+ hello()
34
+ __END_CONTENT__
35
+ </arg>
36
+ </arguments>
37
+ </tool>
38
+
39
+ ### Example 2: Create a configuration file
40
+
41
+ <tool name="write_file">
42
+ <arguments>
43
+ <arg name="path">config/settings.json</arg>
44
+ <arg name="content">
45
+ __START_CONTENT__
46
+ {
47
+ "debug": true,
48
+ "log_level": "INFO"
49
+ }
50
+ __END_CONTENT__
51
+ </arg>
52
+ </arguments>
53
+ </tool>'''
@@ -0,0 +1,31 @@
1
+ # file: autobyteus/autobyteus/tools/usage/formatters/write_file_xml_schema_formatter.py
2
+ """
3
+ XML Schema formatter for the write_file tool using shorthand <write_file> syntax.
4
+ """
5
+ from typing import TYPE_CHECKING
6
+
7
+ from .base_formatter import BaseXmlSchemaFormatter
8
+
9
+ if TYPE_CHECKING:
10
+ from autobyteus.tools.registry import ToolDefinition
11
+
12
+
13
+ class WriteFileXmlSchemaFormatter(BaseXmlSchemaFormatter):
14
+ """
15
+ Formats the write_file tool schema using the shorthand <write_file> XML syntax.
16
+ """
17
+
18
+ def provide(self, tool_definition: 'ToolDefinition') -> str:
19
+ """
20
+ Generates the schema description for write_file using standard XML syntax
21
+ but with specific instructions for sentinel tags to support robust streaming.
22
+ """
23
+ return '''<tool name="write_file">
24
+ <arguments>
25
+ <arg name="path" type="string" description="The absolute or relative path where the file will be written." required="true" />
26
+ <arg name="content" type="string" description="The content to write to the file." required="true">
27
+ IMPORTANT: To ensure reliable streaming, you MUST enclose the file content with the sentinel tags __START_CONTENT__ and __END_CONTENT__.
28
+ The parser will strip these tags, but they are critical for preventing XML parsing errors if the content contains special characters.
29
+ </arg>
30
+ </arguments>
31
+ </tool>'''
@@ -5,7 +5,7 @@ from typing import TYPE_CHECKING, List, Optional
5
5
 
6
6
  from autobyteus.llm.providers import LLMProvider
7
7
  from autobyteus.tools.usage.registries.tool_formatting_registry import ToolFormattingRegistry
8
- from autobyteus.tools.usage.formatters import DefaultXmlSchemaFormatter
8
+ from autobyteus.tools.usage.formatters import BaseXmlSchemaFormatter
9
9
 
10
10
  if TYPE_CHECKING:
11
11
  from autobyteus.tools.registry import ToolDefinition
@@ -52,29 +52,29 @@ class ToolManifestProvider:
52
52
 
53
53
  def provide(self,
54
54
  tool_definitions: List['ToolDefinition'],
55
- provider: Optional[LLMProvider] = None,
56
- use_xml_tool_format: bool = False) -> str:
55
+ provider: Optional[LLMProvider] = None) -> str:
57
56
  """
58
57
  Generates the manifest string for a list of tools.
59
58
 
60
59
  Args:
61
60
  tool_definitions: A list of ToolDefinition objects.
62
61
  provider: The LLM provider, for provider-specific formatting.
63
- use_xml_tool_format: If True, forces the use of XML formatters.
64
62
 
65
63
  Returns:
66
64
  A single string containing the formatted manifest.
67
65
  """
68
66
  tool_blocks = []
69
67
 
70
- formatter_pair = self._formatting_registry.get_formatter_pair(provider, use_xml_tool_format=use_xml_tool_format)
71
- schema_formatter = formatter_pair.schema_formatter
72
- example_formatter = formatter_pair.example_formatter
73
-
74
- is_xml_format = isinstance(schema_formatter, DefaultXmlSchemaFormatter)
75
-
76
68
  for td in tool_definitions:
77
69
  try:
70
+ # Get formatter pair per-tool (with fallback to provider)
71
+ formatter_pair = self._formatting_registry.get_formatter_pair_for_tool(
72
+ td.name, provider
73
+ )
74
+ schema_formatter = formatter_pair.schema_formatter
75
+ example_formatter = formatter_pair.example_formatter
76
+ is_xml_format = isinstance(schema_formatter, BaseXmlSchemaFormatter)
77
+
78
78
  schema = schema_formatter.provide(td)
79
79
  example = example_formatter.provide(td) # This is now a pre-formatted string for both XML and JSON
80
80
 
@@ -1,15 +1,13 @@
1
1
  # file: autobyteus/autobyteus/tools/usage/registries/__init__.py
2
2
  """
3
- This package contains registries for schema/example formatters and parsers,
3
+ This package contains registries for schema/example formatters,
4
4
  allowing for easy retrieval of the correct component based on the LLM provider.
5
5
  """
6
6
  # Import the new consolidated components
7
7
  from .tool_formatter_pair import ToolFormatterPair
8
8
  from .tool_formatting_registry import ToolFormattingRegistry
9
- from .tool_usage_parser_registry import ToolUsageParserRegistry
10
9
 
11
10
  __all__ = [
12
11
  "ToolFormatterPair",
13
12
  "ToolFormattingRegistry",
14
- "ToolUsageParserRegistry",
15
13
  ]