main
dart 37 lines 1.25 KB
Raw
1 import 'package:flutter_riverpod/flutter_riverpod.dart';
2 import '../../../core/providers/app_providers.dart';
3 import '../data/tools/tool_registry.dart';
4 import '../data/tools/builtin_tool_provider.dart';
5 import '../data/tools/mcp_tool_provider.dart';
6 import '../data/tools/tool_definition.dart';
7 import '../data/mcp_server_manager.dart';
8
9 final mcpServerManagerProvider = Provider<McpServerManager>((ref) {
10 final packageInfo = ref.watch(packageInfoProvider);
11 return McpServerManager(appVersion: packageInfo.value?.version ?? '1.0.0');
12 });
13
14 final builtInToolProviderProvider = Provider<BuiltInToolProvider>((ref) {
15 final settings = ref.watch(settingsProvider);
16 return BuiltInToolProvider(
17 calendarToolsEnabled: settings.calendarToolsEnabled,
18 locationToolsEnabled: settings.locationToolsEnabled,
19 );
20 });
21
22 final toolRegistryProvider = Provider<ToolRegistry>((ref) {
23 final mcpServerManager = ref.watch(mcpServerManagerProvider);
24 return ToolRegistry(
25 providers: [
26 ref.watch(builtInToolProviderProvider),
27 McpToolProvider(serverManager: mcpServerManager),
28 ],
29 );
30 });
31
32 final availableToolsProvider = FutureProvider<List<ToolDefinition>>((
33 ref,
34 ) async {
35 final registry = ref.watch(toolRegistryProvider);
36 return registry.listTools();
37 });