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,215 @@
1
+ ---
2
+ name: cron-scheduler-skill
3
+ description: Schedule recurring tasks using cron expressions. Run workflows on schedules (daily, weekly, hourly, etc.).
4
+ allowed-tools: cron_scheduler
5
+ metadata:
6
+ author: machina
7
+ version: "1.0"
8
+ category: automation
9
+ icon: "📅"
10
+ color: "#8B5CF6"
11
+ ---
12
+
13
+ # Cron Scheduler Tool
14
+
15
+ Schedule recurring tasks using cron expressions.
16
+
17
+ ## How It Works
18
+
19
+ This skill provides instructions for the **Cron Scheduler** tool node. Connect the **Cron Scheduler** node to Zeenie's `input-tools` handle or use as a workflow trigger.
20
+
21
+ ## cron_scheduler Tool
22
+
23
+ Create recurring schedules using cron expressions.
24
+
25
+ ### Schema Fields
26
+
27
+ | Field | Type | Required | Description |
28
+ |-------|------|----------|-------------|
29
+ | expression | string | Yes | Cron expression (5 fields) |
30
+ | timezone | string | No | Timezone (default: UTC) |
31
+
32
+ ### Cron Expression Format
33
+
34
+ ```
35
+ * * * * *
36
+ │ │ │ │ │
37
+ │ │ │ │ └── Day of week (0-7, Sun=0 or 7)
38
+ │ │ │ └──── Month (1-12)
39
+ │ │ └────── Day of month (1-31)
40
+ │ └──────── Hour (0-23)
41
+ └────────── Minute (0-59)
42
+ ```
43
+
44
+ ### Special Characters
45
+
46
+ | Character | Meaning | Example |
47
+ |-----------|---------|---------|
48
+ | `*` | Any value | `* * * * *` (every minute) |
49
+ | `,` | List of values | `1,15 * * * *` (minute 1 and 15) |
50
+ | `-` | Range | `1-5 * * * *` (minutes 1-5) |
51
+ | `/` | Step values | `*/15 * * * *` (every 15 minutes) |
52
+
53
+ ### Common Patterns
54
+
55
+ | Pattern | Description | Cron Expression |
56
+ |---------|-------------|-----------------|
57
+ | Every minute | Runs each minute | `* * * * *` |
58
+ | Every 5 minutes | Runs at :00, :05, :10... | `*/5 * * * *` |
59
+ | Every 15 minutes | Runs at :00, :15, :30, :45 | `*/15 * * * *` |
60
+ | Every hour | Runs at minute 0 | `0 * * * *` |
61
+ | Every day at 9 AM | Morning job | `0 9 * * *` |
62
+ | Every day at midnight | Nightly job | `0 0 * * *` |
63
+ | Weekdays at 9 AM | Mon-Fri morning | `0 9 * * 1-5` |
64
+ | Every Monday | Weekly on Monday | `0 0 * * 1` |
65
+ | First of month | Monthly job | `0 0 1 * *` |
66
+ | Every Sunday at 6 PM | Weekly Sunday evening | `0 18 * * 0` |
67
+ | Multiple times daily | 8am, noon, 6pm | `0 8,12,18 * * *` |
68
+
69
+ ### Examples
70
+
71
+ **Every day at 9 AM:**
72
+ ```json
73
+ {
74
+ "expression": "0 9 * * *",
75
+ "timezone": "America/New_York"
76
+ }
77
+ ```
78
+
79
+ **Every 30 minutes:**
80
+ ```json
81
+ {
82
+ "expression": "*/30 * * * *"
83
+ }
84
+ ```
85
+
86
+ **Weekdays at 6 PM:**
87
+ ```json
88
+ {
89
+ "expression": "0 18 * * 1-5",
90
+ "timezone": "Europe/London"
91
+ }
92
+ ```
93
+
94
+ **Every Monday at 10 AM:**
95
+ ```json
96
+ {
97
+ "expression": "0 10 * * 1",
98
+ "timezone": "Asia/Tokyo"
99
+ }
100
+ ```
101
+
102
+ **First day of each month:**
103
+ ```json
104
+ {
105
+ "expression": "0 0 1 * *"
106
+ }
107
+ ```
108
+
109
+ ### Response Format
110
+
111
+ **Schedule created:**
112
+ ```json
113
+ {
114
+ "success": true,
115
+ "message": "Cron schedule created",
116
+ "expression": "0 9 * * *",
117
+ "timezone": "America/New_York",
118
+ "next_run": "2025-01-31T09:00:00-05:00",
119
+ "description": "At 09:00 AM, every day"
120
+ }
121
+ ```
122
+
123
+ **Schedule triggered:**
124
+ ```json
125
+ {
126
+ "success": true,
127
+ "triggered": true,
128
+ "message": "Cron schedule triggered",
129
+ "expression": "0 9 * * *",
130
+ "triggered_at": "2025-01-30T09:00:00Z"
131
+ }
132
+ ```
133
+
134
+ ### Error Response
135
+
136
+ ```json
137
+ {
138
+ "error": "Invalid cron expression: too few fields"
139
+ }
140
+ ```
141
+
142
+ ## Timezone Reference
143
+
144
+ | Timezone | Description |
145
+ |----------|-------------|
146
+ | `UTC` | Universal Time (default) |
147
+ | `America/New_York` | Eastern US |
148
+ | `America/Los_Angeles` | Pacific US |
149
+ | `Europe/London` | UK |
150
+ | `Europe/Paris` | Central Europe |
151
+ | `Asia/Tokyo` | Japan |
152
+ | `Asia/Shanghai` | China |
153
+ | `Australia/Sydney` | Australia Eastern |
154
+
155
+ ## Use Cases
156
+
157
+ | Use Case | Expression | Description |
158
+ |----------|------------|-------------|
159
+ | Daily report | `0 9 * * *` | Generate daily reports |
160
+ | Hourly sync | `0 * * * *` | Sync data hourly |
161
+ | Weekly backup | `0 2 * * 0` | Sunday at 2 AM |
162
+ | Business hours check | `*/30 9-17 * * 1-5` | Every 30 min, 9-5 Mon-Fri |
163
+ | Monthly cleanup | `0 0 1 * *` | First of month |
164
+
165
+ ## Common Workflows
166
+
167
+ ### Daily notification
168
+
169
+ 1. Set cron for desired time (e.g., `0 9 * * *`)
170
+ 2. Cron triggers → workflow runs
171
+ 3. Send notification to user
172
+
173
+ ### Scheduled data sync
174
+
175
+ 1. Set cron for sync interval (e.g., `0 * * * *`)
176
+ 2. Cron triggers → fetch data
177
+ 3. Process and store data
178
+
179
+ ### Weekly report
180
+
181
+ 1. Set cron for weekly (e.g., `0 10 * * 1`)
182
+ 2. Cron triggers → generate report
183
+ 3. Send report via email/WhatsApp
184
+
185
+ ## Workflow-Based Scheduling
186
+
187
+ In this system, scheduling works through:
188
+
189
+ 1. **Trigger Node**: Use Cron Scheduler as workflow start
190
+ 2. **Deployment**: Deploy workflow to activate schedule
191
+ 3. **Cancellation**: Undeploy workflow to stop schedule
192
+
193
+ Each trigger creates independent workflow runs.
194
+
195
+ ## Best Practices
196
+
197
+ 1. **Use UTC for global**: Avoid timezone confusion
198
+ 2. **Consider load**: Don't schedule many jobs at :00
199
+ 3. **Stagger jobs**: Use :05, :10 instead of all at :00
200
+ 4. **Test expressions**: Verify with online cron tools
201
+ 5. **Document schedules**: Keep track of what runs when
202
+
203
+ ## Limitations
204
+
205
+ - Requires workflow deployment to activate
206
+ - Cannot schedule past events
207
+ - Minimum granularity is 1 minute
208
+ - Complex conditions need multiple schedules
209
+
210
+ ## Setup Requirements
211
+
212
+ 1. Connect the **Cron Scheduler** node to Zeenie's `input-tools` handle
213
+ 2. Or use as workflow trigger (first node)
214
+ 3. Deploy workflow to activate the schedule
215
+ 4. Undeploy to cancel the schedule
@@ -0,0 +1,251 @@
1
+ ---
2
+ name: task-manager-skill
3
+ description: Manage delegated tasks. List active tasks, check task status, get results from completed delegations, and mark tasks as done.
4
+ allowed-tools: task_manager
5
+ metadata:
6
+ author: machina
7
+ version: "1.0"
8
+ category: automation
9
+ icon: "📋"
10
+ color: "#F59E0B"
11
+ ---
12
+
13
+ # Task Manager Tool
14
+
15
+ Manage and track delegated agent tasks.
16
+
17
+ ## How It Works
18
+
19
+ This skill provides instructions for the **Task Manager** tool node. Connect the **Task Manager** node to Zeenie's `input-tools` handle to enable task management operations.
20
+
21
+ ## task_manager Tool
22
+
23
+ List, check, and manage delegated tasks.
24
+
25
+ ### Schema Fields
26
+
27
+ | Field | Type | Required | Description |
28
+ |-------|------|----------|-------------|
29
+ | operation | string | Yes | `"list_tasks"`, `"get_task"`, or `"mark_done"` |
30
+ | task_id | string | For get_task, mark_done | Specific task ID to query |
31
+ | status_filter | string | No | Filter by status: `"running"`, `"completed"`, `"error"` |
32
+
33
+ ### Operations
34
+
35
+ | Operation | Description | Required Fields |
36
+ |-----------|-------------|-----------------|
37
+ | `list_tasks` | List all tracked tasks | status_filter (optional) |
38
+ | `get_task` | Get details for specific task | task_id |
39
+ | `mark_done` | Remove task from tracking | task_id |
40
+
41
+ ### Task States
42
+
43
+ | Status | Description |
44
+ |--------|-------------|
45
+ | `running` | Task is currently executing |
46
+ | `completed` | Task finished successfully |
47
+ | `error` | Task failed with error |
48
+ | `cancelled` | Task was cancelled |
49
+
50
+ ### Examples
51
+
52
+ **List all tasks:**
53
+ ```json
54
+ {
55
+ "operation": "list_tasks"
56
+ }
57
+ ```
58
+
59
+ **List only running tasks:**
60
+ ```json
61
+ {
62
+ "operation": "list_tasks",
63
+ "status_filter": "running"
64
+ }
65
+ ```
66
+
67
+ **List completed tasks:**
68
+ ```json
69
+ {
70
+ "operation": "list_tasks",
71
+ "status_filter": "completed"
72
+ }
73
+ ```
74
+
75
+ **Get specific task details:**
76
+ ```json
77
+ {
78
+ "operation": "get_task",
79
+ "task_id": "delegated_agent_abc12345"
80
+ }
81
+ ```
82
+
83
+ **Mark task as done:**
84
+ ```json
85
+ {
86
+ "operation": "mark_done",
87
+ "task_id": "delegated_agent_abc12345"
88
+ }
89
+ ```
90
+
91
+ ### Response Formats
92
+
93
+ **list_tasks response:**
94
+ ```json
95
+ {
96
+ "success": true,
97
+ "operation": "list_tasks",
98
+ "tasks": [
99
+ {
100
+ "task_id": "delegated_coding_agent_abc12345",
101
+ "status": "completed",
102
+ "agent_name": "Coding Agent",
103
+ "result_summary": "Generated Python function for data processing...",
104
+ "active": false
105
+ },
106
+ {
107
+ "task_id": "delegated_web_agent_def67890",
108
+ "status": "running",
109
+ "active": true
110
+ }
111
+ ],
112
+ "count": 2,
113
+ "running": 1,
114
+ "completed": 1,
115
+ "errors": 0
116
+ }
117
+ ```
118
+
119
+ **get_task response (completed):**
120
+ ```json
121
+ {
122
+ "success": true,
123
+ "operation": "get_task",
124
+ "task_id": "delegated_coding_agent_abc12345",
125
+ "status": "completed",
126
+ "agent_name": "Coding Agent",
127
+ "result": "Here is the Python function you requested:\n\ndef process_data(items):\n return [x * 2 for x in items]"
128
+ }
129
+ ```
130
+
131
+ **get_task response (running):**
132
+ ```json
133
+ {
134
+ "success": true,
135
+ "operation": "get_task",
136
+ "task_id": "delegated_web_agent_def67890",
137
+ "status": "running",
138
+ "agent_name": "Web Agent"
139
+ }
140
+ ```
141
+
142
+ **get_task response (error):**
143
+ ```json
144
+ {
145
+ "success": true,
146
+ "operation": "get_task",
147
+ "task_id": "delegated_agent_xyz99999",
148
+ "status": "error",
149
+ "agent_name": "Social Agent",
150
+ "error": "Failed to connect to WhatsApp service"
151
+ }
152
+ ```
153
+
154
+ **mark_done response:**
155
+ ```json
156
+ {
157
+ "success": true,
158
+ "operation": "mark_done",
159
+ "task_id": "delegated_coding_agent_abc12345",
160
+ "removed": true,
161
+ "message": "Task delegated_coding_agent_abc12345 marked as done and removed from tracking"
162
+ }
163
+ ```
164
+
165
+ ### Error Response
166
+
167
+ ```json
168
+ {
169
+ "success": false,
170
+ "error": "task_id is required for get_task operation"
171
+ }
172
+ ```
173
+
174
+ ```json
175
+ {
176
+ "success": false,
177
+ "error": "Task delegated_agent_notfound not found",
178
+ "task_id": "delegated_agent_notfound"
179
+ }
180
+ ```
181
+
182
+ ## Use Cases
183
+
184
+ | Use Case | Operation | Description |
185
+ |----------|-----------|-------------|
186
+ | Monitor progress | list_tasks | See all active delegations |
187
+ | Check result | get_task | Get completed task output |
188
+ | Verify completion | get_task | Confirm task finished |
189
+ | Clean up | mark_done | Remove processed tasks |
190
+ | Error handling | list_tasks + filter | Find failed tasks |
191
+
192
+ ## Common Workflows
193
+
194
+ ### Check on delegated work
195
+
196
+ 1. Delegate task to sub-agent
197
+ 2. Wait or continue with other work
198
+ 3. Use `list_tasks` to see status
199
+ 4. Use `get_task` to retrieve result
200
+
201
+ ### Process all completed tasks
202
+
203
+ 1. Use `list_tasks` with `status_filter: "completed"`
204
+ 2. For each task, use `get_task` to get full result
205
+ 3. Process the results
206
+ 4. Use `mark_done` to clean up
207
+
208
+ ### Handle errors
209
+
210
+ 1. Use `list_tasks` with `status_filter: "error"`
211
+ 2. Review failed tasks
212
+ 3. Decide to retry or mark_done
213
+ 4. Optionally re-delegate failed work
214
+
215
+ ## Integration with Agent Delegation
216
+
217
+ When a parent agent delegates work:
218
+
219
+ 1. `delegate_to_<agent>` tool returns `task_id`
220
+ 2. Child agent runs in background
221
+ 3. Parent can check status with `task_manager`
222
+ 4. Results persist until `mark_done`
223
+
224
+ ### Task ID Format
225
+
226
+ Task IDs follow the pattern:
227
+ ```
228
+ delegated_<node_id>_<random_hex>
229
+ ```
230
+
231
+ Example: `delegated_coding_agent_1_abc12345`
232
+
233
+ ## Best Practices
234
+
235
+ 1. **Track task IDs**: Store returned task_ids for later reference
236
+ 2. **Poll appropriately**: Don't check too frequently
237
+ 3. **Handle all states**: Account for running, completed, and error
238
+ 4. **Clean up**: Use mark_done after processing results
239
+ 5. **Check errors**: Review failed tasks before marking done
240
+
241
+ ## Limitations
242
+
243
+ - Tasks not persistent across server restarts (in-memory)
244
+ - Results may be truncated if very large (4000 char limit in responses)
245
+ - Cannot cancel running tasks (only track status)
246
+
247
+ ## Setup Requirements
248
+
249
+ 1. Connect the **Task Manager** node to Zeenie's `input-tools` handle
250
+ 2. Works with any agent that uses delegation
251
+ 3. Task IDs are returned when delegating to sub-agents
@@ -0,0 +1,168 @@
1
+ ---
2
+ name: timer-skill
3
+ description: Set one-time delayed timers. Execute actions after a specified duration (seconds, minutes, hours, days).
4
+ allowed-tools: timer
5
+ metadata:
6
+ author: machina
7
+ version: "1.0"
8
+ category: automation
9
+ icon: "⏱️"
10
+ color: "#10B981"
11
+ ---
12
+
13
+ # Timer Tool
14
+
15
+ Set one-time delayed execution timers.
16
+
17
+ ## How It Works
18
+
19
+ This skill provides instructions for the **Timer** tool node. Connect the **Timer** node to Zeenie's `input-tools` handle to enable timed delays.
20
+
21
+ ## timer Tool
22
+
23
+ Create a one-time timer that triggers after a specified duration.
24
+
25
+ ### Schema Fields
26
+
27
+ | Field | Type | Required | Description |
28
+ |-------|------|----------|-------------|
29
+ | duration | number | Yes | Time value for the delay |
30
+ | unit | string | Yes | Time unit: `"seconds"`, `"minutes"`, `"hours"`, `"days"` |
31
+
32
+ ### Time Units
33
+
34
+ | Unit | Range | Use Case |
35
+ |------|-------|----------|
36
+ | `seconds` | 1-3600 | Short delays, testing |
37
+ | `minutes` | 1-1440 | Task reminders, short waits |
38
+ | `hours` | 1-168 | Scheduled checks, delayed notifications |
39
+ | `days` | 1-30 | Long-term reminders, follow-ups |
40
+
41
+ ### Examples
42
+
43
+ **30 second delay:**
44
+ ```json
45
+ {
46
+ "duration": 30,
47
+ "unit": "seconds"
48
+ }
49
+ ```
50
+
51
+ **5 minute reminder:**
52
+ ```json
53
+ {
54
+ "duration": 5,
55
+ "unit": "minutes"
56
+ }
57
+ ```
58
+
59
+ **1 hour delay:**
60
+ ```json
61
+ {
62
+ "duration": 1,
63
+ "unit": "hours"
64
+ }
65
+ ```
66
+
67
+ **2 day follow-up:**
68
+ ```json
69
+ {
70
+ "duration": 2,
71
+ "unit": "days"
72
+ }
73
+ ```
74
+
75
+ ### Response Format
76
+
77
+ **Timer set:**
78
+ ```json
79
+ {
80
+ "success": true,
81
+ "message": "Timer set for 5 minutes",
82
+ "duration": 5,
83
+ "unit": "minutes",
84
+ "duration_seconds": 300,
85
+ "trigger_at": "2025-01-30T12:05:00Z"
86
+ }
87
+ ```
88
+
89
+ **Timer triggered:**
90
+ ```json
91
+ {
92
+ "success": true,
93
+ "triggered": true,
94
+ "message": "Timer completed after 5 minutes",
95
+ "duration": 5,
96
+ "unit": "minutes"
97
+ }
98
+ ```
99
+
100
+ ### Error Response
101
+
102
+ ```json
103
+ {
104
+ "error": "Duration must be a positive number"
105
+ }
106
+ ```
107
+
108
+ ## Use Cases
109
+
110
+ | Use Case | Duration | Unit | Description |
111
+ |----------|----------|------|-------------|
112
+ | Quick test | 10-30 | seconds | Testing workflow execution |
113
+ | Reminder | 5-30 | minutes | Short-term reminders |
114
+ | Rate limit | 60 | seconds | Wait between API calls |
115
+ | Daily check | 24 | hours | Daily automation |
116
+ | Follow-up | 2-7 | days | Long-term follow-ups |
117
+
118
+ ## Common Workflows
119
+
120
+ ### Delayed notification
121
+
122
+ 1. Receive user request for reminder
123
+ 2. Set timer with requested duration
124
+ 3. Timer triggers → send notification
125
+
126
+ ### Rate-limited API calls
127
+
128
+ 1. Make API call
129
+ 2. Set 60-second timer
130
+ 3. Timer triggers → make next call
131
+
132
+ ### Scheduled workflow
133
+
134
+ 1. Set timer for desired delay
135
+ 2. Timer triggers → execute workflow nodes
136
+
137
+ ## Integration with Workflow
138
+
139
+ When used as a trigger node in a workflow:
140
+ 1. Deploy the workflow
141
+ 2. Timer countdown begins
142
+ 3. After duration, downstream nodes execute
143
+
144
+ When used as AI tool:
145
+ 1. Agent decides to set timer
146
+ 2. Timer is scheduled
147
+ 3. Agent can proceed with other work
148
+ 4. Notification when timer triggers
149
+
150
+ ## Best Practices
151
+
152
+ 1. **Use appropriate units**: Don't use 3600 seconds when 1 hour is clearer
153
+ 2. **Consider time zones**: Timers use server time
154
+ 3. **Account for drift**: Long timers may have slight variance
155
+ 4. **Test short first**: Start with seconds before days
156
+ 5. **Chain timers carefully**: Avoid infinite loops
157
+
158
+ ## Limitations
159
+
160
+ - Timers are not persistent across server restarts
161
+ - Maximum practical delay depends on server uptime
162
+ - Timers are one-time (use cron for recurring)
163
+
164
+ ## Setup Requirements
165
+
166
+ 1. Connect the **Timer** node to Zeenie's `input-tools` handle
167
+ 2. For workflow triggers, connect Timer as the first node
168
+ 3. Deploy workflow to activate timer