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.
Files changed (41) hide show
  1. package/client/package.json +1 -1
  2. package/client/src/components/OutputPanel.tsx +3 -2
  3. package/client/src/components/parameterPanel/InputSection.tsx +4 -3
  4. package/package.json +1 -1
  5. package/server/routers/websocket.py +5 -5
  6. package/server/services/ai.py +38 -13
  7. package/server/services/deployment/manager.py +14 -0
  8. package/server/services/execution/executor.py +2 -0
  9. package/server/services/execution/models.py +8 -0
  10. package/server/services/handlers/ai.py +71 -23
  11. package/server/services/handlers/tools.py +103 -6
  12. package/server/skills/android_agent/app-launcher-skill/SKILL.md +137 -0
  13. package/server/skills/android_agent/app-list-skill/SKILL.md +148 -0
  14. package/server/skills/android_agent/audio-skill/SKILL.md +169 -0
  15. package/server/skills/android_agent/battery-skill/SKILL.md +114 -0
  16. package/server/skills/android_agent/bluetooth-skill/SKILL.md +151 -0
  17. package/server/skills/android_agent/camera-skill/SKILL.md +148 -0
  18. package/server/skills/android_agent/environmental-skill/SKILL.md +140 -0
  19. package/server/skills/android_agent/location-skill/SKILL.md +163 -0
  20. package/server/skills/android_agent/motion-skill/SKILL.md +141 -0
  21. package/server/skills/android_agent/screen-control-skill/SKILL.md +164 -0
  22. package/server/skills/android_agent/wifi-skill/SKILL.md +182 -0
  23. package/server/skills/assistant/subagent-skill/SKILL.md +62 -30
  24. package/server/skills/coding_agent/javascript-skill/SKILL.md +196 -0
  25. package/server/skills/coding_agent/python-skill/SKILL.md +165 -0
  26. package/server/skills/social_agent/whatsapp-db-skill/SKILL.md +284 -0
  27. package/server/skills/social_agent/whatsapp-send-skill/SKILL.md +180 -0
  28. package/server/skills/task_agent/cron-scheduler-skill/SKILL.md +215 -0
  29. package/server/skills/task_agent/task-manager-skill/SKILL.md +251 -0
  30. package/server/skills/task_agent/timer-skill/SKILL.md +168 -0
  31. package/server/skills/travel_agent/geocoding-skill/SKILL.md +186 -0
  32. package/server/skills/travel_agent/nearby-places-skill/SKILL.md +234 -0
  33. package/server/skills/web_agent/http-request-skill/SKILL.md +211 -0
  34. package/server/skills/android/skill/SKILL.md +0 -84
  35. package/server/skills/assistant/code-skill/SKILL.md +0 -176
  36. package/server/skills/assistant/http-skill/SKILL.md +0 -163
  37. package/server/skills/assistant/maps-skill/SKILL.md +0 -172
  38. package/server/skills/assistant/scheduler-skill/SKILL.md +0 -86
  39. package/server/skills/assistant/whatsapp-skill/SKILL.md +0 -285
  40. /package/server/skills/{android → android_agent}/personality/SKILL.md +0 -0
  41. /package/server/skills/{assistant → web_agent}/web-search-skill/SKILL.md +0 -0
@@ -0,0 +1,186 @@
1
+ ---
2
+ name: geocoding-skill
3
+ description: Convert addresses to coordinates (geocoding) or coordinates to addresses (reverse geocoding) using Google Maps API.
4
+ allowed-tools: add_locations
5
+ metadata:
6
+ author: machina
7
+ version: "1.0"
8
+ category: location
9
+ icon: "📍"
10
+ color: "#4285F4"
11
+ ---
12
+
13
+ # Geocoding Tool
14
+
15
+ Convert addresses to GPS coordinates or coordinates to addresses using Google Maps Geocoding API.
16
+
17
+ ## How It Works
18
+
19
+ This skill provides instructions for the **Add Locations** (gmaps_locations) tool node. Connect the **Add Locations** node to Zeenie's `input-tools` handle to enable geocoding operations.
20
+
21
+ ## add_locations Tool
22
+
23
+ Geocode addresses or reverse geocode coordinates.
24
+
25
+ ### Schema Fields
26
+
27
+ | Field | Type | Required | Description |
28
+ |-------|------|----------|-------------|
29
+ | service_type | string | Yes | `"geocode"` (address to coordinates) or `"reverse_geocode"` (coordinates to address) |
30
+ | address | string | If geocode | Address to convert to coordinates |
31
+ | lat | float | If reverse_geocode | Latitude coordinate |
32
+ | lng | float | If reverse_geocode | Longitude coordinate |
33
+
34
+ ### Operations
35
+
36
+ | Service Type | Input | Output |
37
+ |--------------|-------|--------|
38
+ | `geocode` | Address string | Coordinates (lat, lng) |
39
+ | `reverse_geocode` | Coordinates (lat, lng) | Formatted address |
40
+
41
+ ### Examples
42
+
43
+ **Geocode an address:**
44
+ ```json
45
+ {
46
+ "service_type": "geocode",
47
+ "address": "1600 Amphitheatre Parkway, Mountain View, CA"
48
+ }
49
+ ```
50
+
51
+ **Geocode a landmark:**
52
+ ```json
53
+ {
54
+ "service_type": "geocode",
55
+ "address": "Eiffel Tower, Paris"
56
+ }
57
+ ```
58
+
59
+ **Geocode a city:**
60
+ ```json
61
+ {
62
+ "service_type": "geocode",
63
+ "address": "New York City, USA"
64
+ }
65
+ ```
66
+
67
+ **Reverse geocode (coordinates to address):**
68
+ ```json
69
+ {
70
+ "service_type": "reverse_geocode",
71
+ "lat": 48.8584,
72
+ "lng": 2.2945
73
+ }
74
+ ```
75
+
76
+ ### Response Format
77
+
78
+ **Geocode response:**
79
+ ```json
80
+ {
81
+ "success": true,
82
+ "service_type": "geocoding",
83
+ "input": {"address": "Eiffel Tower, Paris"},
84
+ "results": [
85
+ {
86
+ "formatted_address": "Champ de Mars, 5 Av. Anatole France, 75007 Paris, France",
87
+ "geometry": {
88
+ "location": {"lat": 48.8583701, "lng": 2.2944813}
89
+ },
90
+ "address_components": [
91
+ {"long_name": "5", "short_name": "5", "types": ["street_number"]},
92
+ {"long_name": "Avenue Anatole France", "short_name": "Av. Anatole France", "types": ["route"]},
93
+ {"long_name": "Paris", "short_name": "Paris", "types": ["locality"]}
94
+ ]
95
+ }
96
+ ],
97
+ "status": "OK"
98
+ }
99
+ ```
100
+
101
+ **Reverse geocode response:**
102
+ ```json
103
+ {
104
+ "success": true,
105
+ "service_type": "reverse_geocoding",
106
+ "input": {"lat": 48.8584, "lng": 2.2945},
107
+ "results": [
108
+ {
109
+ "formatted_address": "Champ de Mars, 5 Av. Anatole France, 75007 Paris, France",
110
+ "geometry": {
111
+ "location": {"lat": 48.8583701, "lng": 2.2944813}
112
+ },
113
+ "address_components": [...]
114
+ }
115
+ ],
116
+ "status": "OK"
117
+ }
118
+ ```
119
+
120
+ ### Error Response
121
+
122
+ ```json
123
+ {
124
+ "error": "address is required for geocoding"
125
+ }
126
+ ```
127
+
128
+ ```json
129
+ {
130
+ "error": "Geocoding failed: ZERO_RESULTS"
131
+ }
132
+ ```
133
+
134
+ ## Use Cases
135
+
136
+ | Use Case | Service Type | Description |
137
+ |----------|--------------|-------------|
138
+ | Find location | geocode | Get coordinates for an address |
139
+ | Validate address | geocode | Get standardized address format |
140
+ | Get address | reverse_geocode | Find address from GPS coordinates |
141
+ | Location lookup | geocode | Search for landmarks, POIs |
142
+
143
+ ## Common Workflows
144
+
145
+ ### Get coordinates for sending location via WhatsApp
146
+
147
+ 1. Use `geocode` to convert address to coordinates
148
+ 2. Extract `lat` and `lng` from response
149
+ 3. Use `whatsapp_send` with message_type="location"
150
+
151
+ ### Identify a GPS location
152
+
153
+ 1. Use `reverse_geocode` with lat/lng coordinates
154
+ 2. Get formatted address from response
155
+
156
+ ### Search for nearby places
157
+
158
+ 1. Use `geocode` to get coordinates from address
159
+ 2. Use `nearby_places` tool with those coordinates
160
+
161
+ ## Address Format Guidelines
162
+
163
+ **Good address formats:**
164
+ - `"123 Main Street, New York, NY 10001"`
165
+ - `"Eiffel Tower, Paris, France"`
166
+ - `"Times Square, NYC"`
167
+ - `"Tokyo Station, Japan"`
168
+
169
+ **Tips:**
170
+ - Include city and country for better accuracy
171
+ - Landmarks and POIs work well
172
+ - Postal codes improve precision
173
+ - Use local language or English
174
+
175
+ ## Coordinate Guidelines
176
+
177
+ - Latitude range: -90 to 90
178
+ - Longitude range: -180 to 180
179
+ - More decimal places = higher precision
180
+ - Standard precision: 6 decimal places
181
+
182
+ ## Setup Requirements
183
+
184
+ 1. Connect the **Add Locations** (gmaps_locations) node to Zeenie's `input-tools` handle
185
+ 2. Google Maps API key must be configured in Credentials
186
+ 3. Geocoding API must be enabled in Google Cloud Console
@@ -0,0 +1,234 @@
1
+ ---
2
+ name: nearby-places-skill
3
+ description: Search for nearby places like restaurants, cafes, stores, and services using Google Places API. Find places by type and location.
4
+ allowed-tools: show_nearby_places
5
+ metadata:
6
+ author: machina
7
+ version: "1.0"
8
+ category: location
9
+ icon: "🗺️"
10
+ color: "#34A853"
11
+ ---
12
+
13
+ # Nearby Places Tool
14
+
15
+ Search for places near a location using Google Places API.
16
+
17
+ ## How It Works
18
+
19
+ This skill provides instructions for the **Show Nearby Places** (gmaps_nearby_places) tool node. Connect the **Show Nearby Places** node to Zeenie's `input-tools` handle to enable place search.
20
+
21
+ ## show_nearby_places Tool
22
+
23
+ Search for places near GPS coordinates.
24
+
25
+ ### Schema Fields
26
+
27
+ | Field | Type | Required | Description |
28
+ |-------|------|----------|-------------|
29
+ | lat | float | Yes | Center latitude for search |
30
+ | lng | float | Yes | Center longitude for search |
31
+ | radius | int | No | Search radius in meters (default: 500, max: 50000) |
32
+ | type | string | No | Place type to search for (default: "restaurant") |
33
+ | keyword | string | No | Keyword to filter results |
34
+
35
+ ### Place Types
36
+
37
+ **Food & Drink:**
38
+ - `restaurant` - Restaurants
39
+ - `cafe` - Coffee shops
40
+ - `bar` - Bars and pubs
41
+ - `bakery` - Bakeries
42
+ - `meal_takeaway` - Takeout restaurants
43
+
44
+ **Shopping:**
45
+ - `store` - General stores
46
+ - `supermarket` - Grocery stores
47
+ - `shopping_mall` - Shopping centers
48
+ - `clothing_store` - Clothing shops
49
+ - `convenience_store` - Convenience stores
50
+
51
+ **Services:**
52
+ - `bank` - Banks
53
+ - `atm` - ATMs
54
+ - `gas_station` - Gas/petrol stations
55
+ - `pharmacy` - Pharmacies
56
+ - `post_office` - Post offices
57
+
58
+ **Health:**
59
+ - `hospital` - Hospitals
60
+ - `doctor` - Doctor's offices
61
+ - `dentist` - Dental clinics
62
+
63
+ **Transport:**
64
+ - `bus_station` - Bus stations
65
+ - `train_station` - Train stations
66
+ - `airport` - Airports
67
+ - `taxi_stand` - Taxi stands
68
+ - `parking` - Parking lots
69
+
70
+ **Entertainment:**
71
+ - `movie_theater` - Cinemas
72
+ - `gym` - Fitness centers
73
+ - `park` - Parks
74
+ - `museum` - Museums
75
+ - `zoo` - Zoos
76
+
77
+ **Accommodation:**
78
+ - `hotel` - Hotels
79
+ - `lodging` - All lodging types
80
+
81
+ ### Examples
82
+
83
+ **Find nearby restaurants:**
84
+ ```json
85
+ {
86
+ "lat": 40.7484,
87
+ "lng": -73.9857,
88
+ "radius": 500,
89
+ "type": "restaurant"
90
+ }
91
+ ```
92
+
93
+ **Find coffee shops:**
94
+ ```json
95
+ {
96
+ "lat": 37.7749,
97
+ "lng": -122.4194,
98
+ "type": "cafe",
99
+ "radius": 1000
100
+ }
101
+ ```
102
+
103
+ **Find specific chain:**
104
+ ```json
105
+ {
106
+ "lat": 37.7749,
107
+ "lng": -122.4194,
108
+ "type": "cafe",
109
+ "keyword": "starbucks"
110
+ }
111
+ ```
112
+
113
+ **Find gas stations:**
114
+ ```json
115
+ {
116
+ "lat": 34.0522,
117
+ "lng": -118.2437,
118
+ "type": "gas_station",
119
+ "radius": 2000
120
+ }
121
+ ```
122
+
123
+ **Find hotels:**
124
+ ```json
125
+ {
126
+ "lat": 51.5074,
127
+ "lng": -0.1278,
128
+ "type": "hotel",
129
+ "radius": 1000
130
+ }
131
+ ```
132
+
133
+ ### Response Format
134
+
135
+ ```json
136
+ {
137
+ "success": true,
138
+ "type": "restaurant",
139
+ "search_parameters": {
140
+ "location": {"lat": 40.7484, "lng": -73.9857},
141
+ "radius": 500,
142
+ "type": "restaurant"
143
+ },
144
+ "results": [
145
+ {
146
+ "name": "Example Restaurant",
147
+ "vicinity": "123 Main St, New York",
148
+ "rating": 4.5,
149
+ "user_ratings_total": 150,
150
+ "price_level": 2,
151
+ "geometry": {
152
+ "location": {"lat": 40.7485, "lng": -73.9860}
153
+ },
154
+ "types": ["restaurant", "food", "establishment"],
155
+ "opening_hours": {"open_now": true}
156
+ }
157
+ ],
158
+ "total_results": 10,
159
+ "status": "OK"
160
+ }
161
+ ```
162
+
163
+ ### Response Fields
164
+
165
+ | Field | Description |
166
+ |-------|-------------|
167
+ | name | Place name |
168
+ | vicinity | Address or location description |
169
+ | rating | Average rating (1-5) |
170
+ | user_ratings_total | Number of reviews |
171
+ | price_level | Price level (0-4, 0=free, 4=very expensive) |
172
+ | geometry.location | Place coordinates |
173
+ | types | Place type categories |
174
+ | opening_hours.open_now | Whether currently open |
175
+
176
+ ### Error Response
177
+
178
+ ```json
179
+ {
180
+ "error": "lat and lng are required for nearby places search"
181
+ }
182
+ ```
183
+
184
+ ## Price Level Guide
185
+
186
+ | Level | Meaning |
187
+ |-------|---------|
188
+ | 0 | Free |
189
+ | 1 | Inexpensive ($) |
190
+ | 2 | Moderate ($$) |
191
+ | 3 | Expensive ($$$) |
192
+ | 4 | Very Expensive ($$$$) |
193
+
194
+ ## Common Workflows
195
+
196
+ ### Find places near an address
197
+
198
+ 1. Use `geocoding` tool to convert address to coordinates
199
+ 2. Use `nearby_places` with the lat/lng from step 1
200
+
201
+ ### Find best-rated places
202
+
203
+ 1. Search with appropriate type and radius
204
+ 2. Sort results by rating in response
205
+ 3. Filter by minimum rating threshold
206
+
207
+ ### Find open places now
208
+
209
+ 1. Search with desired type
210
+ 2. Check `opening_hours.open_now` in results
211
+
212
+ ## Radius Guidelines
213
+
214
+ | Radius | Use Case |
215
+ |--------|----------|
216
+ | 100-500m | Walking distance |
217
+ | 500-1000m | Short walk |
218
+ | 1000-2000m | 5-10 min walk |
219
+ | 2000-5000m | Driving distance |
220
+ | 5000-50000m | City-wide search |
221
+
222
+ ## Tips
223
+
224
+ 1. **Use specific types**: "cafe" not "coffee"
225
+ 2. **Add keywords**: Filter by chain name or cuisine
226
+ 3. **Adjust radius**: Start small, expand if needed
227
+ 4. **Check ratings**: Higher ratings usually mean better quality
228
+ 5. **Verify open_now**: Important for time-sensitive searches
229
+
230
+ ## Setup Requirements
231
+
232
+ 1. Connect the **Show Nearby Places** (gmaps_nearby_places) node to Zeenie's `input-tools` handle
233
+ 2. Google Maps API key must be configured in Credentials
234
+ 3. Places API must be enabled in Google Cloud Console
@@ -0,0 +1,211 @@
1
+ ---
2
+ name: http-request-skill
3
+ description: Make HTTP requests to external APIs and web services. Supports GET, POST, PUT, DELETE, PATCH methods with headers and JSON body.
4
+ allowed-tools: http_request
5
+ metadata:
6
+ author: machina
7
+ version: "1.0"
8
+ category: integration
9
+ icon: "🌐"
10
+ color: "#EF4444"
11
+ ---
12
+
13
+ # HTTP Request Tool
14
+
15
+ Make HTTP requests to external APIs and web services.
16
+
17
+ ## How It Works
18
+
19
+ This skill provides instructions for the **HTTP Request** tool node. Connect the **HTTP Request** node to Zeenie's `input-tools` handle to enable API calls.
20
+
21
+ ## http_request Tool
22
+
23
+ Make an HTTP request to any URL.
24
+
25
+ ### Schema Fields
26
+
27
+ | Field | Type | Required | Description |
28
+ |-------|------|----------|-------------|
29
+ | url | string | Yes | Full URL to request (e.g., `https://api.example.com/data`) |
30
+ | method | string | No | HTTP method: `GET`, `POST`, `PUT`, `DELETE`, `PATCH` (default: `GET`) |
31
+ | body | object | No | Request body as JSON object (for POST/PUT/PATCH) |
32
+
33
+ ### Node Parameters
34
+
35
+ Additional options can be configured on the node:
36
+
37
+ | Parameter | Description |
38
+ |-----------|-------------|
39
+ | headers | Custom headers as JSON (e.g., `{"Authorization": "Bearer token"}`) |
40
+ | base_url | Base URL prepended to the url parameter |
41
+
42
+ ### Response Format
43
+
44
+ ```json
45
+ {
46
+ "status": 200,
47
+ "data": { "key": "value" },
48
+ "url": "https://api.example.com/data",
49
+ "method": "GET"
50
+ }
51
+ ```
52
+
53
+ ### Examples
54
+
55
+ **GET request (fetch data):**
56
+ ```json
57
+ {
58
+ "url": "https://api.example.com/users/123",
59
+ "method": "GET"
60
+ }
61
+ ```
62
+
63
+ **POST request (create resource):**
64
+ ```json
65
+ {
66
+ "url": "https://api.example.com/users",
67
+ "method": "POST",
68
+ "body": {
69
+ "name": "John Doe",
70
+ "email": "john@example.com"
71
+ }
72
+ }
73
+ ```
74
+
75
+ **PUT request (update resource):**
76
+ ```json
77
+ {
78
+ "url": "https://api.example.com/users/123",
79
+ "method": "PUT",
80
+ "body": {
81
+ "name": "John Updated"
82
+ }
83
+ }
84
+ ```
85
+
86
+ **DELETE request:**
87
+ ```json
88
+ {
89
+ "url": "https://api.example.com/users/123",
90
+ "method": "DELETE"
91
+ }
92
+ ```
93
+
94
+ **PATCH request (partial update):**
95
+ ```json
96
+ {
97
+ "url": "https://api.example.com/users/123",
98
+ "method": "PATCH",
99
+ "body": {
100
+ "status": "active"
101
+ }
102
+ }
103
+ ```
104
+
105
+ ### Real-World Examples
106
+
107
+ **Get Bitcoin price:**
108
+ ```json
109
+ {
110
+ "url": "https://api.coindesk.com/v1/bpi/currentprice.json",
111
+ "method": "GET"
112
+ }
113
+ ```
114
+
115
+ **Get weather:**
116
+ ```json
117
+ {
118
+ "url": "https://api.openweathermap.org/data/2.5/weather?q=London&appid=YOUR_KEY",
119
+ "method": "GET"
120
+ }
121
+ ```
122
+
123
+ **Post to webhook:**
124
+ ```json
125
+ {
126
+ "url": "https://hooks.slack.com/services/xxx",
127
+ "method": "POST",
128
+ "body": {
129
+ "text": "Hello from MachinaOS!"
130
+ }
131
+ }
132
+ ```
133
+
134
+ **Check website status:**
135
+ ```json
136
+ {
137
+ "url": "https://example.com",
138
+ "method": "GET"
139
+ }
140
+ ```
141
+
142
+ ### Error Responses
143
+
144
+ **Timeout:**
145
+ ```json
146
+ {
147
+ "error": "Request timed out"
148
+ }
149
+ ```
150
+
151
+ **Connection failed:**
152
+ ```json
153
+ {
154
+ "error": "Connection failed: Unable to reach host"
155
+ }
156
+ ```
157
+
158
+ **HTTP error:**
159
+ ```json
160
+ {
161
+ "status": 404,
162
+ "data": "Not Found",
163
+ "url": "https://api.example.com/missing",
164
+ "method": "GET"
165
+ }
166
+ ```
167
+
168
+ ## HTTP Status Codes
169
+
170
+ | Status | Meaning | Action |
171
+ |--------|---------|--------|
172
+ | 200-299 | Success | Process the response data |
173
+ | 400 | Bad Request | Check request parameters |
174
+ | 401 | Unauthorized | Check API key/authentication |
175
+ | 403 | Forbidden | Insufficient permissions |
176
+ | 404 | Not Found | Check URL path |
177
+ | 429 | Too Many Requests | Rate limited, wait and retry |
178
+ | 500-599 | Server Error | External service issue |
179
+
180
+ ## Use Cases
181
+
182
+ | Use Case | Method | Description |
183
+ |----------|--------|-------------|
184
+ | Fetch data | GET | Retrieve resources |
185
+ | Create resource | POST | Add new data |
186
+ | Update resource | PUT/PATCH | Modify existing data |
187
+ | Delete resource | DELETE | Remove data |
188
+ | Health check | GET | Verify service availability |
189
+ | Webhook trigger | POST | Send events to services |
190
+
191
+ ## Guidelines
192
+
193
+ 1. **URLs**: Must be fully qualified with protocol (https://)
194
+ 2. **Authentication**: Use node headers for API keys/tokens
195
+ 3. **Timeout**: Default 30 seconds
196
+ 4. **JSON body**: Automatically serialized for POST/PUT/PATCH
197
+ 5. **Response**: JSON responses are automatically parsed
198
+
199
+ ## Security Notes
200
+
201
+ 1. Never expose API keys in responses to users
202
+ 2. Validate URLs before making requests
203
+ 3. Avoid internal/private network addresses (localhost, 192.168.x.x)
204
+ 4. Respect rate limits of external services
205
+ 5. Don't store sensitive data from API responses
206
+
207
+ ## Setup Requirements
208
+
209
+ 1. Connect the **HTTP Request** node to Zeenie's `input-tools` handle
210
+ 2. Configure authentication headers on the node if needed
211
+ 3. Ensure network access to target APIs
@@ -1,84 +0,0 @@
1
- ---
2
- name: android-skill
3
- description: Control Android devices - battery, wifi, bluetooth, apps, location, camera, and sensors. Use when user wants to interact with their Android phone or tablet.
4
- metadata:
5
- author: machina
6
- version: "2.0"
7
- category: device
8
- icon: "📱"
9
- color: "#3DDC84"
10
- ---
11
-
12
- # Android Device Control
13
-
14
- This skill provides context for monitoring and controlling Android devices.
15
-
16
- ## How It Works
17
-
18
- This skill provides instructions and context. To execute Android actions, connect the **Android Toolkit** node to the Zeenie's `input-tools` handle, then connect Android service nodes to the toolkit:
19
-
20
- ```
21
- [Battery Monitor] --+
22
- |
23
- [WiFi Automation] --+--> [Android Toolkit] --> [Zeenie]
24
- |
25
- [Location] ---+
26
- ```
27
-
28
- ## Available Android Service Nodes
29
-
30
- Connect these to the Android Toolkit:
31
-
32
- | Node | Capabilities |
33
- |------|-------------|
34
- | **Battery Monitor** | Battery level, charging status, health, temperature |
35
- | **WiFi Automation** | Enable/disable WiFi, scan networks, get status |
36
- | **Bluetooth Automation** | Enable/disable Bluetooth, paired devices |
37
- | **App Launcher** | Launch applications by package name |
38
- | **App List** | List installed applications |
39
- | **Location** | Get current GPS coordinates |
40
- | **Audio Automation** | Volume control, mute/unmute |
41
- | **Screen Control** | Brightness, wake/sleep screen |
42
- | **Camera Control** | Camera info, capture photos |
43
- | **Motion Detection** | Accelerometer, gyroscope data |
44
- | **Environmental Sensors** | Temperature, humidity, pressure |
45
-
46
- ## Example Interactions
47
-
48
- **User**: "What's my phone's battery level?"
49
- - Use the Battery Monitor service with action "status"
50
-
51
- **User**: "Turn off WiFi"
52
- - Use the WiFi Automation service with action "disable"
53
-
54
- **User**: "What apps are installed?"
55
- - Use the App List service with action "list"
56
-
57
- **User**: "Open Chrome"
58
- - Use the App Launcher service with action "launch", package_name "com.android.chrome"
59
-
60
- **User**: "Where is my phone?"
61
- - Use the Location service with action "current"
62
-
63
- **User**: "Set volume to 50%"
64
- - Use the Audio Automation service with action "set_volume", volume 50
65
-
66
- ## Device Connection
67
-
68
- Before using Android tools, ensure:
69
- 1. Device is connected via ADB (USB) or remote WebSocket
70
- 2. Android Device Setup node shows connected status (green indicator)
71
- 3. Required permissions are granted on the device
72
-
73
- ## Error Handling
74
-
75
- - If device is not connected, inform user to check connection
76
- - If permission is denied, suggest enabling it in device settings
77
- - If action fails, provide the error message and suggest alternatives
78
-
79
- ## Setup Requirements
80
-
81
- 1. Connect this skill to Zeenie's `input-skill` handle
82
- 2. Add **Android Toolkit** node and connect to Zeenie's `input-tools` handle
83
- 3. Connect desired Android service nodes to the Android Toolkit
84
- 4. Ensure Android device is paired (green status indicator)