AiSettingsSection

fun AiSettingsSection(uiState: AiSettingsUiState, onConsentChange: (Boolean) -> Unit, onStartDownload: (modelId: String, licenseAcknowledged: Boolean) -> Unit, onPauseDownload: (modelId: String) -> Unit, onDeleteModel: (modelId: String) -> Unit, onSelectProvider: (ProviderId) -> Unit, onProviderKeyChange: (ProviderId, String) -> Unit, onClearProviderKey: (ProviderId) -> Unit, onTestProviderKey: (ProviderId) -> Unit, modifier: Modifier = Modifier)(source)

The settings screen ModelManager/AiProvider never had (see the lane brief): on-device model download/pause/resume/delete with progress and license gating, plus cloud-provider key entry with a real "test key" call. Pure render — every action is a callback into AiSettingsState so this composable stays testable via runComposeUiTest with a fake AiSettingsUiState and no live com.siddharth.kmp.ai.ModelManager/com.siddharth.kmp.llmchat.AiProvider.