SYMBOL INDEX (1452 symbols across 246 files) FILE: api/auth.py class PasswordAuthMiddleware (line 12) | class PasswordAuthMiddleware(BaseHTTPMiddleware): method __init__ (line 19) | def __init__(self, app, excluded_paths: Optional[list] = None): method dispatch (line 30) | async def dispatch(self, request: Request, call_next): function check_api_password (line 82) | def check_api_password( FILE: api/chat_service.py class ChatService (line 13) | class ChatService: method __init__ (line 16) | def __init__(self): method get_sessions (line 24) | async def get_sessions(self, notebook_id: str) -> List[Dict[str, Any]]: method create_session (line 39) | async def create_session( method get_session (line 65) | async def get_session(self, session_id: str) -> Dict[str, Any]: method update_session (line 79) | async def update_session( method delete_session (line 110) | async def delete_session(self, session_id: str) -> Dict[str, Any]: method execute_chat (line 124) | async def execute_chat( method build_context (line 149) | async def build_context( FILE: api/client.py class APIClient (line 13) | class APIClient: method __init__ (line 16) | def __init__(self, base_url: Optional[str] = None): method _make_request (line 48) | def _make_request( method get_notebooks (line 80) | def get_notebooks( method create_notebook (line 91) | def create_notebook( method get_notebook (line 98) | def get_notebook( method update_notebook (line 104) | def update_notebook( method delete_notebook (line 110) | def delete_notebook( method search (line 117) | def search( method ask_simple (line 137) | def ask_simple( method get_models (line 157) | def get_models(self, model_type: Optional[str] = None) -> List[Dict[An... method create_model (line 165) | def create_model( method delete_model (line 176) | def delete_model( method get_default_models (line 182) | def get_default_models(self) -> Union[Dict[Any, Any], List[Dict[Any, A... method update_default_models (line 186) | def update_default_models( method get_transformations (line 193) | def get_transformations(self) -> List[Dict[Any, Any]]: method create_transformation (line 198) | def create_transformation( method get_transformation (line 216) | def get_transformation( method update_transformation (line 222) | def update_transformation( method delete_transformation (line 230) | def delete_transformation( method execute_transformation (line 236) | def execute_transformation( method get_notes (line 251) | def get_notes(self, notebook_id: Optional[str] = None) -> List[Dict[An... method create_note (line 259) | def create_note( method get_note (line 277) | def get_note(self, note_id: str) -> Union[Dict[Any, Any], List[Dict[An... method update_note (line 281) | def update_note( method delete_note (line 287) | def delete_note(self, note_id: str) -> Union[Dict[Any, Any], List[Dict... method embed_content (line 292) | def embed_content( method rebuild_embeddings (line 304) | def rebuild_embeddings( method get_rebuild_status (line 328) | def get_rebuild_status( method get_settings (line 335) | def get_settings(self) -> Union[Dict[Any, Any], List[Dict[Any, Any]]]: method update_settings (line 339) | def update_settings( method get_notebook_context (line 346) | def get_notebook_context( method get_sources (line 359) | def get_sources(self, notebook_id: Optional[str] = None) -> List[Dict[... method create_source (line 367) | def create_source( method get_source (line 413) | def get_source(self, source_id: str) -> Union[Dict[Any, Any], List[Dic... method get_source_status (line 417) | def get_source_status( method update_source (line 423) | def update_source( method delete_source (line 429) | def delete_source( method get_source_insights (line 436) | def get_source_insights(self, source_id: str) -> List[Dict[Any, Any]]: method get_insight (line 441) | def get_insight( method delete_insight (line 447) | def delete_insight( method save_insight_as_note (line 453) | def save_insight_as_note( method create_source_insight (line 464) | def create_source_insight( method get_episode_profiles (line 476) | def get_episode_profiles(self) -> List[Dict[Any, Any]]: method get_episode_profile (line 481) | def get_episode_profile( method create_episode_profile (line 487) | def create_episode_profile( method update_episode_profile (line 513) | def update_episode_profile( method delete_episode_profile (line 521) | def delete_episode_profile( FILE: api/command_service.py class CommandService (line 7) | class CommandService: method submit_command_job (line 11) | async def submit_command_job( method get_command_status (line 47) | async def get_command_status(job_id: str) -> Dict[str, Any]: method list_command_jobs (line 71) | async def list_command_jobs( method cancel_command_job (line 83) | async def cancel_command_job(job_id: str) -> bool: FILE: api/context_service.py class ContextService (line 12) | class ContextService: method __init__ (line 15) | def __init__(self): method get_notebook_context (line 18) | def get_notebook_context( FILE: api/credentials_service.py function validate_url (line 85) | def validate_url(url: str, provider: str) -> None: function require_encryption_key (line 192) | def require_encryption_key() -> None: function credential_to_response (line 201) | def credential_to_response(cred: Credential, model_count: int = 0) -> Cr... function check_env_configured (line 225) | def check_env_configured(provider: str) -> bool: function get_default_modalities (line 238) | def get_default_modalities(provider: str) -> List[str]: function create_credential_from_env (line 243) | def create_credential_from_env(provider: str) -> Credential: function get_provider_status (line 314) | async def get_provider_status() -> dict: function get_env_status (line 348) | async def get_env_status() -> Dict[str, bool]: function test_credential (line 356) | async def test_credential(credential_id: str) -> dict: function discover_with_config (line 468) | async def discover_with_config(provider: str, config: dict) -> List[dict]: function register_models (line 641) | async def register_models(credential_id: str, models_data: list) -> dict: function migrate_from_provider_config (line 686) | async def migrate_from_provider_config() -> dict: function migrate_from_env (line 794) | async def migrate_from_env() -> dict: FILE: api/embedding_service.py class EmbeddingService (line 12) | class EmbeddingService: method __init__ (line 15) | def __init__(self): method embed_content (line 18) | def embed_content( FILE: api/episode_profiles_service.py class EpisodeProfilesService (line 13) | class EpisodeProfilesService: method __init__ (line 16) | def __init__(self): method get_all_episode_profiles (line 19) | def get_all_episode_profiles(self) -> List[EpisodeProfile]: method get_episode_profile (line 40) | def get_episode_profile(self, profile_name: str) -> EpisodeProfile: method create_episode_profile (line 62) | def create_episode_profile( method delete_episode_profile (line 105) | def delete_episode_profile(self, profile_id: str) -> bool: FILE: api/insights_service.py class InsightsService (line 13) | class InsightsService: method __init__ (line 16) | def __init__(self): method get_source_insights (line 19) | def get_source_insights(self, source_id: str) -> List[SourceInsight]: method get_insight (line 35) | def get_insight(self, insight_id: str) -> SourceInsight: method delete_insight (line 53) | def delete_insight(self, insight_id: str) -> bool: method save_insight_as_note (line 58) | def save_insight_as_note( method create_source_insight (line 76) | def create_source_insight( FILE: api/main.py function lifespan (line 59) | async def lifespan(app: FastAPI): function custom_http_exception_handler (line 153) | async def custom_http_exception_handler(request: Request, exc: Starlette... function _cors_headers (line 177) | def _cors_headers(request: Request) -> dict[str, str]: function not_found_error_handler (line 188) | async def not_found_error_handler(request: Request, exc: NotFoundError): function invalid_input_error_handler (line 197) | async def invalid_input_error_handler(request: Request, exc: InvalidInpu... function authentication_error_handler (line 206) | async def authentication_error_handler(request: Request, exc: Authentica... function rate_limit_error_handler (line 215) | async def rate_limit_error_handler(request: Request, exc: RateLimitError): function configuration_error_handler (line 224) | async def configuration_error_handler(request: Request, exc: Configurati... function network_error_handler (line 233) | async def network_error_handler(request: Request, exc: NetworkError): function external_service_error_handler (line 242) | async def external_service_error_handler(request: Request, exc: External... function open_notebook_error_handler (line 251) | async def open_notebook_error_handler(request: Request, exc: OpenNoteboo... function root (line 286) | async def root(): function health (line 291) | async def health(): FILE: api/models.py class NotebookCreate (line 7) | class NotebookCreate(BaseModel): class NotebookUpdate (line 12) | class NotebookUpdate(BaseModel): class NotebookResponse (line 20) | class NotebookResponse(BaseModel): class SearchRequest (line 32) | class SearchRequest(BaseModel): class SearchResponse (line 43) | class SearchResponse(BaseModel): class AskRequest (line 49) | class AskRequest(BaseModel): class AskResponse (line 56) | class AskResponse(BaseModel): class ModelCreate (line 62) | class ModelCreate(BaseModel): class ModelResponse (line 76) | class ModelResponse(BaseModel): class DefaultModelsResponse (line 86) | class DefaultModelsResponse(BaseModel): class ProviderAvailabilityResponse (line 96) | class ProviderAvailabilityResponse(BaseModel): class TransformationCreate (line 105) | class TransformationCreate(BaseModel): class TransformationUpdate (line 117) | class TransformationUpdate(BaseModel): class TransformationResponse (line 131) | class TransformationResponse(BaseModel): class TransformationExecuteRequest (line 142) | class TransformationExecuteRequest(BaseModel): class TransformationExecuteResponse (line 152) | class TransformationExecuteResponse(BaseModel): class DefaultPromptResponse (line 161) | class DefaultPromptResponse(BaseModel): class DefaultPromptUpdate (line 167) | class DefaultPromptUpdate(BaseModel): class NoteCreate (line 174) | class NoteCreate(BaseModel): class NoteUpdate (line 183) | class NoteUpdate(BaseModel): class NoteResponse (line 189) | class NoteResponse(BaseModel): class EmbedRequest (line 200) | class EmbedRequest(BaseModel): class EmbedResponse (line 208) | class EmbedResponse(BaseModel): class RebuildRequest (line 219) | class RebuildRequest(BaseModel): class RebuildResponse (line 229) | class RebuildResponse(BaseModel): class RebuildProgress (line 235) | class RebuildProgress(BaseModel): class RebuildStats (line 241) | class RebuildStats(BaseModel): class RebuildStatusResponse (line 248) | class RebuildStatusResponse(BaseModel): class SettingsResponse (line 259) | class SettingsResponse(BaseModel): class SettingsUpdate (line 267) | class SettingsUpdate(BaseModel): class AssetModel (line 276) | class AssetModel(BaseModel): class SourceCreate (line 281) | class SourceCreate(BaseModel): method validate_notebook_fields (line 309) | def validate_notebook_fields(self): class SourceUpdate (line 328) | class SourceUpdate(BaseModel): class SourceResponse (line 333) | class SourceResponse(BaseModel): class SourceListResponse (line 352) | class SourceListResponse(BaseModel): class ContextConfig (line 370) | class ContextConfig(BaseModel): class ContextRequest (line 379) | class ContextRequest(BaseModel): class ContextResponse (line 386) | class ContextResponse(BaseModel): class SourceInsightResponse (line 394) | class SourceInsightResponse(BaseModel): class InsightCreationResponse (line 403) | class InsightCreationResponse(BaseModel): class SaveAsNoteRequest (line 413) | class SaveAsNoteRequest(BaseModel): class CreateSourceInsightRequest (line 417) | class CreateSourceInsightRequest(BaseModel): class SourceStatusResponse (line 427) | class SourceStatusResponse(BaseModel): class ErrorResponse (line 437) | class ErrorResponse(BaseModel): class SetApiKeyRequest (line 443) | class SetApiKeyRequest(BaseModel): method validate_not_empty_string (line 498) | def validate_not_empty_string(cls, v: Optional[str]) -> Optional[str]: class ApiKeyStatusResponse (line 508) | class ApiKeyStatusResponse(BaseModel): class TestConnectionResponse (line 524) | class TestConnectionResponse(BaseModel): class MigrateFromEnvRequest (line 532) | class MigrateFromEnvRequest(BaseModel): class MigrationResult (line 540) | class MigrationResult(BaseModel): class CreateCredentialRequest (line 557) | class CreateCredentialRequest(BaseModel): class UpdateCredentialRequest (line 581) | class UpdateCredentialRequest(BaseModel): class CredentialResponse (line 599) | class CredentialResponse(BaseModel): class CredentialDeleteResponse (line 622) | class CredentialDeleteResponse(BaseModel): class DiscoveredModelResponse (line 629) | class DiscoveredModelResponse(BaseModel): class DiscoverModelsResponse (line 638) | class DiscoverModelsResponse(BaseModel): class RegisterModelData (line 646) | class RegisterModelData(BaseModel): class RegisterModelsRequest (line 654) | class RegisterModelsRequest(BaseModel): class RegisterModelsResponse (line 660) | class RegisterModelsResponse(BaseModel): class NotebookDeletePreview (line 667) | class NotebookDeletePreview(BaseModel): class NotebookDeleteResponse (line 679) | class NotebookDeleteResponse(BaseModel): FILE: api/models_service.py class ModelsService (line 13) | class ModelsService: method __init__ (line 16) | def __init__(self): method get_all_models (line 19) | def get_all_models(self, model_type: Optional[str] = None) -> List[Mod... method create_model (line 36) | def create_model(self, name: str, provider: str, model_type: str) -> M... method delete_model (line 50) | def delete_model(self, model_id: str) -> bool: method get_default_models (line 55) | def get_default_models(self) -> DefaultModels: method update_default_models (line 78) | def update_default_models(self, defaults: DefaultModels) -> DefaultMod... FILE: api/notebook_service.py class NotebookService (line 13) | class NotebookService: method __init__ (line 16) | def __init__(self): method get_all_notebooks (line 19) | def get_all_notebooks(self, order_by: str = "updated desc") -> List[No... method get_notebook (line 36) | def get_notebook(self, notebook_id: str) -> Optional[Notebook]: method create_notebook (line 50) | def create_notebook(self, name: str, description: str = "") -> Notebook: method update_notebook (line 64) | def update_notebook(self, notebook: Notebook) -> Notebook: method delete_notebook (line 80) | def delete_notebook(self, notebook: Notebook) -> bool: FILE: api/notes_service.py class NotesService (line 13) | class NotesService: method __init__ (line 16) | def __init__(self): method get_all_notes (line 19) | def get_all_notes(self, notebook_id: Optional[str] = None) -> List[Note]: method get_note (line 36) | def get_note(self, note_id: str) -> Note: method create_note (line 52) | def create_note( method update_note (line 76) | def update_note(self, note: Note) -> Note: method delete_note (line 96) | def delete_note(self, note_id: str) -> bool: FILE: api/podcast_api_service.py class PodcastAPIService (line 13) | class PodcastAPIService: method __init__ (line 16) | def __init__(self): method get_episodes (line 20) | def get_episodes(self) -> List[Dict[Any, Any]]: method delete_episode (line 25) | def delete_episode(self, episode_id: str) -> bool: method get_episode_profiles (line 35) | def get_episode_profiles(self) -> List[Dict]: method create_episode_profile (line 39) | def create_episode_profile(self, profile_data: Dict) -> bool: method update_episode_profile (line 48) | def update_episode_profile(self, profile_id: str, profile_data: Dict) ... method delete_episode_profile (line 57) | def delete_episode_profile(self, profile_id: str) -> bool: method duplicate_episode_profile (line 66) | def duplicate_episode_profile(self, profile_id: str) -> bool: method get_speaker_profiles (line 78) | def get_speaker_profiles(self) -> List[Dict[Any, Any]]: method create_speaker_profile (line 83) | def create_speaker_profile(self, profile_data: Dict) -> bool: method update_speaker_profile (line 92) | def update_speaker_profile(self, profile_id: str, profile_data: Dict) ... method delete_speaker_profile (line 103) | def delete_speaker_profile(self, profile_id: str) -> bool: method duplicate_speaker_profile (line 112) | def duplicate_speaker_profile(self, profile_id: str) -> bool: FILE: api/podcast_service.py class PodcastGenerationRequest (line 12) | class PodcastGenerationRequest(BaseModel): class PodcastGenerationResponse (line 23) | class PodcastGenerationResponse(BaseModel): class PodcastService (line 33) | class PodcastService: method submit_generation_job (line 37) | async def submit_generation_job( method get_job_status (line 115) | async def get_job_status(job_id: str) -> Dict[str, Any]: method list_episodes (line 141) | async def list_episodes() -> list: method get_episode (line 153) | async def get_episode(episode_id: str) -> PodcastEpisode: class DefaultProfiles (line 163) | class DefaultProfiles: method create_default_episode_profiles (line 167) | async def create_default_episode_profiles(): method create_default_speaker_profiles (line 188) | async def create_default_speaker_profiles(): FILE: api/routers/auth.py function get_auth_status (line 14) | async def get_auth_status(): FILE: api/routers/chat.py class CreateSessionRequest (line 22) | class CreateSessionRequest(BaseModel): class UpdateSessionRequest (line 30) | class UpdateSessionRequest(BaseModel): class ChatMessage (line 37) | class ChatMessage(BaseModel): class ChatSessionResponse (line 44) | class ChatSessionResponse(BaseModel): class ChatSessionWithMessagesResponse (line 58) | class ChatSessionWithMessagesResponse(ChatSessionResponse): class ExecuteChatRequest (line 64) | class ExecuteChatRequest(BaseModel): class ExecuteChatResponse (line 75) | class ExecuteChatResponse(BaseModel): class BuildContextRequest (line 80) | class BuildContextRequest(BaseModel): class BuildContextResponse (line 85) | class BuildContextResponse(BaseModel): class SuccessResponse (line 91) | class SuccessResponse(BaseModel): function get_sessions (line 97) | async def get_sessions(notebook_id: str = Query(..., description="Notebo... function create_session (line 138) | async def create_session(request: CreateSessionRequest): function get_session (line 178) | async def get_session(session_id: str): function update_session (line 251) | async def update_session(session_id: str, request: UpdateSessionRequest): function delete_session (line 307) | async def delete_session(session_id: str): function execute_chat (line 331) | async def execute_chat(request: ExecuteChatRequest): function build_context (line 412) | async def build_context(request: BuildContextRequest): FILE: api/routers/commands.py class CommandExecutionRequest (line 13) | class CommandExecutionRequest(BaseModel): class CommandJobResponse (line 21) | class CommandJobResponse(BaseModel): class CommandJobStatusResponse (line 27) | class CommandJobStatusResponse(BaseModel): function execute_command (line 38) | async def execute_command(request: CommandExecutionRequest): function get_command_job_status (line 75) | async def get_command_job_status(job_id: str): function list_command_jobs (line 89) | async def list_command_jobs( function cancel_command_job (line 109) | async def cancel_command_job(job_id: str): function debug_registry (line 123) | async def debug_registry(): FILE: api/routers/config.py function get_version (line 31) | def get_version() -> str: function get_latest_version_cached (line 43) | async def get_latest_version_cached(current_version: str) -> tuple[Optio... function check_database_health (line 102) | async def check_database_health() -> dict: function get_config (line 124) | async def get_config(request: Request): FILE: api/routers/context.py function get_notebook_context (line 13) | async def get_notebook_context(notebook_id: str, context_request: Contex... FILE: api/routers/credentials.py function _handle_value_error (line 56) | def _handle_value_error(e: ValueError, status_code: int = 400) -> HTTPEx... function get_status (line 67) | async def get_status(): function get_env_status (line 80) | async def get_env_status(): function list_credentials (line 95) | async def list_credentials( function list_credentials_by_provider (line 118) | async def list_credentials_by_provider(provider: str): function create_credential (line 133) | async def create_credential(request: CreateCredentialRequest): function get_credential (line 177) | async def get_credential(credential_id: str): function update_credential (line 189) | async def update_credential(credential_id: str, request: UpdateCredentia... function delete_credential (line 249) | async def delete_credential( function test_credential (line 314) | async def test_credential(credential_id: str): function discover_models_for_credential (line 320) | async def discover_models_for_credential(credential_id: str): function register_models_for_credential (line 348) | async def register_models_for_credential( function migrate_from_provider_config (line 366) | async def migrate_from_provider_config(): function migrate_from_env (line 378) | async def migrate_from_env(): FILE: api/routers/embedding.py function embed_content (line 13) | async def embed_content(embed_request: EmbedRequest): FILE: api/routers/embedding_rebuild.py function start_rebuild (line 19) | async def start_rebuild(request: RebuildRequest): function get_rebuild_status (line 124) | async def get_rebuild_status(command_id: str): FILE: api/routers/episode_profiles.py class EpisodeProfileResponse (line 12) | class EpisodeProfileResponse(BaseModel): function _profile_to_response (line 29) | def _profile_to_response(profile: EpisodeProfile) -> EpisodeProfileRespo... function list_episode_profiles (line 48) | async def list_episode_profiles(): function get_episode_profile (line 61) | async def get_episode_profile(profile_name: str): class EpisodeProfileCreate (line 82) | class EpisodeProfileCreate(BaseModel): function create_episode_profile (line 101) | async def create_episode_profile(profile_data: EpisodeProfileCreate): function update_episode_profile (line 130) | async def update_episode_profile(profile_id: str, profile_data: EpisodeP... function delete_episode_profile (line 166) | async def delete_episode_profile(profile_id: str): function duplicate_episode_profile (line 192) | async def duplicate_episode_profile(profile_id: str): FILE: api/routers/insights.py function get_insight (line 12) | async def get_insight(insight_id: str): function delete_insight (line 38) | async def delete_insight(insight_id: str): function save_insight_as_note (line 56) | async def save_insight_as_note(insight_id: str, request: SaveAsNoteReque... FILE: api/routers/languages.py class LanguageResponse (line 32) | class LanguageResponse(BaseModel): function list_languages (line 38) | async def list_languages(): FILE: api/routers/models.py class DiscoveredModelResponse (line 36) | class DiscoveredModelResponse(BaseModel): class ProviderSyncResponse (line 45) | class ProviderSyncResponse(BaseModel): class AllProvidersSyncResponse (line 54) | class AllProvidersSyncResponse(BaseModel): class ProviderModelCountResponse (line 62) | class ProviderModelCountResponse(BaseModel): class AutoAssignResult (line 70) | class AutoAssignResult(BaseModel): class ModelTestResponse (line 78) | class ModelTestResponse(BaseModel): function _check_provider_has_credential (line 111) | async def _check_provider_has_credential(provider: str) -> bool: function _check_azure_support (line 121) | def _check_azure_support(mode: str) -> bool: function _check_openai_compatible_support (line 148) | def _check_openai_compatible_support(mode: str) -> bool: function get_models (line 166) | async def get_models( function create_model (line 194) | async def create_model(model_data: ModelCreate): function delete_model (line 249) | async def delete_model(model_id: str): function test_model (line 267) | async def test_model(model_id: str): function get_default_models (line 290) | async def get_default_models(): function update_default_models (line 312) | async def update_default_models(defaults_data: DefaultModelsResponse): function get_provider_availability (line 362) | async def get_provider_availability(): function discover_models (line 484) | async def discover_models(provider: str): function sync_models (line 513) | async def sync_models(provider: str): function sync_all_models (line 540) | async def sync_all_models(): function get_model_count (line 578) | async def get_model_count(provider: str): function get_models_by_provider (line 601) | async def get_models_by_provider(provider: str): function _get_preferred_model (line 634) | def _get_preferred_model( function auto_assign_defaults (line 679) | async def auto_assign_defaults(): FILE: api/routers/notebooks.py function get_notebooks (line 21) | async def get_notebooks( function create_notebook (line 63) | async def create_notebook(notebook: NotebookCreate): function get_notebook_delete_preview (line 94) | async def get_notebook_delete_preview(notebook_id: str): function get_notebook (line 121) | async def get_notebook(notebook_id: str): function update_notebook (line 157) | async def update_notebook(notebook_id: str, notebook_update: NotebookUpd... function add_source_to_notebook (line 219) | async def add_source_to_notebook(notebook_id: str, source_id: str): function remove_source_from_notebook (line 264) | async def remove_source_from_notebook(notebook_id: str, source_id: str): function delete_notebook (line 294) | async def delete_notebook( FILE: api/routers/notes.py function get_notes (line 14) | async def get_notes( function create_note (line 50) | async def create_note(note_data: NoteCreate): function get_note (line 111) | async def get_note(note_id: str): function update_note (line 134) | async def update_note(note_id: str, note_update: NoteUpdate): function delete_note (line 175) | async def delete_note(note_id: str): FILE: api/routers/podcasts.py class PodcastEpisodeResponse (line 19) | class PodcastEpisodeResponse(BaseModel): function _resolve_audio_path (line 34) | def _resolve_audio_path(audio_file: str) -> Path: function generate_podcast (line 42) | async def generate_podcast(request: PodcastGenerationRequest): function get_podcast_job_status (line 73) | async def get_podcast_job_status(job_id: str): function list_podcast_episodes (line 87) | async def list_podcast_episodes(): function get_podcast_episode (line 145) | async def get_podcast_episode(episode_id: str): function stream_podcast_episode_audio (line 191) | async def stream_podcast_episode_audio(episode_id: str): function retry_podcast_episode (line 216) | async def retry_podcast_episode(episode_id: str): function delete_podcast_episode (line 273) | async def delete_podcast_episode(episode_id: str): FILE: api/routers/search.py function search_knowledge_base (line 18) | async def search_knowledge_base(search_request: SearchRequest): function stream_ask_response (line 61) | async def stream_ask_response( function ask_knowledge_base (line 114) | async def ask_knowledge_base(ask_request: AskRequest): function ask_knowledge_base_simple (line 161) | async def ask_knowledge_base_simple(ask_request: AskRequest): FILE: api/routers/settings.py function get_settings (line 12) | async def get_settings(): function update_settings (line 32) | async def update_settings(settings_update: SettingsUpdate): FILE: api/routers/source_chat.py class CreateSourceChatSessionRequest (line 24) | class CreateSourceChatSessionRequest(BaseModel): class UpdateSourceChatSessionRequest (line 31) | class UpdateSourceChatSessionRequest(BaseModel): class ChatMessage (line 37) | class ChatMessage(BaseModel): class ContextIndicator (line 44) | class ContextIndicator(BaseModel): class SourceChatSessionResponse (line 55) | class SourceChatSessionResponse(BaseModel): class SourceChatSessionWithMessagesResponse (line 68) | class SourceChatSessionWithMessagesResponse(SourceChatSessionResponse): class SendMessageRequest (line 76) | class SendMessageRequest(BaseModel): class SuccessResponse (line 82) | class SuccessResponse(BaseModel): function create_source_chat_session (line 90) | async def create_source_chat_session( function get_source_chat_sessions (line 135) | async def get_source_chat_sessions(source_id: str = Path(..., descriptio... function get_source_chat_session (line 195) | async def get_source_chat_session( function update_source_chat_session (line 292) | async def update_source_chat_session( function delete_source_chat_session (line 363) | async def delete_source_chat_session( function stream_source_chat_response (line 415) | async def stream_source_chat_response( function send_message_to_source_chat (line 482) | async def send_message_to_source_chat( FILE: api/routers/sources.py function generate_unique_filename (line 41) | def generate_unique_filename(original_filename: str, upload_folder: str)... function save_uploaded_file (line 64) | async def save_uploaded_file(upload_file: UploadFile) -> str: function parse_source_form_data (line 88) | def parse_source_form_data( function get_sources (line 153) | async def get_sources( function create_source (line 281) | async def create_source( function create_source_json (line 555) | async def create_source_json(source_data: SourceCreate): function _resolve_source_file (line 562) | async def _resolve_source_file(source_id: str) -> tuple[str, str]: function _is_source_file_available (line 587) | def _is_source_file_available(source: Source) -> Optional[bool]: function get_source (line 602) | async def get_source(source_id: str): function check_source_file (line 662) | async def check_source_file(source_id: str): function download_source_file (line 675) | async def download_source_file(source_id: str): function get_source_status (line 692) | async def get_source_status(source_id: str): function update_source (line 754) | async def update_source(source_id: str, source_update: SourceUpdate): function retry_source_processing (line 796) | async def retry_source_processing(source_id: str): function delete_source (line 921) | async def delete_source(source_id: str): function get_source_insights (line 939) | async def get_source_insights(source_id: str): function create_source_insight (line 972) | async def create_source_insight(source_id: str, request: CreateSourceIns... FILE: api/routers/speaker_profiles.py class SpeakerProfileResponse (line 12) | class SpeakerProfileResponse(BaseModel): function _profile_to_response (line 23) | def _profile_to_response(profile: SpeakerProfile) -> SpeakerProfileRespo... function list_speaker_profiles (line 36) | async def list_speaker_profiles(): function get_speaker_profile (line 49) | async def get_speaker_profile(profile_name: str): class SpeakerProfileCreate (line 70) | class SpeakerProfileCreate(BaseModel): function create_speaker_profile (line 83) | async def create_speaker_profile(profile_data: SpeakerProfileCreate): function update_speaker_profile (line 106) | async def update_speaker_profile(profile_id: str, profile_data: SpeakerP... function delete_speaker_profile (line 136) | async def delete_speaker_profile(profile_id: str): function duplicate_speaker_profile (line 162) | async def duplicate_speaker_profile(profile_id: str): FILE: api/routers/transformations.py function get_transformations (line 24) | async def get_transformations(): function create_transformation (line 50) | async def create_transformation(transformation_data: TransformationCreate): function execute_transformation (line 82) | async def execute_transformation(execute_request: TransformationExecuteR... function get_default_prompt (line 122) | async def get_default_prompt(): function update_default_prompt (line 139) | async def update_default_prompt(prompt_update: DefaultPromptUpdate): function get_transformation (line 162) | async def get_transformation(transformation_id: str): function update_transformation (line 191) | async def update_transformation( function delete_transformation (line 236) | async def delete_transformation(transformation_id: str): FILE: api/search_service.py class SearchService (line 12) | class SearchService: method __init__ (line 15) | def __init__(self): method search (line 18) | def search( method ask_knowledge_base (line 40) | def ask_knowledge_base( FILE: api/settings_service.py class SettingsService (line 11) | class SettingsService: method __init__ (line 14) | def __init__(self): method get_settings (line 17) | def get_settings(self) -> ContentSettings: method update_settings (line 43) | def update_settings(self, settings: ContentSettings) -> ContentSettings: FILE: api/sources_service.py class SourceProcessingResult (line 15) | class SourceProcessingResult: class SourceWithMetadata (line 26) | class SourceWithMetadata: method id (line 34) | def id(self): method title (line 38) | def title(self): method title (line 42) | def title(self, value): method topics (line 46) | def topics(self): method asset (line 50) | def asset(self): method full_text (line 54) | def full_text(self): method created (line 58) | def created(self): method updated (line 62) | def updated(self): class SourcesService (line 66) | class SourcesService: method __init__ (line 69) | def __init__(self): method get_all_sources (line 72) | def get_all_sources( method get_source (line 103) | def get_source(self, source_id: str) -> SourceWithMetadata: method create_source (line 128) | def create_source( method get_source_status (line 219) | def get_source_status(self, source_id: str) -> Dict: method create_source_async (line 224) | def create_source_async( method is_source_processing_complete (line 267) | def is_source_processing_complete(self, source_id: str) -> bool: method update_source (line 286) | def update_source(self, source: Source) -> Source: method delete_source (line 309) | def delete_source(self, source_id: str) -> bool: FILE: api/transformations_service.py class TransformationsService (line 14) | class TransformationsService: method __init__ (line 17) | def __init__(self): method get_all_transformations (line 20) | def get_all_transformations(self) -> List[Transformation]: method get_transformation (line 43) | def get_transformation(self, transformation_id: str) -> Transformation: method create_transformation (line 63) | def create_transformation( method update_transformation (line 96) | def update_transformation(self, transformation: Transformation) -> Tra... method delete_transformation (line 123) | def delete_transformation(self, transformation_id: str) -> bool: method execute_transformation (line 128) | def execute_transformation( FILE: commands/embedding_commands.py function full_model_dump (line 16) | def full_model_dump(model): function get_command_id (line 27) | def get_command_id(input_data: CommandInput) -> str: class RebuildEmbeddingsInput (line 34) | class RebuildEmbeddingsInput(CommandInput): class RebuildEmbeddingsOutput (line 41) | class RebuildEmbeddingsOutput(CommandOutput): class CreateInsightInput (line 58) | class CreateInsightInput(CommandInput): class CreateInsightOutput (line 66) | class CreateInsightOutput(CommandOutput): class EmbedNoteInput (line 75) | class EmbedNoteInput(CommandInput): class EmbedNoteOutput (line 81) | class EmbedNoteOutput(CommandOutput): class EmbedInsightInput (line 90) | class EmbedInsightInput(CommandInput): class EmbedInsightOutput (line 96) | class EmbedInsightOutput(CommandOutput): class EmbedSourceInput (line 105) | class EmbedSourceInput(CommandInput): class EmbedSourceOutput (line 111) | class EmbedSourceOutput(CommandOutput): function embed_note_command (line 133) | async def embed_note_command(input_data: EmbedNoteInput) -> EmbedNoteOut... function embed_insight_command (line 225) | async def embed_insight_command(input_data: EmbedInsightInput) -> EmbedI... function embed_source_command (line 319) | async def embed_source_command(input_data: EmbedSourceInput) -> EmbedSou... function create_insight_command (line 455) | async def create_insight_command( function collect_items_for_rebuild (line 549) | async def collect_items_for_rebuild( function rebuild_embeddings_command (line 623) | async def rebuild_embeddings_command( FILE: commands/example_commands.py class TextProcessingInput (line 10) | class TextProcessingInput(BaseModel): class TextProcessingOutput (line 16) | class TextProcessingOutput(BaseModel): class DataAnalysisInput (line 25) | class DataAnalysisInput(BaseModel): class DataAnalysisOutput (line 31) | class DataAnalysisOutput(BaseModel): function process_text_command (line 44) | async def process_text_command(input_data: TextProcessingInput) -> TextP... function analyze_data_command (line 95) | async def analyze_data_command(input_data: DataAnalysisInput) -> DataAna... FILE: commands/podcast_commands.py function build_episode_output_dir (line 26) | def build_episode_output_dir(data_folder: str) -> tuple[str, Path]: function full_model_dump (line 40) | def full_model_dump(model): class PodcastGenerationInput (line 51) | class PodcastGenerationInput(CommandInput): class PodcastGenerationOutput (line 59) | class PodcastGenerationOutput(CommandOutput): function generate_podcast_command (line 70) | async def generate_podcast_command( FILE: commands/source_commands.py function full_model_dump (line 21) | def full_model_dump(model): class SourceProcessingInput (line 32) | class SourceProcessingInput(CommandInput): class SourceProcessingOutput (line 40) | class SourceProcessingOutput(CommandOutput): function process_source_command (line 61) | async def process_source_command( class RunTransformationInput (line 164) | class RunTransformationInput(CommandInput): class RunTransformationOutput (line 171) | class RunTransformationOutput(CommandOutput): function run_transformation_command (line 193) | async def run_transformation_command( FILE: frontend/next.config.ts method rewrites (line 18) | async rewrites() { FILE: frontend/src/app/(auth)/login/page.tsx function LoginPage (line 4) | function LoginPage() { FILE: frontend/src/app/(dashboard)/advanced/components/RebuildEmbeddings.tsx function RebuildEmbeddings (line 23) | function RebuildEmbeddings() { FILE: frontend/src/app/(dashboard)/advanced/components/SystemInfo.tsx function SystemInfo (line 9) | function SystemInfo() { FILE: frontend/src/app/(dashboard)/advanced/page.tsx function AdvancedPage (line 8) | function AdvancedPage() { FILE: frontend/src/app/(dashboard)/layout.tsx function DashboardLayout (line 13) | function DashboardLayout({ FILE: frontend/src/app/(dashboard)/notebooks/[id]/page.tsx type ContextMode (line 21) | type ContextMode = 'off' | 'insights' | 'full' type ContextSelections (line 23) | interface ContextSelections { function NotebookPage (line 28) | function NotebookPage() { FILE: frontend/src/app/(dashboard)/notebooks/components/ChatColumn.test.tsx function createNotesMock (line 15) | function createNotesMock(overrides: { isLoading?: boolean } = {}) { function createChatMock (line 23) | function createChatMock() { FILE: frontend/src/app/(dashboard)/notebooks/components/ChatColumn.tsx type ChatColumnProps (line 14) | interface ChatColumnProps { function ChatColumn (line 21) | function ChatColumn({ notebookId, contextSelections, sources, sourcesLoa... FILE: frontend/src/app/(dashboard)/notebooks/components/NoteEditorDialog.tsx type CreateNoteFormData (line 22) | type CreateNoteFormData = z.infer type NoteEditorDialogProps (line 24) | interface NoteEditorDialogProps { function NoteEditorDialog (line 31) | function NoteEditorDialog({ open, onOpenChange, notebookId, note }: Note... FILE: frontend/src/app/(dashboard)/notebooks/components/NotebookCard.tsx type NotebookCardProps (line 21) | interface NotebookCardProps { function NotebookCard (line 25) | function NotebookCard({ notebook }: NotebookCardProps) { FILE: frontend/src/app/(dashboard)/notebooks/components/NotebookDeleteDialog.tsx type NotebookDeleteDialogProps (line 21) | interface NotebookDeleteDialogProps { function NotebookDeleteDialog (line 29) | function NotebookDeleteDialog({ FILE: frontend/src/app/(dashboard)/notebooks/components/NotebookHeader.tsx type NotebookHeaderProps (line 15) | interface NotebookHeaderProps { function NotebookHeader (line 19) | function NotebookHeader({ notebook }: NotebookHeaderProps) { FILE: frontend/src/app/(dashboard)/notebooks/components/NotebookList.tsx type NotebookListProps (line 12) | interface NotebookListProps { function NotebookList (line 23) | function NotebookList({ FILE: frontend/src/app/(dashboard)/notebooks/components/NotesColumn.tsx type NotesColumnProps (line 28) | interface NotesColumnProps { function NotesColumn (line 36) | function NotesColumn({ FILE: frontend/src/app/(dashboard)/notebooks/components/SourcesColumn.tsx type SourcesColumnProps (line 27) | interface SourcesColumnProps { function SourcesColumn (line 41) | function SourcesColumn({ FILE: frontend/src/app/(dashboard)/notebooks/page.tsx function NotebooksPage (line 14) | function NotebooksPage() { FILE: frontend/src/app/(dashboard)/page.tsx function DashboardPage (line 3) | function DashboardPage() { FILE: frontend/src/app/(dashboard)/podcasts/page.tsx function PodcastsPage (line 16) | function PodcastsPage() { FILE: frontend/src/app/(dashboard)/search/page.tsx function SearchPage (line 27) | function SearchPage() { FILE: frontend/src/app/(dashboard)/settings/api-keys/page.tsx type ModelType (line 60) | type ModelType = 'language' | 'embedding' | 'text_to_speech' | 'speech_t... constant PROVIDER_DISPLAY_NAMES (line 63) | const PROVIDER_DISPLAY_NAMES: Record = { constant ALL_PROVIDERS (line 81) | const ALL_PROVIDERS = [ constant PROVIDER_MODALITIES (line 88) | const PROVIDER_MODALITIES: Record = { constant PROVIDER_DOCS (line 106) | const PROVIDER_DOCS: Record = { constant TYPE_ICONS (line 122) | const TYPE_ICONS: Record = { constant TYPE_COLORS (line 129) | const TYPE_COLORS: Record = { constant TYPE_COLOR_INACTIVE (line 136) | const TYPE_COLOR_INACTIVE = 'bg-muted text-muted-foreground opacity-50' constant TYPE_LABELS (line 138) | const TYPE_LABELS: Record = { function CredentialFormDialog (line 149) | function CredentialFormDialog({ function DiscoverModelsDialog (line 383) | function DiscoverModelsDialog({ function DeleteCredentialDialog (line 636) | function DeleteCredentialDialog({ function CredentialItem (line 739) | function CredentialItem({ function ProviderSection (line 946) | function ProviderSection({ function DefaultModelSelectors (line 1046) | function DefaultModelSelectors({ function ApiKeysPage (line 1271) | function ApiKeysPage() { FILE: frontend/src/app/(dashboard)/settings/components/SettingsForm.tsx type SettingsFormData (line 25) | type SettingsFormData = z.infer function SettingsForm (line 27) | function SettingsForm() { FILE: frontend/src/app/(dashboard)/settings/page.tsx function SettingsPage (line 10) | function SettingsPage() { FILE: frontend/src/app/(dashboard)/sources/[id]/page.tsx function SourceDetailPage (line 12) | function SourceDetailPage() { FILE: frontend/src/app/(dashboard)/sources/page.tsx function SourcesPage (line 21) | function SourcesPage() { FILE: frontend/src/app/(dashboard)/transformations/components/DefaultPromptEditor.tsx function DefaultPromptEditor (line 13) | function DefaultPromptEditor() { FILE: frontend/src/app/(dashboard)/transformations/components/TransformationCard.tsx type TransformationCardProps (line 15) | interface TransformationCardProps { function TransformationCard (line 21) | function TransformationCard({ transformation, onPlayground, onEdit }: Tr... FILE: frontend/src/app/(dashboard)/transformations/components/TransformationEditorDialog.tsx type TransformationFormData (line 28) | type TransformationFormData = z.infer type TransformationEditorDialogProps (line 30) | interface TransformationEditorDialogProps { function TransformationEditorDialog (line 36) | function TransformationEditorDialog({ open, onOpenChange, transformation... FILE: frontend/src/app/(dashboard)/transformations/components/TransformationPlayground.tsx type TransformationPlaygroundProps (line 18) | interface TransformationPlaygroundProps { function TransformationPlayground (line 23) | function TransformationPlayground({ transformations, selectedTransformat... FILE: frontend/src/app/(dashboard)/transformations/components/TransformationsList.tsx type TransformationsListProps (line 14) | interface TransformationsListProps { function TransformationsList (line 20) | function TransformationsList({ transformations, isLoading, onPlayground ... FILE: frontend/src/app/(dashboard)/transformations/page.tsx function TransformationsPage (line 15) | function TransformationsPage() { FILE: frontend/src/app/config/route.ts function GET (line 25) | async function GET(request: NextRequest) { FILE: frontend/src/app/layout.tsx function RootLayout (line 19) | function RootLayout({ FILE: frontend/src/app/page.tsx function HomePage (line 3) | function HomePage() { FILE: frontend/src/components/auth/LoginForm.tsx function LoginForm (line 15) | function LoginForm() { FILE: frontend/src/components/common/CommandPalette.tsx function CommandPalette (line 58) | function CommandPalette() { FILE: frontend/src/components/common/ConfirmDialog.tsx type ConfirmDialogProps (line 16) | interface ConfirmDialogProps { function ConfirmDialog (line 27) | function ConfirmDialog({ FILE: frontend/src/components/common/ConnectionGuard.tsx type ConnectionGuardProps (line 8) | interface ConnectionGuardProps { function ConnectionGuard (line 12) | function ConnectionGuard({ children }: ConnectionGuardProps) { FILE: frontend/src/components/common/ContextIndicator.tsx type ContextIndicatorProps (line 8) | interface ContextIndicatorProps { function formatNumber (line 18) | function formatNumber(num: number): string { function ContextIndicator (line 28) | function ContextIndicator({ FILE: frontend/src/components/common/ContextToggle.tsx type ContextToggleProps (line 15) | interface ContextToggleProps { function ContextToggle (line 22) | function ContextToggle({ mode, hasInsights = false, onChange, className ... FILE: frontend/src/components/common/EmptyState.tsx type EmptyStateProps (line 3) | interface EmptyStateProps { function EmptyState (line 10) | function EmptyState({ icon: Icon, title, description, action }: EmptySta... FILE: frontend/src/components/common/ErrorBoundary.tsx type ErrorBoundaryState (line 12) | interface ErrorBoundaryState { type ErrorBoundaryProps (line 18) | interface ErrorBoundaryProps { class ErrorBoundary (line 23) | class ErrorBoundary extends React.Component void, label: string) { FILE: frontend/src/components/notebooks/CreateNotebookDialog.tsx type CreateNotebookFormData (line 28) | type CreateNotebookFormData = z.infer type CreateNotebookDialogProps (line 30) | interface CreateNotebookDialogProps { function CreateNotebookDialog (line 35) | function CreateNotebookDialog({ open, onOpenChange }: CreateNotebookDial... FILE: frontend/src/components/podcasts/EpisodeCard.tsx type EpisodeCardProps (line 38) | interface EpisodeCardProps { function StatusBadge (line 84) | function StatusBadge({ status }: { status?: EpisodeStatus | null }) { type OutlineSegment (line 102) | type OutlineSegment = { type OutlineData (line 108) | type OutlineData = { type TranscriptEntry (line 112) | type TranscriptEntry = { type TranscriptData (line 117) | type TranscriptData = { function extractOutlineSegments (line 121) | function extractOutlineSegments(outline: unknown): OutlineSegment[] { function extractTranscriptEntries (line 131) | function extractTranscriptEntries(transcript: unknown): TranscriptEntry[] { function EpisodeCard (line 141) | function EpisodeCard({ episode, onDelete, deleting, onRetry, retrying }:... FILE: frontend/src/components/podcasts/EpisodeProfilesPanel.tsx type EpisodeProfilesPanelProps (line 42) | interface EpisodeProfilesPanelProps { function findSpeakerSummary (line 47) | function findSpeakerSummary( function EpisodeProfilesPanel (line 54) | function EpisodeProfilesPanel({ FILE: frontend/src/components/podcasts/EpisodesTab.tsx function SummaryBadge (line 43) | function SummaryBadge({ label, value }: { label: string; value: number }) { function EpisodesTab (line 52) | function EpisodesTab() { FILE: frontend/src/components/podcasts/GeneratePodcastDialog.tsx type SourceMode (line 36) | type SourceMode = 'off' | 'insights' | 'full' type NotebookSelection (line 38) | interface NotebookSelection { function formatNumber (line 44) | function formatNumber(num: number): string { function hasSelections (line 54) | function hasSelections(selection?: NotebookSelection): boolean { function getSourceDefaultMode (line 64) | function getSourceDefaultMode(source: SourceListResponse): SourceMode { type GeneratePodcastDialogProps (line 68) | interface GeneratePodcastDialogProps { type NotebookSummary (line 73) | interface NotebookSummary { type ContentSelectionPanelProps (line 79) | interface ContentSelectionPanelProps { function ContentSelectionPanel (line 98) | function ContentSelectionPanel({ function GeneratePodcastDialog (line 397) | function GeneratePodcastDialog({ open, onOpenChange }: GeneratePodcastDi... FILE: frontend/src/components/podcasts/SpeakerProfilesPanel.tsx type SpeakerProfilesPanelProps (line 42) | interface SpeakerProfilesPanelProps { function SpeakerProfilesPanel (line 47) | function SpeakerProfilesPanel({ FILE: frontend/src/components/podcasts/TemplatesTab.tsx function TemplatesTab (line 12) | function TemplatesTab() { FILE: frontend/src/components/podcasts/forms/EpisodeProfileFormDialog.tsx type EpisodeProfileFormValues (line 52) | type EpisodeProfileFormValues = z.infer type AddSourceDialogProps (line 70) | interface AddSourceDialogProps { type ProcessingState (line 76) | interface ProcessingState { type BatchProgress (line 81) | interface BatchProgress { function AddSourceDialog (line 88) | function AddSourceDialog({ FILE: frontend/src/components/sources/SourceCard.tsx type SourceCardProps (line 35) | interface SourceCardProps { constant SOURCE_TYPE_ICONS (line 48) | const SOURCE_TYPE_ICONS = { type SourceStatus (line 97) | type SourceStatus = 'new' | 'queued' | 'running' | 'completed' | 'failed' function isSourceStatus (line 99) | function isSourceStatus(status: unknown): status is SourceStatus { function getSourceType (line 103) | function getSourceType(source: SourceListResponse): 'link' | 'upload' | ... function SourceCard (line 110) | function SourceCard({ FILE: frontend/src/components/sources/steps/NotebooksStep.tsx type NotebooksStepProps (line 8) | interface NotebooksStepProps { function NotebooksStep (line 15) | function NotebooksStep({ FILE: frontend/src/components/sources/steps/ProcessingStep.tsx type CreateSourceFormData (line 11) | interface CreateSourceFormData { type ProcessingStepProps (line 23) | interface ProcessingStepProps { function ProcessingStep (line 32) | function ProcessingStep({ FILE: frontend/src/components/sources/steps/SourceTypeStep.tsx type CreateSourceFormData (line 15) | interface CreateSourceFormData { function parseUrls (line 28) | function parseUrls(text: string): string[] { function validateUrl (line 35) | function validateUrl(url: string): boolean { function parseAndValidateUrls (line 44) | function parseAndValidateUrls(text: string): { type SourceTypeStepProps (line 89) | interface SourceTypeStepProps { constant MAX_BATCH_SIZE (line 98) | const MAX_BATCH_SIZE = 50 function SourceTypeStep (line 100) | function SourceTypeStep({ control, register, setValue, errors, urlValida... FILE: frontend/src/components/ui/alert-dialog.tsx function AlertDialog (line 9) | function AlertDialog({ function AlertDialogTrigger (line 15) | function AlertDialogTrigger({ function AlertDialogPortal (line 23) | function AlertDialogPortal({ function AlertDialogOverlay (line 31) | function AlertDialogOverlay({ function AlertDialogContent (line 47) | function AlertDialogContent({ function AlertDialogHeader (line 66) | function AlertDialogHeader({ function AlertDialogFooter (line 79) | function AlertDialogFooter({ function AlertDialogTitle (line 95) | function AlertDialogTitle({ function AlertDialogDescription (line 108) | function AlertDialogDescription({ function AlertDialogAction (line 121) | function AlertDialogAction({ function AlertDialogCancel (line 133) | function AlertDialogCancel({ FILE: frontend/src/components/ui/badge.tsx function Badge (line 28) | function Badge({ FILE: frontend/src/components/ui/button.tsx function Button (line 38) | function Button({ FILE: frontend/src/components/ui/card.tsx function Card (line 5) | function Card({ className, ...props }: React.ComponentProps<"div">) { function CardHeader (line 18) | function CardHeader({ className, ...props }: React.ComponentProps<"div">) { function CardTitle (line 31) | function CardTitle({ className, ...props }: React.ComponentProps<"div">) { function CardDescription (line 41) | function CardDescription({ className, ...props }: React.ComponentProps<"... function CardAction (line 51) | function CardAction({ className, ...props }: React.ComponentProps<"div">) { function CardContent (line 64) | function CardContent({ className, ...props }: React.ComponentProps<"div"... function CardFooter (line 74) | function CardFooter({ className, ...props }: React.ComponentProps<"div">) { FILE: frontend/src/components/ui/checkbox-list.tsx type CheckboxListItem (line 6) | interface CheckboxListItem { type CheckboxListProps (line 12) | interface CheckboxListProps { function CheckboxList (line 21) | function CheckboxList({ FILE: frontend/src/components/ui/checkbox.tsx function Checkbox (line 9) | function Checkbox({ FILE: frontend/src/components/ui/collapsible.tsx function Collapsible (line 5) | function Collapsible({ function CollapsibleTrigger (line 11) | function CollapsibleTrigger({ function CollapsibleContent (line 22) | function CollapsibleContent({ FILE: frontend/src/components/ui/command.tsx function Command (line 16) | function Command({ function CommandDialog (line 32) | function CommandDialog({ function CommandInput (line 63) | function CommandInput({ function CommandList (line 85) | function CommandList({ function CommandEmpty (line 101) | function CommandEmpty({ function CommandGroup (line 113) | function CommandGroup({ function CommandSeparator (line 129) | function CommandSeparator({ function CommandItem (line 142) | function CommandItem({ function CommandShortcut (line 158) | function CommandShortcut({ FILE: frontend/src/components/ui/dialog.tsx function Dialog (line 10) | function Dialog({ function DialogTrigger (line 16) | function DialogTrigger({ function DialogPortal (line 22) | function DialogPortal({ function DialogClose (line 28) | function DialogClose({ function DialogOverlay (line 34) | function DialogOverlay({ 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/dropdown-menu.tsx function DropdownMenu (line 9) | function DropdownMenu({ function DropdownMenuPortal (line 15) | function DropdownMenuPortal({ function DropdownMenuTrigger (line 23) | function DropdownMenuTrigger({ function DropdownMenuContent (line 34) | function DropdownMenuContent({ function DropdownMenuGroup (line 54) | function DropdownMenuGroup({ function DropdownMenuItem (line 62) | function DropdownMenuItem({ function DropdownMenuCheckboxItem (line 85) | function DropdownMenuCheckboxItem({ function DropdownMenuRadioGroup (line 111) | function DropdownMenuRadioGroup({ function DropdownMenuRadioItem (line 122) | function DropdownMenuRadioItem({ function DropdownMenuLabel (line 146) | function DropdownMenuLabel({ function DropdownMenuSeparator (line 166) | function DropdownMenuSeparator({ function DropdownMenuShortcut (line 179) | function DropdownMenuShortcut({ function DropdownMenuSub (line 195) | function DropdownMenuSub({ function DropdownMenuSubTrigger (line 201) | function DropdownMenuSubTrigger({ function DropdownMenuSubContent (line 225) | function DropdownMenuSubContent({ FILE: frontend/src/components/ui/form-section.tsx type FormSectionProps (line 7) | interface FormSectionProps { function FormSection (line 15) | function FormSection({ 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 8) | function Label({ FILE: frontend/src/components/ui/markdown-editor.tsx type MarkdownEditorProps (line 11) | interface MarkdownEditorProps { FILE: frontend/src/components/ui/popover.tsx function Popover (line 8) | function Popover({ function PopoverTrigger (line 14) | function PopoverTrigger({ function PopoverContent (line 20) | function PopoverContent({ function PopoverAnchor (line 42) | function PopoverAnchor({ FILE: frontend/src/components/ui/progress.tsx function Progress (line 8) | function Progress({ FILE: frontend/src/components/ui/radio-group.tsx function RadioGroup (line 9) | function RadioGroup({ function RadioGroupItem (line 22) | function RadioGroupItem({ FILE: frontend/src/components/ui/scroll-area.tsx function ScrollArea (line 8) | function ScrollArea({ function ScrollBar (line 31) | function ScrollBar({ FILE: frontend/src/components/ui/select.tsx function Select (line 9) | function Select({ function SelectGroup (line 15) | function SelectGroup({ function SelectValue (line 21) | function SelectValue({ function SelectTrigger (line 27) | function SelectTrigger({ function SelectContent (line 53) | function SelectContent({ function SelectLabel (line 88) | function SelectLabel({ function SelectItem (line 101) | function SelectItem({ function SelectSeparator (line 125) | function SelectSeparator({ function SelectScrollUpButton (line 138) | function SelectScrollUpButton({ function SelectScrollDownButton (line 156) | function SelectScrollDownButton({ FILE: frontend/src/components/ui/separator.tsx function Separator (line 8) | function Separator({ FILE: frontend/src/components/ui/tabs.tsx function Tabs (line 8) | function Tabs({ function TabsList (line 21) | function TabsList({ function TabsTrigger (line 37) | function TabsTrigger({ function TabsContent (line 53) | function TabsContent({ FILE: frontend/src/components/ui/textarea.tsx function Textarea (line 5) | function Textarea({ className, ...props }: React.ComponentProps<"textare... FILE: frontend/src/components/ui/tooltip.tsx function TooltipProvider (line 8) | function TooltipProvider({ function Tooltip (line 21) | function Tooltip({ function TooltipTrigger (line 31) | function TooltipTrigger({ function TooltipContent (line 37) | function TooltipContent({ FILE: frontend/src/components/ui/wizard-container.tsx type WizardStep (line 6) | interface WizardStep { type WizardContainerProps (line 12) | interface WizardContainerProps { function StepIndicator (line 20) | function StepIndicator({ currentStep, steps, onStepClick }: { function WizardContainer (line 80) | function WizardContainer({ FILE: frontend/src/lib/api/credentials.ts type Credential (line 4) | interface Credential { type CreateCredentialRequest (line 25) | interface CreateCredentialRequest { type UpdateCredentialRequest (line 42) | interface UpdateCredentialRequest { type DiscoveredModel (line 58) | interface DiscoveredModel { type RegisterModelData (line 65) | interface RegisterModelData { type DiscoverModelsResponse (line 71) | interface DiscoverModelsResponse { type RegisterModelsRequest (line 77) | interface RegisterModelsRequest { type RegisterModelsResponse (line 81) | interface RegisterModelsResponse { type TestConnectionResult (line 86) | interface TestConnectionResult { type CredentialDeleteResponse (line 92) | interface CredentialDeleteResponse { type MigrationResult (line 97) | interface MigrationResult { type CredentialStatus (line 105) | interface CredentialStatus { type EnvStatus (line 111) | type EnvStatus = Record FILE: frontend/src/lib/api/embedding.ts type EmbedContentRequest (line 3) | interface EmbedContentRequest { type EmbedContentResponse (line 9) | interface EmbedContentResponse { type RebuildEmbeddingsRequest (line 16) | interface RebuildEmbeddingsRequest { type RebuildEmbeddingsResponse (line 23) | interface RebuildEmbeddingsResponse { type RebuildProgress (line 29) | interface RebuildProgress { type RebuildStats (line 38) | interface RebuildStats { type RebuildStatusResponse (line 50) | interface RebuildStatusResponse { FILE: frontend/src/lib/api/insights.ts type SourceInsightResponse (line 3) | interface SourceInsightResponse { type CreateSourceInsightRequest (line 12) | interface CreateSourceInsightRequest { type InsightCreationResponse (line 16) | interface InsightCreationResponse { type CommandJobStatusResponse (line 24) | interface CommandJobStatusResponse { FILE: frontend/src/lib/api/podcasts.ts type EpisodeProfileInput (line 12) | type EpisodeProfileInput = Omit type SpeakerProfileInput (line 13) | type SpeakerProfileInput = Omit function resolvePodcastAssetUrl (line 15) | async function resolvePodcastAssetUrl(path?: string | null): Promise { function getConfig (line 43) | async function getConfig(): Promise { function fetchConfig (line 59) | async function fetchConfig(): Promise { function resetConfig (line 145) | function resetConfig(): void { FILE: frontend/src/lib/hooks/use-ask.ts type AskModels (line 10) | interface AskModels { type StrategyData (line 16) | interface StrategyData { type AskState (line 21) | interface AskState { function useAsk (line 29) | function useAsk() { FILE: frontend/src/lib/hooks/use-auth.ts function useAuth (line 7) | function useAuth() { FILE: frontend/src/lib/hooks/use-create-dialogs.tsx type CreateDialogsContextType (line 8) | interface CreateDialogsContextType { function CreateDialogsProvider (line 16) | function CreateDialogsProvider({ children }: { children: ReactNode }) { function useCreateDialogs (line 41) | function useCreateDialogs() { FILE: frontend/src/lib/hooks/use-credentials.ts constant CREDENTIAL_QUERY_KEYS (line 15) | const CREDENTIAL_QUERY_KEYS = { function useCredentialStatus (line 26) | function useCredentialStatus() { function useEnvStatus (line 36) | function useEnvStatus() { function useCredentials (line 46) | function useCredentials(provider?: string) { function useCredentialsByProvider (line 57) | function useCredentialsByProvider(provider: string) { function useCredential (line 68) | function useCredential(credentialId: string) { function useCreateCredential (line 79) | function useCreateCredential() { function useUpdateCredential (line 107) | function useUpdateCredential() { function useDeleteCredential (line 141) | function useDeleteCredential() { function useTestCredential (line 176) | function useTestCredential() { function useDiscoverModels (line 224) | function useDiscoverModels() { function useRegisterModels (line 243) | function useRegisterModels() { function useMigrateFromEnv (line 287) | function useMigrateFromEnv() { function useMigrateFromProviderConfig (line 340) | function useMigrateFromProviderConfig() { FILE: frontend/src/lib/hooks/use-insights.ts function useInsight (line 4) | function useInsight(id: string, options?: { enabled?: boolean }) { FILE: frontend/src/lib/hooks/use-media-query.ts function useMediaQuery (line 9) | function useMediaQuery(query: string): boolean { function useIsDesktop (line 30) | function useIsDesktop(): boolean { FILE: frontend/src/lib/hooks/use-modal-manager.ts type ModalType (line 5) | type ModalType = 'source' | 'note' | 'insight' function useModalManager (line 7) | function useModalManager() { FILE: frontend/src/lib/hooks/use-models.ts constant MODEL_QUERY_KEYS (line 9) | const MODEL_QUERY_KEYS = { function useModels (line 16) | function useModels() { function useModel (line 23) | function useModel(id: string) { function useCreateModel (line 31) | function useCreateModel() { function useDeleteModel (line 55) | function useDeleteModel() { function useModelDefaults (line 81) | function useModelDefaults() { function useUpdateModelDefaults (line 88) | function useUpdateModelDefaults() { function useProviders (line 112) | function useProviders() { function useAutoAssignDefaults (line 119) | function useAutoAssignDefaults() { function useTestModel (line 160) | function useTestModel() { FILE: frontend/src/lib/hooks/use-navigation.ts function useNavigation (line 3) | function useNavigation() { FILE: frontend/src/lib/hooks/use-notebooks.ts function useNotebooks (line 9) | function useNotebooks(archived?: boolean) { function useNotebook (line 16) | function useNotebook(id: string) { function useCreateNotebook (line 24) | function useCreateNotebook() { function useUpdateNotebook (line 48) | function useUpdateNotebook() { function useNotebookDeletePreview (line 74) | function useNotebookDeletePreview(id: string, enabled: boolean = false) { function useDeleteNotebook (line 82) | function useDeleteNotebook() { FILE: frontend/src/lib/hooks/use-notes.ts function useNotes (line 9) | function useNotes(notebookId?: string) { function useNote (line 17) | function useNote(id?: string, options?: { enabled?: boolean }) { function useCreateNote (line 26) | function useCreateNote() { function useUpdateNote (line 52) | function useUpdateNote() { function useDeleteNote (line 78) | function useDeleteNote() { FILE: frontend/src/lib/hooks/use-podcasts.ts function useLanguages (line 19) | function useLanguages() { type EpisodeStatusCounts (line 27) | interface EpisodeStatusCounts { function hasActiveEpisodes (line 35) | function hasActiveEpisodes(episodes: PodcastEpisode[]) { function usePodcastEpisodes (line 42) | function usePodcastEpisodes(options?: { autoRefresh?: boolean }) { function useRetryPodcastEpisode (line 91) | function useRetryPodcastEpisode() { function useDeletePodcastEpisode (line 115) | function useDeletePodcastEpisode() { function useEpisodeProfiles (line 139) | function useEpisodeProfiles() { function useCreateEpisodeProfile (line 151) | function useCreateEpisodeProfile() { function useUpdateEpisodeProfile (line 177) | function useUpdateEpisodeProfile() { function useDeleteEpisodeProfile (line 208) | function useDeleteEpisodeProfile() { function useDuplicateEpisodeProfile (line 233) | function useDuplicateEpisodeProfile() { function useSpeakerProfiles (line 259) | function useSpeakerProfiles(episodeProfiles?: EpisodeProfile[]) { function useCreateSpeakerProfile (line 279) | function useCreateSpeakerProfile() { function useUpdateSpeakerProfile (line 306) | function useUpdateSpeakerProfile() { function useDeleteSpeakerProfile (line 338) | function useDeleteSpeakerProfile() { function useDuplicateSpeakerProfile (line 364) | function useDuplicateSpeakerProfile() { function useGeneratePodcast (line 389) | function useGeneratePodcast() { FILE: frontend/src/lib/hooks/use-search.ts function useSearch (line 8) | function useSearch() { FILE: frontend/src/lib/hooks/use-settings.ts function useSettings (line 9) | function useSettings() { function useUpdateSettings (line 16) | function useUpdateSettings() { FILE: frontend/src/lib/hooks/use-sources.ts constant NOTEBOOK_SOURCES_PAGE_SIZE (line 16) | const NOTEBOOK_SOURCES_PAGE_SIZE = 30 function useSources (line 18) | function useSources(notebookId?: string) { function useNotebookSources (line 32) | function useNotebookSources(notebookId: string) { function useSource (line 79) | function useSource(id: string) { function useCreateSource (line 89) | function useCreateSource() { function useUpdateSource (line 141) | function useUpdateSource() { function useDeleteSource (line 168) | function useDeleteSource() { function useFileUpload (line 195) | function useFileUpload() { function useSourceStatus (line 222) | function useSourceStatus(sourceId: string, enabled = true) { function useRetrySource (line 249) | function useRetrySource() { function useAddSourcesToNotebook (line 280) | function useAddSourcesToNotebook() { function useRemoveSourceFromNotebook (line 342) | function useRemoveSourceFromNotebook() { FILE: frontend/src/lib/hooks/use-toast.ts type ToastProps (line 4) | type ToastProps = { function useToast (line 10) | function useToast() { FILE: frontend/src/lib/hooks/use-transformations.ts constant TRANSFORMATION_QUERY_KEYS (line 13) | const TRANSFORMATION_QUERY_KEYS = { function useTransformations (line 19) | function useTransformations() { function useTransformation (line 26) | function useTransformation(id?: string, options?: { enabled?: boolean }) { function useCreateTransformation (line 35) | function useCreateTransformation() { function useUpdateTransformation (line 59) | function useUpdateTransformation() { function useDeleteTransformation (line 85) | function useDeleteTransformation() { function useExecuteTransformation (line 109) | function useExecuteTransformation() { function useDefaultPrompt (line 125) | function useDefaultPrompt() { function useUpdateDefaultPrompt (line 132) | function useUpdateDefaultPrompt() { FILE: frontend/src/lib/hooks/use-translation.ts function useTranslation (line 15) | function useTranslation() { FILE: frontend/src/lib/hooks/use-version-check.ts function useVersionCheck (line 14) | function useVersionCheck() { FILE: frontend/src/lib/hooks/useNotebookChat.ts type UseNotebookChatParams (line 19) | interface UseNotebookChatParams { function useNotebookChat (line 26) | function useNotebookChat({ notebookId, sources, notes, contextSelections... FILE: frontend/src/lib/hooks/useSourceChat.ts function useSourceChat (line 17) | function useSourceChat(sourceId: string) { FILE: frontend/src/lib/i18n-events.ts constant I18N_LANGUAGE_CHANGE_START (line 1) | const I18N_LANGUAGE_CHANGE_START = 'i18n:language-change-start' constant I18N_LANGUAGE_CHANGE_END (line 2) | const I18N_LANGUAGE_CHANGE_END = 'i18n:language-change-end' type LanguageChangeDetail (line 4) | type LanguageChangeDetail = { function emitLanguageChangeStart (line 10) | function emitLanguageChangeStart(language: string) { function emitLanguageChangeEnd (line 18) | function emitLanguageChangeEnd(language: string) { FILE: frontend/src/lib/locales/index.ts type TranslationKeys (line 23) | type TranslationKeys = typeof enUS; type LanguageCode (line 25) | type LanguageCode = 'zh-CN' | 'en-US' | 'zh-TW' | 'pt-BR' | 'ja-JP' | 'i... type Language (line 27) | type Language = { FILE: frontend/src/lib/stores/auth-store.ts type AuthState (line 5) | interface AuthState { FILE: frontend/src/lib/stores/navigation-store.ts type NavigationState (line 4) | interface NavigationState { FILE: frontend/src/lib/stores/notebook-columns-store.ts type NotebookColumnsState (line 4) | interface NotebookColumnsState { FILE: frontend/src/lib/stores/sidebar-store.ts type SidebarState (line 4) | interface SidebarState { FILE: frontend/src/lib/stores/theme-store.ts type Theme (line 4) | type Theme = 'light' | 'dark' | 'system' type ThemeState (line 6) | interface ThemeState { function useTheme (line 52) | function useTheme() { FILE: frontend/src/lib/types/api.ts type NotebookResponse (line 1) | interface NotebookResponse { type NoteResponse (line 12) | interface NoteResponse { type SourceListResponse (line 21) | interface SourceListResponse { type SourceDetailResponse (line 41) | interface SourceDetailResponse extends SourceListResponse { type SourceResponse (line 46) | type SourceResponse = SourceDetailResponse type SourceStatusResponse (line 48) | interface SourceStatusResponse { type SettingsResponse (line 55) | interface SettingsResponse { type CreateNotebookRequest (line 63) | interface CreateNotebookRequest { type UpdateNotebookRequest (line 68) | interface UpdateNotebookRequest { type NotebookDeletePreview (line 74) | interface NotebookDeletePreview { type NotebookDeleteResponse (line 82) | interface NotebookDeleteResponse { type CreateNoteRequest (line 89) | interface CreateNoteRequest { type CreateSourceRequest (line 96) | interface CreateSourceRequest { type UpdateNoteRequest (line 114) | interface UpdateNoteRequest { type UpdateSourceRequest (line 120) | interface UpdateSourceRequest { type APIError (line 127) | interface APIError { type BaseChatSession (line 133) | interface BaseChatSession { type SourceChatSession (line 142) | interface SourceChatSession extends BaseChatSession { type SourceChatMessage (line 147) | interface SourceChatMessage { type SourceChatContextIndicator (line 154) | interface SourceChatContextIndicator { type SourceChatSessionWithMessages (line 160) | interface SourceChatSessionWithMessages extends SourceChatSession { type CreateSourceChatSessionRequest (line 165) | interface CreateSourceChatSessionRequest { type UpdateSourceChatSessionRequest (line 171) | interface UpdateSourceChatSessionRequest { type SendMessageRequest (line 176) | interface SendMessageRequest { type SourceChatStreamEvent (line 181) | interface SourceChatStreamEvent { type NotebookChatSession (line 190) | interface NotebookChatSession extends BaseChatSession { type NotebookChatMessage (line 194) | interface NotebookChatMessage { type NotebookChatSessionWithMessages (line 201) | interface NotebookChatSessionWithMessages extends NotebookChatSession { type CreateNotebookChatSessionRequest (line 205) | interface CreateNotebookChatSessionRequest { type UpdateNotebookChatSessionRequest (line 211) | interface UpdateNotebookChatSessionRequest { type SendNotebookChatMessageRequest (line 216) | interface SendNotebookChatMessageRequest { type BuildContextRequest (line 226) | interface BuildContextRequest { type BuildContextResponse (line 234) | interface BuildContextResponse { FILE: frontend/src/lib/types/auth.ts type AuthState (line 1) | interface AuthState { type LoginCredentials (line 8) | interface LoginCredentials { FILE: frontend/src/lib/types/common.ts type NavItem (line 3) | interface NavItem { type PageProps (line 9) | interface PageProps { FILE: frontend/src/lib/types/config.ts type BackendConfigResponse (line 6) | interface BackendConfigResponse { type AppConfig (line 17) | interface AppConfig { type ConnectionError (line 29) | interface ConnectionError { FILE: frontend/src/lib/types/models.ts type Model (line 1) | interface Model { type CreateModelRequest (line 11) | interface CreateModelRequest { type ModelDefaults (line 18) | interface ModelDefaults { type ProviderAvailability (line 28) | interface ProviderAvailability { type DiscoveredModel (line 35) | interface DiscoveredModel { type ProviderSyncResult (line 42) | interface ProviderSyncResult { type AllProvidersSyncResult (line 49) | interface AllProvidersSyncResult { type ProviderModelCount (line 55) | interface ProviderModelCount { type AutoAssignResult (line 61) | interface AutoAssignResult { type ModelTestResult (line 67) | interface ModelTestResult { FILE: frontend/src/lib/types/podcasts.ts type EpisodeStatus (line 1) | type EpisodeStatus = type EpisodeProfile (line 11) | interface EpisodeProfile { type SpeakerVoiceConfig (line 28) | interface SpeakerVoiceConfig { type SpeakerProfile (line 36) | interface SpeakerProfile { type Language (line 47) | interface Language { type PodcastEpisode (line 52) | interface PodcastEpisode { type PodcastGenerationRequest (line 67) | interface PodcastGenerationRequest { type PodcastGenerationResponse (line 76) | interface PodcastGenerationResponse { type EpisodeStatusGroup (line 84) | type EpisodeStatusGroup = 'running' | 'completed' | 'failed' | 'pending' type EpisodeStatusGroups (line 86) | type EpisodeStatusGroups = Record constant ACTIVE_EPISODE_STATUSES (line 88) | const ACTIVE_EPISODE_STATUSES: EpisodeStatus[] = [ constant FAILED_EPISODE_STATUSES (line 95) | const FAILED_EPISODE_STATUSES: EpisodeStatus[] = ['failed', 'error'] function groupEpisodesByStatus (line 97) | function groupEpisodesByStatus(episodes: PodcastEpisode[]): EpisodeStatu... function speakerUsageMap (line 124) | function speakerUsageMap( function needsModelSetup (line 149) | function needsModelSetup(profile: EpisodeProfile | SpeakerProfile): bool... FILE: frontend/src/lib/types/search.ts type SearchRequest (line 2) | interface SearchRequest { type SearchResult (line 11) | interface SearchResult { type SearchResponse (line 26) | interface SearchResponse { type AskRequest (line 33) | interface AskRequest { type AskResponse (line 40) | interface AskResponse { type StrategyData (line 46) | interface StrategyData { type AskStreamEvent (line 54) | interface AskStreamEvent { FILE: frontend/src/lib/types/transformations.ts type Transformation (line 1) | interface Transformation { type CreateTransformationRequest (line 12) | interface CreateTransformationRequest { type UpdateTransformationRequest (line 20) | interface UpdateTransformationRequest { type ExecuteTransformationRequest (line 28) | interface ExecuteTransformationRequest { type ExecuteTransformationResponse (line 34) | interface ExecuteTransformationResponse { type DefaultPrompt (line 40) | interface DefaultPrompt { FILE: frontend/src/lib/utils.ts function cn (line 4) | function cn(...inputs: ClassValue[]) { FILE: frontend/src/lib/utils/date-locale.ts constant LOCALE_MAP (line 7) | const LOCALE_MAP: Record = { function getDateLocale (line 25) | function getDateLocale(language: string): Locale { FILE: frontend/src/lib/utils/error-handler.ts constant ERROR_MAP (line 4) | const ERROR_MAP: Record = { function getApiErrorKey (line 34) | function getApiErrorKey(errorOrMessage: unknown, fallbackKey?: string): ... function getApiErrorMessage (line 59) | function getApiErrorMessage( function formatApiError (line 82) | function formatApiError(error: unknown): string { FILE: frontend/src/lib/utils/source-references.tsx type ReferenceType (line 4) | type ReferenceType = 'source' | 'note' | 'source_insight' type ParsedReference (line 6) | interface ParsedReference { type ExtractedReference (line 16) | interface ExtractedReference { type ExtractedReferences (line 23) | interface ExtractedReferences { type ReferenceData (line 28) | interface ReferenceData { function parseSourceReferences (line 46) | function parseSourceReferences(text: string): ParsedReference[] { function convertSourceReferences (line 76) | function convertSourceReferences( function convertReferencesToMarkdownLinks (line 174) | function convertReferencesToMarkdownLinks(text: string): string { function createReferenceLinkComponent (line 266) | function createReferenceLinkComponent( function convertReferencesToCompactMarkdown (line 339) | function convertReferencesToCompactMarkdown(text: string, referencesLabe... function createCompactReferenceLinkComponent (line 431) | function createCompactReferenceLinkComponent( function convertSourceReferencesLegacy (line 482) | function convertSourceReferencesLegacy(text: string): React.ReactNode { FILE: frontend/src/proxy.ts function proxy (line 4) | function proxy(request: NextRequest) { FILE: open_notebook/ai/connection_tester.py function _test_azure_connection (line 40) | async def _test_azure_connection( function _test_ollama_connection (line 97) | async def _test_ollama_connection(base_url: str) -> Tuple[bool, str]: function _test_openai_compatible_connection (line 132) | async def _test_openai_compatible_connection(base_url: str, api_key: Opt... function test_provider_connection (line 170) | async def test_provider_connection( function _generate_test_wav (line 313) | def _generate_test_wav() -> io.BytesIO: function _normalize_error_message (line 347) | def _normalize_error_message(error_msg: str) -> Tuple[bool, str]: function test_individual_model (line 367) | async def test_individual_model(model) -> Tuple[bool, str]: FILE: open_notebook/ai/key_provider.py function _get_default_credential (line 68) | async def _get_default_credential(provider: str) -> Optional[Credential]: function get_api_key (line 79) | async def get_api_key(provider: str) -> Optional[str]: function _provision_simple_provider (line 105) | async def _provision_simple_provider(provider: str) -> bool: function _provision_vertex (line 137) | async def _provision_vertex() -> bool: function _provision_azure (line 166) | async def _provision_azure() -> bool: function _provision_openai_compatible (line 211) | async def _provision_openai_compatible() -> bool: function provision_provider_keys (line 236) | async def provision_provider_keys(provider: str) -> bool: function provision_all_keys (line 273) | async def provision_all_keys() -> dict[str, bool]: FILE: open_notebook/ai/model_discovery.py class DiscoveredModel (line 22) | class DiscoveredModel: function classify_model_type (line 135) | def classify_model_type(model_name: str, provider: str) -> str: function discover_openai_models (line 173) | async def discover_openai_models() -> List[DiscoveredModel]: function discover_anthropic_models (line 207) | async def discover_anthropic_models() -> List[DiscoveredModel]: function discover_google_models (line 226) | async def discover_google_models() -> List[DiscoveredModel]: function discover_ollama_models (line 269) | async def discover_ollama_models() -> List[DiscoveredModel]: function discover_groq_models (line 302) | async def discover_groq_models() -> List[DiscoveredModel]: function discover_mistral_models (line 336) | async def discover_mistral_models() -> List[DiscoveredModel]: function discover_deepseek_models (line 375) | async def discover_deepseek_models() -> List[DiscoveredModel]: function discover_xai_models (line 409) | async def discover_xai_models() -> List[DiscoveredModel]: function discover_openrouter_models (line 443) | async def discover_openrouter_models() -> List[DiscoveredModel]: function discover_voyage_models (line 478) | async def discover_voyage_models() -> List[DiscoveredModel]: function discover_elevenlabs_models (line 500) | async def discover_elevenlabs_models() -> List[DiscoveredModel]: function discover_openai_compatible_models (line 521) | async def discover_openai_compatible_models() -> List[DiscoveredModel]: function discover_provider_models (line 608) | async def discover_provider_models(provider: str) -> List[DiscoveredModel]: function sync_provider_models (line 632) | async def sync_provider_models( function sync_all_providers (line 699) | async def sync_all_providers() -> Dict[str, Tuple[int, int, int]]: function get_provider_model_count (line 727) | async def get_provider_model_count(provider: str) -> Dict[str, int]: FILE: open_notebook/ai/models.py class Model (line 19) | class Model(ObjectModel): method get_models_by_type (line 28) | async def get_models_by_type(cls, model_type): method get_by_credential (line 35) | async def get_by_credential(cls, credential_id: str): method _prepare_save_data (line 43) | def _prepare_save_data(self) -> Dict[str, Any]: method get_credential_obj (line 49) | async def get_credential_obj(self): class DefaultModels (line 62) | class DefaultModels(RecordModel): method get_instance (line 74) | async def get_instance(cls) -> "DefaultModels": class ModelManager (line 98) | class ModelManager: method __init__ (line 99) | def __init__(self): method get_model (line 102) | async def get_model(self, model_id: str, **kwargs) -> Optional[ModelTy... method get_defaults (line 178) | async def get_defaults(self) -> DefaultModels: method get_speech_to_text (line 185) | async def get_speech_to_text(self, **kwargs) -> Optional[SpeechToTextM... method get_text_to_speech (line 197) | async def get_text_to_speech(self, **kwargs) -> Optional[TextToSpeechM... method get_embedding_model (line 209) | async def get_embedding_model(self, **kwargs) -> Optional[EmbeddingMod... method get_default_model (line 221) | async def get_default_model(self, model_type: str, **kwargs) -> Option... FILE: open_notebook/ai/provision.py function provision_langchain_model (line 10) | async def provision_langchain_model( FILE: open_notebook/database/async_migrate.py class AsyncMigration (line 13) | class AsyncMigration: method __init__ (line 18) | def __init__(self, sql: str) -> None: method from_file (line 23) | def from_file(cls, file_path: str) -> "AsyncMigration": method run (line 36) | async def run(self, bump: bool = True) -> None: class AsyncMigrationRunner (line 52) | class AsyncMigrationRunner: method __init__ (line 57) | def __init__( method run_all (line 66) | async def run_all(self) -> None: method run_one_up (line 74) | async def run_one_up(self) -> None: method run_one_down (line 82) | async def run_one_down(self) -> None: class AsyncMigrationManager (line 91) | class AsyncMigrationManager: method __init__ (line 96) | def __init__(self): method get_current_version (line 171) | async def get_current_version(self) -> int: method needs_migration (line 175) | async def needs_migration(self) -> bool: method run_migration_up (line 180) | async def run_migration_up(self): function get_latest_version (line 198) | async def get_latest_version() -> int: function get_all_versions (line 210) | async def get_all_versions() -> List[dict]: function bump_version (line 220) | async def bump_version() -> None: function lower_version (line 230) | async def lower_version() -> None: FILE: open_notebook/database/migrate.py class MigrationManager (line 6) | class MigrationManager: method __init__ (line 11) | def __init__(self): method get_current_version (line 15) | def get_current_version(self) -> int: method needs_migration (line 20) | def needs_migration(self) -> bool: method run_migration_up (line 24) | def run_migration_up(self): FILE: open_notebook/database/repository.py function get_database_url (line 12) | def get_database_url(): function get_database_password (line 24) | def get_database_password(): function parse_record_ids (line 29) | def parse_record_ids(obj: Any) -> Any: function ensure_record_id (line 40) | def ensure_record_id(value: Union[str, RecordID]) -> RecordID: function db_connection (line 48) | async def db_connection(): function repo_query (line 65) | async def repo_query( function repo_create (line 85) | async def repo_create(table: str, data: Dict[str, Any]) -> Dict[str, Any]: function repo_relate (line 106) | async def repo_relate( function repo_upsert (line 123) | async def repo_upsert( function repo_update (line 134) | async def repo_update( function repo_delete (line 158) | async def repo_delete(record_id: Union[str, RecordID]): function repo_insert (line 169) | async def repo_insert( FILE: open_notebook/domain/base.py class ObjectModel (line 31) | class ObjectModel(BaseModel): method get_all (line 39) | async def get_all(cls: Type[T], order_by=None) -> List[T]: method get (line 70) | async def get(cls: Type[T], id: str) -> T: method _get_class_by_table_name (line 98) | def _get_class_by_table_name(cls, table_name: str) -> Optional[Type["O... method save (line 113) | async def save(self) -> None: method _prepare_save_data (line 162) | def _prepare_save_data(self) -> Dict[str, Any]: method delete (line 170) | async def delete(self) -> bool: method relate (line 184) | async def relate( method parse_datetime (line 200) | def parse_datetime(cls, value): class RecordModel (line 206) | class RecordModel(BaseModel): method __new__ (line 221) | def __new__(cls, **kwargs): method __init__ (line 236) | def __init__(self, **kwargs): method _load_from_db (line 249) | async def _load_from_db(self): method get_instance (line 275) | async def get_instance(cls) -> "RecordModel": method auto_save_validator (line 282) | def auto_save_validator(self): method update (line 290) | async def update(self): method clear_instance (line 319) | def clear_instance(cls): method patch (line 324) | async def patch(self, model_dict: dict): FILE: open_notebook/domain/content_settings.py class ContentSettings (line 8) | class ContentSettings(RecordModel): FILE: open_notebook/domain/credential.py class Credential (line 29) | class Credential(ObjectModel): method to_esperanto_config (line 67) | def to_esperanto_config(self) -> Dict[str, Any]: method get_by_provider (line 100) | async def get_by_provider(cls, provider: str) -> List["Credential"]: method get (line 116) | async def get(cls, id: str) -> "Credential": method get_all (line 132) | async def get_all(cls, order_by=None) -> List["Credential"]: method get_linked_models (line 146) | async def get_linked_models(self) -> list: method _prepare_save_data (line 158) | def _prepare_save_data(self) -> Dict[str, Any]: method save (line 174) | async def save(self) -> None: method _from_db_row (line 191) | def _from_db_row(cls, row: dict) -> "Credential": FILE: open_notebook/domain/notebook.py class Notebook (line 16) | class Notebook(ObjectModel): method name_must_not_be_empty (line 24) | def name_must_not_be_empty(cls, v): method get_sources (line 29) | async def get_sources(self) -> List["Source"]: method get_notes (line 46) | async def get_notes(self) -> List["Note"]: method get_chat_sessions (line 63) | async def get_chat_sessions(self) -> List["ChatSession"]: method get_delete_preview (line 88) | async def get_delete_preview(self) -> Dict[str, Any]: method delete (line 138) | async def delete(self, delete_exclusive_sources: bool = False) -> Dict... class Asset (line 233) | class Asset(BaseModel): class SourceEmbedding (line 238) | class SourceEmbedding(ObjectModel): method get_source (line 242) | async def get_source(self) -> "Source": class SourceInsight (line 257) | class SourceInsight(ObjectModel): method get_source (line 262) | async def get_source(self) -> "Source": method save_as_note (line 276) | async def save_as_note(self, notebook_id: Optional[str] = None) -> Any: class Source (line 288) | class Source(ObjectModel): method parse_command (line 302) | def parse_command(cls, value): method parse_id (line 310) | def parse_id(cls, value): method get_status (line 318) | async def get_status(self) -> Optional[str]: method get_processing_progress (line 332) | async def get_processing_progress(self) -> Optional[Dict[str, Any]]: method get_context (line 361) | async def get_context( method get_embedded_chunks (line 376) | async def get_embedded_chunks(self) -> int: method get_insights (line 392) | async def get_insights(self) -> List[SourceInsight]: method add_to_notebook (line 406) | async def add_to_notebook(self, notebook_id: str) -> Any: method vectorize (line 411) | async def vectorize(self) -> str: method add_insight (line 459) | async def add_insight(self, insight_type: str, content: str) -> Option... method _prepare_save_data (line 506) | def _prepare_save_data(self) -> dict: method delete (line 516) | async def delete(self) -> bool: class Note (line 557) | class Note(ObjectModel): method content_must_not_be_empty (line 565) | def content_must_not_be_empty(cls, v): method save (line 570) | async def save(self) -> Optional[str]: method add_to_notebook (line 595) | async def add_to_notebook(self, notebook_id: str) -> Any: method get_context (line 600) | def get_context( class ChatSession (line 613) | class ChatSession(ObjectModel): method relate_to_notebook (line 619) | async def relate_to_notebook(self, notebook_id: str) -> Any: method relate_to_source (line 624) | async def relate_to_source(self, source_id: str) -> Any: function text_search (line 630) | async def text_search( function vector_search (line 650) | async def vector_search( FILE: open_notebook/domain/provider_config.py class ProviderCredential (line 22) | class ProviderCredential: method __init__ (line 51) | def __init__( method to_dict (line 91) | def to_dict(self, encrypted: bool = False) -> dict: method from_dict (line 130) | def from_dict(cls, data: dict, decrypted: bool = False) -> "ProviderCr... class ProviderConfig (line 175) | class ProviderConfig(RecordModel): method get_instance (line 198) | async def get_instance(cls) -> "ProviderConfig": method get_default_config (line 280) | def get_default_config(self, provider: str) -> Optional[ProviderCreden... method get_config (line 304) | def get_config( method add_config (line 326) | def add_config(self, provider: str, credential: ProviderCredential) ->... method delete_config (line 357) | def delete_config(self, provider: str, config_id: str) -> bool: method set_default_config (line 384) | def set_default_config(self, provider: str, config_id: str) -> bool: method _prepare_save_data (line 411) | def _prepare_save_data(self) -> dict: method save (line 429) | async def save(self) -> "ProviderConfig": method _clear_for_test (line 441) | def _clear_for_test(cls) -> None: FILE: open_notebook/domain/transformation.py class Transformation (line 8) | class Transformation(ObjectModel): class DefaultPrompts (line 17) | class DefaultPrompts(RecordModel): FILE: open_notebook/exceptions.py class OpenNotebookError (line 1) | class OpenNotebookError(Exception): class DatabaseOperationError (line 7) | class DatabaseOperationError(OpenNotebookError): class UnsupportedTypeException (line 13) | class UnsupportedTypeException(OpenNotebookError): class InvalidInputError (line 19) | class InvalidInputError(OpenNotebookError): class NotFoundError (line 25) | class NotFoundError(OpenNotebookError): class AuthenticationError (line 31) | class AuthenticationError(OpenNotebookError): class ConfigurationError (line 37) | class ConfigurationError(OpenNotebookError): class ExternalServiceError (line 43) | class ExternalServiceError(OpenNotebookError): class RateLimitError (line 49) | class RateLimitError(OpenNotebookError): class FileOperationError (line 55) | class FileOperationError(OpenNotebookError): class NetworkError (line 61) | class NetworkError(OpenNotebookError): class NoTranscriptFound (line 67) | class NoTranscriptFound(OpenNotebookError): FILE: open_notebook/graphs/ask.py class SubGraphState (line 20) | class SubGraphState(TypedDict): class Search (line 29) | class Search(BaseModel): class Strategy (line 36) | class Strategy(BaseModel): class ThreadState (line 44) | class ThreadState(TypedDict): function call_model_with_messages (line 51) | async def call_model_with_messages(state: ThreadState, config: RunnableC... function trigger_queries (line 83) | async def trigger_queries(state: ThreadState, config: RunnableConfig): function provide_answer (line 98) | async def provide_answer(state: SubGraphState, config: RunnableConfig) -... function write_final_answer (line 127) | async def write_final_answer(state: ThreadState, config: RunnableConfig)... FILE: open_notebook/graphs/chat.py class ThreadState (line 22) | class ThreadState(TypedDict): function call_model_with_messages (line 30) | def call_model_with_messages(state: ThreadState, config: RunnableConfig)... FILE: open_notebook/graphs/prompt.py class PatternChainState (line 13) | class PatternChainState(TypedDict): function call_model (line 20) | async def call_model(state: dict, config: RunnableConfig) -> dict: FILE: open_notebook/graphs/source.py class SourceState (line 19) | class SourceState(TypedDict): class TransformationState (line 29) | class TransformationState(TypedDict): function content_process (line 34) | async def content_process(state: SourceState) -> dict: function save_source (line 97) | async def save_source(state: SourceState) -> dict: function trigger_transformations (line 130) | def trigger_transformations(state: SourceState, config: RunnableConfig) ... function transform_content (line 149) | async def transform_content(state: TransformationState) -> Optional[dict]: FILE: open_notebook/graphs/source_chat.py class SourceChatState (line 23) | class SourceChatState(TypedDict): function call_model_with_source_context (line 33) | def call_model_with_source_context( function _call_model_with_source_context_inner (line 54) | def _call_model_with_source_context_inner( function _format_source_context (line 190) | def _format_source_context(context_data: Dict) -> str: FILE: open_notebook/graphs/tools.py function get_current_timestamp (line 8) | def get_current_timestamp() -> str: FILE: open_notebook/graphs/transformation.py class TransformationState (line 16) | class TransformationState(TypedDict): function run_transformation (line 23) | async def run_transformation(state: dict, config: RunnableConfig) -> dict: FILE: open_notebook/podcasts/migration.py function _find_model_record (line 14) | async def _find_model_record( function _find_or_create_model (line 27) | async def _find_or_create_model( function migrate_podcast_profiles (line 65) | async def migrate_podcast_profiles() -> None: FILE: open_notebook/podcasts/models.py function _resolve_model_config (line 11) | async def _resolve_model_config(model_id: str) -> Tuple[str, str, dict]: class EpisodeProfile (line 32) | class EpisodeProfile(ObjectModel): method validate_segments (line 84) | def validate_segments(cls, v): method _prepare_save_data (line 89) | def _prepare_save_data(self) -> dict: method resolve_outline_config (line 97) | async def resolve_outline_config(self) -> Tuple[str, str, dict]: method resolve_transcript_config (line 106) | async def resolve_transcript_config(self) -> Tuple[str, str, dict]: method get_by_name (line 116) | async def get_by_name(cls, name: str) -> Optional["EpisodeProfile"]: class SpeakerProfile (line 126) | class SpeakerProfile(ObjectModel): method validate_speakers (line 160) | def validate_speakers(cls, v): method _prepare_save_data (line 171) | def _prepare_save_data(self) -> dict: method resolve_tts_config (line 182) | async def resolve_tts_config(self) -> Tuple[str, str, dict]: method get_by_name (line 192) | async def get_by_name(cls, name: str) -> Optional["SpeakerProfile"]: class PodcastEpisode (line 202) | class PodcastEpisode(ObjectModel): method get_job_status (line 231) | async def get_job_status(self) -> Optional[str]: method get_job_detail (line 244) | async def get_job_detail(self) -> dict: method parse_command (line 264) | def parse_command(cls, value): method _prepare_save_data (line 269) | def _prepare_save_data(self) -> dict: FILE: open_notebook/utils/chunking.py function _get_chunk_size (line 30) | def _get_chunk_size() -> int: function _get_chunk_overlap (line 57) | def _get_chunk_overlap(chunk_size: int) -> int: class ContentType (line 95) | class ContentType(Enum): function detect_content_type_from_extension (line 141) | def detect_content_type_from_extension( function detect_content_type_from_heuristics (line 163) | def detect_content_type_from_heuristics(text: str) -> Tuple[ContentType,... function _calculate_html_score (line 198) | def _calculate_html_score(text: str) -> float: function _calculate_markdown_score (line 234) | def _calculate_markdown_score(text: str) -> float: function detect_content_type (line 290) | def detect_content_type(text: str, file_path: Optional[str] = None) -> C... function _get_html_splitter (line 333) | def _get_html_splitter() -> HTMLHeaderTextSplitter: function _get_markdown_splitter (line 343) | def _get_markdown_splitter() -> MarkdownHeaderTextSplitter: function _get_plain_splitter (line 356) | def _get_plain_splitter() -> RecursiveCharacterTextSplitter: function _apply_secondary_chunking (line 366) | def _apply_secondary_chunking(chunks: List[str]) -> List[str]: function chunk_text (line 386) | def chunk_text( FILE: open_notebook/utils/context_builder.py class ContextItem (line 22) | class ContextItem: method __post_init__ (line 31) | def __post_init__(self): class ContextConfig (line 39) | class ContextConfig: method __post_init__ (line 49) | def __post_init__(self): class ContextBuilder (line 59) | class ContextBuilder: method __init__ (line 65) | def __init__(self, **kwargs): method build (line 105) | async def build(self) -> Dict[str, Any]: method _add_source_context (line 142) | async def _add_source_context( method _add_notebook_context (line 210) | async def _add_notebook_context(self, notebook_id: str) -> None: method _add_note_context (line 254) | async def _add_note_context( method _process_custom_params (line 296) | async def _process_custom_params(self) -> None: method add_item (line 305) | def add_item(self, item: ContextItem) -> None: method prioritize (line 315) | def prioritize(self) -> None: method truncate_to_fit (line 320) | def truncate_to_fit(self, max_tokens: int) -> None: method remove_duplicates (line 351) | def remove_duplicates(self) -> None: method _format_response (line 367) | def _format_response(self) -> Dict[str, Any]: function build_notebook_context (line 422) | async def build_notebook_context( function build_source_context (line 444) | async def build_source_context( function build_mixed_context (line 464) | async def build_mixed_context( FILE: open_notebook/utils/embedding.py function mean_pool_embeddings (line 31) | async def mean_pool_embeddings(embeddings: List[List[float]]) -> List[fl... function generate_embeddings (line 87) | async def generate_embeddings( function generate_embedding (line 168) | async def generate_embedding( FILE: open_notebook/utils/encryption.py function get_secret_from_env (line 29) | def get_secret_from_env(var_name: str) -> Optional[str]: function _get_or_create_encryption_key (line 62) | def _get_or_create_encryption_key() -> str: function _get_encryption_key (line 96) | def _get_encryption_key() -> str: function _ensure_fernet_key (line 104) | def _ensure_fernet_key(key: str) -> str: function get_fernet (line 115) | def get_fernet() -> Fernet: function encrypt_value (line 128) | def encrypt_value(value: str) -> str: function looks_like_fernet_token (line 145) | def looks_like_fernet_token(s: str) -> bool: function decrypt_value (line 167) | def decrypt_value(value: str) -> str: FILE: open_notebook/utils/error_classifier.py function classify_error (line 72) | def classify_error(exception: BaseException) -> tuple[type[OpenNotebookE... function _truncate (line 99) | def _truncate(text: str, max_length: int = 200) -> str: FILE: open_notebook/utils/graph_utils.py function get_session_message_count (line 7) | async def get_session_message_count(graph, session_id: str) -> int: FILE: open_notebook/utils/text_utils.py function remove_non_ascii (line 17) | def remove_non_ascii(text: str) -> str: function remove_non_printable (line 22) | def remove_non_printable(text: str) -> str: function parse_thinking_content (line 42) | def parse_thinking_content(content: str) -> Tuple[str, str]: function clean_thinking_content (line 100) | def clean_thinking_content(content: str) -> str: function extract_text_content (line 122) | def extract_text_content(content) -> str: FILE: open_notebook/utils/token_utils.py function token_count (line 15) | def token_count(input_string: str) -> int: function token_cost (line 43) | def token_cost(token_count: int, cost_per_million: float = 0.150) -> float: FILE: open_notebook/utils/version_utils.py function get_version_from_github_async (line 14) | async def get_version_from_github_async(repo_url: str, branch: str = "ma... function get_version_from_github (line 59) | def get_version_from_github(repo_url: str, branch: str = "main") -> str: function get_installed_version (line 113) | def get_installed_version(package_name: str) -> str: function compare_versions (line 132) | def compare_versions(version1: str, version2: str) -> int: FILE: scripts/export_docs.py function get_markdown_files (line 20) | def get_markdown_files(folder: Path) -> List[Path]: function consolidate_folder (line 26) | def consolidate_folder(folder: Path, output_dir: Path) -> None: function main (line 60) | def main(): FILE: tests/test_chunking.py class TestDetectContentTypeFromExtension (line 23) | class TestDetectContentTypeFromExtension: method test_html_extensions (line 26) | def test_html_extensions(self): method test_markdown_extensions (line 33) | def test_markdown_extensions(self): method test_plain_text_extensions (line 40) | def test_plain_text_extensions(self): method test_code_extensions_as_plain (line 45) | def test_code_extensions_as_plain(self): method test_unknown_extensions (line 52) | def test_unknown_extensions(self): method test_no_extension (line 58) | def test_no_extension(self): method test_none_input (line 63) | def test_none_input(self): method test_empty_string (line 67) | def test_empty_string(self): class TestDetectContentTypeFromHeuristics (line 77) | class TestDetectContentTypeFromHeuristics: method test_html_detection_doctype (line 80) | def test_html_detection_doctype(self): method test_html_detection_tags (line 87) | def test_html_detection_tags(self): method test_markdown_detection_headers (line 94) | def test_markdown_detection_headers(self): method test_markdown_detection_links (line 114) | def test_markdown_detection_links(self): method test_markdown_detection_code_blocks (line 127) | def test_markdown_detection_code_blocks(self): method test_plain_text_detection (line 142) | def test_plain_text_detection(self): method test_short_text (line 151) | def test_short_text(self): method test_empty_text (line 156) | def test_empty_text(self): class TestDetectContentType (line 167) | class TestDetectContentType: method test_extension_takes_priority (line 170) | def test_extension_takes_priority(self): method test_no_extension_uses_heuristics (line 179) | def test_no_extension_uses_heuristics(self): method test_extension_html (line 185) | def test_extension_html(self): method test_extension_markdown (line 190) | def test_extension_markdown(self): method test_high_confidence_override (line 195) | def test_high_confidence_override(self): class TestChunkText (line 209) | class TestChunkText: method test_empty_text (line 212) | def test_empty_text(self): method test_short_text_no_chunking (line 217) | def test_short_text_no_chunking(self): method test_text_at_chunk_limit (line 224) | def test_text_at_chunk_limit(self): method test_long_text_is_chunked (line 230) | def test_long_text_is_chunked(self): method test_explicit_content_type_html (line 240) | def test_explicit_content_type_html(self): method test_explicit_content_type_markdown (line 253) | def test_explicit_content_type_markdown(self): method test_explicit_content_type_plain (line 270) | def test_explicit_content_type_plain(self): method test_file_path_detection (line 276) | def test_file_path_detection(self): method test_secondary_chunking_for_large_sections (line 282) | def test_secondary_chunking_for_large_sections(self): FILE: tests/test_domain.py class TestRecordModelSingleton (line 28) | class TestRecordModelSingleton: method test_recordmodel_singleton_behavior (line 31) | def test_recordmodel_singleton_behavior(self): class TestModelManager (line 59) | class TestModelManager: method test_model_manager_instance_isolation (line 62) | def test_model_manager_instance_isolation(self): class TestNotebookDomain (line 77) | class TestNotebookDomain: method test_notebook_name_validation (line 80) | def test_notebook_name_validation(self): method test_notebook_archived_flag (line 94) | def test_notebook_archived_flag(self): class TestSourceDomain (line 108) | class TestSourceDomain: method test_source_command_field_parsing (line 111) | def test_source_command_field_parsing(self): method test_source_delete_cleans_up_file (line 127) | async def test_source_delete_cleans_up_file(self): method test_source_delete_without_file (line 167) | async def test_source_delete_without_file(self): method test_source_delete_continues_on_file_error (line 184) | async def test_source_delete_continues_on_file_error(self): method test_vectorize_raises_valueerror_when_no_text (line 206) | async def test_vectorize_raises_valueerror_when_no_text(self): method test_vectorize_raises_valueerror_when_empty_string (line 213) | async def test_vectorize_raises_valueerror_when_empty_string(self): method test_vectorize_raises_valueerror_when_whitespace_only (line 220) | async def test_vectorize_raises_valueerror_when_whitespace_only(self): method test_vectorize_submits_command_with_valid_text (line 227) | async def test_vectorize_submits_command_with_valid_text(self): class TestNoteDomain (line 247) | class TestNoteDomain: method test_note_content_validation (line 250) | def test_note_content_validation(self): method test_note_content_for_embedding (line 268) | def test_note_content_for_embedding(self): class TestPodcastDomain (line 287) | class TestPodcastDomain: method test_speaker_profile_validation (line 290) | def test_speaker_profile_validation(self): class TestTransformationDomain (line 344) | class TestTransformationDomain: method test_transformation_creation (line 347) | def test_transformation_creation(self): class TestContentSettings (line 366) | class TestContentSettings: method test_content_settings_defaults (line 369) | def test_content_settings_defaults(self): class TestEpisodeProfile (line 385) | class TestEpisodeProfile: method test_episode_profile_segment_validation (line 388) | def test_episode_profile_segment_validation(self): FILE: tests/test_embedding.py class TestMeanPoolEmbeddings (line 20) | class TestMeanPoolEmbeddings: method test_single_embedding (line 24) | async def test_single_embedding(self): method test_two_embeddings (line 35) | async def test_two_embeddings(self): method test_identical_embeddings (line 49) | async def test_identical_embeddings(self): method test_empty_list_raises (line 64) | async def test_empty_list_raises(self): method test_normalization (line 70) | async def test_normalization(self): method test_high_dimensional (line 83) | async def test_high_dimensional(self): class TestGenerateEmbeddings (line 105) | class TestGenerateEmbeddings: method test_empty_list (line 109) | async def test_empty_list(self): method test_no_model_raises (line 115) | async def test_no_model_raises(self): method test_successful_embedding (line 128) | async def test_successful_embedding(self): class TestGenerateEmbedding (line 152) | class TestGenerateEmbedding: method test_empty_text_raises (line 156) | async def test_empty_text_raises(self): method test_short_text_direct_embedding (line 165) | async def test_short_text_direct_embedding(self): method test_long_text_chunked_and_pooled (line 183) | async def test_long_text_chunked_and_pooled(self): method test_content_type_parameter (line 211) | async def test_content_type_parameter(self): method test_batching (line 233) | async def test_batching(self): method test_batch_retry_on_transient_failure (line 265) | async def test_batch_retry_on_transient_failure(self): method test_batch_retry_exhaustion (line 294) | async def test_batch_retry_exhaustion(self): class TestErrorClassifier413 (line 323) | class TestErrorClassifier413: method test_413_status_code (line 326) | def test_413_status_code(self): method test_request_entity_too_large (line 335) | def test_request_entity_too_large(self): FILE: tests/test_graphs.py class TestGraphTools (line 27) | class TestGraphTools: method test_get_current_timestamp_format (line 30) | def test_get_current_timestamp_format(self): method test_get_current_timestamp_validity (line 38) | def test_get_current_timestamp_validity(self): method test_get_current_timestamp_is_tool (line 62) | def test_get_current_timestamp_is_tool(self): class TestPromptGraph (line 74) | class TestPromptGraph: method test_pattern_chain_state_structure (line 77) | def test_pattern_chain_state_structure(self): method test_prompt_graph_compilation (line 88) | def test_prompt_graph_compilation(self): class TestTransformationGraph (line 102) | class TestTransformationGraph: method test_transformation_state_structure (line 105) | def test_transformation_state_structure(self): method test_run_transformation_assertion_no_content (line 128) | async def test_run_transformation_assertion_no_content(self): method test_transformation_graph_compilation (line 147) | def test_transformation_graph_compilation(self): FILE: tests/test_models_api.py function client (line 8) | def client(): class TestModelCreation (line 15) | class TestModelCreation: method test_create_duplicate_model_same_case (line 21) | async def test_create_duplicate_model_same_case( method test_create_duplicate_model_different_case (line 50) | async def test_create_duplicate_model_different_case( method test_create_same_model_name_different_provider (line 78) | async def test_create_same_model_name_different_provider( method test_create_same_model_name_different_type (line 100) | async def test_create_same_model_name_different_type(self, mock_repo_q... class TestModelsProviderAvailability (line 119) | class TestModelsProviderAvailability: method test_generic_env_var_enables_all_modes (line 124) | def test_generic_env_var_enables_all_modes(self, mock_esperanto, mock_... method test_mode_specific_env_vars_llm_embedding (line 162) | def test_mode_specific_env_vars_llm_embedding( method test_no_env_vars_set (line 204) | def test_no_env_vars_set(self, mock_esperanto, mock_env, client): method test_mixed_config_generic_and_mode_specific (line 233) | def test_mixed_config_generic_and_mode_specific( method test_individual_mode_llm_only (line 275) | def test_individual_mode_llm_only(self, mock_esperanto, mock_env, clie... method test_individual_mode_embedding_only (line 305) | def test_individual_mode_embedding_only(self, mock_esperanto, mock_env... method test_individual_mode_stt_only (line 335) | def test_individual_mode_stt_only(self, mock_esperanto, mock_env, clie... method test_individual_mode_tts_only (line 365) | def test_individual_mode_tts_only(self, mock_esperanto, mock_env, clie... FILE: tests/test_notes_api.py function client (line 8) | def client(): class TestNoteCreation (line 15) | class TestNoteCreation: method test_create_note_returns_command_id (line 19) | def test_create_note_returns_command_id(self, mock_note_cls, client): method test_create_note_command_id_none_when_no_content_embedding (line 43) | def test_create_note_command_id_none_when_no_content_embedding( class TestNoteUpdate (line 68) | class TestNoteUpdate: method test_update_note_returns_command_id (line 72) | def test_update_note_returns_command_id(self, mock_note_cls, client): method test_update_note_command_id_none_when_no_embedding (line 94) | def test_update_note_command_id_none_when_no_embedding( FILE: tests/test_podcast_path.py class TestBuildEpisodeOutputDir (line 15) | class TestBuildEpisodeOutputDir: method test_directory_name_is_valid_uuid (line 18) | def test_directory_name_is_valid_uuid(self): method test_path_structure (line 23) | def test_path_structure(self): method test_no_collision_between_calls (line 27) | def test_no_collision_between_calls(self): method test_path_is_independent_of_episode_name (line 32) | def test_path_is_independent_of_episode_name(self): method test_path_works_on_posix (line 58) | def test_path_works_on_posix(self): method test_directory_can_be_created (line 63) | def test_directory_can_be_created(self, tmp_path): FILE: tests/test_url_validation.py class TestUrlValidation (line 19) | class TestUrlValidation: method test_valid_https_url (line 22) | def test_valid_https_url(self): method test_valid_http_url (line 28) | def test_valid_http_url(self): method test_invalid_scheme (line 33) | def test_invalid_scheme(self): method test_localhost_allowed_for_self_hosted (line 41) | def test_localhost_allowed_for_self_hosted(self): method test_localhost_allowed_for_ollama (line 48) | def test_localhost_allowed_for_ollama(self): method test_private_ip_allowed_for_self_hosted (line 54) | def test_private_ip_allowed_for_self_hosted(self): method test_private_ip_allowed_for_ollama (line 62) | def test_private_ip_allowed_for_ollama(self): method test_loopback_allowed_for_self_hosted (line 68) | def test_loopback_allowed_for_self_hosted(self): method test_link_local_rejection (line 73) | def test_link_local_rejection(self): method test_ipv6_localhost_allowed (line 82) | def test_ipv6_localhost_allowed(self): method test_empty_url (line 87) | def test_empty_url(self): method test_invalid_url_format (line 93) | def test_invalid_url_format(self): method test_public_hostnames_allowed (line 98) | def test_public_hostnames_allowed(self): method test_azure_specific_urls (line 106) | def test_azure_specific_urls(self): method test_openai_compatible_urls (line 115) | def test_openai_compatible_urls(self): method test_ipv4_mapped_ipv6_link_local_rejected (line 122) | def test_ipv4_mapped_ipv6_link_local_rejected(self): method test_ipv4_mapped_ipv6_private_allowed (line 127) | def test_ipv4_mapped_ipv6_private_allowed(self): FILE: tests/test_utils.py class TestTextUtilities (line 26) | class TestTextUtilities: method test_remove_non_ascii (line 29) | def test_remove_non_ascii(self): method test_remove_non_ascii_pure_ascii (line 40) | def test_remove_non_ascii_pure_ascii(self): method test_remove_non_printable (line 46) | def test_remove_non_printable(self): method test_remove_non_printable_preserves_newlines (line 57) | def test_remove_non_printable_preserves_newlines(self): method test_parse_thinking_content_basic (line 64) | def test_parse_thinking_content_basic(self): method test_parse_thinking_content_multiple_tags (line 72) | def test_parse_thinking_content_multiple_tags(self): method test_parse_thinking_content_no_tags (line 83) | def test_parse_thinking_content_no_tags(self): method test_parse_thinking_content_malformed_no_open_tag (line 91) | def test_parse_thinking_content_malformed_no_open_tag(self): method test_parse_thinking_content_invalid_input (line 99) | def test_parse_thinking_content_invalid_input(self): method test_parse_thinking_content_large_content (line 111) | def test_parse_thinking_content_large_content(self): method test_clean_thinking_content (line 120) | def test_clean_thinking_content(self): class TestTokenUtilities (line 135) | class TestTokenUtilities: method test_token_count_fallback (line 138) | def test_token_count_fallback(self): method test_token_count_network_error_fallback (line 154) | def test_token_count_network_error_fallback(self): class TestVersionUtilities (line 182) | class TestVersionUtilities: method test_compare_versions_equal (line 185) | def test_compare_versions_equal(self): method test_compare_versions_less_than (line 190) | def test_compare_versions_less_than(self): method test_compare_versions_greater_than (line 201) | def test_compare_versions_greater_than(self): method test_compare_versions_prerelease (line 212) | def test_compare_versions_prerelease(self): method test_get_installed_version_success (line 220) | def test_get_installed_version_success(self): method test_get_installed_version_not_found (line 229) | def test_get_installed_version_not_found(self): method test_get_version_from_github_invalid_url (line 236) | def test_get_version_from_github_invalid_url(self): class TestContextBuilder (line 252) | class TestContextBuilder: method test_context_config_defaults (line 255) | def test_context_config_defaults(self): method test_context_builder_initialization (line 268) | def test_context_builder_initialization(self):