SYMBOL INDEX (3205 symbols across 394 files) FILE: application/agents/agent_creator.py class AgentCreator (line 10) | class AgentCreator: method create_agent (line 18) | def create_agent(cls, type, *args, **kwargs): FILE: application/agents/base.py class BaseAgent (line 24) | class BaseAgent(ABC): method __init__ (line 25) | def __init__( method gen (line 86) | def gen( method _gen_inner (line 92) | def _gen_inner( method _get_tools (line 97) | def _get_tools(self, api_key: str = None) -> Dict[str, Dict]: method _get_user_tools (line 118) | def _get_user_tools(self, user="local"): method _build_tool_parameters (line 127) | def _build_tool_parameters(self, action): method _prepare_tools (line 142) | def _prepare_tools(self, tools_dict): method _execute_tool_action (line 165) | def _execute_tool_action(self, tools_dict, call): method _get_truncated_tool_calls (line 336) | def _get_truncated_tool_calls(self): method _calculate_current_context_tokens (line 354) | def _calculate_current_context_tokens(self, messages: List[Dict]) -> int: method _check_context_limit (line 370) | def _check_context_limit(self, messages: List[Dict]) -> bool: method _validate_context_size (line 408) | def _validate_context_size(self, messages: List[Dict]) -> None: method _truncate_text_middle (line 437) | def _truncate_text_middle(self, text: str, max_tokens: int) -> str: method _build_messages (line 476) | def _build_messages( method _truncate_history_to_fit (line 555) | def _truncate_history_to_fit( method _llm_gen (line 610) | def _llm_gen(self, messages: List[Dict], log_context: Optional[LogCont... method _llm_handler (line 645) | def _llm_handler( method _handle_response (line 661) | def _handle_response(self, response, tools_dict, messages, log_context): FILE: application/agents/classic_agent.py class ClassicAgent (line 10) | class ClassicAgent(BaseAgent): method _gen_inner (line 13) | def _gen_inner( FILE: application/agents/react_agent.py class ReActAgent (line 25) | class ReActAgent(BaseAgent): method __init__ (line 36) | def __init__(self, *args, **kwargs): method _gen_inner (line 41) | def _gen_inner( method _reset_state (line 74) | def _reset_state(self): method _planning_phase (line 79) | def _planning_phase( method _execution_phase (line 106) | def _execution_phase( method _synthesis_phase (line 144) | def _synthesis_phase( method _build_planning_prompt (line 166) | def _build_planning_prompt(self, query: str) -> str: method _build_execution_prompt (line 174) | def _build_execution_prompt(self, query: str) -> str: method _build_final_answer_prompt (line 188) | def _build_final_answer_prompt(self, query: str) -> str: method _extract_content (line 197) | def _extract_content(self, response: Any) -> str: FILE: application/agents/tools/api_body_serializer.py class ContentType (line 11) | class ContentType(str, Enum): class RequestBodySerializer (line 22) | class RequestBodySerializer: method serialize (line 26) | def serialize( method _serialize_json (line 84) | def _serialize_json(body_data: Dict[str, Any]) -> tuple[str, Dict[str,... method _serialize_form_urlencoded (line 96) | def _serialize_form_urlencoded( method _serialize_form_value (line 129) | def _serialize_form_value( method _serialize_multipart_form_data (line 167) | def _serialize_multipart_form_data( method _create_multipart_part (line 205) | def _create_multipart_part( method _serialize_text_plain (line 249) | def _serialize_text_plain(body_data: Dict[str, Any]) -> tuple[str, Dic... method _serialize_xml (line 259) | def _serialize_xml(body_data: Dict[str, Any]) -> tuple[str, Dict[str, ... method _serialize_octet_stream (line 265) | def _serialize_octet_stream( method _percent_encode (line 282) | def _percent_encode(value: str, safe_chars: str = "") -> str: method _dict_to_xml (line 293) | def _dict_to_xml(data: Dict[str, Any], root_name: str = "root") -> str: method _escape_xml (line 315) | def _escape_xml(value: str) -> str: FILE: application/agents/tools/api_tool.py class APITool (line 21) | class APITool(Tool): method __init__ (line 27) | def __init__(self, config): method execute_action (line 36) | def execute_action(self, action_name, **kwargs): method _make_api_call (line 48) | def _make_api_call( method _parse_response (line 236) | def _parse_response(self, response: requests.Response) -> Any: method get_actions_metadata (line 274) | def get_actions_metadata(self): method get_config_requirements (line 278) | def get_config_requirements(self): FILE: application/agents/tools/base.py class Tool (line 4) | class Tool(ABC): method execute_action (line 6) | def execute_action(self, action_name: str, **kwargs): method get_actions_metadata (line 10) | def get_actions_metadata(self): method get_config_requirements (line 17) | def get_config_requirements(self): FILE: application/agents/tools/brave.py class BraveSearchTool (line 10) | class BraveSearchTool(Tool): method __init__ (line 17) | def __init__(self, config): method execute_action (line 22) | def execute_action(self, action_name, **kwargs): method _web_search (line 33) | def _web_search( method _image_search (line 90) | def _image_search( method get_actions_metadata (line 135) | def get_actions_metadata(self): method get_config_requirements (line 181) | def get_config_requirements(self): FILE: application/agents/tools/cryptoprice.py class CryptoPriceTool (line 5) | class CryptoPriceTool(Tool): method __init__ (line 11) | def __init__(self, config): method execute_action (line 14) | def execute_action(self, action_name, **kwargs): method _get_price (line 22) | def _get_price(self, symbol, currency): method get_actions_metadata (line 51) | def get_actions_metadata(self): method get_config_requirements (line 74) | def get_config_requirements(self): FILE: application/agents/tools/duckduckgo.py class DuckDuckGoSearchTool (line 14) | class DuckDuckGoSearchTool(Tool): method __init__ (line 20) | def __init__(self, config): method _get_ddgs_client (line 24) | def _get_ddgs_client(self): method _execute_with_retry (line 29) | def _execute_with_retry(self, operation, operation_name: str) -> Dict[... method execute_action (line 58) | def execute_action(self, action_name, **kwargs): method _web_search (line 68) | def _web_search( method _image_search (line 90) | def _image_search( method _news_search (line 112) | def _news_search( method get_actions_metadata (line 134) | def get_actions_metadata(self): method get_config_requirements (line 208) | def get_config_requirements(self): FILE: application/agents/tools/mcp_tool.py class MCPTool (line 37) | class MCPTool(Tool): method __init__ (line 43) | def __init__(self, config: Dict[str, Any], user_id: Optional[str] = No... method _resolve_redirect_uri (line 90) | def _resolve_redirect_uri(self, configured_redirect_uri: Optional[str]... method _generate_cache_key (line 106) | def _generate_cache_key(self) -> str: method _setup_client (line 129) | def _setup_client(self): method _create_transport (line 174) | def _create_transport(self): method _format_tools (line 214) | def _format_tools(self, tools_response) -> List[Dict]: method _execute_with_client (line 241) | async def _execute_with_client(self, operation: str, *args, **kwargs): method _run_async_operation (line 275) | def _run_async_operation(self, operation: str, *args, **kwargs): method _run_in_new_loop (line 290) | def _run_in_new_loop(self, operation, *args, **kwargs): method _map_error (line 300) | def _map_error(self, operation: str, exc: Exception) -> Exception: method discover_tools (line 311) | def discover_tools(self) -> List[Dict]: method execute_action (line 329) | def execute_action(self, action_name: str, **kwargs) -> Any: method _format_result (line 377) | def _format_result(self, result) -> Dict: method test_connection (line 397) | def test_connection(self) -> Dict: method _test_regular_connection (line 439) | def _test_regular_connection(self) -> Dict: method _test_oauth_connection (line 477) | def _test_oauth_connection(self) -> Dict: method _start_oauth_task (line 513) | def _start_oauth_task(self) -> Dict: method get_actions_metadata (line 525) | def get_actions_metadata(self) -> List[Dict]: method get_config_requirements (line 569) | def get_config_requirements(self) -> Dict: class DocsGPTOAuth (line 656) | class DocsGPTOAuth(OAuthClientProvider): method __init__ (line 661) | def __init__( method _process_auth_url (line 714) | def _process_auth_url(self, authorization_url: str) -> tuple[str, str]: method redirect_handler (line 729) | async def redirect_handler(self, authorization_url: str) -> None: method callback_handler (line 753) | async def callback_handler(self) -> tuple[str, str | None]: class NonInteractiveOAuth (line 813) | class NonInteractiveOAuth(DocsGPTOAuth): method __init__ (line 820) | def __init__(self, **kwargs): method redirect_handler (line 825) | async def redirect_handler(self, authorization_url: str) -> None: method callback_handler (line 830) | async def callback_handler(self) -> tuple[str, str | None]: class DBTokenStorage (line 836) | class DBTokenStorage(TokenStorage): method __init__ (line 837) | def __init__( method get_base_url (line 851) | def get_base_url(url: str) -> str: method get_db_key (line 855) | def get_db_key(self) -> dict: method get_tokens (line 861) | async def get_tokens(self) -> OAuthToken | None: method set_tokens (line 871) | async def set_tokens(self, tokens: OAuthToken) -> None: method get_client_info (line 880) | async def get_client_info(self) -> OAuthClientInformationFull | None: method _serialize_client_info (line 912) | def _serialize_client_info(self, info: dict) -> dict: method set_client_info (line 917) | async def set_client_info(self, client_info: OAuthClientInformationFul... method clear (line 927) | async def clear(self) -> None: method clear_all (line 932) | async def clear_all(cls, db_client) -> None: class MCPOAuthManager (line 938) | class MCPOAuthManager: method __init__ (line 941) | def __init__(self, redis_client: Redis | None, redis_prefix: str = "mc... method handle_oauth_callback (line 945) | def handle_oauth_callback( method get_oauth_status (line 977) | def get_oauth_status(self, task_id: str) -> Dict[str, Any]: FILE: application/agents/tools/memory.py class MemoryTool (line 12) | class MemoryTool(Tool): method __init__ (line 18) | def __init__(self, tool_config: Optional[Dict[str, Any]] = None, user_... method execute_action (line 46) | def execute_action(self, action_name: str, **kwargs: Any) -> str: method get_actions_metadata (line 96) | def get_actions_metadata(self) -> List[Dict[str, Any]]: method get_config_requirements (line 214) | def get_config_requirements(self) -> Dict[str, Any]: method _validate_path (line 221) | def _validate_path(self, path: str) -> Optional[str]: method _view (line 267) | def _view(self, path: str, view_range: Optional[List[int]] = None) -> ... method _view_directory (line 280) | def _view_directory(self, path: str) -> str: method _view_file (line 311) | def _view_file(self, path: str, view_range: Optional[List[int]] = None... method _create (line 338) | def _create(self, path: str, file_text: str) -> str: method _str_replace (line 360) | def _str_replace(self, path: str, old_str: str, new_str: str) -> str: method _insert (line 396) | def _insert(self, path: str, insert_line: int, insert_text: str) -> str: method _delete (line 433) | def _delete(self, path: str) -> str: method _rename (line 477) | def _rename(self, old_path: str, new_path: str) -> str: FILE: application/agents/tools/notes.py class NotesTool (line 10) | class NotesTool(Tool): method __init__ (line 16) | def __init__(self, tool_config: Optional[Dict[str, Any]] = None, user_... method execute_action (line 46) | def execute_action(self, action_name: str, **kwargs: Any) -> str: method get_actions_metadata (line 78) | def get_actions_metadata(self) -> List[Dict[str, Any]]: method get_config_requirements (line 128) | def get_config_requirements(self) -> Dict[str, Any]: method get_artifact_id (line 132) | def get_artifact_id(self, action_name: str, **kwargs: Any) -> Optional... method _get_note (line 138) | def _get_note(self) -> str: method _overwrite_note (line 146) | def _overwrite_note(self, content: str) -> str: method _str_replace (line 160) | def _str_replace(self, old_str: str, new_str: str) -> str: method _insert (line 187) | def _insert(self, line_number: int, text: str) -> str: method _delete_note (line 215) | def _delete_note(self) -> str: FILE: application/agents/tools/ntfy.py class NtfyTool (line 4) | class NtfyTool(Tool): method __init__ (line 10) | def __init__(self, config): method execute_action (line 20) | def execute_action(self, action_name, **kwargs): method _send_message (line 42) | def _send_message(self, server_url, message, topic, title=None, priori... method get_actions_metadata (line 77) | def get_actions_metadata(self): method get_config_requirements (line 118) | def get_config_requirements(self): FILE: application/agents/tools/postgres.py class PostgresTool (line 10) | class PostgresTool(Tool): method __init__ (line 17) | def __init__(self, config): method execute_action (line 21) | def execute_action(self, action_name, **kwargs): method _execute_sql (line 30) | def _execute_sql(self, sql_query): method _get_schema (line 75) | def _get_schema(self, db_name): method get_actions_metadata (line 135) | def get_actions_metadata(self): method get_config_requirements (line 169) | def get_config_requirements(self): FILE: application/agents/tools/read_webpage.py class ReadWebpageTool (line 6) | class ReadWebpageTool(Tool): method __init__ (line 12) | def __init__(self, config=None): method execute_action (line 19) | def execute_action(self, action_name: str, **kwargs) -> str: method get_actions_metadata (line 57) | def get_actions_metadata(self): method get_config_requirements (line 79) | def get_config_requirements(self): FILE: application/agents/tools/spec_parser.py function parse_spec (line 22) | def parse_spec(spec_content: str) -> Tuple[Dict[str, Any], List[Dict[str... function _load_spec (line 47) | def _load_spec(content: str) -> Dict[str, Any]: function _validate_spec (line 62) | def _validate_spec(spec: Dict[str, Any]) -> None: function _extract_metadata (line 77) | def _extract_metadata(spec: Dict[str, Any], is_swagger: bool) -> Dict[st... function _get_base_url (line 90) | def _get_base_url(spec: Dict[str, Any], is_swagger: bool) -> str: function _extract_actions (line 106) | def _extract_actions(spec: Dict[str, Any], is_swagger: bool) -> List[Dic... function _build_action (line 144) | def _build_action( function _generate_action_name (line 180) | def _generate_action_name(operation: Dict[str, Any], method: str, path: ... function _categorize_parameters (line 193) | def _categorize_parameters( function _param_to_property (line 216) | def _param_to_property(param: Dict) -> Dict[str, Any]: function _extract_request_body (line 232) | def _extract_request_body( function _schema_to_properties (line 279) | def _schema_to_properties( function _resolve_ref (line 313) | def _resolve_ref( function _traverse_path (line 335) | def _traverse_path(obj: Dict, parts: List[str]) -> Optional[Dict]: FILE: application/agents/tools/telegram.py class TelegramTool (line 10) | class TelegramTool(Tool): method __init__ (line 17) | def __init__(self, config): method execute_action (line 21) | def execute_action(self, action_name, **kwargs): method _send_message (line 30) | def _send_message(self, text, chat_id): method _send_image (line 37) | def _send_image(self, image_url, chat_id): method get_actions_metadata (line 44) | def get_actions_metadata(self): method get_config_requirements (line 86) | def get_config_requirements(self): FILE: application/agents/tools/todo_list.py class TodoListTool (line 10) | class TodoListTool(Tool): method __init__ (line 16) | def __init__(self, tool_config: Optional[Dict[str, Any]] = None, user_... method execute_action (line 46) | def execute_action(self, action_name: str, **kwargs: Any) -> str: method get_actions_metadata (line 84) | def get_actions_metadata(self) -> List[Dict[str, Any]]: method get_config_requirements (line 168) | def get_config_requirements(self) -> Dict[str, Any]: method get_artifact_id (line 172) | def get_artifact_id(self, action_name: str, **kwargs: Any) -> Optional... method _coerce_todo_id (line 178) | def _coerce_todo_id(self, value: Optional[Any]) -> Optional[int]: method _get_next_todo_id (line 194) | def _get_next_todo_id(self) -> int: method _list (line 212) | def _list(self) -> str: method _create (line 231) | def _create(self, title: str) -> str: method _get (line 255) | def _get(self, todo_id: Optional[Any]) -> str: method _update (line 277) | def _update(self, todo_id: Optional[Any], title: str) -> str: method _complete (line 300) | def _complete(self, todo_id: Optional[Any]) -> str: method _delete (line 319) | def _delete(self, todo_id: Optional[Any]) -> str: FILE: application/agents/tools/tool_action_parser.py class ToolActionParser (line 7) | class ToolActionParser: method __init__ (line 8) | def __init__(self, llm_type): method parse_args (line 15) | def parse_args(self, call): method _parse_openai_llm (line 19) | def _parse_openai_llm(self, call): method _parse_google_llm (line 45) | def _parse_google_llm(self, call): FILE: application/agents/tools/tool_manager.py class ToolManager (line 9) | class ToolManager: method __init__ (line 10) | def __init__(self, config): method load_tools (line 15) | def load_tools(self): method load_tool (line 26) | def load_tool(self, tool_name, tool_config, user_id=None): method execute_action (line 36) | def execute_action(self, tool_name, action_name, user_id=None, **kwargs): method get_all_actions_metadata (line 45) | def get_all_actions_metadata(self): FILE: application/agents/workflow_agent.py class WorkflowAgent (line 22) | class WorkflowAgent(BaseAgent): method __init__ (line 25) | def __init__( method gen (line 40) | def gen( method _gen_inner (line 45) | def _gen_inner( method _load_workflow_graph (line 56) | def _load_workflow_graph(self) -> Optional[WorkflowGraph]: method _parse_embedded_workflow (line 63) | def _parse_embedded_workflow(self) -> Optional[WorkflowGraph]: method _load_from_database (line 104) | def _load_from_database(self) -> Optional[WorkflowGraph]: method _save_workflow_run (line 181) | def _save_workflow_run(self, query: str) -> None: method _determine_run_status (line 203) | def _determine_run_status(self) -> ExecutionStatus: method _serialize_state (line 211) | def _serialize_state(self, state: Dict[str, Any]) -> Dict[str, Any]: method _serialize_state_value (line 217) | def _serialize_state_value(self, value: Any) -> Any: FILE: application/agents/workflows/cel_evaluator.py class CelEvaluationError (line 7) | class CelEvaluationError(Exception): function _convert_value (line 11) | def _convert_value(value: Any) -> Any: function build_activation (line 31) | def build_activation(state: Dict[str, Any]) -> Dict[str, Any]: function evaluate_cel (line 35) | def evaluate_cel(expression: str, state: Dict[str, Any]) -> Any: function cel_to_python (line 51) | def cel_to_python(value: Any) -> Any: FILE: application/agents/workflows/node_agent.py class ToolFilterMixin (line 11) | class ToolFilterMixin: method _get_user_tools (line 16) | def _get_user_tools(self, user: str = "local") -> Dict[str, Dict[str, ... method _get_tools (line 27) | def _get_tools(self, api_key: str = None) -> Dict[str, Dict[str, Any]]: class WorkflowNodeClassicAgent (line 39) | class WorkflowNodeClassicAgent(ToolFilterMixin, ClassicAgent): method __init__ (line 41) | def __init__( class WorkflowNodeReActAgent (line 60) | class WorkflowNodeReActAgent(ToolFilterMixin, ReActAgent): method __init__ (line 62) | def __init__( class WorkflowNodeAgentFactory (line 81) | class WorkflowNodeAgentFactory: method create (line 89) | def create( FILE: application/agents/workflows/schemas.py class NodeType (line 9) | class NodeType(str, Enum): class AgentType (line 18) | class AgentType(str, Enum): class ExecutionStatus (line 23) | class ExecutionStatus(str, Enum): class Position (line 30) | class Position(BaseModel): class AgentNodeConfig (line 36) | class AgentNodeConfig(BaseModel): class ConditionCase (line 52) | class ConditionCase(BaseModel): class ConditionNodeConfig (line 59) | class ConditionNodeConfig(BaseModel): class StateOperation (line 65) | class StateOperation(BaseModel): class WorkflowEdgeCreate (line 71) | class WorkflowEdgeCreate(BaseModel): class WorkflowEdge (line 81) | class WorkflowEdge(WorkflowEdgeCreate): method convert_objectid (line 86) | def convert_objectid(cls, v: Any) -> Optional[str]: method to_mongo_doc (line 91) | def to_mongo_doc(self) -> Dict[str, Any]: class WorkflowNodeCreate (line 102) | class WorkflowNodeCreate(BaseModel): method parse_position (line 114) | def parse_position(cls, v: Union[Dict[str, float], Position]) -> Posit... class WorkflowNode (line 120) | class WorkflowNode(WorkflowNodeCreate): method convert_objectid (line 125) | def convert_objectid(cls, v: Any) -> Optional[str]: method to_mongo_doc (line 130) | def to_mongo_doc(self) -> Dict[str, Any]: class WorkflowCreate (line 142) | class WorkflowCreate(BaseModel): class Workflow (line 149) | class Workflow(WorkflowCreate): method convert_objectid (line 156) | def convert_objectid(cls, v: Any) -> Optional[str]: method to_mongo_doc (line 161) | def to_mongo_doc(self) -> Dict[str, Any]: class WorkflowGraph (line 171) | class WorkflowGraph(BaseModel): method get_node_by_id (line 176) | def get_node_by_id(self, node_id: str) -> Optional[WorkflowNode]: method get_start_node (line 182) | def get_start_node(self) -> Optional[WorkflowNode]: method get_outgoing_edges (line 188) | def get_outgoing_edges(self, node_id: str) -> List[WorkflowEdge]: class NodeExecutionLog (line 192) | class NodeExecutionLog(BaseModel): class WorkflowRunCreate (line 203) | class WorkflowRunCreate(BaseModel): class WorkflowRun (line 208) | class WorkflowRun(BaseModel): method convert_objectid (line 221) | def convert_objectid(cls, v: Any) -> Optional[str]: method to_mongo_doc (line 226) | def to_mongo_doc(self) -> Dict[str, Any]: FILE: application/agents/workflows/workflow_engine.py class WorkflowEngine (line 39) | class WorkflowEngine: method __init__ (line 42) | def __init__(self, graph: WorkflowGraph, agent: "BaseAgent"): method execute (line 51) | def execute( method _initialize_state (line 131) | def _initialize_state(self, initial_inputs: WorkflowState, query: str)... method _create_log_entry (line 136) | def _create_log_entry(self, node: WorkflowNode) -> Dict[str, Any]: method _get_next_node_id (line 147) | def _get_next_node_id(self, current_node_id: str) -> Optional[str]: method _execute_node (line 163) | def _execute_node( method _execute_start_node (line 181) | def _execute_start_node( method _execute_note_node (line 186) | def _execute_note_node( method _execute_agent_node (line 191) | def _execute_agent_node( method _execute_state_node (line 287) | def _execute_state_node( method _execute_condition_node (line 298) | def _execute_condition_node( method _execute_end_node (line 317) | def _execute_end_node( method _parse_structured_output (line 326) | def _parse_structured_output(self, raw_response: str) -> tuple[bool, O... method _normalize_node_json_schema (line 339) | def _normalize_node_json_schema( method _validate_structured_output (line 351) | def _validate_structured_output(self, schema: Dict[str, Any], output_v... method _format_template (line 370) | def _format_template(self, template: str) -> str: method _build_template_context (line 380) | def _build_template_context(self) -> Dict[str, Any]: method _get_source_template_data (line 421) | def _get_source_template_data(self) -> tuple[Optional[List[Dict[str, A... method get_execution_summary (line 443) | def get_execution_summary(self) -> List[NodeExecutionLog]: FILE: application/api/answer/__init__.py function init_answer_routes (line 15) | def init_answer_routes(): FILE: application/api/answer/routes/answer.py class AnswerResource (line 17) | class AnswerResource(Resource, BaseAnswerResource): method __init__ (line 18) | def __init__(self, *args, **kwargs): method post (line 70) | def post(self): FILE: application/api/answer/routes/base.py class BaseAnswerResource (line 28) | class BaseAnswerResource: method __init__ (line 31) | def __init__(self): method validate_request (line 39) | def validate_request( method _prepare_tool_calls_for_logging (line 51) | def _prepare_tool_calls_for_logging( method check_usage (line 71) | def check_usage(self, agent_config: Dict) -> Optional[Response]: method complete_stream (line 165) | def complete_stream( method process_response_stream (line 423) | def process_response_stream(self, stream): method error_stream_generate (line 477) | def error_stream_generate(self, err_response): FILE: application/api/answer/routes/search.py class SearchResource (line 18) | class SearchResource(Resource): method __init__ (line 21) | def __init__(self, *args, **kwargs): method _get_sources_from_api_key (line 42) | def _get_sources_from_api_key(self, api_key: str) -> List[str]: method _search_vectorstores (line 77) | def _search_vectorstores( method post (line 150) | def post(self): FILE: application/api/answer/routes/stream.py class StreamResource (line 17) | class StreamResource(Resource, BaseAnswerResource): method __init__ (line 18) | def __init__(self, *args, **kwargs): method post (line 76) | def post(self): FILE: application/api/answer/services/compression/message_builder.py class MessageBuilder (line 10) | class MessageBuilder: method build_from_compressed_context (line 14) | def build_from_compressed_context( method _append_compression_context (line 86) | def _append_compression_context( method rebuild_messages_after_compression (line 126) | def rebuild_messages_after_compression( FILE: application/api/answer/services/compression/orchestrator.py class CompressionOrchestrator (line 22) | class CompressionOrchestrator: method __init__ (line 30) | def __init__( method compress_if_needed (line 45) | def compress_if_needed( method _perform_compression (line 99) | def _perform_compression( method compress_mid_execution (line 188) | def compress_mid_execution( FILE: application/api/answer/services/compression/prompt_builder.py class CompressionPromptBuilder (line 10) | class CompressionPromptBuilder: method __init__ (line 13) | def __init__(self, version: str = "v1.0"): method _load_prompt (line 23) | def _load_prompt(self, version: str) -> str: method build_prompt (line 49) | def build_prompt( method _format_conversation (line 99) | def _format_conversation(self, queries: List[Dict[str, Any]]) -> str: FILE: application/api/answer/services/compression/service.py class CompressionService (line 20) | class CompressionService: method __init__ (line 27) | def __init__( method compress_conversation (line 50) | def compress_conversation( method compress_and_save (line 149) | def compress_and_save( method get_compressed_context (line 186) | def get_compressed_context( method _extract_summary (line 248) | def _extract_summary(self, llm_response: str) -> str: method _log_tool_call_stats (line 278) | def _log_tool_call_stats(self, queries: List[Dict[str, Any]]) -> None: FILE: application/api/answer/services/compression/threshold_checker.py class CompressionThresholdChecker (line 13) | class CompressionThresholdChecker: method __init__ (line 16) | def __init__(self, threshold_percentage: float = None): method should_compress (line 28) | def should_compress( method check_message_tokens (line 76) | def check_message_tokens(self, messages: list, model_id: str) -> bool: FILE: application/api/answer/services/compression/token_counter.py class TokenCounter (line 12) | class TokenCounter: method count_message_tokens (line 16) | def count_message_tokens(messages: List[Dict]) -> int: method count_query_tokens (line 39) | def count_query_tokens( method count_conversation_tokens (line 77) | def count_conversation_tokens( FILE: application/api/answer/services/compression/types.py class CompressionMetadata (line 9) | class CompressionMetadata: method to_dict (line 21) | def to_dict(self) -> Dict[str, Any]: class CompressionResult (line 36) | class CompressionResult: method success_with_compression (line 47) | def success_with_compression( method success_no_compression (line 60) | def success_no_compression(cls, queries: List[Dict]) -> "CompressionRe... method failure (line 69) | def failure(cls, error: str) -> "CompressionResult": method as_history (line 73) | def as_history(self) -> List[Dict[str, str]]: FILE: application/api/answer/services/conversation_service.py class ConversationService (line 14) | class ConversationService: method __init__ (line 15) | def __init__(self): method get_conversation (line 21) | def get_conversation( method save_conversation (line 46) | def save_conversation( method update_compression_metadata (line 189) | def update_compression_metadata( method append_compression_message (line 230) | def append_compression_message( method get_compression_metadata (line 266) | def get_compression_metadata( FILE: application/api/answer/services/prompt_renderer.py class PromptRenderer (line 11) | class PromptRenderer: method __init__ (line 14) | def __init__(self): method render_prompt (line 18) | def render_prompt( method _uses_template_syntax (line 75) | def _uses_template_syntax(self, prompt_content: str) -> bool: method _apply_legacy_substitutions (line 79) | def _apply_legacy_substitutions( method validate_template (line 91) | def validate_template(self, prompt_content: str) -> bool: method extract_variables (line 95) | def extract_variables(self, prompt_content: str) -> set[str]: FILE: application/api/answer/services/stream_processor.py function get_prompt (line 34) | def get_prompt(prompt_id: str, prompts_collection=None) -> str: class StreamProcessor (line 68) | class StreamProcessor: method __init__ (line 69) | def __init__( method initialize (line 105) | def initialize(self): method _load_conversation_history (line 114) | def _load_conversation_history(self): method _handle_compression (line 137) | def _handle_compression(self, conversation: Dict[str, Any]): method _process_attachments (line 186) | def _process_attachments(self): method _get_attachments_content (line 193) | def _get_attachments_content(self, attachment_ids, user_id): method _validate_and_set_model (line 214) | def _validate_and_set_model(self): method _get_agent_key (line 242) | def _get_agent_key(self, agent_id: Optional[str], user_id: Optional[st... method _get_data_from_api_key (line 271) | def _get_data_from_api_key(self, api_key: str) -> Dict[str, Any]: method _configure_source (line 319) | def _configure_source(self): method _resolve_agent_id (line 353) | def _resolve_agent_id(self) -> Optional[str]: method _configure_agent (line 378) | def _configure_agent(self): method _configure_retriever (line 471) | def _configure_retriever(self): method create_retriever (line 484) | def create_retriever(self): method pre_fetch_docs (line 498) | def pre_fetch_docs(self, question: str) -> tuple[Optional[str], Option... method pre_fetch_tools (line 533) | def pre_fetch_tools(self) -> Optional[Dict[str, Any]]: method _fetch_tool_data (line 593) | def _fetch_tool_data( method _get_prompt_content (line 683) | def _get_prompt_content(self) -> Optional[str]: method _get_required_tool_actions (line 704) | def _get_required_tool_actions(self) -> Optional[Dict[str, Set[Optiona... method _fetch_memory_tool_data (line 729) | def _fetch_memory_tool_data( method create_agent (line 751) | def create_agent( FILE: application/api/connector/routes.py function build_callback_redirect (line 44) | def build_callback_redirect(params: dict) -> str: class ConnectorAuth (line 55) | class ConnectorAuth(Resource): method get (line 57) | def get(self): class ConnectorsCallback (line 97) | class ConnectorsCallback(Resource): method get (line 99) | def get(self): class ConnectorFiles (line 201) | class ConnectorFiles(Resource): method post (line 211) | def post(self): class ConnectorValidateSession (line 275) | class ConnectorValidateSession(Resource): method post (line 278) | def post(self): class ConnectorDisconnect (line 337) | class ConnectorDisconnect(Resource): method post (line 340) | def post(self): class ConnectorSync (line 359) | class ConnectorSync(Resource): method post (line 370) | def post(self): class ConnectorCallbackStatus (line 468) | class ConnectorCallbackStatus(Resource): method get (line 470) | def get(self): FILE: application/api/internal/routes.py function verify_internal_key (line 28) | def verify_internal_key(): function download_file (line 38) | def download_file(): function upload_index_files (line 47) | def upload_index_files(): FILE: application/api/user/agents/folders.py function _folder_error_response (line 22) | def _folder_error_response(message: str, err: Exception): class AgentFolders (line 28) | class AgentFolders(Resource): method get (line 30) | def get(self): method post (line 61) | def post(self): class AgentFolder (line 95) | class AgentFolder(Resource): method get (line 97) | def get(self, folder_id): method put (line 129) | def put(self, folder_id): method delete (line 157) | def delete(self, folder_id): class MoveAgentToFolder (line 178) | class MoveAgentToFolder(Resource): method post (line 189) | def post(self): class BulkMoveAgents (line 224) | class BulkMoveAgents(Resource): method post (line 235) | def post(self): FILE: application/api/user/agents/routes.py function normalize_workflow_reference (line 110) | def normalize_workflow_reference(workflow_value): function validate_workflow_access (line 138) | def validate_workflow_access(workflow_value, user, required=False): function build_agent_document (line 159) | def build_agent_document( class GetAgent (line 225) | class GetAgent(Resource): method get (line 227) | def get(self): class GetAgents (line 301) | class GetAgents(Resource): method get (line 303) | def get(self): class CreateAgent (line 387) | class CreateAgent(Resource): method post (line 456) | def post(self): class UpdateAgent (line 611) | class UpdateAgent(Resource): method put (line 680) | def put(self, agent_id): class DeleteAgent (line 1138) | class DeleteAgent(Resource): method delete (line 1140) | def delete(self): class PinnedAgents (line 1189) | class PinnedAgents(Resource): method get (line 1191) | def get(self): class GetTemplateAgents (line 1264) | class GetTemplateAgents(Resource): method get (line 1266) | def get(self): class AdoptAgent (line 1285) | class AdoptAgent(Resource): method post (line 1287) | def post(self): class PinAgent (line 1325) | class PinAgent(Resource): method post (line 1327) | def post(self): class RemoveSharedAgent (line 1368) | class RemoveSharedAgent(Resource): method delete (line 1373) | def delete(self): FILE: application/api/user/agents/sharing.py class SharedAgent (line 29) | class SharedAgent(Resource): method get (line 36) | def get(self): class SharedAgents (line 115) | class SharedAgents(Resource): method get (line 117) | def get(self): class ShareAgent (line 178) | class ShareAgent(Resource): method put (line 194) | def put(self): FILE: application/api/user/agents/webhooks.py class AgentWebhook (line 21) | class AgentWebhook(Resource): method get (line 26) | def get(self): class AgentWebhookListener (line 67) | class AgentWebhookListener(Resource): method _enqueue_webhook_task (line 70) | def _enqueue_webhook_task(self, agent_id_str, payload, source_method): method post (line 100) | def post(self, webhook_token, agent, agent_id_str): method get (line 117) | def get(self, webhook_token, agent, agent_id_str): FILE: application/api/user/analytics/routes.py class GetMessageAnalytics (line 26) | class GetMessageAnalytics(Resource): method post (line 48) | def post(self): class GetTokenAnalytics (line 146) | class GetTokenAnalytics(Resource): method post (line 168) | def post(self): class GetFeedbackAnalytics (line 301) | class GetFeedbackAnalytics(Resource): method post (line 323) | def post(self): class GetUserLogs (line 462) | class GetUserLogs(Resource): method post (line 482) | def post(self): FILE: application/api/user/attachments/routes.py function _resolve_authenticated_user (line 43) | def _resolve_authenticated_user(): function _get_uploaded_file_size (line 63) | def _get_uploaded_file_size(file) -> int: function _is_supported_audio_mimetype (line 74) | def _is_supported_audio_mimetype(mimetype: str) -> bool: function _enforce_uploaded_audio_size_limit (line 81) | def _enforce_uploaded_audio_size_limit(file, filename: str) -> None: function _get_store_attachment_user_error (line 89) | def _get_store_attachment_user_error(exc: Exception) -> str: function _require_live_stt_redis (line 95) | def _require_live_stt_redis(): function _parse_bool_form_value (line 105) | def _parse_bool_form_value(value: str | None) -> bool: class StoreAttachment (line 112) | class StoreAttachment(Resource): method post (line 127) | def post(self): class SpeechToText (line 240) | class SpeechToText(Resource): method post (line 253) | def post(self): class LiveSpeechToTextStart (line 323) | class LiveSpeechToTextStart(Resource): method post (line 325) | def post(self): class LiveSpeechToTextChunk (line 366) | class LiveSpeechToTextChunk(Resource): method post (line 386) | def post(self): class LiveSpeechToTextFinish (line 553) | class LiveSpeechToTextFinish(Resource): method post (line 555) | def post(self): class ServeImage (line 612) | class ServeImage(Resource): method get (line 614) | def get(self, image_path): class TextToSpeech (line 640) | class TextToSpeech(Resource): method post (line 652) | def post(self): FILE: application/api/user/base.py function generate_minute_range (line 80) | def generate_minute_range(start_date, end_date): function generate_hourly_range (line 88) | def generate_hourly_range(start_date, end_date): function generate_date_range (line 96) | def generate_date_range(start_date, end_date): function ensure_user_doc (line 104) | def ensure_user_doc(user_id): function resolve_tool_details (line 138) | def resolve_tool_details(tool_ids): function get_vector_store (line 161) | def get_vector_store(source_id): function handle_image_upload (line 179) | def handle_image_upload( function require_agent (line 214) | def require_agent(func): FILE: application/api/user/conversations/routes.py class DeleteConversation (line 19) | class DeleteConversation(Resource): method post (line 24) | def post(self): class DeleteAllConversations (line 46) | class DeleteAllConversations(Resource): method get (line 50) | def get(self): class GetConversations (line 66) | class GetConversations(Resource): method get (line 70) | def get(self): class GetSingleConversation (line 108) | class GetSingleConversation(Resource): method get (line 113) | def get(self): class UpdateConversationName (line 169) | class UpdateConversationName(Resource): method post (line 184) | def post(self): class SubmitFeedback (line 207) | class SubmitFeedback(Resource): method post (line 231) | def post(self): FILE: application/api/user/models/routes.py class ModelsListResource (line 10) | class ModelsListResource(Resource): method get (line 11) | def get(self): FILE: application/api/user/prompts/routes.py class CreatePrompt (line 19) | class CreatePrompt(Resource): method post (line 32) | def post(self): class GetPrompts (line 59) | class GetPrompts(Resource): method get (line 61) | def get(self): class GetSinglePrompt (line 89) | class GetSinglePrompt(Resource): method get (line 91) | def get(self): class DeletePrompt (line 132) | class DeletePrompt(Resource): method post (line 140) | def post(self): class UpdatePrompt (line 159) | class UpdatePrompt(Resource): method post (line 173) | def post(self): FILE: application/api/user/sharing/routes.py class ShareConversation (line 26) | class ShareConversation(Resource): method post (line 41) | def post(self): class GetPubliclySharedConversations (line 209) | class GetPubliclySharedConversations(Resource): method get (line 211) | def get(self, identifier: str): FILE: application/api/user/sources/chunks.py class GetChunks (line 17) | class GetChunks(Resource): method get (line 28) | def get(self): class AddChunk (line 102) | class AddChunk(Resource): method post (line 119) | def post(self): class DeleteChunk (line 155) | class DeleteChunk(Resource): method delete (line 160) | def delete(self): class UpdateChunk (line 193) | class UpdateChunk(Resource): method put (line 215) | def put(self): FILE: application/api/user/sources/routes.py function _get_provider_from_remote_data (line 24) | def _get_provider_from_remote_data(remote_data): class CombinedJson (line 40) | class CombinedJson(Resource): method get (line 42) | def get(self): class PaginatedSources (line 85) | class PaginatedSources(Resource): method get (line 87) | def get(self): class DeleteByIds (line 158) | class DeleteByIds(Resource): method get (line 163) | def get(self): class DeleteOldIndexes (line 180) | class DeleteOldIndexes(Resource): method get (line 185) | def get(self): class RedirectToSources (line 235) | class RedirectToSources(Resource): method get (line 239) | def get(self): class ManageSync (line 244) | class ManageSync(Resource): method post (line 258) | def post(self): class SyncSource (line 293) | class SyncSource(Resource): method post (line 301) | def post(self): class DirectoryStructure (line 359) | class DirectoryStructure(Resource): method get (line 364) | def get(self): FILE: application/api/user/sources/upload.py function _enforce_audio_path_size_limit (line 33) | def _enforce_audio_path_size_limit(file_path: str, filename: str) -> None: class UploadFile (line 40) | class UploadFile(Resource): method post (line 54) | def post(self): class UploadRemote (line 169) | class UploadRemote(Resource): method post (line 187) | def post(self): class ManageSourceFiles (line 267) | class ManageSourceFiles(Resource): method post (line 301) | def post(self): class TaskStatus (line 616) | class TaskStatus(Resource): method get (line 624) | def get(self): FILE: application/api/user/tasks.py function ingest (line 17) | def ingest( function ingest_remote (line 34) | def ingest_remote(self, source_data, job_name, user, loader): function reingest_source_task (line 40) | def reingest_source_task(self, source_id, user): function schedule_syncs (line 48) | def schedule_syncs(self, frequency): function sync_source (line 54) | def sync_source( function store_attachment (line 78) | def store_attachment(self, file_info, user): function process_agent_webhook (line 84) | def process_agent_webhook(self, agent_id, payload): function ingest_connector_task (line 90) | def ingest_connector_task( function setup_periodic_tasks (line 124) | def setup_periodic_tasks(sender, **kwargs): function mcp_oauth_task (line 140) | def mcp_oauth_task(self, config, user): function mcp_oauth_status_task (line 146) | def mcp_oauth_status_task(self, task_id): FILE: application/api/user/tools/mcp.py function _sanitize_mcp_transport (line 29) | def _sanitize_mcp_transport(config): function _extract_auth_credentials (line 44) | def _extract_auth_credentials(config): class TestMCPServerConfig (line 67) | class TestMCPServerConfig(Resource): method post (line 79) | def post(self): class MCPServerSave (line 126) | class MCPServerSave(Resource): method post (line 147) | def post(self): class MCPOAuthCallback (line 291) | class MCPOAuthCallback(Resource): method get (line 307) | def get(self): class MCPOAuthStatus (line 349) | class MCPOAuthStatus(Resource): method get (line 350) | def get(self, task_id): class MCPAuthStatus (line 399) | class MCPAuthStatus(Resource): method get (line 404) | def get(self): FILE: application/api/user/tools/routes.py function _encrypt_secret_fields (line 18) | def _encrypt_secret_fields(config, config_requirements, user_id): function _validate_config (line 34) | def _validate_config(config, config_requirements, has_existing_secrets=F... function _merge_secrets_on_update (line 59) | def _merge_secrets_on_update(new_config, existing_config, config_require... function transform_actions (line 108) | def transform_actions(actions_metadata): class AvailableTools (line 130) | class AvailableTools(Resource): method get (line 132) | def get(self): class GetTools (line 160) | class GetTools(Resource): method get (line 162) | def get(self): class CreateTool (line 197) | class CreateTool(Resource): method post (line 222) | def post(self): class UpdateTool (line 291) | class UpdateTool(Resource): method post (line 310) | def post(self): class UpdateToolConfig (line 393) | class UpdateToolConfig(Resource): method post (line 406) | def post(self): class UpdateToolActions (line 463) | class UpdateToolActions(Resource): method post (line 478) | def post(self): class UpdateToolStatus (line 502) | class UpdateToolStatus(Resource): method post (line 515) | def post(self): class DeleteTool (line 539) | class DeleteTool(Resource): method post (line 547) | def post(self): class ParseSpec (line 572) | class ParseSpec(Resource): method post (line 576) | def post(self): class GetArtifact (line 624) | class GetArtifact(Resource): method get (line 626) | def get(self, artifact_id: str): FILE: application/api/user/utils.py function get_user_id (line 19) | def get_user_id() -> Optional[str]: function require_auth (line 30) | def require_auth(func: Callable) -> Callable: function success_response (line 51) | def success_response( function error_response (line 73) | def error_response(message: str, status: int = 400, **kwargs) -> Response: function validate_object_id (line 94) | def validate_object_id( function validate_pagination (line 118) | def validate_pagination( function check_resource_ownership (line 146) | def check_resource_ownership( function serialize_object_id (line 180) | def serialize_object_id( function serialize_list (line 205) | def serialize_list(items: List[Dict], serializer: Callable[[Dict], Dict]... function paginated_response (line 222) | def paginated_response( function require_fields (line 272) | def require_fields(required: List[str]) -> Callable: function safe_db_operation (line 305) | def safe_db_operation( function validate_enum (line 335) | def validate_enum( function extract_sort_params (line 360) | def extract_sort_params( FILE: application/api/user/workflows/routes.py function _workflow_error_response (line 33) | def _workflow_error_response(message: str, err: Exception): function serialize_workflow (line 38) | def serialize_workflow(w: Dict) -> Dict: function serialize_node (line 49) | def serialize_node(n: Dict) -> Dict: function serialize_edge (line 61) | def serialize_edge(e: Dict) -> Dict: function get_workflow_graph_version (line 72) | def get_workflow_graph_version(workflow: Dict) -> int: function fetch_graph_documents (line 82) | def fetch_graph_documents(collection, workflow_id: str, graph_version: i... function validate_json_schema_payload (line 98) | def validate_json_schema_payload( function normalize_agent_node_json_schemas (line 110) | def normalize_agent_node_json_schemas(nodes: List[Dict]) -> List[Dict]: function validate_workflow_structure (line 142) | def validate_workflow_structure(nodes: List[Dict], edges: List[Dict]) ->... function _can_reach_end (line 304) | def _can_reach_end( function create_workflow_nodes (line 318) | def create_workflow_nodes( function create_workflow_edges (line 340) | def create_workflow_edges( class WorkflowList (line 362) | class WorkflowList(Resource): method post (line 366) | def post(self): class WorkflowDetail (line 414) | class WorkflowDetail(Resource): method get (line 417) | def get(self, workflow_id: str): method put (line 448) | def put(self, workflow_id: str): method delete (line 526) | def delete(self, workflow_id: str): FILE: application/app.py function home (line 68) | def home(): function get_config (line 76) | def get_config(): function generate_token (line 85) | def generate_token(): function enforce_stt_request_size_limits (line 96) | def enforce_stt_request_size_limits(): function authenticate_request (line 113) | def authenticate_request(): function after_request (line 126) | def after_request(response): FILE: application/auth.py function handle_auth (line 6) | def handle_auth(request, data={}): FILE: application/cache.py function get_redis_instance (line 17) | def get_redis_instance(): function gen_cache_key (line 36) | def gen_cache_key(messages, model="docgpt", tools=None): function gen_cache (line 46) | def gen_cache(func): function stream_cache (line 78) | def stream_cache(func): FILE: application/celery_init.py function make_celery (line 6) | def make_celery(app_name=__name__): function config_loggers (line 17) | def config_loggers(*args, **kwargs): FILE: application/core/json_schema_utils.py class JsonSchemaValidationError (line 4) | class JsonSchemaValidationError(ValueError): function normalize_json_schema_payload (line 8) | def normalize_json_schema_payload(json_schema: Any) -> Optional[Dict[str... FILE: application/core/logging_config.py function setup_logging (line 3) | def setup_logging(): FILE: application/core/model_configs.py function create_custom_openai_model (line 212) | def create_custom_openai_model(model_name: str, base_url: str) -> Availa... FILE: application/core/model_settings.py class ModelProvider (line 9) | class ModelProvider(str, Enum): class ModelCapabilities (line 25) | class ModelCapabilities: class AvailableModel (line 36) | class AvailableModel: method to_dict (line 45) | def to_dict(self) -> Dict: class ModelRegistry (line 63) | class ModelRegistry: method __new__ (line 67) | def __new__(cls): method __init__ (line 72) | def __init__(self): method get_instance (line 80) | def get_instance(cls) -> "ModelRegistry": method _load_models (line 83) | def _load_models(self): method _add_openai_models (line 147) | def _add_openai_models(self, settings): method _add_azure_openai_models (line 177) | def _add_azure_openai_models(self, settings): method _add_anthropic_models (line 188) | def _add_anthropic_models(self, settings): method _add_google_models (line 203) | def _add_google_models(self, settings): method _add_groq_models (line 218) | def _add_groq_models(self, settings): method _add_openrouter_models (line 233) | def _add_openrouter_models(self, settings): method _add_docsgpt_models (line 248) | def _add_docsgpt_models(self, settings): method _add_huggingface_models (line 262) | def _add_huggingface_models(self, settings): method _parse_model_names (line 276) | def _parse_model_names(self, llm_name: str) -> List[str]: method get_model (line 285) | def get_model(self, model_id: str) -> Optional[AvailableModel]: method get_all_models (line 288) | def get_all_models(self) -> List[AvailableModel]: method get_enabled_models (line 291) | def get_enabled_models(self) -> List[AvailableModel]: method model_exists (line 294) | def model_exists(self, model_id: str) -> bool: FILE: application/core/model_utils.py function get_api_key_for_provider (line 6) | def get_api_key_for_provider(provider: str) -> Optional[str]: function get_all_available_models (line 28) | def get_all_available_models() -> Dict[str, Dict[str, Any]]: function validate_model_id (line 34) | def validate_model_id(model_id: str) -> bool: function get_model_capabilities (line 40) | def get_model_capabilities(model_id: str) -> Optional[Dict[str, Any]]: function get_default_model_id (line 54) | def get_default_model_id() -> str: function get_provider_from_model_id (line 60) | def get_provider_from_model_id(model_id: str) -> Optional[str]: function get_token_limit (line 69) | def get_token_limit(model_id: str) -> int: function get_base_url_for_model (line 83) | def get_base_url_for_model(model_id: str) -> Optional[str]: FILE: application/core/mongo_db.py class MongoDB (line 5) | class MongoDB: method get_client (line 9) | def get_client(cls): method close_client (line 18) | def close_client(cls): FILE: application/core/settings.py class Settings (line 13) | class Settings(BaseSettings): method normalize_api_key (line 191) | def normalize_api_key(cls, v: Optional[str]) -> Optional[str]: FILE: application/core/url_validation.py class SSRFError (line 15) | class SSRFError(Exception): function is_private_ip (line 39) | def is_private_ip(ip_str: str) -> bool: function is_metadata_ip (line 64) | def is_metadata_ip(ip_str: str) -> bool: function resolve_hostname (line 77) | def resolve_hostname(hostname: str) -> Optional[str]: function validate_url (line 93) | def validate_url(url: str, allow_localhost: bool = False) -> str: function validate_url_safe (line 163) | def validate_url_safe(url: str, allow_localhost: bool = False) -> tuple[... FILE: application/error.py function response_error (line 5) | def response_error(code_status, message=None): function bad_request (line 14) | def bad_request(status_code=400, message=''): function sanitize_api_error (line 18) | def sanitize_api_error(error) -> str: FILE: application/llm/anthropic.py class AnthropicLLM (line 13) | class AnthropicLLM(BaseLLM): method __init__ (line 15) | def __init__(self, api_key=None, user_api_key=None, base_url=None, *ar... method _raw_gen (line 31) | def _raw_gen( method _raw_gen_stream (line 54) | def _raw_gen_stream( method get_supported_attachment_types (line 81) | def get_supported_attachment_types(self): method prepare_messages_with_attachments (line 98) | def prepare_messages_with_attachments(self, messages, attachments=None): method _get_base64_image (line 174) | def _get_base64_image(self, attachment): FILE: application/llm/base.py class BaseLLM (line 12) | class BaseLLM(ABC): method __init__ (line 13) | def __init__( method fallback_llm (line 29) | def fallback_llm(self): method _remove_null_values (line 53) | def _remove_null_values(args_dict): method _execute_with_fallback (line 58) | def _execute_with_fallback( method gen (line 92) | def gen(self, model, messages, stream=False, tools=None, *args, **kwar... method gen_stream (line 105) | def gen_stream(self, model, messages, stream=True, tools=None, *args, ... method _raw_gen (line 119) | def _raw_gen(self, model, messages, stream, tools, *args, **kwargs): method _raw_gen_stream (line 123) | def _raw_gen_stream(self, model, messages, stream, *args, **kwargs): method supports_tools (line 126) | def supports_tools(self): method _supports_tools (line 131) | def _supports_tools(self): method supports_structured_output (line 134) | def supports_structured_output(self): method _supports_structured_output (line 140) | def _supports_structured_output(self): method prepare_structured_output_format (line 143) | def prepare_structured_output_format(self, json_schema): method get_supported_attachment_types (line 148) | def get_supported_attachment_types(self): FILE: application/llm/docsgpt_provider.py class DocsGPTAPILLM (line 8) | class DocsGPTAPILLM(OpenAILLM): method __init__ (line 9) | def __init__(self, api_key=None, user_api_key=None, base_url=None, *ar... method _raw_gen (line 18) | def _raw_gen( method _raw_gen_stream (line 40) | def _raw_gen_stream( FILE: application/llm/google_ai.py class GoogleLLM (line 12) | class GoogleLLM(BaseLLM): method __init__ (line 13) | def __init__( method get_supported_attachment_types (line 23) | def get_supported_attachment_types(self): method prepare_messages_with_attachments (line 45) | def prepare_messages_with_attachments(self, messages, attachments=None): method _upload_file_to_google (line 105) | def _upload_file_to_google(self, attachment): method _clean_messages_google (line 144) | def _clean_messages_google(self, messages): method _clean_schema (line 248) | def _clean_schema(self, schema_obj): method _clean_tools_format (line 297) | def _clean_tools_format(self, tools_list): method _extract_preview_from_message (line 332) | def _extract_preview_from_message(self, message): method _summarize_messages_for_log (line 379) | def _summarize_messages_for_log(self, messages, preview_chars=20): method _get_text_value (line 391) | def _get_text_value(part): method _is_thought_part (line 400) | def _is_thought_part(part): method _raw_gen (line 406) | def _raw_gen( method _raw_gen_stream (line 444) | def _raw_gen_stream( method _supports_tools (line 526) | def _supports_tools(self): method _supports_structured_output (line 530) | def _supports_structured_output(self): method prepare_structured_output_format (line 534) | def prepare_structured_output_format(self, json_schema): FILE: application/llm/groq.py class GroqLLM (line 7) | class GroqLLM(OpenAILLM): method __init__ (line 8) | def __init__(self, api_key=None, user_api_key=None, base_url=None, *ar... FILE: application/llm/handlers/base.py class ToolCall (line 13) | class ToolCall: method from_dict (line 23) | def from_dict(cls, data: Dict) -> "ToolCall": class LLMResponse (line 34) | class LLMResponse: method requires_tool_call (line 43) | def requires_tool_call(self) -> bool: class LLMHandler (line 48) | class LLMHandler(ABC): method __init__ (line 51) | def __init__(self): method parse_response (line 56) | def parse_response(self, response: Any) -> LLMResponse: method create_tool_message (line 61) | def create_tool_message(self, tool_call: ToolCall, result: Any) -> Dict: method _iterate_stream (line 66) | def _iterate_stream(self, response: Any) -> Generator: method process_message_flow (line 70) | def process_message_flow( method prepare_messages (line 102) | def prepare_messages( method _convert_pdf_to_images (line 178) | def _convert_pdf_to_images(self, attachment: Dict) -> List[Dict]: method _append_unsupported_attachments (line 209) | def _append_unsupported_attachments( method _prune_messages_minimal (line 244) | def _prune_messages_minimal(self, messages: List[Dict]) -> Optional[Li... method _extract_text_from_content (line 266) | def _extract_text_from_content(self, content: Any) -> str: method _build_conversation_from_messages (line 286) | def _build_conversation_from_messages(self, messages: List[Dict]) -> O... method _rebuild_messages_after_compression (line 388) | def _rebuild_messages_after_compression( method _perform_mid_execution_compression (line 413) | def _perform_mid_execution_compression( method _perform_in_memory_compression (line 531) | def _perform_in_memory_compression( method handle_tool_calls (line 645) | def handle_tool_calls( method handle_non_streaming (line 828) | def handle_non_streaming( method handle_streaming (line 863) | def handle_streaming( FILE: application/llm/handlers/google.py class GoogleLLMHandler (line 7) | class GoogleLLMHandler(LLMHandler): method parse_response (line 10) | def parse_response(self, response: Any) -> LLMResponse: method create_tool_message (line 69) | def create_tool_message(self, tool_call: ToolCall, result: Any) -> Dict: method _iterate_stream (line 84) | def _iterate_stream(self, response: Any) -> Generator: FILE: application/llm/handlers/handler_creator.py class LLMHandlerCreator (line 6) | class LLMHandlerCreator: method create_handler (line 14) | def create_handler(cls, llm_type: str, *args, **kwargs) -> LLMHandler: FILE: application/llm/handlers/openai.py class OpenAILLMHandler (line 6) | class OpenAILLMHandler(LLMHandler): method parse_response (line 9) | def parse_response(self, response: Any) -> LLMResponse: method create_tool_message (line 39) | def create_tool_message(self, tool_call: ToolCall, result: Any) -> Dict: method _iterate_stream (line 54) | def _iterate_stream(self, response: Any) -> Generator: FILE: application/llm/llama_cpp.py class LlamaSingleton (line 6) | class LlamaSingleton: method get_instance (line 11) | def get_instance(cls, llm_name): method query_model (line 23) | def query_model(cls, llm, prompt, **kwargs): class LlamaCpp (line 28) | class LlamaCpp(BaseLLM): method __init__ (line 29) | def __init__( method _raw_gen (line 42) | def _raw_gen(self, baseself, model, messages, stream=False, **kwargs): method _raw_gen_stream (line 51) | def _raw_gen_stream(self, baseself, model, messages, stream=True, **kw... FILE: application/llm/llm_creator.py class LLMCreator (line 17) | class LLMCreator: method create_llm (line 33) | def create_llm( FILE: application/llm/novita.py class NovitaLLM (line 7) | class NovitaLLM(OpenAILLM): method __init__ (line 8) | def __init__(self, api_key=None, user_api_key=None, base_url=None, *ar... FILE: application/llm/open_router.py class OpenRouterLLM (line 7) | class OpenRouterLLM(OpenAILLM): method __init__ (line 8) | def __init__(self, api_key=None, user_api_key=None, base_url=None, *ar... FILE: application/llm/openai.py function _truncate_base64_for_logging (line 12) | def _truncate_base64_for_logging(messages): class OpenAILLM (line 63) | class OpenAILLM(BaseLLM): method __init__ (line 65) | def __init__(self, api_key=None, user_api_key=None, base_url=None, *ar... method _clean_messages_openai (line 86) | def _clean_messages_openai(self, messages): method _normalize_reasoning_value (line 155) | def _normalize_reasoning_value(value): method _extract_reasoning_text (line 180) | def _extract_reasoning_text(cls, delta): method _raw_gen (line 199) | def _raw_gen( method _raw_gen_stream (line 235) | def _raw_gen_stream( method _supports_tools (line 293) | def _supports_tools(self): method _supports_structured_output (line 296) | def _supports_structured_output(self): method prepare_structured_output_format (line 299) | def prepare_structured_output_format(self, json_schema): method get_supported_attachment_types (line 353) | def get_supported_attachment_types(self): method prepare_messages_with_attachments (line 366) | def prepare_messages_with_attachments(self, messages, attachments=None): method _get_base64_image (line 453) | def _get_base64_image(self, attachment): method _upload_file_to_openai (line 472) | def _upload_file_to_openai(self, attachment): class AzureOpenAILLM (line 516) | class AzureOpenAILLM(OpenAILLM): method __init__ (line 518) | def __init__(self, api_key, user_api_key, *args, **kwargs): FILE: application/llm/premai.py class PremAILLM (line 5) | class PremAILLM(BaseLLM): method __init__ (line 7) | def __init__(self, api_key=None, user_api_key=None, *args, **kwargs): method _raw_gen (line 16) | def _raw_gen(self, baseself, model, messages, stream=False, **kwargs): method _raw_gen_stream (line 27) | def _raw_gen_stream(self, baseself, model, messages, stream=True, **kw... FILE: application/llm/sagemaker.py class LineIterator (line 7) | class LineIterator: method __init__ (line 33) | def __init__(self, stream): method __iter__ (line 38) | def __iter__(self): method __next__ (line 41) | def __next__(self): class SagemakerAPILLM (line 61) | class SagemakerAPILLM(BaseLLM): method __init__ (line 63) | def __init__(self, api_key=None, user_api_key=None, *args, **kwargs): method _raw_gen (line 79) | def _raw_gen(self, baseself, model, messages, stream=False, tools=None... method _raw_gen_stream (line 108) | def _raw_gen_stream(self, baseself, model, messages, stream=True, tool... FILE: application/logging.py class LogContext (line 17) | class LogContext: method __init__ (line 18) | def __init__(self, endpoint, activity_id, user, api_key, query): function build_stack_data (line 27) | def build_stack_data( function log_activity (line 71) | def log_activity() -> Callable: function _consume_and_log (line 97) | def _consume_and_log(generator: Generator, context: "LogContext"): function _log_to_mongodb (line 126) | def _log_to_mongodb( FILE: application/parser/chunking.py class Chunker (line 9) | class Chunker: method __init__ (line 10) | def __init__( method separate_header_and_body (line 25) | def separate_header_and_body(self, text: str) -> Tuple[str, str]: method split_document (line 37) | def split_document(self, doc: Document) -> List[Document]: method classic_chunk (line 62) | def classic_chunk(self, documents: List[Document]) -> List[Document]: method chunk (line 87) | def chunk( FILE: application/parser/connectors/base.py class BaseConnectorAuth (line 14) | class BaseConnectorAuth(ABC): method get_authorization_url (line 23) | def get_authorization_url(self, state: Optional[str] = None) -> str: method exchange_code_for_tokens (line 36) | def exchange_code_for_tokens(self, authorization_code: str) -> Dict[st... method refresh_access_token (line 49) | def refresh_access_token(self, refresh_token: str) -> Dict[str, Any]: method is_token_expired (line 62) | def is_token_expired(self, token_info: Dict[str, Any]) -> bool: method sanitize_token_info (line 74) | def sanitize_token_info(self, token_info: Dict[str, Any], **extra_fiel... class BaseConnectorLoader (line 86) | class BaseConnectorLoader(ABC): method __init__ (line 95) | def __init__(self, session_token: str): method load_data (line 105) | def load_data(self, inputs: Dict[str, Any]) -> List[Document]: method download_to_directory (line 123) | def download_to_directory(self, local_dir: str, source_config: Dict[st... FILE: application/parser/connectors/connector_creator.py class ConnectorCreator (line 7) | class ConnectorCreator: method create_connector (line 26) | def create_connector(cls, connector_type, *args, **kwargs): method create_auth (line 46) | def create_auth(cls, connector_type): method get_supported_connectors (line 65) | def get_supported_connectors(cls): method is_supported (line 75) | def is_supported(cls, connector_type): FILE: application/parser/connectors/google_drive/auth.py class GoogleDriveAuth (line 14) | class GoogleDriveAuth(BaseConnectorAuth): method __init__ (line 23) | def __init__(self): method get_authorization_url (line 33) | def get_authorization_url(self, state: Optional[str] = None) -> str: method exchange_code_for_tokens (line 62) | def exchange_code_for_tokens(self, authorization_code: str) -> Dict[st... method refresh_access_token (line 118) | def refresh_access_token(self, refresh_token: str) -> Dict[str, Any]: method create_credentials_from_token_info (line 147) | def create_credentials_from_token_info(self, token_info: Dict[str, Any... method build_drive_service (line 168) | def build_drive_service(self, credentials: Credentials): method is_token_expired (line 194) | def is_token_expired(self, token_info): method get_token_info_from_session (line 210) | def get_token_info_from_session(self, session_token: str) -> Dict[str,... method validate_credentials (line 243) | def validate_credentials(self, credentials: Credentials) -> bool: FILE: application/parser/connectors/google_drive/loader.py class GoogleDriveLoader (line 19) | class GoogleDriveLoader(BaseConnectorLoader): method __init__ (line 51) | def __init__(self, session_token: str): method _process_file (line 68) | def _process_file(self, file_metadata: Dict[str, Any], load_content: b... method load_data (line 112) | def load_data(self, inputs: Dict[str, Any]) -> List[Document]: method _load_file_by_id (line 172) | def _load_file_by_id(self, file_id: str, load_content: bool = True) ->... method _list_items_in_parent (line 204) | def _list_items_in_parent(self, parent_id: str, limit: int = 100, load... method _download_file_content (line 272) | def _download_file_content(self, file_id: str, mime_type: str) -> Opti... method _download_file_to_directory (line 363) | def _download_file_to_directory(self, file_id: str, local_dir: str) ->... method _ensure_service (line 371) | def _ensure_service(self): method _download_single_file (line 378) | def _download_single_file(self, file_id: str, local_dir: str) -> bool: method _download_folder_recursive (line 413) | def _download_folder_recursive(self, folder_id: str, local_dir: str, r... method _get_extension_for_mime_type (line 468) | def _get_extension_for_mime_type(self, mime_type: str) -> str: method _download_folder_contents (line 480) | def _download_folder_contents(self, folder_id: str, local_dir: str, re... method download_to_directory (line 488) | def download_to_directory(self, local_dir: str, source_config: dict = ... FILE: application/parser/connectors/share_point/auth.py class SharePointAuth (line 13) | class SharePointAuth(BaseConnectorAuth): method __init__ (line 27) | def __init__(self): method get_authorization_url (line 51) | def get_authorization_url(self, state: Optional[str] = None) -> str: method exchange_code_for_tokens (line 56) | def exchange_code_for_tokens(self, authorization_code: str) -> Dict[st... method refresh_access_token (line 69) | def refresh_access_token(self, refresh_token: str) -> Dict[str, Any]: method get_token_info_from_session (line 78) | def get_token_info_from_session(self, session_token: str) -> Dict[str,... method is_token_expired (line 113) | def is_token_expired(self, token_info: Dict[str, Any]) -> bool: method sanitize_token_info (line 125) | def sanitize_token_info(self, token_info: Dict[str, Any], **extra_fiel... method _allows_shared_content (line 134) | def _allows_shared_content(self, id_token_claims: Dict[str, Any]) -> b... method map_token_response (line 139) | def map_token_response(self, result) -> Dict[str, Any]: FILE: application/parser/connectors/share_point/loader.py function _retry_on_auth_failure (line 19) | def _retry_on_auth_failure(func): class SharePointLoader (line 40) | class SharePointLoader(BaseConnectorLoader): method __init__ (line 66) | def __init__(self, session_token: str): method _get_headers (line 80) | def _get_headers(self) -> Dict[str, str]: method _ensure_valid_token (line 86) | def _ensure_valid_token(self): method _get_item_url (line 99) | def _get_item_url(self, item_ref: str) -> str: method _process_file (line 105) | def _process_file(self, file_metadata: Dict[str, Any], load_content: b... method load_data (line 147) | def load_data(self, inputs: Dict[str, Any]) -> List[Document]: method _load_file_by_id (line 202) | def _load_file_by_id(self, file_id: str, load_content: bool = True) ->... method _list_items_in_parent (line 221) | def _list_items_in_parent(self, parent_id: str, limit: int = 100, load... method _resolve_mime_type (line 289) | def _resolve_mime_type(self, resource: Dict[str, Any]) -> Tuple[str, b... method _get_user_drive_web_url (line 304) | def _get_user_drive_web_url(self) -> Optional[str]: method _build_shared_kql_query (line 318) | def _build_shared_kql_query(self, search_query: Optional[str], user_dr... method _list_shared_items (line 325) | def _list_shared_items(self, limit: int = 100, load_content: bool = Fa... method _download_file_content (line 470) | def _download_file_content(self, file_id: str) -> Optional[str]: method _download_single_file (line 490) | def _download_single_file(self, file_id: str, local_dir: str) -> bool: method _download_folder_recursive (line 521) | def _download_folder_recursive(self, folder_id: str, local_dir: str, r... method _download_folder_contents (line 568) | def _download_folder_contents(self, folder_id: str, local_dir: str, re... method _download_file_to_directory (line 576) | def _download_file_to_directory(self, file_id: str, local_dir: str) ->... method download_to_directory (line 584) | def download_to_directory(self, local_dir: str, source_config: Dict[st... FILE: application/parser/embedding_pipeline.py function sanitize_content (line 10) | def sanitize_content(content: str) -> str: function add_text_to_store_with_retry (line 26) | def add_text_to_store_with_retry(store: Any, doc: Any, source_id: str) -... function embed_and_store_documents (line 48) | def embed_and_store_documents(docs: List[Any], folder_name: str, source_... FILE: application/parser/file/audio_parser.py class AudioParser (line 10) | class AudioParser(BaseParser): method __init__ (line 11) | def __init__(self, parser_config=None): method _init_parser (line 15) | def _init_parser(self) -> Dict: method parse_file (line 18) | def parse_file(self, file: Path, errors: str = "ignore") -> Union[str,... method get_file_metadata (line 47) | def get_file_metadata(self, file: Path) -> Dict: FILE: application/parser/file/base.py class BaseReader (line 9) | class BaseReader: method load_data (line 13) | def load_data(self, *args: Any, **load_kwargs: Any) -> List[Document]: method load_langchain_documents (line 16) | def load_langchain_documents(self, **load_kwargs: Any) -> List[LCDocum... FILE: application/parser/file/base_parser.py class BaseParser (line 8) | class BaseParser: method __init__ (line 11) | def __init__(self, parser_config: Optional[Dict] = None): method init_parser (line 15) | def init_parser(self) -> None: method parser_config_set (line 21) | def parser_config_set(self) -> bool: method parser_config (line 26) | def parser_config(self) -> Dict: method _init_parser (line 33) | def _init_parser(self) -> Dict: method parse_file (line 37) | def parse_file(self, file: Path, errors: str = "ignore") -> Union[str,... method get_file_metadata (line 40) | def get_file_metadata(self, file: Path) -> Dict: FILE: application/parser/file/bulk.py function _build_audio_parser_mapping (line 24) | def _build_audio_parser_mapping() -> Dict[str, BaseParser]: function get_default_file_extractor (line 28) | def get_default_file_extractor( class SimpleDirectoryReader (line 114) | class SimpleDirectoryReader(BaseReader): method __init__ (line 140) | def __init__( method _add_files (line 181) | def _add_files(self, input_dir: Path) -> List[Path]: method load_data (line 214) | def load_data(self, concatenate: bool = False) -> List[Document]: method build_directory_structure (line 295) | def build_directory_structure(self, base_path): FILE: application/parser/file/docling_parser.py class DoclingParser (line 19) | class DoclingParser(BaseParser): method __init__ (line 35) | def __init__( method _create_converter (line 63) | def _create_converter(self): method _init_parser (line 106) | def _init_parser(self) -> Dict: method _get_ocr_options (line 132) | def _get_ocr_options(self): method _export_content (line 155) | def _export_content(self, document) -> str: method parse_file (line 186) | def parse_file(self, file: Path, errors: str = "ignore") -> Union[str,... class DoclingPDFParser (line 219) | class DoclingPDFParser(DoclingParser): method __init__ (line 229) | def __init__( class DoclingDocxParser (line 247) | class DoclingDocxParser(DoclingParser): method __init__ (line 250) | def __init__(self): class DoclingPPTXParser (line 254) | class DoclingPPTXParser(DoclingParser): method __init__ (line 257) | def __init__(self): class DoclingXLSXParser (line 261) | class DoclingXLSXParser(DoclingParser): method __init__ (line 264) | def __init__(self): class DoclingHTMLParser (line 268) | class DoclingHTMLParser(DoclingParser): method __init__ (line 271) | def __init__(self): class DoclingImageParser (line 275) | class DoclingImageParser(DoclingParser): method __init__ (line 282) | def __init__( class DoclingCSVParser (line 298) | class DoclingCSVParser(DoclingParser): method __init__ (line 301) | def __init__(self): class DoclingMarkdownParser (line 305) | class DoclingMarkdownParser(DoclingParser): method __init__ (line 308) | def __init__(self): class DoclingAsciiDocParser (line 312) | class DoclingAsciiDocParser(DoclingParser): method __init__ (line 315) | def __init__(self): class DoclingVTTParser (line 319) | class DoclingVTTParser(DoclingParser): method __init__ (line 322) | def __init__(self): class DoclingXMLParser (line 326) | class DoclingXMLParser(DoclingParser): method __init__ (line 329) | def __init__(self): FILE: application/parser/file/docs_parser.py class PDFParser (line 13) | class PDFParser(BaseParser): method _init_parser (line 16) | def _init_parser(self) -> Dict: method parse_file (line 20) | def parse_file(self, file: Path, errors: str = "ignore") -> str: class DocxParser (line 54) | class DocxParser(BaseParser): method _init_parser (line 57) | def _init_parser(self) -> Dict: method parse_file (line 61) | def parse_file(self, file: Path, errors: str = "ignore") -> str: FILE: application/parser/file/epub_parser.py class EpubParser (line 12) | class EpubParser(BaseParser): method _init_parser (line 15) | def _init_parser(self) -> Dict: method parse_file (line 19) | def parse_file(self, file: Path, errors: str = "ignore") -> str: FILE: application/parser/file/html_parser.py class HTMLParser (line 12) | class HTMLParser(BaseParser): method _init_parser (line 15) | def _init_parser(self) -> Dict: method parse_file (line 19) | def parse_file(self, file: Path, errors: str = "ignore") -> Union[str,... FILE: application/parser/file/image_parser.py class ImageParser (line 14) | class ImageParser(BaseParser): method _init_parser (line 17) | def _init_parser(self) -> Dict: method parse_file (line 21) | def parse_file(self, file: Path, errors: str = "ignore") -> Union[str,... FILE: application/parser/file/json_parser.py class JSONParser (line 7) | class JSONParser(BaseParser): method __init__ (line 27) | def __init__( method _init_parser (line 41) | def _init_parser(self) -> Dict: method parse_file (line 45) | def parse_file(self, file: Path, errors: str = "ignore") -> Union[str,... FILE: application/parser/file/markdown_parser.py class MarkdownParser (line 14) | class MarkdownParser(BaseParser): method __init__ (line 22) | def __init__( method tups_chunk_append (line 38) | def tups_chunk_append(self, tups: List[Tuple[Optional[str], str]], cur... method markdown_to_tups (line 50) | def markdown_to_tups(self, markdown_text: str) -> List[Tuple[Optional[... method remove_images (line 89) | def remove_images(self, content: str) -> str: method remove_hyperlinks (line 108) | def remove_hyperlinks(self, content: str) -> str: method _init_parser (line 114) | def _init_parser(self) -> Dict: method parse_tups (line 118) | def parse_tups( method parse_file (line 133) | def parse_file( FILE: application/parser/file/openapi3_parser.py class OpenAPI3Parser (line 11) | class OpenAPI3Parser(BaseParser): method init_parser (line 12) | def init_parser(self) -> None: method get_base_urls (line 15) | def get_base_urls(self, urls): method get_info_from_paths (line 24) | def get_info_from_paths(self, path): method parse_file (line 34) | def parse_file(self, file_path): FILE: application/parser/file/pptx_parser.py class PPTXParser (line 9) | class PPTXParser(BaseParser): method __init__ (line 21) | def __init__( method _init_parser (line 33) | def _init_parser(self) -> Dict: method parse_file (line 37) | def parse_file(self, file: Path, errors: str = "ignore") -> Union[str,... FILE: application/parser/file/rst_parser.py class RstParser (line 13) | class RstParser(BaseParser): method __init__ (line 21) | def __init__( method rst_to_tups (line 44) | def rst_to_tups(self, rst_text: str) -> List[Tuple[Optional[str], str]]: method chunk_by_token_count (line 94) | def chunk_by_token_count(self, text: str, max_tokens: int = 100) -> Li... method remove_images (line 113) | def remove_images(self, content: str) -> str: method remove_hyperlinks (line 118) | def remove_hyperlinks(self, content: str) -> str: method remove_directives (line 123) | def remove_directives(self, content: str) -> str: method remove_interpreters (line 129) | def remove_interpreters(self, content: str) -> str: method remove_table_excess (line 135) | def remove_table_excess(self, content: str) -> str: method remove_whitespaces_excess (line 141) | def remove_whitespaces_excess(self, content: List[Tuple[str, Any]]) ->... method remove_characters_excess (line 147) | def remove_characters_excess(self, content: List[Tuple[str, Any]]) -> ... method _init_parser (line 153) | def _init_parser(self) -> Dict: method parse_tups (line 157) | def parse_tups( method parse_file (line 189) | def parse_file( FILE: application/parser/file/tabular_parser.py class CSVParser (line 12) | class CSVParser(BaseParser): method __init__ (line 22) | def __init__(self, *args: Any, concat_rows: bool = True, **kwargs: Any... method _init_parser (line 27) | def _init_parser(self) -> Dict: method parse_file (line 31) | def parse_file(self, file: Path, errors: str = "ignore") -> Union[str,... class PandasCSVParser (line 53) | class PandasCSVParser(BaseParser): method __init__ (line 85) | def __init__( method _init_parser (line 105) | def _init_parser(self) -> Dict: method parse_file (line 109) | def parse_file(self, file: Path, errors: str = "ignore") -> Union[str,... class ExcelParser (line 139) | class ExcelParser(BaseParser): method __init__ (line 171) | def __init__( method _init_parser (line 191) | def _init_parser(self) -> Dict: method parse_file (line 195) | def parse_file(self, file: Path, errors: str = "ignore") -> Union[str,... FILE: application/parser/remote/base.py class BaseRemote (line 9) | class BaseRemote: method load_data (line 13) | def load_data(self, *args: Any, **load_kwargs: Any) -> List[Document]: method load_langchain_documents (line 16) | def load_langchain_documents(self, **load_kwargs: Any) -> List[LCDocum... FILE: application/parser/remote/crawler_loader.py class CrawlerLoader (line 11) | class CrawlerLoader(BaseRemote): method __init__ (line 12) | def __init__(self, limit=10): method load_data (line 16) | def load_data(self, inputs): method _url_to_virtual_path (line 82) | def _url_to_virtual_path(self, url): FILE: application/parser/remote/crawler_markdown.py class CrawlerLoader (line 12) | class CrawlerLoader(BaseRemote): method __init__ (line 13) | def __init__(self, limit=10, allow_subdomains=False): method load_data (line 25) | def load_data(self, inputs): method _fetch_page (line 92) | def _fetch_page(self, url): method _process_html_to_markdown (line 106) | def _process_html_to_markdown(self, html_content, current_url): method _extract_links (line 120) | def _extract_links(self, html_content, current_url): method _get_base_domain (line 128) | def _get_base_domain(self, url): method _filter_links (line 134) | def _filter_links(self, links, base_domain): method _url_to_virtual_path (line 159) | def _url_to_virtual_path(self, url): FILE: application/parser/remote/github_loader.py class GitHubLoader (line 10) | class GitHubLoader(BaseRemote): method __init__ (line 11) | def __init__(self): method is_text_file (line 21) | def is_text_file(self, file_path: str) -> bool: method fetch_file_content (line 49) | def fetch_file_content(self, repo_url: str, file_path: str) -> Optiona... method _make_request (line 77) | def _make_request(self, url: str, max_retries: int = 3) -> requests.Re... method fetch_repo_files (line 119) | def fetch_repo_files(self, repo_url: str, path: str = "") -> List[str]: method load_data (line 141) | def load_data(self, repo_url: str) -> List[Document]: FILE: application/parser/remote/reddit_loader.py class RedditPostsLoaderRemote (line 6) | class RedditPostsLoaderRemote(BaseRemote): method load_data (line 7) | def load_data(self, inputs): FILE: application/parser/remote/remote_creator.py class RemoteCreator (line 9) | class RemoteCreator: method create_loader (line 30) | def create_loader(cls, type, *args, **kwargs): FILE: application/parser/remote/s3_loader.py class S3Loader (line 19) | class S3Loader(BaseRemote): method __init__ (line 22) | def __init__(self): method _normalize_endpoint_url (line 29) | def _normalize_endpoint_url(self, endpoint_url: str, bucket: str) -> t... method _init_client (line 79) | def _init_client( method is_text_file (line 123) | def is_text_file(self, file_path: str) -> bool: method is_supported_document (line 192) | def is_supported_document(self, file_path: str) -> bool: method list_objects (line 214) | def list_objects(self, bucket: str, prefix: str = "") -> List[str]: method get_object_content (line 282) | def get_object_content(self, bucket: str, key: str) -> Optional[str]: method _process_document (line 324) | def _process_document(self, content: bytes, key: str) -> Optional[str]: method load_data (line 356) | def load_data(self, inputs) -> List[Document]: FILE: application/parser/remote/sitemap_loader.py class SitemapLoader (line 8) | class SitemapLoader(BaseRemote): method __init__ (line 9) | def __init__(self, limit=20): method load_data (line 14) | def load_data(self, inputs): method _extract_urls (line 49) | def _extract_urls(self, sitemap_url): method _is_sitemap (line 70) | def _is_sitemap(self, response): method _parse_sitemap (line 80) | def _parse_sitemap(self, sitemap_content): FILE: application/parser/remote/telegram.py class TelegramChatApiRemote (line 4) | class TelegramChatApiRemote(BaseRemote): method _init_parser (line 5) | def _init_parser(self, *args, **load_kwargs): method parse_file (line 9) | def parse_file(self, *args, **load_kwargs): FILE: application/parser/remote/web_loader.py class WebLoader (line 19) | class WebLoader(BaseRemote): method __init__ (line 20) | def __init__(self): method load_data (line 23) | def load_data(self, inputs): FILE: application/parser/schema/base.py class Document (line 9) | class Document(BaseDocument): method __post_init__ (line 16) | def __post_init__(self) -> None: method get_type (line 22) | def get_type(cls) -> str: method to_langchain_format (line 26) | def to_langchain_format(self) -> LCDocument: method from_langchain_format (line 32) | def from_langchain_format(cls, doc: LCDocument) -> "Document": FILE: application/parser/schema/schema.py class BaseDocument (line 10) | class BaseDocument(DataClassJsonMixin): method get_type (line 28) | def get_type(cls) -> str: method get_text (line 31) | def get_text(self) -> str: method get_doc_id (line 37) | def get_doc_id(self) -> str: method is_doc_id_none (line 44) | def is_doc_id_none(self) -> bool: method get_embedding (line 48) | def get_embedding(self) -> List[float]: method extra_info_str (line 59) | def extra_info_str(self) -> Optional[str]: FILE: application/retriever/base.py class BaseRetriever (line 4) | class BaseRetriever(ABC): method __init__ (line 5) | def __init__(self): method search (line 9) | def search(self, *args, **kwargs): FILE: application/retriever/classic_rag.py class ClassicRAG (line 11) | class ClassicRAG(BaseRetriever): method __init__ (line 12) | def __init__( method _validate_vectorstore_config (line 69) | def _validate_vectorstore_config(self): method _rephrase_query (line 83) | def _rephrase_query(self): method _get_data (line 113) | def _get_data(self): method search (line 198) | def search(self, query: str = ""): FILE: application/retriever/retriever_creator.py class RetrieverCreator (line 4) | class RetrieverCreator: method create_retriever (line 11) | def create_retriever(cls, type, *args, **kwargs): FILE: application/security/encryption.py function _derive_key (line 13) | def _derive_key(user_id: str, salt: bytes) -> bytes: function encrypt_credentials (line 29) | def encrypt_credentials(credentials: dict, user_id: str) -> str: function decrypt_credentials (line 52) | def decrypt_credentials(encrypted_data: str, user_id: str) -> dict: function _pad_data (line 76) | def _pad_data(data: bytes) -> bytes: function _unpad_data (line 83) | def _unpad_data(data: bytes) -> bytes: FILE: application/seed/commands.py function seed (line 9) | def seed(): function init (line 16) | def init(force): FILE: application/seed/seeder.py class DatabaseSeeder (line 21) | class DatabaseSeeder: method __init__ (line 22) | def __init__(self, db): method seed_initial_data (line 31) | def seed_initial_data(self, config_path: str = None, force=False): method _seed_from_config (line 48) | def _seed_from_config(self, config: Dict): method _handle_source (line 126) | def _handle_source(self, agent_config: Dict) -> Union[ObjectId, None, ... method _handle_tools (line 167) | def _handle_tools(self, agent_config: Dict) -> List[ObjectId]: method _handle_prompt (line 207) | def _handle_prompt(self, agent_config: Dict) -> Optional[str]: method _process_config (line 251) | def _process_config(self, config: Dict) -> Dict: method _is_already_seeded (line 266) | def _is_already_seeded(self) -> bool: method initialize_from_env (line 271) | def initialize_from_env(cls, worker=None): FILE: application/storage/base.py class BaseStorage (line 7) | class BaseStorage(ABC): method save_file (line 11) | def save_file(self, file_data: BinaryIO, path: str, **kwargs) -> dict: method get_file (line 28) | def get_file(self, path: str) -> BinaryIO: method process_file (line 41) | def process_file(self, path: str, processor_func: Callable, **kwargs): method delete_file (line 59) | def delete_file(self, path: str) -> bool: method file_exists (line 72) | def file_exists(self, path: str) -> bool: method list_files (line 85) | def list_files(self, directory: str) -> List[str]: method is_directory (line 98) | def is_directory(self, path: str) -> bool: method remove_directory (line 111) | def remove_directory(self, directory: str) -> bool: FILE: application/storage/local.py class LocalStorage (line 9) | class LocalStorage(BaseStorage): method __init__ (line 12) | def __init__(self, base_dir: str = None): method _get_full_path (line 23) | def _get_full_path(self, path: str) -> str: method save_file (line 29) | def save_file(self, file_data: BinaryIO, path: str, **kwargs) -> dict: method get_file (line 45) | def get_file(self, path: str) -> BinaryIO: method delete_file (line 54) | def delete_file(self, path: str) -> bool: method file_exists (line 64) | def file_exists(self, path: str) -> bool: method list_files (line 69) | def list_files(self, directory: str) -> List[str]: method process_file (line 84) | def process_file(self, path: str, processor_func: Callable, **kwargs): method is_directory (line 105) | def is_directory(self, path: str) -> bool: method remove_directory (line 118) | def remove_directory(self, directory: str) -> bool: FILE: application/storage/s3.py class S3Storage (line 14) | class S3Storage(BaseStorage): method __init__ (line 17) | def __init__(self, bucket_name=None): method save_file (line 41) | def save_file( method get_file (line 62) | def get_file(self, path: str) -> BinaryIO: method delete_file (line 71) | def delete_file(self, path: str) -> bool: method file_exists (line 79) | def file_exists(self, path: str) -> bool: method list_files (line 87) | def list_files(self, directory: str) -> List[str]: method process_file (line 103) | def process_file(self, path: str, processor_func: Callable, **kwargs): method is_directory (line 134) | def is_directory(self, path: str) -> bool: method remove_directory (line 159) | def remove_directory(self, directory: str) -> bool: FILE: application/storage/storage_creator.py class StorageCreator (line 10) | class StorageCreator: method get_storage (line 19) | def get_storage(cls) -> BaseStorage: method create_storage (line 27) | def create_storage(cls, type_name: str, *args, **kwargs) -> BaseStorage: FILE: application/stt/base.py class BaseSTT (line 6) | class BaseSTT(ABC): method transcribe (line 8) | def transcribe( FILE: application/stt/faster_whisper_stt.py class FasterWhisperSTT (line 7) | class FasterWhisperSTT(BaseSTT): method __init__ (line 8) | def __init__( method _get_model (line 19) | def _get_model(self): method transcribe (line 35) | def transcribe( FILE: application/stt/live_session.py function normalize_transcript_text (line 14) | def normalize_transcript_text(text: str) -> str: function join_transcript_parts (line 18) | def join_transcript_parts(*parts: str) -> str: function _normalize_word (line 22) | def _normalize_word(word: str) -> str: function _split_words (line 27) | def _split_words(text: str) -> list[str]: function _common_prefix_length (line 32) | def _common_prefix_length(left_words: list[str], right_words: list[str])... function _find_suffix_prefix_overlap (line 42) | def _find_suffix_prefix_overlap( function strip_committed_prefix (line 58) | def strip_committed_prefix(committed_text: str, hypothesis_text: str) ->... function _calculate_commit_count (line 78) | def _calculate_commit_count( function create_live_stt_session (line 104) | def create_live_stt_session( function get_live_stt_session_key (line 119) | def get_live_stt_session_key(session_id: str) -> str: function save_live_stt_session (line 123) | def save_live_stt_session(redis_client, session_state: Dict[str, object]... function load_live_stt_session (line 131) | def load_live_stt_session(redis_client, session_id: str) -> Optional[Dic... function delete_live_stt_session (line 140) | def delete_live_stt_session(redis_client, session_id: str) -> None: function apply_live_stt_hypothesis (line 144) | def apply_live_stt_hypothesis( function get_live_stt_transcript_text (line 190) | def get_live_stt_transcript_text(session_state: Dict[str, object]) -> str: function finalize_live_stt_session (line 197) | def finalize_live_stt_session(session_state: Dict[str, object]) -> str: FILE: application/stt/openai_stt.py class OpenAISTT (line 10) | class OpenAISTT(BaseSTT): method __init__ (line 11) | def __init__( method transcribe (line 22) | def transcribe( method _to_dict (line 55) | def _to_dict(value: Any) -> Dict[str, Any]: FILE: application/stt/stt_creator.py class STTCreator (line 6) | class STTCreator: method create_stt (line 13) | def create_stt(cls, stt_type, *args, **kwargs) -> BaseSTT: FILE: application/stt/upload_limits.py class AudioFileTooLargeError (line 12) | class AudioFileTooLargeError(ValueError): function get_stt_max_file_size_bytes (line 16) | def get_stt_max_file_size_bytes() -> int: function build_stt_file_size_limit_message (line 20) | def build_stt_file_size_limit_message() -> str: function is_audio_filename (line 24) | def is_audio_filename(filename: str | Path | None) -> bool: function enforce_audio_file_size_limit (line 31) | def enforce_audio_file_size_limit(size_bytes: int) -> None: function should_reject_stt_request (line 37) | def should_reject_stt_request(path: str, content_length: int | None) -> ... FILE: application/templates/namespaces.py class NamespaceBuilder (line 10) | class NamespaceBuilder(ABC): method build (line 14) | def build(self, **kwargs) -> Dict[str, Any]: method namespace_name (line 20) | def namespace_name(self) -> str: class SystemNamespace (line 25) | class SystemNamespace(NamespaceBuilder): method namespace_name (line 29) | def namespace_name(self) -> str: method build (line 32) | def build( class PassthroughNamespace (line 56) | class PassthroughNamespace(NamespaceBuilder): method namespace_name (line 60) | def namespace_name(self) -> str: method build (line 63) | def build( class SourceNamespace (line 88) | class SourceNamespace(NamespaceBuilder): method namespace_name (line 92) | def namespace_name(self) -> str: method build (line 95) | def build( class ToolsNamespace (line 120) | class ToolsNamespace(NamespaceBuilder): method namespace_name (line 124) | def namespace_name(self) -> str: method build (line 127) | def build( class NamespaceManager (line 154) | class NamespaceManager: method __init__ (line 157) | def __init__(self): method build_context (line 165) | def build_context(self, **kwargs) -> Dict[str, Any]: method get_builder (line 188) | def get_builder(self, namespace_name: str) -> Optional[NamespaceBuilder]: FILE: application/templates/template_engine.py class TemplateRenderError (line 16) | class TemplateRenderError(Exception): class TemplateEngine (line 22) | class TemplateEngine: method __init__ (line 25) | def __init__(self): method render (line 33) | def render(self, template_content: str, context: Dict[str, Any]) -> str: method validate_template (line 65) | def validate_template(self, template_content: str) -> bool: method extract_variables (line 87) | def extract_variables(self, template_content: str) -> Set[str]: method extract_tool_usages (line 109) | def extract_tool_usages( FILE: application/tts/base.py class BaseTTS (line 4) | class BaseTTS(ABC): method __init__ (line 5) | def __init__(self): method text_to_speech (line 9) | def text_to_speech(self, *args, **kwargs): FILE: application/tts/elevenlabs.py class ElevenlabsTTS (line 7) | class ElevenlabsTTS(BaseTTS): method __init__ (line 8) | def __init__(self): method text_to_speech (line 16) | def text_to_speech(self, text): FILE: application/tts/google_tts.py class GoogleTTS (line 7) | class GoogleTTS(BaseTTS): method __init__ (line 8) | def __init__(self): method text_to_speech (line 12) | def text_to_speech(self, text): FILE: application/tts/tts_creator.py class TTSCreator (line 7) | class TTSCreator: method create_tts (line 14) | def create_tts(cls, tts_type, *args, **kwargs)-> BaseTTS: FILE: application/usage.py function _serialize_for_token_count (line 16) | def _serialize_for_token_count(value): function _count_tokens (line 54) | def _count_tokens(value): function _count_prompt_tokens (line 61) | def _count_prompt_tokens(messages, tools=None, usage_attachments=None, *... function update_token_usage (line 90) | def update_token_usage(decoded_token, user_api_key, token_usage, agent_i... function gen_token_usage (line 114) | def gen_token_usage(func): function stream_token_usage (line 139) | def stream_token_usage(func): FILE: application/utils.py function get_encoding (line 24) | def get_encoding(): function get_gpt_model (line 31) | def get_gpt_model() -> str: function safe_filename (line 42) | def safe_filename(filename): function num_tokens_from_string (line 57) | def num_tokens_from_string(string: str) -> int: function num_tokens_from_object_or_list (line 66) | def num_tokens_from_object_or_list(thing): function count_tokens_docs (line 77) | def count_tokens_docs(docs): function calculate_doc_token_budget (line 85) | def calculate_doc_token_budget( function get_missing_fields (line 94) | def get_missing_fields(data, required_fields): function check_required_fields (line 99) | def check_required_fields(data, required_fields): function get_field_validation_errors (line 115) | def get_field_validation_errors(data, required_fields): function validate_required_fields (line 130) | def validate_required_fields(data, required_fields): function get_hash (line 149) | def get_hash(data): function limit_chat_history (line 153) | def limit_chat_history(history, max_token_limit=None, model_id="docsgpt-... function validate_function_name (line 184) | def validate_function_name(function_name): function generate_image_url (line 191) | def generate_image_url(image_path): function calculate_compression_threshold (line 206) | def calculate_compression_threshold( function convert_pdf_to_images (line 224) | def convert_pdf_to_images( function clean_text_for_tts (line 311) | def clean_text_for_tts(text: str) -> str: FILE: application/vectorstore/base.py class RemoteEmbeddings (line 11) | class RemoteEmbeddings: method __init__ (line 18) | def __init__(self, api_url: str, model_name: str, api_key: str = None): method _embed (line 26) | def _embed(self, inputs): method embed_query (line 53) | def embed_query(self, query: str): method embed_documents (line 68) | def embed_documents(self, documents: list): method __call__ (line 77) | def __call__(self, text): function _get_embeddings_wrapper (line 86) | def _get_embeddings_wrapper(): class EmbeddingsSingleton (line 93) | class EmbeddingsSingleton: method get_instance (line 97) | def get_instance(embeddings_name, *args, **kwargs): method _create_instance (line 105) | def _create_instance(embeddings_name, *args, **kwargs): class BaseVectorStore (line 130) | class BaseVectorStore(ABC): method __init__ (line 131) | def __init__(self): method search (line 135) | def search(self, *args, **kwargs): method add_texts (line 140) | def add_texts(self, texts, metadatas=None, *args, **kwargs): method delete_index (line 144) | def delete_index(self, *args, **kwargs): method save_local (line 148) | def save_local(self, *args, **kwargs): method get_chunks (line 152) | def get_chunks(self, *args, **kwargs): method add_chunk (line 156) | def add_chunk(self, text, metadata=None, *args, **kwargs): method delete_chunk (line 160) | def delete_chunk(self, chunk_id, *args, **kwargs): method is_azure_configured (line 164) | def is_azure_configured(self): method _get_embeddings (line 171) | def _get_embeddings(self, embeddings_name, embeddings_key=None): FILE: application/vectorstore/document_class.py class Document (line 1) | class Document(str): method __new__ (line 4) | def __new__(cls, page_content: str, metadata: dict): FILE: application/vectorstore/elasticsearch.py class ElasticsearchStore (line 6) | class ElasticsearchStore(BaseVectorStore): method __init__ (line 9) | def __init__(self, source_id, embeddings_key, index_name=settings.ELAS... method connect_to_elasticsearch (line 31) | def connect_to_elasticsearch( method search (line 76) | def search(self, question, k=2, index_name=settings.ELASTIC_INDEX, *ar... method _create_index_if_not_exists (line 112) | def _create_index_if_not_exists( method index (line 126) | def index( method add_texts (line 143) | def add_texts( method delete_index (line 205) | def delete_index(self): FILE: application/vectorstore/embeddings_local.py class EmbeddingsWrapper (line 12) | class EmbeddingsWrapper: method __init__ (line 13) | def __init__(self, model_name, *args, **kwargs): method embed_query (line 36) | def embed_query(self, query: str): method embed_documents (line 39) | def embed_documents(self, documents: list): method __call__ (line 42) | def __call__(self, text): FILE: application/vectorstore/faiss.py function get_vectorstore (line 13) | def get_vectorstore(path: str) -> str: class FaissStore (line 21) | class FaissStore(BaseVectorStore): method __init__ (line 22) | def __init__(self, source_id: str, embeddings_key: str, docs_init=None): method search (line 64) | def search(self, *args, **kwargs): method add_texts (line 67) | def add_texts(self, *args, **kwargs): method _save_to_storage (line 70) | def _save_to_storage(self): method save_local (line 93) | def save_local(self, path=None): method delete_index (line 102) | def delete_index(self, *args, **kwargs): method assert_embedding_dimensions (line 105) | def assert_embedding_dimensions(self, embeddings): method get_chunks (line 123) | def get_chunks(self): method add_chunk (line 135) | def add_chunk(self, text, metadata=None): method delete_chunk (line 145) | def delete_chunk(self, chunk_id): FILE: application/vectorstore/lancedb.py class LanceDBVectorStore (line 6) | class LanceDBVectorStore(BaseVectorStore): method __init__ (line 9) | def __init__(self, path: str = settings.LANCEDB_PATH, method pa (line 23) | def pa(self): method lancedb (line 30) | def lancedb(self): method lance_db (line 37) | def lance_db(self): method table (line 44) | def table(self): method ensure_table_exists (line 53) | def ensure_table_exists(self): method add_texts (line 67) | def add_texts(self, texts: List[str], metadatas: Optional[List[dict]] ... method search (line 83) | def search(self, query: str, k: int = 2, *args, **kwargs): method delete_index (line 90) | def delete_index(self): method assert_embedding_dimensions (line 95) | def assert_embedding_dimensions(self, embeddings): method filter_documents (line 106) | def filter_documents(self, filter_condition: dict) -> List[dict]: FILE: application/vectorstore/milvus.py class MilvusStore (line 9) | class MilvusStore(BaseVectorStore): method __init__ (line 10) | def __init__(self, source_id: str = "", embeddings_key: str = "embeddi... method search (line 25) | def search(self, question, k=2, *args, **kwargs): method add_texts (line 29) | def add_texts(self, texts: List[str], metadatas: Optional[List[dict]],... method save_local (line 34) | def save_local(self, *args, **kwargs): method delete_index (line 37) | def delete_index(self, *args, **kwargs): FILE: application/vectorstore/mongodb.py class MongoDBVectorStore (line 7) | class MongoDBVectorStore(BaseVectorStore): method __init__ (line 8) | def __init__( method search (line 38) | def search(self, question, k=2, *args, **kwargs): method _insert_texts (line 66) | def _insert_texts(self, texts, metadatas): method add_texts (line 79) | def add_texts( method delete_index (line 126) | def delete_index(self, *args, **kwargs): method get_chunks (line 129) | def get_chunks(self): method add_chunk (line 153) | def add_chunk(self, text, metadata=None): method delete_chunk (line 168) | def delete_chunk(self, chunk_id): FILE: application/vectorstore/pgvector.py class PGVectorStore (line 8) | class PGVectorStore(BaseVectorStore): method __init__ (line 9) | def __init__( method _get_connection (line 55) | def _get_connection(self): method _ensure_table_exists (line 63) | def _ensure_table_exists(self): method search (line 110) | def search(self, question: str, k: int = 2, *args, **kwargs) -> List[D... method add_texts (line 145) | def add_texts( method delete_index (line 188) | def delete_index(self, *args, **kwargs): method save_local (line 205) | def save_local(self, *args, **kwargs): method get_chunks (line 209) | def get_chunks(self) -> List[Dict[str, Any]]: method add_chunk (line 239) | def add_chunk(self, text: str, metadata: Optional[Dict[str, Any]] = No... method delete_chunk (line 278) | def delete_chunk(self, chunk_id: str) -> bool: method __del__ (line 298) | def __del__(self): FILE: application/vectorstore/qdrant.py class QdrantStore (line 7) | class QdrantStore(BaseVectorStore): method __init__ (line 8) | def __init__(self, source_id: str = "", embeddings_key: str = "embeddi... method search (line 68) | def search(self, *args, **kwargs): method add_texts (line 71) | def add_texts(self, *args, **kwargs): method save_local (line 74) | def save_local(self, *args, **kwargs): method delete_index (line 77) | def delete_index(self, *args, **kwargs): method get_chunks (line 82) | def get_chunks(self): method add_chunk (line 110) | def add_chunk(self, text, metadata=None): method delete_chunk (line 127) | def delete_chunk(self, chunk_id): FILE: application/vectorstore/vector_creator.py class VectorCreator (line 9) | class VectorCreator: method create_vectorstore (line 20) | def create_vectorstore(cls, type, *args, **kwargs): FILE: application/worker.py function metadata_from_filename (line 52) | def metadata_from_filename(title): function _normalize_file_name_map (line 56) | def _normalize_file_name_map(file_name_map): function _get_display_name (line 67) | def _get_display_name(file_name_map, rel_path): function _apply_display_names_to_structure (line 76) | def _apply_display_names_to_structure(structure, file_name_map, prefix=""): function generate_random_string (line 94) | def generate_random_string(length): class ZipExtractionError (line 108) | class ZipExtractionError(Exception): function _is_path_safe (line 113) | def _is_path_safe(base_path: str, target_path: str) -> bool: function _validate_zip_safety (line 130) | def _validate_zip_safety(zip_path: str, extract_to: str) -> None: function extract_zip_recursive (line 197) | def extract_zip_recursive(zip_path, extract_to, current_depth=0, max_dep... function download_file (line 248) | def download_file(url, params, dest_path): function upload_index (line 259) | def upload_index(full_path, file_data): function run_agent_logic (line 304) | def run_agent_logic(agent_config, input_data): function ingest_worker (line 416) | def ingest_worker( function reingest_source_worker (line 588) | def reingest_source_worker(self, source_id, user): function remote_worker (line 901) | def remote_worker( function sync (line 1049) | def sync( function sync_worker (line 1079) | def sync_worker(self, frequency): function attachment_worker (line 1103) | def attachment_worker(self, file_info, user): function agent_webhook_worker (line 1197) | def agent_webhook_worker(self, agent_id, payload): function ingest_connector (line 1238) | def ingest_connector( function mcp_oauth (line 1426) | def mcp_oauth(self, config: Dict[str, Any], user_id: str = None) -> Dict... function mcp_oauth_status (line 1510) | def mcp_oauth_status(self, task_id: str) -> Dict[str, Any]: FILE: docs/app/[[...mdxPath]]/page.jsx function generateMetadata (line 7) | async function generateMetadata(props) { function Page (line 15) | async function Page(props) { FILE: docs/app/layout.jsx function RootLayout (line 52) | async function RootLayout({ children }) { FILE: docs/components/DeploymentCards.jsx function DeploymentCards (line 14) | function DeploymentCards({ items }) { FILE: docs/components/ToolCards.jsx function ToolCards (line 16) | function ToolCards({ items }) { FILE: docs/mdx-components.jsx function useMDXComponents (line 3) | function useMDXComponents(components) { FILE: extensions/chatwoot/app.py function send_to_bot (line 18) | def send_to_bot(sender, message): function send_to_chatwoot (line 34) | def send_to_chatwoot(account, conversation, message): function docsgpt (line 52) | def docsgpt(): FILE: extensions/chrome/js/jquery/jquery.js function isArraylike (line 848) | function isArraylike( obj ) { function isNative (line 1043) | function isNative( fn ) { function createCache (line 1053) | function createCache() { function markFunction (line 1071) | function markFunction( fn ) { function assert (line 1080) | function assert( fn ) { function Sizzle (line 1096) | function Sizzle( selector, context, results, seed ) { function siblingCheck (line 1647) | function siblingCheck( a, b ) { function boolHandler (line 1669) | function boolHandler( elem, name, isXML ) { function interpolationHandler (line 1680) | function interpolationHandler( elem, name, isXML ) { function createInputPseudo (line 1688) | function createInputPseudo( type ) { function createButtonPseudo (line 1696) | function createButtonPseudo( type ) { function createPositionalPseudo (line 1704) | function createPositionalPseudo( fn ) { function tokenize (line 2231) | function tokenize( selector, parseOnly ) { function toSelector (line 2298) | function toSelector( tokens ) { function addCombinator (line 2308) | function addCombinator( matcher, combinator, base ) { function elementMatcher (line 2358) | function elementMatcher( matchers ) { function condense (line 2372) | function condense( unmatched, map, filter, context, xml ) { function setMatcher (line 2393) | function setMatcher( preFilter, selector, matcher, postFilter, postFinde... function matcherFromTokens (line 2486) | function matcherFromTokens( tokens ) { function matcherFromGroupMatchers (line 2538) | function matcherFromGroupMatchers( elementMatchers, setMatchers ) { function multipleContexts (line 2666) | function multipleContexts( selector, contexts, results ) { function select (line 2675) | function select( selector, context, results, seed ) { function setFilters (line 2744) | function setFilters() {} function createOptions (line 2800) | function createOptions( options ) { function Data (line 3262) | function Data() { function dataAttr (line 3570) | function dataAttr( elem, key, data ) { function returnTrue (line 4247) | function returnTrue() { function returnFalse (line 4251) | function returnFalse() { function safeActiveElement (line 4255) | function safeActiveElement() { function sibling (line 5201) | function sibling( cur, dir ) { function winnow (line 5319) | function winnow( elements, qualifier, not ) { function manipulationTarget (line 5823) | function manipulationTarget( elem, content ) { function disableScript (line 5833) | function disableScript( elem ) { function restoreScript (line 5837) | function restoreScript( elem ) { function setGlobalEval (line 5850) | function setGlobalEval( elems, refElements ) { function cloneCopyEvent (line 5861) | function cloneCopyEvent( src, dest ) { function getAll (line 5898) | function getAll( context, tag ) { function fixInput (line 5909) | function fixInput( src, dest ) { function vendorPropName (line 6010) | function vendorPropName( style, name ) { function isHidden (line 6032) | function isHidden( elem, el ) { function getStyles (line 6041) | function getStyles( elem ) { function showHide (line 6045) | function showHide( elements, show ) { function setPositiveNumber (line 6313) | function setPositiveNumber( elem, value, subtract ) { function augmentWidthOrHeight (line 6321) | function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) { function getWidthOrHeight (line 6360) | function getWidthOrHeight( elem, name, extra ) { function css_defaultDisplay (line 6404) | function css_defaultDisplay( nodeName ) { function actualDisplay (line 6436) | function actualDisplay( name, doc ) { function buildParams (line 6622) | function buildParams( prefix, obj, traditional, add ) { function addToPrefiltersOrTransports (line 6738) | function addToPrefiltersOrTransports( structure ) { function inspectPrefiltersOrTransports (line 6770) | function inspectPrefiltersOrTransports( structure, options, originalOpti... function ajaxExtend (line 6797) | function ajaxExtend( target, src ) { function done (line 7243) | function done( status, nativeStatusText, responses, headers ) { function ajaxHandleResponses (line 7390) | function ajaxHandleResponses( s, jqXHR, responses ) { function ajaxConvert (line 7446) | function ajaxConvert( s, response, jqXHR, isSuccess ) { function createFxNow (line 7834) | function createFxNow() { function createTweens (line 7841) | function createTweens( animation, props ) { function Animation (line 7856) | function Animation( elem, properties, options ) { function propFilter (line 7960) | function propFilter( props, specialEasing ) { function defaultPrefilter (line 8027) | function defaultPrefilter( elem, props, opts ) { function Tween (line 8151) | function Tween( elem, options, prop, end, easing ) { function genFx (line 8377) | function genFx( type, includeWidth ) { function getWindow (line 8675) | function getWindow( elem ) { FILE: extensions/discord/bot.py function chunk_string (line 30) | def chunk_string(text, max_length=2000): function escape_markdown (line 51) | def escape_markdown(text): function split_string (line 56) | def split_string(input_str): function on_ready (line 66) | async def on_ready(): function generate_answer (line 69) | async def generate_answer(question, messages, conversation_id): function start (line 92) | async def start(ctx): function custom_help_command (line 97) | async def custom_help_command(ctx): function on_message (line 108) | async def on_message(message): FILE: extensions/react-widget/src/components/DocsGPTWidget.tsx function handleFeedback (line 774) | async function handleFeedback(feedback: FEEDBACK, index: number) { function stream (line 831) | async function stream(question: string) { FILE: extensions/react-widget/src/requests/searchAPI.ts function getSearchResults (line 3) | async function getSearchResults(question: string, apiKey: string, apiHos... FILE: extensions/react-widget/src/requests/streamingApi.ts type HistoryItem (line 3) | interface HistoryItem { type FetchAnswerStreamingProps (line 8) | interface FetchAnswerStreamingProps { type FeedbackPayload (line 18) | interface FeedbackPayload { function fetchAnswerStreaming (line 27) | function fetchAnswerStreaming({ FILE: extensions/react-widget/src/types/index.ts type MESSAGE_TYPE (line 1) | type MESSAGE_TYPE = 'QUESTION' | 'ANSWER' | 'ERROR'; type Status (line 3) | type Status = 'idle' | 'loading' | 'failed'; type FEEDBACK (line 5) | type FEEDBACK = 'LIKE' | 'DISLIKE'; type THEME (line 7) | type THEME = 'light' | 'dark'; type Query (line 9) | interface Query { type WidgetProps (line 19) | interface WidgetProps { type WidgetCoreProps (line 43) | interface WidgetCoreProps extends WidgetProps { type SearchBarProps (line 50) | interface SearchBarProps { type Result (line 59) | interface Result { FILE: extensions/react-widget/src/utils/helper.ts type ParsedElement (line 28) | interface ParsedElement { FILE: extensions/slack-bot/app.py function encode_conversation_id (line 23) | def encode_conversation_id(conversation_id: str) -> str: function generate_answer (line 38) | async def generate_answer(question: str, messages: list, conversation_id... function message_docs (line 63) | async def message_docs(message, say): function convert_to_slack_markdown (line 84) | def convert_to_slack_markdown(markdown_text: str): function main (line 105) | async def main(): FILE: extensions/web-widget/src/js/script.js constant API_ENDPOINT (line 1) | const API_ENDPOINT = "http://localhost:7091/api/answer"; function sendMessage (line 11) | async function sendMessage(message) { FILE: frontend/src/App.tsx function AuthWrapper (line 21) | function AuthWrapper({ children }: { children: React.ReactNode }) { function MainLayout (line 35) | function MainLayout() { function App (line 56) | function App() { FILE: frontend/src/Hero.tsx function Hero (line 6) | function Hero({ FILE: frontend/src/Navigation.tsx type NavigationProps (line 55) | interface NavigationProps { function Navigation (line 60) | function Navigation({ navOpen, setNavOpen }: NavigationProps) { FILE: frontend/src/PageNotFound.tsx function PageNotFound (line 4) | function PageNotFound() { FILE: frontend/src/agents/AgentCard.tsx type AgentCardProps (line 29) | type AgentCardProps = { function AgentCard (line 36) | function AgentCard({ FILE: frontend/src/agents/AgentLogs.tsx function AgentLogs (line 14) | function AgentLogs() { FILE: frontend/src/agents/AgentPreview.tsx function AgentPreview (line 20) | function AgentPreview() { FILE: frontend/src/agents/AgentsList.tsx constant FILTER_TABS (line 28) | const FILTER_TABS: { id: AgentFilterTab; labelKey: string }[] = [ function AgentsList (line 35) | function AgentsList() { type AgentSectionProps (line 242) | interface AgentSectionProps { function AgentSection (line 259) | function AgentSection({ FILE: frontend/src/agents/FolderCard.tsx type FolderCardProps (line 13) | type FolderCardProps = { function FolderCard (line 22) | function FolderCard({ FILE: frontend/src/agents/NewAgent.tsx function NewAgent (line 37) | function NewAgent({ mode }: { mode: 'new' | 'edit' | 'draft' }) { function AgentPreviewArea (line 1324) | function AgentPreviewArea() { function AddPromptModal (line 1345) | function AddPromptModal({ FILE: frontend/src/agents/SharedAgent.tsx function SharedAgent (line 27) | function SharedAgent() { FILE: frontend/src/agents/SharedAgentCard.tsx function SharedAgentCard (line 4) | function SharedAgentCard({ agent }: { agent: Agent }) { FILE: frontend/src/agents/SharedAgentGate.tsx function SharedAgentGate (line 3) | function SharedAgentGate() { FILE: frontend/src/agents/WorkflowBuilder.tsx type AgentNodeConfig (line 57) | interface AgentNodeConfig { type UserTool (line 72) | interface UserTool { function WorkflowBuilderInner (line 78) | function WorkflowBuilderInner() { function WorkflowBuilder (line 1147) | function WorkflowBuilder() { FILE: frontend/src/agents/agentPreviewSlice.ts constant API_STREAMING (line 25) | const API_STREAMING = import.meta.env.VITE_API_STREAMING === 'true'; function handlePreviewAbort (line 28) | function handlePreviewAbort() { method addQuery (line 193) | addQuery(state, action: PayloadAction) { method resendQuery (line 196) | resendQuery( method updateStreamingQuery (line 214) | updateStreamingQuery( method updateThought (line 237) | updateThought( method updateStreamingSource (line 250) | updateStreamingSource( method updateToolCall (line 264) | updateToolCall(state, action) { method updateQuery (line 283) | updateQuery( method setStatus (line 293) | setStatus(state, action: PayloadAction) { method raiseError (line 296) | raiseError( method extraReducers (line 313) | extraReducers(builder) { type RootState (line 332) | type RootState = ReturnType; FILE: frontend/src/agents/agents.config.ts type AgentSectionId (line 11) | type AgentSectionId = 'template' | 'user' | 'shared'; FILE: frontend/src/agents/components/AgentTypeModal.tsx type AgentTypeModalProps (line 4) | interface AgentTypeModalProps { function AgentTypeModal (line 10) | function AgentTypeModal({ FILE: frontend/src/agents/hooks/useAgentSearch.ts type AgentFilterTab (line 12) | type AgentFilterTab = 'all' | AgentSectionId; type AgentsBySection (line 14) | type AgentsBySection = Record; type UseAgentSearchResult (line 16) | interface UseAgentSearchResult { function useAgentSearch (line 43) | function useAgentSearch(): UseAgentSearchResult { FILE: frontend/src/agents/hooks/useAgentsFetch.ts type UseAgentsFetchResult (line 14) | interface UseAgentsFetchResult { function useAgentsFetch (line 21) | function useAgentsFetch(): UseAgentsFetchResult { FILE: frontend/src/agents/index.tsx function Agents (line 9) | function Agents() { FILE: frontend/src/agents/types/index.ts type ToolSummary (line 1) | type ToolSummary = { type Agent (line 7) | type Agent = { type AgentFolder (line 41) | type AgentFolder = { FILE: frontend/src/agents/types/workflow.ts type NodeType (line 1) | type NodeType = 'start' | 'end' | 'agent' | 'note' | 'state' | 'condition'; type ConditionCase (line 3) | interface ConditionCase { type ConditionNodeConfig (line 9) | interface ConditionNodeConfig { type StateOperationConfig (line 14) | interface StateOperationConfig { type WorkflowEdge (line 19) | interface WorkflowEdge { type WorkflowNode (line 27) | interface WorkflowNode { type WorkflowDefinition (line 36) | interface WorkflowDefinition { type ExecutionStatus (line 45) | type ExecutionStatus = 'pending' | 'running' | 'completed' | 'failed'; type NodeExecutionLog (line 47) | interface NodeExecutionLog { type WorkflowRun (line 58) | interface WorkflowRun { FILE: frontend/src/agents/workflow/WorkflowBuilder.tsx constant PRIMARY_ACTION_SPINNER_DELAY_MS (line 74) | const PRIMARY_ACTION_SPINNER_DELAY_MS = 180; type AgentNodeConfig (line 76) | interface AgentNodeConfig { type UserTool (line 91) | interface UserTool { function validateJsonSchemaConfig (line 97) | function validateJsonSchemaConfig(schema: unknown): string | null { function createEmptyWorkflowAgent (line 111) | function createEmptyWorkflowAgent(): Agent { function canReachEnd (line 127) | function canReachEnd( function parseSimpleCel (line 142) | function parseSimpleCel(expression: string): { function buildSimpleCel (line 190) | function buildSimpleCel( function normalizeConditionCases (line 215) | function normalizeConditionCases(cases: ConditionCase[]): ConditionCase[] { function getNextConditionHandle (line 244) | function getNextConditionHandle(cases: ConditionCase[]): string { function createWorkflowPayload (line 261) | function createWorkflowPayload( function WorkflowBuilderInner (line 298) | function WorkflowBuilderInner() { function WorkflowBuilder (line 2497) | function WorkflowBuilder() { FILE: frontend/src/agents/workflow/WorkflowPreview.tsx type WorkflowData (line 40) | interface WorkflowData { type WorkflowPreviewProps (line 47) | interface WorkflowPreviewProps { constant NODE_ICONS (line 51) | const NODE_ICONS: Record = { constant NODE_COLORS (line 60) | const NODE_COLORS: Record = { function ExecutionDetails (line 69) | function ExecutionDetails({ function WorkflowMiniMap (line 235) | function WorkflowMiniMap({ function WorkflowPreview (line 366) | function WorkflowPreview({ FILE: frontend/src/agents/workflow/components/MobileBlocker.tsx function MobileBlocker (line 3) | function MobileBlocker() { FILE: frontend/src/agents/workflow/components/PromptTextArea.tsx type WorkflowVariable (line 11) | interface WorkflowVariable { constant GLOBAL_CONTEXT_VARIABLES (line 17) | const GLOBAL_CONTEXT_VARIABLES: WorkflowVariable[] = [ function toAgentTemplatePath (line 65) | function toAgentTemplatePath(variableName: string): string { function getUpstreamNodeIds (line 77) | function getUpstreamNodeIds(nodeId: string, edges: Edge[]): Set { function extractUpstreamVariables (line 94) | function extractUpstreamVariables( function groupBySection (line 171) | function groupBySection( function HighlightedOverlay (line 183) | function HighlightedOverlay({ text }: { text: string }) { function VariableListWithSearch (line 202) | function VariableListWithSearch({ type PromptTextAreaProps (line 271) | interface PromptTextAreaProps { function PromptTextArea (line 282) | function PromptTextArea({ FILE: frontend/src/agents/workflow/nodes/BaseNode.tsx type BaseNodeProps (line 4) | interface BaseNodeProps { FILE: frontend/src/agents/workflow/nodes/ConditionNode.tsx type ConditionNodeData (line 7) | type ConditionNodeData = { constant ROW_HEIGHT (line 16) | const ROW_HEIGHT = 18; constant HEADER_HEIGHT (line 17) | const HEADER_HEIGHT = 52; constant PADDING_BOTTOM (line 18) | const PADDING_BOTTOM = 8; function getNodeHeight (line 20) | function getNodeHeight(caseCount: number): number { function getHandleTop (line 26) | function getHandleTop(index: number, total: number): string { FILE: frontend/src/agents/workflow/nodes/SetStateNode.tsx type SetStateNodeData (line 8) | type SetStateNodeData = { FILE: frontend/src/agents/workflow/workflowPreviewSlice.ts type WorkflowExecutionStep (line 7) | interface WorkflowExecutionStep { type WorkflowData (line 20) | interface WorkflowData { type WorkflowQuery (line 27) | interface WorkflowQuery extends Query { type WorkflowPreviewState (line 31) | interface WorkflowPreviewState { function handleWorkflowPreviewAbort (line 47) | function handleWorkflowPreviewAbort() { type ThunkState (line 54) | interface ThunkState { method addQuery (line 209) | addQuery(state, action: PayloadAction) { method resendQuery (line 212) | resendQuery( method updateStreamingQuery (line 223) | updateStreamingQuery( method updateThought (line 246) | updateThought( method updateStreamingSource (line 259) | updateStreamingSource( method updateToolCall (line 273) | updateToolCall(state, action) { method updateQuery (line 294) | updateQuery( method updateExecutionStep (line 304) | updateExecutionStep( method setActiveNodeId (line 368) | setActiveNodeId(state, action: PayloadAction) { method setStatus (line 371) | setStatus(state, action: PayloadAction) { method raiseError (line 374) | raiseError( method extraReducers (line 396) | extraReducers(builder) { type RootStateWithWorkflowPreview (line 417) | interface RootStateWithWorkflowPreview { FILE: frontend/src/components/Accordion.tsx type AccordionProps (line 5) | type AccordionProps = { function Accordion (line 14) | function Accordion({ FILE: frontend/src/components/ActionButtons.tsx type ActionButtonsProps (line 15) | interface ActionButtonsProps { function ActionButtons (line 24) | function ActionButtons({ FILE: frontend/src/components/AgentImage.tsx type AgentImageProps (line 4) | type AgentImageProps = { function AgentImage (line 11) | function AgentImage({ FILE: frontend/src/components/ArtifactSidebar.tsx type TodoItem (line 18) | type TodoItem = { type TodoArtifactData (line 26) | type TodoArtifactData = { type NoteArtifactData (line 33) | type NoteArtifactData = { type ArtifactData (line 39) | type ArtifactData = type ArtifactSidebarProps (line 44) | type ArtifactSidebarProps = { constant ARTIFACT_TITLE_BY_TYPE (line 57) | const ARTIFACT_TITLE_BY_TYPE: Record({ FILE: frontend/src/components/DropdownMenu.tsx type DropdownMenuProps (line 4) | type DropdownMenuProps = { function DropdownMenu (line 18) | function DropdownMenu({ FILE: frontend/src/components/DropdownModel.tsx function DropdownModel (line 17) | function DropdownModel() { FILE: frontend/src/components/FilePicker.tsx type CloudFile (line 26) | interface CloudFile { type CloudFilePickerProps (line 35) | interface CloudFilePickerProps { FILE: frontend/src/components/FileTree.tsx type FileNode (line 29) | interface FileNode { type DirectoryStructure (line 37) | interface DirectoryStructure { type FileTreeProps (line 41) | interface FileTreeProps { type SearchResult (line 47) | interface SearchResult { type QueuedOperation (line 88) | type QueuedOperation = { FILE: frontend/src/components/FileUpload.tsx type FileUploadProps (line 9) | interface FileUploadProps { FILE: frontend/src/components/GoogleDrivePicker.tsx type PickerFile (line 15) | interface PickerFile { type GoogleDrivePickerProps (line 24) | interface GoogleDrivePickerProps { FILE: frontend/src/components/Head.tsx type HeadProps (line 3) | interface HeadProps { function Head (line 16) | function Head({ FILE: frontend/src/components/MessageInput.tsx type RecordingState (line 45) | type RecordingState = 'idle' | 'recording' | 'transcribing' | 'error'; constant LIVE_TRANSCRIPTION_TIMESLICE_MS (line 47) | const LIVE_TRANSCRIPTION_TIMESLICE_MS = 1000; constant LIVE_CAPTURE_SAMPLE_RATE (line 48) | const LIVE_CAPTURE_SAMPLE_RATE = 16000; constant LIVE_CAPTURE_MAX_BUFFER_SECONDS (line 49) | const LIVE_CAPTURE_MAX_BUFFER_SECONDS = 20; constant LIVE_SILENCE_RMS_THRESHOLD (line 50) | const LIVE_SILENCE_RMS_THRESHOLD = 0.015; constant ENABLE_VOICE_INPUT (line 51) | const ENABLE_VOICE_INPUT = import.meta.env.VITE_ENABLE_VOICE_INPUT === '... type AudioContextWindow (line 53) | type AudioContextWindow = Window & type LegacyNavigator (line 58) | type LegacyNavigator = Navigator & { type LiveAudioSnapshot (line 76) | type LiveAudioSnapshot = { type MessageInputProps (line 285) | type MessageInputProps = { function MessageInput (line 293) | function MessageInput({ FILE: frontend/src/components/MultiSelectPopup.tsx type OptionType (line 10) | type OptionType = { type MultiSelectPopupProps (line 17) | type MultiSelectPopupProps = { function MultiSelectPopup (line 33) | function MultiSelectPopup({ FILE: frontend/src/components/Notification.tsx type NotificationProps (line 4) | interface NotificationProps { function Notification (line 20) | function Notification({ FILE: frontend/src/components/SearchableDropdown.tsx type SearchableDropdownOptionBase (line 12) | type SearchableDropdownOptionBase = { type NameIdOption (line 17) | type NameIdOption = { name: string; id: string } & SearchableDropdownOpt... type SearchableDropdownOption (line 19) | type SearchableDropdownOption = type SearchableDropdownSelectedValue (line 25) | type SearchableDropdownSelectedValue = SearchableDropdownOption | null; type SearchableDropdownProps (line 27) | interface SearchableDropdownProps< function SearchableDropdown (line 44) | function SearchableDropdown({ FILE: frontend/src/components/SettingsBar.tsx type HiddenGradientType (line 7) | type HiddenGradientType = 'left' | 'right' | undefined; type SettingsBarProps (line 21) | interface SettingsBarProps { FILE: frontend/src/components/Sidebar.tsx type SidebarProps (line 5) | type SidebarProps = { function Sidebar (line 11) | function Sidebar({ FILE: frontend/src/components/SkeletonLoader.tsx type SkeletonLoaderProps (line 3) | interface SkeletonLoaderProps { FILE: frontend/src/components/SourcesPopup.tsx type SourcesPopupProps (line 17) | type SourcesPopupProps = { function SourcesPopup (line 25) | function SourcesPopup({ FILE: frontend/src/components/Spinner.tsx type SpinnerProps (line 3) | type SpinnerProps = { function Spinner (line 8) | function Spinner({ FILE: frontend/src/components/Table.tsx type TableProps (line 3) | interface TableProps { type TableContainerProps (line 9) | interface TableContainerProps { type TableHeadProps (line 16) | interface TableHeadProps { type TableRowProps (line 21) | interface TableRowProps { type TableCellProps (line 27) | interface TableCellProps { FILE: frontend/src/components/TextToSpeechButton.tsx constant MAX_CACHE_SIZE (line 20) | const MAX_CACHE_SIZE = 10; function getCachedAudio (line 22) | function getCachedAudio(text: string): string | undefined { function setCachedAudio (line 31) | function setCachedAudio(text: string, audioBase64: string) { function SpeakButton (line 45) | function SpeakButton({ text }: { text: string }) { FILE: frontend/src/components/ToggleSwitch.tsx type ToggleSwitchProps (line 3) | type ToggleSwitchProps = { FILE: frontend/src/components/ToolsPopup.tsx type ToolsPopupProps (line 15) | interface ToolsPopupProps { function ToolsPopup (line 21) | function ToolsPopup({ FILE: frontend/src/components/UploadToast.tsx constant PROGRESS_RADIUS (line 10) | const PROGRESS_RADIUS = 10; constant PROGRESS_CIRCUMFERENCE (line 11) | const PROGRESS_CIRCUMFERENCE = 2 * Math.PI * PROGRESS_RADIUS; function UploadToast (line 13) | function UploadToast() { FILE: frontend/src/components/types/Dropdown.types.ts type DropdownOptionBase (line 1) | type DropdownOptionBase = { type StringOption (line 6) | type StringOption = string; type NameIdOption (line 7) | type NameIdOption = { name: string; id: string } & DropdownOptionBase; type LabelValueOption (line 8) | type LabelValueOption = { type ValueDescriptionOption (line 12) | type ValueDescriptionOption = { type DropdownOption (line 17) | type DropdownOption = type DropdownSelectedValue (line 23) | type DropdownSelectedValue = DropdownOption | null; type OnSelectHandler (line 25) | type OnSelectHandler = ( type DropdownProps (line 29) | interface DropdownProps { FILE: frontend/src/components/types/index.ts type InputProps (line 1) | type InputProps = { type MermaidRendererProps (line 29) | type MermaidRendererProps = { FILE: frontend/src/components/ui/button.tsx function Button (line 39) | function Button({ FILE: frontend/src/components/ui/command.tsx function Command (line 14) | function Command({ function CommandDialog (line 30) | function CommandDialog({ function CommandInput (line 61) | function CommandInput({ function CommandList (line 83) | function CommandList({ function CommandEmpty (line 99) | function CommandEmpty({ function CommandGroup (line 111) | function CommandGroup({ function CommandSeparator (line 127) | function CommandSeparator({ function CommandItem (line 140) | function CommandItem({ function CommandShortcut (line 156) | function CommandShortcut({ FILE: frontend/src/components/ui/dialog.tsx function Dialog (line 9) | function Dialog({ function DialogTrigger (line 15) | function DialogTrigger({ function DialogPortal (line 21) | function DialogPortal({ function DialogClose (line 27) | function DialogClose({ function DialogOverlay (line 33) | function DialogOverlay({ function DialogContent (line 49) | function DialogContent({ function DialogHeader (line 83) | function DialogHeader({ className, ...props }: React.ComponentProps<'div... function DialogFooter (line 93) | function DialogFooter({ className, ...props }: React.ComponentProps<'div... function DialogTitle (line 106) | function DialogTitle({ function DialogDescription (line 119) | function DialogDescription({ FILE: frontend/src/components/ui/input.tsx function Input (line 5) | function Input({ className, type, ...props }: React.ComponentProps<'inpu... FILE: frontend/src/components/ui/label.tsx function Label (line 6) | function Label({ FILE: frontend/src/components/ui/multi-select.tsx type MultiSelectOption (line 22) | interface MultiSelectOption { type MultiSelectProps (line 27) | interface MultiSelectProps { function MultiSelect (line 37) | function MultiSelect({ FILE: frontend/src/components/ui/popover.tsx function Popover (line 6) | function Popover({ function PopoverTrigger (line 12) | function PopoverTrigger({ function PopoverContent (line 18) | function PopoverContent({ function PopoverAnchor (line 40) | function PopoverAnchor({ FILE: frontend/src/components/ui/select.tsx function Select (line 7) | function Select({ function SelectGroup (line 13) | function SelectGroup({ function SelectValue (line 19) | function SelectValue({ function SelectTrigger (line 25) | function SelectTrigger({ function SelectContent (line 57) | function SelectContent({ function SelectLabel (line 94) | function SelectLabel({ function SelectItem (line 107) | function SelectItem({ function SelectSeparator (line 134) | function SelectSeparator({ function SelectScrollUpButton (line 147) | function SelectScrollUpButton({ function SelectScrollDownButton (line 165) | function SelectScrollDownButton({ FILE: frontend/src/components/ui/sheet.tsx function Sheet (line 7) | function Sheet({ ...props }: React.ComponentProps = { constant FILE_UPLOAD_ACCEPT (line 10) | const FILE_UPLOAD_ACCEPT: Record = { constant FILE_UPLOAD_ACCEPT_ATTR (line 35) | const FILE_UPLOAD_ACCEPT_ATTR = [ constant AUDIO_FILE_ACCEPT_ATTR (line 58) | const AUDIO_FILE_ACCEPT_ATTR = [ constant SOURCE_FILE_TREE_ACCEPT_ATTR (line 66) | const SOURCE_FILE_TREE_ACCEPT_ATTR = [ FILE: frontend/src/conversation/Conversation.tsx function Conversation (line 29) | function Conversation() { FILE: frontend/src/conversation/ConversationBubble.tsx method code (line 477) | code(props) { method ul (line 525) | ul({ children }) { method ol (line 534) | ol({ children }) { method table (line 543) | table({ children }) { method thead (line 552) | thead({ children }) { method tr (line 559) | tr({ children }) { method th (line 566) | th({ children }) { method td (line 571) | td({ children }) { type AllSourcesProps (line 724) | type AllSourcesProps = { function AllSources (line 728) | function AllSources(sources: AllSourcesProps) { function ToolCalls (line 789) | function ToolCalls({ toolCalls }: { toolCalls: ToolCallsType[] }) { function Thought (line 895) | function Thought({ FILE: frontend/src/conversation/ConversationMessages.tsx constant SCROLL_THRESHOLD (line 19) | const SCROLL_THRESHOLD = 10; constant LAST_BUBBLE_MARGIN (line 20) | const LAST_BUBBLE_MARGIN = 'mb-32'; constant DEFAULT_BUBBLE_MARGIN (line 21) | const DEFAULT_BUBBLE_MARGIN = 'mb-7'; constant FIRST_QUESTION_BUBBLE_MARGIN_TOP (line 22) | const FIRST_QUESTION_BUBBLE_MARGIN_TOP = 'mt-5'; type ConversationMessagesProps (line 24) | type ConversationMessagesProps = { function ConversationMessages (line 44) | function ConversationMessages({ FILE: frontend/src/conversation/ConversationTile.tsx type ConversationProps (line 25) | interface ConversationProps { type ConversationTileProps (line 29) | interface ConversationTileProps { function ConversationTile (line 37) | function ConversationTile({ FILE: frontend/src/conversation/conversationHandlers.ts function handleFetchAnswer (line 6) | function handleFetchAnswer( function handleFetchAnswerSteaming (line 93) | function handleFetchAnswerSteaming( function handleSearch (line 191) | function handleSearch( function handleSearchViaApiKey (line 224) | function handleSearchViaApiKey( function handleSendFeedback (line 252) | function handleSendFeedback( function handleFetchSharedAnswerStreaming (line 280) | function handleFetchSharedAnswerStreaming( function handleFetchSharedAnswer (line 354) | function handleFetchSharedAnswer( FILE: frontend/src/conversation/conversationModels.ts type MESSAGE_TYPE (line 3) | type MESSAGE_TYPE = 'QUESTION' | 'ANSWER' | 'ERROR'; type Status (line 4) | type Status = 'idle' | 'loading' | 'failed'; type FEEDBACK (line 5) | type FEEDBACK = 'LIKE' | 'DISLIKE' | null; type Message (line 7) | interface Message { type Attachment (line 12) | interface Attachment { type ConversationState (line 21) | interface ConversationState { type Answer (line 27) | interface Answer { type Query (line 40) | interface Query { type RetrievalPayload (line 55) | interface RetrievalPayload { FILE: frontend/src/conversation/conversationSlice.ts constant API_STREAMING (line 23) | const API_STREAMING = import.meta.env.VITE_API_STREAMING === 'true'; function handleAbort (line 26) | function handleAbort() { method addQuery (line 236) | addQuery(state, action: PayloadAction) { method setConversation (line 239) | setConversation(state, action: PayloadAction) { method resendQuery (line 242) | resendQuery( method updateStreamingQuery (line 260) | updateStreamingQuery( method updateConversationId (line 286) | updateConversationId( method updateThought (line 293) | updateThought( method updateStreamingSource (line 309) | updateStreamingSource( method updateToolCall (line 321) | updateToolCall(state, action) { method updateQuery (line 340) | updateQuery( method setStatus (line 350) | setStatus(state, action: PayloadAction) { method raiseError (line 353) | raiseError( method extraReducers (line 374) | extraReducers(builder) { type RootState (line 393) | type RootState = ReturnType; FILE: frontend/src/conversation/sharedConversationSlice.ts constant API_STREAMING (line 15) | const API_STREAMING = import.meta.env.VITE_API_STREAMING === 'true'; type SharedConversationsType (line 16) | interface SharedConversationsType { method setStatus (line 149) | setStatus(state, action: PayloadAction) { method setIdentifier (line 152) | setIdentifier(state, action: PayloadAction) { method setFetchedData (line 155) | setFetchedData( method setClientApiKey (line 174) | setClientApiKey(state, action: PayloadAction) { method addQuery (line 177) | addQuery(state, action: PayloadAction) { method updateStreamingQuery (line 180) | updateStreamingQuery( method updateToolCalls (line 190) | updateToolCalls( method updateQuery (line 199) | updateQuery( method updateThought (line 209) | updateThought( method updateStreamingSource (line 224) | updateStreamingSource( method raiseError (line 238) | raiseError( method saveToLocalStorage (line 245) | saveToLocalStorage(state) { method extraReducers (line 261) | extraReducers(builder) { type RootState (line 303) | type RootState = ReturnType; FILE: frontend/src/conversation/types/index.ts type ToolCallsType (line 1) | type ToolCallsType = { FILE: frontend/src/hooks/index.ts function useOutsideAlerter (line 3) | function useOutsideAlerter( function useMediaQuery (line 36) | function useMediaQuery() { function useDarkTheme (line 68) | function useDarkTheme() { function useLoaderState (line 116) | function useLoaderState( FILE: frontend/src/hooks/useDataInitializer.ts function useDataInitializer (line 31) | function useDataInitializer(isAuthLoading: boolean) { FILE: frontend/src/hooks/useTokenAuth.ts function useAuth (line 7) | function useAuth() { FILE: frontend/src/lib/utils.ts function cn (line 4) | function cn(...inputs: ClassValue[]) { FILE: frontend/src/main.tsx function rebuildSbStyles (line 15) | function rebuildSbStyles() { function showOverlayScrollbar (line 18) | function showOverlayScrollbar(el: HTMLElement) { FILE: frontend/src/modals/AddActionModal.tsx type AddActionModalProps (line 8) | type AddActionModalProps = { function AddActionModal (line 19) | function AddActionModal({ FILE: frontend/src/modals/AddToolModal.tsx function AddToolModal (line 15) | function AddToolModal({ FILE: frontend/src/modals/AgentDetailsModal.tsx type AgentDetailsModalProps (line 15) | type AgentDetailsModalProps = { function AgentDetailsModal (line 22) | function AgentDetailsModal({ FILE: frontend/src/modals/ConfigToolModal.tsx type ConfigToolModalProps (line 14) | interface ConfigToolModalProps { function ConfigToolModal (line 21) | function ConfigToolModal({ FILE: frontend/src/modals/ConfirmationModal.tsx function ConfirmationModal (line 6) | function ConfirmationModal({ FILE: frontend/src/modals/DeleteConvModal.tsx function DeleteConvModal (line 9) | function DeleteConvModal({ FILE: frontend/src/modals/FolderManagementModal.tsx type FolderNameModalProps (line 7) | type FolderNameModalProps = { function FolderNameModal (line 15) | function FolderNameModal({ FILE: frontend/src/modals/ImportSpecModal.tsx type ImportSpecModalProps (line 13) | interface ImportSpecModalProps { type ParsedResult (line 19) | interface ParsedResult { constant METHOD_COLORS (line 29) | const METHOD_COLORS: Record = { function ImportSpecModal (line 41) | function ImportSpecModal({ FILE: frontend/src/modals/JWTModal.tsx type JWTModalProps (line 7) | type JWTModalProps = { function JWTModal (line 12) | function JWTModal({ FILE: frontend/src/modals/MCPServerModal.tsx type MCPServerModalProps (line 21) | interface MCPServerModalProps { function MCPServerModal (line 28) | function MCPServerModal({ FILE: frontend/src/modals/MoveToFolderModal.tsx type MoveToFolderModalProps (line 13) | type MoveToFolderModalProps = { function MoveToFolderModal (line 22) | function MoveToFolderModal({ FILE: frontend/src/modals/ShareConversationModal.tsx type StatusType (line 19) | type StatusType = 'loading' | 'idle' | 'fetched' | 'failed'; FILE: frontend/src/modals/WrapperModal.tsx type WrapperModalPropsType (line 6) | type WrapperModalPropsType = { function WrapperModal (line 14) | function WrapperModal({ FILE: frontend/src/modals/types/index.ts type ConfigFieldSpec (line 1) | type ConfigFieldSpec = { type ConfigRequirements (line 13) | type ConfigRequirements = { type AvailableToolType (line 17) | type AvailableToolType = { type WrapperModalPropsType (line 29) | type WrapperModalPropsType = { FILE: frontend/src/models/misc.ts type ActiveState (line 1) | type ActiveState = 'ACTIVE' | 'INACTIVE'; type User (line 3) | type User = { type Doc (line 6) | type Doc = { type GetDocsResponse (line 19) | type GetDocsResponse = { type Prompt (line 26) | type Prompt = { type PromptProps (line 32) | type PromptProps = { type DocumentsProps (line 39) | type DocumentsProps = { FILE: frontend/src/models/types.ts type AvailableModel (line 1) | interface AvailableModel { type Model (line 14) | interface Model { FILE: frontend/src/preferences/PromptsModal.tsx type PromptTextareaProps (line 93) | type PromptTextareaProps = { function PromptTextarea (line 100) | function PromptTextarea({ function AddPrompt (line 213) | function AddPrompt({ function EditPrompt (line 420) | function EditPrompt({ function PromptsModal (line 641) | function PromptsModal({ FILE: frontend/src/preferences/preferenceApi.ts function getDocs (line 7) | async function getDocs(token: string | null): Promise { function getDocsWithPagination (line 24) | async function getDocsWithPagination( function getConversations (line 53) | async function getConversations( function getLocalApiKey (line 88) | function getLocalApiKey(): string | null { function parseStoredRecentDocs (line 93) | function parseStoredRecentDocs(docsString: string | null): Doc[] | null { function getStoredRecentDocs (line 118) | function getStoredRecentDocs(): Doc[] { function getLocalRecentDocs (line 131) | function getLocalRecentDocs(sourceDocs?: Doc[] | null): Doc[] | null { function getLocalPrompt (line 153) | function getLocalPrompt( function setLocalApiKey (line 181) | function setLocalApiKey(key: string): void { function setLocalPrompt (line 185) | function setLocalPrompt(prompt: Prompt): void { function setLocalRecentDocs (line 189) | function setLocalRecentDocs(docs: Doc[] | null): void { function getPrompts (line 197) | async function getPrompts(token: string | null): Promise { FILE: frontend/src/preferences/preferenceSlice.ts type Preference (line 19) | interface Preference { FILE: frontend/src/preferences/types/index.ts type ConversationSummary (line 1) | type ConversationSummary = { type GetConversationsResult (line 7) | type GetConversationsResult = { FILE: frontend/src/settings/Analytics.tsx type AnalyticsProps (line 33) | type AnalyticsProps = { function Analytics (line 37) | function Analytics({ agentId }: AnalyticsProps) { type AnalyticsChartProps (line 338) | type AnalyticsChartProps = { function AnalyticsChart (line 345) | function AnalyticsChart({ FILE: frontend/src/settings/General.tsx function General (line 18) | function General() { FILE: frontend/src/settings/Logs.tsx type LogsProps (line 13) | type LogsProps = { function Logs (line 18) | function Logs({ agentId, tableHeader }: LogsProps) { type LogsTableProps (line 72) | type LogsTableProps = { function LogsTable (line 78) | function LogsTable({ logs, setPage, loading, tableHeader }: LogsTablePro... function Log (line 149) | function Log({ FILE: frontend/src/settings/Prompts.tsx type ExtendedPromptProps (line 13) | type ExtendedPromptProps = PromptProps & { function Prompts (line 20) | function Prompts({ FILE: frontend/src/settings/Sources.tsx function Sources (line 50) | function Sources({ FILE: frontend/src/settings/ToolConfig.tsx constant METHOD_COLORS (line 27) | const METHOD_COLORS: Record = { function ToolConfig (line 39) | function ToolConfig({ function APIToolConfig (line 748) | function APIToolConfig({ function APIActionTable (line 1149) | function APIActionTable({ FILE: frontend/src/settings/Tools.tsx function Tools (line 24) | function Tools() { FILE: frontend/src/settings/index.tsx function Settings (line 29) | function Settings() { FILE: frontend/src/settings/types/index.ts type ChunkType (line 3) | type ChunkType = { type APIKeyData (line 9) | type APIKeyData = { type LogData (line 18) | type LogData = { type ParameterGroupType (line 30) | type ParameterGroupType = { type UserToolType (line 43) | type UserToolType = { type APIActionType (line 75) | type APIActionType = { type APIToolType (line 99) | type APIToolType = { FILE: frontend/src/store.ts type RootState (line 75) | type RootState = ReturnType; type AppDispatch (line 76) | type AppDispatch = typeof store.dispatch; FILE: frontend/src/upload/Upload.tsx function Upload (line 39) | function Upload({ FILE: frontend/src/upload/types/ingestor.ts type IngestorType (line 10) | type IngestorType = type IngestorConfig (line 20) | interface IngestorConfig { type IngestorFormData (line 26) | type IngestorFormData = { type FieldType (line 33) | type FieldType = type FormField (line 43) | interface FormField { type IngestorSchema (line 52) | interface IngestorSchema { type IngestorOption (line 266) | interface IngestorOption { FILE: frontend/src/upload/uploadSlice.ts type Attachment (line 4) | interface Attachment { type UploadTaskStatus (line 13) | type UploadTaskStatus = type UploadTask (line 20) | interface UploadTask { type UploadState (line 30) | interface UploadState { FILE: frontend/src/utils/browserUtils.ts function getOS (line 1) | function getOS() { function isTouchDevice (line 8) | function isTouchDevice() { FILE: frontend/src/utils/chartUtils.ts method afterUpdate (line 25) | afterUpdate(chart: ChartJS, args: any, options: { containerID: string }) { FILE: frontend/src/utils/dateTimeUtils.ts function formatDate (line 1) | function formatDate(dateString: string): string { FILE: frontend/src/utils/objectUtils.ts function areObjectsEqual (line 7) | function areObjectsEqual(obj1: any, obj2: any): boolean { FILE: frontend/src/utils/stringUtils.ts function truncate (line 1) | function truncate(str: string, n: number) { function formatBytes (line 6) | function formatBytes(bytes: number | null): string { FILE: md-gen.py function create_markdown_from_directory (line 3) | def create_markdown_from_directory(directory=".", output_file="combined.... FILE: scripts/migrate_conversation_id_dbref_to_objectid.py function backup_collection (line 20) | def backup_collection(collection, backup_collection_name): function migrate_conversation_id_dbref_to_objectid (line 26) | def migrate_conversation_id_dbref_to_objectid(): FILE: scripts/migrate_to_v1_vectorstore.py function backup_collection (line 16) | def backup_collection(collection, backup_collection_name): function migrate_to_v1_vectorstore_mongo (line 21) | def migrate_to_v1_vectorstore_mongo(): function migrate_faiss_to_v1_vectorstore (line 48) | def migrate_faiss_to_v1_vectorstore(): function migrate_mongo_atlas_vector_to_v1_vectorstore (line 66) | def migrate_mongo_atlas_vector_to_v1_vectorstore(): FILE: tests/agents/test_agent_creator.py class TestAgentCreator (line 8) | class TestAgentCreator: method test_create_classic_agent (line 10) | def test_create_classic_agent(self, agent_base_params): method test_create_react_agent (line 17) | def test_create_react_agent(self, agent_base_params): method test_create_agent_case_insensitive (line 23) | def test_create_agent_case_insensitive(self, agent_base_params): method test_create_agent_invalid_type (line 30) | def test_create_agent_invalid_type(self, agent_base_params): method test_agent_registry_contains_expected_agents (line 34) | def test_agent_registry_contains_expected_agents(self): method test_create_agent_with_optional_params (line 40) | def test_create_agent_with_optional_params(self, agent_base_params): method test_create_agent_with_attachments (line 51) | def test_create_agent_with_attachments(self, agent_base_params): FILE: tests/agents/test_base_agent.py class TestBaseAgentInitialization (line 9) | class TestBaseAgentInitialization: method test_agent_initialization (line 11) | def test_agent_initialization( method test_agent_initialization_with_none_chat_history (line 25) | def test_agent_initialization_with_none_chat_history( method test_agent_initialization_with_chat_history (line 32) | def test_agent_initialization_with_chat_history( method test_agent_decoded_token_defaults_to_empty_dict (line 44) | def test_agent_decoded_token_defaults_to_empty_dict( method test_agent_user_extracted_from_token (line 52) | def test_agent_user_extracted_from_token( class TestBaseAgentBuildMessages (line 61) | class TestBaseAgentBuildMessages: method test_build_messages_basic (line 63) | def test_build_messages_basic( method test_build_messages_with_chat_history (line 78) | def test_build_messages_with_chat_history( method test_build_messages_with_tool_calls_in_history (line 99) | def test_build_messages_with_tool_calls_in_history( method test_build_messages_handles_missing_filename (line 122) | def test_build_messages_handles_missing_filename( method test_build_messages_uses_title_as_fallback (line 132) | def test_build_messages_uses_title_as_fallback( method test_build_messages_uses_source_as_fallback (line 139) | def test_build_messages_uses_source_as_fallback( class TestBaseAgentTools (line 148) | class TestBaseAgentTools: method test_get_user_tools (line 150) | def test_get_user_tools( method test_get_user_tools_filters_by_status (line 172) | def test_get_user_tools_filters_by_status( method test_get_tools_by_api_key (line 192) | def test_get_tools_by_api_key( method test_build_tool_parameters (line 220) | def test_build_tool_parameters( method test_prepare_tools_with_api_tool (line 250) | def test_prepare_tools_with_api_tool( method test_prepare_tools_with_regular_tool (line 279) | def test_prepare_tools_with_regular_tool( method test_prepare_tools_filters_inactive_actions (line 303) | def test_prepare_tools_filters_inactive_actions( class TestBaseAgentToolExecution (line 335) | class TestBaseAgentToolExecution: method test_execute_tool_action_success (line 337) | def test_execute_tool_action_success( method test_execute_tool_action_invalid_tool_name (line 372) | def test_execute_tool_action_invalid_tool_name( method test_execute_tool_action_tool_not_found (line 393) | def test_execute_tool_action_tool_not_found( method test_execute_tool_action_with_parameters (line 411) | def test_execute_tool_action_with_parameters( method test_get_truncated_tool_calls (line 449) | def test_get_truncated_tool_calls( class TestBaseAgentLLMGeneration (line 472) | class TestBaseAgentLLMGeneration: method test_llm_gen_basic (line 474) | def test_llm_gen_basic( method test_llm_gen_with_tools (line 492) | def test_llm_gen_with_tools( method test_llm_gen_with_json_schema (line 510) | def test_llm_gen_with_json_schema( class TestBaseAgentHandleResponse (line 535) | class TestBaseAgentHandleResponse: method test_handle_response_string (line 537) | def test_handle_response_string( method test_handle_response_with_message (line 548) | def test_handle_response_with_message( method test_handle_response_with_structured_output (line 562) | def test_handle_response_with_structured_output( method test_handle_response_with_handler (line 581) | def test_handle_response_with_handler( FILE: tests/agents/test_classic_agent.py class TestClassicAgent (line 8) | class TestClassicAgent: method test_classic_agent_initialization (line 10) | def test_classic_agent_initialization( method test_gen_inner_basic_flow (line 19) | def test_gen_inner_basic_flow( method test_gen_inner_retrieves_documents (line 51) | def test_gen_inner_retrieves_documents( method test_gen_inner_uses_user_api_key_tools (line 71) | def test_gen_inner_uses_user_api_key_tools( method test_gen_inner_uses_user_tools (line 106) | def test_gen_inner_uses_user_tools( method test_gen_inner_builds_correct_messages (line 134) | def test_gen_inner_builds_correct_messages( method test_gen_inner_logs_tool_calls (line 162) | def test_gen_inner_logs_tool_calls( class TestClassicAgentIntegration (line 190) | class TestClassicAgentIntegration: method test_gen_method_with_logging (line 192) | def test_gen_method_with_logging( method test_gen_method_decorator_applied (line 214) | def test_gen_method_decorator_applied( FILE: tests/agents/test_get_artifact.py class TestGetArtifact (line 9) | class TestGetArtifact: method test_note_artifact_success (line 10) | def test_note_artifact_success(self, mock_mongo_db, flask_app, decoded... method test_todo_artifact_success (line 37) | def test_todo_artifact_success(self, mock_mongo_db, flask_app, decoded... method test_todo_artifact_all_param (line 85) | def test_todo_artifact_all_param(self, mock_mongo_db, flask_app, decod... method test_invalid_artifact_id_returns_400 (line 146) | def test_invalid_artifact_id_returns_400(self, mock_mongo_db, flask_ap... method test_artifact_not_found_returns_404 (line 158) | def test_artifact_not_found_returns_404(self, mock_mongo_db, flask_app... method test_other_user_artifact_returns_404 (line 172) | def test_other_user_artifact_returns_404(self, mock_mongo_db, flask_ap... FILE: tests/agents/test_react_agent.py class TestReActAgent (line 8) | class TestReActAgent: method test_react_agent_initialization (line 10) | def test_react_agent_initialization( method test_react_agent_inherits_base_properties (line 19) | def test_react_agent_inherits_base_properties( class TestReActAgentContentExtraction (line 30) | class TestReActAgentContentExtraction: method test_extract_content_from_string (line 32) | def test_extract_content_from_string( method test_extract_content_from_message_object (line 42) | def test_extract_content_from_message_object( method test_extract_content_from_openai_response (line 55) | def test_extract_content_from_openai_response( method test_extract_content_from_anthropic_response (line 71) | def test_extract_content_from_anthropic_response( method test_extract_content_from_openai_stream (line 88) | def test_extract_content_from_openai_stream( method test_extract_content_from_anthropic_stream (line 108) | def test_extract_content_from_anthropic_stream( method test_extract_content_from_string_stream (line 130) | def test_extract_content_from_string_stream( method test_extract_content_handles_none_content (line 140) | def test_extract_content_handles_none_content( class TestReActAgentPlanning (line 157) | class TestReActAgentPlanning: method test_planning_phase (line 164) | def test_planning_phase( method test_planning_phase_fills_template (line 194) | def test_planning_phase_fills_template( class TestReActAgentFinalAnswer (line 215) | class TestReActAgentFinalAnswer: method test_synthesis_phase (line 222) | def test_synthesis_phase( method test_synthesis_phase_truncates_long_observations (line 247) | def test_synthesis_phase_truncates_long_observations( method test_synthesis_phase_no_tools (line 269) | def test_synthesis_phase_no_tools( class TestReActAgentGenInner (line 290) | class TestReActAgentGenInner: method test_gen_inner_resets_state (line 295) | def test_gen_inner_resets_state( method test_gen_inner_stops_on_satisfied (line 323) | def test_gen_inner_stops_on_satisfied( method test_gen_inner_max_iterations (line 359) | def test_gen_inner_max_iterations( method test_gen_inner_yields_sources (line 394) | def test_gen_inner_yields_sources( method test_gen_inner_yields_tool_calls (line 419) | def test_gen_inner_yields_tool_calls( method test_gen_inner_logs_observations (line 447) | def test_gen_inner_logs_observations( class TestReActAgentIntegration (line 472) | class TestReActAgentIntegration: method test_full_react_workflow (line 479) | def test_full_react_workflow( FILE: tests/agents/test_tool_action_parser.py class TestToolActionParser (line 8) | class TestToolActionParser: method test_parser_initialization (line 10) | def test_parser_initialization(self): method test_parse_openai_llm_valid_call (line 16) | def test_parse_openai_llm_valid_call(self): method test_parse_openai_llm_with_underscore_in_action (line 29) | def test_parse_openai_llm_with_underscore_in_action(self): method test_parse_openai_llm_invalid_format_no_underscore (line 42) | def test_parse_openai_llm_invalid_format_no_underscore(self): method test_parse_openai_llm_non_numeric_tool_id (line 55) | def test_parse_openai_llm_non_numeric_tool_id(self): method test_parse_openai_llm_malformed_json (line 67) | def test_parse_openai_llm_malformed_json(self): method test_parse_openai_llm_missing_attributes (line 80) | def test_parse_openai_llm_missing_attributes(self): method test_parse_google_llm_valid_call (line 91) | def test_parse_google_llm_valid_call(self): method test_parse_google_llm_with_complex_action_name (line 104) | def test_parse_google_llm_with_complex_action_name(self): method test_parse_google_llm_invalid_format (line 116) | def test_parse_google_llm_invalid_format(self): method test_parse_google_llm_missing_attributes (line 129) | def test_parse_google_llm_missing_attributes(self): method test_parse_unknown_llm_type_defaults_to_openai (line 140) | def test_parse_unknown_llm_type_defaults_to_openai(self): method test_parse_args_empty_arguments_openai (line 153) | def test_parse_args_empty_arguments_openai(self): method test_parse_args_empty_arguments_google (line 166) | def test_parse_args_empty_arguments_google(self): method test_parse_args_with_special_characters (line 179) | def test_parse_args_with_special_characters(self): method test_parse_args_with_nested_objects (line 192) | def test_parse_args_with_nested_objects(self): FILE: tests/agents/test_tool_manager.py class MockTool (line 8) | class MockTool(Tool): method __init__ (line 9) | def __init__(self, config): method execute_action (line 12) | def execute_action(self, action_name: str, **kwargs): method get_actions_metadata (line 15) | def get_actions_metadata(self): method get_config_requirements (line 18) | def get_config_requirements(self): class TestToolManager (line 23) | class TestToolManager: method test_tool_manager_initialization (line 26) | def test_tool_manager_initialization(self, mock_iter): method test_load_tools_skips_base_and_private (line 37) | def test_load_tools_skips_base_and_private(self, mock_import, mock_iter): method test_load_tools_creates_tool_instances (line 55) | def test_load_tools_creates_tool_instances(self, mock_iter): method test_load_tool_with_user_id (line 67) | def test_load_tool_with_user_id(self): method test_load_tool_without_user_id (line 79) | def test_load_tool_without_user_id(self): method test_load_tool_updates_config (line 89) | def test_load_tool_updates_config(self, mock_iter): method test_execute_action_on_loaded_tool (line 102) | def test_execute_action_on_loaded_tool(self, mock_import, mock_iter): method test_execute_action_tool_not_loaded (line 119) | def test_execute_action_tool_not_loaded(self): method test_execute_action_with_user_id_for_mcp_tool (line 129) | def test_execute_action_with_user_id_for_mcp_tool(self, mock_import): method test_execute_action_with_user_id_for_memory_tool (line 145) | def test_execute_action_with_user_id_for_memory_tool(self, mock_import): method test_get_all_actions_metadata (line 162) | def test_get_all_actions_metadata(self, mock_import, mock_iter): method test_get_all_actions_metadata_empty (line 181) | def test_get_all_actions_metadata_empty(self, mock_iter): method test_load_tool_with_notes_tool (line 191) | def test_load_tool_with_notes_tool(self): class TestToolBase (line 202) | class TestToolBase: method test_tool_base_is_abstract (line 204) | def test_tool_base_is_abstract(self): method test_mock_tool_implements_interface (line 208) | def test_mock_tool_implements_interface(self): method test_mock_tool_execute_action (line 215) | def test_mock_tool_execute_action(self): method test_mock_tool_get_actions_metadata (line 222) | def test_mock_tool_get_actions_metadata(self): method test_mock_tool_get_config_requirements (line 230) | def test_mock_tool_get_config_requirements(self): FILE: tests/agents/test_workflow_engine.py class StubNodeAgent (line 18) | class StubNodeAgent: method __init__ (line 19) | def __init__(self, events): method gen (line 22) | def gen(self, _prompt): function create_engine (line 26) | def create_engine() -> WorkflowEngine: function create_agent_node (line 39) | def create_agent_node( function test_execute_agent_node_saves_structured_output_as_json (line 66) | def test_execute_agent_node_saves_structured_output_as_json(monkeypatch): function test_execute_agent_node_normalizes_wrapped_schema_before_agent_create (line 95) | def test_execute_agent_node_normalizes_wrapped_schema_before_agent_creat... function test_execute_agent_node_falls_back_to_text_when_schema_not_configured (line 128) | def test_execute_agent_node_falls_back_to_text_when_schema_not_configure... function test_validate_workflow_structure_rejects_invalid_agent_json_schema (line 149) | def test_validate_workflow_structure_rejects_invalid_agent_json_schema(): function test_validate_workflow_structure_accepts_valid_agent_json_schema (line 173) | def test_validate_workflow_structure_accepts_valid_agent_json_schema(): function test_validate_workflow_structure_accepts_wrapped_agent_json_schema (line 194) | def test_validate_workflow_structure_accepts_wrapped_agent_json_schema(): function test_validate_workflow_structure_accepts_output_variable_and_schema_together (line 215) | def test_validate_workflow_structure_accepts_output_variable_and_schema_... function test_validate_workflow_structure_rejects_unsupported_structured_output_model (line 239) | def test_validate_workflow_structure_rejects_unsupported_structured_outp... function test_execute_agent_node_raises_when_structured_output_violates_schema (line 275) | def test_execute_agent_node_raises_when_structured_output_violates_schem... function test_execute_agent_node_raises_when_schema_set_and_response_not_json (line 306) | def test_execute_agent_node_raises_when_schema_set_and_response_not_json... FILE: tests/agents/test_workflow_template.py function create_engine (line 7) | def create_engine() -> WorkflowEngine: function test_workflow_template_supports_agent_namespace_and_legacy_variables (line 20) | def test_workflow_template_supports_agent_namespace_and_legacy_variables(): function test_workflow_template_supports_global_namespaces (line 31) | def test_workflow_template_supports_global_namespaces(): function test_workflow_template_handles_namespace_conflicts_with_agent_prefix (line 45) | def test_workflow_template_handles_namespace_conflicts_with_agent_prefix(): function test_workflow_template_gracefully_handles_invalid_template_syntax (line 56) | def test_workflow_template_gracefully_handles_invalid_template_syntax(): FILE: tests/api/answer/routes/test_base.py class TestBaseAnswerValidation (line 9) | class TestBaseAnswerValidation: method test_validate_request_passes_with_required_fields (line 10) | def test_validate_request_passes_with_required_fields( method test_validate_request_fails_without_question (line 23) | def test_validate_request_fails_without_question(self, mock_mongo_db, ... method test_validate_with_conversation_id_required (line 36) | def test_validate_with_conversation_id_required(self, mock_mongo_db, f... method test_validate_passes_with_all_required_fields (line 49) | def test_validate_passes_with_all_required_fields(self, mock_mongo_db,... class TestUsageChecking (line 62) | class TestUsageChecking: method test_returns_none_when_no_api_key (line 63) | def test_returns_none_when_no_api_key(self, mock_mongo_db, flask_app): method test_returns_error_for_invalid_api_key (line 74) | def test_returns_error_for_invalid_api_key(self, mock_mongo_db, flask_... method test_checks_token_limit_when_enabled (line 88) | def test_checks_token_limit_when_enabled(self, mock_mongo_db, flask_app): method test_checks_request_limit_when_enabled (line 113) | def test_checks_request_limit_when_enabled(self, mock_mongo_db, flask_... method test_uses_default_limits_when_not_specified (line 138) | def test_uses_default_limits_when_not_specified(self, mock_mongo_db, f... method test_exceeds_token_limit (line 162) | def test_exceeds_token_limit(self, mock_mongo_db, flask_app): method test_exceeds_request_limit (line 203) | def test_exceeds_request_limit(self, mock_mongo_db, flask_app): method test_both_limits_disabled_returns_none (line 244) | def test_both_limits_disabled_returns_none(self, mock_mongo_db, flask_... class TestGPTModelRetrieval (line 270) | class TestGPTModelRetrieval: method test_initializes_gpt_model (line 271) | def test_initializes_gpt_model(self, mock_mongo_db, flask_app): class TestConversationServiceIntegration (line 282) | class TestConversationServiceIntegration: method test_initializes_conversation_service (line 283) | def test_initializes_conversation_service(self, mock_mongo_db, flask_a... method test_has_access_to_user_logs_collection (line 292) | def test_has_access_to_user_logs_collection(self, mock_mongo_db, flask... class TestCompleteStreamMethod (line 303) | class TestCompleteStreamMethod: method test_streams_answer_chunks (line 304) | def test_streams_answer_chunks(self, mock_mongo_db, flask_app): method test_streams_sources (line 336) | def test_streams_sources(self, mock_mongo_db, flask_app): method test_handles_error_during_streaming (line 367) | def test_handles_error_during_streaming(self, mock_mongo_db, flask_app): method test_saves_conversation_when_enabled (line 391) | def test_saves_conversation_when_enabled(self, mock_mongo_db, flask_app): method test_logs_to_user_logs_collection (line 424) | def test_logs_to_user_logs_collection(self, mock_mongo_db, flask_app): class TestProcessResponseStream (line 464) | class TestProcessResponseStream: method test_processes_complete_stream (line 465) | def test_processes_complete_stream(self, mock_mongo_db, flask_app): method test_handles_stream_error (line 489) | def test_handles_stream_error(self, mock_mongo_db, flask_app): method test_handles_malformed_stream_data (line 508) | def test_handles_malformed_stream_data(self, mock_mongo_db, flask_app): class TestErrorStreamGenerate (line 525) | class TestErrorStreamGenerate: method test_generates_error_stream (line 526) | def test_generates_error_stream(self, mock_mongo_db, flask_app): FILE: tests/api/answer/routes/test_search.py class TestSearchResourceValidation (line 9) | class TestSearchResourceValidation: method test_returns_error_when_question_missing (line 10) | def test_returns_error_when_question_missing(self, mock_mongo_db, flas... method test_returns_error_when_api_key_missing (line 23) | def test_returns_error_when_api_key_missing(self, mock_mongo_db, flask... method test_returns_error_for_invalid_api_key (line 36) | def test_returns_error_for_invalid_api_key(self, mock_mongo_db, flask_... class TestGetSourcesFromApiKey (line 51) | class TestGetSourcesFromApiKey: method test_returns_empty_list_when_agent_not_found (line 52) | def test_returns_empty_list_when_agent_not_found(self, mock_mongo_db, ... method test_returns_source_id_from_dbref (line 62) | def test_returns_source_id_from_dbref(self, mock_mongo_db, flask_app): method test_returns_multiple_sources_from_sources_array (line 91) | def test_returns_multiple_sources_from_sources_array( method test_skips_default_source_in_sources_array (line 125) | def test_skips_default_source_in_sources_array(self, mock_mongo_db, fl... method test_skips_default_source_in_legacy_field (line 152) | def test_skips_default_source_in_legacy_field(self, mock_mongo_db, fla... method test_falls_back_to_legacy_source_when_sources_empty (line 174) | def test_falls_back_to_legacy_source_when_sources_empty( method test_handles_string_source_id (line 203) | def test_handles_string_source_id(self, mock_mongo_db, flask_app): class TestSearchVectorstores (line 229) | class TestSearchVectorstores: method test_returns_empty_when_no_source_ids (line 230) | def test_returns_empty_when_no_source_ids(self, mock_mongo_db, flask_a... method test_skips_empty_source_ids (line 240) | def test_skips_empty_source_ids(self, mock_mongo_db, flask_app): method test_returns_search_results (line 258) | def test_returns_search_results(self, mock_mongo_db, flask_app): method test_handles_langchain_document_format (line 287) | def test_handles_langchain_document_format(self, mock_mongo_db, flask_... method test_respects_chunks_limit (line 310) | def test_respects_chunks_limit(self, mock_mongo_db, flask_app): method test_deduplicates_results (line 332) | def test_deduplicates_results(self, mock_mongo_db, flask_app): method test_handles_vectorstore_error_gracefully (line 356) | def test_handles_vectorstore_error_gracefully(self, mock_mongo_db, fla... method test_uses_filename_as_title_fallback (line 371) | def test_uses_filename_as_title_fallback(self, mock_mongo_db, flask_app): method test_uses_content_snippet_as_title_last_resort (line 393) | def test_uses_content_snippet_as_title_last_resort(self, mock_mongo_db... class TestSearchEndpoint (line 418) | class TestSearchEndpoint: method test_returns_empty_array_when_no_sources (line 419) | def test_returns_empty_array_when_no_sources(self, mock_mongo_db, flas... method test_returns_search_results_successfully (line 445) | def test_returns_search_results_successfully(self, mock_mongo_db, flas... method test_uses_default_chunks_value (line 489) | def test_uses_default_chunks_value(self, mock_mongo_db, flask_app): method test_handles_internal_error (line 527) | def test_handles_internal_error(self, mock_mongo_db, flask_app): FILE: tests/api/answer/services/test_conversation_service.py class TestConversationServiceGet (line 8) | class TestConversationServiceGet: method test_returns_none_when_no_conversation_id (line 10) | def test_returns_none_when_no_conversation_id(self, mock_mongo_db): method test_returns_none_when_no_user_id (line 20) | def test_returns_none_when_no_user_id(self, mock_mongo_db): method test_returns_conversation_for_owner (line 30) | def test_returns_conversation_for_owner(self, mock_mongo_db): method test_returns_none_for_unauthorized_user (line 54) | def test_returns_none_for_unauthorized_user(self, mock_mongo_db): method test_converts_objectid_to_string (line 72) | def test_converts_objectid_to_string(self, mock_mongo_db): class TestConversationServiceSave (line 91) | class TestConversationServiceSave: method test_raises_error_when_no_user_in_token (line 93) | def test_raises_error_when_no_user_in_token(self, mock_mongo_db): method test_truncates_long_source_text (line 115) | def test_truncates_long_source_text(self, mock_mongo_db): method test_creates_new_conversation_with_summary (line 149) | def test_creates_new_conversation_with_summary(self, mock_mongo_db): method test_appends_to_existing_conversation (line 181) | def test_appends_to_existing_conversation(self, mock_mongo_db): method test_prevents_unauthorized_conversation_update (line 217) | def test_prevents_unauthorized_conversation_update(self, mock_mongo_db): FILE: tests/api/answer/services/test_prompt_renderer.py class TestTemplateEngine (line 5) | class TestTemplateEngine: method test_render_simple_template (line 7) | def test_render_simple_template(self): method test_render_with_namespace (line 15) | def test_render_with_namespace(self): method test_render_empty_template (line 29) | def test_render_empty_template(self): method test_render_template_without_variables (line 37) | def test_render_template_without_variables(self): method test_render_undefined_variable_returns_empty_string (line 45) | def test_render_undefined_variable_returns_empty_string(self): method test_render_syntax_error_raises_error (line 53) | def test_render_syntax_error_raises_error(self): method test_validate_template_valid (line 64) | def test_validate_template_valid(self): method test_validate_template_invalid (line 70) | def test_validate_template_invalid(self): method test_validate_empty_template (line 76) | def test_validate_empty_template(self): method test_extract_variables (line 82) | def test_extract_variables(self): class TestSystemNamespace (line 94) | class TestSystemNamespace: method test_system_namespace_build (line 96) | def test_system_namespace_build(self): method test_system_namespace_generates_request_id (line 110) | def test_system_namespace_generates_request_id(self): method test_system_namespace_name (line 119) | def test_system_namespace_name(self): method test_system_namespace_date_format (line 125) | def test_system_namespace_date_format(self): class TestPassthroughNamespace (line 138) | class TestPassthroughNamespace: method test_passthrough_namespace_build (line 140) | def test_passthrough_namespace_build(self): method test_passthrough_namespace_empty (line 152) | def test_passthrough_namespace_empty(self): method test_passthrough_namespace_filters_unsafe_values (line 160) | def test_passthrough_namespace_filters_unsafe_values(self): method test_passthrough_namespace_allows_none_values (line 180) | def test_passthrough_namespace_allows_none_values(self): method test_passthrough_namespace_name (line 190) | def test_passthrough_namespace_name(self): class TestSourceNamespace (line 198) | class TestSourceNamespace: method test_source_namespace_build_with_docs (line 200) | def test_source_namespace_build_with_docs(self): method test_source_namespace_build_empty (line 217) | def test_source_namespace_build_empty(self): method test_source_namespace_build_docs_only (line 225) | def test_source_namespace_build_docs_only(self): method test_source_namespace_build_docs_together_only (line 237) | def test_source_namespace_build_docs_together_only(self): method test_source_namespace_name (line 249) | def test_source_namespace_name(self): class TestToolsNamespace (line 257) | class TestToolsNamespace: method test_tools_namespace_build_with_memory_data (line 259) | def test_tools_namespace_build_with_memory_data(self): method test_tools_namespace_build_empty (line 272) | def test_tools_namespace_build_empty(self): method test_tools_namespace_build_multiple_tools (line 280) | def test_tools_namespace_build_multiple_tools(self): method test_tools_namespace_filters_unsafe_values (line 299) | def test_tools_namespace_filters_unsafe_values(self): method test_tools_namespace_name (line 314) | def test_tools_namespace_name(self): method test_tools_namespace_with_empty_dict (line 320) | def test_tools_namespace_with_empty_dict(self): class TestNamespaceManagerWithTools (line 330) | class TestNamespaceManagerWithTools: method test_namespace_manager_includes_tools_in_context (line 332) | def test_namespace_manager_includes_tools_in_context(self): method test_namespace_manager_build_context_all_namespaces (line 343) | def test_namespace_manager_build_context_all_namespaces(self): method test_namespace_manager_build_context_partial_data (line 361) | def test_namespace_manager_build_context_partial_data(self): method test_namespace_manager_get_builder (line 370) | def test_namespace_manager_get_builder(self): method test_namespace_manager_get_builder_nonexistent (line 378) | def test_namespace_manager_get_builder_nonexistent(self): method test_namespace_manager_handles_builder_exceptions (line 386) | def test_namespace_manager_handles_builder_exceptions(self): class TestPromptRenderer (line 406) | class TestPromptRenderer: method test_render_prompt_with_template_syntax (line 408) | def test_render_prompt_with_template_syntax(self): method test_render_prompt_with_passthrough_data (line 419) | def test_render_prompt_with_passthrough_data(self): method test_render_prompt_with_source_docs (line 431) | def test_render_prompt_with_source_docs(self): method test_render_prompt_empty_content (line 443) | def test_render_prompt_empty_content(self): method test_render_prompt_legacy_format_with_summaries (line 451) | def test_render_prompt_legacy_format_with_summaries(self): method test_render_prompt_legacy_format_without_docs (line 462) | def test_render_prompt_legacy_format_without_docs(self): method test_render_prompt_combined_namespace_variables (line 472) | def test_render_prompt_combined_namespace_variables(self): method test_render_prompt_with_tools_data (line 490) | def test_render_prompt_with_tools_data(self): method test_render_prompt_with_all_namespaces (line 507) | def test_render_prompt_with_all_namespaces(self): method test_render_prompt_undefined_variable_returns_empty_string (line 533) | def test_render_prompt_undefined_variable_returns_empty_string(self): method test_render_prompt_with_undefined_variable_in_template (line 542) | def test_render_prompt_with_undefined_variable_in_template(self): method test_validate_template_valid (line 551) | def test_validate_template_valid(self): method test_validate_template_invalid (line 557) | def test_validate_template_invalid(self): method test_extract_variables (line 563) | def test_extract_variables(self): method test_uses_template_syntax_detection (line 573) | def test_uses_template_syntax_detection(self): method test_apply_legacy_substitutions (line 582) | def test_apply_legacy_substitutions(self): method test_apply_legacy_substitutions_without_docs (line 593) | def test_apply_legacy_substitutions_without_docs(self): class TestPromptRendererIntegration (line 605) | class TestPromptRendererIntegration: method test_render_prompt_real_world_scenario (line 607) | def test_render_prompt_real_world_scenario(self): method test_render_prompt_multiple_doc_references (line 630) | def test_render_prompt_multiple_doc_references(self): class TestStreamProcessorPromptRendering (line 643) | class TestStreamProcessorPromptRendering: method test_stream_processor_pre_fetch_docs_none_doc_mode (line 645) | def test_stream_processor_pre_fetch_docs_none_doc_mode(self, mock_mong... method test_pre_fetch_tools_disabled_globally (line 656) | def test_pre_fetch_tools_disabled_globally(self, mock_mongo_db, monkey... method test_pre_fetch_tools_disabled_per_request (line 669) | def test_pre_fetch_tools_disabled_per_request(self, mock_mongo_db): method test_pre_fetch_tools_skips_tool_with_no_actions (line 679) | def test_pre_fetch_tools_skips_tool_with_no_actions(self, mock_mongo_db): method test_pre_fetch_tools_enabled_by_default (line 717) | def test_pre_fetch_tools_enabled_by_default(self, mock_mongo_db, monke... method test_pre_fetch_tools_no_tools_configured (line 759) | def test_pre_fetch_tools_no_tools_configured(self, mock_mongo_db): method test_pre_fetch_tools_memory_returns_error (line 769) | def test_pre_fetch_tools_memory_returns_error(self, mock_mongo_db): method test_pre_fetch_tools_memory_returns_empty (line 810) | def test_pre_fetch_tools_memory_returns_empty(self, mock_mongo_db): FILE: tests/api/answer/services/test_stream_processor.py class TestGetPromptFunction (line 6) | class TestGetPromptFunction: method test_loads_custom_prompt_from_database (line 8) | def test_loads_custom_prompt_from_database(self, mock_mongo_db): method test_raises_error_for_invalid_prompt_id (line 26) | def test_raises_error_for_invalid_prompt_id(self, mock_mongo_db): method test_raises_error_for_malformed_id (line 35) | def test_raises_error_for_malformed_id(self, mock_mongo_db): class TestStreamProcessorInitialization (line 46) | class TestStreamProcessorInitialization: method test_initializes_with_decoded_token (line 48) | def test_initializes_with_decoded_token(self, mock_mongo_db): method test_initializes_without_token (line 64) | def test_initializes_without_token(self, mock_mongo_db): method test_initializes_default_attributes (line 75) | def test_initializes_default_attributes(self, mock_mongo_db): method test_extracts_conversation_id_from_request (line 89) | def test_extracts_conversation_id_from_request(self, mock_mongo_db): class TestStreamProcessorHistoryLoading (line 101) | class TestStreamProcessorHistoryLoading: method test_loads_history_from_existing_conversation (line 103) | def test_loads_history_from_existing_conversation(self, mock_mongo_db): method test_raises_error_for_unauthorized_conversation (line 136) | def test_raises_error_for_unauthorized_conversation(self, mock_mongo_db): method test_uses_request_history_when_no_conversation_id (line 161) | def test_uses_request_history_when_no_conversation_id(self, mock_mongo... class TestStreamProcessorAgentConfiguration (line 175) | class TestStreamProcessorAgentConfiguration: method test_configures_agent_from_valid_api_key (line 177) | def test_configures_agent_from_valid_api_key(self, mock_mongo_db): method test_uses_default_config_without_api_key (line 206) | def test_uses_default_config_without_api_key(self, mock_mongo_db): method test_conversation_agent_overrides_request_active_docs (line 217) | def test_conversation_agent_overrides_request_active_docs(self, mock_m... class TestStreamProcessorDocPrefetch (line 279) | class TestStreamProcessorDocPrefetch: method test_prefetch_not_skipped_for_agent_when_isNoneDoc_true (line 281) | def test_prefetch_not_skipped_for_agent_when_isNoneDoc_true(self, mock... class TestStreamProcessorAttachments (line 335) | class TestStreamProcessorAttachments: method test_processes_attachments_from_request (line 337) | def test_processes_attachments_from_request(self, mock_mongo_db): method test_handles_empty_attachments (line 359) | def test_handles_empty_attachments(self, mock_mongo_db): class TestToolPreFetch (line 374) | class TestToolPreFetch: method test_cryptoprice_prefetch_with_saved_parameters (line 377) | def test_cryptoprice_prefetch_with_saved_parameters(self, mock_mongo_db): method test_prefetch_with_missing_saved_values_uses_defaults (line 486) | def test_prefetch_with_missing_saved_values_uses_defaults(self, mock_m... method test_prefetch_with_tool_id_reference (line 572) | def test_prefetch_with_tool_id_reference(self, mock_mongo_db): method test_prefetch_with_multiple_same_name_tools (line 635) | def test_prefetch_with_multiple_same_name_tools(self, mock_mongo_db): FILE: tests/api/conftest.py function auth_headers (line 8) | def auth_headers(): function mock_request_token (line 13) | def mock_request_token(monkeypatch, decoded_token): function sample_conversation (line 28) | def sample_conversation(): function sample_prompt (line 44) | def sample_prompt(): function sample_agent (line 55) | def sample_agent(): function sample_answer_request (line 69) | def sample_answer_request(): function flask_app (line 84) | def flask_app(): FILE: tests/api/user/attachments/test_routes.py function _get_response_status (line 8) | def _get_response_status(response): function _get_response_json (line 14) | def _get_response_json(response): class FakeRedis (line 20) | class FakeRedis: method __init__ (line 21) | def __init__(self): method get (line 24) | def get(self, key): method setex (line 27) | def setex(self, key, ttl, value): method delete (line 31) | def delete(self, key): class TestStoreAttachmentEndpoint (line 35) | class TestStoreAttachmentEndpoint: method test_store_attachment_preserves_upload_indexes_for_partial_failures (line 37) | def test_store_attachment_preserves_upload_indexes_for_partial_failures( method test_store_attachment_rejects_oversized_audio_files (line 83) | def test_store_attachment_rejects_oversized_audio_files( class TestSpeechToTextEndpoint (line 112) | class TestSpeechToTextEndpoint: method test_stt_returns_400_when_file_is_missing (line 113) | def test_stt_returns_400_when_file_is_missing(self, flask_app, mock_mo... method test_stt_returns_401_when_authentication_is_missing (line 127) | def test_stt_returns_401_when_authentication_is_missing( method test_stt_transcribes_audio_for_authenticated_user (line 149) | def test_stt_transcribes_audio_for_authenticated_user( method test_stt_rejects_unsupported_extension (line 191) | def test_stt_rejects_unsupported_extension(self, flask_app, mock_mongo... class TestLiveSpeechToTextEndpoint (line 211) | class TestLiveSpeechToTextEndpoint: method test_live_stt_start_creates_session (line 213) | def test_live_stt_start_creates_session( method test_live_stt_chunk_reconciles_transcript_progressively (line 240) | def test_live_stt_chunk_reconciles_transcript_progressively( method test_live_stt_chunk_rejects_missing_session (line 359) | def test_live_stt_chunk_rejects_missing_session( method test_live_stt_chunk_hides_internal_value_errors (line 387) | def test_live_stt_chunk_hides_internal_value_errors( FILE: tests/api/user/sources/test_audio_upload.py function test_upload_route_passes_audio_extensions_to_ingest (line 9) | def test_upload_route_passes_audio_extensions_to_ingest(flask_app, mock_... function test_upload_route_rejects_oversized_audio (line 46) | def test_upload_route_rejects_oversized_audio( FILE: tests/api/user/sources/test_routes.py class TestGetProviderFromRemoteData (line 9) | class TestGetProviderFromRemoteData: method test_returns_none_for_none_input (line 12) | def test_returns_none_for_none_input(self): method test_returns_none_for_empty_string (line 19) | def test_returns_none_for_empty_string(self): method test_extracts_provider_from_dict (line 26) | def test_extracts_provider_from_dict(self): method test_extracts_provider_from_json_string (line 34) | def test_extracts_provider_from_json_string(self): method test_returns_none_for_dict_without_provider (line 42) | def test_returns_none_for_dict_without_provider(self): method test_returns_none_for_invalid_json (line 50) | def test_returns_none_for_invalid_json(self): method test_returns_none_for_json_array (line 57) | def test_returns_none_for_json_array(self): method test_returns_none_for_non_string_non_dict (line 64) | def test_returns_none_for_non_string_non_dict(self): function _get_response_status (line 72) | def _get_response_status(response): function _get_response_json (line 79) | def _get_response_json(response): class TestSyncSourceEndpoint (line 87) | class TestSyncSourceEndpoint: method mock_sources_collection (line 91) | def mock_sources_collection(self, mock_mongo_db): method test_sync_source_returns_401_without_token (line 97) | def test_sync_source_returns_401_without_token(self, flask_app): method test_sync_source_returns_400_for_missing_source_id (line 115) | def test_sync_source_returns_400_for_missing_source_id(self, flask_app): method test_sync_source_returns_400_for_invalid_source_id (line 132) | def test_sync_source_returns_400_for_invalid_source_id(self, flask_app): method test_sync_source_returns_404_for_nonexistent_source (line 151) | def test_sync_source_returns_404_for_nonexistent_source( method test_sync_source_returns_400_for_connector_type (line 178) | def test_sync_source_returns_400_for_connector_type( method test_sync_source_returns_400_for_non_syncable_source (line 215) | def test_sync_source_returns_400_for_non_syncable_source( method test_sync_source_triggers_sync_task (line 253) | def test_sync_source_triggers_sync_task( method test_sync_source_handles_task_error (line 315) | def test_sync_source_handles_task_error( FILE: tests/api/user/test_base.py class TestTimeRangeGenerators (line 11) | class TestTimeRangeGenerators: method test_generate_minute_range (line 13) | def test_generate_minute_range(self): method test_generate_hourly_range (line 26) | def test_generate_hourly_range(self): method test_generate_date_range (line 39) | def test_generate_date_range(self): method test_single_minute_range (line 52) | def test_single_minute_range(self): class TestEnsureUserDoc (line 63) | class TestEnsureUserDoc: method test_creates_new_user_with_defaults (line 65) | def test_creates_new_user_with_defaults(self, mock_mongo_db): method test_returns_existing_user (line 78) | def test_returns_existing_user(self, mock_mongo_db): method test_adds_missing_preferences_fields (line 97) | def test_adds_missing_preferences_fields(self, mock_mongo_db): class TestResolveToolDetails (line 115) | class TestResolveToolDetails: method test_resolves_tool_ids_to_details (line 117) | def test_resolves_tool_ids_to_details(self, mock_mongo_db): method test_handles_missing_display_name (line 140) | def test_handles_missing_display_name(self, mock_mongo_db): method test_empty_tool_ids_list (line 153) | def test_empty_tool_ids_list(self, mock_mongo_db): class TestGetVectorStore (line 162) | class TestGetVectorStore: method test_creates_vector_store (line 165) | def test_creates_vector_store(self, mock_create, mock_mongo_db): class TestHandleImageUpload (line 181) | class TestHandleImageUpload: method test_returns_existing_url_when_no_file (line 183) | def test_returns_existing_url_when_no_file(self, flask_app): method test_uploads_new_image (line 199) | def test_uploads_new_image(self, flask_app): method test_ignores_empty_filename (line 221) | def test_ignores_empty_filename(self, flask_app): method test_handles_upload_error (line 240) | def test_handles_upload_error(self, flask_app): class TestRequireAgentDecorator (line 260) | class TestRequireAgentDecorator: method test_validates_webhook_token (line 262) | def test_validates_webhook_token(self, mock_mongo_db, flask_app): method test_returns_400_for_missing_token (line 283) | def test_returns_400_for_missing_token(self, mock_mongo_db, flask_app): method test_returns_404_for_invalid_token (line 298) | def test_returns_404_for_invalid_token(self, mock_mongo_db, flask_app): FILE: tests/api/user/test_exception_sanitization.py function test_safe_db_operation_hides_exception_details (line 8) | def test_safe_db_operation_hides_exception_details(): function test_agent_folders_hides_exception_details (line 27) | def test_agent_folders_hides_exception_details(): function test_workflow_create_hides_structure_exception_details (line 47) | def test_workflow_create_hides_structure_exception_details(): function test_update_agent_reuses_sanitized_image_upload_error (line 95) | def test_update_agent_reuses_sanitized_image_upload_error(): FILE: tests/conftest.py function get_settings (line 8) | def get_settings(): function mock_llm (line 16) | def mock_llm(): function mock_llm_handler (line 26) | def mock_llm_handler(): function mock_retriever (line 33) | def mock_retriever(): function mock_mongo_db (line 45) | def mock_mongo_db(monkeypatch): function sample_chat_history (line 94) | def sample_chat_history(): function sample_tool_call (line 102) | def sample_tool_call(): function decoded_token (line 113) | def decoded_token(): function log_context (line 118) | def log_context(): function mock_llm_creator (line 132) | def mock_llm_creator(mock_llm, monkeypatch): function mock_llm_handler_creator (line 140) | def mock_llm_handler_creator(mock_llm_handler, monkeypatch): function agent_base_params (line 149) | def agent_base_params(decoded_token): function mock_tool (line 165) | def mock_tool(): function mock_tool_manager (line 187) | def mock_tool_manager(mock_tool, monkeypatch): function flask_app (line 197) | def flask_app(): FILE: tests/core/test_url_validation.py class TestIsPrivateIP (line 15) | class TestIsPrivateIP: method test_loopback_ipv4 (line 18) | def test_loopback_ipv4(self): method test_private_class_a (line 22) | def test_private_class_a(self): method test_private_class_b (line 26) | def test_private_class_b(self): method test_private_class_c (line 30) | def test_private_class_c(self): method test_link_local (line 34) | def test_link_local(self): method test_public_ip (line 37) | def test_public_ip(self): method test_invalid_ip (line 42) | def test_invalid_ip(self): class TestIsMetadataIP (line 47) | class TestIsMetadataIP: method test_aws_metadata_ip (line 50) | def test_aws_metadata_ip(self): method test_aws_ecs_metadata_ip (line 53) | def test_aws_ecs_metadata_ip(self): method test_non_metadata_ip (line 56) | def test_non_metadata_ip(self): class TestValidateUrl (line 61) | class TestValidateUrl: method test_adds_scheme_if_missing (line 64) | def test_adds_scheme_if_missing(self): method test_preserves_https_scheme (line 70) | def test_preserves_https_scheme(self): method test_blocks_localhost (line 76) | def test_blocks_localhost(self): method test_blocks_localhost_localdomain (line 81) | def test_blocks_localhost_localdomain(self): method test_blocks_loopback_ip (line 86) | def test_blocks_loopback_ip(self): method test_blocks_private_ip_class_a (line 91) | def test_blocks_private_ip_class_a(self): method test_blocks_private_ip_class_b (line 96) | def test_blocks_private_ip_class_b(self): method test_blocks_private_ip_class_c (line 101) | def test_blocks_private_ip_class_c(self): method test_blocks_aws_metadata_ip (line 106) | def test_blocks_aws_metadata_ip(self): method test_blocks_aws_metadata_with_path (line 111) | def test_blocks_aws_metadata_with_path(self): method test_blocks_gcp_metadata_hostname (line 116) | def test_blocks_gcp_metadata_hostname(self): method test_blocks_ftp_scheme (line 121) | def test_blocks_ftp_scheme(self): method test_blocks_file_scheme (line 126) | def test_blocks_file_scheme(self): method test_blocks_hostname_resolving_to_private_ip (line 131) | def test_blocks_hostname_resolving_to_private_ip(self): method test_blocks_hostname_resolving_to_metadata_ip (line 138) | def test_blocks_hostname_resolving_to_metadata_ip(self): method test_allows_public_ip (line 145) | def test_allows_public_ip(self): method test_allows_public_hostname (line 149) | def test_allows_public_hostname(self): method test_raises_on_unresolvable_hostname (line 155) | def test_raises_on_unresolvable_hostname(self): method test_raises_on_empty_hostname (line 162) | def test_raises_on_empty_hostname(self): method test_allow_localhost_flag (line 167) | def test_allow_localhost_flag(self): class TestValidateUrlSafe (line 176) | class TestValidateUrlSafe: method test_returns_tuple_on_success (line 179) | def test_returns_tuple_on_success(self): method test_returns_tuple_on_failure (line 187) | def test_returns_tuple_on_failure(self): method test_returns_error_message_for_private_ip (line 194) | def test_returns_error_message_for_private_ip(self): FILE: tests/integration/base.py class Colors (line 22) | class Colors: function generate_jwt_token (line 35) | def generate_jwt_token() -> tuple[Optional[str], Optional[str]]: class DocsGPTTestBase (line 68) | class DocsGPTTestBase: method __init__ (line 79) | def __init__( method get (line 105) | def get( method post (line 133) | def post( method put (line 167) | def put( method delete (line 195) | def delete( method post_stream (line 223) | def post_stream( method print_header (line 282) | def print_header(self, message: str) -> None: method print_success (line 288) | def print_success(self, message: str) -> None: method print_error (line 292) | def print_error(self, message: str) -> None: method print_info (line 296) | def print_info(self, message: str) -> None: method print_warning (line 300) | def print_warning(self, message: str) -> None: method record_result (line 308) | def record_result(self, test_name: str, success: bool, message: str) -... method print_summary (line 319) | def print_summary(self) -> bool: method assert_status (line 347) | def assert_status( method assert_json_key (line 372) | def assert_json_key( method is_authenticated (line 401) | def is_authenticated(self) -> bool: method require_auth (line 405) | def require_auth(self, test_name: str) -> bool: function create_client_from_args (line 428) | def create_client_from_args( FILE: tests/integration/run_all.py function print_header (line 70) | def print_header(message: str) -> None: function list_modules (line 77) | def list_modules() -> None: function run_module (line 86) | def run_module( function main (line 112) | def main() -> int: FILE: tests/integration/test_agents.py class AgentTests (line 43) | class AgentTests(DocsGPTTestBase): method get_or_create_test_source (line 50) | def get_or_create_test_source(self) -> Optional[str]: method get_or_create_test_agent (line 102) | def get_or_create_test_agent(self) -> Optional[tuple]: method cleanup_test_agent (line 139) | def cleanup_test_agent(self, agent_id: str) -> None: method test_create_agent_draft (line 152) | def test_create_agent_draft(self) -> bool: method test_create_agent_published (line 199) | def test_create_agent_published(self) -> bool: method test_create_agent_with_tools (line 256) | def test_create_agent_with_tools(self) -> bool: method test_get_agent (line 308) | def test_get_agent(self) -> bool: method test_get_agent_not_found (line 349) | def test_get_agent_not_found(self) -> bool: method test_get_agents (line 379) | def test_get_agents(self) -> bool: method test_update_agent_name (line 425) | def test_update_agent_name(self) -> bool: method test_update_agent_settings (line 471) | def test_update_agent_settings(self) -> bool: method test_delete_agent (line 513) | def test_delete_agent(self) -> bool: method test_pin_agent (line 562) | def test_pin_agent(self) -> bool: method test_get_pinned_agents (line 596) | def test_get_pinned_agents(self) -> bool: method test_get_template_agents (line 630) | def test_get_template_agents(self) -> bool: method test_share_agent (line 663) | def test_share_agent(self) -> bool: method test_get_shared_agents (line 701) | def test_get_shared_agents(self) -> bool: method test_get_shared_agent (line 728) | def test_get_shared_agent(self) -> bool: method test_adopt_agent (line 764) | def test_adopt_agent(self) -> bool: method test_remove_shared_agent (line 805) | def test_remove_shared_agent(self) -> bool: method test_agent_webhook_get (line 863) | def test_agent_webhook_get(self) -> bool: method test_webhook_by_token (line 900) | def test_webhook_by_token(self) -> bool: method run_all (line 953) | def run_all(self) -> bool: function main (line 1001) | def main(): FILE: tests/integration/test_analytics.py class AnalyticsTests (line 30) | class AnalyticsTests(DocsGPTTestBase): method test_get_feedback_analytics (line 37) | def test_get_feedback_analytics(self) -> bool: method test_get_feedback_analytics_with_filters (line 66) | def test_get_feedback_analytics_with_filters(self) -> bool: method test_get_message_analytics (line 100) | def test_get_message_analytics(self) -> bool: method test_get_message_analytics_with_agent (line 129) | def test_get_message_analytics_with_agent(self) -> bool: method test_get_token_analytics (line 163) | def test_get_token_analytics(self) -> bool: method test_get_token_analytics_breakdown (line 192) | def test_get_token_analytics_breakdown(self) -> bool: method test_get_user_logs (line 226) | def test_get_user_logs(self) -> bool: method test_get_user_logs_paginated (line 255) | def test_get_user_logs_paginated(self) -> bool: method run_all (line 290) | def run_all(self) -> bool: function main (line 315) | def main(): FILE: tests/integration/test_chat.py class ChatTests (line 35) | class ChatTests(DocsGPTTestBase): method get_or_create_test_agent (line 42) | def get_or_create_test_agent(self) -> Optional[tuple]: method get_or_create_published_agent (line 79) | def get_or_create_published_agent(self) -> Optional[tuple]: method _create_test_source (line 122) | def _create_test_source(self) -> Optional[str]: method test_stream_endpoint_no_agent (line 160) | def test_stream_endpoint_no_agent(self) -> bool: method test_stream_endpoint_with_agent (line 233) | def test_stream_endpoint_with_agent(self) -> bool: method test_stream_endpoint_with_api_key (line 294) | def test_stream_endpoint_with_api_key(self) -> bool: method test_answer_endpoint_no_agent (line 363) | def test_answer_endpoint_no_agent(self) -> bool: method test_answer_endpoint_with_agent (line 409) | def test_answer_endpoint_with_agent(self) -> bool: method test_answer_endpoint_with_api_key (line 452) | def test_answer_endpoint_with_api_key(self) -> bool: method test_model_validation_invalid_model_id (line 499) | def test_model_validation_invalid_model_id(self) -> bool: method test_compression_heavy_tool_usage (line 562) | def test_compression_heavy_tool_usage(self) -> bool: method test_compression_needle_in_haystack (line 616) | def test_compression_needle_in_haystack(self) -> bool: method test_feedback_positive (line 763) | def test_feedback_positive(self) -> bool: method test_feedback_negative (line 813) | def test_feedback_negative(self) -> bool: method test_tts_basic (line 863) | def test_tts_basic(self) -> bool: method run_all (line 895) | def run_all(self) -> bool: function main (line 949) | def main(): FILE: tests/integration/test_connectors.py class ConnectorTests (line 35) | class ConnectorTests(DocsGPTTestBase): method test_connectors_auth_google (line 42) | def test_connectors_auth_google(self) -> bool: method test_connectors_auth_invalid_provider (line 79) | def test_connectors_auth_invalid_provider(self) -> bool: method test_connectors_callback_status (line 112) | def test_connectors_callback_status(self) -> bool: method test_connectors_disconnect (line 146) | def test_connectors_disconnect(self) -> bool: method test_connectors_files (line 180) | def test_connectors_files(self) -> bool: method test_connectors_files_with_path (line 216) | def test_connectors_files_with_path(self) -> bool: method test_connectors_sync (line 249) | def test_connectors_sync(self) -> bool: method test_connectors_validate_session (line 282) | def test_connectors_validate_session(self) -> bool: method run_all (line 317) | def run_all(self) -> bool: function main (line 347) | def main(): FILE: tests/integration/test_conversations.py class ConversationTests (line 35) | class ConversationTests(DocsGPTTestBase): method get_or_create_test_conversation (line 42) | def get_or_create_test_conversation(self) -> Optional[str]: method get_existing_conversation (line 75) | def get_existing_conversation(self) -> Optional[str]: method test_get_conversations (line 91) | def test_get_conversations(self) -> bool: method test_get_conversations_paginated (line 123) | def test_get_conversations_paginated(self) -> bool: method test_get_single_conversation (line 157) | def test_get_single_conversation(self) -> bool: method test_get_single_conversation_not_found (line 196) | def test_get_single_conversation_not_found(self) -> bool: method test_update_conversation_name (line 229) | def test_update_conversation_name(self) -> bool: method test_delete_conversation (line 273) | def test_delete_conversation(self) -> bool: method test_delete_all_conversations (line 322) | def test_delete_all_conversations(self) -> bool: method test_share_conversation (line 352) | def test_share_conversation(self) -> bool: method test_get_shared_conversation (line 393) | def test_get_shared_conversation(self) -> bool: method test_get_shared_conversation_not_found (line 429) | def test_get_shared_conversation_not_found(self) -> bool: method run_all (line 458) | def run_all(self) -> bool: function main (line 485) | def main(): FILE: tests/integration/test_mcp.py class MCPTests (line 31) | class MCPTests(DocsGPTTestBase): method test_mcp_callback (line 38) | def test_mcp_callback(self) -> bool: method test_mcp_oauth_status (line 69) | def test_mcp_oauth_status(self) -> bool: method test_mcp_oauth_status_invalid_task (line 100) | def test_mcp_oauth_status_invalid_task(self) -> bool: method test_mcp_save (line 138) | def test_mcp_save(self) -> bool: method test_mcp_save_invalid (line 178) | def test_mcp_save_invalid(self) -> bool: method test_mcp_test_connection (line 220) | def test_mcp_test_connection(self) -> bool: method test_mcp_test_connection_invalid (line 261) | def test_mcp_test_connection_invalid(self) -> bool: method run_all (line 305) | def run_all(self) -> bool: function main (line 329) | def main(): FILE: tests/integration/test_misc.py class MiscTests (line 29) | class MiscTests(DocsGPTTestBase): method test_get_models (line 36) | def test_get_models(self) -> bool: method test_get_models_with_filter (line 82) | def test_get_models_with_filter(self) -> bool: method test_get_image (line 117) | def test_get_image(self) -> bool: method test_get_image_not_found (line 145) | def test_get_image_not_found(self) -> bool: method test_store_attachment (line 178) | def test_store_attachment(self) -> bool: method test_store_attachment_large (line 216) | def test_store_attachment_large(self) -> bool: method test_health_check (line 257) | def test_health_check(self) -> bool: method run_all (line 285) | def run_all(self) -> bool: function main (line 309) | def main(): FILE: tests/integration/test_prompts.py class PromptTests (line 33) | class PromptTests(DocsGPTTestBase): method get_or_create_test_prompt (line 40) | def get_or_create_test_prompt(self) -> Optional[str]: method cleanup_test_prompt (line 71) | def cleanup_test_prompt(self, prompt_id: str) -> None: method test_create_prompt (line 84) | def test_create_prompt(self) -> bool: method test_create_prompt_validation (line 124) | def test_create_prompt_validation(self) -> bool: method test_get_prompts (line 166) | def test_get_prompts(self) -> bool: method test_get_prompts_with_pagination (line 198) | def test_get_prompts_with_pagination(self) -> bool: method test_get_single_prompt (line 232) | def test_get_single_prompt(self) -> bool: method test_get_single_prompt_not_found (line 275) | def test_get_single_prompt_not_found(self) -> bool: method test_update_prompt (line 308) | def test_update_prompt(self) -> bool: method test_delete_prompt (line 351) | def test_delete_prompt(self) -> bool: method run_all (line 395) | def run_all(self) -> bool: function main (line 424) | def main(): FILE: tests/integration/test_sources.py class SourceTests (line 43) | class SourceTests(DocsGPTTestBase): method get_or_create_test_source (line 50) | def get_or_create_test_source(self) -> Optional[dict]: method _get_source_id_by_name (line 105) | def _get_source_id_by_name(self, name: str) -> Optional[str]: method _wait_for_task (line 118) | def _wait_for_task(self, task_id: str, max_wait: int = 30) -> Optional... method test_upload_text_source (line 137) | def test_upload_text_source(self) -> bool: method test_upload_markdown_source (line 181) | def test_upload_markdown_source(self) -> bool: method test_remote_crawler_source (line 236) | def test_remote_crawler_source(self) -> bool: method test_get_sources (line 277) | def test_get_sources(self) -> bool: method test_get_sources_paginated (line 306) | def test_get_sources_paginated(self) -> bool: method test_task_status (line 339) | def test_task_status(self) -> bool: method test_get_chunks (line 387) | def test_get_chunks(self) -> bool: method test_add_chunk (line 422) | def test_add_chunk(self) -> bool: method test_delete_by_ids (line 465) | def test_delete_by_ids(self) -> bool: method test_directory_structure (line 507) | def test_directory_structure(self) -> bool: method test_combine (line 545) | def test_combine(self) -> bool: method test_manage_source_files (line 572) | def test_manage_source_files(self) -> bool: method run_all (line 614) | def run_all(self) -> bool: function main (line 667) | def main(): FILE: tests/integration/test_tools.py class ToolsTests (line 36) | class ToolsTests(DocsGPTTestBase): method get_or_create_test_tool (line 43) | def get_or_create_test_tool(self) -> Optional[str]: method cleanup_test_tool (line 80) | def cleanup_test_tool(self, tool_id: str) -> None: method test_create_tool (line 93) | def test_create_tool(self) -> bool: method test_create_tool_with_config (line 141) | def test_create_tool_with_config(self) -> bool: method test_get_tools (line 191) | def test_get_tools(self) -> bool: method test_get_available_tools (line 232) | def test_get_available_tools(self) -> bool: method test_update_tool (line 276) | def test_update_tool(self) -> bool: method test_update_tool_actions (line 313) | def test_update_tool_actions(self) -> bool: method test_update_tool_config (line 356) | def test_update_tool_config(self) -> bool: method test_update_tool_status (line 393) | def test_update_tool_status(self) -> bool: method test_delete_tool (line 433) | def test_delete_tool(self) -> bool: method run_all (line 481) | def run_all(self) -> bool: function main (line 511) | def main(): FILE: tests/llm/handlers/test_google.py class TestGoogleLLMHandler (line 9) | class TestGoogleLLMHandler: method test_handler_initialization (line 12) | def test_handler_initialization(self): method test_parse_response_string_input (line 18) | def test_parse_response_string_input(self): method test_parse_response_with_candidates_text_only (line 31) | def test_parse_response_with_candidates_text_only(self): method test_parse_response_with_multiple_text_parts (line 47) | def test_parse_response_with_multiple_text_parts(self): method test_parse_response_with_function_call (line 64) | def test_parse_response_with_function_call(self, mock_uuid): method test_parse_response_with_mixed_parts (line 90) | def test_parse_response_with_mixed_parts(self, mock_uuid): method test_parse_response_empty_candidates (line 115) | def test_parse_response_empty_candidates(self): method test_parse_response_parts_with_none_text (line 127) | def test_parse_response_parts_with_none_text(self): method test_parse_response_parts_without_text_attribute (line 141) | def test_parse_response_parts_without_text_attribute(self): method test_parse_response_direct_function_call (line 156) | def test_parse_response_direct_function_call(self, mock_uuid): method test_parse_response_direct_function_call_no_text (line 181) | def test_parse_response_direct_function_call_no_text(self): method test_create_tool_message (line 198) | def test_create_tool_message(self): method test_create_tool_message_string_result (line 226) | def test_create_tool_message_string_result(self): method test_iterate_stream (line 239) | def test_iterate_stream(self): method test_iterate_stream_empty (line 249) | def test_iterate_stream_empty(self): method test_iterate_stream_preserves_thought_events (line 257) | def test_iterate_stream_preserves_thought_events(self): method test_parse_response_parts_without_function_call_attribute (line 273) | def test_parse_response_parts_without_function_call_attribute(self): FILE: tests/llm/handlers/test_handler_creator.py class TestLLMHandlerCreator (line 8) | class TestLLMHandlerCreator: method test_create_openai_handler (line 11) | def test_create_openai_handler(self): method test_create_openai_handler_case_insensitive (line 18) | def test_create_openai_handler_case_insensitive(self): method test_create_google_handler (line 26) | def test_create_google_handler(self): method test_create_google_handler_case_insensitive (line 33) | def test_create_google_handler_case_insensitive(self): method test_create_default_handler (line 43) | def test_create_default_handler(self): method test_create_unknown_handler_fallback (line 49) | def test_create_unknown_handler_fallback(self): method test_create_anthropic_handler_fallback (line 55) | def test_create_anthropic_handler_fallback(self): method test_create_empty_string_handler_fallback (line 61) | def test_create_empty_string_handler_fallback(self): method test_handlers_registry (line 69) | def test_handlers_registry(self): method test_create_handler_with_args (line 79) | def test_create_handler_with_args(self): method test_create_handler_with_kwargs (line 87) | def test_create_handler_with_kwargs(self): method test_all_registered_handlers_are_valid (line 95) | def test_all_registered_handlers_are_valid(self): method test_handler_inheritance (line 104) | def test_handler_inheritance(self): method test_create_handler_preserves_handler_state (line 116) | def test_create_handler_preserves_handler_state(self): FILE: tests/llm/handlers/test_llm_handlers.py class TestToolCall (line 7) | class TestToolCall: method test_tool_call_creation (line 8) | def test_tool_call_creation(self): method test_tool_call_from_dict (line 17) | def test_tool_call_from_dict(self): method test_tool_call_from_dict_missing_fields (line 30) | def test_tool_call_from_dict_missing_fields(self): class TestLLMResponse (line 39) | class TestLLMResponse: method test_llm_response_creation (line 40) | def test_llm_response_creation(self): method test_requires_tool_call_true (line 53) | def test_requires_tool_call_true(self): method test_requires_tool_call_false_no_tools (line 63) | def test_requires_tool_call_false_no_tools(self): method test_requires_tool_call_false_wrong_finish_reason (line 69) | def test_requires_tool_call_false_wrong_finish_reason(self): class ConcreteHandler (line 80) | class ConcreteHandler(LLMHandler): method parse_response (line 81) | def parse_response(self, response: Any) -> LLMResponse: method create_tool_message (line 89) | def create_tool_message(self, tool_call: ToolCall, result: Any) -> Dict: method _iterate_stream (line 92) | def _iterate_stream(self, response: Any) -> Generator: class TestLLMHandler (line 97) | class TestLLMHandler: method test_handler_initialization (line 98) | def test_handler_initialization(self): method test_prepare_messages_no_attachments (line 103) | def test_prepare_messages_no_attachments(self): method test_prepare_messages_with_supported_attachments (line 111) | def test_prepare_messages_with_supported_attachments(self): method test_prepare_messages_with_unsupported_attachments (line 127) | def test_prepare_messages_with_unsupported_attachments(self, mock_logg... method test_prepare_messages_mixed_attachments (line 142) | def test_prepare_messages_mixed_attachments(self): method test_process_message_flow_non_streaming (line 163) | def test_process_message_flow_non_streaming(self): method test_process_message_flow_streaming (line 186) | def test_process_message_flow_streaming(self): FILE: tests/llm/handlers/test_openai.py class TestOpenAILLMHandler (line 7) | class TestOpenAILLMHandler: method test_handler_initialization (line 10) | def test_handler_initialization(self): method test_parse_response_string_input (line 16) | def test_parse_response_string_input(self): method test_parse_response_with_message_content (line 29) | def test_parse_response_with_message_content(self): method test_parse_response_with_delta_content (line 44) | def test_parse_response_with_delta_content(self): method test_parse_response_with_tool_calls (line 59) | def test_parse_response_with_tool_calls(self): method test_parse_response_with_multiple_tool_calls (line 83) | def test_parse_response_with_multiple_tool_calls(self): method test_parse_response_empty_tool_calls (line 103) | def test_parse_response_empty_tool_calls(self): method test_parse_response_missing_attributes (line 116) | def test_parse_response_missing_attributes(self): method test_create_tool_message (line 130) | def test_create_tool_message(self): method test_create_tool_message_string_result (line 159) | def test_create_tool_message_string_result(self): method test_iterate_stream (line 172) | def test_iterate_stream(self): method test_iterate_stream_empty (line 183) | def test_iterate_stream_empty(self): method test_iterate_stream_preserves_thought_events (line 191) | def test_iterate_stream_preserves_thought_events(self): method test_parse_response_tool_call_missing_attributes (line 207) | def test_parse_response_tool_call_missing_attributes(self): FILE: tests/llm/test_anthropic_llm.py class _FakeCompletion (line 7) | class _FakeCompletion: method __init__ (line 8) | def __init__(self, text): class _FakeCompletions (line 12) | class _FakeCompletions: method __init__ (line 13) | def __init__(self): method create (line 17) | def create(self, **kwargs): class _FakeAnthropic (line 24) | class _FakeAnthropic: method __init__ (line 25) | def __init__(self, api_key=None): function patch_anthropic (line 31) | def patch_anthropic(monkeypatch): function test_anthropic_raw_gen_builds_prompt_and_returns_completion (line 51) | def test_anthropic_raw_gen_builds_prompt_and_returns_completion(): function test_anthropic_raw_gen_stream_yields_chunks (line 70) | def test_anthropic_raw_gen_stream_yields_chunks(): FILE: tests/llm/test_google_llm.py class _FakePart (line 6) | class _FakePart: method __init__ (line 7) | def __init__(self, text=None, function_call=None, file_data=None, thou... method from_text (line 14) | def from_text(text): method from_function_call (line 18) | def from_function_call(name, args): method from_function_response (line 22) | def from_function_response(name, response): method from_uri (line 27) | def from_uri(file_uri, mime_type): class _FakeContent (line 32) | class _FakeContent: method __init__ (line 33) | def __init__(self, role, parts): class FakeTypesModule (line 38) | class FakeTypesModule: class ThinkingConfig (line 42) | class ThinkingConfig: method __init__ (line 43) | def __init__( class GenerateContentConfig (line 53) | class GenerateContentConfig: method __init__ (line 54) | def __init__(self): class FakeModels (line 62) | class FakeModels: method __init__ (line 63) | def __init__(self): class _Resp (line 67) | class _Resp: method __init__ (line 68) | def __init__(self, text=None, candidates=None): method generate_content (line 72) | def generate_content(self, *args, **kwargs): method generate_content_stream (line 76) | def generate_content_stream(self, *args, **kwargs): class FakeClient (line 84) | class FakeClient: method __init__ (line 85) | def __init__(self, *_, **__): function patch_google_modules (line 90) | def patch_google_modules(monkeypatch): function test_clean_messages_google_basic (line 97) | def test_clean_messages_google_basic(): function test_raw_gen_calls_google_client_and_returns_text (line 114) | def test_raw_gen_calls_google_client_and_returns_text(): function test_raw_gen_stream_yields_chunks (line 121) | def test_raw_gen_stream_yields_chunks(): function test_raw_gen_stream_does_not_set_thinking_config_by_default (line 128) | def test_raw_gen_stream_does_not_set_thinking_config_by_default(monkeypa... function test_raw_gen_stream_emits_thought_events (line 144) | def test_raw_gen_stream_emits_thought_events(monkeypatch): function test_raw_gen_stream_keeps_prefix_like_text_as_answer (line 178) | def test_raw_gen_stream_keeps_prefix_like_text_as_answer(monkeypatch): function test_prepare_structured_output_format_type_mapping (line 208) | def test_prepare_structured_output_format_type_mapping(): function test_prepare_messages_with_attachments_appends_files (line 224) | def test_prepare_messages_with_attachments_appends_files(monkeypatch): FILE: tests/llm/test_openai_llm.py class FakeChatCompletions (line 7) | class FakeChatCompletions: method __init__ (line 8) | def __init__(self): class _Msg (line 11) | class _Msg: method __init__ (line 12) | def __init__(self, content=None, tool_calls=None): class _Delta (line 16) | class _Delta: method __init__ (line 17) | def __init__(self, content=None, reasoning_content=None, tool_calls=... class _Choice (line 22) | class _Choice: method __init__ (line 23) | def __init__( class _StreamLine (line 39) | class _StreamLine: method __init__ (line 40) | def __init__(self, deltas): class _Response (line 56) | class _Response: method __init__ (line 57) | def __init__(self, choices=None, lines=None): method choices (line 62) | def choices(self): method __iter__ (line 65) | def __iter__(self): method create (line 69) | def create(self, **kwargs): class FakeClient (line 83) | class FakeClient: method __init__ (line 84) | def __init__(self): function openai_llm (line 89) | def openai_llm(monkeypatch): function test_clean_messages_openai_variants (line 101) | def test_clean_messages_openai_variants(openai_llm): function test_raw_gen_calls_openai_client_and_returns_content (line 144) | def test_raw_gen_calls_openai_client_and_returns_content(openai_llm): function test_raw_gen_stream_yields_chunks (line 161) | def test_raw_gen_stream_yields_chunks(openai_llm): function test_raw_gen_stream_emits_thought_events (line 174) | def test_raw_gen_stream_emits_thought_events(openai_llm): function test_raw_gen_stream_keeps_prefix_like_text_as_answer (line 194) | def test_raw_gen_stream_keeps_prefix_like_text_as_answer(openai_llm): function test_prepare_structured_output_format_enforces_required_and_strict (line 212) | def test_prepare_structured_output_format_enforces_required_and_strict(o... function test_prepare_messages_with_attachments_image_and_pdf (line 229) | def test_prepare_messages_with_attachments_image_and_pdf(openai_llm, mon... FILE: tests/llm/test_sagemaker.py class TestSagemakerAPILLM (line 8) | class TestSagemakerAPILLM(unittest.TestCase): method setUp (line 10) | def setUp(self): method test_gen (line 54) | def test_gen(self): method test_gen_stream (line 72) | def test_gen_stream(self): class TestLineIterator (line 87) | class TestLineIterator(unittest.TestCase): method setUp (line 89) | def setUp(self): method test_iter (line 97) | def test_iter(self): method test_next (line 100) | def test_next(self): FILE: tests/parser/file/test_audio_parser.py function test_audio_init_parser (line 8) | def test_audio_init_parser(): function test_audio_parser_transcribes_file (line 19) | def test_audio_parser_transcribes_file( function test_audio_parser_rejects_oversized_files (line 48) | def test_audio_parser_rejects_oversized_files(mock_limit_settings, tmp_p... function test_default_file_extractor_supports_audio_extensions (line 64) | def test_default_file_extractor_supports_audio_extensions(): FILE: tests/parser/file/test_docs_parser.py function pdf_parser (line 9) | def pdf_parser(): function docx_parser (line 14) | def docx_parser(): function test_pdf_init_parser (line 18) | def test_pdf_init_parser(): function test_docx_init_parser (line 26) | def test_docx_init_parser(): function test_parse_pdf_with_pypdf (line 35) | def test_parse_pdf_with_pypdf(mock_settings, pdf_parser): function test_parse_pdf_pypdf_import_error (line 70) | def test_parse_pdf_pypdf_import_error(mock_settings, pdf_parser): function test_parse_docx (line 88) | def test_parse_docx(docx_parser): function test_parse_docx_import_error (line 104) | def test_parse_docx_import_error(docx_parser): FILE: tests/parser/file/test_embedding_pipeline.py function test_sanitize_content_removes_nulls (line 13) | def test_sanitize_content_removes_nulls(): function test_sanitize_content_empty_or_none (line 20) | def test_sanitize_content_empty_or_none(): function test_add_text_to_store_with_retry_success (line 26) | def test_add_text_to_store_with_retry_success(): function mock_settings (line 40) | def mock_settings(monkeypatch): function mock_vector_creator (line 49) | def mock_vector_creator(monkeypatch): function test_embed_and_store_documents_creates_folder (line 58) | def test_embed_and_store_documents_creates_folder(tmp_path, mock_setting... function test_embed_and_store_documents_non_faiss (line 77) | def test_embed_and_store_documents_non_faiss(tmp_path, mock_settings, mo... function test_embed_and_store_documents_partial_failure (line 96) | def test_embed_and_store_documents_partial_failure( function test_embed_and_store_documents_save_fails_raises_oserror (line 122) | def test_embed_and_store_documents_save_fails_raises_oserror( FILE: tests/parser/file/test_epub_parser.py function epub_parser (line 11) | def epub_parser(): function test_epub_init_parser (line 15) | def test_epub_init_parser(): function test_epub_parser_ebooklib_import_error (line 23) | def test_epub_parser_ebooklib_import_error(epub_parser): function test_epub_parser_html2text_import_error (line 30) | def test_epub_parser_html2text_import_error(epub_parser): function test_epub_parser_successful_parsing (line 42) | def test_epub_parser_successful_parsing(epub_parser): function test_epub_parser_empty_book (line 93) | def test_epub_parser_empty_book(epub_parser): function test_epub_parser_non_document_items_ignored (line 121) | def test_epub_parser_non_document_items_ignored(epub_parser): FILE: tests/parser/file/test_html_parser.py function html_parser (line 12) | def html_parser(): function test_html_init_parser (line 16) | def test_html_init_parser(): function test_html_parser_parse_file (line 24) | def test_html_parser_parse_file(): FILE: tests/parser/file/test_image_parser.py function test_image_init_parser (line 7) | def test_image_init_parser(): function test_image_parser_remote_true (line 16) | def test_image_parser_remote_true(mock_settings): function test_image_parser_remote_false (line 32) | def test_image_parser_remote_false(mock_settings): FILE: tests/parser/file/test_json_parser.py function test_json_init_parser (line 7) | def test_json_init_parser(): function test_json_parser_parses_dict_concat (line 15) | def test_json_parser_parses_dict_concat(): function test_json_parser_parses_list_no_concat (line 23) | def test_json_parser_parses_list_no_concat(): function test_json_parser_row_joiner_config (line 33) | def test_json_parser_row_joiner_config(): function test_json_parser_forwards_json_config (line 41) | def test_json_parser_forwards_json_config(): FILE: tests/parser/file/test_markdown_parser.py class _Enc (line 10) | class _Enc: method encode (line 11) | def encode(self, s: str): function _patch_tokenizer (line 16) | def _patch_tokenizer(monkeypatch): function test_markdown_init_parser (line 19) | def test_markdown_init_parser(): function test_markdown_parse_file_basic_structure (line 27) | def test_markdown_parse_file_basic_structure(): function test_markdown_removes_links_and_images_in_parse (line 40) | def test_markdown_removes_links_and_images_in_parse(): function test_markdown_token_chunking_via_max_tokens (line 51) | def test_markdown_token_chunking_via_max_tokens(): FILE: tests/parser/file/test_pptx_parser.py function test_pptx_init_parser (line 8) | def test_pptx_init_parser(): function _fake_presentation_with (line 16) | def _fake_presentation_with(slides_shapes_texts): function test_pptx_parser_concat_true (line 30) | def test_pptx_parser_concat_true(): function test_pptx_parser_list_mode (line 43) | def test_pptx_parser_list_mode(): function test_pptx_parser_import_error (line 57) | def test_pptx_parser_import_error(): FILE: tests/parser/file/test_rst_parser.py function rst_parser (line 9) | def rst_parser(): function rst_parser_custom (line 14) | def rst_parser_custom(): function test_rst_init_parser (line 26) | def test_rst_init_parser(): function test_rst_parser_initialization_with_custom_options (line 34) | def test_rst_parser_initialization_with_custom_options(): function test_rst_parser_default_initialization (line 55) | def test_rst_parser_default_initialization(): function test_remove_hyperlinks (line 68) | def test_remove_hyperlinks(): function test_remove_images (line 76) | def test_remove_images(): function test_remove_directives (line 84) | def test_remove_directives(): function test_remove_interpreters (line 93) | def test_remove_interpreters(): function test_remove_table_excess (line 101) | def test_remove_table_excess(): function test_chunk_by_token_count (line 112) | def test_chunk_by_token_count(): function test_rst_to_tups_with_headers (line 126) | def test_rst_to_tups_with_headers(): function test_rst_to_tups_without_headers (line 157) | def test_rst_to_tups_without_headers(): function test_parse_file_basic (line 170) | def test_parse_file_basic(rst_parser): function test_parse_file_with_hyperlinks (line 195) | def test_parse_file_with_hyperlinks(rst_parser_custom): function test_parse_tups_with_max_tokens (line 207) | def test_parse_tups_with_max_tokens(): function test_parse_tups_without_max_tokens (line 226) | def test_parse_tups_without_max_tokens(): function test_parse_file_empty_content (line 245) | def test_parse_file_empty_content(): function test_all_cleaning_methods_applied (line 256) | def test_all_cleaning_methods_applied(): FILE: tests/parser/file/test_tabular_parser.py function csv_parser (line 9) | def csv_parser(): function pandas_csv_parser (line 14) | def pandas_csv_parser(): function excel_parser (line 19) | def excel_parser(): function test_csv_init_parser (line 22) | def test_csv_init_parser(): function test_pandas_csv_init_parser (line 30) | def test_pandas_csv_init_parser(): function test_excel_init_parser (line 38) | def test_excel_init_parser(): function test_csv_parser_concat_rows (line 46) | def test_csv_parser_concat_rows(csv_parser): function test_csv_parser_separate_rows (line 54) | def test_csv_parser_separate_rows(csv_parser): function test_pandas_csv_parser_concat_rows (line 65) | def test_pandas_csv_parser_concat_rows(pandas_csv_parser): function test_pandas_csv_parser_separate_rows (line 79) | def test_pandas_csv_parser_separate_rows(pandas_csv_parser): function test_pandas_csv_parser_header_period (line 89) | def test_pandas_csv_parser_header_period(pandas_csv_parser): function test_excel_parser_concat_rows (line 107) | def test_excel_parser_concat_rows(excel_parser): function test_excel_parser_separate_rows (line 121) | def test_excel_parser_separate_rows(excel_parser): function test_excel_parser_header_period (line 131) | def test_excel_parser_header_period(excel_parser): function test_csv_parser_import_error (line 147) | def test_csv_parser_import_error(csv_parser): function test_pandas_csv_parser_import_error (line 154) | def test_pandas_csv_parser_import_error(pandas_csv_parser): function test_pandas_csv_parser_header_period_zero (line 161) | def test_pandas_csv_parser_header_period_zero(pandas_csv_parser): function test_pandas_csv_parser_header_period_one (line 174) | def test_pandas_csv_parser_header_period_one(pandas_csv_parser): function test_pandas_csv_parser_passes_pandas_config (line 188) | def test_pandas_csv_parser_passes_pandas_config(): function test_excel_parser_custom_joiners_and_prefix (line 198) | def test_excel_parser_custom_joiners_and_prefix(excel_parser): function test_excel_parser_import_error (line 211) | def test_excel_parser_import_error(excel_parser): FILE: tests/parser/remote/test_crawler_loader.py class DummyResponse (line 8) | class DummyResponse: method __init__ (line 9) | def __init__(self, text: str) -> None: method raise_for_status (line 12) | def raise_for_status(self) -> None: function _mock_validate_url (line 16) | def _mock_validate_url(url): function test_load_data_crawls_same_domain_links (line 26) | def test_load_data_crawls_same_domain_links(mock_requests_get, mock_vali... function test_load_data_accepts_list_input_and_adds_scheme (line 93) | def test_load_data_accepts_list_input_and_adds_scheme(mock_requests_get,... function test_load_data_respects_limit (line 121) | def test_load_data_respects_limit(mock_requests_get, mock_validate_url): function test_load_data_logs_and_skips_on_loader_error (line 166) | def test_load_data_logs_and_skips_on_loader_error(mock_requests_get, moc... function test_load_data_returns_empty_on_ssrf_validation_failure (line 188) | def test_load_data_returns_empty_on_ssrf_validation_failure(mock_validat... function test_url_to_virtual_path_variants (line 200) | def test_url_to_virtual_path_variants(): FILE: tests/parser/remote/test_crawler_markdown.py class DummyResponse (line 12) | class DummyResponse: method __init__ (line 13) | def __init__(self, text): method raise_for_status (line 16) | def raise_for_status(self): function _fake_extract (line 20) | def _fake_extract(value: str) -> SimpleNamespace: function _mock_validate_url (line 33) | def _mock_validate_url(url): function _patch_validate_url (line 41) | def _patch_validate_url(monkeypatch): function _patch_tldextract (line 49) | def _patch_tldextract(monkeypatch): function _patch_markdownify (line 57) | def _patch_markdownify(monkeypatch): function _setup_session (line 70) | def _setup_session(mock_get_side_effect): function test_load_data_filters_external_links (line 76) | def test_load_data_filters_external_links(_patch_markdownify): function test_load_data_allows_subdomains (line 105) | def test_load_data_allows_subdomains(_patch_markdownify): function test_load_data_handles_fetch_errors (line 131) | def test_load_data_handles_fetch_errors(monkeypatch, _patch_markdownify,... function test_load_data_returns_empty_on_ssrf_validation_failure (line 157) | def test_load_data_returns_empty_on_ssrf_validation_failure(monkeypatch): FILE: tests/parser/remote/test_github_loader.py function make_response (line 9) | def make_response(json_data=None, status_code=200, raise_error=None): class TestGitHubLoaderFetchFileContent (line 20) | class TestGitHubLoaderFetchFileContent: method test_text_file_base64_decoded (line 22) | def test_text_file_base64_decoded(self, mock_get): method test_binary_file_skipped (line 37) | def test_binary_file_skipped(self, mock_get): method test_non_base64_plain_content (line 46) | def test_non_base64_plain_content(self, mock_get): method test_http_error_raises (line 55) | def test_http_error_raises(self, mock_get): class TestGitHubLoaderFetchRepoFiles (line 64) | class TestGitHubLoaderFetchRepoFiles: method test_recurses_directories (line 66) | def test_recurses_directories(self, mock_get): class TestGitHubLoaderLoadData (line 88) | class TestGitHubLoaderLoadData: method test_load_data_builds_documents_from_files (line 89) | def test_load_data_builds_documents_from_files(self, monkeypatch): class TestGitHubLoaderRobustness (line 119) | class TestGitHubLoaderRobustness: method test_fetch_repo_files_non_json_raises (line 121) | def test_fetch_repo_files_non_json_raises(self, mock_get): method test_fetch_repo_files_unexpected_shape_missing_type_raises (line 129) | def test_fetch_repo_files_unexpected_shape_missing_type_raises(self, m... method test_fetch_file_content_non_json_raises (line 136) | def test_fetch_file_content_non_json_raises(self, mock_get): method test_fetch_file_content_unexpected_shape_missing_content_returns_none (line 145) | def test_fetch_file_content_unexpected_shape_missing_content_returns_n... method test_large_binary_skip_does_not_decode (line 155) | def test_large_binary_skip_does_not_decode(self, mock_get, mock_b64dec... FILE: tests/parser/remote/test_reddit_loader.py class TestRedditPostsLoaderRemote (line 8) | class TestRedditPostsLoaderRemote: method test_invalid_json_raises (line 9) | def test_invalid_json_raises(self): method test_missing_required_fields_raises (line 15) | def test_missing_required_fields_raises(self): method test_constructs_loader_and_loads_with_defaults (line 24) | def test_constructs_loader_and_loads_with_defaults(self, MockRedditLoa... method test_constructs_loader_and_loads_with_overrides (line 54) | def test_constructs_loader_and_loads_with_overrides(self, MockRedditLo... FILE: tests/parser/remote/test_s3_loader.py function mock_boto3 (line 11) | def mock_boto3(): function s3_loader (line 19) | def s3_loader(mock_boto3): class TestS3LoaderInit (line 27) | class TestS3LoaderInit: method test_init_raises_import_error_when_boto3_missing (line 30) | def test_init_raises_import_error_when_boto3_missing(self): method test_init_sets_client_to_none (line 38) | def test_init_sets_client_to_none(self, mock_boto3): class TestNormalizeEndpointUrl (line 46) | class TestNormalizeEndpointUrl: method test_returns_unchanged_for_empty_endpoint (line 49) | def test_returns_unchanged_for_empty_endpoint(self, s3_loader): method test_returns_unchanged_for_none_endpoint (line 55) | def test_returns_unchanged_for_none_endpoint(self, s3_loader): method test_extracts_bucket_from_do_spaces_url (line 61) | def test_extracts_bucket_from_do_spaces_url(self, s3_loader): method test_extracts_bucket_overrides_provided_bucket (line 69) | def test_extracts_bucket_overrides_provided_bucket(self, s3_loader): method test_keeps_provided_bucket_when_matches_extracted (line 77) | def test_keeps_provided_bucket_when_matches_extracted(self, s3_loader): method test_returns_unchanged_for_standard_do_endpoint (line 85) | def test_returns_unchanged_for_standard_do_endpoint(self, s3_loader): method test_returns_unchanged_for_aws_endpoint (line 93) | def test_returns_unchanged_for_aws_endpoint(self, s3_loader): method test_handles_minio_endpoint (line 101) | def test_handles_minio_endpoint(self, s3_loader): class TestInitClient (line 110) | class TestInitClient: method test_init_client_creates_boto3_client (line 113) | def test_init_client_creates_boto3_client(self, s3_loader, mock_boto3): method test_init_client_with_custom_endpoint (line 127) | def test_init_client_with_custom_endpoint(self, s3_loader, mock_boto3): method test_init_client_normalizes_do_endpoint (line 141) | def test_init_client_normalizes_do_endpoint(self, s3_loader, mock_boto3): method test_init_client_returns_bucket_name (line 155) | def test_init_client_returns_bucket_name(self, s3_loader, mock_boto3): class TestIsTextFile (line 167) | class TestIsTextFile: method test_recognizes_common_text_extensions (line 170) | def test_recognizes_common_text_extensions(self, s3_loader): method test_rejects_binary_extensions (line 186) | def test_rejects_binary_extensions(self, s3_loader): method test_case_insensitive_matching (line 192) | def test_case_insensitive_matching(self, s3_loader): class TestIsSupportedDocument (line 199) | class TestIsSupportedDocument: method test_recognizes_document_extensions (line 202) | def test_recognizes_document_extensions(self, s3_loader): method test_rejects_non_document_extensions (line 216) | def test_rejects_non_document_extensions(self, s3_loader): method test_case_insensitive_matching (line 224) | def test_case_insensitive_matching(self, s3_loader): class TestListObjects (line 230) | class TestListObjects: method test_list_objects_returns_file_keys (line 233) | def test_list_objects_returns_file_keys(self, s3_loader, mock_boto3): method test_list_objects_with_prefix (line 257) | def test_list_objects_with_prefix(self, s3_loader): method test_list_objects_handles_empty_bucket (line 273) | def test_list_objects_handles_empty_bucket(self, s3_loader): method test_list_objects_raises_on_no_such_bucket (line 286) | def test_list_objects_raises_on_no_such_bucket(self, s3_loader): method test_list_objects_raises_on_access_denied (line 303) | def test_list_objects_raises_on_access_denied(self, s3_loader): method test_list_objects_raises_on_no_credentials (line 320) | def test_list_objects_raises_on_no_credentials(self, s3_loader): class TestGetObjectContent (line 335) | class TestGetObjectContent: method test_get_text_file_content (line 338) | def test_get_text_file_content(self, s3_loader): method test_skip_unsupported_file_types (line 354) | def test_skip_unsupported_file_types(self, s3_loader): method test_skip_empty_text_files (line 364) | def test_skip_empty_text_files(self, s3_loader): method test_returns_none_on_unicode_decode_error (line 377) | def test_returns_none_on_unicode_decode_error(self, s3_loader): method test_returns_none_on_no_such_key (line 390) | def test_returns_none_on_no_such_key(self, s3_loader): method test_returns_none_on_access_denied (line 403) | def test_returns_none_on_access_denied(self, s3_loader): method test_processes_document_files (line 416) | def test_processes_document_files(self, s3_loader): class TestLoadData (line 434) | class TestLoadData: method test_load_data_from_dict_input (line 437) | def test_load_data_from_dict_input(self, s3_loader, mock_boto3): method test_load_data_from_json_string (line 471) | def test_load_data_from_json_string(self, s3_loader, mock_boto3): method test_load_data_with_prefix (line 497) | def test_load_data_with_prefix(self, s3_loader, mock_boto3): method test_load_data_with_custom_region (line 521) | def test_load_data_with_custom_region(self, s3_loader, mock_boto3): method test_load_data_with_custom_endpoint (line 542) | def test_load_data_with_custom_endpoint(self, s3_loader, mock_boto3): method test_load_data_raises_on_invalid_json (line 563) | def test_load_data_raises_on_invalid_json(self, s3_loader): method test_load_data_raises_on_missing_required_fields (line 568) | def test_load_data_raises_on_missing_required_fields(self, s3_loader): method test_load_data_skips_unsupported_files (line 578) | def test_load_data_skips_unsupported_files(self, s3_loader, mock_boto3): method test_load_data_uses_corrected_bucket_from_endpoint (line 614) | def test_load_data_uses_corrected_bucket_from_endpoint(self, s3_loader... class TestProcessDocument (line 641) | class TestProcessDocument: method test_process_document_extracts_text (line 644) | def test_process_document_extracts_text(self, s3_loader): method test_process_document_returns_none_on_error (line 671) | def test_process_document_returns_none_on_error(self, s3_loader): method test_process_document_cleans_up_temp_file (line 693) | def test_process_document_cleans_up_temp_file(self, s3_loader): FILE: tests/parser/remote/test_share_point_loader.py function make_response (line 8) | def make_response(json_data=None, status_code=200, raise_error=None): class TestSharePointLoaderProcessFile (line 20) | class TestSharePointLoaderProcessFile: method test_size_retrieved_from_root_level (line 23) | def test_size_retrieved_from_root_level(self): method test_size_null_when_missing (line 45) | def test_size_null_when_missing(self): class TestSharePointLoaderLoadFileById (line 65) | class TestSharePointLoaderLoadFileById: method test_load_file_by_id_includes_size_in_select (line 72) | def test_load_file_by_id_includes_size_in_select(self, mock_ensure_tok... method test_load_file_by_id_returns_document_with_size (line 103) | def test_load_file_by_id_returns_document_with_size(self, mock_ensure_... class TestSharePointLoaderListItems (line 133) | class TestSharePointLoaderListItems: method test_list_items_includes_size_in_select (line 140) | def test_list_items_includes_size_in_select(self, mock_ensure_token, m... method test_list_items_folders_include_size (line 175) | def test_list_items_folders_include_size(self, mock_ensure_token, mock... FILE: tests/parser/remote/test_web_loader.py function web_loader (line 11) | def web_loader(): function mock_langchain_document (line 16) | def mock_langchain_document(): function mock_web_base_loader (line 25) | def mock_web_base_loader(): class TestWebLoaderInitialization (line 33) | class TestWebLoaderInitialization: method test_init (line 36) | def test_init(self, web_loader): class TestWebLoaderHeaders (line 43) | class TestWebLoaderHeaders: method test_headers_defined (line 46) | def test_headers_defined(self): method test_headers_values (line 57) | def test_headers_values(self): class TestWebLoaderLoadData (line 66) | class TestWebLoaderLoadData: method test_load_data_single_url_string (line 69) | def test_load_data_single_url_string(self, web_loader, mock_langchain_... method test_load_data_multiple_urls_list (line 90) | def test_load_data_multiple_urls_list(self, web_loader): method test_load_data_url_without_scheme (line 127) | def test_load_data_url_without_scheme(self, web_loader, mock_langchain... method test_load_data_url_with_scheme (line 145) | def test_load_data_url_with_scheme(self, web_loader, mock_langchain_do... method test_load_data_multiple_documents_per_url (line 162) | def test_load_data_multiple_documents_per_url(self, web_loader): class TestWebLoaderErrorHandling (line 189) | class TestWebLoaderErrorHandling: method test_load_data_single_url_error (line 193) | def test_load_data_single_url_error(self, mock_logging, web_loader): method test_load_data_partial_failure (line 212) | def test_load_data_partial_failure(self, mock_logging, web_loader): class TestWebLoaderEdgeCases (line 241) | class TestWebLoaderEdgeCases: method test_load_data_empty_list (line 244) | def test_load_data_empty_list(self, web_loader): method test_load_data_empty_response (line 249) | def test_load_data_empty_response(self, web_loader): method test_url_scheme_detection (line 263) | def test_url_scheme_detection(self): class TestWebLoaderIntegration (line 275) | class TestWebLoaderIntegration: method test_inherits_from_base_remote (line 278) | def test_inherits_from_base_remote(self, web_loader): method test_implements_load_data_method (line 283) | def test_implements_load_data_method(self, web_loader): method test_load_langchain_documents_method (line 288) | def test_load_langchain_documents_method(self, web_loader, mock_langch... FILE: tests/security/test_encryption.py function _fake_os_urandom_factory (line 10) | def _fake_os_urandom_factory(values): function test_derive_key_uses_secret_and_user (line 22) | def test_derive_key_uses_secret_and_user(monkeypatch): function test_encrypt_and_decrypt_round_trip (line 41) | def test_encrypt_and_decrypt_round_trip(monkeypatch): function test_encrypt_credentials_returns_empty_for_empty_input (line 61) | def test_encrypt_credentials_returns_empty_for_empty_input(monkeypatch): function test_encrypt_credentials_returns_empty_on_serialization_error (line 69) | def test_encrypt_credentials_returns_empty_on_serialization_error(monkey... function test_decrypt_credentials_returns_empty_for_invalid_input (line 82) | def test_decrypt_credentials_returns_empty_for_invalid_input(monkeypatch): function test_pad_and_unpad_are_inverse (line 93) | def test_pad_and_unpad_are_inverse(): FILE: tests/storage/test_local_storage.py function temp_base_dir (line 10) | def temp_base_dir(): function local_storage (line 15) | def local_storage(temp_base_dir): class TestLocalStorageInitialization (line 20) | class TestLocalStorageInitialization: method test_init_with_custom_base_dir (line 22) | def test_init_with_custom_base_dir(self): method test_init_with_default_base_dir (line 26) | def test_init_with_default_base_dir(self): method test_get_full_path_with_relative_path (line 31) | def test_get_full_path_with_relative_path(self, local_storage): method test_get_full_path_with_absolute_path (line 36) | def test_get_full_path_with_absolute_path(self, local_storage): method test_save_file_creates_directory_and_saves (line 43) | def test_save_file_creates_directory_and_saves( method test_save_file_with_save_method (line 70) | def test_save_file_with_save_method(self, mock_makedirs, local_storage): method test_save_file_with_absolute_path (line 86) | def test_save_file_with_absolute_path( class TestLocalStorageGetFile (line 99) | class TestLocalStorageGetFile: method test_get_file_returns_file_handle (line 103) | def test_get_file_returns_file_handle(self, mock_file, mock_exists, lo... method test_get_file_raises_error_when_not_found (line 120) | def test_get_file_raises_error_when_not_found(self, mock_exists, local... class TestLocalStorageDeleteFile (line 133) | class TestLocalStorageDeleteFile: method test_delete_file_removes_existing_file (line 137) | def test_delete_file_removes_existing_file( method test_delete_file_returns_false_when_not_found (line 156) | def test_delete_file_returns_false_when_not_found(self, mock_exists, l... class TestLocalStorageFileExists (line 170) | class TestLocalStorageFileExists: method test_file_exists_returns_true_when_file_found (line 173) | def test_file_exists_returns_true_when_file_found(self, mock_exists, l... method test_file_exists_returns_false_when_not_found (line 186) | def test_file_exists_returns_false_when_not_found(self, mock_exists, l... class TestLocalStorageListFiles (line 200) | class TestLocalStorageListFiles: method test_list_files_returns_all_files_in_directory (line 204) | def test_list_files_returns_all_files_in_directory( method test_list_files_returns_empty_list_when_directory_not_found (line 224) | def test_list_files_returns_empty_list_when_directory_not_found( class TestLocalStorageProcessFile (line 240) | class TestLocalStorageProcessFile: method test_process_file_calls_processor_with_full_path (line 243) | def test_process_file_calls_processor_with_full_path( method test_process_file_raises_error_when_file_not_found (line 261) | def test_process_file_raises_error_when_file_not_found( class TestLocalStorageIsDirectory (line 273) | class TestLocalStorageIsDirectory: method test_is_directory_returns_true_when_directory_exists (line 276) | def test_is_directory_returns_true_when_directory_exists( method test_is_directory_returns_false_when_not_directory (line 291) | def test_is_directory_returns_false_when_not_directory( class TestLocalStorageRemoveDirectory (line 307) | class TestLocalStorageRemoveDirectory: method test_remove_directory_deletes_directory (line 312) | def test_remove_directory_deletes_directory( method test_remove_directory_returns_false_when_not_exists (line 335) | def test_remove_directory_returns_false_when_not_exists( method test_remove_directory_returns_false_when_not_directory (line 351) | def test_remove_directory_returns_false_when_not_directory( method test_remove_directory_returns_false_on_os_error (line 372) | def test_remove_directory_returns_false_on_os_error( method test_remove_directory_returns_false_on_permission_error (line 389) | def test_remove_directory_returns_false_on_permission_error( FILE: tests/storage/test_s3_storage.py function mock_boto3_client (line 13) | def mock_boto3_client(): function s3_storage (line 22) | def s3_storage(mock_boto3_client): class TestS3StorageInitialization (line 27) | class TestS3StorageInitialization: method test_init_with_default_bucket (line 31) | def test_init_with_default_bucket(self): method test_init_with_custom_bucket (line 38) | def test_init_with_custom_bucket(self): method test_init_creates_boto3_client (line 45) | def test_init_creates_boto3_client(self): class TestS3StorageSaveFile (line 65) | class TestS3StorageSaveFile: method test_save_file_uploads_to_s3 (line 69) | def test_save_file_uploads_to_s3(self, s3_storage, mock_boto3_client): method test_save_file_with_custom_storage_class (line 92) | def test_save_file_with_custom_storage_class(self, s3_storage, mock_bo... method test_save_file_propagates_client_error (line 105) | def test_save_file_propagates_client_error(self, s3_storage, mock_boto... class TestS3StorageFileExists (line 119) | class TestS3StorageFileExists: method test_file_exists_returns_true_when_file_found (line 123) | def test_file_exists_returns_true_when_file_found( method test_file_exists_returns_false_on_client_error (line 138) | def test_file_exists_returns_false_on_client_error( class TestS3StorageGetFile (line 152) | class TestS3StorageGetFile: method test_get_file_downloads_and_returns_file_object (line 156) | def test_get_file_downloads_and_returns_file_object( method test_get_file_raises_error_when_file_not_found (line 177) | def test_get_file_raises_error_when_file_not_found( class TestS3StorageDeleteFile (line 190) | class TestS3StorageDeleteFile: method test_delete_file_returns_true_on_success (line 194) | def test_delete_file_returns_true_on_success(self, s3_storage, mock_bo... method test_delete_file_returns_false_on_client_error (line 207) | def test_delete_file_returns_false_on_client_error( class TestS3StorageListFiles (line 222) | class TestS3StorageListFiles: method test_list_files_returns_all_keys_with_prefix (line 226) | def test_list_files_returns_all_keys_with_prefix( method test_list_files_returns_empty_list_when_no_contents (line 257) | def test_list_files_returns_empty_list_when_no_contents( class TestS3StorageProcessFile (line 272) | class TestS3StorageProcessFile: method test_process_file_downloads_and_processes_file (line 276) | def test_process_file_downloads_and_processes_file( method test_process_file_raises_error_when_file_not_found (line 298) | def test_process_file_raises_error_when_file_not_found( class TestS3StorageIsDirectory (line 313) | class TestS3StorageIsDirectory: method test_is_directory_returns_true_when_objects_exist (line 317) | def test_is_directory_returns_true_when_objects_exist( method test_is_directory_returns_false_when_no_objects_exist (line 335) | def test_is_directory_returns_false_when_no_objects_exist( class TestS3StorageRemoveDirectory (line 348) | class TestS3StorageRemoveDirectory: method test_remove_directory_deletes_all_objects (line 352) | def test_remove_directory_deletes_all_objects(self, s3_storage, mock_b... method test_remove_directory_returns_false_when_empty (line 380) | def test_remove_directory_returns_false_when_empty( method test_remove_directory_returns_false_on_client_error (line 396) | def test_remove_directory_returns_false_on_client_error( FILE: tests/stt/test_live_session.py function test_strip_committed_prefix_removes_full_prefix_match (line 9) | def test_strip_committed_prefix_removes_full_prefix_match(): function test_strip_committed_prefix_removes_committed_suffix_overlap (line 19) | def test_strip_committed_prefix_removes_committed_suffix_overlap(): function test_apply_live_stt_hypothesis_keeps_initial_hypothesis_mutable (line 29) | def test_apply_live_stt_hypothesis_keeps_initial_hypothesis_mutable(): function test_apply_live_stt_hypothesis_commits_stable_prefix_beyond_mutable_tail (line 54) | def test_apply_live_stt_hypothesis_commits_stable_prefix_beyond_mutable_... function test_apply_live_stt_hypothesis_commits_more_aggressively_on_silence (line 87) | def test_apply_live_stt_hypothesis_commits_more_aggressively_on_silence(): function test_finalize_live_stt_session_returns_committed_and_mutable_text (line 110) | def test_finalize_live_stt_session_returns_committed_and_mutable_text(): function test_apply_live_stt_hypothesis_rejects_older_chunks (line 125) | def test_apply_live_stt_hypothesis_rejects_older_chunks(): FILE: tests/stt/test_stt_creator.py function stt_creator (line 8) | def stt_creator(): function test_create_openai_stt (line 12) | def test_create_openai_stt(stt_creator): function test_create_faster_whisper_stt (line 24) | def test_create_faster_whisper_stt(stt_creator): function test_invalid_stt_type (line 36) | def test_invalid_stt_type(stt_creator): function test_stt_type_case_insensitivity (line 42) | def test_stt_type_case_insensitivity(stt_creator): function test_stt_providers_integrity (line 54) | def test_stt_providers_integrity(stt_creator): FILE: tests/stt/test_upload_limits.py function test_should_reject_stt_request_when_content_length_exceeds_limit (line 12) | def test_should_reject_stt_request_when_content_length_exceeds_limit(moc... function test_enforce_audio_file_size_limit_uses_configured_message (line 26) | def test_enforce_audio_file_size_limit_uses_configured_message(mock_sett... function test_is_audio_filename_handles_supported_extensions (line 37) | def test_is_audio_filename_handles_supported_extensions(): FILE: tests/test_agent_token_tracking.py class MockAgent (line 8) | class MockAgent(BaseAgent): method _gen_inner (line 11) | def _gen_inner(self, query, log_context=None): function mock_agent (line 16) | def mock_agent(): function mock_llm_handler (line 29) | def mock_llm_handler(): class TestAgentTokenTracking (line 36) | class TestAgentTokenTracking: method test_calculate_current_context_tokens (line 39) | def test_calculate_current_context_tokens(self, mock_agent): method test_calculate_tokens_with_tool_calls (line 54) | def test_calculate_tokens_with_tool_calls(self, mock_agent): method test_check_context_limit_below_threshold (line 91) | def test_check_context_limit_below_threshold( method test_check_context_limit_above_threshold (line 113) | def test_check_context_limit_above_threshold( method test_check_context_limit_error_handling (line 131) | def test_check_context_limit_error_handling(self, mock_logger, mock_ag... method test_context_limit_flag_initialization (line 146) | def test_context_limit_flag_initialization(self, mock_agent): class TestLLMHandlerTokenTracking (line 155) | class TestLLMHandlerTokenTracking: method test_handle_tool_calls_stops_at_limit (line 159) | def test_handle_tool_calls_stops_at_limit(self, mock_logger): method test_handle_tool_calls_all_execute_when_no_limit (line 218) | def test_handle_tool_calls_all_execute_when_no_limit(self): method test_handle_streaming_adds_warning_message (line 261) | def test_handle_streaming_adds_warning_message(self, mock_logger): FILE: tests/test_app.py function test_app_config (line 10) | def test_app_config(): FILE: tests/test_attachment_worker_audio.py function test_attachment_worker_persists_transcript_metadata (line 7) | def test_attachment_worker_persists_transcript_metadata(mock_mongo_db): function test_attachment_worker_preserves_reader_metadata_for_audio (line 44) | def test_attachment_worker_preserves_reader_metadata_for_audio( FILE: tests/test_cache.py function test_make_gen_cache_key (line 10) | def test_make_gen_cache_key(): function test_gen_cache_key_invalid_message_format (line 28) | def test_gen_cache_key_invalid_message_format(): function test_gen_cache_hit (line 35) | def test_gen_cache_hit(mock_make_redis): function test_gen_cache_miss (line 56) | def test_gen_cache_miss(mock_make_redis): function test_stream_cache_hit (line 79) | def test_stream_cache_hit(mock_make_redis): function test_stream_cache_miss (line 102) | def test_stream_cache_miss(mock_make_redis): FILE: tests/test_celery.py function test_make_celery (line 10) | def test_make_celery(mock_celery): FILE: tests/test_compression_service.py function mock_llm (line 17) | def mock_llm(): function compression_service (line 25) | def compression_service(mock_llm): function threshold_checker (line 31) | def threshold_checker(): function prompt_builder (line 37) | def prompt_builder(): function sample_conversation (line 43) | def sample_conversation(): function large_conversation (line 80) | def large_conversation(): class TestCompressionService (line 104) | class TestCompressionService: method test_initialization (line 107) | def test_initialization(self, mock_llm): method test_should_compress_below_threshold (line 117) | def test_should_compress_below_threshold( method test_should_compress_above_threshold (line 131) | def test_should_compress_above_threshold( method test_should_compress_at_exact_threshold (line 146) | def test_should_compress_at_exact_threshold( method test_compress_conversation_basic (line 171) | def test_compress_conversation_basic(self, compression_service, sample... method test_compress_conversation_with_tool_calls (line 235) | def test_compress_conversation_with_tool_calls(self, compression_servi... method test_compress_conversation_invalid_index (line 273) | def test_compress_conversation_invalid_index( method test_get_compressed_context_no_compression (line 283) | def test_get_compressed_context_no_compression( method test_get_compressed_context_with_compression (line 294) | def test_get_compressed_context_with_compression(self, compression_ser... method test_get_compressed_context_multiple_compressions (line 329) | def test_get_compressed_context_multiple_compressions(self, compressio... method test_extract_summary_with_tags (line 367) | def test_extract_summary_with_tags(self, compression_service): method test_extract_summary_without_tags (line 387) | def test_extract_summary_without_tags(self, compression_service): method test_count_tokens_in_queries (line 395) | def test_count_tokens_in_queries(self, sample_conversation): method test_count_tokens_with_tool_calls (line 404) | def test_count_tokens_with_tool_calls(self): method test_format_conversation_for_compression (line 430) | def test_format_conversation_for_compression( method test_build_compression_prompt_basic (line 445) | def test_build_compression_prompt_basic(self, prompt_builder): method test_build_compression_prompt_with_existing_compressions (line 459) | def test_build_compression_prompt_with_existing_compressions( method test_calculate_conversation_tokens (line 487) | def test_calculate_conversation_tokens( method test_error_handling_in_should_compress (line 505) | def test_error_handling_in_should_compress( method test_error_handling_in_get_compressed_context (line 524) | def test_error_handling_in_get_compressed_context( method test_compression_points_array_limiting (line 542) | def test_compression_points_array_limiting(self, compression_service): method test_compression_with_heavy_tool_usage (line 589) | def test_compression_with_heavy_tool_usage(self, compression_service): method test_compression_with_needle_in_haystack (line 771) | def test_compression_with_needle_in_haystack(self, compression_service): FILE: tests/test_error.py function app (line 7) | def app(): function test_bad_request_with_message (line 13) | def test_bad_request_with_message(app): function test_bad_request_without_message (line 22) | def test_bad_request_without_message(app): function test_response_error_with_message (line 30) | def test_response_error_with_message(app): function test_response_error_without_message (line 39) | def test_response_error_without_message(app): FILE: tests/test_integration.py class Colors (line 29) | class Colors: function generate_default_token (line 41) | def generate_default_token() -> tuple[Optional[str], Optional[str]]: class DocsGPTTester (line 72) | class DocsGPTTester: method __init__ (line 73) | def __init__(self, base_url: str, token: Optional[str] = None, token_s... method print_header (line 83) | def print_header(self, message: str): method print_success (line 89) | def print_success(self, message: str): method print_error (line 93) | def print_error(self, message: str): method print_info (line 97) | def print_info(self, message: str): method print_warning (line 101) | def print_warning(self, message: str): method test_stream_endpoint (line 105) | def test_stream_endpoint(self, agent_id: Optional[str] = None) -> bool: method test_answer_endpoint (line 188) | def test_answer_endpoint(self, agent_id: Optional[str] = None) -> bool: method upload_text_source (line 252) | def upload_text_source(self) -> Optional[str]: method upload_crawler_source (line 351) | def upload_crawler_source(self) -> Optional[str]: method get_source_id_from_task (line 418) | def get_source_id_from_task(self, task_id: str) -> Optional[str]: method create_agent (line 453) | def create_agent(self, source_id: Optional[str] = None, published: boo... method test_api_key_endpoint (line 573) | def test_api_key_endpoint(self, api_key: str, endpoint_type: str = "st... method test_model_validation (line 667) | def test_model_validation(self) -> bool: method create_web_scraping_agent (line 741) | def create_web_scraping_agent(self) -> Optional[tuple]: method test_compression_heavy_tool_usage (line 820) | def test_compression_heavy_tool_usage(self, agent_result: Optional[tup... method test_compression_needle_in_haystack (line 932) | def test_compression_needle_in_haystack(self) -> bool: method print_summary (line 1070) | def print_summary(self): method run_all_tests (line 1089) | def run_all_tests(self): function main (line 1223) | def main(): FILE: tests/test_memory_tool.py function memory_tool (line 7) | def memory_tool(monkeypatch) -> MemoryTool: function test_init_without_user_id (line 166) | def test_init_without_user_id(): function test_view_empty_directory (line 174) | def test_view_empty_directory(memory_tool: MemoryTool) -> None: function test_create_and_view_file (line 181) | def test_create_and_view_file(memory_tool: MemoryTool) -> None: function test_create_overwrite_file (line 197) | def test_create_overwrite_file(memory_tool: MemoryTool) -> None: function test_view_directory_with_files (line 215) | def test_view_directory_with_files(memory_tool: MemoryTool) -> None: function test_view_file_with_line_range (line 234) | def test_view_file_with_line_range(memory_tool: MemoryTool) -> None: function test_str_replace (line 254) | def test_str_replace(memory_tool: MemoryTool) -> None: function test_str_replace_not_found (line 276) | def test_str_replace_not_found(memory_tool: MemoryTool) -> None: function test_insert_line (line 287) | def test_insert_line(memory_tool: MemoryTool) -> None: function test_insert_invalid_line (line 311) | def test_insert_invalid_line(memory_tool: MemoryTool) -> None: function test_delete_file (line 322) | def test_delete_file(memory_tool: MemoryTool) -> None: function test_delete_nonexistent_file (line 340) | def test_delete_nonexistent_file(memory_tool: MemoryTool) -> None: function test_delete_directory (line 347) | def test_delete_directory(memory_tool: MemoryTool) -> None: function test_rename_file (line 370) | def test_rename_file(memory_tool: MemoryTool) -> None: function test_rename_nonexistent_file (line 395) | def test_rename_nonexistent_file(memory_tool: MemoryTool) -> None: function test_rename_to_existing_file (line 404) | def test_rename_to_existing_file(memory_tool: MemoryTool) -> None: function test_path_traversal_protection (line 420) | def test_path_traversal_protection(memory_tool: MemoryTool) -> None: function test_path_must_start_with_slash (line 439) | def test_path_must_start_with_slash(memory_tool: MemoryTool) -> None: function test_cannot_create_directory_as_file (line 460) | def test_cannot_create_directory_as_file(memory_tool: MemoryTool) -> None: function test_get_actions_metadata (line 467) | def test_get_actions_metadata(memory_tool: MemoryTool) -> None: function test_memory_tool_isolation (line 490) | def test_memory_tool_isolation(monkeypatch) -> None: function test_memory_tool_auto_generates_tool_id (line 598) | def test_memory_tool_auto_generates_tool_id(monkeypatch) -> None: function test_paths_without_leading_slash (line 635) | def test_paths_without_leading_slash(memory_tool) -> None: function test_rename_directory (line 676) | def test_rename_directory(memory_tool: MemoryTool) -> None: function test_rename_directory_without_trailing_slash (line 708) | def test_rename_directory_without_trailing_slash(memory_tool: MemoryTool... function test_view_file_line_numbers (line 739) | def test_view_file_line_numbers(memory_tool: MemoryTool) -> None: FILE: tests/test_model_validation.py function test_model_with_base_url (line 18) | def test_model_with_base_url(): function test_model_without_base_url (line 43) | def test_model_without_base_url(): function test_validate_model_id (line 64) | def test_validate_model_id(): function test_get_base_url_for_model (line 82) | def test_get_base_url_for_model(): function test_model_validation_error_message (line 99) | def test_model_validation_error_message(): FILE: tests/test_notes_tool.py function notes_tool (line 7) | def notes_tool(monkeypatch) -> NotesTool: function test_view (line 85) | def test_view(notes_tool: NotesTool) -> None: function test_overwrite_and_delete (line 97) | def test_overwrite_and_delete(notes_tool: NotesTool) -> None: function test_init_without_user_id (line 113) | def test_init_without_user_id(monkeypatch): function test_view_not_found (line 121) | def test_view_not_found(notes_tool: NotesTool) -> None: function test_str_replace (line 128) | def test_str_replace(notes_tool: NotesTool) -> None: function test_str_replace_not_found (line 146) | def test_str_replace_not_found(notes_tool: NotesTool) -> None: function test_insert_line (line 154) | def test_insert_line(notes_tool: NotesTool) -> None: function test_delete_nonexistent_note (line 174) | def test_delete_nonexistent_note(monkeypatch): function test_notes_tool_isolation (line 190) | def test_notes_tool_isolation(monkeypatch) -> None: function test_notes_tool_auto_generates_tool_id (line 268) | def test_notes_tool_auto_generates_tool_id(monkeypatch) -> None: FILE: tests/test_openapi3parser.py function test_get_base_urls (line 21) | def test_get_base_urls(urls, expected_base_urls): function test_get_info_from_paths (line 26) | def test_get_info_from_paths(): function test_parse_file (line 37) | def test_parse_file(): FILE: tests/test_todo_tool.py class FakeCursor (line 6) | class FakeCursor(list): method sort (line 7) | def sort(self, key, direction): method limit (line 12) | def limit(self, count): method __iter__ (line 15) | def __iter__(self): method __next__ (line 18) | def __next__(self): class FakeCollection (line 24) | class FakeCollection: method __init__ (line 25) | def __init__(self): method _generate_id (line 29) | def _generate_id(self): method create_index (line 33) | def create_index(self, *args, **kwargs): method insert_one (line 36) | def insert_one(self, doc): method find_one (line 43) | def find_one(self, query): method find (line 47) | def find(self, query, projection=None): method update_one (line 56) | def update_one(self, query, update, upsert=False): method find_one_and_update (line 68) | def find_one_and_update(self, query, update): method find_one_and_delete (line 75) | def find_one_and_delete(self, query): method delete_one (line 81) | def delete_one(self, query): function todo_tool (line 90) | def todo_tool(monkeypatch) -> TodoListTool: function test_create_and_get (line 102) | def test_create_and_get(todo_tool: TodoListTool): function test_get_all_todos (line 113) | def test_get_all_todos(todo_tool: TodoListTool): function test_update_todo (line 122) | def test_update_todo(todo_tool: TodoListTool): function test_complete_todo (line 134) | def test_complete_todo(todo_tool: TodoListTool): function test_delete_todo (line 151) | def test_delete_todo(todo_tool: TodoListTool): function test_isolation_and_default_tool_id (line 163) | def test_isolation_and_default_tool_id(monkeypatch): FILE: tests/test_token_management.py class TestTokenBudgetManager (line 18) | class TestTokenBudgetManager: method test_calculate_budget (line 21) | def test_calculate_budget(self): method test_measure_usage (line 31) | def test_measure_usage(self): method test_compression_recommendation (line 49) | def test_compression_recommendation(self): class TestHistoryCompressor (line 70) | class TestHistoryCompressor: method test_sliding_window_compression (line 73) | def test_sliding_window_compression(self): method test_preserve_tool_calls (line 90) | def test_preserve_tool_calls(self): class TestDocumentCompressor (line 113) | class TestDocumentCompressor: method test_rerank_compression (line 116) | def test_rerank_compression(self): method test_excerpt_extraction (line 133) | def test_excerpt_extraction(self): class TestToolResultCompressor (line 155) | class TestToolResultCompressor: method test_truncate_large_results (line 158) | def test_truncate_large_results(self): method test_extract_json_fields (line 180) | def test_extract_json_fields(self): class TestPromptOptimizer (line 204) | class TestPromptOptimizer: method test_compress_tool_descriptions (line 207) | def test_compress_tool_descriptions(self): method test_lazy_load_tools (line 230) | def test_lazy_load_tools(self): function test_integration_compression_workflow (line 272) | def test_integration_compression_workflow(): FILE: tests/test_usage.py function test_count_tokens_includes_tool_call_payloads (line 14) | def test_count_tokens_includes_tool_call_payloads(): function test_gen_token_usage_counts_structured_tool_content (line 36) | def test_gen_token_usage_counts_structured_tool_content(monkeypatch): function test_stream_token_usage_counts_tool_call_chunks (line 100) | def test_stream_token_usage_counts_tool_call_chunks(monkeypatch): function test_gen_token_usage_counts_tools_and_image_inputs (line 161) | def test_gen_token_usage_counts_tools_and_image_inputs(monkeypatch): function test_stream_token_usage_counts_tools_and_image_inputs (line 219) | def test_stream_token_usage_counts_tools_and_image_inputs(monkeypatch): function test_update_token_usage_inserts_with_agent_id_only (line 279) | def test_update_token_usage_inserts_with_agent_id_only(monkeypatch): function test_update_token_usage_skips_when_all_ids_missing (line 306) | def test_update_token_usage_skips_when_all_ids_missing(monkeypatch): FILE: tests/test_zip_extraction_security.py class TestIsPathSafe (line 18) | class TestIsPathSafe: method test_safe_path_in_directory (line 21) | def test_safe_path_in_directory(self): method test_safe_path_in_subdirectory (line 25) | def test_safe_path_in_subdirectory(self): method test_unsafe_path_parent_traversal (line 29) | def test_unsafe_path_parent_traversal(self): method test_unsafe_path_absolute (line 33) | def test_unsafe_path_absolute(self): method test_unsafe_path_sibling (line 37) | def test_unsafe_path_sibling(self): method test_base_path_itself (line 41) | def test_base_path_itself(self): class TestValidateZipSafety (line 46) | class TestValidateZipSafety: method test_valid_small_zip (line 49) | def test_valid_small_zip(self): method test_zip_with_too_many_files (line 63) | def test_zip_with_too_many_files(self): method test_zip_with_path_traversal (line 79) | def test_zip_with_path_traversal(self): method test_corrupted_zip (line 97) | def test_corrupted_zip(self): class TestExtractZipRecursive (line 113) | class TestExtractZipRecursive: method test_extract_valid_zip (line 116) | def test_extract_valid_zip(self): method test_extract_nested_zip (line 137) | def test_extract_nested_zip(self): method test_respects_max_depth (line 170) | def test_respects_max_depth(self): method test_rejects_path_traversal (line 200) | def test_rejects_path_traversal(self): method test_handles_corrupted_zip_gracefully (line 219) | def test_handles_corrupted_zip_gracefully(self): class TestZipBombProtection (line 236) | class TestZipBombProtection: method test_detects_high_compression_ratio (line 239) | def test_detects_high_compression_ratio(self): method test_normal_compression_passes (line 258) | def test_normal_compression_passes(self): method test_size_limit_check (line 278) | def test_size_limit_check(self): FILE: tests/tts/test_elevenlabs_tts.py function test_elevenlabs_text_to_speech_monkeypatched_client (line 8) | def test_elevenlabs_text_to_speech_monkeypatched_client(monkeypatch): FILE: tests/tts/test_google_tts.py function test_google_tts_text_to_speech (line 6) | def test_google_tts_text_to_speech(monkeypatch): FILE: tests/tts/test_tts_creator.py function tts_creator (line 7) | def tts_creator(): function test_create_google_tts (line 11) | def test_create_google_tts(tts_creator): function test_create_elevenlabs_tts (line 24) | def test_create_elevenlabs_tts(tts_creator): function test_invalid_tts_type (line 37) | def test_invalid_tts_type(tts_creator): function test_tts_type_case_insensitivity (line 43) | def test_tts_type_case_insensitivity(tts_creator): function test_tts_providers_integrity (line 56) | def test_tts_providers_integrity(tts_creator):