# AppController Extraction List

## 1. Move to `src/models.py`
- `GenerateRequest` (BaseModel)
- `ConfirmRequest` (BaseModel)

## 2. Extraction to Module Level (Functions taking `controller: AppController`)

### From `create_api`
- `get_api_key`
- `health`
- `get_gui_state`
- `get_mma_status`
- `post_gui`
- `get_api_session`
- `post_api_session`
- `get_api_project`
- `get_performance`
- `get_diagnostics`
- `status`
- `generate`
- `stream`
- `pending_actions`
- `confirm_action`
- `list_sessions`
- `get_session`
- `delete_session`
- `get_context`
- `token_stats`

### From `_process_pending_gui_tasks` (Handlers)
- `_handle_refresh_api_metrics`
- `_handle_set_ai_status`
- `_handle_set_mma_status`
- `_handle_ai_response`
- `_handle_mma_state_update`
- `_handle_set_value`
- `_handle_click`
- `_handle_drag`
- `_handle_right_click`
- `_handle_select_list_item`
- `_handle_ask_dialog`
- `_handle_custom_callback`
- `_handle_mma_step_approval`
- `_handle_mma_spawn_approval`
- `_handle_ticket_started`
- `_handle_ticket_completed`
- `_handle_bead_updated`

### From `cb_load_prior_log`
- `_resolve_log_ref`

## 3. Extraction to Module Level (Independent Utilities)
- `parse_symbols` (Already module level)
- `get_symbol_definition` (Already module level)
- `_extract_tool_name`
- `_offload_entry_payload`

## 4. Classes to Top-Level
- `ConfirmDialog`
- `MMAApprovalDialog`
- `MMASpawnApprovalDialog`
- `AutoStepDialog` (From `_process_pending_gui_tasks`)
- `AutoSpawnDialog` (From `_process_pending_gui_tasks`)
