machinaos 0.0.1

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 (288) hide show
  1. package/.env.template +71 -0
  2. package/LICENSE +21 -0
  3. package/README.md +87 -0
  4. package/bin/cli.js +159 -0
  5. package/client/.dockerignore +45 -0
  6. package/client/Dockerfile +68 -0
  7. package/client/eslint.config.js +29 -0
  8. package/client/index.html +13 -0
  9. package/client/nginx.conf +66 -0
  10. package/client/package.json +48 -0
  11. package/client/src/App.tsx +27 -0
  12. package/client/src/Dashboard.tsx +1173 -0
  13. package/client/src/ParameterPanel.tsx +301 -0
  14. package/client/src/components/AIAgentNode.tsx +321 -0
  15. package/client/src/components/APIKeyValidator.tsx +118 -0
  16. package/client/src/components/ClaudeChatModelNode.tsx +18 -0
  17. package/client/src/components/ConditionalEdge.tsx +189 -0
  18. package/client/src/components/CredentialsModal.tsx +306 -0
  19. package/client/src/components/EdgeConditionEditor.tsx +443 -0
  20. package/client/src/components/GeminiChatModelNode.tsx +18 -0
  21. package/client/src/components/GenericNode.tsx +357 -0
  22. package/client/src/components/LocationParameterPanel.tsx +154 -0
  23. package/client/src/components/ModelNode.tsx +286 -0
  24. package/client/src/components/OpenAIChatModelNode.tsx +18 -0
  25. package/client/src/components/OutputPanel.tsx +471 -0
  26. package/client/src/components/ParameterRenderer.tsx +1874 -0
  27. package/client/src/components/SkillEditorModal.tsx +417 -0
  28. package/client/src/components/SquareNode.tsx +797 -0
  29. package/client/src/components/StartNode.tsx +250 -0
  30. package/client/src/components/ToolkitNode.tsx +365 -0
  31. package/client/src/components/TriggerNode.tsx +463 -0
  32. package/client/src/components/auth/LoginPage.tsx +247 -0
  33. package/client/src/components/auth/ProtectedRoute.tsx +59 -0
  34. package/client/src/components/base/BaseChatModelNode.tsx +271 -0
  35. package/client/src/components/icons/AIProviderIcons.tsx +50 -0
  36. package/client/src/components/maps/GoogleMapsPicker.tsx +137 -0
  37. package/client/src/components/maps/MapsPreviewPanel.tsx +110 -0
  38. package/client/src/components/maps/index.ts +26 -0
  39. package/client/src/components/parameterPanel/InputSection.tsx +1094 -0
  40. package/client/src/components/parameterPanel/LocationPanelLayout.tsx +65 -0
  41. package/client/src/components/parameterPanel/MapsSection.tsx +92 -0
  42. package/client/src/components/parameterPanel/MiddleSection.tsx +571 -0
  43. package/client/src/components/parameterPanel/OutputSection.tsx +81 -0
  44. package/client/src/components/parameterPanel/ParameterPanelLayout.tsx +82 -0
  45. package/client/src/components/parameterPanel/ToolSchemaEditor.tsx +436 -0
  46. package/client/src/components/parameterPanel/index.ts +42 -0
  47. package/client/src/components/shared/DataPanel.tsx +142 -0
  48. package/client/src/components/shared/JSONTreeRenderer.tsx +106 -0
  49. package/client/src/components/ui/AIResultModal.tsx +204 -0
  50. package/client/src/components/ui/AndroidSettingsPanel.tsx +401 -0
  51. package/client/src/components/ui/CodeEditor.tsx +81 -0
  52. package/client/src/components/ui/CollapsibleSection.tsx +88 -0
  53. package/client/src/components/ui/ComponentItem.tsx +154 -0
  54. package/client/src/components/ui/ComponentPalette.tsx +321 -0
  55. package/client/src/components/ui/ConsolePanel.tsx +1074 -0
  56. package/client/src/components/ui/ErrorBoundary.tsx +196 -0
  57. package/client/src/components/ui/InputNodesPanel.tsx +204 -0
  58. package/client/src/components/ui/MapSelector.tsx +314 -0
  59. package/client/src/components/ui/Modal.tsx +149 -0
  60. package/client/src/components/ui/NodeContextMenu.tsx +192 -0
  61. package/client/src/components/ui/NodeOutputPanel.tsx +1150 -0
  62. package/client/src/components/ui/OutputDisplayPanel.tsx +381 -0
  63. package/client/src/components/ui/SettingsPanel.tsx +243 -0
  64. package/client/src/components/ui/TopToolbar.tsx +736 -0
  65. package/client/src/components/ui/WhatsAppSettingsPanel.tsx +345 -0
  66. package/client/src/components/ui/WorkflowSidebar.tsx +294 -0
  67. package/client/src/config/antdTheme.ts +186 -0
  68. package/client/src/config/api.ts +54 -0
  69. package/client/src/contexts/AuthContext.tsx +221 -0
  70. package/client/src/contexts/ThemeContext.tsx +42 -0
  71. package/client/src/contexts/WebSocketContext.tsx +1971 -0
  72. package/client/src/factories/baseChatModelFactory.ts +256 -0
  73. package/client/src/hooks/useAndroidOperations.ts +164 -0
  74. package/client/src/hooks/useApiKeyValidation.ts +107 -0
  75. package/client/src/hooks/useApiKeys.ts +238 -0
  76. package/client/src/hooks/useAppTheme.ts +17 -0
  77. package/client/src/hooks/useComponentPalette.ts +51 -0
  78. package/client/src/hooks/useCopyPaste.ts +155 -0
  79. package/client/src/hooks/useDragAndDrop.ts +124 -0
  80. package/client/src/hooks/useDragVariable.ts +88 -0
  81. package/client/src/hooks/useExecution.ts +313 -0
  82. package/client/src/hooks/useParameterPanel.ts +176 -0
  83. package/client/src/hooks/useReactFlowNodes.ts +189 -0
  84. package/client/src/hooks/useToolSchema.ts +209 -0
  85. package/client/src/hooks/useWhatsApp.ts +196 -0
  86. package/client/src/hooks/useWorkflowManagement.ts +46 -0
  87. package/client/src/index.css +315 -0
  88. package/client/src/main.tsx +19 -0
  89. package/client/src/nodeDefinitions/aiAgentNodes.ts +336 -0
  90. package/client/src/nodeDefinitions/aiModelNodes.ts +340 -0
  91. package/client/src/nodeDefinitions/androidDeviceNodes.ts +140 -0
  92. package/client/src/nodeDefinitions/androidServiceNodes.ts +383 -0
  93. package/client/src/nodeDefinitions/chatNodes.ts +135 -0
  94. package/client/src/nodeDefinitions/codeNodes.ts +54 -0
  95. package/client/src/nodeDefinitions/documentNodes.ts +379 -0
  96. package/client/src/nodeDefinitions/index.ts +15 -0
  97. package/client/src/nodeDefinitions/locationNodes.ts +463 -0
  98. package/client/src/nodeDefinitions/schedulerNodes.ts +220 -0
  99. package/client/src/nodeDefinitions/skillNodes.ts +211 -0
  100. package/client/src/nodeDefinitions/toolNodes.ts +198 -0
  101. package/client/src/nodeDefinitions/utilityNodes.ts +284 -0
  102. package/client/src/nodeDefinitions/whatsappNodes.ts +865 -0
  103. package/client/src/nodeDefinitions/workflowNodes.ts +41 -0
  104. package/client/src/nodeDefinitions.ts +104 -0
  105. package/client/src/schemas/workflowSchema.ts +264 -0
  106. package/client/src/services/dynamicParameterService.ts +96 -0
  107. package/client/src/services/execution/aiAgentExecutionService.ts +35 -0
  108. package/client/src/services/executionService.ts +232 -0
  109. package/client/src/services/workflowApi.ts +91 -0
  110. package/client/src/store/useAppStore.ts +582 -0
  111. package/client/src/styles/theme.ts +508 -0
  112. package/client/src/styles/zIndex.ts +17 -0
  113. package/client/src/types/ComponentTypes.ts +39 -0
  114. package/client/src/types/EdgeCondition.ts +231 -0
  115. package/client/src/types/INodeProperties.ts +288 -0
  116. package/client/src/types/NodeTypes.ts +28 -0
  117. package/client/src/utils/formatters.ts +33 -0
  118. package/client/src/utils/googleMapsLoader.ts +140 -0
  119. package/client/src/utils/locationUtils.ts +85 -0
  120. package/client/src/utils/nodeUtils.ts +31 -0
  121. package/client/src/utils/workflow.ts +30 -0
  122. package/client/src/utils/workflowExport.ts +120 -0
  123. package/client/src/vite-env.d.ts +12 -0
  124. package/client/tailwind.config.js +60 -0
  125. package/client/tsconfig.json +25 -0
  126. package/client/tsconfig.node.json +11 -0
  127. package/client/vite.config.js +35 -0
  128. package/docker-compose.prod.yml +107 -0
  129. package/docker-compose.yml +104 -0
  130. package/docs-MachinaOs/README.md +85 -0
  131. package/docs-MachinaOs/deployment/docker.mdx +228 -0
  132. package/docs-MachinaOs/deployment/production.mdx +345 -0
  133. package/docs-MachinaOs/docs.json +75 -0
  134. package/docs-MachinaOs/faq.mdx +309 -0
  135. package/docs-MachinaOs/favicon.svg +5 -0
  136. package/docs-MachinaOs/installation.mdx +160 -0
  137. package/docs-MachinaOs/introduction.mdx +114 -0
  138. package/docs-MachinaOs/logo/dark.svg +6 -0
  139. package/docs-MachinaOs/logo/light.svg +6 -0
  140. package/docs-MachinaOs/nodes/ai-agent.mdx +216 -0
  141. package/docs-MachinaOs/nodes/ai-models.mdx +240 -0
  142. package/docs-MachinaOs/nodes/android.mdx +411 -0
  143. package/docs-MachinaOs/nodes/overview.mdx +181 -0
  144. package/docs-MachinaOs/nodes/schedulers.mdx +316 -0
  145. package/docs-MachinaOs/nodes/webhooks.mdx +330 -0
  146. package/docs-MachinaOs/nodes/whatsapp.mdx +305 -0
  147. package/docs-MachinaOs/quickstart.mdx +119 -0
  148. package/docs-MachinaOs/tutorials/ai-agent-workflow.mdx +177 -0
  149. package/docs-MachinaOs/tutorials/android-automation.mdx +242 -0
  150. package/docs-MachinaOs/tutorials/first-workflow.mdx +134 -0
  151. package/docs-MachinaOs/tutorials/whatsapp-automation.mdx +185 -0
  152. package/nul +0 -0
  153. package/package.json +70 -0
  154. package/scripts/build.js +158 -0
  155. package/scripts/check-ports.ps1 +33 -0
  156. package/scripts/clean.js +40 -0
  157. package/scripts/docker.js +93 -0
  158. package/scripts/kill-port.ps1 +154 -0
  159. package/scripts/start.js +210 -0
  160. package/scripts/stop.js +325 -0
  161. package/server/.dockerignore +44 -0
  162. package/server/Dockerfile +45 -0
  163. package/server/constants.py +249 -0
  164. package/server/core/__init__.py +1 -0
  165. package/server/core/cache.py +461 -0
  166. package/server/core/config.py +128 -0
  167. package/server/core/container.py +99 -0
  168. package/server/core/database.py +1211 -0
  169. package/server/core/logging.py +314 -0
  170. package/server/main.py +289 -0
  171. package/server/middleware/__init__.py +5 -0
  172. package/server/middleware/auth.py +89 -0
  173. package/server/models/__init__.py +1 -0
  174. package/server/models/auth.py +52 -0
  175. package/server/models/cache.py +24 -0
  176. package/server/models/database.py +211 -0
  177. package/server/models/nodes.py +455 -0
  178. package/server/package.json +9 -0
  179. package/server/pyproject.toml +72 -0
  180. package/server/requirements.txt +83 -0
  181. package/server/routers/__init__.py +1 -0
  182. package/server/routers/android.py +294 -0
  183. package/server/routers/auth.py +203 -0
  184. package/server/routers/database.py +151 -0
  185. package/server/routers/maps.py +142 -0
  186. package/server/routers/nodejs_compat.py +289 -0
  187. package/server/routers/webhook.py +90 -0
  188. package/server/routers/websocket.py +2127 -0
  189. package/server/routers/whatsapp.py +761 -0
  190. package/server/routers/workflow.py +200 -0
  191. package/server/services/__init__.py +1 -0
  192. package/server/services/ai.py +2415 -0
  193. package/server/services/android/__init__.py +27 -0
  194. package/server/services/android/broadcaster.py +114 -0
  195. package/server/services/android/client.py +608 -0
  196. package/server/services/android/manager.py +78 -0
  197. package/server/services/android/protocol.py +165 -0
  198. package/server/services/android_service.py +588 -0
  199. package/server/services/auth.py +131 -0
  200. package/server/services/chat_client.py +160 -0
  201. package/server/services/deployment/__init__.py +12 -0
  202. package/server/services/deployment/manager.py +706 -0
  203. package/server/services/deployment/state.py +47 -0
  204. package/server/services/deployment/triggers.py +275 -0
  205. package/server/services/event_waiter.py +785 -0
  206. package/server/services/execution/__init__.py +77 -0
  207. package/server/services/execution/cache.py +769 -0
  208. package/server/services/execution/conditions.py +373 -0
  209. package/server/services/execution/dlq.py +132 -0
  210. package/server/services/execution/executor.py +1351 -0
  211. package/server/services/execution/models.py +531 -0
  212. package/server/services/execution/recovery.py +235 -0
  213. package/server/services/handlers/__init__.py +126 -0
  214. package/server/services/handlers/ai.py +355 -0
  215. package/server/services/handlers/android.py +260 -0
  216. package/server/services/handlers/code.py +278 -0
  217. package/server/services/handlers/document.py +598 -0
  218. package/server/services/handlers/http.py +193 -0
  219. package/server/services/handlers/polyglot.py +105 -0
  220. package/server/services/handlers/tools.py +845 -0
  221. package/server/services/handlers/triggers.py +107 -0
  222. package/server/services/handlers/utility.py +822 -0
  223. package/server/services/handlers/whatsapp.py +476 -0
  224. package/server/services/maps.py +289 -0
  225. package/server/services/memory_store.py +103 -0
  226. package/server/services/node_executor.py +375 -0
  227. package/server/services/parameter_resolver.py +218 -0
  228. package/server/services/polyglot_client.py +169 -0
  229. package/server/services/scheduler.py +155 -0
  230. package/server/services/skill_loader.py +417 -0
  231. package/server/services/status_broadcaster.py +826 -0
  232. package/server/services/temporal/__init__.py +23 -0
  233. package/server/services/temporal/activities.py +344 -0
  234. package/server/services/temporal/client.py +76 -0
  235. package/server/services/temporal/executor.py +147 -0
  236. package/server/services/temporal/worker.py +251 -0
  237. package/server/services/temporal/workflow.py +355 -0
  238. package/server/services/temporal/ws_client.py +236 -0
  239. package/server/services/text.py +111 -0
  240. package/server/services/user_auth.py +172 -0
  241. package/server/services/websocket_client.py +29 -0
  242. package/server/services/workflow.py +597 -0
  243. package/server/skills/android-skill/SKILL.md +82 -0
  244. package/server/skills/assistant-personality/SKILL.md +45 -0
  245. package/server/skills/code-skill/SKILL.md +140 -0
  246. package/server/skills/http-skill/SKILL.md +161 -0
  247. package/server/skills/maps-skill/SKILL.md +170 -0
  248. package/server/skills/memory-skill/SKILL.md +154 -0
  249. package/server/skills/scheduler-skill/SKILL.md +84 -0
  250. package/server/skills/whatsapp-skill/SKILL.md +283 -0
  251. package/server/uv.lock +2916 -0
  252. package/server/whatsapp-rpc/.dockerignore +30 -0
  253. package/server/whatsapp-rpc/Dockerfile +44 -0
  254. package/server/whatsapp-rpc/Dockerfile.web +17 -0
  255. package/server/whatsapp-rpc/README.md +139 -0
  256. package/server/whatsapp-rpc/cli.js +95 -0
  257. package/server/whatsapp-rpc/configs/config.yaml +7 -0
  258. package/server/whatsapp-rpc/docker-compose.yml +35 -0
  259. package/server/whatsapp-rpc/docs/API.md +410 -0
  260. package/server/whatsapp-rpc/go.mod +67 -0
  261. package/server/whatsapp-rpc/go.sum +203 -0
  262. package/server/whatsapp-rpc/package.json +30 -0
  263. package/server/whatsapp-rpc/schema.json +1294 -0
  264. package/server/whatsapp-rpc/scripts/clean.cjs +66 -0
  265. package/server/whatsapp-rpc/scripts/cli.js +162 -0
  266. package/server/whatsapp-rpc/src/go/cmd/server/main.go +91 -0
  267. package/server/whatsapp-rpc/src/go/config/config.go +49 -0
  268. package/server/whatsapp-rpc/src/go/rpc/rpc.go +446 -0
  269. package/server/whatsapp-rpc/src/go/rpc/server.go +112 -0
  270. package/server/whatsapp-rpc/src/go/whatsapp/history.go +166 -0
  271. package/server/whatsapp-rpc/src/go/whatsapp/messages.go +390 -0
  272. package/server/whatsapp-rpc/src/go/whatsapp/service.go +2130 -0
  273. package/server/whatsapp-rpc/src/go/whatsapp/types.go +261 -0
  274. package/server/whatsapp-rpc/src/python/pyproject.toml +15 -0
  275. package/server/whatsapp-rpc/src/python/whatsapp_rpc/__init__.py +4 -0
  276. package/server/whatsapp-rpc/src/python/whatsapp_rpc/client.py +427 -0
  277. package/server/whatsapp-rpc/web/app.py +609 -0
  278. package/server/whatsapp-rpc/web/requirements.txt +6 -0
  279. package/server/whatsapp-rpc/web/rpc_client.py +427 -0
  280. package/server/whatsapp-rpc/web/static/openapi.yaml +59 -0
  281. package/server/whatsapp-rpc/web/templates/base.html +150 -0
  282. package/server/whatsapp-rpc/web/templates/contacts.html +240 -0
  283. package/server/whatsapp-rpc/web/templates/dashboard.html +320 -0
  284. package/server/whatsapp-rpc/web/templates/groups.html +328 -0
  285. package/server/whatsapp-rpc/web/templates/messages.html +465 -0
  286. package/server/whatsapp-rpc/web/templates/messaging.html +681 -0
  287. package/server/whatsapp-rpc/web/templates/send.html +259 -0
  288. package/server/whatsapp-rpc/web/templates/settings.html +459 -0
@@ -0,0 +1,305 @@
1
+ ---
2
+ title: WhatsApp Nodes
3
+ description: Send, receive, and manage WhatsApp messages
4
+ ---
5
+
6
+ # WhatsApp Nodes
7
+
8
+ Automate WhatsApp messaging with three specialized nodes.
9
+
10
+ ## Available Nodes
11
+
12
+ | Node | Type | Purpose |
13
+ |------|------|---------|
14
+ | WhatsApp Connect | Action | Check connection status |
15
+ | WhatsApp Receive | Trigger | Wait for incoming messages |
16
+ | WhatsApp Send | Action | Send messages |
17
+
18
+ ## Setup Requirements
19
+
20
+ 1. WhatsApp service running (included in Docker setup)
21
+ 2. WhatsApp account for pairing
22
+ 3. Scan QR code to link device
23
+
24
+ ### Connecting
25
+
26
+ 1. Click **Android/WhatsApp icon** in toolbar
27
+ 2. Scan displayed QR code with WhatsApp mobile app
28
+ 3. Go to WhatsApp > Settings > Linked Devices > Link a Device
29
+
30
+ ---
31
+
32
+ ## WhatsApp Receive
33
+
34
+ Trigger node that fires when messages arrive.
35
+
36
+ ### Parameters
37
+
38
+ <ParamField path="messageTypeFilter" type="select" default="all">
39
+ Filter by message type: all, text, image, video, audio, document, location, contact
40
+ </ParamField>
41
+
42
+ <ParamField path="filter" type="select" default="all">
43
+ Sender filter mode
44
+ </ParamField>
45
+
46
+ <ParamField path="phone_number" type="string">
47
+ Specific phone number (when filter = contact)
48
+ </ParamField>
49
+
50
+ <ParamField path="group_id" type="select">
51
+ Specific group (when filter = group)
52
+ </ParamField>
53
+
54
+ <ParamField path="keywords" type="string">
55
+ Comma-separated keywords (when filter = keywords)
56
+ </ParamField>
57
+
58
+ <ParamField path="forwardedFilter" type="select" default="all">
59
+ Forwarded message handling: all, only_forwarded, ignore_forwarded
60
+ </ParamField>
61
+
62
+ <ParamField path="ignoreOwnMessages" type="boolean" default="true">
63
+ Skip messages sent by yourself
64
+ </ParamField>
65
+
66
+ ### Filter Options
67
+
68
+ | Filter | Description |
69
+ |--------|-------------|
70
+ | All Messages | Receive everything |
71
+ | From Any Contact | Non-group messages only |
72
+ | From Specific Contact | Match phone number |
73
+ | From Specific Group | Match group |
74
+ | Contains Keywords | Match keywords in message |
75
+
76
+ ### Output
77
+
78
+ ```json
79
+ {
80
+ "message_id": "ABC123",
81
+ "sender": "1234567890@s.whatsapp.net",
82
+ "sender_phone": "+1234567890",
83
+ "chat_id": "1234567890@s.whatsapp.net",
84
+ "message_type": "text",
85
+ "text": "Hello!",
86
+ "timestamp": "2024-01-15T10:30:00Z",
87
+ "is_group": false,
88
+ "is_from_me": false,
89
+ "push_name": "John Doe",
90
+ "is_forwarded": false,
91
+ "forwarding_score": 0,
92
+ "group_info": null
93
+ }
94
+ ```
95
+
96
+ ### Group Message Output
97
+
98
+ When `is_group` is true:
99
+
100
+ ```json
101
+ {
102
+ "group_info": {
103
+ "group_jid": "123456789@g.us",
104
+ "sender_jid": "1234567890@s.whatsapp.net",
105
+ "sender_phone": "+1234567890",
106
+ "sender_name": "John Doe"
107
+ }
108
+ }
109
+ ```
110
+
111
+ ### Example: Reply to Specific Keywords
112
+
113
+ ```
114
+ Filter: Contains Keywords
115
+ Keywords: help, support, question
116
+ ```
117
+
118
+ ---
119
+
120
+ ## WhatsApp Send
121
+
122
+ Send messages to contacts or groups.
123
+
124
+ ### Parameters
125
+
126
+ <ParamField path="phone_number" type="string" required>
127
+ Recipient phone number with country code (e.g., +1234567890)
128
+ </ParamField>
129
+
130
+ <ParamField path="message" type="string" required>
131
+ Message content. Supports template variables.
132
+ </ParamField>
133
+
134
+ ### Output
135
+
136
+ ```json
137
+ {
138
+ "success": true,
139
+ "message_id": "XYZ789",
140
+ "timestamp": "2024-01-15T10:35:00Z"
141
+ }
142
+ ```
143
+
144
+ ### Example: Auto-Reply
145
+
146
+ ```
147
+ Phone Number: {{whatsappReceive.sender_phone}}
148
+ Message: Thanks for your message! I'll get back to you soon.
149
+ ```
150
+
151
+ ### Example: Forward to Admin
152
+
153
+ ```
154
+ Phone Number: +1987654321
155
+ Message: New message from {{whatsappReceive.push_name}}: {{whatsappReceive.text}}
156
+ ```
157
+
158
+ ---
159
+
160
+ ## WhatsApp Connect
161
+
162
+ Check WhatsApp connection status and device info.
163
+
164
+ ### Output
165
+
166
+ ```json
167
+ {
168
+ "connected": true,
169
+ "device_id": "abc123",
170
+ "phone_number": "+1234567890",
171
+ "platform": "android",
172
+ "push_name": "My Business"
173
+ }
174
+ ```
175
+
176
+ ### Use Case
177
+
178
+ Check connection before sending:
179
+
180
+ ```
181
+ [WhatsApp Connect] --> [Python Executor] --> [WhatsApp Send]
182
+ (check status)
183
+ ```
184
+
185
+ ---
186
+
187
+ ## Common Workflows
188
+
189
+ ### Auto-Responder
190
+
191
+ ```
192
+ [WhatsApp Receive] --> [OpenAI Chat] --> [WhatsApp Send]
193
+ ```
194
+
195
+ **AI Prompt:**
196
+ ```
197
+ Respond to this customer message: {{whatsappReceive.text}}
198
+ Be helpful and professional.
199
+ ```
200
+
201
+ **Send Config:**
202
+ ```
203
+ Phone: {{whatsappReceive.sender_phone}}
204
+ Message: {{openaiChatModel.response}}
205
+ ```
206
+
207
+ ### Group Monitor
208
+
209
+ ```
210
+ [WhatsApp Receive] --> [Python Executor] --> [Webhook/Database]
211
+ (group filter) (log message)
212
+ ```
213
+
214
+ **Filter Config:**
215
+ ```
216
+ Filter: From Specific Group
217
+ Group: [Select your group]
218
+ ```
219
+
220
+ ### Keyword Bot
221
+
222
+ ```
223
+ [WhatsApp Receive] --> [Python Executor] --> [WhatsApp Send]
224
+ (keywords: help) (select response)
225
+ ```
226
+
227
+ **Python Code:**
228
+ ```python
229
+ text = input_data.get("text", "").lower()
230
+
231
+ if "hours" in text:
232
+ response = "We're open 9am-5pm, Mon-Fri"
233
+ elif "price" in text:
234
+ response = "Please visit our website for pricing"
235
+ else:
236
+ response = "How can I help you?"
237
+
238
+ output = {"response": response}
239
+ ```
240
+
241
+ ---
242
+
243
+ ## Tips
244
+
245
+ <Tip>
246
+ Use `{{whatsappReceive.sender_phone}}` to reply to the sender automatically.
247
+ </Tip>
248
+
249
+ <Tip>
250
+ Combine with **Simple Memory** for context-aware conversations per contact.
251
+ </Tip>
252
+
253
+ <Tip>
254
+ Set `Session ID: {{whatsappReceive.sender_phone}}` in Simple Memory for per-user history.
255
+ </Tip>
256
+
257
+ <Warning>
258
+ Respect WhatsApp's terms of service. Don't send spam or bulk unsolicited messages.
259
+ </Warning>
260
+
261
+ ---
262
+
263
+ ## Troubleshooting
264
+
265
+ <Accordion title="QR code not appearing">
266
+ Check WhatsApp service status:
267
+ ```bash
268
+ docker-compose logs whatsapp
269
+ ```
270
+ Restart if needed:
271
+ ```bash
272
+ docker-compose restart whatsapp
273
+ ```
274
+ </Accordion>
275
+
276
+ <Accordion title="Messages not received">
277
+ - Verify workflow is **deployed** (not just saved)
278
+ - Check filter settings aren't too restrictive
279
+ - Confirm `ignoreOwnMessages` setting
280
+ </Accordion>
281
+
282
+ <Accordion title="Send fails">
283
+ - Include country code in phone number
284
+ - Check WhatsApp connection status
285
+ - Verify recipient hasn't blocked you
286
+ </Accordion>
287
+
288
+ <Accordion title="Connection drops frequently">
289
+ - Check internet connectivity
290
+ - Ensure phone stays online
291
+ - Don't use WhatsApp Web simultaneously
292
+ </Accordion>
293
+
294
+ ---
295
+
296
+ ## Related
297
+
298
+ <CardGroup cols={2}>
299
+ <Card title="WhatsApp Tutorial" icon="whatsapp" href="/tutorials/whatsapp-automation">
300
+ Step-by-step guide
301
+ </Card>
302
+ <Card title="AI Agent" icon="robot" href="/nodes/ai-agent">
303
+ Add AI-powered responses
304
+ </Card>
305
+ </CardGroup>
@@ -0,0 +1,119 @@
1
+ ---
2
+ title: Quick Start
3
+ description: Build your first workflow in 5 minutes
4
+ ---
5
+
6
+ # Quick Start
7
+
8
+ Let's create a simple workflow that responds to a webhook with an AI-generated message.
9
+
10
+ ## Step 1: Create a New Workflow
11
+
12
+ 1. Open MachinaOs at `http://localhost:3000`
13
+ 2. Click **File > New Workflow** or press `Ctrl+N`
14
+ 3. You'll see an empty canvas with a component palette on the left
15
+
16
+ ## Step 2: Add a Webhook Trigger
17
+
18
+ 1. In the component palette, expand **Utilities**
19
+ 2. Drag **Webhook Trigger** onto the canvas
20
+ 3. Click the node to select it, then click the **gear icon** to configure:
21
+
22
+ ```
23
+ Path: hello
24
+ Method: POST
25
+ ```
26
+
27
+ <Tip>
28
+ Your webhook will be available at `http://localhost:3010/webhook/hello`
29
+ </Tip>
30
+
31
+ ## Step 3: Add an AI Chat Model
32
+
33
+ 1. Expand **AI Models** in the palette
34
+ 2. Drag **OpenAI Chat Model** onto the canvas
35
+ 3. Position it to the right of the Webhook Trigger
36
+ 4. Connect them by dragging from the Webhook's output handle to the AI model's input handle
37
+
38
+ ### Configure the AI Model
39
+
40
+ Click the gear icon and set:
41
+
42
+ ```
43
+ Model: gpt-4o-mini
44
+ Temperature: 0.7
45
+ ```
46
+
47
+ <Warning>
48
+ You need an OpenAI API key. Click the **key icon** in the toolbar to add it.
49
+ </Warning>
50
+
51
+ ## Step 4: Set the Prompt
52
+
53
+ In the AI model's parameters, set the **Prompt**:
54
+
55
+ ```
56
+ You are a friendly assistant. The user sent: {{webhookTrigger.body}}
57
+
58
+ Respond with a helpful greeting.
59
+ ```
60
+
61
+ <Info>
62
+ The `{{webhookTrigger.body}}` syntax pulls data from the webhook's output.
63
+ </Info>
64
+
65
+ ## Step 5: Add a Webhook Response
66
+
67
+ 1. Drag **Webhook Response** from Utilities
68
+ 2. Connect the AI model's output to the Webhook Response input
69
+ 3. Configure it:
70
+
71
+ ```
72
+ Status Code: 200
73
+ Body: {{openaiChatModel.response}}
74
+ Content Type: application/json
75
+ ```
76
+
77
+ ## Step 6: Deploy and Test
78
+
79
+ 1. Click the **Deploy** button (purple) in the toolbar
80
+ 2. Your workflow is now listening for webhooks
81
+
82
+ ### Test with curl
83
+
84
+ ```bash
85
+ curl -X POST http://localhost:3010/webhook/hello \
86
+ -H "Content-Type: application/json" \
87
+ -d '{"message": "Hello from curl!"}'
88
+ ```
89
+
90
+ You should receive an AI-generated response!
91
+
92
+ ## Your First Workflow
93
+
94
+ Your completed workflow looks like this:
95
+
96
+ ```
97
+ [Webhook Trigger] --> [OpenAI Chat] --> [Webhook Response]
98
+ ```
99
+
100
+ <Check>
101
+ Congratulations! You've built your first MachinaOs workflow.
102
+ </Check>
103
+
104
+ ## What's Next?
105
+
106
+ <CardGroup cols={2}>
107
+ <Card title="AI Agent Tutorial" icon="robot" href="/tutorials/ai-agent-workflow">
108
+ Build an AI agent with memory and tools
109
+ </Card>
110
+ <Card title="WhatsApp Automation" icon="whatsapp" href="/tutorials/whatsapp-automation">
111
+ Automate WhatsApp messages
112
+ </Card>
113
+ <Card title="Node Catalog" icon="grid" href="/nodes/overview">
114
+ Explore all 34 nodes
115
+ </Card>
116
+ <Card title="Deployment" icon="server" href="/deployment/docker">
117
+ Deploy to production
118
+ </Card>
119
+ </CardGroup>
@@ -0,0 +1,177 @@
1
+ ---
2
+ title: AI Agent Workflow
3
+ description: Build an AI agent with conversation memory and tools
4
+ ---
5
+
6
+ # AI Agent Workflow
7
+
8
+ Create an intelligent AI agent that remembers conversation history and can use tools.
9
+
10
+ ## What You'll Build
11
+
12
+ A chatbot that:
13
+ - Maintains conversation context across messages
14
+ - Uses an AI model (OpenAI, Claude, or Gemini)
15
+ - Responds via webhook
16
+
17
+ ## Prerequisites
18
+
19
+ - MachinaOs running locally
20
+ - An AI provider API key (OpenAI, Anthropic, or Google)
21
+
22
+ ## Step 1: Add the AI Agent
23
+
24
+ 1. Drag **AI Agent** from the AI Agents category
25
+ 2. This is the core of your intelligent assistant
26
+
27
+ The AI Agent node has multiple input handles:
28
+ - **Main Input** (left) - Receives the user prompt
29
+ - **Memory Input** (bottom-left diamond) - Connects to memory nodes
30
+ - **Model Input** (top) - Optional model override
31
+
32
+ ## Step 2: Connect a Chat Model
33
+
34
+ 1. Drag **OpenAI Chat Model** (or Claude/Gemini) onto the canvas
35
+ 2. Connect it to the AI Agent's model input (top handle)
36
+ 3. Configure the model:
37
+
38
+ ```
39
+ Model: gpt-4o
40
+ Temperature: 0.7
41
+ Max Tokens: 1000
42
+ ```
43
+
44
+ <Tip>
45
+ You can use any AI provider. Claude excels at reasoning, Gemini handles multimodal input.
46
+ </Tip>
47
+
48
+ ## Step 3: Add Conversation Memory
49
+
50
+ 1. Drag **Simple Memory** from AI Agents
51
+ 2. Connect it to the AI Agent's memory input (bottom-left diamond handle)
52
+ 3. Configure:
53
+
54
+ ```
55
+ Session ID: default
56
+ Memory Type: Buffer
57
+ ```
58
+
59
+ ### Memory Types
60
+
61
+ | Type | Description |
62
+ |------|-------------|
63
+ | Buffer | Keeps all messages in the session |
64
+ | Window | Keeps only the last N messages |
65
+
66
+ <Info>
67
+ Memory is stored in SQLite and persists across server restarts.
68
+ </Info>
69
+
70
+ ## Step 4: Add a Webhook Trigger
71
+
72
+ 1. Drag **Webhook Trigger** from Utilities
73
+ 2. Connect its output to the AI Agent's main input
74
+ 3. Configure:
75
+
76
+ ```
77
+ Path: chat
78
+ Method: POST
79
+ ```
80
+
81
+ ## Step 5: Add a Webhook Response
82
+
83
+ 1. Drag **Webhook Response** from Utilities
84
+ 2. Connect the AI Agent's output to Webhook Response
85
+ 3. Configure:
86
+
87
+ ```
88
+ Status Code: 200
89
+ Body: {{aiAgent.response}}
90
+ Content Type: application/json
91
+ ```
92
+
93
+ ## Complete Workflow
94
+
95
+ ```
96
+ [Webhook Trigger] --> [AI Agent] --> [Webhook Response]
97
+ ^
98
+ |
99
+ [Simple Memory]
100
+ ^
101
+ |
102
+ [OpenAI Chat Model]
103
+ ```
104
+
105
+ ## Step 6: Configure the Agent Prompt
106
+
107
+ Click on the AI Agent and set the system prompt:
108
+
109
+ ```
110
+ You are a helpful assistant. You remember our conversation history.
111
+ Be concise and friendly in your responses.
112
+ ```
113
+
114
+ ## Step 7: Deploy and Test
115
+
116
+ 1. Click **Deploy**
117
+ 2. Test with curl:
118
+
119
+ ```bash
120
+ # First message
121
+ curl -X POST http://localhost:3010/webhook/chat \
122
+ -H "Content-Type: application/json" \
123
+ -d '{"message": "Hi, my name is Alex"}'
124
+
125
+ # Second message (agent remembers your name)
126
+ curl -X POST http://localhost:3010/webhook/chat \
127
+ -H "Content-Type: application/json" \
128
+ -d '{"message": "What is my name?"}'
129
+ ```
130
+
131
+ The agent should respond with your name, demonstrating memory!
132
+
133
+ ## Advanced: Multiple Sessions
134
+
135
+ Use different session IDs for different conversations:
136
+
137
+ ```
138
+ Session ID: {{webhookTrigger.body.user_id}}
139
+ ```
140
+
141
+ This creates separate memory for each user.
142
+
143
+ ## Advanced: Window Memory
144
+
145
+ For long conversations, use Window mode to limit memory:
146
+
147
+ ```
148
+ Memory Type: Window
149
+ Window Size: 10
150
+ ```
151
+
152
+ This keeps only the last 10 message exchanges.
153
+
154
+ ## Troubleshooting
155
+
156
+ <Accordion title="Agent doesn't remember previous messages">
157
+ - Ensure Simple Memory is connected to the memory input (diamond handle)
158
+ - Check that Session ID is consistent between requests
159
+ - Memory is saved after each exchange automatically
160
+ </Accordion>
161
+
162
+ <Accordion title="API key not found">
163
+ - Click the key icon in the toolbar
164
+ - Add your API key for the provider you're using
165
+ - Keys are stored securely and encrypted
166
+ </Accordion>
167
+
168
+ ## Next Steps
169
+
170
+ <CardGroup cols={2}>
171
+ <Card title="WhatsApp Automation" icon="whatsapp" href="/tutorials/whatsapp-automation">
172
+ Connect your agent to WhatsApp
173
+ </Card>
174
+ <Card title="AI Models Reference" icon="brain" href="/nodes/ai-models">
175
+ Compare AI providers
176
+ </Card>
177
+ </CardGroup>