SYMBOL INDEX (8525 symbols across 561 files) FILE: .claude/skills/skill-creator/scripts/init_skill.py function title_case_skill_name (line 189) | def title_case_skill_name(skill_name): function init_skill (line 194) | def init_skill(skill_name, path): function main (line 273) | def main(): FILE: .claude/skills/skill-creator/scripts/package_skill.py function package_skill (line 19) | def package_skill(skill_path, output_dir=None): function main (line 85) | def main(): FILE: .claude/skills/skill-creator/scripts/quick_validate.py function validate_skill (line 12) | def validate_skill(skill_path): FILE: backend/agents/agent_run_manager.py class AgentRunManager (line 10) | class AgentRunManager: method __new__ (line 14) | def __new__(cls): method __init__ (line 22) | def __init__(self): method _get_run_key (line 28) | def _get_run_key(self, conversation_id: int, user_id: str) -> str: method register_agent_run (line 32) | def register_agent_run(self, conversation_id: int, agent_run_info, use... method unregister_agent_run (line 40) | def unregister_agent_run(self, conversation_id: int, user_id: str): method get_agent_run_info (line 52) | def get_agent_run_info(self, conversation_id: int, user_id: str): method stop_agent_run (line 57) | def stop_agent_run(self, conversation_id: int, user_id: str) -> bool: FILE: backend/agents/create_agent_info.py function create_model_config_list (line 35) | async def create_model_config_list(tenant_id): function create_agent_config (line 72) | async def create_agent_config( function create_tool_config_list (line 211) | async def create_tool_config_list(agent_id, tenant_id, user_id, version_... function discover_langchain_tools (line 263) | async def discover_langchain_tools(): function prepare_prompt_templates (line 299) | async def prepare_prompt_templates(is_manager: bool, system_prompt: str,... function join_minio_file_description_to_query (line 316) | async def join_minio_file_description_to_query(minio_files, query): function filter_mcp_servers_and_tools (line 330) | def filter_mcp_servers_and_tools(input_agent_config: AgentConfig, mcp_in... function create_agent_run_info (line 355) | async def create_agent_run_info( FILE: backend/agents/preprocess_manager.py class PreprocessTask (line 10) | class PreprocessTask: method __init__ (line 11) | def __init__(self, task_id: str, conversation_id: int): class PreprocessManager (line 19) | class PreprocessManager: method __new__ (line 23) | def __new__(cls): method __init__ (line 31) | def __init__(self): method register_preprocess_task (line 39) | def register_preprocess_task(self, task_id: str, conversation_id: int,... method unregister_preprocess_task (line 53) | def unregister_preprocess_task(self, task_id: str): method stop_preprocess_tasks (line 71) | def stop_preprocess_tasks(self, conversation_id: int) -> bool: method is_preprocess_running (line 97) | def is_preprocess_running(self, conversation_id: int) -> bool: method get_preprocess_status (line 111) | def get_preprocess_status(self, conversation_id: int) -> Dict: FILE: backend/apps/agent_app.py function agent_run_api (line 51) | async def agent_run_api(agent_request: AgentRequest, http_request: Reque... function agent_stop_api (line 68) | async def agent_stop_api(conversation_id: int, authorization: Optional[s... function search_agent_info_api (line 81) | async def search_agent_info_api( function get_creating_sub_agent_info_api (line 104) | async def get_creating_sub_agent_info_api(authorization: Optional[str] =... function update_agent_info_api (line 117) | async def update_agent_info_api(request: AgentInfoRequest, authorization... function delete_agent_api (line 131) | async def delete_agent_api( function export_agent_api (line 154) | async def export_agent_api(request: AgentIDRequest, authorization: Optio... function import_agent_api (line 168) | async def import_agent_api(request: AgentImportRequest, authorization: O... function clear_agent_new_mark_api (line 186) | async def clear_agent_new_mark_api(agent_id: int, authorization: Optiona... function check_agent_name_batch_api (line 201) | async def check_agent_name_batch_api(request: AgentNameBatchCheckRequest... function regenerate_agent_name_batch_api (line 216) | async def regenerate_agent_name_batch_api(request: AgentNameBatchRegener... function list_all_agent_info_api (line 231) | async def list_all_agent_info_api( function get_agent_call_relationship_api (line 252) | async def get_agent_call_relationship_api(agent_id: int, authorization: ... function publish_version_api (line 270) | async def publish_version_api( function compare_versions_api (line 296) | async def compare_versions_api( function get_version_list_api (line 321) | async def get_version_list_api( function get_version_api (line 348) | async def get_version_api( function get_version_detail_api (line 371) | async def get_version_detail_api( function rollback_version_api (line 395) | async def rollback_version_api( function update_version_status_api (line 421) | async def update_version_status_api( function update_version_api (line 448) | async def update_version_api( function delete_version_api (line 476) | async def delete_version_api( function get_current_version_api (line 501) | async def get_current_version_api( function list_published_agents_api (line 523) | async def list_published_agents_api( FILE: backend/apps/app_factory.py function create_app (line 16) | def create_app( function register_exception_handlers (line 70) | def register_exception_handlers(app: FastAPI) -> None: FILE: backend/apps/config_sync_app.py function save_config (line 17) | async def save_config(config: GlobalConfig, authorization: Optional[str]... function load_config (line 35) | async def load_config(authorization: Optional[str] = Header(None), reque... FILE: backend/apps/conversation_management_app.py function create_new_conversation_endpoint (line 31) | async def create_new_conversation_endpoint(request: ConversationRequest,... function list_conversations_endpoint (line 57) | async def list_conversations_endpoint(authorization: Optional[str] = Hea... function rename_conversation_endpoint (line 79) | async def rename_conversation_endpoint(request: RenameRequest, authoriza... function delete_conversation_endpoint (line 103) | async def delete_conversation_endpoint(conversation_id: int, authorizati... function get_conversation_history_endpoint (line 124) | async def get_conversation_history_endpoint(conversation_id: int, author... function get_sources_endpoint (line 146) | async def get_sources_endpoint(request: Dict[str, Any], authorization: O... function generate_conversation_title_endpoint (line 172) | async def generate_conversation_title_endpoint( function update_opinion_endpoint (line 205) | async def update_opinion_endpoint(request: OpinionRequest, authorization... function get_message_id_endpoint (line 225) | async def get_message_id_endpoint(request: MessageIdRequest): FILE: backend/apps/data_process_app.py function lifespan (line 25) | async def lifespan(app: APIRouter): function create_task (line 42) | async def create_task(request: TaskRequest, authorization: Optional[str]... function process_sync_endpoint (line 67) | async def process_sync_endpoint( function create_batch_tasks (line 127) | async def create_batch_tasks(request: BatchTaskRequest, authorization: O... function load_image (line 146) | async def load_image(url: str): function list_tasks (line 176) | async def list_tasks(): function get_index_tasks (line 201) | async def get_index_tasks(index_name: str): function get_task_details (line 215) | async def get_task_details(task_id: str): function filter_important_image (line 225) | async def filter_important_image( function process_text_file (line 255) | async def process_text_file( function convert_state (line 292) | async def convert_state(request: ConvertStateRequest): function convert_office_to_pdf (line 318) | async def convert_office_to_pdf( FILE: backend/apps/datamate_app.py class SyncDatamateRequest (line 22) | class SyncDatamateRequest(BaseModel): function sync_datamate_knowledges (line 28) | async def sync_datamate_knowledges( function get_datamate_knowledge_base_files_endpoint (line 50) | async def get_datamate_knowledge_base_files_endpoint( function test_datamate_connection_endpoint (line 66) | async def test_datamate_connection_endpoint( FILE: backend/apps/dify_app.py function fetch_dify_datasets_api (line 26) | async def fetch_dify_datasets_api( FILE: backend/apps/file_management_app.py function build_content_disposition_header (line 22) | def build_content_disposition_header(filename: Optional[str], inline: bo... function options_route (line 78) | async def options_route(full_path: str): function upload_files (line 86) | async def upload_files( function process_files (line 117) | async def process_files( function get_storage_file (line 158) | async def get_storage_file( function storage_upload_files (line 247) | async def storage_upload_files( function get_storage_files (line 272) | async def get_storage_files( function _ensure_http_scheme (line 306) | def _ensure_http_scheme(raw_url: str) -> str: function _normalize_datamate_download_url (line 332) | def _normalize_datamate_download_url(raw_url: str) -> str: function _build_datamate_url_from_parts (line 374) | def _build_datamate_url_from_parts(base_url: str, dataset_id: str, file_... function download_datamate_file (line 409) | async def download_datamate_file( function remove_storage_file (line 508) | async def remove_storage_file( function get_storage_file_batch_urls (line 532) | async def get_storage_file_batch_urls( function preview_file (line 579) | async def preview_file( FILE: backend/apps/group_app.py function create_group_endpoint (line 31) | async def create_group_endpoint( function get_group_endpoint (line 88) | async def get_group_endpoint(group_id: int) -> JSONResponse: function get_groups_endpoint (line 129) | async def get_groups_endpoint( function update_group_endpoint (line 190) | async def update_group_endpoint( function delete_group_endpoint (line 266) | async def delete_group_endpoint( function add_user_to_group_endpoint (line 329) | async def add_user_to_group_endpoint( function remove_user_from_group_endpoint (line 397) | async def remove_user_from_group_endpoint( function get_group_users_endpoint (line 463) | async def get_group_users_endpoint(group_id: int) -> JSONResponse: function update_group_members_endpoint (line 501) | async def update_group_members_endpoint( function add_user_to_groups_endpoint (line 565) | async def add_user_to_groups_endpoint( function get_tenant_default_group_endpoint (line 625) | async def get_tenant_default_group_endpoint(tenant_id: str) -> JSONRespo... function set_tenant_default_group_endpoint (line 660) | async def set_tenant_default_group_endpoint( FILE: backend/apps/idata_app.py function fetch_idata_knowledge_spaces_api (line 27) | async def fetch_idata_knowledge_spaces_api( function fetch_idata_datasets_api (line 69) | async def fetch_idata_datasets_api( FILE: backend/apps/image_app.py function proxy_image (line 20) | async def proxy_image(url: str, format: str = "json"): FILE: backend/apps/invitation_app.py function list_invitations_endpoint (line 28) | async def list_invitations_endpoint( function create_invitation_endpoint (line 81) | async def create_invitation_endpoint( function update_invitation_endpoint (line 161) | async def update_invitation_endpoint( function get_invitation_endpoint (line 249) | async def get_invitation_endpoint(invitation_code: str) -> JSONResponse: function check_invitation_code_endpoint (line 289) | async def check_invitation_code_endpoint(invitation_code: str) -> JSONRe... function delete_invitation_endpoint (line 323) | async def delete_invitation_endpoint( function check_invitation_available_endpoint (line 393) | async def check_invitation_available_endpoint(invitation_code: str) -> J... function use_invitation_endpoint (line 427) | async def use_invitation_endpoint( function update_invitation_status_endpoint (line 484) | async def update_invitation_status_endpoint(invitation_code: str) -> JSO... FILE: backend/apps/knowledge_summary_app.py function auto_summary (line 17) | async def auto_summary( function change_summary (line 53) | def change_summary( function get_summary (line 71) | def get_summary( FILE: backend/apps/memory_config_app.py function load_configs (line 65) | def load_configs(authorization: Optional[str] = Header(None)): function set_single_config (line 84) | def set_single_config( function add_disable_agent (line 124) | def add_disable_agent( function remove_disable_agent (line 143) | def remove_disable_agent( function add_disable_useragent (line 162) | def add_disable_useragent( function remove_disable_useragent (line 181) | def remove_disable_useragent( function add_memory (line 203) | def add_memory( function search_memory (line 240) | def search_memory( function list_memory (line 274) | def list_memory( function delete_memory (line 304) | def delete_memory( function clear_memory (line 325) | def clear_memory( FILE: backend/apps/mock_user_management_app.py function service_health (line 18) | async def service_health(): function signup (line 31) | async def signup(request: UserSignUpRequest): function signin (line 65) | async def signin(request: UserSignInRequest): function user_refresh_token (line 98) | async def user_refresh_token(request: Request): function logout (line 124) | async def logout(request: Request): function get_session (line 140) | async def get_session(request: Request): function get_user_id (line 164) | async def get_user_id(request: Request): function get_user_information (line 180) | async def get_user_information(request: Request): FILE: backend/apps/model_managment_app.py function create_model (line 61) | async def create_model(request: ModelRequest, authorization: Optional[st... function create_provider_model (line 94) | async def create_provider_model(request: ProviderModelRequest, authoriza... function batch_create_models (line 120) | async def batch_create_models(request: BatchCreateModelsRequest, authori... function get_provider_list (line 146) | async def get_provider_list(request: ProviderModelRequest, authorization... function update_single_model (line 170) | async def update_single_model( function batch_update_models (line 210) | async def batch_update_models(request: List[dict], authorization: Option... function delete_model (line 230) | async def delete_model(display_name: str = Query(..., embed=True), autho... function get_model_list (line 261) | async def get_model_list(authorization: Optional[str] = Header(None)): function get_llm_model_list (line 283) | async def get_llm_model_list(authorization: Optional[str] = Header(None)): function check_model_health (line 299) | async def check_model_health( function check_temporary_model_health (line 331) | async def check_temporary_model_health(request: ModelRequest): function manage_check_model_health (line 354) | async def manage_check_model_health( function manage_create_model (line 392) | async def manage_create_model( function manage_update_model (line 428) | async def manage_update_model( function manage_delete_model (line 470) | async def manage_delete_model( function manage_batch_create_models (line 511) | async def manage_batch_create_models( function manage_list_models (line 550) | async def manage_list_models( function manage_list_provider_models (line 588) | async def manage_list_provider_models( function manage_create_provider_models (line 624) | async def manage_create_provider_models( FILE: backend/apps/northbound_app.py function _get_northbound_context (line 26) | async def _get_northbound_context(request: Request) -> NorthboundContext: function health_check (line 104) | async def health_check(): function run_chat (line 109) | async def run_chat( function stop_chat_stream (line 140) | async def stop_chat_stream( function get_history (line 168) | async def get_history( function list_agents (line 188) | async def list_agents(request: Request): function list_convs (line 205) | async def list_convs(request: Request): function update_convs_title (line 222) | async def update_convs_title( FILE: backend/apps/prompt_app.py function generate_and_save_system_prompt_api (line 16) | async def generate_and_save_system_prompt_api( FILE: backend/apps/remote_mcp_app.py function get_tools_from_remote_mcp (line 33) | async def get_tools_from_remote_mcp( function add_remote_proxies (line 64) | async def add_remote_proxies( function delete_remote_proxies (line 107) | async def delete_remote_proxies( function update_remote_proxy (line 137) | async def update_remote_proxy( function get_remote_proxies (line 175) | async def get_remote_proxies( function get_mcp_record (line 205) | async def get_mcp_record( function check_mcp_health (line 250) | async def check_mcp_health( function add_mcp_from_config (line 281) | async def add_mcp_from_config( function stop_mcp_container (line 429) | async def stop_mcp_container( function list_mcp_containers (line 484) | async def list_mcp_containers( function get_container_logs (line 532) | async def get_container_logs( function upload_mcp_image (line 603) | async def upload_mcp_image( FILE: backend/apps/tenant_app.py function create_tenant_endpoint (line 31) | async def create_tenant_endpoint( function get_tenant_endpoint (line 86) | async def get_tenant_endpoint(tenant_id: str) -> JSONResponse: function get_all_tenants_endpoint (line 123) | async def get_all_tenants_endpoint( function update_tenant_endpoint (line 160) | async def update_tenant_endpoint( function delete_tenant_endpoint (line 224) | async def delete_tenant_endpoint( FILE: backend/apps/tenant_config_app.py function get_deployment_version (line 14) | def get_deployment_version(): FILE: backend/apps/tool_config_app.py function list_tools_api (line 25) | async def list_tools_api(authorization: Optional[str] = Header(None)): function search_tool_info_api (line 40) | async def search_tool_info_api(request: ToolInstanceSearchRequest, autho... function update_tool_info_api (line 51) | async def update_tool_info_api(request: ToolInstanceInfoRequest, authori... function scan_and_update_tool (line 65) | async def scan_and_update_tool( function load_last_tool_config (line 87) | async def load_last_tool_config(tool_id: int, authorization: Optional[st... function validate_tool (line 106) | async def validate_tool( FILE: backend/apps/user_app.py function get_users_endpoint (line 25) | async def get_users_endpoint( function update_user_endpoint (line 73) | async def update_user_endpoint( function delete_user_endpoint (line 122) | async def delete_user_endpoint( FILE: backend/apps/user_management_app.py function service_health (line 27) | async def service_health(): function signup (line 43) | async def signup(request: UserSignUpRequest): function signin (line 80) | async def signin(request: UserSignInRequest): function user_refresh_token (line 98) | async def user_refresh_token(request: Request): function logout (line 123) | async def logout(request: Request): function get_session (line 146) | async def get_session(request: Request): function get_user_information (line 170) | async def get_user_information(request: Request): function get_user_id (line 207) | async def get_user_id(request: Request): function revoke_user_account (line 236) | async def revoke_user_account(request: Request): function create_token_endpoint (line 280) | async def create_token_endpoint( function list_tokens_endpoint (line 312) | async def list_tokens_endpoint( function delete_token_endpoint (line 349) | async def delete_token_endpoint( FILE: backend/apps/vectordatabase_app.py function check_knowledge_base_exist (line 29) | async def check_knowledge_base_exist( function create_new_index (line 52) | def create_new_index( function delete_index (line 88) | async def delete_index( function update_index (line 108) | async def update_index( function get_list_indices (line 161) | def get_list_indices( function create_index_documents (line 183) | def create_index_documents( function get_index_files (line 217) | async def get_index_files( function delete_documents (line 237) | def delete_documents( function get_document_error_info (line 288) | async def get_document_error_info( function health_check (line 349) | def health_check(vdb_core: VectorDatabaseCore = Depends(get_vector_db_co... function get_index_chunks (line 359) | def get_index_chunks( function create_chunk (line 399) | def create_chunk( function update_chunk (line 434) | def update_chunk( function delete_chunk (line 475) | def delete_chunk( function hybrid_search (line 512) | async def hybrid_search( FILE: backend/apps/voice_app.py function stt_websocket (line 24) | async def stt_websocket(websocket: WebSocket): function tts_websocket (line 44) | async def tts_websocket(websocket: WebSocket): function check_voice_connectivity (line 78) | async def check_voice_connectivity(request: VoiceConnectivityRequest): FILE: backend/consts/const.py class VectorDatabaseType (line 15) | class VectorDatabaseType(str, Enum): FILE: backend/consts/error_code.py class ErrorCode (line 30) | class ErrorCode(Enum): FILE: backend/consts/error_message.py class ErrorMessage (line 11) | class ErrorMessage: method get_message (line 143) | def get_message(cls, error_code: ErrorCode) -> str: method get_message_with_code (line 148) | def get_message_with_code(cls, error_code: ErrorCode) -> tuple[int, str]: method get_all_messages (line 153) | def get_all_messages(cls) -> dict: FILE: backend/consts/exceptions.py class AppException (line 29) | class AppException(Exception): method __init__ (line 38) | def __init__(self, error_code: ErrorCode, message: str = None, details... method to_dict (line 44) | def to_dict(self) -> dict: method http_status (line 52) | def http_status(self) -> int: function raise_error (line 56) | def raise_error(error_code: ErrorCode, message: str = None, details: dic... class AgentRunException (line 73) | class AgentRunException(Exception): class LimitExceededError (line 78) | class LimitExceededError(Exception): class UnauthorizedError (line 83) | class UnauthorizedError(Exception): class SignatureValidationError (line 88) | class SignatureValidationError(Exception): class MemoryPreparationException (line 93) | class MemoryPreparationException(Exception): class MCPConnectionError (line 98) | class MCPConnectionError(Exception): class MCPNameIllegal (line 103) | class MCPNameIllegal(Exception): class NoInviteCodeException (line 108) | class NoInviteCodeException(Exception): class IncorrectInviteCodeException (line 113) | class IncorrectInviteCodeException(Exception): class OfficeConversionException (line 118) | class OfficeConversionException(Exception): class UnsupportedFileTypeException (line 123) | class UnsupportedFileTypeException(Exception): class FileTooLargeException (line 128) | class FileTooLargeException(Exception): class UserRegistrationException (line 133) | class UserRegistrationException(Exception): class TimeoutException (line 138) | class TimeoutException(Exception): class ValidationError (line 143) | class ValidationError(Exception): class NotFoundException (line 148) | class NotFoundException(Exception): class MEConnectionException (line 153) | class MEConnectionException(Exception): class VoiceServiceException (line 158) | class VoiceServiceException(Exception): class STTConnectionException (line 163) | class STTConnectionException(Exception): class TTSConnectionException (line 168) | class TTSConnectionException(Exception): class VoiceConfigException (line 173) | class VoiceConfigException(Exception): class ToolExecutionException (line 178) | class ToolExecutionException(Exception): class MCPContainerError (line 183) | class MCPContainerError(Exception): class DuplicateError (line 188) | class DuplicateError(Exception): class DataMateConnectionError (line 193) | class DataMateConnectionError(Exception): FILE: backend/consts/model.py class ModelConnectStatusEnum (line 8) | class ModelConnectStatusEnum(Enum): method get_default (line 16) | def get_default(cls) -> str: method get_value (line 21) | def get_value(cls, status: Optional[str]) -> str: class UserSignUpRequest (line 29) | class UserSignUpRequest(BaseModel): class UserSignInRequest (line 37) | class UserSignInRequest(BaseModel): class UserUpdateRequest (line 43) | class UserUpdateRequest(BaseModel): class UserDeleteRequest (line 50) | class UserDeleteRequest(BaseModel): class ModelResponse (line 56) | class ModelResponse(BaseModel): class ModelRequest (line 62) | class ModelRequest(BaseModel): class ProviderModelRequest (line 77) | class ProviderModelRequest(BaseModel): class BatchCreateModelsRequest (line 84) | class BatchCreateModelsRequest(BaseModel): class ModelApiConfig (line 92) | class ModelApiConfig(BaseModel): class SingleModelConfig (line 97) | class SingleModelConfig(BaseModel): class ModelConfig (line 104) | class ModelConfig(BaseModel): class AppConfig (line 114) | class AppConfig(BaseModel): class GlobalConfig (line 125) | class GlobalConfig(BaseModel): class AgentRequest (line 131) | class AgentRequest(BaseModel): class MessageUnit (line 142) | class MessageUnit(BaseModel): class MessageRequest (line 147) | class MessageRequest(BaseModel): class ConversationRequest (line 156) | class ConversationRequest(BaseModel): class ConversationResponse (line 160) | class ConversationResponse(BaseModel): class RenameRequest (line 166) | class RenameRequest(BaseModel): class TaskRequest (line 172) | class TaskRequest(BaseModel): class BatchTaskRequest (line 183) | class BatchTaskRequest(BaseModel): class IndexingResponse (line 188) | class IndexingResponse(BaseModel): class ChunkCreateRequest (line 195) | class ChunkCreateRequest(BaseModel): class ChunkUpdateRequest (line 208) | class ChunkUpdateRequest(BaseModel): class HybridSearchRequest (line 220) | class HybridSearchRequest(BaseModel): class ProcessParams (line 233) | class ProcessParams(BaseModel): class OpinionRequest (line 240) | class OpinionRequest(BaseModel): class GeneratePromptRequest (line 246) | class GeneratePromptRequest(BaseModel): class GenerateTitleRequest (line 256) | class GenerateTitleRequest(BaseModel): class AgentInfoRequest (line 262) | class AgentInfoRequest(BaseModel): class AgentIDRequest (line 286) | class AgentIDRequest(BaseModel): class ToolInstanceInfoRequest (line 290) | class ToolInstanceInfoRequest(BaseModel): class ToolInstanceSearchRequest (line 298) | class ToolInstanceSearchRequest(BaseModel): class ToolSourceEnum (line 303) | class ToolSourceEnum(Enum): class ToolInfo (line 309) | class ToolInfo(BaseModel): class ChangeSummaryRequest (line 323) | class ChangeSummaryRequest(BaseModel): class MessageIdRequest (line 327) | class MessageIdRequest(BaseModel): class ExportAndImportAgentInfo (line 332) | class ExportAndImportAgentInfo(BaseModel): class Config (line 352) | class Config: class MCPInfo (line 356) | class MCPInfo(BaseModel): class ExportAndImportDataFormat (line 361) | class ExportAndImportDataFormat(BaseModel): class AgentImportRequest (line 367) | class AgentImportRequest(BaseModel): class AgentNameBatchRegenerateItem (line 372) | class AgentNameBatchRegenerateItem(BaseModel): class AgentNameBatchRegenerateRequest (line 379) | class AgentNameBatchRegenerateRequest(BaseModel): class AgentNameBatchCheckItem (line 383) | class AgentNameBatchCheckItem(BaseModel): class AgentNameBatchCheckRequest (line 389) | class AgentNameBatchCheckRequest(BaseModel): class ConvertStateRequest (line 393) | class ConvertStateRequest(BaseModel): class MemoryAgentShareMode (line 402) | class MemoryAgentShareMode(str, Enum): method default (line 415) | def default(cls) -> "MemoryAgentShareMode": class VoiceConnectivityRequest (line 421) | class VoiceConnectivityRequest(BaseModel): class VoiceConnectivityResponse (line 427) | class VoiceConnectivityResponse(BaseModel): class TTSRequest (line 435) | class TTSRequest(BaseModel): class TTSResponse (line 442) | class TTSResponse(BaseModel): class ToolValidateRequest (line 448) | class ToolValidateRequest(BaseModel): class MCPServerConfig (line 459) | class MCPServerConfig(BaseModel): class MCPConfigRequest (line 474) | class MCPConfigRequest(BaseModel): class UpdateKnowledgeListRequest (line 480) | class UpdateKnowledgeListRequest(BaseModel): class MCPUpdateRequest (line 488) | class MCPUpdateRequest(BaseModel): class TenantCreateRequest (line 501) | class TenantCreateRequest(BaseModel): class TenantUpdateRequest (line 507) | class TenantUpdateRequest(BaseModel): class PaginationRequest (line 514) | class PaginationRequest(BaseModel): class GroupCreateRequest (line 522) | class GroupCreateRequest(BaseModel): class GroupUpdateRequest (line 532) | class GroupUpdateRequest(BaseModel): class GroupListRequest (line 539) | class GroupListRequest(BaseModel): class UserListRequest (line 552) | class UserListRequest(BaseModel): class GroupUserRequest (line 565) | class GroupUserRequest(BaseModel): class GroupMembersUpdateRequest (line 573) | class GroupMembersUpdateRequest(BaseModel): class SetDefaultGroupRequest (line 578) | class SetDefaultGroupRequest(BaseModel): class InvitationCreateRequest (line 586) | class InvitationCreateRequest(BaseModel): class InvitationUpdateRequest (line 602) | class InvitationUpdateRequest(BaseModel): class InvitationResponse (line 609) | class InvitationResponse(BaseModel): class InvitationListRequest (line 624) | class InvitationListRequest(BaseModel): class InvitationUseResponse (line 637) | class InvitationUseResponse(BaseModel): class ManageTenantModelListRequest (line 650) | class ManageTenantModelListRequest(BaseModel): class ManageTenantModelListResponse (line 659) | class ManageTenantModelListResponse(BaseModel): class ManageTenantModelCreateRequest (line 671) | class ManageTenantModelCreateRequest(BaseModel): class ManageTenantModelUpdateRequest (line 686) | class ManageTenantModelUpdateRequest(BaseModel): class ManageTenantModelDeleteRequest (line 702) | class ManageTenantModelDeleteRequest(BaseModel): class ManageTenantModelHealthcheckRequest (line 708) | class ManageTenantModelHealthcheckRequest(BaseModel): class ManageBatchCreateModelsRequest (line 714) | class ManageBatchCreateModelsRequest(BaseModel): class ManageProviderModelListRequest (line 723) | class ManageProviderModelListRequest(BaseModel): class ManageProviderModelCreateRequest (line 730) | class ManageProviderModelCreateRequest(BaseModel): class VersionPublishRequest (line 741) | class VersionPublishRequest(BaseModel): class VersionListItemResponse (line 747) | class VersionListItemResponse(BaseModel): class VersionListResponse (line 760) | class VersionListResponse(BaseModel): class VersionDetailResponse (line 766) | class VersionDetailResponse(BaseModel): class VersionRollbackRequest (line 782) | class VersionRollbackRequest(BaseModel): class VersionStatusRequest (line 788) | class VersionStatusRequest(BaseModel): class VersionUpdateRequest (line 793) | class VersionUpdateRequest(BaseModel): class VersionCompareRequest (line 799) | class VersionCompareRequest(BaseModel): class CurrentVersionResponse (line 805) | class CurrentVersionResponse(BaseModel): FILE: backend/consts/provider.py class ProviderEnum (line 4) | class ProviderEnum(str, Enum): FILE: backend/data_process/ray_actors.py class DataProcessorRayActor (line 19) | class DataProcessorRayActor: method __init__ (line 25) | def __init__(self): method process_file (line 30) | def process_file( method store_chunks_in_redis (line 122) | def store_chunks_in_redis(self, redis_key: str, chunks: List[Dict[str,... FILE: backend/data_process/ray_config.py class RayConfig (line 23) | class RayConfig: method __init__ (line 26) | def __init__(self): method get_init_params (line 31) | def get_init_params( method init_ray (line 86) | def init_ray(self, **kwargs) -> bool: method connect_to_cluster (line 151) | def connect_to_cluster(self, address: str = "auto") -> bool: method start_local_cluster (line 186) | def start_local_cluster( method log_configuration (line 212) | def log_configuration(self): method init_ray_for_worker (line 220) | def init_ray_for_worker(cls, address: str = "auto") -> bool: method init_ray_for_service (line 227) | def init_ray_for_service( FILE: backend/data_process/tasks.py function extract_error_code (line 40) | def extract_error_code(reason: str, parsed_error: Optional[Dict] = None)... function save_error_to_redis (line 76) | def save_error_to_redis(task_id: str, error_reason: str, start_time: flo... function init_ray_in_worker (line 106) | def init_ray_in_worker(): function run_async (line 135) | def run_async(coro): function get_ray_actor (line 184) | def get_ray_actor() -> Any: class LoggingTask (line 199) | class LoggingTask(Task): method on_success (line 202) | def on_success(self, retval, task_id, args, kwargs): method on_failure (line 207) | def on_failure(self, exc, task_id, args, kwargs, einfo): method on_retry (line 218) | def on_retry(self, exc, task_id, args, kwargs, einfo): function process (line 225) | def process( function forward (line 515) | def forward( function process_and_forward (line 970) | def process_and_forward( function process_sync (line 1034) | def process_sync( FILE: backend/data_process/utils.py function get_all_task_ids_from_redis (line 18) | def get_all_task_ids_from_redis(redis_client: redis.Redis) -> List[str]: function get_task_info (line 47) | async def get_task_info(task_id: str) -> Dict[str, Any]: function get_task_details (line 249) | async def get_task_details(task_id: str) -> Optional[Dict[str, Any]]: FILE: backend/data_process/worker.py function setup_worker_environment (line 71) | def setup_worker_environment(**kwargs): function setup_worker_process_resources (line 147) | def setup_worker_process_resources(**kwargs): function worker_ready_handler (line 178) | def worker_ready_handler(**kwargs): function worker_shutdown_handler (line 205) | def worker_shutdown_handler(**kwargs): function task_prerun_handler (line 220) | def task_prerun_handler(sender=None, task_id=None, task=None, args=None,... function task_postrun_handler (line 226) | def task_postrun_handler(sender=None, task_id=None, task=None, args=None... function task_failure_handler (line 237) | def task_failure_handler(sender=None, task_id=None, exception=None, einf... function validate_service_connections (line 247) | def validate_service_connections() -> bool: function validate_redis_connection (line 264) | def validate_redis_connection() -> bool: function start_worker (line 289) | def start_worker(): FILE: backend/data_process_service.py class ServiceManager (line 41) | class ServiceManager: method __init__ (line 44) | def __init__(self, config: dict[str, Any]): method start_redis (line 62) | def start_redis(self): method _check_redis_connection (line 68) | def _check_redis_connection(self, redis_url: str) -> bool: method start_ray_cluster (line 84) | def start_ray_cluster(self): method start_workers (line 178) | def start_workers(self): method start_flower (line 376) | def start_flower(self): method start_all_services (line 527) | def start_all_services(self): method log_service_info (line 570) | def log_service_info(self): method stop_all_services (line 599) | def stop_all_services(self): function parse_arguments (line 718) | def parse_arguments(): function signal_handler (line 761) | def signal_handler(signum, frame): function lifespan (line 786) | async def lifespan(app: FastAPI): function create_app (line 801) | def create_app(): function main (line 810) | def main(): FILE: backend/database/agent_db.py function search_agent_info_by_agent_id (line 12) | def search_agent_info_by_agent_id(agent_id: int, tenant_id: str, version... function search_agent_id_by_agent_name (line 38) | def search_agent_id_by_agent_name(agent_name: str, tenant_id: str, versi... function search_blank_sub_agent_by_main_agent_id (line 59) | def search_blank_sub_agent_by_main_agent_id(tenant_id: str, version_no: ... function query_sub_agents_id_list (line 81) | def query_sub_agents_id_list(main_agent_id: int, tenant_id: str, version... function clear_agent_new_mark (line 101) | def clear_agent_new_mark(agent_id: int, tenant_id: str, user_id: str, ve... function mark_agents_as_new (line 127) | def mark_agents_as_new(agent_ids: list[int], tenant_id: str, user_id: st... function create_agent (line 152) | def create_agent(agent_info, tenant_id: str, user_id: str): function update_agent (line 206) | def update_agent(agent_id, agent_info, user_id, version_no: int = 0): function delete_agent_by_id (line 239) | def delete_agent_by_id(agent_id, tenant_id: str, user_id: str): function query_all_agent_info_by_tenant_id (line 270) | def query_all_agent_info_by_tenant_id(tenant_id: str, version_no: int = 0): function insert_related_agent (line 288) | def insert_related_agent(parent_agent_id: int, child_agent_id: int, tena... function delete_related_agent (line 320) | def delete_related_agent(parent_agent_id: int, child_agent_id: int, tena... function update_related_agents (line 347) | def update_related_agents(parent_agent_id: int, related_agent_ids: List[... function delete_agent_relationship (line 407) | def delete_agent_relationship(agent_id: int, tenant_id: str, user_id: st... FILE: backend/database/agent_version_db.py function search_version_by_version_no (line 20) | def search_version_by_version_no( function search_version_by_id (line 38) | def search_version_by_id( function query_version_list (line 53) | def query_version_list( function query_current_version_no (line 70) | def query_current_version_no( function query_agent_snapshot (line 87) | def query_agent_snapshot( function query_agent_draft (line 127) | def query_agent_draft( function insert_version (line 137) | def insert_version( function update_version_status (line 151) | def update_version_status( function update_version (line 176) | def update_version( function update_agent_current_version (line 216) | def update_agent_current_version( function insert_agent_snapshot (line 239) | def insert_agent_snapshot( function insert_tool_snapshot (line 249) | def insert_tool_snapshot( function insert_relation_snapshot (line 259) | def insert_relation_snapshot( function update_agent_snapshot (line 269) | def update_agent_snapshot( function delete_agent_snapshot (line 293) | def delete_agent_snapshot( function delete_tool_snapshot (line 317) | def delete_tool_snapshot( function delete_relation_snapshot (line 345) | def delete_relation_snapshot( function get_next_version_no (line 373) | def get_next_version_no( function delete_version (line 389) | def delete_version( FILE: backend/database/attachment_db.py function generate_object_name (line 10) | def generate_object_name(file_name: str, prefix: str = "attachments") ->... function upload_file (line 31) | def upload_file(file_path: str, object_name: Optional[str] = None, bucke... function upload_fileobj (line 64) | def upload_fileobj( function download_file (line 111) | def download_file(object_name: str, file_path: str, bucket: Optional[str... function get_file_url (line 137) | def get_file_url(object_name: str, bucket: Optional[str] = None, expires... function get_file_size_from_minio (line 164) | def get_file_size_from_minio(object_name: str, bucket: Optional[str] = N... function file_exists (line 172) | def file_exists(object_name: str, bucket: Optional[str] = None) -> bool: function copy_file (line 189) | def copy_file(source_object: str, dest_object: str, bucket: Optional[str... function list_files (line 208) | def list_files(prefix: str = "", bucket: Optional[str] = None) -> List[D... function delete_file (line 234) | def delete_file(object_name: str, bucket: Optional[str] = None) -> Dict[... function get_file_stream (line 257) | def get_file_stream(object_name: str, bucket: Optional[str] = None) -> O... function get_content_type (line 281) | def get_content_type(file_path: str) -> str: FILE: backend/database/client.py class PostgresClient (line 28) | class PostgresClient: method __new__ (line 32) | def __new__(cls): method __init__ (line 37) | def __init__(self): method clean_string_values (line 61) | def clean_string_values(data: Dict[str, Any]) -> Dict[str, Any]: class MinioClient (line 73) | class MinioClient: method __new__ (line 82) | def __new__(cls): method __init__ (line 87) | def __init__(self): method upload_file (line 103) | def upload_file( method upload_fileobj (line 122) | def upload_fileobj(self, file_obj: BinaryIO, object_name: str, bucket:... method download_file (line 136) | def download_file(self, object_name: str, file_path: str, bucket: Opti... method get_file_url (line 150) | def get_file_url(self, object_name: str, bucket: Optional[str] = None,... method get_file_size (line 164) | def get_file_size(self, object_name: str, bucket: Optional[str] = None... method list_files (line 177) | def list_files(self, prefix: str = "", bucket: Optional[str] = None) -... method delete_file (line 190) | def delete_file(self, object_name: str, bucket: Optional[str] = None) ... method get_file_stream (line 203) | def get_file_stream(self, object_name: str, bucket: Optional[str] = No... method file_exists (line 216) | def file_exists(self, object_name: str, bucket: Optional[str] = None) ... method copy_file (line 229) | def copy_file(self, source_object: str, dest_object: str, bucket: Opti... function get_db_session (line 250) | def get_db_session(db_session=None): function as_dict (line 270) | def as_dict(obj): function filter_property (line 280) | def filter_property(data, model_class): FILE: backend/database/conversation_db.py class MessageRecord (line 18) | class MessageRecord(TypedDict): class SearchRecord (line 27) | class SearchRecord(TypedDict): class ImageRecord (line 42) | class ImageRecord(TypedDict): class ConversationHistory (line 47) | class ConversationHistory(TypedDict): function create_conversation (line 55) | def create_conversation(conversation_title: str, user_id: Optional[str] ... function create_conversation_message (line 93) | def create_conversation_message(message_data: Dict[str, Any], user_id: O... function create_message_units (line 136) | def create_message_units(message_units: List[Dict[str, Any]], message_id... function get_conversation (line 187) | def get_conversation(conversation_id: int, user_id: Optional[str] = None... function get_conversation_messages (line 218) | def get_conversation_messages(conversation_id: int) -> List[Dict[str, An... function get_message_units (line 245) | def get_message_units(message_id: int) -> List[Dict[str, Any]]: function get_conversation_list (line 272) | def get_conversation_list(user_id: Optional[str] = None) -> List[Dict[st... function rename_conversation (line 315) | def rename_conversation(conversation_id: int, new_title: str, user_id: O... function delete_conversation (line 353) | def delete_conversation(conversation_id: int, user_id: Optional[str] = N... function soft_delete_all_conversations_by_user (line 415) | def soft_delete_all_conversations_by_user(user_id: str) -> int: function update_message_opinion (line 476) | def update_message_opinion(message_id: int, opinion: str, user_id: Optio... function get_conversation_history (line 514) | def get_conversation_history(conversation_id: int, user_id: Optional[str... function create_source_image (line 626) | def create_source_image(image_data: Dict[str, Any], user_id: Optional[st... function delete_source_image (line 667) | def delete_source_image(image_id: int, user_id: Optional[str] = None) ->... function get_source_images_by_message (line 705) | def get_source_images_by_message(message_id: int, user_id: Optional[str]... function get_source_images_by_conversation (line 742) | def get_source_images_by_conversation(conversation_id: int, user_id: Opt... function create_source_search (line 777) | def create_source_search(search_data: Dict[str, Any], user_id: Optional[... function delete_source_search (line 849) | def delete_source_search(search_id: int, user_id: Optional[str] = None) ... function get_source_searches_by_message (line 886) | def get_source_searches_by_message(message_id: int, user_id: Optional[st... function get_source_searches_by_conversation (line 923) | def get_source_searches_by_conversation(conversation_id: int, user_id: O... function get_message (line 959) | def get_message(message_id: int, user_id: Optional[str] = None) -> Dict[... function get_message_id_by_index (line 992) | def get_message_id_by_index(conversation_id: int, message_index: int) ->... FILE: backend/database/db_models.py class SimpleTableBase (line 9) | class SimpleTableBase(DeclarativeBase): class TableBase (line 13) | class TableBase(DeclarativeBase): class ConversationRecord (line 25) | class ConversationRecord(TableBase): class ConversationMessage (line 37) | class ConversationMessage(TableBase): class ConversationMessageUnit (line 59) | class ConversationMessageUnit(TableBase): class ConversationSourceImage (line 79) | class ConversationSourceImage(TableBase): class ConversationSourceSearch (line 101) | class ConversationSourceSearch(TableBase): class ModelRecord (line 137) | class ModelRecord(TableBase): class ToolInfo (line 174) | class ToolInfo(TableBase): class AgentInfo (line 198) | class AgentInfo(TableBase): class ToolInstance (line 233) | class ToolInstance(TableBase): class KnowledgeRecord (line 256) | class KnowledgeRecord(TableBase): class TenantConfig (line 276) | class TenantConfig(TableBase): class MemoryUserConfig (line 293) | class MemoryUserConfig(TableBase): class McpRecord (line 310) | class McpRecord(TableBase): class UserTenant (line 339) | class UserTenant(TableBase): class AgentRelation (line 354) | class AgentRelation(TableBase): class PartnerMappingId (line 368) | class PartnerMappingId(TableBase): class TenantInvitationCode (line 387) | class TenantInvitationCode(TableBase): class TenantInvitationRecord (line 411) | class TenantInvitationRecord(TableBase): class TenantGroupInfo (line 425) | class TenantGroupInfo(TableBase): class TenantGroupUser (line 440) | class TenantGroupUser(TableBase): class RolePermission (line 453) | class RolePermission(SimpleTableBase): class AgentVersion (line 470) | class AgentVersion(TableBase): class UserTokenInfo (line 489) | class UserTokenInfo(TableBase): class UserTokenUsageLog (line 502) | class UserTokenUsageLog(TableBase): FILE: backend/database/group_db.py function query_groups (line 11) | def query_groups(group_id: Union[int, str, List[int]]) -> Union[Optional... function query_groups_by_tenant (line 52) | def query_groups_by_tenant(tenant_id: str, page: Optional[int] = 1, page... function add_group (line 101) | def add_group(tenant_id: str, group_name: str, group_description: Option... function modify_group (line 128) | def modify_group(group_id: int, updates: Dict[str, Any], updated_by: Opt... function remove_group (line 153) | def remove_group(group_id: int, updated_by: Optional[str] = None) -> bool: function add_user_to_group (line 184) | def add_user_to_group(group_id: int, user_id: str, created_by: Optional[... function remove_user_from_group (line 208) | def remove_user_from_group(group_id: int, user_id: str, updated_by: Opti... function query_group_users (line 234) | def query_group_users(group_id: int) -> List[Dict[str, Any]]: function query_group_ids_by_user (line 253) | def query_group_ids_by_user(user_id: str) -> List[int]: function query_groups_by_user (line 272) | def query_groups_by_user(user_id: str) -> List[Dict[str, Any]]: function check_user_in_group (line 295) | def check_user_in_group(user_id: str, group_id: int) -> bool: function count_group_users (line 316) | def count_group_users(group_id: int) -> int: function remove_group_users (line 335) | def remove_group_users(group_id: int, removed_by: Optional[str] = None) ... function remove_user_from_all_groups (line 359) | def remove_user_from_all_groups(user_id: str, removed_by: str) -> int: function check_group_name_exists (line 383) | def check_group_name_exists(tenant_id: str, group_name: str, exclude_gro... FILE: backend/database/invitation_db.py function query_invitation_by_code (line 11) | def query_invitation_by_code(invitation_code: str) -> Optional[Dict[str,... function query_invitation_by_id (line 32) | def query_invitation_by_id(invitation_id: int) -> Optional[Dict[str, Any]]: function query_invitations_by_tenant (line 53) | def query_invitations_by_tenant(tenant_id: str) -> List[Dict[str, Any]]: function add_invitation (line 72) | def add_invitation(tenant_id: str, invitation_code: str, code_type: str,... function modify_invitation (line 108) | def modify_invitation(invitation_id: int, updates: Dict[str, Any], updat... function remove_invitation (line 137) | def remove_invitation(invitation_id: int, updated_by: Optional[str] = No... function query_invitation_records (line 161) | def query_invitation_records(invitation_id: int) -> List[Dict[str, Any]]: function add_invitation_record (line 180) | def add_invitation_record(invitation_id: int, user_id: str, created_by: ... function query_invitation_records_by_user (line 204) | def query_invitation_records_by_user(user_id: str) -> List[Dict[str, Any]]: function count_invitation_usage (line 223) | def count_invitation_usage(invitation_id: int) -> int: function query_invitation_status (line 242) | def query_invitation_status(invitation_code: str) -> Optional[str]: function query_invitations_with_pagination (line 261) | def query_invitations_with_pagination( FILE: backend/database/knowledge_db.py function _generate_index_name (line 12) | def _generate_index_name(knowledge_id: int) -> str: function create_knowledge_record (line 21) | def create_knowledge_record(query: Dict[str, Any]) -> Dict[str, Any]: function upsert_knowledge_record (line 85) | def upsert_knowledge_record(query: Dict[str, Any]) -> Dict[str, Any]: function update_knowledge_record (line 137) | def update_knowledge_record(query: Dict[str, Any]) -> bool: function delete_knowledge_record (line 192) | def delete_knowledge_record(query: Dict[str, Any]) -> bool: function get_knowledge_record (line 228) | def get_knowledge_record(query: Optional[Dict[str, Any]] = None) -> Dict... function get_knowledge_info_by_knowledge_ids (line 266) | def get_knowledge_info_by_knowledge_ids(knowledge_ids: List[str]) -> Lis... function get_knowledge_ids_by_index_names (line 287) | def get_knowledge_ids_by_index_names(index_names: List[str]) -> List[str]: function get_knowledge_info_by_tenant_id (line 299) | def get_knowledge_info_by_tenant_id(tenant_id: str) -> List[Dict[str, An... function get_knowledge_info_by_tenant_and_source (line 311) | def get_knowledge_info_by_tenant_and_source(tenant_id: str, knowledge_so... function update_model_name_by_index_name (line 334) | def update_model_name_by_index_name(index_name: str, embedding_model_nam... function get_index_name_by_knowledge_name (line 348) | def get_index_name_by_knowledge_name(knowledge_name: str, tenant_id: str... FILE: backend/database/memory_config_db.py function get_all_configs_by_user_id (line 7) | def get_all_configs_by_user_id(user_id: str) -> List[Dict[str, Any]]: function get_memory_config_info (line 27) | def get_memory_config_info(user_id: str, select_key: str) -> List[Dict[s... function insert_config (line 46) | def insert_config(insert_data: Dict[str, Any]) -> bool: function delete_config_by_config_id (line 59) | def delete_config_by_config_id(config_id: int, updated_by: str) -> bool: function update_config_by_id (line 77) | def update_config_by_id(config_id: int, update_data: Dict[str, Any]) -> ... function soft_delete_all_configs_by_user_id (line 93) | def soft_delete_all_configs_by_user_id(user_id: str, actor: str) -> bool: FILE: backend/database/model_management_db.py function create_model_record (line 11) | def create_model_record(model_data: Dict[str, Any], user_id: str, tenant... function update_model_record (line 45) | def update_model_record( function delete_model_record (line 87) | def delete_model_record(model_id: int, user_id: str, tenant_id: str) -> ... function get_model_records (line 122) | def get_model_records(filters: Optional[Dict[str, Any]], tenant_id: str)... function get_model_by_display_name (line 173) | def get_model_by_display_name(display_name: str, tenant_id: str) -> Opti... function get_models_by_display_name (line 191) | def get_models_by_display_name(display_name: str, tenant_id: str) -> Lis... function get_model_id_by_display_name (line 206) | def get_model_id_by_display_name(display_name: str, tenant_id: str) -> O... function get_model_by_model_id (line 221) | def get_model_by_model_id(model_id: int, tenant_id: Optional[str] = None... function get_models_by_tenant_factory_type (line 264) | def get_models_by_tenant_factory_type(tenant_id: str, model_factory: str... function get_model_by_name_factory (line 275) | def get_model_by_name_factory(model_name: str, model_factory: str, tenan... FILE: backend/database/partner_db.py function add_mapping_id (line 8) | def add_mapping_id( function get_internal_id_by_external (line 34) | def get_internal_id_by_external( function get_external_id_by_internal (line 62) | def get_external_id_by_internal( FILE: backend/database/remote_mcp_db.py function create_mcp_record (line 10) | def create_mcp_record(mcp_data: Dict[str, Any], tenant_id: str, user_id:... function delete_mcp_record_by_name_and_url (line 31) | def delete_mcp_record_by_name_and_url(mcp_name: str, mcp_server: str, te... function delete_mcp_record_by_container_id (line 49) | def delete_mcp_record_by_container_id(container_id: str, tenant_id: str,... function update_mcp_status_by_name_and_url (line 65) | def update_mcp_status_by_name_and_url(mcp_name: str, mcp_server: str, te... function get_mcp_records_by_tenant (line 83) | def get_mcp_records_by_tenant(tenant_id: str) -> List[Dict[str, Any]]: function get_mcp_server_by_name_and_tenant (line 99) | def get_mcp_server_by_name_and_tenant(mcp_name: str, tenant_id: str) -> ... function get_mcp_authorization_token_by_name_and_url (line 117) | def get_mcp_authorization_token_by_name_and_url(mcp_name: str, mcp_serve... function update_mcp_record_by_name_and_url (line 137) | def update_mcp_record_by_name_and_url( function check_mcp_name_exists (line 173) | def check_mcp_name_exists(mcp_name: str, tenant_id: str) -> bool: function get_mcp_record_by_id_and_tenant (line 190) | def get_mcp_record_by_id_and_tenant(mcp_id: int, tenant_id: str) -> Dict... FILE: backend/database/role_permission_db.py function get_all_role_permissions (line 12) | def get_all_role_permissions() -> List[Dict[str, Any]]: function check_role_permission (line 25) | def check_role_permission(user_role: str, permission_category: Optional[... function get_permissions_by_category (line 55) | def get_permissions_by_category(permission_category: str) -> List[Dict[s... FILE: backend/database/tenant_config_db.py function get_all_configs_by_tenant_id (line 13) | def get_all_configs_by_tenant_id(tenant_id: str): function get_tenant_config_info (line 32) | def get_tenant_config_info(tenant_id: str, user_id: str, select_key: str): function get_single_config_info (line 49) | def get_single_config_info(tenant_id: str, select_key: str): function insert_config (line 68) | def insert_config(insert_data: Dict[str, Any]): function delete_config_by_tenant_config_id (line 80) | def delete_config_by_tenant_config_id(tenant_config_id: int): function delete_config (line 95) | def delete_config(tenant_id: str, user_id: str, select_key: str, config_... function update_config_by_tenant_config_id (line 113) | def update_config_by_tenant_config_id(tenant_config_id: int, update_valu... function update_config_by_tenant_config_id_and_data (line 128) | def update_config_by_tenant_config_id_and_data(tenant_config_id: int, in... function get_all_tenant_ids (line 143) | def get_all_tenant_ids(): FILE: backend/database/token_db.py function generate_access_key (line 11) | def generate_access_key() -> str: function create_token (line 17) | def create_token(access_key: str, user_id: str) -> Dict[str, Any]: function list_tokens_by_user (line 45) | def list_tokens_by_user(user_id: str) -> List[Dict[str, Any]]: function get_token_by_id (line 71) | def get_token_by_id(token_id: int) -> UserTokenInfo: function get_token_by_access_key (line 87) | def get_token_by_access_key(access_key: str) -> Optional[Dict[str, Any]]: function delete_token (line 112) | def delete_token(token_id: int, user_id: str) -> bool: function log_token_usage (line 137) | def log_token_usage( function get_latest_usage_metadata (line 169) | def get_latest_usage_metadata(token_id: int, related_id: int, call_funct... FILE: backend/database/tool_db.py function create_tool (line 10) | def create_tool(tool_info, version_no: int = 0): function create_or_update_tool_by_tool_info (line 32) | def create_or_update_tool_by_tool_info(tool_info, tenant_id: str, user_i... function query_all_tools (line 76) | def query_all_tools(tenant_id: str): function query_tool_instances_by_id (line 91) | def query_tool_instances_by_id(agent_id: int, tool_id: int, tenant_id: s... function query_tools_by_ids (line 119) | def query_tools_by_ids(tool_id_list: List[int]): function query_all_enabled_tool_instances (line 131) | def query_all_enabled_tool_instances(agent_id: int, tenant_id: str, vers... function query_tool_instances_by_agent_id (line 155) | def query_tool_instances_by_agent_id(agent_id: int, tenant_id: str, vers... function check_tool_list_initialized (line 178) | def check_tool_list_initialized(tenant_id: str) -> bool: function update_tool_table_from_scan_tool_list (line 197) | def update_tool_table_from_scan_tool_list(tenant_id: str, user_id: str, ... function add_tool_field (line 250) | def add_tool_field(tool_info): function search_tools_for_sub_agent (line 271) | def search_tools_for_sub_agent(agent_id, tenant_id, version_no: int = 0): function check_tool_is_available (line 304) | def check_tool_is_available(tool_id_list: List[int]): function delete_tools_by_agent_id (line 314) | def delete_tools_by_agent_id(agent_id, tenant_id, user_id, version_no: i... function search_last_tool_instance_by_tool_id (line 335) | def search_last_tool_instance_by_tool_id(tool_id: int, tenant_id: str, u... FILE: backend/database/user_tenant_db.py function get_user_tenant_by_user_id (line 14) | def get_user_tenant_by_user_id(user_id: str) -> Optional[Dict[str, Any]]: function get_all_tenant_ids (line 35) | def get_all_tenant_ids() -> list[str]: function insert_user_tenant (line 56) | def insert_user_tenant(user_id: str, tenant_id: str, user_role: str = "U... function get_users_by_tenant_id (line 78) | def get_users_by_tenant_id(tenant_id: str, page: Optional[int] = 1, page... function update_user_tenant_role (line 127) | def update_user_tenant_role(user_id: str, role: str, updated_by: str) ->... function soft_delete_user_tenant_by_user_id (line 152) | def soft_delete_user_tenant_by_user_id(user_id: str, deleted_by: str) ->... function soft_delete_users_by_tenant_id (line 176) | def soft_delete_users_by_tenant_id(tenant_id: str, deleted_by: str) -> b... FILE: backend/database/utils.py function add_creation_tracking (line 5) | def add_creation_tracking(data: Dict[str, Any], user_id: str) -> Dict[st... function add_update_tracking (line 22) | def add_update_tracking(data: Dict[str, Any], user_id: str) -> Dict[str,... FILE: backend/middleware/exception_handler.py function _http_status_to_error_code (line 23) | def _http_status_to_error_code(status_code: int) -> ErrorCode: class ExceptionHandlerMiddleware (line 38) | class ExceptionHandlerMiddleware(BaseHTTPMiddleware): method dispatch (line 47) | async def dispatch(self, request: Request, call_next: Callable) -> Res... function create_error_response (line 117) | def create_error_response( function create_success_response (line 152) | def create_success_response( FILE: backend/services/agent_service.py function _resolve_user_tenant_language (line 83) | def _resolve_user_tenant_language( function _get_user_group_ids (line 99) | def _get_user_group_ids(user_id: str, tenant_id: str) -> str: function _resolve_model_with_fallback (line 119) | def _resolve_model_with_fallback( function _normalize_language_key (line 170) | def _normalize_language_key(language: str) -> str: function _render_prompt_template (line 177) | def _render_prompt_template(template_str: str, **context) -> str: function _format_existing_values (line 187) | def _format_existing_values(values: set[str], language: str) -> str: function _check_agent_value_duplicate (line 193) | def _check_agent_value_duplicate( function _check_agent_name_duplicate (line 212) | def _check_agent_name_duplicate( function _check_agent_display_name_duplicate (line 227) | def _check_agent_display_name_duplicate( function _generate_unique_value_with_suffix (line 242) | def _generate_unique_value_with_suffix( function _generate_unique_agent_name_with_suffix (line 265) | def _generate_unique_agent_name_with_suffix( function _generate_unique_display_name_with_suffix (line 280) | def _generate_unique_display_name_with_suffix( function _regenerate_agent_value_with_llm (line 295) | def _regenerate_agent_value_with_llm( function _regenerate_agent_name_with_llm (line 361) | def _regenerate_agent_name_with_llm( function _regenerate_agent_display_name_with_llm (line 402) | def _regenerate_agent_display_name_with_llm( function check_agent_name_conflict_batch_impl (line 442) | async def check_agent_name_conflict_batch_impl( function regenerate_agent_name_batch_impl (line 489) | async def regenerate_agent_name_batch_impl( function _stream_agent_chunks (line 586) | async def _stream_agent_chunks( function get_enable_tool_id_by_agent_id (line 689) | def get_enable_tool_id_by_agent_id(agent_id: int, tenant_id: str): function get_creating_sub_agent_id_service (line 699) | async def get_creating_sub_agent_id_service(tenant_id: str, user_id: str... function get_agent_info_impl (line 711) | async def get_agent_info_impl(agent_id: int, tenant_id: str, version_no:... function get_creating_sub_agent_info_impl (line 762) | async def get_creating_sub_agent_info_impl(authorization: str = Header(N... function update_agent_info_impl (line 801) | async def update_agent_info_impl(request: AgentInfoRequest, authorizatio... function delete_agent_impl (line 920) | async def delete_agent_impl(agent_id: int, tenant_id: str, user_id: str): function clear_agent_memory (line 941) | async def clear_agent_memory(agent_id: int, tenant_id: str, user_id: str): function export_agent_impl (line 990) | async def export_agent_impl(agent_id: int, authorization: str = Header(N... function export_agent_by_agent_id (line 1045) | async def export_agent_by_agent_id(agent_id: int, tenant_id: str, user_i... function import_agent_impl (line 1098) | async def import_agent_impl( function import_agent_by_agent_id (line 1154) | async def import_agent_by_agent_id( function load_default_agents_json_file (line 1256) | def load_default_agents_json_file(default_agent_path): function clear_agent_new_mark_impl (line 1271) | async def clear_agent_new_mark_impl(agent_id: int, tenant_id: str, user_... function list_all_agent_info_impl (line 1287) | async def list_all_agent_info_impl(tenant_id: str, user_id: str) -> list... function _apply_duplicate_name_availability_rules (line 1398) | def _apply_duplicate_name_availability_rules(enriched_agents: list[dict]... function _collect_model_availability_reasons (line 1438) | def _collect_model_availability_reasons(agent: dict, tenant_id: str, mod... function _check_single_model_availability (line 1453) | def _check_single_model_availability( function check_agent_availability (line 1477) | def check_agent_availability( function insert_related_agent_impl (line 1527) | def insert_related_agent_impl(parent_agent_id, child_agent_id, tenant_id): function prepare_agent_run (line 1562) | async def prepare_agent_run( function save_messages (line 1592) | def save_messages(agent_request, target: str, user_id: str, tenant_id: s... function generate_stream_with_memory (line 1606) | async def generate_stream_with_memory( function generate_stream_no_memory (line 1710) | async def generate_stream_no_memory( function run_agent_stream (line 1744) | async def run_agent_stream( function stop_agent_tasks (line 1914) | def stop_agent_tasks(conversation_id: int, user_id: str): function get_agent_id_by_name (line 1942) | async def get_agent_id_by_name(agent_name: str, tenant_id: str) -> int: function delete_related_agent_impl (line 1956) | def delete_related_agent_impl(parent_agent_id: int, child_agent_id: int,... function get_agent_call_relationship_impl (line 1975) | def get_agent_call_relationship_impl(agent_id: int, tenant_id: str) -> d... FILE: backend/services/agent_version_service.py function _remove_audit_fields_for_insert (line 37) | def _remove_audit_fields_for_insert(data: dict) -> None: function publish_version_impl (line 48) | def publish_version_impl( function get_version_list_impl (line 121) | def get_version_list_impl( function get_version_impl (line 139) | def get_version_impl( function get_version_detail_impl (line 150) | def get_version_detail_impl( function _check_version_snapshot_availability (line 239) | def _check_version_snapshot_availability( function rollback_version_impl (line 272) | def rollback_version_impl( function update_version_status_impl (line 312) | def update_version_status_impl( function update_version_impl (line 340) | def update_version_impl( function delete_version_impl (line 374) | def delete_version_impl( function get_current_version_impl (line 439) | def get_current_version_impl( function compare_versions_impl (line 466) | def compare_versions_impl( function _get_version_detail_or_draft (line 559) | def _get_version_detail_or_draft( function list_published_agents_impl (line 623) | async def list_published_agents_impl( FILE: backend/services/config_sync_service.py function handle_model_config (line 34) | def handle_model_config(tenant_id: str, user_id: str, config_key: str, m... function save_config_impl (line 71) | async def save_config_impl(config, tenant_id, user_id): function load_config_impl (line 118) | async def load_config_impl(language: str, tenant_id: str): function build_app_config (line 130) | def build_app_config(language: str, tenant_id: str) -> dict: function build_models_config (line 152) | def build_models_config(tenant_id: str) -> dict: function build_model_config (line 167) | def build_model_config(model_config: dict) -> dict: FILE: backend/services/conversation_management_service.py function save_message (line 38) | def save_message(request: MessageRequest, user_id: str, tenant_id: str): function save_conversation_user (line 201) | def save_conversation_user(request: AgentRequest, user_id: str, tenant_i... function save_conversation_assistant (line 210) | def save_conversation_assistant(request: AgentRequest, messages: List[st... function call_llm_for_title (line 229) | def call_llm_for_title(question: str, tenant_id: str, language: str = LA... function update_conversation_title (line 277) | def update_conversation_title(conversation_id: int, title: str, user_id:... function create_new_conversation (line 294) | def create_new_conversation(title: str, user_id: str) -> Dict[str, Any]: function get_conversation_list_service (line 313) | def get_conversation_list_service(user_id: str) -> List[Dict[str, Any]]: function rename_conversation_service (line 328) | def rename_conversation_service(conversation_id: int, name: str, user_id... function delete_conversation_service (line 350) | def delete_conversation_service(conversation_id: int, user_id: str) -> b... function get_conversation_history_service (line 371) | def get_conversation_history_service(conversation_id: int, user_id: str)... function get_sources_service (line 534) | def get_sources_service(conversation_id: Optional[int], message_id: Opti... function generate_conversation_title_service (line 633) | async def generate_conversation_title_service(conversation_id: int, ques... function update_message_opinion_service (line 664) | def update_message_opinion_service(message_id: int, opinion: Optional[st... function get_message_id_by_index_impl (line 685) | async def get_message_id_by_index_impl(conversation_id: int, message_ind... FILE: backend/services/data_process_service.py class DataProcessService (line 38) | class DataProcessService: method __init__ (line 39) | def __init__(self): method _init_redis_client (line 61) | def _init_redis_client(self): method _init_clip_model (line 82) | def _init_clip_model(self): method start (line 99) | async def start(self): method stop (line 103) | async def stop(self): method _get_celery_inspector (line 107) | def _get_celery_inspector(self): method get_task (line 129) | async def get_task(self, task_id: str) -> Optional[Dict[str, Any]]: method get_all_tasks (line 133) | async def get_all_tasks(self, filter: bool = True) -> List[Dict[str, A... method get_index_tasks (line 212) | async def get_index_tasks(self, index_name: str, filter: bool = True) ... method check_image_size (line 225) | def check_image_size(self, width: int, height: int, min_width: int = 2... method load_image (line 241) | async def load_image(self, image_url: str) -> Optional[Image.Image]: method _load_image (line 255) | async def _load_image(self, session: aiohttp.ClientSession, path: str)... method filter_important_image (line 342) | async def filter_important_image(self, image_url: str, positive_prompt... method create_batch_tasks_impl (line 456) | async def create_batch_tasks_impl(self, authorization: Optional[str], ... method convert_to_base64 (line 503) | async def convert_to_base64(self, image): method process_uploaded_text_file (line 514) | async def process_uploaded_text_file(self, file_content: bytes, filena... method convert_office_to_pdf_impl (line 561) | async def convert_office_to_pdf_impl(self, object_name: str, pdf_objec... method convert_celery_states_to_custom (line 636) | def convert_celery_states_to_custom(self, process_celery_state: Option... function get_data_process_service (line 674) | def get_data_process_service(): FILE: backend/services/datamate_service.py function _create_datamate_knowledge_records (line 21) | async def _create_datamate_knowledge_records(knowledge_base_ids: List[str], function _get_datamate_core (line 78) | def _get_datamate_core(tenant_id: str, datamate_url: Optional[str] = Non... function fetch_datamate_knowledge_base_file_list (line 100) | async def fetch_datamate_knowledge_base_file_list(knowledge_base_id: str... function sync_datamate_knowledge_bases_and_create_records (line 133) | async def sync_datamate_knowledge_bases_and_create_records( function check_datamate_connection (line 264) | async def check_datamate_connection( FILE: backend/services/dify_service.py function fetch_dify_datasets_impl (line 22) | def fetch_dify_datasets_impl( FILE: backend/services/file_management_service.py function upload_files_impl (line 51) | async def upload_files_impl(destination: str, file: List[UploadFile], fo... function upload_to_minio (line 138) | async def upload_to_minio(files: List[UploadFile], folder: str) -> List[... function get_file_url_impl (line 172) | async def get_file_url_impl(object_name: str, expires: int): function get_file_stream_impl (line 180) | async def get_file_stream_impl(object_name: str): function delete_file_impl (line 188) | async def delete_file_impl(object_name: str): function list_files_impl (line 196) | async def list_files_impl(prefix: str, limit: Optional[int] = None): function get_llm_model (line 203) | def get_llm_model(tenant_id: str): function preview_file_impl (line 218) | async def preview_file_impl(object_name: str) -> Tuple[BytesIO, str]: function _get_cached_pdf_stream (line 264) | def _get_cached_pdf_stream(pdf_object_name: str) -> Optional[BytesIO]: function _convert_office_to_cached_pdf (line 281) | async def _convert_office_to_cached_pdf( FILE: backend/services/group_service.py function get_group_info (line 31) | def get_group_info(group_id: Union[int, str, List[int]]) -> Union[Option... function get_groups_by_tenant (line 72) | def get_groups_by_tenant(tenant_id: str, page: Optional[int] = 1, page_s... function get_tenant_default_group_id (line 108) | def get_tenant_default_group_id(tenant_id: str) -> Optional[int]: function set_tenant_default_group_id (line 127) | def set_tenant_default_group_id(tenant_id: str, group_id: int, updated_b... function create_group (line 194) | def create_group(tenant_id: str, group_name: str, group_description: Opt... function update_group (line 244) | def update_group(group_id: int, updates: Dict[str, Any], user_id: str) -... function delete_group (line 295) | def delete_group(group_id: int, user_id: str) -> bool: function add_user_to_single_group (line 336) | def add_user_to_single_group(group_id: int, user_id: str, current_user_i... function remove_user_from_single_group (line 387) | def remove_user_from_single_group(group_id: int, user_id: str, current_u... function get_group_users (line 430) | def get_group_users(group_id: int) -> List[Dict[str, Any]]: function get_group_user_count (line 467) | def get_group_user_count(group_id: int) -> int: function add_user_to_groups (line 488) | def add_user_to_groups(user_id: str, group_ids: List[int], current_user_... function update_group_members (line 520) | def update_group_members(group_id: int, user_ids: List[str], current_use... FILE: backend/services/idata_service.py function _validate_idata_base_params (line 22) | def _validate_idata_base_params( function _normalize_api_base (line 63) | def _normalize_api_base(idata_api_base: str) -> str: function _make_idata_request (line 76) | def _make_idata_request( function _parse_idata_response (line 155) | def _parse_idata_response(result: Dict[str, Any]) -> List[Dict[str, Any]]: function fetch_idata_knowledge_spaces_impl (line 191) | def fetch_idata_knowledge_spaces_impl( function fetch_idata_datasets_impl (line 258) | def fetch_idata_datasets_impl( FILE: backend/services/image_service.py function proxy_image_impl (line 16) | async def proxy_image_impl(decoded_url: str): function get_vlm_model (line 33) | def get_vlm_model(tenant_id: str): FILE: backend/services/invitation_service.py function create_invitation_code (line 29) | def create_invitation_code( function update_invitation_code (line 132) | def update_invitation_code( function delete_invitation_code (line 175) | def delete_invitation_code(invitation_id: int, user_id: str) -> bool: function _normalize_invitation_data (line 216) | def _normalize_invitation_data(invitation_data: Dict[str, Any]) -> Dict[... function get_invitation_by_code (line 253) | def get_invitation_by_code(invitation_code: str) -> Optional[Dict[str, A... function _calculate_current_status (line 270) | def _calculate_current_status(invitation_data: Dict[str, Any]) -> Dict[s... function check_invitation_available (line 320) | def check_invitation_available(invitation_code: str) -> bool: function use_invitation_code (line 343) | def use_invitation_code( function update_invitation_code_status (line 391) | def update_invitation_code_status(invitation_id: int) -> bool: function _generate_unique_invitation_code (line 448) | def _generate_unique_invitation_code(length: int = 6) -> str: function get_invitations_list (line 474) | def get_invitations_list( FILE: backend/services/mcp_container_service.py class MCPContainerManager (line 24) | class MCPContainerManager: method __init__ (line 32) | def __init__(self, docker_socket_path: Optional[str] = None): method load_image_from_tar_file (line 53) | async def load_image_from_tar_file(self, tar_file_path: str) -> str: method start_mcp_container (line 85) | async def start_mcp_container( method start_mcp_container_from_tar (line 136) | async def start_mcp_container_from_tar( method stop_mcp_container (line 184) | async def stop_mcp_container(self, container_id: str) -> bool: method list_mcp_containers (line 210) | def list_mcp_containers(self, tenant_id: Optional[str] = None) -> List... method get_container_logs (line 241) | def get_container_logs(self, container_id: str, tail: int = 100) -> str: method stream_container_logs (line 258) | async def stream_container_logs( FILE: backend/services/memory_config_service.py function _aggregate_records (line 33) | def _aggregate_records(records: List[Dict[str, Union[str, int]]]) -> Dic... function get_user_configs (line 49) | def get_user_configs(user_id: str) -> Dict[str, Union[str, List[str]]]: function _update_single_config (line 66) | def _update_single_config(user_id: str, config_key: str, config_value: s... function _add_multi_value (line 100) | def _add_multi_value(user_id: str, config_key: str, value: str) -> bool: function _remove_multi_value (line 122) | def _remove_multi_value(user_id: str, config_key: str, value: str) -> bool: function get_memory_switch (line 141) | def get_memory_switch(user_id: str) -> bool: function set_memory_switch (line 146) | def set_memory_switch(user_id: str, enabled: bool) -> bool: function get_agent_share (line 151) | def get_agent_share(user_id: str) -> MemoryAgentShareMode: function set_agent_share (line 161) | def set_agent_share(user_id: str, mode: MemoryAgentShareMode) -> bool: function get_disabled_agent_ids (line 166) | def get_disabled_agent_ids(user_id: str) -> List[str]: function add_disabled_agent_id (line 171) | def add_disabled_agent_id(user_id: str, agent_id: str) -> bool: function remove_disabled_agent_id (line 175) | def remove_disabled_agent_id(user_id: str, agent_id: str) -> bool: function get_disabled_useragent_ids (line 181) | def get_disabled_useragent_ids(user_id: str) -> List[str]: function add_disabled_useragent_id (line 186) | def add_disabled_useragent_id(user_id: str, ua_id: str) -> bool: function remove_disabled_useragent_id (line 190) | def remove_disabled_useragent_id(user_id: str, ua_id: str) -> bool: function build_memory_context (line 194) | def build_memory_context(user_id: str, tenant_id: str, agent_id: str | i... FILE: backend/services/model_health_service.py function _embedding_dimension_check (line 16) | async def _embedding_dimension_check( function _perform_connectivity_check (line 54) | async def _perform_connectivity_check( function check_model_connectivity (line 124) | async def check_model_connectivity(display_name: str, tenant_id: str) ->... function verify_model_config_connectivity (line 178) | async def verify_model_config_connectivity(model_config: dict): function embedding_dimension_check (line 232) | async def embedding_dimension_check(model_config: dict): FILE: backend/services/model_management_service.py function create_model_for_tenant (line 35) | async def create_model_for_tenant(user_id: str, tenant_id: str, model_da... function create_provider_models_for_tenant (line 108) | async def create_provider_models_for_tenant(tenant_id: str, provider_req... function batch_create_models_for_tenant (line 132) | async def batch_create_models_for_tenant(user_id: str, tenant_id: str, b... function list_provider_models_for_tenant (line 196) | async def list_provider_models_for_tenant(tenant_id: str, provider: str,... function update_single_model_for_tenant (line 211) | async def update_single_model_for_tenant( function batch_update_models_for_tenant (line 274) | async def batch_update_models_for_tenant(user_id: str, tenant_id: str, m... function delete_model_for_tenant (line 286) | async def delete_model_for_tenant(user_id: str, tenant_id: str, display_... function list_models_for_tenant (line 347) | async def list_models_for_tenant(tenant_id: str): function list_llm_models_for_tenant (line 379) | async def list_llm_models_for_tenant(tenant_id: str): function list_models_for_admin (line 405) | async def list_models_for_admin( FILE: backend/services/model_provider_service.py function get_provider_models (line 27) | async def get_provider_models(model_data: dict) -> List[dict]: function prepare_model_dict (line 60) | async def prepare_model_dict(provider: str, model: dict, model_url: str,... function merge_existing_model_tokens (line 153) | def merge_existing_model_tokens(model_list: List[dict], tenant_id: str, ... FILE: backend/services/northbound_service.py class NorthboundContext (line 34) | class NorthboundContext: function _now_seconds (line 54) | def _now_seconds() -> float: function _minute_bucket (line 58) | def _minute_bucket(ts: Optional[float] = None) -> str: function idempotency_start (line 63) | async def idempotency_start(key: str, ttl_seconds: Optional[int] = None)... function idempotency_end (line 75) | async def idempotency_end(key: str) -> None: function _release_idempotency_after_delay (line 80) | async def _release_idempotency_after_delay(key: str, seconds: int = 3) -... function check_and_consume_rate_limit (line 85) | async def check_and_consume_rate_limit(tenant_id: str) -> None: function _build_idempotency_key (line 99) | def _build_idempotency_key(*parts: Any) -> str: function get_agent_info_by_name (line 117) | async def get_agent_info_by_name(agent_name: str, tenant_id: str) -> int: function start_streaming_chat (line 124) | async def start_streaming_chat( function stop_chat (line 206) | async def stop_chat(ctx: NorthboundContext, conversation_id: int, meta_d... function list_conversations (line 228) | async def list_conversations(ctx: NorthboundContext) -> Dict[str, Any]: function get_conversation_history_internal (line 260) | async def get_conversation_history_internal(ctx: NorthboundContext, conv... function get_conversation_history (line 278) | async def get_conversation_history(ctx: NorthboundContext, conversation_... function get_agent_info_list (line 285) | async def get_agent_info_list(ctx: NorthboundContext) -> Dict[str, Any]: function update_conversation_title (line 297) | async def update_conversation_title(ctx: NorthboundContext, conversation... FILE: backend/services/prompt_service.py function gen_system_prompt_streamable (line 32) | def gen_system_prompt_streamable(agent_id: int, model_id: int, task_desc... function generate_and_save_system_prompt_impl (line 59) | def generate_and_save_system_prompt_impl(agent_id: int, function generate_system_prompt (line 226) | def generate_system_prompt(sub_agent_info_list, task_description, tool_i... function _start_generation_threads (line 254) | def _start_generation_threads(content, prompt_for_generate, produce_queu... function _stream_results (line 298) | def _stream_results(produce_queue, latest, stop_flags, threads, error_ho... function join_info_for_generate_system_prompt (line 355) | def join_info_for_generate_system_prompt(prompt_for_generate, sub_agent_... function get_enabled_tool_description_for_generate_prompt (line 373) | def get_enabled_tool_description_for_generate_prompt(agent_id: int, tena... function get_enabled_sub_agent_description_for_generate_prompt (line 382) | def get_enabled_sub_agent_description_for_generate_prompt(agent_id: int,... FILE: backend/services/providers/base.py function _create_error_response (line 15) | def _create_error_response(error_code: str, message: str, http_code: int... function _classify_provider_error (line 33) | def _classify_provider_error( class AbstractModelProvider (line 144) | class AbstractModelProvider(ABC): method get_models (line 148) | async def get_models(self, provider_config: Dict) -> List[Dict]: FILE: backend/services/providers/dashscope_provider.py class DashScopeModelProvider (line 9) | class DashScopeModelProvider(AbstractModelProvider): method get_models (line 12) | async def get_models(self, provider_config: Dict) -> List[Dict]: FILE: backend/services/providers/modelengine_provider.py function get_model_engine_raw_url (line 14) | def get_model_engine_raw_url(model_engine_url: str) -> str: class ModelEngineProvider (line 33) | class ModelEngineProvider(AbstractModelProvider): method get_models (line 36) | async def get_models(self, provider_config: Dict) -> List[Dict]: FILE: backend/services/providers/silicon_provider.py class SiliconModelProvider (line 9) | class SiliconModelProvider(AbstractModelProvider): method get_models (line 12) | async def get_models(self, provider_config: Dict) -> List[Dict]: FILE: backend/services/providers/tokenpony_provider.py class TokenPonyModelProvider (line 12) | class TokenPonyModelProvider(AbstractModelProvider): method get_models (line 15) | async def get_models(self, provider_config: Dict) -> List[Dict]: FILE: backend/services/redis_service.py class RedisService (line 12) | class RedisService: method __init__ (line 15) | def __init__(self): method client (line 20) | def client(self) -> redis.Redis: method backend_client (line 34) | def backend_client(self) -> redis.Redis: method mark_task_cancelled (line 47) | def mark_task_cancelled(self, task_id: str, ttl_hours: int = 24) -> bool: method is_task_cancelled (line 66) | def is_task_cancelled(self, task_id: str) -> bool: method _cleanup_single_task_related_keys (line 84) | def _cleanup_single_task_related_keys(self, task_id: str) -> int: method delete_knowledgebase_records (line 128) | def delete_knowledgebase_records(self, index_name: str) -> Dict[str, A... method delete_document_records (line 175) | def delete_document_records(self, index_name: str, path_or_url: str) -... method _recursively_delete_task_and_parents (line 218) | def _recursively_delete_task_and_parents(self, task_id: str) -> tuple[... method _cleanup_celery_tasks (line 270) | def _cleanup_celery_tasks(self, index_name: str) -> int: method _cleanup_cache_keys (line 404) | def _cleanup_cache_keys(self, index_name: str) -> int: method _cleanup_document_celery_tasks (line 444) | def _cleanup_document_celery_tasks(self, index_name: str, path_or_url:... method _cleanup_document_cache_keys (line 542) | def _cleanup_document_cache_keys(self, index_name: str, path_or_url: s... method get_knowledgebase_task_count (line 593) | def get_knowledgebase_task_count(self, index_name: str) -> int: method ping (line 640) | def ping(self) -> bool: method save_error_info (line 650) | def save_error_info(self, task_id: str, error_reason: str, ttl_days: i... method save_progress_info (line 693) | def save_progress_info(self, task_id: str, processed_chunks: int, tota... method get_progress_info (line 731) | def get_progress_info(self, task_id: str) -> Optional[Dict[str, int]]: method get_error_info (line 753) | def get_error_info(self, task_id: str) -> Optional[str]: function get_redis_service (line 777) | def get_redis_service() -> RedisService: FILE: backend/services/remote_mcp_service.py function mcp_server_health (line 27) | async def mcp_server_health(remote_mcp_server: str, authorization_token:... function add_remote_mcp_server_list (line 61) | async def add_remote_mcp_server_list( function delete_remote_mcp_server_list (line 92) | async def delete_remote_mcp_server_list(tenant_id: str, function update_remote_mcp_server_list (line 103) | async def update_remote_mcp_server_list( function get_remote_mcp_server_list (line 159) | async def get_remote_mcp_server_list(tenant_id: str, user_id: str | None... function attach_mcp_container_permissions (line 189) | def attach_mcp_container_permissions( function check_mcp_health_and_update_db (line 240) | async def check_mcp_health_and_update_db(mcp_url, service_name, tenant_i... function delete_mcp_by_container_id (line 267) | async def delete_mcp_by_container_id(tenant_id: str, user_id: str, conta... function get_mcp_record_by_id (line 281) | async def get_mcp_record_by_id(mcp_id: int, tenant_id: str) -> dict | None: function upload_and_start_mcp_image (line 303) | async def upload_and_start_mcp_image( FILE: backend/services/tenant_service.py function get_tenant_info (line 32) | def get_tenant_info(tenant_id: str) -> Dict[str, Any]: function _ensure_tenant_name_config (line 67) | def _ensure_tenant_name_config(tenant_id: str) -> bool: function check_tenant_name_exists (line 99) | def check_tenant_name_exists(tenant_name: str, exclude_tenant_id: Option... function get_tenants_paginated (line 125) | def get_tenants_paginated(page: int = 1, page_size: int = 20) -> Dict[st... function create_tenant (line 171) | def create_tenant(tenant_name: str, created_by: Optional[str] = None) ->... function update_tenant_info (line 250) | def update_tenant_info(tenant_id: str, tenant_name: str, updated_by: Opt... function delete_tenant (line 305) | async def delete_tenant(tenant_id: str, deleted_by: Optional[str] = None... function _create_default_group_for_tenant (line 453) | def _create_default_group_for_tenant(tenant_id: str, created_by: Optiona... FILE: backend/services/tool_configuration_service.py function _create_mcp_transport (line 38) | def _create_mcp_transport(url: str, authorization_token: Optional[str] =... function python_type_to_json_schema (line 61) | def python_type_to_json_schema(annotation: Any) -> str: function get_local_tools (line 97) | def get_local_tools() -> List[ToolInfo]: function get_local_tools_classes (line 144) | def get_local_tools_classes() -> List[type]: function _build_tool_info_from_langchain (line 164) | def _build_tool_info_from_langchain(obj) -> ToolInfo: function get_langchain_tools (line 202) | def get_langchain_tools() -> List[ToolInfo]: function get_all_mcp_tools (line 227) | async def get_all_mcp_tools(tenant_id: str) -> List[ToolInfo]: function search_tool_info_impl (line 257) | def search_tool_info_impl(agent_id: int, tool_id: int, tenant_id: str): function update_tool_info_impl (line 287) | def update_tool_info_impl(tool_info: ToolInstanceInfoRequest, tenant_id:... function get_tool_from_remote_mcp_server (line 311) | async def get_tool_from_remote_mcp_server( function init_tool_list_for_tenant (line 377) | async def init_tool_list_for_tenant(tenant_id: str, user_id: str): function update_tool_list (line 399) | async def update_tool_list(tenant_id: str, user_id: str): function list_all_tools (line 425) | async def list_all_tools(tenant_id: str): function load_last_tool_config_impl (line 451) | def load_last_tool_config_impl(tool_id: int, tenant_id: str, user_id: str): function _call_mcp_tool (line 463) | async def _call_mcp_tool( function _validate_mcp_tool_nexent (line 500) | async def _validate_mcp_tool_nexent( function _validate_mcp_tool_remote (line 521) | async def _validate_mcp_tool_remote( function _get_tool_class_by_name (line 560) | def _get_tool_class_by_name(tool_name: str) -> Optional[type]: function _validate_local_tool (line 582) | def _validate_local_tool( function _validate_langchain_tool (line 677) | def _validate_langchain_tool( function validate_tool_impl (line 721) | async def validate_tool_impl( FILE: backend/services/user_management_service.py function set_auth_token_to_client (line 38) | def set_auth_token_to_client(client: Client, token: str) -> None: function get_authorized_client (line 50) | def get_authorized_client(authorization: Optional[str] = Header(None)) -... function get_current_user_from_client (line 60) | def get_current_user_from_client(client: Client, token: Optional[str] = ... function validate_token (line 79) | def validate_token(token: str) -> Tuple[bool, Optional[Any]]: function extend_session (line 93) | def extend_session(client: Client, refresh_token: str) -> Optional[dict]: function check_auth_service_health (line 110) | async def check_auth_service_health(): function signup_user_with_invitation (line 130) | async def signup_user_with_invitation(email: EmailStr, function parse_supabase_response (line 248) | async def parse_supabase_response(is_admin, response, user_role, auto_lo... function generate_tts_stt_4_admin (line 272) | async def generate_tts_stt_4_admin(tenant_id, user_id): function verify_invite_code (line 303) | async def verify_invite_code(invite_code): function signin_user (line 323) | async def signin_user(email: EmailStr, function refresh_user_token (line 363) | async def refresh_user_token(authorization, refresh_token: str): function get_session_by_authorization (line 375) | async def get_session_by_authorization(authorization): function get_user_info (line 397) | async def get_user_info(user_id: str) -> Optional[Dict[str, Any]]: function format_role_permissions (line 450) | def format_role_permissions(permissions: List[Dict[str, Any]]) -> Dict[s... function create_token (line 489) | def create_token(user_id: str) -> Dict[str, Any]: function list_tokens_by_user (line 502) | def list_tokens_by_user(user_id: str) -> List[Dict[str, Any]]: function delete_token (line 514) | def delete_token(token_id: int, user_id: str) -> bool: FILE: backend/services/user_service.py function get_users (line 22) | def get_users(tenant_id: str, page: Optional[int] = 1, page_size: Option... function update_user (line 68) | async def update_user(user_id: str, update_data: Dict[str, Any], updated... function delete_user_and_cleanup (line 116) | async def delete_user_and_cleanup(user_id: str, tenant_id: str) -> None: FILE: backend/services/vectordatabase_service.py function _update_progress (line 50) | def _update_progress(task_id: str, processed: int, total: int): function get_vector_db_core (line 94) | def get_vector_db_core( function _rethrow_or_plain (line 132) | def _rethrow_or_plain(exc: Exception) -> None: function check_knowledge_base_exist_impl (line 149) | def check_knowledge_base_exist_impl(knowledge_name: str, vdb_core: Vecto... function get_embedding_model (line 178) | def get_embedding_model(tenant_id: str, model_name: Optional[str] = None): class ElasticSearchService (line 244) | class ElasticSearchService: method full_delete_knowledge_base (line 246) | async def full_delete_knowledge_base(index_name: str, vdb_core: Vector... method create_index (line 361) | def create_index( method create_knowledge_base (line 390) | def create_knowledge_base( method update_knowledge_base (line 451) | def update_knowledge_base( method delete_index (line 508) | async def delete_index( method list_indices (line 555) | def list_indices( method index_documents (line 742) | def index_documents( method list_files (line 911) | async def list_files( method delete_documents (line 1154) | def delete_documents( method health_check (line 1168) | def health_check(vdb_core: VectorDatabaseCore = Depends(get_vector_db_... method summary_index_name (line 1189) | async def summary_index_name(self, method get_random_documents (line 1301) | def get_random_documents( method change_summary (line 1361) | def change_summary( method get_summary (line 1393) | def get_summary(index_name: str = Path(..., description="Name of the i... method get_index_chunks (line 1416) | def get_index_chunks( method create_chunk (line 1475) | def create_chunk( method update_chunk (line 1548) | def update_chunk( method delete_chunk (line 1589) | def delete_chunk( method search_hybrid (line 1613) | def search_hybrid( method _generate_chunk_id (line 1676) | def _generate_chunk_id() -> str: method _build_chunk_payload (line 1681) | def _build_chunk_payload( FILE: backend/services/voice_service.py class VoiceService (line 19) | class VoiceService: method __init__ (line 22) | def __init__(self): method start_stt_streaming_session (line 48) | async def start_stt_streaming_session(self, websocket) -> None: method generate_tts_speech (line 65) | async def generate_tts_speech(self, text: str, stream: bool = True) ->... method stream_tts_to_websocket (line 90) | async def stream_tts_to_websocket(self, websocket, text: str) -> None: method check_stt_connectivity (line 142) | async def check_stt_connectivity(self) -> bool: method check_tts_connectivity (line 165) | async def check_tts_connectivity(self) -> bool: method check_voice_connectivity (line 188) | async def check_voice_connectivity(self, model_type: str) -> bool: function get_voice_service (line 222) | def get_voice_service() -> VoiceService: FILE: backend/tool_collection/mcp/local_mcp_service.py function demo_tool (line 8) | async def demo_tool(para_1: str, para_2: int) -> str: FILE: backend/utils/auth_utils.py function calculate_hmac_signature (line 45) | def calculate_hmac_signature(secret_key: str, access_key: str, timestamp... function validate_timestamp (line 55) | def validate_timestamp(timestamp: str) -> bool: function extract_aksk_headers (line 66) | def extract_aksk_headers(headers: Dict[str, str]) -> Tuple[str, str, str]: function get_aksk_config (line 78) | def get_aksk_config(tenant_id: str) -> Tuple[str, str]: function verify_aksk_signature (line 87) | def verify_aksk_signature(access_key: str, timestamp: str, signature: st... function validate_aksk_authentication (line 102) | def validate_aksk_authentication(headers: Dict[str, str], body: str, ten... function validate_bearer_token (line 137) | def validate_bearer_token(authorization: Optional[str]) -> Tuple[bool, O... function get_user_and_tenant_by_access_key (line 174) | def get_user_and_tenant_by_access_key(access_key: str) -> Dict[str, str]: function get_supabase_client (line 214) | def get_supabase_client(): function get_supabase_admin_client (line 223) | def get_supabase_admin_client(): function get_jwt_expiry_seconds (line 232) | def get_jwt_expiry_seconds(token: str) -> int: function calculate_expires_at (line 271) | def calculate_expires_at(token: Optional[str] = None) -> int: function _extract_user_id_from_jwt_token (line 289) | def _extract_user_id_from_jwt_token(authorization: str) -> Optional[str]: function get_current_user_id (line 340) | def get_current_user_id(authorization: Optional[str] = None) -> tuple[st... function get_user_language (line 381) | def get_user_language(request: Request = None) -> str: function generate_test_jwt (line 410) | def generate_test_jwt(user_id: str, expires_in: int = 3600) -> str: function get_current_user_info (line 426) | def get_current_user_info(authorization: Optional[str] = None, request: ... FILE: backend/utils/config_utils.py function safe_value (line 19) | def safe_value(value): function safe_list (line 26) | def safe_list(value): function get_env_key (line 33) | def get_env_key(key: str) -> str: function get_model_name_from_config (line 41) | def get_model_name_from_config(model_config: Dict[str, Any]) -> str: class TenantConfigManager (line 52) | class TenantConfigManager: method load_config (line 55) | def load_config(self, tenant_id: str, force_reload: bool = False): method get_model_config (line 83) | def get_model_config(self, key: str, default=None, tenant_id: str | No... method get_app_config (line 105) | def get_app_config(self, key: str, default="", tenant_id: str | None =... method set_single_config (line 115) | def set_single_config(self, user_id: str | None = None, tenant_id: str... method delete_single_config (line 137) | def delete_single_config(self, tenant_id: str | None = None, key: str ... method update_single_config (line 150) | def update_single_config(self, tenant_id: str | None = None, key: str ... FILE: backend/utils/document_vector_utils.py function get_documents_from_es (line 35) | def get_documents_from_es(index_name: str, vdb_core: VectorDatabaseCore,... function calculate_document_embedding (line 123) | def calculate_document_embedding(doc_chunks: List[Dict], use_weighted: b... function auto_determine_k (line 172) | def auto_determine_k(embeddings: np.ndarray, min_k: int = 3, max_k: int ... function merge_duplicate_documents_in_clusters (line 236) | def merge_duplicate_documents_in_clusters(clusters: Dict[int, List[str]]... function kmeans_cluster_documents (line 392) | def kmeans_cluster_documents(doc_embeddings: Dict[str, np.ndarray], k: O... function process_documents_for_clustering (line 455) | def process_documents_for_clustering(index_name: str, vdb_core, sample_d... function summarize_document (line 494) | def summarize_document(document_content: str, filename: str, language: s... function summarize_cluster (line 552) | def summarize_cluster(document_summaries: List[str], language: str = LAN... function extract_representative_chunks_smart (line 612) | def extract_representative_chunks_smart(chunks: List[Dict], max_chunks: ... function merge_cluster_summaries (line 672) | def merge_cluster_summaries(cluster_summaries: Dict[int, str]) -> str: function analyze_cluster_coherence (line 702) | def analyze_cluster_coherence(cluster_doc_ids: List[str], document_sampl... function summarize_clusters_map_reduce (line 730) | def summarize_clusters_map_reduce(document_samples: Dict[str, Dict], clu... FILE: backend/utils/file_management_utils.py function save_upload_file (line 23) | async def save_upload_file(file: UploadFile, upload_path: Path) -> bool: function trigger_data_process (line 34) | async def trigger_data_process(files: List[dict], process_params: Proces... function get_all_files_status (line 127) | async def get_all_files_status(index_name: str): function _convert_to_custom_state (line 260) | async def _convert_to_custom_state(process_celery_state: str, forward_ce... function get_file_size (line 319) | def get_file_size(source_type: str, path_or_url: str) -> int: function convert_office_to_pdf (line 343) | async def convert_office_to_pdf(input_path: str, output_dir: str, timeou... FILE: backend/utils/langchain_utils.py function _is_langchain_tool (line 16) | def _is_langchain_tool(obj) -> bool: function discover_langchain_modules (line 21) | def discover_langchain_modules( FILE: backend/utils/llm_utils.py function _process_thinking_tokens (line 14) | def _process_thinking_tokens( function call_llm_for_system_prompt (line 57) | def call_llm_for_system_prompt( FILE: backend/utils/logging_utils.py class ColorFormatter (line 3) | class ColorFormatter(logging.Formatter): method format (line 11) | def format(self, record): function configure_logging (line 18) | def configure_logging(level=logging.INFO): function configure_elasticsearch_logging (line 31) | def configure_elasticsearch_logging(): FILE: backend/utils/memory_utils.py function build_memory_config (line 12) | def build_memory_config(tenant_id: str) -> Dict[str, Any]: FILE: backend/utils/model_name_utils.py function split_repo_name (line 4) | def split_repo_name(full_name: str): function add_repo_to_name (line 14) | def add_repo_to_name(model_repo: str, model_name: str) -> str: function split_display_name (line 32) | def split_display_name(full_name: str): function sort_models_by_id (line 50) | def sort_models_by_id(model_list: List[dict]) -> List[dict]: FILE: backend/utils/monitoring.py function _initialize_monitoring (line 58) | def _initialize_monitoring(): FILE: backend/utils/prompt_template_utils.py function get_prompt_template (line 12) | def get_prompt_template(template_type: str, language: str = LANGUAGE["ZH... function get_prompt_generate_prompt_template (line 85) | def get_prompt_generate_prompt_template(language: str = LANGUAGE["ZH"]) ... function get_agent_prompt_template (line 98) | def get_agent_prompt_template(is_manager: bool, language: str = LANGUAGE... function get_generate_title_prompt_template (line 112) | def get_generate_title_prompt_template(language: str = 'zh') -> Dict[str... function get_document_summary_prompt_template (line 125) | def get_document_summary_prompt_template(language: str = LANGUAGE["ZH"])... function get_cluster_summary_reduce_prompt_template (line 138) | def get_cluster_summary_reduce_prompt_template(language: str = LANGUAGE[... FILE: backend/utils/str_utils.py function remove_think_blocks (line 5) | def remove_think_blocks(text: str) -> str: function convert_list_to_string (line 12) | def convert_list_to_string(items: Optional[List[int]]) -> str: function convert_string_to_list (line 27) | def convert_string_to_list(items_str: Optional[str]) -> List[int]: FILE: backend/utils/task_status_utils.py function format_status_for_api (line 6) | def format_status_for_api(status_value) -> str: function has_result (line 24) | def has_result(task: Dict[str, Any]) -> bool: function get_status_display (line 46) | def get_status_display(task: Dict[str, Any]) -> Dict[str, Any]: FILE: backend/utils/thread_utils.py class GlobalThreadPool (line 5) | class GlobalThreadPool: method __new__ (line 8) | def __new__(cls, max_workers=10): method submit (line 15) | def submit(self, fn, *args, **kwargs): function submit (line 23) | def submit(fn, *args, **kwargs): FILE: doc/docs/.vitepress/theme/index.ts method enhanceApp (line 14) | enhanceApp({ app, router, siteData }) { FILE: docker/init.sql type "conversation_message_t" (line 7) | CREATE TABLE IF NOT EXISTS "conversation_message_t" ( type "conversation_message_unit_t" (line 36) | CREATE TABLE IF NOT EXISTS "conversation_message_unit_t" ( type "conversation_record_t" (line 63) | CREATE TABLE IF NOT EXISTS "conversation_record_t" ( type "conversation_source_image_t" (line 82) | CREATE TABLE IF NOT EXISTS "conversation_source_image_t" ( type "conversation_source_search_t" (line 111) | CREATE TABLE IF NOT EXISTS "conversation_source_search_t" ( type "model_record_t" (line 156) | CREATE TABLE IF NOT EXISTS "model_record_t" ( type "knowledge_record_t" (line 206) | CREATE TABLE IF NOT EXISTS "knowledge_record_t" ( type nexent (line 241) | CREATE TABLE IF NOT EXISTS nexent.ag_tool_info_t ( function update_ag_tool_info_update_time (line 263) | CREATE OR REPLACE FUNCTION update_ag_tool_info_update_time() type nexent (line 298) | CREATE TABLE IF NOT EXISTS nexent.ag_tenant_agent_t ( function update_ag_tenant_agent_update_time (line 331) | CREATE OR REPLACE FUNCTION update_ag_tenant_agent_update_time() type idx_ag_tenant_agent_t_is_new (line 378) | CREATE INDEX IF NOT EXISTS idx_ag_tenant_agent_t_is_new type nexent (line 384) | CREATE TABLE IF NOT EXISTS nexent.ag_tool_instance_t ( function update_ag_tool_instance_update_time (line 417) | CREATE OR REPLACE FUNCTION update_ag_tool_instance_update_time() type nexent (line 438) | CREATE TABLE IF NOT EXISTS nexent.tenant_config_t ( function update_tenant_config_update_time (line 469) | CREATE OR REPLACE FUNCTION update_tenant_config_update_time() type nexent (line 484) | CREATE TABLE IF NOT EXISTS nexent.mcp_record_t ( function update_mcp_record_update_time (line 519) | CREATE OR REPLACE FUNCTION update_mcp_record_update_time() type nexent (line 540) | CREATE TABLE IF NOT EXISTS nexent.user_tenant_t ( type nexent (line 568) | CREATE TABLE IF NOT EXISTS nexent.ag_agent_relation_t ( function update_ag_agent_relation_update_time (line 583) | CREATE OR REPLACE FUNCTION update_ag_agent_relation_update_time() type "memory_user_config_t" (line 613) | CREATE TABLE IF NOT EXISTS "memory_user_config_t" ( function "update_memory_user_config_update_time" (line 641) | CREATE OR REPLACE FUNCTION "update_memory_user_config_update_time"() type "nexent" (line 655) | CREATE TABLE IF NOT EXISTS "nexent"."partner_mapping_id_t" ( function "update_partner_mapping_update_time" (line 683) | CREATE OR REPLACE FUNCTION "update_partner_mapping_update_time"() type nexent (line 697) | CREATE TABLE IF NOT EXISTS nexent.tenant_invitation_code_t ( type nexent (line 730) | CREATE TABLE IF NOT EXISTS nexent.tenant_invitation_record_t ( type nexent (line 753) | CREATE TABLE IF NOT EXISTS nexent.tenant_group_info_t ( type nexent (line 778) | CREATE TABLE IF NOT EXISTS nexent.tenant_group_user_t ( type nexent (line 801) | CREATE TABLE IF NOT EXISTS nexent.role_permission_t ( type nexent (line 1011) | CREATE TABLE IF NOT EXISTS nexent.ag_tenant_agent_version_t ( FILE: docker/scripts/sync_user_supabase2pg.py function check_docker_containers (line 35) | def check_docker_containers(): function test_connection_with_psql (line 70) | def test_connection_with_psql(conn_params): function load_environment_from_container (line 112) | def load_environment_from_container(): function get_postgres_connection_params (line 135) | def get_postgres_connection_params(): function get_supabase_params (line 159) | def get_supabase_params(): function get_db_connection (line 177) | def get_db_connection(conn_params): function fetch_all_user_tenant_records (line 199) | def fetch_all_user_tenant_records(conn): function get_user_email_from_supabase (line 230) | def get_user_email_from_supabase(user_id, supabase_url, service_role_key): function determine_user_role (line 300) | def determine_user_role(user_id, tenant_id, user_email): function update_user_record (line 328) | def update_user_record(conn, user_id, user_email, user_role): function process_user_records (line 352) | def process_user_records(conn, supabase_params, records, dry_run=False): function print_results (line 437) | def print_results(results): function test_supabase_connection (line 459) | def test_supabase_connection(supabase_params): function main (line 497) | def main(): FILE: docker/sql/v1.1.0_0619_add_tenant_config_t.sql type nexent (line 10) | CREATE TABLE IF NOT EXISTS nexent.tenant_config_t ( function update_tenant_config_update_time (line 41) | CREATE OR REPLACE FUNCTION update_tenant_config_update_time() FILE: docker/sql/v1.3.0_0630_add_mcp_record_t.sql type nexent (line 9) | CREATE TABLE IF NOT EXISTS nexent.mcp_record_t ( function update_mcp_record_update_time (line 40) | CREATE OR REPLACE FUNCTION update_mcp_record_update_time() FILE: docker/sql/v1.4.0_0708_add_user_tenant_t.sql type nexent (line 2) | CREATE TABLE IF NOT EXISTS nexent.user_tenant_t ( FILE: docker/sql/v1.6.0_0723_add_agent_relation_t.sql type nexent (line 5) | CREATE TABLE IF NOT EXISTS nexent.ag_agent_relation_t ( function update_ag_agent_relation_update_time (line 18) | CREATE OR REPLACE FUNCTION update_ag_agent_relation_update_time() FILE: docker/sql/v1.7.1_0806_add_memory_user_config.sql type "nexent" (line 11) | CREATE TABLE IF NOT EXISTS "nexent"."memory_user_config_t" ( function "update_memory_user_config_update_time" (line 42) | CREATE OR REPLACE FUNCTION "update_memory_user_config_update_time"() FILE: docker/sql/v1.7.2.2_0820_add_partner_mapping_id_t.sql type "nexent" (line 8) | CREATE TABLE IF NOT EXISTS "nexent"."partner_mapping_id_t" ( function "update_partner_mapping_update_time" (line 36) | CREATE OR REPLACE FUNCTION "update_partner_mapping_update_time"() FILE: docker/sql/v1.7.9.2_1226_add_invitation_and_group_system.sql type nexent (line 5) | CREATE TABLE IF NOT EXISTS nexent.tenant_invitation_code_t ( type nexent (line 38) | CREATE TABLE IF NOT EXISTS nexent.tenant_invitation_record_t ( type nexent (line 61) | CREATE TABLE IF NOT EXISTS nexent.tenant_group_info_t ( type nexent (line 86) | CREATE TABLE IF NOT EXISTS nexent.tenant_group_user_t ( type nexent (line 116) | CREATE TABLE IF NOT EXISTS nexent.role_permission_t ( FILE: docker/sql/v1.7.9.3_0122_add_is_new_to_ag_tenant_agent_t.sql type idx_ag_tenant_agent_t_is_new (line 12) | CREATE INDEX IF NOT EXISTS idx_ag_tenant_agent_t_is_new FILE: docker/sql/v1.8.0_0206_add_ag_tenant_agent_version_t .sql type nexent (line 41) | CREATE TABLE IF NOT EXISTS nexent.ag_tenant_agent_version_t ( FILE: docker/sql/v1.8.1_0306_add_user_token_info.sql type nexent (line 9) | CREATE TABLE IF NOT EXISTS nexent.user_token_info_t ( type idx_user_token_info_access_key (line 36) | CREATE UNIQUE INDEX IF NOT EXISTS idx_user_token_info_access_key ON nexe... type idx_user_token_info_user_id (line 39) | CREATE INDEX IF NOT EXISTS idx_user_token_info_user_id ON nexent.user_to... function update_user_token_info_update_time (line 42) | CREATE OR REPLACE FUNCTION update_user_token_info_update_time() type nexent (line 65) | CREATE TABLE IF NOT EXISTS nexent.user_token_usage_log_t ( type idx_user_token_usage_log_token_id (line 96) | CREATE INDEX IF NOT EXISTS idx_user_token_usage_log_token_id ON nexent.u... type idx_user_token_usage_log_function_name (line 99) | CREATE INDEX IF NOT EXISTS idx_user_token_usage_log_function_name ON nex... FILE: docker/volumes/db/webhooks.sql type supabase_functions (line 11) | CREATE TABLE supabase_functions.migrations ( type supabase_functions (line 18) | CREATE TABLE supabase_functions.hooks ( type supabase_functions_hooks_request_id_idx (line 25) | CREATE INDEX supabase_functions_hooks_request_id_idx ON supabase_functio... type supabase_functions_hooks_h_table_id_h_name_idx (line 26) | CREATE INDEX supabase_functions_hooks_h_table_id_h_name_idx ON supabase_... function supabase_functions (line 28) | CREATE FUNCTION supabase_functions.http_request() function extensions (line 164) | CREATE OR REPLACE FUNCTION extensions.grant_pg_net_access() FILE: docker/volumes/functions/main/index.ts constant JWT_SECRET (line 6) | const JWT_SECRET = Deno.env.get('JWT_SECRET') constant VERIFY_JWT (line 7) | const VERIFY_JWT = Deno.env.get('VERIFY_JWT') === 'true' function getAuthToken (line 9) | function getAuthToken(req: Request) { function verifyJWT (line 21) | async function verifyJWT(jwt: string): Promise { FILE: experimental/tune/base/case.py class Case (line 14) | class Case(BaseModel): method check_message_list_content (line 21) | def check_message_list_content(cls, value: List[Dict], info: FieldVali... class CaseInfo (line 35) | class CaseInfo(BaseModel): class CaseManager (line 45) | class CaseManager: method validate_with_convert (line 55) | def validate_with_convert(data: List[Dict[str, Any]], method default_convertor (line 104) | def default_convertor(cases: List, idx: int, is_last: bool, info: Case... method _get_case_value_with_check (line 132) | def _get_case_value_with_check(data: Dict[str, Any], key: str, index: ... FILE: experimental/tune/base/constant.py class TuneConstant (line 5) | class TuneConstant: class TaskStatus (line 63) | class TaskStatus: FILE: experimental/tune/base/context_manager.py class OptimizeProgress (line 16) | class OptimizeProgress: method __init__ (line 17) | def __init__(self, ctx_id): method status (line 21) | def status(self) -> str: method error_msg (line 25) | def error_msg(self) -> str: method best_prompt (line 29) | def best_prompt(self) -> str: method base_accuracy (line 38) | def base_accuracy(self) -> Optional[float]: method best_accuracy (line 45) | def best_accuracy(self) -> Optional[float]: method current_iteration (line 49) | def current_iteration(self) -> int: method stop (line 53) | def stop(self) -> bool: method delete (line 63) | def delete(self): method get_history (line 67) | def get_history(self): method _context (line 74) | def _context(self): class ContextManager (line 77) | class ContextManager(metaclass=Singleton): method __init__ (line 79) | def __init__(self): method __len__ (line 86) | def __len__(self): method get_task_progress (line 91) | def get_task_progress(self, ctx_id: str): method get_context_attr (line 94) | def get_context_attr(self, ctx_id: str, attr_name: str): method set_context_attr (line 99) | def set_context_attr(self, ctx_id: str, attr_name: str, value: Any): method set (line 107) | def set(self, ctx_id: str, context: Context): method get (line 112) | def get(self, ctx_id: str) -> Optional[Context]: method is_executable (line 117) | def is_executable(self): method set_checkpoint (line 125) | def set_checkpoint(self, ctx_id: str, context: Context): method get_checkpoint (line 134) | def get_checkpoint(self, ctx_id: str) -> Optional[Context]: method delete (line 142) | def delete(self, ctx_id: str): method clear (line 150) | def clear(self): method items (line 156) | def items(self): FILE: experimental/tune/base/exception.py class CaseValidationException (line 4) | class CaseValidationException(JiuWenBaseException): method __init__ (line 6) | def __init__(self, message: str, error_index: int = TuneConstant.ROOT_... method error_index (line 15) | def error_index(self): class OnStopException (line 20) | class OnStopException(JiuWenBaseException): method __init__ (line 22) | def __init__(self, message: str): FILE: experimental/tune/base/utils.py class TaskInfo (line 19) | class TaskInfo(BaseModel): class OptimizeInfo (line 27) | class OptimizeInfo(BaseModel): class JointParameters (line 46) | class JointParameters(BaseModel): class History (line 63) | class History(BaseModel): class BaseModelInfo (line 74) | class BaseModelInfo(BaseModel): method handle_model_name (line 85) | def handle_model_name(cls, v, values): class Config (line 90) | class Config: class Response (line 94) | class Response(BaseModel): class BaseChatModel (line 98) | class BaseChatModel: method invoke (line 99) | def invoke(self, messages: List[Any]): class ModelFactory (line 103) | class ModelFactory(metaclass=Singleton): method get_model (line 104) | def get_model(self, model_provider: str, model_info: BaseModelInfo) ->... class LLMModelInfo (line 108) | class LLMModelInfo(BaseModel): class LLMModelProcess (line 118) | class LLMModelProcess: method __init__ (line 120) | def __init__(self, llm_model_info: LLMModelInfo): method chat (line 144) | def chat(self, messages: List[Any]) -> Dict: function load_yaml_to_dict (line 150) | def load_yaml_to_dict(file_path: str) -> Dict: function calculate_runtime (line 163) | def calculate_runtime(start_time: str) -> int: function placeholder_to_dict (line 186) | def placeholder_to_dict(placeholder_list: List, select_all: bool = False... function examples_to_string_list (line 198) | def examples_to_string_list(example_list: List) -> List[str]: function get_example_question (line 212) | def get_example_question(example): FILE: experimental/tune/common/exception.py class JiuWenException (line 3) | class JiuWenException(Exception): method __init__ (line 4) | def __init__(self, class JiuWenBaseException (line 9) | class JiuWenBaseException(Exception): method __init__ (line 10) | def __init__(self, method __str__ (line 17) | def __str__(self): method error_code (line 21) | def error_code(self): method message (line 25) | def message(self): class ParamCheckFailedException (line 29) | class ParamCheckFailedException(JiuWenBaseException): method __init__ (line 30) | def __init__(self, message: str): class StatusCode (line 35) | class StatusCode(Enum): method code (line 55) | def code(self) -> int: method errmsg (line 59) | def errmsg(self) -> str: FILE: experimental/tune/common/singleton.py class Singleton (line 7) | class Singleton(abc.ABCMeta, type): method __call__ (line 10) | def __call__(cls, *args, **kwargs): FILE: experimental/tune/joint_evaluator.py class JointEvaluatorWithRef (line 23) | class JointEvaluatorWithRef: method __init__ (line 25) | def __init__(self, opt_model_info: LLMModelInfo, infer_model_info: LLM... method parse_json (line 35) | def parse_json(json_like_string: str) -> Dict[str, Any]: method compare_text (line 53) | def compare_text(label: str, predict: str): method compare_llm (line 60) | def compare_llm(self, question, label, predict): method evaluate_result (line 86) | def evaluate_result(self, question, label, predict): method chat_completion (line 92) | def chat_completion(self, user_prompt, system_prompt, is_assistant: bo... method handle_inference_with_retry (line 102) | def handle_inference_with_retry(self, user_prompt, system_prompt=None,... method infer_and_compare_example (line 113) | def infer_and_compare_example(self, prompt, example, stop_event: threa... method evaluate (line 147) | def evaluate(self, prompt, dataset, stop_event: threading.Event): FILE: experimental/tune/joint_optimizer.py class SpecificMatch (line 27) | class SpecificMatch: class JointOptimizer (line 32) | class JointOptimizer: method __init__ (line 33) | def __init__(self): method get_optimize_placeholder (line 48) | def get_optimize_placeholder(placeholder): method extract_optimized_prompt_from_response (line 59) | def extract_optimized_prompt_from_response(content) -> Optional[str]: method extract_optimized_placeholder_from_response (line 69) | def extract_optimized_placeholder_from_response(content) -> Optional[L... method fill_prompt (line 83) | def fill_prompt(instruction: str, placeholder: List) -> str: method extract_examples_from_response (line 94) | def extract_examples_from_response(content): method prepare_optimization_template (line 113) | def prepare_optimization_template(template, instruction, placeholders,... method validate_placeholder (line 123) | def validate_placeholder(prompt, placeholders): method _check_stop_event (line 168) | def _check_stop_event(context: Context) -> bool: method get_variable_from_dataset (line 176) | def get_variable_from_dataset(dataset, prompt): method chat_completion (line 187) | def chat_completion(self, user_prompt, system_prompt=None, is_assistan... method resample_examples (line 213) | def resample_examples(self, sampled_incorrect_data): method evaluate (line 238) | def evaluate(self, prompt, context: Context): method get_task_description (line 250) | def get_task_description(self): method get_answer_format (line 257) | def get_answer_format(self): method init_parameters (line 264) | def init_parameters(self, optimize_info: OptimizeInfo, raw_prompt, con... method prompt_combine (line 282) | def prompt_combine(self, instruction: str, example_string=None, cot_ex... method update_placeholder (line 296) | def update_placeholder(self, new_placeholders: List, placeholders_to_u... method optimize_instruction_by_gradient (line 310) | def optimize_instruction_by_gradient(self, tools: Optional[List]) -> T... method optimize_instruction_without_placeholder (line 344) | def optimize_instruction_without_placeholder(self, instruction, error_... method optimize_instruction_with_placeholder (line 354) | def optimize_instruction_with_placeholder(self, instruction, error_exa... method select_best_examples (line 399) | def select_best_examples(self, context: Context) -> List: method generate_best_reasoning_examples (line 429) | def generate_best_reasoning_examples(self, context: Context) -> List: method get_example_reasoning (line 463) | def get_example_reasoning(self, question, answer): method evaluate_baseline (line 478) | def evaluate_baseline(self, context: Context) -> History: method sample_example (line 494) | def sample_example(self, num_examples: int): method prepare_fewshot_examples (line 521) | def prepare_fewshot_examples(self): method do_optimize (line 535) | def do_optimize(self, method continue_optimize (line 587) | def continue_optimize(self, task_id: str): method load_state (line 640) | def load_state(self, context: Context): method save_state (line 651) | def save_state(self, context: Context, history: Optional[History] = No... method optimize_prompt_iteratively (line 675) | def optimize_prompt_iteratively(self, context: Context, begin_iteratio... method _optimize_instruction (line 697) | def _optimize_instruction(self, context: Context) -> Optional[History]: method _optimize_examples (line 739) | def _optimize_examples(self, context: Context) -> Optional[History]: method _get_example_string (line 778) | def _get_example_string(self, examples: List): method _get_examples_string_list (line 784) | def _get_examples_string_list(self, examples: List) -> List[str]: method _get_full_prompt (line 798) | def _get_full_prompt(self, instruction, placeholders): FILE: frontend/app/[locale]/agents/AgentVersionCard.tsx function formatUtcToLocal (line 67) | function formatUtcToLocal(dateTimeStr?: string | null) { function getStatusConfig (line 92) | function getStatusConfig(isCurrentVersion: boolean) { function VersionCardItem (line 119) | function VersionCardItem({ FILE: frontend/app/[locale]/agents/AgentVersionManage.tsx function AgentVersionManage (line 14) | function AgentVersionManage() { FILE: frontend/app/[locale]/agents/components/AgentConfigComp.tsx type AgentConfigCompProps (line 16) | interface AgentConfigCompProps {} function AgentConfigComp (line 18) | function AgentConfigComp({}: AgentConfigCompProps) { FILE: frontend/app/[locale]/agents/components/AgentInfoComp.tsx type AgentInfoCompProps (line 19) | interface AgentInfoCompProps { function AgentInfoComp (line 25) | function AgentInfoComp({ FILE: frontend/app/[locale]/agents/components/AgentManageComp.tsx function AgentManageComp (line 20) | function AgentManageComp() { FILE: frontend/app/[locale]/agents/components/agentConfig/CollaborativeAgent.tsx type CollaborativeAgentProps (line 10) | interface CollaborativeAgentProps {} function CollaborativeAgent (line 12) | function CollaborativeAgent({}: CollaborativeAgentProps) { FILE: frontend/app/[locale]/agents/components/agentConfig/McpConfigModal.tsx function McpConfigModal (line 43) | function McpConfigModal({ FILE: frontend/app/[locale]/agents/components/agentConfig/ToolManagement.tsx type ToolManagementProps (line 18) | interface ToolManagementProps { constant TOOLS_REQUIRING_KB_SELECTION (line 25) | const TOOLS_REQUIRING_KB_SELECTION = [ constant TOOLS_REQUIRING_EMBEDDING (line 33) | const TOOLS_REQUIRING_EMBEDDING = [ constant TOOLS_REQUIRING_VLM (line 38) | const TOOLS_REQUIRING_VLM = [ function getToolKbType (line 42) | function getToolKbType( function isToolDisabledDueToVlm (line 55) | function isToolDisabledDueToVlm(toolName: string, vlmAvailable: boolean)... function isToolDisabledDueToEmbedding (line 63) | function isToolDisabledDueToEmbedding(toolName: string, embeddingAvailab... function ToolManagement (line 72) | function ToolManagement({ FILE: frontend/app/[locale]/agents/components/agentConfig/tool/ToolConfigModal.tsx type ToolConfigModalProps (line 33) | interface ToolConfigModalProps { constant TOOLS_REQUIRING_KB_SELECTION (line 45) | const TOOLS_REQUIRING_KB_SELECTION = [ function ToolConfigModal (line 52) | function ToolConfigModal({ FILE: frontend/app/[locale]/agents/components/agentConfig/tool/ToolTestPanel.tsx type ToolTestPanelProps (line 19) | interface ToolTestPanelProps { function ToolTestPanel (line 30) | function ToolTestPanel({ FILE: frontend/app/[locale]/agents/components/agentInfo/AgentGenerateDetail.tsx type AgentGenerateDetailProps (line 42) | interface AgentGenerateDetailProps { function AgentGenerateDetail (line 49) | function AgentGenerateDetail({ FILE: frontend/app/[locale]/agents/components/agentInfo/DebugConfig.tsx type AgentDebuggingProps (line 23) | interface AgentDebuggingProps { type DebugConfigProps (line 32) | interface DebugConfigProps { function AgentDebugging (line 39) | function AgentDebugging({ function DebugConfig (line 173) | function DebugConfig({ agentId }: DebugConfigProps) { FILE: frontend/app/[locale]/agents/components/agentInfo/ExpandEditModal.tsx type ExpandEditModalProps (line 5) | interface ExpandEditModalProps { function ExpandEditModal (line 14) | function ExpandEditModal({ FILE: frontend/app/[locale]/agents/components/agentManage/AgentCallRelationshipModal.tsx constant NODE_W (line 24) | const NODE_W = 140; constant NODE_H (line 25) | const NODE_H = 60; constant AGENT_W (line 28) | const AGENT_W = 160; constant AGENT_H (line 29) | const AGENT_H = 56; constant TOOL_SIZE (line 30) | const TOOL_SIZE = 100; constant TOOL_TEETH (line 31) | const TOOL_TEETH = 10; constant TOOL_TEETH_DEPTH_RATIO (line 32) | const TOOL_TEETH_DEPTH_RATIO = 0.085; constant MAX_TOOL_NAME_CHARS (line 34) | const MAX_TOOL_NAME_CHARS = 24; constant TREE_DEPTH_FACTOR (line 36) | const TREE_DEPTH_FACTOR = 120; constant TREE_SEP_SIB (line 37) | const TREE_SEP_SIB = 1.5; constant TREE_SEP_NON (line 38) | const TREE_SEP_NON = 1.8; function truncateByCodePoints (line 41) | function truncateByCodePoints(s: string, max: number) { function AgentCallRelationshipModal (line 233) | function AgentCallRelationshipModal({ FILE: frontend/app/[locale]/agents/components/agentManage/AgentList.tsx type AgentListProps (line 26) | interface AgentListProps { function AgentList (line 30) | function AgentList({ FILE: frontend/app/[locale]/agents/page.tsx function AgentSetupOrchestrator (line 16) | function AgentSetupOrchestrator() { FILE: frontend/app/[locale]/agents/versions/AgentVersionCompareModal.tsx type AgentVersionCompareModalProps (line 20) | interface AgentVersionCompareModalProps { function AgentVersionCompareModal (line 44) | function AgentVersionCompareModal({ FILE: frontend/app/[locale]/agents/versions/AgentVersionPubulishModal.tsx type AgentVersionPubulishModalProps (line 14) | interface AgentVersionPubulishModalProps { function AgentVersionPubulishModal (line 28) | function AgentVersionPubulishModal({ FILE: frontend/app/[locale]/chat/components/chatAgentSelector.tsx function ChatAgentSelector (line 15) | function ChatAgentSelector({ FILE: frontend/app/[locale]/chat/components/chatHeader.tsx type ChatHeaderProps (line 15) | interface ChatHeaderProps { function ChatHeader (line 20) | function ChatHeader({ title, onRename }: ChatHeaderProps) { FILE: frontend/app/[locale]/chat/components/chatInput.tsx function ImageViewer (line 31) | function ImageViewer({ function FileViewer (line 71) | function FileViewer({ file, onClose }: { file: File; onClose: () => void... constant MAX_FILE_COUNT (line 287) | const MAX_FILE_COUNT = chatConfig.maxFileCount; constant MAX_FILE_SIZE (line 288) | const MAX_FILE_SIZE = chatConfig.maxFileSize; type ChatInputProps (line 290) | interface ChatInputProps { function ChatInput (line 310) | function ChatInput({ FILE: frontend/app/[locale]/chat/components/chatLeftSidebar.tsx type ChatSidebarProps (line 87) | interface ChatSidebarProps { constant CONVERSATION_TITLE_MAX_LENGTH (line 95) | const CONVERSATION_TITLE_MAX_LENGTH = 100; function ChatSidebar (line 97) | function ChatSidebar({ FILE: frontend/app/[locale]/chat/components/chatRightPanel.tsx function ChatRightPanel (line 13) | function ChatRightPanel({ FILE: frontend/app/[locale]/chat/internal/ChatTopNavContent.tsx function ChatTopNavContent (line 11) | function ChatTopNavContent() { FILE: frontend/app/[locale]/chat/internal/chatAttachment.tsx function ChatAttachment (line 314) | function ChatAttachment({ FILE: frontend/app/[locale]/chat/internal/chatInterface.tsx function ChatInterface (line 55) | function ChatInterface() { FILE: frontend/app/[locale]/chat/internal/extractMsgFromHistoryResponse.tsx function extractAssistantMsgFromResponse (line 30) | function extractAssistantMsgFromResponse( function extractUserMsgFromResponse (line 259) | function extractUserMsgFromResponse( FILE: frontend/app/[locale]/chat/page.tsx function ChatContent (line 13) | function ChatContent() { FILE: frontend/app/[locale]/chat/streaming/chatStreamFinalMessage.tsx type FinalMessageProps (line 25) | interface FinalMessageProps { type TTSStatus (line 40) | type TTSStatus = typeof chatConfig.ttsStatus[keyof typeof chatConfig.tts... function ChatStreamFinalMessageInner (line 42) | function ChatStreamFinalMessageInner({ function areEqualFinalMessage (line 415) | function areEqualFinalMessage(prev: FinalMessageProps, next: FinalMessag... FILE: frontend/app/[locale]/chat/streaming/chatStreamHandler.tsx type JsonData (line 29) | interface JsonData { FILE: frontend/app/[locale]/chat/streaming/chatStreamMain.tsx function ChatStreamMain (line 16) | function ChatStreamMain({ FILE: frontend/app/[locale]/chat/streaming/messageTransformer.ts function transformMessagesToTaskMessages (line 11) | function transformMessagesToTaskMessages( FILE: frontend/app/[locale]/chat/streaming/taskWindow.tsx type KnowledgeSiteInfo (line 168) | type KnowledgeSiteInfo = { type TaskWindowProps (line 1105) | interface TaskWindowProps { function TaskWindowInner (line 1111) | function TaskWindowInner({ messages, isStreaming = false, defaultExpande... function areEqualTaskWindow (line 1595) | function areEqualTaskWindow(prev: TaskWindowProps, next: TaskWindowProps... FILE: frontend/app/[locale]/knowledges/KnowledgeBaseConfiguration.tsx type EmptyStateProps (line 48) | interface EmptyStateProps { type AppProviderProps (line 85) | interface AppProviderProps { type DataConfigWrapperProps (line 105) | interface DataConfigWrapperProps { function DataConfigWrapper (line 109) | function DataConfigWrapper({ type DataConfigProps (line 119) | interface DataConfigProps { function DataConfig (line 123) | function DataConfig({ isActive }: DataConfigProps) { FILE: frontend/app/[locale]/knowledges/components/document/DocumentChunk.tsx type Chunk (line 38) | interface Chunk { type ChunkFormValues (line 49) | interface ChunkFormValues { type DocumentChunkProps (line 55) | interface DocumentChunkProps { constant PAGE_SIZE (line 66) | const PAGE_SIZE = 10; constant TABS_ROOT_CLASS (line 68) | const TABS_ROOT_CLASS = "document-chunk-tabs"; FILE: frontend/app/[locale]/knowledges/components/document/DocumentList.tsx constant CONTAINER_HEIGHT_CLASS_MAP (line 40) | const CONTAINER_HEIGHT_CLASS_MAP: Record = { constant TITLE_BAR_HEIGHT_CLASS_MAP (line 47) | const TITLE_BAR_HEIGHT_CLASS_MAP: Record = { type DocumentListProps (line 51) | interface DocumentListProps { type DocumentListRef (line 88) | interface DocumentListRef { FILE: frontend/app/[locale]/knowledges/components/document/DocumentStatus.tsx type DocumentStatusProps (line 9) | interface DocumentStatusProps { FILE: frontend/app/[locale]/knowledges/components/knowledge/KnowledgeBaseEditModal.tsx type KnowledgeBaseEditModalProps (line 14) | interface KnowledgeBaseEditModalProps { function KnowledgeBaseEditModal (line 22) | function KnowledgeBaseEditModal({ FILE: frontend/app/[locale]/knowledges/components/knowledge/KnowledgeBaseList.tsx type KnowledgeBaseListProps (line 31) | interface KnowledgeBaseListProps { FILE: frontend/app/[locale]/knowledges/components/upload/UploadArea.tsx type UploadAreaProps (line 17) | interface UploadAreaProps { type UploadAreaRef (line 34) | interface UploadAreaRef { FILE: frontend/app/[locale]/knowledges/components/upload/UploadAreaUI.tsx type UploadAreaUIProps (line 12) | interface UploadAreaUIProps { FILE: frontend/app/[locale]/knowledges/contexts/DocumentContext.tsx type DocumentProviderProps (line 137) | interface DocumentProviderProps { FILE: frontend/app/[locale]/knowledges/contexts/KnowledgeBaseContext.tsx type KnowledgeBaseProviderProps (line 147) | interface KnowledgeBaseProviderProps { FILE: frontend/app/[locale]/knowledges/contexts/UIStateContext.tsx type UIProviderProps (line 78) | interface UIProviderProps { FILE: frontend/app/[locale]/knowledges/page.tsx function KnowledgesContent (line 17) | function KnowledgesContent() { FILE: frontend/app/[locale]/layout.client.tsx function ClientLayout (line 23) | function ClientLayout({ children }: { children: ReactNode }) { FILE: frontend/app/[locale]/layout.tsx function generateMetadata (line 17) | async function generateMetadata({ function RootLayout (line 35) | async function RootLayout({ FILE: frontend/app/[locale]/market/components/AgentMarketCard.tsx type AgentMarketCardProps (line 11) | interface AgentMarketCardProps { function AgentMarketCard (line 22) | function AgentMarketCard({ FILE: frontend/app/[locale]/market/components/MarketAgentDetailModal.tsx type MarketAgentDetailModalProps (line 18) | interface MarketAgentDetailModalProps { function MarketAgentDetailModal (line 29) | function MarketAgentDetailModal({ FILE: frontend/app/[locale]/market/components/MarketErrorState.tsx type MarketErrorStateProps (line 13) | interface MarketErrorStateProps { function MarketErrorState (line 22) | function MarketErrorState({ type }: MarketErrorStateProps) { FILE: frontend/app/[locale]/market/page.tsx function MarketContent (line 30) | function MarketContent() { FILE: frontend/app/[locale]/mcp-tools/page.tsx function McpToolsContent (line 14) | function McpToolsContent({}) { FILE: frontend/app/[locale]/memory/MemoryMenuList.tsx type MemoryMenuListProps (line 13) | interface MemoryMenuListProps { function MemoryMenuList (line 22) | function MemoryMenuList({ FILE: frontend/app/[locale]/memory/page.tsx function MemoryContent (line 40) | function MemoryContent() { FILE: frontend/app/[locale]/models/ModelConfiguration.tsx type AppModelConfigProps (line 23) | interface AppModelConfigProps { function AppModelConfig (line 29) | function AppModelConfig({ FILE: frontend/app/[locale]/models/components/model/ModelAddDialog.tsx type AddedModel (line 31) | interface AddedModel { type ModelAddDialogProps (line 36) | interface ModelAddDialogProps { constant DEFAULT_FORM_STATE (line 46) | const DEFAULT_FORM_STATE = { FILE: frontend/app/[locale]/models/components/model/ModelChunkSizeSilder.tsx constant DEFAULT_EXPECTED_CHUNK_SIZE (line 5) | const DEFAULT_EXPECTED_CHUNK_SIZE = 1024; constant DEFAULT_MAXIMUM_CHUNK_SIZE (line 6) | const DEFAULT_MAXIMUM_CHUNK_SIZE = 1536; type ModelChunkSizeSliderProps (line 8) | interface ModelChunkSizeSliderProps { FILE: frontend/app/[locale]/models/components/model/ModelDeleteDialog.tsx type ModelDeleteDialogProps (line 21) | interface ModelDeleteDialogProps { FILE: frontend/app/[locale]/models/components/model/ModelEditDialog.tsx type ModelEditDialogProps (line 17) | interface ModelEditDialogProps { type ProviderConfigEditDialogProps (line 427) | interface ProviderConfigEditDialogProps { FILE: frontend/app/[locale]/models/components/model/ModelListCard.tsx constant CONNECT_STATUS_COLORS (line 21) | const CONNECT_STATUS_COLORS: Record route.path); function SideNavigation (line 74) | function SideNavigation({ FILE: frontend/components/navigation/TopNavbar.tsx function TopNavbar (line 19) | function TopNavbar({ isChatPage }: { isChatPage: boolean }) { FILE: frontend/components/permission/Can.tsx type CanProps (line 6) | interface CanProps { function Can (line 26) | function Can({ permission, children, fallback = null }: CanProps) { FILE: frontend/components/permission/Cannot.tsx type CannotProps (line 6) | interface CannotProps { function Cannot (line 22) | function Cannot({ permission, children, fallback = null }: CannotProps) { FILE: frontend/components/providers/AuthenticationProvider.tsx function AuthenticationProvider (line 18) | function AuthenticationProvider({ children }: { children?: ReactNode }) { function useAuthenticationContext (line 31) | function useAuthenticationContext(): AuthenticationContextType { FILE: frontend/components/providers/AuthorizationProvider.tsx function AuthorizationProvider (line 18) | function AuthorizationProvider({ children }: { children?: ReactNode }) { function useAuthorizationContext (line 31) | function useAuthorizationContext(): AuthorizationContextType { FILE: frontend/components/providers/I18nProviderWrapper.tsx type I18nProviderWrapperProps (line 9) | interface I18nProviderWrapperProps { function I18nProviderWrapper (line 14) | function I18nProviderWrapper({ FILE: frontend/components/providers/deploymentProvider.tsx type DeploymentContextType (line 14) | interface DeploymentContextType { type DeploymentVersionResponse (line 28) | interface DeploymentVersionResponse { function DeploymentProvider (line 34) | function DeploymentProvider({ children }: { children: ReactNode }) { FILE: frontend/components/providers/rootProvider.tsx function AppReadyWrapper (line 22) | function AppReadyWrapper({ children }: { children?: ReactNode }) { function RootProvider (line 51) | function RootProvider({ children }: { children: ReactNode }) { FILE: frontend/components/tool-config/KnowledgeBaseSelectorModal.tsx type KnowledgeBaseSelectorProps (line 23) | interface KnowledgeBaseSelectorProps { function getKnowledgeBaseSourcesForTool (line 43) | function getKnowledgeBaseSourcesForTool( type KnowledgeBaseSelectorModalProps (line 60) | interface KnowledgeBaseSelectorModalProps extends KnowledgeBaseSelectorP... function KnowledgeBaseSelectorModal (line 83) | function KnowledgeBaseSelectorModal({ FILE: frontend/components/tool-config/index.ts type KnowledgeBaseSelectorProps (line 6) | interface KnowledgeBaseSelectorProps { function getKnowledgeBaseSourcesForTool (line 27) | function getKnowledgeBaseSourcesForTool( FILE: frontend/components/ui/AgentCallRelationshipModal.tsx constant NODE_W (line 24) | const NODE_W = 140; constant NODE_H (line 25) | const NODE_H = 60; constant AGENT_W (line 28) | const AGENT_W = 160; constant AGENT_H (line 29) | const AGENT_H = 56; constant TOOL_SIZE (line 30) | const TOOL_SIZE = 100; constant TOOL_TEETH (line 31) | const TOOL_TEETH = 10; constant TOOL_TEETH_DEPTH_RATIO (line 32) | const TOOL_TEETH_DEPTH_RATIO = 0.085; constant MAX_TOOL_NAME_CHARS (line 34) | const MAX_TOOL_NAME_CHARS = 24; constant TREE_DEPTH_FACTOR (line 36) | const TREE_DEPTH_FACTOR = 120; constant TREE_SEP_SIB (line 37) | const TREE_SEP_SIB = 1.5; constant TREE_SEP_NON (line 38) | const TREE_SEP_NON = 1.8; function truncateByCodePoints (line 41) | function truncateByCodePoints(s: string, max: number) { function AgentCallRelationshipModal (line 233) | function AgentCallRelationshipModal({ FILE: frontend/components/ui/Diagram.tsx type DownloadFormat (line 16) | type DownloadFormat = "svg" | "png"; type DiagramState (line 19) | interface DiagramState { class DiagramStateManager (line 28) | class DiagramStateManager { method getInstance (line 33) | static getInstance(): DiagramStateManager { method getState (line 40) | getState(diagramId: string): DiagramState { method setShowCode (line 52) | setShowCode(diagramId: string, showCode: boolean): void { method setZoomLevel (line 58) | setZoomLevel(diagramId: string, zoomLevel: number): void { method setPan (line 67) | setPan(diagramId: string, panX: number, panY: number): void { method setDownloadFormat (line 73) | setDownloadFormat(diagramId: string, downloadFormat: DownloadFormat): ... method subscribe (line 79) | subscribe(diagramId: string, callback: () => void): () => void { method notifyListeners (line 90) | private notifyListeners(diagramId: string): void { type DiagramProps (line 95) | interface DiagramProps { type MermaidApi (line 103) | type MermaidApi = { function computeHash (line 115) | function computeHash(input: string): string { function DiagramComponent (line 123) | function DiagramComponent({ FILE: frontend/components/ui/copyButton.tsx type CopyButtonProps (line 11) | interface CopyButtonProps { FILE: frontend/components/ui/loading.tsx type LoadingProps (line 3) | interface LoadingProps { function Loading (line 9) | function Loading({ function FullScreenLoading (line 36) | function FullScreenLoading({ FILE: frontend/components/ui/markdownRenderer.tsx type MarkdownRendererProps (line 21) | interface MarkdownRendererProps { constant S3_MEDIA_SESSION_PREFIX (line 40) | const S3_MEDIA_SESSION_PREFIX = "s3-media-cache:"; constant VIDEO_EXTENSIONS (line 289) | const VIDEO_EXTENSIONS = [".mp4", ".webm", ".ogg", ".mov", ".m4v"]; type VideoWithErrorHandlingProps (line 682) | interface VideoWithErrorHandlingProps { type ImageWithErrorHandlingProps (line 737) | interface ImageWithErrorHandlingProps { class MarkdownErrorBoundary (line 1017) | class MarkdownErrorBoundary extends React.Component< method constructor (line 1021) | constructor(props: { children: React.ReactNode; rawContent: string }) { method getDerivedStateFromError (line 1025) | static getDerivedStateFromError() { method componentDidCatch (line 1028) | componentDidCatch(error: unknown) {} method render (line 1029) | render() { method code (line 1168) | code({ node, inline, className, children, ...props }: any) { FILE: frontend/components/ui/statusBadge.tsx type StatusBadgeProps (line 3) | interface StatusBadgeProps { FILE: frontend/const/agentConfig.ts constant AGENT_CALL_RELATIONSHIP_THEME_CONFIG (line 6) | const AGENT_CALL_RELATIONSHIP_THEME_CONFIG = { constant AGENT_CALL_RELATIONSHIP_NODE_TYPES (line 26) | const AGENT_CALL_RELATIONSHIP_NODE_TYPES = { constant AGENT_CALL_RELATIONSHIP_ORIENTATION (line 32) | const AGENT_CALL_RELATIONSHIP_ORIENTATION = { type AgentCallRelationshipOrientation (line 37) | type AgentCallRelationshipOrientation = constant ROLE_ASSISTANT (line 40) | const ROLE_ASSISTANT = "assistant" as const; constant TOOL_SOURCE_TYPES (line 42) | const TOOL_SOURCE_TYPES = { constant GENERATE_PROMPT_STREAM_TYPES (line 49) | const GENERATE_PROMPT_STREAM_TYPES = { constant TOOL_PARAM_TYPES (line 58) | const TOOL_PARAM_TYPES = { constant NAME_CHECK_STATUS (line 66) | const NAME_CHECK_STATUS = { type NameCheckStatus (line 73) | type NameCheckStatus = type ToolSourceType (line 76) | type ToolSourceType = type GeneratePromptStreamType (line 79) | type GeneratePromptStreamType = constant AGENT_CALL_RELATIONSHIP_NODE_SIZE (line 83) | const AGENT_CALL_RELATIONSHIP_NODE_SIZE = { constant AGENT_SETUP_LAYOUT_DEFAULT (line 89) | const AGENT_SETUP_LAYOUT_DEFAULT: LayoutConfig = { constant TOOL_PARAM_OPTIONS (line 96) | const TOOL_PARAM_OPTIONS = { function getToolParamOptions (line 117) | function getToolParamOptions( FILE: frontend/const/auth.ts type USER_ROLES (line 2) | enum USER_ROLES { constant STATUS_CODES (line 10) | const STATUS_CODES = { constant STORAGE_KEYS (line 26) | const STORAGE_KEYS = { constant COOKIE_NAMES (line 32) | const COOKIE_NAMES = { constant AUTH_EVENTS (line 39) | const AUTH_EVENTS = { constant AUTHZ_EVENTS (line 50) | const AUTHZ_EVENTS = { FILE: frontend/const/chatConfig.ts type Opinion (line 141) | type Opinion = typeof chatConfig.opinion[keyof typeof chatConfig.opinion... type MessageType (line 142) | type MessageType = typeof chatConfig.messageTypes[keyof typeof chatConfi... type ContentType (line 143) | type ContentType = typeof chatConfig.contentTypes[keyof typeof chatConfi... constant MESSAGE_ROLES (line 145) | const MESSAGE_ROLES = { FILE: frontend/const/constants.ts constant TOKEN_REFRESH_CD (line 7) | const TOKEN_REFRESH_CD = 1 * 60 * 1000; constant TOKEN_REFRESH_BEFORE_EXPIRY_MS (line 10) | const TOKEN_REFRESH_BEFORE_EXPIRY_MS = 5 * 60 * 1000; constant MIN_ACTIVITY_CHECK_INTERVAL_MS (line 12) | const MIN_ACTIVITY_CHECK_INTERVAL_MS = 30 * 1000; constant APP_VERSION (line 16) | const APP_VERSION = "v1.0.0"; constant DEFAULT_TYPE (line 19) | const DEFAULT_TYPE = "string"; FILE: frontend/const/errorCode.ts type ErrorCodeType (line 192) | type ErrorCodeType = typeof ErrorCode[keyof typeof ErrorCode]; FILE: frontend/const/errorMessage.ts constant DEFAULT_ERROR_MESSAGES (line 15) | const DEFAULT_ERROR_MESSAGES: Record = { type ApiResponse (line 209) | interface ApiResponse { FILE: frontend/const/errorMessageI18n.ts type ShowErrorOptions (line 85) | interface ShowErrorOptions { FILE: frontend/const/knowledgeBase.ts constant DOCUMENT_STATUS (line 4) | const DOCUMENT_STATUS = { constant NON_TERMINAL_STATUSES (line 15) | const NON_TERMINAL_STATUSES: string[] = [ constant DOCUMENT_ACTION_TYPES (line 23) | const DOCUMENT_ACTION_TYPES = { constant KNOWLEDGE_BASE_ACTION_TYPES (line 38) | const KNOWLEDGE_BASE_ACTION_TYPES = { constant UI_CONFIG (line 52) | const UI_CONFIG = { constant COLUMN_WIDTHS (line 58) | const COLUMN_WIDTHS = { constant DOCUMENT_NAME_CONFIG (line 67) | const DOCUMENT_NAME_CONFIG = { constant LAYOUT (line 75) | const LAYOUT = { constant UI_ACTION_TYPES (line 98) | const UI_ACTION_TYPES = { constant NOTIFICATION_TYPES (line 107) | const NOTIFICATION_TYPES = { constant FILE_EXTENSIONS (line 115) | const FILE_EXTENSIONS = { constant FILE_TYPES (line 128) | const FILE_TYPES = { constant EXTENSION_TO_TYPE_MAP (line 139) | const EXTENSION_TO_TYPE_MAP = { FILE: frontend/const/knowledgeBaseLayout.ts constant KB_LAYOUT (line 9) | const KB_LAYOUT = { constant KB_TAG_VARIANTS (line 50) | const KB_TAG_VARIANTS = { FILE: frontend/const/layoutConstants.ts constant HEADER_CONFIG (line 7) | const HEADER_CONFIG = { constant SIDER_CONFIG (line 22) | const SIDER_CONFIG = { constant FOOTER_CONFIG (line 31) | const FOOTER_CONFIG = { constant SETUP_PAGE_CONTAINER (line 46) | const SETUP_PAGE_CONTAINER = { constant TWO_COLUMN_LAYOUT (line 58) | const TWO_COLUMN_LAYOUT = { constant STANDARD_CARD (line 81) | const STANDARD_CARD = { constant CARD_HEADER (line 96) | const CARD_HEADER = { FILE: frontend/const/marketConfig.ts constant MARKET_CATEGORY_ICONS (line 7) | const MARKET_CATEGORY_ICONS: Record = { function getCategoryIcon (line 26) | function getCategoryIcon( FILE: frontend/const/memoryConfig.ts constant MEMORY_SHARE_STRATEGY (line 2) | const MEMORY_SHARE_STRATEGY = { type MemoryShareStrategy (line 9) | type MemoryShareStrategy = (typeof MEMORY_SHARE_STRATEGY)[keyof typeof M... FILE: frontend/const/modelConfig.ts constant MODEL_TYPES (line 2) | const MODEL_TYPES = { constant MODEL_SOURCES (line 13) | const MODEL_SOURCES = { constant MODEL_STATUS (line 24) | const MODEL_STATUS = { constant ICON_TYPES (line 32) | const ICON_TYPES = { constant MODEL_PROVIDER_KEYS (line 38) | const MODEL_PROVIDER_KEYS = [ type ModelProviderKey (line 49) | type ModelProviderKey = (typeof MODEL_PROVIDER_KEYS)[number]; constant PROVIDER_HINTS (line 52) | const PROVIDER_HINTS: Record = { constant PROVIDER_ICON_MAP (line 64) | const PROVIDER_ICON_MAP: Record = { constant OFFICIAL_PROVIDER_ICON (line 75) | const OFFICIAL_PROVIDER_ICON = "/modelengine-logo.png"; constant DEFAULT_PROVIDER_ICON (line 76) | const DEFAULT_PROVIDER_ICON = "/default-icon.png"; constant PROVIDER_LINKS (line 79) | const PROVIDER_LINKS: Record = { constant USER_ROLES (line 91) | const USER_ROLES = { constant MEMORY_TAB_KEYS (line 100) | const MEMORY_TAB_KEYS = { type MemoryTabKey (line 109) | type MemoryTabKey = constant LAYOUT_CONFIG (line 113) | const LAYOUT_CONFIG = { constant CARD_THEMES (line 125) | const CARD_THEMES = { FILE: frontend/hooks/agent/useAgentInfo.ts function useAgentInfo (line 5) | function useAgentInfo(agentId: number | null) { FILE: frontend/hooks/agent/useAgentList.ts function useAgentList (line 6) | function useAgentList(tenantId: string | null) { FILE: frontend/hooks/agent/useAgentVersion.ts function useAgentVersion (line 10) | function useAgentVersion(agentId: number | null, versionNo: number) { FILE: frontend/hooks/agent/useAgentVersionDetail.ts function useAgentVersionDetail (line 10) | function useAgentVersionDetail(agentId: number | null, versionNo: number... FILE: frontend/hooks/agent/useAgentVersionList.ts function useAgentVersionList (line 13) | function useAgentVersionList(agentId: number | null, tenantId?: string) { FILE: frontend/hooks/agent/usePublishedAgentList.ts function usePublishedAgentList (line 6) | function usePublishedAgentList() { FILE: frontend/hooks/agent/useSaveGuard.ts function batchUpdateToolConfigs (line 24) | async function batchUpdateToolConfigs( FILE: frontend/hooks/agent/useToolList.ts function useToolList (line 7) | function useToolList(options?: { enabled?: boolean; staleTime?: number }) { FILE: frontend/hooks/auth/useAuthentication.ts function useAuthentication (line 11) | function useAuthentication(): AuthenticationContextType { FILE: frontend/hooks/auth/useAuthenticationState.ts function useAuthenticationState (line 20) | function useAuthenticationState(): AuthenticationStateReturn { FILE: frontend/hooks/auth/useAuthenticationUI.ts function useAuthenticationUI (line 19) | function useAuthenticationUI({ FILE: frontend/hooks/auth/useAuthorization.ts function useAuthorization (line 19) | function useAuthorization(): AuthorizationContextType { FILE: frontend/hooks/auth/useSessionManager.ts function useSessionManager (line 57) | function useSessionManager() { FILE: frontend/hooks/chat/useConversationManagement.ts constant CONVERSATION_LIST_QUERY_KEY (line 10) | const CONVERSATION_LIST_QUERY_KEY = ["conversations"] as const; type ConversationManagement (line 16) | interface ConversationManagement { FILE: frontend/hooks/group/useGroupList.ts function useGroupList (line 4) | function useGroupList(tenantId: string | null, page?: number, pageSize?:... FILE: frontend/hooks/invitation/useInvitationList.ts function useInvitationList (line 5) | function useInvitationList(request: InvitationListRequest) { FILE: frontend/hooks/knowledge/useKnowledgeList.ts function useKnowledgeList (line 4) | function useKnowledgeList(tenantId: string | null) { FILE: frontend/hooks/mcp/useMcpContainerList.ts constant MCP_CONTAINERS_QUERY_KEY (line 6) | const MCP_CONTAINERS_QUERY_KEY = ["mcp", "containers"] as const; function useMcpContainerList (line 8) | function useMcpContainerList(options?: { enabled?: boolean; staleTime?: ... FILE: frontend/hooks/mcp/useMcpServerList.ts constant MCP_SERVERS_QUERY_KEY (line 6) | const MCP_SERVERS_QUERY_KEY = ["mcp", "servers"] as const; function useMcpServerList (line 8) | function useMcpServerList(options?: { enabled?: boolean; staleTime?: num... FILE: frontend/hooks/model/useDashscopeModelList.ts type UseDashscopeModelListProps (line 9) | interface UseDashscopeModelListProps { FILE: frontend/hooks/model/useManageTenantModels.ts type ManageTenantModelResult (line 5) | interface ManageTenantModelResult { function useManageTenantModels (line 18) | function useManageTenantModels(options: { FILE: frontend/hooks/model/useModelList.ts function useModelList (line 5) | function useModelList(options?: { enabled?: boolean; staleTime?: number ... FILE: frontend/hooks/model/useSiliconModelList.ts type UseSiliconModelListProps (line 9) | interface UseSiliconModelListProps { FILE: frontend/hooks/model/useTokenponyModelList.ts type UseTokenPonyModelListProps (line 9) | interface UseTokenPonyModelListProps { FILE: frontend/hooks/permission/usePermission.ts function usePermission (line 6) | function usePermission() { FILE: frontend/hooks/tenant/useTenantList.ts type TenantListResult (line 5) | interface TenantListResult { function useTenantList (line 13) | function useTenantList(params?: { page?: number; page_size?: number }) { FILE: frontend/hooks/tool/useToolInfo.ts function useToolInfo (line 4) | function useToolInfo(toolId: number | null, agentId: number | null) { FILE: frontend/hooks/useAgentImport.ts type ImportAgentData (line 9) | interface ImportAgentData { type UseAgentImportOptions (line 20) | interface UseAgentImportOptions { type UseAgentImportResult (line 39) | interface UseAgentImportResult { function useAgentImport (line 54) | function useAgentImport( FILE: frontend/hooks/useChatTaskMessage.ts function useChatTaskMessage (line 6) | function useChatTaskMessage(messages: ChatMessageType[]): ChatTaskMessag... FILE: frontend/hooks/useConfig.ts constant APP_CONFIG_KEY (line 16) | const APP_CONFIG_KEY = "app"; constant MODEL_CONFIG_KEY (line 17) | const MODEL_CONFIG_KEY = "model"; constant CONFIG_QUERY_KEY (line 22) | const CONFIG_QUERY_KEY = ["config"]; function transformModelEntry (line 97) | function transformModelEntry( function transformBackendToFrontend (line 115) | function transformBackendToFrontend(backendConfig: any): GlobalConfig { function loadConfigFromStorage (line 154) | function loadConfigFromStorage(): GlobalConfig | null { function saveConfigToStorage (line 193) | function saveConfigToStorage(config: GlobalConfig): void { function deepMerge (line 213) | function deepMerge(target: T, source: Partial): T { function useConfig (line 245) | function useConfig() { FILE: frontend/hooks/useConfirmModal.ts type ConfirmProps (line 7) | interface ConfirmProps { FILE: frontend/hooks/useErrorHandler.ts type ErrorHandlerOptions (line 23) | interface ErrorHandlerOptions { constant DEFAULT_OPTIONS (line 37) | const DEFAULT_OPTIONS: ErrorHandlerOptions = { FILE: frontend/hooks/useKnowledgeBaseConfigChangeHandler.ts type ToolKbType (line 8) | type ToolKbType = type DifyConfig (line 17) | interface DifyConfig { type DatamateConfig (line 25) | interface DatamateConfig { type IdataConfig (line 32) | interface IdataConfig { type UseKnowledgeBaseConfigChangeHandlerOptions (line 41) | interface UseKnowledgeBaseConfigChangeHandlerOptions { function useKnowledgeBaseConfigChangeHandler (line 52) | function useKnowledgeBaseConfigChangeHandler({ FILE: frontend/hooks/useKnowledgeBaseSelector.ts function useKnowledgeBasesForToolConfig (line 28) | function useKnowledgeBasesForToolConfig( function usePrefetchKnowledgeBases (line 172) | function usePrefetchKnowledgeBases() { function useSyncKnowledgeBases (line 296) | function useSyncKnowledgeBases() { function useKnowledgeBaseSelection (line 372) | function useKnowledgeBaseSelection(initialSelectedIds: string[] = []) { FILE: frontend/hooks/useMcpConfig.ts type UseMcpConfigOptions (line 23) | interface UseMcpConfigOptions { type McpMessageKeys (line 35) | interface McpMessageKeys { function useMcpConfig (line 57) | function useMcpConfig(options: UseMcpConfigOptions = {}) { FILE: frontend/hooks/useMemory.ts function useMemory (line 24) | function useMemory({ visible, currentUserId, currentTenantId, message }:... FILE: frontend/hooks/useSetupFlow.ts type UseSetupFlowOptions (line 4) | interface UseSetupFlowOptions { type UseSetupFlowReturn (line 8) | interface UseSetupFlowReturn { function useSetupFlow (line 40) | function useSetupFlow(options: UseSetupFlowOptions = {}): UseSetupFlowRe... FILE: frontend/hooks/user/useUserList.ts function useUserList (line 4) | function useUserList( FILE: frontend/lib/agentDebugErrorCache.ts constant DEBUG_ERROR_CACHE_KEY (line 7) | const DEBUG_ERROR_CACHE_KEY = "nexent_agent_debug_errors"; type DebugErrorInfo (line 9) | interface DebugErrorInfo { function getCachedDebugError (line 20) | function getCachedDebugError(agentId: number): string | null { function cacheDebugError (line 46) | function cacheDebugError(agentId: number, errorMessage: string): void { function clearCachedDebugError (line 80) | function clearCachedDebugError(agentId: number): void { function clearAllCachedDebugErrors (line 107) | function clearAllCachedDebugErrors(): void { FILE: frontend/lib/agentLabelMapper.ts function getToolSourceLabel (line 15) | function getToolSourceLabel(source: string, t: TFunction): string { function getAgentTypeLabel (line 36) | function getAgentTypeLabel(type: string, t: TFunction): string { function getGenericLabel (line 56) | function getGenericLabel(label: string, t: TFunction): string { function getCategoryLabel (line 79) | function getCategoryLabel(category: string, t: TFunction): string { FILE: frontend/lib/auth.ts constant ROLE_COLORS (line 22) | const ROLE_COLORS: Record = { function getRoleColor (line 35) | function getRoleColor(role: string): string { function generateAvatarUrl (line 40) | function generateAvatarUrl(email: string): string { function getEffectiveRoutePath (line 86) | function getEffectiveRoutePath(pathname: string): string { FILE: frontend/lib/authEvents.ts class AuthEventEmitter (line 10) | class AuthEventEmitter { FILE: frontend/lib/avatar.tsx class SeededRandom (line 9) | class SeededRandom { method constructor (line 12) | constructor(seed: string) { method random (line 20) | random(): number { method randomInt (line 26) | randomInt(min: number, max: number): number { function rgbToHsl (line 141) | function rgbToHsl(r: number, g: number, b: number): [number, number, num... function hslToRgb (line 167) | function hslToRgb(h: number, s: number, l: number): [number, number, num... FILE: frontend/lib/clipboard.ts function copyToClipboard (line 1) | async function copyToClipboard(text: string): Promise { FILE: frontend/lib/date.ts function formatDate (line 6) | function formatDate(date: string | Date | null | undefined): string | un... FILE: frontend/lib/providerError.ts type ProviderErrorType (line 13) | type ProviderErrorType = type ProviderError (line 27) | interface ProviderError { constant PROVIDER_DISPLAY_NAMES (line 37) | const PROVIDER_DISPLAY_NAMES: Record = { function detectProviderError (line 47) | function detectProviderError(errorResponse: unknown): ProviderErrorType { function translateProviderError (line 146) | function translateProviderError( function processProviderResponse (line 204) | function processProviderResponse>( FILE: frontend/lib/session.ts function getCookieValue (line 23) | function getCookieValue(name: string): string | null { function clearCookie (line 34) | function clearCookie(name: string): void { FILE: frontend/lib/utils.ts function cn (line 8) | function cn(...inputs: ClassValue[]) { function getStatusPriority (line 13) | function getStatusPriority(status: string): number { function sortByStatusAndDate (line 35) | function sortByStatusAndDate( type ConnectivityStatusType (line 162) | type ConnectivityStatusType = "checking" | "available" | "unavailable" |... type ConnectivityMeta (line 192) | type ConnectivityMeta = { function formatScoreAsPercentage (line 227) | function formatScoreAsPercentage(score: number): string { function getScoreColor (line 240) | function getScoreColor(score: number): string { FILE: frontend/lib/viewPersistence.ts constant VIEW_STORAGE_KEY (line 6) | const VIEW_STORAGE_KEY = 'nexent_current_view'; type ViewType (line 8) | type ViewType = constant VALID_VIEWS (line 22) | const VALID_VIEWS: ViewType[] = [ function getSavedView (line 41) | function getSavedView(): ViewType { function saveView (line 63) | function saveView(view: ViewType): void { function clearSavedView (line 79) | function clearSavedView(): void { FILE: frontend/middleware.ts constant PUBLIC_FILE (line 3) | const PUBLIC_FILE = /\.(.*)$/; function middleware (line 7) | function middleware(req: NextRequest) { FILE: frontend/next.config.mjs function mergeConfig (line 31) | function mergeConfig(nextConfig, userConfig) { FILE: frontend/server.js constant HTTP_BACKEND (line 25) | const HTTP_BACKEND = process.env.HTTP_BACKEND || "http://localhost:5010"; constant WS_BACKEND (line 26) | const WS_BACKEND = process.env.WS_BACKEND || "ws://localhost:5014"; constant RUNTIME_HTTP_BACKEND (line 27) | const RUNTIME_HTTP_BACKEND = constant MINIO_BACKEND (line 29) | const MINIO_BACKEND = process.env.MINIO_ENDPOINT || "http://localhost:90... constant MARKET_BACKEND (line 30) | const MARKET_BACKEND = constant PORT (line 32) | const PORT = 3000; constant COOKIE_NAMES (line 39) | const COOKIE_NAMES = { function buildCookieOptions (line 47) | function buildCookieOptions(httpOnly) { function setAuthCookies (line 56) | function setAuthCookies(res, session) { function clearAuthCookies (line 99) | function clearAuthCookies(res) { function parseCookies (line 108) | function parseCookies(req) { constant AUTH_INTERCEPT_ENDPOINTS (line 115) | const AUTH_INTERCEPT_ENDPOINTS = new Set([ function collectRequestBody (line 123) | function collectRequestBody(req) { function prepareAuthRequestBody (line 136) | function prepareAuthRequestBody(pathname, body, cookies) { function forwardAuthRequest (line 149) | function forwardAuthRequest(req, res, targetUrl) { FILE: frontend/services/agentConfigService.ts type UpdateAgentInfoPayload (line 374) | interface UpdateAgentInfoPayload { FILE: frontend/services/agentVersionService.ts type ToolInstance (line 8) | interface ToolInstance { type Agent (line 20) | interface Agent { type AgentVersion (line 49) | interface AgentVersion { type AgentVersionResponse (line 60) | interface AgentVersionResponse { type FetchAgentVersionResult (line 66) | interface FetchAgentVersionResult { type AgentVersionDetail (line 75) | interface AgentVersionDetail extends Agent { type AgentVersionDetailResponse (line 79) | interface AgentVersionDetailResponse { type FetchAgentVersionDetailResult (line 85) | interface FetchAgentVersionDetailResult { type AgentVersionListData (line 94) | interface AgentVersionListData { type AgentVersionListResponse (line 99) | interface AgentVersionListResponse { type FetchAgentVersionListResult (line 105) | interface FetchAgentVersionListResult { type VersionPublishRequest (line 114) | interface VersionPublishRequest { type VersionPublishResponse (line 122) | interface VersionPublishResponse { type VersionRollbackRequest (line 131) | interface VersionRollbackRequest { type VersionRollbackResponse (line 139) | interface VersionRollbackResponse { type VersionUpdateRequest (line 148) | interface VersionUpdateRequest { type VersionUpdateResponse (line 156) | interface VersionUpdateResponse { type VersionCompareRequest (line 167) | interface VersionCompareRequest { type VersionCompareResponse (line 175) | interface VersionCompareResponse { type VersionDifference (line 188) | interface VersionDifference { function fetchAgentVersion (line 201) | async function fetchAgentVersion( function fetchAgentVersionDetail (line 236) | async function fetchAgentVersionDetail( function fetchAgentVersionList (line 275) | async function fetchAgentVersionList( function publishVersion (line 314) | async function publishVersion( function rollbackVersion (line 355) | async function rollbackVersion( function compareVersions (line 394) | async function compareVersions( function deleteVersion (line 437) | async function deleteVersion( function updateVersion (line 474) | async function updateVersion( FILE: frontend/services/api.ts constant API_BASE_URL (line 7) | const API_BASE_URL = "/api"; constant API_ENDPOINTS (line 9) | const API_ENDPOINTS = { class ApiError (line 309) | class ApiError extends Error { method constructor (line 310) | constructor( type Window (line 424) | interface Window { FILE: frontend/services/configService.ts class ConfigService (line 10) | class ConfigService { method fetchConfig (line 15) | async fetchConfig(): Promise { method saveConfig (line 29) | async saveConfig(config: GlobalConfig): Promise { FILE: frontend/services/conversationService.ts method getList (line 26) | async getList(): Promise { method create (line 39) | async create(title?: string) { method rename (line 58) | async rename(conversationId: number, name: string) { method getDetail (line 78) | async getDetail(conversationId: number, signal?: AbortSignal): Promise { function getGroupMembers (line 120) | async function getGroupMembers(groupId: number): Promise { function createGroup (line 142) | async function createGroup( function updateGroup (line 168) | async function updateGroup( function deleteGroup (line 188) | async function deleteGroup(groupId: number): Promise { function addUserToGroup (line 204) | async function addUserToGroup( function removeUserFromGroup (line 224) | async function removeUserFromGroup( function updateGroupMembers (line 246) | async function updateGroupMembers( function getTenantDefaultGroupId (line 272) | async function getTenantDefaultGroupId(tenantId: string): Promise { function checkInvitationCodeExists (line 159) | async function checkInvitationCodeExists(invitationCode: string): Promis... FILE: frontend/services/knowledgeBasePollingService.ts class KnowledgeBasePollingService (line 9) | class KnowledgeBasePollingService { method setActiveKnowledgeBase (line 22) | setActiveKnowledgeBase(kbId: string | null): void { method startDocumentStatusPolling (line 27) | startDocumentStatusPolling(kbId: string, callback: (documents: Documen... method handlePollingTimeout (line 129) | private async handlePollingTimeout( method pollForKnowledgeBaseReady (line 168) | pollForKnowledgeBaseReady( method handleNewKnowledgeBaseCreation (line 233) | async handleNewKnowledgeBaseCreation(kbId: string, kbName: string, ori... method stopPolling (line 250) | stopPolling(kbId: string): void { method stopAllPolling (line 259) | stopAllPolling(): void { method triggerKnowledgeBaseListUpdate (line 274) | triggerKnowledgeBaseListUpdate(forceRefresh: boolean = false): void { method triggerDocumentsUpdate (line 282) | triggerDocumentsUpdate(kbId: string, documents: Document[]): void { FILE: frontend/services/knowledgeBaseService.ts class KnowledgeBaseService (line 23) | class KnowledgeBaseService { method checkHealth (line 25) | async checkHealth(): Promise { method syncDifyKnowledgeBases (line 47) | async syncDifyKnowledgeBases( method getDifyKnowledgeBases (line 87) | async getDifyKnowledgeBases( method getIdataKnowledgeSpaces (line 138) | async getIdataKnowledgeSpaces( method syncIdataKnowledgeBases (line 173) | async syncIdataKnowledgeBases( method getIdataKnowledgeBases (line 218) | async getIdataKnowledgeBases( method syncDataMateAndCreateRecords (line 276) | async syncDataMateAndCreateRecords(datamateUrl?: string): Promise<{ method testDataMateConnection (line 320) | async testDataMateConnection( method syncDifyDatasets (line 354) | async syncDifyDatasets( method getKnowledgeBasesInfo (line 426) | async getKnowledgeBasesInfo( method getKnowledgeBases (line 597) | async getKnowledgeBases(skipHealthCheck = false): Promise { method checkKnowledgeBaseNameExists (line 628) | async checkKnowledgeBaseNameExists(name: string): Promise { method checkKnowledgeBaseName (line 639) | async checkKnowledgeBaseName( method createKnowledgeBase (line 664) | async createKnowledgeBase( method deleteKnowledgeBase (line 737) | async deleteKnowledgeBase(id: string): Promise { method getAllFiles (line 759) | async getAllFiles(kbId: string, kbSource?: string): Promise { method getFileTypeFromName (line 816) | private getFileTypeFromName(filename: string): string { method uploadDocuments (line 827) | async uploadDocuments( method deleteDocument (line 920) | async deleteDocument(docId: string, kbId: string): Promise { method summaryIndex (line 944) | async summaryIndex( method changeSummary (line 1034) | async changeSummary(indexName: string, summaryResult: string): Promise... method getSummary (line 1070) | async getSummary(indexName: string): Promise { method previewChunks (line 1104) | async previewChunks( method previewChunksPaginated (line 1145) | async previewChunksPaginated( method createChunk (line 1201) | async createChunk( method updateChunk (line 1235) | async updateChunk( method deleteChunk (line 1267) | async deleteChunk(indexName: string, chunkId: string): Promise { method hybridSearch (line 1291) | async hybridSearch( method updateKnowledgeBase (line 1340) | async updateKnowledgeBase( method getDocumentErrorInfo (line 1378) | async getDocumentErrorInfo( FILE: frontend/services/marketService.ts constant MARKET_API_TIMEOUT (line 17) | const MARKET_API_TIMEOUT = 5000; class MarketApiError (line 22) | class MarketApiError extends Error { method constructor (line 23) | constructor( function fetchWithTimeout (line 41) | async function fetchWithTimeout( function fetchMarketAgentList (line 83) | async function fetchMarketAgentList( function fetchMarketAgentDetail (line 114) | async function fetchMarketAgentDetail( function fetchMarketCategories (line 145) | async function fetchMarketCategories(): Promise { function fetchMarketTags (line 174) | async function fetchMarketTags(): Promise { function fetchMarketAgentMcpServers (line 203) | async function fetchMarketAgentMcpServers( FILE: frontend/services/memoryService.ts function getFriendlyErrorMessage (line 13) | function getFriendlyErrorMessage(raw: string): string { function requestJson (line 49) | async function requestJson( type MemoryConfig (line 60) | interface MemoryConfig { function loadMemoryConfig (line 67) | async function loadMemoryConfig(): Promise { function setMemorySwitch (line 104) | async function setMemorySwitch(enabled: boolean): Promise { function setMemoryAgentShare (line 120) | async function setMemoryAgentShare( function addDisabledAgentId (line 138) | async function addDisabledAgentId(agentId: string): Promise { function removeDisabledAgentId (line 152) | async function removeDisabledAgentId(agentId: string): Promise { function addDisabledUserAgentId (line 168) | async function addDisabledUserAgentId( function removeDisabledUserAgentId (line 187) | async function removeDisabledUserAgentId( function listMemories (line 208) | async function listMemories( function fetchTenantSharedGroup (line 235) | async function fetchTenantSharedGroup(): Promise { function fetchAgentSharedGroups (line 244) | async function fetchAgentSharedGroups(): Promise { function fetchUserPersonalGroup (line 295) | async function fetchUserPersonalGroup(): Promise { function fetchUserAgentGroups (line 304) | async function fetchUserAgentGroups(): Promise { function addMemory (line 366) | async function addMemory( function clearMemory (line 392) | async function clearMemory( function deleteMemory (line 413) | async function deleteMemory( FILE: frontend/services/modelService.ts class ModelError (line 28) | class ModelError extends Error { method constructor (line 29) | constructor(message: string, public code?: number) { method toString (line 41) | toString() { function detectProviderFromUrl (line 880) | function detectProviderFromUrl( function getProviderIconByUrl (line 895) | function getProviderIconByUrl( function getOfficialProviderIcon (line 907) | function getOfficialProviderIcon(): string { FILE: frontend/services/storageService.ts function extractObjectNameFromUrl (line 19) | function extractObjectNameFromUrl(url: string): string | null { function convertImageUrlToApiUrl (line 106) | function convertImageUrlToApiUrl(url: string): string { function resolveS3UrlToDataUrlInternal (line 160) | async function resolveS3UrlToDataUrlInternal( function resolveS3UrlToDataUrl (line 172) | async function resolveS3UrlToDataUrl( method uploadFiles (line 201) | async uploadFiles( method getFileUrl (line 236) | async getFileUrl(objectName: string): Promise { method downloadFile (line 255) | async downloadFile(objectName: string, filename?: string): Promise { method downloadDatamateFile (line 295) | async downloadDatamateFile(options: { FILE: frontend/services/tenantService.ts type Tenant (line 5) | interface Tenant { type CreateTenantRequest (line 15) | interface CreateTenantRequest { type UpdateTenantRequest (line 19) | interface UpdateTenantRequest { type TenantListResponse (line 23) | interface TenantListResponse { type TenantListPaginatedResponse (line 28) | interface TenantListPaginatedResponse { type TenantDetailResponse (line 37) | interface TenantDetailResponse { type CreateTenantResponse (line 42) | interface CreateTenantResponse { type TenantUser (line 47) | interface TenantUser { type TenantUsersResponse (line 57) | interface TenantUsersResponse { type ListTenantsParams (line 63) | interface ListTenantsParams { function listTenants (line 71) | async function listTenants(params?: ListTenantsParams): Promise { function createTenant (line 121) | async function createTenant( function updateTenant (line 143) | async function updateTenant( function deleteTenant (line 169) | async function deleteTenant(tenantId: string): Promise { function getTenantUsers (line 186) | async function getTenantUsers(tenantId: string): Promise { function createUserToken (line 56) | async function createUserToken(): Promise { FILE: frontend/services/userService.ts type User (line 5) | interface User { type UpdateUserRequest (line 15) | interface UpdateUserRequest { type UserListResponse (line 19) | interface UserListResponse { type UserDetailResponse (line 31) | interface UserDetailResponse { type CreateUserResponse (line 36) | interface CreateUserResponse { function listUsers (line 45) | async function listUsers( function getUser (line 88) | async function getUser(userId: string): Promise { function updateUser (line 107) | async function updateUser( function deleteUser (line 130) | async function deleteUser(userId: string): Promise { FILE: frontend/stores/agentConfigStore.ts type EditableAgent (line 21) | type EditableAgent = Pick< type AgentConfigStoreState (line 43) | interface AgentConfigStoreState { FILE: frontend/types/agentConfig.ts type AgentBusinessInfo (line 8) | type AgentBusinessInfo = Partial ... type UseMemoryOptions (line 37) | interface UseMemoryOptions { FILE: frontend/types/modelConfig.ts type ModelConnectStatus (line 2) | type ModelConnectStatus = type ApiResponse (line 9) | interface ApiResponse { type ModelSource (line 16) | type ModelSource = type ModelType (line 26) | type ModelType = type ModelOption (line 36) | interface ModelOption { type AppConfig (line 52) | interface AppConfig { type ModelApiConfig (line 64) | interface ModelApiConfig { type SingleModelConfig (line 70) | interface SingleModelConfig { type ModelConfig (line 78) | interface ModelConfig { type GlobalConfig (line 89) | interface GlobalConfig { type ModelValidationResponse (line 95) | interface ModelValidationResponse { FILE: pathology-ai/code-changes/backend/local_mcp_service.py class ConfidenceLevel (line 13) | class ConfidenceLevel(Enum): class RiskLevel (line 20) | class RiskLevel(Enum): function demo_tool (line 29) | async def demo_tool(para_1: str, para_2: int) -> str: function generate_knowledge_graph (line 48) | async def generate_knowledge_graph(topic: str, nodes: str = "", relation... function generate_diagnosis_flow (line 131) | async def generate_diagnosis_flow(disease: str, steps: str = "", decisio... function generate_medical_chart (line 183) | async def generate_medical_chart(chart_type: str, title: str, labels: st... function generate_radar_chart (line 242) | async def generate_radar_chart(title: str, dimensions: str = "", values:... function generate_medical_guide (line 296) | async def generate_medical_guide(condition: str, urgency: str = "urgent"... function generate_timeline (line 396) | async def generate_timeline(title: str, events: str = "") -> str: function generate_gantt_chart (line 437) | async def generate_gantt_chart(title: str, tasks: str = "") -> str: function generate_quadrant_chart (line 488) | async def generate_quadrant_chart(title: str, x_axis: str = "紧急程度", y_ax... function generate_state_diagram (line 540) | async def generate_state_diagram(title: str, states: str = "", transitio... function generate_sankey_diagram (line 602) | async def generate_sankey_diagram(title: str, flows: str = "") -> str: function start_diagnosis_game (line 702) | async def start_diagnosis_game(difficulty: int = 1, case_type: str = "ra... function diagnosis_action (line 751) | async def diagnosis_action(case_id: str, action_type: str, action_detail... function search_pathology_images (line 1014) | async def search_pathology_images(keyword: str, count: int = 6) -> str: function chain_of_diagnosis (line 1127) | async def chain_of_diagnosis( function evaluate_diagnosis_confidence (line 1297) | async def evaluate_diagnosis_confidence( FILE: pathology-ai/code-changes/frontend/DiagnosisConfidenceCard.tsx type ConfidenceLevel (line 7) | type ConfidenceLevel = "HIGH" | "MEDIUM" | "LOW" | "UNCERTAIN"; type RiskLevel (line 10) | type RiskLevel = "CRITICAL" | "HIGH" | "MEDIUM" | "LOW"; type EvaluationDimension (line 13) | interface EvaluationDimension { type DiagnosisConfidenceCardProps (line 21) | interface DiagnosisConfidenceCardProps { FILE: pathology-ai/code-changes/frontend/MedicalVisualizationPanel.tsx type TabType (line 10) | type TabType = "dashboard" | "knowledge-graph" | "diagnosis-flow"; type MedicalVisualizationPanelProps (line 13) | interface MedicalVisualizationPanelProps { FILE: pathology-ai/code-changes/frontend/PathologyImageGallery.tsx type PathologyImage (line 7) | interface PathologyImage { type PathologyImageGalleryProps (line 18) | interface PathologyImageGalleryProps { FILE: pathology-ai/code-changes/frontend/SourceTag.tsx type SourceType (line 7) | type SourceType = "internal" | "external" | "knowledge" | "reference" | ... type SourceTagProps (line 10) | interface SourceTagProps { FILE: pathology-ai/code-changes/frontend/chatLeftSidebar.tsx function ChatSidebar (line 106) | function ChatSidebar({ FILE: pathology-ai/code-changes/frontend/conversationService.ts method getList (line 26) | async getList(): Promise { method create (line 39) | async create(title?: string) { method rename (line 58) | async rename(conversationId: number, name: string) { method getDetail (line 78) | async getDetail(conversationId: number, signal?: AbortSignal): Promise Dict: method to_json (line 59) | def to_json(self) -> str: class MedicalAgentTemplates (line 64) | class MedicalAgentTemplates: method __init__ (line 80) | def __init__(self): method _load_builtin_templates (line 85) | def _load_builtin_templates(self): method _get_pathology_prompt (line 183) | def _get_pathology_prompt(self) -> str: method _get_radiology_prompt (line 212) | def _get_radiology_prompt(self) -> str: method _get_clinical_prompt (line 237) | def _get_clinical_prompt(self) -> str: method _get_hiv_specialist_prompt (line 265) | def _get_hiv_specialist_prompt(self) -> str: method get_template (line 301) | def get_template(self, template_id: str) -> Optional[AgentTemplate]: method list_templates (line 313) | def list_templates( method list_template_ids (line 331) | def list_template_ids(self) -> List[str]: method add_template (line 335) | def add_template(self, template: AgentTemplate) -> bool: method remove_template (line 350) | def remove_template(self, template_id: str) -> bool: method export_templates (line 365) | def export_templates(self, filepath: str) -> bool: method import_templates (line 386) | def import_templates(self, filepath: str) -> int: method get_template_summary (line 419) | def get_template_summary(self) -> str: FILE: pathology-ai/code-changes/medical_extension/api.py class DiagnosisRequest (line 36) | class DiagnosisRequest(BaseModel): class DiagnosisResponse (line 44) | class DiagnosisResponse(BaseModel): class ConfidenceRequest (line 51) | class ConfidenceRequest(BaseModel): class ConfidenceResponse (line 59) | class ConfidenceResponse(BaseModel): class TemplateResponse (line 66) | class TemplateResponse(BaseModel): class PromptsResponse (line 72) | class PromptsResponse(BaseModel): function list_templates (line 81) | async def list_templates( function get_template (line 108) | async def get_template(template_id: str): function list_template_ids (line 129) | async def list_template_ids(): function analyze_diagnosis (line 140) | async def analyze_diagnosis(request: DiagnosisRequest): function get_cod_prompt (line 168) | async def get_cod_prompt(): function evaluate_confidence (line 185) | async def evaluate_confidence(request: ConfidenceRequest): function list_prompts (line 215) | async def list_prompts( function get_prompt (line 252) | async def get_prompt(prompt_id: str): function get_recommended_prompt (line 281) | async def get_recommended_prompt(): function combine_prompts (line 296) | async def combine_prompts(prompt_ids: List[str]): function health_check (line 320) | async def health_check(): FILE: pathology-ai/code-changes/medical_extension/chain_of_diagnosis.py class ConfidenceLevel (line 21) | class ConfidenceLevel(Enum): class DiagnosisStep (line 30) | class DiagnosisStep: class DiagnosisResult (line 39) | class DiagnosisResult: method to_dict (line 50) | def to_dict(self) -> Dict: method to_formatted_string (line 70) | def to_formatted_string(self) -> str: class ChainOfDiagnosis (line 114) | class ChainOfDiagnosis: method __init__ (line 142) | def __init__(self, knowledge_base: Optional[Dict] = None): method _load_default_knowledge (line 152) | def _load_default_knowledge(self): method analyze (line 173) | def analyze( method _analyze_symptoms (line 250) | def _analyze_symptoms(self, symptoms: str) -> DiagnosisStep: method _correlate_history (line 279) | def _correlate_history( method _differential_diagnosis (line 307) | def _differential_diagnosis( method _suggest_examinations (line 360) | def _suggest_examinations( method _conclude_diagnosis (line 401) | def _conclude_diagnosis( method _calculate_confidence (line 437) | def _calculate_confidence( method _get_confidence_level (line 460) | def _get_confidence_level(self, score: float) -> ConfidenceLevel: method _generate_recommendations (line 471) | def _generate_recommendations( method _generate_warnings (line 497) | def _generate_warnings( method generate_cod_prompt (line 514) | def generate_cod_prompt(self) -> str: FILE: pathology-ai/code-changes/medical_extension/confidence_evaluator.py class RiskLevel (line 19) | class RiskLevel(Enum): class ConfidenceReport (line 28) | class ConfidenceReport: method to_dict (line 40) | def to_dict(self) -> Dict: class ConfidenceEvaluator (line 54) | class ConfidenceEvaluator: method __init__ (line 98) | def __init__(self): method evaluate (line 102) | def evaluate( method _evaluate_evidence (line 178) | def _evaluate_evidence(self, evidence: List[str]) -> float: method _evaluate_consistency (line 200) | def _evaluate_consistency( method _evaluate_completeness (line 239) | def _evaluate_completeness( method _evaluate_certainty (line 261) | def _evaluate_certainty(self, diagnosis: str) -> float: method _calculate_overall_score (line 286) | def _calculate_overall_score(self, factors: Dict[str, float]) -> float: method _get_confidence_level (line 302) | def _get_confidence_level(self, score: float) -> str: method _evaluate_risk (line 313) | def _evaluate_risk(self, diagnosis: str, confidence: float) -> RiskLevel: method _generate_recommendations (line 327) | def _generate_recommendations( method _generate_warnings (line 351) | def _generate_warnings( method add_custom_rule (line 372) | def add_custom_rule( method format_report (line 392) | def format_report(self, report: ConfidenceReport) -> str: FILE: pathology-ai/code-changes/medical_extension/medical_prompts.py class PromptCategory (line 18) | class PromptCategory(Enum): class MedicalPromptLibrary (line 27) | class MedicalPromptLibrary: method __init__ (line 43) | def __init__(self): method _load_builtin_prompts (line 48) | def _load_builtin_prompts(self): method _get_cod_prompt (line 139) | def _get_cod_prompt(self) -> str: method _get_uncertainty_prompt (line 171) | def _get_uncertainty_prompt(self) -> str: method _get_safety_prompt (line 202) | def _get_safety_prompt(self) -> str: method _get_hiv_prompt (line 221) | def _get_hiv_prompt(self) -> str: method _get_pathology_prompt (line 256) | def _get_pathology_prompt(self) -> str: method _get_differential_prompt (line 287) | def _get_differential_prompt(self) -> str: method _get_treatment_prompt (line 323) | def _get_treatment_prompt(self) -> str: method _get_full_assistant_prompt (line 360) | def _get_full_assistant_prompt(self) -> str: method get_prompt (line 411) | def get_prompt(self, prompt_id: str) -> Optional[Dict]: method get_prompt_text (line 423) | def get_prompt_text(self, prompt_id: str) -> Optional[str]: method list_prompts (line 436) | def list_prompts( method list_prompt_ids (line 454) | def list_prompt_ids(self) -> List[str]: method combine_prompts (line 458) | def combine_prompts(self, prompt_ids: List[str]) -> str: method add_custom_prompt (line 475) | def add_custom_prompt( method get_recommended_prompt (line 512) | def get_recommended_prompt(self) -> str: FILE: pathology-ai/code-changes/medical_extension/test_medical.py function test_chain_of_diagnosis (line 20) | def test_chain_of_diagnosis(): function test_agent_templates (line 44) | def test_agent_templates(): function test_confidence_evaluator (line 68) | def test_confidence_evaluator(): function test_prompt_library (line 92) | def test_prompt_library(): function main (line 115) | def main(): FILE: sdk/nexent/container/container_client_base.py class ContainerConfig (line 21) | class ContainerConfig(ABC): method container_type (line 26) | def container_type(self) -> str: method validate (line 31) | def validate(self) -> None: class ContainerClient (line 41) | class ContainerClient(ABC): method start_container (line 50) | async def start_container( method stop_container (line 87) | async def stop_container(self, container_id: str) -> bool: method remove_container (line 103) | async def remove_container(self, container_id: str) -> bool: method list_containers (line 119) | def list_containers( method get_container_logs (line 143) | def get_container_logs(self, container_id: str, tail: int = 100) -> str: method get_container_status (line 157) | def get_container_status(self, container_id: str) -> Optional[Dict[str... FILE: sdk/nexent/container/container_client_factory.py function register_container_client (line 22) | def register_container_client( function create_container_client_from_config (line 41) | def create_container_client_from_config( FILE: sdk/nexent/container/docker_client.py class ContainerError (line 22) | class ContainerError(Exception): class ContainerConnectionError (line 28) | class ContainerConnectionError(Exception): class DockerContainerClient (line 34) | class DockerContainerClient(ContainerClient): method __init__ (line 39) | def __init__(self, config: DockerContainerConfig): method _is_running_in_docker (line 66) | def _is_running_in_docker() -> bool: method _get_service_host (line 90) | def _get_service_host(service_name: str) -> str: method _ensure_network (line 102) | def _ensure_network(self, network_name: str) -> None: method _get_container_service_port (line 123) | def _get_container_service_port(container: Any) -> Optional[str]: method find_free_port (line 153) | def find_free_port(self, start_port: int = 5020, max_attempts: int = 1... method _generate_container_name (line 179) | def _generate_container_name(self, service_name: str, tenant_id: str, ... method start_container (line 188) | async def start_container( method _wait_for_service_ready (line 367) | async def _wait_for_service_ready( method stop_container (line 434) | async def stop_container(self, container_id: str) -> bool: method remove_container (line 465) | async def remove_container(self, container_id: str) -> bool: method list_containers (line 496) | def list_containers( method get_container_logs (line 558) | def get_container_logs(self, container_id: str, tail: int = 100) -> str: method get_container_status (line 580) | def get_container_status(self, container_id: str) -> Optional[Dict[str... FILE: sdk/nexent/container/docker_config.py class DockerContainerConfig (line 12) | class DockerContainerConfig(ContainerConfig): method __init__ (line 15) | def __init__( method container_type (line 29) | def container_type(self) -> str: method base_url (line 34) | def base_url(self) -> str: method _get_default_socket_path (line 43) | def _get_default_socket_path(self) -> str: method _normalize_base_url (line 49) | def _normalize_base_url(self, value: str) -> str: method validate (line 69) | def validate(self) -> None: FILE: sdk/nexent/core/__init__.py function get_core_agent (line 6) | def get_core_agent(): function get_openai_model (line 10) | def get_openai_model(): FILE: sdk/nexent/core/agents/agent_model.py class ModelConfig (line 11) | class ModelConfig(BaseModel): class ToolConfig (line 25) | class ToolConfig(BaseModel): class AgentConfig (line 36) | class AgentConfig(BaseModel): class AgentHistory (line 47) | class AgentHistory(BaseModel): class AgentRunInfo (line 52) | class AgentRunInfo(BaseModel): class Config (line 68) | class Config: class MemoryContext (line 71) | class MemoryContext(BaseModel): method __str__ (line 78) | def __str__(self) -> str: # pragma: no cover class MemoryUserConfig (line 82) | class MemoryUserConfig(BaseModel): method __str__ (line 88) | def __str__(self) -> str: # pragma: no cover FILE: sdk/nexent/core/agents/core_agent.py function parse_code_blobs (line 29) | def parse_code_blobs(text: str) -> str: function convert_code_format (line 82) | def convert_code_format(text): class FinalAnswerError (line 105) | class FinalAnswerError(Exception): class CoreAgent (line 110) | class CoreAgent(CodeAgent): method __init__ (line 111) | def __init__(self, observer: MessageObserver, prompt_templates: Dict[s... method _log_model_call_parameters (line 116) | def _log_model_call_parameters(self, input_messages: List[ChatMessage]... method _step_stream (line 170) | def _step_stream(self, memory_step: ActionStep) -> Generator[Any]: method run (line 289) | def run(self, task: str, stream: bool = False, reset: bool = True, ima... method __call__ (line 385) | def __call__(self, task: str, **kwargs): method _run_stream (line 416) | def _run_stream( FILE: sdk/nexent/core/agents/nexent_agent.py class NexentAgent (line 17) | class NexentAgent: method __init__ (line 18) | def __init__(self, observer: MessageObserver, method create_model (line 40) | def create_model(self, model_cite_name: str): method create_local_tool (line 64) | def create_local_tool(self, tool_config: ToolConfig): method create_langchain_tool (line 106) | def create_langchain_tool(self, tool_config: ToolConfig): method create_mcp_tool (line 110) | def create_mcp_tool(self, class_name): method create_tool (line 121) | def create_tool(self, tool_config: ToolConfig): method create_single_agent (line 141) | def create_single_agent(self, agent_config: AgentConfig): method add_history_to_agent (line 177) | def add_history_to_agent(self, history: List[AgentHistory]): method agent_run_with_observer (line 204) | def agent_run_with_observer(self, query: str, reset=True): method set_agent (line 245) | def set_agent(self, agent: CoreAgent): FILE: sdk/nexent/core/agents/run_agent.py function _detect_transport (line 17) | def _detect_transport(url: str) -> str: function _normalize_mcp_config (line 39) | def _normalize_mcp_config(mcp_host_item: Union[str, Dict[str, Any]]) -> ... function agent_run_thread (line 85) | def agent_run_thread(agent_run_info: AgentRunInfo): function agent_run (line 130) | async def agent_run(agent_run_info: AgentRunInfo): FILE: sdk/nexent/core/models/embedding_model.py class BaseEmbedding (line 9) | class BaseEmbedding(ABC): method __init__ (line 15) | def __init__( method get_embeddings (line 36) | def get_embeddings( method dimension_check (line 60) | async def dimension_check(self, timeout: float = 5.0) -> List[List[flo... class TextEmbedding (line 73) | class TextEmbedding(BaseEmbedding): method __init__ (line 80) | def __init__( method get_embeddings (line 91) | def get_embeddings( class MultimodalEmbedding (line 115) | class MultimodalEmbedding(BaseEmbedding): method __init__ (line 122) | def __init__( method get_multimodal_embeddings (line 133) | def get_multimodal_embeddings( class JinaEmbedding (line 157) | class JinaEmbedding(MultimodalEmbedding): method __init__ (line 158) | def __init__( method _prepare_multimodal_input (line 175) | def _prepare_multimodal_input(self, inputs: List[Dict[str, str]]) -> D... method _make_request (line 179) | def _make_request(self, data: Dict[str, Any], timeout: Optional[float]... method get_embeddings (line 194) | def get_embeddings( method get_multimodal_embeddings (line 241) | def get_multimodal_embeddings( method dimension_check (line 299) | async def dimension_check(self, timeout: float = 5.0) -> List[List[flo... class OpenAICompatibleEmbedding (line 321) | class OpenAICompatibleEmbedding(TextEmbedding): method __init__ (line 322) | def __init__(self, model_name: str, base_url: str, api_key: str, embed... method _prepare_input (line 332) | def _prepare_input(self, inputs: Union[str, List[str]]) -> Dict[str, A... method _make_request (line 338) | def _make_request(self, data: Dict[str, Any], timeout: Optional[float]... method get_embeddings (line 353) | def get_embeddings( method dimension_check (line 403) | async def dimension_check(self, timeout: float = 5.0) -> List[List[flo... FILE: sdk/nexent/core/models/message_utils.py function _flatten_content (line 4) | def _flatten_content(raw_content: Any) -> str: function prepare_messages_for_completion (line 27) | def prepare_messages_for_completion(normalized_messages: List[Any], mode... FILE: sdk/nexent/core/models/openai_llm.py class OpenAIModel (line 17) | class OpenAIModel(OpenAIServerModel): method __init__ (line 18) | def __init__(self, observer: MessageObserver = MessageObserver, temper... method __call__ (line 51) | def __call__(self, messages: List[Dict[str, Any]], stop_sequences: Opt... method check_connectivity (line 191) | async def check_connectivity(self) -> bool: FILE: sdk/nexent/core/models/openai_long_context_model.py class OpenAILongContextModel (line 11) | class OpenAILongContextModel(OpenAIModel): method __init__ (line 17) | def __init__(self, observer: MessageObserver, temperature=0.5, top_p=0... method _get_tokenizer (line 40) | def _get_tokenizer(self): method count_tokens (line 50) | def count_tokens(self, text: str) -> int: method truncate_text (line 71) | def truncate_text(self, text: str, max_tokens: int) -> str: method prepare_long_text_message (line 141) | def prepare_long_text_message(self, text_content: str, system_prompt: ... method analyze_long_text (line 191) | def analyze_long_text(self, text_content: str, system_prompt: str, use... FILE: sdk/nexent/core/models/openai_vlm.py class OpenAIVLModel (line 11) | class OpenAIVLModel(OpenAIModel): method __init__ (line 12) | def __init__( method check_connectivity (line 33) | async def check_connectivity(self) -> bool: method encode_image (line 48) | def encode_image(self, image_input: Union[str, BinaryIO]) -> str: method prepare_image_message (line 65) | def prepare_image_message(self, image_input: Union[str, BinaryIO], sys... method analyze_image (line 94) | def analyze_image(self, image_input: Union[str, BinaryIO], FILE: sdk/nexent/core/models/stt_model.py class AudioType (line 49) | class AudioType(Enum): class STTConfig (line 54) | class STTConfig(BaseModel): class STTModel (line 71) | class STTModel: method __init__ (line 72) | def __init__(self, config: STTConfig, test_voice_path: str): method generate_header (line 84) | def generate_header(self, message_type=CLIENT_FULL_REQUEST, message_ty... method generate_before_payload (line 114) | def generate_before_payload(sequence: int): method parse_response (line 129) | def parse_response(res): method read_wav_info (line 193) | def read_wav_info(data: bytes = None) -> tuple[int, int, int, int, byt... method slice_data (line 210) | def slice_data(data: bytes, chunk_size: int): method construct_request (line 229) | def construct_request(self, reqid): method process_audio_data (line 248) | async def process_audio_data(self, audio_data: bytes, segment_size: in... method process_audio_file (line 355) | async def process_audio_file(self, audio_path: str) -> Dict[str, Any]: method process_streaming_audio (line 385) | async def process_streaming_audio(self, ws_client, segment_size: int): method start_streaming_session (line 601) | async def start_streaming_session(self, ws_client): method recognize_file (line 627) | async def recognize_file(self, audio_path: str) -> Dict[str, Any]: method check_connectivity (line 639) | async def check_connectivity(self) -> bool: method _is_stt_result_successful (line 669) | def _is_stt_result_successful(self, result) -> bool: method _extract_stt_error_message (line 707) | def _extract_stt_error_message(self, result) -> str: function process_audio_item (line 740) | async def process_audio_item(audio_item: Dict[str, Any], config: STTConf... FILE: sdk/nexent/core/models/tts_model.py class TTSConfig (line 12) | class TTSConfig: method api_url (line 21) | def api_url(self) -> str: class TTSModel (line 25) | class TTSModel: method __init__ (line 36) | def __init__(self, config: TTSConfig): method _prepare_request (line 44) | def _prepare_request(self, text: str, operation: str = "submit") -> by... method _parse_response (line 60) | def _parse_response(self, res: bytes, buffer: Optional[io.BytesIO] = N... method generate_speech (line 90) | async def generate_speech(self, text: str, stream: bool = False) -> Un... method query_status (line 129) | async def query_status(self, text: str) -> Dict[str, Any]: method _parse_query_response (line 140) | def _parse_query_response(self, response: bytes) -> Dict[str, Any]: method check_connectivity (line 146) | async def check_connectivity(self) -> bool: FILE: sdk/nexent/core/nlp/stopwords.py function download_stopwords (line 11) | def download_stopwords(url: str, save_path: str) -> bool: function load_stopwords (line 26) | def load_stopwords(stopwords_name='baidu_stopwords.txt', FILE: sdk/nexent/core/nlp/tokenizer.py function calculate_term_weights (line 22) | def calculate_term_weights(text, use_idf=False, doc_freqs=None, total_do... FILE: sdk/nexent/core/tools/analyze_image_tool.py class AnalyzeImageTool (line 26) | class AnalyzeImageTool(Tool): method __init__ (line 50) | def __init__( method _forward_impl (line 83) | def _forward_impl(self, image_urls_list: List[bytes], query: str) -> L... FILE: sdk/nexent/core/tools/analyze_text_file_tool.py class AnalyzeTextFileTool (line 25) | class AnalyzeTextFileTool(Tool): method __init__ (line 49) | def __init__( method _forward_impl (line 84) | def _forward_impl( method process_text_file (line 149) | def process_text_file(self, filename: str, file_content: bytes,) -> str: method analyze_file (line 194) | def analyze_file(self, query: str, raw_text: str,): FILE: sdk/nexent/core/tools/create_directory_tool.py class CreateDirectoryTool (line 14) | class CreateDirectoryTool(Tool): method __init__ (line 32) | def __init__(self, method _validate_path (line 47) | def _validate_path(self, directory_path: str) -> str: method forward (line 77) | def forward(self, directory_path: str, permissions: str = "755") -> str: FILE: sdk/nexent/core/tools/create_file_tool.py class CreateFileTool (line 14) | class CreateFileTool(Tool): method __init__ (line 34) | def __init__(self, method _validate_path (line 49) | def _validate_path(self, file_path: str) -> str: method forward (line 79) | def forward(self, file_path: str, content: str = "", encoding: str = "... FILE: sdk/nexent/core/tools/datamate_search_tool.py class DataMateSearchTool (line 17) | class DataMateSearchTool(Tool): method __init__ (line 39) | def __init__( method _parse_server_url (line 108) | def _parse_server_url(server_url: str) -> dict: method forward (line 153) | def forward( method _parse_metadata (line 251) | def _parse_metadata(metadata_raw: Optional[str]) -> dict: method _extract_dataset_id (line 265) | def _extract_dataset_id(absolute_path: str) -> str: FILE: sdk/nexent/core/tools/delete_directory_tool.py class DeleteDirectoryTool (line 15) | class DeleteDirectoryTool(Tool): method __init__ (line 32) | def __init__(self, method _validate_path (line 47) | def _validate_path(self, directory_path: str) -> str: method forward (line 82) | def forward(self, directory_path: str) -> str: FILE: sdk/nexent/core/tools/delete_file_tool.py class DeleteFileTool (line 14) | class DeleteFileTool(Tool): method __init__ (line 31) | def __init__(self, method _validate_path (line 46) | def _validate_path(self, file_path: str) -> str: method forward (line 76) | def forward(self, file_path: str) -> str: FILE: sdk/nexent/core/tools/dify_search_tool.py class DifySearchTool (line 18) | class DifySearchTool(Tool): method __init__ (line 36) | def __init__( method forward (line 108) | def forward( method _get_document_download_url (line 212) | def _get_document_download_url(self, document_id: str, dataset_id: str... method _batch_get_download_urls (line 259) | def _batch_get_download_urls(self, document_dataset_pairs: List[Tuple[... method _search_dify_knowledge_base (line 280) | def _search_dify_knowledge_base(self, query: str, top_k: int, search_m... FILE: sdk/nexent/core/tools/exa_search_tool.py class ExaSearchTool (line 17) | class ExaSearchTool(Tool): method __init__ (line 28) | def __init__(self, exa_api_key:str=Field(description="EXA API key"), method forward (line 47) | def forward(self, query: str) -> str: method _filter_images (line 111) | def _filter_images(self, images_list_url, query): FILE: sdk/nexent/core/tools/get_email_tool.py class GetEmailTool (line 16) | class GetEmailTool(Tool): method __init__ (line 31) | def __init__(self, imap_server: str=Field(description="IMAP Server Add... method _decode_subject (line 45) | def _decode_subject(self, subject): method _parse_email (line 66) | def _parse_email(self, msg): method forward (line 106) | def forward(self, days: int = 7, sender: str = None, max_emails: int =... FILE: sdk/nexent/core/tools/idata_search_tool.py class IdataSearchTool (line 19) | class IdataSearchTool(Tool): method __init__ (line 37) | def __init__( method forward (line 141) | def forward( method _build_download_url (line 271) | def _build_download_url(self, document_id: str, dataset_id: str) -> str: method _search_idata_knowledge_base (line 303) | def _search_idata_knowledge_base(self, payload: Dict[str, Any]) -> Dic... FILE: sdk/nexent/core/tools/knowledge_base_search_tool.py class KnowledgeBaseSearchTool (line 18) | class KnowledgeBaseSearchTool(Tool): method __init__ (line 38) | def __init__( method forward (line 77) | def forward(self, query: str) -> str: method search_hybrid (line 154) | def search_hybrid(self, query, index_names): method search_accurate (line 176) | def search_accurate(self, query, index_names): method search_semantic (line 197) | def search_semantic(self, query, index_names): FILE: sdk/nexent/core/tools/linkup_search_tool.py class LinkupSearchTool (line 14) | class LinkupSearchTool(Tool): method __init__ (line 26) | def __init__( method forward (line 43) | def forward(self, query: str) -> str: method _filter_images (line 118) | def _filter_images(self, images_list_url, query): FILE: sdk/nexent/core/tools/list_directory_tool.py class ListDirectoryTool (line 14) | class ListDirectoryTool(Tool): method __init__ (line 33) | def __init__(self, method _validate_path (line 48) | def _validate_path(self, directory_path: str) -> str: method _format_size (line 82) | def _format_size(self, size_bytes: int) -> str: method _build_tree_structure (line 93) | def _build_tree_structure(self, directory_path: str, max_depth: int, s... method _format_tree_display (line 181) | def _format_tree_display(self, tree_data: Dict[str, Any], show_size: b... method forward (line 237) | def forward(self, directory_path: str = ".", max_depth: int = 3, FILE: sdk/nexent/core/tools/move_item_tool.py class MoveItemTool (line 15) | class MoveItemTool(Tool): method __init__ (line 33) | def __init__(self, method _validate_path (line 48) | def _validate_path(self, file_path: str) -> str: method forward (line 78) | def forward(self, source_path: str, destination_path: str) -> str: FILE: sdk/nexent/core/tools/read_file_tool.py class ReadFileTool (line 14) | class ReadFileTool(Tool): method __init__ (line 32) | def __init__(self, method _validate_path (line 47) | def _validate_path(self, file_path: str) -> str: method forward (line 77) | def forward(self, file_path: str, encoding: str = "utf-8") -> str: FILE: sdk/nexent/core/tools/send_email_tool.py class SendEmailTool (line 14) | class SendEmailTool(Tool): method __init__ (line 29) | def __init__(self, smtp_server: str=Field(description="SMTP Server Add... method forward (line 45) | def forward(self, to: str, subject: str, content: str, cc: str = "", b... FILE: sdk/nexent/core/tools/tavily_search_tool.py class TavilySearchTool (line 17) | class TavilySearchTool(Tool): method __init__ (line 28) | def __init__(self, tavily_api_key:str=Field(description="Tavily API ke... method forward (line 47) | def forward(self, query: str) -> str: method _filter_images (line 110) | def _filter_images(self, images_list_url, query): FILE: sdk/nexent/core/tools/terminal_tool.py class TerminalTool (line 17) | class TerminalTool(Tool): method __init__ (line 35) | def __init__(self, method _get_session (line 72) | def _get_session(self, session_name: str) -> Dict[str, Any]: method _create_session (line 95) | def _create_session(self) -> Dict[str, Any]: method _is_session_alive (line 153) | def _is_session_alive(self, session: Dict[str, Any]) -> bool: method _cleanup_session (line 179) | def _cleanup_session(self, session: Dict[str, Any]): method _clean_output (line 193) | def _clean_output(self, raw_output: str, command: str) -> str: method _execute_command (line 247) | def _execute_command(self, channel, command: str, timeout: int = 30) -... method forward (line 294) | def forward(self, command: str, session_name: str = "default", timeout... FILE: sdk/nexent/core/utils/favicon_extractor.py function get_favicon_url (line 4) | def get_favicon_url(page_url): function check_favicon_exists (line 22) | def check_favicon_exists(url): FILE: sdk/nexent/core/utils/observer.py class ProcessType (line 8) | class ProcessType(Enum): class MessageTransformer (line 32) | class MessageTransformer: method transform (line 33) | def transform(self, **kwargs: Any) -> str: class DefaultTransformer (line 39) | class DefaultTransformer(MessageTransformer): method transform (line 40) | def transform(self, **kwargs: Any) -> str: class StepCountTransformer (line 46) | class StepCountTransformer(MessageTransformer): method transform (line 50) | def transform(self, **kwargs: Any) -> str: class ParseTransformer (line 59) | class ParseTransformer(MessageTransformer): method transform (line 64) | def transform(self, **kwargs: Any) -> str: class ExecutionLogsTransformer (line 73) | class ExecutionLogsTransformer(MessageTransformer): method transform (line 77) | def transform(self, **kwargs: Any) -> str: class FinalAnswerTransformer (line 86) | class FinalAnswerTransformer(MessageTransformer): method transform (line 87) | def transform(self, **kwargs: Any) -> str: class TokenCountTransformer (line 94) | class TokenCountTransformer(MessageTransformer): method transform (line 97) | def transform(self, **kwargs: Any) -> str: class ErrorTransformer (line 106) | class ErrorTransformer(MessageTransformer): method transform (line 110) | def transform(self, **kwargs: Any) -> str: class MessageObserver (line 119) | class MessageObserver: method __init__ (line 123) | def __init__(self, lang="zh"): method _init_message_transformers (line 148) | def _init_message_transformers(self): method add_model_new_token (line 169) | def add_model_new_token(self, new_token): method _process_normal_content (line 219) | def _process_normal_content(self, content): method flush_remaining_tokens (line 266) | def flush_remaining_tokens(self): method add_message (line 292) | def add_message(self, agent_name, process_type, content, **kwargs): method add_model_reasoning_content (line 301) | def add_model_reasoning_content(self, reasoning_content): method get_cached_message (line 309) | def get_cached_message(self): method get_final_answer (line 314) | def get_final_answer(self): class Message (line 327) | class Message: method __init__ (line 328) | def __init__(self, message_type: ProcessType, content): method to_json (line 333) | def to_json(self): FILE: sdk/nexent/core/utils/prompt_template_utils.py function get_prompt_template (line 26) | def get_prompt_template(template_type: str, language: str = LANGUAGE["ZH... FILE: sdk/nexent/core/utils/tools_common_message.py class ToolSign (line 6) | class ToolSign(Enum): class ToolCategory (line 38) | class ToolCategory(Enum): class SearchResultTextMessage (line 48) | class SearchResultTextMessage: method __init__ (line 53) | def __init__(self, title: str, url: str, text: str, published_date: Op... method to_dict (line 69) | def to_dict(self) -> Dict[str, Any]: method to_model_dict (line 76) | def to_model_dict(self) -> Dict[str, Any]: FILE: sdk/nexent/data_process/base.py class FileProcessor (line 5) | class FileProcessor(ABC): method process_file (line 7) | def process_file( FILE: sdk/nexent/data_process/core.py class DataProcessCore (line 14) | class DataProcessCore: method __init__ (line 35) | def __init__(self): method file_process (line 45) | def file_process( method _validate_parameters (line 95) | def _validate_parameters(self, chunking_strategy: str, processor: Opti... method _select_processor_by_filename (line 112) | def _select_processor_by_filename(self, filename: str) -> str: method get_supported_file_types (line 121) | def get_supported_file_types(self) -> Dict[str, List[str]]: method get_supported_strategies (line 154) | def get_supported_strategies(self) -> List[str]: method get_supported_processors (line 163) | def get_supported_processors(self) -> List[str]: method validate_file_type (line 172) | def validate_file_type(self, filename: str) -> bool: method get_processor_info (line 190) | def get_processor_info(self, filename: str) -> Dict[str, str]: FILE: sdk/nexent/data_process/openpyxl_processor.py class OpenPyxlProcessor (line 11) | class OpenPyxlProcessor(FileProcessor): method process_file (line 16) | def process_file(self, file_data: bytes, chunking_strategy: str, filen... method _process_excel (line 22) | def _process_excel( method _load_workbook (line 39) | def _load_workbook(self, file_data: bytes): method _extract_content (line 51) | def _extract_content(self, wb_original, wb_copy) -> List[str]: method _convert_to_chunks (line 70) | def _convert_to_chunks(self, raw_content: List[str], filename: str) ->... method _determine_file_type (line 87) | def _determine_file_type(self, filename: str) -> str: method _is_single_column (line 94) | def _is_single_column(self, sheet) -> bool: method _process_single_column (line 99) | def _process_single_column(self, sheet, sheet_name: str) -> List[str]: method _process_multi_column (line 111) | def _process_multi_column(self, sheet, sheet_copy, sheet_name: str) ->... method _get_title_row (line 128) | def _get_title_row(self, sheet) -> tuple: method _get_remark (line 144) | def _get_remark(self, sheet, begin_row: int) -> str: method _get_title_key (line 157) | def _get_title_key(self, begin_row: int, sheet) -> List[str]: method _extract_table_content (line 166) | def _extract_table_content( method _build_row_content (line 184) | def _build_row_content(self, title_key: List[str], row: tuple, remark:... method _merge_columns (line 205) | def _merge_columns(self, sheet): method _merge_all_cells (line 226) | def _merge_all_cells(self, sheet): method _dict_to_markdown_table (line 244) | def _dict_to_markdown_table(data: Dict[str, str]) -> str: method _join_tuple_elements (line 264) | def _join_tuple_elements(input_tuple: tuple) -> str: method _check_file_exists (line 269) | def _check_file_exists(file_path: str) -> bool: FILE: sdk/nexent/data_process/unstructured_processor.py class UnstructuredProcessor (line 8) | class UnstructuredProcessor(FileProcessor): method __init__ (line 14) | def __init__(self): method process_file (line 24) | def process_file(self, file_data: bytes, chunking_strategy: str, filen... method _process_file (line 41) | def _process_file( method _merge_params (line 75) | def _merge_params(self, user_params: Dict) -> Dict: method _prepare_partition_kwargs (line 89) | def _prepare_partition_kwargs(self, file_data: bytes, chunking_strateg... method _process_elements (line 115) | def _process_elements(self, elements: List, chunking_strategy: str, fi... method _create_single_document (line 132) | def _create_single_document(self, elements: List, filename: Optional[s... method _create_chunked_documents (line 159) | def _create_chunked_documents(self, elements: List, filename: Optional... method get_supported_formats (line 199) | def get_supported_formats(self) -> List[str]: method validate_file_format (line 208) | def validate_file_format(self, filename: str) -> bool: method get_file_info (line 224) | def get_file_info(self, file_path: str) -> Dict: FILE: sdk/nexent/datamate/datamate_client.py class DataMateClient (line 16) | class DataMateClient: method __init__ (line 27) | def __init__(self, base_url: str, timeout: float = 5.0, verify_ssl: bo... method _build_url (line 49) | def _build_url(self, path: str) -> str: method _build_headers (line 55) | def _build_headers(self, authorization: Optional[str] = None) -> Dict[... method _handle_error_response (line 70) | def _handle_error_response(self, response: httpx.Response, error_messa... method _make_request (line 89) | def _make_request( method list_knowledge_bases (line 135) | def list_knowledge_bases( method get_knowledge_base_files (line 187) | def get_knowledge_base_files( method get_knowledge_base_info (line 236) | def get_knowledge_base_info( method retrieve_knowledge_base (line 282) | def retrieve_knowledge_base( method build_file_download_url (line 349) | def build_file_download_url(self, dataset_id: str, file_id: str) -> str: method sync_all_knowledge_bases (line 364) | def sync_all_knowledge_bases( FILE: sdk/nexent/memory/embedder_adaptor.py class EmbedderAdaptor (line 7) | class EmbedderAdaptor(EmbeddingBase): method __init__ (line 12) | def __init__(self, config: Optional[Union[BaseEmbedderConfig, dict]] =... method embed (line 26) | def embed( FILE: sdk/nexent/memory/memory_core.py function _get_cache_lock (line 34) | def _get_cache_lock() -> asyncio.Lock: function _hash_config (line 51) | def _hash_config(config: Dict[str, Any]) -> str: function _validate_config (line 58) | def _validate_config(config: Dict[str, Any]) -> None: function get_memory_instance (line 93) | async def get_memory_instance(memory_config: Dict[str, Any]) -> AsyncMem... FILE: sdk/nexent/memory/memory_service.py function _filter_by_memory_level (line 25) | def _filter_by_memory_level(memory_level: str, raw_results: List[Dict[st... function add_memory (line 48) | async def add_memory( function add_memory_in_levels (line 72) | async def add_memory_in_levels( function search_memory (line 137) | async def search_memory( function search_memory_in_levels (line 174) | async def search_memory_in_levels( function list_memory (line 227) | async def list_memory( function delete_memory (line 248) | async def delete_memory(memory_id: str, memory_config: Dict[str, Any]) -... function clear_memory (line 256) | async def clear_memory( function reset_all_memory (line 284) | async def reset_all_memory(memory_config: Dict[str, Any]) -> bool: function clear_model_memories (line 295) | async def clear_model_memories( FILE: sdk/nexent/memory/memory_utils.py function build_memory_identifiers (line 4) | def build_memory_identifiers( FILE: sdk/nexent/monitor/monitoring.py function is_opentelemetry_available (line 44) | def is_opentelemetry_available() -> bool: class MonitoringConfig (line 49) | class MonitoringConfig: method __post_init__ (line 59) | def __post_init__(self): class MonitoringManager (line 69) | class MonitoringManager: method __new__ (line 75) | def __new__(cls): method __init__ (line 80) | def __init__(self): method configure (line 100) | def configure(self, config: MonitoringConfig) -> None: method _init_telemetry (line 109) | def _init_telemetry(self) -> None: method is_enabled (line 194) | def is_enabled(self) -> bool: method tracer (line 201) | def tracer(self): method setup_fastapi_app (line 205) | def setup_fastapi_app(self, app) -> bool: method trace_llm_request (line 224) | def trace_llm_request(self, operation_name: str, model_name: str, **at... method get_current_span (line 253) | def get_current_span(self) -> Optional[Any]: method add_span_event (line 259) | def add_span_event(self, name: str, attributes: Optional[Dict[str, Any... method set_span_attributes (line 268) | def set_span_attributes(self, **attributes: Any) -> None: method create_token_tracker (line 277) | def create_token_tracker(self, model_name: str, span: Optional[Any] = ... method record_llm_metrics (line 281) | def record_llm_metrics(self, metric_type: str, value: float, attribute... method monitor_endpoint (line 293) | def monitor_endpoint(self, operation_name: Optional[str] = None, inclu... method monitor_llm_call (line 372) | def monitor_llm_call(self, model_name: str, operation: str = "llm_comp... class LLMTokenTracker (line 425) | class LLMTokenTracker: method __init__ (line 428) | def __init__(self, manager: MonitoringManager, model_name: str, span: ... method record_first_token (line 438) | def record_first_token(self) -> None: method record_token (line 454) | def record_token(self, token: str) -> None: method record_completion (line 470) | def record_completion(self, input_tokens: int = 0, output_tokens: int ... function get_monitoring_manager (line 512) | def get_monitoring_manager() -> MonitoringManager: FILE: sdk/nexent/multi_modal/load_save_object.py class LoadSaveObjectManager (line 20) | class LoadSaveObjectManager: method __init__ (line 29) | def __init__(self, storage_client: Any): method _get_client (line 32) | def _get_client(self) -> Any: method download_file_from_url (line 40) | def download_file_from_url( method _upload_bytes_to_minio (line 86) | def _upload_bytes_to_minio( method load_object (line 113) | def load_object( method save_object (line 193) | def save_object( FILE: sdk/nexent/multi_modal/utils.py function is_url (line 15) | def is_url(url: str) -> Optional[UrlType]: function bytes_to_base64 (line 54) | def bytes_to_base64(bytes_data: bytes, content_type: str = "application/... function guess_content_type_from_url (line 73) | def guess_content_type_from_url(url: str) -> str: function base64_to_bytes (line 116) | def base64_to_bytes(base64_data: str) -> Tuple[bytes, str]: function generate_object_name (line 166) | def generate_object_name(file_extension: str = "") -> str: function detect_content_type_from_bytes (line 185) | def detect_content_type_from_bytes(bytes_data: bytes) -> str: function guess_extension_from_content_type (line 286) | def guess_extension_from_content_type(content_type: str) -> str: function parse_s3_url (line 318) | def parse_s3_url(s3_url: str) -> Tuple[str, str]: FILE: sdk/nexent/storage/minio.py class MinIOStorageClient (line 20) | class MinIOStorageClient(StorageClient): method __init__ (line 27) | def __init__( method _ensure_bucket_exists (line 75) | def _ensure_bucket_exists(self, bucket_name: str) -> None: method upload_file (line 105) | def upload_file( method upload_fileobj (line 138) | def upload_fileobj( method download_file (line 168) | def download_file( method get_file_url (line 196) | def get_file_url( method get_file_stream (line 228) | def get_file_stream( method get_file_size (line 268) | def get_file_size( method list_files (line 300) | def list_files( method delete_file (line 338) | def delete_file( method exists (line 374) | def exists( method copy_file (line 399) | def copy_file( FILE: sdk/nexent/storage/minio_config.py class MinIOStorageConfig (line 12) | class MinIOStorageConfig(StorageConfig): method __init__ (line 15) | def __init__( method storage_type (line 43) | def storage_type(self) -> StorageType: method endpoint (line 48) | def endpoint(self) -> str: method access_key (line 53) | def access_key(self) -> str: method secret_key (line 58) | def secret_key(self) -> str: method region (line 63) | def region(self) -> Optional[str]: method default_bucket (line 68) | def default_bucket(self) -> Optional[str]: method secure (line 73) | def secure(self) -> bool: method validate (line 77) | def validate(self) -> None: FILE: sdk/nexent/storage/storage_client_base.py class StorageType (line 12) | class StorageType(Enum): class StorageConfig (line 21) | class StorageConfig(ABC): method storage_type (line 26) | def storage_type(self) -> StorageType: method validate (line 31) | def validate(self) -> None: class StorageClient (line 41) | class StorageClient(ABC): method upload_file (line 50) | def upload_file( method upload_fileobj (line 70) | def upload_fileobj( method download_file (line 90) | def download_file( method get_file_url (line 110) | def get_file_url( method get_file_stream (line 130) | def get_file_stream( method get_file_size (line 148) | def get_file_size( method list_files (line 166) | def list_files( method delete_file (line 185) | def delete_file( method exists (line 203) | def exists( method copy_file (line 221) | def copy_file( FILE: sdk/nexent/storage/storage_client_factory.py function create_storage_client_from_config (line 12) | def create_storage_client_from_config(config: StorageConfig) -> StorageC... FILE: sdk/nexent/utils/http_client_manager.py class ClientConfig (line 50) | class ClientConfig: class HttpClientManager (line 61) | class HttpClientManager: method __new__ (line 79) | def __new__(cls) -> 'HttpClientManager': method __init__ (line 88) | def __init__(self): method __enter__ (line 100) | def __enter__(self) -> 'HttpClientManager': method __exit__ (line 115) | def __exit__(self, exc_type, exc_val, exc_tb) -> None: method _get_client_key (line 130) | def _get_client_key(self, base_url: str, timeout: float, verify_ssl: b... method get_sync_client (line 139) | def get_sync_client(self, base_url: str, timeout: float = 30.0, method get_async_client (line 178) | def get_async_client(self, base_url: str, timeout: float = 30.0, method get_client_config (line 217) | def get_client_config(self, base_url: str, timeout: float = 30.0, method close_client (line 223) | def close_client(self, base_url: str, timeout: float = 30.0, method close_async_client (line 250) | async def close_async_client(self, base_url: str, timeout: float = 30.0, method shutdown (line 277) | def shutdown(self) -> None: method shutdown_async (line 309) | async def shutdown_async(self) -> None: method get_stats (line 343) | def get_stats(self) -> Dict[str, Any]: FILE: sdk/nexent/vector_database/base.py class VectorDatabaseCore (line 7) | class VectorDatabaseCore(ABC): method create_index (line 20) | def create_index(self, index_name: str, embedding_dim: Optional[int] =... method delete_index (line 34) | def delete_index(self, index_name: str) -> bool: method get_user_indices (line 47) | def get_user_indices(self, index_pattern: str = "*") -> List[str]: method check_index_exists (line 60) | def check_index_exists(self, index_name: str) -> bool: method vectorize_documents (line 75) | def vectorize_documents( method delete_documents (line 101) | def delete_documents(self, index_name: str, path_or_url: str) -> int: method get_index_chunks (line 115) | def get_index_chunks( method create_chunk (line 137) | def create_chunk(self, index_name: str, chunk: Dict[str, Any]) -> Dict... method update_chunk (line 151) | def update_chunk(self, index_name: str, chunk_id: str, chunk_updates: ... method delete_chunk (line 166) | def delete_chunk(self, index_name: str, chunk_id: str) -> bool: method count_documents (line 180) | def count_documents(self, index_name: str) -> int: method search (line 193) | def search(self, index_name: str, query: Dict[str, Any]) -> Dict[str, ... method multi_search (line 207) | def multi_search(self, body: List[Dict[str, Any]], index_name: str) ->... method accurate_search (line 223) | def accurate_search(self, index_names: List[str], query_text: str, top... method semantic_search (line 238) | def semantic_search( method hybrid_search (line 256) | def hybrid_search( method get_documents_detail (line 283) | def get_documents_detail(self, index_name: str) -> List[Dict[str, Any]]: method get_indices_detail (line 300) | def get_indices_detail( FILE: sdk/nexent/vector_database/datamate_core.py function _parse_timestamp (line 18) | def _parse_timestamp(timestamp: Any, default: int = 0) -> int: class DataMateCore (line 56) | class DataMateCore(VectorDatabaseCore): method __init__ (line 59) | def __init__(self, base_url: str, timeout: float = 5.0, verify_ssl: bo... method create_index (line 64) | def create_index(self, index_name: str, embedding_dim: Optional[int] =... method delete_index (line 70) | def delete_index(self, index_name: str) -> bool: method get_user_indices (line 75) | def get_user_indices(self, index_pattern: str = "*") -> List[str]: method check_index_exists (line 81) | def check_index_exists(self, index_name: str) -> bool: method vectorize_documents (line 86) | def vectorize_documents( method delete_documents (line 108) | def delete_documents(self, index_name: str, path_or_url: str) -> int: method get_index_chunks (line 113) | def get_index_chunks( method create_chunk (line 129) | def create_chunk(self, index_name: str, chunk: Dict[str, Any]) -> Dict... method update_chunk (line 134) | def update_chunk(self, index_name: str, chunk_id: str, chunk_updates: ... method delete_chunk (line 139) | def delete_chunk(self, index_name: str, chunk_id: str) -> bool: method count_documents (line 144) | def count_documents(self, index_name: str) -> int: method search (line 149) | def search(self, index_name: str, query: Dict[str, Any]) -> Dict[str, ... method multi_search (line 154) | def multi_search(self, body: List[Dict[str, Any]], index_name: str) ->... method accurate_search (line 159) | def accurate_search(self, index_names: List[str], query_text: str, top... method semantic_search (line 164) | def semantic_search( method hybrid_search (line 172) | def hybrid_search( method get_documents_detail (line 202) | def get_documents_detail(self, index_name: str) -> List[Dict[str, Any]]: method get_indices_detail (line 223) | def get_indices_detail(self, index_names: List[str], embedding_dim: Op... FILE: sdk/nexent/vector_database/elasticsearch_core.py class BulkOperation (line 22) | class BulkOperation: class ElasticSearchCore (line 35) | class ElasticSearchCore(VectorDatabaseCore): method __init__ (line 47) | def __init__( method create_index (line 92) | def create_index(self, index_name: str, embedding_dim: Optional[int] =... method _force_refresh_with_retry (line 177) | def _force_refresh_with_retry(self, index_name: str, max_retries: int ... method _ensure_index_ready (line 193) | def _ensure_index_ready(self, index_name: str, timeout: int = 10) -> b... method bulk_operation_context (line 219) | def bulk_operation_context(self, index_name: str, estimated_duration: ... method _apply_bulk_settings (line 257) | def _apply_bulk_settings(self, index_name: str): method _restore_normal_settings (line 269) | def _restore_normal_settings(self, index_name: str): method delete_index (line 282) | def delete_index(self, index_name: str) -> bool: method get_user_indices (line 303) | def get_user_indices(self, index_pattern: str = "*") -> List[str]: method check_index_exists (line 321) | def check_index_exists(self, index_name: str) -> bool: method vectorize_documents (line 335) | def vectorize_documents( method _small_batch_insert (line 390) | def _small_batch_insert( method _large_batch_insert (line 439) | def _large_batch_insert( method _preprocess_documents (line 562) | def _preprocess_documents(self, documents: List[Dict[str, Any]], conte... method _handle_bulk_errors (line 597) | def _handle_bulk_errors(self, response: Dict[str, Any]) -> None: method delete_documents (line 640) | def delete_documents(self, index_name: str, path_or_url: str) -> int: method count_documents (line 664) | def count_documents(self, index_name: str) -> int: method get_index_chunks (line 681) | def get_index_chunks( method create_chunk (line 802) | def create_chunk(self, index_name: str, chunk: Dict[str, Any]) -> Dict... method update_chunk (line 829) | def update_chunk(self, index_name: str, chunk_id: str, chunk_updates: ... method delete_chunk (line 860) | def delete_chunk(self, index_name: str, chunk_id: str) -> bool: method search (line 890) | def search(self, index_name: str, query: Dict[str, Any]) -> Dict[str, ... method multi_search (line 903) | def multi_search(self, body: List[Dict[str, Any]], index_name: str) ->... method accurate_search (line 918) | def accurate_search(self, index_names: List[str], query_text: str, top... method exec_query (line 946) | def exec_query(self, index_pattern, search_query): method semantic_search (line 960) | def semantic_search( method hybrid_search (line 998) | def hybrid_search( method get_documents_detail (line 1178) | def get_documents_detail(self, index_name: str) -> List[Dict[str, Any]]: method get_indices_detail (line 1225) | def get_indices_detail( method _resolve_chunk_document_id (line 1292) | def _resolve_chunk_document_id(self, index_name: str, chunk_id: str) -... FILE: sdk/nexent/vector_database/utils.py function format_size (line 3) | def format_size(size_in_bytes): function format_timestamp (line 11) | def format_timestamp(timestamp_ms): function build_weighted_query (line 16) | def build_weighted_query(text, term_weights, field_weights=None, boost_f... FILE: test/backend/agents/test_agent_run_manager.py class TestAgentRunManager (line 7) | class TestAgentRunManager: method setup_method (line 8) | def setup_method(self): method test_singleton_pattern (line 15) | def test_singleton_pattern(self): method test_get_run_key (line 21) | def test_get_run_key(self): method test_register_agent_run (line 34) | def test_register_agent_run(self): method test_register_agent_run_multiple_users (line 47) | def test_register_agent_run_multiple_users(self): method test_register_agent_run_same_user_different_conversations (line 67) | def test_register_agent_run_same_user_different_conversations(self): method test_unregister_agent_run (line 87) | def test_unregister_agent_run(self): method test_unregister_agent_run_nonexistent (line 102) | def test_unregister_agent_run_nonexistent(self): method test_get_agent_run_info (line 108) | def test_get_agent_run_info(self): method test_get_agent_run_info_wrong_user (line 124) | def test_get_agent_run_info_wrong_user(self): method test_stop_agent_run (line 138) | def test_stop_agent_run(self): method test_stop_agent_run_nonexistent (line 155) | def test_stop_agent_run_nonexistent(self): method test_stop_agent_run_wrong_user (line 160) | def test_stop_agent_run_wrong_user(self): method test_thread_safety (line 174) | def test_thread_safety(self): method test_debug_mode_same_conversation_id (line 207) | def test_debug_mode_same_conversation_id(self): method test_global_instance (line 243) | def test_global_instance(self): method test_key_generation_edge_cases (line 263) | def test_key_generation_edge_cases(self): method test_concurrent_registration_same_key (line 281) | def test_concurrent_registration_same_key(self): FILE: test/backend/agents/test_create_agent_info.py function _create_stub_module (line 21) | def _create_stub_module(name: str, **attrs): class TestDiscoverLangchainTools (line 189) | class TestDiscoverLangchainTools: method test_discover_langchain_tools_success (line 193) | async def test_discover_langchain_tools_success(self): method test_discover_langchain_tools_empty (line 230) | async def test_discover_langchain_tools_empty(self): method test_discover_langchain_tools_module_exception (line 244) | async def test_discover_langchain_tools_module_exception(self): method test_discover_langchain_tools_processing_exception (line 260) | async def test_discover_langchain_tools_processing_exception(self): class TestCreateToolConfigList (line 291) | class TestCreateToolConfigList: method test_create_tool_config_list_basic (line 295) | async def test_create_tool_config_list_basic(self): method test_create_tool_config_list_with_knowledge_base_tool (line 332) | async def test_create_tool_config_list_with_knowledge_base_tool(self): method test_create_tool_config_list_with_analyze_image_tool (line 367) | async def test_create_tool_config_list_with_analyze_image_tool(self): method test_create_tool_config_list_with_analyze_text_file_tool (line 403) | async def test_create_tool_config_list_with_analyze_text_file_tool(self): method test_create_tool_config_list_with_knowledge_base_tool_metadata (line 440) | async def test_create_tool_config_list_with_knowledge_base_tool_metada... method test_create_tool_config_list_with_knowledge_base_tool_multiple_tools (line 493) | async def test_create_tool_config_list_with_knowledge_base_tool_multip... method test_create_tool_config_list_with_knowledge_base_tool_mixed_sources (line 553) | async def test_create_tool_config_list_with_knowledge_base_tool_mixed_... method test_create_tool_config_list_with_datamate_tool (line 594) | async def test_create_tool_config_list_with_datamate_tool(self): method test_create_tool_config_list_empty_list (line 630) | async def test_create_tool_config_list_empty_list(self): method test_create_tool_config_list_with_langchain_tool_metadata (line 644) | async def test_create_tool_config_list_with_langchain_tool_metadata(se... method test_create_tool_config_list_multiple_tools_same_type (line 682) | async def test_create_tool_config_list_multiple_tools_same_type(self): class TestCreateAgentConfig (line 737) | class TestCreateAgentConfig: method test_create_agent_config_basic (line 741) | async def test_create_agent_config_basic(self): method test_create_agent_config_with_sub_agents (line 796) | async def test_create_agent_config_with_sub_agents(self): method test_create_agent_config_with_memory (line 862) | async def test_create_agent_config_with_memory(self): method test_create_agent_config_memory_disabled_no_search (line 924) | async def test_create_agent_config_memory_disabled_no_search(self): method test_create_agent_config_model_id_none (line 1006) | async def test_create_agent_config_model_id_none(self): method test_create_agent_config_memory_exception (line 1061) | async def test_create_agent_config_memory_exception(self): method test_create_agent_config_with_knowledge_base_summary_filtering (line 1141) | async def test_create_agent_config_with_knowledge_base_summary_filteri... method test_create_agent_config_knowledge_base_summary_no_indexes_message (line 1244) | async def test_create_agent_config_knowledge_base_summary_no_indexes_m... method test_create_agent_config_knowledge_base_summary_error (line 1314) | async def test_create_agent_config_knowledge_base_summary_error(self): class TestCreateModelConfigList (line 1366) | class TestCreateModelConfigList: method test_create_model_config_list (line 1370) | async def test_create_model_config_list(self): method test_create_model_config_list_empty_database (line 1452) | async def test_create_model_config_list_empty_database(self): method test_create_model_config_list_no_model_name_in_config (line 1487) | async def test_create_model_config_list_no_model_name_in_config(self): class TestFilterMcpServersAndTools (line 1521) | class TestFilterMcpServersAndTools: method test_filter_mcp_servers_with_mcp_tools (line 1524) | def test_filter_mcp_servers_with_mcp_tools(self): method test_filter_mcp_servers_no_mcp_tools (line 1547) | def test_filter_mcp_servers_no_mcp_tools(self): method test_filter_mcp_servers_with_sub_agents (line 1563) | def test_filter_mcp_servers_with_sub_agents(self): method test_filter_mcp_servers_unknown_server (line 1599) | def test_filter_mcp_servers_unknown_server(self): class TestCreateAgentRunInfo (line 1621) | class TestCreateAgentRunInfo: method test_create_agent_run_info_success (line 1625) | async def test_create_agent_run_info_success(self): method test_create_agent_run_info_with_authorization_token (line 1709) | async def test_create_agent_run_info_with_authorization_token(self): method test_create_agent_run_info_with_sse_transport (line 1759) | async def test_create_agent_run_info_with_sse_transport(self): method test_create_agent_run_info_fallback_to_string_format (line 1808) | async def test_create_agent_run_info_fallback_to_string_format(self): method test_create_agent_run_info_mixed_scenarios (line 1849) | async def test_create_agent_run_info_mixed_scenarios(self): method test_create_agent_run_info_with_status_false (line 1924) | async def test_create_agent_run_info_with_status_false(self): method test_create_agent_run_info_forwards_allow_memory_false (line 1971) | async def test_create_agent_run_info_forwards_allow_memory_false(self): method test_create_agent_run_info_is_debug_true (line 2024) | async def test_create_agent_run_info_is_debug_true(self): method test_create_agent_run_info_no_published_version_fallback (line 2070) | async def test_create_agent_run_info_no_published_version_fallback(self): method test_create_agent_run_info_is_need_auth_true_includes_token (line 2124) | async def test_create_agent_run_info_is_need_auth_true_includes_token(... class TestJoinMinioFileDescriptionToQuery (line 2171) | class TestJoinMinioFileDescriptionToQuery: method test_join_minio_file_description_to_query_with_files (line 2175) | async def test_join_minio_file_description_to_query_with_files(self): method test_join_minio_file_description_to_query_no_files (line 2190) | async def test_join_minio_file_description_to_query_no_files(self): method test_join_minio_file_description_to_query_none_files (line 2200) | async def test_join_minio_file_description_to_query_none_files(self): method test_join_minio_file_description_to_query_no_descriptions (line 2210) | async def test_join_minio_file_description_to_query_no_descriptions(se... class TestPreparePromptTemplates (line 2223) | class TestPreparePromptTemplates: method test_prepare_prompt_templates_manager_zh (line 2227) | async def test_prepare_prompt_templates_manager_zh(self): method test_prepare_prompt_templates_worker_en (line 2240) | async def test_prepare_prompt_templates_worker_en(self): FILE: test/backend/agents/test_preprocess_manager.py class TestPreprocessManager (line 7) | class TestPreprocessManager: method setup_method (line 8) | def setup_method(self): method test_singleton_pattern (line 15) | def test_singleton_pattern(self): method test_register_preprocess_task (line 21) | def test_register_preprocess_task(self): method test_unregister_preprocess_task (line 39) | def test_unregister_preprocess_task(self): method test_stop_preprocess_tasks (line 54) | def test_stop_preprocess_tasks(self): method test_stop_preprocess_tasks_nonexistent (line 73) | def test_stop_preprocess_tasks_nonexistent(self): method test_is_preprocess_running (line 78) | def test_is_preprocess_running(self): method test_get_preprocess_status (line 95) | def test_get_preprocess_status(self): method test_multiple_conversations (line 114) | def test_multiple_conversations(self): class TestPreprocessTask (line 146) | class TestPreprocessTask: method test_preprocess_task_creation (line 147) | def test_preprocess_task_creation(self): method test_stop_event (line 160) | def test_stop_event(self): FILE: test/backend/app/test_agent_app.py class ToolConfig (line 60) | class ToolConfig: # minimal stub for type reference function pass_through_decorator (line 73) | def pass_through_decorator(*args, **kwargs): function stop_patches (line 139) | def stop_patches(): function mock_auth_header (line 157) | def mock_auth_header(): function mock_conversation_id (line 162) | def mock_conversation_id(): function test_agent_run_api (line 167) | async def test_agent_run_api(mocker, mock_auth_header): function test_agent_stop_api_success (line 203) | def test_agent_stop_api_success(mocker, mock_conversation_id): function test_agent_stop_api_not_found (line 224) | def test_agent_stop_api_not_found(mocker, mock_conversation_id): function test_search_agent_info_api_success (line 247) | def test_search_agent_info_api_success(mocker, mock_auth_header): function test_search_agent_info_api_with_explicit_tenant_id (line 272) | def test_search_agent_info_api_with_explicit_tenant_id(mocker, mock_auth... function test_search_agent_info_api_exception (line 305) | def test_search_agent_info_api_exception(mocker, mock_auth_header): function test_search_agent_info_api_exception_with_explicit_tenant_id (line 328) | def test_search_agent_info_api_exception_with_explicit_tenant_id(mocker,... function test_search_agent_info_api_with_version_no (line 355) | def test_search_agent_info_api_with_version_no(mocker, mock_auth_header): function test_search_agent_info_api_with_version_no_and_tenant_id (line 380) | def test_search_agent_info_api_with_version_no_and_tenant_id(mocker, moc... function test_search_agent_info_api_exception_with_version_no (line 412) | def test_search_agent_info_api_exception_with_version_no(mocker, mock_au... function test_get_creating_sub_agent_info_api_success (line 435) | def test_get_creating_sub_agent_info_api_success(mocker, mock_auth_header): function test_get_creating_sub_agent_info_api_exception (line 454) | def test_get_creating_sub_agent_info_api_exception(mocker, mock_auth_hea... function test_update_agent_info_api_success (line 471) | def test_update_agent_info_api_success(mocker, mock_auth_header): function test_update_agent_info_api_exception (line 491) | def test_update_agent_info_api_exception(mocker, mock_auth_header): function test_delete_agent_api_success (line 510) | def test_delete_agent_api_success(mocker, mock_auth_header): function test_delete_agent_api_with_explicit_tenant_id (line 536) | def test_delete_agent_api_with_explicit_tenant_id(mocker, mock_auth_head... function test_delete_agent_api_exception (line 564) | def test_delete_agent_api_exception(mocker, mock_auth_header): function test_delete_agent_api_exception_with_explicit_tenant_id (line 592) | def test_delete_agent_api_exception_with_explicit_tenant_id(mocker, mock... function test_export_agent_api_success (line 624) | async def test_export_agent_api_success(mocker, mock_auth_header): function test_export_agent_api_exception (line 646) | async def test_export_agent_api_exception(mocker, mock_auth_header): function test_import_agent_api_success (line 664) | def test_import_agent_api_success(mocker, mock_auth_header): function test_import_agent_api_exception (line 708) | def test_import_agent_api_exception(mocker, mock_auth_header): function test_list_all_agent_info_api_success (line 748) | def test_list_all_agent_info_api_success(mocker, mock_auth_header): function test_list_all_agent_info_api_with_explicit_tenant_id (line 801) | def test_list_all_agent_info_api_with_explicit_tenant_id(mocker, mock_au... function test_list_all_agent_info_api_exception (line 841) | def test_list_all_agent_info_api_exception(mocker, mock_auth_header): function test_list_all_agent_info_api_exception_with_explicit_tenant_id (line 864) | def test_list_all_agent_info_api_exception_with_explicit_tenant_id(mocke... function test_export_agent_api_detailed (line 891) | async def test_export_agent_api_detailed(mocker, mock_auth_header): function test_export_agent_api_empty_response (line 928) | async def test_export_agent_api_empty_response(mocker, mock_auth_header): function _alias_services_for_tests (line 956) | def _alias_services_for_tests(): function test_get_agent_call_relationship_api_success (line 973) | def test_get_agent_call_relationship_api_success(mocker, mock_auth_header): function test_get_agent_call_relationship_api_exception (line 995) | def test_get_agent_call_relationship_api_exception(mocker, mock_auth_hea... function test_check_agent_name_batch_api_success (line 1009) | def test_check_agent_name_batch_api_success(mocker, mock_auth_header): function test_check_agent_name_batch_api_bad_request (line 1031) | def test_check_agent_name_batch_api_bad_request(mocker, mock_auth_header): function test_check_agent_name_batch_api_error (line 1048) | def test_check_agent_name_batch_api_error(mocker, mock_auth_header): function test_regenerate_agent_name_batch_api_success (line 1065) | def test_regenerate_agent_name_batch_api_success(mocker, mock_auth_header): function test_regenerate_agent_name_batch_api_bad_request (line 1092) | def test_regenerate_agent_name_batch_api_bad_request(mocker, mock_auth_h... function test_regenerate_agent_name_batch_api_error (line 1109) | def test_regenerate_agent_name_batch_api_error(mocker, mock_auth_header): function test_clear_agent_new_mark_api_success (line 1126) | def test_clear_agent_new_mark_api_success(mocker, mock_auth_header): function test_clear_agent_new_mark_api_exception (line 1164) | def test_clear_agent_new_mark_api_exception(mocker, mock_auth_header): function test_publish_version_api_success (line 1208) | def test_publish_version_api_success(mocker, mock_auth_header): function test_publish_version_api_bad_request (line 1242) | def test_publish_version_api_bad_request(mocker, mock_auth_header): function test_publish_version_api_exception (line 1263) | def test_publish_version_api_exception(mocker, mock_auth_header): function test_compare_versions_api_success (line 1284) | def test_compare_versions_api_success(mocker, mock_auth_header): function test_compare_versions_api_bad_request (line 1320) | def test_compare_versions_api_bad_request(mocker, mock_auth_header): function test_compare_versions_api_exception (line 1341) | def test_compare_versions_api_exception(mocker, mock_auth_header): function test_get_version_list_api_success (line 1362) | def test_get_version_list_api_success(mocker, mock_auth_header): function test_get_version_list_api_with_explicit_tenant_id (line 1389) | def test_get_version_list_api_with_explicit_tenant_id(mocker, mock_auth_... function test_get_version_list_api_exception (line 1418) | def test_get_version_list_api_exception(mocker, mock_auth_header): function test_get_version_list_api_exception_with_explicit_tenant_id (line 1440) | def test_get_version_list_api_exception_with_explicit_tenant_id(mocker, ... function test_get_version_api_success (line 1465) | def test_get_version_api_success(mocker, mock_auth_header): function test_get_version_api_not_found (line 1493) | def test_get_version_api_not_found(mocker, mock_auth_header): function test_get_version_api_exception (line 1510) | def test_get_version_api_exception(mocker, mock_auth_header): function test_get_version_detail_api_success (line 1527) | def test_get_version_detail_api_success(mocker, mock_auth_header): function test_get_version_detail_api_not_found (line 1558) | def test_get_version_detail_api_not_found(mocker, mock_auth_header): function test_get_version_detail_api_exception (line 1575) | def test_get_version_detail_api_exception(mocker, mock_auth_header): function test_rollback_version_api_success (line 1592) | def test_rollback_version_api_success(mocker, mock_auth_header): function test_rollback_version_api_bad_request (line 1619) | def test_rollback_version_api_bad_request(mocker, mock_auth_header): function test_rollback_version_api_exception (line 1636) | def test_rollback_version_api_exception(mocker, mock_auth_header): function test_update_version_status_api_success (line 1653) | def test_update_version_status_api_success(mocker, mock_auth_header): function test_update_version_status_api_bad_request (line 1682) | def test_update_version_status_api_bad_request(mocker, mock_auth_header): function test_update_version_status_api_exception (line 1700) | def test_update_version_status_api_exception(mocker, mock_auth_header): function test_update_version_api_success (line 1718) | def test_update_version_api_success(mocker, mock_auth_header): function test_update_version_api_bad_request (line 1747) | def test_update_version_api_bad_request(mocker, mock_auth_header): function test_update_version_api_exception (line 1765) | def test_update_version_api_exception(mocker, mock_auth_header): function test_delete_version_api_success (line 1783) | def test_delete_version_api_success(mocker, mock_auth_header): function test_delete_version_api_bad_request (line 1810) | def test_delete_version_api_bad_request(mocker, mock_auth_header): function test_delete_version_api_exception (line 1827) | def test_delete_version_api_exception(mocker, mock_auth_header): function test_get_current_version_api_success (line 1844) | def test_get_current_version_api_success(mocker, mock_auth_header): function test_get_current_version_api_not_found (line 1870) | def test_get_current_version_api_not_found(mocker, mock_auth_header): function test_get_current_version_api_exception (line 1887) | def test_get_current_version_api_exception(mocker, mock_auth_header): function test_list_published_agents_api_success (line 1904) | def test_list_published_agents_api_success(mocker, mock_auth_header): function test_list_published_agents_api_exception (line 1941) | def test_list_published_agents_api_exception(mocker, mock_auth_header): FILE: test/backend/app/test_app_factory.py class TestCreateApp (line 23) | class TestCreateApp: method test_create_app_default_parameters (line 26) | def test_create_app_default_parameters(self): method test_create_app_custom_title (line 36) | def test_create_app_custom_title(self): method test_create_app_custom_description (line 42) | def test_create_app_custom_description(self): method test_create_app_custom_version (line 48) | def test_create_app_custom_version(self): method test_create_app_custom_root_path (line 54) | def test_create_app_custom_root_path(self): method test_create_app_custom_cors_origins (line 60) | def test_create_app_custom_cors_origins(self): method test_create_app_custom_cors_methods (line 67) | def test_create_app_custom_cors_methods(self): method test_create_app_with_monitoring_disabled (line 74) | def test_create_app_with_monitoring_disabled(self): method test_create_app_with_monitoring_enabled (line 81) | def test_create_app_with_monitoring_enabled(self): method test_create_app_all_parameters (line 88) | def test_create_app_all_parameters(self): class TestRegisterExceptionHandlers (line 106) | class TestRegisterExceptionHandlers: method test_register_exception_handlers_basic (line 109) | def test_register_exception_handlers_basic(self): method test_http_exception_handler (line 116) | def test_http_exception_handler(self): method test_http_exception_handler_400 (line 131) | def test_http_exception_handler_400(self): method test_http_exception_handler_500 (line 146) | def test_http_exception_handler_500(self): method test_app_exception_handler (line 162) | def test_app_exception_handler(self): method test_app_exception_handler_with_details (line 180) | def test_app_exception_handler_with_details(self): method test_app_exception_handler_unauthorized (line 202) | def test_app_exception_handler_unauthorized(self): method test_app_exception_handler_forbidden (line 217) | def test_app_exception_handler_forbidden(self): method test_app_exception_handler_rate_limit (line 231) | def test_app_exception_handler_rate_limit(self): method test_generic_exception_handler (line 246) | def test_generic_exception_handler(self): method test_generic_exception_handler_value_error (line 262) | def test_generic_exception_handler_value_error(self): method test_app_exception_takes_precedence_in_generic_handler (line 276) | def test_app_exception_takes_precedence_in_generic_handler(self): class TestExceptionMappingToHttpStatus (line 297) | class TestExceptionMappingToHttpStatus: method test_validation_error_maps_to_400 (line 300) | def test_validation_error_maps_to_400(self): method test_parameter_invalid_maps_to_400 (line 315) | def test_parameter_invalid_maps_to_400(self): method test_missing_required_field_maps_to_400 (line 330) | def test_missing_required_field_maps_to_400(self): method test_file_too_large_maps_to_413 (line 345) | def test_file_too_large_maps_to_413(self): class TestMonitoringIntegration (line 360) | class TestMonitoringIntegration: method test_monitoring_enabled_does_not_raise (line 363) | def test_monitoring_enabled_does_not_raise(self): method test_monitoring_disabled_does_not_raise (line 372) | def test_monitoring_disabled_does_not_raise(self): method test_monitoring_with_actual_module (line 379) | def test_monitoring_with_actual_module(self): class TestCORSConfiguration (line 391) | class TestCORSConfiguration: method test_cors_middleware_added_with_default_origins (line 394) | def test_cors_middleware_added_with_default_origins(self): method test_cors_middleware_added_with_custom_origins (line 403) | def test_cors_middleware_added_with_custom_origins(self): method test_cors_middleware_with_credentials (line 410) | def test_cors_middleware_with_credentials(self): class TestAppExceptionResponseFormat (line 418) | class TestAppExceptionResponseFormat: method test_response_contains_code_field (line 421) | def test_response_contains_code_field(self): method test_response_contains_message_field (line 436) | def test_response_contains_message_field(self): method test_response_details_is_none_when_not_provided (line 451) | def test_response_details_is_none_when_not_provided(self): class TestMultipleExceptionHandlers (line 468) | class TestMultipleExceptionHandlers: method test_multiple_routes_with_different_exceptions (line 471) | def test_multiple_routes_with_different_exceptions(self): class TestMonitoringImportFailure (line 495) | class TestMonitoringImportFailure: method test_create_app_monitoring_import_failure_logs_warning (line 501) | def test_create_app_monitoring_import_failure_logs_warning(self): method test_create_app_monitoring_disabled_no_warning (line 520) | def test_create_app_monitoring_disabled_no_warning(self): method test_create_app_monitoring_import_error_specific_exception (line 532) | def test_create_app_monitoring_import_error_specific_exception(self): class TestGenericExceptionHandlerAppExceptionCheck (line 555) | class TestGenericExceptionHandlerAppExceptionCheck: method test_generic_handler_does_not_catch_app_exception_with_different_codes (line 562) | def test_generic_handler_does_not_catch_app_exception_with_different_c... method test_generic_handler_does_catch_non_app_exception (line 593) | def test_generic_handler_does_catch_non_app_exception(self): method test_generic_handler_does_catch_value_error (line 610) | def test_generic_handler_does_catch_value_error(self): method test_generic_handler_does_catch_type_error (line 627) | def test_generic_handler_does_catch_type_error(self): method test_app_exception_with_custom_http_status (line 642) | def test_app_exception_with_custom_http_status(self): method test_both_exception_handlers_registered (line 661) | def test_both_exception_handlers_registered(self): method test_app_exception_not_duplicated_in_generic_handler_logs (line 673) | def test_app_exception_not_duplicated_in_generic_handler_logs(self): FILE: test/backend/app/test_config_app.py function stop_patches (line 84) | def stop_patches(): class TestBaseApp (line 92) | class TestBaseApp(unittest.TestCase): method setUp (line 93) | def setUp(self): method test_app_initialization (line 96) | def test_app_initialization(self): method test_cors_middleware (line 100) | def test_cors_middleware(self): method test_routers_included (line 117) | def test_routers_included(self): method test_exception_handling_with_client (line 125) | def test_exception_handling_with_client(self): method test_speed_mode_logic (line 132) | def test_speed_mode_logic(self): method test_monitoring_setup (line 147) | def test_monitoring_setup(self, mock_setup): method test_all_routers_included (line 160) | def test_all_routers_included(self): method test_idata_router_included (line 194) | def test_idata_router_included(self): FILE: test/backend/app/test_config_sync_app.py function config_mocks (line 46) | def config_mocks(): function test_load_config_success (line 64) | async def test_load_config_success(config_mocks): function test_load_config_chinese_language (line 99) | async def test_load_config_chinese_language(config_mocks): function test_load_config_with_error (line 133) | async def test_load_config_with_error(config_mocks): function test_save_config_success (line 153) | async def test_save_config_success(config_mocks): function test_save_config_with_error (line 188) | async def test_save_config_with_error(config_mocks): function test_load_config_missing_language (line 209) | async def test_load_config_missing_language(config_mocks): function test_save_config_empty_auth_header (line 243) | async def test_save_config_empty_auth_header(config_mocks): function test_load_config_empty_auth_header (line 265) | async def test_load_config_empty_auth_header(config_mocks): FILE: test/backend/app/test_conversation_management_app.py function conversation_mocks (line 53) | def conversation_mocks(): function test_create_new_conversation_success (line 89) | async def test_create_new_conversation_success(conversation_mocks): function test_create_new_conversation_failure (line 123) | async def test_create_new_conversation_failure(conversation_mocks): function test_list_conversations_success (line 146) | async def test_list_conversations_success(conversation_mocks): function test_list_conversations_unauthorized (line 172) | async def test_list_conversations_unauthorized(conversation_mocks): function test_rename_conversation_success (line 187) | async def test_rename_conversation_success(conversation_mocks): function test_rename_conversation_failure (line 222) | async def test_rename_conversation_failure(conversation_mocks): function test_delete_conversation_success (line 257) | async def test_delete_conversation_success(conversation_mocks): function test_delete_conversation_failure (line 272) | async def test_delete_conversation_failure(conversation_mocks): function test_get_history_success (line 292) | async def test_get_history_success(conversation_mocks): function test_get_history_failure (line 312) | async def test_get_history_failure(conversation_mocks): function test_get_sources_success (line 331) | async def test_get_sources_success(conversation_mocks): function test_get_sources_failure (line 348) | async def test_get_sources_failure(conversation_mocks): function test_generate_title_success (line 367) | async def test_generate_title_success(conversation_mocks): function test_generate_title_failure (line 392) | async def test_generate_title_failure(conversation_mocks): function test_update_opinion_success (line 412) | async def test_update_opinion_success(conversation_mocks): function test_update_opinion_failure (line 425) | async def test_update_opinion_failure(conversation_mocks): function test_get_message_id_success (line 444) | async def test_get_message_id_success(conversation_mocks): function test_get_message_id_failure (line 459) | async def test_get_message_id_failure(conversation_mocks): FILE: test/backend/app/test_data_process_app.py class _OfficeConversionException (line 16) | class _OfficeConversionException(Exception): class _TaskRequest (line 24) | class _TaskRequest(BaseModel): class _BatchTaskRequest (line 34) | class _BatchTaskRequest(BaseModel): class _ConvertStateRequest (line 38) | class _ConvertStateRequest(BaseModel): class _DummyResult (line 43) | class _DummyResult: method __init__ (line 44) | def __init__(self, id_: str, payload: Optional[Dict[str, Any]] = None,... method get (line 49) | def get(self, timeout: Optional[int] = None): class _TasksStub (line 55) | class _TasksStub: method __init__ (line 56) | def __init__(self): method process_and_forward_delay (line 69) | def process_and_forward_delay(self, **kwargs): method process_sync_apply_async (line 72) | def process_sync_apply_async(self, **kwargs): class _ServiceStub (line 76) | class _ServiceStub: method __init__ (line 77) | def __init__(self): method start (line 81) | async def start(self): method stop (line 84) | async def stop(self): method create_batch_tasks_impl (line 87) | async def create_batch_tasks_impl(self, authorization: Optional[str], ... method load_image (line 90) | async def load_image(self, url: str): method convert_to_base64 (line 95) | async def convert_to_base64(self, image: object) -> Tuple[str, str]: method get_all_tasks (line 98) | async def get_all_tasks(self) -> List[Dict[str, Any]]: method get_index_tasks (line 126) | async def get_index_tasks(self, index_name: str): method get_task_details (line 131) | async def get_task_details(self, task_id: str): method filter_important_image (line 136) | async def filter_important_image(self, image_url: str, positive_prompt... method process_uploaded_text_file (line 141) | async def process_uploaded_text_file(self, file_content: bytes, filena... method convert_celery_states_to_custom (line 146) | def convert_celery_states_to_custom(self, process_celery_state: str, f... method convert_office_to_pdf_impl (line 151) | async def convert_office_to_pdf_impl(self, object_name: str, pdf_objec... function stub_modules (line 161) | def stub_modules(monkeypatch): function _build_app (line 201) | def _build_app(): function test_create_task_success (line 208) | def test_create_task_success(): function test_process_sync_endpoint_success (line 223) | def test_process_sync_endpoint_success(): function test_process_sync_endpoint_error (line 237) | def test_process_sync_endpoint_error(monkeypatch): function test_process_sync_endpoint_http_exception (line 260) | def test_process_sync_endpoint_http_exception(monkeypatch): function test_batch_tasks_success (line 279) | def test_batch_tasks_success(): function test_batch_tasks_error (line 293) | def test_batch_tasks_error(monkeypatch): function test_batch_tasks_http_exception (line 309) | def test_batch_tasks_http_exception(monkeypatch): function test_load_image_success_and_not_found (line 326) | def test_load_image_success_and_not_found(): function test_load_image_internal_error (line 336) | def test_load_image_internal_error(monkeypatch): function test_filter_important_image_http_exception (line 349) | def test_filter_important_image_http_exception(monkeypatch): function test_list_tasks (line 368) | def test_list_tasks(): function test_get_index_tasks_success_and_error (line 377) | def test_get_index_tasks_success_and_error(): function test_get_task_details_success_and_404 (line 386) | def test_get_task_details_success_and_404(): function test_filter_important_image_success_and_error (line 395) | def test_filter_important_image_success_and_error(): function test_process_text_file_success_and_error (line 410) | def test_process_text_file_success_and_error(tmp_path): function test_process_text_file_http_exception (line 423) | def test_process_text_file_http_exception(monkeypatch): function test_convert_state_success_and_error (line 441) | def test_convert_state_success_and_error(monkeypatch): function test_convert_state_http_exception (line 457) | def test_convert_state_http_exception(monkeypatch): function test_convert_to_pdf_success (line 476) | def test_convert_to_pdf_success(): function test_convert_to_pdf_office_conversion_exception (line 488) | def test_convert_to_pdf_office_conversion_exception(monkeypatch): function test_convert_to_pdf_unexpected_exception (line 501) | def test_convert_to_pdf_unexpected_exception(): function test_convert_to_pdf_missing_params (line 512) | def test_convert_to_pdf_missing_params(): FILE: test/backend/app/test_datamate_app.py function datamate_mocks (line 60) | def datamate_mocks(): class TestDataMateApp (line 84) | class TestDataMateApp: method test_sync_datamate_knowledges_success (line 88) | async def test_sync_datamate_knowledges_success(self, datamate_mocks): method test_sync_datamate_knowledges_auth_error (line 126) | async def test_sync_datamate_knowledges_auth_error(self, datamate_mocks): method test_sync_datamate_knowledges_service_error (line 146) | async def test_sync_datamate_knowledges_service_error(self, datamate_m... method test_get_datamate_knowledge_base_files_success (line 177) | async def test_get_datamate_knowledge_base_files_success(self, datamat... method test_get_datamate_knowledge_base_files_auth_error (line 218) | async def test_get_datamate_knowledge_base_files_auth_error(self, data... method test_get_datamate_knowledge_base_files_service_error (line 241) | async def test_get_datamate_knowledge_base_files_service_error(self, d... method test_get_datamate_knowledge_base_files_empty_kb_id (line 269) | async def test_get_datamate_knowledge_base_files_empty_kb_id(self, dat... method test_sync_datamate_knowledges_none_auth_header (line 302) | async def test_sync_datamate_knowledges_none_auth_header(self, datamat... method test_get_datamate_knowledge_base_files_none_auth_header (line 333) | async def test_get_datamate_knowledge_base_files_none_auth_header(self... method test_sync_datamate_knowledges_custom_exception (line 363) | async def test_sync_datamate_knowledges_custom_exception(self, datamat... method test_get_datamate_knowledge_base_files_custom_exception (line 392) | async def test_get_datamate_knowledge_base_files_custom_exception(self... method test_sync_datamate_knowledges_with_custom_datamate_url (line 418) | async def test_sync_datamate_knowledges_with_custom_datamate_url(self,... method test_sync_datamate_kcknowledges_with_none_datamate_url (line 457) | async def test_sync_datamate_kcknowledges_with_none_datamate_url(self,... method test_sync_datamate_knowledges_with_empty_datamate_url (line 495) | async def test_sync_datamate_knowledges_with_empty_datamate_url(self, ... method test_sync_datamate_kcknowledges_with_https_datamate_url (line 531) | async def test_sync_datamate_kcknowledges_with_https_datamate_url(self... function test_datamate_connection_endpoint_success (line 569) | async def test_datamate_connection_endpoint_success(datamate_mocks): function test_datamate_connection_endpoint_connection_failed (line 613) | async def test_datamate_connection_endpoint_connection_failed(datamate_m... function test_datamate_connection_endpoint_auth_error (line 649) | async def test_datamate_connection_endpoint_auth_error(datamate_mocks): function test_datamate_connection_endpoint_service_error (line 675) | async def test_datamate_connection_endpoint_service_error(datamate_mocks): function test_datamate_connection_endpoint_none_auth_header (line 706) | async def test_datamate_connection_endpoint_none_auth_header(datamate_mo... function test_datamate_connection_endpoint_with_custom_url (line 739) | async def test_datamate_connection_endpoint_with_custom_url(datamate_moc... function test_datamate_connection_endpoint_connection_disabled (line 779) | async def test_datamate_connection_endpoint_connection_disabled(datamate... function test_datamate_connection_endpoint_no_url_configured (line 809) | async def test_datamate_connection_endpoint_no_url_configured(datamate_m... function test_datamate_connection_endpoint_empty_request_body (line 839) | async def test_datamate_connection_endpoint_empty_request_body(datamate_... function test_datamate_connection_endpoint_empty_url_in_request (line 868) | async def test_datamate_connection_endpoint_empty_url_in_request(datamat... FILE: test/backend/app/test_dify_app.py function _mock_create_storage_client_from_config (line 26) | def _mock_create_storage_client_from_config(config): function dify_mocks (line 55) | def dify_mocks(): class TestFetchDifyDatasetsApi (line 70) | class TestFetchDifyDatasetsApi: method test_fetch_dify_datasets_api_success (line 74) | async def test_fetch_dify_datasets_api_success(self, dify_mocks): method test_fetch_dify_datasets_api_url_normalization (line 143) | async def test_fetch_dify_datasets_api_url_normalization(self, dify_mo... method test_fetch_dify_datasets_api_auth_error (line 174) | async def test_fetch_dify_datasets_api_auth_error(self, dify_mocks): method test_fetch_dify_datasets_api_service_validation_error (line 200) | async def test_fetch_dify_datasets_api_service_validation_error(self, ... method test_fetch_dify_datasets_api_service_error (line 225) | async def test_fetch_dify_datasets_api_service_error(self, dify_mocks): method test_fetch_dify_datasets_api_http_error_from_service (line 253) | async def test_fetch_dify_datasets_api_http_error_from_service(self, d... method test_fetch_dify_datasets_api_request_error_from_service (line 280) | async def test_fetch_dify_datasets_api_request_error_from_service(self... method test_fetch_dify_datasets_api_none_auth_header (line 310) | async def test_fetch_dify_datasets_api_none_auth_header(self, dify_moc... method test_fetch_dify_datasets_api_empty_result (line 342) | async def test_fetch_dify_datasets_api_empty_result(self, dify_mocks): method test_fetch_dify_datasets_api_response_structure (line 375) | async def test_fetch_dify_datasets_api_response_structure(self, dify_m... method test_fetch_dify_datasets_api_logger_info_call (line 454) | async def test_fetch_dify_datasets_api_logger_info_call(self, dify_moc... method test_fetch_dify_datasets_api_logger_error_call (line 482) | async def test_fetch_dify_datasets_api_logger_error_call(self, dify_mo... method test_fetch_dify_datasets_api_special_characters_in_api_key (line 506) | async def test_fetch_dify_datasets_api_special_characters_in_api_key(s... method test_fetch_dify_datasets_api_different_api_base_formats (line 539) | async def test_fetch_dify_datasets_api_different_api_base_formats(self... class TestDifyAppRouter (line 574) | class TestDifyAppRouter: method test_router_prefix (line 577) | def test_router_prefix(self): method test_router_has_datasets_endpoint (line 581) | def test_router_has_datasets_endpoint(self): class TestDifyAppExceptionHandlers (line 588) | class TestDifyAppExceptionHandlers: method test_dify_app_exception_handler_functions_exist (line 591) | def test_dify_app_exception_handler_functions_exist(self): method test_dify_app_logs_service_error (line 607) | async def test_dify_app_logs_service_error(self, dify_mocks): class TestFetchDifyDatasetsApiConfigValidation (line 635) | class TestFetchDifyDatasetsApiConfigValidation: method test_fetch_dify_datasets_api_invalid_dify_api_base_none (line 643) | async def test_fetch_dify_datasets_api_invalid_dify_api_base_none(self): method test_fetch_dify_datasets_api_invalid_dify_api_base_integer (line 673) | async def test_fetch_dify_datasets_api_invalid_dify_api_base_integer(s... method test_fetch_dify_datasets_api_invalid_dify_api_base_object (line 703) | async def test_fetch_dify_datasets_api_invalid_dify_api_base_object(se... method test_fetch_dify_datasets_api_invalid_dify_api_base_list (line 733) | async def test_fetch_dify_datasets_api_invalid_dify_api_base_list(self): method test_fetch_dify_datasets_api_dify_config_invalid_logs_error_message (line 763) | async def test_fetch_dify_datasets_api_dify_config_invalid_logs_error_... method test_fetch_dify_datasets_api_success_after_config_validation (line 796) | async def test_fetch_dify_datasets_api_success_after_config_validation... class TestAppExceptionReRaising (line 833) | class TestAppExceptionReRaising: method test_service_raises_app_exception_re_raised_to_middleware (line 841) | async def test_service_raises_app_exception_re_raised_to_middleware(se... method test_service_raises_dify_config_invalid_app_exception (line 879) | async def test_service_raises_dify_config_invalid_app_exception(self): method test_service_raises_dify_auth_error_app_exception (line 914) | async def test_service_raises_dify_auth_error_app_exception(self): method test_service_raises_app_exception_with_details (line 949) | async def test_service_raises_app_exception_with_details(self): method test_service_raises_dify_rate_limit_app_exception (line 987) | async def test_service_raises_dify_rate_limit_app_exception(self): method test_app_exception_not_wrapped_or_converted (line 1022) | async def test_app_exception_not_wrapped_or_converted(self): FILE: test/backend/app/test_file_management_app.py function _stub_upload_to_minio (line 35) | async def _stub_upload_to_minio(files, folder): function _stub_upload_files_impl (line 38) | async def _stub_upload_files_impl(destination, file, folder, index_name): function _stub_get_file_url_impl (line 41) | async def _stub_get_file_url_impl(object_name: str, expires: int): function _stub_get_file_stream_impl (line 44) | async def _stub_get_file_stream_impl(object_name: str): function _stub_delete_file_impl (line 47) | async def _stub_delete_file_impl(object_name: str): function _stub_list_files_impl (line 50) | async def _stub_list_files_impl(prefix: str, limit: int | None = None): function _stub_preprocess_files_generator (line 54) | async def _stub_preprocess_files_generator(*_: Any, **__: Any) -> AsyncG... function _stub_preview_file_impl (line 58) | async def _stub_preview_file_impl(object_name: str): function _stub_get_current_user_info (line 81) | def _stub_get_current_user_info(authorization, request): function _stub_trigger_data_process (line 90) | async def _stub_trigger_data_process(files: List[dict], params: Any): class ProcessParams (line 103) | class ProcessParams: # minimal stub method __init__ (line 104) | def __init__(self, chunking_strategy: str, source_type: str, index_nam... class NotFoundException (line 115) | class NotFoundException(Exception): pass class OfficeConversionException (line 116) | class OfficeConversionException(Exception): pass class UnsupportedFileTypeException (line 117) | class UnsupportedFileTypeException(Exception): pass class FileTooLargeException (line 118) | class FileTooLargeException(Exception): pass function make_upload_file (line 135) | def make_upload_file(filename: str, content: bytes = b"data"): function test_options_route_ok (line 145) | async def test_options_route_ok(): function test_upload_files_success (line 152) | async def test_upload_files_success(monkeypatch): function test_upload_files_no_files_bad_request (line 168) | async def test_upload_files_no_files_bad_request(): function test_upload_files_no_valid_files_uploaded (line 175) | async def test_upload_files_no_valid_files_uploaded(monkeypatch): function test_process_files_success (line 188) | async def test_process_files_success(monkeypatch): function test_process_files_error_none (line 205) | async def test_process_files_error_none(monkeypatch): function test_process_files_error_message (line 222) | async def test_process_files_error_message(monkeypatch): function test_storage_upload_files_counts (line 239) | async def test_storage_upload_files_counts(monkeypatch): function test_get_storage_files_include_and_strip_urls (line 257) | async def test_get_storage_files_include_and_strip_urls(monkeypatch): function test_get_storage_files_error (line 273) | async def test_get_storage_files_error(monkeypatch): function test_get_storage_file_redirect (line 284) | async def test_get_storage_file_redirect(monkeypatch): function test_get_storage_file_stream (line 296) | async def test_get_storage_file_stream(monkeypatch): function test_get_storage_file_base64_success (line 318) | async def test_get_storage_file_base64_success(monkeypatch): function test_get_storage_file_base64_read_error (line 343) | async def test_get_storage_file_base64_read_error(monkeypatch): function test_get_storage_file_metadata (line 365) | async def test_get_storage_file_metadata(monkeypatch): function test_get_storage_file_error (line 375) | async def test_get_storage_file_error(monkeypatch): function test_remove_storage_file_success (line 386) | async def test_remove_storage_file_success(monkeypatch): function test_remove_storage_file_error (line 396) | async def test_remove_storage_file_error(monkeypatch): function test_get_storage_file_batch_urls_validation_error (line 407) | async def test_get_storage_file_batch_urls_validation_error(): function test_get_storage_file_batch_urls_mixed (line 414) | async def test_get_storage_file_batch_urls_mixed(monkeypatch): function test_build_content_disposition_header_ascii (line 432) | def test_build_content_disposition_header_ascii(): function test_build_content_disposition_header_non_ascii (line 438) | def test_build_content_disposition_header_non_ascii(): function test_build_content_disposition_header_non_ascii_with_extension (line 446) | def test_build_content_disposition_header_non_ascii_with_extension(): function test_build_content_disposition_header_exception_handling (line 454) | def test_build_content_disposition_header_exception_handling(monkeypatch): function test_build_content_disposition_header_inline_ascii (line 466) | def test_build_content_disposition_header_inline_ascii(): function test_build_content_disposition_header_inline_non_ascii (line 473) | def test_build_content_disposition_header_inline_non_ascii(): function test_build_content_disposition_header_inline_false_explicit (line 481) | def test_build_content_disposition_header_inline_false_explicit(): function test_build_content_disposition_header_inline_exception_handling (line 488) | def test_build_content_disposition_header_inline_exception_handling(monk... function test_get_storage_file_stream_with_filename (line 503) | async def test_get_storage_file_stream_with_filename(monkeypatch): function test_get_storage_file_stream_without_filename (line 523) | async def test_get_storage_file_stream_without_filename(monkeypatch): function test_get_storage_file_stream_error (line 543) | async def test_get_storage_file_stream_error(monkeypatch): function test_download_datamate_file_with_url (line 562) | async def test_download_datamate_file_with_url(monkeypatch): function test_download_datamate_file_with_parts (line 591) | async def test_download_datamate_file_with_parts(monkeypatch): function test_download_datamate_file_404_error (line 618) | async def test_download_datamate_file_404_error(monkeypatch): function test_download_datamate_file_http_error (line 645) | async def test_download_datamate_file_http_error(monkeypatch): function test_download_datamate_file_missing_params (line 669) | async def test_download_datamate_file_missing_params(): function test_download_datamate_file_extract_filename_from_content_disposition (line 684) | async def test_download_datamate_file_extract_filename_from_content_disp... function test_download_datamate_file_extract_filename_from_url (line 712) | async def test_download_datamate_file_extract_filename_from_url(monkeypa... function test_download_datamate_file_with_authorization (line 740) | async def test_download_datamate_file_with_authorization(monkeypatch): function test_download_datamate_file_unexpected_exception (line 773) | async def test_download_datamate_file_unexpected_exception(monkeypatch): function test_normalize_datamate_download_url_valid (line 799) | def test_normalize_datamate_download_url_valid(): function test_normalize_datamate_download_url_adds_scheme (line 806) | def test_normalize_datamate_download_url_adds_scheme(): function test_normalize_datamate_download_url_with_prefix (line 813) | def test_normalize_datamate_download_url_with_prefix(): function test_normalize_datamate_download_url_missing_data_management (line 820) | def test_normalize_datamate_download_url_missing_data_management(): function test_normalize_datamate_download_url_invalid_structure (line 827) | def test_normalize_datamate_download_url_invalid_structure(): function test_build_datamate_url_from_parts_with_api (line 836) | def test_build_datamate_url_from_parts_with_api(): function test_build_datamate_url_from_parts_without_scheme (line 846) | def test_build_datamate_url_from_parts_without_scheme(): function test_build_datamate_url_from_parts_without_api (line 856) | def test_build_datamate_url_from_parts_without_api(): function test_build_datamate_url_from_parts_with_slash (line 866) | def test_build_datamate_url_from_parts_with_slash(): function test_build_datamate_url_from_parts_appends_api_segment (line 876) | def test_build_datamate_url_from_parts_appends_api_segment(): function test_build_datamate_url_from_parts_defaults_api_when_no_path (line 886) | def test_build_datamate_url_from_parts_defaults_api_when_no_path(): function test_build_datamate_url_from_parts_trailing_slash_branch (line 896) | def test_build_datamate_url_from_parts_trailing_slash_branch(monkeypatch): function test_build_datamate_url_from_parts_empty_base_url (line 921) | def test_build_datamate_url_from_parts_empty_base_url(): function test_preview_file_pdf_success (line 931) | async def test_preview_file_pdf_success(monkeypatch): function test_preview_file_image_success (line 953) | async def test_preview_file_image_success(monkeypatch): function test_preview_file_text_success (line 973) | async def test_preview_file_text_success(monkeypatch): function test_preview_file_without_filename_extracts_from_path (line 993) | async def test_preview_file_without_filename_extracts_from_path(monkeypa... function test_preview_file_chinese_filename (line 1012) | async def test_preview_file_chinese_filename(monkeypatch): function test_preview_file_too_large_error (line 1032) | async def test_preview_file_too_large_error(monkeypatch): function test_preview_file_unsupported_format_error (line 1050) | async def test_preview_file_unsupported_format_error(monkeypatch): function test_preview_file_internal_error (line 1068) | async def test_preview_file_internal_error(monkeypatch): function test_preview_file_office_converted_to_pdf (line 1084) | async def test_preview_file_office_converted_to_pdf(monkeypatch): function test_preview_file_has_etag_header (line 1106) | async def test_preview_file_has_etag_header(monkeypatch): function test_preview_file_simple_object_name_without_slash (line 1125) | async def test_preview_file_simple_object_name_without_slash(monkeypatch): function test_preview_file_does_not_exist_error (line 1144) | async def test_preview_file_does_not_exist_error(monkeypatch): function test_preview_file_office_conversion_error (line 1162) | async def test_preview_file_office_conversion_error(monkeypatch): FILE: test/backend/app/test_group_app.py class TestGroupCreation (line 48) | class TestGroupCreation: method test_create_group_success (line 51) | def test_create_group_success(self): method test_create_group_unauthorized (line 87) | def test_create_group_unauthorized(self): method test_create_group_validation_error (line 104) | def test_create_group_validation_error(self): method test_create_group_unexpected_error (line 124) | def test_create_group_unexpected_error(self): class TestGroupRetrieval (line 145) | class TestGroupRetrieval: method test_get_group_success (line 148) | def test_get_group_success(self): method test_get_group_not_found (line 168) | def test_get_group_not_found(self): method test_get_group_unexpected_error (line 179) | def test_get_group_unexpected_error(self): class TestGroupListing (line 191) | class TestGroupListing: method test_get_groups_success_with_pagination (line 194) | def test_get_groups_success_with_pagination(self): method test_get_groups_success_without_pagination (line 235) | def test_get_groups_success_without_pagination(self): method test_get_groups_success_with_only_page (line 270) | def test_get_groups_success_with_only_page(self): method test_get_groups_success_with_only_page_size (line 295) | def test_get_groups_success_with_only_page_size(self): method test_get_groups_success_with_asc_sort (line 320) | def test_get_groups_success_with_asc_sort(self): method test_get_groups_success_with_custom_pagination (line 354) | def test_get_groups_success_with_custom_pagination(self): method test_get_groups_tenant_not_found (line 383) | def test_get_groups_tenant_not_found(self): method test_get_groups_unexpected_error (line 400) | def test_get_groups_unexpected_error(self): class TestGroupUpdate (line 421) | class TestGroupUpdate: method test_update_group_success (line 424) | def test_update_group_success(self): method test_update_group_no_updates (line 448) | def test_update_group_no_updates(self): method test_update_group_not_found (line 461) | def test_update_group_not_found(self): method test_update_group_unauthorized (line 477) | def test_update_group_unauthorized(self): class TestGroupDeletion (line 491) | class TestGroupDeletion: method test_delete_group_success (line 494) | def test_delete_group_success(self): method test_delete_group_not_found (line 509) | def test_delete_group_not_found(self): method test_delete_group_validation_error (line 523) | def test_delete_group_validation_error(self): class TestGroupMembership (line 538) | class TestGroupMembership: method test_add_user_to_group_success (line 541) | def test_add_user_to_group_success(self): method test_add_user_to_group_invalid_request (line 560) | def test_add_user_to_group_invalid_request(self): method test_add_user_to_group_not_found (line 573) | def test_add_user_to_group_not_found(self): method test_remove_user_from_group_success (line 589) | def test_remove_user_from_group_success(self): method test_remove_user_from_group_not_found (line 603) | def test_remove_user_from_group_not_found(self): method test_get_group_users_success (line 617) | def test_get_group_users_success(self): method test_get_group_users_not_found (line 634) | def test_get_group_users_not_found(self): method test_update_group_members_success (line 645) | def test_update_group_members_success(self): method test_update_group_members_not_found (line 675) | def test_update_group_members_not_found(self): method test_update_group_members_validation_error (line 691) | def test_update_group_members_validation_error(self): method test_update_group_members_unauthorized (line 707) | def test_update_group_members_unauthorized(self): method test_update_group_members_service_unauthorized (line 720) | def test_update_group_members_service_unauthorized(self): method test_update_group_members_unexpected_error (line 736) | def test_update_group_members_unexpected_error(self): class TestBatchGroupMembership (line 753) | class TestBatchGroupMembership: method test_add_user_to_groups_success (line 756) | def test_add_user_to_groups_success(self): method test_add_user_to_groups_invalid_request (line 781) | def test_add_user_to_groups_invalid_request(self): method test_add_user_to_groups_validation_error (line 791) | def test_add_user_to_groups_validation_error(self): class TestDefaultGroupManagement (line 811) | class TestDefaultGroupManagement: method test_get_tenant_default_group_success (line 814) | def test_get_tenant_default_group_success(self): method test_get_tenant_default_group_unexpected_error (line 827) | def test_get_tenant_default_group_unexpected_error(self): method test_set_tenant_default_group_success (line 838) | def test_set_tenant_default_group_success(self): method test_set_tenant_default_group_validation_error (line 856) | def test_set_tenant_default_group_validation_error(self): method test_set_tenant_default_group_not_found (line 872) | def test_set_tenant_default_group_not_found(self): FILE: test/backend/app/test_idata_app.py function _mock_create_storage_client_from_config (line 26) | def _mock_create_storage_client_from_config(config): function _build_app (line 63) | def _build_app(): class TestFetchIdataKnowledgeSpacesApi (line 71) | class TestFetchIdataKnowledgeSpacesApi: method test_fetch_knowledge_spaces_success (line 75) | async def test_fetch_knowledge_spaces_success(self): method test_fetch_knowledge_spaces_url_normalization_with_trailing_slash (line 106) | async def test_fetch_knowledge_spaces_url_normalization_with_trailing_... method test_fetch_knowledge_spaces_url_normalization_exception (line 137) | async def test_fetch_knowledge_spaces_url_normalization_exception(self): method test_fetch_knowledge_spaces_app_exception_re_raise (line 176) | async def test_fetch_knowledge_spaces_app_exception_re_raise(self): method test_fetch_knowledge_spaces_generic_exception (line 203) | async def test_fetch_knowledge_spaces_generic_exception(self): method test_fetch_knowledge_spaces_missing_required_params (line 226) | async def test_fetch_knowledge_spaces_missing_required_params(self): class TestFetchIdataDatasetsApi (line 262) | class TestFetchIdataDatasetsApi: method test_fetch_datasets_success (line 266) | async def test_fetch_datasets_success(self): method test_fetch_datasets_url_normalization_with_trailing_slash (line 321) | async def test_fetch_datasets_url_normalization_with_trailing_slash(se... method test_fetch_datasets_url_normalization_exception (line 367) | async def test_fetch_datasets_url_normalization_exception(self): method test_fetch_datasets_app_exception_re_raise (line 408) | async def test_fetch_datasets_app_exception_re_raise(self): method test_fetch_datasets_generic_exception (line 436) | async def test_fetch_datasets_generic_exception(self): method test_fetch_datasets_missing_required_params (line 460) | async def test_fetch_datasets_missing_required_params(self): class TestIdataAppRouter (line 510) | class TestIdataAppRouter: method test_router_prefix (line 513) | def test_router_prefix(self): method test_routes_registered (line 517) | def test_routes_registered(self): method test_router_methods (line 525) | def test_router_methods(self): FILE: test/backend/app/test_image_app.py function test_proxy_image_success (line 44) | async def test_proxy_image_success(monkeypatch): function test_proxy_image_remote_error (line 77) | async def test_proxy_image_remote_error(monkeypatch): function test_proxy_image_exception (line 114) | async def test_proxy_image_exception(monkeypatch): function test_proxy_image_with_special_chars (line 140) | async def test_proxy_image_with_special_chars(monkeypatch): function test_proxy_image_logging (line 178) | async def test_proxy_image_logging(monkeypatch): function test_proxy_image_stream_format (line 208) | async def test_proxy_image_stream_format(monkeypatch): function test_proxy_image_stream_format_error (line 245) | async def test_proxy_image_stream_format_error(monkeypatch): function test_proxy_image_stream_format_base64_decode_error (line 268) | async def test_proxy_image_stream_format_base64_decode_error(monkeypatch): function test_proxy_image_stream_format_exception (line 294) | async def test_proxy_image_stream_format_exception(monkeypatch): function test_proxy_image_json_format_default (line 312) | async def test_proxy_image_json_format_default(monkeypatch): function test_proxy_image_json_format_exception (line 327) | async def test_proxy_image_json_format_exception(monkeypatch): function test_proxy_image_url_decoding (line 343) | async def test_proxy_image_url_decoding(monkeypatch): FILE: test/backend/app/test_invitation_app.py class TestInvitationListing (line 46) | class TestInvitationListing: method test_list_invitations_success (line 49) | def test_list_invitations_success(self): method test_list_invitations_with_sorting (line 98) | def test_list_invitations_with_sorting(self): method test_list_invitations_unauthorized (line 142) | def test_list_invitations_unauthorized(self): method test_list_invitations_unexpected_error (line 159) | def test_list_invitations_unexpected_error(self): class TestInvitationCreation (line 180) | class TestInvitationCreation: method test_create_invitation_success (line 183) | def test_create_invitation_success(self): method test_create_invitation_auto_generated_code (line 218) | def test_create_invitation_auto_generated_code(self): method test_create_invitation_user_not_found (line 246) | def test_create_invitation_user_not_found(self): method test_create_invitation_value_error (line 266) | def test_create_invitation_value_error(self): method test_create_invitation_duplicate_code (line 286) | def test_create_invitation_duplicate_code(self): class TestInvitationUpdate (line 308) | class TestInvitationUpdate: method test_update_invitation_success (line 311) | def test_update_invitation_success(self): method test_update_invitation_no_updates (line 342) | def test_update_invitation_no_updates(self): method test_update_invitation_not_found (line 363) | def test_update_invitation_not_found(self): method test_update_invitation_unauthorized (line 379) | def test_update_invitation_unauthorized(self): class TestInvitationRetrieval (line 393) | class TestInvitationRetrieval: method test_get_invitation_success (line 396) | def test_get_invitation_success(self): method test_get_invitation_not_found (line 418) | def test_get_invitation_not_found(self): method test_get_invitation_unexpected_error (line 429) | def test_get_invitation_unexpected_error(self): class TestInvitationCodeCheck (line 441) | class TestInvitationCodeCheck: method test_check_invitation_code_exists (line 444) | def test_check_invitation_code_exists(self): method test_check_invitation_code_not_exists (line 463) | def test_check_invitation_code_not_exists(self): method test_check_invitation_code_unexpected_error (line 476) | def test_check_invitation_code_unexpected_error(self): class TestInvitationAvailability (line 488) | class TestInvitationAvailability: method test_check_invitation_available_true (line 491) | def test_check_invitation_available_true(self): method test_check_invitation_available_false (line 505) | def test_check_invitation_available_false(self): method test_check_invitation_available_unexpected_error (line 516) | def test_check_invitation_available_unexpected_error(self): class TestInvitationUsage (line 528) | class TestInvitationUsage: method test_use_invitation_success (line 531) | def test_use_invitation_success(self): method test_use_invitation_not_found (line 558) | def test_use_invitation_not_found(self): method test_use_invitation_unauthorized (line 572) | def test_use_invitation_unauthorized(self): class TestInvitationStatusUpdate (line 584) | class TestInvitationStatusUpdate: method test_update_invitation_status_success_updated (line 587) | def test_update_invitation_status_success_updated(self): method test_update_invitation_status_success_unchanged (line 609) | def test_update_invitation_status_success_unchanged(self): method test_update_invitation_status_not_found (line 629) | def test_update_invitation_status_not_found(self): method test_update_invitation_status_unexpected_error (line 640) | def test_update_invitation_status_unexpected_error(self): class TestInvitationDeletion (line 660) | class TestInvitationDeletion: method test_delete_invitation_success (line 663) | def test_delete_invitation_success(self): method test_delete_invitation_not_found (line 688) | def test_delete_invitation_not_found(self): method test_delete_invitation_unauthorized (line 702) | def test_delete_invitation_unauthorized(self): method test_delete_invitation_validation_error (line 722) | def test_delete_invitation_validation_error(self): FILE: test/backend/app/test_knowledge_summary_app.py class MockVectorDatabaseCore (line 36) | class MockVectorDatabaseCore: method __init__ (line 37) | def __init__(self, *args, **kwargs): class MockToolConfig (line 54) | class MockToolConfig: method __init__ (line 55) | def __init__(self, *args, **kwargs): pass class MockBaseEmbedding (line 56) | class MockBaseEmbedding: method __init__ (line 57) | def __init__(self, *args, **kwargs): pass class MockOpenAICompatibleEmbedding (line 58) | class MockOpenAICompatibleEmbedding: method __init__ (line 59) | def __init__(self, *args, **kwargs): pass class MockJinaEmbedding (line 60) | class MockJinaEmbedding: method __init__ (line 61) | def __init__(self, *args, **kwargs): pass class MockTokenizer (line 62) | class MockTokenizer: method __init__ (line 63) | def __init__(self, *args, **kwargs): pass class MockSTTConfig (line 64) | class MockSTTConfig: method __init__ (line 65) | def __init__(self, *args, **kwargs): pass class MockSTTModel (line 66) | class MockSTTModel: method __init__ (line 67) | def __init__(self, *args, **kwargs): pass class MockTTSConfig (line 68) | class MockTTSConfig: method __init__ (line 69) | def __init__(self, *args, **kwargs): pass class MockTTSModel (line 70) | class MockTTSModel: method __init__ (line 71) | def __init__(self, *args, **kwargs): pass class ChangeSummaryRequest (line 105) | class ChangeSummaryRequest(BaseModel): function test_data (line 115) | def test_data(): function test_auto_summary_success (line 126) | def test_auto_summary_success(test_data): function test_auto_summary_without_model_id (line 162) | def test_auto_summary_without_model_id(test_data): function test_auto_summary_exception (line 198) | def test_auto_summary_exception(test_data): function test_change_summary_success (line 226) | def test_change_summary_success(test_data): function test_change_summary_exception (line 268) | def test_change_summary_exception(test_data): function test_get_summary_success (line 293) | def test_get_summary_success(test_data): function test_get_summary_exception (line 319) | def test_get_summary_exception(test_data): FILE: test/backend/app/test_memory_config_app.py function _auth_headers (line 41) | def _auth_headers(): class TestMemoryConfigLoad (line 45) | class TestMemoryConfigLoad: method test_load_configs_success (line 46) | def test_load_configs_success(self): method test_load_configs_unauthorized (line 55) | def test_load_configs_unauthorized(self): method test_load_configs_generic_error (line 61) | def test_load_configs_generic_error(self): class TestSetSingleConfig (line 71) | class TestSetSingleConfig: method test_set_memory_switch_true_string (line 72) | def test_set_memory_switch_true_string(self): method test_set_memory_switch_yes_uppercase (line 84) | def test_set_memory_switch_yes_uppercase(self): method test_set_memory_switch_false_numeric_and_fail (line 96) | def test_set_memory_switch_false_numeric_and_fail(self): method test_set_agent_share_valid (line 109) | def test_set_agent_share_valid(self): method test_set_agent_share_invalid_value (line 125) | def test_set_agent_share_invalid_value(self): method test_set_unsupported_key (line 134) | def test_set_unsupported_key(self): method test_set_agent_share_backend_failure (line 143) | def test_set_agent_share_backend_failure(self): class TestDisableAgentEndpoints (line 156) | class TestDisableAgentEndpoints: method test_add_disable_agent_success (line 157) | def test_add_disable_agent_success(self): method test_add_disable_agent_failure (line 168) | def test_add_disable_agent_failure(self): method test_remove_disable_agent_success (line 178) | def test_remove_disable_agent_success(self): method test_remove_disable_agent_failure (line 188) | def test_remove_disable_agent_failure(self): class TestDisableUserAgentEndpoints (line 198) | class TestDisableUserAgentEndpoints: method test_add_disable_useragent_success (line 199) | def test_add_disable_useragent_success(self): method test_add_disable_useragent_failure (line 210) | def test_add_disable_useragent_failure(self): method test_remove_disable_useragent_success (line 220) | def test_remove_disable_useragent_success(self): method test_remove_disable_useragent_failure (line 230) | def test_remove_disable_useragent_failure(self): class TestMemoryCrud (line 240) | class TestMemoryCrud: method test_add_memory_success (line 241) | def test_add_memory_success(self): method test_add_memory_error (line 262) | def test_add_memory_error(self): method test_add_memory_infer_flag_false (line 279) | def test_add_memory_infer_flag_false(self): method test_search_memory_success_and_error (line 299) | def test_search_memory_success_and_error(self): method test_search_memory_default_top_k (line 332) | def test_search_memory_default_top_k(self): method test_list_memory_success_and_error (line 350) | def test_list_memory_success_and_error(self): method test_list_memory_with_agent_id (line 378) | def test_list_memory_with_agent_id(self): method test_delete_memory_success_and_error (line 391) | def test_delete_memory_success_and_error(self): method test_clear_memory_success_and_error (line 413) | def test_clear_memory_success_and_error(self): method test_clear_memory_with_agent_id (line 441) | def test_clear_memory_with_agent_id(self): FILE: test/backend/app/test_mock_user_management_app.py class TestServiceHealth (line 35) | class TestServiceHealth: method test_service_health_success (line 38) | def test_service_health_success(self): method test_service_health_exception_path (line 47) | def test_service_health_exception_path(self, mock_json_response): class TestUserSignup (line 57) | class TestUserSignup: method test_signup_regular_user (line 60) | def test_signup_regular_user(self): method test_signup_response_structure (line 78) | def test_signup_response_structure(self): method test_signup_exception_handling (line 112) | def test_signup_exception_handling(self, mock_json_response): class TestUserSignin (line 128) | class TestUserSignin: method test_signin_success (line 131) | def test_signin_success(self): method test_signin_exception_handling (line 148) | def test_signin_exception_handling(self, mock_json_response): class TestRefreshToken (line 163) | class TestRefreshToken: method test_refresh_token_success (line 166) | def test_refresh_token_success(self): method test_refresh_token_with_new_timestamp (line 184) | def test_refresh_token_with_new_timestamp(self, mock_datetime): method test_refresh_token_exception_handling (line 206) | def test_refresh_token_exception_handling(self, mock_json_response): class TestLogout (line 218) | class TestLogout: method test_logout_success (line 221) | def test_logout_success(self): method test_logout_exception_handling (line 233) | def test_logout_exception_handling(self, mock_json_response): class TestGetSession (line 242) | class TestGetSession: method test_get_session_success (line 245) | def test_get_session_success(self): method test_get_session_exception_handling (line 260) | def test_get_session_exception_handling(self, mock_json_response): class TestGetCurrentUserId (line 269) | class TestGetCurrentUserId: method test_get_user_id_success (line 272) | def test_get_user_id_success(self): method test_get_user_id_exception_handling (line 285) | def test_get_user_id_exception_handling(self, mock_json_response): class TestRequestValidation (line 294) | class TestRequestValidation: method test_signup_missing_required_fields (line 297) | def test_signup_missing_required_fields(self): method test_signin_missing_required_fields (line 305) | def test_signin_missing_required_fields(self): method test_signup_invalid_email_format (line 313) | def test_signup_invalid_email_format(self): class TestIntegrationFlow (line 326) | class TestIntegrationFlow: method test_complete_user_flow (line 329) | def test_complete_user_flow(self): class TestMockDataConsistency (line 383) | class TestMockDataConsistency: method test_mock_user_data_consistency (line 386) | def test_mock_user_data_consistency(self): method test_mock_session_longevity (line 400) | def test_mock_session_longevity(self): method test_signup_email_reflection (line 414) | def test_signup_email_reflection(self): method test_signin_email_reflection (line 432) | def test_signin_email_reflection(self): class TestGetCurrentUserInfo (line 450) | class TestGetCurrentUserInfo: method test_get_user_info_success (line 454) | def test_get_user_info_success(self, mock_get_user_info): method test_get_user_info_not_found (line 485) | def test_get_user_info_not_found(self, mock_get_user_info): method test_get_user_info_unauthorized_error (line 501) | def test_get_user_info_unauthorized_error(self, mock_get_user_info): method test_get_user_info_general_exception (line 519) | def test_get_user_info_general_exception(self, mock_get_user_info): method test_get_user_info_response_structure (line 535) | def test_get_user_info_response_structure(self, mock_get_user_info): FILE: test/backend/app/test_model_managment_app.py function client (line 32) | def client(mocker): function auth_header (line 61) | def auth_header(): function user_credentials (line 67) | def user_credentials(): function sample_model_data (line 73) | def sample_model_data(): function test_create_model_success (line 87) | async def test_create_model_success(client, auth_header, user_credential... function test_create_model_conflict (line 106) | async def test_create_model_conflict(client, auth_header, user_credentia... function test_create_model_exception (line 126) | async def test_create_model_exception(client, auth_header, user_credenti... function test_create_provider_model_success (line 147) | async def test_create_provider_model_success(client, auth_header, user_c... function test_create_provider_model_exception (line 170) | async def test_create_provider_model_exception(client, auth_header, user... function test_provider_batch_create_success (line 193) | async def test_provider_batch_create_success(client, auth_header, user_c... function test_provider_batch_create_exception (line 218) | async def test_provider_batch_create_exception(client, auth_header, user... function test_delete_model_success (line 245) | async def test_delete_model_success(client, auth_header, user_credential... function test_delete_model_not_found (line 265) | async def test_delete_model_not_found(client, auth_header, user_credenti... function test_get_model_list_success (line 286) | async def test_get_model_list_success(client, auth_header, user_credenti... function test_get_llm_model_list_success (line 324) | async def test_get_llm_model_list_success(client, auth_header, user_cred... function test_get_llm_model_list_exception (line 360) | async def test_get_llm_model_list_exception(client, auth_header, user_cr... function test_get_llm_model_list_empty (line 378) | async def test_get_llm_model_list_empty(client, auth_header, user_creden... function test_check_model_health_success (line 398) | async def test_check_model_health_success(client, auth_header, user_cred... function test_check_model_health_lookup_error (line 421) | async def test_check_model_health_lookup_error(client, auth_header, user... function test_verify_model_config_success (line 440) | async def test_verify_model_config_success(client, auth_header, sample_m... function test_verify_model_config_failure_with_error (line 460) | async def test_verify_model_config_failure_with_error(client, auth_heade... function test_verify_model_config_exception (line 486) | async def test_verify_model_config_exception(client, auth_header, sample... function test_update_single_model_success (line 500) | async def test_update_single_model_success(client, auth_header, user_cre... function test_update_single_model_conflict (line 537) | async def test_update_single_model_conflict(client, auth_header, user_cr... function test_batch_update_models_success (line 576) | async def test_batch_update_models_success(client, auth_header, user_cre... function test_batch_update_models_exception (line 599) | async def test_batch_update_models_exception(client, auth_header, user_c... function test_get_manage_model_list_success (line 621) | async def test_get_manage_model_list_success(client, auth_header, user_c... function test_get_manage_model_list_with_pagination (line 677) | async def test_get_manage_model_list_with_pagination(client, auth_header... function test_get_manage_model_list_exception (line 721) | async def test_get_manage_model_list_exception(client, auth_header, user... function test_get_manage_model_list_empty (line 744) | async def test_get_manage_model_list_empty(client, auth_header, user_cre... function test_manage_create_model_success (line 779) | async def test_manage_create_model_success(client, auth_header, user_cre... function test_manage_create_model_conflict (line 813) | async def test_manage_create_model_conflict(client, auth_header, user_cr... function test_manage_create_model_exception (line 836) | async def test_manage_create_model_exception(client, auth_header, user_c... function test_manage_update_model_success (line 859) | async def test_manage_update_model_success(client, auth_header, user_cre... function test_manage_update_model_not_found (line 892) | async def test_manage_update_model_not_found(client, auth_header, user_c... function test_manage_update_model_conflict (line 912) | async def test_manage_update_model_conflict(client, auth_header, user_cr... function test_manage_delete_model_success (line 933) | async def test_manage_delete_model_success(client, auth_header, user_cre... function test_manage_delete_model_not_found (line 957) | async def test_manage_delete_model_not_found(client, auth_header, user_c... function test_manage_delete_model_exception (line 976) | async def test_manage_delete_model_exception(client, auth_header, user_c... function test_manage_batch_create_models_success (line 996) | async def test_manage_batch_create_models_success(client, auth_header, u... function test_manage_batch_create_models_empty_list (line 1065) | async def test_manage_batch_create_models_empty_list(client, auth_header... function test_manage_batch_create_models_exception (line 1091) | async def test_manage_batch_create_models_exception(client, auth_header,... function test_manage_healthcheck_success (line 1116) | async def test_manage_healthcheck_success(client, auth_header, user_cred... function test_manage_healthcheck_model_not_found (line 1139) | async def test_manage_healthcheck_model_not_found(client, auth_header, u... function test_manage_healthcheck_invalid_config (line 1159) | async def test_manage_healthcheck_invalid_config(client, auth_header, us... function test_manage_healthcheck_exception (line 1179) | async def test_manage_healthcheck_exception(client, auth_header, user_cr... function test_manage_provider_list_success (line 1199) | async def test_manage_provider_list_success(client, auth_header, user_cr... function test_manage_provider_list_exception (line 1242) | async def test_manage_provider_list_exception(client, auth_header, user_... function test_manage_provider_list_empty (line 1262) | async def test_manage_provider_list_empty(client, auth_header, user_cred... function test_manage_provider_create_success (line 1285) | async def test_manage_provider_create_success(client, auth_header, user_... function test_manage_provider_create_with_base_url (line 1329) | async def test_manage_provider_create_with_base_url(client, auth_header,... function test_manage_provider_create_exception (line 1363) | async def test_manage_provider_create_exception(client, auth_header, use... function test_manage_provider_create_empty (line 1385) | async def test_manage_provider_create_empty(client, auth_header, user_cr... FILE: test/backend/app/test_northbound_app.py class LimitExceededError (line 23) | class LimitExceededError(Exception): class UnauthorizedError (line 25) | class UnauthorizedError(Exception): class SignatureValidationError (line 27) | class SignatureValidationError(Exception): function _build_headers (line 58) | def _build_headers(auth="Bearer test_jwt", request_id="req-123", aksk=Tr... function test_health_check (line 73) | async def test_health_check(): function test_run_chat_calls_service (line 81) | def test_run_chat_calls_service(monkeypatch): function test_stop_chat_calls_service (line 109) | def test_stop_chat_calls_service(monkeypatch): function test_get_history_calls_service (line 123) | def test_get_history_calls_service(monkeypatch): function test_list_agents_calls_service (line 137) | def test_list_agents_calls_service(monkeypatch): function test_list_conversations_calls_service (line 150) | def test_list_conversations_calls_service(monkeypatch): function test_update_title_sets_headers (line 163) | def test_update_title_sets_headers(monkeypatch): function _std_headers (line 189) | def _std_headers(auth="Bearer test_jwt"): function test_run_chat_auth_exceptions_are_mapped (line 201) | def test_run_chat_auth_exceptions_are_mapped(monkeypatch, exc_cls, status): function test_run_chat_missing_authorization_header_returns_401 (line 217) | def test_run_chat_missing_authorization_header_returns_401(monkeypatch): function test_run_chat_jwt_parse_exception_returns_401 (line 232) | def test_run_chat_jwt_parse_exception_returns_401(monkeypatch): function test_run_chat_jwt_missing_user_id_returns_400 (line 249) | def test_run_chat_jwt_missing_user_id_returns_400(monkeypatch): function test_run_chat_jwt_missing_tenant_id_returns_400 (line 265) | def test_run_chat_jwt_missing_tenant_id_returns_400(monkeypatch): function test_run_chat_internal_error_when_parsing_context_returns_401 (line 281) | def test_run_chat_internal_error_when_parsing_context_returns_401(monkey... function test_run_chat_unexpected_service_error_maps_500 (line 296) | def test_run_chat_unexpected_service_error_maps_500(monkeypatch): function test_other_endpoints_auth_exceptions_are_mapped (line 323) | def test_other_endpoints_auth_exceptions_are_mapped(monkeypatch, path, e... function test_other_endpoints_unexpected_service_error_maps_500 (line 342) | def test_other_endpoints_unexpected_service_error_maps_500(monkeypatch, ... function test_update_title_unexpected_service_error_maps_500 (line 353) | def test_update_title_unexpected_service_error_maps_500(monkeypatch): function test_run_chat_sets_headers_from_service_response (line 369) | def test_run_chat_sets_headers_from_service_response(monkeypatch): function test_run_chat_service_error_maps_500 (line 412) | def test_run_chat_service_error_maps_500(monkeypatch): FILE: test/backend/app/test_northbound_base_app.py function _dummy_route (line 29) | async def _dummy_route(): class LimitExceededError (line 51) | class LimitExceededError(Exception): class UnauthorizedError (line 55) | class UnauthorizedError(Exception): class SignatureValidationError (line 59) | class SignatureValidationError(Exception): class AppException (line 76) | class AppException(Exception): class LimitExceededError (line 81) | class LimitExceededError(Exception): class UnauthorizedError (line 85) | class UnauthorizedError(Exception): class SignatureValidationError (line 89) | class SignatureValidationError(Exception): class TestNorthboundBaseApp (line 110) | class TestNorthboundBaseApp(unittest.TestCase): method setUp (line 113) | def setUp(self): method test_app_root_path (line 119) | def test_app_root_path(self): method test_cors_middleware_configuration (line 123) | def test_cors_middleware_configuration(self): method test_router_inclusion (line 138) | def test_router_inclusion(self): method test_http_exception_handler_registration (line 146) | def test_http_exception_handler_registration(self): method test_custom_exception_handlers_registration (line 150) | def test_custom_exception_handlers_registration(self): method test_dummy_endpoint_success (line 157) | def test_dummy_endpoint_success(self): FILE: test/backend/app/test_remote_mcp_app.py class MockToolInfo (line 58) | class MockToolInfo: method __init__ (line 61) | def __init__(self, name, description, params=None): method __dict__ (line 67) | def __dict__(self): class TestGetToolsFromRemoteMCP (line 75) | class TestGetToolsFromRemoteMCP: method test_get_tools_success (line 80) | def test_get_tools_success(self, mock_get_tools, mock_get_user_info): method test_get_tools_connection_error (line 112) | def test_get_tools_connection_error(self, mock_get_tools, mock_get_use... method test_get_tools_general_failure (line 131) | def test_get_tools_general_failure(self, mock_get_tools, mock_get_user... class TestAddRemoteProxies (line 148) | class TestAddRemoteProxies: method test_add_remote_proxy_success (line 153) | def test_add_remote_proxy_success(self, mock_add_server, mock_get_user... method test_add_remote_proxy_with_tenant_id_param (line 182) | def test_add_remote_proxy_with_tenant_id_param(self, mock_add_server, ... method test_add_remote_proxy_name_exists (line 213) | def test_add_remote_proxy_name_exists(self, mock_add_server, mock_get_... method test_add_remote_proxy_connection_failed (line 231) | def test_add_remote_proxy_connection_failed(self, mock_add_server, moc... method test_add_remote_proxy_with_authorization_token (line 250) | def test_add_remote_proxy_with_authorization_token(self, mock_add_serv... method test_add_remote_proxy_database_error (line 281) | def test_add_remote_proxy_database_error(self, mock_add_server, mock_g... class TestDeleteRemoteProxies (line 300) | class TestDeleteRemoteProxies: method test_delete_remote_proxy_success (line 305) | def test_delete_remote_proxy_success(self, mock_delete_server, mock_ge... method test_delete_remote_proxy_with_tenant_id_param (line 332) | def test_delete_remote_proxy_with_tenant_id_param(self, mock_delete_se... method test_delete_remote_proxy_database_error (line 358) | def test_delete_remote_proxy_database_error(self, mock_delete_server, ... class TestGetRemoteProxies (line 377) | class TestGetRemoteProxies: method test_get_remote_proxies_success (line 382) | def test_get_remote_proxies_success(self, mock_get_list, mock_get_user... method test_get_remote_proxies_with_tenant_id_param (line 419) | def test_get_remote_proxies_with_tenant_id_param(self, mock_get_list, ... method test_get_remote_proxies_error (line 436) | def test_get_remote_proxies_error(self, mock_get_list, mock_get_user_i... method test_get_remote_proxies_is_need_auth_false_excludes_token (line 452) | def test_get_remote_proxies_is_need_auth_false_excludes_token(self, mo... class TestGetMCPRecord (line 496) | class TestGetMCPRecord: method test_get_mcp_record_success (line 501) | def test_get_mcp_record_success(self, mock_get_record, mock_get_user_i... method test_get_mcp_record_with_tenant_id_param (line 531) | def test_get_mcp_record_with_tenant_id_param(self, mock_get_record, mo... method test_get_mcp_record_not_found (line 556) | def test_get_mcp_record_not_found(self, mock_get_record, mock_get_user... method test_get_mcp_record_with_none_values (line 577) | def test_get_mcp_record_with_none_values(self, mock_get_record, mock_g... method test_get_mcp_record_exception (line 601) | def test_get_mcp_record_exception(self, mock_get_record, mock_get_user... class TestCheckMCPHealth (line 616) | class TestCheckMCPHealth: method test_check_mcp_health_success (line 621) | def test_check_mcp_health_success(self, mock_health_check, mock_get_us... method test_check_mcp_health_with_tenant_id_param (line 644) | def test_check_mcp_health_with_tenant_id_param(self, mock_health_check... method test_check_mcp_health_connection_error (line 667) | def test_check_mcp_health_connection_error(self, mock_health_check, mo... method test_check_mcp_health_database_error (line 691) | def test_check_mcp_health_database_error(self, mock_health_check, mock... class TestIntegration (line 710) | class TestIntegration: method test_full_lifecycle (line 717) | def test_full_lifecycle(self, mock_delete, mock_get_list, mock_add, mo... class TestErrorHandling (line 758) | class TestErrorHandling: method test_authorization_header_handling (line 763) | def test_authorization_header_handling(self, mock_get_list, mock_get_u... method test_unexpected_error_handling (line 778) | def test_unexpected_error_handling(self, mock_add_server, mock_get_use... class TestDataValidation (line 795) | class TestDataValidation: method test_missing_parameters (line 798) | def test_missing_parameters(self): method test_invalid_url_format (line 806) | def test_invalid_url_format(self, mock_add_server, mock_get_user_info): class TestAddMCPFromConfig (line 825) | class TestAddMCPFromConfig: method test_add_mcp_from_config_success (line 832) | def test_add_mcp_from_config_success(self, mock_check_name, mock_add_s... method test_add_mcp_from_config_with_tenant_id_param (line 875) | def test_add_mcp_from_config_with_tenant_id_param(self, mock_check_nam... method test_add_mcp_from_config_multiple_servers (line 924) | def test_add_mcp_from_config_multiple_servers(self, mock_check_name, m... method test_add_mcp_from_config_missing_command (line 976) | def test_add_mcp_from_config_missing_command(self, mock_check_name, mo... method test_add_mcp_from_config_empty_command (line 1003) | def test_add_mcp_from_config_empty_command(self, mock_check_name, mock... method test_add_mcp_from_config_missing_port (line 1032) | def test_add_mcp_from_config_missing_port(self, mock_check_name, mock_... method test_add_mcp_from_config_name_exists (line 1060) | def test_add_mcp_from_config_name_exists(self, mock_add_server, mock_c... method test_add_mcp_from_config_name_exists_early_check (line 1093) | def test_add_mcp_from_config_name_exists_early_check(self, mock_add_se... method test_add_mcp_from_config_container_error (line 1125) | def test_add_mcp_from_config_container_error(self, mock_check_name, mo... method test_add_mcp_from_config_image_not_found_lowercase (line 1158) | def test_add_mcp_from_config_image_not_found_lowercase(self, mock_chec... method test_add_mcp_from_config_image_not_found_uppercase (line 1193) | def test_add_mcp_from_config_image_not_found_uppercase(self, mock_chec... method test_add_mcp_from_config_image_not_found_with_404 (line 1228) | def test_add_mcp_from_config_image_not_found_with_404(self, mock_check... method test_add_mcp_from_config_image_not_found_multiple_services (line 1264) | def test_add_mcp_from_config_image_not_found_multiple_services(self, m... method test_add_mcp_from_config_unexpected_error_in_loop (line 1315) | def test_add_mcp_from_config_unexpected_error_in_loop(self, mock_check... method test_add_mcp_from_config_all_fail (line 1347) | def test_add_mcp_from_config_all_fail(self, mock_check_name, mock_cont... method test_add_mcp_from_config_docker_unavailable (line 1379) | def test_add_mcp_from_config_docker_unavailable(self, mock_check_name,... method test_add_mcp_from_config_with_custom_image (line 1409) | def test_add_mcp_from_config_with_custom_image(self, mock_check_name, ... method test_add_mcp_from_config_outer_exception (line 1448) | def test_add_mcp_from_config_outer_exception(self, mock_check_name, mo... class TestStopMCPContainer (line 1477) | class TestStopMCPContainer: method test_stop_mcp_container_success (line 1483) | def test_stop_mcp_container_success(self, mock_container_manager_class... method test_stop_mcp_container_not_found (line 1511) | def test_stop_mcp_container_not_found(self, mock_container_manager_cla... method test_stop_mcp_container_docker_unavailable (line 1532) | def test_stop_mcp_container_docker_unavailable(self, mock_container_ma... method test_stop_mcp_container_exception (line 1551) | def test_stop_mcp_container_exception(self, mock_container_manager_cla... class TestListMCPContainers (line 1575) | class TestListMCPContainers: method test_list_mcp_containers_success (line 1582) | def test_list_mcp_containers_success(self, mock_get_list, mock_attach_... method test_list_mcp_containers_with_tenant_id_param (line 1633) | def test_list_mcp_containers_with_tenant_id_param(self, mock_get_list,... method test_list_mcp_containers_empty (line 1662) | def test_list_mcp_containers_empty(self, mock_get_list, mock_attach_pe... method test_list_mcp_containers_docker_unavailable (line 1688) | def test_list_mcp_containers_docker_unavailable(self, mock_get_list, m... method test_list_mcp_containers_exception (line 1708) | def test_list_mcp_containers_exception(self, mock_get_list, mock_conta... class TestUploadMCPImageValidation (line 1732) | class TestUploadMCPImageValidation: method test_upload_mcp_image_success (line 1737) | def test_upload_mcp_image_success(self, mock_get_user_info, mock_uploa... method test_upload_mcp_image_with_tenant_id_param (line 1787) | def test_upload_mcp_image_with_tenant_id_param(self, mock_upload_servi... method test_upload_mcp_image_invalid_file_type (line 1827) | def test_upload_mcp_image_invalid_file_type(self, mock_get_user_info): method test_upload_mcp_image_file_too_large (line 1843) | def test_upload_mcp_image_file_too_large(self, mock_get_user_info): method test_upload_mcp_image_auto_service_name (line 1864) | def test_upload_mcp_image_auto_service_name(self, mock_get_user_info, ... method test_upload_mcp_image_invalid_env_vars_json (line 1896) | def test_upload_mcp_image_invalid_env_vars_json(self, mock_check_name,... method test_upload_mcp_image_name_conflict (line 1922) | def test_upload_mcp_image_name_conflict(self, mock_get_user_info, mock... method test_upload_mcp_image_container_error (line 1946) | def test_upload_mcp_image_container_error(self, mock_get_user_info, mo... method test_upload_mcp_image_docker_unavailable (line 1969) | def test_upload_mcp_image_docker_unavailable(self, mock_get_user_info,... class TestGetContainerLogs (line 1997) | class TestGetContainerLogs: method test_get_container_logs_success (line 2002) | def test_get_container_logs_success(self, mock_container_manager_class... method test_get_container_logs_with_follow (line 2059) | def test_get_container_logs_with_follow(self, mock_container_manager_c... method test_get_container_logs_default_follow (line 2090) | def test_get_container_logs_default_follow(self, mock_container_manage... method test_get_container_logs_docker_unavailable (line 2114) | def test_get_container_logs_docker_unavailable(self, mock_container_ma... method test_get_container_logs_stream_error (line 2133) | def test_get_container_logs_stream_error(self, mock_container_manager_... method test_get_container_logs_exception (line 2163) | def test_get_container_logs_exception(self, mock_container_manager_cla... method test_get_container_logs_with_tenant_id (line 2196) | def test_get_container_logs_with_tenant_id(self, mock_container_manage... method test_get_container_logs_sse_format (line 2220) | def test_get_container_logs_sse_format(self, mock_container_manager_cl... class TestUploadMCPImageWithServiceLayer (line 2259) | class TestUploadMCPImageWithServiceLayer: method test_upload_mcp_image_success_service_layer (line 2264) | def test_upload_mcp_image_success_service_layer(self, mock_get_user_in... method test_upload_mcp_image_auto_service_name (line 2310) | def test_upload_mcp_image_auto_service_name(self, mock_get_user_info, ... method test_upload_mcp_image_validation_error_from_service (line 2348) | def test_upload_mcp_image_validation_error_from_service(self, mock_get... method test_upload_mcp_image_name_conflict (line 2371) | def test_upload_mcp_image_name_conflict(self, mock_get_user_info, mock... method test_upload_mcp_image_container_error (line 2394) | def test_upload_mcp_image_container_error(self, mock_get_user_info, mo... method test_upload_mcp_image_docker_unavailable (line 2416) | def test_upload_mcp_image_docker_unavailable(self, mock_get_user_info,... method test_upload_mcp_image_general_exception (line 2439) | def test_upload_mcp_image_general_exception(self, mock_get_user_info, ... class TestUploadMCPImageValidationAdditional (line 2466) | class TestUploadMCPImageValidationAdditional: method test_upload_mcp_image_invalid_port_range_fastapi_validation (line 2469) | def test_upload_mcp_image_invalid_port_range_fastapi_validation(self): method test_upload_mcp_image_env_vars_validation_in_service (line 2501) | def test_upload_mcp_image_env_vars_validation_in_service(self, mock_ge... class MockMCPUpdateRequest (line 2526) | class MockMCPUpdateRequest: method __init__ (line 2529) | def __init__(self, current_service_name, current_mcp_url, new_service_... class TestUpdateRemoteProxy (line 2536) | class TestUpdateRemoteProxy: method test_update_remote_proxy_success (line 2541) | def test_update_remote_proxy_success(self, mock_update_server, mock_ge... method test_update_remote_proxy_with_tenant_id_param (line 2582) | def test_update_remote_proxy_with_tenant_id_param(self, mock_update_se... method test_update_remote_proxy_name_conflict (line 2608) | def test_update_remote_proxy_name_conflict(self, mock_update_server, m... method test_update_remote_proxy_connection_failed (line 2631) | def test_update_remote_proxy_connection_failed(self, mock_update_serve... method test_update_remote_proxy_current_name_not_exist (line 2654) | def test_update_remote_proxy_current_name_not_exist(self, mock_update_... method test_update_remote_proxy_database_error (line 2677) | def test_update_remote_proxy_database_error(self, mock_update_server, ... method test_update_remote_proxy_same_name_and_url (line 2702) | def test_update_remote_proxy_same_name_and_url(self, mock_update_serve... method test_update_remote_proxy_invalid_request_data (line 2722) | def test_update_remote_proxy_invalid_request_data(self): method test_update_remote_proxy_with_special_characters (line 2738) | def test_update_remote_proxy_with_special_characters(self, mock_update... FILE: test/backend/app/test_tenant_app.py class TestTenantCreation (line 44) | class TestTenantCreation: method test_create_tenant_success (line 47) | def test_create_tenant_success(self): method test_create_tenant_unauthorized (line 78) | def test_create_tenant_unauthorized(self): method test_create_tenant_validation_error (line 93) | def test_create_tenant_validation_error(self): method test_create_tenant_unexpected_error (line 111) | def test_create_tenant_unexpected_error(self): class TestTenantRetrieval (line 130) | class TestTenantRetrieval: method test_get_tenant_success (line 133) | def test_get_tenant_success(self): method test_get_tenant_not_found (line 154) | def test_get_tenant_not_found(self): method test_get_tenant_unexpected_error (line 165) | def test_get_tenant_unexpected_error(self): method test_get_all_tenants_success (line 176) | def test_get_all_tenants_success(self): method test_get_all_tenants_pagination (line 217) | def test_get_all_tenants_pagination(self): method test_get_all_tenants_unexpected_error (line 242) | def test_get_all_tenants_unexpected_error(self): class TestTenantUpdate (line 259) | class TestTenantUpdate: method test_update_tenant_success (line 262) | def test_update_tenant_success(self): method test_update_tenant_not_found (line 295) | def test_update_tenant_not_found(self): method test_update_tenant_validation_error (line 313) | def test_update_tenant_validation_error(self): method test_update_tenant_unauthorized (line 331) | def test_update_tenant_unauthorized(self): method test_update_tenant_unexpected_error (line 346) | def test_update_tenant_unexpected_error(self): class TestTenantDeletion (line 365) | class TestTenantDeletion: method test_delete_tenant_success (line 368) | def test_delete_tenant_success(self): method test_delete_tenant_not_found (line 384) | def test_delete_tenant_not_found(self): method test_delete_tenant_validation_error (line 398) | def test_delete_tenant_validation_error(self): method test_delete_tenant_unauthorized (line 412) | def test_delete_tenant_unauthorized(self): method test_delete_tenant_unexpected_error (line 423) | def test_delete_tenant_unexpected_error(self): FILE: test/backend/app/test_tenant_config_app.py class TestTenantConfigApp (line 54) | class TestTenantConfigApp(unittest.TestCase): method setUpClass (line 56) | def setUpClass(cls): method setUp (line 89) | def setUp(self): method test_get_deployment_version_success (line 117) | def test_get_deployment_version_success(self): FILE: test/backend/app/test_tool_config_app.py class TestListToolsAPI (line 49) | class TestListToolsAPI: method test_list_tools_success (line 54) | def test_list_tools_success(self, mock_list_all_tools, mock_get_user_id): method test_list_tools_auth_error (line 74) | def test_list_tools_auth_error(self, mock_get_user_id): method test_list_tools_service_error (line 86) | def test_list_tools_service_error(self, mock_list_all_tools, mock_get_... class TestSearchToolInfoAPI (line 98) | class TestSearchToolInfoAPI: method test_search_tool_info_success (line 103) | def test_search_tool_info_success(self, mock_search_tool_info, mock_ge... method test_search_tool_info_service_error (line 124) | def test_search_tool_info_service_error(self, mock_search_tool_info, m... class TestUpdateToolInfoAPI (line 139) | class TestUpdateToolInfoAPI: method test_update_tool_info_success (line 144) | def test_update_tool_info_success(self, mock_update_tool_info, mock_ge... method test_update_tool_info_service_error (line 175) | def test_update_tool_info_service_error(self, mock_update_tool_info, m... class TestScanAndUpdateToolAPI (line 196) | class TestScanAndUpdateToolAPI: method test_scan_and_update_tool_success (line 201) | def test_scan_and_update_tool_success(self, mock_update_tool_list, moc... method test_scan_and_update_tool_mcp_error (line 219) | def test_scan_and_update_tool_mcp_error(self, mock_update_tool_list, m... method test_scan_and_update_tool_general_error (line 233) | def test_scan_and_update_tool_general_error(self, mock_update_tool_lis... class TestIntegration (line 245) | class TestIntegration: method test_full_tool_lifecycle (line 252) | def test_full_tool_lifecycle(self, mock_update_tool_info, mock_search_... class TestErrorHandling (line 287) | class TestErrorHandling: method test_authorization_header_handling (line 292) | def test_authorization_header_handling(self, mock_list_all_tools, mock... method test_missing_parameters (line 313) | def test_missing_parameters(self): method test_validate_tool_success (line 325) | def test_validate_tool_success(self, mock_validate_tool, mock_get_user... method test_validate_tool_mcp_connection_error (line 352) | def test_validate_tool_mcp_connection_error(self, mock_validate_tool, ... method test_validate_tool_not_found_error (line 377) | def test_validate_tool_not_found_error(self, mock_validate_tool, mock_... method test_validate_tool_general_error (line 401) | def test_validate_tool_general_error(self, mock_validate_tool, mock_ge... method test_validate_tool_auth_error (line 424) | def test_validate_tool_auth_error(self, mock_get_user_id): method test_validate_tool_with_authorization_header (line 446) | def test_validate_tool_with_authorization_header(self, mock_validate_t... method test_validate_tool_missing_required_fields (line 465) | def test_validate_tool_missing_required_fields(self): class TestEdgeCases (line 494) | class TestEdgeCases: method test_list_tools_empty_response (line 499) | def test_list_tools_empty_response(self, mock_list_all_tools, mock_get... method test_search_tool_info_not_found (line 512) | def test_search_tool_info_not_found(self, mock_search_tool_info, mock_... method test_update_tool_info_with_empty_params (line 528) | def test_update_tool_info_with_empty_params(self, mock_update_tool_inf... method test_invalid_json_payload (line 547) | def test_invalid_json_payload(self): method test_missing_content_type_header (line 557) | def test_missing_content_type_header(self): method test_auth_with_invalid_token_format (line 569) | def test_auth_with_invalid_token_format(self, mock_get_user_id): method test_scan_tool_auth_failure (line 583) | def test_scan_tool_auth_failure(self, mock_get_user_id): class TestLoadLastToolConfigAPI (line 594) | class TestLoadLastToolConfigAPI: method test_load_last_tool_config_success (line 599) | def test_load_last_tool_config_success(self, mock_load_config, mock_ge... method test_load_last_tool_config_not_found (line 617) | def test_load_last_tool_config_not_found(self, mock_load_config, mock_... method test_load_last_tool_config_service_error (line 634) | def test_load_last_tool_config_service_error(self, mock_load_config, m... method test_load_last_tool_config_auth_error (line 649) | def test_load_last_tool_config_auth_error(self, mock_get_user_id): method test_load_last_tool_config_with_authorization_header (line 661) | def test_load_last_tool_config_with_authorization_header(self, mock_lo... class TestDataValidation (line 675) | class TestDataValidation: method test_search_tool_negative_ids (line 678) | def test_search_tool_negative_ids(self): method test_update_tool_invalid_data_types (line 689) | def test_update_tool_invalid_data_types(self): method test_search_tool_missing_required_fields (line 703) | def test_search_tool_missing_required_fields(self): method test_update_tool_missing_required_fields (line 719) | def test_update_tool_missing_required_fields(self): class TestConcurrency (line 733) | class TestConcurrency: method test_multiple_simultaneous_requests (line 738) | def test_multiple_simultaneous_requests(self, mock_list_all_tools, moc... FILE: test/backend/app/test_user_app.py class MockToolConfig (line 18) | class MockToolConfig(BaseModel): class TestGetUsersEndpoint (line 61) | class TestGetUsersEndpoint: method test_get_users_success_with_pagination (line 64) | def test_get_users_success_with_pagination(self): method test_get_users_success_without_pagination (line 94) | def test_get_users_success_without_pagination(self): method test_get_users_success_with_only_page (line 119) | def test_get_users_success_with_only_page(self): method test_get_users_success_with_only_page_size (line 139) | def test_get_users_success_with_only_page_size(self): method test_get_users_success_with_asc_sort (line 159) | def test_get_users_success_with_asc_sort(self): method test_get_users_empty_list (line 182) | def test_get_users_empty_list(self): method test_get_users_with_custom_pagination (line 204) | def test_get_users_with_custom_pagination(self): method test_get_users_with_missing_total_pages (line 230) | def test_get_users_with_missing_total_pages(self): method test_get_users_unexpected_error (line 252) | def test_get_users_unexpected_error(self): class TestUpdateUserEndpoint (line 268) | class TestUpdateUserEndpoint: method test_update_user_success (line 271) | def test_update_user_success(self): method test_update_user_validation_error (line 298) | def test_update_user_validation_error(self): method test_update_user_unexpected_error (line 318) | def test_update_user_unexpected_error(self): class TestDeleteUserEndpoint (line 338) | class TestDeleteUserEndpoint: method test_delete_user_success (line 341) | def test_delete_user_success(self): method test_delete_user_validation_error (line 363) | def test_delete_user_validation_error(self): method test_delete_user_unexpected_error (line 380) | def test_delete_user_unexpected_error(self): class TestDataValidation (line 401) | class TestDataValidation: method test_list_users_invalid_page (line 404) | def test_list_users_invalid_page(self): method test_list_users_invalid_page_size (line 413) | def test_list_users_invalid_page_size(self): method test_list_users_page_size_too_large (line 422) | def test_list_users_page_size_too_large(self): method test_update_user_invalid_role (line 431) | def test_update_user_invalid_role(self): method test_update_user_empty_update_data (line 445) | def test_update_user_empty_update_data(self): FILE: test/backend/app/test_user_management_app.py class MockUser (line 48) | class MockUser: method __init__ (line 51) | def __init__(self, user_id, email): class TestServiceHealth (line 56) | class TestServiceHealth: method test_service_health_available (line 60) | def test_service_health_available(self, mock_health_check): method test_service_health_unavailable (line 72) | def test_service_health_unavailable(self, mock_health_check): method test_service_health_exception (line 84) | def test_service_health_exception(self, mock_health_check): class TestUserSignup (line 96) | class TestUserSignup: method test_signup_success_regular_user (line 99) | def test_signup_success_regular_user(self): method test_signup_success_regular_user_with_auto_login_false (line 124) | def test_signup_success_regular_user_with_auto_login_false(self): method test_signup_success_admin_user (line 150) | def test_signup_success_admin_user(self): method test_signup_success_admin_user_with_auto_login_false (line 175) | def test_signup_success_admin_user_with_auto_login_false(self): method test_signup_no_invite_code_exception (line 200) | def test_signup_no_invite_code_exception(self): method test_signup_incorrect_invite_code_exception (line 218) | def test_signup_incorrect_invite_code_exception(self): method test_signup_registration_service_exception (line 236) | def test_signup_registration_service_exception(self): method test_signup_email_already_exists (line 254) | def test_signup_email_already_exists(self): method test_signup_weak_password (line 272) | def test_signup_weak_password(self): method test_signup_unknown_error (line 290) | def test_signup_unknown_error(self): class TestUserSignin (line 309) | class TestUserSignin: method test_signin_success (line 312) | def test_signin_success(self): method test_signin_invalid_credentials (line 337) | def test_signin_invalid_credentials(self): method test_signin_unknown_error (line 354) | def test_signin_unknown_error(self): class TestRefreshToken (line 372) | class TestRefreshToken: method test_refresh_token_success (line 375) | def test_refresh_token_success(self): method test_refresh_token_no_authorization (line 392) | def test_refresh_token_no_authorization(self): method test_refresh_token_no_refresh_token (line 403) | def test_refresh_token_no_refresh_token(self): method test_refresh_token_error (line 415) | def test_refresh_token_error(self): class TestLogout (line 431) | class TestLogout: method test_logout_success (line 435) | def test_logout_success(self, mock_get_client): method test_logout_no_authorization (line 451) | def test_logout_no_authorization(self): method test_logout_signout_error_ignored (line 460) | def test_logout_signout_error_ignored(self, mock_get_client): method test_logout_error (line 478) | def test_logout_error(self, mock_get_client): class TestGetSession (line 492) | class TestGetSession: method test_get_session_success (line 496) | def test_get_session_success(self, mock_get_session): method test_get_session_no_authorization (line 515) | def test_get_session_no_authorization(self): method test_get_session_invalid (line 525) | def test_get_session_invalid(self, mock_get_session): method test_get_session_error (line 539) | def test_get_session_error(self, mock_get_session): class TestGetCurrentUserId (line 553) | class TestGetCurrentUserId: method test_get_user_id_success_valid_token (line 557) | def test_get_user_id_success_valid_token(self, mock_validate): method test_get_user_id_token_validation_failed_returns_401 (line 574) | def test_get_user_id_token_validation_failed_returns_401(self, mock_va... method test_get_user_id_invalid_session (line 589) | def test_get_user_id_invalid_session(self, mock_validate): method test_get_user_id_no_authorization (line 602) | def test_get_user_id_no_authorization(self): method test_get_user_id_error (line 612) | def test_get_user_id_error(self, mock_validate): class TestCurrentUserInfo (line 626) | class TestCurrentUserInfo: method test_current_user_info_success (line 631) | def test_current_user_info_success(self, mock_get_user_info, mock_vali... method test_current_user_info_no_authorization (line 669) | def test_current_user_info_no_authorization(self): method test_current_user_info_user_not_found (line 680) | def test_current_user_info_user_not_found(self, mock_get_user_info, mo... method test_current_user_info_error (line 699) | def test_current_user_info_error(self, mock_get_user_info, mock_valida... class TestRevokeUserAccount (line 717) | class TestRevokeUserAccount: method test_revoke_success_regular_user (line 723) | def test_revoke_success_regular_user(self, mock_get_ids, mock_validate... method test_revoke_forbidden_admin (line 740) | def test_revoke_forbidden_admin(self, mock_get_ids, mock_validate): method test_revoke_no_authorization (line 753) | def test_revoke_no_authorization(self): method test_revoke_invalid_session (line 760) | def test_revoke_invalid_session(self, mock_get_ids, mock_validate): method test_revoke_error (line 774) | def test_revoke_error(self, mock_get_ids, mock_validate, mock_revoke): class TestIntegration (line 788) | class TestIntegration: method test_complete_user_flow (line 795) | def test_complete_user_flow(self, mock_get_client, mock_get_session, m... class TestDataValidation (line 845) | class TestDataValidation: method test_signup_missing_fields (line 848) | def test_signup_missing_fields(self): method test_signin_missing_fields (line 856) | def test_signin_missing_fields(self): method test_signup_invalid_email_format (line 864) | def test_signup_invalid_email_format(self): class TestCreateTokenEndpoint (line 877) | class TestCreateTokenEndpoint: method test_create_token_success (line 882) | def test_create_token_success(self, mock_get_user_id, mock_create_token): method test_create_token_no_authorization (line 903) | def test_create_token_no_authorization(self, mock_get_user_id, mock_cr... method test_create_token_missing_user_id (line 912) | def test_create_token_missing_user_id(self, mock_get_user_id): method test_create_token_exception (line 927) | def test_create_token_exception(self, mock_get_user_id, mock_create_to... class TestListTokensEndpoint (line 940) | class TestListTokensEndpoint: method test_list_tokens_success (line 945) | def test_list_tokens_success(self, mock_get_user_id, mock_list_tokens): method test_list_tokens_no_authorization (line 964) | def test_list_tokens_no_authorization(self, mock_get_user_id): method test_list_tokens_forbidden_other_user (line 973) | def test_list_tokens_forbidden_other_user(self, mock_get_user_id): method test_list_tokens_empty (line 988) | def test_list_tokens_empty(self, mock_get_user_id, mock_list_tokens): method test_list_tokens_exception (line 1004) | def test_list_tokens_exception(self, mock_get_user_id, mock_list_tokens): class TestDeleteTokenEndpoint (line 1017) | class TestDeleteTokenEndpoint: method test_delete_token_success (line 1022) | def test_delete_token_success(self, mock_get_user_id, mock_delete_token): method test_delete_token_no_authorization (line 1038) | def test_delete_token_no_authorization(self, mock_get_user_id): method test_delete_token_not_found (line 1048) | def test_delete_token_not_found(self, mock_get_user_id, mock_delete_to... method test_delete_token_exception (line 1064) | def test_delete_token_exception(self, mock_get_user_id, mock_delete_to... FILE: test/backend/app/test_vectordatabase_app.py class SearchRequest (line 35) | class SearchRequest(BaseModel): class HybridSearchRequest (line 41) | class HybridSearchRequest(SearchRequest): class IndexingResponse (line 46) | class IndexingResponse(BaseModel): class _ChunkCreateRequest (line 71) | class _ChunkCreateRequest(BaseModel): class _ChunkUpdateRequest (line 80) | class _ChunkUpdateRequest(BaseModel): function vdb_core_mock (line 117) | def vdb_core_mock(): function redis_service_mock (line 122) | def redis_service_mock(): function auth_data (line 130) | def auth_data(): function test_create_new_index_success (line 142) | async def test_create_new_index_success(vdb_core_mock, auth_data): function test_create_new_index_with_group_permissions (line 174) | async def test_create_new_index_with_group_permissions(vdb_core_mock, au... function test_create_new_index_with_partial_group_permissions (line 212) | async def test_create_new_index_with_partial_group_permissions(vdb_core_... function test_create_new_index_error (line 241) | async def test_create_new_index_error(vdb_core_mock, auth_data): function test_delete_index_success (line 264) | async def test_delete_index_success(vdb_core_mock, redis_service_mock, a... function test_delete_index_redis_error (line 336) | async def test_delete_index_redis_error(vdb_core_mock, redis_service_moc... function test_get_list_indices_success (line 409) | async def test_get_list_indices_success(vdb_core_mock, auth_data): function test_get_list_indices_error (line 440) | async def test_get_list_indices_error(vdb_core_mock, auth_data): function test_get_list_indices_with_tenant_id_filter (line 461) | async def test_get_list_indices_with_tenant_id_filter(vdb_core_mock, aut... function test_get_list_indices_uses_auth_tenant_id_when_no_query_param (line 529) | async def test_get_list_indices_uses_auth_tenant_id_when_no_query_param(... function test_get_list_indices_with_stats_includes_tenant_id (line 558) | async def test_get_list_indices_with_stats_includes_tenant_id(vdb_core_m... function test_get_list_indices_auth_exception (line 608) | async def test_get_list_indices_auth_exception(vdb_core_mock): function test_create_index_documents_success (line 629) | async def test_create_index_documents_success(vdb_core_mock, auth_data): function test_create_index_documents_exception (line 664) | async def test_create_index_documents_exception(vdb_core_mock, auth_data): function test_create_index_documents_auth_exception (line 697) | async def test_create_index_documents_auth_exception(vdb_core_mock, auth... function test_create_index_documents_embedding_model_exception (line 729) | async def test_create_index_documents_embedding_model_exception(vdb_core... function test_create_index_documents_validation_exception (line 762) | async def test_create_index_documents_validation_exception(vdb_core_mock... function test_get_index_files_success (line 795) | async def test_get_index_files_success(vdb_core_mock): function test_get_index_files_exception (line 827) | async def test_get_index_files_exception(vdb_core_mock): function test_get_index_files_validation_exception (line 859) | async def test_get_index_files_validation_exception(vdb_core_mock): function test_get_index_files_timeout_exception (line 888) | async def test_get_index_files_timeout_exception(vdb_core_mock): function test_get_index_files_permission_exception (line 917) | async def test_get_index_files_permission_exception(vdb_core_mock): function test_get_index_chunks_success (line 946) | async def test_get_index_chunks_success(vdb_core_mock): function test_get_index_chunks_error (line 983) | async def test_get_index_chunks_error(vdb_core_mock): function test_create_chunk_success (line 1010) | async def test_create_chunk_success(vdb_core_mock, auth_data): function test_create_chunk_passes_tenant_id_to_service (line 1045) | async def test_create_chunk_passes_tenant_id_to_service(vdb_core_mock, a... function test_create_chunk_error (line 1082) | async def test_create_chunk_error(vdb_core_mock, auth_data): function test_update_chunk_success (line 1111) | async def test_update_chunk_success(vdb_core_mock, auth_data): function test_update_chunk_value_error (line 1140) | async def test_update_chunk_value_error(vdb_core_mock, auth_data): function test_update_chunk_exception (line 1169) | async def test_update_chunk_exception(vdb_core_mock, auth_data): function test_delete_chunk_success (line 1197) | async def test_delete_chunk_success(vdb_core_mock, auth_data): function test_delete_chunk_not_found (line 1221) | async def test_delete_chunk_not_found(vdb_core_mock, auth_data): function test_delete_chunk_exception (line 1244) | async def test_delete_chunk_exception(vdb_core_mock, auth_data): function test_health_check_success (line 1267) | async def test_health_check_success(vdb_core_mock): function test_check_knowledge_base_exist_success (line 1288) | async def test_check_knowledge_base_exist_success(vdb_core_mock, auth_da... function test_check_knowledge_base_exist_error (line 1310) | async def test_check_knowledge_base_exist_error(vdb_core_mock, auth_data): function test_update_index_success (line 1332) | async def test_update_index_success(auth_data): function test_update_index_partial_update (line 1370) | async def test_update_index_partial_update(auth_data): function test_update_index_value_error (line 1404) | async def test_update_index_value_error(auth_data): function test_update_index_not_found (line 1432) | async def test_update_index_not_found(auth_data): function test_update_index_exception (line 1459) | async def test_update_index_exception(auth_data): function test_update_index_auth_exception (line 1486) | async def test_update_index_auth_exception(auth_data): function test_delete_index_exception (line 1513) | async def test_delete_index_exception(vdb_core_mock, auth_data): function test_delete_index_auth_exception (line 1546) | async def test_delete_index_auth_exception(vdb_core_mock, auth_data): function test_delete_documents_success (line 1574) | async def test_delete_documents_success(vdb_core_mock, redis_service_mock): function test_delete_documents_redis_error (line 1634) | async def test_delete_documents_redis_error(vdb_core_mock, redis_service... function test_delete_documents_es_exception (line 1688) | async def test_delete_documents_es_exception(vdb_core_mock): function test_delete_documents_redis_warnings (line 1721) | async def test_delete_documents_redis_warnings(vdb_core_mock, redis_serv... function test_delete_documents_validation_exception (line 1782) | async def test_delete_documents_validation_exception(vdb_core_mock): function test_health_check_exception (line 1815) | async def test_health_check_exception(vdb_core_mock): function test_get_document_error_info_not_found (line 1842) | async def test_get_document_error_info_not_found(vdb_core_mock, auth_data): function test_get_document_error_info_no_task_id (line 1857) | async def test_get_document_error_info_no_task_id(auth_data): function test_get_document_error_info_json_error_code (line 1882) | async def test_get_document_error_info_json_error_code(auth_data): function test_get_document_error_info_regex_error_code (line 1913) | async def test_get_document_error_info_regex_error_code(auth_data): function test_health_check_timeout_exception (line 1944) | async def test_health_check_timeout_exception(vdb_core_mock): function test_health_check_connection_exception (line 1971) | async def test_health_check_connection_exception(vdb_core_mock): function test_health_check_permission_exception (line 1999) | async def test_health_check_permission_exception(vdb_core_mock): function test_health_check_validation_exception (line 2027) | async def test_health_check_validation_exception(vdb_core_mock): function test_hybrid_search_success (line 2055) | async def test_hybrid_search_success(vdb_core_mock, auth_data): function test_hybrid_search_value_error (line 2107) | async def test_hybrid_search_value_error(vdb_core_mock, auth_data): function test_get_index_chunks_value_error (line 2138) | async def test_get_index_chunks_value_error(vdb_core_mock): function test_create_chunk_value_error (line 2163) | async def test_create_chunk_value_error(vdb_core_mock, auth_data): function test_hybrid_search_exception (line 2191) | async def test_hybrid_search_exception(vdb_core_mock, auth_data): FILE: test/backend/app/test_voice_app.py class MockVoiceService (line 20) | class MockVoiceService: method __init__ (line 21) | def __init__(self): class TestVoiceApp (line 32) | class TestVoiceApp: method setup_method (line 35) | def setup_method(self): method test_stt_websocket_success (line 42) | def test_stt_websocket_success(self): method test_stt_websocket_stt_connection_error (line 54) | def test_stt_websocket_stt_connection_error(self): method test_stt_websocket_general_error (line 67) | def test_stt_websocket_general_error(self): method test_tts_websocket_success (line 80) | def test_tts_websocket_success(self): method test_tts_websocket_no_text (line 95) | def test_tts_websocket_no_text(self): method test_tts_websocket_tts_connection_error (line 110) | def test_tts_websocket_tts_connection_error(self): method test_tts_websocket_general_error (line 125) | def test_tts_websocket_general_error(self): method test_check_voice_connectivity_success (line 140) | def test_check_voice_connectivity_success(self): method test_check_voice_connectivity_failure (line 158) | def test_check_voice_connectivity_failure(self): method test_check_voice_connectivity_voice_service_error (line 176) | def test_check_voice_connectivity_voice_service_error(self): method test_check_voice_connectivity_stt_connection_error (line 192) | def test_check_voice_connectivity_stt_connection_error(self): method test_check_voice_connectivity_tts_connection_error (line 208) | def test_check_voice_connectivity_tts_connection_error(self): method test_check_voice_connectivity_voice_config_error (line 224) | def test_check_voice_connectivity_voice_config_error(self): method test_check_voice_connectivity_unexpected_error (line 240) | def test_check_voice_connectivity_unexpected_error(self): method test_check_voice_connectivity_missing_model_type (line 256) | def test_check_voice_connectivity_missing_model_type(self): method test_check_voice_connectivity_invalid_json (line 266) | def test_check_voice_connectivity_invalid_json(self): class TestVoiceAppIntegration (line 277) | class TestVoiceAppIntegration: method setup_method (line 280) | def setup_method(self): method test_voice_connectivity_real_logic_stt (line 287) | def test_voice_connectivity_real_logic_stt(self): method test_voice_connectivity_real_logic_tts (line 309) | def test_voice_connectivity_real_logic_tts(self): method test_stt_websocket_real_logic (line 330) | def test_stt_websocket_real_logic(self): method test_tts_websocket_real_logic (line 345) | def test_tts_websocket_real_logic(self): FILE: test/backend/consts/test_error_code.py class TestErrorCodeEnum (line 11) | class TestErrorCodeEnum: method test_dify_error_codes_exist (line 14) | def test_dify_error_codes_exist(self): method test_datamate_error_codes_exist (line 23) | def test_datamate_error_codes_exist(self): method test_me_error_codes_exist (line 27) | def test_me_error_codes_exist(self): method test_idata_error_codes_exist (line 31) | def test_idata_error_codes_exist(self): class TestErrorCodeValues (line 41) | class TestErrorCodeValues: method test_dify_auth_error_value (line 44) | def test_dify_auth_error_value(self): method test_dify_config_invalid_value (line 48) | def test_dify_config_invalid_value(self): method test_dify_connection_error_value (line 52) | def test_dify_connection_error_value(self): method test_dify_service_error_value (line 56) | def test_dify_service_error_value(self): method test_dify_rate_limit_value (line 60) | def test_dify_rate_limit_value(self): method test_dify_response_error_value (line 64) | def test_dify_response_error_value(self): method test_datamate_connection_failed_value (line 68) | def test_datamate_connection_failed_value(self): method test_me_connection_failed_value (line 72) | def test_me_connection_failed_value(self): method test_idata_service_error_value (line 76) | def test_idata_service_error_value(self): method test_idata_config_invalid_value (line 80) | def test_idata_config_invalid_value(self): method test_idata_connection_error_value (line 84) | def test_idata_connection_error_value(self): method test_idata_auth_error_value (line 88) | def test_idata_auth_error_value(self): method test_idata_rate_limit_value (line 92) | def test_idata_rate_limit_value(self): method test_idata_response_error_value (line 96) | def test_idata_response_error_value(self): method test_common_validation_error_value (line 100) | def test_common_validation_error_value(self): method test_common_unauthorized_value (line 104) | def test_common_unauthorized_value(self): method test_common_token_expired_value (line 108) | def test_common_token_expired_value(self): method test_common_token_invalid_value (line 112) | def test_common_token_invalid_value(self): method test_common_rate_limit_exceeded_value (line 116) | def test_common_rate_limit_exceeded_value(self): method test_file_not_found_value (line 120) | def test_file_not_found_value(self): method test_file_too_large_value (line 124) | def test_file_too_large_value(self): method test_common_resource_not_found_value (line 128) | def test_common_resource_not_found_value(self): method test_chat_conversation_not_found_value (line 132) | def test_chat_conversation_not_found_value(self): method test_knowledge_not_found_value (line 136) | def test_knowledge_not_found_value(self): method test_memory_not_found_value (line 140) | def test_memory_not_found_value(self): method test_model_not_found_value (line 144) | def test_model_not_found_value(self): method test_mcp_connection_failed_value (line 148) | def test_mcp_connection_failed_value(self): method test_northbound_request_failed_value (line 152) | def test_northbound_request_failed_value(self): method test_dataprocess_task_failed_value (line 156) | def test_dataprocess_task_failed_value(self): method test_system_unknown_error_value (line 160) | def test_system_unknown_error_value(self): method test_system_internal_error_value (line 164) | def test_system_internal_error_value(self): class TestErrorCodeHttpStatusMapping (line 169) | class TestErrorCodeHttpStatusMapping: method test_dify_auth_error_maps_to_401 (line 172) | def test_dify_auth_error_maps_to_401(self): method test_dify_config_invalid_maps_to_400 (line 176) | def test_dify_config_invalid_maps_to_400(self): method test_dify_connection_error_maps_to_502 (line 180) | def test_dify_connection_error_maps_to_502(self): method test_dify_response_error_maps_to_502 (line 184) | def test_dify_response_error_maps_to_502(self): method test_dify_rate_limit_maps_to_429 (line 188) | def test_dify_rate_limit_maps_to_429(self): method test_common_token_expired_maps_to_401 (line 192) | def test_common_token_expired_maps_to_401(self): method test_common_token_invalid_maps_to_401 (line 196) | def test_common_token_invalid_maps_to_401(self): method test_common_unauthorized_maps_to_401 (line 200) | def test_common_unauthorized_maps_to_401(self): method test_common_forbidden_maps_to_403 (line 204) | def test_common_forbidden_maps_to_403(self): method test_common_rate_limit_exceeded_maps_to_429 (line 208) | def test_common_rate_limit_exceeded_maps_to_429(self): method test_common_validation_error_maps_to_400 (line 212) | def test_common_validation_error_maps_to_400(self): method test_common_parameter_invalid_maps_to_400 (line 216) | def test_common_parameter_invalid_maps_to_400(self): method test_common_missing_required_field_maps_to_400 (line 220) | def test_common_missing_required_field_maps_to_400(self): method test_file_too_large_maps_to_413 (line 224) | def test_file_too_large_maps_to_413(self): method test_file_not_found_maps_to_404 (line 228) | def test_file_not_found_maps_to_404(self): method test_common_resource_not_found_maps_to_404 (line 232) | def test_common_resource_not_found_maps_to_404(self): method test_common_resource_already_exists_maps_to_409 (line 236) | def test_common_resource_already_exists_maps_to_409(self): method test_common_resource_disabled_maps_to_403 (line 240) | def test_common_resource_disabled_maps_to_403(self): method test_system_service_unavailable_maps_to_503 (line 244) | def test_system_service_unavailable_maps_to_503(self): method test_system_timeout_maps_to_504 (line 248) | def test_system_timeout_maps_to_504(self): method test_idata_auth_error_maps_to_401 (line 252) | def test_idata_auth_error_maps_to_401(self): method test_idata_config_invalid_maps_to_400 (line 256) | def test_idata_config_invalid_maps_to_400(self): method test_idata_connection_error_maps_to_502 (line 260) | def test_idata_connection_error_maps_to_502(self): method test_idata_response_error_maps_to_502 (line 264) | def test_idata_response_error_maps_to_502(self): method test_idata_rate_limit_maps_to_429 (line 268) | def test_idata_rate_limit_maps_to_429(self): class TestErrorCodeFormat (line 273) | class TestErrorCodeFormat: method test_all_dify_codes_start_with_1302 (line 276) | def test_all_dify_codes_start_with_1302(self): method test_all_datamate_codes_start_with_1301 (line 290) | def test_all_datamate_codes_start_with_1301(self): method test_all_me_codes_start_with_1303 (line 294) | def test_all_me_codes_start_with_1303(self): method test_all_idata_codes_start_with_1304 (line 298) | def test_all_idata_codes_start_with_1304(self): method test_all_common_auth_codes_start_with_0002 (line 312) | def test_all_common_auth_codes_start_with_0002(self): method test_all_common_validation_codes_start_with_0001 (line 324) | def test_all_common_validation_codes_start_with_0001(self): method test_all_system_codes_start_with_99 (line 335) | def test_all_system_codes_start_with_99(self): method test_all_chat_codes_start_with_01 (line 348) | def test_all_chat_codes_start_with_01(self): method test_all_knowledge_codes_start_with_06 (line 352) | def test_all_knowledge_codes_start_with_06(self): method test_all_mcp_codes_start_with_07 (line 356) | def test_all_mcp_codes_start_with_07(self): method test_all_model_codes_start_with_09 (line 360) | def test_all_model_codes_start_with_09(self): method test_all_memory_codes_start_with_10 (line 364) | def test_all_memory_codes_start_with_10(self): method test_all_northbound_codes_start_with_14 (line 368) | def test_all_northbound_codes_start_with_14(self): method test_all_dataprocess_codes_start_with_15 (line 372) | def test_all_dataprocess_codes_start_with_15(self): class TestErrorCodeStringFormat (line 377) | class TestErrorCodeStringFormat: method test_error_code_is_string (line 380) | def test_error_code_is_string(self): method test_error_code_preserves_leading_zeros (line 385) | def test_error_code_preserves_leading_zeros(self): method test_error_code_length_is_six (line 392) | def test_error_code_length_is_six(self): class TestErrorCodeIntConversion (line 411) | class TestErrorCodeIntConversion: method test_error_code_can_be_converted_to_int (line 414) | def test_error_code_can_be_converted_to_int(self): method test_error_code_in_conditional (line 421) | def test_error_code_in_conditional(self): FILE: test/backend/consts/test_error_message.py class TestErrorMessageGetMessage (line 11) | class TestErrorMessageGetMessage: method test_get_message_dify_auth_error (line 14) | def test_get_message_dify_auth_error(self): method test_get_message_dify_config_invalid (line 20) | def test_get_message_dify_config_invalid(self): method test_get_message_dify_connection_error (line 25) | def test_get_message_dify_connection_error(self): method test_get_message_dify_rate_limit (line 30) | def test_get_message_dify_rate_limit(self): method test_get_message_common_validation_error (line 35) | def test_get_message_common_validation_error(self): method test_get_message_common_unauthorized (line 40) | def test_get_message_common_unauthorized(self): method test_get_message_common_token_expired (line 45) | def test_get_message_common_token_expired(self): method test_get_message_common_token_invalid (line 51) | def test_get_message_common_token_invalid(self): method test_get_message_common_rate_limit_exceeded (line 56) | def test_get_message_common_rate_limit_exceeded(self): method test_get_message_file_not_found (line 61) | def test_get_message_file_not_found(self): method test_get_message_file_too_large (line 67) | def test_get_message_file_too_large(self): method test_get_message_system_unknown_error (line 72) | def test_get_message_system_unknown_error(self): method test_get_message_system_internal_error (line 77) | def test_get_message_system_internal_error(self): method test_get_message_knowledge_not_found (line 82) | def test_get_message_knowledge_not_found(self): method test_get_message_memory_not_found (line 87) | def test_get_message_memory_not_found(self): method test_get_message_mcp_connection_failed (line 92) | def test_get_message_mcp_connection_failed(self): method test_get_message_northbound_request_failed (line 97) | def test_get_message_northbound_request_failed(self): method test_get_message_dataprocess_task_failed (line 102) | def test_get_message_dataprocess_task_failed(self): method test_get_message_unknown_code_returns_default (line 107) | def test_get_message_unknown_code_returns_default(self): class TestErrorMessageGetMessageWithCode (line 114) | class TestErrorMessageGetMessageWithCode: method test_get_message_with_code_returns_tuple (line 117) | def test_get_message_with_code_returns_tuple(self): method test_get_message_with_code_dify_auth (line 124) | def test_get_message_with_code_dify_auth(self): method test_get_message_with_code_common_validation (line 131) | def test_get_message_with_code_common_validation(self): method test_get_message_with_code_system_error (line 138) | def test_get_message_with_code_system_error(self): method test_get_message_with_code_tuple_length (line 145) | def test_get_message_with_code_tuple_length(self): method test_get_message_with_code_tuple_order (line 151) | def test_get_message_with_code_tuple_order(self): class TestErrorMessageGetAllMessages (line 161) | class TestErrorMessageGetAllMessages: method test_get_all_messages_returns_dict (line 164) | def test_get_all_messages_returns_dict(self): method test_get_all_messages_contains_dify_codes (line 169) | def test_get_all_messages_contains_dify_codes(self): method test_get_all_messages_contains_common_codes (line 179) | def test_get_all_messages_contains_common_codes(self): method test_get_all_messages_contains_system_codes (line 186) | def test_get_all_messages_contains_system_codes(self): method test_get_all_messages_all_values_are_strings (line 192) | def test_get_all_messages_all_values_are_strings(self): method test_get_all_messages_all_keys_are_strings (line 199) | def test_get_all_messages_all_keys_are_strings(self): method test_get_all_messages_contains_multiple_categories (line 207) | def test_get_all_messages_contains_multiple_categories(self): method test_get_all_messages_count (line 218) | def test_get_all_messages_count(self): method test_get_all_messages_mcp_codes (line 224) | def test_get_all_messages_mcp_codes(self): class TestErrorMessageCoverage (line 232) | class TestErrorMessageCoverage: method test_all_error_codes_have_messages (line 235) | def test_all_error_codes_have_messages(self): method test_message_not_generic_for_specific_errors (line 245) | def test_message_not_generic_for_specific_errors(self): FILE: test/backend/consts/test_exceptions.py class TestAppException (line 11) | class TestAppException: method test_app_exception_creation_with_code (line 14) | def test_app_exception_creation_with_code(self): method test_app_exception_creation_with_custom_message (line 19) | def test_app_exception_creation_with_custom_message(self): method test_app_exception_default_message (line 25) | def test_app_exception_default_message(self): method test_app_exception_with_details (line 32) | def test_app_exception_with_details(self): method test_app_exception_empty_details_defaults_to_dict (line 38) | def test_app_exception_empty_details_defaults_to_dict(self): method test_app_exception_to_dict (line 43) | def test_app_exception_to_dict(self): method test_app_exception_to_dict_null_details (line 52) | def test_app_exception_to_dict_null_details(self): method test_app_exception_http_status_property (line 59) | def test_app_exception_http_status_property(self): method test_app_exception_http_status_for_different_codes (line 64) | def test_app_exception_http_status_for_different_codes(self): method test_app_exception_is_subclass_of_exception (line 80) | def test_app_exception_is_subclass_of_exception(self): method test_app_exception_can_be_raised_and_caught (line 84) | def test_app_exception_can_be_raised_and_caught(self): method test_app_exception_str_representation (line 92) | def test_app_exception_str_representation(self): class TestRaiseError (line 98) | class TestRaiseError: method test_raise_error_raises_app_exception (line 101) | def test_raise_error_raises_app_exception(self): method test_raise_error_with_custom_message (line 106) | def test_raise_error_with_custom_message(self): method test_raise_error_with_details (line 114) | def test_raise_error_with_details(self): class TestLegacyExceptions (line 123) | class TestLegacyExceptions: method test_agent_run_exception_exists (line 126) | def test_agent_run_exception_exists(self): method test_limit_exceeded_error_exists (line 132) | def test_limit_exceeded_error_exists(self): method test_unauthorized_error_exists (line 138) | def test_unauthorized_error_exists(self): method test_validation_error_exists (line 144) | def test_validation_error_exists(self): method test_not_found_exception_exists (line 150) | def test_not_found_exception_exists(self): method test_mcp_connection_error_exists (line 156) | def test_mcp_connection_error_exists(self): method test_data_mate_connection_error_exists (line 162) | def test_data_mate_connection_error_exists(self): class TestLegacyAliases (line 169) | class TestLegacyAliases: method test_parameter_invalid_error_alias (line 172) | def test_parameter_invalid_error_alias(self): method test_timeout_error_alias (line 177) | def test_timeout_error_alias(self): method test_user_not_found_error_alias (line 182) | def test_user_not_found_error_alias(self): method test_tenant_not_found_error_alias (line 187) | def test_tenant_not_found_error_alias(self): method test_agent_not_found_error_alias (line 192) | def test_agent_not_found_error_alias(self): FILE: test/backend/data_process/test_ray_actors.py function make_fake_ray_module_identity_decorator (line 9) | def make_fake_ray_module_identity_decorator(): class FakeDataProcessCore (line 25) | class FakeDataProcessCore: method __init__ (line 26) | def __init__(self): method file_process (line 29) | def file_process(self, file_data, filename, chunking_strategy, **params): class FakeRedisClient (line 37) | class FakeRedisClient: method __init__ (line 38) | def __init__(self): method from_url (line 43) | def from_url(cls, url, decode_responses=False): method set (line 46) | def set(self, key, value): method get (line 49) | def get(self, key): method expire (line 52) | def expire(self, key, seconds): function stub_ray_before_import (line 57) | def stub_ray_before_import(monkeypatch): function import_module (line 64) | def import_module(monkeypatch): function test_process_file_happy_path (line 180) | def test_process_file_happy_path(monkeypatch): function test_process_file_applies_chunk_sizes_from_model (line 197) | def test_process_file_applies_chunk_sizes_from_model(monkeypatch): function test_process_file_no_model_omits_chunk_params (line 238) | def test_process_file_no_model_omits_chunk_params(monkeypatch): function test_process_file_model_lookup_exception_uses_defaults (line 273) | def test_process_file_model_lookup_exception_uses_defaults(monkeypatch): function test_process_file_get_stream_none_raises (line 309) | def test_process_file_get_stream_none_raises(monkeypatch): function test_process_file_core_returns_none_list_variants (line 413) | def test_process_file_core_returns_none_list_variants(monkeypatch): function test_store_chunks_in_redis_success (line 510) | def test_store_chunks_in_redis_success(monkeypatch): function test_store_chunks_in_redis_handles_none_and_serialization_error (line 524) | def test_store_chunks_in_redis_handles_none_and_serialization_error(monk... function test_store_chunks_in_redis_no_url_returns_false (line 544) | def test_store_chunks_in_redis_no_url_returns_false(monkeypatch): FILE: test/backend/data_process/test_ray_config.py class FakeRay (line 7) | class FakeRay: method __init__ (line 8) | def __init__(self, initialized=False): method is_initialized (line 13) | def is_initialized(self): method init (line 16) | def init(self, **kwargs): method cluster_resources (line 20) | def cluster_resources(self): function setup_mocks_for_ray_config (line 24) | def setup_mocks_for_ray_config(mocker, initialized=False): function test_ray_config_init (line 374) | def test_ray_config_init(mocker): function test_get_init_params_local_cluster (line 384) | def test_get_init_params_local_cluster(mocker): function test_get_init_params_local_cluster_no_dashboard (line 401) | def test_get_init_params_local_cluster_no_dashboard(mocker): function test_get_init_params_with_address (line 413) | def test_get_init_params_with_address(mocker): function test_get_init_params_custom_dashboard_port (line 426) | def test_get_init_params_custom_dashboard_port(mocker): function test_init_ray_already_initialized (line 436) | def test_init_ray_already_initialized(mocker): function test_init_ray_success (line 447) | def test_init_ray_success(mocker): function test_init_ray_failure (line 466) | def test_init_ray_failure(mocker): function test_init_ray_cluster_resources_error (line 481) | def test_init_ray_cluster_resources_error(mocker): function test_connect_to_cluster_already_initialized (line 498) | def test_connect_to_cluster_already_initialized(mocker): function test_connect_to_cluster_success (line 509) | def test_connect_to_cluster_success(mocker): function test_connect_to_cluster_failure (line 522) | def test_connect_to_cluster_failure(mocker): function test_start_local_cluster_with_num_cpus (line 537) | def test_start_local_cluster_with_num_cpus(mocker): function test_start_local_cluster_without_num_cpus (line 551) | def test_start_local_cluster_without_num_cpus(mocker): function test_init_ray_for_worker (line 566) | def test_init_ray_for_worker(mocker): function test_init_ray_for_service_try_connect_first_success (line 580) | def test_init_ray_for_service_try_connect_first_success(mocker): function test_init_ray_for_service_try_connect_first_failure (line 599) | def test_init_ray_for_service_try_connect_first_failure(mocker): function test_init_ray_for_service_no_try_connect (line 629) | def test_init_ray_for_service_no_try_connect(mocker): function test_get_init_params_object_store_memory_calculation (line 650) | def test_get_init_params_object_store_memory_calculation(mocker): function test_init_ray_sets_preallocate_plasma_env (line 667) | def test_init_ray_sets_preallocate_plasma_env(mocker): FILE: test/backend/data_process/test_tasks.py class FakeRay (line 9) | class FakeRay: method __init__ (line 10) | def __init__(self, initialized=False): method is_initialized (line 15) | def is_initialized(self): method init (line 18) | def init(self, **kwargs): method get (line 22) | def get(self, ref): method remote (line 25) | def remote(self, **kwargs): function import_tasks_with_fake_ray (line 32) | def import_tasks_with_fake_ray(monkeypatch, initialized=False): function test_init_ray_in_worker_initializes_once (line 292) | def test_init_ray_in_worker_initializes_once(monkeypatch): function test_init_ray_in_worker_respects_disable_dashboard_setting (line 305) | def test_init_ray_in_worker_respects_disable_dashboard_setting(monkeypat... function test_init_ray_in_worker_raises_on_init_failure (line 319) | def test_init_ray_in_worker_raises_on_init_failure(monkeypatch): function test_run_async_no_running_loop (line 335) | def test_run_async_no_running_loop(monkeypatch): function test_run_async_running_loop_with_nest_asyncio (line 347) | def test_run_async_running_loop_with_nest_asyncio(monkeypatch): function test_get_ray_actor_returns_actor (line 363) | def test_get_ray_actor_returns_actor(monkeypatch): class FakeSelf (line 376) | class FakeSelf: method __init__ (line 377) | def __init__(self, task_id="tid-1"): method update_state (line 381) | def update_state(self, **kw): method retry (line 384) | def retry(self, **kw): function test_process_local_happy_path (line 389) | def test_process_local_happy_path(monkeypatch, tmp_path): function test_process_minio_path (line 425) | def test_process_minio_path(monkeypatch): function test_process_passes_embedding_ids_to_actor (line 449) | def test_process_passes_embedding_ids_to_actor(monkeypatch, tmp_path): function test_process_large_file_with_many_chunks (line 486) | def test_process_large_file_with_many_chunks(monkeypatch, tmp_path): function test_process_raises_on_missing_file (line 527) | def test_process_raises_on_missing_file(monkeypatch): function test_forward_redis_cached_invalid_json_raises (line 537) | def test_forward_redis_cached_invalid_json_raises(monkeypatch): function test_forward_returns_when_task_cancelled (line 558) | def test_forward_returns_when_task_cancelled(monkeypatch): function test_forward_redis_client_from_url_failure (line 589) | def test_forward_redis_client_from_url_failure(monkeypatch): function test_forward_skips_empty_chunk_without_preprocess (line 609) | def test_forward_skips_empty_chunk_without_preprocess(monkeypatch): function test_forward_vectorize_documents_client_connector_error (line 630) | def test_forward_vectorize_documents_client_connector_error(monkeypatch): function test_forward_vectorize_documents_client_response_503 (line 684) | def test_forward_vectorize_documents_client_response_503(monkeypatch): function test_forward_api_returns_error_and_unexpected_format (line 744) | def test_forward_api_returns_error_and_unexpected_format(monkeypatch): function test_forward_vectorize_documents_timeout_error (line 766) | def test_forward_vectorize_documents_timeout_error(monkeypatch): function test_forward_vectorize_documents_unexpected_error (line 824) | def test_forward_vectorize_documents_unexpected_error(monkeypatch): function test_process_and_forward_returns_empty_when_apply_async_none (line 876) | def test_process_and_forward_returns_empty_when_apply_async_none(monkeyp... function test_process_unsupported_source_type (line 896) | def test_process_unsupported_source_type(monkeypatch): function test_forward_with_chunks_success (line 904) | def test_forward_with_chunks_success(monkeypatch): function test_forward_partial_success_raises (line 923) | def test_forward_partial_success_raises(monkeypatch): function test_forward_no_chunks_and_no_redis_key_raises (line 934) | def test_forward_no_chunks_and_no_redis_key_raises(monkeypatch): function test_forward_formats_to_empty_then_raises (line 942) | def test_forward_formats_to_empty_then_raises(monkeypatch): function test_forward_missing_es_env_raises (line 950) | def test_forward_missing_es_env_raises(monkeypatch): function test_forward_loads_chunks_from_redis (line 960) | def test_forward_loads_chunks_from_redis(monkeypatch): function test_process_and_forward_returns_chain_id (line 983) | def test_process_and_forward_returns_chain_id(monkeypatch): function test_extract_error_code_parses_detail_and_regex_and_unknown (line 1000) | def test_extract_error_code_parses_detail_and_regex_and_unknown(): function test_extract_error_code_top_level_key (line 1015) | def test_extract_error_code_top_level_key(): function test_save_error_to_redis_branches (line 1022) | def test_save_error_to_redis_branches(monkeypatch): function test_process_error_fallback_when_save_error_raises (line 1089) | def test_process_error_fallback_when_save_error_raises(monkeypatch, tmp_... function test_process_error_truncates_reason_when_no_error_code (line 1122) | def test_process_error_truncates_reason_when_no_error_code(monkeypatch, ... function test_forward_cancel_check_warning_then_continue (line 1174) | def test_forward_cancel_check_warning_then_continue(monkeypatch): function _run_coro (line 1199) | def _run_coro(coro): function test_forward_index_documents_error_code_from_detail (line 1208) | def test_forward_index_documents_error_code_from_detail(monkeypatch): function test_forward_index_documents_regex_error_code (line 1259) | def test_forward_index_documents_regex_error_code(monkeypatch): function test_forward_index_documents_client_connector_error (line 1311) | def test_forward_index_documents_client_connector_error(monkeypatch): function test_forward_index_documents_timeout (line 1349) | def test_forward_index_documents_timeout(monkeypatch): function test_forward_truncates_reason_when_no_error_code (line 1387) | def test_forward_truncates_reason_when_no_error_code(monkeypatch): function test_forward_fallback_truncates_on_non_json_error (line 1419) | def test_forward_fallback_truncates_on_non_json_error(monkeypatch): function test_forward_error_truncates_reason_and_uses_save (line 1450) | def test_forward_error_truncates_reason_and_uses_save(monkeypatch): function test_forward_error_fallback_when_json_loads_fails (line 1474) | def test_forward_error_fallback_when_json_loads_fails(monkeypatch): function test_process_sync_local_returns (line 1500) | def test_process_sync_local_returns(monkeypatch): function test_process_sync_unsupported_raises_and_updates_state (line 1516) | def test_process_sync_unsupported_raises_and_updates_state(monkeypatch): function test_forward_redis_key_requires_backend_url_raises (line 1525) | def test_forward_redis_key_requires_backend_url_raises(monkeypatch): function test_forward_redis_retry_when_value_absent (line 1537) | def test_forward_redis_retry_when_value_absent(monkeypatch): function test_forward_uses_overridden_metadata_from_payload (line 1556) | def test_forward_uses_overridden_metadata_from_payload(monkeypatch): function test_forward_empty_chunks_list_warns_and_raises (line 1577) | def test_forward_empty_chunks_list_warns_and_raises(monkeypatch): function test_process_zero_file_size_speed_calculation (line 1586) | def test_process_zero_file_size_speed_calculation(monkeypatch, tmp_path): function test_process_no_chunks_saves_error (line 1617) | def test_process_no_chunks_saves_error(monkeypatch, tmp_path): function test_process_url_source_with_many_chunks (line 1659) | def test_process_url_source_with_many_chunks(monkeypatch): function test_forward_large_chunks_batch_success (line 1689) | def test_forward_large_chunks_batch_success(monkeypatch): FILE: test/backend/data_process/test_worker.py class FakeRay (line 8) | class FakeRay: method __init__ (line 9) | def __init__(self, initialized=False): method is_initialized (line 13) | def is_initialized(self): method init (line 16) | def init(self, **kwargs): function setup_mocks_for_worker (line 21) | def setup_mocks_for_worker(mocker, initialized=False): function test_validate_redis_connection_success (line 244) | def test_validate_redis_connection_success(mocker): function test_validate_redis_connection_failure (line 265) | def test_validate_redis_connection_failure(mocker): function test_validate_redis_connection_import_error (line 286) | def test_validate_redis_connection_import_error(mocker): function test_validate_service_connections_success (line 304) | def test_validate_service_connections_success(mocker): function test_validate_service_connections_failure (line 325) | def test_validate_service_connections_failure(mocker): function test_start_worker_with_defaults (line 347) | def test_start_worker_with_defaults(mocker): function test_start_worker_with_custom_name (line 373) | def test_start_worker_with_custom_name(mocker): function test_start_worker_keyboard_interrupt (line 398) | def test_start_worker_keyboard_interrupt(mocker): function test_start_worker_exception (line 413) | def test_start_worker_exception(mocker): function test_worker_state_initialization (line 428) | def test_worker_state_initialization(mocker): function test_setup_worker_environment_ray_already_initialized (line 440) | def test_setup_worker_environment_ray_already_initialized(mocker): function test_setup_worker_environment_ray_init_success (line 465) | def test_setup_worker_environment_ray_init_success(mocker): function test_setup_worker_environment_sets_ray_preallocate_env (line 488) | def test_setup_worker_environment_sets_ray_preallocate_env(mocker): function test_setup_worker_environment_ray_init_fallback (line 505) | def test_setup_worker_environment_ray_init_fallback(mocker): function test_setup_worker_environment_ray_init_failure (line 530) | def test_setup_worker_environment_ray_init_failure(mocker): function test_setup_worker_process_resources_success (line 548) | def test_setup_worker_process_resources_success(mocker): function test_setup_worker_process_resources_failure (line 572) | def test_setup_worker_process_resources_failure(mocker): function test_worker_ready_handler (line 588) | def test_worker_ready_handler(mocker): function test_worker_shutdown_handler (line 603) | def test_worker_shutdown_handler(mocker): function test_task_prerun_handler (line 618) | def test_task_prerun_handler(mocker): function test_task_postrun_handler_success (line 628) | def test_task_postrun_handler_success(mocker): function test_task_postrun_handler_other_state (line 640) | def test_task_postrun_handler_other_state(mocker): function test_task_failure_handler (line 653) | def test_task_failure_handler(mocker): FILE: test/backend/database/test_agent_db.py class MockAgent (line 100) | class MockAgent: method __init__ (line 101) | def __init__(self): class MockAgentRelation (line 128) | class MockAgentRelation: method __init__ (line 129) | def __init__(self): function mock_session (line 133) | def mock_session(): function test_search_agent_info_by_agent_id_success (line 140) | def test_search_agent_info_by_agent_id_success(monkeypatch, mock_session): function test_search_agent_info_by_agent_id_not_found (line 163) | def test_search_agent_info_by_agent_id_not_found(monkeypatch, mock_sessi... function test_search_agent_id_by_agent_name_success (line 180) | def test_search_agent_id_by_agent_name_success(monkeypatch, mock_session): function test_search_agent_id_by_agent_name_not_found (line 200) | def test_search_agent_id_by_agent_name_not_found(monkeypatch, mock_sessi... function test_search_blank_sub_agent_by_main_agent_id_found (line 217) | def test_search_blank_sub_agent_by_main_agent_id_found(monkeypatch, mock... function test_search_blank_sub_agent_by_main_agent_id_not_found (line 238) | def test_search_blank_sub_agent_by_main_agent_id_not_found(monkeypatch, ... function test_query_sub_agents_id_list (line 256) | def test_query_sub_agents_id_list(monkeypatch, mock_session): function test_create_agent_success (line 276) | def test_create_agent_success(monkeypatch, mock_session): function test_update_agent_success (line 299) | def test_update_agent_success(monkeypatch, mock_session): function test_update_agent_skips_none_and_converts_group_ids (line 323) | def test_update_agent_skips_none_and_converts_group_ids(monkeypatch, moc... function test_update_agent_not_found (line 361) | def test_update_agent_not_found(monkeypatch, mock_session): function test_delete_agent_by_id_success (line 381) | def test_delete_agent_by_id_success(monkeypatch, mock_session): function test_query_all_agent_info_by_tenant_id (line 405) | def test_query_all_agent_info_by_tenant_id(monkeypatch, mock_session): function test_insert_related_agent_success (line 429) | def test_insert_related_agent_success(monkeypatch, mock_session): function test_insert_related_agent_failure (line 448) | def test_insert_related_agent_failure(monkeypatch, mock_session): function test_delete_related_agent_success (line 464) | def test_delete_related_agent_success(monkeypatch, mock_session): function test_delete_related_agent_failure (line 482) | def test_delete_related_agent_failure(monkeypatch, mock_session): function test_delete_agent_relationship_success (line 499) | def test_delete_agent_relationship_success(monkeypatch, mock_session): function test_delete_agent_relationship_failure (line 518) | def test_delete_agent_relationship_failure(monkeypatch, mock_session): function test_update_related_agents_add_new (line 536) | def test_update_related_agents_add_new(monkeypatch, mock_session): function test_update_related_agents_delete_existing (line 592) | def test_update_related_agents_delete_existing(monkeypatch, mock_session): function test_update_related_agents_replace_mixed (line 634) | def test_update_related_agents_replace_mixed(monkeypatch, mock_session): function test_update_related_agents_no_changes (line 692) | def test_update_related_agents_no_changes(monkeypatch, mock_session): function test_clear_agent_new_mark_success (line 726) | def test_clear_agent_new_mark_success(monkeypatch): function test_clear_agent_new_mark_no_rows_affected (line 754) | def test_clear_agent_new_mark_no_rows_affected(monkeypatch): function test_mark_agents_as_new_success (line 782) | def test_mark_agents_as_new_success(monkeypatch): function test_mark_agents_as_new_empty_list (line 805) | def test_mark_agents_as_new_empty_list(monkeypatch): function test_clear_agent_new_mark_sqlalchemy_error (line 824) | def test_clear_agent_new_mark_sqlalchemy_error(monkeypatch): function test_mark_agents_as_new_sqlalchemy_error (line 847) | def test_mark_agents_as_new_sqlalchemy_error(monkeypatch): function test_clear_agent_new_mark_database_connection_error (line 870) | def test_clear_agent_new_mark_database_connection_error(monkeypatch): FILE: test/backend/database/test_agent_version_db.py class MockAgentVersion (line 100) | class MockAgentVersion: method __init__ (line 101) | def __init__(self): class MockAgentInfo (line 130) | class MockAgentInfo: method __init__ (line 131) | def __init__(self): class MockToolInstance (line 148) | class MockToolInstance: method __init__ (line 149) | def __init__(self): class MockAgentRelation (line 166) | class MockAgentRelation: method __init__ (line 167) | def __init__(self): function mock_as_dict (line 184) | def mock_as_dict(obj): function mock_sqlalchemy_insert (line 244) | def mock_sqlalchemy_insert(monkeypatch): function mock_sqlalchemy_update (line 269) | def mock_sqlalchemy_update(monkeypatch): function mock_session (line 295) | def mock_session(): function test_search_version_by_version_no_found (line 303) | def test_search_version_by_version_no_found(monkeypatch, mock_session): function test_search_version_by_version_no_not_found (line 328) | def test_search_version_by_version_no_not_found(monkeypatch, mock_session): function test_search_version_by_id_found (line 349) | def test_search_version_by_id_found(monkeypatch, mock_session): function test_search_version_by_id_not_found (line 373) | def test_search_version_by_id_not_found(monkeypatch, mock_session): function test_query_version_list_success (line 394) | def test_query_version_list_success(monkeypatch, mock_session): function test_query_version_list_empty (line 423) | def test_query_version_list_empty(monkeypatch, mock_session): function test_query_current_version_no_found (line 446) | def test_query_current_version_no_found(monkeypatch, mock_session): function test_query_current_version_no_not_found (line 469) | def test_query_current_version_no_not_found(monkeypatch, mock_session): function test_query_agent_snapshot_success (line 490) | def test_query_agent_snapshot_success(monkeypatch, mock_session): function test_query_agent_snapshot_no_agent (line 544) | def test_query_agent_snapshot_no_agent(monkeypatch, mock_session): function test_query_agent_draft (line 589) | def test_query_agent_draft(monkeypatch, mock_session): function test_insert_version_success (line 636) | def test_insert_version_success(monkeypatch, mock_session): function test_update_version_status_success (line 669) | def test_update_version_status_success(monkeypatch, mock_session): function test_update_version_status_not_found (line 700) | def test_update_version_status_not_found(monkeypatch, mock_session): function test_update_agent_current_version_success (line 730) | def test_update_agent_current_version_success(monkeypatch, mock_session): function test_update_agent_current_version_not_found (line 759) | def test_update_agent_current_version_not_found(monkeypatch, mock_session): function test_insert_agent_snapshot_success (line 787) | def test_insert_agent_snapshot_success(monkeypatch, mock_session): function test_insert_tool_snapshot_success (line 816) | def test_insert_tool_snapshot_success(monkeypatch, mock_session): function test_insert_relation_snapshot_success (line 845) | def test_insert_relation_snapshot_success(monkeypatch, mock_session): function test_update_agent_snapshot_success (line 874) | def test_update_agent_snapshot_success(monkeypatch, mock_session): function test_update_agent_snapshot_not_found (line 906) | def test_update_agent_snapshot_not_found(monkeypatch, mock_session): function test_delete_agent_snapshot_success (line 937) | def test_delete_agent_snapshot_success(monkeypatch, mock_session): function test_delete_tool_snapshot_success (line 967) | def test_delete_tool_snapshot_success(monkeypatch, mock_session): function test_delete_tool_snapshot_without_deleted_by (line 997) | def test_delete_tool_snapshot_without_deleted_by(monkeypatch, mock_sessi... function test_delete_relation_snapshot_success (line 1026) | def test_delete_relation_snapshot_success(monkeypatch, mock_session): function test_delete_relation_snapshot_without_deleted_by (line 1056) | def test_delete_relation_snapshot_without_deleted_by(monkeypatch, mock_s... function test_get_next_version_no_first_version (line 1085) | def test_get_next_version_no_first_version(monkeypatch, mock_session): function test_get_next_version_no_existing_versions (line 1106) | def test_get_next_version_no_existing_versions(monkeypatch, mock_session): function test_delete_version_success (line 1127) | def test_delete_version_success(monkeypatch, mock_session): function test_delete_version_not_found (line 1157) | def test_delete_version_not_found(monkeypatch, mock_session): function test_update_version_success (line 1186) | def test_update_version_success(monkeypatch, mock_session): function test_update_version_only_version_name (line 1218) | def test_update_version_only_version_name(monkeypatch, mock_session): function test_update_version_only_release_note (line 1246) | def test_update_version_only_release_note(monkeypatch, mock_session): function test_update_version_no_changes (line 1274) | def test_update_version_no_changes(monkeypatch, mock_session): function test_update_version_not_found (line 1290) | def test_update_version_not_found(monkeypatch, mock_session): FILE: test/backend/database/test_attachment_db.py class TestGenerateObjectName (line 78) | class TestGenerateObjectName: method test_generate_object_name_with_default_prefix (line 81) | def test_generate_object_name_with_default_prefix(self): method test_generate_object_name_with_custom_prefix (line 89) | def test_generate_object_name_with_custom_prefix(self): method test_generate_object_name_without_extension (line 97) | def test_generate_object_name_without_extension(self): method test_generate_object_name_unique (line 104) | def test_generate_object_name_unique(self): method test_generate_object_name_format (line 112) | def test_generate_object_name_format(self): class TestUploadFile (line 125) | class TestUploadFile: method test_upload_file_success (line 131) | def test_upload_file_success(self, mock_basename, mock_getsize, mock_e... method test_upload_file_auto_generate_object_name (line 154) | def test_upload_file_auto_generate_object_name(self, mock_generate, mo... method test_upload_file_failure (line 172) | def test_upload_file_failure(self, mock_basename, mock_getsize, mock_e... method test_upload_file_nonexistent_file (line 188) | def test_upload_file_nonexistent_file(self, mock_basename, mock_getsiz... class TestUploadFileobj (line 200) | class TestUploadFileobj: method test_upload_fileobj_success (line 204) | def test_upload_fileobj_success(self, mock_generate): method test_upload_fileobj_failure (line 222) | def test_upload_fileobj_failure(self, mock_generate): method test_upload_fileobj_preserves_file_position (line 235) | def test_upload_fileobj_preserves_file_position(self, mock_generate): class TestDownloadFile (line 250) | class TestDownloadFile: method test_download_file_success (line 253) | def test_download_file_success(self): method test_download_file_failure (line 267) | def test_download_file_failure(self): class TestGetFileUrl (line 277) | class TestGetFileUrl: method test_get_file_url_success (line 280) | def test_get_file_url_success(self): method test_get_file_url_failure (line 295) | def test_get_file_url_failure(self): class TestGetFileSizeFromMinio (line 305) | class TestGetFileSizeFromMinio: method test_get_file_size_from_minio_success (line 308) | def test_get_file_size_from_minio_success(self): method test_get_file_size_from_minio_uses_default_bucket (line 317) | def test_get_file_size_from_minio_uses_default_bucket(self): class TestListFiles (line 329) | class TestListFiles: method test_list_files_success (line 332) | def test_list_files_success(self): method test_list_files_empty (line 359) | def test_list_files_empty(self): method test_list_files_url_generation_failure (line 367) | def test_list_files_url_generation_failure(self): class TestDeleteFile (line 386) | class TestDeleteFile: method test_delete_file_success (line 389) | def test_delete_file_success(self): method test_delete_file_uses_default_bucket (line 400) | def test_delete_file_uses_default_bucket(self): method test_delete_file_failure (line 411) | def test_delete_file_failure(self): class TestGetFileStream (line 421) | class TestGetFileStream: method test_get_file_stream_success (line 424) | def test_get_file_stream_success(self): method test_get_file_stream_failure (line 436) | def test_get_file_stream_failure(self): method test_get_file_stream_read_error (line 444) | def test_get_file_stream_read_error(self): class TestGetContentType (line 455) | class TestGetContentType: method test_get_content_type_jpeg (line 458) | def test_get_content_type_jpeg(self): method test_get_content_type_png (line 463) | def test_get_content_type_png(self): method test_get_content_type_pdf (line 467) | def test_get_content_type_pdf(self): method test_get_content_type_txt (line 471) | def test_get_content_type_txt(self): method test_get_content_type_json (line 475) | def test_get_content_type_json(self): method test_get_content_type_unknown (line 479) | def test_get_content_type_unknown(self): method test_get_content_type_no_extension (line 483) | def test_get_content_type_no_extension(self): method test_get_content_type_with_path (line 487) | def test_get_content_type_with_path(self): method test_get_content_type_case_insensitive (line 492) | def test_get_content_type_case_insensitive(self): class TestFileExists (line 499) | class TestFileExists: method test_file_exists_returns_true_when_file_exists (line 502) | def test_file_exists_returns_true_when_file_exists(self): method test_file_exists_returns_false_when_file_not_exists (line 512) | def test_file_exists_returns_false_when_file_not_exists(self): method test_file_exists_with_custom_bucket (line 522) | def test_file_exists_with_custom_bucket(self): method test_file_exists_handles_any_exception (line 532) | def test_file_exists_handles_any_exception(self): class TestCopyFile (line 543) | class TestCopyFile: method test_copy_file_success (line 546) | def test_copy_file_success(self): method test_copy_file_with_custom_bucket (line 557) | def test_copy_file_with_custom_bucket(self): method test_copy_file_failure (line 567) | def test_copy_file_failure(self): FILE: test/backend/database/test_client.py class TestPostgresClient (line 74) | class TestPostgresClient: method test_postgres_client_init (line 77) | def test_postgres_client_init(self, mocker): method test_postgres_client_singleton (line 108) | def test_postgres_client_singleton(self): method test_clean_string_values (line 118) | def test_clean_string_values(self): method test_clean_string_values_with_unicode (line 136) | def test_clean_string_values_with_unicode(self): class TestMinioClient (line 149) | class TestMinioClient: method test_minio_client_init (line 154) | def test_minio_client_init(self, mock_config_class, mock_create_client): method test_minio_client_singleton (line 172) | def test_minio_client_singleton(self): method test_minio_client_upload_file (line 186) | def test_minio_client_upload_file(self, mock_config_class, mock_create... method test_minio_client_upload_fileobj (line 207) | def test_minio_client_upload_fileobj(self, mock_config_class, mock_cre... method test_minio_client_download_file (line 229) | def test_minio_client_download_file(self, mock_config_class, mock_crea... method test_minio_client_get_file_url (line 250) | def test_minio_client_get_file_url(self, mock_config_class, mock_creat... method test_minio_client_get_file_size (line 270) | def test_minio_client_get_file_size(self, mock_config_class, mock_crea... method test_minio_client_list_files (line 288) | def test_minio_client_list_files(self, mock_config_class, mock_create_... method test_minio_client_delete_file (line 310) | def test_minio_client_delete_file(self, mock_config_class, mock_create... method test_minio_client_get_file_stream (line 330) | def test_minio_client_get_file_stream(self, mock_config_class, mock_cr... method test_minio_client_file_exists_true (line 351) | def test_minio_client_file_exists_true(self, mock_config_class, mock_c... method test_minio_client_file_exists_false (line 368) | def test_minio_client_file_exists_false(self, mock_config_class, mock_... method test_minio_client_copy_file_success (line 385) | def test_minio_client_copy_file_success(self, mock_config_class, mock_... method test_minio_client_copy_file_with_default_bucket (line 409) | def test_minio_client_copy_file_with_default_bucket(self, mock_config_... method test_minio_client_copy_file_failure (line 433) | def test_minio_client_copy_file_failure(self, mock_config_class, mock_... class TestGetDbSession (line 451) | class TestGetDbSession: method test_get_db_session_with_new_session (line 454) | def test_get_db_session_with_new_session(self): method test_get_db_session_with_existing_session (line 470) | def test_get_db_session_with_existing_session(self): method test_get_db_session_rollback_on_exception (line 481) | def test_get_db_session_rollback_on_exception(self): method test_get_db_session_no_rollback_on_provided_session_exception (line 497) | def test_get_db_session_no_rollback_on_provided_session_exception(self): class TestFilterProperty (line 510) | class TestFilterProperty: method test_filter_property_filters_correctly (line 513) | def test_filter_property_filters_correctly(self): method test_filter_property_empty_data (line 535) | def test_filter_property_empty_data(self): method test_filter_property_no_matching_fields (line 548) | def test_filter_property_no_matching_fields(self): FILE: test/backend/database/test_conversation_db.py class ConversationRecord (line 37) | class ConversationRecord: class ConversationMessage (line 46) | class ConversationMessage: class ConversationMessageUnit (line 55) | class ConversationMessageUnit: class ConversationSourceSearch (line 65) | class ConversationSourceSearch: class ConversationSourceImage (line 71) | class ConversationSourceImage: function mock_session_ctx (line 97) | def mock_session_ctx(): function test_soft_delete_all_conversations_by_user_none (line 105) | def test_soft_delete_all_conversations_by_user_none(monkeypatch, mock_se... function test_soft_delete_all_conversations_by_user_some (line 118) | def test_soft_delete_all_conversations_by_user_some(monkeypatch, mock_se... function test_delete_conversation_success (line 132) | def test_delete_conversation_success(monkeypatch, mock_session_ctx): function test_delete_conversation_noop (line 149) | def test_delete_conversation_noop(monkeypatch, mock_session_ctx): function test_rename_conversation_success_ascii (line 167) | def test_rename_conversation_success_ascii(monkeypatch, mock_session_ctx): function test_rename_conversation_success_chinese (line 191) | def test_rename_conversation_success_chinese(monkeypatch, mock_session_c... function test_rename_conversation_success_mixed (line 214) | def test_rename_conversation_success_mixed(monkeypatch, mock_session_ctx): function test_rename_conversation_not_found (line 236) | def test_rename_conversation_not_found(monkeypatch, mock_session_ctx): function test_rename_conversation_without_user_id (line 258) | def test_rename_conversation_without_user_id(monkeypatch, mock_session_c... function test_rename_conversation_conversation_id_as_string (line 280) | def test_rename_conversation_conversation_id_as_string(monkeypatch, mock... function test_rename_conversation_with_emoji (line 302) | def test_rename_conversation_with_emoji(monkeypatch, mock_session_ctx): FILE: test/backend/database/test_group_db.py function mock_convert_string_to_list (line 37) | def mock_convert_string_to_list(s): class MockTenantGroupInfo (line 75) | class MockTenantGroupInfo: method __init__ (line 76) | def __init__(self, **kwargs): class MockTenantGroupUser (line 87) | class MockTenantGroupUser: method __init__ (line 88) | def __init__(self, **kwargs): class MockSQLAlchemyError (line 112) | class MockSQLAlchemyError(Exception): function mock_session (line 142) | def mock_session(): function test_get_group_by_id_success (line 150) | def test_get_group_by_id_success(monkeypatch, mock_session): function test_get_group_by_id_not_found (line 175) | def test_get_group_by_id_not_found(monkeypatch, mock_session): function test_get_group_by_id_with_string_input (line 193) | def test_get_group_by_id_with_string_input(monkeypatch, mock_session): function test_get_group_by_id_with_list_input (line 219) | def test_get_group_by_id_with_list_input(monkeypatch, mock_session): function test_get_group_by_id_empty_string (line 245) | def test_get_group_by_id_empty_string(monkeypatch, mock_session): function test_get_group_by_id_empty_list (line 258) | def test_get_group_by_id_empty_list(monkeypatch, mock_session): function test_get_group_by_id_invalid_type (line 271) | def test_get_group_by_id_invalid_type(): function test_get_groups_by_tenant_success_with_pagination (line 279) | def test_get_groups_by_tenant_success_with_pagination(monkeypatch, mock_... function test_get_groups_by_tenant_success_without_pagination (line 333) | def test_get_groups_by_tenant_success_without_pagination(monkeypatch, mo... function test_get_groups_by_tenant_with_asc_sort (line 384) | def test_get_groups_by_tenant_with_asc_sort(monkeypatch, mock_session): function test_get_groups_by_tenant_with_only_page_none (line 435) | def test_get_groups_by_tenant_with_only_page_none(monkeypatch, mock_sess... function test_get_groups_by_tenant_with_only_page_size_none (line 482) | def test_get_groups_by_tenant_with_only_page_size_none(monkeypatch, mock... function test_get_groups_by_tenant_with_empty_result (line 529) | def test_get_groups_by_tenant_with_empty_result(monkeypatch, mock_session): function test_create_group_success (line 571) | def test_create_group_success(monkeypatch, mock_session): function test_update_group_success (line 598) | def test_update_group_success(monkeypatch, mock_session): function test_soft_delete_group_success (line 623) | def test_soft_delete_group_success(monkeypatch, mock_session): function test_add_user_to_group_success (line 644) | def test_add_user_to_group_success(monkeypatch, mock_session): function test_remove_user_from_group_success (line 670) | def test_remove_user_from_group_success(monkeypatch, mock_session): function test_get_group_users_success (line 695) | def test_get_group_users_success(monkeypatch, mock_session): function test_get_groups_by_user_success (line 719) | def test_get_groups_by_user_success(monkeypatch, mock_session): function test_get_group_ids_by_user_success (line 746) | def test_get_group_ids_by_user_success(monkeypatch, mock_session): function test_is_user_in_group_true (line 772) | def test_is_user_in_group_true(monkeypatch, mock_session): function test_is_user_in_group_false (line 792) | def test_is_user_in_group_false(monkeypatch, mock_session): function test_get_group_user_count_success (line 810) | def test_get_group_user_count_success(monkeypatch, mock_session): function test_query_groups_by_tenant_with_pagination_page_2 (line 835) | def test_query_groups_by_tenant_with_pagination_page_2(monkeypatch, mock... function test_modify_group_no_updates_provided (line 890) | def test_modify_group_no_updates_provided(monkeypatch, mock_session): function test_modify_group_no_rows_affected (line 910) | def test_modify_group_no_rows_affected(monkeypatch, mock_session): function test_remove_group_no_rows_affected (line 930) | def test_remove_group_no_rows_affected(monkeypatch, mock_session): function test_remove_group_success (line 966) | def test_remove_group_success(monkeypatch, mock_session): function test_remove_user_from_group_no_rows_affected (line 1003) | def test_remove_user_from_group_no_rows_affected(monkeypatch, mock_sessi... function test_query_groups_by_user_no_groups (line 1023) | def test_query_groups_by_user_no_groups(monkeypatch, mock_session): function test_query_group_ids_by_user_no_groups (line 1044) | def test_query_group_ids_by_user_no_groups(monkeypatch, mock_session): function test_remove_user_from_all_groups_success (line 1069) | def test_remove_user_from_all_groups_success(monkeypatch, mock_session): function test_remove_user_from_all_groups_no_memberships (line 1101) | def test_remove_user_from_all_groups_no_memberships(monkeypatch, mock_se... function test_remove_user_from_all_groups_database_error (line 1131) | def test_remove_user_from_all_groups_database_error(monkeypatch, mock_se... function test_database_error_handling (line 1150) | def test_database_error_handling(monkeypatch, mock_session): function test_check_group_name_exists_found (line 1164) | def test_check_group_name_exists_found(monkeypatch, mock_session): function test_check_group_name_exists_not_found (line 1187) | def test_check_group_name_exists_not_found(monkeypatch, mock_session): function test_check_group_name_exists_with_exclusion (line 1206) | def test_check_group_name_exists_with_exclusion(monkeypatch, mock_session): function test_check_group_name_exists_database_error (line 1236) | def test_check_group_name_exists_database_error(monkeypatch, mock_session): function test_remove_group_users_success (line 1251) | def test_remove_group_users_success(monkeypatch, mock_session): function test_remove_group_users_no_rows_affected (line 1271) | def test_remove_group_users_no_rows_affected(monkeypatch, mock_session): FILE: test/backend/database/test_invitation_db.py class MockTenantInvitationCode (line 60) | class MockTenantInvitationCode: method __init__ (line 61) | def __init__(self, **kwargs): class MockTenantInvitationRecord (line 76) | class MockTenantInvitationRecord: method __init__ (line 77) | def __init__(self, **kwargs): class MockSQLAlchemyError (line 101) | class MockSQLAlchemyError(Exception): function mock_session (line 127) | def mock_session(): function test_query_invitation_by_code_success (line 135) | def test_query_invitation_by_code_success(monkeypatch, mock_session): function test_query_invitation_by_code_not_found (line 160) | def test_query_invitation_by_code_not_found(monkeypatch, mock_session): function test_query_invitation_by_id_success (line 178) | def test_query_invitation_by_id_success(monkeypatch, mock_session): function test_query_invitation_by_id_not_found (line 205) | def test_query_invitation_by_id_not_found(monkeypatch, mock_session): function test_query_invitations_by_tenant_success (line 224) | def test_query_invitations_by_tenant_success(monkeypatch, mock_session): function test_add_invitation_success (line 248) | def test_add_invitation_success(monkeypatch, mock_session): function test_add_invitation_with_group_ids_list (line 279) | def test_add_invitation_with_group_ids_list(monkeypatch, mock_session): function test_modify_invitation_success (line 322) | def test_modify_invitation_success(monkeypatch, mock_session): function test_remove_invitation_success (line 347) | def test_remove_invitation_success(monkeypatch, mock_session): function test_query_invitation_records_success (line 368) | def test_query_invitation_records_success(monkeypatch, mock_session): function test_add_invitation_record_success (line 392) | def test_add_invitation_record_success(monkeypatch, mock_session): function test_count_invitation_usage_success (line 418) | def test_count_invitation_usage_success(monkeypatch, mock_session): function test_get_invitation_status_in_use (line 443) | def test_get_invitation_status_in_use(monkeypatch, mock_session): function test_get_invitation_status_expired (line 464) | def test_get_invitation_status_expired(monkeypatch, mock_session): function test_get_invitation_status_not_found (line 485) | def test_get_invitation_status_not_found(monkeypatch, mock_session): function test_database_error_handling (line 503) | def test_database_error_handling(monkeypatch, mock_session): function test_query_invitations_with_pagination_success (line 517) | def test_query_invitations_with_pagination_success(monkeypatch, mock_ses... function test_query_invitations_with_pagination_empty_results (line 556) | def test_query_invitations_with_pagination_empty_results(monkeypatch, mo... function test_query_invitations_with_pagination_with_tenant_filter (line 586) | def test_query_invitations_with_pagination_with_tenant_filter(monkeypatc... function test_query_invitations_with_pagination_second_page (line 627) | def test_query_invitations_with_pagination_second_page(monkeypatch, mock... function test_query_invitations_with_pagination_database_error (line 663) | def test_query_invitations_with_pagination_database_error(monkeypatch, m... function test_query_invitations_with_pagination_with_sorting (line 677) | def test_query_invitations_with_pagination_with_sorting(monkeypatch, moc... function test_query_invitations_with_pagination_sort_ascending (line 723) | def test_query_invitations_with_pagination_sort_ascending(monkeypatch, m... function test_query_invitations_with_pagination_no_sorting (line 765) | def test_query_invitations_with_pagination_no_sorting(monkeypatch, mock_... FILE: test/backend/database/test_knowledge_db.py class MockSQLAlchemyError (line 121) | class MockSQLAlchemyError(Exception): class MockKnowledgeRecord (line 135) | class MockKnowledgeRecord: method __init__ (line 136) | def __init__(self, **kwargs): function mock_session (line 188) | def mock_session(): function test_create_knowledge_record_success (line 196) | def test_create_knowledge_record_success(monkeypatch, mock_session): function test_create_knowledge_record_with_group_ids_list (line 244) | def test_create_knowledge_record_with_group_ids_list(monkeypatch, mock_s... function test_create_knowledge_record_exception (line 297) | def test_create_knowledge_record_exception(monkeypatch, mock_session): function test_create_knowledge_record_generates_index_name (line 330) | def test_create_knowledge_record_generates_index_name(monkeypatch, mock_... function test_update_knowledge_record_success (line 374) | def test_update_knowledge_record_success(monkeypatch, mock_session): function test_update_knowledge_record_updates_all_fields (line 414) | def test_update_knowledge_record_updates_all_fields(monkeypatch, mock_se... function test_update_knowledge_record_partial_update (line 462) | def test_update_knowledge_record_partial_update(monkeypatch, mock_session): function test_update_knowledge_record_not_found (line 507) | def test_update_knowledge_record_not_found(monkeypatch, mock_session): function test_update_knowledge_record_without_knowledge_describe (line 538) | def test_update_knowledge_record_without_knowledge_describe(monkeypatch,... function test_update_knowledge_record_exception (line 579) | def test_update_knowledge_record_exception(monkeypatch, mock_session): function test_delete_knowledge_record_success (line 613) | def test_delete_knowledge_record_success(monkeypatch, mock_session): function test_delete_knowledge_record_not_found (line 651) | def test_delete_knowledge_record_not_found(monkeypatch, mock_session): function test_delete_knowledge_record_exception (line 681) | def test_delete_knowledge_record_exception(monkeypatch, mock_session): function test_get_knowledge_record_found (line 714) | def test_get_knowledge_record_found(monkeypatch, mock_session): function test_get_knowledge_record_not_found (line 758) | def test_get_knowledge_record_not_found(monkeypatch, mock_session): function test_get_knowledge_record_without_tenant_id (line 788) | def test_get_knowledge_record_without_tenant_id(monkeypatch, mock_session): function test_get_knowledge_record_exception (line 823) | def test_get_knowledge_record_exception(monkeypatch, mock_session): function test_get_knowledge_record_with_none_query (line 848) | def test_get_knowledge_record_with_none_query(monkeypatch, mock_session): function test_get_knowledge_record_without_index_name_key (line 869) | def test_get_knowledge_record_without_index_name_key(monkeypatch, mock_s... function test_get_knowledge_info_by_knowledge_ids_success (line 901) | def test_get_knowledge_info_by_knowledge_ids_success(monkeypatch, mock_s... function test_get_knowledge_info_by_knowledge_ids_exception (line 959) | def test_get_knowledge_info_by_knowledge_ids_exception(monkeypatch, mock... function test_get_knowledge_ids_by_index_names_success (line 982) | def test_get_knowledge_ids_by_index_names_success(monkeypatch, mock_sess... function test_get_knowledge_ids_by_index_names_exception (line 1023) | def test_get_knowledge_ids_by_index_names_exception(monkeypatch, mock_se... function test_get_knowledge_info_by_tenant_id_success (line 1046) | def test_get_knowledge_info_by_tenant_id_success(monkeypatch, mock_sessi... function test_get_knowledge_info_by_tenant_id_exception (line 1091) | def test_get_knowledge_info_by_tenant_id_exception(monkeypatch, mock_ses... function test_update_model_name_by_index_name_success (line 1114) | def test_update_model_name_by_index_name_success(monkeypatch, mock_sessi... function test_update_model_name_by_index_name_exception (line 1144) | def test_update_model_name_by_index_name_exception(monkeypatch, mock_ses... function test_create_knowledge_record_with_index_name_only (line 1169) | def test_create_knowledge_record_with_index_name_only(monkeypatch, mock_... function test_create_knowledge_record_without_user_id (line 1213) | def test_create_knowledge_record_without_user_id(monkeypatch, mock_sessi... function test_create_knowledge_record_without_index_name_and_knowledge_name (line 1251) | def test_create_knowledge_record_without_index_name_and_knowledge_name(m... function test_update_knowledge_record_without_user_id (line 1296) | def test_update_knowledge_record_without_user_id(monkeypatch, mock_sessi... function test_delete_knowledge_record_without_user_id (line 1336) | def test_delete_knowledge_record_without_user_id(monkeypatch, mock_sessi... function test_get_knowledge_record_with_tenant_id_none (line 1375) | def test_get_knowledge_record_with_tenant_id_none(monkeypatch, mock_sess... function test_get_knowledge_record_by_knowledge_name_success (line 1414) | def test_get_knowledge_record_by_knowledge_name_success(monkeypatch, moc... function test_get_knowledge_record_by_knowledge_name_not_found (line 1458) | def test_get_knowledge_record_by_knowledge_name_not_found(monkeypatch, m... function test_get_knowledge_info_by_knowledge_ids_empty_list (line 1489) | def test_get_knowledge_info_by_knowledge_ids_empty_list(monkeypatch, moc... function test_get_knowledge_info_by_knowledge_ids_includes_knowledge_name (line 1515) | def test_get_knowledge_info_by_knowledge_ids_includes_knowledge_name(mon... function test_get_knowledge_info_by_knowledge_ids_with_none_knowledge_name (line 1559) | def test_get_knowledge_info_by_knowledge_ids_with_none_knowledge_name(mo... function test_get_index_name_by_knowledge_name_success (line 1603) | def test_get_index_name_by_knowledge_name_success(monkeypatch, mock_sess... function test_get_index_name_by_knowledge_name_not_found (line 1634) | def test_get_index_name_by_knowledge_name_not_found(monkeypatch, mock_se... function test_get_index_name_by_knowledge_name_exception (line 1658) | def test_get_index_name_by_knowledge_name_exception(monkeypatch, mock_se... function test_generate_index_name_format (line 1679) | def test_generate_index_name_format(monkeypatch): function test_get_knowledge_ids_by_index_names_empty_list (line 1694) | def test_get_knowledge_ids_by_index_names_empty_list(monkeypatch, mock_s... function test_upsert_knowledge_record_create_new (line 1726) | def test_upsert_knowledge_record_create_new(monkeypatch, mock_session): function test_upsert_knowledge_record_update_existing (line 1770) | def test_upsert_knowledge_record_update_existing(monkeypatch, mock_sessi... function test_upsert_knowledge_record_exception (line 1826) | def test_upsert_knowledge_record_exception(monkeypatch, mock_session): function test_get_knowledge_info_by_tenant_and_source_success (line 1856) | def test_get_knowledge_info_by_tenant_and_source_success(monkeypatch, mo... function test_get_knowledge_info_by_tenant_and_source_empty_result (line 1907) | def test_get_knowledge_info_by_tenant_and_source_empty_result(monkeypatc... function test_get_knowledge_info_by_tenant_and_source_exception (line 1932) | def test_get_knowledge_info_by_tenant_and_source_exception(monkeypatch, ... FILE: test/backend/database/test_memory_config_db.py class MemoryUserConfig (line 23) | class MemoryUserConfig: function mock_session_ctx (line 38) | def mock_session_ctx(): function test_soft_delete_all_configs_by_user_id_success (line 46) | def test_soft_delete_all_configs_by_user_id_success(monkeypatch, mock_se... function test_soft_delete_all_configs_by_user_id_failure (line 65) | def test_soft_delete_all_configs_by_user_id_failure(monkeypatch, mock_se... FILE: test/backend/database/test_model_managment_db.py function mock_session (line 60) | def mock_session(): function test_get_models_by_tenant_factory_type (line 75) | def test_get_models_by_tenant_factory_type(monkeypatch, mock_session): function test_get_model_records_fills_default_chunk_sizes (line 96) | def test_get_model_records_fills_default_chunk_sizes(monkeypatch): function test_get_model_by_model_id_fills_default_chunk_sizes (line 127) | def test_get_model_by_model_id_fills_default_chunk_sizes(monkeypatch): function test_create_model_record (line 155) | def test_create_model_record(monkeypatch): function test_update_model_record (line 186) | def test_update_model_record(monkeypatch): function test_delete_model_record (line 218) | def test_delete_model_record(monkeypatch): function test_get_model_records_with_tenant_id (line 248) | def test_get_model_records_with_tenant_id(monkeypatch): function test_get_model_records_with_none_filter (line 273) | def test_get_model_records_with_none_filter(monkeypatch): function test_get_model_by_display_name (line 298) | def test_get_model_by_display_name(monkeypatch): function test_get_model_id_by_display_name (line 324) | def test_get_model_id_by_display_name(monkeypatch): function test_get_model_by_model_id_with_tenant_id (line 349) | def test_get_model_by_model_id_with_tenant_id(monkeypatch): function test_get_model_by_name_factory (line 373) | def test_get_model_by_name_factory(monkeypatch): FILE: test/backend/database/test_partner_db.py class _PartnerMappingId (line 13) | class _PartnerMappingId: method __init__ (line 33) | def __init__(self, **kwargs): class _SQLAlchemyError (line 47) | class _SQLAlchemyError(Exception): class DummySession (line 66) | class DummySession(MagicMock): method __enter__ (line 69) | def __enter__(self): method __exit__ (line 72) | def __exit__(self, exc_type, exc, tb): function _patch_session (line 76) | def _patch_session(monkeypatch, session_instance): function test_add_mapping_id_success (line 89) | def test_add_mapping_id_success(monkeypatch): function test_add_mapping_id_exception (line 120) | def test_add_mapping_id_exception(monkeypatch): function test_get_internal_id_by_external_found (line 141) | def test_get_internal_id_by_external_found(monkeypatch): function test_get_internal_id_by_external_not_found (line 159) | def test_get_internal_id_by_external_not_found(monkeypatch): function test_get_internal_id_by_external_exception (line 173) | def test_get_internal_id_by_external_exception(monkeypatch): function test_get_external_id_by_internal_found (line 191) | def test_get_external_id_by_internal_found(monkeypatch): function test_get_external_id_by_internal_not_found (line 207) | def test_get_external_id_by_internal_not_found(monkeypatch): function test_get_external_id_by_internal_exception (line 221) | def test_get_external_id_by_internal_exception(monkeypatch): FILE: test/backend/database/test_remote_mcp_db.py class MockMcpRecord (line 81) | class MockMcpRecord: method __init__ (line 82) | def __init__(self): function mock_session (line 108) | def mock_session(): function test_create_mcp_record_success (line 116) | def test_create_mcp_record_success(monkeypatch, mock_session): function test_create_mcp_record_failure (line 143) | def test_create_mcp_record_failure(monkeypatch, mock_session): function test_delete_mcp_record_by_name_and_url_success (line 171) | def test_delete_mcp_record_by_name_and_url_success(monkeypatch, mock_ses... function test_delete_mcp_record_by_name_and_url_failure (line 193) | def test_delete_mcp_record_by_name_and_url_failure(monkeypatch, mock_ses... function test_delete_mcp_record_by_container_id_success (line 212) | def test_delete_mcp_record_by_container_id_success(monkeypatch, mock_ses... function test_delete_mcp_record_by_container_id_failure (line 233) | def test_delete_mcp_record_by_container_id_failure(monkeypatch, mock_ses... function test_update_mcp_status_by_name_and_url_success (line 251) | def test_update_mcp_status_by_name_and_url_success(monkeypatch, mock_ses... function test_update_mcp_status_by_name_and_url_failure (line 273) | def test_update_mcp_status_by_name_and_url_failure(monkeypatch, mock_ses... function test_get_mcp_records_by_tenant_success (line 292) | def test_get_mcp_records_by_tenant_success(monkeypatch, mock_session): function test_get_mcp_server_by_name_and_tenant_success (line 321) | def test_get_mcp_server_by_name_and_tenant_success(monkeypatch, mock_ses... function test_get_mcp_server_by_name_and_tenant_not_found (line 343) | def test_get_mcp_server_by_name_and_tenant_not_found(monkeypatch, mock_s... function test_get_mcp_server_by_name_and_tenant_database_error (line 364) | def test_get_mcp_server_by_name_and_tenant_database_error(monkeypatch, m... function test_check_mcp_name_exists_true (line 382) | def test_check_mcp_name_exists_true(monkeypatch, mock_session): function test_check_mcp_name_exists_false (line 404) | def test_check_mcp_name_exists_false(monkeypatch, mock_session): function test_check_mcp_name_exists_database_error (line 425) | def test_check_mcp_name_exists_database_error(monkeypatch, mock_session): class MockMCPUpdateRequest (line 445) | class MockMCPUpdateRequest: method __init__ (line 446) | def __init__(self, current_service_name, current_mcp_url, new_service_... function test_update_mcp_record_by_name_and_url_success (line 454) | def test_update_mcp_record_by_name_and_url_success(monkeypatch, mock_ses... function test_update_mcp_record_by_name_and_url_without_status (line 493) | def test_update_mcp_record_by_name_and_url_without_status(monkeypatch, m... function test_update_mcp_record_by_name_and_url_failure (line 530) | def test_update_mcp_record_by_name_and_url_failure(monkeypatch, mock_ses... function test_mcp_record_lifecycle (line 561) | def test_mcp_record_lifecycle(monkeypatch, mock_session): function test_get_mcp_authorization_token_by_name_and_url_success (line 623) | def test_get_mcp_authorization_token_by_name_and_url_success(monkeypatch... function test_get_mcp_authorization_token_by_name_and_url_not_found (line 647) | def test_get_mcp_authorization_token_by_name_and_url_not_found(monkeypat... function test_get_mcp_authorization_token_by_name_and_url_database_error (line 669) | def test_get_mcp_authorization_token_by_name_and_url_database_error(monk... function test_update_mcp_record_by_name_and_url_with_authorization_token (line 688) | def test_update_mcp_record_by_name_and_url_with_authorization_token(monk... function test_update_mcp_record_by_name_and_url_without_authorization_token (line 728) | def test_update_mcp_record_by_name_and_url_without_authorization_token(m... function test_update_mcp_record_by_name_and_url_with_none_authorization_token (line 768) | def test_update_mcp_record_by_name_and_url_with_none_authorization_token... function test_update_mcp_record_by_name_and_url_without_authorization_token_attribute (line 806) | def test_update_mcp_record_by_name_and_url_without_authorization_token_a... function test_get_mcp_record_by_id_and_tenant_success (line 848) | def test_get_mcp_record_by_id_and_tenant_success(monkeypatch, mock_sessi... function test_get_mcp_record_by_id_and_tenant_not_found (line 876) | def test_get_mcp_record_by_id_and_tenant_not_found(monkeypatch, mock_ses... function test_get_mcp_record_by_id_and_tenant_database_error (line 897) | def test_get_mcp_record_by_id_and_tenant_database_error(monkeypatch, moc... FILE: test/backend/database/test_role_permission_db.py class MockRolePermission (line 56) | class MockRolePermission: method __init__ (line 57) | def __init__(self, **kwargs): class MockSQLAlchemyError (line 83) | class MockSQLAlchemyError(Exception): function mock_session (line 101) | def mock_session(): function test_get_all_role_permissions_success (line 110) | def test_get_all_role_permissions_success(monkeypatch, mock_session): function test_check_role_permission_true (line 133) | def test_check_role_permission_true(monkeypatch, mock_session): function test_check_role_permission_false (line 169) | def test_check_role_permission_false(monkeypatch, mock_session): function test_get_permissions_by_category_success (line 203) | def test_get_permissions_by_category_success(monkeypatch, mock_session): function test_database_error_handling (line 234) | def test_database_error_handling(monkeypatch, mock_session): function test_check_role_permission_partial_match (line 248) | def test_check_role_permission_partial_match(monkeypatch, mock_session): FILE: test/backend/database/test_tenant_config_db.py class MockTenantConfig (line 55) | class MockTenantConfig: method __init__ (line 56) | def __init__(self, **kwargs): class MockSQLAlchemyError (line 76) | class MockSQLAlchemyError(Exception): function mock_session (line 100) | def mock_session(): function test_get_all_configs_by_tenant_id_success (line 108) | def test_get_all_configs_by_tenant_id_success(monkeypatch, mock_session): function test_get_all_configs_by_tenant_id_empty (line 143) | def test_get_all_configs_by_tenant_id_empty(monkeypatch, mock_session): function test_get_tenant_config_info_success (line 161) | def test_get_tenant_config_info_success(monkeypatch, mock_session): function test_get_tenant_config_info_not_found (line 186) | def test_get_tenant_config_info_not_found(monkeypatch, mock_session): function test_get_single_config_info_success (line 204) | def test_get_single_config_info_success(monkeypatch, mock_session): function test_get_single_config_info_not_found (line 228) | def test_get_single_config_info_not_found(monkeypatch, mock_session): function test_insert_config_success (line 246) | def test_insert_config_success(monkeypatch, mock_session): function test_insert_config_failure (line 271) | def test_insert_config_failure(monkeypatch, mock_session): function test_delete_config_by_tenant_config_id_success (line 296) | def test_delete_config_by_tenant_config_id_success(monkeypatch, mock_ses... function test_delete_config_by_tenant_config_id_failure (line 319) | def test_delete_config_by_tenant_config_id_failure(monkeypatch, mock_ses... function test_delete_config_success (line 340) | def test_delete_config_success(monkeypatch, mock_session): function test_delete_config_failure (line 363) | def test_delete_config_failure(monkeypatch, mock_session): function test_update_config_by_tenant_config_id_success (line 384) | def test_update_config_by_tenant_config_id_success(monkeypatch, mock_ses... function test_update_config_by_tenant_config_id_failure (line 407) | def test_update_config_by_tenant_config_id_failure(monkeypatch, mock_ses... function test_update_config_by_tenant_config_id_and_data_success (line 428) | def test_update_config_by_tenant_config_id_and_data_success(monkeypatch,... function test_update_config_by_tenant_config_id_and_data_failure (line 452) | def test_update_config_by_tenant_config_id_and_data_failure(monkeypatch,... function test_get_all_tenant_ids_success (line 474) | def test_get_all_tenant_ids_success(monkeypatch, mock_session): function test_get_all_tenant_ids_empty (line 503) | def test_get_all_tenant_ids_empty(monkeypatch, mock_session): function test_database_error_handling (line 528) | def test_database_error_handling(monkeypatch, mock_session): FILE: test/backend/database/test_token_db.py class MockUserTokenInfo (line 41) | class MockUserTokenInfo: method __init__ (line 45) | def __init__(self, token_id=1, access_key="nexent-abc123", user_id="us... method token_id (line 58) | def token_id(self): method token_id (line 62) | def token_id(self, value): method user_id (line 66) | def user_id(self): method user_id (line 70) | def user_id(self, value): method access_key (line 74) | def access_key(self): method access_key (line 78) | def access_key(self, value): method delete_flag (line 82) | def delete_flag(self): method delete_flag (line 86) | def delete_flag(self, value): method create_time (line 90) | def create_time(self): method create_time (line 94) | def create_time(self, value): method reset (line 98) | def reset(cls): class MockUserTokenUsageLog (line 102) | class MockUserTokenUsageLog: method __init__ (line 106) | def __init__(self, token_usage_id=1, token_id=1, call_function_name="r... method reset (line 118) | def reset(cls): class MockColumn (line 129) | class MockColumn: method desc (line 130) | def desc(self): class MockQuery (line 163) | class MockQuery: method __init__ (line 165) | def __init__(self, model_class, instances): method filter (line 171) | def filter(self, *args): method filter_by (line 175) | def filter_by(self, **kwargs): method order_by (line 179) | def order_by(self, *args): method first (line 183) | def first(self): method all (line 189) | def all(self): class MockSession (line 193) | class MockSession: method __init__ (line 195) | def __init__(self): method __enter__ (line 202) | def __enter__(self): method __exit__ (line 205) | def __exit__(self, exc_type, exc_val, exc_tb): method add (line 208) | def add(self, obj): method flush (line 217) | def flush(self): method query (line 220) | def query(self, model_class): function mock_session (line 229) | def mock_session(): function mock_db_session (line 235) | def mock_db_session(mock_session): class TestGenerateAccessKey (line 241) | class TestGenerateAccessKey: method test_generate_access_key_format (line 244) | def test_generate_access_key_format(self): method test_generate_access_key_unique (line 250) | def test_generate_access_key_unique(self): class TestCreateToken (line 256) | class TestCreateToken: method test_create_token_success (line 259) | def test_create_token_success(self, mock_db_session): class TestListTokensByUser (line 269) | class TestListTokensByUser: method test_list_tokens_by_user_success (line 272) | def test_list_tokens_by_user_success(self, mock_db_session): method test_list_tokens_by_user_empty (line 283) | def test_list_tokens_by_user_empty(self, mock_db_session): class TestGetTokenById (line 289) | class TestGetTokenById: method test_get_token_by_id_success (line 292) | def test_get_token_by_id_success(self, mock_db_session): method test_get_token_by_id_not_found (line 300) | def test_get_token_by_id_not_found(self, mock_db_session): class TestGetTokenByAccessKey (line 306) | class TestGetTokenByAccessKey: method test_get_token_by_access_key_success (line 309) | def test_get_token_by_access_key_success(self, mock_db_session): method test_get_token_by_access_key_not_found (line 319) | def test_get_token_by_access_key_not_found(self, mock_db_session): class TestDeleteToken (line 325) | class TestDeleteToken: method test_delete_token_success (line 328) | def test_delete_token_success(self, mock_db_session): method test_delete_token_not_found (line 337) | def test_delete_token_not_found(self, mock_db_session): class TestLogTokenUsage (line 343) | class TestLogTokenUsage: method test_log_token_usage_success (line 346) | def test_log_token_usage_success(self, mock_db_session): method test_log_token_usage_without_metadata (line 359) | def test_log_token_usage_without_metadata(self, mock_db_session): class TestGetLatestUsageMetadata (line 371) | class TestGetLatestUsageMetadata: method test_get_latest_usage_metadata_success (line 374) | def test_get_latest_usage_metadata_success(self, mock_db_session): method test_get_latest_usage_metadata_not_found (line 389) | def test_get_latest_usage_metadata_not_found(self, mock_db_session): FILE: test/backend/database/test_tool_db.py class MockEnumMember (line 24) | class MockEnumMember: method __init__ (line 25) | def __init__(self, value): class MockToolSourceEnum (line 29) | class MockToolSourceEnum: class MockModelModule (line 37) | class MockModelModule: class MockToolInstance (line 111) | class MockToolInstance: method __init__ (line 112) | def __init__(self): class MockToolInfo (line 131) | class MockToolInfo: method __init__ (line 132) | def __init__(self): function mock_session (line 162) | def mock_session(): function test_create_tool_success (line 170) | def test_create_tool_success(monkeypatch, mock_session): function test_create_or_update_tool_by_tool_info_update_existing (line 191) | def test_create_or_update_tool_by_tool_info_update_existing(monkeypatch,... function test_create_or_update_tool_by_tool_info_create_new (line 216) | def test_create_or_update_tool_by_tool_info_create_new(monkeypatch, mock... function test_query_all_tools (line 269) | def test_query_all_tools(monkeypatch, mock_session): function test_query_tool_instances_by_id_found (line 295) | def test_query_tool_instances_by_id_found(monkeypatch, mock_session): function test_query_tool_instances_by_id_not_found (line 320) | def test_query_tool_instances_by_id_not_found(monkeypatch, mock_session): function test_query_tools_by_ids (line 340) | def test_query_tools_by_ids(monkeypatch, mock_session): function test_query_all_enabled_tool_instances (line 367) | def test_query_all_enabled_tool_instances(monkeypatch, mock_session): function test_update_tool_table_from_scan_tool_list_success (line 392) | def test_update_tool_table_from_scan_tool_list_success(monkeypatch, mock... function test_update_tool_table_from_scan_tool_list_create_new_tool (line 428) | def test_update_tool_table_from_scan_tool_list_create_new_tool(monkeypat... function test_update_tool_table_from_scan_tool_list_create_new_tool_invalid_name (line 480) | def test_update_tool_table_from_scan_tool_list_create_new_tool_invalid_n... function test_update_tool_table_mcp_tools_same_name_different_usage (line 532) | def test_update_tool_table_mcp_tools_same_name_different_usage(monkeypat... function test_update_tool_table_mcp_tools_same_name_same_usage (line 586) | def test_update_tool_table_mcp_tools_same_name_same_usage(monkeypatch, m... function test_update_tool_table_mcp_tools_empty_usage (line 632) | def test_update_tool_table_mcp_tools_empty_usage(monkeypatch, mock_sessi... function test_update_tool_table_non_mcp_tools_use_name_source (line 679) | def test_update_tool_table_non_mcp_tools_use_name_source(monkeypatch, mo... function test_update_tool_table_mcp_tools_multiple_different_servers (line 722) | def test_update_tool_table_mcp_tools_multiple_different_servers(monkeypa... function test_update_tool_table_mixed_mcp_and_non_mcp_tools (line 773) | def test_update_tool_table_mixed_mcp_and_non_mcp_tools(monkeypatch, mock... function test_update_tool_table_mcp_tool_update_existing_attributes (line 836) | def test_update_tool_table_mcp_tool_update_existing_attributes(monkeypat... function test_update_tool_table_existing_tools_set_unavailable (line 885) | def test_update_tool_table_existing_tools_set_unavailable(monkeypatch, m... function test_update_tool_table_mcp_tool_invalid_name (line 938) | def test_update_tool_table_mcp_tool_invalid_name(monkeypatch, mock_sessi... function test_add_tool_field (line 991) | def test_add_tool_field(monkeypatch, mock_session): function test_search_tools_for_sub_agent (line 1018) | def test_search_tools_for_sub_agent(monkeypatch, mock_session): function test_check_tool_is_available (line 1045) | def test_check_tool_is_available(monkeypatch, mock_session): function test_delete_tools_by_agent_id_success (line 1066) | def test_delete_tools_by_agent_id_success(monkeypatch, mock_session): function test_search_last_tool_instance_by_tool_id_found (line 1086) | def test_search_last_tool_instance_by_tool_id_found(monkeypatch, mock_se... function test_search_last_tool_instance_by_tool_id_not_found (line 1116) | def test_search_last_tool_instance_by_tool_id_not_found(monkeypatch, moc... function test_search_last_tool_instance_by_tool_id_with_deleted_flag (line 1138) | def test_search_last_tool_instance_by_tool_id_with_deleted_flag(monkeypa... function test_search_last_tool_instance_by_tool_id_ordering (line 1167) | def test_search_last_tool_instance_by_tool_id_ordering(monkeypatch, mock... function test_search_last_tool_instance_by_tool_id_different_tenants (line 1195) | def test_search_last_tool_instance_by_tool_id_different_tenants(monkeypa... function test_query_tool_instances_by_agent_id (line 1223) | def test_query_tool_instances_by_agent_id(monkeypatch, mock_session): function test_query_tool_instances_by_agent_id_empty (line 1252) | def test_query_tool_instances_by_agent_id_empty(monkeypatch, mock_session): function test_query_tool_instances_by_agent_id_with_version (line 1274) | def test_query_tool_instances_by_agent_id_with_version(monkeypatch, mock... function test_check_tool_list_initialized_has_tools (line 1300) | def test_check_tool_list_initialized_has_tools(monkeypatch, mock_session): function test_check_tool_list_initialized_no_tools (line 1321) | def test_check_tool_list_initialized_no_tools(monkeypatch, mock_session): function test_check_tool_list_initialized_with_deleted_tools_only (line 1342) | def test_check_tool_list_initialized_with_deleted_tools_only(monkeypatch... function test_check_tool_list_initialized_correct_tenant_filter (line 1363) | def test_check_tool_list_initialized_correct_tenant_filter(monkeypatch, ... FILE: test/backend/database/test_user_tenant_db.py class MockSQLAlchemyError (line 71) | class MockSQLAlchemyError(Exception): class MockUserTenant (line 92) | class MockUserTenant: method __init__ (line 93) | def __init__(self, user_id="test_user_id", user_email="test@example.co... function mock_session (line 116) | def mock_session(): function test_get_user_tenant_by_user_id_success (line 123) | def test_get_user_tenant_by_user_id_success(monkeypatch, mock_session): function test_get_user_tenant_by_user_id_not_found (line 148) | def test_get_user_tenant_by_user_id_not_found(monkeypatch, mock_session): function test_get_user_tenant_by_user_id_database_error (line 167) | def test_get_user_tenant_by_user_id_database_error(monkeypatch, mock_ses... function test_insert_user_tenant_success (line 183) | def test_insert_user_tenant_success(monkeypatch, mock_session): function test_insert_user_tenant_failure (line 199) | def test_insert_user_tenant_failure(monkeypatch, mock_session): function test_insert_user_tenant_with_empty_user_id (line 216) | def test_insert_user_tenant_with_empty_user_id(monkeypatch, mock_session): function test_insert_user_tenant_with_empty_tenant_id (line 246) | def test_insert_user_tenant_with_empty_tenant_id(monkeypatch, mock_sessi... function test_user_tenant_lifecycle (line 276) | def test_user_tenant_lifecycle(monkeypatch, mock_session): function test_get_user_tenant_by_user_id_with_deleted_record (line 315) | def test_get_user_tenant_by_user_id_with_deleted_record(monkeypatch, moc... function test_get_all_tenant_ids_empty_database (line 338) | def test_get_all_tenant_ids_empty_database(monkeypatch, mock_session): function test_get_all_tenant_ids_with_existing_tenants (line 356) | def test_get_all_tenant_ids_with_existing_tenants(monkeypatch, mock_sess... function test_soft_delete_user_tenant_by_user_id_success (line 384) | def test_soft_delete_user_tenant_by_user_id_success(monkeypatch, mock_se... function test_soft_delete_user_tenant_by_user_id_no_rows (line 405) | def test_soft_delete_user_tenant_by_user_id_no_rows(monkeypatch, mock_se... function test_get_users_by_tenant_id_success_with_pagination (line 422) | def test_get_users_by_tenant_id_success_with_pagination(monkeypatch, moc... function test_get_users_by_tenant_id_success_without_pagination (line 481) | def test_get_users_by_tenant_id_success_without_pagination(monkeypatch, ... function test_get_users_by_tenant_id_with_asc_sort (line 533) | def test_get_users_by_tenant_id_with_asc_sort(monkeypatch, mock_session): function test_get_users_by_tenant_id_with_only_page_none (line 583) | def test_get_users_by_tenant_id_with_only_page_none(monkeypatch, mock_se... function test_get_users_by_tenant_id_with_only_page_size_none (line 629) | def test_get_users_by_tenant_id_with_only_page_size_none(monkeypatch, mo... function test_get_users_by_tenant_id_empty_result (line 675) | def test_get_users_by_tenant_id_empty_result(monkeypatch, mock_session): function test_update_user_tenant_role_success (line 718) | def test_update_user_tenant_role_success(monkeypatch, mock_session): function test_update_user_tenant_role_no_user_found (line 743) | def test_update_user_tenant_role_no_user_found(monkeypatch, mock_session): function test_update_user_tenant_role_database_error (line 762) | def test_update_user_tenant_role_database_error(monkeypatch, mock_session): function test_soft_delete_users_by_tenant_id_success (line 778) | def test_soft_delete_users_by_tenant_id_success(monkeypatch, mock_session): function test_soft_delete_users_by_tenant_id_no_users (line 799) | def test_soft_delete_users_by_tenant_id_no_users(monkeypatch, mock_sessi... function test_soft_delete_users_by_tenant_id_database_error (line 816) | def test_soft_delete_users_by_tenant_id_database_error(monkeypatch, mock... FILE: test/backend/middleware/test_exception_handler.py function stop_patches (line 100) | def stop_patches(): class TestHttpStatusToErrorCode (line 108) | class TestHttpStatusToErrorCode: method test_maps_400_to_common_validation_error (line 111) | def test_maps_400_to_common_validation_error(self): method test_maps_401_to_common_unauthorized (line 115) | def test_maps_401_to_common_unauthorized(self): method test_maps_403_to_common_forbidden (line 119) | def test_maps_403_to_common_forbidden(self): method test_maps_404_to_common_resource_not_found (line 123) | def test_maps_404_to_common_resource_not_found(self): method test_maps_429_to_common_rate_limit_exceeded (line 127) | def test_maps_429_to_common_rate_limit_exceeded(self): method test_maps_500_to_system_internal_error (line 131) | def test_maps_500_to_system_internal_error(self): method test_maps_502_to_system_service_unavailable (line 135) | def test_maps_502_to_system_service_unavailable(self): method test_maps_503_to_system_service_unavailable (line 139) | def test_maps_503_to_system_service_unavailable(self): method test_unknown_status_returns_system_unknown_error (line 143) | def test_unknown_status_returns_system_unknown_error(self): class TestCreateErrorResponse (line 149) | class TestCreateErrorResponse: method test_create_error_response_default (line 152) | def test_create_error_response_default(self): method test_create_error_response_custom_message (line 159) | def test_create_error_response_custom_message(self): method test_create_error_response_with_trace_id (line 169) | def test_create_error_response_with_trace_id(self): method test_create_error_response_with_details (line 179) | def test_create_error_response_with_details(self): method test_create_error_response_custom_http_status (line 189) | def test_create_error_response_custom_http_status(self): method test_create_error_response_dify_auth_error (line 198) | def test_create_error_response_dify_auth_error(self): method test_create_error_response_dify_config_invalid (line 204) | def test_create_error_response_dify_config_invalid(self): method test_create_error_response_dify_rate_limit (line 210) | def test_create_error_response_dify_rate_limit(self): method test_create_error_response_validation_error (line 216) | def test_create_error_response_validation_error(self): method test_create_error_response_token_expired (line 222) | def test_create_error_response_token_expired(self): class TestCreateSuccessResponse (line 229) | class TestCreateSuccessResponse: method test_create_success_response_default (line 232) | def test_create_success_response_default(self): method test_create_success_response_with_data (line 238) | def test_create_success_response_with_data(self): method test_create_success_response_custom_message (line 245) | def test_create_success_response_custom_message(self): method test_create_success_response_with_trace_id (line 251) | def test_create_success_response_with_trace_id(self): method test_create_success_response_all_params (line 258) | def test_create_success_response_all_params(self): class TestExceptionHandlerMiddleware (line 272) | class TestExceptionHandlerMiddleware: method test_dispatch_normal_request (line 276) | async def test_dispatch_normal_request(self): method test_dispatch_app_exception (line 292) | async def test_dispatch_app_exception(self): method test_dispatch_http_exception (line 311) | async def test_dispatch_http_exception(self): method test_dispatch_generic_exception (line 327) | async def test_dispatch_generic_exception(self): method test_trace_id_generated (line 344) | async def test_trace_id_generated(self): method test_app_exception_with_details (line 360) | async def test_app_exception_with_details(self): method test_different_error_codes_map_to_correct_status (line 380) | async def test_different_error_codes_map_to_correct_status(self): class TestErrorResponseFormat (line 405) | class TestErrorResponseFormat: method test_error_response_contains_code_as_int (line 408) | def test_error_response_contains_code_as_int(self): method test_error_response_contains_message (line 417) | def test_error_response_contains_message(self): method test_error_response_contains_trace_id (line 424) | def test_error_response_contains_trace_id(self): method test_error_response_contains_details (line 431) | def test_error_response_contains_details(self): method test_error_response_details_null_when_not_provided (line 439) | def test_error_response_details_null_when_not_provided(self): class TestNewErrorCodes (line 447) | class TestNewErrorCodes: method test_datamate_connection_failed (line 450) | def test_datamate_connection_failed(self): method test_me_connection_failed (line 454) | def test_me_connection_failed(self): method test_northbound_request_failed (line 458) | def test_northbound_request_failed(self): method test_northbound_config_invalid (line 462) | def test_northbound_config_invalid(self): method test_dataprocess_task_failed (line 466) | def test_dataprocess_task_failed(self): method test_dataprocess_parse_failed (line 470) | def test_dataprocess_parse_failed(self): method test_quick_config_invalid (line 474) | def test_quick_config_invalid(self): method test_agentspace_agent_not_found (line 478) | def test_agentspace_agent_not_found(self): method test_knowledge_not_found (line 482) | def test_knowledge_not_found(self): method test_memory_not_found (line 486) | def test_memory_not_found(self): method test_profile_user_not_found (line 490) | def test_profile_user_not_found(self): method test_tenant_not_found (line 494) | def test_tenant_not_found(self): method test_mcp_tool_not_found (line 498) | def test_mcp_tool_not_found(self): method test_mcp_name_illegal (line 502) | def test_mcp_name_illegal(self): method test_model_not_found (line 506) | def test_model_not_found(self): class TestAppExceptionToDict (line 511) | class TestAppExceptionToDict: method test_to_dict_contains_code (line 514) | def test_to_dict_contains_code(self): method test_to_dict_contains_message (line 520) | def test_to_dict_contains_message(self): method test_to_dict_contains_details (line 526) | def test_to_dict_contains_details(self): method test_to_dict_details_null_when_empty (line 532) | def test_to_dict_details_null_when_empty(self): FILE: test/backend/services/providers/test_base.py class TestCreateErrorResponse (line 17) | class TestCreateErrorResponse: method test_create_error_response_basic (line 20) | def test_create_error_response_basic(self): method test_create_error_response_with_http_code (line 26) | def test_create_error_response_with_http_code(self): class TestClassifyProviderError (line 40) | class TestClassifyProviderError: method test_classify_401_unauthorized (line 43) | def test_classify_401_unauthorized(self): method test_classify_403_forbidden (line 53) | def test_classify_403_forbidden(self): method test_classify_404_not_found (line 63) | def test_classify_404_not_found(self): method test_classify_400_bad_request (line 73) | def test_classify_400_bad_request(self): method test_classify_500_server_error (line 83) | def test_classify_500_server_error(self): method test_classify_502_bad_gateway (line 93) | def test_classify_502_bad_gateway(self): method test_classify_ssl_error (line 103) | def test_classify_ssl_error(self): method test_classify_connection_failed (line 114) | def test_classify_connection_failed(self): method test_classify_timeout_error (line 124) | def test_classify_timeout_error(self): method test_classify_server_disconnected_error (line 134) | def test_classify_server_disconnected_error(self): method test_classify_content_type_error (line 145) | def test_classify_content_type_error(self): method test_classify_generic_exception (line 159) | def test_classify_generic_exception(self): method test_classify_client_connector_error_ssl (line 168) | def test_classify_client_connector_error_ssl(self): method test_classify_client_connector_error_certificate_in_message (line 194) | def test_classify_client_connector_error_certificate_in_message(self): method test_classify_client_connector_error_non_ssl (line 219) | def test_classify_client_connector_error_non_ssl(self): method test_classify_429_too_many_requests (line 244) | def test_classify_429_too_many_requests(self): method test_classify_408_request_timeout (line 254) | def test_classify_408_request_timeout(self): method test_classify_422_unprocessable_entity (line 264) | def test_classify_422_unprocessable_entity(self): method test_classify_426_upgrade_required (line 274) | def test_classify_426_upgrade_required(self): method test_classify_428_precondition_failed (line 284) | def test_classify_428_precondition_failed(self): method test_classify_503_service_unavailable (line 294) | def test_classify_503_service_unavailable(self): method test_classify_504_gateway_timeout (line 304) | def test_classify_504_gateway_timeout(self): method test_classify_507_insufficient_storage (line 314) | def test_classify_507_insufficient_storage(self): method test_classify_509_bandwidth_limit_exceeded (line 324) | def test_classify_509_bandwidth_limit_exceeded(self): method test_classify_error_message_only_no_status_no_exception (line 334) | def test_classify_error_message_only_no_status_no_exception(self): method test_classify_with_empty_error_message (line 343) | def test_classify_with_empty_error_message(self): method test_classify_with_none_error_message (line 353) | def test_classify_with_none_error_message(self): method test_classify_client_connector_error_connection_error (line 363) | def test_classify_client_connector_error_connection_error(self): method test_classify_client_connector_error_dns_resolution_failed (line 388) | def test_classify_client_connector_error_dns_resolution_failed(self): class TestAbstractModelProvider (line 414) | class TestAbstractModelProvider: method test_abstract_method_raises_not_implemented (line 418) | async def test_abstract_method_raises_not_implemented(self): method test_is_abstract_class (line 430) | def test_is_abstract_class(self): method test_concrete_implementation_can_be_instantiated (line 435) | def test_concrete_implementation_can_be_instantiated(self): method test_concrete_provider_get_models_returns_list (line 445) | def test_concrete_provider_get_models_returns_list(self): method test_concrete_provider_get_models_with_config (line 461) | async def test_concrete_provider_get_models_with_config(self): method test_concrete_provider_get_models_empty_config (line 473) | async def test_concrete_provider_get_models_empty_config(self): method test_concrete_provider_get_models_none_config (line 485) | async def test_concrete_provider_get_models_none_config(self): method test_concrete_provider_get_models_is_async (line 497) | async def test_concrete_provider_get_models_is_async(self): method test_provider_with_additional_methods (line 508) | def test_provider_with_additional_methods(self): method test_provider_inheritance_chain (line 522) | def test_provider_inheritance_chain(self): FILE: test/backend/services/providers/test_dashscope_provider.py class TestDashScopeModelProvider (line 15) | class TestDashScopeModelProvider: method _setup_mock_client (line 18) | def _setup_mock_client(self, mocker, mock_response): method test_get_models_llm_success (line 40) | async def test_get_models_llm_success(self, mocker: MockFixture): method test_get_models_embedding_success (line 94) | async def test_get_models_embedding_success(self, mocker: MockFixture): method test_get_models_vlm_success (line 135) | async def test_get_models_vlm_success(self, mocker: MockFixture): method test_get_models_reranker_success (line 176) | async def test_get_models_reranker_success(self, mocker: MockFixture): method test_get_models_tts_success (line 217) | async def test_get_models_tts_success(self, mocker: MockFixture): method test_get_models_stt_success (line 258) | async def test_get_models_stt_success(self, mocker: MockFixture): method test_get_models_multi_embedding_success (line 299) | async def test_get_models_multi_embedding_success(self, mocker: MockFi... method test_get_models_empty_response (line 339) | async def test_get_models_empty_response(self, mocker: MockFixture): method test_get_models_http_error (line 364) | async def test_get_models_http_error(self, mocker: MockFixture): method test_get_models_connect_error (line 395) | async def test_get_models_connect_error(self, mocker: MockFixture): method test_get_models_timeout (line 422) | async def test_get_models_timeout(self, mocker: MockFixture): method test_get_models_authorization_header (line 449) | async def test_get_models_authorization_header(self, mocker: MockFixtu... method test_get_models_pagination (line 495) | async def test_get_models_pagination(self, mocker: MockFixture): method test_get_models_unknown_type_returns_empty (line 545) | async def test_get_models_unknown_type_returns_empty(self, mocker: Moc... method test_get_models_rate_limit_retry (line 578) | async def test_get_models_rate_limit_retry(self, mocker: MockFixture): method test_get_models_with_chinese_description (line 629) | async def test_get_models_with_chinese_description(self, mocker: MockF... FILE: test/backend/services/providers/test_modelengine_provider.py class TestModelEngineProvider (line 19) | class TestModelEngineProvider: method test_get_models_success_with_all_types (line 23) | async def test_get_models_success_with_all_types(self, mocker: MockFix... method test_get_models_with_type_filter (line 74) | async def test_get_models_with_type_filter(self, mocker: MockFixture): method test_get_models_empty_response (line 119) | async def test_get_models_empty_response(self, mocker: MockFixture): method test_get_models_missing_host (line 156) | async def test_get_models_missing_host(self, mocker: MockFixture): method test_get_models_missing_api_key (line 169) | async def test_get_models_missing_api_key(self, mocker: MockFixture): method test_get_models_api_error_401 (line 182) | async def test_get_models_api_error_401(self, mocker: MockFixture): method test_get_models_api_error_500 (line 219) | async def test_get_models_api_error_500(self, mocker: MockFixture): method test_get_models_connection_error (line 256) | async def test_get_models_connection_error(self, mocker: MockFixture): method test_get_models_type_mapping (line 282) | async def test_get_models_type_mapping(self, mocker: MockFixture): method test_get_models_vlm_has_max_tokens (line 339) | async def test_get_models_vlm_has_max_tokens(self, mocker: MockFixture): method test_get_models_embedding_no_max_tokens (line 382) | async def test_get_models_embedding_no_max_tokens(self, mocker: MockFi... class TestModelEngineProviderHelpers (line 425) | class TestModelEngineProviderHelpers: method test_get_model_engine_raw_url_with_path (line 428) | def test_get_model_engine_raw_url_with_path(self): method test_get_model_engine_raw_url_without_path (line 435) | def test_get_model_engine_raw_url_without_path(self): method test_get_model_engine_raw_url_with_trailing_slash (line 440) | def test_get_model_engine_raw_url_with_trailing_slash(self): method test_get_model_engine_raw_url_empty (line 445) | def test_get_model_engine_raw_url_empty(self): method test_get_model_engine_raw_url_none (line 450) | def test_get_model_engine_raw_url_none(self): FILE: test/backend/services/providers/test_silicon_provider.py class TestSiliconModelProvider (line 15) | class TestSiliconModelProvider: method test_get_models_llm_success (line 19) | async def test_get_models_llm_success(self, mocker: MockFixture): method test_get_models_vlm_success (line 63) | async def test_get_models_vlm_success(self, mocker: MockFixture): method test_get_models_embedding_success (line 104) | async def test_get_models_embedding_success(self, mocker: MockFixture): method test_get_models_multi_embedding_success (line 145) | async def test_get_models_multi_embedding_success(self, mocker: MockFi... method test_get_models_unknown_type (line 186) | async def test_get_models_unknown_type(self, mocker: MockFixture): method test_get_models_empty_response (line 225) | async def test_get_models_empty_response(self, mocker: MockFixture): method test_get_models_http_error (line 259) | async def test_get_models_http_error(self, mocker: MockFixture): method test_get_models_connect_error (line 294) | async def test_get_models_connect_error(self, mocker: MockFixture): method test_get_models_timeout (line 325) | async def test_get_models_timeout(self, mocker: MockFixture): method test_get_models_correct_url_for_llm (line 356) | async def test_get_models_correct_url_for_llm(self, mocker: MockFixture): method test_get_models_correct_url_for_embedding (line 392) | async def test_get_models_correct_url_for_embedding(self, mocker: Mock... method test_get_models_authorization_header (line 428) | async def test_get_models_authorization_header(self, mocker: MockFixtu... method test_get_models_llm_has_max_tokens (line 465) | async def test_get_models_llm_has_max_tokens(self, mocker: MockFixture): FILE: test/backend/services/providers/test_tokenpony_provider.py class TestTokenPonyModelProvider (line 15) | class TestTokenPonyModelProvider: method test_get_models_llm_success (line 19) | async def test_get_models_llm_success(self, mocker: MockFixture): method test_get_models_embedding_success (line 74) | async def test_get_models_embedding_success(self, mocker: MockFixture): method test_get_models_vlm_success (line 119) | async def test_get_models_vlm_success(self, mocker: MockFixture): method test_get_models_reranker_success (line 164) | async def test_get_models_reranker_success(self, mocker: MockFixture): method test_get_models_tts_success (line 209) | async def test_get_models_tts_success(self, mocker: MockFixture): method test_get_models_stt_success (line 254) | async def test_get_models_stt_success(self, mocker: MockFixture): method test_get_models_multi_embedding_success (line 299) | async def test_get_models_multi_embedding_success(self, mocker: MockFi... method test_get_models_empty_response (line 343) | async def test_get_models_empty_response(self, mocker: MockFixture): method test_get_models_http_error (line 377) | async def test_get_models_http_error(self, mocker: MockFixture): method test_get_models_connect_error (line 412) | async def test_get_models_connect_error(self, mocker: MockFixture): method test_get_models_timeout (line 443) | async def test_get_models_timeout(self, mocker: MockFixture): method test_get_models_authorization_header (line 474) | async def test_get_models_authorization_header(self, mocker: MockFixtu... method test_get_models_unknown_type_returns_empty (line 519) | async def test_get_models_unknown_type_returns_empty(self, mocker: Moc... method test_get_models_vlm_by_keyword (line 561) | async def test_get_models_vlm_by_keyword(self, mocker: MockFixture): method test_get_models_bge_prefix_embedding (line 616) | async def test_get_models_bge_prefix_embedding(self, mocker: MockFixtu... method test_get_models_llm_has_max_tokens (line 666) | async def test_get_models_llm_has_max_tokens(self, mocker: MockFixture): FILE: test/backend/services/test_agent_service.py function mock_get_db_session (line 50) | def mock_get_db_session(db_session=None): function pass_through_decorator (line 122) | def pass_through_decorator(*args, **kwargs): function reset_mocks (line 180) | def reset_mocks(): function test_get_enable_tool_id_by_agent_id (line 186) | async def test_get_enable_tool_id_by_agent_id(): function test_get_creating_sub_agent_id_service_existing_agent (line 222) | async def test_get_creating_sub_agent_id_service_existing_agent(mock_sea... function test_get_creating_sub_agent_id_service_new_agent (line 248) | async def test_get_creating_sub_agent_id_service_new_agent(mock_search, ... function test_get_agent_info_impl_success (line 282) | async def test_get_agent_info_impl_success(mock_search_agent_info, mock_... function test_get_agent_info_impl_with_version_no (line 342) | async def test_get_agent_info_impl_with_version_no(mock_search_agent_inf... function test_get_creating_sub_agent_info_impl_success (line 402) | async def test_get_creating_sub_agent_info_impl_success(mock_get_current... function test_update_agent_info_impl_success (line 466) | async def test_update_agent_info_impl_success(mock_get_current_user_info... function test_delete_agent_impl_success (line 500) | async def test_delete_agent_impl_success(mock_delete_agent, mock_delete_... function test_get_agent_info_impl_exception_handling (line 522) | async def test_get_agent_info_impl_exception_handling(mock_search_agent_... function test_update_agent_info_impl_exception_handling (line 545) | async def test_update_agent_info_impl_exception_handling(mock_get_curren... function test_update_agent_info_impl_with_enabled_tool_ids (line 578) | async def test_update_agent_info_impl_with_enabled_tool_ids( function test_update_agent_info_impl_with_enabled_tool_ids_instance_having_null_tool_id (line 635) | async def test_update_agent_info_impl_with_enabled_tool_ids_instance_hav... function test_update_agent_info_impl_with_enabled_tool_ids_disabled_existing_tool (line 682) | async def test_update_agent_info_impl_with_enabled_tool_ids_disabled_exi... function test_update_agent_info_impl_with_related_agent_ids (line 739) | async def test_update_agent_info_impl_with_related_agent_ids( function test_update_agent_info_impl_circular_dependency_detection (line 780) | async def test_update_agent_info_impl_circular_dependency_detection( function test_update_agent_info_impl_with_both_tool_and_related_agents (line 820) | async def test_update_agent_info_impl_with_both_tool_and_related_agents( function test_update_agent_info_impl_tool_update_exception (line 865) | async def test_update_agent_info_impl_tool_update_exception( function test_update_agent_info_impl_related_agent_update_exception (line 897) | async def test_update_agent_info_impl_related_agent_update_exception( function test_resolve_user_tenant_language_with_overrides (line 926) | def test_resolve_user_tenant_language_with_overrides(mock_get_current_us... function test_resolve_user_tenant_language_without_overrides (line 950) | def test_resolve_user_tenant_language_without_overrides(mock_get_current... function test_resolve_user_tenant_language_partial_override (line 974) | def test_resolve_user_tenant_language_partial_override(mock_get_current_... function test_delete_agent_impl_exception_handling (line 999) | async def test_delete_agent_impl_exception_handling(mock_delete_agent): function test_get_user_group_ids_success (line 1018) | def test_get_user_group_ids_success(mock_get_group_ids): function test_get_user_group_ids_empty_groups (line 1040) | def test_get_user_group_ids_empty_groups(mock_get_group_ids): function test_get_user_group_ids_exception_handling (line 1060) | def test_get_user_group_ids_exception_handling(mock_get_group_ids): function test_update_agent_info_impl_create_agent_auto_group_ids (line 1083) | async def test_update_agent_info_impl_create_agent_auto_group_ids(mock_g... function test_export_agent_impl_success (line 1139) | async def test_export_agent_impl_success(mock_get_current_user_info, moc... function test_export_agent_impl_no_mcp_tools (line 1252) | async def test_export_agent_impl_no_mcp_tools(mock_get_current_user_info... function test_get_agent_info_impl_with_tool_error (line 1329) | async def test_get_agent_info_impl_with_tool_error(mock_search_agent_inf... function test_get_agent_info_impl_sub_agent_error (line 1373) | async def test_get_agent_info_impl_sub_agent_error(mock_search_agent_inf... function test_get_agent_info_impl_with_model_id_success (line 1421) | async def test_get_agent_info_impl_with_model_id_success(mock_search_age... function test_get_agent_info_impl_converts_group_ids_when_present (line 1480) | async def test_get_agent_info_impl_converts_group_ids_when_present( function test_get_agent_info_impl_with_model_id_no_display_name (line 1512) | async def test_get_agent_info_impl_with_model_id_no_display_name(mock_se... function test_get_agent_info_impl_with_model_id_none_model_info (line 1568) | async def test_get_agent_info_impl_with_model_id_none_model_info(mock_se... function test_get_agent_info_impl_with_business_logic_model (line 1619) | async def test_get_agent_info_impl_with_business_logic_model(mock_search... function test_get_agent_info_impl_with_business_logic_model_none (line 1698) | async def test_get_agent_info_impl_with_business_logic_model_none(mock_s... function test_get_agent_info_impl_with_business_logic_model_no_display_name (line 1769) | async def test_get_agent_info_impl_with_business_logic_model_no_display_... function test_list_all_agent_info_impl_success (line 1848) | async def test_list_all_agent_info_impl_success( function test_list_all_agent_info_impl_is_published_field (line 1932) | async def test_list_all_agent_info_impl_is_published_field( function test_list_all_agent_info_impl_model_cache_miss_fetches_model (line 2020) | async def test_list_all_agent_info_impl_model_cache_miss_fetches_model( function test_list_all_agent_info_impl_with_unavailable_tools (line 2066) | async def test_list_all_agent_info_impl_with_unavailable_tools( function test_list_all_agent_info_impl_query_error (line 2135) | async def test_list_all_agent_info_impl_query_error( function test_list_all_agent_info_impl_model_unavailable (line 2165) | async def test_list_all_agent_info_impl_model_unavailable( function test_list_all_agent_info_impl_duplicate_names (line 2211) | async def test_list_all_agent_info_impl_duplicate_names( function test_list_all_agent_info_impl_user_permission_read_only (line 2275) | async def test_list_all_agent_info_impl_user_permission_read_only( function test_list_all_agent_info_impl_group_filtering (line 2348) | async def test_list_all_agent_info_impl_group_filtering( function test_list_all_agent_info_impl_creator_can_see_own_agent_without_group_overlap (line 2431) | async def test_list_all_agent_info_impl_creator_can_see_own_agent_withou... function test_list_all_agent_info_impl_disabled_agents_filtered (line 2515) | async def test_list_all_agent_info_impl_disabled_agents_filtered( function test_list_all_agent_info_impl_group_query_error_handled (line 2571) | async def test_list_all_agent_info_impl_group_query_error_handled( function test_list_all_agent_info_impl_group_query_error_for_user_role (line 2620) | async def test_list_all_agent_info_impl_group_query_error_for_user_role( function test_export_agent_by_agent_id_success (line 2681) | async def test_export_agent_by_agent_id_success(mock_search_agent_info, ... function test_import_agent_by_agent_id_success (line 2815) | async def test_import_agent_by_agent_id_success(mock_query_all_tools, mo... function test_import_agent_by_agent_id_invalid_tool (line 2889) | async def test_import_agent_by_agent_id_invalid_tool(mock_query_all_tool... function test_import_agent_by_agent_id_with_mcp_tool (line 2956) | async def test_import_agent_by_agent_id_with_mcp_tool(mock_query_all_too... function test_insert_related_agent_impl_success (line 3023) | def test_insert_related_agent_impl_success(mock_query_sub_agents_id, moc... function test_insert_related_agent_impl_circular_dependency (line 3051) | def test_insert_related_agent_impl_circular_dependency(mock_query_sub_ag... function test_load_default_agents_json_file (line 3080) | def test_load_default_agents_json_file(mock_file, mock_listdir, mock_join): function test_clear_agent_memory_success (line 3175) | async def test_clear_agent_memory_success(mock_build_config, mock_clear_... function test_clear_agent_memory_build_config_error (line 3228) | async def test_clear_agent_memory_build_config_error(mock_build_config, ... function test_clear_agent_memory_clear_memory_error (line 3255) | async def test_clear_agent_memory_clear_memory_error(mock_build_config, ... function test_import_agent_impl_imports_all_agents_and_links_relations (line 3295) | async def test_import_agent_impl_imports_all_agents_and_links_relations( function test_import_agent_impl_force_import_passes_skip_flag (line 3380) | async def test_import_agent_impl_force_import_passes_skip_flag( function mock_agent_request (line 3426) | def mock_agent_request(): function mock_http_request (line 3438) | def mock_http_request(): function test_prepare_agent_run (line 3446) | async def test_prepare_agent_run( function test_save_messages (line 3478) | def test_save_messages(mock_submit, mock_agent_request): function test_run_agent_stream (line 3513) | async def test_run_agent_stream( function test_stop_agent_tasks (line 3567) | def test_stop_agent_tasks(mock_preprocess_manager, mock_agent_run_manager): function test_get_agent_id_by_name (line 3596) | async def test_get_agent_id_by_name(mock_search): function test_get_agent_call_relationship_impl_success (line 3618) | def test_get_agent_call_relationship_impl_success(mock_query_sub_agents,... function test_get_agent_call_relationship_impl_with_unknown_source (line 3711) | def test_get_agent_call_relationship_impl_with_unknown_source(mock_query... function test_get_agent_call_relationship_impl_with_none_source (line 3753) | def test_get_agent_call_relationship_impl_with_none_source(mock_query_su... function test_get_agent_call_relationship_impl_with_empty_tools (line 3795) | def test_get_agent_call_relationship_impl_with_empty_tools(mock_query_su... function test_get_agent_call_relationship_impl_agent_not_found (line 3826) | def test_get_agent_call_relationship_impl_agent_not_found(mock_search_ag... function test_get_agent_call_relationship_impl_sub_agent_error_handling (line 3847) | def test_get_agent_call_relationship_impl_sub_agent_error_handling(mock_... function test_get_agent_call_relationship_impl_tool_name_fallback (line 3891) | def test_get_agent_call_relationship_impl_tool_name_fallback(mock_query_... function test__stream_agent_chunks_persists_and_unregisters (line 3947) | async def test__stream_agent_chunks_persists_and_unregisters(monkeypatch): function test__stream_agent_chunks_emits_error_chunk_on_run_failure (line 4011) | async def test__stream_agent_chunks_emits_error_chunk_on_run_failure(mon... function test__stream_agent_chunks_captures_final_answer_and_adds_memory (line 4056) | async def test__stream_agent_chunks_captures_final_answer_and_adds_memor... function test__stream_agent_chunks_skips_memory_when_switch_off (line 4136) | async def test__stream_agent_chunks_skips_memory_when_switch_off(monkeyp... function test__stream_agent_chunks_background_add_exception (line 4177) | async def test__stream_agent_chunks_background_add_exception(monkeypatch): function test__stream_agent_chunks_schedule_task_failure (line 4232) | async def test__stream_agent_chunks_schedule_task_failure(monkeypatch): function test_insert_related_agent_impl_failure_returns_400 (line 4273) | def test_insert_related_agent_impl_failure_returns_400(): function test_generate_stream_with_memory_unexpected_exception_emits_error (line 4286) | async def test_generate_stream_with_memory_unexpected_exception_emits_er... function test_generate_stream_no_memory_registers_and_streams (line 4314) | async def test_generate_stream_no_memory_registers_and_streams(monkeypat... function test_run_agent_stream_no_memory (line 4384) | async def test_run_agent_stream_no_memory( function test_run_agent_stream_skip_user_save (line 4418) | async def test_run_agent_stream_skip_user_save( function test_generate_stream_with_memory_emits_tokens_and_unregisters (line 4443) | async def test_generate_stream_with_memory_emits_tokens_and_unregisters(... function test_generate_stream_with_memory_fallback_on_failure (line 4521) | async def test_generate_stream_with_memory_fallback_on_failure(monkeypat... function test_list_all_agent_info_impl_with_disabled_agents (line 4594) | async def test_list_all_agent_info_impl_with_disabled_agents( function test_list_all_agent_info_impl_all_disabled_agents (line 4678) | async def test_list_all_agent_info_impl_all_disabled_agents( function test_apply_duplicate_name_availability_rules_handles_missing_fields (line 4737) | def test_apply_duplicate_name_availability_rules_handles_missing_fields(): function test_export_agent_includes_model_names (line 4808) | async def test_export_agent_includes_model_names( function test_export_agent_with_null_model_id (line 4874) | async def test_export_agent_with_null_model_id( function test_export_then_import_preserves_model_names (line 4928) | async def test_export_then_import_preserves_model_names( function test_export_agent_model_not_found (line 5047) | async def test_export_agent_model_not_found( function test_import_agent_model_name_consistency (line 5102) | async def test_import_agent_model_name_consistency( function mock_tenant_id (line 5185) | def mock_tenant_id(): function mock_user_id (line 5191) | def mock_user_id(): function sample_agent_info (line 5197) | def sample_agent_info(): function sample_quick_config_model (line 5221) | def sample_quick_config_model(): function mock_import_agent_info (line 5235) | def mock_import_agent_info(sample_agent_info): function test_main_model_fallback_to_quick_config (line 5245) | async def test_main_model_fallback_to_quick_config( function test_business_logic_model_fallback_to_quick_config (line 5309) | async def test_business_logic_model_fallback_to_quick_config( function test_both_models_fallback_to_quick_config (line 5375) | async def test_both_models_fallback_to_quick_config( function test_no_quick_config_model_available (line 5435) | async def test_no_quick_config_model_available( function test_model_found_no_fallback_needed (line 5498) | async def test_model_found_no_fallback_needed( function test_import_agent_includes_model_names (line 5563) | async def test_import_agent_includes_model_names( function test_import_agent_without_business_logic_model (line 5668) | async def test_import_agent_without_business_logic_model( function test_import_agent_model_lookup_by_display_name (line 5729) | async def test_import_agent_model_lookup_by_display_name( function test_import_agent_model_not_found_in_target_tenant (line 5813) | async def test_import_agent_model_not_found_in_target_tenant( function test_import_agent_all_model_fields_in_database (line 5877) | async def test_import_agent_all_model_fields_in_database( function test_normalize_language_key_variants (line 5968) | def test_normalize_language_key_variants(): function test_render_prompt_template_success (line 5981) | def test_render_prompt_template_success(monkeypatch): function test_render_prompt_template_on_error_returns_original (line 6001) | def test_render_prompt_template_on_error_returns_original(monkeypatch): function test_format_existing_values_for_languages (line 6020) | def test_format_existing_values_for_languages(): function test_check_agent_value_duplicate_with_and_without_exclude (line 6035) | def test_check_agent_value_duplicate_with_and_without_exclude(): function test_check_agent_value_duplicate_empty_value (line 6057) | def test_check_agent_value_duplicate_empty_value(mock_query_all): function test_check_agent_value_duplicate_cache_none (line 6072) | def test_check_agent_value_duplicate_cache_none(mock_query_all): function test_generate_unique_value_with_suffix_success (line 6099) | def test_generate_unique_value_with_suffix_success(): function test_generate_unique_value_with_suffix_exhausts_attempts (line 6118) | def test_generate_unique_value_with_suffix_exhausts_attempts(): function test_generate_unique_agent_and_display_name_wrappers (line 6134) | def test_generate_unique_agent_and_display_name_wrappers(monkeypatch): function test_regenerate_agent_value_with_llm_success (line 6163) | def test_regenerate_agent_value_with_llm_success(monkeypatch): function test_regenerate_agent_value_with_llm_fallback_on_error (line 6207) | def test_regenerate_agent_value_with_llm_fallback_on_error(monkeypatch): function test_regenerate_agent_value_with_llm_empty_system_prompt (line 6251) | def test_regenerate_agent_value_with_llm_empty_system_prompt(monkeypatch): function test_regenerate_agent_value_with_llm_empty_user_prompt (line 6295) | def test_regenerate_agent_value_with_llm_empty_user_prompt(monkeypatch): function test_regenerate_agent_value_with_llm_duplicate_candidate (line 6362) | def test_regenerate_agent_value_with_llm_duplicate_candidate(monkeypatch): function test_regenerate_agent_name_with_llm (line 6407) | def test_regenerate_agent_name_with_llm(monkeypatch): function test_regenerate_agent_display_name_with_llm (line 6441) | def test_regenerate_agent_display_name_with_llm(monkeypatch): function test_import_agent_impl_dfs_import_order (line 6476) | async def test_import_agent_impl_dfs_import_order(monkeypatch): function test_check_agent_name_conflict_batch_impl_detects_conflicts (line 6576) | async def test_check_agent_name_conflict_batch_impl_detects_conflicts(mo... function test_check_agent_name_conflict_batch_impl_display_conflict (line 6616) | async def test_check_agent_name_conflict_batch_impl_display_conflict(mon... function test_check_agent_name_conflict_batch_impl_skips_same_agent (line 6647) | async def test_check_agent_name_conflict_batch_impl_skips_same_agent(mon... function test_regenerate_agent_name_batch_impl_uses_llm (line 6680) | async def test_regenerate_agent_name_batch_impl_uses_llm(monkeypatch): function test_regenerate_agent_name_batch_impl_no_model (line 6733) | async def test_regenerate_agent_name_batch_impl_no_model(monkeypatch): function test_regenerate_agent_name_batch_impl_llm_failure_fallback (line 6763) | async def test_regenerate_agent_name_batch_impl_llm_failure_fallback(mon... class TestResolveModelWithFallback (line 6829) | class TestResolveModelWithFallback: method test_resolve_model_success_found_in_tenant (line 6835) | async def test_resolve_model_success_found_in_tenant( method test_resolve_model_fallback_to_quick_config (line 6863) | async def test_resolve_model_fallback_to_quick_config( method test_resolve_model_no_fallback_available (line 6894) | async def test_resolve_model_no_fallback_available( method test_resolve_model_none_model_name (line 6922) | async def test_resolve_model_none_model_name( method test_resolve_model_empty_model_name (line 6947) | async def test_resolve_model_empty_model_name( method test_resolve_business_logic_model_success (line 6972) | async def test_resolve_business_logic_model_success( method test_resolve_model_quick_config_no_model_id (line 6999) | async def test_resolve_model_quick_config_no_model_id( method test_resolve_model_with_various_labels (line 7030) | async def test_resolve_model_with_various_labels( method test_resolve_model_exception_handling (line 7066) | async def test_resolve_model_exception_handling( method test_resolve_model_quick_config_exception (line 7091) | async def test_resolve_model_quick_config_exception( function test_check_single_model_availability_no_model_id (line 7113) | def test_check_single_model_availability_no_model_id(): function test_check_single_model_availability_fetches_and_handles_missing_model (line 7124) | def test_check_single_model_availability_fetches_and_handles_missing_mod... function test_check_single_model_availability_uses_cached_unavailable_model (line 7140) | def test_check_single_model_availability_uses_cached_unavailable_model(): function test_check_single_model_availability_returns_empty_for_available_model (line 7155) | def test_check_single_model_availability_returns_empty_for_available_mod... function test_check_agent_availability_all_available (line 7179) | def test_check_agent_availability_all_available( function test_check_agent_availability_tool_unavailable (line 7210) | def test_check_agent_availability_tool_unavailable( function test_check_agent_availability_model_unavailable (line 7238) | def test_check_agent_availability_model_unavailable( function test_check_agent_availability_both_unavailable (line 7266) | def test_check_agent_availability_both_unavailable( function test_check_agent_availability_no_tools (line 7294) | def test_check_agent_availability_no_tools( function test_check_agent_availability_agent_not_found (line 7317) | def test_check_agent_availability_agent_not_found(mock_search_agent_info): function test_check_agent_availability_with_pre_fetched_agent_info (line 7335) | def test_check_agent_availability_with_pre_fetched_agent_info( function test_check_agent_availability_with_model_cache (line 7363) | def test_check_agent_availability_with_model_cache( function test_get_agent_info_impl_with_unavailable_agent (line 7398) | async def test_get_agent_info_impl_with_unavailable_agent( function test_import_agent_by_agent_id_allows_duplicate_name_without_regen (line 7429) | async def test_import_agent_by_agent_id_allows_duplicate_name_without_re... function test_import_agent_by_agent_id_duplicate_name_no_regen_fallback (line 7481) | async def test_import_agent_by_agent_id_duplicate_name_no_regen_fallback( function test_import_agent_by_agent_id_duplicate_name_no_model_still_allows (line 7531) | async def test_import_agent_by_agent_id_duplicate_name_no_model_still_al... function test_import_agent_by_agent_id_duplicate_display_name_allowed (line 7581) | async def test_import_agent_by_agent_id_duplicate_display_name_allowed( function test_import_agent_by_agent_id_duplicate_display_name_no_llm_fallback (line 7629) | async def test_import_agent_by_agent_id_duplicate_display_name_no_llm_fa... function test_import_agent_by_agent_id_duplicate_display_name_no_model_still_allowed (line 7679) | async def test_import_agent_by_agent_id_duplicate_display_name_no_model_... function test_clear_agent_new_mark_impl_success (line 7725) | async def test_clear_agent_new_mark_impl_success(): function test_clear_agent_new_mark_impl_no_rows_affected (line 7756) | async def test_clear_agent_new_mark_impl_no_rows_affected(): function test_clear_agent_new_mark_impl_multiple_rows_affected (line 7786) | async def test_clear_agent_new_mark_impl_multiple_rows_affected(): function test_clear_agent_new_mark_impl_database_error (line 7816) | async def test_clear_agent_new_mark_impl_database_error(): function test_clear_agent_new_mark_impl_with_special_characters (line 7843) | async def test_clear_agent_new_mark_impl_with_special_characters(): function test_update_agent_info_impl_create_agent_with_ingroup_permission (line 7880) | async def test_update_agent_info_impl_create_agent_with_ingroup_permission( function test_update_agent_info_impl_create_agent_with_ingroup_permission_none (line 7934) | async def test_update_agent_info_impl_create_agent_with_ingroup_permissi... function test_list_all_agent_info_impl_creator_with_private_permission_no_group_overlap (line 7984) | async def test_list_all_agent_info_impl_creator_with_private_permission_... function test_list_all_agent_info_impl_creator_with_private_permission_with_group_overlap (line 8043) | async def test_list_all_agent_info_impl_creator_with_private_permission_... function test_list_all_agent_info_impl_non_creator_with_private_permission_hidden (line 8101) | async def test_list_all_agent_info_impl_non_creator_with_private_permiss... function test_list_all_agent_info_impl_permission_assignment_creator_gets_edit (line 8158) | async def test_list_all_agent_info_impl_permission_assignment_creator_ge... function test_list_all_agent_info_impl_permission_assignment_non_creator_uses_ingroup_permission (line 8215) | async def test_list_all_agent_info_impl_permission_assignment_non_creato... function test_list_all_agent_info_impl_admin_gets_edit_permission (line 8299) | async def test_list_all_agent_info_impl_admin_gets_edit_permission( function test_list_all_agent_info_impl_non_creator_no_group_overlap_hidden (line 8356) | async def test_list_all_agent_info_impl_non_creator_no_group_overlap_hid... function test_list_all_agent_info_impl_creator_no_group_overlap_hidden (line 8411) | async def test_list_all_agent_info_impl_creator_no_group_overlap_hidden( FILE: test/backend/services/test_agent_version_service.py function mock_agent_draft (line 112) | def mock_agent_draft(): function mock_tools_draft (line 134) | def mock_tools_draft(): function mock_relations_draft (line 157) | def mock_relations_draft(): function test_publish_version_impl_success (line 170) | def test_publish_version_impl_success(monkeypatch, mock_agent_draft, moc... function test_publish_version_impl_no_draft (line 212) | def test_publish_version_impl_no_draft(monkeypatch): function test_publish_version_impl_with_rollback_source (line 225) | def test_publish_version_impl_with_rollback_source(monkeypatch, mock_age... function test_get_version_list_impl_success (line 257) | def test_get_version_list_impl_success(monkeypatch): function test_get_version_list_impl_empty (line 273) | def test_get_version_list_impl_empty(monkeypatch): function test_get_version_impl_success (line 284) | def test_get_version_impl_success(monkeypatch): function test_get_version_detail_impl_success (line 300) | def test_get_version_detail_impl_success(monkeypatch): function test_get_version_detail_impl_version_not_found (line 353) | def test_get_version_detail_impl_version_not_found(monkeypatch): function test_get_version_detail_impl_snapshot_not_found (line 362) | def test_get_version_detail_impl_snapshot_not_found(monkeypatch): function test_rollback_version_impl_success (line 374) | def test_rollback_version_impl_success(monkeypatch): function test_rollback_version_impl_version_not_found (line 396) | def test_rollback_version_impl_version_not_found(monkeypatch): function test_rollback_version_impl_draft_not_found (line 409) | def test_rollback_version_impl_draft_not_found(monkeypatch): function test_update_version_status_impl_success (line 425) | def test_update_version_status_impl_success(monkeypatch): function test_update_version_status_impl_invalid_status (line 442) | def test_update_version_status_impl_invalid_status(monkeypatch): function test_update_version_status_impl_not_found (line 454) | def test_update_version_status_impl_not_found(monkeypatch): function test_update_version_impl_success (line 469) | def test_update_version_impl_success(monkeypatch): function test_update_version_impl_version_not_found (line 491) | def test_update_version_impl_version_not_found(monkeypatch): function test_update_version_impl_no_changes (line 506) | def test_update_version_impl_no_changes(monkeypatch): function test_delete_version_impl_success (line 523) | def test_delete_version_impl_success(monkeypatch): function test_delete_version_impl_version_not_found (line 553) | def test_delete_version_impl_version_not_found(monkeypatch): function test_delete_version_impl_current_version (line 567) | def test_delete_version_impl_current_version(monkeypatch): function test_delete_version_impl_draft_version (line 584) | def test_delete_version_impl_draft_version(monkeypatch): function test_get_current_version_impl_success (line 599) | def test_get_current_version_impl_success(monkeypatch): function test_get_current_version_impl_no_published_version (line 623) | def test_get_current_version_impl_no_published_version(monkeypatch): function test_get_current_version_impl_version_not_found (line 632) | def test_get_current_version_impl_version_not_found(monkeypatch): function test_compare_versions_impl_success (line 643) | def test_compare_versions_impl_success(monkeypatch): function test_compare_versions_impl_no_differences (line 687) | def test_compare_versions_impl_no_differences(monkeypatch): function test_check_version_snapshot_availability_success (line 712) | def test_check_version_snapshot_availability_success(): function test_check_version_snapshot_availability_no_agent (line 732) | def test_check_version_snapshot_availability_no_agent(): function test_check_version_snapshot_availability_no_model (line 745) | def test_check_version_snapshot_availability_no_model(): function test_check_version_snapshot_availability_no_tools (line 763) | def test_check_version_snapshot_availability_no_tools(): function test_check_version_snapshot_availability_all_tools_disabled (line 778) | def test_check_version_snapshot_availability_all_tools_disabled(): function test_get_version_detail_or_draft_draft_version (line 797) | def test_get_version_detail_or_draft_draft_version(monkeypatch): function test_get_version_detail_or_draft_published_version (line 825) | def test_get_version_detail_or_draft_published_version(monkeypatch): function test_remove_audit_fields_for_insert (line 845) | def test_remove_audit_fields_for_insert(): function test_list_published_agents_impl_success (line 868) | def test_list_published_agents_impl_success(monkeypatch): function test_list_published_agents_impl_no_published_version (line 917) | def test_list_published_agents_impl_no_published_version(monkeypatch): function test_list_published_agents_impl_disabled_agent (line 940) | def test_list_published_agents_impl_disabled_agent(monkeypatch): function test_list_published_agents_impl_exception_handling (line 964) | async def test_list_published_agents_impl_exception_handling(monkeypatch): FILE: test/backend/services/test_config_sync_service.py function service_mocks (line 50) | def service_mocks(): class TestHandleModelConfig (line 69) | class TestHandleModelConfig: method test_handle_model_config_zero_sets (line 72) | def test_handle_model_config_zero_sets(self, service_mocks): method test_handle_model_config_update_same_value (line 92) | def test_handle_model_config_update_same_value(self, service_mocks): method test_handle_model_config_update_different_value (line 111) | def test_handle_model_config_update_different_value(self, service_mocks): method test_handle_model_config_non_int_value (line 131) | def test_handle_model_config_non_int_value(self, service_mocks): method test_handle_model_config_key_not_exists (line 151) | def test_handle_model_config_key_not_exists(self, service_mocks): method test_handle_model_config_none_model_id (line 170) | def test_handle_model_config_none_model_id(self, service_mocks): method test_handle_model_config_empty_string_model_id (line 188) | def test_handle_model_config_empty_string_model_id(self, service_mocks): method test_handle_model_config_invalid_string_model_id (line 208) | def test_handle_model_config_invalid_string_model_id(self, service_moc... method test_handle_model_config_empty_tenant_config_dict (line 228) | def test_handle_model_config_empty_tenant_config_dict(self, service_mo... method test_handle_model_config_zero_model_id_with_existing_config (line 247) | def test_handle_model_config_zero_model_id_with_existing_config(self, ... class TestSaveConfigImpl (line 268) | class TestSaveConfigImpl: method test_save_config_impl_success (line 272) | async def test_save_config_impl_success(self, service_mocks): method test_save_config_impl_success_model (line 334) | async def test_save_config_impl_success_model(self, service_mocks): method test_save_config_impl_success_embedding_model (line 396) | async def test_save_config_impl_success_embedding_model(self, service_... method test_save_config_impl_model_config (line 462) | async def test_save_config_impl_model_config(self, service_mocks): method test_save_config_impl_success_no_model (line 502) | async def test_save_config_impl_success_no_model(self, service_mocks): method test_save_config_impl_non_model_config (line 564) | async def test_save_config_impl_non_model_config(self, service_mocks): method test_save_config_impl_in_model_config (line 604) | async def test_save_config_impl_in_model_config(self, service_mocks): method test_save_config_impl_app_config_updates (line 644) | async def test_save_config_impl_app_config_updates(self, service_mocks): method test_save_config_impl_app_config_same_values (line 681) | async def test_save_config_impl_app_config_same_values(self, service_m... method test_save_config_impl_app_config_empty_values (line 716) | async def test_save_config_impl_app_config_empty_values(self, service_... method test_save_config_impl_app_config_new_keys (line 751) | async def test_save_config_impl_app_config_new_keys(self, service_mocks): method test_save_config_impl_model_dump_exception (line 788) | async def test_save_config_impl_model_dump_exception(self, service_moc... method test_save_config_impl_load_config_exception (line 804) | async def test_save_config_impl_load_config_exception(self, service_mo... method test_save_config_impl_get_model_id_exception (line 825) | async def test_save_config_impl_get_model_id_exception(self, service_m... method test_save_config_impl_empty_config_dict (line 864) | async def test_save_config_impl_empty_config_dict(self, service_mocks): method test_save_config_impl_empty_models_section (line 888) | async def test_save_config_impl_empty_models_section(self, service_moc... method test_save_config_impl_embedding_without_api_config (line 920) | async def test_save_config_impl_embedding_without_api_config(self, ser... class TestLoadConfigImpl (line 962) | class TestLoadConfigImpl: method test_load_config_impl_english (line 966) | async def test_load_config_impl_english(self, service_mocks): method test_load_config_impl_chinese (line 1032) | async def test_load_config_impl_chinese(self, service_mocks): method test_load_config_impl_with_embedding_dimension (line 1060) | async def test_load_config_impl_with_embedding_dimension(self, service... method test_load_config_impl_empty_models (line 1120) | async def test_load_config_impl_empty_models(self, service_mocks): method test_load_config_impl_exception (line 1149) | async def test_load_config_impl_exception(self, service_mocks): method test_load_config_impl_empty_language (line 1174) | async def test_load_config_impl_empty_language(self, service_mocks): method test_load_config_impl_invalid_language (line 1195) | async def test_load_config_impl_invalid_language(self, service_mocks): method test_load_config_impl_empty_tenant_id (line 1216) | async def test_load_config_impl_empty_tenant_id(self, service_mocks): method test_load_config_impl_both_build_functions_exception (line 1237) | async def test_load_config_impl_both_build_functions_exception(self, s... method test_build_models_config_partial_success (line 1264) | def test_build_models_config_partial_success(self, service_mocks): method test_build_models_config_all_success (line 1315) | def test_build_models_config_all_success(self, service_mocks): method test_build_models_config_all_failures (line 1360) | def test_build_models_config_all_failures(self, service_mocks): class TestBuildAppConfig (line 1394) | class TestBuildAppConfig: method test_build_app_config_english_with_values (line 1397) | def test_build_app_config_english_with_values(self, service_mocks): method test_build_app_config_chinese_defaults (line 1454) | def test_build_app_config_chinese_defaults(self, service_mocks): method test_build_app_config_english_defaults (line 1478) | def test_build_app_config_english_defaults(self, service_mocks): method test_build_app_config_partial_values (line 1502) | def test_build_app_config_partial_values(self, service_mocks): method test_build_app_config_exception_handling (line 1537) | def test_build_app_config_exception_handling(self, service_mocks): method test_build_app_config_with_icon_key (line 1553) | def test_build_app_config_with_icon_key(self, service_mocks): method test_build_app_config_icon_key_defaults (line 1593) | def test_build_app_config_icon_key_defaults(self, service_mocks): method test_build_app_config_all_icon_fields (line 1626) | def test_build_app_config_all_icon_fields(self, service_mocks): class TestBuildModelConfig (line 1661) | class TestBuildModelConfig: method test_build_model_config_empty_config (line 1664) | def test_build_model_config_empty_config(self, service_mocks): method test_build_model_config_non_embedding_model (line 1688) | def test_build_model_config_non_embedding_model(self, service_mocks): method test_build_model_config_embedding_model (line 1713) | def test_build_model_config_embedding_model(self, service_mocks): method test_build_model_config_multi_embedding_model (line 1738) | def test_build_model_config_multi_embedding_model(self, service_mocks): method test_build_model_config_partial_fields (line 1763) | def test_build_model_config_partial_fields(self, service_mocks): method test_build_model_config_embedding_without_max_tokens (line 1785) | def test_build_model_config_embedding_without_max_tokens(self, service... method test_build_model_config_model_type_partial_match (line 1810) | def test_build_model_config_model_type_partial_match(self, service_moc... FILE: test/backend/services/test_conversation_management_service.py function _stub_nexent_openai_model (line 17) | def _stub_nexent_openai_model(): class StrictUndefined (line 34) | class StrictUndefined: class Template (line 36) | class Template: method __init__ (line 37) | def __init__(self, text, undefined=None): method render (line 39) | def render(self, ctx): class AgentRequest (line 65) | class AgentRequest: method __init__ (line 66) | def __init__(self, **kwargs): class ConversationResponse (line 69) | class ConversationResponse: method __init__ (line 70) | def __init__(self, code=0, message="", data=None): class MessageUnit (line 74) | class MessageUnit: method __init__ (line 75) | def __init__(self, type="", content=""): class MessageRequest (line 78) | class MessageRequest: method __init__ (line 79) | def __init__(self, conversation_id=None, message_idx=None, role=None, ... method model_dump (line 85) | def model_dump(self): class _DummySessionCM (line 113) | class _DummySessionCM: method __enter__ (line 114) | def __enter__(self): method __exit__ (line 124) | def __exit__(self, exc_type, exc, tb): class TestConversationManagementService (line 165) | class TestConversationManagementService(unittest.TestCase): method setUp (line 166) | def setUp(self): method test_save_message_picture_web_invalid_json (line 178) | def test_save_message_picture_web_invalid_json(self, mock_create_image... method test_get_sources_service_no_id (line 192) | def test_get_sources_service_no_id(self): method test_save_message_with_string_content (line 202) | def test_save_message_with_string_content(self, mock_create_message_un... method test_save_message_with_search_content (line 242) | def test_save_message_with_search_content(self, mock_create_message_un... method test_save_message_with_picture_web (line 303) | def test_save_message_with_picture_web(self, mock_create_message_units... method test_save_conversation_user (line 352) | def test_save_conversation_user(self, mock_save_message): method test_save_conversation_assistant (line 379) | def test_save_conversation_assistant(self, mock_save_message): method test_call_llm_for_title (line 421) | def test_call_llm_for_title(self, mock_get_model_config, mock_get_prom... method test_update_conversation_title (line 452) | def test_update_conversation_title(self, mock_rename_conversation): method test_create_new_conversation (line 465) | def test_create_new_conversation(self, mock_create_conversation): method test_get_conversation_list_service (line 480) | def test_get_conversation_list_service(self, mock_get_conversation_list): method test_rename_conversation_service (line 498) | def test_rename_conversation_service(self, mock_rename_conversation): method test_delete_conversation_service (line 510) | def test_delete_conversation_service(self, mock_delete_conversation): method test_get_conversation_history_service (line 521) | def test_get_conversation_history_service(self, mock_get_conversation_... method test_get_sources_service_by_message (line 572) | def test_get_sources_service_by_message(self, mock_get_images, mock_ge... method test_update_message_opinion_service (line 620) | def test_update_message_opinion_service(self, mock_update_opinion): method test_update_message_opinion_service_failure (line 631) | def test_update_message_opinion_service_failure(self, mock_update_opin... method test_get_message_id_by_index_impl_success (line 643) | def test_get_message_id_by_index_impl_success(self, mock_get_message): method test_get_message_id_by_index_impl_not_found (line 652) | def test_get_message_id_by_index_impl_not_found(self, mock_get_message): method test_generate_conversation_title_service (line 664) | def test_generate_conversation_title_service(self, mock_update_title, ... FILE: test/backend/services/test_data_process_service.py class OfficeConversionException (line 53) | class OfficeConversionException(Exception): class TestDataProcessService (line 73) | class TestDataProcessService(unittest.TestCase): class _NopSemaphore (line 75) | class _NopSemaphore: method __aenter__ (line 83) | async def __aenter__(self): method __aexit__ (line 86) | async def __aexit__(self, *args): method setUp (line 89) | def setUp(self): method tearDown (line 110) | def tearDown(self): method _make_stream (line 119) | def _make_stream(data: bytes): method test_init_redis_client_with_url (line 126) | def test_init_redis_client_with_url(self, mock_redis, mock_pool): method test_init_redis_client_without_url (line 154) | def test_init_redis_client_without_url(self, mock_pool): method test_init_redis_client_with_exception (line 186) | def test_init_redis_client_with_exception(self, mock_pool): method test_init_clip_model_success (line 211) | def test_init_clip_model_success(self, mock_processor, mock_model): method test_init_clip_model_failure (line 234) | def test_init_clip_model_failure(self, mock_model): method test_check_image_size (line 256) | def test_check_image_size(self): method async_test_start_stop (line 281) | async def async_test_start_stop(self): method test_start_stop (line 293) | def test_start_stop(self): method test_get_celery_inspector_success (line 303) | def test_get_celery_inspector_success(self, mock_celery_app): method test_get_celery_inspector_failure (line 327) | def test_get_celery_inspector_failure(self, mock_celery_app): method test_get_celery_inspector_cache (line 349) | def test_get_celery_inspector_cache(self, mock_celery_app): method test_get_celery_inspector_missing_broker_url (line 385) | def test_get_celery_inspector_missing_broker_url(self, mock_logger, mo... method test_get_celery_inspector_missing_both_urls (line 426) | def test_get_celery_inspector_missing_both_urls(self, mock_logger, moc... method test_get_celery_inspector_empty_string_urls (line 468) | def test_get_celery_inspector_empty_string_urls(self, mock_logger, moc... method test_get_celery_inspector_no_reconfiguration_needed (line 511) | def test_get_celery_inspector_no_reconfiguration_needed(self, mock_log... method async_test_get_task (line 549) | async def async_test_get_task(self, mock_get_task_info): method test_get_task (line 568) | def test_get_task(self): method async_test_get_all_tasks (line 581) | async def async_test_get_all_tasks(self, mock_get_redis_task_ids, mock... method test_get_all_tasks (line 630) | def test_get_all_tasks(self): method test_get_all_tasks_redis_error (line 644) | async def test_get_all_tasks_redis_error(self, mock_get_redis_task_ids... method async_test_get_index_tasks (line 687) | async def async_test_get_index_tasks(self, mock_get_all_tasks): method test_get_index_tasks (line 725) | def test_get_index_tasks(self): method async_test_load_image_from_url (line 736) | async def async_test_load_image_from_url(self, mock_session): method async_test_load_image_from_url_failure (line 774) | async def async_test_load_image_from_url_failure(self, mock_session): method async_test_load_image_from_base64 (line 801) | async def async_test_load_image_from_base64(self, mock_session): method async_test_load_image_from_file (line 836) | async def async_test_load_image_from_file(self, mock_image_open, mock_... method async_test_load_image_rgba_to_rgb_conversion (line 862) | async def async_test_load_image_rgba_to_rgb_conversion(self, mock_sess... method async_test_load_image_non_rgb_to_rgb_conversion (line 901) | async def async_test_load_image_non_rgb_to_rgb_conversion(self, mock_s... method async_test_load_image_rgb_no_conversion (line 939) | async def async_test_load_image_rgb_no_conversion(self, mock_session): method async_test_load_image_rgba_base64_conversion (line 977) | async def async_test_load_image_rgba_base64_conversion(self, mock_sess... method async_test_load_image_non_rgb_base64_conversion (line 1011) | async def async_test_load_image_non_rgb_base64_conversion(self, mock_s... method async_test_load_image_non_rgb_file_conversion (line 1045) | async def async_test_load_image_non_rgb_file_conversion(self, mock_ima... method async_test_load_image_rgb_file_no_conversion (line 1074) | async def async_test_load_image_rgb_file_no_conversion(self, mock_imag... method async_test_load_image_svg_filtered (line 1101) | async def async_test_load_image_svg_filtered(self, mock_session): method async_test_load_image_temp_file_fallback (line 1130) | async def async_test_load_image_temp_file_fallback(self, mock_logger, ... method async_test_load_image_local_file_exception (line 1209) | async def async_test_load_image_local_file_exception(self, mock_logger... method test_load_image (line 1243) | def test_load_image(self): method async_test_filter_important_image_size_filter (line 1277) | async def async_test_filter_important_image_size_filter(self, mock_ini... method async_test_filter_important_image_filter_disabled (line 1309) | async def async_test_filter_important_image_filter_disabled(self, mock... method async_test_filter_important_image_with_clip (line 1337) | async def async_test_filter_important_image_with_clip(self, mock_no_gr... method async_test_filter_important_image_clip_not_available (line 1395) | async def async_test_filter_important_image_clip_not_available(self, m... method async_test_filter_important_image_clip_processing_failure (line 1428) | async def async_test_filter_important_image_clip_processing_failure(se... method async_test_filter_important_image_general_exception (line 1485) | async def async_test_filter_important_image_general_exception(self, mo... method test_filter_important_image (line 1530) | def test_filter_important_image(self): method test_get_data_process_service (line 1551) | def test_get_data_process_service(self, mock_service_class): method async_test_create_batch_tasks_impl_success (line 1584) | async def async_test_create_batch_tasks_impl_success(self, mock_proces... method async_test_create_batch_tasks_impl_missing_source (line 1697) | async def async_test_create_batch_tasks_impl_missing_source(self, mock... method async_test_create_batch_tasks_impl_missing_index_name (line 1760) | async def async_test_create_batch_tasks_impl_missing_index_name(self, ... method async_test_create_batch_tasks_impl_missing_both_required_fields (line 1823) | async def async_test_create_batch_tasks_impl_missing_both_required_fie... method async_test_create_batch_tasks_impl_empty_sources (line 1868) | async def async_test_create_batch_tasks_impl_empty_sources(self, mock_... method async_test_create_batch_tasks_impl_optional_fields (line 1897) | async def async_test_create_batch_tasks_impl_optional_fields(self, moc... method async_test_create_batch_tasks_impl_no_authorization (line 1954) | async def async_test_create_batch_tasks_impl_no_authorization(self, mo... method test_create_batch_tasks_impl (line 2003) | def test_create_batch_tasks_impl(self): method async_test_process_uploaded_text_file (line 2027) | async def async_test_process_uploaded_text_file(self, mock_data_proces... method test_process_uploaded_text_file (line 2074) | def test_process_uploaded_text_file(self): method test_convert_celery_states_to_custom (line 2080) | def test_convert_celery_states_to_custom(self): method test_convert_celery_states_wait_for_processing (line 2134) | async def test_convert_celery_states_wait_for_processing(self): method test_convert_celery_states_wait_for_processing_empty_strings (line 2165) | async def test_convert_celery_states_wait_for_processing_empty_strings... method async_test_convert_to_base64 (line 2178) | async def async_test_convert_to_base64(self): method test_convert_to_base64 (line 2207) | def test_convert_to_base64(self): method test_convert_office_to_pdf_impl_success (line 2222) | def test_convert_office_to_pdf_impl_success( method test_convert_office_to_pdf_impl_source_not_found (line 2250) | def test_convert_office_to_pdf_impl_source_not_found( method test_convert_office_to_pdf_impl_libreoffice_failure (line 2272) | def test_convert_office_to_pdf_impl_libreoffice_failure( method test_convert_office_to_pdf_impl_upload_failure (line 2297) | def test_convert_office_to_pdf_impl_upload_failure( method test_convert_office_to_pdf_impl_invalid_pdf_header (line 2327) | def test_convert_office_to_pdf_impl_invalid_pdf_header( method test_convert_office_to_pdf_impl_no_remote_cleanup_when_not_exists (line 2356) | def test_convert_office_to_pdf_impl_no_remote_cleanup_when_not_exists( method test_convert_office_to_pdf_impl_mkdtemp_failure (line 2373) | def test_convert_office_to_pdf_impl_mkdtemp_failure( method test_convert_office_to_pdf_impl_size_zero (line 2394) | def test_convert_office_to_pdf_impl_size_zero( method test_convert_office_to_pdf_impl_size_too_small (line 2421) | def test_convert_office_to_pdf_impl_size_too_small( method test_convert_office_to_pdf_impl_stream_none (line 2448) | def test_convert_office_to_pdf_impl_stream_none( method test_convert_office_to_pdf_impl_close_raises (line 2478) | def test_convert_office_to_pdf_impl_close_raises( method test_convert_office_to_pdf_impl_unexpected_exception (line 2508) | def test_convert_office_to_pdf_impl_unexpected_exception( method test_convert_office_to_pdf_impl_cleanup_failure (line 2533) | def test_convert_office_to_pdf_impl_cleanup_failure( FILE: test/backend/services/test_datamate_service.py function mock_datamate_sync_setup (line 84) | def mock_datamate_sync_setup(monkeypatch): class FakeClient (line 101) | class FakeClient: method __init__ (line 102) | def __init__(self, base_url=None): method list_knowledge_bases (line 105) | def list_knowledge_bases(self): method get_knowledge_base_files (line 108) | def get_knowledge_base_files(self, knowledge_base_id): method sync_all_knowledge_bases (line 111) | def sync_all_knowledge_bases(self): function test_get_datamate_core_success (line 115) | def test_get_datamate_core_success(monkeypatch): function test_get_datamate_core_https_ssl_verification (line 144) | def test_get_datamate_core_https_ssl_verification(monkeypatch): function test_get_datamate_core_http_ssl_verification (line 173) | def test_get_datamate_core_http_ssl_verification(monkeypatch): function test_get_datamate_core_missing_config (line 202) | def test_get_datamate_core_missing_config(monkeypatch): function test_fetch_datamate_knowledge_base_file_list_success (line 226) | async def test_fetch_datamate_knowledge_base_file_list_success(monkeypat... function test_fetch_datamate_knowledge_base_file_list_failure (line 253) | async def test_fetch_datamate_knowledge_base_file_list_failure(monkeypat... function test_create_datamate_knowledge_records_success (line 271) | async def test_create_datamate_knowledge_records_success(monkeypatch): function test_create_datamate_knowledge_records_partial_failure (line 306) | async def test_create_datamate_knowledge_records_partial_failure(monkeyp... function test_sync_datamate_knowledge_bases_success (line 334) | async def test_sync_datamate_knowledge_bases_success(monkeypatch, mock_d... function test_sync_datamate_knowledge_bases_no_indices (line 389) | async def test_sync_datamate_knowledge_bases_no_indices(monkeypatch, moc... function test_sync_datamate_knowledge_bases_with_deletions (line 416) | async def test_sync_datamate_knowledge_bases_with_deletions(monkeypatch,... function test_sync_datamate_knowledge_bases_datamate_url_not_configured (line 472) | async def test_sync_datamate_knowledge_bases_datamate_url_not_configured... function test_sync_datamate_knowledge_bases_datamate_url_empty_string (line 510) | async def test_sync_datamate_knowledge_bases_datamate_url_empty_string(m... function test_sync_datamate_knowledge_bases_error_handling (line 546) | async def test_sync_datamate_knowledge_bases_error_handling(monkeypatch): function test_sync_datamate_knowledge_bases_with_custom_datamate_url (line 562) | async def test_sync_datamate_knowledge_bases_with_custom_datamate_url(mo... function test_sync_datamate_knowledge_bases_with_none_datamate_url (line 629) | async def test_sync_datamate_knowledge_bases_with_none_datamate_url(monk... function test_sync_datamate_knowledge_bases_with_empty_datamate_url (line 696) | async def test_sync_datamate_knowledge_bases_with_empty_datamate_url(mon... function test_sync_datamate_knowledge_bases_with_https_datamate_url (line 763) | async def test_sync_datamate_knowledge_bases_with_https_datamate_url(mon... function test_check_datamate_connection_success (line 825) | async def test_check_datamate_connection_success(monkeypatch): function test_check_datamate_connection_model_engine_disabled (line 868) | async def test_check_datamate_connection_model_engine_disabled(monkeypat... function test_check_datamate_connection_url_not_configured (line 896) | async def test_check_datamate_connection_url_not_configured(monkeypatch): function test_check_datamate_connection_empty_url (line 930) | async def test_check_datamate_connection_empty_url(monkeypatch): function test_check_datamate_connection_api_error (line 962) | async def test_check_datamate_connection_api_error(monkeypatch): function test_check_datamate_connection_with_custom_url (line 1005) | async def test_check_datamate_connection_with_custom_url(monkeypatch): function test_check_datamate_connection_with_none_url (line 1052) | async def test_check_datamate_connection_with_none_url(monkeypatch): function test_check_datamate_connection_with_https_url (line 1103) | async def test_check_datamate_connection_with_https_url(monkeypatch): function test_check_datamate_connection_configuration_error (line 1150) | async def test_check_datamate_connection_configuration_error(monkeypatch): FILE: test/backend/services/test_dify_service.py function _create_mock_client (line 16) | def _create_mock_client(mock_response): class TestFetchDifyDatasetsImpl (line 27) | class TestFetchDifyDatasetsImpl: method test_fetch_dify_datasets_impl_success_single_dataset (line 30) | def test_fetch_dify_datasets_impl_success_single_dataset(self): method test_fetch_dify_datasets_impl_success_multiple_datasets (line 75) | def test_fetch_dify_datasets_impl_success_multiple_datasets(self): method test_fetch_dify_datasets_impl_empty_response (line 127) | def test_fetch_dify_datasets_impl_empty_response(self): method test_fetch_dify_datasets_impl_invalid_api_base_none (line 150) | def test_fetch_dify_datasets_impl_invalid_api_base_none(self): method test_fetch_dify_datasets_impl_invalid_api_base_empty_string (line 165) | def test_fetch_dify_datasets_impl_invalid_api_base_empty_string(self): method test_fetch_dify_datasets_impl_invalid_api_base_not_string (line 178) | def test_fetch_dify_datasets_impl_invalid_api_base_not_string(self): method test_fetch_dify_datasets_impl_invalid_api_key_none (line 191) | def test_fetch_dify_datasets_impl_invalid_api_key_none(self): method test_fetch_dify_datasets_impl_invalid_api_key_empty_string (line 204) | def test_fetch_dify_datasets_impl_invalid_api_key_empty_string(self): method test_fetch_dify_datasets_impl_invalid_api_key_not_string (line 217) | def test_fetch_dify_datasets_impl_invalid_api_key_not_string(self): method test_fetch_dify_datasets_impl_url_normalization_trailing_slash (line 230) | def test_fetch_dify_datasets_impl_url_normalization_trailing_slash(self): method test_fetch_dify_datasets_impl_http_error (line 254) | def test_fetch_dify_datasets_impl_http_error(self): method test_fetch_dify_datasets_impl_request_error (line 279) | def test_fetch_dify_datasets_impl_request_error(self): method test_fetch_dify_datasets_impl_json_decode_error (line 300) | def test_fetch_dify_datasets_impl_json_decode_error(self): method test_fetch_dify_datasets_impl_missing_data_key (line 322) | def test_fetch_dify_datasets_impl_missing_data_key(self): method test_fetch_dify_datasets_impl_dataset_without_id (line 345) | def test_fetch_dify_datasets_impl_dataset_without_id(self): method test_fetch_dify_datasets_impl_dataset_missing_optional_fields (line 379) | def test_fetch_dify_datasets_impl_dataset_missing_optional_fields(self): method test_fetch_dify_datasets_impl_timestamp_conversion (line 412) | def test_fetch_dify_datasets_impl_timestamp_conversion(self): method test_fetch_dify_datasets_impl_timestamp_zero_for_missing (line 445) | def test_fetch_dify_datasets_impl_timestamp_zero_for_missing(self): method test_fetch_dify_datasets_impl_request_headers (line 476) | def test_fetch_dify_datasets_impl_request_headers(self): method test_fetch_dify_datasets_impl_url_normalization_v1_suffix (line 505) | def test_fetch_dify_datasets_impl_url_normalization_v1_suffix(self): method test_fetch_dify_datasets_impl_url_normalization_v1_with_trailing_slash (line 532) | def test_fetch_dify_datasets_impl_url_normalization_v1_with_trailing_s... method test_fetch_dify_datasets_impl_url_normalization_v1_and_trailing_slash_combined (line 559) | def test_fetch_dify_datasets_impl_url_normalization_v1_and_trailing_sl... method test_fetch_dify_datasets_impl_url_normalization_no_v1_suffix (line 589) | def test_fetch_dify_datasets_impl_url_normalization_no_v1_suffix(self): method test_fetch_dify_datasets_impl_url_v1_suffix_in_custom_path (line 614) | def test_fetch_dify_datasets_impl_url_v1_suffix_in_custom_path(self): method test_fetch_dify_datasets_impl_url_v1_suffix_with_port (line 645) | def test_fetch_dify_datasets_impl_url_v1_suffix_with_port(self): method test_fetch_dify_datasets_impl_url_v1_suffix_parametrized (line 679) | def test_fetch_dify_datasets_impl_url_v1_suffix_parametrized(self, api... method test_fetch_dify_datasets_impl_url_without_protocol (line 704) | def test_fetch_dify_datasets_impl_url_without_protocol(self): method test_fetch_dify_datasets_impl_url_with_ftp_protocol (line 716) | def test_fetch_dify_datasets_impl_url_with_ftp_protocol(self): method test_fetch_dify_datasets_impl_http_401_auth_error (line 728) | def test_fetch_dify_datasets_impl_http_401_auth_error(self): method test_fetch_dify_datasets_impl_http_403_auth_error (line 755) | def test_fetch_dify_datasets_impl_http_403_auth_error(self): method test_fetch_dify_datasets_impl_http_429_rate_limit (line 780) | def test_fetch_dify_datasets_impl_http_429_rate_limit(self): method test_fetch_dify_datasets_impl_http_500_service_error (line 805) | def test_fetch_dify_datasets_impl_http_500_service_error(self): method test_fetch_dify_datasets_impl_http_404_service_error (line 830) | def test_fetch_dify_datasets_impl_http_404_service_error(self): FILE: test/backend/services/test_file_management_service.py class _StubElasticSearchService (line 47) | class _StubElasticSearchService: method list_files (line 49) | async def list_files(index_name, include_chunks=False, vdb_core=None): function _stub_get_vector_db_core (line 53) | def _stub_get_vector_db_core(): function setup_patches (line 74) | def setup_patches(): class TestUploadFilesImpl (line 104) | class TestUploadFilesImpl: method test_upload_files_impl_local_success (line 108) | async def test_upload_files_impl_local_success(self): method test_upload_files_impl_local_failure (line 129) | async def test_upload_files_impl_local_failure(self): method test_upload_files_impl_local_empty_file (line 147) | async def test_upload_files_impl_local_empty_file(self): method test_upload_files_impl_minio_success (line 168) | async def test_upload_files_impl_minio_success(self): method test_upload_files_impl_minio_failure (line 194) | async def test_upload_files_impl_minio_failure(self): method test_upload_files_impl_minio_unknown_error (line 216) | async def test_upload_files_impl_minio_unknown_error(self): method test_upload_files_impl_invalid_destination (line 238) | async def test_upload_files_impl_invalid_destination(self): method test_upload_files_impl_multiple_files_mixed_results (line 252) | async def test_upload_files_impl_multiple_files_mixed_results(self): method test_upload_files_impl_minio_conflict_resolution (line 283) | async def test_upload_files_impl_minio_conflict_resolution(self): method test_upload_files_impl_minio_conflict_resolution_case_insensitive_duplicates (line 321) | async def test_upload_files_impl_minio_conflict_resolution_case_insens... method test_upload_files_impl_minio_conflict_resolution_es_exception (line 350) | async def test_upload_files_impl_minio_conflict_resolution_es_exceptio... class TestUploadToMinio (line 373) | class TestUploadToMinio: method test_upload_to_minio_success (line 377) | async def test_upload_to_minio_success(self): method test_upload_to_minio_file_read_exception (line 401) | async def test_upload_to_minio_file_read_exception(self): method test_upload_to_minio_upload_exception (line 420) | async def test_upload_to_minio_upload_exception(self): method test_upload_to_minio_empty_filename (line 444) | async def test_upload_to_minio_empty_filename(self): method test_upload_to_minio_multiple_files_mixed_results (line 468) | async def test_upload_to_minio_multiple_files_mixed_results(self): method test_upload_to_minio_seek_exception (line 503) | async def test_upload_to_minio_seek_exception(self): class TestGetFileUrlImpl (line 528) | class TestGetFileUrlImpl: method test_get_file_url_impl_success (line 532) | async def test_get_file_url_impl_success(self): method test_get_file_url_impl_failure (line 553) | async def test_get_file_url_impl_failure(self): class TestGetFileStreamImpl (line 573) | class TestGetFileStreamImpl: method test_get_file_stream_impl_success (line 577) | async def test_get_file_stream_impl_success(self): method test_get_file_stream_impl_failure (line 596) | async def test_get_file_stream_impl_failure(self): class TestDeleteFileImpl (line 611) | class TestDeleteFileImpl: method test_delete_file_impl_success (line 615) | async def test_delete_file_impl_success(self): method test_delete_file_impl_failure (line 634) | async def test_delete_file_impl_failure(self): class TestListFilesImpl (line 654) | class TestListFilesImpl: method test_list_files_impl_without_limit (line 658) | async def test_list_files_impl_without_limit(self): method test_list_files_impl_with_limit (line 677) | async def test_list_files_impl_with_limit(self): class TestEdgeCasesAndErrorHandling (line 699) | class TestEdgeCasesAndErrorHandling: method test_upload_files_impl_with_none_file (line 703) | async def test_upload_files_impl_with_none_file(self): method test_upload_files_impl_with_empty_file_list (line 724) | async def test_upload_files_impl_with_empty_file_list(self): method test_upload_to_minio_with_empty_file_list (line 736) | async def test_upload_to_minio_with_empty_file_list(self): method test_list_files_impl_with_none_limit (line 745) | async def test_list_files_impl_with_none_limit(self): method test_list_files_impl_with_limit_larger_than_files (line 764) | async def test_list_files_impl_with_limit_larger_than_files(self): class TestConcurrencyAndFileTypes (line 782) | class TestConcurrencyAndFileTypes: method test_upload_files_impl_semaphore_usage (line 786) | async def test_upload_files_impl_semaphore_usage(self): method test_upload_files_impl_no_semaphore_for_minio (line 815) | async def test_upload_files_impl_no_semaphore_for_minio(self): method test_upload_to_minio_with_none_folder (line 841) | async def test_upload_to_minio_with_none_folder(self): method test_upload_to_minio_with_empty_folder (line 865) | async def test_upload_to_minio_with_empty_folder(self): class TestGetLlmModel (line 889) | class TestGetLlmModel: method test_get_llm_model_success (line 897) | def test_get_llm_model_success(self, mock_tenant_config, mock_get_mode... method test_get_llm_model_with_missing_config_values (line 943) | def test_get_llm_model_with_missing_config_values(self, mock_tenant_co... method test_get_llm_model_with_different_tenant_ids (line 981) | def test_get_llm_model_with_different_tenant_ids(self, mock_tenant_con... class TestPreviewFileImpl (line 1017) | class TestPreviewFileImpl: method test_preview_pdf_file_success (line 1021) | async def test_preview_pdf_file_success(self): method test_preview_image_file_success (line 1036) | async def test_preview_image_file_success(self): method test_preview_text_file_success (line 1051) | async def test_preview_text_file_success(self): method test_preview_csv_file_success (line 1066) | async def test_preview_csv_file_success(self): method test_preview_markdown_file_success (line 1081) | async def test_preview_markdown_file_success(self): method test_preview_office_docx_with_cache_hit (line 1096) | async def test_preview_office_docx_with_cache_hit(self): method test_preview_office_docx_cache_miss_convert_success (line 1113) | async def test_preview_office_docx_cache_miss_convert_success(self): method test_preview_office_conversion_failure (line 1150) | async def test_preview_office_conversion_failure(self): method test_preview_unsupported_file_type (line 1178) | async def test_preview_unsupported_file_type(self): method test_preview_file_not_found (line 1191) | async def test_preview_file_not_found(self): method test_preview_file_too_large (line 1204) | async def test_preview_file_too_large(self): method test_preview_file_type_routing (line 1232) | async def test_preview_file_type_routing(self, content_type, expected_... class TestGetCachedPdfStream (line 1260) | class TestGetCachedPdfStream: method test_returns_stream_when_cache_valid (line 1263) | def test_returns_stream_when_cache_valid(self): method test_returns_none_when_file_not_exist (line 1273) | def test_returns_none_when_file_not_exist(self): method test_deletes_and_returns_none_when_cache_corrupted (line 1281) | def test_deletes_and_returns_none_when_cache_corrupted(self): class TestConvertOfficeToCachedPdf (line 1293) | class TestConvertOfficeToCachedPdf: method test_returns_stream_on_double_check_cache_hit (line 1297) | async def test_returns_stream_on_double_check_cache_hit(self): method test_full_conversion_success (line 1313) | async def test_full_conversion_success(self): method test_http_error_raises_office_conversion_exception (line 1354) | async def test_http_error_raises_office_conversion_exception(self): method test_copy_failure_raises_office_conversion_exception (line 1387) | async def test_copy_failure_raises_office_conversion_exception(self): method test_converted_pdf_not_readable_raises_not_found (line 1422) | async def test_converted_pdf_not_readable_raises_not_found(self): method test_reuses_existing_lock_for_same_object (line 1455) | async def test_reuses_existing_lock_for_same_object(self): FILE: test/backend/services/test_group_service.py function mock_user_info (line 42) | def mock_user_info(): function mock_group_info (line 53) | def mock_group_info(): function test_get_group_info_single (line 64) | def test_get_group_info_single(mock_query_groups): function test_get_group_info_not_found (line 77) | def test_get_group_info_not_found(mock_query_groups): function test_get_group_info_multiple_groups (line 86) | def test_get_group_info_multiple_groups(mock_query_groups): function test_get_group_info_string_group_ids (line 107) | def test_get_group_info_string_group_ids(mock_query_groups): function test_get_groups_by_tenant_success_with_pagination (line 125) | def test_get_groups_by_tenant_success_with_pagination(mock_query_groups_... function test_get_groups_by_tenant_success_without_pagination (line 157) | def test_get_groups_by_tenant_success_without_pagination(mock_query_grou... function test_get_groups_by_tenant_success_with_asc_sort (line 183) | def test_get_groups_by_tenant_success_with_asc_sort(mock_query_groups_by... function test_get_groups_by_tenant_empty_list (line 205) | def test_get_groups_by_tenant_empty_list(mock_query_groups_by_tenant, mo... function test_get_groups_by_tenant_with_missing_group_id (line 224) | def test_get_groups_by_tenant_with_missing_group_id(mock_query_groups_by... function test_create_group_success (line 247) | def test_create_group_success(mock_add_group, mock_check_name, mock_get_... function test_create_group_unauthorized (line 272) | def test_create_group_unauthorized(mock_get_user, mock_user_info): function test_create_group_duplicate_name (line 287) | def test_create_group_duplicate_name(mock_check_name, mock_get_user, moc... function test_create_group_user_not_found (line 304) | def test_create_group_user_not_found(mock_get_user): function test_update_group_success (line 320) | def test_update_group_success(mock_modify_group, mock_query_groups, mock... function test_update_group_not_found (line 348) | def test_update_group_not_found(mock_query_groups, mock_get_user, mock_u... function test_update_group_user_not_found (line 362) | def test_update_group_user_not_found(mock_get_user): function test_update_group_unauthorized_role (line 375) | def test_update_group_unauthorized_role(mock_get_user, mock_user_info): function test_update_group_duplicate_name (line 391) | def test_update_group_duplicate_name(mock_check_name, mock_query_groups,... function test_delete_group_success (line 414) | def test_delete_group_success(mock_remove_group, mock_query_groups, mock... function test_delete_group_user_not_found (line 433) | def test_delete_group_user_not_found(mock_get_user): function test_delete_group_unauthorized_role (line 445) | def test_delete_group_unauthorized_role(mock_get_user, mock_user_info): function test_delete_group_group_not_found (line 459) | def test_delete_group_group_not_found(mock_query_groups, mock_get_user, ... function test_add_user_to_single_group_success (line 475) | def test_add_user_to_single_group_success(mock_check_user, mock_add_user... function test_add_user_to_single_group_already_member (line 500) | def test_add_user_to_single_group_already_member(mock_check_user, mock_q... function test_add_user_to_single_group_current_user_not_found (line 517) | def test_add_user_to_single_group_current_user_not_found(mock_get_user): function test_add_user_to_single_group_group_not_found (line 531) | def test_add_user_to_single_group_group_not_found(mock_query_groups, moc... function test_get_group_users_success (line 547) | def test_get_group_users_success(mock_query_users, mock_query_groups, mo... function test_get_group_user_count_success (line 579) | def test_get_group_user_count_success(mock_count_users, mock_query_group... function test_get_group_user_count_group_not_found (line 591) | def test_get_group_user_count_group_not_found(mock_query_groups): function test_add_user_to_groups (line 600) | def test_add_user_to_groups(mock_add_user): function test_add_user_to_groups_with_exception (line 615) | def test_add_user_to_groups_with_exception(mock_add_user): function test_get_tenant_default_group_id_success (line 632) | def test_get_tenant_default_group_id_success(mock_get_tenant_info): function test_get_tenant_default_group_id_no_default (line 643) | def test_get_tenant_default_group_id_no_default(mock_get_tenant_info): function test_get_tenant_default_group_id_exception (line 654) | def test_get_tenant_default_group_id_exception(mock_get_tenant_info): function test_set_tenant_default_group_id_update_existing (line 667) | def test_set_tenant_default_group_id_update_existing(mock_update_config,... function test_set_tenant_default_group_id_create_new (line 684) | def test_set_tenant_default_group_id_create_new(mock_insert_config, mock... function test_set_tenant_default_group_id_tenant_not_found (line 702) | def test_set_tenant_default_group_id_tenant_not_found(mock_get_tenant_in... function test_set_tenant_default_group_id_group_not_found (line 712) | def test_set_tenant_default_group_id_group_not_found(mock_query_groups, ... function test_set_tenant_default_group_id_wrong_tenant (line 723) | def test_set_tenant_default_group_id_wrong_tenant(mock_query_groups, moc... function test_set_tenant_default_group_id_update_failure (line 736) | def test_set_tenant_default_group_id_update_failure(mock_update_config, ... function test_set_tenant_default_group_id_exception_handling (line 752) | def test_set_tenant_default_group_id_exception_handling(mock_insert_conf... function test_remove_user_from_single_group_success (line 766) | def test_remove_user_from_single_group_success(mock_remove_user, mock_qu... function test_remove_user_from_single_group_unauthorized_user_not_found (line 787) | def test_remove_user_from_single_group_unauthorized_user_not_found(mock_... function test_remove_user_from_single_group_unauthorized_role (line 800) | def test_remove_user_from_single_group_unauthorized_role(mock_get_user, ... function test_remove_user_from_single_group_group_not_found (line 815) | def test_remove_user_from_single_group_group_not_found(mock_query_groups... function test_update_group_members_success (line 833) | def test_update_group_members_success( function test_update_group_members_unauthorized_user_not_found (line 875) | def test_update_group_members_unauthorized_user_not_found(mock_get_user): function test_update_group_members_group_not_found (line 889) | def test_update_group_members_group_not_found(mock_query_groups, mock_ge... FILE: test/backend/services/test_idata_service.py function _create_mock_client (line 16) | def _create_mock_client(mock_response): class TestValidateIdataBaseParams (line 27) | class TestValidateIdataBaseParams: method test_validate_idata_base_params_success (line 30) | def test_validate_idata_base_params_success(self): method test_validate_idata_base_params_empty_api_base (line 41) | def test_validate_idata_base_params_empty_api_base(self): method test_validate_idata_base_params_none_api_base (line 56) | def test_validate_idata_base_params_none_api_base(self): method test_validate_idata_base_params_non_string_api_base (line 70) | def test_validate_idata_base_params_non_string_api_base(self): method test_validate_idata_base_params_invalid_scheme (line 84) | def test_validate_idata_base_params_invalid_scheme(self): method test_validate_idata_base_params_http_scheme (line 99) | def test_validate_idata_base_params_http_scheme(self): method test_validate_idata_base_params_https_scheme (line 110) | def test_validate_idata_base_params_https_scheme(self): method test_validate_idata_base_params_empty_api_key (line 121) | def test_validate_idata_base_params_empty_api_key(self): method test_validate_idata_base_params_none_api_key (line 136) | def test_validate_idata_base_params_none_api_key(self): method test_validate_idata_base_params_non_string_api_key (line 150) | def test_validate_idata_base_params_non_string_api_key(self): method test_validate_idata_base_params_empty_user_id (line 164) | def test_validate_idata_base_params_empty_user_id(self): method test_validate_idata_base_params_none_user_id (line 179) | def test_validate_idata_base_params_none_user_id(self): method test_validate_idata_base_params_non_string_user_id (line 193) | def test_validate_idata_base_params_non_string_user_id(self): class TestNormalizeApiBase (line 208) | class TestNormalizeApiBase: method test_normalize_api_base_with_trailing_slash (line 211) | def test_normalize_api_base_with_trailing_slash(self): method test_normalize_api_base_without_trailing_slash (line 218) | def test_normalize_api_base_without_trailing_slash(self): method test_normalize_api_base_multiple_trailing_slashes (line 225) | def test_normalize_api_base_multiple_trailing_slashes(self): class TestMakeIdataRequest (line 233) | class TestMakeIdataRequest: method test_make_idata_request_success (line 236) | def test_make_idata_request_success(self): method test_make_idata_request_connection_error (line 260) | def test_make_idata_request_connection_error(self): method test_make_idata_request_http_401_error (line 282) | def test_make_idata_request_http_401_error(self): method test_make_idata_request_http_403_error (line 313) | def test_make_idata_request_http_403_error(self): method test_make_idata_request_http_429_error (line 344) | def test_make_idata_request_http_429_error(self): method test_make_idata_request_http_500_error (line 375) | def test_make_idata_request_http_500_error(self): method test_make_idata_request_json_decode_error (line 407) | def test_make_idata_request_json_decode_error(self): class TestParseIdataResponse (line 433) | class TestParseIdataResponse: method test_parse_idata_response_success (line 436) | def test_parse_idata_response_success(self): method test_parse_idata_response_error_code (line 450) | def test_parse_idata_response_error_code(self): method test_parse_idata_response_error_code_no_msg (line 468) | def test_parse_idata_response_error_code_no_msg(self): method test_parse_idata_response_data_not_list (line 485) | def test_parse_idata_response_data_not_list(self): method test_parse_idata_response_empty_data (line 502) | def test_parse_idata_response_empty_data(self): class TestFetchIdataKnowledgeSpacesImpl (line 516) | class TestFetchIdataKnowledgeSpacesImpl: method test_fetch_idata_knowledge_spaces_impl_success (line 519) | def test_fetch_idata_knowledge_spaces_impl_success(self): method test_fetch_idata_knowledge_spaces_impl_with_trailing_slash (line 563) | def test_fetch_idata_knowledge_spaces_impl_with_trailing_slash(self): method test_fetch_idata_knowledge_spaces_impl_empty_response (line 591) | def test_fetch_idata_knowledge_spaces_impl_empty_response(self): method test_fetch_idata_knowledge_spaces_impl_skips_invalid_items (line 616) | def test_fetch_idata_knowledge_spaces_impl_skips_invalid_items(self): method test_fetch_idata_knowledge_spaces_impl_validation_error (line 655) | def test_fetch_idata_knowledge_spaces_impl_validation_error(self): method test_fetch_idata_knowledge_spaces_impl_api_error (line 669) | def test_fetch_idata_knowledge_spaces_impl_api_error(self): class TestFetchIdataDatasetsImpl (line 697) | class TestFetchIdataDatasetsImpl: method test_fetch_idata_datasets_impl_success (line 700) | def test_fetch_idata_datasets_impl_success(self): method test_fetch_idata_datasets_impl_empty_response (line 758) | def test_fetch_idata_datasets_impl_empty_response(self): method test_fetch_idata_datasets_impl_skips_invalid_items (line 786) | def test_fetch_idata_datasets_impl_skips_invalid_items(self): method test_fetch_idata_datasets_impl_missing_file_count (line 822) | def test_fetch_idata_datasets_impl_missing_file_count(self): method test_fetch_idata_datasets_impl_missing_name (line 855) | def test_fetch_idata_datasets_impl_missing_name(self): method test_fetch_idata_datasets_impl_validation_error_api_base (line 888) | def test_fetch_idata_datasets_impl_validation_error_api_base(self): method test_fetch_idata_datasets_impl_validation_error_knowledge_space_id_empty (line 903) | def test_fetch_idata_datasets_impl_validation_error_knowledge_space_id... method test_fetch_idata_datasets_impl_validation_error_knowledge_space_id_none (line 919) | def test_fetch_idata_datasets_impl_validation_error_knowledge_space_id... method test_fetch_idata_datasets_impl_validation_error_knowledge_space_id_non_string (line 934) | def test_fetch_idata_datasets_impl_validation_error_knowledge_space_id... method test_fetch_idata_datasets_impl_with_trailing_slash (line 949) | def test_fetch_idata_datasets_impl_with_trailing_slash(self): FILE: test/backend/services/test_image_service.py function test_proxy_image_impl_success (line 35) | async def test_proxy_image_impl_success(): function test_proxy_image_impl_remote_error (line 70) | async def test_proxy_image_impl_remote_error(): function test_proxy_image_impl_500_error (line 103) | async def test_proxy_image_impl_500_error(): function test_proxy_image_impl_connection_exception (line 136) | async def test_proxy_image_impl_connection_exception(): function test_proxy_image_impl_with_special_chars (line 161) | async def test_proxy_image_impl_with_special_chars(): function test_proxy_image_impl_json_parse_error (line 198) | async def test_proxy_image_impl_json_parse_error(): function test_proxy_image_impl_different_status_codes (line 228) | async def test_proxy_image_impl_different_status_codes(): function test_proxy_image_impl_url_encoding (line 271) | async def test_proxy_image_impl_url_encoding(): function test_get_vlm_model_success (line 312) | def test_get_vlm_model_success(mock_tenant_config_manager, mock_get_mode... function test_get_vlm_model_with_none_config (line 349) | def test_get_vlm_model_with_none_config(mock_tenant_config_manager, mock... FILE: test/backend/services/test_invitation_service.py function mock_user_info (line 34) | def mock_user_info(): function mock_invitation_info (line 45) | def mock_invitation_info(): function test_create_invitation_code_admin_invite (line 66) | def test_create_invitation_code_admin_invite( function test_create_invitation_code_dev_invite_admin_role (line 116) | def test_create_invitation_code_dev_invite_admin_role( function test_create_invitation_code_invalid_code_type (line 160) | def test_create_invitation_code_invalid_code_type(mock_get_user_info, mo... function test_create_invitation_code_unauthorized_admin_invite (line 175) | def test_create_invitation_code_unauthorized_admin_invite(mock_get_user_... function test_create_invitation_code_unauthorized_dev_invite (line 190) | def test_create_invitation_code_unauthorized_dev_invite(mock_get_user_in... function test_create_invitation_code_user_not_found (line 205) | def test_create_invitation_code_user_not_found(mock_get_user_info): function test_create_invitation_code_duplicate (line 220) | def test_create_invitation_code_duplicate(mock_query_invitation_by_code,... function test_create_invitation_code_default_empty_group_ids (line 251) | def test_create_invitation_code_default_empty_group_ids( function test_create_invitation_code_provided_code_uppercase_conversion (line 294) | def test_create_invitation_code_provided_code_uppercase_conversion( function test_update_invitation_code_success (line 337) | def test_update_invitation_code_success(mock_update_status, mock_modify_... function test_update_invitation_code_user_not_found (line 358) | def test_update_invitation_code_user_not_found(mock_get_user_info): function test_update_invitation_code_unauthorized_user_role (line 372) | def test_update_invitation_code_unauthorized_user_role(mock_get_user_inf... function test_normalize_invitation_data_empty_input (line 386) | def test_normalize_invitation_data_empty_input(): function test_normalize_invitation_data_datetime_conversion (line 397) | def test_normalize_invitation_data_datetime_conversion(): function test_normalize_invitation_data_group_ids_conversion (line 421) | def test_normalize_invitation_data_group_ids_conversion(): function test_get_invitation_by_code_success (line 450) | def test_get_invitation_by_code_success(mock_query_invitation_by_code, m... function test_get_invitation_by_code_not_found (line 475) | def test_get_invitation_by_code_not_found(mock_query_invitation_by_code): function test_check_invitation_available_not_found (line 487) | def test_check_invitation_available_not_found(mock_count_usage, mock_que... function test_check_invitation_available_not_in_use (line 500) | def test_check_invitation_available_not_in_use(mock_count_usage, mock_qu... function test_check_invitation_available_capacity_exceeded (line 517) | def test_check_invitation_available_capacity_exceeded(mock_count_usage, ... function test_check_invitation_available_success (line 535) | def test_check_invitation_available_success(mock_count_usage, mock_query... function test_use_invitation_code_success (line 555) | def test_use_invitation_code_success( function test_use_invitation_code_unavailable (line 585) | def test_use_invitation_code_unavailable(mock_check_available): function test_use_invitation_code_double_check_not_found (line 598) | def test_use_invitation_code_double_check_not_found(mock_query_invitatio... function test_update_invitation_code_status_expired (line 619) | def test_update_invitation_code_status_expired( function test_update_invitation_code_status_run_out (line 646) | def test_update_invitation_code_status_run_out( function test_update_invitation_code_status_invitation_not_found (line 675) | def test_update_invitation_code_status_invitation_not_found(mock_query_i... function test_update_invitation_code_status_invalid_expiry_date (line 687) | def test_update_invitation_code_status_invalid_expiry_date(mock_count_in... function test_update_invitation_code_status_recover_from_run_out (line 709) | def test_update_invitation_code_status_recover_from_run_out(mock_modify_... function test_update_invitation_code_status_recover_from_expire (line 737) | def test_update_invitation_code_status_recover_from_expire(mock_modify_i... function test_update_invitation_code_status_no_change (line 764) | def test_update_invitation_code_status_no_change(mock_count_invitation_u... function test_calculate_current_status_empty_invitation_data (line 786) | def test_calculate_current_status_empty_invitation_data(): function test_calculate_current_status_missing_invitation_id (line 799) | def test_calculate_current_status_missing_invitation_id(): function test_calculate_current_status_datetime_expiry_date (line 820) | def test_calculate_current_status_datetime_expiry_date(mock_count_usage): function test_calculate_current_status_string_expiry_date (line 844) | def test_calculate_current_status_string_expiry_date(mock_count_usage): function test_calculate_current_status_expired_check_logic (line 868) | def test_calculate_current_status_expired_check_logic(mock_count_usage): function test_calculate_current_status_invalid_expiry_date_format (line 893) | def test_calculate_current_status_invalid_expiry_date_format(mock_count_... function test_calculate_current_status_capacity_check (line 916) | def test_calculate_current_status_capacity_check(mock_count_usage): function test_generate_unique_invitation_code (line 940) | def test_generate_unique_invitation_code(mock_query_invitation_by_code): function test_generate_unique_invitation_code_uniqueness_logic (line 955) | def test_generate_unique_invitation_code_uniqueness_logic(mock_query_inv... function test_generate_unique_invitation_code_max_attempts_exception (line 977) | def test_generate_unique_invitation_code_max_attempts_exception(mock_que... function test_get_invitations_list_success (line 994) | def test_get_invitations_list_success(mock_query_invitations, mock_get_u... function test_get_invitations_list_with_sorting (line 1037) | def test_get_invitations_list_with_sorting(mock_query_invitations, mock_... function test_get_invitations_list_user_not_found (line 1082) | def test_get_invitations_list_user_not_found(mock_get_user): function test_get_invitations_list_unauthorized_user_role (line 1097) | def test_get_invitations_list_unauthorized_user_role(mock_query_invitati... function test_get_invitations_list_unauthorized_user_role_all_tenants (line 1112) | def test_get_invitations_list_unauthorized_user_role_all_tenants(mock_ge... function test_delete_invitation_code_success (line 1129) | def test_delete_invitation_code_success(mock_remove_invitation, mock_que... function test_delete_invitation_code_success_logging (line 1151) | def test_delete_invitation_code_success_logging(mock_remove_invitation, ... function test_delete_invitation_code_unauthorized_user_role (line 1167) | def test_delete_invitation_code_unauthorized_user_role(mock_get_user, mo... function test_delete_invitation_code_not_found (line 1181) | def test_delete_invitation_code_not_found(mock_query_invitation, mock_ge... function test_calculate_current_status_same_day_not_expired (line 1194) | def test_calculate_current_status_same_day_not_expired(mock_count_usage): function test_calculate_current_status_yesterday_expired (line 1219) | def test_calculate_current_status_yesterday_expired(mock_count_usage): function test_calculate_current_status_same_day_string_not_expired (line 1244) | def test_calculate_current_status_same_day_string_not_expired(mock_count... function test_update_invitation_code_status_same_day_not_expired (line 1271) | def test_update_invitation_code_status_same_day_not_expired( FILE: test/backend/services/test_mcp_container_service.py class TestMCPContainerManagerInit (line 43) | class TestMCPContainerManagerInit: method test_init_success (line 48) | def test_init_success(self, mock_config_class, mock_create_client): method test_init_container_error (line 67) | def test_init_container_error(self, mock_config_class, mock_create_cli... method test_init_default_socket_path (line 80) | def test_init_default_socket_path(self, mock_config_class, mock_create... class TestStartMCPContainer (line 100) | class TestStartMCPContainer: method mock_manager (line 104) | def mock_manager(self): method test_start_mcp_container_success (line 113) | async def test_start_mcp_container_success(self, mock_manager): method test_start_mcp_container_container_error (line 150) | async def test_start_mcp_container_container_error(self, mock_manager): method test_start_mcp_container_connection_error (line 164) | async def test_start_mcp_container_connection_error(self, mock_manager): method test_start_mcp_container_without_env_vars (line 178) | async def test_start_mcp_container_without_env_vars(self, mock_manager): method test_start_mcp_container_without_full_command (line 207) | async def test_start_mcp_container_without_full_command(self, mock_man... class TestStopMCPContainer (line 242) | class TestStopMCPContainer: method mock_manager (line 246) | def mock_manager(self): method test_stop_mcp_container_success (line 255) | async def test_stop_mcp_container_success(self, mock_manager): method test_stop_mcp_container_stop_not_found (line 269) | async def test_stop_mcp_container_stop_not_found(self, mock_manager): method test_stop_mcp_container_remove_not_found (line 281) | async def test_stop_mcp_container_remove_not_found(self, mock_manager): method test_stop_mcp_container_stop_error (line 295) | async def test_stop_mcp_container_stop_error(self, mock_manager): method test_stop_mcp_container_remove_error (line 308) | async def test_stop_mcp_container_remove_error(self, mock_manager): class TestListMCPContainers (line 328) | class TestListMCPContainers: method mock_manager (line 332) | def mock_manager(self): method test_list_mcp_containers_success (line 340) | def test_list_mcp_containers_success(self, mock_manager): method test_list_mcp_containers_no_tenant_filter (line 369) | def test_list_mcp_containers_no_tenant_filter(self, mock_manager): method test_list_mcp_containers_empty (line 387) | def test_list_mcp_containers_empty(self, mock_manager): method test_list_mcp_containers_exception (line 395) | def test_list_mcp_containers_exception(self, mock_manager): method test_list_mcp_containers_maps_service_url_to_mcp_url (line 404) | def test_list_mcp_containers_maps_service_url_to_mcp_url(self, mock_ma... class TestGetContainerLogs (line 427) | class TestGetContainerLogs: method mock_manager (line 431) | def mock_manager(self): method test_get_container_logs_success (line 439) | def test_get_container_logs_success(self, mock_manager): method test_get_container_logs_custom_tail (line 449) | def test_get_container_logs_custom_tail(self, mock_manager): method test_get_container_logs_default_tail (line 458) | def test_get_container_logs_default_tail(self, mock_manager): method test_get_container_logs_exception (line 467) | def test_get_container_logs_exception(self, mock_manager): class TestStreamContainerLogs (line 482) | class TestStreamContainerLogs: method mock_manager (line 486) | def mock_manager(self): method test_stream_container_logs_initial_logs_only (line 496) | async def test_stream_container_logs_initial_logs_only(self, mock_mana... method test_stream_container_logs_empty_initial_logs (line 521) | async def test_stream_container_logs_empty_initial_logs(self, mock_man... method test_stream_container_logs_filters_empty_lines (line 538) | async def test_stream_container_logs_filters_empty_lines(self, mock_ma... method test_stream_container_logs_with_follow (line 559) | async def test_stream_container_logs_with_follow(self, mock_manager): method test_stream_container_logs_container_not_found (line 614) | async def test_stream_container_logs_container_not_found(self, mock_ma... method test_stream_container_logs_exception_during_streaming (line 633) | async def test_stream_container_logs_exception_during_streaming(self, ... method test_stream_container_logs_follow_exception_in_logs_call (line 687) | async def test_stream_container_logs_follow_exception_in_logs_call(sel... method test_stream_container_logs_follow_with_multiple_chunks (line 730) | async def test_stream_container_logs_follow_with_multiple_chunks(self,... method test_stream_container_logs_follow_filters_empty_lines (line 778) | async def test_stream_container_logs_follow_filters_empty_lines(self, ... method test_stream_container_logs_follow_stop_flag (line 824) | async def test_stream_container_logs_follow_stop_flag(self, mock_manag... method test_stream_container_logs_follow_queue_none_signal (line 882) | async def test_stream_container_logs_follow_queue_none_signal(self, mo... method test_stream_container_logs_follow_stop_flag_during_iteration (line 924) | async def test_stream_container_logs_follow_stop_flag_during_iteration... method test_stream_container_logs_follow_decode_errors (line 982) | async def test_stream_container_logs_follow_decode_errors(self, mock_m... method test_stream_container_logs_decode_error (line 1028) | async def test_stream_container_logs_decode_error(self, mock_manager): method test_stream_container_logs_custom_tail (line 1047) | async def test_stream_container_logs_custom_tail(self, mock_manager): class TestLoadImageFromTarFile (line 1072) | class TestLoadImageFromTarFile: method mock_manager (line 1076) | def mock_manager(self): method test_load_image_from_tar_file_success_with_tags (line 1085) | async def test_load_image_from_tar_file_success_with_tags(self, mock_m... method test_load_image_from_tar_file_success_without_tags (line 1111) | async def test_load_image_from_tar_file_success_without_tags(self, moc... method test_load_image_from_tar_file_empty_images (line 1137) | async def test_load_image_from_tar_file_empty_images(self, mock_manager): method test_load_image_from_tar_file_exception (line 1157) | async def test_load_image_from_tar_file_exception(self, mock_manager): class TestStartMCPContainerFromTar (line 1183) | class TestStartMCPContainerFromTar: method mock_manager (line 1187) | def mock_manager(self): method test_start_mcp_container_from_tar_success (line 1196) | async def test_start_mcp_container_from_tar_success(self, mock_manager): method test_start_mcp_container_from_tar_load_image_error (line 1236) | async def test_start_mcp_container_from_tar_load_image_error(self, moc... method test_start_mcp_container_from_tar_start_container_error (line 1251) | async def test_start_mcp_container_from_tar_start_container_error(self... FILE: test/backend/services/test_memory_config_service.py class MemoryAgentShareMode (line 14) | class MemoryAgentShareMode(str, Enum): class MemoryUserConfig (line 33) | class MemoryUserConfig: method __init__ (line 34) | def __init__(self, memory_switch: bool, agent_share_option: str, disab... class MemoryContext (line 39) | class MemoryContext: method __init__ (line 40) | def __init__(self, user_config, memory_config, tenant_id, user_id, age... function _filter_property (line 53) | def _filter_property(data, model_class): function _get_db_session (line 61) | def _get_db_session(db_session=None): function _noop (line 100) | def _noop(*args, **kwargs): function _return_empty_list (line 103) | def _return_empty_list(*args, **kwargs): class TestMemoryConfigService (line 119) | class TestMemoryConfigService(unittest.TestCase): method setUp (line 120) | def setUp(self): method test_get_user_configs_defaults_and_aggregation (line 127) | def test_get_user_configs_defaults_and_aggregation(self, m_get_all): method test_get_user_configs_default_switch_when_missing (line 145) | def test_get_user_configs_default_switch_when_missing(self, m_get_all): method test_update_single_config_update_branch_success (line 156) | def test_update_single_config_update_branch_success(self, m_get_info, ... method test_update_single_config_update_branch_fail (line 168) | def test_update_single_config_update_branch_fail(self, m_get_info, m_u... method test_update_single_config_insert_branch_success (line 176) | def test_update_single_config_insert_branch_success(self, m_get_info, ... method test_update_single_config_insert_branch_fail (line 185) | def test_update_single_config_insert_branch_fail(self, m_get_info, m_i... method test_add_multi_value_insert_success (line 194) | def test_add_multi_value_insert_success(self, m_get_info, m_insert): method test_add_multi_value_insert_fail (line 202) | def test_add_multi_value_insert_fail(self, m_get_info, m_insert): method test_add_multi_value_already_exists (line 209) | def test_add_multi_value_already_exists(self, m_get_info): method test_remove_multi_value_success (line 218) | def test_remove_multi_value_success(self, m_get_info, m_del): method test_remove_multi_value_fail (line 227) | def test_remove_multi_value_fail(self, m_get_info, m_del): method test_remove_multi_value_not_found (line 234) | def test_remove_multi_value_not_found(self, m_get_info): method test_get_memory_switch (line 242) | def test_get_memory_switch(self, m_get): method test_set_memory_switch_true (line 248) | def test_set_memory_switch_true(self, m_upd): method test_get_agent_share_valid (line 255) | def test_get_agent_share_valid(self, m_get): method test_get_agent_share_invalid (line 260) | def test_get_agent_share_invalid(self, m_get): method test_set_agent_share (line 265) | def test_set_agent_share(self, m_upd): method test_get_disabled_agent_ids (line 270) | def test_get_disabled_agent_ids(self, m_get): method test_get_disabled_agent_ids_default_empty (line 277) | def test_get_disabled_agent_ids_default_empty(self, m_get): method test_get_disabled_useragent_ids (line 284) | def test_get_disabled_useragent_ids(self, m_get): method test_get_disabled_useragent_ids_default_empty (line 291) | def test_get_disabled_useragent_ids_default_empty(self, m_get): method test_add_disabled_agent_id (line 298) | def test_add_disabled_agent_id(self, m_add): method test_remove_disabled_agent_id (line 305) | def test_remove_disabled_agent_id(self, m_rm): method test_add_disabled_useragent_id (line 312) | def test_add_disabled_useragent_id(self, m_add): method test_remove_disabled_useragent_id (line 319) | def test_remove_disabled_useragent_id(self, m_rm): method test_build_memory_context_switch_off (line 327) | def test_build_memory_context_switch_off(self, m_switch): method test_build_memory_context_switch_on (line 340) | def test_build_memory_context_switch_on(self, m_switch): method test_build_memory_context_skip_query (line 351) | def test_build_memory_context_skip_query(self): method test_build_memory_context_skip_query_no_db_calls (line 366) | def test_build_memory_context_skip_query_no_db_calls(self): method test_build_memory_context_default_behavior (line 391) | def test_build_memory_context_default_behavior(self): FILE: test/backend/services/test_model_health_service.py class MockModule (line 13) | class MockModule(mock.MagicMock): method __getattr__ (line 15) | def __getattr__(cls, key): class ModelConnectStatusEnum (line 41) | class ModelConnectStatusEnum: class ModelResponse (line 47) | class ModelResponse: method __init__ (line 48) | def __init__(self, code, message="", data=None): function test_perform_connectivity_check_embedding (line 122) | async def test_perform_connectivity_check_embedding(): function test_perform_connectivity_check_multi_embedding (line 151) | async def test_perform_connectivity_check_multi_embedding(): function test_perform_connectivity_check_llm (line 180) | async def test_perform_connectivity_check_llm(): function test_perform_connectivity_check_vlm (line 213) | async def test_perform_connectivity_check_vlm(): function test_perform_connectivity_check_tts (line 246) | async def test_perform_connectivity_check_tts(): function test_perform_connectivity_check_stt (line 270) | async def test_perform_connectivity_check_stt(): function test_perform_connectivity_check_rerank (line 294) | async def test_perform_connectivity_check_rerank(): function test_perform_connectivity_check_base_url_normalization_localhost (line 308) | async def test_perform_connectivity_check_base_url_normalization_localho... function test_perform_connectivity_check_base_url_normalization_127001 (line 341) | async def test_perform_connectivity_check_base_url_normalization_127001(): function test_perform_connectivity_check_unsupported_type (line 373) | async def test_perform_connectivity_check_unsupported_type(): function test_check_model_connectivity_success (line 387) | async def test_check_model_connectivity_success(): function test_check_model_connectivity_model_not_found (line 426) | async def test_check_model_connectivity_model_not_found(): function test_check_model_connectivity_failure (line 438) | async def test_check_model_connectivity_failure(): function test_check_model_connectivity_exception (line 470) | async def test_check_model_connectivity_exception(): function test_check_model_connectivity_general_exception (line 501) | async def test_check_model_connectivity_general_exception(): function test_verify_model_config_connectivity_success (line 522) | async def test_verify_model_config_connectivity_success(): function test_verify_model_config_connectivity_failure (line 551) | async def test_verify_model_config_connectivity_failure(): function test_verify_model_config_connectivity_validation_error (line 577) | async def test_verify_model_config_connectivity_validation_error(): function test_verify_model_config_connectivity_exception (line 602) | async def test_verify_model_config_connectivity_exception(): function test_save_config_with_error (line 628) | async def test_save_config_with_error(): function test_embedding_dimension_check_embedding_success (line 634) | async def test_embedding_dimension_check_embedding_success(): function test_embedding_dimension_check_multi_embedding_success (line 655) | async def test_embedding_dimension_check_multi_embedding_success(): function test_embedding_dimension_check_unsupported_type (line 676) | async def test_embedding_dimension_check_unsupported_type(): function test_embedding_dimension_check_empty_return (line 684) | async def test_embedding_dimension_check_empty_return(): function test_embedding_dimension_check_wrapper_success (line 698) | async def test_embedding_dimension_check_wrapper_success(): function test_embedding_dimension_check_wrapper_exception (line 719) | async def test_embedding_dimension_check_wrapper_exception(): function test_embedding_dimension_check_multi_embedding_empty_response (line 739) | async def test_embedding_dimension_check_multi_embedding_empty_response(): function test_embedding_dimension_check_wrapper_value_error (line 767) | async def test_embedding_dimension_check_wrapper_value_error(): FILE: test/backend/services/test_model_management_service.py class ToolConfig (line 26) | class ToolConfig: # minimal stub class _MinioClient (line 41) | class _MinioClient: # minimal stub class _EnumItem (line 70) | class _EnumItem: method __init__ (line 71) | def __init__(self, value: str): class _ModelConnectStatusEnum (line 75) | class _ModelConnectStatusEnum: method get_value (line 82) | def get_value(status): class _Func (line 109) | class _Func: class _ProviderEnum (line 120) | class _ProviderEnum: function _prepare_model_dict (line 137) | async def _prepare_model_dict(**kwargs): function _merge_existing_model_tokens (line 141) | def _merge_existing_model_tokens(model_list, tenant_id, provider, model_... function _get_provider_models (line 145) | async def _get_provider_models(model_data): function _embedding_dimension_check (line 156) | async def _embedding_dimension_check(model_config): function _add_repo_to_name (line 165) | def _add_repo_to_name(model_repo, model_name): function _split_display_name (line 169) | def _split_display_name(model_name: str): function _split_repo_name (line 173) | def _split_repo_name(model_name: str): function _sort_models_by_id (line 178) | def _sort_models_by_id(model_list): function _noop (line 196) | def _noop(*args, **kwargs): function _get_model_records (line 200) | def _get_model_records(*args, **kwargs): function _get_models_by_tenant_factory_type (line 204) | def _get_models_by_tenant_factory_type(*args, **kwargs): function _get_models_by_display_name (line 208) | def _get_models_by_display_name(*args, **kwargs): function _get_model_by_model_id (line 221) | def _get_model_by_model_id(model_id: int, tenant_id: str): function _delete_config_by_tenant_config_id (line 242) | def _delete_config_by_tenant_config_id(*args, **kwargs): function _get_all_configs_by_tenant_id (line 246) | def _get_all_configs_by_tenant_id(tenant_id): function _get_single_config_info (line 250) | def _get_single_config_info(*args, **kwargs): function _insert_config (line 254) | def _insert_config(*args, **kwargs): function _update_config_by_tenant_config_id_and_data (line 258) | def _update_config_by_tenant_config_id_and_data(*args, **kwargs): function _update_config_by_tenant_config_id (line 262) | def _update_config_by_tenant_config_id(*args, **kwargs): function _get_vector_db_core (line 278) | def _get_vector_db_core(): function _clear_model_memories (line 289) | async def _clear_model_memories(**kwargs): function _get_tenant_info (line 298) | def _get_tenant_info(tenant_id): function _add_repo_to_name (line 310) | def _add_repo_to_name(model_repo, model_name): function import_svc (line 315) | def import_svc(): function test_create_model_for_tenant_success_llm (line 324) | async def test_create_model_for_tenant_success_llm(): function test_create_model_for_tenant_open_router_disables_ssl (line 350) | async def test_create_model_for_tenant_open_router_disables_ssl(): function test_create_model_for_tenant_conflict_raises (line 376) | async def test_create_model_for_tenant_conflict_raises(): function test_create_model_for_tenant_display_name_conflict_valueerror (line 395) | async def test_create_model_for_tenant_display_name_conflict_valueerror(): function test_create_model_for_tenant_multi_embedding_creates_two_records (line 418) | async def test_create_model_for_tenant_multi_embedding_creates_two_recor... function test_create_model_for_tenant_embedding_sets_dimension (line 440) | async def test_create_model_for_tenant_embedding_sets_dimension(): function test_create_model_for_tenant_embedding_sets_default_chunk_batch (line 465) | async def test_create_model_for_tenant_embedding_sets_default_chunk_batc... function test_create_model_for_tenant_multi_embedding_sets_default_chunk_batch (line 494) | async def test_create_model_for_tenant_multi_embedding_sets_default_chun... function test_create_provider_models_for_tenant_success (line 532) | async def test_create_provider_models_for_tenant_success(): function test_create_provider_models_for_tenant_exception (line 550) | async def test_create_provider_models_for_tenant_exception(): function test_batch_create_models_for_tenant_dashscope_provider (line 561) | async def test_batch_create_models_for_tenant_dashscope_provider(): function test_batch_create_models_for_tenant_tokenpony_provider (line 587) | async def test_batch_create_models_for_tenant_tokenpony_provider(): function test_batch_create_models_for_tenant_other_provider (line 613) | async def test_batch_create_models_for_tenant_other_provider(): function test_batch_create_models_for_tenant_flow (line 648) | async def test_batch_create_models_for_tenant_flow(): function test_batch_create_models_max_tokens_update (line 690) | async def test_batch_create_models_max_tokens_update(): function test_batch_create_models_for_tenant_exception (line 747) | async def test_batch_create_models_for_tenant_exception(): function test_list_provider_models_for_tenant_success (line 760) | async def test_list_provider_models_for_tenant_success(): function test_list_provider_models_for_tenant_exception (line 773) | async def test_list_provider_models_for_tenant_exception(): function test_update_single_model_for_tenant_success_single_model (line 782) | async def test_update_single_model_for_tenant_success_single_model(): function test_update_single_model_for_tenant_conflict_new_display_name (line 809) | async def test_update_single_model_for_tenant_conflict_new_display_name(): function test_update_single_model_for_tenant_not_found_raises_lookup_error (line 830) | async def test_update_single_model_for_tenant_not_found_raises_lookup_er... function test_update_single_model_for_tenant_multi_embedding_updates_both (line 839) | async def test_update_single_model_for_tenant_multi_embedding_updates_bo... function test_batch_update_models_for_tenant_success (line 866) | async def test_batch_update_models_for_tenant_success(): function test_batch_update_models_for_tenant_exception (line 877) | async def test_batch_update_models_for_tenant_exception(): function test_delete_model_for_tenant_not_found_raises_lookup_error (line 887) | async def test_delete_model_for_tenant_not_found_raises_lookup_error(): function test_delete_model_for_tenant_embedding_deletes_both (line 896) | async def test_delete_model_for_tenant_embedding_deletes_both(): function test_delete_model_for_tenant_cleanup_inner_exception (line 933) | async def test_delete_model_for_tenant_cleanup_inner_exception(caplog): function test_delete_model_for_tenant_cleanup_outer_exception (line 957) | async def test_delete_model_for_tenant_cleanup_outer_exception(caplog): function test_delete_model_for_tenant_non_embedding (line 977) | async def test_delete_model_for_tenant_non_embedding(): function test_list_models_for_tenant_success (line 993) | async def test_list_models_for_tenant_success(): function test_list_models_for_tenant_exception (line 1010) | async def test_list_models_for_tenant_exception(): function test_list_llm_models_for_tenant_success (line 1019) | async def test_list_llm_models_for_tenant_success(): function test_list_llm_models_for_tenant_exception (line 1062) | async def test_list_llm_models_for_tenant_exception(): function test_list_llm_models_for_tenant_normalizes_connect_status (line 1072) | async def test_list_llm_models_for_tenant_normalizes_connect_status(): function test_list_models_for_tenant_type_mapping (line 1105) | async def test_list_models_for_tenant_type_mapping(): function test_list_llm_models_for_tenant_handles_missing_repo (line 1143) | async def test_list_llm_models_for_tenant_handles_missing_repo(): function test_list_models_for_admin_success (line 1176) | async def test_list_models_for_admin_success(): function test_list_models_for_admin_with_pagination (line 1200) | async def test_list_models_for_admin_with_pagination(): function test_list_models_for_admin_with_model_type_filter (line 1234) | async def test_list_models_for_admin_with_model_type_filter(): function test_list_models_for_admin_empty_tenant (line 1253) | async def test_list_models_for_admin_empty_tenant(): function test_list_models_for_admin_exception (line 1267) | async def test_list_models_for_admin_exception(): function test_list_models_for_admin_type_mapping (line 1277) | async def test_list_models_for_admin_type_mapping(): FILE: test/backend/services/test_model_provider_service.py class MockMinioStorageClient (line 43) | class MockMinioStorageClient(mock.MagicMock): method __init__ (line 46) | def __init__(self, *args, **kwargs): method default_bucket (line 51) | def default_bucket(self): method _ensure_bucket_exists (line 54) | def _ensure_bucket_exists(self, bucket): function mock_create_storage_client_from_config (line 66) | def mock_create_storage_client_from_config(*args, **kwargs): class MockMinioClientClass (line 90) | class MockMinioClientClass(mock.MagicMock): method __new__ (line 92) | def __new__(cls, *args, **kwargs): method __init__ (line 100) | def __init__(self): class _ProviderEnumStub (line 157) | class _ProviderEnumStub: class _EnumStub (line 170) | class _EnumStub: class _TimeoutExceptionStub (line 182) | class _TimeoutExceptionStub(Exception): function test_get_models_llm_success (line 209) | async def test_get_models_llm_success(): function test_get_models_embedding_success (line 252) | async def test_get_models_embedding_success(): function test_get_models_unknown_type (line 291) | async def test_get_models_unknown_type(): function test_get_models_exception (line 323) | async def test_get_models_exception(): function test_prepare_model_dict_llm (line 353) | async def test_prepare_model_dict_llm(): function test_prepare_model_dict_vlm (line 409) | async def test_prepare_model_dict_vlm(): function test_prepare_model_dict_embedding (line 464) | async def test_prepare_model_dict_embedding(): function test_prepare_model_dict_embedding_with_explicit_chunk_sizes (line 536) | async def test_prepare_model_dict_embedding_with_explicit_chunk_sizes(): function test_prepare_model_dict_multi_embedding_defaults (line 598) | async def test_prepare_model_dict_multi_embedding_defaults(): function test_merge_existing_model_tokens_embedding_type (line 665) | def test_merge_existing_model_tokens_embedding_type(): function test_merge_existing_model_tokens_empty_model_list (line 686) | def test_merge_existing_model_tokens_empty_model_list(): function test_merge_existing_model_tokens_no_existing_models (line 703) | def test_merge_existing_model_tokens_no_existing_models(): function test_merge_existing_model_tokens_successful_merge (line 720) | def test_merge_existing_model_tokens_successful_merge(): function test_merge_existing_model_tokens_partial_match (line 763) | def test_merge_existing_model_tokens_partial_match(): function test_merge_existing_model_tokens_different_provider (line 795) | def test_merge_existing_model_tokens_different_provider(): function test_merge_existing_model_tokens_verify_function_call (line 821) | def test_merge_existing_model_tokens_verify_function_call(): function test_get_provider_models_silicon_success (line 846) | async def test_get_provider_models_silicon_success(): function test_get_provider_models_silicon_empty_result (line 883) | async def test_get_provider_models_silicon_empty_result(): function test_get_provider_models_silicon_exception (line 905) | async def test_get_provider_models_silicon_exception(): function test_get_provider_models_silicon_constructor_exception (line 929) | async def test_get_provider_models_silicon_constructor_exception(): function test_get_provider_models_silicon_internal_exception_handling (line 948) | async def test_get_provider_models_silicon_internal_exception_handling(): function test_get_provider_models_unsupported_provider (line 991) | async def test_get_provider_models_unsupported_provider(): function test_get_provider_models_missing_provider (line 1005) | async def test_get_provider_models_missing_provider(): function test_get_provider_models_silicon_with_different_model_types (line 1019) | async def test_get_provider_models_silicon_with_different_model_types(): function test_modelengine_get_models_llm_success (line 1057) | async def test_modelengine_get_models_llm_success(): function test_modelengine_get_models_embedding_success (line 1117) | async def test_modelengine_get_models_embedding_success(): function test_modelengine_get_models_all_types (line 1171) | async def test_modelengine_get_models_all_types(): function test_modelengine_get_models_exception (line 1234) | async def test_modelengine_get_models_exception(): function test_prepare_model_dict_modelengine_llm (line 1266) | async def test_prepare_model_dict_modelengine_llm(): function test_prepare_model_dict_modelengine_embedding (line 1321) | async def test_prepare_model_dict_modelengine_embedding(): function test_prepare_model_dict_modelengine_base_url_stripping (line 1381) | async def test_prepare_model_dict_modelengine_base_url_stripping(): function test_get_provider_models_modelengine_success (line 1434) | async def test_get_provider_models_modelengine_success(): function test_get_provider_models_modelengine_empty_result (line 1464) | async def test_get_provider_models_modelengine_empty_result(): function test_modelengine_get_models_missing_host_or_api_key (line 1489) | async def test_modelengine_get_models_missing_host_or_api_key(): function test_silicon_get_models_empty_list (line 1525) | async def test_silicon_get_models_empty_list(): function test_modelengine_get_models_http_401_error (line 1553) | async def test_modelengine_get_models_http_401_error(): function test_modelengine_get_models_http_403_error (line 1602) | async def test_modelengine_get_models_http_403_error(): function test_modelengine_get_models_http_404_error (line 1648) | async def test_modelengine_get_models_http_404_error(): function test_modelengine_get_models_http_500_error (line 1694) | async def test_modelengine_get_models_http_500_error(): function test_modelengine_get_models_connection_error (line 1740) | async def test_modelengine_get_models_connection_error(): function test_modelengine_get_models_timeout_error (line 1771) | async def test_modelengine_get_models_timeout_error(): function test_modelengine_get_models_generic_exception (line 1804) | async def test_modelengine_get_models_generic_exception(): function test_get_model_engine_raw_url_empty_string (line 1837) | def test_get_model_engine_raw_url_empty_string(): function test_get_model_engine_raw_url_none_input (line 1845) | def test_get_model_engine_raw_url_none_input(): function test_get_model_engine_raw_url_with_open_path (line 1853) | def test_get_model_engine_raw_url_with_open_path(): function test_get_model_engine_raw_url_without_open_path (line 1877) | def test_get_model_engine_raw_url_without_open_path(): function test_get_model_engine_raw_url_trailing_slash (line 1892) | def test_get_model_engine_raw_url_trailing_slash(): function test_get_provider_models_dashscope_success (line 1916) | async def test_get_provider_models_dashscope_success(): function test_get_provider_models_dashscope_empty_result (line 1950) | async def test_get_provider_models_dashscope_empty_result(): function test_get_provider_models_tokenpony_success (line 1977) | async def test_get_provider_models_tokenpony_success(): function test_get_provider_models_tokenpony_empty_result (line 2011) | async def test_get_provider_models_tokenpony_empty_result(): FILE: test/backend/services/test_northbound_service.py class LimitExceededError (line 28) | class LimitExceededError(Exception): class UnauthorizedError (line 31) | class UnauthorizedError(Exception): class MockNorthboundContext (line 96) | class MockNorthboundContext: method __init__ (line 98) | def __init__(self, request_id="req-123", tenant_id="tenant-1", user_id... function reset_test_isolation (line 108) | def reset_test_isolation(): class TestNorthboundContext (line 119) | class TestNorthboundContext: method test_northbound_context_default_token_id (line 122) | def test_northbound_context_default_token_id(self): method test_northbound_context_with_token_id (line 132) | def test_northbound_context_with_token_id(self): class TestBuildIdempotencyKey (line 144) | class TestBuildIdempotencyKey: method test_build_idempotency_key_normal (line 147) | def test_build_idempotency_key_normal(self): method test_build_idempotency_key_with_none (line 153) | def test_build_idempotency_key_with_none(self): method test_build_idempotency_key_long_string (line 162) | def test_build_idempotency_key_long_string(self): class TestStartStreamingChat (line 171) | class TestStartStreamingChat: method test_start_streaming_chat_creates_conversation (line 174) | async def test_start_streaming_chat_creates_conversation(self): method test_start_streaming_chat_logs_token_usage (line 201) | async def test_start_streaming_chat_logs_token_usage(self): class TestStopChat (line 231) | class TestStopChat: method test_stop_chat_success (line 234) | async def test_stop_chat_success(self): method test_stop_chat_logs_token_usage (line 244) | async def test_stop_chat_logs_token_usage(self): class TestListConversations (line 254) | class TestListConversations: method test_list_conversations_success (line 257) | async def test_list_conversations_success(self): method test_list_conversations_with_metadata (line 266) | async def test_list_conversations_with_metadata(self): class TestGetConversationHistory (line 278) | class TestGetConversationHistory: method test_get_conversation_history_success (line 281) | async def test_get_conversation_history_success(self): class TestGetConversationHistoryInternal (line 297) | class TestGetConversationHistoryInternal: method test_get_conversation_history_internal_success (line 300) | async def test_get_conversation_history_internal_success(self): method test_get_conversation_history_internal_no_logging (line 313) | async def test_get_conversation_history_internal_no_logging(self): class TestGetAgentInfoList (line 325) | class TestGetAgentInfoList: method test_get_agent_info_list_success (line 328) | async def test_get_agent_info_list_success(self): class TestUpdateConversationTitle (line 344) | class TestUpdateConversationTitle: method test_update_conversation_title_success (line 347) | async def test_update_conversation_title_success(self): method test_update_conversation_title_logs_token_usage (line 361) | async def test_update_conversation_title_logs_token_usage(self): method test_update_conversation_title_idempotency_key (line 374) | async def test_update_conversation_title_idempotency_key(self): FILE: test/backend/services/test_prompt_service.py class TestPromptService (line 43) | class TestPromptService(unittest.TestCase): method setUp (line 45) | def setUp(self): method test_generate_and_save_system_prompt_impl (line 54) | def test_generate_and_save_system_prompt_impl( method test_generate_and_save_system_prompt_impl_create_mode (line 121) | def test_generate_and_save_system_prompt_impl_create_mode( method test_generate_and_save_system_prompt_impl_duplicate_names_regenerated (line 184) | def test_generate_and_save_system_prompt_impl_duplicate_names_regenera... method test_generate_and_save_system_prompt_impl_duplicate_names_fallback_suffix (line 248) | def test_generate_and_save_system_prompt_impl_duplicate_names_fallback... method test_generate_and_save_system_prompt_impl_name_fields_incomplete (line 309) | def test_generate_and_save_system_prompt_impl_name_fields_incomplete( method test_generate_and_save_system_prompt_impl_display_name_complete_no_duplicate (line 371) | def test_generate_and_save_system_prompt_impl_display_name_complete_no... method test_generate_and_save_system_prompt_impl_display_name_complete_with_duplicate (line 424) | def test_generate_and_save_system_prompt_impl_display_name_complete_wi... method test_generate_and_save_system_prompt_impl_display_name_llm_failure_fallback (line 482) | def test_generate_and_save_system_prompt_impl_display_name_llm_failure... method test_gen_system_prompt_streamable (line 534) | def test_gen_system_prompt_streamable(self, mock_generate_impl): method test_generate_system_prompt (line 579) | def test_generate_system_prompt(self, mock_get_prompt_template, mock_j... method test_generate_system_prompt_with_exception (line 695) | def test_generate_system_prompt_with_exception(self, mock_get_prompt_t... method test_join_info_for_generate_system_prompt (line 747) | def test_join_info_for_generate_system_prompt(self, mock_template): method test_get_enabled_tool_description_for_generate_prompt (line 786) | def test_get_enabled_tool_description_for_generate_prompt( method test_get_enabled_sub_agent_description_for_generate_prompt (line 810) | def test_get_enabled_sub_agent_description_for_generate_prompt( method test_gen_system_prompt_streamable_with_app_exception (line 839) | def test_gen_system_prompt_streamable_with_app_exception(self, mock_ge... method test_gen_system_prompt_streamable_with_generic_exception (line 871) | def test_gen_system_prompt_streamable_with_generic_exception(self, moc... method test_generate_and_save_system_prompt_impl_sub_agent_exception (line 900) | def test_generate_and_save_system_prompt_impl_sub_agent_exception( method test_generate_and_save_system_prompt_impl_empty_content_raises_exception (line 946) | def test_generate_and_save_system_prompt_impl_empty_content_raises_exc... method test_generate_system_prompt_error_before_streaming (line 992) | def test_generate_system_prompt_error_before_streaming( method test_generate_system_prompt_error_during_streaming (line 1041) | def test_generate_system_prompt_error_during_streaming( method test_get_enabled_tool_description_for_generate_prompt_empty_tool_ids (line 1099) | def test_get_enabled_tool_description_for_generate_prompt_empty_tool_ids( method test_get_enabled_sub_agent_description_for_generate_prompt_empty (line 1120) | def test_get_enabled_sub_agent_description_for_generate_prompt_empty( method test_join_info_for_generate_system_prompt_english (line 1140) | def test_join_info_for_generate_system_prompt_english(self, mock_templ... method test_join_info_for_generate_system_prompt_empty_tools_and_agents (line 1170) | def test_join_info_for_generate_system_prompt_empty_tools_and_agents(s... FILE: test/backend/services/test_redis_service.py class TestRedisService (line 9) | class TestRedisService(unittest.TestCase): method setUp (line 11) | def setUp(self): method tearDown (line 26) | def tearDown(self): method test_client_property (line 31) | def test_client_property(self, mock_from_url): method test_client_property_no_env_var (line 54) | def test_client_property_no_env_var(self, mock_from_url): method test_backend_client_property (line 69) | def test_backend_client_property(self, mock_from_url): method test_backend_client_fallback (line 92) | def test_backend_client_fallback(self, mock_from_url): method test_backend_client_no_env_vars (line 116) | def test_backend_client_no_env_vars(self, mock_from_url): method test_mark_and_check_task_cancelled (line 131) | def test_mark_and_check_task_cancelled(self, mock_from_url): method test_delete_knowledgebase_records (line 145) | def test_delete_knowledgebase_records(self): method test_delete_knowledgebase_records_with_error (line 168) | def test_delete_knowledgebase_records_with_error(self): method test_delete_document_records (line 188) | def test_delete_document_records(self): method test_delete_document_records_with_error (line 212) | def test_delete_document_records_with_error(self): method test_cleanup_single_task_related_keys_outer_exception (line 233) | def test_cleanup_single_task_related_keys_outer_exception(self): method test_cleanup_celery_tasks (line 248) | def test_cleanup_celery_tasks(self): method test_cleanup_celery_tasks_get_exception_and_cancel_failure (line 303) | def test_cleanup_celery_tasks_get_exception_and_cancel_failure(self): method test_cleanup_celery_tasks_exc_message_bad_json (line 333) | def test_cleanup_celery_tasks_exc_message_bad_json(self): method test_cleanup_celery_tasks_cleanup_single_task_error (line 357) | def test_cleanup_celery_tasks_cleanup_single_task_error(self): method test_cleanup_cache_keys (line 377) | def test_cleanup_cache_keys(self): method test_cleanup_document_celery_tasks (line 416) | def test_cleanup_document_celery_tasks(self): method test_cleanup_document_cache_keys (line 479) | def test_cleanup_document_cache_keys(self, mock_quote, mock_md5): method test_get_knowledgebase_task_count (line 517) | def test_get_knowledgebase_task_count(self): method test_ping_success (line 563) | def test_ping_success(self): method test_ping_failure (line 580) | def test_ping_failure(self): method test_get_redis_service (line 600) | def test_get_redis_service(self, mock_redis_service_class): method test_recursively_delete_task_and_parents_no_parent (line 616) | def test_recursively_delete_task_and_parents_no_parent(self): method test_recursively_delete_task_and_parents_with_cycle_detection (line 641) | def test_recursively_delete_task_and_parents_with_cycle_detection(self): method test_recursively_delete_task_and_parents_json_decode_error (line 662) | def test_recursively_delete_task_and_parents_json_decode_error(self): method test_recursively_delete_task_and_parents_redis_error (line 683) | def test_recursively_delete_task_and_parents_redis_error(self): method test_cleanup_celery_tasks_with_failed_task_metadata (line 700) | def test_cleanup_celery_tasks_with_failed_task_metadata(self): method test_cleanup_celery_tasks_invalid_exception_metadata (line 726) | def test_cleanup_celery_tasks_invalid_exception_metadata(self): method test_cleanup_cache_keys_partial_failure (line 749) | def test_cleanup_cache_keys_partial_failure(self): method test_cleanup_cache_keys_all_patterns_fail (line 774) | def test_cleanup_cache_keys_all_patterns_fail(self): method test_cleanup_document_celery_tasks_cancel_fail_and_processing_error (line 792) | def test_cleanup_document_celery_tasks_cancel_fail_and_processing_erro... method test_cleanup_document_cache_keys_empty_patterns (line 824) | def test_cleanup_document_cache_keys_empty_patterns(self): method test_get_knowledgebase_task_count_with_backend_errors (line 840) | def test_get_knowledgebase_task_count_with_backend_errors(self): method test_get_knowledgebase_task_count_complete_failure (line 864) | def test_get_knowledgebase_task_count_complete_failure(self): method test_ping_backend_client_failure (line 880) | def test_ping_backend_client_failure(self): method test_init_method (line 897) | def test_init_method(self): method test_cleanup_celery_tasks_non_dict_result (line 906) | def test_cleanup_celery_tasks_non_dict_result(self): method test_cleanup_cache_keys_all_failures (line 927) | def test_cleanup_cache_keys_all_failures(self): method test_ping_backend_failure (line 936) | def test_ping_backend_failure(self): method test_mark_task_cancelled_empty_task_id (line 953) | def test_mark_task_cancelled_empty_task_id(self): method test_mark_task_cancelled_redis_error (line 961) | def test_mark_task_cancelled_redis_error(self): method test_mark_task_cancelled_custom_ttl (line 970) | def test_mark_task_cancelled_custom_ttl(self): method test_is_task_cancelled_empty_task_id (line 985) | def test_is_task_cancelled_empty_task_id(self): method test_is_task_cancelled_none_value (line 993) | def test_is_task_cancelled_none_value(self): method test_is_task_cancelled_empty_string_value (line 1001) | def test_is_task_cancelled_empty_string_value(self): method test_is_task_cancelled_redis_error (line 1009) | def test_is_task_cancelled_redis_error(self): method test_cleanup_single_task_related_keys_success (line 1021) | def test_cleanup_single_task_related_keys_success(self): method test_cleanup_single_task_related_keys_empty_task_id (line 1038) | def test_cleanup_single_task_related_keys_empty_task_id(self): method test_cleanup_single_task_related_keys_partial_failure (line 1043) | def test_cleanup_single_task_related_keys_partial_failure(self): method test_cleanup_single_task_related_keys_all_fail (line 1057) | def test_cleanup_single_task_related_keys_all_fail(self): method test_cleanup_single_task_related_keys_no_keys_exist (line 1070) | def test_cleanup_single_task_related_keys_no_keys_exist(self): method test_save_error_info_success (line 1088) | def test_save_error_info_success(self): method test_save_error_info_empty_task_id (line 1105) | def test_save_error_info_empty_task_id(self): method test_save_error_info_empty_error_reason (line 1113) | def test_save_error_info_empty_error_reason(self): method test_save_error_info_custom_ttl (line 1121) | def test_save_error_info_custom_ttl(self): method test_save_error_info_setex_returns_false (line 1134) | def test_save_error_info_setex_returns_false(self): method test_save_error_info_verification_fails (line 1142) | def test_save_error_info_verification_fails(self): method test_save_error_info_redis_error (line 1152) | def test_save_error_info_redis_error(self): method test_save_error_info_verification_redis_error (line 1160) | def test_save_error_info_verification_redis_error(self): method test_save_progress_info_success (line 1174) | def test_save_progress_info_success(self): method test_save_progress_info_empty_task_id (line 1190) | def test_save_progress_info_empty_task_id(self): method test_save_progress_info_custom_ttl (line 1198) | def test_save_progress_info_custom_ttl(self): method test_save_progress_info_zero_progress (line 1209) | def test_save_progress_info_zero_progress(self): method test_save_progress_info_redis_error (line 1221) | def test_save_progress_info_redis_error(self): method test_get_progress_info_success (line 1233) | def test_get_progress_info_success(self): method test_get_progress_info_not_found (line 1245) | def test_get_progress_info_not_found(self): method test_get_progress_info_bytes_response (line 1253) | def test_get_progress_info_bytes_response(self): method test_get_progress_info_invalid_json (line 1265) | def test_get_progress_info_invalid_json(self): method test_get_progress_info_redis_error (line 1273) | def test_get_progress_info_redis_error(self): method test_get_error_info_success (line 1285) | def test_get_error_info_success(self): method test_get_error_info_not_found (line 1295) | def test_get_error_info_not_found(self): method test_get_error_info_empty_string (line 1303) | def test_get_error_info_empty_string(self): method test_get_error_info_redis_error (line 1311) | def test_get_error_info_redis_error(self): method test_cleanup_celery_tasks_mark_cancelled_failure (line 1323) | def test_cleanup_celery_tasks_mark_cancelled_failure(self): method test_cleanup_celery_tasks_no_matching_tasks (line 1348) | def test_cleanup_celery_tasks_no_matching_tasks(self): method test_cleanup_document_celery_tasks_no_matching_document (line 1369) | def test_cleanup_document_celery_tasks_no_matching_document(self): method test_cleanup_document_celery_tasks_mark_cancelled_failure (line 1388) | def test_cleanup_document_celery_tasks_mark_cancelled_failure(self): FILE: test/backend/services/test_remote_mcp_service.py class TestMcpServerHealth (line 48) | class TestMcpServerHealth(unittest.IsolatedAsyncioTestCase): method test_health_success (line 52) | async def test_health_success(self, mock_client_cls): method test_health_fail_connection (line 63) | async def test_health_fail_connection(self, mock_client_cls): method test_health_exception (line 74) | async def test_health_exception(self, mock_client_cls): method test_health_with_https_url (line 83) | async def test_health_with_https_url(self, mock_client_cls): method test_health_with_port (line 94) | async def test_health_with_port(self, mock_client_cls): method test_health_with_authorization_token (line 105) | async def test_health_with_authorization_token(self, mock_client_cls): method test_health_without_authorization_token (line 125) | async def test_health_without_authorization_token(self, mock_client_cls): method test_health_with_sse_url (line 145) | async def test_health_with_sse_url(self, mock_client_cls): method test_health_with_mcp_url (line 166) | async def test_health_with_mcp_url(self, mock_client_cls): method test_health_with_unknown_url_format (line 187) | async def test_health_with_unknown_url_format(self, mock_client_cls): method test_health_with_url_whitespace (line 208) | async def test_health_with_url_whitespace(self, mock_client_cls): class TestAddRemoteMcpServerList (line 229) | class TestAddRemoteMcpServerList(unittest.IsolatedAsyncioTestCase): method test_add_success (line 235) | async def test_add_success(self, mock_check_name, mock_health, mock_cr... method test_add_success_with_authorization_token (line 252) | async def test_add_success_with_authorization_token(self, mock_check_n... method test_add_name_exists (line 278) | async def test_add_name_exists(self, mock_check_name): method test_add_health_fail (line 288) | async def test_add_health_fail(self, mock_check_name, mock_health): method test_add_health_fail_with_exception (line 298) | async def test_add_health_fail_with_exception(self, mock_check_name, m... method test_add_db_fail (line 309) | async def test_add_db_fail(self, mock_check_name, mock_health, mock_cr... method test_add_with_special_characters (line 323) | async def test_add_with_special_characters(self, mock_check_name, mock... class TestDeleteRemoteMcpServerList (line 332) | class TestDeleteRemoteMcpServerList(unittest.IsolatedAsyncioTestCase): method test_delete_success (line 336) | async def test_delete_success(self, mock_delete): method test_delete_fail (line 350) | async def test_delete_fail(self, mock_delete): method test_delete_nonexistent_server (line 360) | async def test_delete_nonexistent_server(self, mock_delete): method test_delete_with_special_characters (line 370) | async def test_delete_with_special_characters(self, mock_delete): class TestGetRemoteMcpServerList (line 377) | class TestGetRemoteMcpServerList(unittest.IsolatedAsyncioTestCase): method test_get_list (line 381) | async def test_get_list(self, mock_get): method test_get_empty (line 400) | async def test_get_empty(self, mock_get): method test_get_single_record (line 408) | async def test_get_single_record(self, mock_get): method test_get_large_list (line 423) | async def test_get_large_list(self, mock_get): method test_get_with_special_characters (line 440) | async def test_get_with_special_characters(self, mock_get): method test_get_list_permission_by_creator (line 456) | async def test_get_list_permission_by_creator(self, mock_get, mock_get... method test_get_list_permission_admin_can_edit_all (line 472) | async def test_get_list_permission_admin_can_edit_all(self, mock_get, ... method test_get_list_with_is_need_auth_true (line 487) | async def test_get_list_with_is_need_auth_true(self, mock_get): method test_get_list_with_is_need_auth_false (line 515) | async def test_get_list_with_is_need_auth_false(self, mock_get): method test_get_list_default_is_need_auth_true (line 546) | async def test_get_list_default_is_need_auth_true(self, mock_get): method test_get_list_with_user_id_and_is_need_auth_false (line 566) | async def test_get_list_with_user_id_and_is_need_auth_false(self, mock... class TestCheckMcpHealthAndUpdateDb (line 588) | class TestCheckMcpHealthAndUpdateDb(unittest.IsolatedAsyncioTestCase): method test_check_health_success (line 594) | async def test_check_health_success(self, mock_get_token, mock_health,... method test_check_health_with_none_token (line 622) | async def test_check_health_with_none_token(self, mock_get_token, mock... method test_check_health_false (line 637) | async def test_check_health_false(self, mock_get_token, mock_health, m... method test_update_db_fail (line 657) | async def test_update_db_fail(self, mock_get_token, mock_health, mock_... method test_health_check_exception (line 671) | async def test_health_check_exception(self, mock_get_token, mock_healt... class TestDeleteMcpByContainerId (line 694) | class TestDeleteMcpByContainerId(unittest.IsolatedAsyncioTestCase): method test_delete_by_container_id_success (line 698) | async def test_delete_by_container_id_success(self, mock_delete): method test_delete_by_container_id_db_error (line 713) | async def test_delete_by_container_id_db_error(self, mock_delete): class TestIntegrationScenarios (line 727) | class TestIntegrationScenarios(unittest.IsolatedAsyncioTestCase): method test_full_lifecycle (line 735) | async def test_full_lifecycle(self, mock_check_name, mock_health, mock... method test_duplicate_name_scenario (line 755) | async def test_duplicate_name_scenario(self, mock_check_name): class TestUploadAndStartMcpImage (line 766) | class TestUploadAndStartMcpImage(unittest.IsolatedAsyncioTestCase): method test_upload_success (line 773) | async def test_upload_success(self, mock_temp_file, mock_check_name, m... method test_upload_success_with_authorization_token_in_env_vars (line 830) | async def test_upload_success_with_authorization_token_in_env_vars(sel... method test_upload_success_without_authorization_token_in_env_vars (line 874) | async def test_upload_success_without_authorization_token_in_env_vars(... method test_upload_invalid_file_type (line 915) | async def test_upload_invalid_file_type(self, mock_check_name): method test_upload_file_too_large (line 930) | async def test_upload_file_too_large(self): method test_upload_invalid_env_vars_json (line 946) | async def test_upload_invalid_env_vars_json(self, mock_check_name): method test_upload_env_vars_not_dict (line 964) | async def test_upload_env_vars_not_dict(self, mock_check_name): method test_upload_auto_service_name (line 982) | async def test_upload_auto_service_name(self, mock_check_name): method test_upload_name_conflict (line 1021) | async def test_upload_name_conflict(self, mock_check_name): method test_upload_container_error (line 1042) | async def test_upload_container_error(self, mock_temp_file, mock_check... method test_upload_docker_unavailable (line 1074) | async def test_upload_docker_unavailable(self, mock_container_manager_... method test_upload_temp_file_cleanup_warning (line 1099) | async def test_upload_temp_file_cleanup_warning(self, mock_logger, moc... class MockMCPUpdateRequest (line 1140) | class MockMCPUpdateRequest: method __init__ (line 1143) | def __init__(self, current_service_name, current_mcp_url, new_service_... class TestUpdateRemoteMcpServerList (line 1151) | class TestUpdateRemoteMcpServerList(unittest.IsolatedAsyncioTestCase): method test_update_success (line 1157) | async def test_update_success(self, mock_check_name, mock_health, mock... method test_update_success_with_new_authorization_token (line 1191) | async def test_update_success_with_new_authorization_token(self, mock_... method test_update_success_same_name (line 1216) | async def test_update_success_same_name(self, mock_check_name, mock_he... method test_update_current_name_not_exist (line 1248) | async def test_update_current_name_not_exist(self, mock_check_name): method test_update_new_name_exists (line 1269) | async def test_update_new_name_exists(self, mock_check_name, mock_heal... method test_update_health_check_fail (line 1288) | async def test_update_health_check_fail(self, mock_check_name, mock_he... method test_update_health_check_exception (line 1313) | async def test_update_health_check_exception(self, mock_check_name, mo... method test_update_db_error (line 1339) | async def test_update_db_error(self, mock_check_name, mock_health, moc... class TestAttachMcpContainerPermissions (line 1360) | class TestAttachMcpContainerPermissions(unittest.TestCase): method test_empty_containers (line 1364) | def test_empty_containers(self, mock_get_records): method test_no_user_id_all_read (line 1375) | def test_no_user_id_all_read(self, mock_get_records): method test_admin_user_all_edit (line 1397) | def test_admin_user_all_edit(self, mock_get_records, mock_get_user_ten... method test_su_user_all_edit (line 1418) | def test_su_user_all_edit(self, mock_get_records, mock_get_user_tenant): method test_speed_user_all_edit (line 1434) | def test_speed_user_all_edit(self, mock_get_records, mock_get_user_ten... method test_regular_user_own_container_edit (line 1450) | def test_regular_user_own_container_edit(self, mock_get_records, mock_... method test_regular_user_other_container_read (line 1468) | def test_regular_user_other_container_read(self, mock_get_records, moc... method test_regular_user_no_record_read (line 1486) | def test_regular_user_no_record_read(self, mock_get_records, mock_get_... method test_record_uses_user_id_fallback (line 1502) | def test_record_uses_user_id_fallback(self, mock_get_records, mock_get... method test_record_no_created_by_no_user_id (line 1520) | def test_record_no_created_by_no_user_id(self, mock_get_records, mock_... method test_record_without_container_id_skipped (line 1538) | def test_record_without_container_id_skipped(self, mock_get_records, m... method test_get_records_returns_none (line 1561) | def test_get_records_returns_none(self, mock_get_records, mock_get_use... method test_get_records_exception_handled (line 1578) | def test_get_records_exception_handled(self, mock_get_records, mock_ge... method test_user_tenant_record_none (line 1599) | def test_user_tenant_record_none(self, mock_get_records, mock_get_user... method test_user_tenant_record_empty_dict (line 1616) | def test_user_tenant_record_empty_dict(self, mock_get_records, mock_ge... method test_user_role_case_insensitive (line 1632) | def test_user_role_case_insensitive(self, mock_get_records, mock_get_u... method test_user_role_none_or_empty (line 1649) | def test_user_role_none_or_empty(self, mock_get_records, mock_get_user... method test_container_id_none_converted_to_string (line 1668) | def test_container_id_none_converted_to_string(self, mock_get_records,... method test_mixed_scenario_multiple_containers (line 1685) | def test_mixed_scenario_multiple_containers(self, mock_get_records, mo... method test_container_id_string_matching (line 1714) | def test_container_id_string_matching(self, mock_get_records, mock_get... method test_created_by_string_matching (line 1735) | def test_created_by_string_matching(self, mock_get_records, mock_get_u... method test_container_preserves_original_fields (line 1754) | def test_container_preserves_original_fields(self, mock_get_records, m... class TestGetMcpRecordById (line 1780) | class TestGetMcpRecordById(unittest.IsolatedAsyncioTestCase): method test_get_mcp_record_success (line 1784) | async def test_get_mcp_record_success(self, mock_get_record): method test_get_mcp_record_not_found (line 1804) | async def test_get_mcp_record_not_found(self, mock_get_record): method test_get_mcp_record_with_none_authorization_token (line 1814) | async def test_get_mcp_record_with_none_authorization_token(self, mock... method test_get_mcp_record_with_missing_fields (line 1832) | async def test_get_mcp_record_with_missing_fields(self, mock_get_record): method test_get_mcp_record_with_empty_dict (line 1850) | async def test_get_mcp_record_with_empty_dict(self, mock_get_record): method test_get_mcp_record_different_tenant (line 1860) | async def test_get_mcp_record_different_tenant(self, mock_get_record): method test_get_mcp_record_returns_only_required_fields (line 1876) | async def test_get_mcp_record_returns_only_required_fields(self, mock_... FILE: test/backend/services/test_tenant_service.py function service_mocks (line 37) | def service_mocks(): class TestGetTenantInfo (line 54) | class TestGetTenantInfo: method test_get_tenant_info_success (line 57) | def test_get_tenant_info_success(self, service_mocks): method test_get_tenant_info_name_not_found (line 84) | def test_get_tenant_info_name_not_found(self, service_mocks): method test_get_tenant_info_with_empty_group_id (line 109) | def test_get_tenant_info_with_empty_group_id(self, service_mocks): method test_get_tenant_info_get_single_config_exception (line 129) | def test_get_tenant_info_get_single_config_exception(self, service_moc... method test_get_tenant_info_both_configs_none (line 142) | def test_get_tenant_info_both_configs_none(self, service_mocks): class TestGetTenantsPaginated (line 172) | class TestGetTenantsPaginated: method test_get_tenants_paginated_success (line 175) | def test_get_tenants_paginated_success(self, service_mocks): method test_get_tenants_paginated_with_missing_configs (line 200) | def test_get_tenants_paginated_with_missing_configs(self, service_mocks): method test_get_tenants_paginated_empty_list (line 241) | def test_get_tenants_paginated_empty_list(self, service_mocks): method test_get_tenants_paginated_get_all_tenant_ids_exception (line 255) | def test_get_tenants_paginated_get_all_tenant_ids_exception(self, serv... method test_get_tenants_paginated_custom_page_size (line 264) | def test_get_tenants_paginated_custom_page_size(self, service_mocks): method test_get_tenants_paginated_last_page (line 290) | def test_get_tenants_paginated_last_page(self, service_mocks): class TestCreateTenant (line 316) | class TestCreateTenant: method test_create_tenant_success (line 319) | def test_create_tenant_success(self, service_mocks): method test_create_tenant_name_already_exists (line 344) | def test_create_tenant_name_already_exists(self, service_mocks): method test_create_tenant_empty_name (line 357) | def test_create_tenant_empty_name(self, service_mocks): method test_create_tenant_config_insertion_failure (line 370) | def test_create_tenant_config_insertion_failure(self, service_mocks): method test_create_tenant_whitespace_name (line 386) | def test_create_tenant_whitespace_name(self, service_mocks): method test_create_tenant_tenant_id_config_failure (line 399) | def test_create_tenant_tenant_id_config_failure(self, service_mocks): method test_create_tenant_group_config_failure (line 416) | def test_create_tenant_group_config_failure(self, service_mocks): method test_create_tenant_default_group_creation_failure (line 433) | def test_create_tenant_default_group_creation_failure(self, service_mo... method test_create_tenant_unexpected_exception_in_try_block (line 447) | def test_create_tenant_unexpected_exception_in_try_block(self, service... method test_create_tenant_uuid_collision (line 461) | def test_create_tenant_uuid_collision(self, service_mocks): class TestUpdateTenantInfo (line 469) | class TestUpdateTenantInfo: method test_update_tenant_info_success (line 472) | def test_update_tenant_info_success(self, service_mocks): method test_update_tenant_info_tenant_not_found (line 501) | def test_update_tenant_info_tenant_not_found(self, service_mocks): method test_update_tenant_info_empty_name (line 534) | def test_update_tenant_info_empty_name(self, service_mocks): method test_update_tenant_info_update_failure (line 551) | def test_update_tenant_info_update_failure(self, service_mocks): method test_update_tenant_info_whitespace_name (line 569) | def test_update_tenant_info_whitespace_name(self, service_mocks): method test_update_tenant_info_name_already_exists (line 586) | def test_update_tenant_info_name_already_exists(self, service_mocks): class TestDeleteTenant (line 603) | class TestDeleteTenant: method test_delete_tenant_success (line 607) | async def test_delete_tenant_success(self): method test_delete_tenant_not_found (line 668) | async def test_delete_tenant_not_found(self): method test_delete_tenant_validation_error (line 683) | async def test_delete_tenant_validation_error(self): method test_delete_tenant_with_groups (line 700) | async def test_delete_tenant_with_groups(self): method test_delete_tenant_with_group_deletion_error (line 746) | async def test_delete_tenant_with_group_deletion_error(self): method test_delete_tenant_with_models (line 795) | async def test_delete_tenant_with_models(self): method test_delete_tenant_with_model_deletion_error (line 837) | async def test_delete_tenant_with_model_deletion_error(self): method test_delete_tenant_with_agents (line 878) | async def test_delete_tenant_with_agents(self): method test_delete_tenant_with_mcp_records (line 924) | async def test_delete_tenant_with_mcp_records(self): method test_delete_tenant_with_invitations (line 966) | async def test_delete_tenant_with_invitations(self): class TestCreateDefaultGroupForTenant (line 1008) | class TestCreateDefaultGroupForTenant: method test_create_default_group_for_tenant_success (line 1011) | def test_create_default_group_for_tenant_success(self, service_mocks): method test_create_default_group_for_tenant_failure (line 1034) | def test_create_default_group_for_tenant_failure(self, service_mocks): method test_create_default_group_for_tenant_with_none_user (line 1046) | def test_create_default_group_for_tenant_with_none_user(self, service_... method test_create_default_group_for_tenant_validation_error_from_add_group (line 1069) | def test_create_default_group_for_tenant_validation_error_from_add_gro... class TestCheckTenantNameExists (line 1083) | class TestCheckTenantNameExists: method test_check_tenant_name_exists_returns_false_when_no_match (line 1086) | def test_check_tenant_name_exists_returns_false_when_no_match(self): method test_check_tenant_name_exists_returns_true_when_match_found (line 1108) | def test_check_tenant_name_exists_returns_true_when_match_found(self): method test_check_tenant_name_exists_excludes_specified_tenant (line 1130) | def test_check_tenant_name_exists_excludes_specified_tenant(self): method test_check_tenant_name_exists_empty_tenant_list (line 1153) | def test_check_tenant_name_exists_empty_tenant_list(self): method test_check_tenant_name_exists_case_sensitive (line 1167) | def test_check_tenant_name_exists_case_sensitive(self): method test_check_tenant_name_exists_with_empty_name_config (line 1184) | def test_check_tenant_name_exists_with_empty_name_config(self): FILE: test/backend/services/test_tool_configuration_service.py class MockAgentError (line 32) | class MockAgentError(Exception): class MockOpenAIServerModel (line 59) | class MockOpenAIServerModel: method __init__ (line 60) | def __init__(self, *args, **kwargs): class MockAgentExecutionError (line 78) | class MockAgentExecutionError(Exception): class MockAgentGenerationError (line 82) | class MockAgentGenerationError(Exception): class MockAgentMaxStepsError (line 86) | class MockAgentMaxStepsError(Exception): function _is_package_available (line 100) | def _is_package_available(pkg_name: str) -> bool: function _create_package_mock (line 110) | def _create_package_mock(name): class MockMessageObserver (line 125) | class MockMessageObserver: class MockBaseEmbedding (line 137) | class MockBaseEmbedding: class MockOpenAICompatibleEmbedding (line 141) | class MockOpenAICompatibleEmbedding(MockBaseEmbedding): class MockJinaEmbedding (line 145) | class MockJinaEmbedding(MockBaseEmbedding): class MockOpenAILongContextModel (line 157) | class MockOpenAILongContextModel: method __init__ (line 158) | def __init__(self, *args, **kwargs): class MockOpenAIVLModel (line 168) | class MockOpenAIVLModel: method __init__ (line 169) | def __init__(self, *args, **kwargs): class MockVectorDatabaseCore (line 184) | class MockVectorDatabaseCore: class MockElasticSearchCore (line 188) | class MockElasticSearchCore(MockVectorDatabaseCore): method __init__ (line 189) | def __init__(self, *args, **kwargs): class MockDataMateCore (line 198) | class MockDataMateCore(MockVectorDatabaseCore): method __init__ (line 199) | def __init__(self, *args, **kwargs): class MockMinIOStorageConfig (line 236) | class MockMinIOStorageConfig: method __init__ (line 237) | def __init__(self, *args, **kwargs): method validate (line 240) | def validate(self): class TestPythonTypeToJsonSchema (line 314) | class TestPythonTypeToJsonSchema: method test_python_type_to_json_schema_basic_types (line 318) | def test_python_type_to_json_schema_basic_types(self, mock_python_type... method test_python_type_to_json_schema_typing_types (line 338) | def test_python_type_to_json_schema_typing_types(self, mock_python_typ... method test_python_type_to_json_schema_empty_annotation (line 356) | def test_python_type_to_json_schema_empty_annotation(self, mock_python... method test_python_type_to_json_schema_unknown_type (line 364) | def test_python_type_to_json_schema_unknown_type(self, mock_python_typ... method test_python_type_to_json_schema_edge_cases (line 377) | def test_python_type_to_json_schema_edge_cases(self, mock_python_type_... class TestGetLocalToolsClasses (line 395) | class TestGetLocalToolsClasses: method test_get_local_tools_classes_success (line 400) | def test_get_local_tools_classes_success(self, mock_get_local_tools_cl... method test_get_local_tools_classes_import_error (line 434) | def test_get_local_tools_classes_import_error(self, mock_get_local_too... class TestGetLocalTools (line 445) | class TestGetLocalTools: method test_get_local_tools_success (line 451) | def test_get_local_tools_success(self, mock_get_local_tools, mock_sign... method test_get_local_tools_no_classes (line 500) | def test_get_local_tools_no_classes(self, mock_get_local_tools, mock_g... method test_get_local_tools_with_exception (line 511) | def test_get_local_tools_with_exception(self, mock_get_local_tools, mo... class TestSearchToolInfoImpl (line 527) | class TestSearchToolInfoImpl: method test_search_tool_info_impl_success (line 532) | def test_search_tool_info_impl_success(self, mock_search_tool_info_imp... method test_search_tool_info_impl_not_found (line 552) | def test_search_tool_info_impl_not_found(self, mock_search_tool_info_i... method test_search_tool_info_impl_database_error (line 568) | def test_search_tool_info_impl_database_error(self, mock_search_tool_i... method test_search_tool_info_impl_invalid_ids (line 579) | def test_search_tool_info_impl_invalid_ids(self, mock_search_tool_info... method test_search_tool_info_impl_zero_ids (line 593) | def test_search_tool_info_impl_zero_ids(self, mock_search_tool_info_im... class TestUpdateToolInfoImpl (line 606) | class TestUpdateToolInfoImpl: method test_update_tool_info_impl_success (line 611) | def test_update_tool_info_impl_success(self, mock_update_tool_info_imp... method test_update_tool_info_impl_database_error (line 630) | def test_update_tool_info_impl_database_error(self, mock_update_tool_i... method test_update_tool_info_impl_with_version_no_zero (line 641) | def test_update_tool_info_impl_with_version_no_zero(self, mock_create_... method test_update_tool_info_impl_without_version_no (line 658) | def test_update_tool_info_impl_without_version_no(self, mock_create_up... method test_update_tool_info_impl_with_version_no_non_zero (line 680) | def test_update_tool_info_impl_with_version_no_non_zero(self, mock_cre... class TestListAllTools (line 697) | class TestListAllTools: method test_list_all_tools_success (line 702) | async def test_list_all_tools_success(self, mock_list_all_tools, mock_... method test_list_all_tools_empty_result (line 741) | async def test_list_all_tools_empty_result(self, mock_list_all_tools, ... method test_list_all_tools_missing_fields (line 754) | async def test_list_all_tools_missing_fields(self, mock_list_all_tools... function sample_tool_info (line 779) | def sample_tool_info(): function sample_tool_request (line 798) | def sample_tool_request(): class TestGetAllMcpTools (line 808) | class TestGetAllMcpTools: method test_get_all_mcp_tools_success (line 815) | async def test_get_all_mcp_tools_success(self, mock_urljoin, mock_get_... method test_get_all_mcp_tools_connection_error (line 864) | async def test_get_all_mcp_tools_connection_error(self, mock_urljoin, ... method test_get_all_mcp_tools_no_connected_servers (line 888) | async def test_get_all_mcp_tools_no_connected_servers(self, mock_urljo... class TestCreateMcpTransport (line 911) | class TestCreateMcpTransport: method test_create_mcp_transport_sse_with_token (line 915) | def test_create_mcp_transport_sse_with_token(self, mock_sse_transport): method test_create_mcp_transport_sse_without_token (line 931) | def test_create_mcp_transport_sse_without_token(self, mock_sse_transpo... method test_create_mcp_transport_mcp_with_token (line 947) | def test_create_mcp_transport_mcp_with_token(self, mock_http_transport): method test_create_mcp_transport_mcp_without_token (line 963) | def test_create_mcp_transport_mcp_without_token(self, mock_http_transp... method test_create_mcp_transport_default_with_token (line 979) | def test_create_mcp_transport_default_with_token(self, mock_http_trans... method test_create_mcp_transport_default_without_token (line 995) | def test_create_mcp_transport_default_without_token(self, mock_http_tr... method test_create_mcp_transport_sse_with_whitespace (line 1011) | def test_create_mcp_transport_sse_with_whitespace(self, mock_sse_trans... class TestGetToolFromRemoteMcpServer (line 1028) | class TestGetToolFromRemoteMcpServer: method test_get_tool_from_remote_mcp_server_success (line 1035) | async def test_get_tool_from_remote_mcp_server_success(self, mock_crea... method test_get_tool_from_remote_mcp_server_with_token_from_db (line 1094) | async def test_get_tool_from_remote_mcp_server_with_token_from_db(self... method test_get_tool_from_remote_mcp_server_with_provided_token (line 1146) | async def test_get_tool_from_remote_mcp_server_with_provided_token(sel... method test_get_tool_from_remote_mcp_server_empty_tools (line 1186) | async def test_get_tool_from_remote_mcp_server_empty_tools(self, mock_... method test_get_tool_from_remote_mcp_server_connection_error (line 1205) | async def test_get_tool_from_remote_mcp_server_connection_error(self, ... method test_get_tool_from_remote_mcp_server_missing_properties (line 1225) | async def test_get_tool_from_remote_mcp_server_missing_properties(self... class TestUpdateToolList (line 1257) | class TestUpdateToolList: method test_update_tool_list_success (line 1265) | async def test_update_tool_list_success(self, mock_update_table, mock_... method test_update_tool_list_mcp_error (line 1309) | async def test_update_tool_list_mcp_error(self, mock_update_table, moc... method test_update_tool_list_database_error (line 1324) | async def test_update_tool_list_database_error(self, mock_update_table... method test_update_tool_list_empty_tools (line 1341) | async def test_update_tool_list_empty_tools(self, mock_update_table, m... method test_update_tool_list_success (line 3061) | async def test_update_tool_list_success(self, mock_update_table, mock_... method test_update_tool_list_combines_all_sources (line 3086) | async def test_update_tool_list_combines_all_sources(self, mock_update... class TestIntegrationScenarios (line 1360) | class TestIntegrationScenarios: method test_full_tool_update_workflow (line 1369) | async def test_full_tool_update_workflow(self, mock_get_remote_tools, ... class TestGetLangchainTools (line 1411) | class TestGetLangchainTools: method test_get_langchain_tools_success (line 1416) | def test_get_langchain_tools_success(self, mock_build_tool_info, mock_... method test_get_langchain_tools_empty_result (line 1474) | def test_get_langchain_tools_empty_result(self, mock_discover_modules): method test_get_langchain_tools_exception_handling (line 1489) | def test_get_langchain_tools_exception_handling(self, mock_build_tool_... method test_get_langchain_tools_with_different_tool_types (line 1537) | def test_get_langchain_tools_with_different_tool_types(self, mock_buil... class TestLoadLastToolConfigImpl (line 1596) | class TestLoadLastToolConfigImpl: method test_load_last_tool_config_impl_success (line 1601) | def test_load_last_tool_config_impl_success(self, mock_load_last_tool_... method test_load_last_tool_config_impl_not_found (line 1622) | def test_load_last_tool_config_impl_not_found(self, mock_load_last_too... method test_load_last_tool_config_impl_empty_params (line 1637) | def test_load_last_tool_config_impl_empty_params(self, mock_load_last_... method test_call_mcp_tool_success (line 1657) | async def test_call_mcp_tool_success(self, mock_create_transport, mock... method test_call_mcp_tool_with_authorization_token (line 1690) | async def test_call_mcp_tool_with_authorization_token(self, mock_creat... method test_call_mcp_tool_connection_failed (line 1725) | async def test_call_mcp_tool_connection_failed(self, mock_create_trans... method test_validate_mcp_tool_nexent_success (line 1751) | async def test_validate_mcp_tool_nexent_success(self, mock_call_tool, ... method test_validate_mcp_tool_remote_success (line 1768) | async def test_validate_mcp_tool_remote_success(self, mock_call_tool, ... method test_validate_mcp_tool_remote_without_tenant_id (line 1791) | async def test_validate_mcp_tool_remote_without_tenant_id(self, mock_c... method test_validate_mcp_tool_remote_server_not_found (line 1807) | async def test_validate_mcp_tool_remote_server_not_found(self, mock_ge... method test_get_tool_class_by_name_success (line 1817) | def test_get_tool_class_by_name_success(self, mock_import): method test_get_tool_class_by_name_not_found (line 1855) | def test_get_tool_class_by_name_not_found(self, mock_import): method test_get_tool_class_by_name_import_error (line 1871) | def test_get_tool_class_by_name_import_error(self, mock_import): method test_validate_local_tool_success (line 1883) | def test_validate_local_tool_success(self, mock_signature, mock_get_cl... method test_validate_local_tool_with_observer (line 1910) | def test_validate_local_tool_with_observer(self, mock_signature, mock_... method test_validate_local_tool_class_not_found (line 1936) | def test_validate_local_tool_class_not_found(self, mock_get_class): method test_validate_local_tool_execution_error (line 1948) | def test_validate_local_tool_execution_error(self, mock_signature, moc... method test_validate_langchain_tool_success (line 1970) | def test_validate_langchain_tool_success(self, mock_discover): method test_validate_langchain_tool_not_found (line 1987) | def test_validate_langchain_tool_not_found(self, mock_discover): method test_validate_langchain_tool_execution_error (line 1997) | def test_validate_langchain_tool_execution_error(self, mock_discover): method test_validate_tool_nexent (line 2013) | async def test_validate_tool_nexent(self, mock_validate_tool_impl, moc... method test_validate_tool_remote (line 2033) | async def test_validate_tool_remote(self, mock_validate_tool_impl, moc... method test_validate_tool_local (line 2053) | async def test_validate_tool_local(self, mock_validate_tool_impl, mock... method test_validate_tool_langchain (line 2074) | async def test_validate_tool_langchain(self, mock_validate_tool_impl, ... method test_validate_tool_unsupported_source (line 2093) | async def test_validate_tool_unsupported_source(self, mock_validate_to... method test_validate_tool_nexent_connection_error (line 2111) | async def test_validate_tool_nexent_connection_error(self, mock_valida... method test_validate_tool_local_execution_error (line 2131) | async def test_validate_tool_local_execution_error(self, mock_validate... method test_validate_tool_remote_server_not_found (line 2151) | async def test_validate_tool_remote_server_not_found(self, mock_valida... method test_validate_tool_local_tool_not_found (line 2171) | async def test_validate_tool_local_tool_not_found(self, mock_validate_... method test_validate_tool_langchain_tool_not_found (line 2192) | async def test_validate_tool_langchain_tool_not_found(self, mock_valid... class TestValidateLocalToolKnowledgeBaseSearch (line 2211) | class TestValidateLocalToolKnowledgeBaseSearch: method test_validate_local_tool_knowledge_base_search_success (line 2218) | def test_validate_local_tool_knowledge_base_search_success(self, mock_... method test_validate_local_tool_knowledge_base_search_missing_tenant_id (line 2276) | def test_validate_local_tool_knowledge_base_search_missing_tenant_id(s... method test_validate_local_tool_knowledge_base_search_missing_user_id (line 2304) | def test_validate_local_tool_knowledge_base_search_missing_user_id(sel... method test_validate_local_tool_knowledge_base_search_missing_both_ids (line 2332) | def test_validate_local_tool_knowledge_base_search_missing_both_ids(se... method test_validate_local_tool_knowledge_base_search_empty_knowledge_list (line 2361) | def test_validate_local_tool_knowledge_base_search_empty_knowledge_lis... method test_validate_local_tool_knowledge_base_search_execution_error (line 2418) | def test_validate_local_tool_knowledge_base_search_execution_error(sel... class TestValidateLocalToolAnalyzeImage (line 2462) | class TestValidateLocalToolAnalyzeImage: method test_validate_local_tool_analyze_image_success (line 2469) | def test_validate_local_tool_analyze_image_success(self, mock_signatur... method test_validate_local_tool_analyze_image_missing_tenant (line 2501) | def test_validate_local_tool_analyze_image_missing_tenant(self, mock_g... method test_validate_local_tool_analyze_image_missing_user (line 2517) | def test_validate_local_tool_analyze_image_missing_user(self, mock_get... class TestValidateLocalToolDatamateSearchTool (line 2533) | class TestValidateLocalToolDatamateSearchTool: method test_validate_local_tool_datamate_search_tool_success (line 2538) | def test_validate_local_tool_datamate_search_tool_success(self, mock_s... method test_validate_local_tool_datamate_search_tool_missing_tenant_id (line 2582) | def test_validate_local_tool_datamate_search_tool_missing_tenant_id(se... method test_validate_local_tool_datamate_search_tool_missing_user_id (line 2603) | def test_validate_local_tool_datamate_search_tool_missing_user_id(self... method test_validate_local_tool_datamate_search_tool_missing_both_ids (line 2624) | def test_validate_local_tool_datamate_search_tool_missing_both_ids(sel... method test_validate_local_tool_datamate_search_tool_empty_knowledge_list (line 2646) | def test_validate_local_tool_datamate_search_tool_empty_knowledge_list... method test_validate_local_tool_datamate_search_tool_no_datamate_sources (line 2686) | def test_validate_local_tool_datamate_search_tool_no_datamate_sources(... method test_validate_local_tool_datamate_search_tool_execution_error (line 2726) | def test_validate_local_tool_datamate_search_tool_execution_error(self... class TestValidateLocalToolAnalyzeTextFile (line 2758) | class TestValidateLocalToolAnalyzeTextFile: method test_validate_local_tool_analyze_text_file_success (line 2766) | def test_validate_local_tool_analyze_text_file_success(self, mock_mini... method test_validate_local_tool_analyze_text_file_missing_tenant_id (line 2818) | def test_validate_local_tool_analyze_text_file_missing_tenant_id(self,... method test_validate_local_tool_analyze_text_file_missing_user_id (line 2836) | def test_validate_local_tool_analyze_text_file_missing_user_id(self, m... method test_validate_local_tool_analyze_text_file_missing_both_ids (line 2854) | def test_validate_local_tool_analyze_text_file_missing_both_ids(self, ... class TestGetLlmModel (line 2872) | class TestGetLlmModel: method test_get_llm_model_success (line 2880) | def test_get_llm_model_success(self, mock_tenant_config, mock_get_mode... method test_get_llm_model_with_missing_config_values (line 2926) | def test_get_llm_model_with_missing_config_values(self, mock_tenant_co... method test_get_llm_model_with_different_tenant_ids (line 2964) | def test_get_llm_model_with_different_tenant_ids(self, mock_tenant_con... class TestInitToolListForTenant (line 3000) | class TestInitToolListForTenant: method test_init_tool_list_for_tenant_success_new_tenant (line 3006) | async def test_init_tool_list_for_tenant_success_new_tenant(self, mock... method test_init_tool_list_for_tenant_already_initialized (line 3023) | async def test_init_tool_list_for_tenant_already_initialized(self, moc... method test_init_tool_list_for_tenant_logging (line 3041) | async def test_init_tool_list_for_tenant_logging(self, mock_logger, mo... class TestUpdateToolList (line 3053) | class TestUpdateToolList: method test_update_tool_list_success (line 1265) | async def test_update_tool_list_success(self, mock_update_table, mock_... method test_update_tool_list_mcp_error (line 1309) | async def test_update_tool_list_mcp_error(self, mock_update_table, moc... method test_update_tool_list_database_error (line 1324) | async def test_update_tool_list_database_error(self, mock_update_table... method test_update_tool_list_empty_tools (line 1341) | async def test_update_tool_list_empty_tools(self, mock_update_table, m... method test_update_tool_list_success (line 3061) | async def test_update_tool_list_success(self, mock_update_table, mock_... method test_update_tool_list_combines_all_sources (line 3086) | async def test_update_tool_list_combines_all_sources(self, mock_update... FILE: test/backend/services/test_user_management_service.py class TestSetAuthTokenToClient (line 59) | class TestSetAuthTokenToClient(unittest.TestCase): method test_set_token_with_bearer_prefix (line 62) | def test_set_token_with_bearer_prefix(self): method test_set_token_without_bearer_prefix (line 71) | def test_set_token_without_bearer_prefix(self): method test_set_token_exception (line 80) | def test_set_token_exception(self): class TestGetAuthorizedClient (line 91) | class TestGetAuthorizedClient(unittest.TestCase): method test_get_client_with_authorization (line 96) | def test_get_client_with_authorization(self, mock_set_token, mock_get_... method test_get_client_without_authorization (line 108) | def test_get_client_without_authorization(self, mock_set_token, mock_g... class TestGetCurrentUserFromClient (line 119) | class TestGetCurrentUserFromClient(unittest.TestCase): method test_get_user_success (line 122) | def test_get_user_success(self): method test_get_user_no_user (line 134) | def test_get_user_no_user(self): method test_get_user_no_response (line 145) | def test_get_user_no_response(self): method test_get_user_exception (line 154) | def test_get_user_exception(self): class TestValidateToken (line 164) | class TestValidateToken(unittest.TestCase): method test_validate_token_success (line 170) | def test_validate_token_success(self, mock_get_client, mock_set_token,... method test_validate_token_no_user (line 186) | def test_validate_token_no_user(self, mock_get_client, mock_set_token,... method test_validate_token_exception (line 200) | def test_validate_token_exception(self, mock_get_client, mock_set_toke... class TestExtendSession (line 212) | class TestExtendSession(unittest.IsolatedAsyncioTestCase): method test_extend_session_success (line 217) | def test_extend_session_success(self, mock_calc_expires, mock_get_expi... method test_extend_session_no_session (line 239) | def test_extend_session_no_session(self): method test_extend_session_no_response (line 250) | def test_extend_session_no_response(self): method test_extend_session_exception (line 259) | def test_extend_session_exception(self): class TestCheckAuthServiceHealth (line 269) | class TestCheckAuthServiceHealth(unittest.IsolatedAsyncioTestCase): method test_health_check_success (line 273) | async def test_health_check_success(self): method test_health_check_not_ok_response (line 311) | async def test_health_check_not_ok_response(self): method test_health_check_wrong_service_name (line 348) | async def test_health_check_wrong_service_name(self): method test_health_check_empty_response (line 388) | async def test_health_check_empty_response(self): method test_health_check_missing_name_field (line 428) | async def test_health_check_missing_name_field(self): method test_health_check_connection_error (line 469) | async def test_health_check_connection_error(self, mock_session_cls): method test_health_check_general_exception (line 481) | async def test_health_check_general_exception(self, mock_session_cls): method test_health_check_empty_data_dict (line 494) | async def test_health_check_empty_data_dict(self): class TestSignupUserWithInvitation (line 534) | class TestSignupUserWithInvitation(unittest.IsolatedAsyncioTestCase): method test_signup_user_with_admin_invite_code (line 545) | async def test_signup_user_with_admin_invite_code(self, mock_get_clien... method test_signup_user_with_dev_invite_code (line 600) | async def test_signup_user_with_dev_invite_code(self, mock_get_client,... method test_signup_user_with_invalid_invite_code (line 647) | async def test_signup_user_with_invalid_invite_code(self, mock_get_cli... method test_signup_user_with_invite_code_uppercase_conversion (line 659) | async def test_signup_user_with_invite_code_uppercase_conversion(self,... method test_signup_user_with_invite_code_not_found_after_check (line 696) | async def test_signup_user_with_invite_code_not_found_after_check(self... method test_signup_user_with_admin_invite_role_assignment (line 709) | async def test_signup_user_with_admin_invite_role_assignment(self, moc... method test_signup_user_with_dev_invite_role_assignment (line 747) | async def test_signup_user_with_dev_invite_role_assignment(self, mock_... method test_signup_user_with_invite_code_validation_exception_conversion (line 782) | async def test_signup_user_with_invite_code_validation_exception_conve... method test_signup_user_with_auto_login_false (line 800) | async def test_signup_user_with_auto_login_false(self, mock_get_client... method test_signup_user_with_auto_login_default (line 847) | async def test_signup_user_with_auto_login_default(self, mock_get_clie... class TestParseSupabaseResponse (line 884) | class TestParseSupabaseResponse(unittest.IsolatedAsyncioTestCase): method test_parse_response_with_session (line 889) | async def test_parse_response_with_session(self, mock_calc_expires, mo... method test_parse_response_without_session (line 924) | async def test_parse_response_without_session(self): method test_parse_response_with_session_but_auto_login_false (line 949) | async def test_parse_response_with_session_but_auto_login_false(self, ... method test_parse_response_with_session_and_auto_login_true (line 982) | async def test_parse_response_with_session_and_auto_login_true(self, m... method test_parse_response_default_auto_login_true (line 1018) | async def test_parse_response_default_auto_login_true(self): class TestGenerateTtsStt4Admin (line 1035) | class TestGenerateTtsStt4Admin(unittest.IsolatedAsyncioTestCase): method test_generate_tts_stt_models (line 1039) | async def test_generate_tts_stt_models(self, mock_create_record): class TestVerifyInviteCode (line 1059) | class TestVerifyInviteCode(unittest.IsolatedAsyncioTestCase): method test_verify_invite_code_success (line 1063) | async def test_verify_invite_code_success(self): method test_verify_invite_code_no_system_code (line 1069) | async def test_verify_invite_code_no_system_code(self): method test_verify_invite_code_no_user_code (line 1077) | async def test_verify_invite_code_no_user_code(self): method test_verify_invite_code_wrong_code (line 1085) | async def test_verify_invite_code_wrong_code(self): class TestSigninUser (line 1093) | class TestSigninUser(unittest.IsolatedAsyncioTestCase): method test_signin_user_success (line 1099) | async def test_signin_user_success(self, mock_get_client, mock_calc_ex... method test_signin_user_default_role (line 1143) | async def test_signin_user_default_role(self, mock_get_client, mock_ca... class TestRefreshUserToken (line 1169) | class TestRefreshUserToken(unittest.IsolatedAsyncioTestCase): method test_refresh_token_success (line 1174) | async def test_refresh_token_success(self, mock_get_client, mock_exten... method test_refresh_token_failure (line 1195) | async def test_refresh_token_failure(self, mock_get_client, mock_exten... class TestGetSessionByAuthorization (line 1207) | class TestGetSessionByAuthorization(unittest.IsolatedAsyncioTestCase): method test_get_session_success (line 1211) | async def test_get_session_success(self, mock_validate_token): method test_get_session_default_role (line 1231) | async def test_get_session_default_role(self, mock_validate_token): method test_get_session_invalid_token (line 1244) | async def test_get_session_invalid_token(self, mock_validate_token): class TestGetUserInfo (line 1254) | class TestGetUserInfo(unittest.IsolatedAsyncioTestCase): method test_get_user_info_success (line 1262) | async def test_get_user_info_success(self, mock_query_group_ids, mock_... method test_get_user_info_user_not_found (line 1317) | async def test_get_user_info_user_not_found(self, mock_get_user_tenant): method test_get_user_info_exception_handling (line 1331) | async def test_get_user_info_exception_handling(self, mock_query_group... class TestFormatRolePermissions (line 1343) | class TestFormatRolePermissions(unittest.TestCase): method test_format_role_permissions_resource_only (line 1346) | def test_format_role_permissions_resource_only(self): method test_format_role_permissions_LEFT_NAV_MENU_only (line 1366) | def test_format_role_permissions_LEFT_NAV_MENU_only(self): method test_format_role_permissions_mixed (line 1384) | def test_format_role_permissions_mixed(self): method test_format_role_permissions_empty (line 1408) | def test_format_role_permissions_empty(self): method test_format_role_permissions_missing_fields (line 1417) | def test_format_role_permissions_missing_fields(self): class TestCreateToken (line 1437) | class TestCreateToken(unittest.IsolatedAsyncioTestCase): method test_create_token_success (line 1442) | def test_create_token_success(self, mock_generate_access_key, mock_cre... class TestListTokensByUser (line 1462) | class TestListTokensByUser(unittest.IsolatedAsyncioTestCase): method test_list_tokens_by_user_success (line 1466) | def test_list_tokens_by_user_success(self, mock_list_tokens): method test_list_tokens_by_user_empty (line 1481) | def test_list_tokens_by_user_empty(self, mock_list_tokens): class TestDeleteToken (line 1492) | class TestDeleteToken(unittest.IsolatedAsyncioTestCase): method test_delete_token_success (line 1496) | def test_delete_token_success(self, mock_delete_token): method test_delete_token_not_found (line 1508) | def test_delete_token_not_found(self, mock_delete_token): class TestIntegrationScenarios (line 1519) | class TestIntegrationScenarios(unittest.IsolatedAsyncioTestCase): FILE: test/backend/services/test_user_service.py class MockToolConfig (line 32) | class MockToolConfig(BaseModel): function reset_mocks (line 56) | def reset_mocks(): class TestGetUsers (line 73) | class TestGetUsers: method test_get_users_success_with_pagination (line 81) | def test_get_users_success_with_pagination(self, page, page_size, expe... method test_get_users_success_without_pagination (line 116) | def test_get_users_success_without_pagination(self): method test_get_users_success_with_only_page (line 146) | def test_get_users_success_with_only_page(self): method test_get_users_success_with_only_page_size (line 169) | def test_get_users_success_with_only_page_size(self): method test_get_users_success_with_asc_sort (line 192) | def test_get_users_success_with_asc_sort(self): method test_get_users_empty_result (line 213) | def test_get_users_empty_result(self): method test_get_users_with_null_email (line 228) | def test_get_users_with_null_email(self): method test_get_users_default_parameters (line 246) | def test_get_users_default_parameters(self): method test_get_users_calculates_total_pages_correctly (line 262) | def test_get_users_calculates_total_pages_correctly(self): class TestUpdateUser (line 280) | class TestUpdateUser: method test_update_user_success_valid_roles (line 284) | async def test_update_user_success_valid_roles(self, role): method test_update_user_success_with_null_email (line 313) | async def test_update_user_success_with_null_email(self): method test_update_user_invalid_role (line 336) | async def test_update_user_invalid_role(self): method test_update_user_update_failed (line 352) | async def test_update_user_update_failed(self): method test_update_user_not_found_after_update (line 372) | async def test_update_user_not_found_after_update(self): method test_update_user_empty_update_data (line 393) | async def test_update_user_empty_update_data(self): method test_update_user_unexpected_error (line 419) | async def test_update_user_unexpected_error(self): class TestDataValidation (line 435) | class TestDataValidation: method test_update_user_role_validation_all_valid_roles (line 439) | async def test_update_user_role_validation_all_valid_roles(self): method test_update_user_without_role_key (line 467) | async def test_update_user_without_role_key(self): method test_update_user_invalid_role_various_cases (line 492) | async def test_update_user_invalid_role_various_cases(self, invalid_ro... class TestDeleteUserAndCleanup (line 509) | class TestDeleteUserAndCleanup: method test_delete_user_and_cleanup_success (line 513) | async def test_delete_user_and_cleanup_success(self, mocker): method test_delete_user_and_cleanup_best_effort (line 565) | async def test_delete_user_and_cleanup_best_effort(self, mocker): FILE: test/backend/services/test_vectordatabase_service.py function _create_package_mock (line 22) | def _create_package_mock(name: str) -> MagicMock: class _VectorDatabaseCore (line 52) | class _VectorDatabaseCore: function _accurate_search_impl (line 113) | def _accurate_search_impl(request, vdb_core): function _semantic_search_impl (line 135) | def _semantic_search_impl(request, vdb_core): class TestElasticSearchService (line 152) | class TestElasticSearchService(unittest.TestCase): method setUp (line 153) | def setUp(self): method tearDown (line 180) | def tearDown(self): method test_create_index_success (line 189) | def test_create_index_success(self, mock_create_knowledge): method test_create_index_already_exists (line 222) | def test_create_index_already_exists(self, mock_create_knowledge): method test_create_knowledge_base_generates_index (line 248) | def test_create_knowledge_base_generates_index(self, mock_create_knowl... method test_create_knowledge_base_with_group_permissions (line 273) | def test_create_knowledge_base_with_group_permissions(self, mock_creat... method test_create_knowledge_base_with_partial_group_permissions (line 306) | def test_create_knowledge_base_with_partial_group_permissions(self, mo... method test_create_knowledge_base_with_empty_group_ids (line 338) | def test_create_knowledge_base_with_empty_group_ids(self, mock_create_... method test_create_index_failure (line 369) | def test_create_index_failure(self, mock_create_knowledge): method test_delete_index_success (line 396) | def test_delete_index_success(self, mock_delete_knowledge): method test_delete_index_failure (line 426) | def test_delete_index_failure(self, mock_delete_knowledge): method test_delete_index_knowledge_record_failure (line 455) | def test_delete_index_knowledge_record_failure(self, mock_delete_knowl... method test_list_indices_without_stats (line 485) | def test_list_indices_without_stats(self, mock_get_knowledge, mock_get... method test_list_indices_with_stats (line 524) | def test_list_indices_with_stats(self, mock_get_knowledge, mock_get_us... method test_list_indices_skips_missing_indices (line 575) | def test_list_indices_skips_missing_indices(self, mock_get_info, mock_... method test_list_indices_stats_defaults_when_missing (line 603) | def test_list_indices_stats_defaults_when_missing(self, mock_get_info,... method test_list_indices_backfills_missing_model_names (line 633) | def test_list_indices_backfills_missing_model_names(self, mock_get_inf... method test_list_indices_stats_surfaces_elasticsearch_errors (line 666) | def test_list_indices_stats_surfaces_elasticsearch_errors(self, mock_g... method test_list_indices_stats_keeps_non_stat_fields (line 696) | def test_list_indices_stats_keeps_non_stat_fields(self, mock_get_info,... method test_list_indices_creator_permission (line 735) | def test_list_indices_creator_permission(self, mock_get_knowledge, moc... method test_list_indices_permission_edit_when_not_creator (line 790) | def test_list_indices_permission_edit_when_not_creator(self, mock_get_... method test_list_indices_permission_read_when_not_creator (line 836) | def test_list_indices_permission_read_when_not_creator(self, mock_get_... method test_list_indices_permission_default_read_when_not_creator (line 882) | def test_list_indices_permission_default_read_when_not_creator(self, m... method test_list_indices_kb_group_ids_none (line 929) | def test_list_indices_kb_group_ids_none(self, mock_get_knowledge, mock... method test_list_indices_kb_group_ids_empty_string (line 975) | def test_list_indices_kb_group_ids_empty_string(self, mock_get_knowled... method test_list_indices_fallback_admin_logic (line 1020) | def test_list_indices_fallback_admin_logic(self, mock_get_knowledge, m... method test_list_indices_speed_version_admin_logic (line 1082) | def test_list_indices_speed_version_admin_logic(self, mock_get_group_i... method test_list_indices_skips_datamate_sources (line 1144) | def test_list_indices_skips_datamate_sources(self, mock_get_knowledge,... method test_list_indices_uses_tenant_id_for_filtering (line 1208) | def test_list_indices_uses_tenant_id_for_filtering(self, mock_get_know... method test_list_indices_includes_tenant_id_in_response (line 1278) | def test_list_indices_includes_tenant_id_in_response(self, mock_get_kn... method test_vectorize_documents_success (line 1324) | def test_vectorize_documents_success(self): method test_vectorize_documents_empty_data (line 1385) | def test_vectorize_documents_empty_data(self): method test_vectorize_documents_create_index (line 1412) | def test_vectorize_documents_create_index(self): method test_vectorize_documents_indexing_error (line 1458) | def test_vectorize_documents_indexing_error(self): method test_list_files_without_chunks (line 1500) | def test_list_files_without_chunks(self, mock_get_files_status): method test_list_files_with_chunks (line 1540) | def test_list_files_with_chunks(self, mock_get_files_status): method test_list_files_msearch_error (line 1601) | def test_list_files_msearch_error(self, mock_get_files_status): method test_delete_documents (line 1643) | def test_delete_documents(self, mock_delete_file): method test_index_documents_respects_cancellation_flag (line 1674) | def test_index_documents_respects_cancellation_flag(self, mock_get_red... method test_accurate_search (line 1730) | def test_accurate_search(self): method test_accurate_search_empty_query (line 1768) | def test_accurate_search_empty_query(self): method test_accurate_search_no_indices (line 1792) | def test_accurate_search_no_indices(self): method test_semantic_search (line 1817) | def test_semantic_search(self): method test_search_hybrid_success (line 1856) | def test_search_hybrid_success(self): method test_search_hybrid_missing_tenant_id (line 1904) | def test_search_hybrid_missing_tenant_id(self): method test_search_hybrid_empty_query (line 1917) | def test_search_hybrid_empty_query(self): method test_search_hybrid_no_indices (line 1930) | def test_search_hybrid_no_indices(self): method test_search_hybrid_invalid_top_k (line 1944) | def test_search_hybrid_invalid_top_k(self): method test_search_hybrid_invalid_weight (line 1957) | def test_search_hybrid_invalid_weight(self): method test_search_hybrid_no_embedding_model (line 1971) | def test_search_hybrid_no_embedding_model(self): method test_search_hybrid_exception (line 1991) | def test_search_hybrid_exception(self): method test_search_hybrid_weight_accurate_boundary_values (line 2007) | def test_search_hybrid_weight_accurate_boundary_values(self): method test_health_check_healthy (line 2071) | def test_health_check_healthy(self): method test_health_check_unhealthy (line 2091) | def test_health_check_unhealthy(self): method test_summary_index_name (line 2111) | def test_summary_index_name(self, mock_get_model_by_model_id): method test_summary_index_name_no_tenant_id (line 2180) | def test_summary_index_name_no_tenant_id(self): method test_summary_index_name_no_documents (line 2204) | def test_summary_index_name_no_documents(self): method test_summary_index_name_runtime_error_fallback (line 2244) | def test_summary_index_name_runtime_error_fallback(self): method test_summary_index_name_generator_exception (line 2312) | def test_summary_index_name_generator_exception(self): method test_summary_index_name_sample_count_calculation (line 2366) | def test_summary_index_name_sample_count_calculation(self): method test_get_random_documents (line 2462) | def test_get_random_documents(self): method test_change_summary (line 2505) | def test_change_summary(self, mock_update_record): method test_update_knowledge_base_success (line 2530) | def test_update_knowledge_base_success(self, mock_update_record): method test_update_knowledge_base_partial_update_name (line 2563) | def test_update_knowledge_base_partial_update_name(self, mock_update_r... method test_update_knowledge_base_partial_update_permission (line 2591) | def test_update_knowledge_base_partial_update_permission(self, mock_up... method test_update_knowledge_base_invalid_permission (line 2618) | def test_update_knowledge_base_invalid_permission(self): method test_update_knowledge_base_empty_group_ids (line 2639) | def test_update_knowledge_base_empty_group_ids(self): method test_update_knowledge_base_not_found (line 2663) | def test_update_knowledge_base_not_found(self, mock_update_record): method test_update_knowledge_base_with_single_group (line 2686) | def test_update_knowledge_base_with_single_group(self, mock_update_rec... method test_get_summary (line 2711) | def test_get_summary(self, mock_get_record): method test_get_summary_not_found (line 2734) | def test_get_summary_not_found(self, mock_get_record): method test_get_index_chunks_filters_fields (line 2752) | def test_get_index_chunks_filters_fields(self): method test_get_index_chunks_keeps_non_dict_entries (line 2784) | def test_get_index_chunks_keeps_non_dict_entries(self): method test_get_index_chunks_error (line 2803) | def test_get_index_chunks_error(self): method test_create_chunk_builds_payload_and_calls_core (line 2818) | def test_create_chunk_builds_payload_and_calls_core(self): method test_create_chunk_generates_embedding_when_tenant_provided (line 2858) | def test_create_chunk_generates_embedding_when_tenant_provided(self, m... method test_create_chunk_without_tenant_no_embedding_generated (line 2911) | def test_create_chunk_without_tenant_no_embedding_generated(self, mock... method test_create_chunk_handles_embedding_failure_gracefully (line 2949) | def test_create_chunk_handles_embedding_failure_gracefully(self, mock_... method test_create_chunk_handles_empty_embedding_result (line 2992) | def test_create_chunk_handles_empty_embedding_result(self, mock_get_em... method test_create_chunk_with_unknown_model_name_still_calls_embedding_model (line 3037) | def test_create_chunk_with_unknown_model_name_still_calls_embedding_mo... method test_update_chunk_builds_payload_and_calls_core (line 3081) | def test_update_chunk_builds_payload_and_calls_core(self): method test_delete_chunk_success (line 3120) | def test_delete_chunk_success(self): method test_delete_chunk_not_found_raises_value_error (line 3138) | def test_delete_chunk_not_found_raises_value_error(self): method test_list_indices_success_status_200 (line 3158) | def test_list_indices_success_status_200(self, mock_response, mock_get... method test_health_check_success_status_200 (line 3197) | def test_health_check_success_status_200(self): method test_get_random_documents_success_status_200 (line 3218) | def test_get_random_documents_success_status_200(self): method test_semantic_search_success_status_200 (line 3257) | def test_semantic_search_success_status_200(self): method test_vectorize_documents_success_status_200 (line 3299) | def test_vectorize_documents_success_status_200(self, mock_get_record,... method test_delete_documents_success_status_200 (line 3352) | def test_delete_documents_success_status_200(self, mock_delete_file): method test_get_summary_success_status_200 (line 3386) | def test_get_summary_success_status_200(self, mock_get_record): method test_check_kb_exist_available (line 3413) | def test_check_kb_exist_available(self, mock_get_knowledge): method test_check_kb_exist_exists_in_tenant (line 3434) | def test_check_kb_exist_exists_in_tenant(self, mock_get_knowledge): method test_get_vdb_core (line 3458) | def test_get_vdb_core(self): method test_get_embedding_model_embedding_type (line 3477) | def test_get_embedding_model_embedding_type(self, mock_tenant_config_m... method test_get_embedding_model_multi_embedding_type (line 3525) | def test_get_embedding_model_multi_embedding_type(self, mock_tenant_co... method test_get_embedding_model_unknown_type (line 3573) | def test_get_embedding_model_unknown_type(self, mock_tenant_config_man... method test_get_embedding_model_empty_type (line 3608) | def test_get_embedding_model_empty_type(self, mock_tenant_config_manag... method test_get_embedding_model_missing_type (line 3643) | def test_get_embedding_model_missing_type(self, mock_tenant_config_man... method test_get_embedding_model_with_model_name_found (line 3678) | def test_get_embedding_model_with_model_name_found(self, mock_get_mode... method test_get_embedding_model_with_model_name_found_without_repo (line 3741) | def test_get_embedding_model_with_model_name_found_without_repo(self, ... method test_get_embedding_model_with_model_name_not_found (line 3800) | def test_get_embedding_model_with_model_name_not_found(self, mock_get_... method test_get_embedding_model_with_model_name_exception (line 3855) | def test_get_embedding_model_with_model_name_exception(self, mock_get_... method test_update_progress_success (line 3908) | def test_update_progress_success(self, mock_get_redis): method test_update_progress_save_failure (line 3923) | def test_update_progress_save_failure(self, mock_get_redis): class TestRethrowOrPlain (line 3938) | class TestRethrowOrPlain(unittest.TestCase): method setUp (line 3939) | def setUp(self): method tearDown (line 3953) | def tearDown(self): method test_rethrow_or_plain_rethrows_json_error_code (line 3956) | def test_rethrow_or_plain_rethrows_json_error_code(self): method test_get_vector_db_core_unsupported_type (line 3965) | def test_get_vector_db_core_unsupported_type(self): method test_get_vector_db_core_datamate_type (line 3976) | def test_get_vector_db_core_datamate_type(self, mock_datamate_core, mo... method test_get_vector_db_core_datamate_success (line 3995) | def test_get_vector_db_core_datamate_success(self, mock_datamate_core,... method test_get_vector_db_core_datamate_no_url_configured (line 4017) | def test_get_vector_db_core_datamate_no_url_configured(self, mock_tena... method test_get_vector_db_core_datamate_no_tenant_id (line 4034) | def test_get_vector_db_core_datamate_no_tenant_id(self): method test_rethrow_or_plain_parses_error_code (line 4047) | def test_rethrow_or_plain_parses_error_code(self): method test_check_kb_exist_exclude_index_name_matches (line 4057) | def test_check_kb_exist_exclude_index_name_matches(self, mock_get_know... method test_check_kb_exist_exclude_index_name_does_not_match (line 4084) | def test_check_kb_exist_exclude_index_name_does_not_match(self, mock_g... method test_rethrow_or_plain_non_json_string (line 4105) | def test_rethrow_or_plain_non_json_string(self): method test_rethrow_or_plain_json_without_error_code (line 4117) | def test_rethrow_or_plain_json_without_error_code(self): method test_full_delete_knowledge_base_no_files_redis_warning (line 4130) | def test_full_delete_knowledge_base_no_files_redis_warning(self, mock_... method test_full_delete_knowledge_base_minio_and_redis_error (line 4161) | def test_full_delete_knowledge_base_minio_and_redis_error(self, mock_g... method test_create_knowledge_base_create_index_failure (line 4207) | def test_create_knowledge_base_create_index_failure(self, mock_create_... method test_create_knowledge_base_raises_on_exception (line 4228) | def test_create_knowledge_base_raises_on_exception(self, mock_create_r... method test_index_documents_default_batch_without_tenant (line 4249) | def test_index_documents_default_batch_without_tenant(self, mock_get_r... method test_index_documents_updates_final_progress (line 4277) | def test_index_documents_updates_final_progress(self, mock_get_redis, ... method test_index_documents_progress_init_and_final_errors (line 4308) | def test_index_documents_progress_init_and_final_errors(self, mock_ten... method test_list_files_handles_invalid_create_time_and_failed_tasks (line 4339) | def test_list_files_handles_invalid_create_time_and_failed_tasks(self,... method test_list_files_warning_and_progress_error_branches (line 4391) | def test_list_files_warning_and_progress_error_branches(self, mock_get... method test_list_files_with_chunks_updates_chunk_count (line 4463) | def test_list_files_with_chunks_updates_chunk_count(self, mock_get_fil... method test_summary_index_name_streams_generator_error (line 4503) | def test_summary_index_name_streams_generator_error(self): FILE: test/backend/services/test_voice_service.py class MockSTTModel (line 18) | class MockSTTModel: method __init__ (line 19) | def __init__(self, config, test_path): class MockTTSModel (line 26) | class MockTTSModel: method __init__ (line 27) | def __init__(self, config): method generate_speech (line 31) | async def generate_speech(self, text: str, stream: bool = False): function mock_voice_dependencies (line 50) | def mock_voice_dependencies(func): class TestVoiceService (line 67) | class TestVoiceService: method test_start_stt_streaming_session_success (line 71) | def test_start_stt_streaming_session_success(self): method test_start_stt_streaming_session_stt_connection_error (line 88) | def test_start_stt_streaming_session_stt_connection_error(self): method test_start_stt_streaming_session_general_error (line 105) | def test_start_stt_streaming_session_general_error(self): method test_generate_tts_speech_success (line 122) | def test_generate_tts_speech_success(self): method test_generate_tts_speech_empty_text (line 137) | def test_generate_tts_speech_empty_text(self): method test_generate_tts_speech_tts_connection_error (line 150) | def test_generate_tts_speech_tts_connection_error(self): method test_generate_tts_speech_general_error (line 164) | def test_generate_tts_speech_general_error(self): method test_stream_tts_to_websocket_success (line 178) | def test_stream_tts_to_websocket_success(self): method test_stream_tts_to_websocket_tts_connection_error (line 213) | def test_stream_tts_to_websocket_tts_connection_error(self): method test_stream_tts_to_websocket_general_error (line 239) | def test_stream_tts_to_websocket_general_error(self): method test_check_voice_connectivity_stt_success (line 265) | def test_check_voice_connectivity_stt_success(self): method test_check_voice_connectivity_tts_success (line 281) | def test_check_voice_connectivity_tts_success(self): method test_check_voice_connectivity_stt_failure (line 297) | def test_check_voice_connectivity_stt_failure(self): method test_check_voice_connectivity_tts_failure (line 313) | def test_check_voice_connectivity_tts_failure(self): method test_check_voice_connectivity_invalid_model_type (line 329) | def test_check_voice_connectivity_invalid_model_type(self): method test_check_voice_connectivity_stt_connection_error (line 338) | def test_check_voice_connectivity_stt_connection_error(self): method test_check_voice_connectivity_tts_connection_error (line 352) | def test_check_voice_connectivity_tts_connection_error(self): method test_check_voice_connectivity_general_error (line 366) | def test_check_voice_connectivity_general_error(self): class TestVoiceServiceSingleton (line 380) | class TestVoiceServiceSingleton: method test_get_voice_service_singleton (line 384) | def test_get_voice_service_singleton(self): method test_get_voice_service_initialization_error (line 395) | def test_get_voice_service_initialization_error(self): FILE: test/backend/test_cluster_summarization.py class TestClusterSummarization (line 62) | class TestClusterSummarization: method test_summarize_cluster_placeholder (line 65) | def test_summarize_cluster_placeholder(self): method test_merge_cluster_summaries (line 74) | def test_merge_cluster_summaries(self): method test_merge_cluster_summaries_empty (line 90) | def test_merge_cluster_summaries_empty(self): FILE: test/backend/test_document_vector_integration.py class TestDocumentVectorIntegration (line 64) | class TestDocumentVectorIntegration: method test_complete_workflow (line 67) | def test_complete_workflow(self): method test_large_dataset_clustering (line 116) | def test_large_dataset_clustering(self): FILE: test/backend/test_document_vector_utils.py class TestDocumentEmbedding (line 72) | class TestDocumentEmbedding: method test_calculate_document_embedding_simple_average (line 75) | def test_calculate_document_embedding_simple_average(self): method test_calculate_document_embedding_weighted (line 88) | def test_calculate_document_embedding_weighted(self): method test_calculate_document_embedding_empty_chunks (line 104) | def test_calculate_document_embedding_empty_chunks(self): method test_calculate_document_embedding_no_embeddings (line 110) | def test_calculate_document_embedding_no_embeddings(self): class TestAutoDetermineK (line 120) | class TestAutoDetermineK: method test_auto_determine_k_small_dataset (line 123) | def test_auto_determine_k_small_dataset(self): method test_auto_determine_k_large_dataset (line 130) | def test_auto_determine_k_large_dataset(self): method test_auto_determine_k_very_small_dataset (line 137) | def test_auto_determine_k_very_small_dataset(self): method test_auto_determine_k_minimum (line 145) | def test_auto_determine_k_minimum(self): class TestKMeansClustering (line 153) | class TestKMeansClustering: method test_kmeans_cluster_documents (line 156) | def test_kmeans_cluster_documents(self): method test_kmeans_cluster_documents_auto_k (line 172) | def test_kmeans_cluster_documents_auto_k(self): method test_kmeans_cluster_documents_empty (line 183) | def test_kmeans_cluster_documents_empty(self): method test_kmeans_cluster_documents_single (line 190) | def test_kmeans_cluster_documents_single(self): class TestExtractRepresentativeChunksSmart (line 204) | class TestExtractRepresentativeChunksSmart: method test_extract_representative_chunks_smart_basic (line 207) | def test_extract_representative_chunks_smart_basic(self): method test_extract_representative_chunks_smart_import_error (line 222) | def test_extract_representative_chunks_smart_import_error(self): class TestSummarizeDocument (line 241) | class TestSummarizeDocument: method test_summarize_document_no_model (line 244) | def test_summarize_document_no_model(self): method test_summarize_document_with_model_placeholder (line 255) | def test_summarize_document_with_model_placeholder(self): method test_summarize_document_with_model_success (line 266) | def test_summarize_document_with_model_success(self): class TestSummarizeCluster (line 289) | class TestSummarizeCluster: method test_summarize_cluster_no_model (line 292) | def test_summarize_cluster_no_model(self): method test_summarize_cluster_with_model_placeholder (line 302) | def test_summarize_cluster_with_model_placeholder(self): method test_summarize_cluster_with_model_success (line 312) | def test_summarize_cluster_with_model_success(self): class TestSummarizeClustersMapReduce (line 334) | class TestSummarizeClustersMapReduce: method test_summarize_clusters_map_reduce_basic (line 337) | def test_summarize_clusters_map_reduce_basic(self): method test_summarize_clusters_map_reduce_no_valid_documents (line 370) | def test_summarize_clusters_map_reduce_no_valid_documents(self): class TestMergeClusterSummaries (line 398) | class TestMergeClusterSummaries: method test_merge_cluster_summaries (line 401) | def test_merge_cluster_summaries(self): class TestGetDocumentsFromEs (line 418) | class TestGetDocumentsFromEs: method test_get_documents_from_es_mock (line 421) | def test_get_documents_from_es_mock(self): class TestProcessDocumentsForClustering (line 470) | class TestProcessDocumentsForClustering: method test_process_documents_for_clustering_mock (line 473) | def test_process_documents_for_clustering_mock(self): class TestAnalyzeClusterCoherence (line 513) | class TestAnalyzeClusterCoherence: method test_analyze_cluster_coherence (line 516) | def test_analyze_cluster_coherence(self): class TestMergeDuplicateDocumentsInClusters (line 537) | class TestMergeDuplicateDocumentsInClusters: method test_merge_duplicate_documents_same_cluster (line 540) | def test_merge_duplicate_documents_same_cluster(self): method test_merge_duplicate_documents_different_clusters (line 559) | def test_merge_duplicate_documents_different_clusters(self): method test_merge_duplicate_documents_empty_clusters (line 578) | def test_merge_duplicate_documents_empty_clusters(self): method test_merge_duplicate_documents_error_handling (line 587) | def test_merge_duplicate_documents_error_handling(self): FILE: test/backend/test_document_vector_utils_coverage.py class TestGetDocumentsFromES (line 71) | class TestGetDocumentsFromES: method test_get_documents_from_es_success (line 74) | def test_get_documents_from_es_success(self): method test_get_documents_from_es_empty (line 104) | def test_get_documents_from_es_empty(self): method test_get_documents_from_es_error (line 118) | def test_get_documents_from_es_error(self): class TestProcessDocumentsForClustering (line 127) | class TestProcessDocumentsForClustering: method test_process_documents_success (line 132) | def test_process_documents_success(self, mock_calc_emb, mock_get_docs): method test_process_documents_empty (line 151) | def test_process_documents_empty(self, mock_get_docs): class TestExtractClusterContent (line 162) | class TestExtractClusterContent: method test_extract_representative_chunks_smart (line 165) | def test_extract_representative_chunks_smart(self): method test_extract_representative_chunks_smart_single (line 177) | def test_extract_representative_chunks_smart_single(self): class TestAnalyzeClusterCoherence (line 187) | class TestAnalyzeClusterCoherence: method test_analyze_cluster_coherence_basic (line 190) | def test_analyze_cluster_coherence_basic(self): class TestSummarizeDocument (line 210) | class TestSummarizeDocument: method test_summarize_document_no_model (line 213) | def test_summarize_document_no_model(self): method test_summarize_document_with_model_placeholder (line 224) | def test_summarize_document_with_model_placeholder(self): class TestSummarizeCluster (line 239) | class TestSummarizeCluster: method test_summarize_cluster_no_model (line 242) | def test_summarize_cluster_no_model(self): class TestSummarizeClustersMapReduce (line 255) | class TestSummarizeClustersMapReduce: method test_summarize_clusters_map_reduce (line 260) | def test_summarize_clusters_map_reduce(self, mock_sum_cluster, mock_su... class TestMergeClusterSummaries (line 288) | class TestMergeClusterSummaries: method test_merge_cluster_summaries_basic (line 291) | def test_merge_cluster_summaries_basic(self): method test_merge_cluster_summaries_empty (line 304) | def test_merge_cluster_summaries_empty(self): method test_merge_cluster_summaries_single (line 315) | def test_merge_cluster_summaries_single(self): class TestAdditionalCoverage (line 326) | class TestAdditionalCoverage: method test_get_documents_from_es_non_list_documents (line 329) | def test_get_documents_from_es_non_list_documents(self): method test_get_documents_from_es_no_chunks (line 363) | def test_get_documents_from_es_no_chunks(self): method test_calculate_document_embedding_exception (line 386) | def test_calculate_document_embedding_exception(self): method test_auto_determine_k_small_dataset (line 399) | def test_auto_determine_k_small_dataset(self): method test_auto_determine_k_exception (line 407) | def test_auto_determine_k_exception(self): method test_kmeans_cluster_documents_empty (line 420) | def test_kmeans_cluster_documents_empty(self): method test_kmeans_cluster_documents_exception (line 425) | def test_kmeans_cluster_documents_exception(self): method test_process_documents_for_clustering_exception (line 439) | def test_process_documents_for_clustering_exception(self): method test_process_documents_for_clustering_no_embeddings (line 447) | def test_process_documents_for_clustering_no_embeddings(self): method test_extract_representative_chunks_smart_import_error (line 481) | def test_extract_representative_chunks_smart_import_error(self): method test_extract_representative_chunks_smart_short_content (line 495) | def test_extract_representative_chunks_smart_short_content(self): method test_analyze_cluster_coherence_empty (line 507) | def test_analyze_cluster_coherence_empty(self): method test_analyze_cluster_coherence_missing_doc (line 519) | def test_analyze_cluster_coherence_missing_doc(self): method test_analyze_cluster_coherence_no_chunks (line 531) | def test_analyze_cluster_coherence_no_chunks(self): method test_summarize_clusters_map_reduce_missing_doc (line 543) | def test_summarize_clusters_map_reduce_missing_doc(self): method test_summarize_clusters_map_reduce_few_chunks (line 563) | def test_summarize_clusters_map_reduce_few_chunks(self): method test_summarize_clusters_map_reduce_long_content (line 586) | def test_summarize_clusters_map_reduce_long_content(self): method test_summarize_clusters_map_reduce_no_valid_docs (line 609) | def test_summarize_clusters_map_reduce_no_valid_docs(self): FILE: test/backend/test_llm_integration.py class _MinioClient (line 15) | class _MinioClient: class TestLLMIntegration (line 57) | class TestLLMIntegration: method test_summarize_document_without_llm (line 60) | def test_summarize_document_without_llm(self): method test_summarize_document_with_llm_params_no_config (line 72) | def test_summarize_document_with_llm_params_no_config(self): method test_summarize_cluster_without_llm (line 93) | def test_summarize_cluster_without_llm(self): method test_summarize_cluster_with_llm_params_no_config (line 108) | def test_summarize_cluster_with_llm_params_no_config(self): method test_summarize_document_english (line 130) | def test_summarize_document_english(self): method test_summarize_cluster_english (line 142) | def test_summarize_cluster_english(self): FILE: test/backend/test_model_consts.py function test_model_connect_status_enum_defaults_and_get_value (line 7) | def test_model_connect_status_enum_defaults_and_get_value(): function test_model_request_and_validation (line 14) | def test_model_request_and_validation(): FILE: test/backend/test_runtime_service.py class OpenAILongContextModel (line 41) | class OpenAILongContextModel: method __init__ (line 42) | def __init__(self, *args, **kwargs): class OpenAIVLModel (line 55) | class OpenAIVLModel: method __init__ (line 56) | def __init__(self, *args, **kwargs): class MockVectorDatabaseCore (line 69) | class MockVectorDatabaseCore: method __init__ (line 70) | def __init__(self, *args, **kwargs): class MockElasticSearchCore (line 77) | class MockElasticSearchCore: method __init__ (line 78) | def __init__(self, *args, **kwargs): class TestMainServiceModuleIntegration (line 124) | class TestMainServiceModuleIntegration: method test_logging_configuration_called_on_import (line 129) | def test_logging_configuration_called_on_import(self, mock_configure_e... FILE: test/backend/test_summary_formatting.py class TestSummaryFormatting (line 54) | class TestSummaryFormatting: method test_merge_cluster_summaries_with_html_separators (line 57) | def test_merge_cluster_summaries_with_html_separators(self): method test_merge_cluster_summaries_single_cluster (line 82) | def test_merge_cluster_summaries_single_cluster(self): method test_merge_cluster_summaries_empty (line 95) | def test_merge_cluster_summaries_empty(self): method test_merge_cluster_summaries_order (line 100) | def test_merge_cluster_summaries_order(self): FILE: test/backend/utils/test_auth_utils.py class _MinIOStorageConfig (line 34) | class _MinIOStorageConfig: method validate (line 35) | def validate(self): function test_calculate_hmac_signature_stability (line 151) | def test_calculate_hmac_signature_stability(): function test_validate_timestamp_window (line 160) | def test_validate_timestamp_window(monkeypatch): function test_extract_aksk_headers_success (line 168) | def test_extract_aksk_headers_success(): function test_extract_aksk_headers_missing (line 177) | def test_extract_aksk_headers_missing(): function test_verify_aksk_signature_success (line 182) | def test_verify_aksk_signature_success(monkeypatch): function test_verify_aksk_signature_invalid (line 191) | def test_verify_aksk_signature_invalid(monkeypatch): function test_validate_aksk_authentication (line 197) | def test_validate_aksk_authentication(monkeypatch): function test_validate_aksk_authentication_invalid (line 207) | def test_validate_aksk_authentication_invalid(monkeypatch): function test_generate_test_jwt_and_get_expiry_seconds (line 217) | def test_generate_test_jwt_and_get_expiry_seconds(monkeypatch): function test_calculate_expires_at_speed_mode (line 226) | def test_calculate_expires_at_speed_mode(monkeypatch): function test_extract_user_id_from_jwt_token (line 233) | def test_extract_user_id_from_jwt_token(monkeypatch): function test_extract_user_id_no_jwt_secret_raises (line 241) | def test_extract_user_id_no_jwt_secret_raises(monkeypatch): function test_extract_user_id_invalid_signature_raises (line 251) | def test_extract_user_id_invalid_signature_raises(monkeypatch): function test_extract_user_id_expired_token_raises (line 261) | def test_extract_user_id_expired_token_raises(monkeypatch): function test_extract_user_id_malformed_token_raises (line 272) | def test_extract_user_id_malformed_token_raises(monkeypatch): function test_extract_user_id_unauthorized_error_re_raised (line 281) | def test_extract_user_id_unauthorized_error_re_raised(monkeypatch): function test_extract_user_id_generic_exception_raises (line 295) | def test_extract_user_id_generic_exception_raises(monkeypatch): function test_get_current_user_id_speed_mode (line 309) | def test_get_current_user_id_speed_mode(monkeypatch): function test_get_current_user_id_with_mapping (line 315) | def test_get_current_user_id_with_mapping(monkeypatch): function test_get_user_language_from_cookie (line 326) | def test_get_user_language_from_cookie(): function test_get_supabase_client_success (line 334) | def test_get_supabase_client_success(monkeypatch): function test_get_supabase_client_failure (line 345) | def test_get_supabase_client_failure(monkeypatch): function test_get_supabase_admin_client_success (line 358) | def test_get_supabase_admin_client_success(monkeypatch): function test_get_supabase_admin_client_failure (line 369) | def test_get_supabase_admin_client_failure(monkeypatch): function test_validate_aksk_authentication_unexpected_error (line 382) | def test_validate_aksk_authentication_unexpected_error(monkeypatch): function test_get_jwt_expiry_seconds_exception (line 398) | def test_get_jwt_expiry_seconds_exception(monkeypatch): function test_get_current_user_id_no_tenant_mapping (line 411) | def test_get_current_user_id_no_tenant_mapping(monkeypatch): function test_get_current_user_id_exception (line 424) | def test_get_current_user_id_exception(monkeypatch): class TestValidateBearerToken (line 440) | class TestValidateBearerToken: method test_validate_bearer_token_success (line 443) | def test_validate_bearer_token_success(self, monkeypatch): method test_validate_bearer_token_without_bearer_prefix (line 459) | def test_validate_bearer_token_without_bearer_prefix(self, monkeypatch): method test_validate_bearer_token_empty_authorization (line 474) | def test_validate_bearer_token_empty_authorization(self): method test_validate_bearer_token_empty_string (line 481) | def test_validate_bearer_token_empty_string(self): method test_validate_bearer_token_empty_token (line 488) | def test_validate_bearer_token_empty_token(self): method test_validate_bearer_token_invalid_token (line 495) | def test_validate_bearer_token_invalid_token(self, monkeypatch): method test_validate_bearer_token_deleted (line 504) | def test_validate_bearer_token_deleted(self, monkeypatch): method test_validate_bearer_token_exception (line 519) | def test_validate_bearer_token_exception(self, monkeypatch): class TestGetUserAndTenantByAccessKey (line 532) | class TestGetUserAndTenantByAccessKey: method test_get_user_and_tenant_success (line 535) | def test_get_user_and_tenant_success(self, monkeypatch): method test_get_user_and_tenant_default_tenant (line 554) | def test_get_user_and_tenant_default_tenant(self, monkeypatch): method test_get_user_and_tenant_empty_tenant_id (line 572) | def test_get_user_and_tenant_empty_tenant_id(self, monkeypatch): method test_get_user_and_tenant_empty_access_key (line 589) | def test_get_user_and_tenant_empty_access_key(self): method test_get_user_and_tenant_none_access_key (line 594) | def test_get_user_and_tenant_none_access_key(self): method test_get_user_and_tenant_token_not_found (line 599) | def test_get_user_and_tenant_token_not_found(self, monkeypatch): method test_get_user_and_tenant_deleted_token (line 606) | def test_get_user_and_tenant_deleted_token(self, monkeypatch): method test_get_user_and_tenant_no_user_id (line 619) | def test_get_user_and_tenant_no_user_id(self, monkeypatch): FILE: test/backend/utils/test_config_utils.py class TestSafeValue (line 23) | class TestSafeValue: method test_safe_value_with_none (line 26) | def test_safe_value_with_none(self): method test_safe_value_with_string (line 30) | def test_safe_value_with_string(self): class TestSafeList (line 35) | class TestSafeList: method test_safe_list_with_none (line 38) | def test_safe_list_with_none(self): method test_safe_list_with_list (line 42) | def test_safe_list_with_list(self): class TestGetEnvKey (line 50) | class TestGetEnvKey: method test_get_env_key_camel_case (line 53) | def test_get_env_key_camel_case(self): method test_get_env_key_with_numbers (line 57) | def test_get_env_key_with_numbers(self): class TestGetModelNameFromConfig (line 62) | class TestGetModelNameFromConfig: method test_get_model_name_from_config_with_model_repo (line 65) | def test_get_model_name_from_config_with_model_repo(self): method test_get_model_name_from_config_without_model_repo (line 70) | def test_get_model_name_from_config_without_model_repo(self): class TestTenantConfigManager (line 76) | class TestTenantConfigManager: method config_manager (line 80) | def config_manager(self): method mock_configs (line 85) | def mock_configs(self): method test_init (line 100) | def test_init(self, config_manager): method test_get_cache_key (line 105) | def test_get_cache_key(self, config_manager): method test_load_config_success (line 111) | def test_load_config_success(self, mock_get_configs, config_manager, m... method test_load_config_no_configs (line 125) | def test_load_config_no_configs(self, mock_get_configs, config_manager): method test_load_config_invalid_tenant_id (line 134) | def test_load_config_invalid_tenant_id(self, config_manager): method test_load_config_cache_hit (line 140) | def test_load_config_cache_hit(self, mock_get_configs, config_manager,... method test_load_config_force_reload (line 157) | def test_load_config_force_reload(self, mock_get_configs, config_manag... method test_get_model_config_success (line 175) | def test_get_model_config_success(self, mock_get_configs, mock_get_mod... method test_get_model_config_invalid_model_id (line 188) | def test_get_model_config_invalid_model_id(self, mock_get_configs, moc... method test_get_model_config_no_tenant_id (line 198) | def test_get_model_config_no_tenant_id(self, config_manager): method test_get_app_config_success (line 204) | def test_get_app_config_success(self, mock_get_configs, config_manager): method test_get_app_config_no_tenant_id (line 213) | def test_get_app_config_no_tenant_id(self, config_manager): method test_set_single_config_success (line 220) | def test_set_single_config_success(self, mock_get_configs, mock_insert... method test_set_single_config_no_tenant_id (line 230) | def test_set_single_config_no_tenant_id(self, config_manager): method test_delete_single_config_success (line 238) | def test_delete_single_config_success(self, mock_get_configs, mock_get... method test_delete_single_config_no_tenant_id (line 248) | def test_delete_single_config_no_tenant_id(self, config_manager): method test_update_single_config_success (line 256) | def test_update_single_config_success(self, mock_get_configs, mock_get... method test_update_single_config_no_tenant_id (line 265) | def test_update_single_config_no_tenant_id(self, config_manager): method test_clear_cache_specific_tenant (line 270) | def test_clear_cache_specific_tenant(self, config_manager): method test_clear_cache_all (line 275) | def test_clear_cache_all(self, config_manager): FILE: test/backend/utils/test_file_management_utils.py class _ProcessParams (line 8) | class _ProcessParams: method __init__ (line 9) | def __init__(self, authorization: str, source_type: str, chunking_stra... function stub_project_modules (line 17) | def stub_project_modules(monkeypatch): function fmu (line 56) | def fmu(monkeypatch): function test_save_upload_file_success (line 66) | async def test_save_upload_file_success(tmp_path, fmu, monkeypatch): function test_save_upload_file_error (line 97) | async def test_save_upload_file_error(tmp_path, fmu, monkeypatch): class _Resp (line 122) | class _Resp: method __init__ (line 123) | def __init__(self, status_code: int, body: Any = None, text: str = ""): method json (line 128) | def json(self): class _FakeRequestError (line 132) | class _FakeRequestError(Exception): class _FakeAsyncClient (line 136) | class _FakeAsyncClient: method __init__ (line 137) | def __init__(self, resp: _Resp = _Resp(201, {"ok": True})): method __aenter__ (line 142) | async def __aenter__(self): method __aexit__ (line 145) | async def __aexit__(self, exc_type, exc, tb): method post (line 148) | async def post(self, url: str, headers: Dict[str, str], json: Dict[str... method get (line 154) | async def get(self, url: str, timeout: float): function test_trigger_data_process_empty_files_returns_none (line 162) | async def test_trigger_data_process_empty_files_returns_none(fmu): function test_trigger_data_process_single_success_with_embedding (line 169) | async def test_trigger_data_process_single_success_with_embedding(fmu, m... function test_trigger_data_process_single_non201_error (line 185) | async def test_trigger_data_process_single_non201_error(fmu, monkeypatch): function test_trigger_data_process_single_request_error (line 197) | async def test_trigger_data_process_single_request_error(fmu, monkeypatch): function test_trigger_data_process_batch_success (line 209) | async def test_trigger_data_process_batch_success(fmu, monkeypatch): function test_trigger_data_process_batch_non201_and_request_error (line 226) | async def test_trigger_data_process_batch_non201_and_request_error(fmu, ... function test_get_all_files_status_success_and_convert (line 251) | async def test_get_all_files_status_success_and_convert(fmu, monkeypatch): function test_get_all_files_status_connect_error_and_non200 (line 289) | async def test_get_all_files_status_connect_error_and_non200(fmu, monkey... function test_get_all_files_status_no_tasks_returns_empty (line 304) | async def test_get_all_files_status_no_tasks_returns_empty(fmu, monkeypa... function test_get_all_files_status_forward_updates_and_redis_progress (line 313) | async def test_get_all_files_status_forward_updates_and_redis_progress(f... function test_get_all_files_status_redis_progress_exception (line 360) | async def test_get_all_files_status_redis_progress_exception(fmu, monkey... function test_get_all_files_status_outer_exception_returns_empty (line 396) | async def test_get_all_files_status_outer_exception_returns_empty(fmu, m... function test_convert_to_custom_state_remote_success (line 424) | async def test_convert_to_custom_state_remote_success(fmu, monkeypatch): function test_convert_to_custom_state_fallback_mappings (line 432) | async def test_convert_to_custom_state_fallback_mappings(fmu, monkeypatch): function test_get_file_size_minio_ok_and_request_error (line 460) | def test_get_file_size_minio_ok_and_request_error(fmu, monkeypatch): function test_get_file_size_local_exists_missing_and_error (line 478) | def test_get_file_size_local_exists_missing_and_error(fmu, monkeypatch): function test_get_file_size_invalid_source_type (line 494) | def test_get_file_size_invalid_source_type(fmu): function test_get_all_files_status_forward_created_at_not_greater (line 503) | async def test_get_all_files_status_forward_created_at_not_greater(fmu, ... function test_get_all_files_status_empty_task_id (line 539) | async def test_get_all_files_status_empty_task_id(fmu, monkeypatch): function test_get_all_files_status_redis_progress_info_none (line 580) | async def test_get_all_files_status_redis_progress_info_none(fmu, monkey... function test_get_all_files_status_redis_processed_chunks_none (line 621) | async def test_get_all_files_status_redis_processed_chunks_none(fmu, mon... function test_get_all_files_status_redis_total_chunks_none (line 665) | async def test_get_all_files_status_redis_total_chunks_none(fmu, monkeyp... class TestConvertOfficeToPdf (line 708) | class TestConvertOfficeToPdf: method test_convert_office_to_pdf_success (line 712) | async def test_convert_office_to_pdf_success(self, fmu, monkeypatch): method test_convert_office_to_pdf_input_not_found (line 727) | async def test_convert_office_to_pdf_input_not_found(self, fmu, monkey... method test_convert_office_to_pdf_libreoffice_error (line 737) | async def test_convert_office_to_pdf_libreoffice_error(self, fmu, monk... method test_convert_office_to_pdf_timeout (line 750) | async def test_convert_office_to_pdf_timeout(self, fmu, monkeypatch): method test_convert_office_to_pdf_libreoffice_not_installed (line 767) | async def test_convert_office_to_pdf_libreoffice_not_installed(self, f... method test_convert_office_to_pdf_output_not_found (line 783) | async def test_convert_office_to_pdf_output_not_found(self, fmu, monke... FILE: test/backend/utils/test_langchain_utils.py function mock_logger (line 8) | def mock_logger(): class TestLangchainUtils (line 13) | class TestLangchainUtils: method test_is_langchain_tool_with_base_tool (line 16) | def test_is_langchain_tool_with_base_tool(self, mocker): method test_is_langchain_tool_with_non_base_tool (line 30) | def test_is_langchain_tool_with_non_base_tool(self, mocker): method test_discover_langchain_modules_success (line 42) | def test_discover_langchain_modules_success(self, mocker): method test_discover_langchain_modules_directory_not_found (line 92) | def test_discover_langchain_modules_directory_not_found(self, mocker): method test_discover_langchain_modules_module_exception (line 98) | def test_discover_langchain_modules_module_exception(self, mocker, moc... method test_discover_langchain_modules_spec_loader_none (line 119) | def test_discover_langchain_modules_spec_loader_none(self, mocker, moc... method test_discover_langchain_modules_custom_filter (line 139) | def test_discover_langchain_modules_custom_filter(self, mocker): FILE: test/backend/utils/test_llm_utils.py class _FakeMinIOStorageConfig (line 30) | class _FakeMinIOStorageConfig: # pylint: disable=too-few-public-methods method __init__ (line 31) | def __init__(self, *args, **kwargs): method validate (line 34) | def validate(self): function _make_message_observer (line 60) | def _make_message_observer(*a, **k): class _SimpleOpenAIModel (line 78) | class _SimpleOpenAIModel: method __init__ (line 79) | def __init__(self, *a, **k): method _prepare_completion_kwargs (line 83) | def _prepare_completion_kwargs(self, *a, **k): class TestCallLLMForSystemPrompt (line 97) | class TestCallLLMForSystemPrompt: method test_call_llm_for_system_prompt_success (line 98) | def test_call_llm_for_system_prompt_success(self, mocker: MockFixture): method test_call_llm_for_system_prompt_exception (line 141) | def test_call_llm_for_system_prompt_exception(self, mocker: MockFixture): class TestProcessThinkingTokens (line 172) | class TestProcessThinkingTokens: method test_process_thinking_tokens_normal_token (line 173) | def test_process_thinking_tokens_normal_token(self): method test_process_thinking_tokens_start_thinking (line 186) | def test_process_thinking_tokens_start_thinking(self): method test_process_thinking_tokens_content_while_thinking (line 199) | def test_process_thinking_tokens_content_while_thinking(self): method test_process_thinking_tokens_end_thinking (line 217) | def test_process_thinking_tokens_end_thinking(self): method test_process_thinking_tokens_content_after_thinking (line 230) | def test_process_thinking_tokens_content_after_thinking(self): method test_process_thinking_tokens_complete_flow (line 243) | def test_process_thinking_tokens_complete_flow(self): method test_process_thinking_tokens_no_callback (line 271) | def test_process_thinking_tokens_no_callback(self): method test_process_thinking_tokens_empty_token (line 279) | def test_process_thinking_tokens_empty_token(self): method test_process_thinking_tokens_end_tag_without_starting (line 292) | def test_process_thinking_tokens_end_tag_without_starting(self): method test_process_thinking_tokens_end_tag_without_starting_no_callback (line 306) | def test_process_thinking_tokens_end_tag_without_starting_no_callback(... method test_process_thinking_tokens_end_tag_with_content_after (line 315) | def test_process_thinking_tokens_end_tag_with_content_after(self): method test_process_thinking_tokens_start_tag_with_content_after (line 329) | def test_process_thinking_tokens_start_tag_with_content_after(self): method test_process_thinking_tokens_both_tags_in_same_token (line 343) | def test_process_thinking_tokens_both_tags_in_same_token(self): method test_process_thinking_tokens_new_token_empty_after_processing (line 371) | def test_process_thinking_tokens_new_token_empty_after_processing(self): class AdditionalLLMUtilsTests (line 387) | class AdditionalLLMUtilsTests: method test_process_thinking_tokens_append_and_callback (line 388) | def test_process_thinking_tokens_append_and_callback(self): method test_process_thinking_tokens_start_tag (line 400) | def test_process_thinking_tokens_start_tag(self): method test_process_thinking_tokens_is_thinking_without_end (line 413) | def test_process_thinking_tokens_is_thinking_without_end(self): method test_process_thinking_tokens_is_thinking_with_end (line 420) | def test_process_thinking_tokens_is_thinking_with_end(self): method test_process_thinking_tokens_empty_token_with_callback (line 428) | def test_process_thinking_tokens_empty_token_with_callback(self): method test_call_llm_for_system_prompt_skips_none_tokens_and_joins (line 441) | def test_call_llm_for_system_prompt_skips_none_tokens_and_joins(self, ... method test_call_llm_for_system_prompt_generator_like_response (line 469) | def test_call_llm_for_system_prompt_generator_like_response(self, mock... method test_call_llm_for_system_prompt_with_callback (line 494) | def test_call_llm_for_system_prompt_with_callback(self, mocker: MockFi... method test_call_llm_for_system_prompt_with_reasoning_content (line 528) | def test_call_llm_for_system_prompt_with_reasoning_content(self, mocke... method test_call_llm_for_system_prompt_multiple_chunks (line 555) | def test_call_llm_for_system_prompt_multiple_chunks(self, mocker: Mock... method test_call_llm_for_system_prompt_with_none_content (line 587) | def test_call_llm_for_system_prompt_with_none_content(self, mocker: Mo... method test_call_llm_for_system_prompt_with_thinking_tags (line 614) | def test_call_llm_for_system_prompt_with_thinking_tags(self, mocker: M... method test_call_llm_for_system_prompt_empty_result_with_tokens (line 660) | def test_call_llm_for_system_prompt_empty_result_with_tokens(self, moc... method test_call_llm_for_system_prompt_with_tenant_id (line 694) | def test_call_llm_for_system_prompt_with_tenant_id(self, mocker: MockF... method test_call_llm_for_system_prompt_with_none_model_config (line 725) | def test_call_llm_for_system_prompt_with_none_model_config(self, mocke... method test_call_llm_for_system_prompt_reasoning_content_logging (line 761) | def test_call_llm_for_system_prompt_reasoning_content_logging(self, mo... method test_call_llm_for_system_prompt_exception_logging (line 793) | def test_call_llm_for_system_prompt_exception_logging(self, mocker: Mo... class TestCallLLMForSystemPromptErrorHandling (line 822) | class TestCallLLMForSystemPromptErrorHandling: method _create_mock_llm_setup (line 825) | def _create_mock_llm_setup(self, mocker: MockFixture): method test_error_401_api_key_invalid (line 839) | def test_error_401_api_key_invalid(self, mocker: MockFixture): method test_error_unauthorized_lowercase (line 854) | def test_error_unauthorized_lowercase(self, mocker: MockFixture): method test_error_api_key_in_message (line 869) | def test_error_api_key_in_message(self, mocker: MockFixture): method test_error_403_forbidden (line 884) | def test_error_403_forbidden(self, mocker: MockFixture): method test_error_forbidden_lowercase (line 899) | def test_error_forbidden_lowercase(self, mocker: MockFixture): method test_error_404_not_found (line 914) | def test_error_404_not_found(self, mocker: MockFixture): method test_error_not_found_lowercase (line 929) | def test_error_not_found_lowercase(self, mocker: MockFixture): method test_error_429_rate_limit (line 944) | def test_error_429_rate_limit(self, mocker: MockFixture): method test_error_rate_limit_lowercase (line 959) | def test_error_rate_limit_lowercase(self, mocker: MockFixture): method test_error_500_service_unavailable (line 974) | def test_error_500_service_unavailable(self, mocker: MockFixture): method test_error_502_service_unavailable (line 989) | def test_error_502_service_unavailable(self, mocker: MockFixture): method test_error_503_service_unavailable (line 1004) | def test_error_503_service_unavailable(self, mocker: MockFixture): method test_error_504_service_unavailable (line 1019) | def test_error_504_service_unavailable(self, mocker: MockFixture): method test_error_connection_error (line 1034) | def test_error_connection_error(self, mocker: MockFixture): method test_error_timeout (line 1049) | def test_error_timeout(self, mocker: MockFixture): method test_error_connection_refused (line 1064) | def test_error_connection_refused(self, mocker: MockFixture): method test_error_generic_unmapped_error (line 1079) | def test_error_generic_unmapped_error(self, mocker: MockFixture): method test_error_empty_message (line 1094) | def test_error_empty_message(self, mocker: MockFixture): FILE: test/backend/utils/test_memory_utils.py function mock_model_configs (line 17) | def mock_model_configs(): function mock_tenant_config_manager (line 39) | def mock_tenant_config_manager(): class TestMemoryUtils (line 44) | class TestMemoryUtils: method test_build_memory_config_success (line 47) | def test_build_memory_config_success(self, mocker, mock_constants, moc... method test_build_memory_config_missing_llm_config (line 117) | def test_build_memory_config_missing_llm_config(self, mocker, mock_ten... method test_build_memory_config_llm_config_missing_model_name (line 133) | def test_build_memory_config_llm_config_missing_model_name(self, mocker): method test_build_memory_config_missing_embedding_config (line 150) | def test_build_memory_config_missing_embedding_config(self, mocker, mo... method test_build_memory_config_embedding_config_missing_max_tokens (line 167) | def test_build_memory_config_embedding_config_missing_max_tokens(self,... method test_build_memory_config_missing_es_host (line 185) | def test_build_memory_config_missing_es_host(self, mocker): method test_build_memory_config_invalid_es_host_format (line 206) | def test_build_memory_config_invalid_es_host_format(self, mocker): method test_build_memory_config_es_host_missing_scheme (line 228) | def test_build_memory_config_es_host_missing_scheme(self, mocker): method test_build_memory_config_es_host_missing_port (line 250) | def test_build_memory_config_es_host_missing_port(self, mocker): method test_build_memory_config_with_https_es_host (line 272) | def test_build_memory_config_with_https_es_host(self, mocker): method test_build_memory_config_with_custom_port (line 309) | def test_build_memory_config_with_custom_port(self, mocker): method test_build_memory_config_sanitizes_slashes_in_repo_and_name (line 346) | def test_build_memory_config_sanitizes_slashes_in_repo_and_name(self, ... method test_build_memory_config_with_empty_model_repo (line 379) | def test_build_memory_config_with_empty_model_repo(self, mocker): FILE: test/backend/utils/test_model_name_utils.py class TestModelNameUtils (line 10) | class TestModelNameUtils: method test_split_repo_name (line 13) | def test_split_repo_name(self): method test_add_repo_to_name (line 20) | def test_add_repo_to_name(self, caplog): method test_split_display_name (line 30) | def test_split_display_name(self): method test_sort_models_by_id (line 40) | def test_sort_models_by_id(self): FILE: test/backend/utils/test_monitoring.py class TestMonitoringUtilsModule (line 12) | class TestMonitoringUtilsModule: method test_monitoring_manager_exists (line 15) | def test_monitoring_manager_exists(self): method test_monitoring_manager_methods_callable (line 22) | def test_monitoring_manager_methods_callable(self): method test_monitoring_manager_decorators (line 33) | def test_monitoring_manager_decorators(self): method test_monitoring_manager_llm_decorator (line 43) | def test_monitoring_manager_llm_decorator(self): method test_monitoring_manager_context_manager (line 54) | def test_monitoring_manager_context_manager(self): method test_token_tracker_creation (line 60) | def test_token_tracker_creation(self): method test_fastapi_app_setup (line 70) | def test_fastapi_app_setup(self): method test_configuration_methods (line 82) | def test_configuration_methods(self): method test_error_resilience (line 95) | def test_error_resilience(self): method test_complex_decorator_scenario (line 107) | def test_complex_decorator_scenario(self): method test_monitoring_with_exceptions (line 126) | def test_monitoring_with_exceptions(self): method test_module_attributes (line 136) | def test_module_attributes(self): method test_singleton_behavior (line 147) | def test_singleton_behavior(self): method test_edge_case_parameters (line 155) | def test_edge_case_parameters(self): method test_concurrent_usage (line 168) | def test_concurrent_usage(self): method test_decorator_parameter_filtering (line 194) | def test_decorator_parameter_filtering(self): method test_llm_decorator_with_token_tracker (line 205) | def test_llm_decorator_with_token_tracker(self): method test_context_manager_error_handling (line 224) | def test_context_manager_error_handling(self): method test_metrics_recording_all_types (line 237) | def test_metrics_recording_all_types(self): method test_get_current_span (line 248) | def test_get_current_span(self): FILE: test/backend/utils/test_prompt_template_utils.py class TestPromptTemplateUtils (line 7) | class TestPromptTemplateUtils: method test_get_agent_prompt_template_manager_zh (line 10) | def test_get_agent_prompt_template_manager_zh(self, mocker): method test_get_agent_prompt_template_manager_en (line 27) | def test_get_agent_prompt_template_manager_en(self, mocker): method test_get_agent_prompt_template_managed_zh (line 44) | def test_get_agent_prompt_template_managed_zh(self, mocker): method test_get_agent_prompt_template_managed_en (line 61) | def test_get_agent_prompt_template_managed_en(self, mocker): method test_get_prompt_generate_prompt_template_zh (line 78) | def test_get_prompt_generate_prompt_template_zh(self, mocker): method test_get_prompt_generate_prompt_template_en (line 95) | def test_get_prompt_generate_prompt_template_en(self, mocker): method test_get_prompt_generate_prompt_template_default_language (line 112) | def test_get_prompt_generate_prompt_template_default_language(self, mo... FILE: test/backend/utils/test_str_utils.py class TestStrUtils (line 5) | class TestStrUtils: method test_remove_think_blocks_no_tags (line 8) | def test_remove_think_blocks_no_tags(self): method test_remove_think_blocks_with_opening_tag_only (line 14) | def test_remove_think_blocks_with_opening_tag_only(self): method test_remove_think_blocks_with_closing_tag_only (line 20) | def test_remove_think_blocks_with_closing_tag_only(self): method test_remove_think_blocks_with_both_tags (line 26) | def test_remove_think_blocks_with_both_tags(self): method test_remove_think_blocks_multiple_tags (line 32) | def test_remove_think_blocks_multiple_tags(self): method test_remove_think_blocks_empty_string (line 38) | def test_remove_think_blocks_empty_string(self): method test_remove_think_blocks_only_tags (line 44) | def test_remove_think_blocks_only_tags(self): method test_remove_think_blocks_partial_tags (line 50) | def test_remove_think_blocks_partial_tags(self): method test_remove_think_blocks_case_insensitive (line 56) | def test_remove_think_blocks_case_insensitive(self): method test_convert_list_to_string_none_input (line 62) | def test_convert_list_to_string_none_input(self): method test_convert_list_to_string_empty_list (line 67) | def test_convert_list_to_string_empty_list(self): method test_convert_list_to_string_single_item (line 72) | def test_convert_list_to_string_single_item(self): method test_convert_list_to_string_multiple_items (line 77) | def test_convert_list_to_string_multiple_items(self): method test_convert_list_to_string_mixed_types (line 82) | def test_convert_list_to_string_mixed_types(self): method test_convert_list_to_string_zero_and_negative (line 87) | def test_convert_list_to_string_zero_and_negative(self): FILE: test/common/test_mocks.py function _ensure_path (line 18) | def _ensure_path(path: Path) -> None: function _create_module (line 24) | def _create_module(name: str, **attrs: Any) -> types.ModuleType: function bootstrap_test_env (line 34) | def bootstrap_test_env() -> Dict[str, Any]: function setup_common_mocks (line 91) | def setup_common_mocks(): function patch_minio_client_initialization (line 201) | def patch_minio_client_initialization(): function mock_constants (line 222) | def mock_constants(): FILE: test/run_all_test.py function check_required_packages (line 16) | def check_required_packages(): function run_tests (line 49) | def run_tests(): function generate_error_report (line 430) | def generate_error_report(test_results): FILE: test/sdk/container/test_container_client_base.py class TestContainerConfig (line 17) | class TestContainerConfig: method test_container_config_is_abstract (line 20) | def test_container_config_is_abstract(self): method test_container_config_has_abstract_methods (line 25) | def test_container_config_has_abstract_methods(self): method test_container_config_subclass_must_implement_methods (line 31) | def test_container_config_subclass_must_implement_methods(self): class TestContainerClient (line 45) | class TestContainerClient: method test_container_client_is_abstract (line 48) | def test_container_client_is_abstract(self): method test_container_client_has_abstract_methods (line 53) | def test_container_client_has_abstract_methods(self): method test_container_client_subclass_must_implement_methods (line 62) | def test_container_client_subclass_must_implement_methods(self): method test_container_client_is_abc (line 70) | def test_container_client_is_abc(self): method test_container_config_is_abc (line 74) | def test_container_config_is_abc(self): FILE: test/sdk/container/test_container_client_factory.py class TestRegisterContainerClient (line 23) | class TestRegisterContainerClient: method test_register_container_client (line 26) | def test_register_container_client(self): method test_register_container_client_overwrite (line 67) | def test_register_container_client_overwrite(self): class TestCreateContainerClientFromConfig (line 139) | class TestCreateContainerClientFromConfig: method test_create_container_client_with_docker_config (line 142) | def test_create_container_client_with_docker_config(self): method test_create_container_client_with_none (line 156) | def test_create_container_client_with_none(self): method test_create_container_client_unsupported_type (line 168) | def test_create_container_client_unsupported_type(self): method test_create_container_client_custom_type (line 183) | def test_create_container_client_custom_type(self): method test_create_container_client_docker_default (line 224) | def test_create_container_client_docker_default(self): method test_create_container_client_docker_registered (line 235) | def test_create_container_client_docker_registered(self): FILE: test/sdk/container/test_docker_client.py function mock_docker_config (line 29) | def mock_docker_config(): function mock_docker_client (line 36) | def mock_docker_client(): function docker_container_client (line 44) | def docker_container_client(mock_docker_config, mock_docker_client): function mock_container (line 54) | def mock_container(): class TestDockerContainerClientInit (line 77) | class TestDockerContainerClientInit: method test_init_success (line 80) | def test_init_success(self, mock_docker_config, mock_docker_client): method test_init_docker_connection_failure (line 90) | def test_init_docker_connection_failure(self, mock_docker_config): method test_init_docker_ping_failure (line 101) | def test_init_docker_ping_failure(self, mock_docker_config): class TestIsRunningInDocker (line 117) | class TestIsRunningInDocker: method test_is_running_in_docker_with_dockerenv (line 120) | def test_is_running_in_docker_with_dockerenv(self): method test_is_running_in_docker_with_cgroup_docker (line 133) | def test_is_running_in_docker_with_cgroup_docker(self): method test_is_running_in_docker_with_cgroup_containerd (line 154) | def test_is_running_in_docker_with_cgroup_containerd(self): method test_is_running_in_docker_ignores_env_var (line 175) | def test_is_running_in_docker_ignores_env_var(self): method test_is_running_in_docker_not_in_docker (line 186) | def test_is_running_in_docker_not_in_docker(self): method test_is_running_in_docker_cgroup_read_exception (line 197) | def test_is_running_in_docker_cgroup_read_exception(self): method test_is_running_in_docker_cgroup_no_docker (line 216) | def test_is_running_in_docker_cgroup_no_docker(self): class TestGetServiceHost (line 243) | class TestGetServiceHost: method test_get_service_host_in_docker (line 246) | def test_get_service_host_in_docker(self): method test_get_service_host_local (line 252) | def test_get_service_host_local(self): class TestFindFreePort (line 264) | class TestFindFreePort: method test_find_free_port_success (line 267) | def test_find_free_port_success(self, docker_container_client): method test_find_free_port_second_attempt (line 281) | def test_find_free_port_second_attempt(self, docker_container_client): method test_find_free_port_no_available_port (line 295) | def test_find_free_port_no_available_port(self, docker_container_client): method test_find_free_port_custom_start_port (line 308) | def test_find_free_port_custom_start_port(self, docker_container_client): class TestGenerateContainerName (line 327) | class TestGenerateContainerName: method test_generate_container_name_basic (line 330) | def test_generate_container_name_basic(self, docker_container_client): method test_generate_container_name_with_special_chars (line 336) | def test_generate_container_name_with_special_chars(self, docker_conta... method test_generate_container_name_long_user_id (line 344) | def test_generate_container_name_long_user_id(self, docker_container_c... method test_generate_container_name_short_user_id (line 352) | def test_generate_container_name_short_user_id(self, docker_container_... class TestStartContainer (line 364) | class TestStartContainer: method test_start_container_existing_running (line 368) | async def test_start_container_existing_running(self, docker_container... method test_start_container_existing_stopped (line 387) | async def test_start_container_existing_stopped(self, docker_container... method test_start_container_not_found (line 414) | async def test_start_container_not_found(self, docker_container_client): method test_start_container_existing_check_error (line 438) | async def test_start_container_existing_check_error(self, docker_conta... method test_start_container_find_port_failure (line 462) | async def test_start_container_find_port_failure(self, docker_containe... method test_start_container_with_env_vars (line 477) | async def test_start_container_with_env_vars(self, docker_container_cl... method test_start_container_npx_command (line 509) | async def test_start_container_npx_command(self, docker_container_clie... method test_start_container_node_command (line 536) | async def test_start_container_node_command(self, docker_container_cli... method test_start_container_python_command (line 562) | async def test_start_container_python_command(self, docker_container_c... method test_start_container_generic_command (line 589) | async def test_start_container_generic_command(self, docker_container_... method test_start_container_api_error (line 615) | async def test_start_container_api_error(self, docker_container_client): method test_start_container_generic_exception (line 632) | async def test_start_container_generic_exception(self, docker_containe... method test_start_container_health_check_failure_container_stopped (line 649) | async def test_start_container_health_check_failure_container_stopped(... method test_start_container_health_check_failure_container_not_found (line 674) | async def test_start_container_health_check_failure_container_not_foun... method test_start_container_health_check_failure_but_running (line 699) | async def test_start_container_health_check_failure_but_running(self, ... method test_start_container_existing_no_port_mapping (line 726) | async def test_start_container_existing_no_port_mapping(self, docker_c... method test_start_container_npm_command (line 756) | async def test_start_container_npm_command(self, docker_container_clie... method test_start_container_python3_command (line 782) | async def test_start_container_python3_command(self, docker_container_... method test_start_container_bash_command (line 809) | async def test_start_container_bash_command(self, docker_container_cli... method test_start_container_existing_empty_host_mappings (line 836) | async def test_start_container_existing_empty_host_mappings(self, dock... method test_start_container_existing_no_hostport (line 868) | async def test_start_container_existing_no_hostport(self, docker_conta... method test_start_container_existing_multiple_ports (line 900) | async def test_start_container_existing_multiple_ports(self, docker_co... method test_start_container_existing_no_port_mapping_with_host_port (line 926) | async def test_start_container_existing_no_port_mapping_with_host_port... method test_start_container_with_none_full_command (line 951) | async def test_start_container_with_none_full_command(self, docker_con... method test_start_container_with_empty_full_command (line 981) | async def test_start_container_with_empty_full_command(self, docker_co... method test_start_container_with_custom_image (line 1011) | async def test_start_container_with_custom_image(self, docker_containe... method test_start_container_with_host_port_provided (line 1039) | async def test_start_container_with_host_port_provided(self, docker_co... class TestWaitForServiceReady (line 1074) | class TestWaitForServiceReady: method test_wait_for_service_ready_success (line 1078) | async def test_wait_for_service_ready_success(self, docker_container_c... method test_wait_for_service_ready_retries (line 1089) | async def test_wait_for_service_ready_retries(self, docker_container_c... method test_wait_for_service_ready_max_retries_exceeded (line 1108) | async def test_wait_for_service_ready_max_retries_exceeded(self, docke... method test_wait_for_service_ready_exception (line 1121) | async def test_wait_for_service_ready_exception(self, docker_container... method test_wait_for_service_ready_loop_iterations (line 1134) | async def test_wait_for_service_ready_loop_iterations(self, docker_con... class TestStopContainer (line 1161) | class TestStopContainer: method test_stop_container_success (line 1165) | async def test_stop_container_success(self, docker_container_client, m... method test_stop_container_not_found (line 1177) | async def test_stop_container_not_found(self, docker_container_client): method test_stop_container_api_error (line 1187) | async def test_stop_container_api_error(self, docker_container_client,... method test_stop_container_generic_exception (line 1196) | async def test_stop_container_generic_exception(self, docker_container... class TestRemoveContainer (line 1210) | class TestRemoveContainer: method test_remove_container_success (line 1214) | async def test_remove_container_success(self, docker_container_client,... method test_remove_container_not_found (line 1225) | async def test_remove_container_not_found(self, docker_container_client): method test_remove_container_api_error (line 1235) | async def test_remove_container_api_error(self, docker_container_clien... method test_remove_container_generic_exception (line 1244) | async def test_remove_container_generic_exception(self, docker_contain... class TestListContainers (line 1258) | class TestListContainers: method test_list_containers_no_filters (line 1261) | def test_list_containers_no_filters(self, docker_container_client, moc... method test_list_containers_with_tenant_filter (line 1275) | def test_list_containers_with_tenant_filter(self, docker_container_cli... method test_list_containers_with_tenant_filter_no_match (line 1287) | def test_list_containers_with_tenant_filter_no_match(self, docker_cont... method test_list_containers_with_service_filter (line 1298) | def test_list_containers_with_service_filter(self, docker_container_cl... method test_list_containers_with_service_filter_no_match (line 1309) | def test_list_containers_with_service_filter_no_match(self, docker_con... method test_list_containers_with_both_filters (line 1320) | def test_list_containers_with_both_filters(self, docker_container_clie... method test_list_containers_no_port_mapping (line 1333) | def test_list_containers_no_port_mapping(self, docker_container_client): method test_list_containers_empty_port_mapping (line 1354) | def test_list_containers_empty_port_mapping(self, docker_container_cli... method test_list_containers_host_port_none_or_empty (line 1376) | def test_list_containers_host_port_none_or_empty(self, docker_containe... method test_list_containers_exception (line 1403) | def test_list_containers_exception(self, docker_container_client): method test_list_containers_service_filter_special_chars (line 1412) | def test_list_containers_service_filter_special_chars(self, docker_con... class TestGetContainerLogs (line 1432) | class TestGetContainerLogs: method test_get_container_logs_success (line 1435) | def test_get_container_logs_success(self, docker_container_client, moc... method test_get_container_logs_custom_tail (line 1447) | def test_get_container_logs_custom_tail(self, docker_container_client,... method test_get_container_logs_not_found (line 1458) | def test_get_container_logs_not_found(self, docker_container_client): method test_get_container_logs_decode_error (line 1468) | def test_get_container_logs_decode_error(self, docker_container_client... method test_get_container_logs_exception (line 1479) | def test_get_container_logs_exception(self, docker_container_client): class TestGetContainerStatus (line 1494) | class TestGetContainerStatus: method test_get_container_status_success (line 1497) | def test_get_container_status_success(self, docker_container_client, m... method test_get_container_status_not_found (line 1512) | def test_get_container_status_not_found(self, docker_container_client): method test_get_container_status_no_port_mapping (line 1522) | def test_get_container_status_no_port_mapping(self, docker_container_c... method test_get_container_status_exception (line 1545) | def test_get_container_status_exception(self, docker_container_client): method test_get_container_status_empty_port_mapping (line 1555) | def test_get_container_status_empty_port_mapping(self, docker_containe... method test_get_container_status_host_port_none_or_empty (line 1579) | def test_get_container_status_host_port_none_or_empty(self, docker_con... class TestEnsureNetwork (line 1614) | class TestEnsureNetwork: method test_ensure_network_exists (line 1617) | def test_ensure_network_exists(self, docker_container_client): method test_ensure_network_create_new (line 1628) | def test_ensure_network_create_new(self, docker_container_client): method test_ensure_network_race_condition (line 1642) | def test_ensure_network_race_condition(self, docker_container_client): method test_ensure_network_create_fails_then_get_fails (line 1657) | def test_ensure_network_create_fails_then_get_fails(self, docker_conta... method test_ensure_network_get_api_error (line 1669) | def test_ensure_network_get_api_error(self, docker_container_client): class TestGetContainerServicePort (line 1683) | class TestGetContainerServicePort: method test_get_container_service_port_from_env (line 1686) | def test_get_container_service_port_from_env(self): method test_get_container_service_port_from_published_port (line 1698) | def test_get_container_service_port_from_published_port(self): method test_get_container_service_port_env_takes_precedence (line 1715) | def test_get_container_service_port_env_takes_precedence(self): method test_get_container_service_port_no_env_no_published (line 1732) | def test_get_container_service_port_no_env_no_published(self): method test_get_container_service_port_empty_env_list (line 1747) | def test_get_container_service_port_empty_env_list(self): method test_get_container_service_port_env_exception (line 1764) | def test_get_container_service_port_env_exception(self): method test_get_container_service_port_published_port_exception (line 1781) | def test_get_container_service_port_published_port_exception(self): method test_get_container_service_port_multiple_published_ports (line 1796) | def test_get_container_service_port_multiple_published_ports(self): method test_get_container_service_port_empty_host_mappings (line 1815) | def test_get_container_service_port_empty_host_mappings(self): method test_get_container_service_port_no_hostport (line 1832) | def test_get_container_service_port_no_hostport(self): method test_get_container_service_port_non_string_env_item (line 1849) | def test_get_container_service_port_non_string_env_item(self): class TestStartContainerInDocker (line 1872) | class TestStartContainerInDocker: method test_start_container_in_docker_uses_port_env (line 1876) | async def test_start_container_in_docker_uses_port_env(self, docker_co... method test_start_container_in_docker_existing_uses_port_env (line 1915) | async def test_start_container_in_docker_existing_uses_port_env(self, ... method test_start_container_in_docker_no_port_env_fallback (line 1942) | async def test_start_container_in_docker_no_port_env_fallback(self, do... method test_start_container_in_docker_default_port (line 1969) | async def test_start_container_in_docker_default_port(self, docker_con... method test_start_container_in_docker_existing_no_port (line 1999) | async def test_start_container_in_docker_existing_no_port(self, docker... class TestListContainersInDocker (line 2039) | class TestListContainersInDocker: method test_list_containers_in_docker_uses_port_env (line 2042) | def test_list_containers_in_docker_uses_port_env(self, docker_containe... method test_list_containers_in_docker_no_port_env (line 2067) | def test_list_containers_in_docker_no_port_env(self, docker_container_... class TestGetContainerStatusInDocker (line 2098) | class TestGetContainerStatusInDocker: method test_get_container_status_in_docker_uses_port_env (line 2101) | def test_get_container_status_in_docker_uses_port_env(self, docker_con... method test_get_container_status_in_docker_no_port_env (line 2128) | def test_get_container_status_in_docker_no_port_env(self, docker_conta... FILE: test/sdk/container/test_docker_config.py class TestDockerContainerConfig (line 13) | class TestDockerContainerConfig: method test_init_with_no_parameters (line 16) | def test_init_with_no_parameters(self): method test_init_with_docker_socket_path (line 23) | def test_init_with_docker_socket_path(self): method test_container_type_property (line 32) | def test_container_type_property(self): method test_base_url_property_cached (line 38) | def test_base_url_property_cached(self): method test_base_url_windows_default_socket (line 51) | def test_base_url_windows_default_socket(self): method test_base_url_unix_default_socket (line 58) | def test_base_url_unix_default_socket(self): method test_base_url_darwin_default_socket (line 65) | def test_base_url_darwin_default_socket(self): method test_base_url_windows_custom_socket (line 72) | def test_base_url_windows_custom_socket(self): method test_base_url_unix_custom_socket (line 79) | def test_base_url_unix_custom_socket(self): method test_normalize_base_url_windows_empty (line 87) | def test_normalize_base_url_windows_empty(self): method test_normalize_base_url_windows_named_pipe_forward_slash (line 95) | def test_normalize_base_url_windows_named_pipe_forward_slash(self): method test_normalize_base_url_windows_named_pipe_backslash (line 103) | def test_normalize_base_url_windows_named_pipe_backslash(self): method test_normalize_base_url_windows_other_value (line 111) | def test_normalize_base_url_windows_other_value(self): method test_normalize_base_url_unix_empty (line 119) | def test_normalize_base_url_unix_empty(self): method test_normalize_base_url_unix_absolute_path (line 127) | def test_normalize_base_url_unix_absolute_path(self): method test_normalize_base_url_unix_relative_path (line 135) | def test_normalize_base_url_unix_relative_path(self): method test_normalize_base_url_unix_with_scheme (line 143) | def test_normalize_base_url_unix_with_scheme(self): method test_normalize_base_url_darwin_absolute_path (line 151) | def test_normalize_base_url_darwin_absolute_path(self): method test_get_default_socket_path_windows (line 158) | def test_get_default_socket_path_windows(self): method test_get_default_socket_path_unix (line 166) | def test_get_default_socket_path_unix(self): method test_get_default_socket_path_darwin (line 174) | def test_get_default_socket_path_darwin(self): method test_validate_always_passes (line 182) | def test_validate_always_passes(self): method test_base_url_multiple_access (line 190) | def test_base_url_multiple_access(self): method test_base_url_uses_default_socket_path (line 200) | def test_base_url_uses_default_socket_path(self): FILE: test/sdk/core/agents/test_core_agent.py class MockAgentError (line 13) | class MockAgentError(Exception): method __init__ (line 14) | def __init__(self, message): class MockAgentMaxStepsError (line 19) | class MockAgentMaxStepsError(Exception): class MockActionStep (line 32) | class MockActionStep: method __init__ (line 33) | def __init__(self, *args, **kwargs): class MockTaskStep (line 48) | class MockTaskStep: method __init__ (line 49) | def __init__(self, *args, **kwargs): class MockSystemPromptStep (line 53) | class MockSystemPromptStep: method __init__ (line 54) | def __init__(self, *args, **kwargs): class MockFinalAnswerStep (line 57) | class MockFinalAnswerStep: method __init__ (line 58) | def __init__(self, *args, **kwargs): class MockPlanningStep (line 65) | class MockPlanningStep: method __init__ (line 66) | def __init__(self, *args, **kwargs): class MockActionOutput (line 69) | class MockActionOutput: method __init__ (line 70) | def __init__(self, *args, **kwargs): class MockRunResult (line 74) | class MockRunResult: method __init__ (line 75) | def __init__(self, *args, **kwargs): class MockCodeOutput (line 82) | class MockCodeOutput: method __init__ (line 84) | def __init__(self, output=None, logs="", is_final_answer=False): function mock_truncate_content (line 115) | def mock_truncate_content(content, max_length=1000): class MockCodeAgent (line 161) | class MockCodeAgent: method __init__ (line 162) | def __init__(self, prompt_templates=None, *args, **kwargs): function mock_observer (line 178) | def mock_observer(): function core_agent_instance (line 185) | def core_agent_instance(mock_observer): function reset_token_usage_mock (line 237) | def reset_token_usage_mock(): function test_run_normal_execution (line 249) | def test_run_normal_execution(core_agent_instance): function test_run_with_max_steps_reached (line 275) | def test_run_with_max_steps_reached(core_agent_instance): function test_run_with_stop_event (line 313) | def test_run_with_stop_event(core_agent_instance): function test_run_with_final_answer_error (line 343) | def test_run_with_final_answer_error(core_agent_instance): function test_run_with_final_answer_error_and_model_output (line 363) | def test_run_with_final_answer_error_and_model_output(core_agent_instance): function test_run_with_agent_error_updated (line 389) | def test_run_with_agent_error_updated(core_agent_instance): function test_run_with_agent_parse_error_branch_updated (line 411) | def test_run_with_agent_parse_error_branch_updated(core_agent_instance): function test_run_stream_validates_final_answer_when_checks_enabled (line 435) | def test_run_stream_validates_final_answer_when_checks_enabled(core_agen... function test_convert_code_format_display_replacements (line 450) | def test_convert_code_format_display_replacements(): function test_convert_code_format_display_without_end_code (line 470) | def test_convert_code_format_display_without_end_code(): function test_convert_code_format_legacy_replacements (line 491) | def test_convert_code_format_legacy_replacements(): function test_parse_code_blobs_run_format (line 515) | def test_parse_code_blobs_run_format(): function test_parse_code_blobs_python_match (line 529) | def test_parse_code_blobs_python_match(): function test_parse_code_blobs_display_format_raises_value_error (line 543) | def test_parse_code_blobs_display_format_raises_value_error(): function test_parse_code_blobs_py_match (line 559) | def test_parse_code_blobs_py_match(): function test_parse_code_blobs_multiple_matches (line 573) | def test_parse_code_blobs_multiple_matches(): function test_parse_code_blobs_with_whitespace (line 590) | def test_parse_code_blobs_with_whitespace(): function test_parse_code_blobs_no_match (line 606) | def test_parse_code_blobs_no_match(): function test_parse_code_blobs_javascript_no_match (line 620) | def test_parse_code_blobs_javascript_no_match(): function test_parse_code_blobs_java_no_match (line 634) | def test_parse_code_blobs_java_no_match(): function test_parse_code_blobs_direct_python_code (line 648) | def test_parse_code_blobs_direct_python_code(): function test_parse_code_blobs_invalid_python_syntax (line 659) | def test_parse_code_blobs_invalid_python_syntax(): function test_parse_code_blobs_generic_error (line 672) | def test_parse_code_blobs_generic_error(): function test_parse_code_blobs_single_line_content (line 685) | def test_parse_code_blobs_single_line_content(): function test_parse_code_blobs_mixed_content (line 697) | def test_parse_code_blobs_mixed_content(): function test_step_stream_parse_success (line 714) | def test_step_stream_parse_success(core_agent_instance): function test_step_stream_structured_outputs_with_stop_sequence (line 754) | def test_step_stream_structured_outputs_with_stop_sequence(core_agent_in... function test_step_stream_skips_execution_for_display_only (line 781) | def test_step_stream_skips_execution_for_display_only(core_agent_instance): function test_step_stream_parse_failure_raises_final_answer_error (line 811) | def test_step_stream_parse_failure_raises_final_answer_error(core_agent_... function test_step_stream_model_generation_error (line 842) | def test_step_stream_model_generation_error(core_agent_instance): function test_step_stream_execution_success (line 869) | def test_step_stream_execution_success(core_agent_instance): function test_step_stream_execution_final_answer (line 911) | def test_step_stream_execution_final_answer(core_agent_instance): function test_step_stream_execution_error (line 950) | def test_step_stream_execution_error(core_agent_instance): function test_step_stream_observer_calls (line 994) | def test_step_stream_observer_calls(core_agent_instance): function test_step_stream_execution_with_logs (line 1050) | def test_step_stream_execution_with_logs(core_agent_instance): function test_step_stream_execution_error_with_print_outputs (line 1096) | def test_step_stream_execution_error_with_print_outputs(core_agent_insta... function test_step_stream_execution_error_with_import_warning (line 1139) | def test_step_stream_execution_error_with_import_warning(core_agent_inst... function test_step_stream_execution_error_without_print_outputs (line 1186) | def test_step_stream_execution_error_without_print_outputs(core_agent_in... function test_step_stream_execution_with_none_output (line 1224) | def test_step_stream_execution_with_none_output(core_agent_instance): function test_run_with_additional_args (line 1273) | def test_run_with_additional_args(core_agent_instance): function test_run_with_stream_true (line 1316) | def test_run_with_stream_true(core_agent_instance): function test_run_with_reset_false (line 1354) | def test_run_with_reset_false(core_agent_instance): function test_run_with_images (line 1395) | def test_run_with_images(core_agent_instance): function test_run_return_full_result_success_state (line 1442) | def test_run_return_full_result_success_state(core_agent_instance): function test_run_return_full_result_max_steps_error (line 1478) | def test_run_return_full_result_max_steps_error(core_agent_instance): function test_run_without_python_executor (line 1522) | def test_run_without_python_executor(core_agent_instance): function test_call_method_success (line 1565) | def test_call_method_success(core_agent_instance): function test_call_method_with_run_result_return (line 1603) | def test_call_method_with_run_result_return(core_agent_instance): function test_call_method_with_run_summary (line 1628) | def test_call_method_with_run_summary(core_agent_instance): function test_call_method_observer_exception (line 1678) | def test_call_method_observer_exception(core_agent_instance): function test_call_method_with_kwargs (line 1722) | def test_call_method_with_kwargs(core_agent_instance): FILE: test/sdk/core/agents/test_nexent_agent.py class _ActionStep (line 29) | class _ActionStep: method __init__ (line 30) | def __init__(self, step_number=None, timing=None, action_output=None, ... class _TaskStep (line 37) | class _TaskStep: method __init__ (line 38) | def __init__(self, task=None): class _AgentText (line 42) | class _AgentText: method __init__ (line 43) | def __init__(self, content: str = ""): method to_string (line 46) | def to_string(self): class _TestCoreAgent (line 81) | class _TestCoreAgent: class _MockMessageObserver (line 104) | class _MockMessageObserver: method add_message (line 105) | def add_message(self, *args, **kwargs): class _MockProcessType (line 109) | class _MockProcessType: class _EnumStub (line 158) | class _EnumStub: method __init__ (line 159) | def __init__(self, value): class _MockToolCategory (line 163) | class _MockToolCategory: class _MockToolSign (line 171) | class _MockToolSign: function reset_mocks (line 293) | def reset_mocks(): function patch_convert_code_format (line 300) | def patch_convert_code_format(): function mock_observer (line 317) | def mock_observer(): function nexent_agent_instance (line 324) | def nexent_agent_instance(mock_observer): function mock_model_config (line 332) | def mock_model_config(): function mock_deep_thinking_model_config (line 346) | def mock_deep_thinking_model_config(): function nexent_agent_with_models (line 360) | def nexent_agent_with_models(mock_observer, mock_model_config, mock_deep... function mock_agent_config (line 369) | def mock_agent_config(): function mock_core_agent (line 384) | def mock_core_agent(): function test_nexent_agent_initialization_success (line 401) | def test_nexent_agent_initialization_success(mock_observer): function test_nexent_agent_initialization_with_mcp_tools (line 414) | def test_nexent_agent_initialization_with_mcp_tools(mock_observer): function test_nexent_agent_initialization_invalid_observer (line 424) | def test_nexent_agent_initialization_invalid_observer(): function test_create_model_success (line 438) | def test_create_model_success(nexent_agent_with_models, mock_model_config): function test_create_model_deep_thinking_success (line 466) | def test_create_model_deep_thinking_success(nexent_agent_with_models, mo... function test_create_model_not_found (line 494) | def test_create_model_not_found(nexent_agent_with_models): function test_create_model_empty_config_list (line 500) | def test_create_model_empty_config_list(mock_observer): function test_create_model_with_none_config_list (line 509) | def test_create_model_with_none_config_list(mock_observer): function test_create_model_with_multiple_configs (line 518) | def test_create_model_with_multiple_configs(mock_observer): function test_create_langchain_tool_success (line 558) | def test_create_langchain_tool_success(nexent_agent_instance): function test_create_tool_with_langchain_source (line 587) | def test_create_tool_with_langchain_source(nexent_agent_instance): function test_create_tool_with_local_source (line 613) | def test_create_tool_with_local_source(nexent_agent_instance): function test_create_local_tool_success (line 637) | def test_create_local_tool_success(nexent_agent_instance): function test_create_local_tool_analyze_text_file_tool (line 671) | def test_create_local_tool_analyze_text_file_tool(nexent_agent_instance): function test_create_local_tool_class_not_found (line 713) | def test_create_local_tool_class_not_found(nexent_agent_instance): function test_create_local_tool_knowledge_base_search_tool_success (line 730) | def test_create_local_tool_knowledge_base_search_tool_success(nexent_age... function test_create_local_tool_knowledge_base_search_tool_with_conflicting_params (line 777) | def test_create_local_tool_knowledge_base_search_tool_with_conflicting_p... function test_create_local_tool_knowledge_base_search_tool_with_none_defaults (line 836) | def test_create_local_tool_knowledge_base_search_tool_with_none_defaults... function test_create_local_tool_analyze_text_file_tool (line 877) | def test_create_local_tool_analyze_text_file_tool(nexent_agent_instance): function test_create_local_tool_analyze_image_tool (line 920) | def test_create_local_tool_analyze_image_tool(nexent_agent_instance): function test_create_local_tool_analyze_image_tool (line 960) | def test_create_local_tool_analyze_image_tool(nexent_agent_instance): function test_create_local_tool_with_observer_attribute (line 1000) | def test_create_local_tool_with_observer_attribute(nexent_agent_instance): function test_create_tool_with_mcp_source (line 1034) | def test_create_tool_with_mcp_source(nexent_agent_instance): function test_create_tool_invalid_source (line 1058) | def test_create_tool_invalid_source(nexent_agent_instance): function test_create_tool_invalid_config_type (line 1074) | def test_create_tool_invalid_config_type(nexent_agent_instance): function test_create_tool_exception_handling (line 1080) | def test_create_tool_exception_handling(nexent_agent_instance): function test_create_single_agent_invalid_config_type (line 1102) | def test_create_single_agent_invalid_config_type(nexent_agent_instance): function test_create_single_agent_tool_creation_error (line 1108) | def test_create_single_agent_tool_creation_error(nexent_agent_instance, ... function test_create_single_agent_general_error (line 1130) | def test_create_single_agent_general_error(nexent_agent_instance, mock_a... function test_add_history_to_agent_none_history (line 1137) | def test_add_history_to_agent_none_history(nexent_agent_instance, mock_c... function test_add_history_to_agent_user_and_assistant_history (line 1149) | def test_add_history_to_agent_user_and_assistant_history(nexent_agent_in... function test_add_history_to_agent_invalid_agent_type (line 1173) | def test_add_history_to_agent_invalid_agent_type(nexent_agent_instance): function test_add_history_to_agent_invalid_history_items (line 1181) | def test_add_history_to_agent_invalid_history_items(nexent_agent_instanc... function test_agent_run_with_observer_success_with_agent_text (line 1191) | def test_agent_run_with_observer_success_with_agent_text(nexent_agent_in... function test_agent_run_with_observer_success_with_string_final_answer (line 1221) | def test_agent_run_with_observer_success_with_string_final_answer(nexent... function test_agent_run_with_observer_with_error_in_step (line 1245) | def test_agent_run_with_observer_with_error_in_step(nexent_agent_instanc... function test_agent_run_with_observer_skips_non_action_step (line 1267) | def test_agent_run_with_observer_skips_non_action_step(nexent_agent_inst... function test_agent_run_with_observer_with_stop_event_set (line 1291) | def test_agent_run_with_observer_with_stop_event_set(nexent_agent_instan... function test_agent_run_with_observer_with_exception (line 1314) | def test_agent_run_with_observer_with_exception(nexent_agent_instance, m... function test_agent_run_with_observer_invalid_agent_type (line 1330) | def test_agent_run_with_observer_invalid_agent_type(nexent_agent_instance): function test_agent_run_with_observer_with_reset_false (line 1338) | def test_agent_run_with_observer_with_reset_false(nexent_agent_instance,... function test_agent_run_with_observer_removes_think_prefix_chinese_colon (line 1360) | def test_agent_run_with_observer_removes_think_prefix_chinese_colon(nexe... function test_agent_run_with_observer_removes_think_prefix_english_colon (line 1391) | def test_agent_run_with_observer_removes_think_prefix_english_colon(nexe... function test_agent_run_with_observer_preserves_think_prefix_without_two_newlines (line 1420) | def test_agent_run_with_observer_preserves_think_prefix_without_two_newl... function test_agent_run_with_observer_removes_both_think_tag_and_think_prefix (line 1452) | def test_agent_run_with_observer_removes_both_think_tag_and_think_prefix... function test_agent_run_with_observer_think_prefix_in_middle (line 1482) | def test_agent_run_with_observer_think_prefix_in_middle(nexent_agent_ins... function test_agent_run_with_observer_no_think_prefix (line 1512) | def test_agent_run_with_observer_no_think_prefix(nexent_agent_instance, ... function test_agent_run_with_observer_think_prefix_with_agent_text (line 1537) | def test_agent_run_with_observer_think_prefix_with_agent_text(nexent_age... function test_create_local_tool_datamate_search_tool_success (line 1568) | def test_create_local_tool_datamate_search_tool_success(nexent_agent_ins... function test_create_local_tool_datamate_search_tool_with_none_defaults (line 1608) | def test_create_local_tool_datamate_search_tool_with_none_defaults(nexen... function test_create_local_tool_datamate_search_tool_success (line 1646) | def test_create_local_tool_datamate_search_tool_success(nexent_agent_ins... function test_create_local_tool_datamate_search_tool_with_none_defaults (line 1686) | def test_create_local_tool_datamate_search_tool_with_none_defaults(nexen... FILE: test/sdk/core/agents/test_run_agent.py class _MockToolCollection (line 29) | class _MockToolCollection(MagicMock): method from_mcp (line 31) | def from_mcp(cls, *args, **kwargs): # pylint: disable=unused-argument class _DummyOpenAIServerModel (line 64) | class _DummyOpenAIServerModel: method __init__ (line 65) | def __init__(self, *args, **kwargs): function mock_observer (line 162) | def mock_observer(): function mock_memory_context (line 170) | def mock_memory_context(): function basic_agent_run_info (line 189) | def basic_agent_run_info(mock_observer): function test_agent_run_thread_local_flow (line 221) | def test_agent_run_thread_local_flow(basic_agent_run_info, monkeypatch): function test_agent_run_thread_mcp_flow (line 247) | def test_agent_run_thread_mcp_flow(basic_agent_run_info, mock_memory_con... function test_agent_run_thread_mcp_flow_with_explicit_transport (line 286) | def test_agent_run_thread_mcp_flow_with_explicit_transport(basic_agent_r... function test_agent_run_thread_mcp_flow_mixed_formats (line 308) | def test_agent_run_thread_mcp_flow_mixed_formats(basic_agent_run_info, m... function test_detect_transport (line 338) | def test_detect_transport(): function test_normalize_mcp_config (line 361) | def test_normalize_mcp_config(): function test_agent_run_thread_handles_internal_exception (line 490) | def test_agent_run_thread_handles_internal_exception(basic_agent_run_inf... function test_agent_run_streams_messages_while_thread_alive (line 510) | async def test_agent_run_streams_messages_while_thread_alive(basic_agent... function test_agent_run_skips_loop_when_thread_not_alive (line 553) | async def test_agent_run_skips_loop_when_thread_not_alive(basic_agent_ru... FILE: test/sdk/core/models/test_embedding_model.py class DummyResponse (line 27) | class DummyResponse: method __init__ (line 28) | def __init__(self, status_code=200, json_data=None): method raise_for_status (line 32) | def raise_for_status(self): method json (line 36) | def json(self): function openai_embedding_instance (line 45) | def openai_embedding_instance(): function jina_embedding_instance (line 58) | def jina_embedding_instance(): function test_dimension_check_success (line 70) | async def test_dimension_check_success(openai_embedding_instance): function test_dimension_check_failure (line 87) | async def test_dimension_check_failure(openai_embedding_instance): function test_jina_dimension_check_success (line 107) | async def test_jina_dimension_check_success(jina_embedding_instance): function test_jina_dimension_check_failure (line 124) | async def test_jina_dimension_check_failure(jina_embedding_instance): function test_openai_get_embeddings_success_returns_list (line 143) | def test_openai_get_embeddings_success_returns_list(openai_embedding_ins... function test_openai_get_embeddings_with_metadata (line 160) | def test_openai_get_embeddings_with_metadata(openai_embedding_instance): function test_openai_get_embeddings_timeout_retry_succeeds (line 178) | def test_openai_get_embeddings_timeout_retry_succeeds(openai_embedding_i... function test_openai_get_embeddings_timeout_exhausts_raises (line 210) | def test_openai_get_embeddings_timeout_exhausts_raises(openai_embedding_... function test_jina_get_embeddings_converts_text_and_delegates (line 238) | def test_jina_get_embeddings_converts_text_and_delegates(jina_embedding_... function test_jina_get_embeddings_timeout_retry_succeeds (line 260) | def test_jina_get_embeddings_timeout_retry_succeeds(jina_embedding_insta... function test_jina_get_embeddings_timeout_exhausts_raises (line 291) | def test_jina_get_embeddings_timeout_exhausts_raises(jina_embedding_inst... function test_jina_get_multimodal_embeddings_parses_embeddings (line 313) | def test_jina_get_multimodal_embeddings_parses_embeddings(jina_embedding... function test_jina_get_multimodal_embeddings_with_metadata (line 342) | def test_jina_get_multimodal_embeddings_with_metadata(jina_embedding_ins... function test_jina_get_multimodal_embeddings_timeout_retry_succeeds (line 367) | def test_jina_get_multimodal_embeddings_timeout_retry_succeeds(jina_embe... function test_jina_get_multimodal_embeddings_timeout_exhausts_raises (line 407) | def test_jina_get_multimodal_embeddings_timeout_exhausts_raises( function test_jina_get_embeddings_returns_empty_when_attempts_skipped (line 435) | def test_jina_get_embeddings_returns_empty_when_attempts_skipped(jina_em... function test_jina_get_multimodal_embeddings_returns_empty_when_attempts_skipped (line 445) | def test_jina_get_multimodal_embeddings_returns_empty_when_attempts_skip... function test_jina_dimension_check_connection_error_returns_empty (line 456) | async def test_jina_dimension_check_connection_error_returns_empty(jina_... function test_openai_get_embeddings_string_prepares_input_list (line 469) | def test_openai_get_embeddings_string_prepares_input_list(openai_embeddi... function test_openai_make_request_invokes_requests_post (line 491) | def test_openai_make_request_invokes_requests_post(openai_embedding_inst... function test_openai_get_embeddings_returns_empty_when_attempts_skipped (line 509) | def test_openai_get_embeddings_returns_empty_when_attempts_skipped(opena... function test_openai_dimension_check_connection_error_returns_empty (line 520) | async def test_openai_dimension_check_connection_error_returns_empty(ope... function test_api_key_normalization_and_verify_jina (line 532) | def test_api_key_normalization_and_verify_jina(monkeypatch): function test_api_key_normalization_and_verify_openaicompatible (line 552) | def test_api_key_normalization_and_verify_openaicompatible(monkeypatch): function test_textembedding_super_init_executes (line 570) | def test_textembedding_super_init_executes(): function test_jina_make_request_raises_http_error (line 595) | def test_jina_make_request_raises_http_error(monkeypatch): function test_openai_make_request_raises_http_error (line 615) | def test_openai_make_request_raises_http_error(monkeypatch): function test_jina_get_multimodal_embeddings_missing_data_key (line 635) | def test_jina_get_multimodal_embeddings_missing_data_key(monkeypatch): FILE: test/sdk/core/models/test_message_utils.py function test_flatten_string_returns_same (line 11) | def test_flatten_string_returns_same(): function test_flatten_none_returns_empty_string (line 15) | def test_flatten_none_returns_empty_string(): function test_flatten_number_returns_str (line 19) | def test_flatten_number_returns_str(): function test_flatten_list_with_various_items (line 23) | def test_flatten_list_with_various_items(): function test_flatten_list_with_non_dict_items_only (line 31) | def test_flatten_list_with_non_dict_items_only(): function test_prepare_messages_returns_unchanged_when_no_model_factory (line 36) | def test_prepare_messages_returns_unchanged_when_no_model_factory(): function test_prepare_messages_modelengine_with_objects_and_case_insensitive (line 44) | def test_prepare_messages_modelengine_with_objects_and_case_insensitive(): FILE: test/sdk/core/models/test_openai_llm.py function _setup_stubs (line 75) | def _setup_stubs(): function make_chunk (line 129) | def make_chunk(content, reasoning=None, role=None): function test_modelengine_message_flattening (line 142) | def test_modelengine_message_flattening(monkeypatch): class DummyOpenAIServerModel (line 202) | class DummyOpenAIServerModel: method __init__ (line 203) | def __init__(self, *args, **kwargs): method _prepare_completion_kwargs (line 206) | def _prepare_completion_kwargs(self, *args, **kwargs): class SimpleChatMessage (line 212) | class SimpleChatMessage: method __init__ (line 213) | def __init__(self, role=None, content=None, tool_calls=None): method from_dict (line 218) | def from_dict(d): function pass_through_decorator (line 230) | def pass_through_decorator(*args, **kwargs): class MockMessageObserver (line 262) | class MockMessageObserver: method __init__ (line 263) | def __init__(self, *args, **kwargs): class MockProcessType (line 268) | class MockProcessType: function openai_model_instance (line 346) | def openai_model_instance(): function mock_chat_message (line 370) | def mock_chat_message(): function test_check_connectivity_success (line 383) | def test_check_connectivity_success(openai_model_instance): function test_check_connectivity_failure (line 400) | def test_check_connectivity_failure(openai_model_instance): function test_call_normal_operation (line 419) | def test_call_normal_operation(openai_model_instance): function test_call_with_no_think_token_addition (line 480) | def test_call_with_no_think_token_addition(openai_model_instance): function test_call_without_no_think_token (line 515) | def test_call_without_no_think_token(openai_model_instance): function test_call_stop_event_interruption (line 550) | def test_call_stop_event_interruption(openai_model_instance): function test_call_context_length_exceeded_error (line 573) | def test_call_context_length_exceeded_error(openai_model_instance): function test_call_general_exception (line 588) | def test_call_general_exception(openai_model_instance): function test_call_with_no_usage_info (line 603) | def test_call_with_no_usage_info(openai_model_instance): function test_call_with_null_tokens (line 633) | def test_call_with_null_tokens(openai_model_instance): function test_call_with_reasoning_content (line 670) | def test_call_with_reasoning_content(openai_model_instance): function test_call_with_multiple_reasoning_content_chunks (line 718) | def test_call_with_multiple_reasoning_content_chunks(openai_model_instan... function test_call_with_reasoning_content_only (line 776) | def test_call_with_reasoning_content_only(openai_model_instance): function test_call_with_reasoning_content_and_content_together (line 822) | def test_call_with_reasoning_content_and_content_together(openai_model_i... function test_init_with_ssl_verify_false (line 864) | def test_init_with_ssl_verify_false(): function test_init_with_ssl_verify_true (line 880) | def test_init_with_ssl_verify_true(): function test_call_with_monitoring_and_token_tracker (line 898) | def test_call_with_monitoring_and_token_tracker(openai_model_instance): function test_call_with_token_tracker_on_reasoning_content (line 957) | def test_call_with_token_tracker_on_reasoning_content(openai_model_insta... function test_call_with_stop_event_and_token_tracker (line 1004) | def test_call_with_stop_event_and_token_tracker(openai_model_instance): function test_call_exception_with_token_tracker (line 1033) | def test_call_exception_with_token_tracker(openai_model_instance): function test_call_context_length_exceeded_with_token_tracker (line 1053) | def test_call_context_length_exceeded_with_token_tracker(openai_model_in... function test_call_with_chatmessage_instance_passed_through (line 1073) | def test_call_with_chatmessage_instance_passed_through(openai_model_inst... function test_call_invalid_dict_message_raises_value_error (line 1108) | def test_call_invalid_dict_message_raises_value_error(openai_model_insta... function test_call_invalid_message_type_raises_type_error (line 1116) | def test_call_invalid_message_type_raises_type_error(openai_model_instan... FILE: test/sdk/core/models/test_openai_long_context_model.py class MockOpenAIServerModel (line 9) | class MockOpenAIServerModel: method __init__ (line 10) | def __init__(self, *args, **kwargs): class MockChatMessage (line 14) | class MockChatMessage: method __init__ (line 15) | def __init__(self, content="", role="user"): function mock_observer (line 34) | def mock_observer(): function long_context_model (line 39) | def long_context_model(mock_observer): function mock_tokenizer (line 52) | def mock_tokenizer(): function test_init_default_values (line 59) | def test_init_default_values(mock_observer): function test_init_custom_values (line 66) | def test_init_custom_values(mock_observer): function test_init_invalid_truncation_strategy (line 72) | def test_init_invalid_truncation_strategy(mock_observer): function test_get_tokenizer_success (line 77) | def test_get_tokenizer_success(long_context_model, mock_tokenizer): function test_get_tokenizer_import_error (line 83) | def test_get_tokenizer_import_error(long_context_model): function test_get_tokenizer_cached (line 89) | def test_get_tokenizer_cached(long_context_model, mock_tokenizer): function test_count_tokens_with_tiktoken (line 94) | def test_count_tokens_with_tiktoken(long_context_model, mock_tokenizer): function test_count_tokens_without_tiktoken (line 100) | def test_count_tokens_without_tiktoken(long_context_model): function test_truncate_text_no_truncation_needed (line 107) | def test_truncate_text_no_truncation_needed(long_context_model): function test_truncate_text_start_strategy_with_tiktoken (line 113) | def test_truncate_text_start_strategy_with_tiktoken(mock_logger, long_co... function test_truncate_text_middle_strategy_with_tiktoken (line 121) | def test_truncate_text_middle_strategy_with_tiktoken(mock_logger, long_c... function test_truncate_text_end_strategy_with_tiktoken (line 131) | def test_truncate_text_end_strategy_with_tiktoken(mock_logger, long_cont... function test_truncate_text_without_tiktoken_start_strategy (line 141) | def test_truncate_text_without_tiktoken_start_strategy(mock_logger, long... function test_truncate_text_without_tiktoken_middle_strategy (line 149) | def test_truncate_text_without_tiktoken_middle_strategy(mock_logger, lon... function test_truncate_text_without_tiktoken_end_strategy (line 158) | def test_truncate_text_without_tiktoken_end_strategy(mock_logger, long_c... function test_prepare_long_text_message (line 166) | def test_prepare_long_text_message(long_context_model): function test_prepare_long_text_message_no_truncation_needed (line 176) | def test_prepare_long_text_message_no_truncation_needed(long_context_mod... function test_analyze_long_text_exception (line 185) | def test_analyze_long_text_exception(long_context_model): function test_edge_cases (line 191) | def test_edge_cases(long_context_model): function test_token_calculation_accuracy (line 202) | def test_token_calculation_accuracy(long_context_model): function test_truncation_strategies_comparison (line 211) | def test_truncation_strategies_comparison(long_context_model): function test_prepare_long_text_message_insufficient_tokens (line 230) | def test_prepare_long_text_message_insufficient_tokens(long_context_model): FILE: test/sdk/core/models/test_openai_vlm.py class DummyOpenAIServerModel (line 17) | class DummyOpenAIServerModel: method __init__ (line 18) | def __init__(self, *args, **kwargs): method _prepare_completion_kwargs (line 21) | def _prepare_completion_kwargs(self, *args, **kwargs): function vl_model_instance (line 50) | def vl_model_instance(): function test_check_connectivity_success (line 77) | async def test_check_connectivity_success(vl_model_instance): function test_check_connectivity_failure (line 98) | async def test_check_connectivity_failure(vl_model_instance): FILE: test/sdk/core/models/test_stt_model.py class MockConnectionClosedError (line 15) | class MockConnectionClosedError(Exception): method __init__ (line 16) | def __init__(self, code, reason): class MockAsyncContextManager (line 28) | class MockAsyncContextManager: method __init__ (line 29) | def __init__(self, mock_file): method __aenter__ (line 32) | async def __aenter__(self): method __aexit__ (line 35) | async def __aexit__(self, exc_type, exc_val, exc_tb): function mock_aiofiles_open (line 38) | def mock_aiofiles_open(*args, **kwargs): class TestSTTConfig (line 61) | class TestSTTConfig: method test_stt_config_default_values (line 64) | def test_stt_config_default_values(self): method test_stt_config_custom_values (line 83) | def test_stt_config_custom_values(self): class TestSTTModel (line 104) | class TestSTTModel: method stt_config (line 108) | def stt_config(self): method stt_model (line 117) | def stt_model(self, stt_config): method test_init (line 121) | def test_init(self, stt_config): method test_generate_header_default (line 130) | def test_generate_header_default(self, stt_model): method test_generate_header_no_compression (line 140) | def test_generate_header_no_compression(self, stt_config): method test_generate_header_custom_params (line 149) | def test_generate_header_custom_params(self, stt_model): method test_generate_before_payload (line 160) | def test_generate_before_payload(self): method test_read_wav_info (line 168) | def test_read_wav_info(self): method test_slice_data (line 187) | def test_slice_data(self): method test_construct_request (line 200) | def test_construct_request(self, stt_model): method test_parse_response_server_full_response (line 222) | def test_parse_response_server_full_response(self): method test_parse_response_server_error (line 245) | def test_parse_response_server_error(self): method test_parse_response_last_package (line 266) | def test_parse_response_last_package(self): method test_process_audio_data_connection_error (line 281) | async def test_process_audio_data_connection_error(self, stt_model): method test_process_audio_file_wav (line 297) | async def test_process_audio_file_wav(self, stt_model): method test_process_audio_file_pcm (line 331) | async def test_process_audio_file_pcm(self, stt_model): method test_process_audio_file_mp3 (line 357) | async def test_process_audio_file_mp3(self, stt_model): method test_process_audio_file_unsupported_format (line 381) | async def test_process_audio_file_unsupported_format(self, stt_model): method test_start_streaming_session (line 395) | async def test_start_streaming_session(self, stt_model): method test_process_streaming_audio_client_disconnect (line 410) | async def test_process_streaming_audio_client_disconnect(self, stt_mod... method test_recognize_file (line 431) | async def test_recognize_file(self, stt_model): method test_check_connectivity_success (line 442) | async def test_check_connectivity_success(self, stt_model): method test_check_connectivity_failure (line 457) | async def test_check_connectivity_failure(self, stt_model): method test_check_connectivity_exception (line 467) | async def test_check_connectivity_exception(self, stt_model): method test_is_stt_result_successful_valid_result (line 474) | def test_is_stt_result_successful_valid_result(self, stt_model): method test_is_stt_result_successful_error_result (line 484) | def test_is_stt_result_successful_error_result(self, stt_model): method test_is_stt_result_successful_error_code (line 490) | def test_is_stt_result_successful_error_code(self, stt_model): method test_is_stt_result_successful_empty_result (line 496) | def test_is_stt_result_successful_empty_result(self, stt_model): method test_extract_stt_error_message_direct_error (line 503) | def test_extract_stt_error_message_direct_error(self, stt_model): method test_extract_stt_error_message_error_code (line 510) | def test_extract_stt_error_message_error_code(self, stt_model): method test_extract_stt_error_message_nested_error (line 521) | def test_extract_stt_error_message_nested_error(self, stt_model): method test_extract_stt_error_message_unknown_error (line 530) | def test_extract_stt_error_message_unknown_error(self, stt_model): class TestAudioType (line 538) | class TestAudioType: method test_audio_type_values (line 541) | def test_audio_type_values(self): class TestProcessAudioItem (line 547) | class TestProcessAudioItem: method test_process_audio_item_success (line 551) | async def test_process_audio_item_success(self): method test_process_audio_item_missing_keys (line 575) | async def test_process_audio_item_missing_keys(self): class TestConstants (line 589) | class TestConstants: method test_protocol_constants (line 592) | def test_protocol_constants(self): method test_message_type_constants (line 597) | def test_message_type_constants(self): method test_message_flags_constants (line 605) | def test_message_flags_constants(self): method test_serialization_constants (line 612) | def test_serialization_constants(self): method test_compression_constants (line 616) | def test_compression_constants(self): FILE: test/sdk/core/models/test_tts_model.py class TestTTSConfig (line 21) | class TestTTSConfig: method test_tts_config_required_fields (line 24) | def test_tts_config_required_fields(self): method test_tts_config_custom_host (line 41) | def test_tts_config_custom_host(self): method test_tts_config_api_url_property (line 55) | def test_tts_config_api_url_property(self): method test_tts_config_api_url_custom_host (line 68) | def test_tts_config_api_url_custom_host(self): class TestTTSModel (line 83) | class TestTTSModel: method tts_config (line 87) | def tts_config(self): method tts_model (line 98) | def tts_model(self, tts_config): method mock_tts_ws_connect (line 103) | def mock_tts_ws_connect(self, monkeypatch): method test_init (line 134) | def test_init(self, tts_config): method test_default_header_constant (line 146) | def test_default_header_constant(self): method test_message_constants (line 150) | def test_message_constants(self): method test_prepare_request_default_operation (line 156) | def test_prepare_request_default_operation(self, tts_model): method test_prepare_request_custom_operation (line 178) | def test_prepare_request_custom_operation(self, tts_model): method test_parse_response_audio_only_no_sequence (line 196) | def test_parse_response_audio_only_no_sequence(self, tts_model): method test_parse_response_audio_only_with_sequence (line 211) | def test_parse_response_audio_only_with_sequence(self, tts_model): method test_parse_response_audio_only_last_chunk (line 233) | def test_parse_response_audio_only_last_chunk(self, tts_model): method test_parse_response_error_message (line 252) | def test_parse_response_error_message(self, tts_model): method test_parse_response_error_message_compressed (line 272) | def test_parse_response_error_message_compressed(self, tts_model): method test_generate_speech_non_streaming (line 293) | async def test_generate_speech_non_streaming(self, tts_model, mock_tts... method test_generate_speech_streaming (line 298) | async def test_generate_speech_streaming(self, tts_model, mock_tts_ws_... method test_parse_query_response (line 302) | def test_parse_query_response(self, tts_model): method test_check_connectivity_success (line 312) | async def test_check_connectivity_success(self, tts_model): method test_check_connectivity_failure_exception (line 323) | async def test_check_connectivity_failure_exception(self, tts_model): method test_check_connectivity_failure_empty_response (line 331) | async def test_check_connectivity_failure_empty_response(self, tts_mod... method test_check_connectivity_failure_invalid_response (line 339) | async def test_check_connectivity_failure_invalid_response(self, tts_m... method test_request_template_structure (line 346) | def test_request_template_structure(self, tts_model): method test_request_template_values (line 375) | def test_request_template_values(self, tts_config): method test_prepare_request_uuid_generation (line 390) | def test_prepare_request_uuid_generation(self, tts_model): method test_prepare_request_binary_structure (line 408) | def test_prepare_request_binary_structure(self, tts_model): FILE: test/sdk/core/tools/test_analyze_image_tool.py function mock_storage_client (line 13) | def mock_storage_client(): function mock_vlm_model (line 21) | def mock_vlm_model(): function mock_prompt_loader (line 26) | def mock_prompt_loader(monkeypatch): function observer_en (line 42) | def observer_en(): function observer_zh (line 49) | def observer_zh(): function tool (line 56) | def tool(observer_en, mock_vlm_model, mock_storage_client): class TestAnalyzeImageTool (line 64) | class TestAnalyzeImageTool: method test_forward_impl_success_with_multiple_images (line 65) | def test_forward_impl_success_with_multiple_images( method test_forward_impl_zh_observer_messages (line 81) | def test_forward_impl_zh_observer_messages( method test_forward_impl_validates_inputs (line 105) | def test_forward_impl_validates_inputs( method test_forward_impl_wraps_model_errors (line 111) | def test_forward_impl_wraps_model_errors( class TestAnalyzeImageToolEdgeCases (line 125) | class TestAnalyzeImageToolEdgeCases: method test_forward_impl_vlm_model_none (line 128) | def test_forward_impl_vlm_model_none(self, observer_en, mock_storage_c... method test_forward_impl_vlm_model_none_chinese (line 142) | def test_forward_impl_vlm_model_none_chinese(self, observer_zh, mock_s... method test_forward_impl_observer_none_uses_english (line 155) | def test_forward_impl_observer_none_uses_english(self, mock_vlm_model,... method test_forward_impl_single_image_success (line 169) | def test_forward_impl_single_image_success(self, tool, mock_vlm_model,... method test_is_chinese_property_english (line 180) | def test_is_chinese_property_english(self, observer_en, mock_vlm_model... method test_is_chinese_property_chinese (line 190) | def test_is_chinese_property_chinese(self, observer_zh, mock_vlm_model... method test_is_chinese_property_no_observer (line 200) | def test_is_chinese_property_no_observer(self, mock_vlm_model, mock_st... method test_running_prompt_properties (line 210) | def test_running_prompt_properties(self, observer_en, observer_zh, moc... method test_load_save_object_manager_created (line 228) | def test_load_save_object_manager_created(self, mock_vlm_model, mock_s... method test_observer_add_message_called (line 244) | def test_observer_add_message_called(self, tool, mock_vlm_model, mock_... method test_observer_add_message_not_called_when_none (line 257) | def test_observer_add_message_not_called_when_none(self, mock_vlm_mode... method test_tool_name_and_description (line 273) | def test_tool_name_and_description(self, tool): method test_tool_inputs_schema (line 279) | def test_tool_inputs_schema(self, tool): method test_tool_category_and_sign (line 287) | def test_tool_category_and_sign(self, tool): method test_running_prompt_by_language (line 297) | def test_running_prompt_by_language(self, mock_vlm_model, mock_storage... FILE: test/sdk/core/tools/test_analyze_text_file_tool.py class _NoopLoadSaveObjectManager (line 9) | class _NoopLoadSaveObjectManager: method __init__ (line 12) | def __init__(self, *_, **__): method load_object (line 15) | def load_object(self, *_, **__): function patch_load_save_manager (line 23) | def patch_load_save_manager(monkeypatch): function llm_model (line 29) | def llm_model(): function observer_zh (line 34) | def observer_zh(): function observer_en (line 41) | def observer_en(): function http_client_manager (line 48) | def http_client_manager(mocker): function tool (line 59) | def tool(http_client_manager, observer_zh, llm_model): class TestAnalyzeTextFileTool (line 73) | class TestAnalyzeTextFileTool: method test_forward_impl_switches_language (line 74) | def test_forward_impl_switches_language(self, observer_en, llm_model, ... method test_forward_impl_validates_inputs (line 96) | def test_forward_impl_validates_inputs(self, tool, payload, error): method test_forward_impl_raises_when_no_text (line 100) | def test_forward_impl_raises_when_no_text(self, tool): method test_forward_impl_appends_analysis_exception (line 106) | def test_forward_impl_appends_analysis_exception(self, tool): method test_process_text_file_success (line 114) | def test_process_text_file_success(self, tool): method test_process_text_file_http_error_json_detail (line 124) | def test_process_text_file_http_error_json_detail(self, tool): method test_process_text_file_http_error_plain_text (line 133) | def test_process_text_file_http_error_plain_text(self, tool): method test_analyze_file_uses_prompt_template (line 142) | def test_analyze_file_uses_prompt_template(self, tool, llm_model, obse... method test_analyze_file_defaults_to_english (line 159) | def test_analyze_file_defaults_to_english(self, tool, llm_model, monke... FILE: test/sdk/core/tools/test_create_directory_tool.py function mock_observer (line 14) | def mock_observer(): function temp_workspace (line 22) | def temp_workspace(): function create_directory_tool (line 31) | def create_directory_tool(mock_observer, temp_workspace): function create_directory_tool_no_observer (line 41) | def create_directory_tool_no_observer(temp_workspace): class TestCreateDirectoryTool (line 50) | class TestCreateDirectoryTool: method test_init_with_custom_values (line 53) | def test_init_with_custom_values(self, mock_observer, temp_workspace): method test_validate_relative_path (line 63) | def test_validate_relative_path(self, create_directory_tool, temp_work... method test_validate_absolute_path_within_workspace (line 72) | def test_validate_absolute_path_within_workspace(self, create_director... method test_validate_absolute_path_outside_workspace (line 79) | def test_validate_absolute_path_outside_workspace(self, create_directo... method test_validate_path_with_dot_components (line 89) | def test_validate_path_with_dot_components(self, create_directory_tool... method test_validate_path_normalization (line 99) | def test_validate_path_normalization(self, create_directory_tool, temp... method test_forward_success_new_directory (line 108) | def test_forward_success_new_directory(self, create_directory_tool, te... method test_forward_success_existing_directory (line 139) | def test_forward_success_existing_directory(self, create_directory_too... method test_forward_success_with_custom_permissions (line 162) | def test_forward_success_with_custom_permissions(self, create_director... method test_forward_empty_path (line 179) | def test_forward_empty_path(self, create_directory_tool): method test_forward_whitespace_path (line 186) | def test_forward_whitespace_path(self, create_directory_tool): method test_forward_invalid_permissions (line 193) | def test_forward_invalid_permissions(self, create_directory_tool): method test_forward_path_exists_as_file (line 201) | def test_forward_path_exists_as_file(self, create_directory_tool, temp... method test_forward_permission_error (line 216) | def test_forward_permission_error(self, create_directory_tool, temp_wo... method test_forward_os_error (line 227) | def test_forward_os_error(self, create_directory_tool, temp_workspace): method test_forward_unexpected_error (line 237) | def test_forward_unexpected_error(self, create_directory_tool, temp_wo... method test_forward_without_observer (line 247) | def test_forward_without_observer(self, create_directory_tool_no_obser... method test_forward_chinese_language_observer (line 261) | def test_forward_chinese_language_observer(self, create_directory_tool... FILE: test/sdk/core/tools/test_create_file_tool.py function mock_observer (line 14) | def mock_observer(): function temp_workspace (line 22) | def temp_workspace(): function create_file_tool (line 31) | def create_file_tool(mock_observer, temp_workspace): function create_file_tool_no_observer (line 41) | def create_file_tool_no_observer(temp_workspace): class TestCreateFileTool (line 50) | class TestCreateFileTool: method test_init_with_custom_values (line 51) | def test_init_with_custom_values(self, mock_observer, temp_workspace): method test_validate_relative_path (line 61) | def test_validate_relative_path(self, create_file_tool, temp_workspace): method test_validate_absolute_path_within_workspace (line 70) | def test_validate_absolute_path_within_workspace(self, create_file_too... method test_validate_absolute_path_outside_workspace (line 77) | def test_validate_absolute_path_outside_workspace(self, create_file_to... method test_validate_path_with_dot_components (line 87) | def test_validate_path_with_dot_components(self, create_file_tool, tem... method test_validate_path_normalization (line 97) | def test_validate_path_normalization(self, create_file_tool, temp_work... method test_forward_success_new_file (line 106) | def test_forward_success_new_file(self, create_file_tool, temp_workspa... method test_forward_success_empty_file (line 143) | def test_forward_success_empty_file(self, create_file_tool, temp_works... method test_forward_success_none_content (line 165) | def test_forward_success_none_content(self, create_file_tool, temp_wor... method test_forward_success_with_custom_encoding (line 183) | def test_forward_success_with_custom_encoding(self, create_file_tool, ... method test_forward_success_existing_file_overwrite (line 205) | def test_forward_success_existing_file_overwrite(self, create_file_too... method test_forward_success_create_parent_directories (line 229) | def test_forward_success_create_parent_directories(self, create_file_t... method test_forward_empty_path (line 253) | def test_forward_empty_path(self, create_file_tool): method test_forward_whitespace_path (line 260) | def test_forward_whitespace_path(self, create_file_tool): method test_forward_permission_error (line 267) | def test_forward_permission_error(self, create_file_tool, temp_workspa... method test_forward_unicode_encode_error (line 278) | def test_forward_unicode_encode_error(self, create_file_tool, temp_wor... method test_forward_os_error (line 293) | def test_forward_os_error(self, create_file_tool, temp_workspace): method test_forward_unexpected_error (line 303) | def test_forward_unexpected_error(self, create_file_tool, temp_workspa... method test_forward_without_observer (line 313) | def test_forward_without_observer(self, create_file_tool_no_observer, ... method test_forward_chinese_language_observer (line 328) | def test_forward_chinese_language_observer(self, create_file_tool, tem... FILE: test/sdk/core/tools/test_datamate_search_tool.py function mock_observer (line 12) | def mock_observer() -> MessageObserver: function datamate_tool (line 19) | def datamate_tool(mock_observer: MessageObserver) -> DataMateSearchTool: function datamate_tool_https (line 31) | def datamate_tool_https(mock_observer: MessageObserver) -> DataMateSearc... function _build_kb_list (line 40) | def _build_kb_list(ids: List[str]): function _build_search_results (line 44) | def _build_search_results(kb_id: str, count: int = 2): class TestDataMateSearchToolInit (line 66) | class TestDataMateSearchToolInit: method test_init_success (line 67) | def test_init_success(self, mock_observer: MessageObserver, mocker: Mo... method test_init_with_index_names (line 89) | def test_init_with_index_names(self, mock_observer: MessageObserver): method test_init_invalid_server_url (line 102) | def test_init_invalid_server_url(self, mock_observer: MessageObserver): class TestHelperMethods (line 121) | class TestHelperMethods: method test_parse_metadata (line 131) | def test_parse_metadata(self, datamate_tool: DataMateSearchTool, metad... method test_extract_dataset_id (line 148) | def test_extract_dataset_id(self, datamate_tool: DataMateSearchTool, p... class TestForward (line 152) | class TestForward: method test_forward_success_with_observer_en (line 153) | def test_forward_success_with_observer_en(self, datamate_tool: DataMat... method test_forward_success_with_observer_zh (line 187) | def test_forward_success_with_observer_zh(self, datamate_tool: DataMat... method test_forward_no_observer (line 205) | def test_forward_no_observer(self, mocker: MockFixture): method test_forward_no_knowledge_bases (line 222) | def test_forward_no_knowledge_bases(self, datamate_tool: DataMateSearc... method test_forward_no_results (line 235) | def test_forward_no_results(self, datamate_tool: DataMateSearchTool, m... method test_forward_wrapped_error (line 247) | def test_forward_wrapped_error(self, datamate_tool: DataMateSearchTool... method test_forward_with_default_index_names (line 260) | def test_forward_with_default_index_names(self, datamate_tool: DataMat... method test_forward_multiple_knowledge_bases (line 300) | def test_forward_multiple_knowledge_bases(self, datamate_tool: DataMat... method test_forward_with_custom_parameters (line 342) | def test_forward_with_custom_parameters(self, datamate_tool: DataMateS... method test_forward_metadata_parsing_edge_cases (line 371) | def test_forward_metadata_parsing_edge_cases(self, datamate_tool: Data... class TestDataMateSearchToolURL (line 435) | class TestDataMateSearchToolURL: method test_url_https_initialization (line 438) | def test_url_https_initialization(self, mock_observer: MessageObserver... method test_url_http_initialization (line 462) | def test_url_http_initialization(self, mock_observer: MessageObserver,... method test_url_https_with_ssl_verification (line 483) | def test_url_https_with_ssl_verification(self, mock_observer: MessageO... method test_url_default_ports (line 503) | def test_url_default_ports(self, mock_observer: MessageObserver): method test_url_invalid_format (line 521) | def test_url_invalid_format(self, mock_observer: MessageObserver): FILE: test/sdk/core/tools/test_delete_directory_tool.py function mock_observer (line 14) | def mock_observer(): function temp_workspace (line 22) | def temp_workspace(): function delete_directory_tool (line 31) | def delete_directory_tool(mock_observer, temp_workspace): function delete_directory_tool_no_observer (line 41) | def delete_directory_tool_no_observer(temp_workspace): class TestDeleteDirectoryTool (line 50) | class TestDeleteDirectoryTool: method test_init_with_custom_values (line 53) | def test_init_with_custom_values(self, mock_observer, temp_workspace): method test_validate_relative_path (line 63) | def test_validate_relative_path(self, delete_directory_tool, temp_work... method test_validate_absolute_path_within_workspace (line 72) | def test_validate_absolute_path_within_workspace(self, delete_director... method test_validate_absolute_path_outside_workspace (line 79) | def test_validate_absolute_path_outside_workspace(self, delete_directo... method test_validate_path_with_dot_components (line 89) | def test_validate_path_with_dot_components(self, delete_directory_tool... method test_validate_path_normalization (line 99) | def test_validate_path_normalization(self, delete_directory_tool, temp... method test_validate_path_workspace_root_protection (line 108) | def test_validate_path_workspace_root_protection(self, delete_director... method test_forward_success_delete_directory (line 117) | def test_forward_success_delete_directory(self, delete_directory_tool,... method test_forward_success_large_directory_warning (line 156) | def test_forward_success_large_directory_warning(self, delete_director... method test_forward_empty_path (line 180) | def test_forward_empty_path(self, delete_directory_tool): method test_forward_whitespace_path (line 187) | def test_forward_whitespace_path(self, delete_directory_tool): method test_forward_directory_not_exists (line 194) | def test_forward_directory_not_exists(self, delete_directory_tool): method test_forward_path_is_file (line 201) | def test_forward_path_is_file(self, delete_directory_tool, temp_worksp... method test_forward_permission_error (line 216) | def test_forward_permission_error(self, delete_directory_tool, temp_wo... method test_forward_os_error (line 231) | def test_forward_os_error(self, delete_directory_tool, temp_workspace): method test_forward_unexpected_error (line 245) | def test_forward_unexpected_error(self, delete_directory_tool, temp_wo... method test_forward_without_observer (line 259) | def test_forward_without_observer(self, delete_directory_tool_no_obser... method test_forward_chinese_language_observer (line 276) | def test_forward_chinese_language_observer(self, delete_directory_tool... FILE: test/sdk/core/tools/test_delete_file_tool.py function mock_observer (line 14) | def mock_observer(): function temp_workspace (line 22) | def temp_workspace(): function delete_file_tool (line 31) | def delete_file_tool(mock_observer, temp_workspace): function delete_file_tool_no_observer (line 41) | def delete_file_tool_no_observer(temp_workspace): class TestDeleteFileTool (line 50) | class TestDeleteFileTool: method test_init_with_custom_values (line 53) | def test_init_with_custom_values(self, mock_observer, temp_workspace): method test_validate_relative_path (line 63) | def test_validate_relative_path(self, delete_file_tool, temp_workspace): method test_validate_absolute_path_within_workspace (line 72) | def test_validate_absolute_path_within_workspace(self, delete_file_too... method test_validate_absolute_path_outside_workspace (line 79) | def test_validate_absolute_path_outside_workspace(self, delete_file_to... method test_validate_path_with_dot_components (line 89) | def test_validate_path_with_dot_components(self, delete_file_tool, tem... method test_validate_path_normalization (line 99) | def test_validate_path_normalization(self, delete_file_tool, temp_work... method test_forward_success_delete_file (line 108) | def test_forward_success_delete_file(self, delete_file_tool, temp_work... method test_forward_success_protected_file_warning (line 143) | def test_forward_success_protected_file_warning(self, delete_file_tool... method test_forward_empty_path (line 165) | def test_forward_empty_path(self, delete_file_tool): method test_forward_whitespace_path (line 172) | def test_forward_whitespace_path(self, delete_file_tool): method test_forward_file_not_exists (line 179) | def test_forward_file_not_exists(self, delete_file_tool): method test_forward_path_is_directory (line 186) | def test_forward_path_is_directory(self, delete_file_tool, temp_worksp... method test_forward_permission_error (line 201) | def test_forward_permission_error(self, delete_file_tool, temp_workspa... method test_forward_is_directory_error (line 217) | def test_forward_is_directory_error(self, delete_file_tool, temp_works... method test_forward_os_error (line 233) | def test_forward_os_error(self, delete_file_tool, temp_workspace): method test_forward_unexpected_error (line 248) | def test_forward_unexpected_error(self, delete_file_tool, temp_workspa... method test_forward_without_observer (line 263) | def test_forward_without_observer(self, delete_file_tool_no_observer, ... method test_forward_chinese_language_observer (line 281) | def test_forward_chinese_language_observer(self, delete_file_tool, tem... FILE: test/sdk/core/tools/test_dify_search_tool.py function mock_observer (line 14) | def mock_observer() -> MessageObserver: function dify_tool (line 21) | def dify_tool(mock_observer: MessageObserver) -> DifySearchTool: function _build_search_response (line 37) | def _build_search_response(records: List[dict] = None, query: str = "tes... function _build_download_url_response (line 64) | def _build_download_url_response(download_url: str = "https://download.e... class TestDifySearchToolInit (line 68) | class TestDifySearchToolInit: method test_init_success (line 69) | def test_init_success(self, mock_observer: MessageObserver): method test_init_singledataset_id (line 87) | def test_init_singledataset_id(self, mock_observer: MessageObserver): method test_init_json_string_array_dataset_ids (line 98) | def test_init_json_string_array_dataset_ids(self, mock_observer: Messa... method test_init_json_string_array_multiple_dataset_ids (line 109) | def test_init_json_string_array_multiple_dataset_ids(self, mock_observ... method test_init_invalid_server_url (line 124) | def test_init_invalid_server_url(self, server_url, expected_error): method test_init_invalid_api_key (line 137) | def test_init_invalid_api_key(self, api_key, expected_error): method test_init_invaliddataset_ids (line 151) | def test_init_invaliddataset_ids(self, dataset_ids, expected_error): method test_init_dataset_ids_empty_json_array_string (line 160) | def test_init_dataset_ids_empty_json_array_string(self, mock_observer:... method test_init_dataset_ids_as_list (line 172) | def test_init_dataset_ids_as_list(self, mock_observer: MessageObserver): method test_init_dataset_ids_as_list_single_item (line 184) | def test_init_dataset_ids_as_list_single_item(self, mock_observer: Mes... method test_init_dataset_ids_as_list_with_numeric_ids (line 196) | def test_init_dataset_ids_as_list_with_numeric_ids(self, mock_observer... method test_init_invalid_json_format (line 214) | def test_init_invalid_json_format(self, invalid_json, expected_error_c... method test_init_dataset_ids_with_malformed_json_array (line 225) | def test_init_dataset_ids_with_malformed_json_array(self, mock_observe... method test_init_dataset_ids_json_string_with_non_string_elements (line 236) | def test_init_dataset_ids_json_string_with_non_string_elements(self, m... class TestGetDocumentDownloadUrl (line 252) | class TestGetDocumentDownloadUrl: method test_get_document_download_url_success (line 253) | def test_get_document_download_url_success(self, mocker: MockFixture, ... method test_get_document_download_url_empty_document_id (line 270) | def test_get_document_download_url_empty_document_id(self, dify_tool: ... method test_get_document_download_url_nodataset_id (line 274) | def test_get_document_download_url_nodataset_id(self, dify_tool: DifyS... method test_get_document_download_url_request_error (line 292) | def test_get_document_download_url_request_error(self, dify_tool: Dify... method test_get_document_download_url_json_decode_error (line 299) | def test_get_document_download_url_json_decode_error(self, dify_tool: ... method test_get_document_download_url_missing_key (line 309) | def test_get_document_download_url_missing_key(self, dify_tool: DifySe... class TestSearchDifyKnowledgeBase (line 320) | class TestSearchDifyKnowledgeBase: method test_search_dify_knowledge_base_success (line 321) | def test_search_dify_knowledge_base_success(self, dify_tool: DifySearc... method test_search_dify_knowledge_base_no_records (line 362) | def test_search_dify_knowledge_base_no_records(self, dify_tool: DifySe... method test_search_dify_knowledge_base_request_error (line 372) | def test_search_dify_knowledge_base_request_error(self, dify_tool: Dif... method test_search_dify_knowledge_base_json_decode_error (line 380) | def test_search_dify_knowledge_base_json_decode_error(self, dify_tool:... method test_search_dify_knowledge_base_missing_key (line 391) | def test_search_dify_knowledge_base_missing_key(self, dify_tool: DifyS... class TestForward (line 403) | class TestForward: method _setup_success_flow (line 404) | def _setup_success_flow(self, tool: DifySearchTool): method test_forward_success_with_observer_en (line 450) | def test_forward_success_with_observer_en(self, dify_tool: DifySearchT... method test_forward_success_with_observer_zh (line 481) | def test_forward_success_with_observer_zh(self, dify_tool: DifySearchT... method test_forward_no_observer (line 491) | def test_forward_no_observer(self): method test_forward_no_results (line 508) | def test_forward_no_results(self, dify_tool: DifySearchTool): method test_forward_search_api_error (line 525) | def test_forward_search_api_error(self, dify_tool: DifySearchTool): method test_forward_download_url_error_still_works (line 534) | def test_forward_download_url_error_still_works(self, dify_tool: DifyS... FILE: test/sdk/core/tools/test_exa_search_tool.py function mock_observer (line 30) | def mock_observer(): function exa_search_tool (line 37) | def exa_search_tool(mock_observer): function create_mock_search_result (line 60) | def create_mock_search_result(count=3): function test_forward_with_results (line 77) | def test_forward_with_results(exa_search_tool, mock_observer): function test_forward_no_results (line 128) | def test_forward_no_results(exa_search_tool): function test_forward_without_observer (line 142) | def test_forward_without_observer(exa_search_tool): function test_chinese_language_observer (line 172) | def test_chinese_language_observer(exa_search_tool, mock_observer): function test_filter_images_success (line 190) | def test_filter_images_success(exa_search_tool, mock_observer): function test_filter_images_api_error (line 211) | def test_filter_images_api_error(exa_search_tool, mock_observer): function test_image_filter_disabled (line 234) | def test_image_filter_disabled(exa_search_tool, mock_observer): FILE: test/sdk/core/tools/test_get_email_tool.py function get_email_tool (line 12) | def get_email_tool(): class TestGetEmailTool (line 25) | class TestGetEmailTool: method test_init_with_custom_values (line 28) | def test_init_with_custom_values(self): method test_decode_subject_none (line 46) | def test_decode_subject_none(self, get_email_tool): method test_decode_subject_string (line 51) | def test_decode_subject_string(self, get_email_tool): method test_parse_email_simple (line 56) | def test_parse_email_simple(self, get_email_tool): method test_parse_email_multipart (line 69) | def test_parse_email_multipart(self, get_email_tool): method test_forward_success_with_results (line 94) | def test_forward_success_with_results(self, get_email_tool): method test_forward_success_with_sender_filter (line 129) | def test_forward_success_with_sender_filter(self, get_email_tool): method test_forward_success_with_time_filter (line 154) | def test_forward_success_with_time_filter(self, get_email_tool): method test_forward_success_no_ssl (line 178) | def test_forward_success_no_ssl(self): method test_forward_imap_error (line 208) | def test_forward_imap_error(self, get_email_tool): method test_forward_unexpected_error (line 222) | def test_forward_unexpected_error(self, get_email_tool): method test_forward_empty_search_results (line 237) | def test_forward_empty_search_results(self, get_email_tool): method test_forward_default_parameters (line 249) | def test_forward_default_parameters(self, get_email_tool): FILE: test/sdk/core/tools/test_idata_search_tool.py function mock_observer (line 14) | def mock_observer() -> MessageObserver: function idata_tool (line 22) | def idata_tool(mock_observer: MessageObserver) -> IdataSearchTool: function _build_search_response (line 45) | def _build_search_response(chunks=None, retrieval_data_count=1): class TestIdataSearchToolInit (line 86) | class TestIdataSearchToolInit: method test_init_success (line 89) | def test_init_success(self, mock_observer: MessageObserver): method test_init_server_url_trailing_slash (line 124) | def test_init_server_url_trailing_slash(self, mock_observer: MessageOb... method test_init_default_values (line 142) | def test_init_default_values(self, mock_observer: MessageObserver): method test_init_invalid_server_url (line 172) | def test_init_invalid_server_url(self, server_url, expected_error, moc... method test_init_invalid_api_key (line 190) | def test_init_invalid_api_key(self, api_key, expected_error, mock_obse... method test_init_invalid_user_id (line 208) | def test_init_invalid_user_id(self, user_id, expected_error, mock_obse... method test_init_invalid_knowledge_space_id (line 226) | def test_init_invalid_knowledge_space_id(self, knowledge_space_id, exp... method test_init_invalid_rerank_model_id (line 244) | def test_init_invalid_rerank_model_id(self, rerank_model_id, expected_... method test_init_invalid_dataset_ids (line 264) | def test_init_invalid_dataset_ids(self, dataset_ids, expected_error, m... method test_init_dataset_ids_as_list (line 278) | def test_init_dataset_ids_as_list(self, mock_observer: MessageObserver): method test_init_dataset_ids_as_list_with_numeric_ids (line 296) | def test_init_dataset_ids_as_list_with_numeric_ids(self, mock_observer... method test_init_invalid_json_format (line 320) | def test_init_invalid_json_format(self, invalid_json, expected_error_c... method test_init_dataset_ids_malformed_json (line 334) | def test_init_dataset_ids_malformed_json(self, mock_observer: MessageO... class TestBuildDownloadUrl (line 349) | class TestBuildDownloadUrl: method test_build_download_url_success (line 352) | def test_build_download_url_success(self, idata_tool: IdataSearchTool): method test_build_download_url_empty_document_id (line 362) | def test_build_download_url_empty_document_id(self, idata_tool: IdataS... method test_build_download_url_empty_dataset_id_uses_first (line 367) | def test_build_download_url_empty_dataset_id_uses_first(self, idata_to... method test_build_download_url_both_empty (line 377) | def test_build_download_url_both_empty(self, idata_tool: IdataSearchTo... method test_build_download_url_no_dataset_ids (line 382) | def test_build_download_url_no_dataset_ids(self, mock_observer: Messag... class TestSearchIdataKnowledgeBase (line 404) | class TestSearchIdataKnowledgeBase: method test_search_idata_knowledge_base_success (line 407) | def test_search_idata_knowledge_base_success(self, idata_tool: IdataSe... method test_search_idata_knowledge_base_request_error (line 440) | def test_search_idata_knowledge_base_request_error(self, idata_tool: I... method test_search_idata_knowledge_base_http_status_error (line 453) | def test_search_idata_knowledge_base_http_status_error(self, idata_too... method test_search_idata_knowledge_base_json_decode_error (line 466) | def test_search_idata_knowledge_base_json_decode_error(self, idata_too... method test_search_idata_knowledge_base_invalid_code (line 480) | def test_search_idata_knowledge_base_invalid_code(self, idata_tool: Id... method test_search_idata_knowledge_base_missing_data_key (line 497) | def test_search_idata_knowledge_base_missing_data_key(self, idata_tool... method test_search_idata_knowledge_base_missing_retrieval_data_key (line 511) | def test_search_idata_knowledge_base_missing_retrieval_data_key(self, ... class TestForward (line 529) | class TestForward: method _setup_success_flow (line 532) | def _setup_success_flow(self, tool: IdataSearchTool, chunks=None): method test_forward_success_with_observer_en (line 540) | def test_forward_success_with_observer_en(self, idata_tool: IdataSearc... method test_forward_success_with_observer_zh (line 566) | def test_forward_success_with_observer_zh(self, idata_tool: IdataSearc... method test_forward_no_observer (line 577) | def test_forward_no_observer(self, mock_observer: MessageObserver): method test_forward_no_retrieval_data (line 615) | def test_forward_no_retrieval_data(self, idata_tool: IdataSearchTool): method test_forward_no_chunks (line 633) | def test_forward_no_chunks(self, idata_tool: IdataSearchTool): method test_forward_multiple_chunks (line 651) | def test_forward_multiple_chunks(self, idata_tool: IdataSearchTool): method test_forward_chunk_without_title_uses_document_name (line 675) | def test_forward_chunk_without_title_uses_document_name(self, idata_to... method test_forward_chunk_with_empty_title_uses_document_name (line 695) | def test_forward_chunk_with_empty_title_uses_document_name(self, idata... method test_forward_chunk_with_zero_create_time (line 715) | def test_forward_chunk_with_zero_create_time(self, idata_tool: IdataSe... method test_forward_chunk_with_invalid_create_time (line 750) | def test_forward_chunk_with_invalid_create_time(self, idata_tool: Idat... method test_forward_chunk_with_missing_scores (line 785) | def test_forward_chunk_with_missing_scores(self, idata_tool: IdataSear... method test_forward_search_api_error (line 820) | def test_forward_search_api_error(self, idata_tool: IdataSearchTool): method test_forward_payload_construction (line 832) | def test_forward_payload_construction(self, idata_tool: IdataSearchTool): method test_forward_custom_parameters (line 853) | def test_forward_custom_parameters(self, mock_observer: MessageObserver): method test_forward_result_format (line 890) | def test_forward_result_format(self, idata_tool: IdataSearchTool): method test_forward_chunk_with_zero_re_rank_score (line 932) | def test_forward_chunk_with_zero_re_rank_score(self, idata_tool: Idata... method test_forward_chunk_with_none_title (line 967) | def test_forward_chunk_with_none_title(self, idata_tool: IdataSearchTo... method test_forward_chunk_with_falsy_title_uses_document_name (line 988) | def test_forward_chunk_with_falsy_title_uses_document_name(self, idata... method test_forward_chunk_with_missing_chunk_fields (line 1009) | def test_forward_chunk_with_missing_chunk_fields(self, idata_tool: Ida... method test_forward_handles_exception_in_datetime_conversion (line 1039) | def test_forward_handles_exception_in_datetime_conversion(self, idata_... method test_forward_with_single_dataset_id (line 1078) | def test_forward_with_single_dataset_id(self, mock_observer: MessageOb... FILE: test/sdk/core/tools/test_knowledge_base_search_tool.py function mock_observer (line 11) | def mock_observer(): function mock_vdb_core (line 19) | def mock_vdb_core(): function mock_embedding_model (line 26) | def mock_embedding_model(): function knowledge_base_search_tool (line 33) | def knowledge_base_search_tool(mock_observer, mock_vdb_core, mock_embedd... function create_mock_search_result (line 46) | def create_mock_search_result(count=3): class TestKnowledgeBaseSearchTool (line 66) | class TestKnowledgeBaseSearchTool: method test_forward_with_observer_adds_messages (line 69) | def test_forward_with_observer_adds_messages(self, knowledge_base_sear... method test_init_with_custom_values (line 83) | def test_init_with_custom_values(self, mock_observer, mock_vdb_core, m... method test_init_with_none_index_names (line 101) | def test_init_with_none_index_names(self, mock_vdb_core, mock_embeddin... method test_search_hybrid_success (line 114) | def test_search_hybrid_success(self, knowledge_base_search_tool): method test_search_accurate_success (line 142) | def test_search_accurate_success(self, knowledge_base_search_tool): method test_search_semantic_success (line 161) | def test_search_semantic_success(self, knowledge_base_search_tool): method test_search_hybrid_error (line 181) | def test_search_hybrid_error(self, knowledge_base_search_tool): method test_forward_accurate_mode_success (line 190) | def test_forward_accurate_mode_success(self, knowledge_base_search_tool): method test_forward_semantic_mode_success (line 207) | def test_forward_semantic_mode_success(self, knowledge_base_search_tool): method test_forward_invalid_search_mode (line 224) | def test_forward_invalid_search_mode(self, knowledge_base_search_tool): method test_forward_no_index_names (line 235) | def test_forward_no_index_names(self, knowledge_base_search_tool): method test_forward_no_results (line 245) | def test_forward_no_results(self, knowledge_base_search_tool): method test_forward_with_custom_index_names (line 255) | def test_forward_with_custom_index_names(self, knowledge_base_search_t... method test_forward_chinese_language_observer (line 274) | def test_forward_chinese_language_observer(self, knowledge_base_search... method test_forward_title_fallback (line 290) | def test_forward_title_fallback(self, knowledge_base_search_tool): FILE: test/sdk/core/tools/test_send_email_tool.py function send_email_tool (line 14) | def send_email_tool(): function send_email_tool_minimal (line 29) | def send_email_tool_minimal(): class TestSendEmailTool (line 40) | class TestSendEmailTool: method test_init_with_custom_values (line 43) | def test_init_with_custom_values(self): method test_tool_attributes (line 63) | def test_tool_attributes(self, send_email_tool): method test_tool_inputs_schema (line 70) | def test_tool_inputs_schema(self, send_email_tool): method test_forward_success_basic_email (line 96) | def test_forward_success_basic_email(self, mock_ssl_context, mock_smtp... method test_forward_success_with_cc_and_bcc (line 132) | def test_forward_success_with_cc_and_bcc(self, mock_ssl_context, mock_... method test_forward_success_multiple_recipients (line 169) | def test_forward_success_multiple_recipients(self, mock_ssl_context, m... method test_forward_smtp_send_error (line 196) | def test_forward_smtp_send_error(self, mock_ssl_context, mock_smtp_ssl... method test_forward_unexpected_exception (line 224) | def test_forward_unexpected_exception(self, mock_ssl_context, mock_smt... method test_forward_empty_cc_and_bcc (line 251) | def test_forward_empty_cc_and_bcc(self, mock_ssl_context, mock_smtp_ss... method test_forward_html_content_attachment (line 282) | def test_forward_html_content_attachment(self, mock_ssl_context, mock_... method test_forward_ssl_context_configuration (line 319) | def test_forward_ssl_context_configuration(self, mock_ssl_context, moc... method test_forward_timeout_configuration (line 347) | def test_forward_timeout_configuration(self, mock_ssl_context, mock_sm... method test_forward_server_quit_called_on_success (line 379) | def test_forward_server_quit_called_on_success(self, mock_ssl_context,... method test_forward_empty_parameters (line 398) | def test_forward_empty_parameters(self, send_email_tool): FILE: test/sdk/core/tools/test_tavily_search_tool.py function mock_observer (line 30) | def mock_observer(): function tavily_search_tool (line 37) | def tavily_search_tool(mock_observer): function create_mock_tavily_search_result (line 60) | def create_mock_tavily_search_result(count=3): function test_forward_with_results (line 80) | def test_forward_with_results(tavily_search_tool, mock_observer): function test_forward_no_results (line 129) | def test_forward_no_results(tavily_search_tool): function test_forward_without_observer (line 145) | def test_forward_without_observer(tavily_search_tool): function test_chinese_language_observer (line 173) | def test_chinese_language_observer(tavily_search_tool, mock_observer): function test_filter_images_success (line 191) | def test_filter_images_success(tavily_search_tool, mock_observer): function test_filter_images_api_error (line 212) | def test_filter_images_api_error(tavily_search_tool, mock_observer): function test_image_filter_disabled (line 235) | def test_image_filter_disabled(tavily_search_tool, mock_observer): FILE: test/sdk/core/tools/test_terminal_tool.py function mock_observer (line 31) | def mock_observer(): function mock_ssh_session (line 39) | def mock_ssh_session(): function terminal_tool (line 68) | def terminal_tool(mock_observer): function terminal_tool_no_observer (line 87) | def terminal_tool_no_observer(): class TestTerminalToolInitialization (line 105) | class TestTerminalToolInitialization: method test_init_with_custom_path (line 108) | def test_init_with_custom_path(self, mock_observer): method test_init_with_home_directory (line 128) | def test_init_with_home_directory(self, mock_observer): method test_init_with_absolute_path (line 141) | def test_init_with_absolute_path(self, mock_observer): method test_init_without_observer (line 155) | def test_init_without_observer(self): method test_tool_properties (line 171) | def test_tool_properties(self, terminal_tool): class TestSessionManagement (line 180) | class TestSessionManagement: method test_create_session_success (line 183) | def test_create_session_success(self, mock_observer, mock_ssh_session): method test_create_session_no_init_path (line 217) | def test_create_session_no_init_path(self, mock_observer, mock_ssh_ses... method test_create_session_no_password (line 252) | def test_create_session_no_password(self, mock_observer): method test_get_session_creates_new (line 266) | def test_get_session_creates_new(self, terminal_tool, mock_ssh_session): method test_get_session_reuses_existing (line 277) | def test_get_session_reuses_existing(self, terminal_tool, mock_ssh_ses... method test_get_session_recreates_dead_session (line 293) | def test_get_session_recreates_dead_session(self, terminal_tool, mock_... method test_is_session_alive_true (line 307) | def test_is_session_alive_true(self, terminal_tool, mock_ssh_session): method test_is_session_alive_false_closed_channel (line 316) | def test_is_session_alive_false_closed_channel(self, terminal_tool, mo... method test_is_session_alive_false_inactive_transport (line 324) | def test_is_session_alive_false_inactive_transport(self, terminal_tool... method test_is_session_alive_false_no_session (line 333) | def test_is_session_alive_false_no_session(self, terminal_tool): method test_cleanup_session (line 341) | def test_cleanup_session(self, terminal_tool, mock_ssh_session): method test_cleanup_session_handles_exceptions (line 348) | def test_cleanup_session_handles_exceptions(self, terminal_tool): class TestOutputCleaning (line 360) | class TestOutputCleaning: method test_clean_output_basic (line 363) | def test_clean_output_basic(self, terminal_tool): method test_clean_output_with_ansi_escape (line 375) | def test_clean_output_with_ansi_escape(self, terminal_tool): method test_clean_output_empty (line 386) | def test_clean_output_empty(self, terminal_tool): method test_clean_output_removes_prompts (line 394) | def test_clean_output_removes_prompts(self, terminal_tool): method test_clean_output_removes_bracketed_paste (line 405) | def test_clean_output_removes_bracketed_paste(self, terminal_tool): class TestCommandExecution (line 416) | class TestCommandExecution: method test_execute_command_success (line 419) | def test_execute_command_success(self, terminal_tool, mock_ssh_session): method test_execute_command_timeout (line 438) | def test_execute_command_timeout(self, terminal_tool, mock_ssh_session): method test_execute_command_exception (line 451) | def test_execute_command_exception(self, terminal_tool, mock_ssh_sessi... method test_execute_command_prompt_detection_with_no_more_data (line 462) | def test_execute_command_prompt_detection_with_no_more_data(self, term... method test_execute_command_multiple_prompt_types (line 483) | def test_execute_command_multiple_prompt_types(self, terminal_tool, mo... method test_execute_command_windows_prompt (line 501) | def test_execute_command_windows_prompt(self, terminal_tool, mock_ssh_... method test_execute_command_no_output_timeout (line 519) | def test_execute_command_no_output_timeout(self, terminal_tool, mock_s... class TestForwardMethod (line 537) | class TestForwardMethod: method test_forward_success (line 540) | def test_forward_success(self, terminal_tool, mock_ssh_session): method test_forward_with_observer (line 559) | def test_forward_with_observer(self, terminal_tool, mock_ssh_session): method test_forward_without_observer (line 581) | def test_forward_without_observer(self, terminal_tool_no_observer, moc... method test_forward_exception (line 595) | def test_forward_exception(self, terminal_tool, mock_ssh_session): method test_forward_default_parameters (line 609) | def test_forward_default_parameters(self, terminal_tool, mock_ssh_sess... class TestIntegration (line 624) | class TestIntegration: method test_full_workflow (line 627) | def test_full_workflow(self, terminal_tool, mock_ssh_session): method test_multiple_commands_same_session (line 652) | def test_multiple_commands_same_session(self, terminal_tool, mock_ssh_... FILE: test/sdk/core/utils/test_observer.py class TestMessage (line 14) | class TestMessage: method test_message_initialization (line 17) | def test_message_initialization(self): method test_message_to_json (line 27) | def test_message_to_json(self): method test_message_to_json_unicode_content (line 37) | def test_message_to_json_unicode_content(self): class TestDefaultTransformer (line 47) | class TestDefaultTransformer: method test_default_transformer_transform (line 50) | def test_default_transformer_transform(self): method test_default_transformer_transform_empty_content (line 58) | def test_default_transformer_transform_empty_content(self): method test_default_transformer_transform_with_kwargs (line 65) | def test_default_transformer_transform_with_kwargs(self): class TestStepCountTransformer (line 74) | class TestStepCountTransformer: method test_step_count_transformer_zh (line 77) | def test_step_count_transformer_zh(self): method test_step_count_transformer_en (line 86) | def test_step_count_transformer_en(self): method test_step_count_transformer_default_lang (line 95) | def test_step_count_transformer_default_lang(self): method test_step_count_transformer_unknown_lang (line 104) | def test_step_count_transformer_unknown_lang(self): class TestParseTransformer (line 114) | class TestParseTransformer: method test_parse_transformer_zh (line 117) | def test_parse_transformer_zh(self): method test_parse_transformer_en (line 126) | def test_parse_transformer_en(self): method test_parse_transformer_default_lang (line 135) | def test_parse_transformer_default_lang(self): class TestExecutionLogsTransformer (line 145) | class TestExecutionLogsTransformer: method test_execution_logs_transformer_zh (line 148) | def test_execution_logs_transformer_zh(self): method test_execution_logs_transformer_en (line 157) | def test_execution_logs_transformer_en(self): class TestFinalAnswerTransformer (line 167) | class TestFinalAnswerTransformer: method test_final_answer_transformer (line 170) | def test_final_answer_transformer(self): method test_final_answer_transformer_empty (line 178) | def test_final_answer_transformer_empty(self): class TestTokenCountTransformer (line 186) | class TestTokenCountTransformer: method test_token_count_transformer_zh (line 189) | def test_token_count_transformer_zh(self): method test_token_count_transformer_en (line 198) | def test_token_count_transformer_en(self): class TestErrorTransformer (line 208) | class TestErrorTransformer: method test_error_transformer_zh (line 211) | def test_error_transformer_zh(self): method test_error_transformer_en (line 220) | def test_error_transformer_en(self): class TestMessageObserver (line 230) | class TestMessageObserver: method observer (line 234) | def observer(self): method test_observer_initialization (line 238) | def test_observer_initialization(self): method test_observer_constants (line 253) | def test_observer_constants(self): method test_add_message (line 259) | def test_add_message(self): method test_add_model_reasoning_content (line 273) | def test_add_model_reasoning_content(self): method test_add_model_reasoning_content_empty (line 287) | def test_add_model_reasoning_content_empty(self): method test_get_cached_message (line 297) | def test_get_cached_message(self): method test_get_final_answer (line 313) | def test_get_final_answer(self): method test_get_final_answer_no_final_answer (line 325) | def test_get_final_answer_no_final_answer(self): method test_get_final_answer_invalid_json (line 336) | def test_get_final_answer_invalid_json(self): class TestMessageObserverTokenProcessing (line 350) | class TestMessageObserverTokenProcessing: method observer (line 354) | def observer(self): method test_add_model_new_token_normal_mode (line 358) | def test_add_model_new_token_normal_mode(self): method test_add_model_new_token_think_mode (line 380) | def test_add_model_new_token_think_mode(self): method test_add_model_new_token_buffer_overflow (line 411) | def test_add_model_new_token_buffer_overflow(self): method test_process_normal_content_code_detection (line 427) | def test_process_normal_content_code_detection(self): method test_flush_remaining_tokens (line 448) | def test_flush_remaining_tokens(self): class TestMessageObserverEdgeCases (line 468) | class TestMessageObserverEdgeCases: method observer (line 472) | def observer(self): method test_observer_with_empty_tokens (line 476) | def test_observer_with_empty_tokens(self): method test_observer_with_very_long_tokens (line 490) | def test_observer_with_very_long_tokens(self): method test_observer_mode_transitions (line 506) | def test_observer_mode_transitions(self): FILE: test/sdk/core/utils/test_prompt_template_utils.py class TestGetPromptTemplate (line 21) | class TestGetPromptTemplate: method test_get_prompt_template_analyze_image_zh (line 26) | def test_get_prompt_template_analyze_image_zh(self, mock_yaml_load, mo... method test_get_prompt_template_analyze_image_en (line 46) | def test_get_prompt_template_analyze_image_en(self, mock_yaml_load, mo... method test_get_prompt_template_default_language_zh (line 67) | def test_get_prompt_template_default_language_zh(self, mock_yaml_load,... method test_get_prompt_template_unsupported_type (line 81) | def test_get_prompt_template_unsupported_type(self): method test_get_prompt_template_with_kwargs (line 91) | def test_get_prompt_template_with_kwargs(self, mock_yaml_load, mock_fi... method test_get_prompt_template_file_not_found (line 106) | def test_get_prompt_template_file_not_found(self, mock_file): method test_get_prompt_template_yaml_error (line 115) | def test_get_prompt_template_yaml_error(self, mock_yaml_load, mock_file): method test_get_prompt_template_logging (line 125) | def test_get_prompt_template_logging(self, mock_logger, mock_yaml_load... method test_get_prompt_template_path_construction (line 139) | def test_get_prompt_template_path_construction(self, mock_yaml_load, m... method test_get_prompt_template_complex_yaml (line 157) | def test_get_prompt_template_complex_yaml(self, mock_yaml_load, mock_f... method test_get_prompt_template_empty_file (line 177) | def test_get_prompt_template_empty_file(self, mock_yaml_load, mock_file): method test_get_prompt_template_encoding_utf8 (line 186) | def test_get_prompt_template_encoding_utf8(self, mock_yaml_load, mock_... method test_get_prompt_template_path_resolution (line 198) | def test_get_prompt_template_path_resolution(self, mock_yaml_load, moc... FILE: test/sdk/data_process/test_core.py class TestDataProcessCore (line 8) | class TestDataProcessCore: method core (line 12) | def core(self): method test_init (line 16) | def test_init(self, core): method test_file_process_with_excel_file (line 23) | def test_file_process_with_excel_file(self, core, mocker: MockFixture): method test_file_process_with_pdf_file (line 45) | def test_file_process_with_pdf_file(self, core, mocker: MockFixture): method test_file_process_with_explicit_processor (line 66) | def test_file_process_with_explicit_processor(self, core, mocker: Mock... method test_file_process_with_additional_params (line 83) | def test_file_process_with_additional_params(self, core, mocker: MockF... method test_file_process_invalid_chunking_strategy (line 102) | def test_file_process_invalid_chunking_strategy(self, core): method test_file_process_invalid_processor (line 110) | def test_file_process_invalid_processor(self, core): method test_file_process_unsupported_processor_type (line 120) | def test_file_process_unsupported_processor_type(self, core): method test_file_process_processing_error (line 131) | def test_file_process_processing_error(self, core, mocker: MockFixture): method test_validate_parameters_valid_strategies (line 148) | def test_validate_parameters_valid_strategies(self, core, chunking_str... method test_validate_parameters_valid_processors (line 157) | def test_validate_parameters_valid_processors(self, core, processor): method test_validate_parameters_invalid_strategy (line 162) | def test_validate_parameters_invalid_strategy(self, core): method test_validate_parameters_invalid_processor (line 167) | def test_validate_parameters_invalid_processor(self, core): method test_select_processor_by_filename (line 184) | def test_select_processor_by_filename(self, core, filename, expected_p... method test_get_supported_file_types (line 189) | def test_get_supported_file_types(self, core): method test_get_supported_file_types_with_unstructured_formats (line 199) | def test_get_supported_file_types_with_unstructured_formats(self, core... method test_get_supported_file_types_without_unstructured_method (line 216) | def test_get_supported_file_types_without_unstructured_method(self, co... method test_get_supported_strategies (line 228) | def test_get_supported_strategies(self, core): method test_get_supported_processors (line 237) | def test_get_supported_processors(self, core): method test_validate_file_type (line 258) | def test_validate_file_type(self, core, filename, expected): method test_validate_file_type_empty_filename (line 263) | def test_validate_file_type_empty_filename(self, core): method test_validate_file_type_none_filename (line 268) | def test_validate_file_type_none_filename(self, core): method test_get_processor_info (line 283) | def test_get_processor_info(self, core, filename, expected_type, expec... method test_get_processor_info_empty_filename (line 291) | def test_get_processor_info_empty_filename(self, core): method test_get_processor_info_none_filename (line 299) | def test_get_processor_info_none_filename(self, core): method test_get_processor_info_case_insensitive (line 307) | def test_get_processor_info_case_insensitive(self, core): FILE: test/sdk/data_process/test_openpyxl_processor.py class TestOpenPyxlProcessor (line 10) | class TestOpenPyxlProcessor: method processor (line 14) | def processor(self): method mock_workbook (line 19) | def mock_workbook(self): method test_process_file (line 37) | def test_process_file(self, processor, mocker: MockFixture): method test_process_excel_success (line 54) | def test_process_excel_success(self, processor, mocker: MockFixture): method test_load_workbook_success (line 78) | def test_load_workbook_success(self, processor, mocker: MockFixture): method test_load_workbook_failure (line 96) | def test_load_workbook_failure(self, processor, mocker: MockFixture): method test_extract_content_single_column (line 106) | def test_extract_content_single_column(self, processor, mocker: MockFi... method test_extract_content_multi_column (line 127) | def test_extract_content_multi_column(self, processor, mocker: MockFix... method test_extract_content_multiple_sheets (line 148) | def test_extract_content_multiple_sheets(self, processor, mocker: Mock... method test_convert_to_chunks (line 166) | def test_convert_to_chunks(self, processor): method test_determine_file_type (line 190) | def test_determine_file_type(self, processor, filename, expected_type): method test_is_single_column_true (line 195) | def test_is_single_column_true(self, processor, mocker: MockFixture): method test_is_single_column_false (line 204) | def test_is_single_column_false(self, processor, mocker: MockFixture): method test_process_single_column (line 213) | def test_process_single_column(self, processor): method test_process_single_column_with_line_breaks (line 231) | def test_process_single_column_with_line_breaks(self, processor): method test_process_multi_column (line 243) | def test_process_multi_column(self, processor, mocker: MockFixture): method test_get_title_row (line 264) | def test_get_title_row(self, processor, mocker: MockFixture): method test_get_remark (line 282) | def test_get_remark(self, processor): method test_get_remark_empty (line 296) | def test_get_remark_empty(self, processor): method test_get_title_key (line 307) | def test_get_title_key(self, processor): method test_get_title_key_no_match (line 319) | def test_get_title_key_no_match(self, processor): method test_extract_table_content (line 330) | def test_extract_table_content(self, processor, mocker: MockFixture): method test_extract_table_content_with_empty_rows (line 351) | def test_extract_table_content_with_empty_rows(self, processor, mocker... method test_build_row_content_with_remark (line 369) | def test_build_row_content_with_remark(self, processor, mocker: MockFi... method test_build_row_content_without_remark (line 382) | def test_build_row_content_without_remark(self, processor, mocker: Moc... method test_build_row_content_with_line_breaks (line 393) | def test_build_row_content_with_line_breaks(self, processor, mocker: M... method test_merge_columns (line 405) | def test_merge_columns(self, processor): method test_merge_columns_skip_row_merge (line 432) | def test_merge_columns_skip_row_merge(self, processor): method test_merge_all_cells (line 448) | def test_merge_all_cells(self, processor): method test_dict_to_markdown_table (line 471) | def test_dict_to_markdown_table(self, processor): method test_dict_to_markdown_table_empty (line 484) | def test_dict_to_markdown_table_empty(self, processor): method test_dict_to_markdown_table_with_none_values (line 489) | def test_dict_to_markdown_table_with_none_values(self, processor): method test_join_tuple_elements (line 497) | def test_join_tuple_elements(self, processor): method test_join_tuple_elements_with_none (line 503) | def test_join_tuple_elements_with_none(self, processor): method test_join_tuple_elements_all_none (line 509) | def test_join_tuple_elements_all_none(self, processor): method test_check_file_exists_true (line 515) | def test_check_file_exists_true(self, processor, mocker: MockFixture): method test_check_file_exists_false_not_file (line 524) | def test_check_file_exists_false_not_file(self, processor, mocker: Moc... method test_check_file_exists_false_not_readable (line 532) | def test_check_file_exists_false_not_readable(self, processor, mocker:... FILE: test/sdk/data_process/test_unstructured_processor.py function setup_partition_mock (line 11) | def setup_partition_mock(mocker: MockFixture, return_value): class TestUnstructuredProcessor (line 31) | class TestUnstructuredProcessor: method processor (line 35) | def processor(self): method test_init (line 39) | def test_init(self, processor): method test_process_file (line 48) | def test_process_file(self, processor, mocker: MockFixture): method test_process_file_with_additional_params (line 65) | def test_process_file_with_additional_params(self, processor, mocker: ... method test_process_file_internal_success (line 88) | def test_process_file_internal_success(self, processor, mocker: MockFi... method test_process_file_no_file_data (line 108) | def test_process_file_no_file_data(self, processor, mocker: MockFixture): method test_process_file_none_file_data (line 115) | def test_process_file_none_file_data(self, processor, mocker: MockFixt... method test_merge_params_default (line 122) | def test_merge_params_default(self, processor): method test_merge_params_override (line 131) | def test_merge_params_override(self, processor): method test_merge_params_additional (line 140) | def test_merge_params_additional(self, processor): method test_prepare_partition_kwargs_basic (line 149) | def test_prepare_partition_kwargs_basic(self, processor): method test_prepare_partition_kwargs_by_title (line 163) | def test_prepare_partition_kwargs_by_title(self, processor): method test_prepare_partition_kwargs_none_strategy (line 173) | def test_prepare_partition_kwargs_none_strategy(self, processor): method test_prepare_partition_kwargs_custom_params (line 182) | def test_prepare_partition_kwargs_custom_params(self, processor): method test_process_elements_basic_strategy (line 200) | def test_process_elements_basic_strategy(self, processor, mocker: Mock... method test_process_elements_by_title_strategy (line 213) | def test_process_elements_by_title_strategy(self, processor, mocker: M... method test_process_elements_none_strategy (line 226) | def test_process_elements_none_strategy(self, processor, mocker: MockF... method test_create_single_document (line 238) | def test_create_single_document(self, processor): method test_create_single_document_no_language (line 259) | def test_create_single_document_no_language(self, processor): method test_create_single_document_no_metadata (line 273) | def test_create_single_document_no_metadata(self, processor): method test_create_single_document_no_text_attribute (line 286) | def test_create_single_document_no_text_attribute(self, processor): method test_create_chunked_documents (line 302) | def test_create_chunked_documents(self, processor): method test_create_chunked_documents_with_coordinates (line 331) | def test_create_chunked_documents_with_coordinates(self, processor): method test_create_chunked_documents_no_text (line 347) | def test_create_chunked_documents_no_text(self, processor): method test_create_chunked_documents_no_metadata (line 362) | def test_create_chunked_documents_no_metadata(self, processor): method test_create_chunked_documents_no_language (line 375) | def test_create_chunked_documents_no_language(self, processor): method test_get_supported_formats (line 389) | def test_get_supported_formats(self, processor): method test_validate_file_format (line 420) | def test_validate_file_format(self, processor, filename, expected): method test_validate_file_format_none (line 425) | def test_validate_file_format_none(self, processor): method test_get_file_info_success (line 430) | def test_get_file_info_success(self, processor, mocker: MockFixture): method test_get_file_info_file_not_exists (line 451) | def test_get_file_info_file_not_exists(self, processor, mocker: MockFi... method test_get_file_info_unsupported_format (line 458) | def test_get_file_info_unsupported_format(self, processor, mocker: Moc... method test_process_file_different_strategies (line 484) | def test_process_file_different_strategies(self, processor, mocker: Mo... method test_process_file_with_skip_infer_table_types (line 505) | def test_process_file_with_skip_infer_table_types(self, processor, moc... method test_element_type_metadata (line 523) | def test_element_type_metadata(self, processor): method test_process_file_with_empty_elements (line 537) | def test_process_file_with_empty_elements(self, processor, mocker: Moc... method test_process_file_filename_none (line 546) | def test_process_file_filename_none(self, processor, mocker: MockFixtu... FILE: test/sdk/datamate/test_datamate_client.py function client (line 11) | def client() -> DataMateClient: function _create_mock_response (line 25) | def _create_mock_response(status: int, json_data=None, text: str = ""): class TestListKnowledgeBases (line 35) | class TestListKnowledgeBases: method test_success (line 36) | def test_success(self, client: DataMateClient): method test_non_200_json_error (line 50) | def test_non_200_json_error(self, client: DataMateClient): method test_http_error (line 58) | def test_http_error(self, client: DataMateClient): class TestGetKnowledgeBaseFiles (line 65) | class TestGetKnowledgeBaseFiles: method test_success (line 66) | def test_success(self, client: DataMateClient): method test_non_200 (line 79) | def test_non_200(self, client: DataMateClient): method test_http_error (line 86) | def test_http_error(self, client: DataMateClient): class TestRetrieveKnowledgeBase (line 93) | class TestRetrieveKnowledgeBase: method test_success (line 94) | def test_success(self, client: DataMateClient): method test_non_200 (line 113) | def test_non_200(self, client: DataMateClient): method test_http_error (line 120) | def test_http_error(self, client: DataMateClient): class TestBuildFileDownloadUrl (line 127) | class TestBuildFileDownloadUrl: method test_build_url (line 128) | def test_build_url(self, client: DataMateClient): method test_missing_parts (line 132) | def test_missing_parts(self, client: DataMateClient): class TestSyncAllKnowledgeBases (line 137) | class TestSyncAllKnowledgeBases: method test_success_and_partial_error (line 138) | def test_success_and_partial_error(self, mocker: MockerFixture, client... method test_sync_failure (line 150) | def test_sync_failure(self, mocker: MockerFixture, client: DataMateCli... class TestGetKnowledgeBaseInfo (line 160) | class TestGetKnowledgeBaseInfo: method test_success (line 161) | def test_success(self, client: DataMateClient): method test_success_with_authorization (line 175) | def test_success_with_authorization(self, client: DataMateClient): method test_empty_data (line 189) | def test_empty_data(self, client: DataMateClient): method test_non_200_json_error (line 196) | def test_non_200_json_error(self, client: DataMateClient): method test_non_200_text_error (line 206) | def test_non_200_text_error(self, client: DataMateClient): method test_http_error_raised (line 219) | def test_http_error_raised(self, client: DataMateClient): class TestBuildHeaders (line 229) | class TestBuildHeaders: method test_with_authorization (line 232) | def test_with_authorization(self, client: DataMateClient): method test_without_authorization (line 236) | def test_without_authorization(self, client: DataMateClient): method test_with_none_authorization (line 240) | def test_with_none_authorization(self, client: DataMateClient): class TestBuildUrl (line 245) | class TestBuildUrl: method test_path_with_leading_slash (line 248) | def test_path_with_leading_slash(self, client: DataMateClient): method test_path_without_leading_slash (line 252) | def test_path_without_leading_slash(self, client: DataMateClient): method test_base_url_without_trailing_slash (line 256) | def test_base_url_without_trailing_slash(self, client: DataMateClient): class TestMakeRequest (line 262) | class TestMakeRequest: method test_get_request_success (line 265) | def test_get_request_success(self, client: DataMateClient): method test_post_request_success (line 274) | def test_post_request_success(self, client: DataMateClient): method test_non_200_status_code (line 287) | def test_non_200_status_code(self, client: DataMateClient): method test_unsupported_method (line 297) | def test_unsupported_method(self, client: DataMateClient): class TestHandleErrorResponse (line 304) | class TestHandleErrorResponse: method test_json_error_response (line 307) | def test_json_error_response(self, client: DataMateClient): method test_text_error_response (line 320) | def test_text_error_response(self, client: DataMateClient): method test_json_error_without_detail (line 333) | def test_json_error_without_detail(self, client: DataMateClient): class TestListKnowledgeBasesEdgeCases (line 346) | class TestListKnowledgeBasesEdgeCases: method test_empty_list (line 349) | def test_empty_list(self, client: DataMateClient): method test_no_data_field (line 356) | def test_no_data_field(self, client: DataMateClient): method test_default_parameters (line 363) | def test_default_parameters(self, client: DataMateClient): class TestGetKnowledgeBaseFilesEdgeCases (line 377) | class TestGetKnowledgeBaseFilesEdgeCases: method test_empty_file_list (line 380) | def test_empty_file_list(self, client: DataMateClient): method test_no_data_field (line 387) | def test_no_data_field(self, client: DataMateClient): method test_with_authorization (line 394) | def test_with_authorization(self, client: DataMateClient): class TestRetrieveKnowledgeBaseEdgeCases (line 407) | class TestRetrieveKnowledgeBaseEdgeCases: method test_empty_results (line 410) | def test_empty_results(self, client: DataMateClient): method test_no_data_field (line 417) | def test_no_data_field(self, client: DataMateClient): method test_default_parameters (line 424) | def test_default_parameters(self, client: DataMateClient): method test_multiple_knowledge_base_ids (line 442) | def test_multiple_knowledge_base_ids(self, client: DataMateClient): class TestSyncAllKnowledgeBasesEdgeCases (line 461) | class TestSyncAllKnowledgeBasesEdgeCases: method test_empty_knowledge_bases_list (line 464) | def test_empty_knowledge_bases_list(self, mocker: MockerFixture, clien... method test_all_success (line 473) | def test_all_success(self, mocker: MockerFixture, client: DataMateClie... method test_with_authorization (line 490) | def test_with_authorization(self, mocker: MockerFixture, client: DataM... class TestClientInitialization (line 504) | class TestClientInitialization: method test_default_timeout (line 507) | def test_default_timeout(self): method test_custom_timeout (line 511) | def test_custom_timeout(self): method test_default_ssl_verification (line 515) | def test_default_ssl_verification(self): method test_custom_ssl_verification (line 519) | def test_custom_ssl_verification(self): method test_base_url_stripping (line 526) | def test_base_url_stripping(self): FILE: test/sdk/memory/test_memory_service.py function _default_get_memory_instance (line 16) | async def _default_get_memory_instance(_: Dict[str, Any]): function _build_memory_identifiers (line 41) | def _build_memory_identifiers(*, memory_level: str, user_id: str, tenant... class DummyMemory (line 60) | class DummyMemory: method __init__ (line 61) | def __init__(self, config: Dict[str, Any] | None = None): method add (line 71) | async def add(self, messages, *, user_id=None, agent_id=None, infer=Tr... method search (line 83) | async def search(self, *, query, limit, threshold, user_id, agent_id=N... method get_all (line 102) | async def get_all(self, *, user_id, agent_id=None): # noqa: ANN001 method delete (line 115) | async def delete(self, *, memory_id): # noqa: ANN001 method reset (line 122) | async def reset(self): # noqa: D401 function _return_dummy_memory (line 130) | async def _return_dummy_memory(config: Dict[str, Any] | None = None): function test_add_memory_user_and_agent_paths (line 140) | async def test_add_memory_user_and_agent_paths(monkeypatch): function test_add_memory_invalid_level (line 176) | async def test_add_memory_invalid_level(monkeypatch): function test_add_memory_in_levels_merge_priority (line 194) | async def test_add_memory_in_levels_merge_priority(monkeypatch): function test_search_memory_filters_and_coroutine_results (line 230) | async def test_search_memory_filters_and_coroutine_results(monkeypatch): function test_search_memory_invalid_level (line 269) | async def test_search_memory_invalid_level(monkeypatch): function test_search_memory_in_levels_aggregates_and_order (line 282) | async def test_search_memory_in_levels_aggregates_and_order(monkeypatch): function test_list_memory_filters_and_counts (line 312) | async def test_list_memory_filters_and_counts(monkeypatch): function test_delete_memory_success (line 355) | async def test_delete_memory_success(monkeypatch): function test_delete_memory_unsupported (line 369) | async def test_delete_memory_unsupported(monkeypatch): function test_clear_memory_counts_and_failures (line 389) | async def test_clear_memory_counts_and_failures(monkeypatch): function test_reset_all_memory_success_and_failure (line 420) | async def test_reset_all_memory_success_and_failure(monkeypatch): function test_filter_by_memory_level_variants (line 442) | def test_filter_by_memory_level_variants(): function test_add_memory_in_levels_ignores_failing_levels (line 462) | async def test_add_memory_in_levels_ignores_failing_levels(monkeypatch): function test_search_memory_in_levels_ignores_failing_levels_and_preserves_order (line 483) | async def test_search_memory_in_levels_ignores_failing_levels_and_preser... function test_list_memory_non_coroutine_results (line 508) | async def test_list_memory_non_coroutine_results(monkeypatch): class _DummyESCore (line 534) | class _DummyESCore: method __init__ (line 535) | def __init__(self, exists_behavior=None, delete_raises=False): method delete_index (line 545) | def delete_index(self, index_name: str): function test_clear_model_memories_early_exit_when_index_missing (line 552) | async def test_clear_model_memories_early_exit_when_index_missing(monkey... function test_clear_model_memories_success_and_config_adjustment_with_repo (line 578) | async def test_clear_model_memories_success_and_config_adjustment_with_r... function test_clear_model_memories_handles_es_exists_exception (line 609) | async def test_clear_model_memories_handles_es_exists_exception(monkeypa... function test_clear_model_memories_swallow_failures_and_no_repo (line 638) | async def test_clear_model_memories_swallow_failures_and_no_repo(monkeyp... function test_clear_model_memories_invalid_model_name (line 660) | async def test_clear_model_memories_invalid_model_name(): FILE: test/sdk/monitor/conftest.py function pytest_configure (line 14) | def pytest_configure(config): function pytest_unconfigure (line 71) | def pytest_unconfigure(config): FILE: test/sdk/monitor/test_monitoring.py class TestMonitoringConfig (line 25) | class TestMonitoringConfig: method test_default_config (line 28) | def test_default_config(self): method test_custom_config (line 40) | def test_custom_config(self): class TestMonitoringManager (line 61) | class TestMonitoringManager: method setup_method (line 64) | def setup_method(self): method test_singleton_behavior (line 69) | def test_singleton_behavior(self): method test_initialization_only_once (line 77) | def test_initialization_only_once(self): method test_configure_disabled_telemetry (line 85) | def test_configure_disabled_telemetry(self): method test_configure_enabled_telemetry (line 96) | def test_configure_enabled_telemetry(self): method test_is_enabled_property (line 107) | def test_is_enabled_property(self): method test_init_telemetry_success (line 133) | def test_init_telemetry_success(self, mock_requests_instr, mock_resource, method test_init_telemetry_disabled (line 184) | def test_init_telemetry_disabled(self): method test_init_telemetry_no_config (line 194) | def test_init_telemetry_no_config(self): method test_init_telemetry_exception_handling (line 202) | def test_init_telemetry_exception_handling(self): method test_setup_fastapi_app_enabled (line 213) | def test_setup_fastapi_app_enabled(self): method test_setup_fastapi_app_disabled (line 227) | def test_setup_fastapi_app_disabled(self): method test_setup_fastapi_app_no_app (line 238) | def test_setup_fastapi_app_no_app(self): method test_setup_fastapi_app_exception (line 247) | def test_setup_fastapi_app_exception(self): method test_trace_llm_request_enabled (line 263) | def test_trace_llm_request_enabled(self, mock_trace): method test_trace_llm_request_disabled (line 288) | def test_trace_llm_request_disabled(self): method test_trace_llm_request_no_tracer (line 297) | def test_trace_llm_request_no_tracer(self): method test_trace_llm_request_with_exception (line 308) | def test_trace_llm_request_with_exception(self, mock_trace): method test_get_current_span_enabled (line 335) | def test_get_current_span_enabled(self, mock_trace): method test_get_current_span_disabled (line 348) | def test_get_current_span_disabled(self): method test_add_span_event_enabled (line 358) | def test_add_span_event_enabled(self, mock_trace): method test_add_span_event_no_attributes (line 373) | def test_add_span_event_no_attributes(self, mock_trace): method test_add_span_event_disabled (line 386) | def test_add_span_event_disabled(self): method test_add_span_event_no_span (line 396) | def test_add_span_event_no_span(self, mock_trace): method test_set_span_attributes_enabled (line 408) | def test_set_span_attributes_enabled(self, mock_trace): method test_set_span_attributes_disabled (line 422) | def test_set_span_attributes_disabled(self): method test_create_token_tracker (line 431) | def test_create_token_tracker(self): method test_record_llm_metrics_disabled (line 443) | def test_record_llm_metrics_disabled(self): method test_record_llm_metrics_ttft (line 452) | def test_record_llm_metrics_ttft(self): method test_record_llm_metrics_token_rate (line 464) | def test_record_llm_metrics_token_rate(self): method test_record_llm_metrics_tokens (line 476) | def test_record_llm_metrics_tokens(self): method test_monitor_endpoint_decorator_async (line 488) | def test_monitor_endpoint_decorator_async(self): method test_monitor_endpoint_decorator_sync (line 508) | def test_monitor_endpoint_decorator_sync(self): method test_monitor_endpoint_decorator_with_exception (line 528) | def test_monitor_endpoint_decorator_with_exception(self): method test_monitor_endpoint_exclude_params (line 547) | def test_monitor_endpoint_exclude_params(self): method test_monitor_llm_call_decorator_sync (line 575) | def test_monitor_llm_call_decorator_sync(self): method test_monitor_llm_call_decorator_async (line 601) | def test_monitor_llm_call_decorator_async(self): class TestLLMTokenTracker (line 628) | class TestLLMTokenTracker: method setup_method (line 631) | def setup_method(self): method test_initialization (line 637) | def test_initialization(self): method test_record_first_token_enabled (line 651) | def test_record_first_token_enabled(self): method test_record_first_token_disabled (line 672) | def test_record_first_token_disabled(self): method test_record_first_token_multiple_calls (line 683) | def test_record_first_token_multiple_calls(self): method test_record_token_enabled (line 700) | def test_record_token_enabled(self): method test_record_token_disabled (line 719) | def test_record_token_disabled(self): method test_record_token_multiple_tokens (line 730) | def test_record_token_multiple_tokens(self): method test_record_completion_enabled (line 745) | def test_record_completion_enabled(self): method test_record_completion_disabled (line 772) | def test_record_completion_disabled(self): method test_record_completion_span_attributes (line 781) | def test_record_completion_span_attributes(self): method test_record_completion_zero_duration (line 804) | def test_record_completion_zero_duration(self): method test_record_completion_no_tokens (line 818) | def test_record_completion_no_tokens(self): class TestGlobalFunctions (line 834) | class TestGlobalFunctions: method test_get_monitoring_manager_singleton (line 837) | def test_get_monitoring_manager_singleton(self): class TestIntegrationScenarios (line 850) | class TestIntegrationScenarios: method setup_method (line 853) | def setup_method(self): method test_full_monitoring_lifecycle (line 858) | def test_full_monitoring_lifecycle(self): method test_monitoring_disabled_lifecycle (line 881) | def test_monitoring_disabled_lifecycle(self): method test_concurrent_access (line 903) | def test_concurrent_access(self): method test_error_resilience (line 922) | def test_error_resilience(self): FILE: test/sdk/multi_modal/test_load_save_object.py function make_manager (line 10) | def make_manager(client: Any = None) -> lso.LoadSaveObjectManager: function test_get_client_returns_configured_storage (line 16) | def test_get_client_returns_configured_storage(): function test_get_client_requires_initialized_storage (line 22) | def test_get_client_requires_initialized_storage(): function test_download_file_from_http (line 29) | def test_download_file_from_http(monkeypatch): function test_download_file_from_s3 (line 47) | def test_download_file_from_s3(monkeypatch): function test_download_file_from_s3_failure_returns_none (line 59) | def test_download_file_from_s3_failure_returns_none(): function test_download_file_from_s3_missing_method_returns_none (line 68) | def test_download_file_from_s3_missing_method_returns_none(): function test_download_file_requires_url_type (line 76) | def test_download_file_requires_url_type(): function test_download_file_empty_url_returns_none (line 82) | def test_download_file_empty_url_returns_none(): function test_download_file_stream_read_failure (line 87) | def test_download_file_stream_read_failure(monkeypatch): function test_upload_bytes_to_minio_generates_object_name (line 103) | def test_upload_bytes_to_minio_generates_object_name(monkeypatch): function test_upload_bytes_to_minio_generates_name_without_extension (line 125) | def test_upload_bytes_to_minio_generates_name_without_extension(monkeypa... function test_upload_bytes_to_minio_requires_upload_method (line 149) | def test_upload_bytes_to_minio_requires_upload_method(): function test_upload_bytes_to_minio_failure_propagates_error (line 159) | def test_upload_bytes_to_minio_failure_propagates_error(): function test_upload_bytes_to_minio_with_explicit_object_name (line 170) | def test_upload_bytes_to_minio_with_explicit_object_name(): function test_load_object_transforms_single_argument (line 191) | def test_load_object_transforms_single_argument(monkeypatch): function test_load_object_transforms_iterable_with_transformer (line 206) | def test_load_object_transforms_iterable_with_transformer(monkeypatch): function test_load_object_preserves_tuple_type (line 224) | def test_load_object_preserves_tuple_type(monkeypatch): function test_load_object_skips_missing_arguments (line 239) | def test_load_object_skips_missing_arguments(monkeypatch): function test_load_object_raises_for_non_url (line 253) | def test_load_object_raises_for_non_url(): function test_load_object_allows_none_input (line 264) | def test_load_object_allows_none_input(): function test_load_object_transformer_error_propagates (line 274) | def test_load_object_transformer_error_propagates(monkeypatch): function test_load_object_transformer_list_shorter_than_inputs (line 289) | def test_load_object_transformer_list_shorter_than_inputs(monkeypatch): function test_save_object_uploads_bytes (line 309) | def test_save_object_uploads_bytes(monkeypatch): function test_save_object_with_transformer_and_nested (line 326) | def test_save_object_with_transformer_and_nested(monkeypatch): function test_save_object_validates_return_value_count (line 346) | def test_save_object_validates_return_value_count(): function test_save_object_transformer_must_return_bytes (line 357) | def test_save_object_transformer_must_return_bytes(): function test_save_object_requires_bytes_without_transformer (line 371) | def test_save_object_requires_bytes_without_transformer(): function test_save_object_handles_none_output (line 382) | def test_save_object_handles_none_output(monkeypatch): function test_save_object_returns_tuple_for_multiple_outputs (line 395) | def test_save_object_returns_tuple_for_multiple_outputs(monkeypatch): function test_save_object_nested_none_structure (line 411) | def test_save_object_nested_none_structure(monkeypatch): function test_save_object_supports_async_functions (line 429) | async def test_save_object_supports_async_functions(monkeypatch): FILE: test/sdk/multi_modal/test_utils.py function test_is_url_variants (line 8) | def test_is_url_variants(): function test_is_url_requires_bucket_and_key (line 17) | def test_is_url_requires_bucket_and_key(): function test_bytes_to_base64_and_back (line 23) | def test_bytes_to_base64_and_back(): function test_bytes_to_base64_requires_data (line 32) | def test_bytes_to_base64_requires_data(): function test_base64_to_bytes_without_prefix (line 37) | def test_base64_to_bytes_without_prefix(): function test_base64_to_bytes_invalid_input (line 44) | def test_base64_to_bytes_invalid_input(): function test_base64_to_bytes_requires_string (line 49) | def test_base64_to_bytes_requires_string(): function test_base64_to_bytes_invalid_header_format (line 54) | def test_base64_to_bytes_invalid_header_format(): function test_generate_object_name_appends_extension (line 59) | def test_generate_object_name_appends_extension(monkeypatch: pytest.Monk... function test_generate_object_name_accepts_dot_prefix (line 81) | def test_generate_object_name_accepts_dot_prefix(monkeypatch: pytest.Mon... function test_detect_content_type_known_signatures (line 103) | def test_detect_content_type_known_signatures(): function test_detect_content_type_audio_video_variants (line 123) | def test_detect_content_type_audio_video_variants(): function test_detect_content_type_text_and_default (line 131) | def test_detect_content_type_text_and_default(): function test_guess_content_type_from_url (line 139) | def test_guess_content_type_from_url(): function test_guess_content_type_from_url_uses_case_insensitive_suffix (line 145) | def test_guess_content_type_from_url_uses_case_insensitive_suffix(): function test_guess_extension_from_content_type (line 149) | def test_guess_extension_from_content_type(): function test_parse_s3_url_variants (line 154) | def test_parse_s3_url_variants(): function test_parse_s3_url_invalid (line 159) | def test_parse_s3_url_invalid(): function test_parse_s3_url_requires_object_name (line 164) | def test_parse_s3_url_requires_object_name(): function test_base64_to_bytes_header_without_base64_flag (line 172) | def test_base64_to_bytes_header_without_base64_flag(): function test_detect_content_type_expanded_signatures (line 191) | def test_detect_content_type_expanded_signatures(payload: bytes, expecte... function test_detect_content_type_mp3_frame_sync (line 195) | def test_detect_content_type_mp3_frame_sync(): function test_parse_s3_url_rejects_empty (line 201) | def test_parse_s3_url_rejects_empty(value): FILE: test/sdk/storage/test_minio.py class TestMinIOStorageClientInit (line 20) | class TestMinIOStorageClientInit: method test_init_with_all_parameters (line 24) | def test_init_with_all_parameters(self, mock_boto3): method test_init_with_minimal_parameters (line 49) | def test_init_with_minimal_parameters(self, mock_boto3): method test_init_with_default_bucket_creation (line 66) | def test_init_with_default_bucket_creation(self, mock_boto3): method test_init_bucket_check_permission_error (line 90) | def test_init_bucket_check_permission_error(self, mock_boto3): method test_init_bucket_creation_failure (line 110) | def test_init_bucket_creation_failure(self, mock_boto3): class TestMinIOStorageClientUploadFile (line 135) | class TestMinIOStorageClientUploadFile: method test_upload_file_success (line 139) | def test_upload_file_success(self, mock_boto3): method test_upload_file_without_bucket (line 161) | def test_upload_file_without_bucket(self, mock_boto3): method test_upload_file_without_object_name (line 178) | def test_upload_file_without_object_name(self, mock_boto3): method test_upload_file_exception (line 200) | def test_upload_file_exception(self, mock_boto3): class TestMinIOStorageClientUploadFileobj (line 220) | class TestMinIOStorageClientUploadFileobj: method test_upload_fileobj_success (line 224) | def test_upload_fileobj_success(self, mock_boto3): method test_upload_fileobj_without_bucket (line 245) | def test_upload_fileobj_without_bucket(self, mock_boto3): method test_upload_fileobj_exception (line 263) | def test_upload_fileobj_exception(self, mock_boto3): class TestMinIOStorageClientDownloadFile (line 284) | class TestMinIOStorageClientDownloadFile: method test_download_file_success (line 288) | def test_download_file_success(self, mock_boto3): method test_download_file_without_bucket (line 308) | def test_download_file_without_bucket(self, mock_boto3): method test_download_file_exception (line 325) | def test_download_file_exception(self, mock_boto3): class TestMinIOStorageClientGetFileUrl (line 345) | class TestMinIOStorageClientGetFileUrl: method test_get_file_url_success (line 349) | def test_get_file_url_success(self, mock_boto3): method test_get_file_url_without_bucket (line 374) | def test_get_file_url_without_bucket(self, mock_boto3): method test_get_file_url_exception (line 391) | def test_get_file_url_exception(self, mock_boto3): class TestMinIOStorageClientGetFileStream (line 411) | class TestMinIOStorageClientGetFileStream: method test_get_file_stream_success (line 415) | def test_get_file_stream_success(self, mock_boto3): method test_get_file_stream_without_bucket (line 437) | def test_get_file_stream_without_bucket(self, mock_boto3): method test_get_file_stream_not_found (line 454) | def test_get_file_stream_not_found(self, mock_boto3): method test_get_file_stream_permission_error (line 479) | def test_get_file_stream_permission_error(self, mock_boto3): method test_get_file_stream_unexpected_error (line 504) | def test_get_file_stream_unexpected_error(self, mock_boto3): class TestMinIOStorageClientGetFileSize (line 524) | class TestMinIOStorageClientGetFileSize: method test_get_file_size_success (line 528) | def test_get_file_size_success(self, mock_boto3): method test_get_file_size_without_bucket (line 548) | def test_get_file_size_without_bucket(self, mock_boto3): method test_get_file_size_not_found (line 564) | def test_get_file_size_not_found(self, mock_boto3): method test_get_file_size_permission_error (line 588) | def test_get_file_size_permission_error(self, mock_boto3): class TestMinIOStorageClientListFiles (line 612) | class TestMinIOStorageClientListFiles: method test_list_files_success (line 616) | def test_list_files_success(self, mock_boto3): method test_list_files_empty (line 658) | def test_list_files_empty(self, mock_boto3): method test_list_files_without_bucket (line 677) | def test_list_files_without_bucket(self, mock_boto3): method test_list_files_exception (line 693) | def test_list_files_exception(self, mock_boto3): class TestMinIOStorageClientDeleteFile (line 712) | class TestMinIOStorageClientDeleteFile: method test_delete_file_success (line 716) | def test_delete_file_success(self, mock_boto3): method test_delete_file_without_bucket (line 736) | def test_delete_file_without_bucket(self, mock_boto3): method test_delete_file_not_found (line 753) | def test_delete_file_not_found(self, mock_boto3): method test_delete_file_permission_error (line 778) | def test_delete_file_permission_error(self, mock_boto3): method test_delete_file_unexpected_error (line 803) | def test_delete_file_unexpected_error(self, mock_boto3): class TestMinIOStorageClientExists (line 823) | class TestMinIOStorageClientExists: method test_exists_true (line 827) | def test_exists_true(self, mock_boto3): method test_exists_false (line 847) | def test_exists_false(self, mock_boto3): method test_exists_without_bucket (line 871) | def test_exists_without_bucket(self, mock_boto3): class TestMinIOStorageClientCopyFile (line 887) | class TestMinIOStorageClientCopyFile: method test_copy_file_success (line 891) | def test_copy_file_success(self, mock_boto3): method test_copy_file_uses_default_bucket (line 915) | def test_copy_file_uses_default_bucket(self, mock_boto3): method test_copy_file_without_bucket (line 939) | def test_copy_file_without_bucket(self, mock_boto3): method test_copy_file_exception (line 957) | def test_copy_file_exception(self, mock_boto3): FILE: test/sdk/storage/test_minio_config.py class TestMinIOStorageConfig (line 11) | class TestMinIOStorageConfig: method test_init_with_all_parameters (line 14) | def test_init_with_all_parameters(self): method test_init_with_minimal_parameters (line 32) | def test_init_with_minimal_parameters(self): method test_storage_type_property (line 47) | def test_storage_type_property(self): method test_properties (line 57) | def test_properties(self): method test_validate_success (line 75) | def test_validate_success(self): method test_validate_missing_endpoint (line 86) | def test_validate_missing_endpoint(self): method test_validate_missing_access_key (line 97) | def test_validate_missing_access_key(self): method test_validate_missing_secret_key (line 108) | def test_validate_missing_secret_key(self): method test_validate_none_endpoint (line 119) | def test_validate_none_endpoint(self): method test_validate_none_access_key (line 130) | def test_validate_none_access_key(self): method test_validate_none_secret_key (line 141) | def test_validate_none_secret_key(self): method test_property_access_after_init (line 152) | def test_property_access_after_init(self): method test_init_with_https_endpoint (line 172) | def test_init_with_https_endpoint(self): method test_init_with_http_endpoint_secure_false (line 184) | def test_init_with_http_endpoint_secure_false(self): FILE: test/sdk/storage/test_storage_client_factory.py class TestCreateStorageClientFromConfig (line 13) | class TestCreateStorageClientFromConfig: method test_create_minio_client_success (line 17) | def test_create_minio_client_success(self, mock_minio_client_class): method test_create_minio_client_with_defaults (line 47) | def test_create_minio_client_with_defaults(self, mock_minio_client_cla... method test_create_client_invalid_config_type (line 73) | def test_create_client_invalid_config_type(self): method test_create_client_unsupported_storage_type (line 90) | def test_create_client_unsupported_storage_type(self): method test_create_client_validation_failure (line 112) | def test_create_client_validation_failure(self): method test_create_client_handles_client_initialization_error (line 125) | def test_create_client_handles_client_initialization_error(self, mock_... method test_create_minio_client_with_https_endpoint (line 141) | def test_create_minio_client_with_https_endpoint(self, mock_minio_clie... method test_create_client_with_none_config (line 165) | def test_create_client_with_none_config(self): FILE: test/sdk/utils/test_http_client_manager.py function _reset_singleton (line 15) | def _reset_singleton(): class TestHttpClientManagerSingleton (line 56) | class TestHttpClientManagerSingleton: method test_singleton_returns_same_instance (line 59) | def test_singleton_returns_same_instance(self): method test_singleton_thread_safety (line 69) | def test_singleton_thread_safety(self): class TestHttpClientManagerSyncClient (line 94) | class TestHttpClientManagerSyncClient: method test_get_sync_client_creates_new_client (line 97) | def test_get_sync_client_creates_new_client(self): method test_get_sync_client_returns_cached_client (line 112) | def test_get_sync_client_returns_cached_client(self): method test_get_sync_client_different_timeout_creates_new_client (line 132) | def test_get_sync_client_different_timeout_creates_new_client(self): method test_get_sync_client_different_verify_ssl_creates_new_client (line 151) | def test_get_sync_client_different_verify_ssl_creates_new_client(self): method test_get_sync_client_different_base_url_creates_new_client (line 170) | def test_get_sync_client_different_base_url_creates_new_client(self): class TestHttpClientManagerAsyncClient (line 190) | class TestHttpClientManagerAsyncClient: method test_get_async_client_creates_new_client (line 193) | def test_get_async_client_creates_new_client(self): method test_get_async_client_returns_cached_client (line 207) | def test_get_async_client_returns_cached_client(self): class TestHttpClientManagerContextManager (line 228) | class TestHttpClientManagerContextManager: method test_context_manager_enter_returns_self (line 231) | def test_context_manager_enter_returns_self(self): method test_context_manager_exits_cleans_up_clients (line 239) | def test_context_manager_exits_cleans_up_clients(self): method test_context_manager_with_exception_still_closes (line 263) | def test_context_manager_with_exception_still_closes(self): method test_context_manager_multiple_clients_closed (line 286) | def test_context_manager_multiple_clients_closed(self): class TestHttpClientManagerShutdown (line 312) | class TestHttpClientManagerShutdown: method test_shutdown_closes_all_sync_clients (line 315) | def test_shutdown_closes_all_sync_clients(self): method test_shutdown_clears_configs (line 343) | def test_shutdown_clears_configs(self): class TestHttpClientManagerAsyncShutdown (line 359) | class TestHttpClientManagerAsyncShutdown: method test_shutdown_async_closes_all_clients (line 363) | async def test_shutdown_async_closes_all_clients(self): class TestHttpClientManagerCloseClient (line 395) | class TestHttpClientManagerCloseClient: method test_close_client_returns_true_when_found (line 398) | def test_close_client_returns_true_when_found(self): method test_close_client_returns_false_when_not_found (line 417) | def test_close_client_returns_false_when_not_found(self): method test_close_client_removes_client_from_registry (line 430) | def test_close_client_removes_client_from_registry(self): method test_close_async_client (line 450) | async def test_close_async_client(self): class TestHttpClientManagerGetStats (line 471) | class TestHttpClientManagerGetStats: method test_get_stats_returns_correct_counts (line 474) | def test_get_stats_returns_correct_counts(self): method test_get_stats_includes_client_details (line 496) | def test_get_stats_includes_client_details(self): class TestHttpClientManagerGetConfig (line 517) | class TestHttpClientManagerGetConfig: method test_get_client_config_returns_config (line 520) | def test_get_client_config_returns_config(self): method test_get_client_config_returns_none_for_nonexistent (line 542) | def test_get_client_config_returns_none_for_nonexistent(self): class TestHttpClientManagerClientKey (line 556) | class TestHttpClientManagerClientKey: method test_get_client_key_format (line 559) | def test_get_client_key_format(self): method test_get_client_key_different_params_different_keys (line 572) | def test_get_client_key_different_params_different_keys(self): FILE: test/sdk/vector_database/test_datamate_core.py function test_parse_timestamp_variants (line 8) | def test_parse_timestamp_variants(): function test_user_indices_and_count (line 34) | def test_user_indices_and_count(mock_client_cls): function test_hybrid_search_and_retrieve (line 59) | def test_hybrid_search_and_retrieve(mock_client_cls): function test_get_documents_detail_parsing (line 73) | def test_get_documents_detail_parsing(mock_client_cls): function test_get_indices_detail_success_and_error (line 99) | def test_get_indices_detail_success_and_error(mock_client_cls): function test_not_implemented_methods_raise (line 135) | def test_not_implemented_methods_raise(mock_client_cls): function test_ssl_verification_parameter (line 165) | def test_ssl_verification_parameter(mock_client_cls): FILE: test/sdk/vector_database/test_elasticsearch_core.py function elasticsearch_core_instance (line 15) | def elasticsearch_core_instance(): function sample_documents (line 26) | def sample_documents(): function test_preprocess_documents_with_complete_document (line 53) | def test_preprocess_documents_with_complete_document(elasticsearch_core_... function test_preprocess_documents_with_incomplete_document (line 76) | def test_preprocess_documents_with_incomplete_document(elasticsearch_cor... function test_preprocess_documents_with_multiple_documents (line 114) | def test_preprocess_documents_with_multiple_documents(elasticsearch_core... function test_preprocess_documents_preserves_original_data (line 148) | def test_preprocess_documents_preserves_original_data(elasticsearch_core... function test_preprocess_documents_with_empty_list (line 181) | def test_preprocess_documents_with_empty_list(elasticsearch_core_instance): function test_preprocess_documents_id_generation (line 190) | def test_preprocess_documents_id_generation(elasticsearch_core_instance): function test_preprocess_documents_with_none_values (line 227) | def test_preprocess_documents_with_none_values(elasticsearch_core_instan... function test_preprocess_documents_with_zero_values (line 260) | def test_preprocess_documents_with_zero_values(elasticsearch_core_instan... function test_preprocess_large_batch_of_documents (line 292) | def test_preprocess_large_batch_of_documents(elasticsearch_core_instance): function test_preprocess_documents_performance_with_large_batch (line 333) | def test_preprocess_documents_performance_with_large_batch(elasticsearch... function test_preprocess_documents_maintains_order (line 368) | def test_preprocess_documents_maintains_order(elasticsearch_core_instance): function test_create_index_success (line 397) | def test_create_index_success(elasticsearch_core_instance): function test_create_index_already_exists (line 419) | def test_create_index_already_exists(elasticsearch_core_instance): function test_delete_index_success (line 435) | def test_delete_index_success(elasticsearch_core_instance): function test_delete_index_not_found (line 446) | def test_delete_index_not_found(elasticsearch_core_instance): function test_get_user_indices_success (line 458) | def test_get_user_indices_success(elasticsearch_core_instance): function test_force_refresh_with_retry_success_first_attempt (line 479) | def test_force_refresh_with_retry_success_first_attempt(elasticsearch_co... function test_force_refresh_with_retry_success_after_one_failure (line 490) | def test_force_refresh_with_retry_success_after_one_failure(elasticsearc... function test_force_refresh_with_retry_all_attempts_fail (line 507) | def test_force_refresh_with_retry_all_attempts_fail(elasticsearch_core_i... function test_force_refresh_with_retry_success_after_two_failures (line 523) | def test_force_refresh_with_retry_success_after_two_failures(elasticsear... function test_ensure_index_ready_success_green_status (line 548) | def test_ensure_index_ready_success_green_status(elasticsearch_core_inst... function test_ensure_index_ready_success_yellow_status (line 562) | def test_ensure_index_ready_success_yellow_status(elasticsearch_core_ins... function test_ensure_index_ready_red_status_continues_loop (line 576) | def test_ensure_index_ready_red_status_continues_loop(elasticsearch_core... function test_ensure_index_ready_timeout (line 609) | def test_ensure_index_ready_timeout(elasticsearch_core_instance, caplog): function test_ensure_index_ready_health_exception_continues_loop (line 628) | def test_ensure_index_ready_health_exception_continues_loop(elasticsearc... function test_ensure_index_ready_search_exception_on_double_check (line 665) | def test_ensure_index_ready_search_exception_on_double_check(elasticsear... function test_vectorize_documents_empty_list (line 700) | def test_vectorize_documents_empty_list(elasticsearch_core_instance): function test_vectorize_documents_small_batch (line 714) | def test_vectorize_documents_small_batch(elasticsearch_core_instance): function test_small_batch_progress_callback_exception (line 745) | def test_small_batch_progress_callback_exception(elasticsearch_core_inst... function test_small_batch_error_path_logs_and_raises (line 767) | def test_small_batch_error_path_logs_and_raises(elasticsearch_core_insta... function test_vectorize_documents_large_batch (line 787) | def test_vectorize_documents_large_batch(elasticsearch_core_instance): function test_large_batch_progress_callback_invoked (line 822) | def test_large_batch_progress_callback_invoked(elasticsearch_core_instan... function test_large_batch_progress_callback_exception_logged (line 842) | def test_large_batch_progress_callback_exception_logged(elasticsearch_co... function test_large_batch_retry_logs_warning (line 864) | def test_large_batch_retry_logs_warning(elasticsearch_core_instance, cap... function test_delete_documents_success (line 893) | def test_delete_documents_success(elasticsearch_core_instance): function test_create_chunk_success (line 907) | def test_create_chunk_success(elasticsearch_core_instance): function test_update_chunk_success (line 924) | def test_update_chunk_success(elasticsearch_core_instance): function test_delete_chunk_success (line 948) | def test_delete_chunk_success(elasticsearch_core_instance): function test_delete_chunk_not_found (line 966) | def test_delete_chunk_not_found(elasticsearch_core_instance): function test_create_chunk_exception (line 979) | def test_create_chunk_exception(elasticsearch_core_instance): function test_update_chunk_exception_from_resolve (line 993) | def test_update_chunk_exception_from_resolve(elasticsearch_core_instance): function test_update_chunk_exception_from_update (line 1010) | def test_update_chunk_exception_from_update(elasticsearch_core_instance): function test_delete_chunk_exception_from_resolve (line 1029) | def test_delete_chunk_exception_from_resolve(elasticsearch_core_instance): function test_delete_chunk_exception_from_delete (line 1044) | def test_delete_chunk_exception_from_delete(elasticsearch_core_instance): function test_resolve_chunk_document_id_direct_hit (line 1061) | def test_resolve_chunk_document_id_direct_hit(elasticsearch_core_instance): function test_resolve_chunk_document_id_via_search (line 1074) | def test_resolve_chunk_document_id_via_search(elasticsearch_core_instance): function test_resolve_chunk_document_id_not_found (line 1092) | def test_resolve_chunk_document_id_not_found(elasticsearch_core_instance): function test_get_index_chunks_success (line 1108) | def test_get_index_chunks_success(elasticsearch_core_instance): function test_get_index_chunks_paginated (line 1138) | def test_get_index_chunks_paginated(elasticsearch_core_instance): function test_get_index_chunks_not_found (line 1161) | def test_get_index_chunks_not_found(elasticsearch_core_instance): function test_get_index_chunks_cleanup_failure (line 1174) | def test_get_index_chunks_cleanup_failure(elasticsearch_core_instance): function test_accurate_search_success (line 1203) | def test_accurate_search_success(elasticsearch_core_instance): function test_accurate_search_builds_multi_index_query (line 1233) | def test_accurate_search_builds_multi_index_query(elasticsearch_core_ins... function test_semantic_search_success (line 1259) | def test_semantic_search_success(elasticsearch_core_instance): function test_semantic_search_sets_knn_parameters (line 1287) | def test_semantic_search_sets_knn_parameters(elasticsearch_core_instance): function test_hybrid_search_success (line 1313) | def test_hybrid_search_success(elasticsearch_core_instance): function test_hybrid_search_with_missing_embeddings_generates_and_stores (line 1356) | def test_hybrid_search_with_missing_embeddings_generates_and_stores(elas... function test_hybrid_search_no_missing_embeddings_no_retry (line 1432) | def test_hybrid_search_no_missing_embeddings_no_retry(elasticsearch_core... function test_hybrid_search_handles_embedding_generation_failure (line 1473) | def test_hybrid_search_handles_embedding_generation_failure(elasticsearc... function test_hybrid_search_empty_results (line 1521) | def test_hybrid_search_empty_results(elasticsearch_core_instance): function test_get_documents_detail_success (line 1546) | def test_get_documents_detail_success(elasticsearch_core_instance): function test_get_indices_detail_success (line 1586) | def test_get_indices_detail_success(elasticsearch_core_instance): function test_handle_bulk_errors_with_errors (line 1638) | def test_handle_bulk_errors_with_errors(elasticsearch_core_instance): function test_handle_bulk_errors_version_conflict (line 1662) | def test_handle_bulk_errors_version_conflict(elasticsearch_core_instance): function test_handle_bulk_errors_skips_items_without_error (line 1682) | def test_handle_bulk_errors_skips_items_without_error(elasticsearch_core... function test_handle_bulk_errors_dim_mismatch_sets_specific_code (line 1692) | def test_handle_bulk_errors_dim_mismatch_sets_specific_code(elasticsearc... function test_bulk_operation_context (line 1716) | def test_bulk_operation_context(elasticsearch_core_instance): function test_exec_query_returns_formatted_results (line 1729) | def test_exec_query_returns_formatted_results(elasticsearch_core_instance): function test_exec_query_empty_results (line 1763) | def test_exec_query_empty_results(elasticsearch_core_instance): function test_exec_query_with_multi_index_pattern (line 1778) | def test_exec_query_with_multi_index_pattern(elasticsearch_core_instance): function test_hybrid_search_skips_semantic_result_with_missing_fields (line 1810) | def test_hybrid_search_skips_semantic_result_with_missing_fields(elastic... function test_hybrid_search_stores_embedding_failure_continues_processing (line 1860) | def test_hybrid_search_stores_embedding_failure_continues_processing(ela... function test_hybrid_search_adds_new_documents_from_semantic_results (line 1916) | def test_hybrid_search_adds_new_documents_from_semantic_results(elastics... function test_hybrid_search_missing_embedding_stores_with_model_name (line 1969) | def test_hybrid_search_missing_embedding_stores_with_model_name(elastics... function test_hybrid_search_empty_content_skips_embedding_generation (line 2016) | def test_hybrid_search_empty_content_skips_embedding_generation(elastics... function test_hybrid_search_empty_index_name_skips_embedding_generation (line 2060) | def test_hybrid_search_empty_index_name_skips_embedding_generation(elast... function test_hybrid_search_empty_embedding_skips_storage (line 2102) | def test_hybrid_search_empty_embedding_skips_storage(elasticsearch_core_...