fix(android): complete Clawdbot → Moltbot class renaming

- Rename ClawdbotMessagingService → MoltbotMessagingService
- Update AndroidManifest.xml service reference
- Fix NodeCommandHandlers.kt: MoltbotLocationCommand, MoltbotScreenCommand, MoltbotSmsCommand
- Fix NodeGatewaySync.kt: MoltbotCanvasA2UICommand
- Fix NodeApp.kt import path
- Update FCM channel ID and TAG constants

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
ronitchidara 2026-01-28 17:55:58 +05:30
parent 50c24afd39
commit 6b11f9da2f
5 changed files with 33 additions and 33 deletions

View File

@ -38,7 +38,7 @@
android:exported="false"
android:foregroundServiceType="dataSync|microphone|mediaProjection" />
<service
android:name=".push.ClawdbotMessagingService"
android:name=".push.MoltbotMessagingService"
android:exported="false">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />

View File

@ -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) }

View File

@ -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",

View File

@ -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

View File

@ -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"