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
autobyteus/llm/llm_factory.py
CHANGED
|
@@ -8,9 +8,9 @@ from autobyteus.llm.providers import LLMProvider
|
|
|
8
8
|
from autobyteus.llm.runtimes import LLMRuntime
|
|
9
9
|
from autobyteus.llm.utils.llm_config import LLMConfig, TokenPricingConfig
|
|
10
10
|
from autobyteus.llm.base_llm import BaseLLM
|
|
11
|
+
from autobyteus.utils.parameter_schema import ParameterSchema, ParameterDefinition, ParameterType
|
|
11
12
|
|
|
12
13
|
from autobyteus.llm.api.claude_llm import ClaudeLLM
|
|
13
|
-
from autobyteus.llm.api.bedrock_llm import BedrockLLM
|
|
14
14
|
from autobyteus.llm.api.mistral_llm import MistralLLM
|
|
15
15
|
from autobyteus.llm.api.openai_llm import OpenAILLM
|
|
16
16
|
from autobyteus.llm.api.deepseek_llm import DeepSeekLLM
|
|
@@ -19,6 +19,7 @@ from autobyteus.llm.api.grok_llm import GrokLLM
|
|
|
19
19
|
from autobyteus.llm.api.kimi_llm import KimiLLM
|
|
20
20
|
from autobyteus.llm.api.qwen_llm import QwenLLM
|
|
21
21
|
from autobyteus.llm.api.zhipu_llm import ZhipuLLM
|
|
22
|
+
from autobyteus.llm.api.minimax_llm import MinimaxLLM
|
|
22
23
|
from autobyteus.llm.ollama_provider import OllamaModelProvider
|
|
23
24
|
from autobyteus.llm.lmstudio_provider import LMStudioModelProvider
|
|
24
25
|
from autobyteus.utils.singleton import SingletonMeta
|
|
@@ -52,191 +53,207 @@ class LLMFactory(metaclass=SingletonMeta):
|
|
|
52
53
|
"""Initializes the registry with built-in models and discovers runtime models."""
|
|
53
54
|
# Hardcoded direct-API models. Runtime defaults to API.
|
|
54
55
|
supported_models = [
|
|
55
|
-
# OPENAI Provider Models
|
|
56
|
+
# OPENAI Provider Models (latest generation only)
|
|
56
57
|
LLMModel(
|
|
57
|
-
name="gpt-
|
|
58
|
-
value="gpt-
|
|
58
|
+
name="gpt-5.2",
|
|
59
|
+
value="gpt-5.2",
|
|
59
60
|
provider=LLMProvider.OPENAI,
|
|
60
61
|
llm_class=OpenAILLM,
|
|
61
|
-
canonical_name="gpt-
|
|
62
|
+
canonical_name="gpt-5.2",
|
|
62
63
|
default_config=LLMConfig(
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
llm_class=OpenAILLM,
|
|
84
|
-
canonical_name="gpt-5-mini",
|
|
85
|
-
default_config=LLMConfig(
|
|
86
|
-
uses_max_completion_tokens=True,
|
|
87
|
-
pricing_config=TokenPricingConfig(0.25, 2.00)
|
|
88
|
-
)
|
|
89
|
-
),
|
|
90
|
-
LLMModel(
|
|
91
|
-
name="gpt-5-nano",
|
|
92
|
-
value="gpt-5-nano",
|
|
93
|
-
provider=LLMProvider.OPENAI,
|
|
94
|
-
llm_class=OpenAILLM,
|
|
95
|
-
canonical_name="gpt-5-nano",
|
|
96
|
-
default_config=LLMConfig(
|
|
97
|
-
uses_max_completion_tokens=True,
|
|
98
|
-
pricing_config=TokenPricingConfig(0.05, 0.40)
|
|
99
|
-
)
|
|
64
|
+
pricing_config=TokenPricingConfig(1.75, 14.00)
|
|
65
|
+
),
|
|
66
|
+
config_schema=ParameterSchema(parameters=[
|
|
67
|
+
ParameterDefinition(
|
|
68
|
+
name="reasoning_effort",
|
|
69
|
+
param_type=ParameterType.ENUM,
|
|
70
|
+
description="Controls how hard the model thinks. Higher effort improves quality but can increase latency and cost.",
|
|
71
|
+
required=False,
|
|
72
|
+
default_value="none",
|
|
73
|
+
enum_values=["none", "low", "medium", "high", "xhigh"]
|
|
74
|
+
),
|
|
75
|
+
ParameterDefinition(
|
|
76
|
+
name="reasoning_summary",
|
|
77
|
+
param_type=ParameterType.ENUM,
|
|
78
|
+
description="Include a reasoning summary in the response when supported.",
|
|
79
|
+
required=False,
|
|
80
|
+
default_value="none",
|
|
81
|
+
enum_values=["none", "auto", "concise", "detailed"]
|
|
82
|
+
)
|
|
83
|
+
])
|
|
100
84
|
),
|
|
101
85
|
LLMModel(
|
|
102
|
-
name="gpt-5-chat-latest",
|
|
103
|
-
value="gpt-5-chat-latest",
|
|
86
|
+
name="gpt-5.2-chat-latest",
|
|
87
|
+
value="gpt-5.2-chat-latest",
|
|
104
88
|
provider=LLMProvider.OPENAI,
|
|
105
89
|
llm_class=OpenAILLM,
|
|
106
|
-
canonical_name="gpt-5-chat-latest",
|
|
90
|
+
canonical_name="gpt-5.2-chat-latest",
|
|
107
91
|
default_config=LLMConfig(
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
92
|
+
pricing_config=TokenPricingConfig(1.75, 14.00)
|
|
93
|
+
),
|
|
94
|
+
config_schema=ParameterSchema(parameters=[
|
|
95
|
+
ParameterDefinition(
|
|
96
|
+
name="reasoning_effort",
|
|
97
|
+
param_type=ParameterType.ENUM,
|
|
98
|
+
description="Controls how hard the model thinks. Higher effort improves quality but can increase latency and cost.",
|
|
99
|
+
required=False,
|
|
100
|
+
default_value="none",
|
|
101
|
+
enum_values=["none", "low", "medium", "high", "xhigh"]
|
|
102
|
+
),
|
|
103
|
+
ParameterDefinition(
|
|
104
|
+
name="reasoning_summary",
|
|
105
|
+
param_type=ParameterType.ENUM,
|
|
106
|
+
description="Include a reasoning summary in the response when supported.",
|
|
107
|
+
required=False,
|
|
108
|
+
default_value="none",
|
|
109
|
+
enum_values=["none", "auto", "concise", "detailed"]
|
|
110
|
+
)
|
|
111
|
+
])
|
|
111
112
|
),
|
|
113
|
+
# MISTRAL Provider Models
|
|
112
114
|
LLMModel(
|
|
113
|
-
name="
|
|
114
|
-
value="
|
|
115
|
-
provider=LLMProvider.
|
|
116
|
-
llm_class=
|
|
117
|
-
canonical_name="
|
|
115
|
+
name="mistral-large",
|
|
116
|
+
value="mistral-large-latest",
|
|
117
|
+
provider=LLMProvider.MISTRAL,
|
|
118
|
+
llm_class=MistralLLM,
|
|
119
|
+
canonical_name="mistral-large",
|
|
118
120
|
default_config=LLMConfig(
|
|
119
|
-
|
|
120
|
-
pricing_config=TokenPricingConfig(2.00, 8.00)
|
|
121
|
+
pricing_config=TokenPricingConfig(2.00, 6.00)
|
|
121
122
|
)
|
|
122
123
|
),
|
|
123
124
|
LLMModel(
|
|
124
|
-
name="
|
|
125
|
-
value="
|
|
126
|
-
provider=LLMProvider.
|
|
127
|
-
llm_class=
|
|
128
|
-
canonical_name="
|
|
125
|
+
name="devstral-2",
|
|
126
|
+
value="devstral-2512",
|
|
127
|
+
provider=LLMProvider.MISTRAL,
|
|
128
|
+
llm_class=MistralLLM,
|
|
129
|
+
canonical_name="devstral-2",
|
|
129
130
|
default_config=LLMConfig(
|
|
130
|
-
|
|
131
|
-
pricing_config=TokenPricingConfig(0.40,
|
|
131
|
+
# Pricing from Mistral launch: $0.40 input / $2.00 output per MTokens.
|
|
132
|
+
pricing_config=TokenPricingConfig(0.40, 2.00)
|
|
132
133
|
)
|
|
133
134
|
),
|
|
135
|
+
# GROK Provider Models (latest flagship + fast)
|
|
134
136
|
LLMModel(
|
|
135
|
-
name="
|
|
136
|
-
value="
|
|
137
|
-
provider=LLMProvider.
|
|
138
|
-
llm_class=
|
|
139
|
-
canonical_name="
|
|
137
|
+
name="grok-4",
|
|
138
|
+
value="grok-4",
|
|
139
|
+
provider=LLMProvider.GROK,
|
|
140
|
+
llm_class=GrokLLM,
|
|
141
|
+
canonical_name="grok-4",
|
|
140
142
|
default_config=LLMConfig(
|
|
141
|
-
|
|
142
|
-
pricing_config=TokenPricingConfig(0.10, 0.40)
|
|
143
|
+
pricing_config=TokenPricingConfig(3.00, 15.00)
|
|
143
144
|
)
|
|
144
145
|
),
|
|
145
146
|
LLMModel(
|
|
146
|
-
name="
|
|
147
|
-
value="
|
|
148
|
-
provider=LLMProvider.
|
|
149
|
-
llm_class=
|
|
150
|
-
canonical_name="
|
|
147
|
+
name="grok-4-1-fast-reasoning",
|
|
148
|
+
value="grok-4-1-fast-reasoning",
|
|
149
|
+
provider=LLMProvider.GROK,
|
|
150
|
+
llm_class=GrokLLM,
|
|
151
|
+
canonical_name="grok-4-1-fast-reasoning",
|
|
151
152
|
default_config=LLMConfig(
|
|
152
|
-
|
|
153
|
-
pricing_config=TokenPricingConfig(15.00, 60.00)
|
|
153
|
+
pricing_config=TokenPricingConfig(0.20, 0.50)
|
|
154
154
|
)
|
|
155
155
|
),
|
|
156
156
|
LLMModel(
|
|
157
|
-
name="
|
|
158
|
-
value="
|
|
159
|
-
provider=LLMProvider.
|
|
160
|
-
llm_class=
|
|
161
|
-
canonical_name="
|
|
157
|
+
name="grok-4-1-fast-non-reasoning",
|
|
158
|
+
value="grok-4-1-fast-non-reasoning",
|
|
159
|
+
provider=LLMProvider.GROK,
|
|
160
|
+
llm_class=GrokLLM,
|
|
161
|
+
canonical_name="grok-4-1-fast-non-reasoning",
|
|
162
162
|
default_config=LLMConfig(
|
|
163
|
-
|
|
164
|
-
pricing_config=TokenPricingConfig(1.0, 4.00)
|
|
163
|
+
pricing_config=TokenPricingConfig(0.20, 0.50)
|
|
165
164
|
)
|
|
166
165
|
),
|
|
167
|
-
# MISTRAL Provider Models
|
|
168
166
|
LLMModel(
|
|
169
|
-
name="
|
|
170
|
-
value="
|
|
171
|
-
provider=LLMProvider.
|
|
172
|
-
llm_class=
|
|
173
|
-
canonical_name="
|
|
167
|
+
name="grok-code-fast-1",
|
|
168
|
+
value="grok-code-fast-1",
|
|
169
|
+
provider=LLMProvider.GROK,
|
|
170
|
+
llm_class=GrokLLM,
|
|
171
|
+
canonical_name="grok-code-fast-1",
|
|
174
172
|
default_config=LLMConfig(
|
|
175
|
-
pricing_config=TokenPricingConfig(
|
|
173
|
+
pricing_config=TokenPricingConfig(0.20, 1.50)
|
|
176
174
|
)
|
|
177
175
|
),
|
|
178
176
|
# ANTHROPIC Provider Models
|
|
179
177
|
LLMModel(
|
|
180
|
-
name="claude-4-opus",
|
|
181
|
-
value="claude-opus-4-
|
|
178
|
+
name="claude-4.5-opus",
|
|
179
|
+
value="claude-opus-4-5-20251101",
|
|
182
180
|
provider=LLMProvider.ANTHROPIC,
|
|
183
181
|
llm_class=ClaudeLLM,
|
|
184
|
-
canonical_name="claude-4-opus",
|
|
182
|
+
canonical_name="claude-4.5-opus",
|
|
185
183
|
default_config=LLMConfig(
|
|
186
|
-
pricing_config=TokenPricingConfig(
|
|
187
|
-
)
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
184
|
+
pricing_config=TokenPricingConfig(5.00, 25.00)
|
|
185
|
+
),
|
|
186
|
+
config_schema=ParameterSchema(parameters=[
|
|
187
|
+
ParameterDefinition(
|
|
188
|
+
name="thinking_enabled",
|
|
189
|
+
param_type=ParameterType.BOOLEAN,
|
|
190
|
+
description="Enable extended thinking summaries in Claude responses",
|
|
191
|
+
required=False,
|
|
192
|
+
default_value=False
|
|
193
|
+
),
|
|
194
|
+
ParameterDefinition(
|
|
195
|
+
name="thinking_budget_tokens",
|
|
196
|
+
param_type=ParameterType.INTEGER,
|
|
197
|
+
description="Token budget for extended thinking (min 1024)",
|
|
198
|
+
required=False,
|
|
199
|
+
default_value=1024,
|
|
200
|
+
min_value=1024
|
|
201
|
+
)
|
|
202
|
+
])
|
|
199
203
|
),
|
|
200
204
|
LLMModel(
|
|
201
|
-
name="claude-4-sonnet",
|
|
202
|
-
value="claude-sonnet-4-
|
|
205
|
+
name="claude-4.5-sonnet",
|
|
206
|
+
value="claude-sonnet-4-5-20250929",
|
|
203
207
|
provider=LLMProvider.ANTHROPIC,
|
|
204
208
|
llm_class=ClaudeLLM,
|
|
205
|
-
canonical_name="claude-4-sonnet",
|
|
209
|
+
canonical_name="claude-4.5-sonnet",
|
|
206
210
|
default_config=LLMConfig(
|
|
207
211
|
pricing_config=TokenPricingConfig(3.00, 15.00)
|
|
208
|
-
)
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
default_config=LLMConfig(
|
|
227
|
-
# NOTE: Pricing is assumed to be the same as claude-4-opus
|
|
228
|
-
pricing_config=TokenPricingConfig(15.00, 75.00)
|
|
229
|
-
)
|
|
212
|
+
),
|
|
213
|
+
config_schema=ParameterSchema(parameters=[
|
|
214
|
+
ParameterDefinition(
|
|
215
|
+
name="thinking_enabled",
|
|
216
|
+
param_type=ParameterType.BOOLEAN,
|
|
217
|
+
description="Enable extended thinking summaries in Claude responses",
|
|
218
|
+
required=False,
|
|
219
|
+
default_value=False
|
|
220
|
+
),
|
|
221
|
+
ParameterDefinition(
|
|
222
|
+
name="thinking_budget_tokens",
|
|
223
|
+
param_type=ParameterType.INTEGER,
|
|
224
|
+
description="Token budget for extended thinking (min 1024)",
|
|
225
|
+
required=False,
|
|
226
|
+
default_value=1024,
|
|
227
|
+
min_value=1024
|
|
228
|
+
)
|
|
229
|
+
])
|
|
230
230
|
),
|
|
231
231
|
LLMModel(
|
|
232
|
-
name="
|
|
233
|
-
value="
|
|
232
|
+
name="claude-4.5-haiku",
|
|
233
|
+
value="claude-haiku-4-5-20251001",
|
|
234
234
|
provider=LLMProvider.ANTHROPIC,
|
|
235
|
-
llm_class=
|
|
236
|
-
canonical_name="claude-4-
|
|
235
|
+
llm_class=ClaudeLLM,
|
|
236
|
+
canonical_name="claude-4.5-haiku",
|
|
237
237
|
default_config=LLMConfig(
|
|
238
|
-
pricing_config=TokenPricingConfig(
|
|
239
|
-
)
|
|
238
|
+
pricing_config=TokenPricingConfig(1.00, 5.00)
|
|
239
|
+
),
|
|
240
|
+
config_schema=ParameterSchema(parameters=[
|
|
241
|
+
ParameterDefinition(
|
|
242
|
+
name="thinking_enabled",
|
|
243
|
+
param_type=ParameterType.BOOLEAN,
|
|
244
|
+
description="Enable extended thinking summaries in Claude responses",
|
|
245
|
+
required=False,
|
|
246
|
+
default_value=False
|
|
247
|
+
),
|
|
248
|
+
ParameterDefinition(
|
|
249
|
+
name="thinking_budget_tokens",
|
|
250
|
+
param_type=ParameterType.INTEGER,
|
|
251
|
+
description="Token budget for extended thinking (min 1024)",
|
|
252
|
+
required=False,
|
|
253
|
+
default_value=1024,
|
|
254
|
+
min_value=1024
|
|
255
|
+
)
|
|
256
|
+
])
|
|
240
257
|
),
|
|
241
258
|
# DEEPSEEK Provider Models
|
|
242
259
|
LLMModel(
|
|
@@ -266,34 +283,60 @@ class LLMFactory(metaclass=SingletonMeta):
|
|
|
266
283
|
),
|
|
267
284
|
# GEMINI Provider Models
|
|
268
285
|
LLMModel(
|
|
269
|
-
name="gemini-
|
|
270
|
-
value="gemini-
|
|
271
|
-
provider=LLMProvider.GEMINI,
|
|
272
|
-
llm_class=GeminiLLM,
|
|
273
|
-
canonical_name="gemini-2.5-pro",
|
|
274
|
-
default_config=LLMConfig(
|
|
275
|
-
pricing_config=TokenPricingConfig(2.50, 15.00)
|
|
276
|
-
)
|
|
277
|
-
),
|
|
278
|
-
LLMModel(
|
|
279
|
-
name="gemini-2.5-flash",
|
|
280
|
-
value="gemini-2.5-flash",
|
|
286
|
+
name="gemini-3-pro-preview",
|
|
287
|
+
value="gemini-3-pro-preview",
|
|
281
288
|
provider=LLMProvider.GEMINI,
|
|
282
289
|
llm_class=GeminiLLM,
|
|
283
|
-
canonical_name="gemini-
|
|
290
|
+
canonical_name="gemini-3-pro",
|
|
284
291
|
default_config=LLMConfig(
|
|
285
|
-
|
|
286
|
-
|
|
292
|
+
# Pricing from Gemini 3 Pro preview launch (per 1M tokens).
|
|
293
|
+
pricing_config=TokenPricingConfig(2.00, 12.00)
|
|
294
|
+
),
|
|
295
|
+
config_schema=ParameterSchema(parameters=[
|
|
296
|
+
ParameterDefinition(
|
|
297
|
+
name="thinking_level",
|
|
298
|
+
param_type=ParameterType.ENUM,
|
|
299
|
+
description="How deeply the model should reason before responding",
|
|
300
|
+
required=False,
|
|
301
|
+
default_value="minimal",
|
|
302
|
+
enum_values=["minimal", "low", "medium", "high"]
|
|
303
|
+
),
|
|
304
|
+
ParameterDefinition(
|
|
305
|
+
name="include_thoughts",
|
|
306
|
+
param_type=ParameterType.BOOLEAN,
|
|
307
|
+
description="Include model thought summaries in responses",
|
|
308
|
+
required=False,
|
|
309
|
+
default_value=False
|
|
310
|
+
)
|
|
311
|
+
])
|
|
287
312
|
),
|
|
288
313
|
LLMModel(
|
|
289
|
-
name="gemini-
|
|
290
|
-
value="gemini-
|
|
314
|
+
name="gemini-3-flash-preview",
|
|
315
|
+
value="gemini-3-flash-preview",
|
|
291
316
|
provider=LLMProvider.GEMINI,
|
|
292
317
|
llm_class=GeminiLLM,
|
|
293
|
-
canonical_name="gemini-
|
|
318
|
+
canonical_name="gemini-3-flash",
|
|
294
319
|
default_config=LLMConfig(
|
|
295
|
-
|
|
296
|
-
|
|
320
|
+
# Pricing from Gemini 3 Flash preview launch (per 1M tokens).
|
|
321
|
+
pricing_config=TokenPricingConfig(0.50, 3.00)
|
|
322
|
+
),
|
|
323
|
+
config_schema=ParameterSchema(parameters=[
|
|
324
|
+
ParameterDefinition(
|
|
325
|
+
name="thinking_level",
|
|
326
|
+
param_type=ParameterType.ENUM,
|
|
327
|
+
description="How deeply the model should reason before responding",
|
|
328
|
+
required=False,
|
|
329
|
+
default_value="minimal",
|
|
330
|
+
enum_values=["minimal", "low", "medium", "high"]
|
|
331
|
+
),
|
|
332
|
+
ParameterDefinition(
|
|
333
|
+
name="include_thoughts",
|
|
334
|
+
param_type=ParameterType.BOOLEAN,
|
|
335
|
+
description="Include model thought summaries in responses",
|
|
336
|
+
required=False,
|
|
337
|
+
default_value=False
|
|
338
|
+
)
|
|
339
|
+
])
|
|
297
340
|
),
|
|
298
341
|
# KIMI Provider Models
|
|
299
342
|
LLMModel(
|
|
@@ -363,24 +406,34 @@ class LLMFactory(metaclass=SingletonMeta):
|
|
|
363
406
|
),
|
|
364
407
|
# ZHIPU Provider Models
|
|
365
408
|
LLMModel(
|
|
366
|
-
name="glm-4.
|
|
367
|
-
value="glm-4.
|
|
409
|
+
name="glm-4.7",
|
|
410
|
+
value="glm-4.7",
|
|
368
411
|
provider=LLMProvider.ZHIPU,
|
|
369
412
|
llm_class=ZhipuLLM,
|
|
370
|
-
canonical_name="glm-4.
|
|
413
|
+
canonical_name="glm-4.7",
|
|
371
414
|
default_config=LLMConfig(
|
|
372
415
|
pricing_config=TokenPricingConfig(13.8, 13.8)
|
|
373
|
-
)
|
|
416
|
+
),
|
|
417
|
+
config_schema=ParameterSchema(parameters=[
|
|
418
|
+
ParameterDefinition(
|
|
419
|
+
name="thinking_type",
|
|
420
|
+
param_type=ParameterType.ENUM,
|
|
421
|
+
description="Enable or disable deep thinking",
|
|
422
|
+
required=False,
|
|
423
|
+
default_value="enabled",
|
|
424
|
+
enum_values=["enabled", "disabled"]
|
|
425
|
+
)
|
|
426
|
+
])
|
|
374
427
|
),
|
|
428
|
+
# MINIMAX Provider Models
|
|
375
429
|
LLMModel(
|
|
376
|
-
name="
|
|
377
|
-
value="
|
|
378
|
-
provider=LLMProvider.
|
|
379
|
-
llm_class=
|
|
380
|
-
canonical_name="
|
|
430
|
+
name="minimax-m2.1",
|
|
431
|
+
value="MiniMax-M2.1",
|
|
432
|
+
provider=LLMProvider.MINIMAX,
|
|
433
|
+
llm_class=MinimaxLLM,
|
|
434
|
+
canonical_name="minimax-m2.1",
|
|
381
435
|
default_config=LLMConfig(
|
|
382
|
-
pricing_config=TokenPricingConfig(
|
|
383
|
-
extra_params={ "extra_body": { "thinking": { "type": "enabled" } } }
|
|
436
|
+
pricing_config=TokenPricingConfig(0.15, 0.45)
|
|
384
437
|
)
|
|
385
438
|
),
|
|
386
439
|
]
|
|
@@ -439,18 +492,7 @@ class LLMFactory(metaclass=SingletonMeta):
|
|
|
439
492
|
"""Returns a list of all available models with their detailed info."""
|
|
440
493
|
LLMFactory.ensure_initialized()
|
|
441
494
|
models = sorted(LLMFactory._models_by_identifier.values(), key=lambda m: m.model_identifier)
|
|
442
|
-
return [
|
|
443
|
-
ModelInfo(
|
|
444
|
-
model_identifier=m.model_identifier,
|
|
445
|
-
display_name=m.name,
|
|
446
|
-
value=m.value,
|
|
447
|
-
canonical_name=m.canonical_name,
|
|
448
|
-
provider=m.provider.value,
|
|
449
|
-
runtime=m.runtime.value,
|
|
450
|
-
host_url=m.host_url
|
|
451
|
-
)
|
|
452
|
-
for m in models
|
|
453
|
-
]
|
|
495
|
+
return [m.to_model_info() for m in models]
|
|
454
496
|
|
|
455
497
|
@staticmethod
|
|
456
498
|
def list_models_by_provider(provider: LLMProvider) -> List[ModelInfo]:
|
|
@@ -460,18 +502,7 @@ class LLMFactory(metaclass=SingletonMeta):
|
|
|
460
502
|
[m for m in LLMFactory._models_by_identifier.values() if m.provider == provider],
|
|
461
503
|
key=lambda m: m.model_identifier
|
|
462
504
|
)
|
|
463
|
-
return [
|
|
464
|
-
ModelInfo(
|
|
465
|
-
model_identifier=m.model_identifier,
|
|
466
|
-
display_name=m.name,
|
|
467
|
-
value=m.value,
|
|
468
|
-
canonical_name=m.canonical_name,
|
|
469
|
-
provider=m.provider.value,
|
|
470
|
-
runtime=m.runtime.value,
|
|
471
|
-
host_url=m.host_url
|
|
472
|
-
)
|
|
473
|
-
for m in provider_models
|
|
474
|
-
]
|
|
505
|
+
return [m.to_model_info() for m in provider_models]
|
|
475
506
|
|
|
476
507
|
@staticmethod
|
|
477
508
|
def list_models_by_runtime(runtime: LLMRuntime) -> List[ModelInfo]:
|
|
@@ -481,18 +512,7 @@ class LLMFactory(metaclass=SingletonMeta):
|
|
|
481
512
|
[m for m in LLMFactory._models_by_identifier.values() if m.runtime == runtime],
|
|
482
513
|
key=lambda m: m.model_identifier
|
|
483
514
|
)
|
|
484
|
-
return [
|
|
485
|
-
ModelInfo(
|
|
486
|
-
model_identifier=m.model_identifier,
|
|
487
|
-
display_name=m.name,
|
|
488
|
-
value=m.value,
|
|
489
|
-
canonical_name=m.canonical_name,
|
|
490
|
-
provider=m.provider.value,
|
|
491
|
-
runtime=m.runtime.value,
|
|
492
|
-
host_url=m.host_url
|
|
493
|
-
)
|
|
494
|
-
for m in runtime_models
|
|
495
|
-
]
|
|
515
|
+
return [m.to_model_info() for m in runtime_models]
|
|
496
516
|
|
|
497
517
|
@staticmethod
|
|
498
518
|
def get_canonical_name(model_identifier: str) -> Optional[str]:
|
|
@@ -507,4 +527,62 @@ class LLMFactory(metaclass=SingletonMeta):
|
|
|
507
527
|
logger.warning(f"Could not find model with identifier '{model_identifier}' to get its canonical name.")
|
|
508
528
|
return None
|
|
509
529
|
|
|
530
|
+
@staticmethod
|
|
531
|
+
def reload_models(provider: LLMProvider) -> int:
|
|
532
|
+
"""
|
|
533
|
+
Reloads models for a specific provider.
|
|
534
|
+
Strategy: Clear-Then-Discover (Fail Fast).
|
|
535
|
+
|
|
536
|
+
1. Clears all existing models for the provider.
|
|
537
|
+
2. Fetches fresh models.
|
|
538
|
+
3. Registers them.
|
|
539
|
+
|
|
540
|
+
If step 2 fails, the registry for this provider remains empty, correctly reflecting
|
|
541
|
+
that the server is unreachable or returning no models.
|
|
542
|
+
"""
|
|
543
|
+
LLMFactory.ensure_initialized()
|
|
544
|
+
|
|
545
|
+
provider_handlers = {
|
|
546
|
+
LLMProvider.LMSTUDIO: LMStudioModelProvider,
|
|
547
|
+
LLMProvider.AUTOBYTEUS: AutobyteusModelProvider,
|
|
548
|
+
LLMProvider.OLLAMA: OllamaModelProvider,
|
|
549
|
+
}
|
|
550
|
+
|
|
551
|
+
handler = provider_handlers.get(provider)
|
|
552
|
+
if not handler:
|
|
553
|
+
logger.warning(f"Reloading is not supported for provider: {provider}")
|
|
554
|
+
return len(LLMFactory._models_by_provider.get(provider, []))
|
|
555
|
+
|
|
556
|
+
# 1. Clear old models for this provider immediately
|
|
557
|
+
current_provider_models = LLMFactory._models_by_provider.get(provider, [])
|
|
558
|
+
ids_to_remove = [m.model_identifier for m in current_provider_models]
|
|
559
|
+
|
|
560
|
+
logger.info(f"Clearing {len(ids_to_remove)} models for provider {provider} before discovery.")
|
|
561
|
+
|
|
562
|
+
for mid in ids_to_remove:
|
|
563
|
+
if mid in LLMFactory._models_by_identifier:
|
|
564
|
+
del LLMFactory._models_by_identifier[mid]
|
|
565
|
+
|
|
566
|
+
if provider in LLMFactory._models_by_provider:
|
|
567
|
+
del LLMFactory._models_by_provider[provider]
|
|
568
|
+
|
|
569
|
+
# 2. Fetch new models
|
|
570
|
+
try:
|
|
571
|
+
# We assume the handler has a static .get_models() method
|
|
572
|
+
if not hasattr(handler, 'get_models'):
|
|
573
|
+
logger.error(f"Provider handler {handler} does not implement get_models()")
|
|
574
|
+
return 0 # We already cleared everything
|
|
575
|
+
|
|
576
|
+
new_models: List[LLMModel] = handler.get_models()
|
|
577
|
+
except Exception as e:
|
|
578
|
+
logger.error(f"Failed to fetch models for {provider} during reload. Registry for this provider is now empty. Error: {e}")
|
|
579
|
+
return 0
|
|
580
|
+
|
|
581
|
+
# 3. Register new models
|
|
582
|
+
logger.info(f"Registering {len(new_models)} new models for provider {provider}.")
|
|
583
|
+
for model in new_models:
|
|
584
|
+
LLMFactory.register_model(model)
|
|
585
|
+
|
|
586
|
+
return len(new_models)
|
|
587
|
+
|
|
510
588
|
default_llm_factory = LLMFactory()
|