✨ Features:
- Add admin portal thread viewer with pagination
- Display thread list with project names and public status
- Add clickable links to view threads via /share/{thread_id}
- Add admin bypass for accessing all threads (public and private)
🔧 Backend Refactoring:
- Consolidate admin APIs into admin_api.py and billing_admin_api.py
- Remove unused files: users_admin.py, admin/api.py
- Remove unused endpoints: user search, grant-bulk-credits, migrate-user
- Update admin thread endpoint to use share URLs
⚡ Performance:
- Remove message_count from UserThreadSummary (optimization)
- Remove N+1 query issue in thread listing
🔒 Authorization:
- Add admin role bypass in verify_and_authorize_thread_access
- Create RLS migration (20251005160000_admin_roles_access.sql)
- Update thread_select_policy for admin access
- Update message_select_policy for admin access
- Update project_select_policy for admin access
- Update agent_runs_select_policy for admin access
💻 Frontend:
- Add Threads tab to admin user details dialog
- Add useAdminUserThreads hook with pagination
- Remove unused admin hooks (useAdminUserSearch, useAdminAdvancedSearch)
- Display thread metadata with Open button and ExternalLink icon
🗃️ Database:
- Apply RLS policies allowing admin/super_admin roles to bypass restrictions
- Admins can now view any thread, message, project, or agent_run
This enables admins to view and debug any user's threads through the
share page interface, regardless of public/private status.
- Removed deprecated GET /agent-runs/{agent_run_id} endpoint from threads.py (20 lines)
- Removed unimplemented delete_mcp_server() method from mcp_server_service.py (12 lines)
- Removed deprecated 'sync' and 'update-all' commands from manage_suna_agents.py script (9 lines)
- Cleaned up 41 lines of dead/deprecated code
- No functional impact as these were already marked deprecated or non-functional