machinaos 0.0.21 → 0.0.23

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 (60) hide show
  1. package/README.md +32 -6
  2. package/bin/cli.js +0 -0
  3. package/client/dist/assets/index-5BWZnM6b.js +703 -0
  4. package/client/dist/index.html +1 -1
  5. package/client/package.json +1 -1
  6. package/client/src/Dashboard.tsx +12 -5
  7. package/client/src/ParameterPanel.tsx +6 -5
  8. package/client/src/components/AIAgentNode.tsx +35 -16
  9. package/client/src/components/CredentialsModal.tsx +450 -5
  10. package/client/src/components/TeamMonitorNode.tsx +269 -0
  11. package/client/src/components/parameterPanel/InputSection.tsx +25 -0
  12. package/client/src/contexts/WebSocketContext.tsx +38 -0
  13. package/client/src/hooks/useApiKeys.ts +44 -0
  14. package/client/src/nodeDefinitions/specializedAgentNodes.ts +59 -3
  15. package/client/src/nodeDefinitions/twitterNodes.ts +441 -0
  16. package/client/src/nodeDefinitions/utilityNodes.ts +45 -1
  17. package/client/src/nodeDefinitions.ts +7 -1
  18. package/client/src/services/executionService.ts +4 -1
  19. package/install.sh +63 -1
  20. package/package.json +5 -2
  21. package/scripts/build.js +0 -0
  22. package/scripts/clean.js +0 -0
  23. package/scripts/daemon.js +0 -0
  24. package/scripts/docker.js +0 -0
  25. package/scripts/install.js +0 -0
  26. package/scripts/postinstall.js +29 -0
  27. package/scripts/preinstall.js +67 -0
  28. package/scripts/serve-client.js +0 -0
  29. package/scripts/start.js +0 -0
  30. package/scripts/stop.js +0 -0
  31. package/scripts/sync-version.js +0 -0
  32. package/server/Dockerfile +10 -15
  33. package/server/constants.py +20 -0
  34. package/server/core/database.py +443 -3
  35. package/server/main.py +9 -1
  36. package/server/models/database.py +112 -2
  37. package/server/pyproject.toml +3 -0
  38. package/server/requirements.txt +3 -0
  39. package/server/routers/twitter.py +390 -0
  40. package/server/routers/websocket.py +320 -0
  41. package/server/services/agent_team.py +266 -0
  42. package/server/services/ai.py +43 -0
  43. package/server/services/compaction.py +39 -4
  44. package/server/services/event_waiter.py +41 -0
  45. package/server/services/handlers/__init__.py +13 -0
  46. package/server/services/handlers/ai.py +66 -2
  47. package/server/services/handlers/tools.py +84 -0
  48. package/server/services/handlers/twitter.py +297 -0
  49. package/server/services/handlers/utility.py +91 -0
  50. package/server/services/node_executor.py +15 -1
  51. package/server/services/pricing.py +270 -0
  52. package/server/services/status_broadcaster.py +79 -0
  53. package/server/services/twitter_oauth.py +410 -0
  54. package/server/skills/social_agent/twitter-search-skill/SKILL.md +146 -0
  55. package/server/skills/social_agent/twitter-send-skill/SKILL.md +142 -0
  56. package/server/skills/social_agent/twitter-user-skill/SKILL.md +165 -0
  57. package/workflows/Zeenie_full.json +459 -0
  58. package/workflows/Zeenie_small.json +459 -0
  59. package/client/dist/assets/index-YVvAiByx.js +0 -703
  60. package/server/requirements-docker.txt +0 -86
@@ -0,0 +1,165 @@
1
+ ---
2
+ name: twitter-user-skill
3
+ description: Look up Twitter/X user profiles, get authenticated user info, and retrieve followers/following lists.
4
+ allowed-tools: twitter_user
5
+ metadata:
6
+ author: machina
7
+ version: "1.0"
8
+ category: social
9
+ icon: "👤"
10
+ color: "#000000"
11
+ ---
12
+
13
+ # Twitter User Tool
14
+
15
+ Look up user profiles and social connections on Twitter/X.
16
+
17
+ ## How It Works
18
+
19
+ This skill provides instructions for the **Twitter User** tool node. Connect the **Twitter User** node to an AI Agent's `input-tools` handle to enable user lookups.
20
+
21
+ ## twitter_user Tool
22
+
23
+ Retrieve user information and social connections.
24
+
25
+ ### Schema Fields
26
+
27
+ | Field | Type | Required | Description |
28
+ |-------|------|----------|-------------|
29
+ | operation | string | Yes | Operation type: `me`, `by_username`, `by_id`, `followers`, `following` |
30
+ | username | string | If by_username | Twitter username (without @) |
31
+ | user_id | string | If by_id/followers/following | Twitter user ID |
32
+ | max_results | integer | No | For followers/following (default: 100, max: 1000) |
33
+
34
+ ### Operations
35
+
36
+ | Operation | Required Fields | Description |
37
+ |-----------|-----------------|-------------|
38
+ | `me` | none | Get authenticated user's profile |
39
+ | `by_username` | username | Look up user by username |
40
+ | `by_id` | user_id | Look up user by ID |
41
+ | `followers` | user_id (optional) | Get user's followers (defaults to authenticated user) |
42
+ | `following` | user_id (optional) | Get accounts user follows (defaults to authenticated user) |
43
+
44
+ ### Examples
45
+
46
+ **Get my profile:**
47
+ ```json
48
+ {
49
+ "operation": "me"
50
+ }
51
+ ```
52
+
53
+ **Look up user by username:**
54
+ ```json
55
+ {
56
+ "operation": "by_username",
57
+ "username": "elonmusk"
58
+ }
59
+ ```
60
+
61
+ **Look up user by ID:**
62
+ ```json
63
+ {
64
+ "operation": "by_id",
65
+ "user_id": "44196397"
66
+ }
67
+ ```
68
+
69
+ **Get my followers:**
70
+ ```json
71
+ {
72
+ "operation": "followers",
73
+ "max_results": 100
74
+ }
75
+ ```
76
+
77
+ **Get accounts I follow:**
78
+ ```json
79
+ {
80
+ "operation": "following",
81
+ "max_results": 50
82
+ }
83
+ ```
84
+
85
+ **Get another user's followers:**
86
+ ```json
87
+ {
88
+ "operation": "followers",
89
+ "user_id": "44196397",
90
+ "max_results": 200
91
+ }
92
+ ```
93
+
94
+ ### Response Format - Single User
95
+
96
+ ```json
97
+ {
98
+ "success": true,
99
+ "result": {
100
+ "user": {
101
+ "id": "44196397",
102
+ "username": "elonmusk",
103
+ "name": "Elon Musk",
104
+ "profile_image_url": "https://pbs.twimg.com/...",
105
+ "verified": true
106
+ }
107
+ },
108
+ "execution_time": 0.35
109
+ }
110
+ ```
111
+
112
+ ### Response Format - User List
113
+
114
+ ```json
115
+ {
116
+ "success": true,
117
+ "result": {
118
+ "followers": {
119
+ "users": [
120
+ {
121
+ "id": "123456789",
122
+ "username": "user1",
123
+ "name": "User One",
124
+ "profile_image_url": "https://...",
125
+ "verified": false
126
+ }
127
+ ],
128
+ "count": 100
129
+ }
130
+ },
131
+ "execution_time": 1.2
132
+ }
133
+ ```
134
+
135
+ ### Error Response
136
+
137
+ ```json
138
+ {
139
+ "success": false,
140
+ "error": "Username is required",
141
+ "execution_time": 0.01
142
+ }
143
+ ```
144
+
145
+ ## Guidelines
146
+
147
+ 1. **Usernames**: Provide without the @ symbol (e.g., `elonmusk` not `@elonmusk`)
148
+ 2. **User IDs**: Use the numeric ID string
149
+ 3. **Rate limits**: Follower/following endpoints have lower rate limits
150
+ 4. **Max results**: Limited to 1000 per request for followers/following
151
+ 5. **Pagination**: For large accounts, results are paginated (first page returned)
152
+
153
+ ## Common Use Cases
154
+
155
+ - Get your own profile information
156
+ - Look up profiles of users you interact with
157
+ - Check if users are verified
158
+ - Analyze follower/following relationships
159
+ - Build lists of relevant accounts
160
+
161
+ ## Setup Requirements
162
+
163
+ 1. Connect the **Twitter User** node to an AI Agent's `input-tools` handle
164
+ 2. Ensure Twitter is connected (authenticated via OAuth in Credentials Modal)
165
+ 3. Your X Developer account must have appropriate API access level
@@ -0,0 +1,459 @@
1
+ {
2
+ "id": "workflow-1770568399727-b5zkjpuda",
3
+ "name": "Zeenie",
4
+ "nodes": [
5
+ {
6
+ "id": "chatAgent-1770207244010",
7
+ "type": "chatAgent",
8
+ "position": {
9
+ "x": 260,
10
+ "y": 180
11
+ },
12
+ "data": {
13
+ "label": "Zeenie"
14
+ },
15
+ "width": 260,
16
+ "height": 160,
17
+ "selected": false,
18
+ "positionAbsolute": {
19
+ "x": 260,
20
+ "y": 180
21
+ },
22
+ "dragging": false
23
+ },
24
+ {
25
+ "id": "chatTrigger-1770207686160",
26
+ "type": "chatTrigger",
27
+ "position": {
28
+ "x": -400,
29
+ "y": 260
30
+ },
31
+ "data": {
32
+ "label": "Chat Trigger"
33
+ },
34
+ "width": 67,
35
+ "height": 82,
36
+ "selected": false,
37
+ "positionAbsolute": {
38
+ "x": -400,
39
+ "y": 260
40
+ },
41
+ "dragging": false
42
+ },
43
+ {
44
+ "id": "console-1770207687094",
45
+ "type": "console",
46
+ "position": {
47
+ "x": 780,
48
+ "y": 300
49
+ },
50
+ "data": {
51
+ "label": "Console"
52
+ },
53
+ "width": 60,
54
+ "height": 82,
55
+ "selected": false,
56
+ "positionAbsolute": {
57
+ "x": 780,
58
+ "y": 300
59
+ },
60
+ "dragging": true
61
+ },
62
+ {
63
+ "id": "whatsappSend-1770207695172",
64
+ "type": "whatsappSend",
65
+ "position": {
66
+ "x": 760,
67
+ "y": 140
68
+ },
69
+ "data": {
70
+ "label": "WhatsApp Send"
71
+ },
72
+ "width": 87,
73
+ "height": 82,
74
+ "selected": false,
75
+ "positionAbsolute": {
76
+ "x": 760,
77
+ "y": 140
78
+ },
79
+ "dragging": false
80
+ },
81
+ {
82
+ "id": "whatsappReceive-1770207696316",
83
+ "type": "whatsappReceive",
84
+ "position": {
85
+ "x": -420,
86
+ "y": 140
87
+ },
88
+ "data": {
89
+ "label": "WhatsApp Receive"
90
+ },
91
+ "width": 101,
92
+ "height": 82,
93
+ "selected": false,
94
+ "positionAbsolute": {
95
+ "x": -420,
96
+ "y": 140
97
+ },
98
+ "dragging": true
99
+ },
100
+ {
101
+ "id": "whatsappDb-1770207697703",
102
+ "type": "whatsappDb",
103
+ "position": {
104
+ "x": 1460,
105
+ "y": 540
106
+ },
107
+ "data": {
108
+ "label": "WhatsApp DB"
109
+ },
110
+ "width": 76,
111
+ "height": 82,
112
+ "selected": false,
113
+ "positionAbsolute": {
114
+ "x": 1460,
115
+ "y": 540
116
+ },
117
+ "dragging": true
118
+ },
119
+ {
120
+ "id": "webSearchTool-1770207714722",
121
+ "type": "webSearchTool",
122
+ "position": {
123
+ "x": 640,
124
+ "y": 540
125
+ },
126
+ "data": {
127
+ "label": "Web Search Tool"
128
+ },
129
+ "width": 91,
130
+ "height": 82,
131
+ "selected": false,
132
+ "positionAbsolute": {
133
+ "x": 640,
134
+ "y": 540
135
+ },
136
+ "dragging": false
137
+ },
138
+ {
139
+ "id": "httpRequest-1770207725414",
140
+ "type": "httpRequest",
141
+ "position": {
142
+ "x": 760,
143
+ "y": 540
144
+ },
145
+ "data": {
146
+ "label": "HTTP Request"
147
+ },
148
+ "width": 76,
149
+ "height": 82,
150
+ "selected": false,
151
+ "positionAbsolute": {
152
+ "x": 760,
153
+ "y": 540
154
+ },
155
+ "dragging": false
156
+ },
157
+ {
158
+ "id": "gmaps_locations-1770207738763",
159
+ "type": "gmaps_locations",
160
+ "position": {
161
+ "x": 1180,
162
+ "y": 540
163
+ },
164
+ "data": {
165
+ "label": "GMaps Locations"
166
+ },
167
+ "width": 93,
168
+ "height": 82,
169
+ "selected": false,
170
+ "positionAbsolute": {
171
+ "x": 1180,
172
+ "y": 540
173
+ },
174
+ "dragging": false
175
+ },
176
+ {
177
+ "id": "gmaps_nearby_places-1770207740402",
178
+ "type": "gmaps_nearby_places",
179
+ "position": {
180
+ "x": 1300,
181
+ "y": 540
182
+ },
183
+ "data": {
184
+ "label": "GMaps Nearby Places"
185
+ },
186
+ "width": 118,
187
+ "height": 82,
188
+ "selected": false,
189
+ "positionAbsolute": {
190
+ "x": 1300,
191
+ "y": 540
192
+ },
193
+ "dragging": true
194
+ },
195
+ {
196
+ "id": "pythonExecutor-1770207749221",
197
+ "type": "pythonExecutor",
198
+ "position": {
199
+ "x": 1000,
200
+ "y": 540
201
+ },
202
+ "data": {
203
+ "label": "Python Executor"
204
+ },
205
+ "width": 89,
206
+ "height": 82,
207
+ "selected": false,
208
+ "positionAbsolute": {
209
+ "x": 1000,
210
+ "y": 540
211
+ },
212
+ "dragging": true
213
+ },
214
+ {
215
+ "id": "javascriptExecutor-1770207751142",
216
+ "type": "javascriptExecutor",
217
+ "position": {
218
+ "x": 860,
219
+ "y": 540
220
+ },
221
+ "data": {
222
+ "label": "JavaScript Executor"
223
+ },
224
+ "width": 105,
225
+ "height": 82,
226
+ "selected": false,
227
+ "positionAbsolute": {
228
+ "x": 860,
229
+ "y": 540
230
+ },
231
+ "dragging": false
232
+ },
233
+ {
234
+ "id": "masterSkill-1770207855144",
235
+ "type": "masterSkill",
236
+ "position": {
237
+ "x": 200,
238
+ "y": 540
239
+ },
240
+ "data": {
241
+ "label": "Master Skill"
242
+ },
243
+ "width": 63,
244
+ "height": 82,
245
+ "selected": false,
246
+ "positionAbsolute": {
247
+ "x": 200,
248
+ "y": 540
249
+ },
250
+ "dragging": false
251
+ },
252
+ {
253
+ "id": "simpleMemory-1770207943830",
254
+ "type": "simpleMemory",
255
+ "position": {
256
+ "x": 60,
257
+ "y": 540
258
+ },
259
+ "data": {
260
+ "label": "Simple Memory"
261
+ },
262
+ "width": 87,
263
+ "height": 82,
264
+ "selected": false,
265
+ "positionAbsolute": {
266
+ "x": 60,
267
+ "y": 540
268
+ },
269
+ "dragging": true
270
+ }
271
+ ],
272
+ "edges": [
273
+ {
274
+ "type": "smoothstep",
275
+ "animated": true,
276
+ "style": {
277
+ "stroke": "#8be9fd",
278
+ "strokeWidth": 3
279
+ },
280
+ "source": "chatTrigger-1770207686160",
281
+ "sourceHandle": "output-main",
282
+ "target": "chatAgent-1770207244010",
283
+ "targetHandle": "input-main",
284
+ "id": "reactflow__edge-chatTrigger-1770207686160output-main-chatAgent-1770207244010input-main",
285
+ "selected": false
286
+ },
287
+ {
288
+ "type": "smoothstep",
289
+ "animated": true,
290
+ "style": {
291
+ "stroke": "#8be9fd",
292
+ "strokeWidth": 3
293
+ },
294
+ "source": "whatsappReceive-1770207696316",
295
+ "sourceHandle": "output-main",
296
+ "target": "chatAgent-1770207244010",
297
+ "targetHandle": "input-main",
298
+ "id": "reactflow__edge-whatsappReceive-1770207696316output-main-chatAgent-1770207244010input-main",
299
+ "selected": false
300
+ },
301
+ {
302
+ "type": "smoothstep",
303
+ "animated": true,
304
+ "style": {
305
+ "stroke": "#8be9fd",
306
+ "strokeWidth": 3
307
+ },
308
+ "source": "masterSkill-1770207855144",
309
+ "sourceHandle": "output-main",
310
+ "target": "chatAgent-1770207244010",
311
+ "targetHandle": "input-skill",
312
+ "id": "reactflow__edge-masterSkill-1770207855144output-main-chatAgent-1770207244010input-skill",
313
+ "selected": false
314
+ },
315
+ {
316
+ "type": "smoothstep",
317
+ "animated": true,
318
+ "style": {
319
+ "stroke": "#8be9fd",
320
+ "strokeWidth": 3
321
+ },
322
+ "source": "simpleMemory-1770207943830",
323
+ "sourceHandle": "output-memory",
324
+ "target": "chatAgent-1770207244010",
325
+ "targetHandle": "input-memory",
326
+ "id": "reactflow__edge-simpleMemory-1770207943830output-memory-chatAgent-1770207244010input-memory",
327
+ "selected": false
328
+ },
329
+ {
330
+ "type": "smoothstep",
331
+ "animated": true,
332
+ "style": {
333
+ "stroke": "#8be9fd",
334
+ "strokeWidth": 3
335
+ },
336
+ "source": "httpRequest-1770207725414",
337
+ "sourceHandle": "output-tool",
338
+ "target": "chatAgent-1770207244010",
339
+ "targetHandle": "input-tools",
340
+ "id": "reactflow__edge-httpRequest-1770207725414output-tool-chatAgent-1770207244010input-tools",
341
+ "selected": false
342
+ },
343
+ {
344
+ "type": "smoothstep",
345
+ "animated": true,
346
+ "style": {
347
+ "stroke": "#8be9fd",
348
+ "strokeWidth": 3
349
+ },
350
+ "source": "javascriptExecutor-1770207751142",
351
+ "sourceHandle": "output-tool",
352
+ "target": "chatAgent-1770207244010",
353
+ "targetHandle": "input-tools",
354
+ "id": "reactflow__edge-javascriptExecutor-1770207751142output-tool-chatAgent-1770207244010input-tools",
355
+ "selected": false
356
+ },
357
+ {
358
+ "type": "smoothstep",
359
+ "animated": true,
360
+ "style": {
361
+ "stroke": "#8be9fd",
362
+ "strokeWidth": 3
363
+ },
364
+ "source": "webSearchTool-1770207714722",
365
+ "sourceHandle": "output-tool",
366
+ "target": "chatAgent-1770207244010",
367
+ "targetHandle": "input-tools",
368
+ "id": "reactflow__edge-webSearchTool-1770207714722output-tool-chatAgent-1770207244010input-tools",
369
+ "selected": false
370
+ },
371
+ {
372
+ "type": "smoothstep",
373
+ "animated": true,
374
+ "style": {
375
+ "stroke": "#8be9fd",
376
+ "strokeWidth": 3
377
+ },
378
+ "source": "pythonExecutor-1770207749221",
379
+ "sourceHandle": "output-tool",
380
+ "target": "chatAgent-1770207244010",
381
+ "targetHandle": "input-tools",
382
+ "id": "reactflow__edge-pythonExecutor-1770207749221output-tool-chatAgent-1770207244010input-tools",
383
+ "selected": false
384
+ },
385
+ {
386
+ "type": "smoothstep",
387
+ "animated": true,
388
+ "style": {
389
+ "stroke": "#8be9fd",
390
+ "strokeWidth": 3
391
+ },
392
+ "source": "gmaps_locations-1770207738763",
393
+ "sourceHandle": "output-tool",
394
+ "target": "chatAgent-1770207244010",
395
+ "targetHandle": "input-tools",
396
+ "id": "reactflow__edge-gmaps_locations-1770207738763output-tool-chatAgent-1770207244010input-tools",
397
+ "selected": false
398
+ },
399
+ {
400
+ "type": "smoothstep",
401
+ "animated": true,
402
+ "style": {
403
+ "stroke": "#8be9fd",
404
+ "strokeWidth": 3
405
+ },
406
+ "source": "gmaps_nearby_places-1770207740402",
407
+ "sourceHandle": "output-tool",
408
+ "target": "chatAgent-1770207244010",
409
+ "targetHandle": "input-tools",
410
+ "id": "reactflow__edge-gmaps_nearby_places-1770207740402output-tool-chatAgent-1770207244010input-tools",
411
+ "selected": false
412
+ },
413
+ {
414
+ "type": "smoothstep",
415
+ "animated": true,
416
+ "style": {
417
+ "stroke": "#8be9fd",
418
+ "strokeWidth": 3
419
+ },
420
+ "source": "whatsappDb-1770207697703",
421
+ "sourceHandle": "output-tool",
422
+ "target": "chatAgent-1770207244010",
423
+ "targetHandle": "input-tools",
424
+ "id": "reactflow__edge-whatsappDb-1770207697703output-tool-chatAgent-1770207244010input-tools",
425
+ "selected": false
426
+ },
427
+ {
428
+ "type": "smoothstep",
429
+ "animated": true,
430
+ "style": {
431
+ "stroke": "#8be9fd",
432
+ "strokeWidth": 3
433
+ },
434
+ "source": "chatAgent-1770207244010",
435
+ "sourceHandle": "output-main",
436
+ "target": "console-1770207687094",
437
+ "targetHandle": "input-main",
438
+ "id": "reactflow__edge-chatAgent-1770207244010output-main-console-1770207687094input-main",
439
+ "selected": false
440
+ },
441
+ {
442
+ "type": "smoothstep",
443
+ "animated": true,
444
+ "style": {
445
+ "stroke": "#8be9fd",
446
+ "strokeWidth": 3
447
+ },
448
+ "source": "chatAgent-1770207244010",
449
+ "sourceHandle": "output-main",
450
+ "target": "whatsappSend-1770207695172",
451
+ "targetHandle": "input-main",
452
+ "id": "reactflow__edge-chatAgent-1770207244010output-main-whatsappSend-1770207695172input-main",
453
+ "selected": false
454
+ }
455
+ ],
456
+ "createdAt": "2026-02-08T16:33:19.727Z",
457
+ "lastModified": "2026-02-08T16:35:36.239Z",
458
+ "version": "0.0.10"
459
+ }