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,316 @@
1
+ ---
2
+ title: Schedulers & Triggers
3
+ description: Start workflows on schedules, timers, and manual triggers
4
+ ---
5
+
6
+ # Schedulers & Triggers
7
+
8
+ Control when and how workflows start execution.
9
+
10
+ ## Available Nodes
11
+
12
+ | Node | Type | Purpose |
13
+ |------|------|---------|
14
+ | Workflow Trigger | Trigger | Manual workflow start |
15
+ | Cron Scheduler | Trigger | Run on cron schedule |
16
+ | Timer | Action | Delay execution |
17
+ | Python Executor | Action | Run Python code |
18
+
19
+ ---
20
+
21
+ ## Workflow Trigger
22
+
23
+ Manually start a workflow with the Run button.
24
+
25
+ ### Use Cases
26
+
27
+ - Testing workflows during development
28
+ - On-demand execution
29
+ - Entry point for manual processes
30
+
31
+ ### Output
32
+
33
+ ```json
34
+ {
35
+ "triggered_at": "2024-01-15T10:30:00Z",
36
+ "trigger_type": "manual"
37
+ }
38
+ ```
39
+
40
+ <Info>
41
+ Every workflow needs at least one trigger node to start execution.
42
+ </Info>
43
+
44
+ ---
45
+
46
+ ## Cron Scheduler
47
+
48
+ Run workflows on a schedule using cron expressions.
49
+
50
+ ### Parameters
51
+
52
+ <ParamField path="cronExpression" type="string" required>
53
+ Cron expression defining the schedule
54
+ </ParamField>
55
+
56
+ <ParamField path="timezone" type="string" default="UTC">
57
+ Timezone for schedule execution
58
+ </ParamField>
59
+
60
+ ### Cron Expression Format
61
+
62
+ ```
63
+ * * * * *
64
+ │ │ │ │ │
65
+ │ │ │ │ └── Day of week (0-7, Sun=0 or 7)
66
+ │ │ │ └──── Month (1-12)
67
+ │ │ └────── Day of month (1-31)
68
+ │ └──────── Hour (0-23)
69
+ └────────── Minute (0-59)
70
+ ```
71
+
72
+ ### Common Expressions
73
+
74
+ | Expression | Description |
75
+ |------------|-------------|
76
+ | `* * * * *` | Every minute |
77
+ | `*/5 * * * *` | Every 5 minutes |
78
+ | `0 * * * *` | Every hour |
79
+ | `0 0 * * *` | Daily at midnight |
80
+ | `0 9 * * 1-5` | Weekdays at 9am |
81
+ | `0 0 1 * *` | First day of month |
82
+ | `0 12 * * 0` | Sundays at noon |
83
+
84
+ ### Output
85
+
86
+ ```json
87
+ {
88
+ "triggered_at": "2024-01-15T09:00:00Z",
89
+ "trigger_type": "cron",
90
+ "expression": "0 9 * * *",
91
+ "next_run": "2024-01-16T09:00:00Z"
92
+ }
93
+ ```
94
+
95
+ ### Example: Daily Report
96
+
97
+ ```
98
+ [Cron (0 9 * * *)] --> [HTTP Request] --> [AI Summary] --> [WhatsApp Send]
99
+ (fetch data) (send report)
100
+ ```
101
+
102
+ ---
103
+
104
+ ## Timer
105
+
106
+ Add a delay between nodes.
107
+
108
+ ### Parameters
109
+
110
+ <ParamField path="delay" type="number" required>
111
+ Delay duration
112
+ </ParamField>
113
+
114
+ <ParamField path="unit" type="select" default="seconds">
115
+ Time unit: seconds, minutes, hours
116
+ </ParamField>
117
+
118
+ ### Use Cases
119
+
120
+ - Rate limiting API calls
121
+ - Waiting for external processes
122
+ - Scheduling sequential actions
123
+
124
+ ### Example: Rate-Limited API Calls
125
+
126
+ ```
127
+ [For Each Item] --> [HTTP Request] --> [Timer (1s)] --> [Next Item]
128
+ ```
129
+
130
+ ### Output
131
+
132
+ ```json
133
+ {
134
+ "delayed": true,
135
+ "duration_ms": 5000,
136
+ "completed_at": "2024-01-15T10:30:05Z"
137
+ }
138
+ ```
139
+
140
+ ---
141
+
142
+ ## Python Executor
143
+
144
+ Run custom Python code within workflows.
145
+
146
+ ### Parameters
147
+
148
+ <ParamField path="code" type="code" required>
149
+ Python code to execute
150
+ </ParamField>
151
+
152
+ ### Available Variables
153
+
154
+ | Variable | Description |
155
+ |----------|-------------|
156
+ | `input_data` | Data from connected input node |
157
+ | `output` | Dictionary to set as node output |
158
+
159
+ ### Example: Data Processing
160
+
161
+ ```python
162
+ # Access input data
163
+ message = input_data.get("text", "")
164
+
165
+ # Process
166
+ word_count = len(message.split())
167
+ has_question = "?" in message
168
+
169
+ # Set output
170
+ output = {
171
+ "word_count": word_count,
172
+ "has_question": has_question,
173
+ "summary": f"Message has {word_count} words"
174
+ }
175
+ ```
176
+
177
+ ### Example: Conditional Logic
178
+
179
+ ```python
180
+ level = input_data.get("battery_level", 100)
181
+ is_charging = input_data.get("is_charging", False)
182
+
183
+ if level < 20 and not is_charging:
184
+ output = {
185
+ "action": "alert",
186
+ "message": f"Low battery: {level}%"
187
+ }
188
+ else:
189
+ output = {
190
+ "action": "none"
191
+ }
192
+ ```
193
+
194
+ ### Example: API Response Formatting
195
+
196
+ ```python
197
+ import json
198
+
199
+ # Parse response
200
+ data = input_data.get("data", {})
201
+ items = data.get("items", [])
202
+
203
+ # Format for output
204
+ formatted = []
205
+ for item in items:
206
+ formatted.append({
207
+ "name": item.get("name"),
208
+ "price": f"${item.get('price', 0):.2f}"
209
+ })
210
+
211
+ output = {
212
+ "count": len(formatted),
213
+ "items": formatted
214
+ }
215
+ ```
216
+
217
+ ### Available Libraries
218
+
219
+ The Python executor includes common libraries:
220
+ - `json` - JSON parsing
221
+ - `datetime` - Date/time handling
222
+ - `re` - Regular expressions
223
+ - `math` - Mathematical functions
224
+
225
+ <Warning>
226
+ Code runs in a sandboxed environment. File system and network access are restricted.
227
+ </Warning>
228
+
229
+ ---
230
+
231
+ ## Combining Schedulers
232
+
233
+ ### Schedule with Delay
234
+
235
+ ```
236
+ [Cron (hourly)] --> [HTTP Request] --> [Timer (5s)] --> [HTTP Request #2]
237
+ ```
238
+
239
+ ### Multiple Schedules
240
+
241
+ Deploy workflows with different schedules:
242
+
243
+ ```
244
+ Workflow 1: [Cron (daily)] --> [Daily Report]
245
+ Workflow 2: [Cron (hourly)] --> [Hourly Check]
246
+ Workflow 3: [Webhook] --> [On-Demand Action]
247
+ ```
248
+
249
+ ---
250
+
251
+ ## Workflow States
252
+
253
+ After deployment, trigger nodes show their state:
254
+
255
+ | State | Color | Description |
256
+ |-------|-------|-------------|
257
+ | Idle | Default | Waiting for next trigger |
258
+ | Waiting | Cyan | Actively waiting for event |
259
+ | Running | Purple | Workflow executing |
260
+
261
+ ---
262
+
263
+ ## Tips
264
+
265
+ <Tip>
266
+ Test cron expressions at [crontab.guru](https://crontab.guru) before deploying.
267
+ </Tip>
268
+
269
+ <Tip>
270
+ Use **Python Executor** for conditional logic instead of multiple workflow branches.
271
+ </Tip>
272
+
273
+ <Tip>
274
+ Add **Timer** nodes when calling rate-limited APIs repeatedly.
275
+ </Tip>
276
+
277
+ <Warning>
278
+ Cron schedules are in **UTC** by default. Set timezone if needed.
279
+ </Warning>
280
+
281
+ ---
282
+
283
+ ## Troubleshooting
284
+
285
+ <Accordion title="Cron not triggering">
286
+ - Verify workflow is **deployed** (not just saved)
287
+ - Check cron expression syntax
288
+ - Ensure timezone is correct
289
+ - Check server logs for errors
290
+ </Accordion>
291
+
292
+ <Accordion title="Python code fails">
293
+ - Check for syntax errors
294
+ - Verify `input_data` has expected fields
295
+ - Use `try/except` for error handling
296
+ - Print debug info with `print()` (shows in logs)
297
+ </Accordion>
298
+
299
+ <Accordion title="Timer not working">
300
+ - Ensure delay value is positive
301
+ - Check unit (seconds vs minutes)
302
+ - Verify node is connected properly
303
+ </Accordion>
304
+
305
+ ---
306
+
307
+ ## Related
308
+
309
+ <CardGroup cols={2}>
310
+ <Card title="Webhooks" icon="webhook" href="/nodes/webhooks">
311
+ Trigger workflows via HTTP
312
+ </Card>
313
+ <Card title="WhatsApp" icon="whatsapp" href="/nodes/whatsapp">
314
+ Message-triggered workflows
315
+ </Card>
316
+ </CardGroup>
@@ -0,0 +1,330 @@
1
+ ---
2
+ title: Webhooks & HTTP
3
+ description: HTTP requests and webhook handling nodes
4
+ ---
5
+
6
+ # Webhooks & HTTP
7
+
8
+ Make HTTP requests to external APIs and receive incoming webhooks.
9
+
10
+ ## Available Nodes
11
+
12
+ | Node | Type | Purpose |
13
+ |------|------|---------|
14
+ | HTTP Request | Action | Make outgoing HTTP calls |
15
+ | Webhook Trigger | Trigger | Receive incoming HTTP requests |
16
+ | Webhook Response | Action | Send custom response to webhook caller |
17
+
18
+ ---
19
+
20
+ ## HTTP Request
21
+
22
+ Make HTTP requests to external APIs and services.
23
+
24
+ ### Parameters
25
+
26
+ <ParamField path="url" type="string" required>
27
+ The URL to request. Supports template variables.
28
+ </ParamField>
29
+
30
+ <ParamField path="method" type="select" default="GET">
31
+ HTTP method: GET, POST, PUT, DELETE, PATCH
32
+ </ParamField>
33
+
34
+ <ParamField path="headers" type="json">
35
+ Request headers as JSON object
36
+ </ParamField>
37
+
38
+ <ParamField path="body" type="string">
39
+ Request body (for POST, PUT, PATCH)
40
+ </ParamField>
41
+
42
+ <ParamField path="timeout" type="number" default="30">
43
+ Request timeout in seconds
44
+ </ParamField>
45
+
46
+ ### Output
47
+
48
+ ```json
49
+ {
50
+ "status": 200,
51
+ "statusText": "OK",
52
+ "headers": {
53
+ "content-type": "application/json"
54
+ },
55
+ "data": {
56
+ "result": "response data"
57
+ }
58
+ }
59
+ ```
60
+
61
+ ### Examples
62
+
63
+ **GET Request:**
64
+ ```
65
+ URL: https://api.example.com/users/{{input.user_id}}
66
+ Method: GET
67
+ Headers: {"Authorization": "Bearer {{input.token}}"}
68
+ ```
69
+
70
+ **POST Request:**
71
+ ```
72
+ URL: https://api.example.com/orders
73
+ Method: POST
74
+ Headers: {"Content-Type": "application/json"}
75
+ Body: {"product": "{{input.product}}", "quantity": {{input.qty}}}
76
+ ```
77
+
78
+ **External API Integration:**
79
+ ```
80
+ URL: https://api.openweathermap.org/data/2.5/weather?q={{input.city}}&appid=YOUR_KEY
81
+ Method: GET
82
+ ```
83
+
84
+ ---
85
+
86
+ ## Webhook Trigger
87
+
88
+ Receive incoming HTTP requests at a dynamic endpoint.
89
+
90
+ ### Parameters
91
+
92
+ <ParamField path="path" type="string" required>
93
+ The webhook path (e.g., "orders" creates /webhook/orders)
94
+ </ParamField>
95
+
96
+ <ParamField path="method" type="select" default="POST">
97
+ HTTP method filter: GET, POST, PUT, DELETE, PATCH, or ANY
98
+ </ParamField>
99
+
100
+ <ParamField path="authentication" type="select" default="none">
101
+ Auth method: none, basic, bearer, api_key
102
+ </ParamField>
103
+
104
+ ### Webhook URL
105
+
106
+ Your webhook will be available at:
107
+ ```
108
+ http://localhost:3010/webhook/{path}
109
+ ```
110
+
111
+ For production:
112
+ ```
113
+ https://your-domain.com/webhook/{path}
114
+ ```
115
+
116
+ ### Output
117
+
118
+ ```json
119
+ {
120
+ "method": "POST",
121
+ "path": "/webhook/orders",
122
+ "headers": {
123
+ "content-type": "application/json",
124
+ "user-agent": "curl/7.68.0"
125
+ },
126
+ "query": {
127
+ "source": "website"
128
+ },
129
+ "body": {
130
+ "order_id": "12345",
131
+ "items": ["item1", "item2"]
132
+ },
133
+ "timestamp": "2024-01-15T10:30:00Z"
134
+ }
135
+ ```
136
+
137
+ ### Authentication Options
138
+
139
+ | Type | Description | Header |
140
+ |------|-------------|--------|
141
+ | None | No authentication | - |
142
+ | Basic | Username:password base64 | `Authorization: Basic ...` |
143
+ | Bearer | Token authentication | `Authorization: Bearer ...` |
144
+ | API Key | Custom API key | `X-API-Key: ...` |
145
+
146
+ ---
147
+
148
+ ## Webhook Response
149
+
150
+ Send a custom response back to the webhook caller.
151
+
152
+ ### Parameters
153
+
154
+ <ParamField path="statusCode" type="number" default="200">
155
+ HTTP status code to return
156
+ </ParamField>
157
+
158
+ <ParamField path="body" type="string">
159
+ Response body. Supports template variables.
160
+ </ParamField>
161
+
162
+ <ParamField path="contentType" type="select" default="application/json">
163
+ Content-Type header: application/json, text/plain, text/html
164
+ </ParamField>
165
+
166
+ ### Example Responses
167
+
168
+ **Success Response:**
169
+ ```
170
+ Status Code: 200
171
+ Body: {"success": true, "message": "Order received", "id": "{{generated.id}}"}
172
+ Content Type: application/json
173
+ ```
174
+
175
+ **Error Response:**
176
+ ```
177
+ Status Code: 400
178
+ Body: {"error": "Invalid request", "details": "{{validation.error}}"}
179
+ Content Type: application/json
180
+ ```
181
+
182
+ **HTML Response:**
183
+ ```
184
+ Status Code: 200
185
+ Body: <html><body><h1>Thank you!</h1></body></html>
186
+ Content Type: text/html
187
+ ```
188
+
189
+ ---
190
+
191
+ ## Common Workflows
192
+
193
+ ### API Endpoint
194
+
195
+ Create a simple API endpoint:
196
+
197
+ ```
198
+ [Webhook Trigger] --> [Python Executor] --> [Webhook Response]
199
+ (path: api) (process data) (return result)
200
+ ```
201
+
202
+ **Test:**
203
+ ```bash
204
+ curl -X POST http://localhost:3010/webhook/api \
205
+ -H "Content-Type: application/json" \
206
+ -d '{"action": "calculate", "value": 100}'
207
+ ```
208
+
209
+ ### Third-Party Integration
210
+
211
+ Receive events from external services:
212
+
213
+ ```
214
+ [Webhook Trigger] --> [HTTP Request] --> [WhatsApp Send]
215
+ (stripe/github) (fetch details) (notify admin)
216
+ ```
217
+
218
+ ### Data Pipeline
219
+
220
+ Forward data to multiple destinations:
221
+
222
+ ```
223
+ [Webhook Trigger] --> [HTTP Request #1] (Database API)
224
+ |
225
+ --> [HTTP Request #2] (Analytics)
226
+ |
227
+ --> [WhatsApp Send] (Notification)
228
+ ```
229
+
230
+ ### AI-Powered API
231
+
232
+ Create an AI endpoint:
233
+
234
+ ```
235
+ [Webhook Trigger] --> [OpenAI Chat] --> [Webhook Response]
236
+ ```
237
+
238
+ **Prompt:** `{{webhookTrigger.body.prompt}}`
239
+
240
+ **Response:** `{{openaiChatModel.response}}`
241
+
242
+ ---
243
+
244
+ ## Testing Webhooks
245
+
246
+ ### Using curl
247
+
248
+ ```bash
249
+ # GET request
250
+ curl http://localhost:3010/webhook/test
251
+
252
+ # POST with JSON
253
+ curl -X POST http://localhost:3010/webhook/orders \
254
+ -H "Content-Type: application/json" \
255
+ -d '{"item": "Widget", "quantity": 5}'
256
+
257
+ # With authentication
258
+ curl -X POST http://localhost:3010/webhook/secure \
259
+ -H "Authorization: Bearer your-token" \
260
+ -d '{"data": "value"}'
261
+ ```
262
+
263
+ ### Using HTTPie
264
+
265
+ ```bash
266
+ http POST localhost:3010/webhook/test item=Widget quantity:=5
267
+ ```
268
+
269
+ ### External Testing
270
+
271
+ Use services like:
272
+ - [webhook.site](https://webhook.site) - Test outgoing webhooks
273
+ - [ngrok](https://ngrok.com) - Expose local webhooks publicly
274
+
275
+ ---
276
+
277
+ ## Tips
278
+
279
+ <Tip>
280
+ Use **meaningful paths** that describe the purpose: `/webhook/orders`, `/webhook/stripe-events`
281
+ </Tip>
282
+
283
+ <Tip>
284
+ Always **validate incoming data** before processing with Python Executor or similar.
285
+ </Tip>
286
+
287
+ <Tip>
288
+ Return **appropriate status codes**: 200 (success), 400 (bad request), 500 (server error)
289
+ </Tip>
290
+
291
+ <Warning>
292
+ In production, always enable authentication on webhooks that modify data.
293
+ </Warning>
294
+
295
+ ---
296
+
297
+ ## Troubleshooting
298
+
299
+ <Accordion title="Webhook not receiving requests">
300
+ - Verify workflow is **deployed** (not just saved)
301
+ - Check the path is correct (no leading slash)
302
+ - Ensure backend is running on correct port
303
+ - Check firewall/network settings
304
+ </Accordion>
305
+
306
+ <Accordion title="HTTP Request fails">
307
+ - Verify URL is correct and accessible
308
+ - Check headers (especially Content-Type)
309
+ - Look for CORS issues if calling from browser
310
+ - Check timeout setting for slow APIs
311
+ </Accordion>
312
+
313
+ <Accordion title="Response not sent">
314
+ - Ensure Webhook Response is connected to workflow
315
+ - Verify template variables resolve correctly
316
+ - Check status code is valid (100-599)
317
+ </Accordion>
318
+
319
+ ---
320
+
321
+ ## Related
322
+
323
+ <CardGroup cols={2}>
324
+ <Card title="Quick Start" icon="rocket" href="/quickstart">
325
+ Build a webhook workflow
326
+ </Card>
327
+ <Card title="Python Executor" icon="code" href="/nodes/schedulers">
328
+ Process webhook data
329
+ </Card>
330
+ </CardGroup>