dependencies method

  1. @override
List<Bind> dependencies()
override

Implementation

@override
List<Bind> dependencies() => [
  // ---------------------------------------------------------------
  // Auth — must be available before API layer and UI controllers
  // ---------------------------------------------------------------
  Bind.put(AuthService(), permanent: true),

  // ---------------------------------------------------------------
  // API layer
  // ---------------------------------------------------------------
  Bind.lazyPut<ApiProvider>(
    () => AnthropicClient(
      ApiConfig.anthropic(apiKey: '', model: 'claude-sonnet-4-20250514'),
    ),
    fenix: true,
  ),

  // ---------------------------------------------------------------
  // Tools
  // ---------------------------------------------------------------
  Bind.lazyPut<ToolRegistry>(() => ToolRegistry(), fenix: true),

  // ---------------------------------------------------------------
  // Commands
  // ---------------------------------------------------------------
  Bind.lazyPut<CommandRegistry>(() => CommandRegistry(), fenix: true),

  // ---------------------------------------------------------------
  // Session
  // ---------------------------------------------------------------
  Bind.lazyPut<SessionHistoryManager>(
    () => SessionHistoryManager(baseDir: SystemConstants.sessionDir),
    fenix: true,
  ),
  Bind.lazyPut<HistoryService>(() => HistoryService(), fenix: true),

  // ---------------------------------------------------------------
  // Permissions / Hooks
  // ---------------------------------------------------------------
  Bind.lazyPut<HookExecutor>(() => HookExecutor(), fenix: true),

  // ---------------------------------------------------------------
  // MCP
  // ---------------------------------------------------------------
  Bind.lazyPut<McpClient>(
    () => McpClient(toolRegistry: Sint.find<ToolRegistry>()),
    fenix: true,
  ),

  // ---------------------------------------------------------------
  // Services — core
  // ---------------------------------------------------------------
  Bind.lazyPut<GitService>(() => GitService(), fenix: true),
  Bind.lazyPut<ProjectService>(() => ProjectService(), fenix: true),
  Bind.lazyPut<SearchService>(
    () => SearchService(projectRoot: '.'),
    fenix: true,
  ),
  Bind.lazyPut<DiffService>(() => DiffService(), fenix: true),
  Bind.lazyPut<ClipboardService>(() => ClipboardService(), fenix: true),
  Bind.lazyPut<VoiceService>(() => VoiceService(), fenix: true),
  Bind.lazyPut<TelemetryService>(
    () => TelemetryService(config: TelemetryConfig()),
    fenix: true,
  ),
  Bind.lazyPut<NotificationServiceFull>(
    () => NotificationServiceFull(),
    fenix: true,
  ),
  Bind.lazyPut<AutocompleteService>(() => AutocompleteService(), fenix: true),
  Bind.lazyPut<ConfigService>(() => ConfigService(), fenix: true),
  Bind.lazyPut<RemoteSettingsService>(
    () => RemoteSettingsService(
      config: RemoteSettingsConfig(
        endpoint: 'https://api.anthropic.com/settings',
        cacheDir: '.',
      ),
    ),
    fenix: true,
  ),
  Bind.lazyPut<MemoryExtractionService>(
    () => MemoryExtractionService(),
    fenix: true,
  ),
  Bind.lazyPut<TaskManager>(() => TaskManager(), fenix: true),
  Bind.lazyPut<BootstrapService>(() => BootstrapService(), fenix: true),
  Bind.lazyPut<RateLimitService>(
    () =>
        RateLimitService(baseUrl: 'https://api.anthropic.com', cacheDir: '.'),
    fenix: true,
  ),

  // ---------------------------------------------------------------
  // State management
  // ---------------------------------------------------------------
  Bind.lazyPut<ThemeManager>(() => ThemeManager.instance, fenix: true),
  Bind.lazyPut<AppStateManager>(() => AppStateManager(), fenix: true),
  Bind.lazyPut<FeatureGateService>(() => FeatureGateService(), fenix: true),

  // ---------------------------------------------------------------
  // UI controllers
  // ---------------------------------------------------------------
  Bind.put(ChatController(), permanent: true),
  Bind.lazyPut<BuddyService>(() => BuddyService(), fenix: true),

  // ---------------------------------------------------------------
  // Platform
  // ---------------------------------------------------------------
  Bind.lazyPut<NativeBridge>(() => DesktopNativeBridge(), fenix: true),
];