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.
- autobyteus/agent/agent.py +15 -5
- autobyteus/agent/bootstrap_steps/__init__.py +1 -3
- autobyteus/agent/bootstrap_steps/agent_bootstrapper.py +3 -59
- autobyteus/agent/bootstrap_steps/base_bootstrap_step.py +1 -4
- autobyteus/agent/bootstrap_steps/mcp_server_prewarming_step.py +1 -3
- autobyteus/agent/bootstrap_steps/system_prompt_processing_step.py +16 -13
- autobyteus/agent/bootstrap_steps/workspace_context_initialization_step.py +2 -4
- autobyteus/agent/context/agent_config.py +43 -20
- autobyteus/agent/context/agent_context.py +23 -18
- autobyteus/agent/context/agent_runtime_state.py +23 -19
- autobyteus/agent/events/__init__.py +16 -1
- autobyteus/agent/events/agent_events.py +43 -3
- autobyteus/agent/events/agent_input_event_queue_manager.py +79 -26
- autobyteus/agent/events/event_store.py +57 -0
- autobyteus/agent/events/notifiers.py +74 -60
- autobyteus/agent/events/worker_event_dispatcher.py +21 -64
- autobyteus/agent/factory/agent_factory.py +52 -0
- autobyteus/agent/handlers/__init__.py +2 -0
- autobyteus/agent/handlers/approved_tool_invocation_event_handler.py +51 -34
- autobyteus/agent/handlers/bootstrap_event_handler.py +155 -0
- autobyteus/agent/handlers/inter_agent_message_event_handler.py +10 -0
- autobyteus/agent/handlers/lifecycle_event_logger.py +19 -11
- autobyteus/agent/handlers/llm_complete_response_received_event_handler.py +10 -15
- autobyteus/agent/handlers/llm_user_message_ready_event_handler.py +188 -48
- autobyteus/agent/handlers/tool_execution_approval_event_handler.py +0 -10
- autobyteus/agent/handlers/tool_invocation_request_event_handler.py +53 -48
- autobyteus/agent/handlers/tool_result_event_handler.py +7 -8
- autobyteus/agent/handlers/user_input_message_event_handler.py +10 -3
- autobyteus/agent/input_processor/memory_ingest_input_processor.py +40 -0
- autobyteus/agent/lifecycle/__init__.py +12 -0
- autobyteus/agent/lifecycle/base_processor.py +109 -0
- autobyteus/agent/lifecycle/events.py +35 -0
- autobyteus/agent/lifecycle/processor_definition.py +36 -0
- autobyteus/agent/lifecycle/processor_registry.py +106 -0
- autobyteus/agent/llm_request_assembler.py +98 -0
- autobyteus/agent/llm_response_processor/__init__.py +1 -8
- autobyteus/agent/message/context_file_type.py +1 -1
- autobyteus/agent/message/send_message_to.py +5 -4
- autobyteus/agent/runtime/agent_runtime.py +29 -21
- autobyteus/agent/runtime/agent_worker.py +98 -19
- autobyteus/agent/shutdown_steps/__init__.py +2 -0
- autobyteus/agent/shutdown_steps/agent_shutdown_orchestrator.py +2 -0
- autobyteus/agent/shutdown_steps/tool_cleanup_step.py +58 -0
- autobyteus/agent/status/__init__.py +14 -0
- autobyteus/agent/status/manager.py +93 -0
- autobyteus/agent/status/status_deriver.py +96 -0
- autobyteus/agent/{phases/phase_enum.py → status/status_enum.py} +16 -16
- autobyteus/agent/status/status_update_utils.py +73 -0
- autobyteus/agent/streaming/__init__.py +52 -5
- autobyteus/agent/streaming/adapters/__init__.py +18 -0
- autobyteus/agent/streaming/adapters/invocation_adapter.py +184 -0
- autobyteus/agent/streaming/adapters/tool_call_parsing.py +163 -0
- autobyteus/agent/streaming/adapters/tool_syntax_registry.py +67 -0
- autobyteus/agent/streaming/agent_event_stream.py +3 -178
- autobyteus/agent/streaming/api_tool_call/__init__.py +16 -0
- autobyteus/agent/streaming/api_tool_call/file_content_streamer.py +56 -0
- autobyteus/agent/streaming/api_tool_call/json_string_field_extractor.py +175 -0
- autobyteus/agent/streaming/api_tool_call_streaming_response_handler.py +4 -0
- autobyteus/agent/streaming/events/__init__.py +6 -0
- autobyteus/agent/streaming/events/stream_event_payloads.py +284 -0
- autobyteus/agent/streaming/events/stream_events.py +141 -0
- autobyteus/agent/streaming/handlers/__init__.py +15 -0
- autobyteus/agent/streaming/handlers/api_tool_call_streaming_response_handler.py +303 -0
- autobyteus/agent/streaming/handlers/parsing_streaming_response_handler.py +107 -0
- autobyteus/agent/streaming/handlers/pass_through_streaming_response_handler.py +107 -0
- autobyteus/agent/streaming/handlers/streaming_handler_factory.py +177 -0
- autobyteus/agent/streaming/handlers/streaming_response_handler.py +58 -0
- autobyteus/agent/streaming/parser/__init__.py +61 -0
- autobyteus/agent/streaming/parser/event_emitter.py +181 -0
- autobyteus/agent/streaming/parser/events.py +4 -0
- autobyteus/agent/streaming/parser/invocation_adapter.py +4 -0
- autobyteus/agent/streaming/parser/json_parsing_strategies/__init__.py +19 -0
- autobyteus/agent/streaming/parser/json_parsing_strategies/base.py +32 -0
- autobyteus/agent/streaming/parser/json_parsing_strategies/default.py +34 -0
- autobyteus/agent/streaming/parser/json_parsing_strategies/gemini.py +31 -0
- autobyteus/agent/streaming/parser/json_parsing_strategies/openai.py +64 -0
- autobyteus/agent/streaming/parser/json_parsing_strategies/registry.py +75 -0
- autobyteus/agent/streaming/parser/parser_context.py +227 -0
- autobyteus/agent/streaming/parser/parser_factory.py +132 -0
- autobyteus/agent/streaming/parser/sentinel_format.py +7 -0
- autobyteus/agent/streaming/parser/state_factory.py +62 -0
- autobyteus/agent/streaming/parser/states/__init__.py +1 -0
- autobyteus/agent/streaming/parser/states/base_state.py +60 -0
- autobyteus/agent/streaming/parser/states/custom_xml_tag_run_bash_parsing_state.py +38 -0
- autobyteus/agent/streaming/parser/states/custom_xml_tag_write_file_parsing_state.py +55 -0
- autobyteus/agent/streaming/parser/states/delimited_content_state.py +146 -0
- autobyteus/agent/streaming/parser/states/json_initialization_state.py +144 -0
- autobyteus/agent/streaming/parser/states/json_tool_parsing_state.py +137 -0
- autobyteus/agent/streaming/parser/states/sentinel_content_state.py +30 -0
- autobyteus/agent/streaming/parser/states/sentinel_initialization_state.py +117 -0
- autobyteus/agent/streaming/parser/states/text_state.py +78 -0
- autobyteus/agent/streaming/parser/states/xml_patch_file_tool_parsing_state.py +328 -0
- autobyteus/agent/streaming/parser/states/xml_run_bash_tool_parsing_state.py +129 -0
- autobyteus/agent/streaming/parser/states/xml_tag_initialization_state.py +151 -0
- autobyteus/agent/streaming/parser/states/xml_tool_parsing_state.py +63 -0
- autobyteus/agent/streaming/parser/states/xml_write_file_tool_parsing_state.py +343 -0
- autobyteus/agent/streaming/parser/strategies/__init__.py +17 -0
- autobyteus/agent/streaming/parser/strategies/base.py +24 -0
- autobyteus/agent/streaming/parser/strategies/json_tool_strategy.py +26 -0
- autobyteus/agent/streaming/parser/strategies/registry.py +28 -0
- autobyteus/agent/streaming/parser/strategies/sentinel_strategy.py +23 -0
- autobyteus/agent/streaming/parser/strategies/xml_tag_strategy.py +21 -0
- autobyteus/agent/streaming/parser/stream_scanner.py +167 -0
- autobyteus/agent/streaming/parser/streaming_parser.py +212 -0
- autobyteus/agent/streaming/parser/tool_call_parsing.py +4 -0
- autobyteus/agent/streaming/parser/tool_constants.py +7 -0
- autobyteus/agent/streaming/parser/tool_syntax_registry.py +4 -0
- autobyteus/agent/streaming/parser/xml_tool_parsing_state_registry.py +55 -0
- autobyteus/agent/streaming/parsing_streaming_response_handler.py +4 -0
- autobyteus/agent/streaming/pass_through_streaming_response_handler.py +4 -0
- autobyteus/agent/streaming/queue_streamer.py +3 -57
- autobyteus/agent/streaming/segments/__init__.py +5 -0
- autobyteus/agent/streaming/segments/segment_events.py +81 -0
- autobyteus/agent/streaming/stream_event_payloads.py +2 -198
- autobyteus/agent/streaming/stream_events.py +3 -128
- autobyteus/agent/streaming/streaming_handler_factory.py +4 -0
- autobyteus/agent/streaming/streaming_response_handler.py +4 -0
- autobyteus/agent/streaming/streams/__init__.py +5 -0
- autobyteus/agent/streaming/streams/agent_event_stream.py +197 -0
- autobyteus/agent/streaming/utils/__init__.py +5 -0
- autobyteus/agent/streaming/utils/queue_streamer.py +59 -0
- autobyteus/agent/system_prompt_processor/__init__.py +2 -0
- autobyteus/agent/system_prompt_processor/available_skills_processor.py +96 -0
- autobyteus/agent/system_prompt_processor/base_processor.py +1 -1
- autobyteus/agent/system_prompt_processor/processor_meta.py +15 -2
- autobyteus/agent/system_prompt_processor/tool_manifest_injector_processor.py +39 -58
- autobyteus/agent/token_budget.py +56 -0
- autobyteus/agent/tool_execution_result_processor/memory_ingest_tool_result_processor.py +29 -0
- autobyteus/agent/tool_invocation.py +16 -40
- autobyteus/agent/tool_invocation_preprocessor/__init__.py +9 -0
- autobyteus/agent/tool_invocation_preprocessor/base_preprocessor.py +45 -0
- autobyteus/agent/tool_invocation_preprocessor/processor_definition.py +15 -0
- autobyteus/agent/tool_invocation_preprocessor/processor_meta.py +33 -0
- autobyteus/agent/tool_invocation_preprocessor/processor_registry.py +60 -0
- autobyteus/agent/utils/wait_for_idle.py +12 -14
- autobyteus/agent/workspace/base_workspace.py +6 -27
- autobyteus/agent_team/agent_team.py +3 -3
- autobyteus/agent_team/agent_team_builder.py +1 -41
- autobyteus/agent_team/bootstrap_steps/__init__.py +0 -4
- autobyteus/agent_team/bootstrap_steps/agent_configuration_preparation_step.py +8 -18
- autobyteus/agent_team/bootstrap_steps/agent_team_bootstrapper.py +4 -16
- autobyteus/agent_team/bootstrap_steps/base_agent_team_bootstrap_step.py +1 -2
- autobyteus/agent_team/bootstrap_steps/coordinator_initialization_step.py +1 -2
- autobyteus/agent_team/bootstrap_steps/task_notifier_initialization_step.py +5 -6
- autobyteus/agent_team/bootstrap_steps/team_context_initialization_step.py +15 -15
- autobyteus/agent_team/context/agent_team_config.py +6 -3
- autobyteus/agent_team/context/agent_team_context.py +25 -3
- autobyteus/agent_team/context/agent_team_runtime_state.py +11 -8
- autobyteus/agent_team/events/__init__.py +11 -0
- autobyteus/agent_team/events/agent_team_event_dispatcher.py +22 -9
- autobyteus/agent_team/events/agent_team_events.py +16 -0
- autobyteus/agent_team/events/event_store.py +57 -0
- autobyteus/agent_team/factory/agent_team_factory.py +8 -0
- autobyteus/agent_team/handlers/inter_agent_message_request_event_handler.py +18 -2
- autobyteus/agent_team/handlers/lifecycle_agent_team_event_handler.py +21 -5
- autobyteus/agent_team/handlers/process_user_message_event_handler.py +17 -8
- autobyteus/agent_team/handlers/tool_approval_team_event_handler.py +19 -4
- autobyteus/agent_team/runtime/agent_team_runtime.py +41 -10
- autobyteus/agent_team/runtime/agent_team_worker.py +69 -5
- autobyteus/agent_team/status/__init__.py +14 -0
- autobyteus/agent_team/status/agent_team_status.py +18 -0
- autobyteus/agent_team/status/agent_team_status_manager.py +33 -0
- autobyteus/agent_team/status/status_deriver.py +62 -0
- autobyteus/agent_team/status/status_update_utils.py +42 -0
- autobyteus/agent_team/streaming/__init__.py +2 -2
- autobyteus/agent_team/streaming/agent_team_event_notifier.py +10 -10
- autobyteus/agent_team/streaming/agent_team_stream_event_payloads.py +7 -7
- autobyteus/agent_team/streaming/agent_team_stream_events.py +11 -11
- autobyteus/agent_team/system_prompt_processor/__init__.py +6 -0
- autobyteus/agent_team/system_prompt_processor/team_manifest_injector_processor.py +76 -0
- autobyteus/agent_team/task_notification/activation_policy.py +1 -1
- autobyteus/agent_team/task_notification/system_event_driven_agent_task_notifier.py +22 -22
- autobyteus/agent_team/task_notification/task_notification_mode.py +20 -1
- autobyteus/agent_team/utils/wait_for_idle.py +4 -4
- autobyteus/cli/agent_cli.py +18 -10
- autobyteus/cli/agent_team_tui/app.py +18 -15
- autobyteus/cli/agent_team_tui/state.py +21 -23
- autobyteus/cli/agent_team_tui/widgets/agent_list_sidebar.py +15 -15
- autobyteus/cli/agent_team_tui/widgets/focus_pane.py +146 -39
- autobyteus/cli/agent_team_tui/widgets/renderables.py +1 -1
- autobyteus/cli/agent_team_tui/widgets/shared.py +26 -26
- autobyteus/cli/agent_team_tui/widgets/{task_board_panel.py → task_plan_panel.py} +5 -5
- autobyteus/cli/cli_display.py +193 -44
- autobyteus/cli/workflow_tui/app.py +9 -10
- autobyteus/cli/workflow_tui/state.py +14 -16
- autobyteus/cli/workflow_tui/widgets/agent_list_sidebar.py +15 -15
- autobyteus/cli/workflow_tui/widgets/focus_pane.py +137 -35
- autobyteus/cli/workflow_tui/widgets/renderables.py +1 -1
- autobyteus/cli/workflow_tui/widgets/shared.py +25 -25
- autobyteus/clients/autobyteus_client.py +94 -1
- autobyteus/events/event_types.py +15 -21
- autobyteus/llm/api/autobyteus_llm.py +33 -29
- autobyteus/llm/api/claude_llm.py +142 -36
- autobyteus/llm/api/gemini_llm.py +163 -59
- autobyteus/llm/api/grok_llm.py +1 -1
- autobyteus/llm/api/minimax_llm.py +26 -0
- autobyteus/llm/api/mistral_llm.py +113 -87
- autobyteus/llm/api/ollama_llm.py +9 -42
- autobyteus/llm/api/openai_compatible_llm.py +127 -91
- autobyteus/llm/api/openai_llm.py +3 -3
- autobyteus/llm/api/openai_responses_llm.py +324 -0
- autobyteus/llm/api/zhipu_llm.py +21 -2
- autobyteus/llm/autobyteus_provider.py +70 -60
- autobyteus/llm/base_llm.py +85 -81
- autobyteus/llm/converters/__init__.py +14 -0
- autobyteus/llm/converters/anthropic_tool_call_converter.py +37 -0
- autobyteus/llm/converters/gemini_tool_call_converter.py +57 -0
- autobyteus/llm/converters/mistral_tool_call_converter.py +37 -0
- autobyteus/llm/converters/openai_tool_call_converter.py +38 -0
- autobyteus/llm/extensions/base_extension.py +6 -12
- autobyteus/llm/extensions/token_usage_tracking_extension.py +45 -18
- autobyteus/llm/llm_factory.py +282 -204
- autobyteus/llm/lmstudio_provider.py +60 -49
- autobyteus/llm/models.py +35 -2
- autobyteus/llm/ollama_provider.py +60 -49
- autobyteus/llm/ollama_provider_resolver.py +0 -1
- autobyteus/llm/prompt_renderers/__init__.py +19 -0
- autobyteus/llm/prompt_renderers/anthropic_prompt_renderer.py +104 -0
- autobyteus/llm/prompt_renderers/autobyteus_prompt_renderer.py +19 -0
- autobyteus/llm/prompt_renderers/base_prompt_renderer.py +10 -0
- autobyteus/llm/prompt_renderers/gemini_prompt_renderer.py +63 -0
- autobyteus/llm/prompt_renderers/mistral_prompt_renderer.py +87 -0
- autobyteus/llm/prompt_renderers/ollama_prompt_renderer.py +51 -0
- autobyteus/llm/prompt_renderers/openai_chat_renderer.py +97 -0
- autobyteus/llm/prompt_renderers/openai_responses_renderer.py +101 -0
- autobyteus/llm/providers.py +1 -3
- autobyteus/llm/token_counter/claude_token_counter.py +56 -25
- autobyteus/llm/token_counter/mistral_token_counter.py +12 -8
- autobyteus/llm/token_counter/openai_token_counter.py +24 -5
- autobyteus/llm/token_counter/token_counter_factory.py +12 -5
- autobyteus/llm/utils/llm_config.py +6 -12
- autobyteus/llm/utils/media_payload_formatter.py +27 -20
- autobyteus/llm/utils/messages.py +55 -3
- autobyteus/llm/utils/response_types.py +3 -0
- autobyteus/llm/utils/tool_call_delta.py +31 -0
- autobyteus/memory/__init__.py +32 -0
- autobyteus/memory/active_transcript.py +69 -0
- autobyteus/memory/compaction/__init__.py +9 -0
- autobyteus/memory/compaction/compaction_result.py +8 -0
- autobyteus/memory/compaction/compactor.py +89 -0
- autobyteus/memory/compaction/summarizer.py +11 -0
- autobyteus/memory/compaction_snapshot_builder.py +84 -0
- autobyteus/memory/memory_manager.py +183 -0
- autobyteus/memory/models/__init__.py +14 -0
- autobyteus/memory/models/episodic_item.py +41 -0
- autobyteus/memory/models/memory_types.py +7 -0
- autobyteus/memory/models/raw_trace_item.py +79 -0
- autobyteus/memory/models/semantic_item.py +41 -0
- autobyteus/memory/models/tool_interaction.py +20 -0
- autobyteus/memory/policies/__init__.py +5 -0
- autobyteus/memory/policies/compaction_policy.py +16 -0
- autobyteus/memory/retrieval/__init__.py +7 -0
- autobyteus/memory/retrieval/memory_bundle.py +11 -0
- autobyteus/memory/retrieval/retriever.py +13 -0
- autobyteus/memory/store/__init__.py +7 -0
- autobyteus/memory/store/base_store.py +14 -0
- autobyteus/memory/store/file_store.py +98 -0
- autobyteus/memory/tool_interaction_builder.py +46 -0
- autobyteus/memory/turn_tracker.py +9 -0
- autobyteus/multimedia/audio/api/__init__.py +3 -2
- autobyteus/multimedia/audio/api/autobyteus_audio_client.py +19 -5
- autobyteus/multimedia/audio/api/gemini_audio_client.py +108 -16
- autobyteus/multimedia/audio/api/openai_audio_client.py +112 -0
- autobyteus/multimedia/audio/audio_client_factory.py +84 -9
- autobyteus/multimedia/audio/audio_model.py +2 -1
- autobyteus/multimedia/image/api/autobyteus_image_client.py +19 -5
- autobyteus/multimedia/image/api/gemini_image_client.py +38 -17
- autobyteus/multimedia/image/api/openai_image_client.py +125 -43
- autobyteus/multimedia/image/autobyteus_image_provider.py +2 -1
- autobyteus/multimedia/image/image_client_factory.py +47 -15
- autobyteus/multimedia/image/image_model.py +5 -2
- autobyteus/multimedia/providers.py +3 -2
- autobyteus/skills/loader.py +71 -0
- autobyteus/skills/model.py +11 -0
- autobyteus/skills/registry.py +70 -0
- autobyteus/task_management/__init__.py +43 -20
- autobyteus/task_management/{base_task_board.py → base_task_plan.py} +16 -13
- autobyteus/task_management/converters/__init__.py +2 -2
- autobyteus/task_management/converters/{task_board_converter.py → task_plan_converter.py} +13 -13
- autobyteus/task_management/events.py +7 -7
- autobyteus/task_management/{in_memory_task_board.py → in_memory_task_plan.py} +34 -22
- autobyteus/task_management/schemas/__init__.py +3 -0
- autobyteus/task_management/schemas/task_status_report.py +2 -2
- autobyteus/task_management/schemas/todo_definition.py +15 -0
- autobyteus/task_management/todo.py +29 -0
- autobyteus/task_management/todo_list.py +75 -0
- autobyteus/task_management/tools/__init__.py +24 -8
- autobyteus/task_management/tools/task_tools/__init__.py +19 -0
- autobyteus/task_management/tools/{assign_task_to.py → task_tools/assign_task_to.py} +18 -18
- autobyteus/task_management/tools/{publish_task.py → task_tools/create_task.py} +16 -18
- autobyteus/task_management/tools/{publish_tasks.py → task_tools/create_tasks.py} +19 -19
- autobyteus/task_management/tools/{get_my_tasks.py → task_tools/get_my_tasks.py} +15 -15
- autobyteus/task_management/tools/{get_task_board_status.py → task_tools/get_task_plan_status.py} +16 -16
- autobyteus/task_management/tools/{update_task_status.py → task_tools/update_task_status.py} +16 -16
- autobyteus/task_management/tools/todo_tools/__init__.py +18 -0
- autobyteus/task_management/tools/todo_tools/add_todo.py +78 -0
- autobyteus/task_management/tools/todo_tools/create_todo_list.py +79 -0
- autobyteus/task_management/tools/todo_tools/get_todo_list.py +55 -0
- autobyteus/task_management/tools/todo_tools/update_todo_status.py +85 -0
- autobyteus/tools/__init__.py +43 -52
- autobyteus/tools/base_tool.py +7 -0
- autobyteus/tools/file/__init__.py +9 -0
- autobyteus/tools/file/patch_file.py +149 -0
- autobyteus/tools/file/{file_reader.py → read_file.py} +38 -7
- autobyteus/tools/file/{file_writer.py → write_file.py} +7 -4
- autobyteus/tools/functional_tool.py +53 -14
- autobyteus/tools/mcp/__init__.py +2 -0
- autobyteus/tools/mcp/config_service.py +5 -1
- autobyteus/tools/mcp/server/__init__.py +2 -0
- autobyteus/tools/mcp/server/http_managed_mcp_server.py +1 -1
- autobyteus/tools/mcp/server/websocket_managed_mcp_server.py +141 -0
- autobyteus/tools/mcp/server_instance_manager.py +8 -1
- autobyteus/tools/mcp/tool.py +3 -3
- autobyteus/tools/mcp/tool_registrar.py +5 -2
- autobyteus/tools/mcp/types.py +61 -0
- autobyteus/tools/multimedia/__init__.py +2 -1
- autobyteus/tools/multimedia/audio_tools.py +72 -19
- autobyteus/tools/{download_media_tool.py → multimedia/download_media_tool.py} +21 -7
- autobyteus/tools/multimedia/image_tools.py +248 -64
- autobyteus/tools/multimedia/media_reader_tool.py +1 -1
- autobyteus/tools/operation_executor/journal_manager.py +107 -0
- autobyteus/tools/operation_executor/operation_event_buffer.py +57 -0
- autobyteus/tools/operation_executor/operation_event_producer.py +29 -0
- autobyteus/tools/operation_executor/operation_executor.py +58 -0
- autobyteus/tools/registry/tool_definition.py +108 -14
- autobyteus/tools/registry/tool_registry.py +29 -0
- autobyteus/tools/search/__init__.py +17 -0
- autobyteus/tools/search/base_strategy.py +35 -0
- autobyteus/tools/search/client.py +24 -0
- autobyteus/tools/search/factory.py +81 -0
- autobyteus/tools/search/google_cse_strategy.py +68 -0
- autobyteus/tools/search/providers.py +10 -0
- autobyteus/tools/search/serpapi_strategy.py +65 -0
- autobyteus/tools/search/serper_strategy.py +87 -0
- autobyteus/tools/search_tool.py +83 -0
- autobyteus/tools/skill/load_skill.py +50 -0
- autobyteus/tools/terminal/__init__.py +45 -0
- autobyteus/tools/terminal/ansi_utils.py +32 -0
- autobyteus/tools/terminal/background_process_manager.py +233 -0
- autobyteus/tools/terminal/output_buffer.py +105 -0
- autobyteus/tools/terminal/prompt_detector.py +63 -0
- autobyteus/tools/terminal/pty_session.py +241 -0
- autobyteus/tools/terminal/session_factory.py +20 -0
- autobyteus/tools/terminal/terminal_session_manager.py +226 -0
- autobyteus/tools/terminal/tools/__init__.py +13 -0
- autobyteus/tools/terminal/tools/get_process_output.py +81 -0
- autobyteus/tools/terminal/tools/run_bash.py +109 -0
- autobyteus/tools/terminal/tools/start_background_process.py +104 -0
- autobyteus/tools/terminal/tools/stop_background_process.py +67 -0
- autobyteus/tools/terminal/types.py +54 -0
- autobyteus/tools/terminal/wsl_tmux_session.py +221 -0
- autobyteus/tools/terminal/wsl_utils.py +156 -0
- autobyteus/tools/tool_meta.py +4 -24
- autobyteus/tools/transaction_management/backup_handler.py +48 -0
- autobyteus/tools/transaction_management/operation_lifecycle_manager.py +62 -0
- autobyteus/tools/usage/__init__.py +1 -2
- autobyteus/tools/usage/formatters/__init__.py +17 -1
- autobyteus/tools/usage/formatters/base_formatter.py +8 -0
- autobyteus/tools/usage/formatters/default_xml_schema_formatter.py +2 -2
- autobyteus/tools/usage/formatters/mistral_json_schema_formatter.py +18 -0
- autobyteus/tools/usage/formatters/patch_file_xml_example_formatter.py +64 -0
- autobyteus/tools/usage/formatters/patch_file_xml_schema_formatter.py +31 -0
- autobyteus/tools/usage/formatters/run_bash_xml_example_formatter.py +32 -0
- autobyteus/tools/usage/formatters/run_bash_xml_schema_formatter.py +36 -0
- autobyteus/tools/usage/formatters/write_file_xml_example_formatter.py +53 -0
- autobyteus/tools/usage/formatters/write_file_xml_schema_formatter.py +31 -0
- autobyteus/tools/usage/providers/tool_manifest_provider.py +10 -10
- autobyteus/tools/usage/registries/__init__.py +1 -3
- autobyteus/tools/usage/registries/tool_formatting_registry.py +115 -8
- autobyteus/tools/usage/tool_schema_provider.py +51 -0
- autobyteus/tools/web/__init__.py +4 -0
- autobyteus/tools/web/read_url_tool.py +80 -0
- autobyteus/utils/diff_utils.py +271 -0
- autobyteus/utils/download_utils.py +109 -0
- autobyteus/utils/file_utils.py +57 -2
- autobyteus/utils/gemini_helper.py +56 -0
- autobyteus/utils/gemini_model_mapping.py +71 -0
- autobyteus/utils/llm_output_formatter.py +75 -0
- autobyteus/utils/tool_call_format.py +36 -0
- autobyteus/workflow/agentic_workflow.py +3 -3
- autobyteus/workflow/bootstrap_steps/agent_tool_injection_step.py +2 -2
- autobyteus/workflow/bootstrap_steps/base_workflow_bootstrap_step.py +2 -2
- autobyteus/workflow/bootstrap_steps/coordinator_initialization_step.py +2 -2
- autobyteus/workflow/bootstrap_steps/coordinator_prompt_preparation_step.py +4 -11
- autobyteus/workflow/bootstrap_steps/workflow_bootstrapper.py +6 -6
- autobyteus/workflow/bootstrap_steps/workflow_runtime_queue_initialization_step.py +2 -2
- autobyteus/workflow/context/workflow_context.py +3 -3
- autobyteus/workflow/context/workflow_runtime_state.py +5 -5
- autobyteus/workflow/events/workflow_event_dispatcher.py +5 -5
- autobyteus/workflow/handlers/lifecycle_workflow_event_handler.py +3 -3
- autobyteus/workflow/handlers/process_user_message_event_handler.py +5 -5
- autobyteus/workflow/handlers/tool_approval_workflow_event_handler.py +2 -2
- autobyteus/workflow/runtime/workflow_runtime.py +8 -8
- autobyteus/workflow/runtime/workflow_worker.py +3 -3
- autobyteus/workflow/status/__init__.py +11 -0
- autobyteus/workflow/status/workflow_status.py +19 -0
- autobyteus/workflow/status/workflow_status_manager.py +48 -0
- autobyteus/workflow/streaming/__init__.py +2 -2
- autobyteus/workflow/streaming/workflow_event_notifier.py +7 -7
- autobyteus/workflow/streaming/workflow_stream_event_payloads.py +4 -4
- autobyteus/workflow/streaming/workflow_stream_events.py +3 -3
- autobyteus/workflow/utils/wait_for_idle.py +4 -4
- autobyteus-1.2.3.dist-info/METADATA +293 -0
- autobyteus-1.2.3.dist-info/RECORD +600 -0
- {autobyteus-1.2.0.dist-info → autobyteus-1.2.3.dist-info}/WHEEL +1 -1
- {autobyteus-1.2.0.dist-info → autobyteus-1.2.3.dist-info}/top_level.txt +0 -1
- autobyteus/agent/bootstrap_steps/agent_runtime_queue_initialization_step.py +0 -57
- autobyteus/agent/hooks/__init__.py +0 -16
- autobyteus/agent/hooks/base_phase_hook.py +0 -78
- autobyteus/agent/hooks/hook_definition.py +0 -36
- autobyteus/agent/hooks/hook_meta.py +0 -37
- autobyteus/agent/hooks/hook_registry.py +0 -106
- autobyteus/agent/llm_response_processor/provider_aware_tool_usage_processor.py +0 -103
- autobyteus/agent/phases/__init__.py +0 -18
- autobyteus/agent/phases/discover.py +0 -53
- autobyteus/agent/phases/manager.py +0 -265
- autobyteus/agent/phases/transition_decorator.py +0 -40
- autobyteus/agent/phases/transition_info.py +0 -33
- autobyteus/agent/remote_agent.py +0 -244
- autobyteus/agent/workspace/workspace_definition.py +0 -36
- autobyteus/agent/workspace/workspace_meta.py +0 -37
- autobyteus/agent/workspace/workspace_registry.py +0 -72
- autobyteus/agent_team/bootstrap_steps/agent_team_runtime_queue_initialization_step.py +0 -25
- autobyteus/agent_team/bootstrap_steps/coordinator_prompt_preparation_step.py +0 -85
- autobyteus/agent_team/phases/__init__.py +0 -11
- autobyteus/agent_team/phases/agent_team_operational_phase.py +0 -19
- autobyteus/agent_team/phases/agent_team_phase_manager.py +0 -48
- autobyteus/llm/api/bedrock_llm.py +0 -92
- autobyteus/llm/api/groq_llm.py +0 -94
- autobyteus/llm/api/nvidia_llm.py +0 -108
- autobyteus/llm/utils/token_pricing_config.py +0 -87
- autobyteus/person/examples/sample_persons.py +0 -14
- autobyteus/person/examples/sample_roles.py +0 -14
- autobyteus/person/person.py +0 -29
- autobyteus/person/role.py +0 -14
- autobyteus/rpc/__init__.py +0 -73
- autobyteus/rpc/client/__init__.py +0 -17
- autobyteus/rpc/client/abstract_client_connection.py +0 -124
- autobyteus/rpc/client/client_connection_manager.py +0 -153
- autobyteus/rpc/client/sse_client_connection.py +0 -306
- autobyteus/rpc/client/stdio_client_connection.py +0 -280
- autobyteus/rpc/config/__init__.py +0 -13
- autobyteus/rpc/config/agent_server_config.py +0 -153
- autobyteus/rpc/config/agent_server_registry.py +0 -152
- autobyteus/rpc/hosting.py +0 -244
- autobyteus/rpc/protocol.py +0 -244
- autobyteus/rpc/server/__init__.py +0 -20
- autobyteus/rpc/server/agent_server_endpoint.py +0 -181
- autobyteus/rpc/server/base_method_handler.py +0 -40
- autobyteus/rpc/server/method_handlers.py +0 -259
- autobyteus/rpc/server/sse_server_handler.py +0 -182
- autobyteus/rpc/server/stdio_server_handler.py +0 -151
- autobyteus/rpc/server_main.py +0 -198
- autobyteus/rpc/transport_type.py +0 -13
- autobyteus/tools/bash/__init__.py +0 -2
- autobyteus/tools/bash/bash_executor.py +0 -100
- autobyteus/tools/browser/__init__.py +0 -2
- autobyteus/tools/browser/session_aware/__init__.py +0 -0
- autobyteus/tools/browser/session_aware/browser_session_aware_navigate_to.py +0 -75
- autobyteus/tools/browser/session_aware/browser_session_aware_tool.py +0 -30
- autobyteus/tools/browser/session_aware/browser_session_aware_web_element_trigger.py +0 -154
- autobyteus/tools/browser/session_aware/browser_session_aware_webpage_reader.py +0 -89
- autobyteus/tools/browser/session_aware/browser_session_aware_webpage_screenshot_taker.py +0 -107
- autobyteus/tools/browser/session_aware/factory/__init__.py +0 -0
- autobyteus/tools/browser/session_aware/factory/browser_session_aware_web_element_trigger_factory.py +0 -14
- autobyteus/tools/browser/session_aware/factory/browser_session_aware_webpage_reader_factory.py +0 -26
- autobyteus/tools/browser/session_aware/factory/browser_session_aware_webpage_screenshot_taker_factory.py +0 -14
- autobyteus/tools/browser/session_aware/shared_browser_session.py +0 -11
- autobyteus/tools/browser/session_aware/shared_browser_session_manager.py +0 -25
- autobyteus/tools/browser/session_aware/web_element_action.py +0 -20
- autobyteus/tools/browser/standalone/__init__.py +0 -6
- autobyteus/tools/browser/standalone/factory/__init__.py +0 -0
- autobyteus/tools/browser/standalone/factory/webpage_reader_factory.py +0 -25
- autobyteus/tools/browser/standalone/factory/webpage_screenshot_taker_factory.py +0 -14
- autobyteus/tools/browser/standalone/navigate_to.py +0 -80
- autobyteus/tools/browser/standalone/web_page_pdf_generator.py +0 -97
- autobyteus/tools/browser/standalone/webpage_image_downloader.py +0 -165
- autobyteus/tools/browser/standalone/webpage_reader.py +0 -101
- autobyteus/tools/browser/standalone/webpage_screenshot_taker.py +0 -101
- autobyteus/tools/file/file_editor.py +0 -200
- autobyteus/tools/google_search.py +0 -149
- autobyteus/tools/timer.py +0 -171
- autobyteus/tools/usage/parsers/__init__.py +0 -22
- autobyteus/tools/usage/parsers/_json_extractor.py +0 -99
- autobyteus/tools/usage/parsers/_string_decoders.py +0 -18
- autobyteus/tools/usage/parsers/anthropic_xml_tool_usage_parser.py +0 -10
- autobyteus/tools/usage/parsers/base_parser.py +0 -41
- autobyteus/tools/usage/parsers/default_json_tool_usage_parser.py +0 -83
- autobyteus/tools/usage/parsers/default_xml_tool_usage_parser.py +0 -316
- autobyteus/tools/usage/parsers/exceptions.py +0 -13
- autobyteus/tools/usage/parsers/gemini_json_tool_usage_parser.py +0 -77
- autobyteus/tools/usage/parsers/openai_json_tool_usage_parser.py +0 -149
- autobyteus/tools/usage/parsers/provider_aware_tool_usage_parser.py +0 -59
- autobyteus/tools/usage/registries/tool_usage_parser_registry.py +0 -62
- autobyteus/workflow/phases/__init__.py +0 -11
- autobyteus/workflow/phases/workflow_operational_phase.py +0 -19
- autobyteus/workflow/phases/workflow_phase_manager.py +0 -48
- autobyteus-1.2.0.dist-info/METADATA +0 -205
- autobyteus-1.2.0.dist-info/RECORD +0 -496
- examples/__init__.py +0 -1
- examples/agent_team/__init__.py +0 -1
- examples/discover_phase_transitions.py +0 -104
- examples/run_browser_agent.py +0 -262
- examples/run_google_slides_agent.py +0 -287
- examples/run_mcp_browser_client.py +0 -174
- examples/run_mcp_google_slides_client.py +0 -270
- examples/run_mcp_list_tools.py +0 -189
- examples/run_poem_writer.py +0 -284
- examples/run_sqlite_agent.py +0 -295
- /autobyteus/{person → skills}/__init__.py +0 -0
- /autobyteus/{person/examples → tools/skill}/__init__.py +0 -0
- {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)
|
|
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
|
|
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(
|
|
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
|
|
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
|
|
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
|
]
|