autobyteus 1.1.9__tar.gz → 1.2.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {autobyteus-1.1.9 → autobyteus-1.2.0}/PKG-INFO +3 -2
- autobyteus-1.2.0/autobyteus/clients/__init__.py +10 -0
- autobyteus-1.2.0/autobyteus/clients/autobyteus_client.py +318 -0
- autobyteus-1.2.0/autobyteus/clients/cert_utils.py +105 -0
- autobyteus-1.2.0/autobyteus/clients/certificates/cert.pem +34 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/llm/api/autobyteus_llm.py +1 -1
- autobyteus-1.2.0/autobyteus/llm/api/zhipu_llm.py +26 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/llm/autobyteus_provider.py +1 -1
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/llm/llm_factory.py +23 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/llm/ollama_provider_resolver.py +1 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/llm/providers.py +1 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/llm/token_counter/token_counter_factory.py +3 -0
- autobyteus-1.2.0/autobyteus/llm/token_counter/zhipu_token_counter.py +24 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/multimedia/audio/api/autobyteus_audio_client.py +1 -1
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/multimedia/audio/autobyteus_audio_provider.py +1 -1
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/multimedia/image/api/autobyteus_image_client.py +1 -1
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/multimedia/image/autobyteus_image_provider.py +1 -1
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/task_management/__init__.py +2 -1
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/task_management/schemas/task_definition.py +1 -1
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/task_management/schemas/task_status_report.py +1 -1
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/task_management/tools/__init__.py +2 -0
- autobyteus-1.2.0/autobyteus/task_management/tools/assign_task_to.py +125 -0
- autobyteus-1.2.0/autobyteus/tools/__init__.py +118 -0
- autobyteus-1.2.0/autobyteus/tools/download_media_tool.py +136 -0
- autobyteus-1.2.0/autobyteus/tools/file/file_editor.py +200 -0
- autobyteus-1.2.0/autobyteus/tools/usage/parsers/_string_decoders.py +18 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/usage/parsers/default_json_tool_usage_parser.py +9 -1
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/usage/parsers/default_xml_tool_usage_parser.py +15 -1
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/usage/parsers/gemini_json_tool_usage_parser.py +4 -1
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/usage/parsers/openai_json_tool_usage_parser.py +4 -1
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus.egg-info/PKG-INFO +3 -2
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus.egg-info/SOURCES.txt +10 -2
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus.egg-info/requires.txt +2 -1
- {autobyteus-1.1.9 → autobyteus-1.2.0}/setup.py +4 -3
- autobyteus-1.1.9/autobyteus/tools/__init__.py +0 -82
- autobyteus-1.1.9/autobyteus/tools/image_downloader.py +0 -99
- autobyteus-1.1.9/autobyteus/tools/pdf_downloader.py +0 -89
- {autobyteus-1.1.9 → autobyteus-1.2.0}/LICENSE +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/README.md +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/__init__.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/__init__.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/agent.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/bootstrap_steps/__init__.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/bootstrap_steps/agent_bootstrapper.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/bootstrap_steps/agent_runtime_queue_initialization_step.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/bootstrap_steps/base_bootstrap_step.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/bootstrap_steps/mcp_server_prewarming_step.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/bootstrap_steps/system_prompt_processing_step.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/bootstrap_steps/workspace_context_initialization_step.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/context/__init__.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/context/agent_config.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/context/agent_context.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/context/agent_context_registry.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/context/agent_runtime_state.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/events/__init__.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/events/agent_events.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/events/agent_input_event_queue_manager.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/events/notifiers.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/events/worker_event_dispatcher.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/exceptions.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/factory/__init__.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/factory/agent_factory.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/handlers/__init__.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/handlers/approved_tool_invocation_event_handler.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/handlers/base_event_handler.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/handlers/event_handler_registry.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/handlers/generic_event_handler.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/handlers/inter_agent_message_event_handler.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/handlers/lifecycle_event_logger.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/handlers/llm_complete_response_received_event_handler.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/handlers/llm_user_message_ready_event_handler.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/handlers/tool_execution_approval_event_handler.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/handlers/tool_invocation_request_event_handler.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/handlers/tool_result_event_handler.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/handlers/user_input_message_event_handler.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/hooks/__init__.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/hooks/base_phase_hook.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/hooks/hook_definition.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/hooks/hook_meta.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/hooks/hook_registry.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/input_processor/__init__.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/input_processor/base_user_input_processor.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/input_processor/processor_definition.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/input_processor/processor_meta.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/input_processor/processor_registry.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/llm_response_processor/__init__.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/llm_response_processor/base_processor.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/llm_response_processor/processor_definition.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/llm_response_processor/processor_meta.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/llm_response_processor/processor_registry.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/llm_response_processor/provider_aware_tool_usage_processor.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/message/__init__.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/message/agent_input_user_message.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/message/context_file.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/message/context_file_type.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/message/inter_agent_message.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/message/inter_agent_message_type.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/message/multimodal_message_builder.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/message/send_message_to.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/phases/__init__.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/phases/discover.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/phases/manager.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/phases/phase_enum.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/phases/transition_decorator.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/phases/transition_info.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/processor_option.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/remote_agent.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/runtime/__init__.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/runtime/agent_runtime.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/runtime/agent_thread_pool_manager.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/runtime/agent_worker.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/sender_type.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/shutdown_steps/__init__.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/shutdown_steps/agent_shutdown_orchestrator.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/shutdown_steps/base_shutdown_step.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/shutdown_steps/llm_instance_cleanup_step.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/shutdown_steps/mcp_server_cleanup_step.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/streaming/__init__.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/streaming/agent_event_stream.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/streaming/queue_streamer.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/streaming/stream_event_payloads.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/streaming/stream_events.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/system_prompt_processor/__init__.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/system_prompt_processor/base_processor.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/system_prompt_processor/processor_definition.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/system_prompt_processor/processor_meta.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/system_prompt_processor/processor_registry.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/system_prompt_processor/tool_manifest_injector_processor.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/tool_execution_result_processor/__init__.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/tool_execution_result_processor/base_processor.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/tool_execution_result_processor/processor_definition.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/tool_execution_result_processor/processor_meta.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/tool_execution_result_processor/processor_registry.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/tool_invocation.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/utils/__init__.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/utils/wait_for_idle.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/workspace/__init__.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/workspace/base_workspace.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/workspace/workspace_config.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/workspace/workspace_definition.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/workspace/workspace_meta.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent/workspace/workspace_registry.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent_team/__init__.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent_team/agent_team.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent_team/agent_team_builder.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent_team/base_agent_team.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent_team/bootstrap_steps/__init__.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent_team/bootstrap_steps/agent_configuration_preparation_step.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent_team/bootstrap_steps/agent_team_bootstrapper.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent_team/bootstrap_steps/agent_team_runtime_queue_initialization_step.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent_team/bootstrap_steps/base_agent_team_bootstrap_step.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent_team/bootstrap_steps/coordinator_initialization_step.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent_team/bootstrap_steps/coordinator_prompt_preparation_step.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent_team/bootstrap_steps/task_notifier_initialization_step.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent_team/bootstrap_steps/team_context_initialization_step.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent_team/context/__init__.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent_team/context/agent_team_config.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent_team/context/agent_team_context.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent_team/context/agent_team_runtime_state.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent_team/context/team_manager.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent_team/context/team_node_config.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent_team/events/__init__.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent_team/events/agent_team_event_dispatcher.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent_team/events/agent_team_events.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent_team/events/agent_team_input_event_queue_manager.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent_team/exceptions.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent_team/factory/__init__.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent_team/factory/agent_team_factory.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent_team/handlers/__init__.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent_team/handlers/agent_team_event_handler_registry.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent_team/handlers/base_agent_team_event_handler.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent_team/handlers/inter_agent_message_request_event_handler.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent_team/handlers/lifecycle_agent_team_event_handler.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent_team/handlers/process_user_message_event_handler.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent_team/handlers/tool_approval_team_event_handler.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent_team/phases/__init__.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent_team/phases/agent_team_operational_phase.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent_team/phases/agent_team_phase_manager.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent_team/runtime/__init__.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent_team/runtime/agent_team_runtime.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent_team/runtime/agent_team_worker.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent_team/shutdown_steps/__init__.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent_team/shutdown_steps/agent_team_shutdown_orchestrator.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent_team/shutdown_steps/agent_team_shutdown_step.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent_team/shutdown_steps/base_agent_team_shutdown_step.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent_team/shutdown_steps/bridge_cleanup_step.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent_team/shutdown_steps/sub_team_shutdown_step.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent_team/streaming/__init__.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent_team/streaming/agent_event_bridge.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent_team/streaming/agent_event_multiplexer.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent_team/streaming/agent_team_event_notifier.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent_team/streaming/agent_team_event_stream.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent_team/streaming/agent_team_stream_event_payloads.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent_team/streaming/agent_team_stream_events.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent_team/streaming/team_event_bridge.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent_team/task_notification/__init__.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent_team/task_notification/activation_policy.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent_team/task_notification/system_event_driven_agent_task_notifier.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent_team/task_notification/task_activator.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent_team/task_notification/task_notification_mode.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent_team/utils/__init__.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/agent_team/utils/wait_for_idle.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/check_requirements.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/cli/__init__.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/cli/agent_cli.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/cli/agent_team_tui/__init__.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/cli/agent_team_tui/app.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/cli/agent_team_tui/state.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/cli/agent_team_tui/widgets/__init__.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/cli/agent_team_tui/widgets/agent_list_sidebar.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/cli/agent_team_tui/widgets/focus_pane.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/cli/agent_team_tui/widgets/logo.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/cli/agent_team_tui/widgets/renderables.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/cli/agent_team_tui/widgets/shared.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/cli/agent_team_tui/widgets/status_bar.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/cli/agent_team_tui/widgets/task_board_panel.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/cli/cli_display.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/cli/workflow_tui/__init__.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/cli/workflow_tui/app.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/cli/workflow_tui/state.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/cli/workflow_tui/widgets/__init__.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/cli/workflow_tui/widgets/agent_list_sidebar.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/cli/workflow_tui/widgets/focus_pane.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/cli/workflow_tui/widgets/logo.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/cli/workflow_tui/widgets/renderables.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/cli/workflow_tui/widgets/shared.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/cli/workflow_tui/widgets/status_bar.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/events/__init__.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/events/event_emitter.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/events/event_manager.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/events/event_types.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/llm/__init__.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/llm/api/__init__.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/llm/api/bedrock_llm.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/llm/api/claude_llm.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/llm/api/deepseek_llm.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/llm/api/gemini_llm.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/llm/api/grok_llm.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/llm/api/groq_llm.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/llm/api/kimi_llm.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/llm/api/lmstudio_llm.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/llm/api/mistral_llm.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/llm/api/nvidia_llm.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/llm/api/ollama_llm.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/llm/api/openai_compatible_llm.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/llm/api/openai_llm.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/llm/api/qwen_llm.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/llm/base_llm.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/llm/extensions/__init__.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/llm/extensions/base_extension.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/llm/extensions/extension_registry.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/llm/extensions/token_usage_tracking_extension.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/llm/lmstudio_provider.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/llm/models.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/llm/ollama_provider.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/llm/runtimes.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/llm/token_counter/__init__.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/llm/token_counter/base_token_counter.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/llm/token_counter/claude_token_counter.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/llm/token_counter/deepseek_token_counter.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/llm/token_counter/kimi_token_counter.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/llm/token_counter/mistral_token_counter.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/llm/token_counter/openai_token_counter.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/llm/user_message.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/llm/utils/__init__.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/llm/utils/llm_config.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/llm/utils/media_payload_formatter.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/llm/utils/messages.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/llm/utils/rate_limiter.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/llm/utils/response_types.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/llm/utils/token_pricing_config.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/llm/utils/token_usage.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/llm/utils/token_usage_tracker.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/multimedia/__init__.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/multimedia/audio/__init__.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/multimedia/audio/api/__init__.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/multimedia/audio/api/gemini_audio_client.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/multimedia/audio/audio_client_factory.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/multimedia/audio/audio_model.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/multimedia/audio/base_audio_client.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/multimedia/image/__init__.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/multimedia/image/api/__init__.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/multimedia/image/api/gemini_image_client.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/multimedia/image/api/openai_image_client.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/multimedia/image/base_image_client.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/multimedia/image/image_client_factory.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/multimedia/image/image_model.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/multimedia/providers.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/multimedia/runtimes.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/multimedia/utils/__init__.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/multimedia/utils/api_utils.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/multimedia/utils/multimedia_config.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/multimedia/utils/response_types.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/person/__init__.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/person/examples/__init__.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/person/examples/sample_persons.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/person/examples/sample_roles.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/person/person.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/person/role.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/prompt/__init__.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/prompt/prompt_builder.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/prompt/prompt_template.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/rpc/__init__.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/rpc/client/__init__.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/rpc/client/abstract_client_connection.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/rpc/client/client_connection_manager.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/rpc/client/sse_client_connection.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/rpc/client/stdio_client_connection.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/rpc/config/__init__.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/rpc/config/agent_server_config.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/rpc/config/agent_server_registry.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/rpc/hosting.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/rpc/protocol.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/rpc/server/__init__.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/rpc/server/agent_server_endpoint.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/rpc/server/base_method_handler.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/rpc/server/method_handlers.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/rpc/server/sse_server_handler.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/rpc/server/stdio_server_handler.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/rpc/server_main.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/rpc/transport_type.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/task_management/base_task_board.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/task_management/converters/__init__.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/task_management/converters/task_board_converter.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/task_management/deliverable.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/task_management/deliverables/__init__.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/task_management/deliverables/file_deliverable.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/task_management/events.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/task_management/in_memory_task_board.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/task_management/schemas/__init__.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/task_management/schemas/deliverable_schema.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/task_management/task.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/task_management/tools/get_my_tasks.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/task_management/tools/get_task_board_status.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/task_management/tools/publish_task.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/task_management/tools/publish_tasks.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/task_management/tools/update_task_status.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/base_tool.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/bash/__init__.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/bash/bash_executor.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/browser/__init__.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/browser/session_aware/__init__.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/browser/session_aware/browser_session_aware_navigate_to.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/browser/session_aware/browser_session_aware_tool.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/browser/session_aware/browser_session_aware_web_element_trigger.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/browser/session_aware/browser_session_aware_webpage_reader.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/browser/session_aware/browser_session_aware_webpage_screenshot_taker.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/browser/session_aware/factory/__init__.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/browser/session_aware/factory/browser_session_aware_web_element_trigger_factory.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/browser/session_aware/factory/browser_session_aware_webpage_reader_factory.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/browser/session_aware/factory/browser_session_aware_webpage_screenshot_taker_factory.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/browser/session_aware/shared_browser_session.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/browser/session_aware/shared_browser_session_manager.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/browser/session_aware/web_element_action.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/browser/standalone/__init__.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/browser/standalone/factory/__init__.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/browser/standalone/factory/webpage_reader_factory.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/browser/standalone/factory/webpage_screenshot_taker_factory.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/browser/standalone/navigate_to.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/browser/standalone/web_page_pdf_generator.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/browser/standalone/webpage_image_downloader.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/browser/standalone/webpage_reader.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/browser/standalone/webpage_screenshot_taker.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/factory/__init__.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/factory/tool_factory.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/file/__init__.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/file/file_reader.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/file/file_writer.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/functional_tool.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/google_search.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/handlers/__init__.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/handlers/shell_handler.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/mcp/__init__.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/mcp/config_service.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/mcp/factory.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/mcp/schema_mapper.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/mcp/server/__init__.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/mcp/server/base_managed_mcp_server.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/mcp/server/http_managed_mcp_server.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/mcp/server/proxy.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/mcp/server/stdio_managed_mcp_server.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/mcp/server_instance_manager.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/mcp/tool.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/mcp/tool_registrar.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/mcp/types.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/multimedia/__init__.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/multimedia/audio_tools.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/multimedia/image_tools.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/multimedia/media_reader_tool.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/operation/__init__.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/operation/file_operation.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/operation/file_rename_operation.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/operation/operation.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/operation/shell_operation.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/pydantic_schema_converter.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/registry/__init__.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/registry/tool_definition.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/registry/tool_registry.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/timer.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/tool_category.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/tool_config.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/tool_meta.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/tool_origin.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/tool_state.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/usage/__init__.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/usage/formatters/__init__.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/usage/formatters/anthropic_json_example_formatter.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/usage/formatters/anthropic_json_schema_formatter.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/usage/formatters/base_formatter.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/usage/formatters/default_json_example_formatter.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/usage/formatters/default_json_schema_formatter.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/usage/formatters/default_xml_example_formatter.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/usage/formatters/default_xml_schema_formatter.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/usage/formatters/gemini_json_example_formatter.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/usage/formatters/gemini_json_schema_formatter.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/usage/formatters/google_json_example_formatter.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/usage/formatters/google_json_schema_formatter.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/usage/formatters/openai_json_example_formatter.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/usage/formatters/openai_json_schema_formatter.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/usage/parsers/__init__.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/usage/parsers/_json_extractor.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/usage/parsers/anthropic_xml_tool_usage_parser.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/usage/parsers/base_parser.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/usage/parsers/exceptions.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/usage/parsers/provider_aware_tool_usage_parser.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/usage/providers/__init__.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/usage/providers/tool_manifest_provider.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/usage/registries/__init__.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/usage/registries/tool_formatter_pair.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/usage/registries/tool_formatting_registry.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/usage/registries/tool_usage_parser_registry.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/tools/utils.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/utils/__init__.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/utils/dynamic_enum.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/utils/file_utils.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/utils/html_cleaner.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/utils/parameter_schema.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/utils/singleton.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/workflow/__init__.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/workflow/agentic_workflow.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/workflow/base_agentic_workflow.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/workflow/bootstrap_steps/__init__.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/workflow/bootstrap_steps/agent_tool_injection_step.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/workflow/bootstrap_steps/base_workflow_bootstrap_step.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/workflow/bootstrap_steps/coordinator_initialization_step.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/workflow/bootstrap_steps/coordinator_prompt_preparation_step.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/workflow/bootstrap_steps/workflow_bootstrapper.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/workflow/bootstrap_steps/workflow_runtime_queue_initialization_step.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/workflow/context/__init__.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/workflow/context/team_manager.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/workflow/context/workflow_config.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/workflow/context/workflow_context.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/workflow/context/workflow_node_config.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/workflow/context/workflow_runtime_state.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/workflow/events/__init__.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/workflow/events/workflow_event_dispatcher.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/workflow/events/workflow_events.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/workflow/events/workflow_input_event_queue_manager.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/workflow/exceptions.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/workflow/factory/__init__.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/workflow/factory/workflow_factory.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/workflow/handlers/__init__.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/workflow/handlers/base_workflow_event_handler.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/workflow/handlers/inter_agent_message_request_event_handler.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/workflow/handlers/lifecycle_workflow_event_handler.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/workflow/handlers/process_user_message_event_handler.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/workflow/handlers/tool_approval_workflow_event_handler.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/workflow/handlers/workflow_event_handler_registry.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/workflow/phases/__init__.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/workflow/phases/workflow_operational_phase.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/workflow/phases/workflow_phase_manager.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/workflow/runtime/__init__.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/workflow/runtime/workflow_runtime.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/workflow/runtime/workflow_worker.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/workflow/shutdown_steps/__init__.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/workflow/shutdown_steps/agent_team_shutdown_step.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/workflow/shutdown_steps/base_workflow_shutdown_step.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/workflow/shutdown_steps/bridge_cleanup_step.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/workflow/shutdown_steps/sub_workflow_shutdown_step.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/workflow/shutdown_steps/workflow_shutdown_orchestrator.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/workflow/streaming/__init__.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/workflow/streaming/agent_event_bridge.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/workflow/streaming/agent_event_multiplexer.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/workflow/streaming/workflow_event_bridge.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/workflow/streaming/workflow_event_notifier.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/workflow/streaming/workflow_event_stream.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/workflow/streaming/workflow_stream_event_payloads.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/workflow/streaming/workflow_stream_events.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/workflow/utils/__init__.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/workflow/utils/wait_for_idle.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/workflow/workflow_builder.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus.egg-info/dependency_links.txt +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus.egg-info/top_level.txt +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/examples/__init__.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/examples/agent_team/__init__.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/examples/discover_phase_transitions.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/examples/run_browser_agent.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/examples/run_google_slides_agent.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/examples/run_mcp_browser_client.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/examples/run_mcp_google_slides_client.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/examples/run_mcp_list_tools.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/examples/run_poem_writer.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/examples/run_sqlite_agent.py +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/pyproject.toml +0 -0
- {autobyteus-1.1.9 → autobyteus-1.2.0}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: autobyteus
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.2.0
|
|
4
4
|
Summary: Multi-Agent framework
|
|
5
5
|
Home-page: https://github.com/AutoByteus/autobyteus
|
|
6
6
|
Author: Ryan Zheng
|
|
@@ -16,14 +16,15 @@ Description-Content-Type: text/markdown
|
|
|
16
16
|
License-File: LICENSE
|
|
17
17
|
Requires-Dist: aiohttp
|
|
18
18
|
Requires-Dist: anthropic
|
|
19
|
-
Requires-Dist: autobyteus-llm-client==1.1.3
|
|
20
19
|
Requires-Dist: beautifulsoup4
|
|
21
20
|
Requires-Dist: boto3
|
|
22
21
|
Requires-Dist: botocore
|
|
23
22
|
Requires-Dist: brui-core==1.0.9
|
|
24
23
|
Requires-Dist: certifi==2025.4.26
|
|
24
|
+
Requires-Dist: cryptography
|
|
25
25
|
Requires-Dist: google-api-python-client
|
|
26
26
|
Requires-Dist: google-genai==1.38.0
|
|
27
|
+
Requires-Dist: httpx
|
|
27
28
|
Requires-Dist: Jinja2
|
|
28
29
|
Requires-Dist: mcp[cli]
|
|
29
30
|
Requires-Dist: mistral_common
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Client utilities for communicating with the Autobyteus LLM server.
|
|
3
|
+
|
|
4
|
+
Consolidates the previously standalone autobyteus-llm-client package so the
|
|
5
|
+
HTTP client can evolve alongside the rest of the framework.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from .autobyteus_client import AutobyteusClient, CertificateError
|
|
9
|
+
|
|
10
|
+
__all__ = ["AutobyteusClient", "CertificateError"]
|
|
@@ -0,0 +1,318 @@
|
|
|
1
|
+
import json
|
|
2
|
+
import logging
|
|
3
|
+
import os
|
|
4
|
+
from pathlib import Path
|
|
5
|
+
from typing import Any, AsyncGenerator, Dict, List, Optional, Union
|
|
6
|
+
from urllib.parse import urljoin
|
|
7
|
+
|
|
8
|
+
import httpx
|
|
9
|
+
|
|
10
|
+
logger = logging.getLogger(__name__)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class CertificateError(Exception):
|
|
14
|
+
"""Custom exception for certificate-related errors."""
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class AutobyteusClient:
|
|
18
|
+
"""Async + sync HTTP client for talking to an Autobyteus LLM server."""
|
|
19
|
+
|
|
20
|
+
DEFAULT_SERVER_URL = "https://api.autobyteus.com"
|
|
21
|
+
API_KEY_HEADER = "AUTOBYTEUS_API_KEY"
|
|
22
|
+
API_KEY_ENV_VAR = "AUTOBYTEUS_API_KEY"
|
|
23
|
+
SSL_CERT_FILE_ENV_VAR = "AUTOBYTEUS_SSL_CERT_FILE"
|
|
24
|
+
|
|
25
|
+
def __init__(self, server_url: Optional[str] = None):
|
|
26
|
+
"""
|
|
27
|
+
Initialize the client.
|
|
28
|
+
|
|
29
|
+
Args:
|
|
30
|
+
server_url: Explicit server URL. Takes precedence over env vars.
|
|
31
|
+
"""
|
|
32
|
+
self.server_url = server_url or os.getenv(
|
|
33
|
+
"AUTOBYTEUS_LLM_SERVER_URL", self.DEFAULT_SERVER_URL
|
|
34
|
+
)
|
|
35
|
+
self.api_key = os.getenv(self.API_KEY_ENV_VAR)
|
|
36
|
+
|
|
37
|
+
if not self.api_key:
|
|
38
|
+
raise ValueError(
|
|
39
|
+
f"{self.API_KEY_ENV_VAR} environment variable is required. "
|
|
40
|
+
"Please set it before initializing the client."
|
|
41
|
+
)
|
|
42
|
+
|
|
43
|
+
custom_cert_path_str = os.getenv(self.SSL_CERT_FILE_ENV_VAR)
|
|
44
|
+
verify_param: Union[str, bool, Path]
|
|
45
|
+
|
|
46
|
+
if custom_cert_path_str:
|
|
47
|
+
custom_cert_path = Path(custom_cert_path_str)
|
|
48
|
+
if not custom_cert_path.exists():
|
|
49
|
+
raise CertificateError(
|
|
50
|
+
f"Custom SSL certificate file specified via {self.SSL_CERT_FILE_ENV_VAR} "
|
|
51
|
+
f"not found at: {custom_cert_path}"
|
|
52
|
+
)
|
|
53
|
+
if not custom_cert_path.is_file():
|
|
54
|
+
raise CertificateError(
|
|
55
|
+
f"Custom SSL certificate path specified via {self.SSL_CERT_FILE_ENV_VAR} "
|
|
56
|
+
f"is not a file: {custom_cert_path}"
|
|
57
|
+
)
|
|
58
|
+
verify_param = str(custom_cert_path)
|
|
59
|
+
logger.info(
|
|
60
|
+
"Using custom SSL certificate file for TLS verification: %s. "
|
|
61
|
+
"This is the recommended secure method for servers with self-signed or "
|
|
62
|
+
"private CA certificates.",
|
|
63
|
+
verify_param,
|
|
64
|
+
)
|
|
65
|
+
else:
|
|
66
|
+
verify_param = False
|
|
67
|
+
logger.warning(
|
|
68
|
+
"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n"
|
|
69
|
+
"SECURITY WARNING: SSL certificate verification is DISABLED because the \n"
|
|
70
|
+
f"'{self.SSL_CERT_FILE_ENV_VAR}' environment variable is not set.\n"
|
|
71
|
+
"This configuration is INSECURE and makes the client vulnerable to \n"
|
|
72
|
+
"Man-in-the-Middle (MitM) attacks. It should ONLY be used for development \n"
|
|
73
|
+
"or testing in trusted environments with self-signed certificates if \n"
|
|
74
|
+
"providing the certificate path is not possible.\n"
|
|
75
|
+
"FOR PRODUCTION or secure environments with self-signed certificates, \n"
|
|
76
|
+
f"it is STRONGLY RECOMMENDED to set the '{self.SSL_CERT_FILE_ENV_VAR}' \n"
|
|
77
|
+
"environment variable to the path of the server's certificate (.pem file) \n"
|
|
78
|
+
"to enable proper TLS verification.\n"
|
|
79
|
+
"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
|
|
80
|
+
)
|
|
81
|
+
|
|
82
|
+
timeout_config = httpx.Timeout(connect=10.0, read=None, write=None, pool=None)
|
|
83
|
+
|
|
84
|
+
try:
|
|
85
|
+
self.async_client = httpx.AsyncClient(
|
|
86
|
+
verify=verify_param,
|
|
87
|
+
headers={self.API_KEY_HEADER: self.api_key},
|
|
88
|
+
timeout=timeout_config,
|
|
89
|
+
)
|
|
90
|
+
self.sync_client = httpx.Client(
|
|
91
|
+
verify=verify_param,
|
|
92
|
+
headers={self.API_KEY_HEADER: self.api_key},
|
|
93
|
+
timeout=timeout_config,
|
|
94
|
+
)
|
|
95
|
+
except Exception as exc:
|
|
96
|
+
logger.error(
|
|
97
|
+
"Failed to initialize httpx client with SSL configuration (verify='%s'): %s",
|
|
98
|
+
verify_param,
|
|
99
|
+
exc,
|
|
100
|
+
)
|
|
101
|
+
raise RuntimeError(f"HTTP client initialization failed: {exc}") from exc
|
|
102
|
+
|
|
103
|
+
logger.info("Initialized Autobyteus client with server URL: %s", self.server_url)
|
|
104
|
+
|
|
105
|
+
async def get_available_llm_models(self) -> Dict[str, Any]:
|
|
106
|
+
"""Async discovery of available LLM models."""
|
|
107
|
+
try:
|
|
108
|
+
response = await self.async_client.get(
|
|
109
|
+
urljoin(self.server_url, "/models/llm")
|
|
110
|
+
)
|
|
111
|
+
response.raise_for_status()
|
|
112
|
+
return response.json()
|
|
113
|
+
except httpx.HTTPError as exc:
|
|
114
|
+
logger.error("Async LLM model fetch error: %s", exc)
|
|
115
|
+
raise RuntimeError(str(exc)) from exc
|
|
116
|
+
|
|
117
|
+
def get_available_llm_models_sync(self) -> Dict[str, Any]:
|
|
118
|
+
"""Synchronous discovery of available LLM models."""
|
|
119
|
+
try:
|
|
120
|
+
response = self.sync_client.get(urljoin(self.server_url, "/models/llm"))
|
|
121
|
+
response.raise_for_status()
|
|
122
|
+
return response.json()
|
|
123
|
+
except httpx.HTTPError as exc:
|
|
124
|
+
logger.error("Sync LLM model fetch error: %s", exc)
|
|
125
|
+
raise RuntimeError(str(exc)) from exc
|
|
126
|
+
|
|
127
|
+
async def get_available_image_models(self) -> Dict[str, Any]:
|
|
128
|
+
"""Async discovery of available image models."""
|
|
129
|
+
try:
|
|
130
|
+
response = await self.async_client.get(
|
|
131
|
+
urljoin(self.server_url, "/models/image")
|
|
132
|
+
)
|
|
133
|
+
response.raise_for_status()
|
|
134
|
+
return response.json()
|
|
135
|
+
except httpx.HTTPError as exc:
|
|
136
|
+
logger.error("Async image model fetch error: %s", exc)
|
|
137
|
+
raise RuntimeError(str(exc)) from exc
|
|
138
|
+
|
|
139
|
+
def get_available_image_models_sync(self) -> Dict[str, Any]:
|
|
140
|
+
"""Synchronous discovery of available image models."""
|
|
141
|
+
try:
|
|
142
|
+
response = self.sync_client.get(
|
|
143
|
+
urljoin(self.server_url, "/models/image")
|
|
144
|
+
)
|
|
145
|
+
response.raise_for_status()
|
|
146
|
+
return response.json()
|
|
147
|
+
except httpx.HTTPError as exc:
|
|
148
|
+
logger.error("Sync image model fetch error: %s", exc)
|
|
149
|
+
raise RuntimeError(str(exc)) from exc
|
|
150
|
+
|
|
151
|
+
async def get_available_audio_models(self) -> Dict[str, Any]:
|
|
152
|
+
"""Async discovery of available audio models."""
|
|
153
|
+
try:
|
|
154
|
+
response = await self.async_client.get(
|
|
155
|
+
urljoin(self.server_url, "/models/audio")
|
|
156
|
+
)
|
|
157
|
+
response.raise_for_status()
|
|
158
|
+
return response.json()
|
|
159
|
+
except httpx.HTTPError as exc:
|
|
160
|
+
logger.error("Async audio model fetch error: %s", exc)
|
|
161
|
+
raise RuntimeError(str(exc)) from exc
|
|
162
|
+
|
|
163
|
+
def get_available_audio_models_sync(self) -> Dict[str, Any]:
|
|
164
|
+
"""Synchronous discovery of available audio models."""
|
|
165
|
+
try:
|
|
166
|
+
response = self.sync_client.get(
|
|
167
|
+
urljoin(self.server_url, "/models/audio")
|
|
168
|
+
)
|
|
169
|
+
response.raise_for_status()
|
|
170
|
+
return response.json()
|
|
171
|
+
except httpx.HTTPError as exc:
|
|
172
|
+
logger.error("Sync audio model fetch error: %s", exc)
|
|
173
|
+
raise RuntimeError(str(exc)) from exc
|
|
174
|
+
|
|
175
|
+
async def send_message(
|
|
176
|
+
self,
|
|
177
|
+
conversation_id: str,
|
|
178
|
+
model_name: str,
|
|
179
|
+
user_message: str,
|
|
180
|
+
image_urls: Optional[List[str]] = None,
|
|
181
|
+
audio_urls: Optional[List[str]] = None,
|
|
182
|
+
video_urls: Optional[List[str]] = None,
|
|
183
|
+
) -> Dict[str, Any]:
|
|
184
|
+
"""Send a message and get a response."""
|
|
185
|
+
try:
|
|
186
|
+
data = {
|
|
187
|
+
"conversation_id": conversation_id,
|
|
188
|
+
"model_name": model_name,
|
|
189
|
+
"user_message": user_message,
|
|
190
|
+
"image_urls": image_urls or [],
|
|
191
|
+
"audio_urls": audio_urls or [],
|
|
192
|
+
"video_urls": video_urls or [],
|
|
193
|
+
}
|
|
194
|
+
response = await self.async_client.post(
|
|
195
|
+
urljoin(self.server_url, "/send-message"),
|
|
196
|
+
json=data,
|
|
197
|
+
)
|
|
198
|
+
response.raise_for_status()
|
|
199
|
+
return response.json()
|
|
200
|
+
except httpx.HTTPError as exc:
|
|
201
|
+
logger.error("Error sending message: %s", exc)
|
|
202
|
+
raise RuntimeError(str(exc)) from exc
|
|
203
|
+
|
|
204
|
+
async def stream_message(
|
|
205
|
+
self,
|
|
206
|
+
conversation_id: str,
|
|
207
|
+
model_name: str,
|
|
208
|
+
user_message: str,
|
|
209
|
+
image_urls: Optional[List[str]] = None,
|
|
210
|
+
audio_urls: Optional[List[str]] = None,
|
|
211
|
+
video_urls: Optional[List[str]] = None,
|
|
212
|
+
) -> AsyncGenerator[Dict[str, Any], None]:
|
|
213
|
+
"""Stream a message and get responses."""
|
|
214
|
+
try:
|
|
215
|
+
data = {
|
|
216
|
+
"conversation_id": conversation_id,
|
|
217
|
+
"model_name": model_name,
|
|
218
|
+
"user_message": user_message,
|
|
219
|
+
"image_urls": image_urls or [],
|
|
220
|
+
"audio_urls": audio_urls or [],
|
|
221
|
+
"video_urls": video_urls or [],
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
async with self.async_client.stream(
|
|
225
|
+
"POST",
|
|
226
|
+
urljoin(self.server_url, "/stream-message"),
|
|
227
|
+
json=data,
|
|
228
|
+
) as response:
|
|
229
|
+
response.raise_for_status()
|
|
230
|
+
|
|
231
|
+
async for line in response.aiter_lines():
|
|
232
|
+
if line.startswith("data: "):
|
|
233
|
+
try:
|
|
234
|
+
chunk = json.loads(line[6:])
|
|
235
|
+
if "error" in chunk:
|
|
236
|
+
raise RuntimeError(chunk["error"])
|
|
237
|
+
yield chunk
|
|
238
|
+
except json.JSONDecodeError as exc:
|
|
239
|
+
logger.error("Failed to parse stream chunk: %s", exc)
|
|
240
|
+
raise RuntimeError("Invalid stream response format") from exc
|
|
241
|
+
|
|
242
|
+
except httpx.HTTPError as exc:
|
|
243
|
+
logger.error("Stream error: %s", exc)
|
|
244
|
+
raise RuntimeError(str(exc)) from exc
|
|
245
|
+
|
|
246
|
+
async def generate_image(
|
|
247
|
+
self,
|
|
248
|
+
model_name: str,
|
|
249
|
+
prompt: str,
|
|
250
|
+
input_image_urls: Optional[List[str]] = None,
|
|
251
|
+
mask_url: Optional[str] = None,
|
|
252
|
+
generation_config: Optional[Dict[str, Any]] = None,
|
|
253
|
+
) -> Dict[str, Any]:
|
|
254
|
+
"""Generate or edit an image and return the server response."""
|
|
255
|
+
try:
|
|
256
|
+
data = {
|
|
257
|
+
"model_name": model_name,
|
|
258
|
+
"prompt": prompt,
|
|
259
|
+
"input_image_urls": input_image_urls or [],
|
|
260
|
+
"mask_url": mask_url,
|
|
261
|
+
"generation_config": generation_config or {},
|
|
262
|
+
}
|
|
263
|
+
response = await self.async_client.post(
|
|
264
|
+
urljoin(self.server_url, "/generate-image"),
|
|
265
|
+
json=data,
|
|
266
|
+
)
|
|
267
|
+
response.raise_for_status()
|
|
268
|
+
return response.json()
|
|
269
|
+
except httpx.HTTPError as exc:
|
|
270
|
+
logger.error("Error generating image: %s", exc)
|
|
271
|
+
raise RuntimeError(str(exc)) from exc
|
|
272
|
+
|
|
273
|
+
async def generate_speech(
|
|
274
|
+
self,
|
|
275
|
+
model_name: str,
|
|
276
|
+
prompt: str,
|
|
277
|
+
generation_config: Optional[Dict[str, Any]] = None,
|
|
278
|
+
) -> Dict[str, Any]:
|
|
279
|
+
"""Generate speech from text and return the server response."""
|
|
280
|
+
try:
|
|
281
|
+
data = {
|
|
282
|
+
"model_name": model_name,
|
|
283
|
+
"prompt": prompt,
|
|
284
|
+
"generation_config": generation_config or {},
|
|
285
|
+
}
|
|
286
|
+
response = await self.async_client.post(
|
|
287
|
+
urljoin(self.server_url, "/generate-speech"),
|
|
288
|
+
json=data,
|
|
289
|
+
)
|
|
290
|
+
response.raise_for_status()
|
|
291
|
+
return response.json()
|
|
292
|
+
except httpx.HTTPError as exc:
|
|
293
|
+
logger.error("Error generating speech: %s", exc)
|
|
294
|
+
raise RuntimeError(str(exc)) from exc
|
|
295
|
+
|
|
296
|
+
async def cleanup(self, conversation_id: str) -> Dict[str, Any]:
|
|
297
|
+
"""Clean up a conversation."""
|
|
298
|
+
try:
|
|
299
|
+
response = await self.async_client.post(
|
|
300
|
+
urljoin(self.server_url, "/cleanup"),
|
|
301
|
+
json={"conversation_id": conversation_id},
|
|
302
|
+
)
|
|
303
|
+
response.raise_for_status()
|
|
304
|
+
return response.json()
|
|
305
|
+
except httpx.HTTPError as exc:
|
|
306
|
+
logger.error("Cleanup error: %s", exc)
|
|
307
|
+
raise RuntimeError(str(exc)) from exc
|
|
308
|
+
|
|
309
|
+
async def close(self) -> None:
|
|
310
|
+
"""Close both HTTP clients."""
|
|
311
|
+
await self.async_client.aclose()
|
|
312
|
+
self.sync_client.close()
|
|
313
|
+
|
|
314
|
+
async def __aenter__(self) -> "AutobyteusClient":
|
|
315
|
+
return self
|
|
316
|
+
|
|
317
|
+
async def __aexit__(self, exc_type, exc, tb) -> None: # type: ignore[override]
|
|
318
|
+
await self.close()
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import logging
|
|
2
|
+
from datetime import datetime
|
|
3
|
+
from pathlib import Path
|
|
4
|
+
from typing import Dict, Optional, Union
|
|
5
|
+
|
|
6
|
+
from cryptography import x509
|
|
7
|
+
from cryptography.hazmat.backends import default_backend
|
|
8
|
+
from cryptography.hazmat.primitives import hashes
|
|
9
|
+
|
|
10
|
+
logger = logging.getLogger(__name__)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class CertificateError(Exception):
|
|
14
|
+
"""Custom exception for certificate-related errors."""
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def get_certificate_info(cert_path: Union[str, Path]) -> Dict[str, object]:
|
|
18
|
+
"""
|
|
19
|
+
Retrieve certificate information including fingerprint and validity window.
|
|
20
|
+
"""
|
|
21
|
+
try:
|
|
22
|
+
cert_path = Path(cert_path)
|
|
23
|
+
cert_data = cert_path.read_bytes()
|
|
24
|
+
cert = x509.load_pem_x509_certificate(cert_data, default_backend())
|
|
25
|
+
|
|
26
|
+
cert_der = cert.fingerprint(hashes.SHA256())
|
|
27
|
+
fingerprint = ":".join(f"{byte:02X}" for byte in cert_der)
|
|
28
|
+
|
|
29
|
+
now = datetime.utcnow()
|
|
30
|
+
days_until_expiry = (cert.not_valid_after - now).days
|
|
31
|
+
|
|
32
|
+
return {
|
|
33
|
+
"subject": cert.subject.get_attributes_for_oid(x509.NameOID.COMMON_NAME)[
|
|
34
|
+
0
|
|
35
|
+
].value,
|
|
36
|
+
"issuer": cert.issuer.get_attributes_for_oid(x509.NameOID.COMMON_NAME)[
|
|
37
|
+
0
|
|
38
|
+
].value,
|
|
39
|
+
"valid_from": cert.not_valid_before,
|
|
40
|
+
"valid_until": cert.not_valid_after,
|
|
41
|
+
"fingerprint": fingerprint,
|
|
42
|
+
"is_valid": cert.not_valid_before < now < cert.not_valid_after,
|
|
43
|
+
"days_until_expiry": days_until_expiry,
|
|
44
|
+
"cert_data": cert_data,
|
|
45
|
+
"cert": cert,
|
|
46
|
+
}
|
|
47
|
+
except Exception as exc: # pragma: no cover - defensive logging
|
|
48
|
+
raise CertificateError(f"Failed to get certificate info: {exc}") from exc
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
def verify_certificate(
|
|
52
|
+
cert_path: Union[str, Path],
|
|
53
|
+
expected_fingerprint: Optional[str] = None,
|
|
54
|
+
warn_expiry_days: int = 30,
|
|
55
|
+
) -> Dict[str, object]:
|
|
56
|
+
"""
|
|
57
|
+
Verify the certificate's validity and optional fingerprint match.
|
|
58
|
+
"""
|
|
59
|
+
try:
|
|
60
|
+
info = get_certificate_info(cert_path)
|
|
61
|
+
|
|
62
|
+
if not info["is_valid"]:
|
|
63
|
+
if datetime.utcnow() < info["valid_from"]:
|
|
64
|
+
raise CertificateError("Certificate is not yet valid")
|
|
65
|
+
raise CertificateError(
|
|
66
|
+
f"Certificate has expired on {info['valid_until'].strftime('%Y-%m-%d')}"
|
|
67
|
+
)
|
|
68
|
+
|
|
69
|
+
if expected_fingerprint:
|
|
70
|
+
expected = expected_fingerprint.replace(" ", "").upper()
|
|
71
|
+
actual = str(info["fingerprint"]).replace(" ", "")
|
|
72
|
+
if actual != expected:
|
|
73
|
+
raise CertificateError(
|
|
74
|
+
"Certificate fingerprint mismatch. "
|
|
75
|
+
f"Expected: {expected}\nGot: {actual}"
|
|
76
|
+
)
|
|
77
|
+
logger.info("Certificate fingerprint verified successfully")
|
|
78
|
+
else:
|
|
79
|
+
logger.warning(
|
|
80
|
+
"Certificate fingerprint verification skipped. "
|
|
81
|
+
"Set AUTOBYTEUS_CERT_FINGERPRINT to enable this security feature. "
|
|
82
|
+
"Current certificate fingerprint: %s",
|
|
83
|
+
info["fingerprint"],
|
|
84
|
+
)
|
|
85
|
+
|
|
86
|
+
logger.info(
|
|
87
|
+
"Certificate valid from %s to %s",
|
|
88
|
+
info["valid_from"],
|
|
89
|
+
info["valid_until"],
|
|
90
|
+
)
|
|
91
|
+
logger.info("Certificate fingerprint (SHA256): %s", info["fingerprint"])
|
|
92
|
+
logger.info("Certificate subject: %s", info["subject"])
|
|
93
|
+
|
|
94
|
+
if info["days_until_expiry"] <= warn_expiry_days:
|
|
95
|
+
logger.warning(
|
|
96
|
+
"Certificate will expire in %s days on %s",
|
|
97
|
+
info["days_until_expiry"],
|
|
98
|
+
info["valid_until"].strftime("%Y-%m-%d"),
|
|
99
|
+
)
|
|
100
|
+
|
|
101
|
+
return info
|
|
102
|
+
except CertificateError:
|
|
103
|
+
raise
|
|
104
|
+
except Exception as exc: # pragma: no cover - defensive logging
|
|
105
|
+
raise CertificateError(f"Certificate verification failed: {exc}") from exc
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
|
2
|
+
MIIF4TCCA8mgAwIBAgIUeyxZ82RF2o2HFOrxZXBmqo5DBUwwDQYJKoZIhvcNAQEL
|
|
3
|
+
BQAwdTELMAkGA1UEBhMCVVMxDjAMBgNVBAgMBVN0YXRlMQ0wCwYDVQQHDARDaXR5
|
|
4
|
+
MRMwEQYDVQQKDApBdXRvYnl0ZXVzMRUwEwYDVQQLDAxBUEkgU2VydmljZXMxGzAZ
|
|
5
|
+
BgNVBAMMEmFwaS5hdXRvYnl0ZXVzLmNvbTAeFw0yNTAxMjUxNjUyMjhaFw0yNjAx
|
|
6
|
+
MjUxNjUyMjhaMHUxCzAJBgNVBAYTAlVTMQ4wDAYDVQQIDAVTdGF0ZTENMAsGA1UE
|
|
7
|
+
BwwEQ2l0eTETMBEGA1UECgwKQXV0b2J5dGV1czEVMBMGA1UECwwMQVBJIFNlcnZp
|
|
8
|
+
Y2VzMRswGQYDVQQDDBJhcGkuYXV0b2J5dGV1cy5jb20wggIiMA0GCSqGSIb3DQEB
|
|
9
|
+
AQUAA4ICDwAwggIKAoICAQDXIlOVOkioEVpq7q+TY7/CUsraIYMy+liXM0ef+oJh
|
|
10
|
+
qV7hBRJPgW79ZJIsBNWlGKSB3DRe5mSET/CmeOeGxpH6LJZxMbXfJOHNHtnZnpNV
|
|
11
|
+
6k/EhrjRMSavMwNvMo4d8NkmH+K/aBJ5sNprkxF9sh3drxod+Cw2Z1tKIdMOuNmx
|
|
12
|
+
clVnQy2CEiVyBKLxqLP4e6D3boIXbu2k8HcZWtNNzhDuJxAj0qyGpZawb4Ey6U2t
|
|
13
|
+
CBHjX/7sw9/YW7F13cXM2jSeRLkefO/LIcZ0iFM4psEr9pO7dbctrbNZlXyeBEDB
|
|
14
|
+
+jTZ6IefHPH31ZwGGPJTL+3mWWP4SDySvcJlr/YYpQ/siP07WAUA5bKEDC2SJCX8
|
|
15
|
+
1xcc7TphD1jsdtgH80q+gG9gE5lGVShVTvJXhRigBNVqCslcRAqoUuMXqo5BNBBB
|
|
16
|
+
DYljsaWsxUeA8Y5rhRKL9OapqHTcX7FrgUC4j42zwb5jMhmK2unYW+khyuewFcyS
|
|
17
|
+
Dfne32Tp2SoE4drFIDcCQkxcOLREm5Lr1HnJwsaLHgNaHXriWThwOoqxRdF9M++A
|
|
18
|
+
a3njvOEDuOaE4c6yg7nvAXMyOgoIbiwqAGWpxmVV3EI2VQX9Jvmnah7Uw7RVdNlx
|
|
19
|
+
JQpVBdPjUq2prwB+lCfCFPPOwRDP5vnNuGtvbNxhxNEGDcsqnbsVJYm+75+gP/bx
|
|
20
|
+
xQIDAQABo2kwZzAuBgNVHREEJzAlghJhcGkuYXV0b2J5dGV1cy5jb22CCWxvY2Fs
|
|
21
|
+
aG9zdIcEfwAAATAJBgNVHRMEAjAAMAsGA1UdDwQEAwIF4DAdBgNVHQ4EFgQUcD2a
|
|
22
|
+
4/EZkZpiRjr4U9WXl04i3GQwDQYJKoZIhvcNAQELBQADggIBAD8LzFt358VVK0w9
|
|
23
|
+
g8MebSpJdNQwkfkg7AllFLCzAQ/5dQ/Zti5sjJ5xSQSeu4heZGThX5rt3XWYUr1H
|
|
24
|
+
6eT5UcuqpEkkRERzdM5PzmWjPk0bdPO8I0phtOaWUWPhR/tLqWeF4vEJrDJxPONr
|
|
25
|
+
AL54wX4tnTAdDi7F4A9z5LtAiEmwWvufhde0etqOhSGYjjk/T/YjlaSSX3WmesLD
|
|
26
|
+
zUHajumZkZ7xbTIoD7iehaixE93Gc2L6J5/obFemjG0P37bfGprM7HY2h6i07333
|
|
27
|
+
5YwUSuq51sVUmj7lDPsx/bdzhzask2zOS40598QmAfSFGuxmxZ23omDxJg3859R3
|
|
28
|
+
KoMVNR/DMHTNHJGOHjDWANChE+4C8dAXgwwnGpAg1VWTZPQ1LK4n6+SAenbtAUMw
|
|
29
|
+
gXeYiLnVPEFCY6olImmKYvTR8pH8BPrkZgPW4di/aOaTj21oTYShS13xkc8LHoeW
|
|
30
|
+
sBQ8/afZOAPp7XrhYqxS6fgS+nWVq2QBdt7G9poQ/Z5agH5F3TXeAmJLUBqxpUX/
|
|
31
|
+
xx+a0h3yWdE+/eW343A41lO+1kOkBu9Ehqk0i0Y1Ut8EsD2tdTfl7Ywa4k8sq9xr
|
|
32
|
+
f1tm2ebBmHY+ZQvCTARScT/IVOvHpDs0ln1ailIt+P5Qs7V3Hgpftr4Y+fh1gmh7
|
|
33
|
+
m0StS7OaDEX18yPCiIz9DxVKlsPN
|
|
34
|
+
-----END CERTIFICATE-----
|
|
@@ -5,7 +5,7 @@ from autobyteus.llm.utils.llm_config import LLMConfig
|
|
|
5
5
|
from autobyteus.llm.utils.token_usage import TokenUsage
|
|
6
6
|
from autobyteus.llm.utils.response_types import CompleteResponse, ChunkResponse
|
|
7
7
|
from autobyteus.llm.user_message import LLMUserMessage
|
|
8
|
-
from
|
|
8
|
+
from autobyteus.clients import AutobyteusClient
|
|
9
9
|
import logging
|
|
10
10
|
import uuid
|
|
11
11
|
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import logging
|
|
2
|
+
from typing import Optional
|
|
3
|
+
from autobyteus.llm.models import LLMModel
|
|
4
|
+
from autobyteus.llm.utils.llm_config import LLMConfig
|
|
5
|
+
from autobyteus.llm.api.openai_compatible_llm import OpenAICompatibleLLM
|
|
6
|
+
|
|
7
|
+
logger = logging.getLogger(__name__)
|
|
8
|
+
|
|
9
|
+
class ZhipuLLM(OpenAICompatibleLLM):
|
|
10
|
+
def __init__(self, model: LLMModel = None, llm_config: LLMConfig = None):
|
|
11
|
+
# Provide defaults if not specified
|
|
12
|
+
if model is None:
|
|
13
|
+
model = LLMModel['glm-4.6']
|
|
14
|
+
if llm_config is None:
|
|
15
|
+
llm_config = LLMConfig()
|
|
16
|
+
|
|
17
|
+
super().__init__(
|
|
18
|
+
model=model,
|
|
19
|
+
llm_config=llm_config,
|
|
20
|
+
api_key_env_var="ZHIPU_API_KEY",
|
|
21
|
+
base_url="https://open.bigmodel.cn/api/paas/v4/"
|
|
22
|
+
)
|
|
23
|
+
logger.info(f"ZhipuLLM initialized with model: {self.model}")
|
|
24
|
+
|
|
25
|
+
async def cleanup(self):
|
|
26
|
+
await super().cleanup()
|
|
@@ -7,7 +7,7 @@ from typing import Dict, Any, TYPE_CHECKING, List, Optional
|
|
|
7
7
|
import os
|
|
8
8
|
import logging
|
|
9
9
|
from urllib.parse import urlparse
|
|
10
|
-
from
|
|
10
|
+
from autobyteus.clients import AutobyteusClient
|
|
11
11
|
|
|
12
12
|
if TYPE_CHECKING:
|
|
13
13
|
from autobyteus.llm.llm_factory import LLMFactory
|
|
@@ -18,6 +18,7 @@ from autobyteus.llm.api.gemini_llm import GeminiLLM
|
|
|
18
18
|
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
|
+
from autobyteus.llm.api.zhipu_llm import ZhipuLLM
|
|
21
22
|
from autobyteus.llm.ollama_provider import OllamaModelProvider
|
|
22
23
|
from autobyteus.llm.lmstudio_provider import LMStudioModelProvider
|
|
23
24
|
from autobyteus.utils.singleton import SingletonMeta
|
|
@@ -360,6 +361,28 @@ class LLMFactory(metaclass=SingletonMeta):
|
|
|
360
361
|
)
|
|
361
362
|
)
|
|
362
363
|
),
|
|
364
|
+
# ZHIPU Provider Models
|
|
365
|
+
LLMModel(
|
|
366
|
+
name="glm-4.6",
|
|
367
|
+
value="glm-4.6",
|
|
368
|
+
provider=LLMProvider.ZHIPU,
|
|
369
|
+
llm_class=ZhipuLLM,
|
|
370
|
+
canonical_name="glm-4.6",
|
|
371
|
+
default_config=LLMConfig(
|
|
372
|
+
pricing_config=TokenPricingConfig(13.8, 13.8)
|
|
373
|
+
)
|
|
374
|
+
),
|
|
375
|
+
LLMModel(
|
|
376
|
+
name="glm-4.6-thinking",
|
|
377
|
+
value="glm-4.6",
|
|
378
|
+
provider=LLMProvider.ZHIPU,
|
|
379
|
+
llm_class=ZhipuLLM,
|
|
380
|
+
canonical_name="glm-4.6-thinking",
|
|
381
|
+
default_config=LLMConfig(
|
|
382
|
+
pricing_config=TokenPricingConfig(13.8, 13.8),
|
|
383
|
+
extra_params={ "extra_body": { "thinking": { "type": "enabled" } } }
|
|
384
|
+
)
|
|
385
|
+
),
|
|
363
386
|
]
|
|
364
387
|
for model in supported_models:
|
|
365
388
|
LLMFactory.register_model(model)
|
|
@@ -4,6 +4,7 @@ from autobyteus.llm.token_counter.claude_token_counter import ClaudeTokenCounter
|
|
|
4
4
|
from autobyteus.llm.token_counter.mistral_token_counter import MistralTokenCounter
|
|
5
5
|
from autobyteus.llm.token_counter.deepseek_token_counter import DeepSeekTokenCounter
|
|
6
6
|
from autobyteus.llm.token_counter.kimi_token_counter import KimiTokenCounter
|
|
7
|
+
from autobyteus.llm.token_counter.zhipu_token_counter import ZhipuTokenCounter
|
|
7
8
|
from autobyteus.llm.token_counter.base_token_counter import BaseTokenCounter
|
|
8
9
|
from autobyteus.llm.models import LLMModel
|
|
9
10
|
from autobyteus.llm.providers import LLMProvider
|
|
@@ -42,6 +43,8 @@ def get_token_counter(model: LLMModel, llm: 'BaseLLM') -> BaseTokenCounter:
|
|
|
42
43
|
return OpenAITokenCounter(model, llm)
|
|
43
44
|
elif model.provider == LLMProvider.GEMINI:
|
|
44
45
|
return OpenAITokenCounter(model, llm)
|
|
46
|
+
elif model.provider == LLMProvider.ZHIPU:
|
|
47
|
+
return ZhipuTokenCounter(model, llm)
|
|
45
48
|
else:
|
|
46
49
|
# For models that do not have a specialized counter, raise a NotImplementedError
|
|
47
50
|
raise NotImplementedError(f"No token counter available for model {model.value}")
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
from typing import TYPE_CHECKING
|
|
2
|
+
from autobyteus.llm.token_counter.openai_token_counter import OpenAITokenCounter
|
|
3
|
+
from autobyteus.llm.models import LLMModel
|
|
4
|
+
|
|
5
|
+
if TYPE_CHECKING:
|
|
6
|
+
from autobyteus.llm.base_llm import BaseLLM
|
|
7
|
+
|
|
8
|
+
class ZhipuTokenCounter(OpenAITokenCounter):
|
|
9
|
+
"""
|
|
10
|
+
Token counter for Zhipu models. Uses the same token counting implementation as OpenAI.
|
|
11
|
+
|
|
12
|
+
This implementation inherits from OpenAITokenCounter as Zhipu uses a similar tokenization
|
|
13
|
+
approach as OpenAI's models.
|
|
14
|
+
"""
|
|
15
|
+
|
|
16
|
+
def __init__(self, model: LLMModel, llm: 'BaseLLM' = None):
|
|
17
|
+
"""
|
|
18
|
+
Initialize the Zhipu token counter.
|
|
19
|
+
|
|
20
|
+
Args:
|
|
21
|
+
model (LLMModel): The Zhipu model to count tokens for.
|
|
22
|
+
llm (BaseLLM, optional): The LLM instance. Defaults to None.
|
|
23
|
+
"""
|
|
24
|
+
super().__init__(model, llm)
|
{autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/multimedia/audio/api/autobyteus_audio_client.py
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import logging
|
|
2
2
|
from typing import Optional, List, Dict, Any, TYPE_CHECKING
|
|
3
|
-
from
|
|
3
|
+
from autobyteus.clients import AutobyteusClient
|
|
4
4
|
from autobyteus.multimedia.audio.base_audio_client import BaseAudioClient
|
|
5
5
|
from autobyteus.multimedia.utils.response_types import SpeechGenerationResponse
|
|
6
6
|
|
{autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/multimedia/audio/autobyteus_audio_provider.py
RENAMED
|
@@ -3,7 +3,7 @@ from typing import List
|
|
|
3
3
|
import os
|
|
4
4
|
from urllib.parse import urlparse
|
|
5
5
|
|
|
6
|
-
from
|
|
6
|
+
from autobyteus.clients import AutobyteusClient
|
|
7
7
|
from autobyteus.multimedia.audio.api.autobyteus_audio_client import AutobyteusAudioClient
|
|
8
8
|
from autobyteus.multimedia.audio.audio_model import AudioModel
|
|
9
9
|
from autobyteus.multimedia.providers import MultimediaProvider
|
{autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/multimedia/image/api/autobyteus_image_client.py
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import logging
|
|
2
2
|
from typing import Optional, List, Dict, Any, TYPE_CHECKING
|
|
3
|
-
from
|
|
3
|
+
from autobyteus.clients import AutobyteusClient
|
|
4
4
|
from autobyteus.multimedia.image.base_image_client import BaseImageClient
|
|
5
5
|
from autobyteus.multimedia.utils.response_types import ImageGenerationResponse
|
|
6
6
|
|
{autobyteus-1.1.9 → autobyteus-1.2.0}/autobyteus/multimedia/image/autobyteus_image_provider.py
RENAMED
|
@@ -3,7 +3,7 @@ from typing import Dict, Any, List
|
|
|
3
3
|
import os
|
|
4
4
|
from urllib.parse import urlparse
|
|
5
5
|
|
|
6
|
-
from
|
|
6
|
+
from autobyteus.clients import AutobyteusClient
|
|
7
7
|
from autobyteus.multimedia.image.api.autobyteus_image_client import AutobyteusImageClient
|
|
8
8
|
from autobyteus.multimedia.image.image_model import ImageModel
|
|
9
9
|
from autobyteus.multimedia.providers import MultimediaProvider
|