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,84 @@
1
+ ---
2
+ name: scheduler-skill
3
+ description: Schedule tasks and set timers. Use when user wants to schedule something, set a reminder, create a recurring task, or use cron expressions.
4
+ metadata:
5
+ author: machina
6
+ version: "2.0"
7
+ category: automation
8
+ ---
9
+
10
+ # Task Scheduling
11
+
12
+ This skill provides context for scheduling tasks, setting timers, and creating recurring jobs.
13
+
14
+ ## How It Works
15
+
16
+ This skill provides instructions and context. Scheduling is handled through workflow deployment:
17
+
18
+ - **Cron Scheduler** trigger node - Recurring schedules using cron expressions
19
+ - **Timer** trigger node - One-time delayed execution
20
+ - **Workflow Trigger** node - Manual workflow execution
21
+
22
+ ## Capabilities
23
+
24
+ When used with workflow triggers:
25
+ - Create one-time timers
26
+ - Set up recurring schedules with cron expressions
27
+ - Deploy workflows that run on schedule
28
+
29
+ ## Cron Expression Format
30
+
31
+ ```
32
+ * * * * *
33
+ | | | | |
34
+ | | | | +-- Day of week (0-7, Sun=0 or 7)
35
+ | | | +---- Month (1-12)
36
+ | | +------ Day of month (1-31)
37
+ | +-------- Hour (0-23)
38
+ +---------- Minute (0-59)
39
+ ```
40
+
41
+ ### Common Patterns
42
+
43
+ | Pattern | Description |
44
+ |---------|-------------|
45
+ | `0 9 * * *` | Every day at 9:00 AM |
46
+ | `0 9 * * 1-5` | Weekdays at 9:00 AM |
47
+ | `*/15 * * * *` | Every 15 minutes |
48
+ | `0 0 1 * *` | First day of each month |
49
+ | `0 8,12,18 * * *` | At 8am, noon, and 6pm |
50
+
51
+ ## Example Interactions
52
+
53
+ **User**: "Remind me in 30 minutes"
54
+ - This requires setting up a Timer trigger workflow
55
+ - Inform user: "I can help you create a scheduled workflow. Set up a Timer trigger node with 30 minute delay."
56
+
57
+ **User**: "Send a daily report at 9am"
58
+ - This requires a Cron Scheduler workflow
59
+ - Inform user: "Create a workflow with Cron Scheduler trigger using expression '0 9 * * *'"
60
+
61
+ **User**: "Check for updates every hour"
62
+ - This requires a Cron Scheduler workflow
63
+ - Inform user: "Create a workflow with Cron Scheduler trigger using expression '0 * * * *'"
64
+
65
+ ## Workflow-Based Scheduling
66
+
67
+ In this system, scheduling is achieved through:
68
+
69
+ 1. **Trigger Nodes**: Cron Scheduler or Timer nodes start workflows
70
+ 2. **Workflow Deployment**: Deploy the workflow to activate the schedule
71
+ 3. **Cancel**: Undeploy the workflow to cancel the schedule
72
+
73
+ ## Best Practices
74
+
75
+ 1. Explain that schedules require workflow deployment
76
+ 2. Provide the cron expression for the user's request
77
+ 3. Confirm timezone considerations for time-sensitive tasks
78
+ 4. Help users understand workflow-based scheduling model
79
+
80
+ ## Limitations
81
+
82
+ - This skill provides guidance only
83
+ - Actual scheduling requires workflow creation and deployment
84
+ - Cannot directly create/cancel schedules via chat commands
@@ -0,0 +1,283 @@
1
+ ---
2
+ name: whatsapp-skill
3
+ description: Send WhatsApp messages, query contacts/groups, retrieve chat history. Look up contact info by name or phone for sending/replying.
4
+ metadata:
5
+ author: machina
6
+ version: "3.0"
7
+ category: messaging
8
+ ---
9
+
10
+ # WhatsApp Messaging Skill
11
+
12
+ This skill provides context for WhatsApp messaging capabilities.
13
+
14
+ ## How It Works
15
+
16
+ This skill provides instructions and context. To execute WhatsApp actions, connect the appropriate **tool nodes** to the Chat Agent's `input-tools` handle:
17
+
18
+ - **WhatsApp Send** node - Send messages to contacts or groups
19
+ - **WhatsApp DB** node - Query contacts, groups, and chat history
20
+
21
+ ## whatsapp_send Tool
22
+
23
+ Send messages to contacts or groups.
24
+
25
+ ### Schema Fields
26
+
27
+ | Field | Type | Required | Description |
28
+ |-------|------|----------|-------------|
29
+ | recipient_type | string | Yes | "phone" for individual or "group" for group chat |
30
+ | phone | string | If phone | Phone number without + prefix (e.g., 1234567890) |
31
+ | group_id | string | If group | Group JID (e.g., 123456789@g.us) |
32
+ | message_type | string | Yes | "text", "image", "video", "audio", "document", "sticker", "location", "contact" |
33
+ | message | string | If text | Text message content |
34
+ | media_url | string | If media | URL for image/video/audio/document/sticker |
35
+ | caption | string | No | Caption for media messages |
36
+ | latitude | float | If location | Latitude coordinate |
37
+ | longitude | float | If location | Longitude coordinate |
38
+ | location_name | string | No | Display name for location |
39
+ | address | string | No | Address text for location |
40
+ | contact_name | string | If contact | Contact display name |
41
+ | vcard | string | If contact | vCard 3.0 format string |
42
+
43
+ ### Examples
44
+
45
+ **Send text message:**
46
+ ```json
47
+ {
48
+ "recipient_type": "phone",
49
+ "phone": "1234567890",
50
+ "message_type": "text",
51
+ "message": "Hello! How are you?"
52
+ }
53
+ ```
54
+
55
+ **Send image with caption:**
56
+ ```json
57
+ {
58
+ "recipient_type": "phone",
59
+ "phone": "1234567890",
60
+ "message_type": "image",
61
+ "media_url": "https://example.com/photo.jpg",
62
+ "caption": "Check out this photo!"
63
+ }
64
+ ```
65
+
66
+ **Send to group:**
67
+ ```json
68
+ {
69
+ "recipient_type": "group",
70
+ "group_id": "123456789012345678@g.us",
71
+ "message_type": "text",
72
+ "message": "Hello everyone!"
73
+ }
74
+ ```
75
+
76
+ **Send location:**
77
+ ```json
78
+ {
79
+ "recipient_type": "phone",
80
+ "phone": "1234567890",
81
+ "message_type": "location",
82
+ "latitude": 37.7749,
83
+ "longitude": -122.4194,
84
+ "location_name": "San Francisco",
85
+ "address": "San Francisco, CA, USA"
86
+ }
87
+ ```
88
+
89
+ ### Response Format
90
+
91
+ ```json
92
+ {
93
+ "success": true,
94
+ "recipient": "1234567890",
95
+ "recipient_type": "phone",
96
+ "message_type": "text",
97
+ "details": {
98
+ "status": "sent",
99
+ "preview": "Hello! How are you?",
100
+ "timestamp": "2025-01-30T12:00:00"
101
+ }
102
+ }
103
+ ```
104
+
105
+ ## whatsapp_db Tool
106
+
107
+ Query WhatsApp database - contacts, groups, messages.
108
+
109
+ ### Schema Fields
110
+
111
+ | Field | Type | Required | Description |
112
+ |-------|------|----------|-------------|
113
+ | operation | string | Yes | "chat_history", "search_groups", "get_group_info", "get_contact_info", "list_contacts", "check_contacts" |
114
+ | chat_type | string | For chat_history | "individual" or "group" |
115
+ | phone | string | Varies | Phone number for chat_history (individual), get_contact_info |
116
+ | group_id | string | Varies | Group JID for chat_history (group), get_group_info |
117
+ | message_filter | string | No | For chat_history: "all" or "text_only" |
118
+ | group_filter | string | No | For chat_history (group): "all" or "contact" |
119
+ | sender_phone | string | No | For chat_history with group_filter="contact" |
120
+ | limit | int | No | Max results. chat_history: 1-500 (default 50), search_groups: 1-50 (default 20), list_contacts: 1-100 (default 50) |
121
+ | offset | int | No | For chat_history: pagination offset |
122
+ | query | string | No | Search query for search_groups, list_contacts. Use specific queries to narrow results |
123
+ | phones | string | For check_contacts | Comma-separated phone numbers |
124
+ | participant_limit | int | No | For get_group_info: max participants (1-100, default 50) |
125
+
126
+ **Important:** Always use small limits and specific queries to avoid context overflow errors.
127
+
128
+ ### Operations
129
+
130
+ #### list_contacts
131
+ List contacts with saved names. Useful for finding someone by name.
132
+
133
+ ```json
134
+ {
135
+ "operation": "list_contacts",
136
+ "query": "mom",
137
+ "limit": 10
138
+ }
139
+ ```
140
+
141
+ #### get_contact_info
142
+ Get full contact info for sending/replying.
143
+
144
+ ```json
145
+ {
146
+ "operation": "get_contact_info",
147
+ "phone": "919876543210"
148
+ }
149
+ ```
150
+
151
+ #### search_groups
152
+ Search groups by name. Use specific query to narrow results.
153
+
154
+ ```json
155
+ {
156
+ "operation": "search_groups",
157
+ "query": "family",
158
+ "limit": 10
159
+ }
160
+ ```
161
+
162
+ #### get_group_info
163
+ Get group details with participant names. Large groups may have many participants.
164
+
165
+ ```json
166
+ {
167
+ "operation": "get_group_info",
168
+ "group_id": "120363123456789@g.us",
169
+ "participant_limit": 20
170
+ }
171
+ ```
172
+
173
+ #### chat_history
174
+ Retrieve message history.
175
+
176
+ ```json
177
+ {
178
+ "operation": "chat_history",
179
+ "chat_type": "individual",
180
+ "phone": "1234567890",
181
+ "limit": 20
182
+ }
183
+ ```
184
+
185
+ ```json
186
+ {
187
+ "operation": "chat_history",
188
+ "chat_type": "group",
189
+ "group_id": "123456789012345678@g.us",
190
+ "message_filter": "text_only",
191
+ "limit": 50
192
+ }
193
+ ```
194
+
195
+ #### check_contacts
196
+ Check WhatsApp registration status.
197
+
198
+ ```json
199
+ {
200
+ "operation": "check_contacts",
201
+ "phones": "1234567890,0987654321"
202
+ }
203
+ ```
204
+
205
+ ### Response Formats
206
+
207
+ **list_contacts response:**
208
+ ```json
209
+ {
210
+ "success": true,
211
+ "operation": "list_contacts",
212
+ "contacts": [
213
+ {"phone": "919876543210", "name": "Mom", "jid": "919876543210@s.whatsapp.net"}
214
+ ],
215
+ "total": 1
216
+ }
217
+ ```
218
+
219
+ **chat_history response:**
220
+ ```json
221
+ {
222
+ "success": true,
223
+ "operation": "chat_history",
224
+ "messages": [
225
+ {
226
+ "index": 1,
227
+ "message_id": "ABC123",
228
+ "sender": "919876543210@s.whatsapp.net",
229
+ "text": "Hello!",
230
+ "timestamp": "2025-01-30T12:00:00",
231
+ "is_from_me": false
232
+ }
233
+ ],
234
+ "total": 50,
235
+ "has_more": true
236
+ }
237
+ ```
238
+
239
+ **get_group_info response:**
240
+ ```json
241
+ {
242
+ "success": true,
243
+ "operation": "get_group_info",
244
+ "name": "Family Group",
245
+ "jid": "123456789@g.us",
246
+ "participants": [
247
+ {"phone": "919876543210", "name": "Mom", "is_admin": true},
248
+ {"phone": "919876543211", "name": "Dad", "is_admin": false}
249
+ ]
250
+ }
251
+ ```
252
+
253
+ ## Common Workflows
254
+
255
+ ### Send message to someone by name
256
+
257
+ 1. Use `list_contacts` with query to find the person
258
+ 2. Get their phone number from the result
259
+ 3. Use `whatsapp_send` with the phone number
260
+
261
+ ### Reply to someone in a group
262
+
263
+ 1. Use `get_group_info` to get participant names and phones
264
+ 2. Use `whatsapp_send` with recipient_type="phone" and the person's phone
265
+
266
+ ### Find and message a group
267
+
268
+ 1. Use `search_groups` to find the group by name
269
+ 2. Use `whatsapp_send` with recipient_type="group" and the group_id
270
+
271
+ ## Guidelines
272
+
273
+ 1. **Phone numbers**: Always use without + prefix, just digits (e.g., 919876543210)
274
+ 2. **Groups**: Use JID format ending in @g.us
275
+ 3. **Contact lookup**: Use list_contacts first if you only have a name
276
+ 4. **Media URLs**: Must be publicly accessible URLs
277
+ 5. **Pagination**: Use offset with limit to page through chat history
278
+
279
+ ## Setup Requirements
280
+
281
+ 1. Connect this skill to Chat Agent's `input-skill` handle
282
+ 2. Connect WhatsApp tool nodes to Chat Agent's `input-tools` handle
283
+ 3. Ensure WhatsApp is connected (green status indicator)