Skip to content

Commit 2092a2d

Browse files
committed
AIController
1 parent 8e220e7 commit 2092a2d

14 files changed

+71
-71
lines changed

lib/controllers/artificial_intelligence_controller.dart

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
part of 'package:maid/main.dart';
22

3-
abstract class ArtificialIntelligenceController extends ChangeNotifier {
4-
static ArtificialIntelligenceController instance = LlamaCppController();
3+
abstract class AIController extends ChangeNotifier {
4+
static AIController instance = LlamaCppController();
55

66
static Map<String, String> getTypes(BuildContext context) {
77
Map<String, String> types = {};
@@ -57,7 +57,7 @@ abstract class ArtificialIntelligenceController extends ChangeNotifier {
5757
bool get canPrompt;
5858
String get hash => jsonEncode(toMap()).hash;
5959

60-
ArtificialIntelligenceController({
60+
AIController({
6161
String? model,
6262
Map<String, dynamic>? overrides
6363
}) : _model = model , _overrides = overrides ?? {};
@@ -138,9 +138,9 @@ abstract class ArtificialIntelligenceController extends ChangeNotifier {
138138
void notify() => notifyListeners();
139139
}
140140

141-
abstract class RemoteArtificialIntelligenceController extends ArtificialIntelligenceController {
142-
static RemoteArtificialIntelligenceController? get instance => ArtificialIntelligenceController.instance is RemoteArtificialIntelligenceController
143-
? ArtificialIntelligenceController.instance as RemoteArtificialIntelligenceController
141+
abstract class RemoteAIController extends AIController {
142+
static RemoteAIController? get instance => AIController.instance is RemoteAIController
143+
? AIController.instance as RemoteAIController
144144
: null;
145145

146146
static List<String> get types => [
@@ -185,7 +185,7 @@ abstract class RemoteArtificialIntelligenceController extends ArtificialIntellig
185185

186186
bool get canGetRemoteModels;
187187

188-
RemoteArtificialIntelligenceController({
188+
RemoteAIController({
189189
super.model,
190190
super.overrides,
191191
String? baseUrl,
@@ -230,9 +230,9 @@ abstract class RemoteArtificialIntelligenceController extends ArtificialIntellig
230230
}
231231
}
232232

233-
class LlamaCppController extends ArtificialIntelligenceController {
234-
static LlamaCppController? get instance => ArtificialIntelligenceController.instance is LlamaCppController
235-
? ArtificialIntelligenceController.instance as LlamaCppController
233+
class LlamaCppController extends AIController {
234+
static LlamaCppController? get instance => AIController.instance is LlamaCppController
235+
? AIController.instance as LlamaCppController
236236
: null;
237237

238238
llama.Llama? _llama;
@@ -379,9 +379,9 @@ class LlamaCppController extends ArtificialIntelligenceController {
379379
String getTypeLocale(BuildContext context) => AppLocalizations.of(context)!.llamaCpp;
380380
}
381381

382-
class OllamaController extends RemoteArtificialIntelligenceController {
383-
static OllamaController? get instance => ArtificialIntelligenceController.instance is OllamaController
384-
? ArtificialIntelligenceController.instance as OllamaController
382+
class OllamaController extends RemoteAIController {
383+
static OllamaController? get instance => AIController.instance is OllamaController
384+
? AIController.instance as OllamaController
385385
: null;
386386

387387
late ollama.OllamaClient _ollamaClient;
@@ -590,9 +590,9 @@ class OllamaController extends RemoteArtificialIntelligenceController {
590590
bool get canGetRemoteModels => baseUrl != null || searchLocalNetwork == true;
591591
}
592592

593-
class OpenAIController extends RemoteArtificialIntelligenceController {
594-
static OpenAIController? get instance => ArtificialIntelligenceController.instance is OpenAIController
595-
? ArtificialIntelligenceController.instance as OpenAIController
593+
class OpenAIController extends RemoteAIController {
594+
static OpenAIController? get instance => AIController.instance is OpenAIController
595+
? AIController.instance as OpenAIController
596596
: null;
597597

598598
late open_ai.OpenAIClient _openAiClient;
@@ -686,9 +686,9 @@ class OpenAIController extends RemoteArtificialIntelligenceController {
686686
bool get canGetRemoteModels => apiKey != null && apiKey!.isNotEmpty;
687687
}
688688

689-
class MistralController extends RemoteArtificialIntelligenceController {
690-
static MistralController? get instance => ArtificialIntelligenceController.instance is MistralController
691-
? ArtificialIntelligenceController.instance as MistralController
689+
class MistralController extends RemoteAIController {
690+
static MistralController? get instance => AIController.instance is MistralController
691+
? AIController.instance as MistralController
692692
: null;
693693

694694
late mistral.MistralAIClient _mistralClient;
@@ -787,9 +787,9 @@ class MistralController extends RemoteArtificialIntelligenceController {
787787
bool get canGetRemoteModels => true;
788788
}
789789

790-
class AnthropicController extends RemoteArtificialIntelligenceController {
791-
static AnthropicController? get instance => ArtificialIntelligenceController.instance is AnthropicController
792-
? ArtificialIntelligenceController.instance as AnthropicController
790+
class AnthropicController extends RemoteAIController {
791+
static AnthropicController? get instance => AIController.instance is AnthropicController
792+
? AIController.instance as AnthropicController
793793
: null;
794794

795795
late anthropic.AnthropicClient _anthropicClient;

lib/main.dart

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -103,15 +103,15 @@ class MaidState extends State<Maid> {
103103
void initState() {
104104
super.initState();
105105

106-
ArtificialIntelligenceController.load();
106+
AIController.load();
107107
}
108108

109109
Future<void> switchAi(String type) async {
110-
await ArtificialIntelligenceController.instance.save();
110+
await AIController.instance.save();
111111

112-
if (ArtificialIntelligenceController.instance.type == type) return;
112+
if (AIController.instance.type == type) return;
113113

114-
await ArtificialIntelligenceController.load(type);
114+
await AIController.load(type);
115115

116116
setState(() => log('AI switched to $type'));
117117
}

lib/widgets/chat/chat_tile.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ class ChatTileState extends State<ChatTile> {
2828
@override
2929
Widget build(BuildContext context) => InkWell(
3030
key: key,
31-
onTap: !ArtificialIntelligenceController.instance.busy ? onChatChange : null,
31+
onTap: !AIController.instance.busy ? onChatChange : null,
3232
onSecondaryTap: openPopover,
3333
onLongPress: openPopover,
3434
child: buildTile(),

lib/widgets/dropdowns/artificial_intelligence_dropdown.dart

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,15 +33,15 @@ class ArtificialIntelligenceDropdownState extends State<ArtificialIntelligenceDr
3333
children: [
3434
const SizedBox(width: 8),
3535
ListenableBuilder(
36-
listenable: ArtificialIntelligenceController.instance,
36+
listenable: AIController.instance,
3737
builder: buildOverrideText
3838
),
3939
buildPopupButton()
4040
]
4141
);
4242

4343
Widget buildOverrideText(BuildContext context, Widget? child) => Text(
44-
ArtificialIntelligenceController.instance.getTypeLocale(context),
44+
AIController.instance.getTypeLocale(context),
4545
style: TextStyle(
4646
color: Theme.of(context).colorScheme.onSurface,
4747
fontSize: 16
@@ -70,7 +70,7 @@ class ArtificialIntelligenceDropdownState extends State<ArtificialIntelligenceDr
7070
List<PopupMenuEntry<String>> itemBuilder(BuildContext context) {
7171
List<PopupMenuEntry<String>> items = [];
7272

73-
for (final type in ArtificialIntelligenceController.getTypes(context).entries) {
73+
for (final type in AIController.getTypes(context).entries) {
7474
items.add(PopupMenuItem<String>(
7575
padding: EdgeInsets.all(8),
7676
value: type.key,

lib/widgets/dropdowns/remote_model_dropdown.dart

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,13 @@ class RemoteModelDropdownState extends State<RemoteModelDropdown> {
1313
bool open = false;
1414

1515
void onSelected(String? model) {
16-
RemoteArtificialIntelligenceController.instance!.model = model;
16+
RemoteAIController.instance!.model = model;
1717
setState(() => open = false);
1818
}
1919

2020
Future<bool> getModelOptions() async {
2121
try {
22-
return await RemoteArtificialIntelligenceController.instance!.getModelOptions();
22+
return await RemoteAIController.instance!.getModelOptions();
2323
}
2424
catch (exception) {
2525
if (!mounted) return false;
@@ -35,7 +35,7 @@ class RemoteModelDropdownState extends State<RemoteModelDropdown> {
3535

3636
@override
3737
Widget build(BuildContext context) => ListenableBuilder(
38-
listenable: RemoteArtificialIntelligenceController.instance!,
38+
listenable: RemoteAIController.instance!,
3939
builder: buildRow
4040
);
4141

@@ -45,7 +45,7 @@ class RemoteModelDropdownState extends State<RemoteModelDropdown> {
4545
if (widget.refreshButton) buildRefreshButton(),
4646
const SizedBox(width: 8),
4747
Text(
48-
RemoteArtificialIntelligenceController.instance!.model ?? AppLocalizations.of(context)!.noModelSelected,
48+
RemoteAIController.instance!.model ?? AppLocalizations.of(context)!.noModelSelected,
4949
style: TextStyle(
5050
color: Theme.of(context).colorScheme.onSurface,
5151
fontSize: 16
@@ -55,7 +55,7 @@ class RemoteModelDropdownState extends State<RemoteModelDropdown> {
5555
]
5656
);
5757

58-
Widget buildFutureBuilder() => RemoteArtificialIntelligenceController.instance!.canGetRemoteModels ? FutureBuilder<bool>(
58+
Widget buildFutureBuilder() => RemoteAIController.instance!.canGetRemoteModels ? FutureBuilder<bool>(
5959
future: getModelOptions(),
6060
builder: buildPopupButton
6161
) : const SizedBox.shrink();
@@ -78,7 +78,7 @@ class RemoteModelDropdownState extends State<RemoteModelDropdown> {
7878
tooltip: AppLocalizations.of(context)!.selectRemoteModel,
7979
icon: enabled ? buildPopupButtonIcon() : buildSpinner(),
8080
offset: const Offset(0, 40),
81-
itemBuilder: (context) => RemoteArtificialIntelligenceController.instance!.modelOptions.map(modelBuilder).toList(),
81+
itemBuilder: (context) => RemoteAIController.instance!.modelOptions.map(modelBuilder).toList(),
8282
onOpened: () => setState(() => open = true),
8383
onCanceled: () => setState(() => open = false)
8484
);

lib/widgets/message/message.dart

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ class MessageWidgetState extends State<MessageWidget> {
6767
LlamaCppController.instance!.reloadModel(true);
6868
}
6969

70-
Stream<String> stream = ArtificialIntelligenceController.instance.prompt();
70+
Stream<String> stream = AIController.instance.prompt();
7171

7272
final newMessage = ChatMessage(content: '', role: ChatMessageRole.assistant);
7373

@@ -87,7 +87,7 @@ class MessageWidgetState extends State<MessageWidget> {
8787
}
8888

8989
void onHorizontalDragEnd(DragEndDetails details) {
90-
if (ArtificialIntelligenceController.instance.busy) return;
90+
if (AIController.instance.busy) return;
9191

9292
const threshold = 80;
9393

@@ -118,7 +118,7 @@ class MessageWidgetState extends State<MessageWidget> {
118118
// The buildCurrentMessage method will build the padding and the appropriate column based on the editing state.
119119
Widget buildCurrentMessage() => Padding(
120120
padding: const EdgeInsets.symmetric(vertical: 8.0, horizontal: 16.0),
121-
child: editing && !ArtificialIntelligenceController.instance.busy ?
121+
child: editing && !AIController.instance.busy ?
122122
buildMessageEditingColumn() :
123123
GestureDetector(
124124
onHorizontalDragEnd: onHorizontalDragEnd,
@@ -256,7 +256,7 @@ class MessageWidgetState extends State<MessageWidget> {
256256

257257
/// Builds the actions for the user to interact with the message.
258258
Widget buildActions() => ListenableBuilder(
259-
listenable: ArtificialIntelligenceController.instance,
259+
listenable: AIController.instance,
260260
builder: buildActionsRow,
261261
);
262262

@@ -293,13 +293,13 @@ class MessageWidgetState extends State<MessageWidget> {
293293
IconButton(
294294
tooltip: AppLocalizations.of(context)!.previous,
295295
icon: const Icon(Icons.arrow_left),
296-
onPressed: !ArtificialIntelligenceController.instance.busy && widget.onPreviousEnabled ? onPrevious : null,
296+
onPressed: !AIController.instance.busy && widget.onPreviousEnabled ? onPrevious : null,
297297
),
298298
Text('${widget.siblingsIndex + 1} / ${widget.siblingCount}'),
299299
IconButton(
300300
tooltip: AppLocalizations.of(context)!.next,
301301
icon: const Icon(Icons.arrow_right),
302-
onPressed: !ArtificialIntelligenceController.instance.busy && widget.onNextEnabled ? onNext : null,
302+
onPressed: !AIController.instance.busy && widget.onNextEnabled ? onNext : null,
303303
),
304304
],
305305
);
@@ -313,14 +313,14 @@ class MessageWidgetState extends State<MessageWidget> {
313313
return IconButton(
314314
tooltip: AppLocalizations.of(context)!.edit,
315315
icon: const Icon(Icons.edit),
316-
onPressed: ArtificialIntelligenceController.instance.canPrompt ? onEdit : null,
316+
onPressed: AIController.instance.canPrompt ? onEdit : null,
317317
);
318318
}
319319
else {
320320
return IconButton(
321321
tooltip: AppLocalizations.of(context)!.regenerate,
322322
icon: const Icon(Icons.refresh),
323-
onPressed: ArtificialIntelligenceController.instance.canPrompt ? onRegenerate : null,
323+
onPressed: AIController.instance.canPrompt ? onRegenerate : null,
324324
);
325325
}
326326
}
@@ -329,6 +329,6 @@ class MessageWidgetState extends State<MessageWidget> {
329329
Widget buildDeleteButton() => IconButton(
330330
tooltip: AppLocalizations.of(context)!.delete,
331331
icon: const Icon(Icons.delete),
332-
onPressed: !ArtificialIntelligenceController.instance.busy ? onDelete : null,
332+
onPressed: !AIController.instance.busy ? onDelete : null,
333333
);
334334
}

lib/widgets/pages/home_page.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ class HomePage extends StatefulWidget {
1010
class HomePageState extends State<HomePage> {
1111
@override
1212
Widget build(BuildContext context) => ListenableBuilder(
13-
listenable: ArtificialIntelligenceController.instance,
13+
listenable: AIController.instance,
1414
builder: scaffoldBuilder
1515
);
1616

lib/widgets/pages/settings_page.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ class SettingsPage extends StatelessWidget {
5151
onPressed: () {
5252
AppSettings.instance.clear();
5353
ChatController.instance.clear();
54-
ArtificialIntelligenceController.instance.clear();
54+
AIController.instance.clear();
5555
},
5656
child: Text(AppLocalizations.of(context)!.clearCache)
5757
)

lib/widgets/parameter/parameter_view.dart

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ class ParameterViewState extends State<ParameterView> {
1515
@override
1616
void initState() {
1717
super.initState();
18-
parameters.addAll(ArtificialIntelligenceController.instance.overrides);
18+
parameters.addAll(AIController.instance.overrides);
1919
count = parameters.length;
2020
timer = Timer.periodic(const Duration(seconds: 2), (_) => save());
2121
}
@@ -27,11 +27,11 @@ class ParameterViewState extends State<ParameterView> {
2727
}
2828

2929
void save() {
30-
if (ArtificialIntelligenceController.instance.overrides.length == parameters.length && ArtificialIntelligenceController.instance.overrides.entries.every((entry) => parameters[entry.key] == entry.value)) {
30+
if (AIController.instance.overrides.length == parameters.length && AIController.instance.overrides.entries.every((entry) => parameters[entry.key] == entry.value)) {
3131
return;
3232
}
3333

34-
ArtificialIntelligenceController.instance.overrides = Map.from(parameters);
34+
AIController.instance.overrides = Map.from(parameters);
3535
}
3636

3737
void import() async {

lib/widgets/settings/artificial_intelligence_settings.dart

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,19 @@ class ArtificialIntelligenceSettings extends StatelessWidget {
55

66
@override
77
Widget build(BuildContext context) => ListenableBuilder(
8-
listenable: ArtificialIntelligenceController.instance,
8+
listenable: AIController.instance,
99
builder: buildColumn,
1010
);
1111

1212
Widget buildColumn(BuildContext context, Widget? child) => Column(
1313
children: [
1414
Divider(endIndent: 0, indent: 0, height: 32),
1515
Text(
16-
AppLocalizations.of(context)!.aiSettings(ArtificialIntelligenceController.instance.getTypeLocale(context)),
16+
AppLocalizations.of(context)!.aiSettings(AIController.instance.getTypeLocale(context)),
1717
style: Theme.of(context).textTheme.titleMedium,
1818
),
1919
const SizedBox(height: 8),
20-
RemoteArtificialIntelligenceController.instance != null
20+
RemoteAIController.instance != null
2121
? buildRemoteSettings(context)
2222
: LoadModelButton(),
2323
],

lib/widgets/text_fields/api_key_text_field.dart

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@ class ApiKeyTextField extends StatelessWidget {
55

66
@override
77
Widget build(BuildContext context) => ListenableTextField(
8-
listenable: RemoteArtificialIntelligenceController.instance!,
9-
selector: () => RemoteArtificialIntelligenceController.instance!.apiKey,
10-
onChanged: (value) => RemoteArtificialIntelligenceController.instance!.apiKey = value,
8+
listenable: RemoteAIController.instance!,
9+
selector: () => RemoteAIController.instance!.apiKey,
10+
onChanged: (value) => RemoteAIController.instance!.apiKey = value,
1111
labelText: AppLocalizations.of(context)!.apiKey,
1212
requireSave: true,
1313
);

lib/widgets/text_fields/base_url_text_field.dart

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ class BaseUrlTextField extends StatelessWidget {
1111
);
1212
}
1313

14-
RemoteArtificialIntelligenceController.instance!.baseUrl = value;
14+
RemoteAIController.instance!.baseUrl = value;
1515
}
1616

1717
Widget exceptionBuilder(BuildContext context) => ErrorDialog(
@@ -23,8 +23,8 @@ class BaseUrlTextField extends StatelessWidget {
2323

2424
@override
2525
Widget build(BuildContext context) => ListenableTextField(
26-
listenable: RemoteArtificialIntelligenceController.instance!,
27-
selector: () => RemoteArtificialIntelligenceController.instance!.baseUrl,
26+
listenable: RemoteAIController.instance!,
27+
selector: () => RemoteAIController.instance!.baseUrl,
2828
onChanged: (value) => onChanged(context, value),
2929
labelText: AppLocalizations.of(context)!.baseUrl,
3030
requireSave: true,

0 commit comments

Comments
 (0)