Implementation
Future<void> run(FlutterSecureStorage storage) async {
if (EnvConfig.isLocalLlmAvailable) return;
final done = await storage.read(key: doneKey);
if (done == 'true') return;
try {
final dir = await getApplicationSupportDirectory();
final modelsDir = Directory('${dir.path}/$_modelsDirName');
if (await modelsDir.exists()) {
await modelsDir.delete(recursive: true);
dev.log(
'Deleted ${modelsDir.path} to reclaim disk space.',
name: 'LocalLlmCleanup',
);
}
} catch (e) {
// IO failure (sandbox permissions, locked file). Skip stamping the
// flag so the cleanup retries next launch.
dev.log('cleanup failed: $e', name: 'LocalLlmCleanup');
return;
}
final current = await storage.read(
key: AiProviderConfig.providerStorageKey,
);
if (current == AiProvider.local.name) {
await storage.write(
key: AiProviderConfig.providerStorageKey,
value: AiProvider.claude.name,
);
}
await storage.delete(key: AiProvider.local.modelStorageKey);
await storage.write(key: doneKey, value: 'true');
}