diff --git a/apps/android/app/src/main/AndroidManifest.xml b/apps/android/app/src/main/AndroidManifest.xml index e74fd47d2..909d5789e 100644 --- a/apps/android/app/src/main/AndroidManifest.xml +++ b/apps/android/app/src/main/AndroidManifest.xml @@ -38,7 +38,7 @@ android:exported="false" android:foregroundServiceType="dataSync|microphone|mediaProjection" /> diff --git a/apps/android/app/src/main/java/bot/molt/android/NodeApp.kt b/apps/android/app/src/main/java/bot/molt/android/NodeApp.kt index 96a91eb92..29b8649e6 100644 --- a/apps/android/app/src/main/java/bot/molt/android/NodeApp.kt +++ b/apps/android/app/src/main/java/bot/molt/android/NodeApp.kt @@ -2,7 +2,7 @@ package bot.molt.android import android.app.Application import android.os.StrictMode -import com.clawdbot.android.sync.SyncWorker +import bot.molt.android.sync.SyncWorker class NodeApp : Application() { val runtime: NodeRuntime by lazy { NodeRuntime(this) } diff --git a/apps/android/app/src/main/java/bot/molt/android/NodeCommandHandlers.kt b/apps/android/app/src/main/java/bot/molt/android/NodeCommandHandlers.kt index ecba13246..988a3362f 100644 --- a/apps/android/app/src/main/java/bot/molt/android/NodeCommandHandlers.kt +++ b/apps/android/app/src/main/java/bot/molt/android/NodeCommandHandlers.kt @@ -7,12 +7,12 @@ import android.util.Log import androidx.core.content.ContextCompat import bot.molt.android.gateway.GatewaySession import bot.molt.android.node.CanvasController -import bot.molt.android.protocol.ClawdbotCameraCommand -import bot.molt.android.protocol.ClawdbotCanvasA2UICommand -import bot.molt.android.protocol.ClawdbotCanvasCommand -import bot.molt.android.protocol.ClawdbotLocationCommand -import bot.molt.android.protocol.ClawdbotScreenCommand -import bot.molt.android.protocol.ClawdbotSmsCommand +import bot.molt.android.protocol.MoltbotCameraCommand +import bot.molt.android.protocol.MoltbotCanvasA2UICommand +import bot.molt.android.protocol.MoltbotCanvasCommand +import bot.molt.android.protocol.MoltbotLocationCommand +import bot.molt.android.protocol.MoltbotScreenCommand +import bot.molt.android.protocol.MoltbotSmsCommand import kotlinx.coroutines.TimeoutCancellationException private const val TAG = "NodeCommandHandlers" @@ -28,10 +28,10 @@ internal suspend fun NodeRuntime.routeInvoke( paramsJson: String? ): GatewaySession.InvokeResult { // Background restrictions - if (command.startsWith(ClawdbotCanvasCommand.NamespacePrefix) || - command.startsWith(ClawdbotCanvasA2UICommand.NamespacePrefix) || - command.startsWith(ClawdbotCameraCommand.NamespacePrefix) || - command.startsWith(ClawdbotScreenCommand.NamespacePrefix) + if (command.startsWith(MoltbotCanvasCommand.NamespacePrefix) || + command.startsWith(MoltbotCanvasA2UICommand.NamespacePrefix) || + command.startsWith(MoltbotCameraCommand.NamespacePrefix) || + command.startsWith(MoltbotScreenCommand.NamespacePrefix) ) { if (!isForeground.value) { return GatewaySession.InvokeResult.error( @@ -42,7 +42,7 @@ internal suspend fun NodeRuntime.routeInvoke( } // Camera check - if (command.startsWith(ClawdbotCameraCommand.NamespacePrefix) && !cameraEnabled.value) { + if (command.startsWith(MoltbotCameraCommand.NamespacePrefix) && !cameraEnabled.value) { return GatewaySession.InvokeResult.error( code = "CAMERA_DISABLED", message = "CAMERA_DISABLED: enable Camera in Settings", @@ -50,7 +50,7 @@ internal suspend fun NodeRuntime.routeInvoke( } // Location check - if (command.startsWith(ClawdbotLocationCommand.NamespacePrefix) && + if (command.startsWith(MoltbotLocationCommand.NamespacePrefix) && locationMode.value == LocationMode.Off ) { return GatewaySession.InvokeResult.error( @@ -60,19 +60,19 @@ internal suspend fun NodeRuntime.routeInvoke( } return when (command) { - ClawdbotCanvasCommand.Present.rawValue -> handleCanvasPresent(paramsJson) - ClawdbotCanvasCommand.Hide.rawValue -> GatewaySession.InvokeResult.ok(null) - ClawdbotCanvasCommand.Navigate.rawValue -> handleCanvasNavigate(paramsJson) - ClawdbotCanvasCommand.Eval.rawValue -> handleCanvasEval(paramsJson) - ClawdbotCanvasCommand.Snapshot.rawValue -> handleCanvasSnapshot(paramsJson) - ClawdbotCanvasA2UICommand.Reset.rawValue -> handleA2UIReset() - ClawdbotCanvasA2UICommand.Push.rawValue, - ClawdbotCanvasA2UICommand.PushJSONL.rawValue -> handleA2UIPush(command, paramsJson) - ClawdbotCameraCommand.Snap.rawValue -> handleCameraSnap(paramsJson) - ClawdbotCameraCommand.Clip.rawValue -> handleCameraClip(paramsJson) - ClawdbotLocationCommand.Get.rawValue -> handleLocationGet(paramsJson) - ClawdbotScreenCommand.Record.rawValue -> handleScreenRecord(paramsJson) - ClawdbotSmsCommand.Send.rawValue -> handleSmsSend(paramsJson) + MoltbotCanvasCommand.Present.rawValue -> handleCanvasPresent(paramsJson) + MoltbotCanvasCommand.Hide.rawValue -> GatewaySession.InvokeResult.ok(null) + MoltbotCanvasCommand.Navigate.rawValue -> handleCanvasNavigate(paramsJson) + MoltbotCanvasCommand.Eval.rawValue -> handleCanvasEval(paramsJson) + MoltbotCanvasCommand.Snapshot.rawValue -> handleCanvasSnapshot(paramsJson) + MoltbotCanvasA2UICommand.Reset.rawValue -> handleA2UIReset() + MoltbotCanvasA2UICommand.Push.rawValue, + MoltbotCanvasA2UICommand.PushJSONL.rawValue -> handleA2UIPush(command, paramsJson) + MoltbotCameraCommand.Snap.rawValue -> handleCameraSnap(paramsJson) + MoltbotCameraCommand.Clip.rawValue -> handleCameraClip(paramsJson) + MoltbotLocationCommand.Get.rawValue -> handleLocationGet(paramsJson) + MoltbotScreenCommand.Record.rawValue -> handleScreenRecord(paramsJson) + MoltbotSmsCommand.Send.rawValue -> handleSmsSend(paramsJson) else -> GatewaySession.InvokeResult.error( code = "INVALID_REQUEST", message = "INVALID_REQUEST: unknown command", diff --git a/apps/android/app/src/main/java/bot/molt/android/NodeGatewaySync.kt b/apps/android/app/src/main/java/bot/molt/android/NodeGatewaySync.kt index d28bd34c1..f4ddfc0b1 100644 --- a/apps/android/app/src/main/java/bot/molt/android/NodeGatewaySync.kt +++ b/apps/android/app/src/main/java/bot/molt/android/NodeGatewaySync.kt @@ -1,7 +1,7 @@ package bot.molt.android import android.util.Log -import bot.molt.android.protocol.ClawdbotCanvasA2UICommand +import bot.molt.android.protocol.MoltbotCanvasA2UICommand import kotlinx.coroutines.delay import kotlinx.serialization.json.JsonArray import kotlinx.serialization.json.JsonObject @@ -141,7 +141,7 @@ internal fun NodeRuntime.decodeA2uiMessages(command: String, paramsJson: String? val jsonlField = (obj["jsonl"] as? JsonPrimitive)?.content?.trim().orEmpty() val hasMessagesArray = obj["messages"] is JsonArray - if (command == ClawdbotCanvasA2UICommand.PushJSONL.rawValue || (!hasMessagesArray && jsonlField.isNotBlank())) { + if (command == MoltbotCanvasA2UICommand.PushJSONL.rawValue || (!hasMessagesArray && jsonlField.isNotBlank())) { val jsonl = jsonlField if (jsonl.isBlank()) throw IllegalArgumentException("INVALID_REQUEST: jsonl required") val messages = jsonl diff --git a/apps/android/app/src/main/java/bot/molt/android/push/ClawdbotMessagingService.kt b/apps/android/app/src/main/java/bot/molt/android/push/MoltbotMessagingService.kt similarity index 96% rename from apps/android/app/src/main/java/bot/molt/android/push/ClawdbotMessagingService.kt rename to apps/android/app/src/main/java/bot/molt/android/push/MoltbotMessagingService.kt index fc68110ca..fc4820418 100644 --- a/apps/android/app/src/main/java/bot/molt/android/push/ClawdbotMessagingService.kt +++ b/apps/android/app/src/main/java/bot/molt/android/push/MoltbotMessagingService.kt @@ -17,7 +17,7 @@ import com.google.firebase.messaging.RemoteMessage * Handles both notification messages (shown automatically when app backgrounded) * and data messages (always delivered to this handler). */ -class ClawdbotMessagingService : FirebaseMessagingService() { +class MoltbotMessagingService : FirebaseMessagingService() { override fun onCreate() { super.onCreate() @@ -127,8 +127,8 @@ class ClawdbotMessagingService : FirebaseMessagingService() { } companion object { - private const val TAG = "ClawdbotFCM" - private const val CHANNEL_ID = "clawdbot_chat" + private const val TAG = "MoltbotFCM" + private const val CHANNEL_ID = "moltbot_chat" } } @@ -140,7 +140,7 @@ class ClawdbotMessagingService : FirebaseMessagingService() { * Falls back to regular SharedPreferences only if encryption fails (rare edge cases). */ object PushTokenStore { - private const val PREFS_NAME = "clawdbot_push_secure" + private const val PREFS_NAME = "moltbot_push_secure" private const val KEY_FCM_TOKEN = "fcm_token" private const val TAG = "PushTokenStore"