chore: rename package com.librechat to com.garfiec.librechat

This commit is contained in:
Garfie 2026-04-03 16:11:49 -05:00
parent af7a662754
commit e5c5b549db
660 changed files with 2466 additions and 2466 deletions

View file

@ -59,7 +59,7 @@ cat UPSTREAM_VERSION
```
If missing, create from current state:
```bash
VERSION=$(grep 'SUPPORTED_BACKEND_VERSION' core/common/src/main/kotlin/com/librechat/android/core/common/BackendVersion.kt | grep -o '"[^"]*"' | tr -d '"')
VERSION=$(grep 'SUPPORTED_BACKEND_VERSION' core/common/src/main/kotlin/com/garfiec/librechat/core/common/BackendVersion.kt | grep -o '"[^"]*"' | tr -d '"')
COMMIT=$(cd upstream && git rev-parse HEAD)
echo "# Upstream LibreChat version this Android build tracks." > UPSTREAM_VERSION
echo "# Updated by the sync-upstream skill. Do not edit manually." >> UPSTREAM_VERSION
@ -82,7 +82,7 @@ Check if a prior sync was partially done in another session:
TRACKED_TAG=$(grep '^tag=' UPSTREAM_VERSION | cut -d= -f2)
# Get version from BackendVersion.kt
CODE_VERSION=$(grep 'SUPPORTED_BACKEND_VERSION' core/common/src/main/kotlin/com/librechat/android/core/common/BackendVersion.kt | grep -o '"[^"]*"' | tr -d '"')
CODE_VERSION=$(grep 'SUPPORTED_BACKEND_VERSION' core/common/src/main/kotlin/com/garfiec/librechat/core/common/BackendVersion.kt | grep -o '"[^"]*"' | tr -d '"')
# Get submodule current position
SUBMODULE_HEAD=$(cd upstream && git rev-parse HEAD)
@ -275,7 +275,7 @@ Create a task for the implementer with the approved change list:
> {paste the approved change list here}
>
> **After all code changes:**
> 1. Update `SUPPORTED_BACKEND_VERSION` in `core/common/src/main/kotlin/com/librechat/android/core/common/BackendVersion.kt` to "{new_version}" (without v prefix)
> 1. Update `SUPPORTED_BACKEND_VERSION` in `core/common/src/main/kotlin/com/garfiec/librechat/core/common/BackendVersion.kt` to "{new_version}" (without v prefix)
> 2. Advance submodule: `cd upstream && git checkout {target_tag}`
> 3. Update `UPSTREAM_VERSION` at repo root:
> ```

View file

@ -5,10 +5,10 @@ plugins {
}
android {
namespace = "com.librechat.android"
namespace = "com.garfiec.librechat"
defaultConfig {
applicationId = "com.librechat.android"
applicationId = "com.garfiec.librechat"
}
buildFeatures {

View file

@ -5,16 +5,16 @@
-dontnote kotlinx.serialization.AnnotationsKt
-keepclassmembers class kotlinx.serialization.json.** { *** Companion; }
-keepclasseswithmembers class kotlinx.serialization.json.** { kotlinx.serialization.KSerializer serializer(...); }
-keep,includedescriptorclasses class com.librechat.android.**$$serializer { *; }
-keepclassmembers class com.librechat.android.** { *** Companion; }
-keepclasseswithmembers class com.librechat.android.** { kotlinx.serialization.KSerializer serializer(...); }
-keep,includedescriptorclasses class com.garfiec.librechat.**$$serializer { *; }
-keepclassmembers class com.garfiec.librechat.** { *** Companion; }
-keepclasseswithmembers class com.garfiec.librechat.** { kotlinx.serialization.KSerializer serializer(...); }
# Keep Ktor
-keep class io.ktor.** { *; }
-dontwarn io.ktor.**
# Keep Room entities
-keep class com.librechat.android.core.data.db.entity.** { *; }
-keep class com.garfiec.librechat.core.data.db.entity.** { *; }
# Koin - keep ViewModel constructors for reflection-based instantiation
-keep class * extends androidx.lifecycle.ViewModel { <init>(...); }

View file

@ -1,4 +1,4 @@
package com.librechat.android
package com.garfiec.librechat
import androidx.compose.ui.test.assertIsDisplayed
import androidx.compose.ui.test.assertIsEnabled
@ -6,8 +6,8 @@ import androidx.compose.ui.test.assertIsNotEnabled
import androidx.compose.ui.test.junit4.createComposeRule
import androidx.compose.ui.test.onNodeWithText
import androidx.compose.ui.test.performTextInput
import com.librechat.android.core.ui.theme.LibreChatTheme
import com.librechat.android.feature.auth.screen.ServerUrlScreen
import com.garfiec.librechat.core.ui.theme.LibreChatTheme
import com.garfiec.librechat.feature.auth.screen.ServerUrlScreen
import org.junit.Rule
import org.junit.Test

View file

@ -1,4 +1,4 @@
package com.librechat.android
package com.garfiec.librechat
import android.app.Application
import coil3.ImageLoader
@ -8,17 +8,17 @@ import coil3.disk.directory
import coil3.memory.MemoryCache
import coil3.network.ktor3.KtorNetworkFetcherFactory
import coil3.request.crossfade
import com.librechat.android.core.common.di.commonModule
import com.librechat.android.core.data.di.dataModule
import com.librechat.android.core.network.di.networkModule
import com.librechat.android.feature.agents.di.agentsModule
import com.librechat.android.feature.auth.di.authModule
import com.librechat.android.feature.auth.di.authPlatformModule
import com.librechat.android.feature.chat.di.chatModule
import com.librechat.android.feature.conversations.di.conversationsModule
import com.librechat.android.feature.files.di.filesModule
import com.librechat.android.feature.settings.di.settingsModule
import com.librechat.android.navigation.appModule
import com.garfiec.librechat.core.common.di.commonModule
import com.garfiec.librechat.core.data.di.dataModule
import com.garfiec.librechat.core.network.di.networkModule
import com.garfiec.librechat.feature.agents.di.agentsModule
import com.garfiec.librechat.feature.auth.di.authModule
import com.garfiec.librechat.feature.auth.di.authPlatformModule
import com.garfiec.librechat.feature.chat.di.chatModule
import com.garfiec.librechat.feature.conversations.di.conversationsModule
import com.garfiec.librechat.feature.files.di.filesModule
import com.garfiec.librechat.feature.settings.di.settingsModule
import com.garfiec.librechat.navigation.appModule
import io.ktor.client.HttpClient
import org.koin.android.ext.android.get
import org.koin.android.ext.koin.androidContext

View file

@ -1,4 +1,4 @@
package com.librechat.android
package com.garfiec.librechat
import android.content.Intent
import android.net.Uri
@ -32,13 +32,13 @@ import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import androidx.core.view.WindowCompat
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.librechat.android.core.common.network.ConnectivityObserver
import com.librechat.android.core.data.datastore.ThemeDataStore
import com.librechat.android.core.data.datastore.ThemeMode
import com.librechat.android.core.ui.theme.LibreChatTheme
import com.librechat.android.feature.chat.ShareIntentConsumer
import com.librechat.android.feature.chat.SharedContent
import com.librechat.android.navigation.LibreChatNavHost
import com.garfiec.librechat.core.common.network.ConnectivityObserver
import com.garfiec.librechat.core.data.datastore.ThemeDataStore
import com.garfiec.librechat.core.data.datastore.ThemeMode
import com.garfiec.librechat.core.ui.theme.LibreChatTheme
import com.garfiec.librechat.feature.chat.ShareIntentConsumer
import com.garfiec.librechat.feature.chat.SharedContent
import com.garfiec.librechat.navigation.LibreChatNavHost
import org.koin.android.ext.android.inject
import co.touchlab.kermit.Logger

View file

@ -1,4 +1,4 @@
package com.librechat.android.navigation
package com.garfiec.librechat.navigation
import org.koin.core.module.dsl.viewModelOf
import org.koin.dsl.module

View file

@ -1,4 +1,4 @@
package com.librechat.android.navigation
package com.garfiec.librechat.navigation
import androidx.compose.foundation.background
import androidx.compose.foundation.clickable
@ -54,10 +54,10 @@ import androidx.compose.ui.semantics.semantics
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.librechat.android.R
import com.librechat.android.core.model.EModelEndpoint
import com.librechat.android.core.ui.components.isMonochromeIcon
import com.librechat.android.core.ui.components.toIconRes
import com.garfiec.librechat.R
import com.garfiec.librechat.core.model.EModelEndpoint
import com.garfiec.librechat.core.ui.components.isMonochromeIcon
import com.garfiec.librechat.core.ui.components.toIconRes
/**
* Lightweight snapshot of fields DrawerConversationItem actually renders.

View file

@ -1,4 +1,4 @@
package com.librechat.android.navigation
package com.garfiec.librechat.navigation
import android.net.Uri
import androidx.compose.animation.AnimatedContentTransitionScope
@ -35,29 +35,29 @@ import androidx.lifecycle.compose.collectAsStateWithLifecycle
import androidx.navigation.compose.NavHost
import androidx.navigation.compose.currentBackStackEntryAsState
import androidx.navigation.compose.rememberNavController
import com.librechat.android.MainActivity
import com.librechat.android.R
import com.librechat.android.core.ui.components.BannerDisplay
import com.librechat.android.feature.agents.navigation.AGENT_EDITOR_CREATE_ROUTE
import com.librechat.android.feature.agents.navigation.agentsGraph
import com.librechat.android.feature.auth.navigation.AUTH_GRAPH_ROUTE
import com.librechat.android.feature.auth.navigation.authGraph
import com.librechat.android.feature.chat.navigation.CHAT_GRAPH_ROUTE
import com.librechat.android.feature.chat.navigation.CHAT_ROUTE
import com.librechat.android.feature.chat.navigation.NEW_CHAT_ROUTE
import com.librechat.android.feature.chat.navigation.chatGraph
import com.librechat.android.feature.chat.navigation.navigateToChat
import com.librechat.android.feature.conversations.navigation.conversationsGraph
import com.librechat.android.feature.files.navigation.filesGraph
import com.librechat.android.feature.settings.navigation.API_KEYS_ROUTE
import com.librechat.android.feature.settings.navigation.PRESET_MANAGER_ROUTE
import com.librechat.android.feature.settings.navigation.SETTINGS_ACCOUNT_ROUTE
import com.librechat.android.feature.settings.navigation.SETTINGS_CHAT_ROUTE
import com.librechat.android.feature.settings.navigation.SETTINGS_DATA_ROUTE
import com.librechat.android.feature.settings.navigation.SETTINGS_GENERAL_ROUTE
import com.librechat.android.feature.settings.navigation.SETTINGS_TABBED_ROUTE
import com.librechat.android.feature.settings.navigation.SHARED_LINKS_ROUTE
import com.librechat.android.feature.settings.navigation.settingsGraph
import com.garfiec.librechat.MainActivity
import com.garfiec.librechat.R
import com.garfiec.librechat.core.ui.components.BannerDisplay
import com.garfiec.librechat.feature.agents.navigation.AGENT_EDITOR_CREATE_ROUTE
import com.garfiec.librechat.feature.agents.navigation.agentsGraph
import com.garfiec.librechat.feature.auth.navigation.AUTH_GRAPH_ROUTE
import com.garfiec.librechat.feature.auth.navigation.authGraph
import com.garfiec.librechat.feature.chat.navigation.CHAT_GRAPH_ROUTE
import com.garfiec.librechat.feature.chat.navigation.CHAT_ROUTE
import com.garfiec.librechat.feature.chat.navigation.NEW_CHAT_ROUTE
import com.garfiec.librechat.feature.chat.navigation.chatGraph
import com.garfiec.librechat.feature.chat.navigation.navigateToChat
import com.garfiec.librechat.feature.conversations.navigation.conversationsGraph
import com.garfiec.librechat.feature.files.navigation.filesGraph
import com.garfiec.librechat.feature.settings.navigation.API_KEYS_ROUTE
import com.garfiec.librechat.feature.settings.navigation.PRESET_MANAGER_ROUTE
import com.garfiec.librechat.feature.settings.navigation.SETTINGS_ACCOUNT_ROUTE
import com.garfiec.librechat.feature.settings.navigation.SETTINGS_CHAT_ROUTE
import com.garfiec.librechat.feature.settings.navigation.SETTINGS_DATA_ROUTE
import com.garfiec.librechat.feature.settings.navigation.SETTINGS_GENERAL_ROUTE
import com.garfiec.librechat.feature.settings.navigation.SETTINGS_TABBED_ROUTE
import com.garfiec.librechat.feature.settings.navigation.SHARED_LINKS_ROUTE
import com.garfiec.librechat.feature.settings.navigation.settingsGraph
import kotlinx.coroutines.launch
import org.koin.compose.viewmodel.koinViewModel
import co.touchlab.kermit.Logger

View file

@ -1,18 +1,18 @@
package com.librechat.android.navigation
package com.garfiec.librechat.navigation
import androidx.compose.runtime.Immutable
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.librechat.android.core.common.extensions.toInstantOrNull
import com.librechat.android.core.common.extensions.toRelativeDateGroup
import com.librechat.android.core.common.result.Result
import com.librechat.android.core.data.repository.AuthRepository
import com.librechat.android.core.data.repository.BannerRepository
import com.librechat.android.core.data.repository.ConfigRepository
import com.librechat.android.core.data.repository.ConversationRepository
import com.librechat.android.core.model.Banner
import com.librechat.android.core.model.Conversation
import com.librechat.android.core.network.client.TokenManager
import com.garfiec.librechat.core.common.extensions.toInstantOrNull
import com.garfiec.librechat.core.common.extensions.toRelativeDateGroup
import com.garfiec.librechat.core.common.result.Result
import com.garfiec.librechat.core.data.repository.AuthRepository
import com.garfiec.librechat.core.data.repository.BannerRepository
import com.garfiec.librechat.core.data.repository.ConfigRepository
import com.garfiec.librechat.core.data.repository.ConversationRepository
import com.garfiec.librechat.core.model.Banner
import com.garfiec.librechat.core.model.Conversation
import com.garfiec.librechat.core.network.client.TokenManager
import kotlinx.coroutines.Job
import kotlinx.coroutines.delay
import kotlinx.coroutines.flow.MutableStateFlow
@ -61,7 +61,7 @@ class NavHostViewModel(
private val configRepository: ConfigRepository,
private val conversationRepository: ConversationRepository,
private val tokenManager: TokenManager,
private val settingsDataStore: com.librechat.android.core.data.datastore.SettingsDataStore,
private val settingsDataStore: com.garfiec.librechat.core.data.datastore.SettingsDataStore,
) : ViewModel() {
private val _isLoggedIn = MutableStateFlow(tokenManager.isAuthenticated)

View file

@ -1,4 +1,4 @@
package com.librechat.android.navigation
package com.garfiec.librechat.navigation
import androidx.compose.foundation.background
import androidx.compose.foundation.clickable
@ -31,7 +31,7 @@ import androidx.compose.ui.res.stringResource
import androidx.compose.ui.semantics.heading
import androidx.compose.ui.semantics.semantics
import androidx.compose.ui.unit.dp
import com.librechat.android.R
import com.garfiec.librechat.R
/**
* Settings sidebar content shown when the sidebar mode is [SidebarMode.Settings].

View file

@ -1,4 +1,4 @@
package com.librechat.android.navigation
package com.garfiec.librechat.navigation
sealed interface SidebarMode {
data object Conversations : SidebarMode

View file

@ -1,4 +1,4 @@
package com.librechat.android.navigation
package com.garfiec.librechat.navigation
import androidx.compose.animation.AnimatedContent
import androidx.compose.animation.slideInHorizontally

View file

@ -1,4 +1,4 @@
package com.librechat.android.navigation
package com.garfiec.librechat.navigation
import android.net.Uri
import androidx.activity.compose.BackHandler
@ -39,24 +39,24 @@ import androidx.compose.ui.unit.dp
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import androidx.navigation.NavHostController
import androidx.navigation.compose.NavHost
import com.librechat.android.MainActivity
import com.librechat.android.core.ui.components.BannerDisplay
import com.librechat.android.feature.agents.navigation.AGENT_EDITOR_CREATE_ROUTE
import com.librechat.android.feature.agents.navigation.agentsGraph
import com.librechat.android.feature.auth.navigation.AUTH_GRAPH_ROUTE
import com.librechat.android.feature.auth.navigation.authGraph
import com.librechat.android.feature.chat.navigation.CHAT_GRAPH_ROUTE
import com.librechat.android.feature.chat.navigation.CHAT_ROUTE
import com.librechat.android.feature.chat.navigation.NEW_CHAT_ROUTE
import com.librechat.android.feature.chat.navigation.chatGraph
import com.librechat.android.feature.chat.navigation.navigateToChat
import com.librechat.android.feature.conversations.navigation.conversationsGraph
import com.librechat.android.feature.files.navigation.filesGraph
import com.librechat.android.feature.settings.navigation.API_KEYS_ROUTE
import com.librechat.android.feature.settings.navigation.PRESET_MANAGER_ROUTE
import com.librechat.android.feature.settings.navigation.SETTINGS_TABBED_ROUTE
import com.librechat.android.feature.settings.navigation.SHARED_LINKS_ROUTE
import com.librechat.android.feature.settings.navigation.settingsGraph
import com.garfiec.librechat.MainActivity
import com.garfiec.librechat.core.ui.components.BannerDisplay
import com.garfiec.librechat.feature.agents.navigation.AGENT_EDITOR_CREATE_ROUTE
import com.garfiec.librechat.feature.agents.navigation.agentsGraph
import com.garfiec.librechat.feature.auth.navigation.AUTH_GRAPH_ROUTE
import com.garfiec.librechat.feature.auth.navigation.authGraph
import com.garfiec.librechat.feature.chat.navigation.CHAT_GRAPH_ROUTE
import com.garfiec.librechat.feature.chat.navigation.CHAT_ROUTE
import com.garfiec.librechat.feature.chat.navigation.NEW_CHAT_ROUTE
import com.garfiec.librechat.feature.chat.navigation.chatGraph
import com.garfiec.librechat.feature.chat.navigation.navigateToChat
import com.garfiec.librechat.feature.conversations.navigation.conversationsGraph
import com.garfiec.librechat.feature.files.navigation.filesGraph
import com.garfiec.librechat.feature.settings.navigation.API_KEYS_ROUTE
import com.garfiec.librechat.feature.settings.navigation.PRESET_MANAGER_ROUTE
import com.garfiec.librechat.feature.settings.navigation.SETTINGS_TABBED_ROUTE
import com.garfiec.librechat.feature.settings.navigation.SHARED_LINKS_ROUTE
import com.garfiec.librechat.feature.settings.navigation.settingsGraph
import kotlinx.coroutines.launch
import co.touchlab.kermit.Logger
@ -310,7 +310,7 @@ private fun MainContent(
navHostViewModel: NavHostViewModel,
startDestination: String,
isInAuthFlow: Boolean,
banners: List<com.librechat.android.core.model.Banner>,
banners: List<com.garfiec.librechat.core.model.Banner>,
dismissedBannerIds: Set<String>,
onToggleDrawer: () -> Unit,
modifier: Modifier = Modifier,

View file

@ -1,4 +1,4 @@
package com.librechat.android.navigation
package com.garfiec.librechat.navigation
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Chat

View file

@ -1,68 +1,68 @@
package com.librechat.android
package com.garfiec.librechat
import com.librechat.android.core.common.di.commonModule
import com.librechat.android.core.common.network.ConnectivityObserver
import com.librechat.android.core.data.datastore.ConfigCacheDataStore
import com.librechat.android.core.data.datastore.ServerDataStore
import com.librechat.android.core.data.datastore.SettingsDataStore
import com.librechat.android.core.data.datastore.ThemeDataStore
import com.librechat.android.core.data.di.dataModule
import com.librechat.android.core.data.repository.AgentRepository
import com.librechat.android.core.data.repository.ApiKeyRepository
import com.librechat.android.core.data.repository.AuthRepository
import com.librechat.android.core.data.repository.BalanceRepository
import com.librechat.android.core.data.repository.BannerRepository
import com.librechat.android.core.data.repository.ChatRepository
import com.librechat.android.core.data.repository.ConfigRepository
import com.librechat.android.core.data.repository.ConversationRepository
import com.librechat.android.core.data.repository.DraftRepository
import com.librechat.android.core.data.repository.FileRepository
import com.librechat.android.core.data.repository.KeyRepository
import com.librechat.android.core.data.repository.McpRepository
import com.librechat.android.core.data.repository.MemoryRepository
import com.librechat.android.core.data.repository.MessageRepository
import com.librechat.android.core.data.repository.PresetRepository
import com.librechat.android.core.data.repository.PromptRepository
import com.librechat.android.core.data.repository.SearchRepository
import com.librechat.android.core.data.repository.ShareRepository
import com.librechat.android.core.data.repository.SpeechRepository
import com.librechat.android.core.data.repository.TagRepository
import com.librechat.android.core.data.repository.UserRepository
import com.librechat.android.core.network.api.AgentsApi
import com.librechat.android.core.network.api.ApiKeysApi
import com.librechat.android.core.network.api.AuthApi
import com.librechat.android.core.network.api.BalanceApi
import com.librechat.android.core.network.api.BannerApi
import com.librechat.android.core.network.api.ChatApi
import com.librechat.android.core.network.api.ConfigApi
import com.librechat.android.core.network.api.ConversationsApi
import com.librechat.android.core.network.api.FilesApi
import com.librechat.android.core.network.api.FilesExtApi
import com.librechat.android.core.network.api.KeysApi
import com.librechat.android.core.network.api.McpApi
import com.librechat.android.core.network.api.MemoriesApi
import com.librechat.android.core.network.api.MessagesApi
import com.librechat.android.core.network.api.PresetsApi
import com.librechat.android.core.network.api.PromptsApi
import com.librechat.android.core.network.api.SearchApi
import com.librechat.android.core.network.api.ShareApi
import com.librechat.android.core.network.api.SpeechApi
import com.librechat.android.core.network.api.TagsApi
import com.librechat.android.core.network.api.UserApi
import com.librechat.android.core.network.client.SecureTokenStorage
import com.librechat.android.core.network.client.ServerUrlProvider
import com.librechat.android.core.network.client.TokenManager
import com.librechat.android.core.network.di.networkModule
import com.librechat.android.core.network.sse.SseClient
import com.librechat.android.feature.agents.di.agentsModule
import com.librechat.android.feature.auth.di.authModule
import com.librechat.android.feature.auth.oauth.OAuthLauncher
import com.librechat.android.feature.chat.di.chatModule
import com.librechat.android.feature.conversations.di.conversationsModule
import com.librechat.android.feature.files.di.filesModule
import com.librechat.android.feature.files.platform.FileReader
import com.librechat.android.feature.settings.di.settingsModule
import com.librechat.android.navigation.appModule
import com.garfiec.librechat.core.common.di.commonModule
import com.garfiec.librechat.core.common.network.ConnectivityObserver
import com.garfiec.librechat.core.data.datastore.ConfigCacheDataStore
import com.garfiec.librechat.core.data.datastore.ServerDataStore
import com.garfiec.librechat.core.data.datastore.SettingsDataStore
import com.garfiec.librechat.core.data.datastore.ThemeDataStore
import com.garfiec.librechat.core.data.di.dataModule
import com.garfiec.librechat.core.data.repository.AgentRepository
import com.garfiec.librechat.core.data.repository.ApiKeyRepository
import com.garfiec.librechat.core.data.repository.AuthRepository
import com.garfiec.librechat.core.data.repository.BalanceRepository
import com.garfiec.librechat.core.data.repository.BannerRepository
import com.garfiec.librechat.core.data.repository.ChatRepository
import com.garfiec.librechat.core.data.repository.ConfigRepository
import com.garfiec.librechat.core.data.repository.ConversationRepository
import com.garfiec.librechat.core.data.repository.DraftRepository
import com.garfiec.librechat.core.data.repository.FileRepository
import com.garfiec.librechat.core.data.repository.KeyRepository
import com.garfiec.librechat.core.data.repository.McpRepository
import com.garfiec.librechat.core.data.repository.MemoryRepository
import com.garfiec.librechat.core.data.repository.MessageRepository
import com.garfiec.librechat.core.data.repository.PresetRepository
import com.garfiec.librechat.core.data.repository.PromptRepository
import com.garfiec.librechat.core.data.repository.SearchRepository
import com.garfiec.librechat.core.data.repository.ShareRepository
import com.garfiec.librechat.core.data.repository.SpeechRepository
import com.garfiec.librechat.core.data.repository.TagRepository
import com.garfiec.librechat.core.data.repository.UserRepository
import com.garfiec.librechat.core.network.api.AgentsApi
import com.garfiec.librechat.core.network.api.ApiKeysApi
import com.garfiec.librechat.core.network.api.AuthApi
import com.garfiec.librechat.core.network.api.BalanceApi
import com.garfiec.librechat.core.network.api.BannerApi
import com.garfiec.librechat.core.network.api.ChatApi
import com.garfiec.librechat.core.network.api.ConfigApi
import com.garfiec.librechat.core.network.api.ConversationsApi
import com.garfiec.librechat.core.network.api.FilesApi
import com.garfiec.librechat.core.network.api.FilesExtApi
import com.garfiec.librechat.core.network.api.KeysApi
import com.garfiec.librechat.core.network.api.McpApi
import com.garfiec.librechat.core.network.api.MemoriesApi
import com.garfiec.librechat.core.network.api.MessagesApi
import com.garfiec.librechat.core.network.api.PresetsApi
import com.garfiec.librechat.core.network.api.PromptsApi
import com.garfiec.librechat.core.network.api.SearchApi
import com.garfiec.librechat.core.network.api.ShareApi
import com.garfiec.librechat.core.network.api.SpeechApi
import com.garfiec.librechat.core.network.api.TagsApi
import com.garfiec.librechat.core.network.api.UserApi
import com.garfiec.librechat.core.network.client.SecureTokenStorage
import com.garfiec.librechat.core.network.client.ServerUrlProvider
import com.garfiec.librechat.core.network.client.TokenManager
import com.garfiec.librechat.core.network.di.networkModule
import com.garfiec.librechat.core.network.sse.SseClient
import com.garfiec.librechat.feature.agents.di.agentsModule
import com.garfiec.librechat.feature.auth.di.authModule
import com.garfiec.librechat.feature.auth.oauth.OAuthLauncher
import com.garfiec.librechat.feature.chat.di.chatModule
import com.garfiec.librechat.feature.conversations.di.conversationsModule
import com.garfiec.librechat.feature.files.di.filesModule
import com.garfiec.librechat.feature.files.platform.FileReader
import com.garfiec.librechat.feature.settings.di.settingsModule
import com.garfiec.librechat.navigation.appModule
import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.CoroutineScope
import org.junit.Test

View file

@ -5,9 +5,9 @@
// Core model classes — all are data classes with val-only fields, never mutated after creation.
// Wildcard patterns auto-cover new models without manual maintenance.
com.librechat.android.core.model.*
com.librechat.android.core.model.mcp.*
com.librechat.android.core.model.speech.*
com.garfiec.librechat.core.model.*
com.garfiec.librechat.core.model.mcp.*
com.garfiec.librechat.core.model.speech.*
// Kotlin stdlib collections (we only use immutable instances in practice)
kotlin.collections.List

View file

@ -4,7 +4,7 @@ plugins {
}
android {
namespace = "com.librechat.android.core.common"
namespace = "com.garfiec.librechat.core.common"
}
kotlin {

View file

@ -1,7 +1,7 @@
package com.librechat.android.core.common.di
package com.garfiec.librechat.core.common.di
import com.librechat.android.core.common.network.AndroidConnectivityObserver
import com.librechat.android.core.common.network.ConnectivityObserver
import com.garfiec.librechat.core.common.network.AndroidConnectivityObserver
import com.garfiec.librechat.core.common.network.ConnectivityObserver
import org.koin.android.ext.koin.androidContext
import org.koin.core.module.Module
import org.koin.dsl.module

View file

@ -1,4 +1,4 @@
package com.librechat.android.core.common.di
package com.garfiec.librechat.core.common.di
import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.Dispatchers

View file

@ -1,4 +1,4 @@
package com.librechat.android.core.common.extensions
package com.garfiec.librechat.core.common.extensions
import java.time.Month
import java.time.format.TextStyle

View file

@ -1,4 +1,4 @@
package com.librechat.android.core.common.network
package com.garfiec.librechat.core.common.network
import android.annotation.SuppressLint
import android.content.Context

View file

@ -1,4 +1,4 @@
package com.librechat.android.core.common.di
package com.garfiec.librechat.core.common.di
import org.junit.Test
import org.koin.test.verify.verify

View file

@ -1,4 +1,4 @@
package com.librechat.android.core.common.network
package com.garfiec.librechat.core.common.network
import app.cash.turbine.test
import com.google.common.truth.Truth.assertThat

View file

@ -1,4 +1,4 @@
package com.librechat.android.core.common.test
package com.garfiec.librechat.core.common.test
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.ExperimentalCoroutinesApi

View file

@ -1,4 +1,4 @@
package com.librechat.android.core.common
package com.garfiec.librechat.core.common
/**
* Backend version compatibility constants and comparison utilities.

View file

@ -1,4 +1,4 @@
package com.librechat.android.core.common
package com.garfiec.librechat.core.common
object EndpointConstants {
const val AGENTS = "agents"

View file

@ -1,6 +1,6 @@
package com.librechat.android.core.common.di
package com.garfiec.librechat.core.common.di
import com.librechat.android.core.common.network.ConnectivityObserver
import com.garfiec.librechat.core.common.network.ConnectivityObserver
import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers

View file

@ -1,4 +1,4 @@
package com.librechat.android.core.common.di
package com.garfiec.librechat.core.common.di
import kotlinx.coroutines.CoroutineDispatcher

View file

@ -1,4 +1,4 @@
package com.librechat.android.core.common.di
package com.garfiec.librechat.core.common.di
import org.koin.core.qualifier.named

View file

@ -1,4 +1,4 @@
package com.librechat.android.core.common.extensions
package com.garfiec.librechat.core.common.extensions
import kotlin.time.Clock
import kotlin.time.Instant

View file

@ -1,4 +1,4 @@
package com.librechat.android.core.common.extensions
package com.garfiec.librechat.core.common.extensions
/**
* Returns a locale-aware full month name + year string (e.g. "January 2025" in English).

View file

@ -1,4 +1,4 @@
package com.librechat.android.core.common.extensions
package com.garfiec.librechat.core.common.extensions
import kotlinx.coroutines.delay
import kotlinx.coroutines.flow.Flow

View file

@ -1,4 +1,4 @@
package com.librechat.android.core.common.extensions
package com.garfiec.librechat.core.common.extensions
fun String.trimTrailingSlash(): String = trimEnd('/')

View file

@ -1,4 +1,4 @@
package com.librechat.android.core.common.network
package com.garfiec.librechat.core.common.network
import kotlinx.coroutines.flow.Flow

View file

@ -1,4 +1,4 @@
package com.librechat.android.core.common.result
package com.garfiec.librechat.core.common.result
/**
* Exception thrown when the server returns a non-2xx HTTP response.

View file

@ -1,4 +1,4 @@
package com.librechat.android.core.common.result
package com.garfiec.librechat.core.common.result
sealed interface Result<out T> {
data class Success<T>(val data: T) : Result<T>

View file

@ -1,4 +1,4 @@
package com.librechat.android.core.common.result
package com.garfiec.librechat.core.common.result
import kotlinx.coroutines.test.runTest
import kotlin.test.Test

View file

@ -1,7 +1,7 @@
package com.librechat.android.core.common.di
package com.garfiec.librechat.core.common.di
import com.librechat.android.core.common.network.ConnectivityObserver
import com.librechat.android.core.common.network.IosConnectivityObserver
import com.garfiec.librechat.core.common.network.ConnectivityObserver
import com.garfiec.librechat.core.common.network.IosConnectivityObserver
import org.koin.core.module.Module
import org.koin.dsl.module

View file

@ -1,4 +1,4 @@
package com.librechat.android.core.common.di
package com.garfiec.librechat.core.common.di
import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.Dispatchers

View file

@ -1,4 +1,4 @@
package com.librechat.android.core.common.extensions
package com.garfiec.librechat.core.common.extensions
import platform.Foundation.NSCalendar
import platform.Foundation.NSDateComponents

View file

@ -1,4 +1,4 @@
package com.librechat.android.core.common.network
package com.garfiec.librechat.core.common.network
import kotlinx.cinterop.ExperimentalForeignApi
import kotlinx.coroutines.channels.awaitClose
@ -18,7 +18,7 @@ import platform.darwin.dispatch_queue_create
class IosConnectivityObserver : ConnectivityObserver {
override val isConnected: Flow<Boolean> = callbackFlow {
val monitor = nw_path_monitor_create()
val queue = dispatch_queue_create("com.librechat.network.monitor", null)
val queue = dispatch_queue_create("com.garfiec.librechat.network.monitor", null)
nw_path_monitor_set_update_handler(monitor) { path ->
val connected = nw_path_get_status(path) == nw_path_status_satisfied

View file

@ -6,7 +6,7 @@ plugins {
}
android {
namespace = "com.librechat.android.core.data"
namespace = "com.garfiec.librechat.core.data"
}
kotlin {

View file

@ -1,4 +1,4 @@
package com.librechat.android.core.data.db
package com.garfiec.librechat.core.data.db
import android.content.ContentValues
import android.database.sqlite.SQLiteDatabase

View file

@ -1,4 +1,4 @@
package com.librechat.android.core.data.datastore
package com.garfiec.librechat.core.data.datastore
import android.content.Context
import android.content.SharedPreferences

View file

@ -1,16 +1,16 @@
package com.librechat.android.core.data.di
package com.garfiec.librechat.core.data.di
import androidx.datastore.core.DataStore
import androidx.datastore.preferences.core.Preferences
import androidx.datastore.preferences.preferencesDataStore
import androidx.room.Room
import com.librechat.android.core.common.di.KoinQualifiers
import com.librechat.android.core.data.datastore.TokenDataStore
import com.librechat.android.core.data.db.LibreChatDatabase
import com.librechat.android.core.data.repository.CommonSessionCacheCleaner
import com.librechat.android.core.data.repository.SessionCacheCleaner
import com.librechat.android.core.network.client.SecureTokenStorage
import com.librechat.android.core.network.client.TokenManager
import com.garfiec.librechat.core.common.di.KoinQualifiers
import com.garfiec.librechat.core.data.datastore.TokenDataStore
import com.garfiec.librechat.core.data.db.LibreChatDatabase
import com.garfiec.librechat.core.data.repository.CommonSessionCacheCleaner
import com.garfiec.librechat.core.data.repository.SessionCacheCleaner
import com.garfiec.librechat.core.network.client.SecureTokenStorage
import com.garfiec.librechat.core.network.client.TokenManager
import io.ktor.client.HttpClient
import org.koin.android.ext.koin.androidContext
import org.koin.core.module.Module

View file

@ -1,4 +1,4 @@
package com.librechat.android.core.data.repository
package com.garfiec.librechat.core.data.repository
import java.io.File

View file

@ -1,4 +1,4 @@
package com.librechat.android.core.data.datastore
package com.garfiec.librechat.core.data.datastore
import androidx.datastore.core.DataStore
import androidx.datastore.preferences.core.PreferenceDataStoreFactory

View file

@ -0,0 +1,45 @@
package com.garfiec.librechat.core.data.di
import org.junit.Test
import org.koin.test.verify.verify
class DataModuleVerificationTest {
@Test
fun verifyDataModule() {
dataModule.verify(
extraTypes = listOf(
android.content.Context::class,
android.app.Application::class,
androidx.lifecycle.SavedStateHandle::class,
kotlin.Lazy::class,
io.ktor.client.HttpClient::class,
kotlinx.serialization.json.Json::class,
kotlinx.coroutines.CoroutineDispatcher::class,
com.garfiec.librechat.core.common.network.ConnectivityObserver::class,
com.garfiec.librechat.core.network.sse.SseClient::class,
com.garfiec.librechat.core.network.api.AuthApi::class,
com.garfiec.librechat.core.network.api.UserApi::class,
com.garfiec.librechat.core.network.api.ChatApi::class,
com.garfiec.librechat.core.network.api.ConversationsApi::class,
com.garfiec.librechat.core.network.api.MessagesApi::class,
com.garfiec.librechat.core.network.api.FilesApi::class,
com.garfiec.librechat.core.network.api.FilesExtApi::class,
com.garfiec.librechat.core.network.api.AgentsApi::class,
com.garfiec.librechat.core.network.api.PresetsApi::class,
com.garfiec.librechat.core.network.api.PromptsApi::class,
com.garfiec.librechat.core.network.api.TagsApi::class,
com.garfiec.librechat.core.network.api.ShareApi::class,
com.garfiec.librechat.core.network.api.ConfigApi::class,
com.garfiec.librechat.core.network.api.BalanceApi::class,
com.garfiec.librechat.core.network.api.SearchApi::class,
com.garfiec.librechat.core.network.api.KeysApi::class,
com.garfiec.librechat.core.network.api.ApiKeysApi::class,
com.garfiec.librechat.core.network.api.McpApi::class,
com.garfiec.librechat.core.network.api.MemoriesApi::class,
com.garfiec.librechat.core.network.api.SpeechApi::class,
com.garfiec.librechat.core.network.api.BannerApi::class,
androidx.datastore.core.DataStore::class,
),
)
}
}

View file

@ -1,45 +0,0 @@
package com.librechat.android.core.data.di
import org.junit.Test
import org.koin.test.verify.verify
class DataModuleVerificationTest {
@Test
fun verifyDataModule() {
dataModule.verify(
extraTypes = listOf(
android.content.Context::class,
android.app.Application::class,
androidx.lifecycle.SavedStateHandle::class,
kotlin.Lazy::class,
io.ktor.client.HttpClient::class,
kotlinx.serialization.json.Json::class,
kotlinx.coroutines.CoroutineDispatcher::class,
com.librechat.android.core.common.network.ConnectivityObserver::class,
com.librechat.android.core.network.sse.SseClient::class,
com.librechat.android.core.network.api.AuthApi::class,
com.librechat.android.core.network.api.UserApi::class,
com.librechat.android.core.network.api.ChatApi::class,
com.librechat.android.core.network.api.ConversationsApi::class,
com.librechat.android.core.network.api.MessagesApi::class,
com.librechat.android.core.network.api.FilesApi::class,
com.librechat.android.core.network.api.FilesExtApi::class,
com.librechat.android.core.network.api.AgentsApi::class,
com.librechat.android.core.network.api.PresetsApi::class,
com.librechat.android.core.network.api.PromptsApi::class,
com.librechat.android.core.network.api.TagsApi::class,
com.librechat.android.core.network.api.ShareApi::class,
com.librechat.android.core.network.api.ConfigApi::class,
com.librechat.android.core.network.api.BalanceApi::class,
com.librechat.android.core.network.api.SearchApi::class,
com.librechat.android.core.network.api.KeysApi::class,
com.librechat.android.core.network.api.ApiKeysApi::class,
com.librechat.android.core.network.api.McpApi::class,
com.librechat.android.core.network.api.MemoriesApi::class,
com.librechat.android.core.network.api.SpeechApi::class,
com.librechat.android.core.network.api.BannerApi::class,
androidx.datastore.core.DataStore::class,
),
)
}
}

View file

@ -1,10 +1,10 @@
package com.librechat.android.core.data.datastore
package com.garfiec.librechat.core.data.datastore
import co.touchlab.kermit.Logger
import com.librechat.android.core.model.response.RefreshResponse
import com.librechat.android.core.network.client.CookieHelper
import com.librechat.android.core.network.client.SecureTokenStorage
import com.librechat.android.core.network.client.TokenManager
import com.garfiec.librechat.core.model.response.RefreshResponse
import com.garfiec.librechat.core.network.client.CookieHelper
import com.garfiec.librechat.core.network.client.SecureTokenStorage
import com.garfiec.librechat.core.network.client.TokenManager
import io.ktor.client.HttpClient
import io.ktor.client.call.body
import io.ktor.client.plugins.ClientRequestException

View file

@ -1,11 +1,11 @@
package com.librechat.android.core.data.datastore
package com.garfiec.librechat.core.data.datastore
import androidx.datastore.core.DataStore
import androidx.datastore.preferences.core.Preferences
import androidx.datastore.preferences.core.edit
import androidx.datastore.preferences.core.stringPreferencesKey
import com.librechat.android.core.model.EndpointConfig
import com.librechat.android.core.model.StartupConfig
import com.garfiec.librechat.core.model.EndpointConfig
import com.garfiec.librechat.core.model.StartupConfig
import kotlinx.coroutines.flow.first
import kotlinx.serialization.builtins.ListSerializer
import kotlinx.serialization.builtins.MapSerializer

View file

@ -1,10 +1,10 @@
package com.librechat.android.core.data.datastore
package com.garfiec.librechat.core.data.datastore
import androidx.datastore.core.DataStore
import androidx.datastore.preferences.core.Preferences
import androidx.datastore.preferences.core.edit
import androidx.datastore.preferences.core.stringPreferencesKey
import com.librechat.android.core.network.client.ServerUrlProvider
import com.garfiec.librechat.core.network.client.ServerUrlProvider
import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.MutableStateFlow

View file

@ -1,4 +1,4 @@
package com.librechat.android.core.data.datastore
package com.garfiec.librechat.core.data.datastore
import androidx.datastore.core.DataStore
import androidx.datastore.preferences.core.Preferences

View file

@ -1,4 +1,4 @@
package com.librechat.android.core.data.datastore
package com.garfiec.librechat.core.data.datastore
import androidx.datastore.core.DataStore
import androidx.datastore.preferences.core.Preferences

View file

@ -1,4 +1,4 @@
package com.librechat.android.core.data.db
package com.garfiec.librechat.core.data.db
import androidx.room.AutoMigration
import androidx.room.ConstructedBy
@ -6,21 +6,21 @@ import androidx.room.Database
import androidx.room.RoomDatabase
import androidx.room.RoomDatabaseConstructor
import androidx.room.TypeConverters
import com.librechat.android.core.data.db.converter.Converters
import com.librechat.android.core.data.db.dao.AgentDao
import com.librechat.android.core.data.db.dao.ConversationDao
import com.librechat.android.core.data.db.dao.ConversationTagDao
import com.librechat.android.core.data.db.dao.DraftDao
import com.librechat.android.core.data.db.dao.FileDao
import com.librechat.android.core.data.db.dao.MessageDao
import com.librechat.android.core.data.db.dao.PresetDao
import com.librechat.android.core.data.db.entity.AgentEntity
import com.librechat.android.core.data.db.entity.ConversationEntity
import com.librechat.android.core.data.db.entity.ConversationTagEntity
import com.librechat.android.core.data.db.entity.DraftEntity
import com.librechat.android.core.data.db.entity.FileEntity
import com.librechat.android.core.data.db.entity.MessageEntity
import com.librechat.android.core.data.db.entity.PresetEntity
import com.garfiec.librechat.core.data.db.converter.Converters
import com.garfiec.librechat.core.data.db.dao.AgentDao
import com.garfiec.librechat.core.data.db.dao.ConversationDao
import com.garfiec.librechat.core.data.db.dao.ConversationTagDao
import com.garfiec.librechat.core.data.db.dao.DraftDao
import com.garfiec.librechat.core.data.db.dao.FileDao
import com.garfiec.librechat.core.data.db.dao.MessageDao
import com.garfiec.librechat.core.data.db.dao.PresetDao
import com.garfiec.librechat.core.data.db.entity.AgentEntity
import com.garfiec.librechat.core.data.db.entity.ConversationEntity
import com.garfiec.librechat.core.data.db.entity.ConversationTagEntity
import com.garfiec.librechat.core.data.db.entity.DraftEntity
import com.garfiec.librechat.core.data.db.entity.FileEntity
import com.garfiec.librechat.core.data.db.entity.MessageEntity
import com.garfiec.librechat.core.data.db.entity.PresetEntity
@Database(
entities = [

View file

@ -1,4 +1,4 @@
package com.librechat.android.core.data.db.converter
package com.garfiec.librechat.core.data.db.converter
import androidx.room.TypeConverter
import kotlinx.serialization.encodeToString

View file

@ -1,9 +1,9 @@
package com.librechat.android.core.data.db.dao
package com.garfiec.librechat.core.data.db.dao
import androidx.room.Dao
import androidx.room.Query
import androidx.room.Upsert
import com.librechat.android.core.data.db.entity.AgentEntity
import com.garfiec.librechat.core.data.db.entity.AgentEntity
import kotlinx.coroutines.flow.Flow
@Dao

View file

@ -1,9 +1,9 @@
package com.librechat.android.core.data.db.dao
package com.garfiec.librechat.core.data.db.dao
import androidx.room.Dao
import androidx.room.Query
import androidx.room.Upsert
import com.librechat.android.core.data.db.entity.ConversationEntity
import com.garfiec.librechat.core.data.db.entity.ConversationEntity
import kotlinx.coroutines.flow.Flow
@Dao

View file

@ -1,9 +1,9 @@
package com.librechat.android.core.data.db.dao
package com.garfiec.librechat.core.data.db.dao
import androidx.room.Dao
import androidx.room.Query
import androidx.room.Upsert
import com.librechat.android.core.data.db.entity.ConversationTagEntity
import com.garfiec.librechat.core.data.db.entity.ConversationTagEntity
import kotlinx.coroutines.flow.Flow
@Dao

View file

@ -1,9 +1,9 @@
package com.librechat.android.core.data.db.dao
package com.garfiec.librechat.core.data.db.dao
import androidx.room.Dao
import androidx.room.Query
import androidx.room.Upsert
import com.librechat.android.core.data.db.entity.DraftEntity
import com.garfiec.librechat.core.data.db.entity.DraftEntity
import kotlinx.coroutines.flow.Flow
@Dao

View file

@ -1,9 +1,9 @@
package com.librechat.android.core.data.db.dao
package com.garfiec.librechat.core.data.db.dao
import androidx.room.Dao
import androidx.room.Query
import androidx.room.Upsert
import com.librechat.android.core.data.db.entity.FileEntity
import com.garfiec.librechat.core.data.db.entity.FileEntity
import kotlinx.coroutines.flow.Flow
@Dao

View file

@ -1,9 +1,9 @@
package com.librechat.android.core.data.db.dao
package com.garfiec.librechat.core.data.db.dao
import androidx.room.Dao
import androidx.room.Query
import androidx.room.Upsert
import com.librechat.android.core.data.db.entity.MessageEntity
import com.garfiec.librechat.core.data.db.entity.MessageEntity
import kotlinx.coroutines.flow.Flow
@Dao

View file

@ -1,9 +1,9 @@
package com.librechat.android.core.data.db.dao
package com.garfiec.librechat.core.data.db.dao
import androidx.room.Dao
import androidx.room.Query
import androidx.room.Upsert
import com.librechat.android.core.data.db.entity.PresetEntity
import com.garfiec.librechat.core.data.db.entity.PresetEntity
import kotlinx.coroutines.flow.Flow
@Dao

View file

@ -1,4 +1,4 @@
package com.librechat.android.core.data.db.entity
package com.garfiec.librechat.core.data.db.entity
import androidx.room.Entity
import androidx.room.PrimaryKey

View file

@ -1,4 +1,4 @@
package com.librechat.android.core.data.db.entity
package com.garfiec.librechat.core.data.db.entity
import androidx.room.Entity
import androidx.room.Index

View file

@ -1,4 +1,4 @@
package com.librechat.android.core.data.db.entity
package com.garfiec.librechat.core.data.db.entity
import androidx.room.Entity
import androidx.room.Index

View file

@ -1,4 +1,4 @@
package com.librechat.android.core.data.db.entity
package com.garfiec.librechat.core.data.db.entity
import androidx.room.ColumnInfo
import androidx.room.Entity

View file

@ -1,4 +1,4 @@
package com.librechat.android.core.data.db.entity
package com.garfiec.librechat.core.data.db.entity
import androidx.room.Entity
import androidx.room.Index

View file

@ -1,4 +1,4 @@
package com.librechat.android.core.data.db.entity
package com.garfiec.librechat.core.data.db.entity
import androidx.room.Entity
import androidx.room.Index

View file

@ -1,4 +1,4 @@
package com.librechat.android.core.data.db.entity
package com.garfiec.librechat.core.data.db.entity
import androidx.room.Entity
import androidx.room.PrimaryKey

View file

@ -0,0 +1,135 @@
package com.garfiec.librechat.core.data.di
import com.garfiec.librechat.core.common.di.KoinQualifiers
import com.garfiec.librechat.core.data.datastore.ConfigCacheDataStore
import com.garfiec.librechat.core.data.datastore.ServerDataStore
import com.garfiec.librechat.core.data.datastore.ServerUrlKeychainFallback
import com.garfiec.librechat.core.data.datastore.SettingsDataStore
import com.garfiec.librechat.core.data.datastore.ThemeDataStore
import com.garfiec.librechat.core.data.db.LibreChatDatabase
import com.garfiec.librechat.core.data.repository.AgentRepository
import com.garfiec.librechat.core.data.repository.AgentRepositoryImpl
import com.garfiec.librechat.core.data.repository.ApiKeyRepository
import com.garfiec.librechat.core.data.repository.ApiKeyRepositoryImpl
import com.garfiec.librechat.core.data.repository.AuthRepository
import com.garfiec.librechat.core.data.repository.AuthRepositoryImpl
import com.garfiec.librechat.core.data.repository.BalanceRepository
import com.garfiec.librechat.core.data.repository.BalanceRepositoryImpl
import com.garfiec.librechat.core.data.repository.BannerRepository
import com.garfiec.librechat.core.data.repository.BannerRepositoryImpl
import com.garfiec.librechat.core.data.repository.ChatRepository
import com.garfiec.librechat.core.data.repository.ChatRepositoryImpl
import com.garfiec.librechat.core.data.repository.ConfigRepository
import com.garfiec.librechat.core.data.repository.ConfigRepositoryImpl
import com.garfiec.librechat.core.data.repository.ConversationRepository
import com.garfiec.librechat.core.data.repository.ConversationRepositoryImpl
import com.garfiec.librechat.core.data.repository.DraftRepository
import com.garfiec.librechat.core.data.repository.DraftRepositoryImpl
import com.garfiec.librechat.core.data.repository.FileRepository
import com.garfiec.librechat.core.data.repository.FileRepositoryImpl
import com.garfiec.librechat.core.data.repository.KeyRepository
import com.garfiec.librechat.core.data.repository.KeyRepositoryImpl
import com.garfiec.librechat.core.data.repository.McpRepository
import com.garfiec.librechat.core.data.repository.McpRepositoryImpl
import com.garfiec.librechat.core.data.repository.MemoryRepository
import com.garfiec.librechat.core.data.repository.MemoryRepositoryImpl
import com.garfiec.librechat.core.data.repository.MessageRepository
import com.garfiec.librechat.core.data.repository.MessageRepositoryImpl
import com.garfiec.librechat.core.data.repository.PresetRepository
import com.garfiec.librechat.core.data.repository.PresetRepositoryImpl
import com.garfiec.librechat.core.data.repository.PromptRepository
import com.garfiec.librechat.core.data.repository.PromptRepositoryImpl
import com.garfiec.librechat.core.data.repository.SearchRepository
import com.garfiec.librechat.core.data.repository.SearchRepositoryImpl
import com.garfiec.librechat.core.data.repository.SessionCacheCleaner
import com.garfiec.librechat.core.data.repository.ShareRepository
import com.garfiec.librechat.core.data.repository.ShareRepositoryImpl
import com.garfiec.librechat.core.data.repository.SpeechRepository
import com.garfiec.librechat.core.data.repository.SpeechRepositoryImpl
import com.garfiec.librechat.core.data.repository.TagRepository
import com.garfiec.librechat.core.data.repository.TagRepositoryImpl
import com.garfiec.librechat.core.data.repository.UserRepository
import com.garfiec.librechat.core.data.repository.UserRepositoryImpl
import com.garfiec.librechat.core.network.client.ServerUrlProvider
import org.koin.core.module.Module
import org.koin.core.module.dsl.singleOf
import org.koin.dsl.bind
import org.koin.dsl.module
expect val dataPlatformModule: Module
val dataModule = module {
includes(dataPlatformModule)
// --- DAOs ---
single { get<LibreChatDatabase>().conversationDao() }
single { get<LibreChatDatabase>().messageDao() }
single { get<LibreChatDatabase>().fileDao() }
single { get<LibreChatDatabase>().agentDao() }
single { get<LibreChatDatabase>().presetDao() }
single { get<LibreChatDatabase>().conversationTagDao() }
single { get<LibreChatDatabase>().draftDao() }
// --- Datastores ---
single {
ServerDataStore(
dataStore = get(),
ioDispatcher = get(KoinQualifiers.IO),
keychainFallback = getOrNull(),
)
} bind ServerUrlProvider::class
singleOf(::ThemeDataStore)
singleOf(::ConfigCacheDataStore)
singleOf(::SettingsDataStore)
// --- Repositories (special wiring) ---
single<AuthRepository> {
AuthRepositoryImpl(
authApi = get(),
userApi = get(),
tokenManager = get(),
sessionCacheCleaner = get(),
)
}
single<ChatRepository> {
ChatRepositoryImpl(
chatApi = get(),
sseClient = get(),
sseHttpClient = get(KoinQualifiers.Streaming),
connectivityObserver = get(),
)
}
single<DraftRepository> {
DraftRepositoryImpl(
draftDao = get(),
ioDispatcher = get(KoinQualifiers.IO),
)
}
// --- Repositories (simple auto-wiring) ---
singleOf(::BalanceRepositoryImpl) bind BalanceRepository::class
singleOf(::ConfigRepositoryImpl) bind ConfigRepository::class
singleOf(::ConversationRepositoryImpl) bind ConversationRepository::class
singleOf(::MessageRepositoryImpl) bind MessageRepository::class
singleOf(::FileRepositoryImpl) bind FileRepository::class
singleOf(::AgentRepositoryImpl) bind AgentRepository::class
singleOf(::TagRepositoryImpl) bind TagRepository::class
singleOf(::SearchRepositoryImpl) bind SearchRepository::class
singleOf(::KeyRepositoryImpl) bind KeyRepository::class
singleOf(::ApiKeyRepositoryImpl) bind ApiKeyRepository::class
singleOf(::McpRepositoryImpl) bind McpRepository::class
singleOf(::MemoryRepositoryImpl) bind MemoryRepository::class
singleOf(::PresetRepositoryImpl) bind PresetRepository::class
singleOf(::PromptRepositoryImpl) bind PromptRepository::class
singleOf(::ShareRepositoryImpl) bind ShareRepository::class
singleOf(::SpeechRepositoryImpl) bind SpeechRepository::class
singleOf(::UserRepositoryImpl) bind UserRepository::class
singleOf(::BannerRepositoryImpl) bind BannerRepository::class
}

View file

@ -1,4 +1,4 @@
package com.librechat.android.core.data.di
package com.garfiec.librechat.core.data.di
/**
* The base name used for the DataStore preferences file on all platforms.

View file

@ -1,8 +1,8 @@
package com.librechat.android.core.data.mapper
package com.garfiec.librechat.core.data.mapper
import com.librechat.android.core.data.db.entity.ConversationEntity
import com.librechat.android.core.model.Conversation
import com.librechat.android.core.model.EModelEndpoint
import com.garfiec.librechat.core.data.db.entity.ConversationEntity
import com.garfiec.librechat.core.model.Conversation
import com.garfiec.librechat.core.model.EModelEndpoint
import kotlin.time.Clock
import kotlin.time.Instant
import kotlinx.serialization.json.Json

View file

@ -1,11 +1,11 @@
package com.librechat.android.core.data.mapper
package com.garfiec.librechat.core.data.mapper
import com.librechat.android.core.data.db.entity.MessageEntity
import com.librechat.android.core.model.Attachment
import com.librechat.android.core.model.Feedback
import com.librechat.android.core.model.FileReference
import com.librechat.android.core.model.Message
import com.librechat.android.core.model.MessageContentPart
import com.garfiec.librechat.core.data.db.entity.MessageEntity
import com.garfiec.librechat.core.model.Attachment
import com.garfiec.librechat.core.model.Feedback
import com.garfiec.librechat.core.model.FileReference
import com.garfiec.librechat.core.model.Message
import com.garfiec.librechat.core.model.MessageContentPart
import kotlin.time.Clock
import kotlin.time.Instant
import kotlinx.serialization.builtins.ListSerializer

View file

@ -1,20 +1,20 @@
package com.librechat.android.core.data.repository
package com.garfiec.librechat.core.data.repository
import com.librechat.android.core.common.result.Result
import com.librechat.android.core.model.Agent
import com.librechat.android.core.model.AgentAction
import com.librechat.android.core.model.AgentCategory
import com.librechat.android.core.model.AgentExpanded
import com.librechat.android.core.model.AgentTool
import com.librechat.android.core.model.PaginatedAgents
import com.librechat.android.core.model.ToolAuthStatus
import com.librechat.android.core.model.ToolCallRecord
import com.librechat.android.core.model.ToolCallResult
import com.librechat.android.core.model.request.CreateActionRequest
import com.librechat.android.core.model.request.CreateAgentRequest
import com.librechat.android.core.model.request.RevertAgentRequest
import com.librechat.android.core.model.request.ToolCallRequest
import com.librechat.android.core.model.request.UpdateAgentRequest
import com.garfiec.librechat.core.common.result.Result
import com.garfiec.librechat.core.model.Agent
import com.garfiec.librechat.core.model.AgentAction
import com.garfiec.librechat.core.model.AgentCategory
import com.garfiec.librechat.core.model.AgentExpanded
import com.garfiec.librechat.core.model.AgentTool
import com.garfiec.librechat.core.model.PaginatedAgents
import com.garfiec.librechat.core.model.ToolAuthStatus
import com.garfiec.librechat.core.model.ToolCallRecord
import com.garfiec.librechat.core.model.ToolCallResult
import com.garfiec.librechat.core.model.request.CreateActionRequest
import com.garfiec.librechat.core.model.request.CreateAgentRequest
import com.garfiec.librechat.core.model.request.RevertAgentRequest
import com.garfiec.librechat.core.model.request.ToolCallRequest
import com.garfiec.librechat.core.model.request.UpdateAgentRequest
interface AgentRepository {

View file

@ -1,22 +1,22 @@
package com.librechat.android.core.data.repository
package com.garfiec.librechat.core.data.repository
import com.librechat.android.core.common.result.Result
import com.librechat.android.core.common.result.safeApiCall
import com.librechat.android.core.model.Agent
import com.librechat.android.core.model.AgentAction
import com.librechat.android.core.model.AgentCategory
import com.librechat.android.core.model.AgentExpanded
import com.librechat.android.core.model.AgentTool
import com.librechat.android.core.model.PaginatedAgents
import com.librechat.android.core.model.ToolAuthStatus
import com.librechat.android.core.model.ToolCallRecord
import com.librechat.android.core.model.ToolCallResult
import com.librechat.android.core.model.request.CreateActionRequest
import com.librechat.android.core.model.request.CreateAgentRequest
import com.librechat.android.core.model.request.RevertAgentRequest
import com.librechat.android.core.model.request.ToolCallRequest
import com.librechat.android.core.model.request.UpdateAgentRequest
import com.librechat.android.core.network.api.AgentsApi
import com.garfiec.librechat.core.common.result.Result
import com.garfiec.librechat.core.common.result.safeApiCall
import com.garfiec.librechat.core.model.Agent
import com.garfiec.librechat.core.model.AgentAction
import com.garfiec.librechat.core.model.AgentCategory
import com.garfiec.librechat.core.model.AgentExpanded
import com.garfiec.librechat.core.model.AgentTool
import com.garfiec.librechat.core.model.PaginatedAgents
import com.garfiec.librechat.core.model.ToolAuthStatus
import com.garfiec.librechat.core.model.ToolCallRecord
import com.garfiec.librechat.core.model.ToolCallResult
import com.garfiec.librechat.core.model.request.CreateActionRequest
import com.garfiec.librechat.core.model.request.CreateAgentRequest
import com.garfiec.librechat.core.model.request.RevertAgentRequest
import com.garfiec.librechat.core.model.request.ToolCallRequest
import com.garfiec.librechat.core.model.request.UpdateAgentRequest
import com.garfiec.librechat.core.network.api.AgentsApi
import kotlinx.serialization.json.Json
class AgentRepositoryImpl(

View file

@ -1,8 +1,8 @@
package com.librechat.android.core.data.repository
package com.garfiec.librechat.core.data.repository
import com.librechat.android.core.common.result.Result
import com.librechat.android.core.model.ApiKey
import com.librechat.android.core.model.request.CreateApiKeyRequest
import com.garfiec.librechat.core.common.result.Result
import com.garfiec.librechat.core.model.ApiKey
import com.garfiec.librechat.core.model.request.CreateApiKeyRequest
interface ApiKeyRepository {
suspend fun createApiKey(request: CreateApiKeyRequest): Result<ApiKey>

View file

@ -1,10 +1,10 @@
package com.librechat.android.core.data.repository
package com.garfiec.librechat.core.data.repository
import com.librechat.android.core.common.result.Result
import com.librechat.android.core.common.result.safeApiCall
import com.librechat.android.core.model.ApiKey
import com.librechat.android.core.model.request.CreateApiKeyRequest
import com.librechat.android.core.network.api.ApiKeysApi
import com.garfiec.librechat.core.common.result.Result
import com.garfiec.librechat.core.common.result.safeApiCall
import com.garfiec.librechat.core.model.ApiKey
import com.garfiec.librechat.core.model.request.CreateApiKeyRequest
import com.garfiec.librechat.core.network.api.ApiKeysApi
class ApiKeyRepositoryImpl(
private val apiKeysApi: ApiKeysApi,

View file

@ -1,9 +1,9 @@
package com.librechat.android.core.data.repository
package com.garfiec.librechat.core.data.repository
import com.librechat.android.core.common.result.Result
import com.librechat.android.core.model.LoginOutcome
import com.librechat.android.core.model.User
import com.librechat.android.core.model.response.TwoFactorSetupResponse
import com.garfiec.librechat.core.common.result.Result
import com.garfiec.librechat.core.model.LoginOutcome
import com.garfiec.librechat.core.model.User
import com.garfiec.librechat.core.model.response.TwoFactorSetupResponse
interface AuthRepository {
suspend fun login(email: String, password: String): Result<LoginOutcome>

View file

@ -1,13 +1,13 @@
package com.librechat.android.core.data.repository
package com.garfiec.librechat.core.data.repository
import com.librechat.android.core.common.result.Result
import com.librechat.android.core.common.result.safeApiCall
import com.librechat.android.core.model.LoginOutcome
import com.librechat.android.core.model.User
import com.librechat.android.core.model.response.TwoFactorSetupResponse
import com.librechat.android.core.network.api.AuthApi
import com.librechat.android.core.network.api.UserApi
import com.librechat.android.core.network.client.TokenManager
import com.garfiec.librechat.core.common.result.Result
import com.garfiec.librechat.core.common.result.safeApiCall
import com.garfiec.librechat.core.model.LoginOutcome
import com.garfiec.librechat.core.model.User
import com.garfiec.librechat.core.model.response.TwoFactorSetupResponse
import com.garfiec.librechat.core.network.api.AuthApi
import com.garfiec.librechat.core.network.api.UserApi
import com.garfiec.librechat.core.network.client.TokenManager
class AuthRepositoryImpl(
private val authApi: AuthApi,

View file

@ -0,0 +1,8 @@
package com.garfiec.librechat.core.data.repository
import com.garfiec.librechat.core.common.result.Result
import com.garfiec.librechat.core.model.Balance
interface BalanceRepository {
suspend fun getBalance(): Result<Balance>
}

View file

@ -0,0 +1,15 @@
package com.garfiec.librechat.core.data.repository
import com.garfiec.librechat.core.common.result.Result
import com.garfiec.librechat.core.common.result.safeApiCall
import com.garfiec.librechat.core.model.Balance
import com.garfiec.librechat.core.network.api.BalanceApi
class BalanceRepositoryImpl(
private val balanceApi: BalanceApi,
) : BalanceRepository {
override suspend fun getBalance(): Result<Balance> = safeApiCall {
balanceApi.getBalance()
}
}

View file

@ -0,0 +1,9 @@
package com.garfiec.librechat.core.data.repository
import com.garfiec.librechat.core.common.result.Result
import com.garfiec.librechat.core.model.Banner
/** Fetches server-configured banners for display in the app. */
interface BannerRepository {
suspend fun getBanners(): Result<List<Banner>>
}

View file

@ -0,0 +1,14 @@
package com.garfiec.librechat.core.data.repository
import com.garfiec.librechat.core.common.result.Result
import com.garfiec.librechat.core.common.result.safeApiCall
import com.garfiec.librechat.core.model.Banner
import com.garfiec.librechat.core.network.api.BannerApi
class BannerRepositoryImpl(
private val bannerApi: BannerApi,
) : BannerRepository {
override suspend fun getBanners(): Result<List<Banner>> =
safeApiCall { bannerApi.getBanners() }
}

View file

@ -1,4 +1,4 @@
package com.librechat.android.core.data.repository
package com.garfiec.librechat.core.data.repository
import co.touchlab.kermit.Logger

View file

@ -1,11 +1,11 @@
package com.librechat.android.core.data.repository
package com.garfiec.librechat.core.data.repository
import com.librechat.android.core.model.EModelEndpoint
import com.librechat.android.core.model.FileReference
import com.librechat.android.core.model.request.AddedConversation
import com.librechat.android.core.model.request.ChatRequest
import com.librechat.android.core.model.request.EphemeralAgent
import com.librechat.android.core.model.request.NO_PARENT
import com.garfiec.librechat.core.model.EModelEndpoint
import com.garfiec.librechat.core.model.FileReference
import com.garfiec.librechat.core.model.request.AddedConversation
import com.garfiec.librechat.core.model.request.ChatRequest
import com.garfiec.librechat.core.model.request.EphemeralAgent
import com.garfiec.librechat.core.model.request.NO_PARENT
object ChatPayloadBuilder {

View file

@ -1,11 +1,11 @@
package com.librechat.android.core.data.repository
package com.garfiec.librechat.core.data.repository
import com.librechat.android.core.common.result.Result
import com.librechat.android.core.model.FileReference
import com.librechat.android.core.model.StreamEvent
import com.librechat.android.core.model.request.AddedConversation
import com.librechat.android.core.model.request.EphemeralAgent
import com.librechat.android.core.model.response.ChatStatusResponse
import com.garfiec.librechat.core.common.result.Result
import com.garfiec.librechat.core.model.FileReference
import com.garfiec.librechat.core.model.StreamEvent
import com.garfiec.librechat.core.model.request.AddedConversation
import com.garfiec.librechat.core.model.request.EphemeralAgent
import com.garfiec.librechat.core.model.response.ChatStatusResponse
import kotlinx.coroutines.flow.Flow
interface ChatRepository {

View file

@ -1,15 +1,15 @@
package com.librechat.android.core.data.repository
package com.garfiec.librechat.core.data.repository
import com.librechat.android.core.common.network.ConnectivityObserver
import com.librechat.android.core.common.result.Result
import com.librechat.android.core.common.result.safeApiCall
import com.librechat.android.core.model.FileReference
import com.librechat.android.core.model.StreamEvent
import com.librechat.android.core.model.request.AddedConversation
import com.librechat.android.core.model.request.EphemeralAgent
import com.librechat.android.core.model.response.ChatStatusResponse
import com.librechat.android.core.network.api.ChatApi
import com.librechat.android.core.network.sse.SseClient
import com.garfiec.librechat.core.common.network.ConnectivityObserver
import com.garfiec.librechat.core.common.result.Result
import com.garfiec.librechat.core.common.result.safeApiCall
import com.garfiec.librechat.core.model.FileReference
import com.garfiec.librechat.core.model.StreamEvent
import com.garfiec.librechat.core.model.request.AddedConversation
import com.garfiec.librechat.core.model.request.EphemeralAgent
import com.garfiec.librechat.core.model.response.ChatStatusResponse
import com.garfiec.librechat.core.network.api.ChatApi
import com.garfiec.librechat.core.network.sse.SseClient
import io.ktor.client.HttpClient
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.emitAll

View file

@ -1,8 +1,8 @@
package com.librechat.android.core.data.repository
package com.garfiec.librechat.core.data.repository
import com.librechat.android.core.common.result.Result
import com.librechat.android.core.model.EndpointConfig
import com.librechat.android.core.model.StartupConfig
import com.garfiec.librechat.core.common.result.Result
import com.garfiec.librechat.core.model.EndpointConfig
import com.garfiec.librechat.core.model.StartupConfig
import kotlinx.coroutines.flow.StateFlow
/**

View file

@ -1,13 +1,13 @@
package com.librechat.android.core.data.repository
package com.garfiec.librechat.core.data.repository
import com.librechat.android.core.common.BackendVersion
import com.librechat.android.core.common.result.ApiException
import com.librechat.android.core.common.result.Result
import com.librechat.android.core.common.result.safeApiCall
import com.librechat.android.core.data.datastore.ConfigCacheDataStore
import com.librechat.android.core.model.EndpointConfig
import com.librechat.android.core.model.StartupConfig
import com.librechat.android.core.network.api.ConfigApi
import com.garfiec.librechat.core.common.BackendVersion
import com.garfiec.librechat.core.common.result.ApiException
import com.garfiec.librechat.core.common.result.Result
import com.garfiec.librechat.core.common.result.safeApiCall
import com.garfiec.librechat.core.data.datastore.ConfigCacheDataStore
import com.garfiec.librechat.core.model.EndpointConfig
import com.garfiec.librechat.core.model.StartupConfig
import com.garfiec.librechat.core.network.api.ConfigApi
import io.ktor.client.plugins.HttpRequestTimeoutException
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow

View file

@ -1,7 +1,7 @@
package com.librechat.android.core.data.repository
package com.garfiec.librechat.core.data.repository
import com.librechat.android.core.common.result.Result
import com.librechat.android.core.model.Conversation
import com.garfiec.librechat.core.common.result.Result
import com.garfiec.librechat.core.model.Conversation
import kotlinx.coroutines.flow.Flow
interface ConversationRepository {

View file

@ -1,14 +1,14 @@
package com.librechat.android.core.data.repository
package com.garfiec.librechat.core.data.repository
import com.librechat.android.core.common.result.Result
import com.librechat.android.core.common.result.safeApiCall
import com.librechat.android.core.data.db.dao.ConversationDao
import com.librechat.android.core.data.mapper.toEntity
import com.librechat.android.core.data.mapper.toModel
import com.librechat.android.core.data.mapper.toModels
import com.librechat.android.core.model.Conversation
import com.librechat.android.core.model.request.ForkConversationRequest
import com.librechat.android.core.network.api.ConversationsApi
import com.garfiec.librechat.core.common.result.Result
import com.garfiec.librechat.core.common.result.safeApiCall
import com.garfiec.librechat.core.data.db.dao.ConversationDao
import com.garfiec.librechat.core.data.mapper.toEntity
import com.garfiec.librechat.core.data.mapper.toModel
import com.garfiec.librechat.core.data.mapper.toModels
import com.garfiec.librechat.core.model.Conversation
import com.garfiec.librechat.core.model.request.ForkConversationRequest
import com.garfiec.librechat.core.network.api.ConversationsApi
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.map
import kotlin.time.Clock

View file

@ -1,4 +1,4 @@
package com.librechat.android.core.data.repository
package com.garfiec.librechat.core.data.repository
import kotlinx.coroutines.flow.Flow

View file

@ -1,7 +1,7 @@
package com.librechat.android.core.data.repository
package com.garfiec.librechat.core.data.repository
import com.librechat.android.core.data.db.dao.DraftDao
import com.librechat.android.core.data.db.entity.DraftEntity
import com.garfiec.librechat.core.data.db.dao.DraftDao
import com.garfiec.librechat.core.data.db.entity.DraftEntity
import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Job

View file

@ -1,8 +1,8 @@
package com.librechat.android.core.data.repository
package com.garfiec.librechat.core.data.repository
import com.librechat.android.core.common.result.Result
import com.librechat.android.core.model.FileObject
import com.librechat.android.core.model.request.DeleteFileEntry
import com.garfiec.librechat.core.common.result.Result
import com.garfiec.librechat.core.model.FileObject
import com.garfiec.librechat.core.model.request.DeleteFileEntry
interface FileRepository {
suspend fun getFiles(): Result<List<FileObject>>

View file

@ -1,12 +1,12 @@
package com.librechat.android.core.data.repository
package com.garfiec.librechat.core.data.repository
import com.librechat.android.core.common.result.Result
import com.librechat.android.core.common.result.safeApiCall
import com.librechat.android.core.model.FileObject
import com.librechat.android.core.model.request.DeleteFileEntry
import com.librechat.android.core.model.request.DeleteFilesRequest
import com.librechat.android.core.network.api.FilesApi
import com.librechat.android.core.network.api.FilesExtApi
import com.garfiec.librechat.core.common.result.Result
import com.garfiec.librechat.core.common.result.safeApiCall
import com.garfiec.librechat.core.model.FileObject
import com.garfiec.librechat.core.model.request.DeleteFileEntry
import com.garfiec.librechat.core.model.request.DeleteFilesRequest
import com.garfiec.librechat.core.network.api.FilesApi
import com.garfiec.librechat.core.network.api.FilesExtApi
import kotlin.uuid.ExperimentalUuidApi
import kotlin.uuid.Uuid

Some files were not shown because too many files have changed in this diff Show more