SYMBOL INDEX (476 symbols across 78 files) FILE: backend/database.py class ChatDatabase (line 7) | class ChatDatabase: method __init__ (line 8) | def __init__(self, db_path: str = None): method init_database (line 20) | def init_database(self): method create_session (line 108) | def create_session(self, title: str, model: str) -> str: method get_sessions (line 124) | def get_sessions(self, limit: int = 50) -> List[Dict]: method get_session (line 141) | def get_session(self, session_id: str) -> Optional[Dict]: method add_message (line 157) | def add_message(self, session_id: str, content: str, sender: str, meta... method get_messages (line 184) | def get_messages(self, session_id: str, limit: int = 100) -> List[Dict]: method get_conversation_history (line 206) | def get_conversation_history(self, session_id: str) -> List[Dict]: method update_session_title (line 219) | def update_session_title(self, session_id: str, title: str): method delete_session (line 230) | def delete_session(self, session_id: str) -> bool: method cleanup_empty_sessions (line 243) | def cleanup_empty_sessions(self) -> int: method get_stats (line 272) | def get_stats(self) -> Dict: method add_document_to_session (line 302) | def add_document_to_session(self, session_id: str, file_path: str) -> ... method get_documents_for_session (line 315) | def get_documents_for_session(self, session_id: str) -> List[str]: method create_index (line 328) | def create_index(self, name: str, description: str|None = None, metada... method get_index (line 342) | def get_index(self, index_id: str) -> dict | None: method list_indexes (line 358) | def list_indexes(self) -> list[dict]: method add_document_to_index (line 374) | def add_document_to_index(self, index_id: str, filename: str, stored_p... method link_index_to_session (line 380) | def link_index_to_session(self, session_id: str, index_id: str): method get_indexes_for_session (line 386) | def get_indexes_for_session(self, session_id: str) -> list[str]: method delete_index (line 393) | def delete_index(self, index_id: str) -> bool: method update_index_metadata (line 428) | def update_index_metadata(self, index_id: str, updates: dict): method inspect_and_populate_index_metadata (line 443) | def inspect_and_populate_index_metadata(self, index_id: str) -> dict: function generate_session_title (line 639) | def generate_session_title(first_message: str, max_length: int = 50) -> ... FILE: backend/ollama_client.py class OllamaClient (line 6) | class OllamaClient: method __init__ (line 7) | def __init__(self, base_url: Optional[str] = None): method is_ollama_running (line 13) | def is_ollama_running(self) -> bool: method list_models (line 21) | def list_models(self) -> List[str]: method pull_model (line 33) | def pull_model(self, model_name: str) -> bool: method chat (line 57) | def chat(self, message: str, model: str = "llama3.2", conversation_his... method chat_stream (line 111) | def chat_stream(self, message: str, model: str = "llama3.2", conversat... function main (line 169) | def main(): FILE: backend/server.py class ReusableTCPServer (line 33) | class ReusableTCPServer(socketserver.TCPServer): class ChatHandler (line 36) | class ChatHandler(http.server.BaseHTTPRequestHandler): method __init__ (line 37) | def __init__(self, *args, **kwargs): method do_OPTIONS (line 41) | def do_OPTIONS(self): method do_GET (line 49) | def do_GET(self): method do_POST (line 84) | def do_POST(self): method do_DELETE (line 121) | def do_DELETE(self): method handle_chat (line 135) | def handle_chat(self): method handle_get_sessions (line 177) | def handle_get_sessions(self): method handle_cleanup_sessions (line 190) | def handle_cleanup_sessions(self): method handle_get_session (line 203) | def handle_get_session(self, session_id: str): method handle_get_session_documents (line 224) | def handle_get_session_documents(self, session_id: str): method handle_create_session (line 245) | def handle_create_session(self): method handle_session_chat (line 272) | def handle_session_chat(self, session_id: str): method _should_use_rag (line 342) | def _should_use_rag(self, message: str, idx_ids: List[str]) -> bool: method _load_document_overviews (line 368) | def _load_document_overviews(self, idx_ids: List[str]) -> List[str]: method _route_using_overviews (line 440) | def _route_using_overviews(self, query: str, overviews: List[str]) -> ... method _simple_pattern_routing (line 506) | def _simple_pattern_routing(self, message: str, idx_ids: List[str]) ->... method _handle_direct_llm_query (line 554) | def _handle_direct_llm_query(self, session_id: str, message: str, sess... method _handle_rag_query (line 582) | def _handle_rag_query(self, session_id: str, message: str, data: dict,... method handle_delete_session (line 647) | def handle_delete_session(self, session_id: str): method handle_file_upload (line 658) | def handle_file_upload(self, session_id: str): method handle_index_documents (line 698) | def handle_index_documents(self, session_id: str): method handle_pdf_upload (line 733) | def handle_pdf_upload(self, session_id: str): method handle_get_models (line 746) | def handle_get_models(self): method handle_get_indexes (line 784) | def handle_get_indexes(self): method handle_get_index (line 791) | def handle_get_index(self, index_id: str): method handle_create_index (line 801) | def handle_create_index(self): method handle_index_file_upload (line 842) | def handle_index_file_upload(self, index_id: str): method handle_build_index (line 863) | def handle_build_index(self, index_id: str): method handle_link_index_to_session (line 988) | def handle_link_index_to_session(self, session_id: str, index_id: str): method handle_get_session_indexes (line 995) | def handle_get_session_indexes(self, session_id: str): method handle_delete_index (line 1014) | def handle_delete_index(self, index_id: str): method handle_rename_session (line 1025) | def handle_rename_session(self, session_id: str): method send_json_response (line 1059) | def send_json_response(self, data, status_code: int = 200): method log_message (line 1078) | def log_message(self, format, *args): function main (line 1082) | def main(): FILE: backend/simple_pdf_processor.py class SimplePDFProcessor (line 13) | class SimplePDFProcessor: method __init__ (line 14) | def __init__(self, db_path: str = "chat_data.db"): method init_database (line 20) | def init_database(self): method extract_text_from_pdf (line 36) | def extract_text_from_pdf(self, pdf_bytes: bytes) -> str: method process_pdf (line 66) | def process_pdf(self, pdf_bytes: bytes, filename: str, session_id: str... method get_session_documents (line 114) | def get_session_documents(self, session_id: str) -> List[Dict[str, Any]]: method get_document_content (line 136) | def get_document_content(self, session_id: str) -> str: method delete_session_documents (line 166) | def delete_session_documents(self, session_id: str) -> bool: function initialize_simple_pdf_processor (line 192) | def initialize_simple_pdf_processor(): function get_simple_pdf_processor (line 202) | def get_simple_pdf_processor(): FILE: backend/test_backend.py function test_health_endpoint (line 8) | def test_health_endpoint(): function test_chat_endpoint (line 26) | def test_chat_endpoint(): function test_conversation_history (line 59) | def test_conversation_history(): function main (line 124) | def main(): FILE: backend/test_ollama_connectivity.py function test_ollama_connectivity (line 6) | def test_ollama_connectivity(): FILE: create_index_script.py class IndexCreator (line 36) | class IndexCreator: method __init__ (line 39) | def __init__(self, config_path: Optional[str] = None): method _load_config (line 58) | def _load_config(self, config_path: Optional[str] = None) -> dict: method get_user_input (line 70) | def get_user_input(self, prompt: str, default: str = "") -> str: method select_documents (line 77) | def select_documents(self) -> List[str]: method configure_processing (line 143) | def configure_processing(self) -> dict: method create_index_interactive (line 177) | def create_index_interactive(self) -> None: method test_index (line 239) | def test_index(self, index_id: str) -> None: method batch_create_from_config (line 260) | def batch_create_from_config(self, config_file: str) -> None: function create_sample_batch_config (line 314) | def create_sample_batch_config(): function main (line 342) | def main(): FILE: demo_batch_indexing.py class BatchIndexingDemo (line 45) | class BatchIndexingDemo: method __init__ (line 48) | def __init__(self, config_path: str): method _load_config (line 68) | def _load_config(self) -> Dict[str, Any]: method _merge_configurations (line 82) | def _merge_configurations(self) -> Dict[str, Any]: method validate_documents (line 102) | def validate_documents(self, documents: List[str]) -> List[str]: method create_indexes (line 127) | def create_indexes(self) -> List[str]: method create_single_index (line 139) | def create_single_index(self, index_config: Dict[str, Any]) -> Optiona... method demonstrate_features (line 197) | def demonstrate_features(self): method run_demo (line 220) | def run_demo(self): function create_sample_config (line 254) | def create_sample_config(): function main (line 333) | def main(): FILE: rag_system/__init__.py function _hf_auto_login (line 33) | def _hf_auto_login() -> None: FILE: rag_system/agent/loop.py class Agent (line 13) | class Agent: method __init__ (line 17) | def __init__(self, pipeline_configs: Dict[str, Dict], llm_client: Olla... method _load_overviews (line 55) | def _load_overviews(self, path: str): method load_overviews_for_indexes (line 74) | def load_overviews_for_indexes(self, idx_ids: list[str]): method _cosine_similarity (line 104) | def _cosine_similarity(self, v1: np.ndarray, v2: np.ndarray) -> float: method _find_in_semantic_cache (line 125) | def _find_in_semantic_cache(self, query_embedding: np.ndarray, session... method _format_query_with_history (line 152) | def _format_query_with_history(self, query: str, history: list) -> str: method _triage_query_async (line 171) | async def _triage_query_async(self, query: str, history: list) -> str: method _run_graph_query (line 221) | def _run_graph_query(self, query: str, history: list) -> Dict[str, Any]: method _get_cache_key (line 232) | def _get_cache_key(self, query: str, query_type: str) -> str: method _cache_result (line 237) | def _cache_result(self, cache_key: str, result: Dict[str, Any], sessio... method run (line 251) | def run(self, query: str, table_name: str = None, session_id: str = No... method _run_async (line 260) | async def _run_async(self, query: str, table_name: str = None, session... method _route_via_overviews (line 639) | def _route_via_overviews(self, query: str) -> str | None: FILE: rag_system/agent/verifier.py class VerificationResult (line 4) | class VerificationResult: method __init__ (line 5) | def __init__(self, is_grounded: bool, reasoning: str, verdict: str, co... class Verifier (line 11) | class Verifier: method __init__ (line 15) | def __init__(self, llm_client: OllamaClient, llm_model: str): method verify_async (line 23) | async def verify_async(self, query: str, context: str, answer: str) ->... FILE: rag_system/api_server.py function _apply_index_embedding_model (line 42) | def _apply_index_embedding_model(idx_ids): function _get_table_name_for_session (line 71) | def _get_table_name_for_session(session_id): class AdvancedRagApiHandler (line 115) | class AdvancedRagApiHandler(http.server.BaseHTTPRequestHandler): method do_OPTIONS (line 116) | def do_OPTIONS(self): method do_POST (line 124) | def do_POST(self): method do_GET (line 137) | def do_GET(self): method handle_chat (line 145) | def handle_chat(self): method handle_chat_stream (line 304) | def handle_chat_stream(self): method handle_index (line 501) | def handle_index(self): method handle_models (line 692) | def handle_models(self): method send_json_response (line 734) | def send_json_response(self, data, status_code=200): function start_server (line 743) | def start_server(port=8001): FILE: rag_system/api_server_with_progress.py class ServerSentEventsHandler (line 29) | class ServerSentEventsHandler: method add_connection (line 35) | def add_connection(cls, session_id: str, response_handler): method remove_connection (line 41) | def remove_connection(cls, session_id: str): method send_event (line 48) | def send_event(cls, session_id: str, event_type: str, data: Dict[str, ... class RealtimeProgressTracker (line 63) | class RealtimeProgressTracker(ProgressTracker): method __init__ (line 66) | def __init__(self, total_items: int, operation_name: str, session_id: ... method update (line 89) | def update(self, items_processed: int, errors: int = 0, current_step: ... method finish (line 116) | def finish(self): method _send_progress_update (line 132) | def _send_progress_update(self, final: bool = False): function run_indexing_with_progress (line 145) | def run_indexing_with_progress(file_paths: List[str], session_id: str): class EnhancedRagApiHandler (line 238) | class EnhancedRagApiHandler(http.server.BaseHTTPRequestHandler): method do_OPTIONS (line 241) | def do_OPTIONS(self): method do_GET (line 249) | def do_GET(self): method do_POST (line 260) | def do_POST(self): method handle_chat (line 271) | def handle_chat(self): method handle_index_with_progress (line 294) | def handle_index_with_progress(self): method handle_progress_status (line 340) | def handle_progress_status(self): method handle_progress_stream (line 360) | def handle_progress_stream(self): method send_json_response (line 404) | def send_json_response(self, data, status_code=200): function start_enhanced_server (line 413) | def start_enhanced_server(port=8000): FILE: rag_system/factory.py function get_agent (line 3) | def get_agent(mode: str = "default"): function get_indexing_pipeline (line 50) | def get_indexing_pipeline(mode: str = "default"): FILE: rag_system/indexing/contextualizer.py class ContextualEnricher (line 28) | class ContextualEnricher: method __init__ (line 33) | def __init__(self, llm_client: OllamaClient, llm_model: str, batch_siz... method _generate_summary (line 39) | def _generate_summary(self, local_context_text: str, chunk_text: str) ... method enrich_chunks (line 82) | def enrich_chunks(self, chunks: List[Dict[str, Any]], window_size: int... method enrich_chunks_sequential (line 146) | def enrich_chunks_sequential(self, chunks: List[Dict[str, Any]], windo... FILE: rag_system/indexing/embedders.py class LanceDBManager (line 8) | class LanceDBManager: method __init__ (line 9) | def __init__(self, db_path: str): method get_table (line 14) | def get_table(self, table_name: str): method create_table (line 17) | def create_table(self, table_name: str, schema: pa.Schema, mode: str =... class VectorIndexer (line 21) | class VectorIndexer: method __init__ (line 27) | def __init__(self, db_manager: LanceDBManager): method index (line 30) | def index(self, table_name: str, chunks: List[Dict[str, Any]], embeddi... FILE: rag_system/indexing/graph_extractor.py class GraphExtractor (line 5) | class GraphExtractor: method __init__ (line 9) | def __init__(self, llm_client: OllamaClient, llm_model: str): method extract (line 14) | def extract(self, chunks: List[Dict[str, Any]]) -> Dict[str, List[Dict]]: FILE: rag_system/indexing/latechunk.py class LateChunkEncoder (line 21) | class LateChunkEncoder: method __init__ (line 24) | def __init__(self, model_name: str = "Qwen/Qwen3-Embedding-0.6B", *, m... method encode (line 43) | def encode(self, text: str, chunk_spans: List[Tuple[int, int]]) -> Lis... FILE: rag_system/indexing/multimodal.py class LocalVisionModel (line 13) | class LocalVisionModel: method __init__ (line 17) | def __init__(self, model_name: str = "vidore/colqwen2-v1.0", device: s... method embed_image (line 26) | def embed_image(self, image: Image.Image) -> torch.Tensor: class MultimodalProcessor (line 36) | class MultimodalProcessor: method __init__ (line 40) | def __init__(self, vision_model: LocalVisionModel, text_embedder: Qwen... method process_and_index (line 46) | def process_and_index( FILE: rag_system/indexing/overview_builder.py class OverviewBuilder (line 8) | class OverviewBuilder: method __init__ (line 21) | def __init__(self, llm_client, model: str = "qwen3:0.6b", first_n_chun... method build_and_store (line 31) | def build_and_store(self, doc_id: str, chunks: List[Dict[str, Any]]): FILE: rag_system/indexing/representations.py class EmbeddingModel (line 8) | class EmbeddingModel(Protocol): method create_embeddings (line 9) | def create_embeddings(self, texts: List[str]) -> np.ndarray: ... class QwenEmbedder (line 15) | class QwenEmbedder(EmbeddingModel): method __init__ (line 19) | def __init__(self, model_name: str = "Qwen/Qwen3-Embedding-0.6B"): method create_embeddings (line 45) | def create_embeddings(self, texts: List[str]) -> np.ndarray: class EmbeddingGenerator (line 74) | class EmbeddingGenerator: method __init__ (line 75) | def __init__(self, embedding_model: EmbeddingModel, batch_size: int = ... method generate (line 79) | def generate(self, chunks: List[Dict[str, Any]]) -> List[np.ndarray]: class OllamaEmbedder (line 106) | class OllamaEmbedder(EmbeddingModel): method __init__ (line 108) | def __init__(self, model_name: str, host: str | None = None, timeout: ... method _embed_single (line 113) | def _embed_single(self, text: str): method create_embeddings (line 125) | def create_embeddings(self, texts: List[str]): function select_embedder (line 145) | def select_embedder(model_name: str, ollama_host: str | None = None): FILE: rag_system/ingestion/chunking.py class MarkdownRecursiveChunker (line 5) | class MarkdownRecursiveChunker: method __init__ (line 11) | def __init__(self, max_chunk_size: int = 1500, min_chunk_size: int = 2... method _token_len (line 29) | def _token_len(self, text: str) -> int: method _split_text (line 36) | def _split_text(self, text: str, separators: List[str]) -> List[str]: method chunk (line 80) | def chunk(self, text: str, document_id: str, document_metadata: Option... function create_contextual_window (line 128) | def create_contextual_window(all_chunks: List[Dict[str, Any]], chunk_ind... FILE: rag_system/ingestion/docling_chunker.py class DoclingChunker (line 19) | class DoclingChunker: method __init__ (line 20) | def __init__(self, *, max_tokens: int = 512, overlap: int = 1, tokeniz... method _token_len (line 40) | def _token_len(self, text: str) -> int: method split_markdown (line 47) | def split_markdown(self, markdown: str, *, document_id: str, metadata:... method chunk_document (line 88) | def chunk_document(self, doc, *, document_id: str, metadata: Dict[str,... method chunk (line 249) | def chunk(self, text: str, document_id: str, document_metadata: Dict[s... FILE: rag_system/ingestion/document_converter.py class DocumentConverter (line 8) | class DocumentConverter: method __init__ (line 24) | def __init__(self): method convert_to_markdown (line 54) | def convert_to_markdown(self, file_path: str) -> List[Tuple[str, Dict[... method _convert_pdf_to_markdown (line 77) | def _convert_pdf_to_markdown(self, pdf_path: str) -> List[Tuple[str, D... method _convert_txt_to_markdown (line 97) | def _convert_txt_to_markdown(self, file_path: str) -> List[Tuple[str, ... method _convert_general_to_markdown (line 113) | def _convert_general_to_markdown(self, file_path: str, input_format: I... method _perform_conversion (line 118) | def _perform_conversion(self, file_path: str, converter, format_msg: s... FILE: rag_system/main.py function get_agent (line 167) | def get_agent(mode: str = "default") -> Agent: function validate_model_config (line 211) | def validate_model_config(): function run_indexing (line 242) | def run_indexing(docs_path: str, config_mode: str = "default"): function run_chat (line 264) | def run_chat(query: str): function show_graph (line 283) | def show_graph(): function run_api_server (line 313) | def run_api_server(): function main (line 318) | def main(): FILE: rag_system/pipelines/indexing_pipeline.py class IndexingPipeline (line 13) | class IndexingPipeline: method __init__ (line 14) | def __init__(self, config: Dict[str, Any], ollama_client: OllamaClient... method run (line 131) | def run(self, file_paths: List[str] | None = None, *, documents: List[... method _print_final_statistics (line 341) | def _print_final_statistics(self, num_files: int, num_chunks: int): FILE: rag_system/pipelines/retrieval_pipeline.py class RetrievalPipeline (line 43) | class RetrievalPipeline: method __init__ (line 47) | def __init__(self, config: Dict[str, Any], ollama_client: OllamaClient... method _get_db_manager (line 66) | def _get_db_manager(self): method _get_text_embedder (line 75) | def _get_text_embedder(self): method _get_dense_retriever (line 84) | def _get_dense_retriever(self): method _get_bm25_retriever (line 106) | def _get_bm25_retriever(self): method _get_graph_retriever (line 120) | def _get_graph_retriever(self): method _get_reranker (line 125) | def _get_reranker(self): method _get_ai_reranker (line 135) | def _get_ai_reranker(self): method _get_sentence_pruner (line 163) | def _get_sentence_pruner(self): method _get_surrounding_chunks_lancedb (line 170) | def _get_surrounding_chunks_lancedb(self, chunk: Dict[str, Any], windo... method _synthesize_final_answer (line 219) | def _synthesize_final_answer(self, query: str, facts: str, *, event_ca... method run (line 259) | def run(self, query: str, table_name: str = None, window_size_override... method list_document_titles (line 515) | def list_document_titles(self, max_items: int = 25) -> List[str]: method retriever (line 558) | def retriever(self): method update_embedding_model (line 565) | def update_embedding_model(self, model_name: str): FILE: rag_system/rerankers/reranker.py class QwenReranker (line 5) | class QwenReranker: method __init__ (line 9) | def __init__(self, model_name: str = "BAAI/bge-reranker-base"): method _format_instruction (line 26) | def _format_instruction(self, query: str, doc: str): method rerank (line 30) | def rerank(self, query: str, documents: List[Dict[str, Any]], top_k: i... FILE: rag_system/rerankers/sentence_pruner.py class SentencePruner (line 20) | class SentencePruner: method __init__ (line 26) | def __init__(self, model_name: str = "naver/provence-reranker-debertav... method _ensure_model (line 33) | def _ensure_model(self) -> None: method prune_documents (line 58) | def prune_documents( FILE: rag_system/retrieval/query_transformer.py class QueryDecomposer (line 5) | class QueryDecomposer: method __init__ (line 6) | def __init__(self, llm_client: OllamaClient, llm_model: str): method decompose (line 10) | def decompose(self, query: str, chat_history: List[Dict[str, Any]] | N... class HyDEGenerator (line 294) | class HyDEGenerator: method __init__ (line 295) | def __init__(self, llm_client: OllamaClient, llm_model: str): method generate (line 299) | def generate(self, query: str) -> str: class GraphQueryTranslator (line 304) | class GraphQueryTranslator: method __init__ (line 305) | def __init__(self, llm_client: OllamaClient, llm_model: str): method _generate_translation_prompt (line 309) | def _generate_translation_prompt(self, query: str) -> str: method translate (line 321) | def translate(self, query: str) -> Dict[str, Any]: FILE: rag_system/retrieval/retrievers.py class GraphRetriever (line 27) | class GraphRetriever: method __init__ (line 28) | def __init__(self, graph_path: str): method retrieve (line 31) | def retrieve(self, query: str, k: int = 5, score_cutoff: int = 80) -> ... class MultiVectorRetriever (line 55) | class MultiVectorRetriever: method __init__ (line 59) | def __init__(self, db_manager: LanceDBManager, text_embedder: QwenEmbe... method retrieve (line 72) | def retrieve(self, text_query: str, table_name: str, k: int, reranker=... FILE: rag_system/utils/batch_processor.py function timer (line 12) | def timer(operation_name: str): class ProgressTracker (line 21) | class ProgressTracker: method __init__ (line 24) | def __init__(self, total_items: int, operation_name: str = "Processing"): method update (line 33) | def update(self, items_processed: int, errors: int = 0): method _report_progress (line 43) | def _report_progress(self): method finish (line 59) | def finish(self): class BatchProcessor (line 69) | class BatchProcessor: method __init__ (line 72) | def __init__(self, batch_size: int = 50, enable_gc: bool = True): method process_in_batches (line 76) | def process_in_batches( method batch_iterator (line 130) | def batch_iterator(self, items: List[Any]) -> Iterator[List[Any]]: class StreamingProcessor (line 135) | class StreamingProcessor: method __init__ (line 138) | def __init__(self, enable_gc_interval: int = 100): method process_streaming (line 141) | def process_streaming( function batch_chunks_by_document (line 189) | def batch_chunks_by_document(chunks: List[Dict[str, Any]]) -> Dict[str, ... function estimate_memory_usage (line 199) | def estimate_memory_usage(chunks: List[Dict[str, Any]]) -> float: function dummy_process_func (line 211) | def dummy_process_func(batch): FILE: rag_system/utils/logging_utils.py function log_query (line 15) | def log_query(query: str, sub_queries: List[str] | None = None) -> None: function log_retrieval_results (line 26) | def log_retrieval_results(results: List[Dict], k: int) -> None: FILE: rag_system/utils/ollama_client.py class OllamaClient (line 9) | class OllamaClient: method __init__ (line 13) | def __init__(self, host: str = "http://localhost:11434"): method _image_to_base64 (line 18) | def _image_to_base64(self, image: Image.Image) -> str: method generate_embedding (line 24) | def generate_embedding(self, model: str, text: str) -> List[float]: method generate_completion (line 36) | def generate_completion( method generate_completion_async (line 88) | async def generate_completion_async( method stream_completion (line 121) | def stream_completion( FILE: rag_system/utils/validate_model_config.py function print_header (line 27) | def print_header(title: str): function print_section (line 33) | def print_section(title: str): function validate_configuration_consistency (line 39) | def validate_configuration_consistency(): function print_model_usage_map (line 90) | def print_model_usage_map(): function test_validation_function (line 138) | def test_validation_function(): function check_pipeline_configurations (line 154) | def check_pipeline_configurations(): function main (line 179) | def main(): FILE: rag_system/utils/watsonx_client.py class WatsonXClient (line 8) | class WatsonXClient: method __init__ (line 13) | def __init__( method _image_to_base64 (line 55) | def _image_to_base64(self, image: Image.Image) -> str: method generate_embedding (line 61) | def generate_embedding(self, model: str, text: str) -> List[float]: method generate_completion (line 82) | def generate_completion( method generate_completion_async (line 149) | async def generate_completion_async( method stream_completion (line 177) | def stream_completion( FILE: run_system.py class ServiceConfig (line 40) | class ServiceConfig: class ColoredFormatter (line 50) | class ColoredFormatter(logging.Formatter): method format (line 71) | def format(self, record): class ServiceManager (line 85) | class ServiceManager: method __init__ (line 88) | def __init__(self, mode: str = "dev", logs_dir: str = "logs"): method setup_logging (line 107) | def setup_logging(self): method _get_service_configs (line 125) | def _get_service_configs(self) -> Dict[str, ServiceConfig]: method _signal_handler (line 168) | def _signal_handler(self, signum, frame): method is_port_in_use (line 174) | def is_port_in_use(self, port: int) -> bool: method check_prerequisites (line 187) | def check_prerequisites(self) -> bool: method _command_exists (line 213) | def _command_exists(self, command: str) -> bool: method ensure_models (line 222) | def ensure_models(self): method start_service (line 248) | def start_service(self, service_name: str, config: ServiceConfig) -> b... method _monitor_service_logs (line 305) | def _monitor_service_logs(self, service_name: str, process: subprocess... method health_check (line 337) | def health_check(self, service_name: str, config: ServiceConfig) -> bool: method start_all (line 346) | def start_all(self, skip_frontend: bool = False) -> bool: method _start_ollama (line 391) | def _start_ollama(self) -> bool: method _print_status_summary (line 406) | def _print_status_summary(self): method shutdown (line 428) | def shutdown(self): method _stop_service (line 442) | def _stop_service(self, service_name: str): method monitor (line 469) | def monitor(self): function main (line 491) | def main(): FILE: src/app/layout.tsx function RootLayout (line 20) | function RootLayout({ FILE: src/app/page.tsx function Home (line 3) | function Home() { FILE: src/components/IndexForm.tsx type Props (line 10) | interface Props { function IndexForm (line 15) | function IndexForm({ onClose, onIndexed }: Props) { FILE: src/components/IndexPicker.tsx type Props (line 4) | interface Props { function IndexPicker (line 9) | function IndexPicker({ onSelect, onClose }: Props) { FILE: src/components/IndexWizard.tsx type Props (line 5) | interface Props { function IndexWizard (line 9) | function IndexWizard({ onClose }: Props) { FILE: src/components/LandingMenu.tsx type Props (line 5) | interface Props { function LandingMenu (line 9) | function LandingMenu({ onSelect }: Props) { FILE: src/components/Markdown.tsx type MarkdownProps (line 12) | interface MarkdownProps { function Markdown (line 17) | function Markdown({ text, className = '' }: MarkdownProps) { FILE: src/components/ModelSelect.tsx type Props (line 4) | interface Props { function ModelSelect (line 12) | function ModelSelect({ value, onChange, type, className, placeholder }: ... FILE: src/components/SessionIndexInfo.tsx type Props (line 4) | interface Props { function SessionIndexInfo (line 9) | function SessionIndexInfo({ sessionId, onClose }: Props) { FILE: src/components/demo.tsx function Demo (line 14) | function Demo() { FILE: src/components/ui/AccordionGroup.tsx type Props (line 4) | interface Props { function AccordionGroup (line 10) | function AccordionGroup({ title, children, defaultOpen }: Props) { FILE: src/components/ui/GlassInput.tsx function GlassInput (line 4) | function GlassInput(props: InputHTMLAttributes) { FILE: src/components/ui/GlassSelect.tsx function GlassSelect (line 4) | function GlassSelect(props: SelectHTMLAttributes) { FILE: src/components/ui/GlassToggle.tsx type Props (line 4) | interface Props { function GlassToggle (line 9) | function GlassToggle({ checked, onChange }: Props) { FILE: src/components/ui/InfoTooltip.tsx type Props (line 4) | interface Props { function InfoTooltip (line 12) | function InfoTooltip({ text, className = "", size = 14 }: Props) { FILE: src/components/ui/avatar.tsx function Avatar (line 8) | function Avatar({ function AvatarImage (line 24) | function AvatarImage({ function AvatarFallback (line 37) | function AvatarFallback({ FILE: src/components/ui/badge.tsx function Badge (line 28) | function Badge({ FILE: src/components/ui/button.tsx function Button (line 38) | function Button({ FILE: src/components/ui/chat-bubble-demo.tsx function ChatBubbleVariants (line 28) | function ChatBubbleVariants() { function ChatBubbleAiLayout (line 48) | function ChatBubbleAiLayout() { function ChatBubbleStates (line 87) | function ChatBubbleStates() { FILE: src/components/ui/chat-bubble.tsx type ChatBubbleProps (line 9) | interface ChatBubbleProps { function ChatBubble (line 16) | function ChatBubble({ type ChatBubbleMessageProps (line 35) | interface ChatBubbleMessageProps { function ChatBubbleMessage (line 42) | function ChatBubbleMessage({ type ChatBubbleAvatarProps (line 67) | interface ChatBubbleAvatarProps { function ChatBubbleAvatar (line 73) | function ChatBubbleAvatar({ type ChatBubbleActionProps (line 86) | interface ChatBubbleActionProps { function ChatBubbleAction (line 92) | function ChatBubbleAction({ function ChatBubbleActionWrapper (line 109) | function ChatBubbleActionWrapper({ FILE: src/components/ui/chat-input.tsx type ChatInputProps (line 9) | interface ChatInputProps { function ChatInput (line 19) | function ChatInput({ FILE: src/components/ui/chat-settings-modal.tsx type ToggleOption (line 6) | interface ToggleOption { type SliderOption (line 13) | interface SliderOption { type DropdownOption (line 24) | interface DropdownOption { type SettingOption (line 32) | type SettingOption = ToggleOption | SliderOption | DropdownOption; type Props (line 34) | interface Props { function ChatSettingsModal (line 55) | function ChatSettingsModal({ options, onClose }: Props) { FILE: src/components/ui/conversation-page.tsx type ConversationPageProps (line 15) | interface ConversationPageProps { function Citation (line 32) | function Citation({doc, idx}: {doc:any, idx:number}){ function CitationsBlock (line 43) | function CitationsBlock({docs}:{docs:any[]}){ function StepIcon (line 70) | function StepIcon({ status }: { status: 'pending' | 'active' | 'done' | ... function ThinkingText (line 93) | function ThinkingText({ text }: { text: string }) { function StructuredMessageBlock (line 120) | function StructuredMessageBlock({ content }: { content: Array) { FILE: src/components/ui/textarea.tsx function Textarea (line 5) | function Textarea({ className, ...props }: React.ComponentProps<"textare... FILE: src/lib/api.ts constant API_BASE_URL (line 1) | const API_BASE_URL = 'http://localhost:8000'; type Step (line 16) | interface Step { type ChatMessage (line 23) | interface ChatMessage { type ChatSession (line 32) | interface ChatSession { type ChatRequest (line 41) | interface ChatRequest { type ChatResponse (line 50) | interface ChatResponse { type HealthResponse (line 56) | interface HealthResponse { type ModelsResponse (line 67) | interface ModelsResponse { type SessionResponse (line 72) | interface SessionResponse { type SessionChatResponse (line 77) | interface SessionChatResponse { class ChatAPI (line 84) | class ChatAPI { method checkHealth (line 85) | async checkHealth(): Promise { method sendMessage (line 98) | async sendMessage(request: ChatRequest): Promise { method messagesToHistory (line 125) | messagesToHistory(messages: ChatMessage[]): Array<{ role: 'user' | 'as... method getSessions (line 135) | async getSessions(): Promise { method createSession (line 148) | async createSession(title: string = 'New Chat', model: string = 'llama... method getSession (line 170) | async getSession(sessionId: string): Promise<{ session: ChatSession; m... method sendSessionMessage (line 183) | async sendSessionMessage( method deleteSession (line 240) | async deleteSession(sessionId: string): Promise<{ message: string; del... method renameSession (line 258) | async renameSession(sessionId: string, newTitle: string): Promise<{ me... method cleanupEmptySessions (line 280) | async cleanupEmptySessions(): Promise<{ message: string; cleanup_count... method uploadFiles (line 296) | async uploadFiles(sessionId: string, files: File[]): Promise<{ method indexDocuments (line 322) | async indexDocuments(sessionId: string): Promise<{ message: string }> { method uploadPDFs (line 343) | async uploadPDFs(sessionId: string, files: File[]): Promise<{ method convertDbMessage (line 396) | convertDbMessage(dbMessage: Record): ChatMessage { method createMessage (line 407) | createMessage( method getModels (line 422) | async getModels(): Promise { method getSessionDocuments (line 430) | async getSessionDocuments(sessionId: string): Promise<{ files: string[... method createIndex (line 440) | async createIndex(name: string, description?: string, metadata: Record... method uploadFilesToIndex (line 453) | async uploadFilesToIndex(indexId: string, files: File[]): Promise<{ me... method buildIndex (line 464) | async buildIndex(indexId: string, opts: { method linkIndexToSession (line 512) | async linkIndexToSession(sessionId: string, indexId: string): Promise<... method listIndexes (line 521) | async listIndexes(): Promise<{ indexes: any[]; total: number }> { method getSessionIndexes (line 529) | async getSessionIndexes(sessionId: string): Promise<{ indexes: any[]; ... method deleteIndex (line 535) | async deleteIndex(indexId: string): Promise<{ message: string }> { method streamSessionMessage (line 547) | async streamSessionMessage( FILE: src/lib/types.ts type AttachedFile (line 1) | interface AttachedFile { FILE: src/lib/utils.ts function cn (line 4) | function cn(...inputs: ClassValue[]) { FILE: src/utils/textNormalization.ts function normalizeWhitespace (line 6) | function normalizeWhitespace(text: string): string { function normalizeStreamingToken (line 30) | function normalizeStreamingToken(currentText: string, newToken: string):... function hasExcessiveWhitespace (line 45) | function hasExcessiveWhitespace(text: string): boolean { FILE: system_health_check.py function print_status (line 11) | def print_status(message, success=None): function check_imports (line 20) | def check_imports(): function check_configurations (line 31) | def check_configurations(): function check_agent_initialization (line 56) | def check_agent_initialization(): function check_embedding_model (line 69) | def check_embedding_model(agent): function check_database_access (line 93) | def check_database_access(): function check_sample_query (line 116) | def check_sample_query(agent): function main (line 146) | def main(): FILE: test_markdown_streaming.js function currentCleanup (line 45) | function currentCleanup(text) { function improvedCleanup (line 49) | function improvedCleanup(text) {