machinaos 0.0.12 → 0.0.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/client/package.json +1 -1
- package/client/src/components/OutputPanel.tsx +3 -2
- package/client/src/components/parameterPanel/InputSection.tsx +4 -3
- package/package.json +1 -1
- package/server/routers/websocket.py +5 -5
- package/server/services/ai.py +38 -13
- package/server/services/deployment/manager.py +14 -0
- package/server/services/execution/executor.py +2 -0
- package/server/services/execution/models.py +8 -0
- package/server/services/handlers/ai.py +71 -23
- package/server/services/handlers/tools.py +103 -6
- package/server/skills/android_agent/app-launcher-skill/SKILL.md +137 -0
- package/server/skills/android_agent/app-list-skill/SKILL.md +148 -0
- package/server/skills/android_agent/audio-skill/SKILL.md +169 -0
- package/server/skills/android_agent/battery-skill/SKILL.md +114 -0
- package/server/skills/android_agent/bluetooth-skill/SKILL.md +151 -0
- package/server/skills/android_agent/camera-skill/SKILL.md +148 -0
- package/server/skills/android_agent/environmental-skill/SKILL.md +140 -0
- package/server/skills/android_agent/location-skill/SKILL.md +163 -0
- package/server/skills/android_agent/motion-skill/SKILL.md +141 -0
- package/server/skills/android_agent/screen-control-skill/SKILL.md +164 -0
- package/server/skills/android_agent/wifi-skill/SKILL.md +182 -0
- package/server/skills/assistant/subagent-skill/SKILL.md +62 -30
- package/server/skills/coding_agent/javascript-skill/SKILL.md +196 -0
- package/server/skills/coding_agent/python-skill/SKILL.md +165 -0
- package/server/skills/social_agent/whatsapp-db-skill/SKILL.md +284 -0
- package/server/skills/social_agent/whatsapp-send-skill/SKILL.md +180 -0
- package/server/skills/task_agent/cron-scheduler-skill/SKILL.md +215 -0
- package/server/skills/task_agent/task-manager-skill/SKILL.md +251 -0
- package/server/skills/task_agent/timer-skill/SKILL.md +168 -0
- package/server/skills/travel_agent/geocoding-skill/SKILL.md +186 -0
- package/server/skills/travel_agent/nearby-places-skill/SKILL.md +234 -0
- package/server/skills/web_agent/http-request-skill/SKILL.md +211 -0
- package/server/skills/android/skill/SKILL.md +0 -84
- package/server/skills/assistant/code-skill/SKILL.md +0 -176
- package/server/skills/assistant/http-skill/SKILL.md +0 -163
- package/server/skills/assistant/maps-skill/SKILL.md +0 -172
- package/server/skills/assistant/scheduler-skill/SKILL.md +0 -86
- package/server/skills/assistant/whatsapp-skill/SKILL.md +0 -285
- /package/server/skills/{android → android_agent}/personality/SKILL.md +0 -0
- /package/server/skills/{assistant → web_agent}/web-search-skill/SKILL.md +0 -0
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: app-launcher-skill
|
|
3
|
+
description: Launch Android applications by package name. Open any installed app programmatically.
|
|
4
|
+
allowed-tools: app_launcher
|
|
5
|
+
metadata:
|
|
6
|
+
author: machina
|
|
7
|
+
version: "1.0"
|
|
8
|
+
category: android
|
|
9
|
+
icon: "🚀"
|
|
10
|
+
color: "#8B5CF6"
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# App Launcher Tool
|
|
14
|
+
|
|
15
|
+
Launch applications on Android device.
|
|
16
|
+
|
|
17
|
+
## How It Works
|
|
18
|
+
|
|
19
|
+
This skill provides instructions for the **App Launcher** tool node. Connect the **App Launcher** node to Zeenie's `input-tools` handle to enable app launching.
|
|
20
|
+
|
|
21
|
+
## app_launcher Tool
|
|
22
|
+
|
|
23
|
+
Launch an installed application by package name.
|
|
24
|
+
|
|
25
|
+
### Schema Fields
|
|
26
|
+
|
|
27
|
+
| Field | Type | Required | Description |
|
|
28
|
+
|-------|------|----------|-------------|
|
|
29
|
+
| action | string | Yes | `"launch"` |
|
|
30
|
+
| parameters | object | Yes | Contains `package_name` |
|
|
31
|
+
|
|
32
|
+
### Parameters
|
|
33
|
+
|
|
34
|
+
| Field | Type | Required | Description |
|
|
35
|
+
|-------|------|----------|-------------|
|
|
36
|
+
| package_name | string | Yes | Android package name of the app |
|
|
37
|
+
|
|
38
|
+
### Example
|
|
39
|
+
|
|
40
|
+
**Launch an app:**
|
|
41
|
+
```json
|
|
42
|
+
{
|
|
43
|
+
"action": "launch",
|
|
44
|
+
"parameters": {
|
|
45
|
+
"package_name": "com.whatsapp"
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### Common Package Names
|
|
51
|
+
|
|
52
|
+
| App | Package Name |
|
|
53
|
+
|-----|--------------|
|
|
54
|
+
| WhatsApp | `com.whatsapp` |
|
|
55
|
+
| Chrome | `com.android.chrome` |
|
|
56
|
+
| Gmail | `com.google.android.gm` |
|
|
57
|
+
| YouTube | `com.google.android.youtube` |
|
|
58
|
+
| Maps | `com.google.android.apps.maps` |
|
|
59
|
+
| Camera | `com.android.camera2` |
|
|
60
|
+
| Phone | `com.android.dialer` |
|
|
61
|
+
| Messages | `com.google.android.apps.messaging` |
|
|
62
|
+
| Settings | `com.android.settings` |
|
|
63
|
+
| Play Store | `com.android.vending` |
|
|
64
|
+
| Spotify | `com.spotify.music` |
|
|
65
|
+
| Netflix | `com.netflix.mediaclient` |
|
|
66
|
+
| Twitter/X | `com.twitter.android` |
|
|
67
|
+
| Instagram | `com.instagram.android` |
|
|
68
|
+
| Telegram | `org.telegram.messenger` |
|
|
69
|
+
|
|
70
|
+
### Response Format
|
|
71
|
+
|
|
72
|
+
**Success:**
|
|
73
|
+
```json
|
|
74
|
+
{
|
|
75
|
+
"success": true,
|
|
76
|
+
"service": "app_launcher",
|
|
77
|
+
"action": "launch",
|
|
78
|
+
"data": {
|
|
79
|
+
"message": "App launched successfully",
|
|
80
|
+
"package_name": "com.whatsapp"
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
**Error:**
|
|
86
|
+
```json
|
|
87
|
+
{
|
|
88
|
+
"error": "App not installed: com.example.notinstalled",
|
|
89
|
+
"service": "app_launcher",
|
|
90
|
+
"action": "launch"
|
|
91
|
+
}
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
## Use Cases
|
|
95
|
+
|
|
96
|
+
| Use Case | Description |
|
|
97
|
+
|----------|-------------|
|
|
98
|
+
| Quick launch | Open apps on command |
|
|
99
|
+
| Automation | Start apps as part of workflow |
|
|
100
|
+
| Shortcuts | Voice-controlled app opening |
|
|
101
|
+
| Workflows | Chain app launches with other actions |
|
|
102
|
+
|
|
103
|
+
## Common Workflows
|
|
104
|
+
|
|
105
|
+
### Open app and send message
|
|
106
|
+
|
|
107
|
+
1. Launch WhatsApp
|
|
108
|
+
2. User manually selects contact
|
|
109
|
+
3. (Alternative: use whatsapp_send for automated messaging)
|
|
110
|
+
|
|
111
|
+
### Daily routine
|
|
112
|
+
|
|
113
|
+
1. Launch news app in morning
|
|
114
|
+
2. Launch email app
|
|
115
|
+
3. Launch calendar
|
|
116
|
+
|
|
117
|
+
## Finding Package Names
|
|
118
|
+
|
|
119
|
+
To find an app's package name:
|
|
120
|
+
|
|
121
|
+
1. Use the **App List** tool to list installed apps
|
|
122
|
+
2. Look for the app name in the list
|
|
123
|
+
3. Use the returned package_name
|
|
124
|
+
|
|
125
|
+
### Example workflow:
|
|
126
|
+
|
|
127
|
+
```
|
|
128
|
+
1. app_list.status -> get list of apps
|
|
129
|
+
2. Find desired app in results
|
|
130
|
+
3. app_launcher.launch with package_name
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
## Setup Requirements
|
|
134
|
+
|
|
135
|
+
1. Connect the **App Launcher** node to Zeenie's `input-tools` handle
|
|
136
|
+
2. Android device must be paired
|
|
137
|
+
3. App must be installed on the device
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: app-list-skill
|
|
3
|
+
description: Get list of installed Android applications with package names, versions, and metadata.
|
|
4
|
+
allowed-tools: app_list
|
|
5
|
+
metadata:
|
|
6
|
+
author: machina
|
|
7
|
+
version: "1.0"
|
|
8
|
+
category: android
|
|
9
|
+
icon: "📱"
|
|
10
|
+
color: "#06B6D4"
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# App List Tool
|
|
14
|
+
|
|
15
|
+
Get list of installed applications on Android device.
|
|
16
|
+
|
|
17
|
+
## How It Works
|
|
18
|
+
|
|
19
|
+
This skill provides instructions for the **App List** tool node. Connect the **App List** node to Zeenie's `input-tools` handle to enable app listing.
|
|
20
|
+
|
|
21
|
+
## app_list Tool
|
|
22
|
+
|
|
23
|
+
Get list of installed applications.
|
|
24
|
+
|
|
25
|
+
### Schema Fields
|
|
26
|
+
|
|
27
|
+
| Field | Type | Required | Description |
|
|
28
|
+
|-------|------|----------|-------------|
|
|
29
|
+
| action | string | Yes | `"status"` - Get installed apps |
|
|
30
|
+
|
|
31
|
+
### Example
|
|
32
|
+
|
|
33
|
+
**Get installed apps:**
|
|
34
|
+
```json
|
|
35
|
+
{
|
|
36
|
+
"action": "status"
|
|
37
|
+
}
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### Response Format
|
|
41
|
+
|
|
42
|
+
```json
|
|
43
|
+
{
|
|
44
|
+
"success": true,
|
|
45
|
+
"service": "app_list",
|
|
46
|
+
"action": "status",
|
|
47
|
+
"data": {
|
|
48
|
+
"apps": [
|
|
49
|
+
{
|
|
50
|
+
"name": "WhatsApp",
|
|
51
|
+
"package_name": "com.whatsapp",
|
|
52
|
+
"version": "2.24.1.5",
|
|
53
|
+
"version_code": 2241005,
|
|
54
|
+
"system_app": false,
|
|
55
|
+
"enabled": true
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
"name": "Chrome",
|
|
59
|
+
"package_name": "com.android.chrome",
|
|
60
|
+
"version": "121.0.6167.101",
|
|
61
|
+
"version_code": 616710100,
|
|
62
|
+
"system_app": false,
|
|
63
|
+
"enabled": true
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
"name": "Settings",
|
|
67
|
+
"package_name": "com.android.settings",
|
|
68
|
+
"version": "14",
|
|
69
|
+
"version_code": 34,
|
|
70
|
+
"system_app": true,
|
|
71
|
+
"enabled": true
|
|
72
|
+
}
|
|
73
|
+
],
|
|
74
|
+
"total_apps": 85,
|
|
75
|
+
"user_apps": 42,
|
|
76
|
+
"system_apps": 43
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
### Response Fields
|
|
82
|
+
|
|
83
|
+
| Field | Type | Description |
|
|
84
|
+
|-------|------|-------------|
|
|
85
|
+
| name | string | Display name of the app |
|
|
86
|
+
| package_name | string | Android package identifier |
|
|
87
|
+
| version | string | Version string |
|
|
88
|
+
| version_code | int | Version code number |
|
|
89
|
+
| system_app | boolean | True if pre-installed system app |
|
|
90
|
+
| enabled | boolean | True if app is enabled |
|
|
91
|
+
|
|
92
|
+
### Summary Fields
|
|
93
|
+
|
|
94
|
+
| Field | Description |
|
|
95
|
+
|-------|-------------|
|
|
96
|
+
| total_apps | Total number of apps |
|
|
97
|
+
| user_apps | User-installed apps count |
|
|
98
|
+
| system_apps | Pre-installed system apps count |
|
|
99
|
+
|
|
100
|
+
## Use Cases
|
|
101
|
+
|
|
102
|
+
| Use Case | Description |
|
|
103
|
+
|----------|-------------|
|
|
104
|
+
| Find apps | Discover what's installed |
|
|
105
|
+
| Get package names | Find package name for app_launcher |
|
|
106
|
+
| Version check | Verify app versions |
|
|
107
|
+
| Inventory | Audit installed applications |
|
|
108
|
+
|
|
109
|
+
## Common Workflows
|
|
110
|
+
|
|
111
|
+
### Find and launch app
|
|
112
|
+
|
|
113
|
+
1. Get app list with `app_list.status`
|
|
114
|
+
2. Search for desired app by name
|
|
115
|
+
3. Use package_name with `app_launcher.launch`
|
|
116
|
+
|
|
117
|
+
### Check if app is installed
|
|
118
|
+
|
|
119
|
+
1. Get app list
|
|
120
|
+
2. Search for specific package_name
|
|
121
|
+
3. Report if found or not
|
|
122
|
+
|
|
123
|
+
### App version audit
|
|
124
|
+
|
|
125
|
+
1. Get app list
|
|
126
|
+
2. Check versions against known values
|
|
127
|
+
3. Report outdated apps
|
|
128
|
+
|
|
129
|
+
## Filtering Results
|
|
130
|
+
|
|
131
|
+
The tool returns all apps. To find specific apps:
|
|
132
|
+
|
|
133
|
+
1. Get full list
|
|
134
|
+
2. Filter by name or package_name
|
|
135
|
+
3. Check system_app to separate user/system apps
|
|
136
|
+
|
|
137
|
+
### Example: Find messaging apps
|
|
138
|
+
|
|
139
|
+
```
|
|
140
|
+
1. Get app list
|
|
141
|
+
2. Filter where name contains "message" or "chat"
|
|
142
|
+
3. Return matching apps
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
## Setup Requirements
|
|
146
|
+
|
|
147
|
+
1. Connect the **App List** node to Zeenie's `input-tools` handle
|
|
148
|
+
2. Android device must be paired
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: audio-skill
|
|
3
|
+
description: Control Android audio - get/set volume, mute/unmute for media, ringtone, notification, and call volumes.
|
|
4
|
+
allowed-tools: audio_automation
|
|
5
|
+
metadata:
|
|
6
|
+
author: machina
|
|
7
|
+
version: "1.0"
|
|
8
|
+
category: android
|
|
9
|
+
icon: "🔊"
|
|
10
|
+
color: "#F97316"
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Audio Automation Tool
|
|
14
|
+
|
|
15
|
+
Control audio and volume on Android device.
|
|
16
|
+
|
|
17
|
+
## How It Works
|
|
18
|
+
|
|
19
|
+
This skill provides instructions for the **Audio Automation** tool node. Connect the **Audio Automation** node to Zeenie's `input-tools` handle to enable audio control.
|
|
20
|
+
|
|
21
|
+
## audio_automation Tool
|
|
22
|
+
|
|
23
|
+
Control audio settings and volume levels.
|
|
24
|
+
|
|
25
|
+
### Schema Fields
|
|
26
|
+
|
|
27
|
+
| Field | Type | Required | Description |
|
|
28
|
+
|-------|------|----------|-------------|
|
|
29
|
+
| action | string | Yes | Action to perform (see below) |
|
|
30
|
+
| parameters | object | No | Additional parameters for set actions |
|
|
31
|
+
|
|
32
|
+
### Actions
|
|
33
|
+
|
|
34
|
+
| Action | Description |
|
|
35
|
+
|--------|-------------|
|
|
36
|
+
| `status` | Get current volume levels and audio state |
|
|
37
|
+
| `set_volume` | Set volume for a stream |
|
|
38
|
+
| `mute` | Mute audio |
|
|
39
|
+
| `unmute` | Unmute audio |
|
|
40
|
+
|
|
41
|
+
### Volume Streams
|
|
42
|
+
|
|
43
|
+
| Stream | Description |
|
|
44
|
+
|--------|-------------|
|
|
45
|
+
| `media` | Music, videos, games |
|
|
46
|
+
| `ring` | Ringtone volume |
|
|
47
|
+
| `notification` | Notification sounds |
|
|
48
|
+
| `alarm` | Alarm volume |
|
|
49
|
+
| `voice_call` | Call volume |
|
|
50
|
+
| `system` | System sounds (clicks, etc.) |
|
|
51
|
+
|
|
52
|
+
### Examples
|
|
53
|
+
|
|
54
|
+
**Get audio status:**
|
|
55
|
+
```json
|
|
56
|
+
{
|
|
57
|
+
"action": "status"
|
|
58
|
+
}
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
**Set media volume:**
|
|
62
|
+
```json
|
|
63
|
+
{
|
|
64
|
+
"action": "set_volume",
|
|
65
|
+
"parameters": {
|
|
66
|
+
"stream": "media",
|
|
67
|
+
"level": 50
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
**Mute all audio:**
|
|
73
|
+
```json
|
|
74
|
+
{
|
|
75
|
+
"action": "mute"
|
|
76
|
+
}
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
**Unmute:**
|
|
80
|
+
```json
|
|
81
|
+
{
|
|
82
|
+
"action": "unmute"
|
|
83
|
+
}
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### Response Formats
|
|
87
|
+
|
|
88
|
+
**Status response:**
|
|
89
|
+
```json
|
|
90
|
+
{
|
|
91
|
+
"success": true,
|
|
92
|
+
"service": "audio_automation",
|
|
93
|
+
"action": "status",
|
|
94
|
+
"data": {
|
|
95
|
+
"media_volume": 75,
|
|
96
|
+
"ring_volume": 100,
|
|
97
|
+
"notification_volume": 80,
|
|
98
|
+
"alarm_volume": 100,
|
|
99
|
+
"voice_call_volume": 50,
|
|
100
|
+
"system_volume": 50,
|
|
101
|
+
"muted": false,
|
|
102
|
+
"ringer_mode": "normal"
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
**Set volume response:**
|
|
108
|
+
```json
|
|
109
|
+
{
|
|
110
|
+
"success": true,
|
|
111
|
+
"service": "audio_automation",
|
|
112
|
+
"action": "set_volume",
|
|
113
|
+
"data": {
|
|
114
|
+
"stream": "media",
|
|
115
|
+
"previous_level": 100,
|
|
116
|
+
"new_level": 50
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
### Ringer Modes
|
|
122
|
+
|
|
123
|
+
| Mode | Description |
|
|
124
|
+
|------|-------------|
|
|
125
|
+
| `normal` | All sounds enabled |
|
|
126
|
+
| `vibrate` | Vibrate only |
|
|
127
|
+
| `silent` | No sounds or vibration |
|
|
128
|
+
|
|
129
|
+
## Use Cases
|
|
130
|
+
|
|
131
|
+
| Use Case | Action | Description |
|
|
132
|
+
|----------|--------|-------------|
|
|
133
|
+
| Check volume | status | Get current levels |
|
|
134
|
+
| Lower volume | set_volume | Reduce for quiet time |
|
|
135
|
+
| Silent mode | mute | Mute all audio |
|
|
136
|
+
| Restore sound | unmute | Re-enable audio |
|
|
137
|
+
| Night mode | set_volume | Lower ring/notification |
|
|
138
|
+
|
|
139
|
+
## Common Workflows
|
|
140
|
+
|
|
141
|
+
### Meeting mode
|
|
142
|
+
|
|
143
|
+
1. Mute device
|
|
144
|
+
2. Attend meeting
|
|
145
|
+
3. Unmute when done
|
|
146
|
+
|
|
147
|
+
### Night routine
|
|
148
|
+
|
|
149
|
+
1. Set ring volume to 20
|
|
150
|
+
2. Set notification volume to 0
|
|
151
|
+
3. Keep alarm at 100
|
|
152
|
+
|
|
153
|
+
### Media playback
|
|
154
|
+
|
|
155
|
+
1. Check current media volume
|
|
156
|
+
2. Set to desired level
|
|
157
|
+
3. Play media
|
|
158
|
+
|
|
159
|
+
## Volume Level Range
|
|
160
|
+
|
|
161
|
+
- All volumes are 0-100 (percentage)
|
|
162
|
+
- 0 = muted/off
|
|
163
|
+
- 100 = maximum
|
|
164
|
+
|
|
165
|
+
## Setup Requirements
|
|
166
|
+
|
|
167
|
+
1. Connect the **Audio Automation** node to Zeenie's `input-tools` handle
|
|
168
|
+
2. Android device must be paired
|
|
169
|
+
3. Volume control permission required
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: battery-skill
|
|
3
|
+
description: Monitor Android device battery status, level, charging state, temperature, and health.
|
|
4
|
+
allowed-tools: battery_monitor
|
|
5
|
+
metadata:
|
|
6
|
+
author: machina
|
|
7
|
+
version: "1.0"
|
|
8
|
+
category: android
|
|
9
|
+
icon: "🔋"
|
|
10
|
+
color: "#22C55E"
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Battery Monitor Tool
|
|
14
|
+
|
|
15
|
+
Monitor Android device battery status and information.
|
|
16
|
+
|
|
17
|
+
## How It Works
|
|
18
|
+
|
|
19
|
+
This skill provides instructions for the **Battery Monitor** tool node. Connect the **Battery Monitor** node to Zeenie's `input-tools` handle to enable battery monitoring.
|
|
20
|
+
|
|
21
|
+
## battery Tool
|
|
22
|
+
|
|
23
|
+
Get battery status and information from the Android device.
|
|
24
|
+
|
|
25
|
+
### Schema Fields
|
|
26
|
+
|
|
27
|
+
| Field | Type | Required | Description |
|
|
28
|
+
|-------|------|----------|-------------|
|
|
29
|
+
| action | string | Yes | `"status"` - Get current battery information |
|
|
30
|
+
|
|
31
|
+
### Actions
|
|
32
|
+
|
|
33
|
+
| Action | Description |
|
|
34
|
+
|--------|-------------|
|
|
35
|
+
| `status` | Get current battery level, charging state, health, temperature |
|
|
36
|
+
|
|
37
|
+
### Example
|
|
38
|
+
|
|
39
|
+
**Get battery status:**
|
|
40
|
+
```json
|
|
41
|
+
{
|
|
42
|
+
"action": "status"
|
|
43
|
+
}
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
### Response Format
|
|
47
|
+
|
|
48
|
+
```json
|
|
49
|
+
{
|
|
50
|
+
"success": true,
|
|
51
|
+
"service": "battery",
|
|
52
|
+
"action": "status",
|
|
53
|
+
"data": {
|
|
54
|
+
"level": 85,
|
|
55
|
+
"status": "charging",
|
|
56
|
+
"health": "good",
|
|
57
|
+
"temperature": 28.5,
|
|
58
|
+
"voltage": 4200,
|
|
59
|
+
"plugged": "ac",
|
|
60
|
+
"technology": "Li-ion"
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### Response Fields
|
|
66
|
+
|
|
67
|
+
| Field | Type | Description |
|
|
68
|
+
|-------|------|-------------|
|
|
69
|
+
| level | int | Battery percentage (0-100) |
|
|
70
|
+
| status | string | `"charging"`, `"discharging"`, `"full"`, `"not_charging"` |
|
|
71
|
+
| health | string | `"good"`, `"overheat"`, `"dead"`, `"cold"` |
|
|
72
|
+
| temperature | float | Temperature in Celsius |
|
|
73
|
+
| voltage | int | Voltage in millivolts |
|
|
74
|
+
| plugged | string | `"ac"`, `"usb"`, `"wireless"`, `"none"` |
|
|
75
|
+
| technology | string | Battery technology (e.g., "Li-ion") |
|
|
76
|
+
|
|
77
|
+
### Error Response
|
|
78
|
+
|
|
79
|
+
```json
|
|
80
|
+
{
|
|
81
|
+
"error": "Failed to get battery status",
|
|
82
|
+
"service": "battery",
|
|
83
|
+
"action": "status"
|
|
84
|
+
}
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
## Use Cases
|
|
88
|
+
|
|
89
|
+
| Use Case | Description |
|
|
90
|
+
|----------|-------------|
|
|
91
|
+
| Low battery alert | Trigger actions when battery is low |
|
|
92
|
+
| Charging monitor | Detect when device starts/stops charging |
|
|
93
|
+
| Health check | Monitor battery health over time |
|
|
94
|
+
| Temperature warning | Alert on overheating |
|
|
95
|
+
|
|
96
|
+
## Common Workflows
|
|
97
|
+
|
|
98
|
+
### Low battery notification
|
|
99
|
+
|
|
100
|
+
1. Check battery status
|
|
101
|
+
2. If level < 20%, send notification
|
|
102
|
+
3. Optionally enable power saving
|
|
103
|
+
|
|
104
|
+
### Charging complete alert
|
|
105
|
+
|
|
106
|
+
1. Periodically check battery status
|
|
107
|
+
2. When status = "full", send notification
|
|
108
|
+
3. Optionally suggest unplugging
|
|
109
|
+
|
|
110
|
+
## Setup Requirements
|
|
111
|
+
|
|
112
|
+
1. Connect the **Battery Monitor** node to Zeenie's `input-tools` handle
|
|
113
|
+
2. Android device must be paired (green status indicator)
|
|
114
|
+
3. Battery monitoring permission required on device
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: bluetooth-skill
|
|
3
|
+
description: Control Android Bluetooth - enable, disable, get status, and list paired devices.
|
|
4
|
+
allowed-tools: bluetooth_automation
|
|
5
|
+
metadata:
|
|
6
|
+
author: machina
|
|
7
|
+
version: "1.0"
|
|
8
|
+
category: android
|
|
9
|
+
icon: "📱"
|
|
10
|
+
color: "#0EA5E9"
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Bluetooth Automation Tool
|
|
14
|
+
|
|
15
|
+
Control Bluetooth on Android devices.
|
|
16
|
+
|
|
17
|
+
## How It Works
|
|
18
|
+
|
|
19
|
+
This skill provides instructions for the **Bluetooth Automation** tool node. Connect the **Bluetooth Automation** node to Zeenie's `input-tools` handle to enable Bluetooth control.
|
|
20
|
+
|
|
21
|
+
## bluetooth_automation Tool
|
|
22
|
+
|
|
23
|
+
Control Bluetooth settings and get device information.
|
|
24
|
+
|
|
25
|
+
### Schema Fields
|
|
26
|
+
|
|
27
|
+
| Field | Type | Required | Description |
|
|
28
|
+
|-------|------|----------|-------------|
|
|
29
|
+
| action | string | Yes | Action to perform (see below) |
|
|
30
|
+
|
|
31
|
+
### Actions
|
|
32
|
+
|
|
33
|
+
| Action | Description |
|
|
34
|
+
|--------|-------------|
|
|
35
|
+
| `status` | Get Bluetooth status and paired devices |
|
|
36
|
+
| `enable` | Turn Bluetooth on |
|
|
37
|
+
| `disable` | Turn Bluetooth off |
|
|
38
|
+
|
|
39
|
+
### Examples
|
|
40
|
+
|
|
41
|
+
**Get Bluetooth status:**
|
|
42
|
+
```json
|
|
43
|
+
{
|
|
44
|
+
"action": "status"
|
|
45
|
+
}
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
**Enable Bluetooth:**
|
|
49
|
+
```json
|
|
50
|
+
{
|
|
51
|
+
"action": "enable"
|
|
52
|
+
}
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
**Disable Bluetooth:**
|
|
56
|
+
```json
|
|
57
|
+
{
|
|
58
|
+
"action": "disable"
|
|
59
|
+
}
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
### Response Formats
|
|
63
|
+
|
|
64
|
+
**Status response:**
|
|
65
|
+
```json
|
|
66
|
+
{
|
|
67
|
+
"success": true,
|
|
68
|
+
"service": "bluetooth_automation",
|
|
69
|
+
"action": "status",
|
|
70
|
+
"data": {
|
|
71
|
+
"enabled": true,
|
|
72
|
+
"discovering": false,
|
|
73
|
+
"name": "My Phone",
|
|
74
|
+
"address": "AA:BB:CC:DD:EE:FF",
|
|
75
|
+
"paired_devices": [
|
|
76
|
+
{
|
|
77
|
+
"name": "AirPods Pro",
|
|
78
|
+
"address": "11:22:33:44:55:66",
|
|
79
|
+
"type": "audio",
|
|
80
|
+
"bonded": true
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
"name": "Car Stereo",
|
|
84
|
+
"address": "77:88:99:AA:BB:CC",
|
|
85
|
+
"type": "audio",
|
|
86
|
+
"bonded": true
|
|
87
|
+
}
|
|
88
|
+
]
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
**Enable/Disable response:**
|
|
94
|
+
```json
|
|
95
|
+
{
|
|
96
|
+
"success": true,
|
|
97
|
+
"service": "bluetooth_automation",
|
|
98
|
+
"action": "enable",
|
|
99
|
+
"data": {
|
|
100
|
+
"message": "Bluetooth enabled successfully"
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
### Response Fields
|
|
106
|
+
|
|
107
|
+
| Field | Description |
|
|
108
|
+
|-------|-------------|
|
|
109
|
+
| enabled | Bluetooth radio is on |
|
|
110
|
+
| discovering | Scanning for new devices |
|
|
111
|
+
| name | Device Bluetooth name |
|
|
112
|
+
| address | Device Bluetooth MAC address |
|
|
113
|
+
| paired_devices | List of bonded devices |
|
|
114
|
+
|
|
115
|
+
### Paired Device Fields
|
|
116
|
+
|
|
117
|
+
| Field | Description |
|
|
118
|
+
|-------|-------------|
|
|
119
|
+
| name | Device name |
|
|
120
|
+
| address | Device MAC address |
|
|
121
|
+
| type | Device type (audio, computer, phone, etc.) |
|
|
122
|
+
| bonded | Currently paired |
|
|
123
|
+
|
|
124
|
+
## Use Cases
|
|
125
|
+
|
|
126
|
+
| Use Case | Action | Description |
|
|
127
|
+
|----------|--------|-------------|
|
|
128
|
+
| Check Bluetooth | status | See if BT is on and paired devices |
|
|
129
|
+
| Toggle Bluetooth | enable/disable | Control BT radio |
|
|
130
|
+
| List devices | status | Get paired device list |
|
|
131
|
+
| Battery saving | disable | Turn off when not needed |
|
|
132
|
+
|
|
133
|
+
## Common Workflows
|
|
134
|
+
|
|
135
|
+
### Connect to car
|
|
136
|
+
|
|
137
|
+
1. Check Bluetooth status
|
|
138
|
+
2. If not enabled, enable it
|
|
139
|
+
3. Car should auto-connect if paired
|
|
140
|
+
|
|
141
|
+
### Battery saving mode
|
|
142
|
+
|
|
143
|
+
1. Check Bluetooth status
|
|
144
|
+
2. If no audio playing and no connected devices
|
|
145
|
+
3. Disable Bluetooth to save battery
|
|
146
|
+
|
|
147
|
+
## Setup Requirements
|
|
148
|
+
|
|
149
|
+
1. Connect the **Bluetooth Automation** node to Zeenie's `input-tools` handle
|
|
150
|
+
2. Android device must be paired
|
|
151
|
+
3. Bluetooth permission required on device
|