SYMBOL INDEX (58 symbols across 17 files) FILE: backend/api/auth.py class TokenRequest (line 20) | class TokenRequest(BaseModel): class AuthStatus (line 23) | class AuthStatus(BaseModel): function get_saved_token (line 29) | def get_saved_token() -> Optional[str]: function save_token (line 36) | def save_token(token: str): function check_model_downloaded (line 41) | def check_model_downloaded() -> bool: function get_auth_status (line 50) | async def get_auth_status(): function login (line 71) | async def login(request: TokenRequest): function download_model (line 105) | async def download_model(): function logout (line 127) | async def logout(): FILE: backend/api/separate.py class SeparationRequest (line 23) | class SeparationRequest(BaseModel): class SeparationResponse (line 31) | class SeparationResponse(BaseModel): function create_separation_task (line 38) | async def create_separation_task( function create_batch_separation (line 113) | async def create_batch_separation( FILE: backend/api/tasks.py class TaskStatus (line 18) | class TaskStatus(BaseModel): class TaskResult (line 26) | class TaskResult(BaseModel): function get_task_status (line 33) | async def get_task_status(task_id: str): function download_result (line 82) | async def download_result(task_id: str, file_type: str): function download_video_with_audio (line 138) | async def download_video_with_audio(task_id: str, audio_type: str): function cancel_task (line 224) | async def cancel_task(task_id: str): function list_recent_tasks (line 234) | async def list_recent_tasks(limit: int = 10): FILE: backend/main.py function root (line 46) | async def root(): function health (line 55) | async def health(): FILE: backend/workers/tasks.py function update_progress (line 26) | def update_progress(progress: int, message: str): function create_lite_model (line 34) | def create_lite_model(model_name: str, hf_token: str = None): function get_or_load_lite_model (line 109) | def get_or_load_lite_model(model_name: str, hf_token: str, device: str, ... function cleanup_gpu_memory (line 153) | def cleanup_gpu_memory(): function separate_audio_task (line 162) | def separate_audio_task( function match_pattern_task (line 437) | def match_pattern_task( FILE: frontend/src/app/layout.tsx function RootLayout (line 16) | function RootLayout({ FILE: frontend/src/app/page.tsx type TaskResult (line 13) | interface TaskResult { type TaskState (line 26) | interface TaskState { function Home (line 34) | function Home() { FILE: frontend/src/components/AudioUploader.tsx type AudioUploaderProps (line 6) | interface AudioUploaderProps { function AudioUploader (line 10) | function AudioUploader({ onFileUpload }: AudioUploaderProps) { FILE: frontend/src/components/AuthModal.tsx type AuthModalProps (line 6) | interface AuthModalProps { function AuthModal (line 11) | function AuthModal({ onClose, onSuccess }: AuthModalProps) { FILE: frontend/src/components/Header.tsx type HeaderProps (line 5) | interface HeaderProps { function Header (line 13) | function Header({ FILE: frontend/src/components/ProgressTracker.tsx type ProgressTrackerProps (line 5) | interface ProgressTrackerProps { function ProgressTracker (line 11) | function ProgressTracker({ status, progress, message }: ProgressTrackerP... FILE: frontend/src/components/SeparationPanel.tsx type SeparationSettings (line 17) | interface SeparationSettings { type SeparationPanelProps (line 23) | interface SeparationPanelProps { constant QUICK_PROMPTS (line 33) | const QUICK_PROMPTS = [ constant MODEL_OPTIONS (line 42) | const MODEL_OPTIONS = [ function SeparationPanel (line 48) | function SeparationPanel({ FILE: frontend/src/components/StemMixer.tsx type StemMixerProps (line 19) | interface StemMixerProps { type Track (line 29) | interface Track { constant TRACKS (line 37) | const TRACKS: Track[] = [ function StemMixer (line 54) | function StemMixer({ FILE: frontend/src/components/VideoStemMixer.tsx type VideoStemMixerProps (line 19) | interface VideoStemMixerProps { type Track (line 29) | interface Track { constant TRACKS (line 37) | const TRACKS: Track[] = [ function VideoStemMixer (line 54) | function VideoStemMixer({ FILE: frontend/src/components/WaveformEditor.tsx type WaveformEditorProps (line 8) | interface WaveformEditorProps { function WaveformEditor (line 14) | function WaveformEditor({ FILE: sam_audio_lite.py function show_gpu_memory (line 11) | def show_gpu_memory(label: str = ""): function create_lite_model (line 21) | def create_lite_model(model_name: str = "facebook/sam-audio-base", token... FILE: test_video_only.py function main (line 9) | def main():