machinaos 0.0.10 → 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/.env.template +16 -0
- package/client/package.json +1 -1
- package/client/src/Dashboard.tsx +3 -3
- package/client/src/components/AIAgentNode.tsx +24 -12
- package/client/src/components/OutputPanel.tsx +3 -2
- package/client/src/components/parameterPanel/InputSection.tsx +16 -3
- package/client/src/nodeDefinitions/aiAgentNodes.ts +12 -0
- package/client/src/nodeDefinitions/specializedAgentNodes.ts +68 -320
- package/client/src/nodeDefinitions/toolNodes.ts +87 -1
- package/client/src/nodeDefinitions/workflowNodes.ts +55 -1
- package/package.json +12 -3
- package/scripts/daemon.js +427 -0
- package/scripts/start.js +7 -1
- package/scripts/sync-version.js +108 -0
- package/server/Dockerfile +6 -7
- package/server/constants.py +2 -0
- package/server/core/cleanup.py +123 -0
- package/server/core/config.py +16 -0
- package/server/core/database.py +92 -1
- package/server/core/health.py +121 -0
- package/server/examples/__init__.py +1 -0
- package/server/gunicorn.conf.py +46 -0
- package/server/main.py +38 -3
- package/server/models/database.py +1 -0
- package/server/models/nodes.py +18 -2
- package/server/requirements-docker.txt +86 -0
- package/server/routers/database.py +16 -0
- package/server/routers/websocket.py +6 -5
- package/server/services/ai.py +115 -14
- package/server/services/auth.py +6 -1
- package/server/services/deployment/manager.py +14 -0
- package/server/services/event_waiter.py +55 -0
- package/server/services/example_loader.py +60 -0
- package/server/services/execution/executor.py +2 -0
- package/server/services/execution/models.py +8 -0
- package/server/services/handlers/__init__.py +2 -0
- package/server/services/handlers/ai.py +164 -11
- package/server/services/handlers/document.py +13 -4
- package/server/services/handlers/tools.py +445 -14
- package/server/services/node_executor.py +3 -0
- package/server/services/temporal/activities.py +3 -0
- package/server/services/workflow.py +2 -0
- 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 +205 -0
- 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
|
@@ -6,6 +6,54 @@ import {
|
|
|
6
6
|
} from '../types/INodeProperties';
|
|
7
7
|
import { dracula } from '../styles/theme';
|
|
8
8
|
|
|
9
|
+
// ============================================================================
|
|
10
|
+
// SHARED AI AGENT INPUTS - Used by Specialized Agent Nodes
|
|
11
|
+
// ============================================================================
|
|
12
|
+
|
|
13
|
+
// Inputs shared by AI Agent and all Specialized Agent nodes
|
|
14
|
+
export const AI_AGENT_INPUTS = [
|
|
15
|
+
{
|
|
16
|
+
name: 'main',
|
|
17
|
+
displayName: 'Input',
|
|
18
|
+
type: 'main' as NodeConnectionType,
|
|
19
|
+
description: 'Agent input'
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
name: 'skill',
|
|
23
|
+
displayName: 'Skill',
|
|
24
|
+
type: 'main' as NodeConnectionType,
|
|
25
|
+
description: 'Skill nodes that provide context and instructions'
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
name: 'memory',
|
|
29
|
+
displayName: 'Memory',
|
|
30
|
+
type: 'main' as NodeConnectionType,
|
|
31
|
+
description: 'Memory node for conversation history'
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
name: 'tools',
|
|
35
|
+
displayName: 'Tool',
|
|
36
|
+
type: 'main' as NodeConnectionType,
|
|
37
|
+
description: 'Tool nodes for agent capabilities'
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
name: 'task',
|
|
41
|
+
displayName: 'Task',
|
|
42
|
+
type: 'main' as NodeConnectionType,
|
|
43
|
+
description: 'Task completion events from taskTrigger'
|
|
44
|
+
}
|
|
45
|
+
];
|
|
46
|
+
|
|
47
|
+
// Outputs shared by AI Agent and all Specialized Agent nodes
|
|
48
|
+
export const AI_AGENT_OUTPUTS = [
|
|
49
|
+
{
|
|
50
|
+
name: 'main',
|
|
51
|
+
displayName: 'Output',
|
|
52
|
+
type: 'main' as NodeConnectionType,
|
|
53
|
+
description: 'Agent output'
|
|
54
|
+
}
|
|
55
|
+
];
|
|
56
|
+
|
|
9
57
|
// ============================================================================
|
|
10
58
|
// SHARED AI AGENT PROPERTIES - Used by Specialized Agent Nodes
|
|
11
59
|
// ============================================================================
|
|
@@ -128,38 +176,8 @@ export const specializedAgentNodes: Record<string, INodeTypeDescription> = {
|
|
|
128
176
|
subtitle: 'Device Control',
|
|
129
177
|
description: 'AI Agent specialized for Android device control. Connect skills, memory, and tool nodes to enable Android automation capabilities.',
|
|
130
178
|
defaults: { name: 'Android Control Agent', color: dracula.green },
|
|
131
|
-
inputs:
|
|
132
|
-
|
|
133
|
-
name: 'main',
|
|
134
|
-
displayName: 'Input',
|
|
135
|
-
type: 'main' as NodeConnectionType,
|
|
136
|
-
description: 'Agent input'
|
|
137
|
-
},
|
|
138
|
-
{
|
|
139
|
-
name: 'skill',
|
|
140
|
-
displayName: 'Skill',
|
|
141
|
-
type: 'main' as NodeConnectionType,
|
|
142
|
-
description: 'Skill nodes that provide context and instructions'
|
|
143
|
-
},
|
|
144
|
-
{
|
|
145
|
-
name: 'memory',
|
|
146
|
-
displayName: 'Memory',
|
|
147
|
-
type: 'main' as NodeConnectionType,
|
|
148
|
-
description: 'Memory node for conversation history'
|
|
149
|
-
},
|
|
150
|
-
{
|
|
151
|
-
name: 'tools',
|
|
152
|
-
displayName: 'Tool',
|
|
153
|
-
type: 'main' as NodeConnectionType,
|
|
154
|
-
description: 'Tool nodes for Android device operations'
|
|
155
|
-
}
|
|
156
|
-
],
|
|
157
|
-
outputs: [{
|
|
158
|
-
name: 'main',
|
|
159
|
-
displayName: 'Output',
|
|
160
|
-
type: 'main' as NodeConnectionType,
|
|
161
|
-
description: 'Agent output'
|
|
162
|
-
}],
|
|
179
|
+
inputs: AI_AGENT_INPUTS,
|
|
180
|
+
outputs: AI_AGENT_OUTPUTS,
|
|
163
181
|
properties: AI_AGENT_PROPERTIES
|
|
164
182
|
},
|
|
165
183
|
|
|
@@ -173,38 +191,8 @@ export const specializedAgentNodes: Record<string, INodeTypeDescription> = {
|
|
|
173
191
|
subtitle: 'Code Execution',
|
|
174
192
|
description: 'AI Agent specialized for code execution. Connect skills, memory, and code executor nodes to enable coding capabilities.',
|
|
175
193
|
defaults: { name: 'Coding Agent', color: dracula.cyan },
|
|
176
|
-
inputs:
|
|
177
|
-
|
|
178
|
-
name: 'main',
|
|
179
|
-
displayName: 'Input',
|
|
180
|
-
type: 'main' as NodeConnectionType,
|
|
181
|
-
description: 'Agent input'
|
|
182
|
-
},
|
|
183
|
-
{
|
|
184
|
-
name: 'skill',
|
|
185
|
-
displayName: 'Skill',
|
|
186
|
-
type: 'main' as NodeConnectionType,
|
|
187
|
-
description: 'Skill nodes that provide context and instructions'
|
|
188
|
-
},
|
|
189
|
-
{
|
|
190
|
-
name: 'memory',
|
|
191
|
-
displayName: 'Memory',
|
|
192
|
-
type: 'main' as NodeConnectionType,
|
|
193
|
-
description: 'Memory node for conversation history'
|
|
194
|
-
},
|
|
195
|
-
{
|
|
196
|
-
name: 'tools',
|
|
197
|
-
displayName: 'Tool',
|
|
198
|
-
type: 'main' as NodeConnectionType,
|
|
199
|
-
description: 'Code executor nodes (Python, JavaScript, etc.)'
|
|
200
|
-
}
|
|
201
|
-
],
|
|
202
|
-
outputs: [{
|
|
203
|
-
name: 'main',
|
|
204
|
-
displayName: 'Output',
|
|
205
|
-
type: 'main' as NodeConnectionType,
|
|
206
|
-
description: 'Agent output'
|
|
207
|
-
}],
|
|
194
|
+
inputs: AI_AGENT_INPUTS,
|
|
195
|
+
outputs: AI_AGENT_OUTPUTS,
|
|
208
196
|
properties: AI_AGENT_PROPERTIES
|
|
209
197
|
},
|
|
210
198
|
|
|
@@ -218,38 +206,8 @@ export const specializedAgentNodes: Record<string, INodeTypeDescription> = {
|
|
|
218
206
|
subtitle: 'Browser Automation',
|
|
219
207
|
description: 'AI Agent specialized for web automation. Connect skills, memory, and web control nodes to enable browser automation and HTTP capabilities.',
|
|
220
208
|
defaults: { name: 'Web Control Agent', color: dracula.pink },
|
|
221
|
-
inputs:
|
|
222
|
-
|
|
223
|
-
name: 'main',
|
|
224
|
-
displayName: 'Input',
|
|
225
|
-
type: 'main' as NodeConnectionType,
|
|
226
|
-
description: 'Agent input'
|
|
227
|
-
},
|
|
228
|
-
{
|
|
229
|
-
name: 'skill',
|
|
230
|
-
displayName: 'Skill',
|
|
231
|
-
type: 'main' as NodeConnectionType,
|
|
232
|
-
description: 'Skill nodes that provide context and instructions'
|
|
233
|
-
},
|
|
234
|
-
{
|
|
235
|
-
name: 'memory',
|
|
236
|
-
displayName: 'Memory',
|
|
237
|
-
type: 'main' as NodeConnectionType,
|
|
238
|
-
description: 'Memory node for conversation history'
|
|
239
|
-
},
|
|
240
|
-
{
|
|
241
|
-
name: 'tools',
|
|
242
|
-
displayName: 'Tool',
|
|
243
|
-
type: 'main' as NodeConnectionType,
|
|
244
|
-
description: 'Web control nodes (browser, scraper, HTTP, etc.)'
|
|
245
|
-
}
|
|
246
|
-
],
|
|
247
|
-
outputs: [{
|
|
248
|
-
name: 'main',
|
|
249
|
-
displayName: 'Output',
|
|
250
|
-
type: 'main' as NodeConnectionType,
|
|
251
|
-
description: 'Agent output'
|
|
252
|
-
}],
|
|
209
|
+
inputs: AI_AGENT_INPUTS,
|
|
210
|
+
outputs: AI_AGENT_OUTPUTS,
|
|
253
211
|
properties: AI_AGENT_PROPERTIES
|
|
254
212
|
},
|
|
255
213
|
|
|
@@ -263,38 +221,8 @@ export const specializedAgentNodes: Record<string, INodeTypeDescription> = {
|
|
|
263
221
|
subtitle: 'Task Automation',
|
|
264
222
|
description: 'AI Agent specialized for task management. Connect skills, memory, and task nodes to enable scheduling and reminder capabilities.',
|
|
265
223
|
defaults: { name: 'Task Management Agent', color: dracula.purple },
|
|
266
|
-
inputs:
|
|
267
|
-
|
|
268
|
-
name: 'main',
|
|
269
|
-
displayName: 'Input',
|
|
270
|
-
type: 'main' as NodeConnectionType,
|
|
271
|
-
description: 'Agent input'
|
|
272
|
-
},
|
|
273
|
-
{
|
|
274
|
-
name: 'skill',
|
|
275
|
-
displayName: 'Skill',
|
|
276
|
-
type: 'main' as NodeConnectionType,
|
|
277
|
-
description: 'Skill nodes that provide context and instructions'
|
|
278
|
-
},
|
|
279
|
-
{
|
|
280
|
-
name: 'memory',
|
|
281
|
-
displayName: 'Memory',
|
|
282
|
-
type: 'main' as NodeConnectionType,
|
|
283
|
-
description: 'Memory node for conversation history'
|
|
284
|
-
},
|
|
285
|
-
{
|
|
286
|
-
name: 'tools',
|
|
287
|
-
displayName: 'Tool',
|
|
288
|
-
type: 'main' as NodeConnectionType,
|
|
289
|
-
description: 'Task management nodes (scheduler, reminders, etc.)'
|
|
290
|
-
}
|
|
291
|
-
],
|
|
292
|
-
outputs: [{
|
|
293
|
-
name: 'main',
|
|
294
|
-
displayName: 'Output',
|
|
295
|
-
type: 'main' as NodeConnectionType,
|
|
296
|
-
description: 'Agent output'
|
|
297
|
-
}],
|
|
224
|
+
inputs: AI_AGENT_INPUTS,
|
|
225
|
+
outputs: AI_AGENT_OUTPUTS,
|
|
298
226
|
properties: AI_AGENT_PROPERTIES
|
|
299
227
|
},
|
|
300
228
|
|
|
@@ -308,38 +236,8 @@ export const specializedAgentNodes: Record<string, INodeTypeDescription> = {
|
|
|
308
236
|
subtitle: 'Social Messaging',
|
|
309
237
|
description: 'AI Agent specialized for social media. Connect skills, memory, and messaging nodes to enable WhatsApp, Telegram, and other social capabilities.',
|
|
310
238
|
defaults: { name: 'Social Media Agent', color: dracula.green },
|
|
311
|
-
inputs:
|
|
312
|
-
|
|
313
|
-
name: 'main',
|
|
314
|
-
displayName: 'Input',
|
|
315
|
-
type: 'main' as NodeConnectionType,
|
|
316
|
-
description: 'Agent input'
|
|
317
|
-
},
|
|
318
|
-
{
|
|
319
|
-
name: 'skill',
|
|
320
|
-
displayName: 'Skill',
|
|
321
|
-
type: 'main' as NodeConnectionType,
|
|
322
|
-
description: 'Skill nodes that provide context and instructions'
|
|
323
|
-
},
|
|
324
|
-
{
|
|
325
|
-
name: 'memory',
|
|
326
|
-
displayName: 'Memory',
|
|
327
|
-
type: 'main' as NodeConnectionType,
|
|
328
|
-
description: 'Memory node for conversation history'
|
|
329
|
-
},
|
|
330
|
-
{
|
|
331
|
-
name: 'tools',
|
|
332
|
-
displayName: 'Tool',
|
|
333
|
-
type: 'main' as NodeConnectionType,
|
|
334
|
-
description: 'Social media nodes (WhatsApp, Telegram, etc.)'
|
|
335
|
-
}
|
|
336
|
-
],
|
|
337
|
-
outputs: [{
|
|
338
|
-
name: 'main',
|
|
339
|
-
displayName: 'Output',
|
|
340
|
-
type: 'main' as NodeConnectionType,
|
|
341
|
-
description: 'Agent output'
|
|
342
|
-
}],
|
|
239
|
+
inputs: AI_AGENT_INPUTS,
|
|
240
|
+
outputs: AI_AGENT_OUTPUTS,
|
|
343
241
|
properties: AI_AGENT_PROPERTIES
|
|
344
242
|
},
|
|
345
243
|
|
|
@@ -353,38 +251,8 @@ export const specializedAgentNodes: Record<string, INodeTypeDescription> = {
|
|
|
353
251
|
subtitle: 'Travel Planning',
|
|
354
252
|
description: 'AI Agent specialized for travel planning. Connect skills, memory, and tool nodes to enable itinerary building, location lookups, and travel recommendations.',
|
|
355
253
|
defaults: { name: 'Travel Agent', color: dracula.orange },
|
|
356
|
-
inputs:
|
|
357
|
-
|
|
358
|
-
name: 'main',
|
|
359
|
-
displayName: 'Input',
|
|
360
|
-
type: 'main' as NodeConnectionType,
|
|
361
|
-
description: 'Agent input'
|
|
362
|
-
},
|
|
363
|
-
{
|
|
364
|
-
name: 'skill',
|
|
365
|
-
displayName: 'Skill',
|
|
366
|
-
type: 'main' as NodeConnectionType,
|
|
367
|
-
description: 'Skill nodes that provide context and instructions'
|
|
368
|
-
},
|
|
369
|
-
{
|
|
370
|
-
name: 'memory',
|
|
371
|
-
displayName: 'Memory',
|
|
372
|
-
type: 'main' as NodeConnectionType,
|
|
373
|
-
description: 'Memory node for conversation history'
|
|
374
|
-
},
|
|
375
|
-
{
|
|
376
|
-
name: 'tools',
|
|
377
|
-
displayName: 'Tool',
|
|
378
|
-
type: 'main' as NodeConnectionType,
|
|
379
|
-
description: 'Tool nodes for travel planning (maps, HTTP, search, etc.)'
|
|
380
|
-
}
|
|
381
|
-
],
|
|
382
|
-
outputs: [{
|
|
383
|
-
name: 'main',
|
|
384
|
-
displayName: 'Output',
|
|
385
|
-
type: 'main' as NodeConnectionType,
|
|
386
|
-
description: 'Agent output'
|
|
387
|
-
}],
|
|
254
|
+
inputs: AI_AGENT_INPUTS,
|
|
255
|
+
outputs: AI_AGENT_OUTPUTS,
|
|
388
256
|
properties: AI_AGENT_PROPERTIES
|
|
389
257
|
},
|
|
390
258
|
|
|
@@ -398,38 +266,8 @@ export const specializedAgentNodes: Record<string, INodeTypeDescription> = {
|
|
|
398
266
|
subtitle: 'Tool Orchestration',
|
|
399
267
|
description: 'AI Agent specialized for tool orchestration. Connect skills, memory, and multiple tool nodes to enable multi-tool workflows and complex task execution.',
|
|
400
268
|
defaults: { name: 'Tool Agent', color: dracula.yellow },
|
|
401
|
-
inputs:
|
|
402
|
-
|
|
403
|
-
name: 'main',
|
|
404
|
-
displayName: 'Input',
|
|
405
|
-
type: 'main' as NodeConnectionType,
|
|
406
|
-
description: 'Agent input'
|
|
407
|
-
},
|
|
408
|
-
{
|
|
409
|
-
name: 'skill',
|
|
410
|
-
displayName: 'Skill',
|
|
411
|
-
type: 'main' as NodeConnectionType,
|
|
412
|
-
description: 'Skill nodes that provide context and instructions'
|
|
413
|
-
},
|
|
414
|
-
{
|
|
415
|
-
name: 'memory',
|
|
416
|
-
displayName: 'Memory',
|
|
417
|
-
type: 'main' as NodeConnectionType,
|
|
418
|
-
description: 'Memory node for conversation history'
|
|
419
|
-
},
|
|
420
|
-
{
|
|
421
|
-
name: 'tools',
|
|
422
|
-
displayName: 'Tool',
|
|
423
|
-
type: 'main' as NodeConnectionType,
|
|
424
|
-
description: 'Tool nodes to orchestrate (calculators, HTTP, search, code, etc.)'
|
|
425
|
-
}
|
|
426
|
-
],
|
|
427
|
-
outputs: [{
|
|
428
|
-
name: 'main',
|
|
429
|
-
displayName: 'Output',
|
|
430
|
-
type: 'main' as NodeConnectionType,
|
|
431
|
-
description: 'Agent output'
|
|
432
|
-
}],
|
|
269
|
+
inputs: AI_AGENT_INPUTS,
|
|
270
|
+
outputs: AI_AGENT_OUTPUTS,
|
|
433
271
|
properties: AI_AGENT_PROPERTIES
|
|
434
272
|
},
|
|
435
273
|
|
|
@@ -443,38 +281,8 @@ export const specializedAgentNodes: Record<string, INodeTypeDescription> = {
|
|
|
443
281
|
subtitle: 'Productivity',
|
|
444
282
|
description: 'AI Agent specialized for productivity. Connect skills, memory, and tool nodes to enable scheduling, reminders, note-taking, and workflow automation.',
|
|
445
283
|
defaults: { name: 'Productivity Agent', color: dracula.cyan },
|
|
446
|
-
inputs:
|
|
447
|
-
|
|
448
|
-
name: 'main',
|
|
449
|
-
displayName: 'Input',
|
|
450
|
-
type: 'main' as NodeConnectionType,
|
|
451
|
-
description: 'Agent input'
|
|
452
|
-
},
|
|
453
|
-
{
|
|
454
|
-
name: 'skill',
|
|
455
|
-
displayName: 'Skill',
|
|
456
|
-
type: 'main' as NodeConnectionType,
|
|
457
|
-
description: 'Skill nodes that provide context and instructions'
|
|
458
|
-
},
|
|
459
|
-
{
|
|
460
|
-
name: 'memory',
|
|
461
|
-
displayName: 'Memory',
|
|
462
|
-
type: 'main' as NodeConnectionType,
|
|
463
|
-
description: 'Memory node for conversation history'
|
|
464
|
-
},
|
|
465
|
-
{
|
|
466
|
-
name: 'tools',
|
|
467
|
-
displayName: 'Tool',
|
|
468
|
-
type: 'main' as NodeConnectionType,
|
|
469
|
-
description: 'Tool nodes for productivity (scheduler, HTTP, code, etc.)'
|
|
470
|
-
}
|
|
471
|
-
],
|
|
472
|
-
outputs: [{
|
|
473
|
-
name: 'main',
|
|
474
|
-
displayName: 'Output',
|
|
475
|
-
type: 'main' as NodeConnectionType,
|
|
476
|
-
description: 'Agent output'
|
|
477
|
-
}],
|
|
284
|
+
inputs: AI_AGENT_INPUTS,
|
|
285
|
+
outputs: AI_AGENT_OUTPUTS,
|
|
478
286
|
properties: AI_AGENT_PROPERTIES
|
|
479
287
|
},
|
|
480
288
|
|
|
@@ -488,38 +296,8 @@ export const specializedAgentNodes: Record<string, INodeTypeDescription> = {
|
|
|
488
296
|
subtitle: 'Payment Processing',
|
|
489
297
|
description: 'AI Agent specialized for payment processing. Connect skills, memory, and tool nodes to enable payment workflows, invoice generation, and financial operations.',
|
|
490
298
|
defaults: { name: 'Payments Agent', color: dracula.green },
|
|
491
|
-
inputs:
|
|
492
|
-
|
|
493
|
-
name: 'main',
|
|
494
|
-
displayName: 'Input',
|
|
495
|
-
type: 'main' as NodeConnectionType,
|
|
496
|
-
description: 'Agent input'
|
|
497
|
-
},
|
|
498
|
-
{
|
|
499
|
-
name: 'skill',
|
|
500
|
-
displayName: 'Skill',
|
|
501
|
-
type: 'main' as NodeConnectionType,
|
|
502
|
-
description: 'Skill nodes that provide context and instructions'
|
|
503
|
-
},
|
|
504
|
-
{
|
|
505
|
-
name: 'memory',
|
|
506
|
-
displayName: 'Memory',
|
|
507
|
-
type: 'main' as NodeConnectionType,
|
|
508
|
-
description: 'Memory node for conversation history'
|
|
509
|
-
},
|
|
510
|
-
{
|
|
511
|
-
name: 'tools',
|
|
512
|
-
displayName: 'Tool',
|
|
513
|
-
type: 'main' as NodeConnectionType,
|
|
514
|
-
description: 'Tool nodes for payment processing (HTTP, code, etc.)'
|
|
515
|
-
}
|
|
516
|
-
],
|
|
517
|
-
outputs: [{
|
|
518
|
-
name: 'main',
|
|
519
|
-
displayName: 'Output',
|
|
520
|
-
type: 'main' as NodeConnectionType,
|
|
521
|
-
description: 'Agent output'
|
|
522
|
-
}],
|
|
299
|
+
inputs: AI_AGENT_INPUTS,
|
|
300
|
+
outputs: AI_AGENT_OUTPUTS,
|
|
523
301
|
properties: AI_AGENT_PROPERTIES
|
|
524
302
|
},
|
|
525
303
|
|
|
@@ -533,38 +311,8 @@ export const specializedAgentNodes: Record<string, INodeTypeDescription> = {
|
|
|
533
311
|
subtitle: 'Consumer Support',
|
|
534
312
|
description: 'AI Agent specialized for consumer interactions. Connect skills, memory, and tool nodes to enable customer support, product recommendations, and order management.',
|
|
535
313
|
defaults: { name: 'Consumer Agent', color: dracula.purple },
|
|
536
|
-
inputs:
|
|
537
|
-
|
|
538
|
-
name: 'main',
|
|
539
|
-
displayName: 'Input',
|
|
540
|
-
type: 'main' as NodeConnectionType,
|
|
541
|
-
description: 'Agent input'
|
|
542
|
-
},
|
|
543
|
-
{
|
|
544
|
-
name: 'skill',
|
|
545
|
-
displayName: 'Skill',
|
|
546
|
-
type: 'main' as NodeConnectionType,
|
|
547
|
-
description: 'Skill nodes that provide context and instructions'
|
|
548
|
-
},
|
|
549
|
-
{
|
|
550
|
-
name: 'memory',
|
|
551
|
-
displayName: 'Memory',
|
|
552
|
-
type: 'main' as NodeConnectionType,
|
|
553
|
-
description: 'Memory node for conversation history'
|
|
554
|
-
},
|
|
555
|
-
{
|
|
556
|
-
name: 'tools',
|
|
557
|
-
displayName: 'Tool',
|
|
558
|
-
type: 'main' as NodeConnectionType,
|
|
559
|
-
description: 'Tool nodes for consumer operations (HTTP, search, code, etc.)'
|
|
560
|
-
}
|
|
561
|
-
],
|
|
562
|
-
outputs: [{
|
|
563
|
-
name: 'main',
|
|
564
|
-
displayName: 'Output',
|
|
565
|
-
type: 'main' as NodeConnectionType,
|
|
566
|
-
description: 'Agent output'
|
|
567
|
-
}],
|
|
314
|
+
inputs: AI_AGENT_INPUTS,
|
|
315
|
+
outputs: AI_AGENT_OUTPUTS,
|
|
568
316
|
properties: AI_AGENT_PROPERTIES
|
|
569
317
|
}
|
|
570
318
|
};
|
|
@@ -158,6 +158,92 @@ export const toolNodes: Record<string, INodeTypeDescription> = {
|
|
|
158
158
|
description: 'Maximum number of results to return'
|
|
159
159
|
}
|
|
160
160
|
]
|
|
161
|
+
},
|
|
162
|
+
|
|
163
|
+
// Task Manager Tool - allows AI Agent to track and manage delegated tasks
|
|
164
|
+
taskManager: {
|
|
165
|
+
displayName: 'Task Manager',
|
|
166
|
+
name: 'taskManager',
|
|
167
|
+
icon: '📋',
|
|
168
|
+
group: ['tool', 'ai'],
|
|
169
|
+
version: 1,
|
|
170
|
+
subtitle: 'Track Delegated Tasks',
|
|
171
|
+
description: 'Manage and track delegated sub-agent tasks. Works as AI tool OR standalone workflow node.',
|
|
172
|
+
defaults: { name: 'Task Manager', color: '#8B5CF6' },
|
|
173
|
+
inputs: [],
|
|
174
|
+
outputs: [
|
|
175
|
+
{
|
|
176
|
+
name: 'tool',
|
|
177
|
+
displayName: 'Tool',
|
|
178
|
+
type: 'main' as NodeConnectionType,
|
|
179
|
+
description: 'Connect to AI Agent tool handle'
|
|
180
|
+
},
|
|
181
|
+
{
|
|
182
|
+
name: 'main',
|
|
183
|
+
displayName: 'Output',
|
|
184
|
+
type: 'main' as NodeConnectionType,
|
|
185
|
+
description: 'Task list output for workflow use'
|
|
186
|
+
}
|
|
187
|
+
],
|
|
188
|
+
properties: [
|
|
189
|
+
{
|
|
190
|
+
displayName: 'Tool Name',
|
|
191
|
+
name: 'toolName',
|
|
192
|
+
type: 'string',
|
|
193
|
+
default: 'task_manager',
|
|
194
|
+
description: 'Name visible to the AI agent'
|
|
195
|
+
},
|
|
196
|
+
{
|
|
197
|
+
displayName: 'Tool Description',
|
|
198
|
+
name: 'toolDescription',
|
|
199
|
+
type: 'string',
|
|
200
|
+
default: 'Manage delegated tasks - list active/completed tasks, check task status, mark tasks done',
|
|
201
|
+
typeOptions: { rows: 2 },
|
|
202
|
+
description: 'Description for the AI agent'
|
|
203
|
+
},
|
|
204
|
+
{
|
|
205
|
+
displayName: 'Operation',
|
|
206
|
+
name: 'operation',
|
|
207
|
+
type: 'options',
|
|
208
|
+
options: [
|
|
209
|
+
{ name: 'List Tasks', value: 'list_tasks' },
|
|
210
|
+
{ name: 'Get Task', value: 'get_task' },
|
|
211
|
+
{ name: 'Mark Done', value: 'mark_done' }
|
|
212
|
+
],
|
|
213
|
+
default: 'list_tasks',
|
|
214
|
+
description: 'Operation to perform when run as workflow node'
|
|
215
|
+
},
|
|
216
|
+
{
|
|
217
|
+
displayName: 'Task ID',
|
|
218
|
+
name: 'task_id',
|
|
219
|
+
type: 'string',
|
|
220
|
+
default: '',
|
|
221
|
+
description: 'Task ID for get_task/mark_done operations',
|
|
222
|
+
displayOptions: {
|
|
223
|
+
show: {
|
|
224
|
+
operation: ['get_task', 'mark_done']
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
},
|
|
228
|
+
{
|
|
229
|
+
displayName: 'Status Filter',
|
|
230
|
+
name: 'status_filter',
|
|
231
|
+
type: 'options',
|
|
232
|
+
options: [
|
|
233
|
+
{ name: 'All', value: '' },
|
|
234
|
+
{ name: 'Running', value: 'running' },
|
|
235
|
+
{ name: 'Completed', value: 'completed' },
|
|
236
|
+
{ name: 'Error', value: 'error' }
|
|
237
|
+
],
|
|
238
|
+
default: '',
|
|
239
|
+
description: 'Filter tasks by status',
|
|
240
|
+
displayOptions: {
|
|
241
|
+
show: {
|
|
242
|
+
operation: ['list_tasks']
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
]
|
|
161
247
|
}
|
|
162
248
|
};
|
|
163
249
|
|
|
@@ -166,4 +252,4 @@ export const toolNodes: Record<string, INodeTypeDescription> = {
|
|
|
166
252
|
// ============================================================================
|
|
167
253
|
|
|
168
254
|
// List of tool node types for identification
|
|
169
|
-
export const TOOL_NODE_TYPES = ['calculatorTool', 'currentTimeTool', 'webSearchTool'];
|
|
255
|
+
export const TOOL_NODE_TYPES = ['calculatorTool', 'currentTimeTool', 'webSearchTool', 'taskManager'];
|
|
@@ -35,7 +35,61 @@ export const workflowNodes: Record<string, INodeTypeDescription> = {
|
|
|
35
35
|
placeholder: '{\n "message": "Hello World",\n "value": 123\n}'
|
|
36
36
|
}
|
|
37
37
|
]
|
|
38
|
+
},
|
|
39
|
+
|
|
40
|
+
// Task Trigger - Event-driven trigger for child agent completion
|
|
41
|
+
taskTrigger: {
|
|
42
|
+
displayName: 'Task Completed',
|
|
43
|
+
name: 'taskTrigger',
|
|
44
|
+
icon: '📨',
|
|
45
|
+
group: ['trigger', 'workflow'],
|
|
46
|
+
version: 1,
|
|
47
|
+
subtitle: 'Child Agent Completed',
|
|
48
|
+
description: 'Triggers when a delegated child agent completes its task (success or error)',
|
|
49
|
+
defaults: { name: 'Task Completed', color: '#bd93f9' },
|
|
50
|
+
inputs: [],
|
|
51
|
+
outputs: [{
|
|
52
|
+
name: 'main',
|
|
53
|
+
displayName: 'Output',
|
|
54
|
+
type: 'main' as NodeConnectionType,
|
|
55
|
+
description: 'task_id, status, agent_name, result/error, parent_node_id'
|
|
56
|
+
}],
|
|
57
|
+
properties: [
|
|
58
|
+
{
|
|
59
|
+
displayName: 'Task ID Filter',
|
|
60
|
+
name: 'task_id',
|
|
61
|
+
type: 'string',
|
|
62
|
+
default: '',
|
|
63
|
+
description: 'Optional: Only trigger for specific task ID'
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
displayName: 'Agent Name Filter',
|
|
67
|
+
name: 'agent_name',
|
|
68
|
+
type: 'string',
|
|
69
|
+
default: '',
|
|
70
|
+
description: 'Optional: Only trigger for agents containing this name'
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
displayName: 'Status Filter',
|
|
74
|
+
name: 'status_filter',
|
|
75
|
+
type: 'options',
|
|
76
|
+
default: 'all',
|
|
77
|
+
options: [
|
|
78
|
+
{ name: 'All', value: 'all' },
|
|
79
|
+
{ name: 'Completed Only', value: 'completed' },
|
|
80
|
+
{ name: 'Errors Only', value: 'error' }
|
|
81
|
+
],
|
|
82
|
+
description: 'Filter by completion status'
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
displayName: 'Parent Node ID',
|
|
86
|
+
name: 'parent_node_id',
|
|
87
|
+
type: 'string',
|
|
88
|
+
default: '',
|
|
89
|
+
description: 'Optional: Only trigger for delegations from specific parent agent'
|
|
90
|
+
}
|
|
91
|
+
]
|
|
38
92
|
}
|
|
39
93
|
};
|
|
40
94
|
|
|
41
|
-
export const WORKFLOW_NODE_TYPES = ['start'];
|
|
95
|
+
export const WORKFLOW_NODE_TYPES = ['start', 'taskTrigger'];
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "machinaos",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.13",
|
|
4
4
|
"description": "Open source workflow automation platform with AI agents, React Flow, and n8n-inspired architecture",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"keywords": [
|
|
@@ -60,9 +60,11 @@
|
|
|
60
60
|
],
|
|
61
61
|
"scripts": {
|
|
62
62
|
"start": "node scripts/start.js",
|
|
63
|
+
"start:daemon": "node scripts/start.js --daemon",
|
|
63
64
|
"start:temporal": "cross-env TEMPORAL_ENABLED=true node scripts/start.js",
|
|
64
65
|
"client:start": "cd client && npm run start",
|
|
65
66
|
"python:start": "cd server && uv run uvicorn main:app --host 127.0.0.1 --port 3010 --reload --reload-dir . --reload-exclude \"*.pyc\" --reload-exclude \"__pycache__\" --log-level warning",
|
|
67
|
+
"python:daemon": "cd server && uv run gunicorn main:app -c gunicorn.conf.py",
|
|
66
68
|
"temporal:worker": "cd server && uv run python -m services.temporal.worker",
|
|
67
69
|
"whatsapp:start": "whatsapp-rpc start",
|
|
68
70
|
"whatsapp:stop": "whatsapp-rpc stop",
|
|
@@ -82,11 +84,18 @@
|
|
|
82
84
|
"docker:prod:logs": "docker-compose -f docker-compose.prod.yml logs -f",
|
|
83
85
|
"deploy": "bash deploy.sh",
|
|
84
86
|
"deploy:gcp": "bash deploy.sh",
|
|
85
|
-
"
|
|
87
|
+
"daemon:install": "node scripts/daemon.js install",
|
|
88
|
+
"daemon:uninstall": "node scripts/daemon.js uninstall",
|
|
89
|
+
"daemon:status": "node scripts/daemon.js status",
|
|
90
|
+
"daemon:start": "node scripts/daemon.js start",
|
|
91
|
+
"daemon:stop": "node scripts/daemon.js stop",
|
|
92
|
+
"daemon:restart": "node scripts/daemon.js restart",
|
|
93
|
+
"version:sync": "node scripts/sync-version.js",
|
|
94
|
+
"prepublishOnly": "node scripts/sync-version.js && node -e \"const p=require('./package.json'); if(!p.bin||!p.version){process.exit(1)}\"",
|
|
86
95
|
"postinstall": "node scripts/postinstall.js"
|
|
87
96
|
},
|
|
88
97
|
"dependencies": {
|
|
89
|
-
"whatsapp-rpc": "^0.0.
|
|
98
|
+
"whatsapp-rpc": "^0.0.8",
|
|
90
99
|
"concurrently": "^9.2.1",
|
|
91
100
|
"cross-env": "^7.0.3",
|
|
92
101
|
"rimraf": "^6.0.1"
|