diff --git a/apps/android/app/src/main/java/ai/openclaw/android/node/InvokeCommandRegistry.kt b/apps/android/app/src/main/java/ai/openclaw/android/node/InvokeCommandRegistry.kt index ce87525904f..8d37794df4c 100644 --- a/apps/android/app/src/main/java/ai/openclaw/android/node/InvokeCommandRegistry.kt +++ b/apps/android/app/src/main/java/ai/openclaw/android/node/InvokeCommandRegistry.kt @@ -3,6 +3,7 @@ package ai.openclaw.android.node import ai.openclaw.android.protocol.OpenClawCanvasA2UICommand import ai.openclaw.android.protocol.OpenClawCanvasCommand import ai.openclaw.android.protocol.OpenClawCameraCommand +import ai.openclaw.android.protocol.OpenClawDeviceCommand import ai.openclaw.android.protocol.OpenClawLocationCommand import ai.openclaw.android.protocol.OpenClawNotificationsCommand import ai.openclaw.android.protocol.OpenClawScreenCommand @@ -75,6 +76,12 @@ object InvokeCommandRegistry { name = OpenClawLocationCommand.Get.rawValue, availability = InvokeCommandAvailability.LocationEnabled, ), + InvokeCommandSpec( + name = OpenClawDeviceCommand.Status.rawValue, + ), + InvokeCommandSpec( + name = OpenClawDeviceCommand.Info.rawValue, + ), InvokeCommandSpec( name = OpenClawNotificationsCommand.List.rawValue, ), diff --git a/apps/android/app/src/main/java/ai/openclaw/android/protocol/OpenClawProtocolConstants.kt b/apps/android/app/src/main/java/ai/openclaw/android/protocol/OpenClawProtocolConstants.kt index d73c61d233b..7dd48941331 100644 --- a/apps/android/app/src/main/java/ai/openclaw/android/protocol/OpenClawProtocolConstants.kt +++ b/apps/android/app/src/main/java/ai/openclaw/android/protocol/OpenClawProtocolConstants.kt @@ -7,6 +7,7 @@ enum class OpenClawCapability(val rawValue: String) { Sms("sms"), VoiceWake("voiceWake"), Location("location"), + Device("device"), } enum class OpenClawCanvasCommand(val rawValue: String) { @@ -70,6 +71,16 @@ enum class OpenClawLocationCommand(val rawValue: String) { } } +enum class OpenClawDeviceCommand(val rawValue: String) { + Status("device.status"), + Info("device.info"), + ; + + companion object { + const val NamespacePrefix: String = "device." + } +} + enum class OpenClawNotificationsCommand(val rawValue: String) { List("notifications.list"), ; diff --git a/apps/android/app/src/test/java/ai/openclaw/android/node/InvokeCommandRegistryTest.kt b/apps/android/app/src/test/java/ai/openclaw/android/node/InvokeCommandRegistryTest.kt index 88795b0d9ce..148d3866346 100644 --- a/apps/android/app/src/test/java/ai/openclaw/android/node/InvokeCommandRegistryTest.kt +++ b/apps/android/app/src/test/java/ai/openclaw/android/node/InvokeCommandRegistryTest.kt @@ -1,6 +1,7 @@ package ai.openclaw.android.node import ai.openclaw.android.protocol.OpenClawCameraCommand +import ai.openclaw.android.protocol.OpenClawDeviceCommand import ai.openclaw.android.protocol.OpenClawLocationCommand import ai.openclaw.android.protocol.OpenClawNotificationsCommand import ai.openclaw.android.protocol.OpenClawSmsCommand @@ -22,6 +23,8 @@ class InvokeCommandRegistryTest { assertFalse(commands.contains(OpenClawCameraCommand.Snap.rawValue)) assertFalse(commands.contains(OpenClawCameraCommand.Clip.rawValue)) assertFalse(commands.contains(OpenClawLocationCommand.Get.rawValue)) + assertTrue(commands.contains(OpenClawDeviceCommand.Status.rawValue)) + assertTrue(commands.contains(OpenClawDeviceCommand.Info.rawValue)) assertTrue(commands.contains(OpenClawNotificationsCommand.List.rawValue)) assertFalse(commands.contains(OpenClawSmsCommand.Send.rawValue)) assertFalse(commands.contains("debug.logs")) @@ -42,6 +45,8 @@ class InvokeCommandRegistryTest { assertTrue(commands.contains(OpenClawCameraCommand.Snap.rawValue)) assertTrue(commands.contains(OpenClawCameraCommand.Clip.rawValue)) assertTrue(commands.contains(OpenClawLocationCommand.Get.rawValue)) + assertTrue(commands.contains(OpenClawDeviceCommand.Status.rawValue)) + assertTrue(commands.contains(OpenClawDeviceCommand.Info.rawValue)) assertTrue(commands.contains(OpenClawNotificationsCommand.List.rawValue)) assertTrue(commands.contains(OpenClawSmsCommand.Send.rawValue)) assertTrue(commands.contains("debug.logs")) diff --git a/apps/android/app/src/test/java/ai/openclaw/android/protocol/OpenClawProtocolConstantsTest.kt b/apps/android/app/src/test/java/ai/openclaw/android/protocol/OpenClawProtocolConstantsTest.kt index 71eec189509..41a9a7514e8 100644 --- a/apps/android/app/src/test/java/ai/openclaw/android/protocol/OpenClawProtocolConstantsTest.kt +++ b/apps/android/app/src/test/java/ai/openclaw/android/protocol/OpenClawProtocolConstantsTest.kt @@ -26,6 +26,9 @@ class OpenClawProtocolConstantsTest { assertEquals("camera", OpenClawCapability.Camera.rawValue) assertEquals("screen", OpenClawCapability.Screen.rawValue) assertEquals("voiceWake", OpenClawCapability.VoiceWake.rawValue) + assertEquals("location", OpenClawCapability.Location.rawValue) + assertEquals("sms", OpenClawCapability.Sms.rawValue) + assertEquals("device", OpenClawCapability.Device.rawValue) } @Test @@ -37,4 +40,10 @@ class OpenClawProtocolConstantsTest { fun notificationsCommandsUseStableStrings() { assertEquals("notifications.list", OpenClawNotificationsCommand.List.rawValue) } + + @Test + fun deviceCommandsUseStableStrings() { + assertEquals("device.status", OpenClawDeviceCommand.Status.rawValue) + assertEquals("device.info", OpenClawDeviceCommand.Info.rawValue) + } }