Package-level declarations
Types
Where the AI-consent choice persists. Same seam shape as com.siddharth.kmp.designsystem.ThemeStore: the default is in-memory, an app binds a persistent implementation (DataStore/Settings) in Koin so the choice survives process death.
State holder behind AiSettingsSection — the ModelManager settings screen the toolkit never shipped one for. Same shape as com.siddharth.kmp.designsystem.ThemeController: a plain class, StateFlow-exposed, testable with fakes in commonTest, bound as a Koin screen-scoped instance by the consuming app.
Default seam: holds the choice for the process lifetime only.
Outcome of the settings screen's "test key" action for one cloud provider.
One row in the on-device model list: the manager's live ModelInfo plus its manifest metadata.
One row in the cloud-provider picker: whether a key is saved, and the last "test key" outcome.
Functions
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.