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.
- package/.env.template +71 -0
- package/LICENSE +21 -0
- package/README.md +87 -0
- package/bin/cli.js +159 -0
- package/client/.dockerignore +45 -0
- package/client/Dockerfile +68 -0
- package/client/eslint.config.js +29 -0
- package/client/index.html +13 -0
- package/client/nginx.conf +66 -0
- package/client/package.json +48 -0
- package/client/src/App.tsx +27 -0
- package/client/src/Dashboard.tsx +1173 -0
- package/client/src/ParameterPanel.tsx +301 -0
- package/client/src/components/AIAgentNode.tsx +321 -0
- package/client/src/components/APIKeyValidator.tsx +118 -0
- package/client/src/components/ClaudeChatModelNode.tsx +18 -0
- package/client/src/components/ConditionalEdge.tsx +189 -0
- package/client/src/components/CredentialsModal.tsx +306 -0
- package/client/src/components/EdgeConditionEditor.tsx +443 -0
- package/client/src/components/GeminiChatModelNode.tsx +18 -0
- package/client/src/components/GenericNode.tsx +357 -0
- package/client/src/components/LocationParameterPanel.tsx +154 -0
- package/client/src/components/ModelNode.tsx +286 -0
- package/client/src/components/OpenAIChatModelNode.tsx +18 -0
- package/client/src/components/OutputPanel.tsx +471 -0
- package/client/src/components/ParameterRenderer.tsx +1874 -0
- package/client/src/components/SkillEditorModal.tsx +417 -0
- package/client/src/components/SquareNode.tsx +797 -0
- package/client/src/components/StartNode.tsx +250 -0
- package/client/src/components/ToolkitNode.tsx +365 -0
- package/client/src/components/TriggerNode.tsx +463 -0
- package/client/src/components/auth/LoginPage.tsx +247 -0
- package/client/src/components/auth/ProtectedRoute.tsx +59 -0
- package/client/src/components/base/BaseChatModelNode.tsx +271 -0
- package/client/src/components/icons/AIProviderIcons.tsx +50 -0
- package/client/src/components/maps/GoogleMapsPicker.tsx +137 -0
- package/client/src/components/maps/MapsPreviewPanel.tsx +110 -0
- package/client/src/components/maps/index.ts +26 -0
- package/client/src/components/parameterPanel/InputSection.tsx +1094 -0
- package/client/src/components/parameterPanel/LocationPanelLayout.tsx +65 -0
- package/client/src/components/parameterPanel/MapsSection.tsx +92 -0
- package/client/src/components/parameterPanel/MiddleSection.tsx +571 -0
- package/client/src/components/parameterPanel/OutputSection.tsx +81 -0
- package/client/src/components/parameterPanel/ParameterPanelLayout.tsx +82 -0
- package/client/src/components/parameterPanel/ToolSchemaEditor.tsx +436 -0
- package/client/src/components/parameterPanel/index.ts +42 -0
- package/client/src/components/shared/DataPanel.tsx +142 -0
- package/client/src/components/shared/JSONTreeRenderer.tsx +106 -0
- package/client/src/components/ui/AIResultModal.tsx +204 -0
- package/client/src/components/ui/AndroidSettingsPanel.tsx +401 -0
- package/client/src/components/ui/CodeEditor.tsx +81 -0
- package/client/src/components/ui/CollapsibleSection.tsx +88 -0
- package/client/src/components/ui/ComponentItem.tsx +154 -0
- package/client/src/components/ui/ComponentPalette.tsx +321 -0
- package/client/src/components/ui/ConsolePanel.tsx +1074 -0
- package/client/src/components/ui/ErrorBoundary.tsx +196 -0
- package/client/src/components/ui/InputNodesPanel.tsx +204 -0
- package/client/src/components/ui/MapSelector.tsx +314 -0
- package/client/src/components/ui/Modal.tsx +149 -0
- package/client/src/components/ui/NodeContextMenu.tsx +192 -0
- package/client/src/components/ui/NodeOutputPanel.tsx +1150 -0
- package/client/src/components/ui/OutputDisplayPanel.tsx +381 -0
- package/client/src/components/ui/SettingsPanel.tsx +243 -0
- package/client/src/components/ui/TopToolbar.tsx +736 -0
- package/client/src/components/ui/WhatsAppSettingsPanel.tsx +345 -0
- package/client/src/components/ui/WorkflowSidebar.tsx +294 -0
- package/client/src/config/antdTheme.ts +186 -0
- package/client/src/config/api.ts +54 -0
- package/client/src/contexts/AuthContext.tsx +221 -0
- package/client/src/contexts/ThemeContext.tsx +42 -0
- package/client/src/contexts/WebSocketContext.tsx +1971 -0
- package/client/src/factories/baseChatModelFactory.ts +256 -0
- package/client/src/hooks/useAndroidOperations.ts +164 -0
- package/client/src/hooks/useApiKeyValidation.ts +107 -0
- package/client/src/hooks/useApiKeys.ts +238 -0
- package/client/src/hooks/useAppTheme.ts +17 -0
- package/client/src/hooks/useComponentPalette.ts +51 -0
- package/client/src/hooks/useCopyPaste.ts +155 -0
- package/client/src/hooks/useDragAndDrop.ts +124 -0
- package/client/src/hooks/useDragVariable.ts +88 -0
- package/client/src/hooks/useExecution.ts +313 -0
- package/client/src/hooks/useParameterPanel.ts +176 -0
- package/client/src/hooks/useReactFlowNodes.ts +189 -0
- package/client/src/hooks/useToolSchema.ts +209 -0
- package/client/src/hooks/useWhatsApp.ts +196 -0
- package/client/src/hooks/useWorkflowManagement.ts +46 -0
- package/client/src/index.css +315 -0
- package/client/src/main.tsx +19 -0
- package/client/src/nodeDefinitions/aiAgentNodes.ts +336 -0
- package/client/src/nodeDefinitions/aiModelNodes.ts +340 -0
- package/client/src/nodeDefinitions/androidDeviceNodes.ts +140 -0
- package/client/src/nodeDefinitions/androidServiceNodes.ts +383 -0
- package/client/src/nodeDefinitions/chatNodes.ts +135 -0
- package/client/src/nodeDefinitions/codeNodes.ts +54 -0
- package/client/src/nodeDefinitions/documentNodes.ts +379 -0
- package/client/src/nodeDefinitions/index.ts +15 -0
- package/client/src/nodeDefinitions/locationNodes.ts +463 -0
- package/client/src/nodeDefinitions/schedulerNodes.ts +220 -0
- package/client/src/nodeDefinitions/skillNodes.ts +211 -0
- package/client/src/nodeDefinitions/toolNodes.ts +198 -0
- package/client/src/nodeDefinitions/utilityNodes.ts +284 -0
- package/client/src/nodeDefinitions/whatsappNodes.ts +865 -0
- package/client/src/nodeDefinitions/workflowNodes.ts +41 -0
- package/client/src/nodeDefinitions.ts +104 -0
- package/client/src/schemas/workflowSchema.ts +264 -0
- package/client/src/services/dynamicParameterService.ts +96 -0
- package/client/src/services/execution/aiAgentExecutionService.ts +35 -0
- package/client/src/services/executionService.ts +232 -0
- package/client/src/services/workflowApi.ts +91 -0
- package/client/src/store/useAppStore.ts +582 -0
- package/client/src/styles/theme.ts +508 -0
- package/client/src/styles/zIndex.ts +17 -0
- package/client/src/types/ComponentTypes.ts +39 -0
- package/client/src/types/EdgeCondition.ts +231 -0
- package/client/src/types/INodeProperties.ts +288 -0
- package/client/src/types/NodeTypes.ts +28 -0
- package/client/src/utils/formatters.ts +33 -0
- package/client/src/utils/googleMapsLoader.ts +140 -0
- package/client/src/utils/locationUtils.ts +85 -0
- package/client/src/utils/nodeUtils.ts +31 -0
- package/client/src/utils/workflow.ts +30 -0
- package/client/src/utils/workflowExport.ts +120 -0
- package/client/src/vite-env.d.ts +12 -0
- package/client/tailwind.config.js +60 -0
- package/client/tsconfig.json +25 -0
- package/client/tsconfig.node.json +11 -0
- package/client/vite.config.js +35 -0
- package/docker-compose.prod.yml +107 -0
- package/docker-compose.yml +104 -0
- package/docs-MachinaOs/README.md +85 -0
- package/docs-MachinaOs/deployment/docker.mdx +228 -0
- package/docs-MachinaOs/deployment/production.mdx +345 -0
- package/docs-MachinaOs/docs.json +75 -0
- package/docs-MachinaOs/faq.mdx +309 -0
- package/docs-MachinaOs/favicon.svg +5 -0
- package/docs-MachinaOs/installation.mdx +160 -0
- package/docs-MachinaOs/introduction.mdx +114 -0
- package/docs-MachinaOs/logo/dark.svg +6 -0
- package/docs-MachinaOs/logo/light.svg +6 -0
- package/docs-MachinaOs/nodes/ai-agent.mdx +216 -0
- package/docs-MachinaOs/nodes/ai-models.mdx +240 -0
- package/docs-MachinaOs/nodes/android.mdx +411 -0
- package/docs-MachinaOs/nodes/overview.mdx +181 -0
- package/docs-MachinaOs/nodes/schedulers.mdx +316 -0
- package/docs-MachinaOs/nodes/webhooks.mdx +330 -0
- package/docs-MachinaOs/nodes/whatsapp.mdx +305 -0
- package/docs-MachinaOs/quickstart.mdx +119 -0
- package/docs-MachinaOs/tutorials/ai-agent-workflow.mdx +177 -0
- package/docs-MachinaOs/tutorials/android-automation.mdx +242 -0
- package/docs-MachinaOs/tutorials/first-workflow.mdx +134 -0
- package/docs-MachinaOs/tutorials/whatsapp-automation.mdx +185 -0
- package/nul +0 -0
- package/package.json +70 -0
- package/scripts/build.js +158 -0
- package/scripts/check-ports.ps1 +33 -0
- package/scripts/clean.js +40 -0
- package/scripts/docker.js +93 -0
- package/scripts/kill-port.ps1 +154 -0
- package/scripts/start.js +210 -0
- package/scripts/stop.js +325 -0
- package/server/.dockerignore +44 -0
- package/server/Dockerfile +45 -0
- package/server/constants.py +249 -0
- package/server/core/__init__.py +1 -0
- package/server/core/cache.py +461 -0
- package/server/core/config.py +128 -0
- package/server/core/container.py +99 -0
- package/server/core/database.py +1211 -0
- package/server/core/logging.py +314 -0
- package/server/main.py +289 -0
- package/server/middleware/__init__.py +5 -0
- package/server/middleware/auth.py +89 -0
- package/server/models/__init__.py +1 -0
- package/server/models/auth.py +52 -0
- package/server/models/cache.py +24 -0
- package/server/models/database.py +211 -0
- package/server/models/nodes.py +455 -0
- package/server/package.json +9 -0
- package/server/pyproject.toml +72 -0
- package/server/requirements.txt +83 -0
- package/server/routers/__init__.py +1 -0
- package/server/routers/android.py +294 -0
- package/server/routers/auth.py +203 -0
- package/server/routers/database.py +151 -0
- package/server/routers/maps.py +142 -0
- package/server/routers/nodejs_compat.py +289 -0
- package/server/routers/webhook.py +90 -0
- package/server/routers/websocket.py +2127 -0
- package/server/routers/whatsapp.py +761 -0
- package/server/routers/workflow.py +200 -0
- package/server/services/__init__.py +1 -0
- package/server/services/ai.py +2415 -0
- package/server/services/android/__init__.py +27 -0
- package/server/services/android/broadcaster.py +114 -0
- package/server/services/android/client.py +608 -0
- package/server/services/android/manager.py +78 -0
- package/server/services/android/protocol.py +165 -0
- package/server/services/android_service.py +588 -0
- package/server/services/auth.py +131 -0
- package/server/services/chat_client.py +160 -0
- package/server/services/deployment/__init__.py +12 -0
- package/server/services/deployment/manager.py +706 -0
- package/server/services/deployment/state.py +47 -0
- package/server/services/deployment/triggers.py +275 -0
- package/server/services/event_waiter.py +785 -0
- package/server/services/execution/__init__.py +77 -0
- package/server/services/execution/cache.py +769 -0
- package/server/services/execution/conditions.py +373 -0
- package/server/services/execution/dlq.py +132 -0
- package/server/services/execution/executor.py +1351 -0
- package/server/services/execution/models.py +531 -0
- package/server/services/execution/recovery.py +235 -0
- package/server/services/handlers/__init__.py +126 -0
- package/server/services/handlers/ai.py +355 -0
- package/server/services/handlers/android.py +260 -0
- package/server/services/handlers/code.py +278 -0
- package/server/services/handlers/document.py +598 -0
- package/server/services/handlers/http.py +193 -0
- package/server/services/handlers/polyglot.py +105 -0
- package/server/services/handlers/tools.py +845 -0
- package/server/services/handlers/triggers.py +107 -0
- package/server/services/handlers/utility.py +822 -0
- package/server/services/handlers/whatsapp.py +476 -0
- package/server/services/maps.py +289 -0
- package/server/services/memory_store.py +103 -0
- package/server/services/node_executor.py +375 -0
- package/server/services/parameter_resolver.py +218 -0
- package/server/services/polyglot_client.py +169 -0
- package/server/services/scheduler.py +155 -0
- package/server/services/skill_loader.py +417 -0
- package/server/services/status_broadcaster.py +826 -0
- package/server/services/temporal/__init__.py +23 -0
- package/server/services/temporal/activities.py +344 -0
- package/server/services/temporal/client.py +76 -0
- package/server/services/temporal/executor.py +147 -0
- package/server/services/temporal/worker.py +251 -0
- package/server/services/temporal/workflow.py +355 -0
- package/server/services/temporal/ws_client.py +236 -0
- package/server/services/text.py +111 -0
- package/server/services/user_auth.py +172 -0
- package/server/services/websocket_client.py +29 -0
- package/server/services/workflow.py +597 -0
- package/server/skills/android-skill/SKILL.md +82 -0
- package/server/skills/assistant-personality/SKILL.md +45 -0
- package/server/skills/code-skill/SKILL.md +140 -0
- package/server/skills/http-skill/SKILL.md +161 -0
- package/server/skills/maps-skill/SKILL.md +170 -0
- package/server/skills/memory-skill/SKILL.md +154 -0
- package/server/skills/scheduler-skill/SKILL.md +84 -0
- package/server/skills/whatsapp-skill/SKILL.md +283 -0
- package/server/uv.lock +2916 -0
- package/server/whatsapp-rpc/.dockerignore +30 -0
- package/server/whatsapp-rpc/Dockerfile +44 -0
- package/server/whatsapp-rpc/Dockerfile.web +17 -0
- package/server/whatsapp-rpc/README.md +139 -0
- package/server/whatsapp-rpc/cli.js +95 -0
- package/server/whatsapp-rpc/configs/config.yaml +7 -0
- package/server/whatsapp-rpc/docker-compose.yml +35 -0
- package/server/whatsapp-rpc/docs/API.md +410 -0
- package/server/whatsapp-rpc/go.mod +67 -0
- package/server/whatsapp-rpc/go.sum +203 -0
- package/server/whatsapp-rpc/package.json +30 -0
- package/server/whatsapp-rpc/schema.json +1294 -0
- package/server/whatsapp-rpc/scripts/clean.cjs +66 -0
- package/server/whatsapp-rpc/scripts/cli.js +162 -0
- package/server/whatsapp-rpc/src/go/cmd/server/main.go +91 -0
- package/server/whatsapp-rpc/src/go/config/config.go +49 -0
- package/server/whatsapp-rpc/src/go/rpc/rpc.go +446 -0
- package/server/whatsapp-rpc/src/go/rpc/server.go +112 -0
- package/server/whatsapp-rpc/src/go/whatsapp/history.go +166 -0
- package/server/whatsapp-rpc/src/go/whatsapp/messages.go +390 -0
- package/server/whatsapp-rpc/src/go/whatsapp/service.go +2130 -0
- package/server/whatsapp-rpc/src/go/whatsapp/types.go +261 -0
- package/server/whatsapp-rpc/src/python/pyproject.toml +15 -0
- package/server/whatsapp-rpc/src/python/whatsapp_rpc/__init__.py +4 -0
- package/server/whatsapp-rpc/src/python/whatsapp_rpc/client.py +427 -0
- package/server/whatsapp-rpc/web/app.py +609 -0
- package/server/whatsapp-rpc/web/requirements.txt +6 -0
- package/server/whatsapp-rpc/web/rpc_client.py +427 -0
- package/server/whatsapp-rpc/web/static/openapi.yaml +59 -0
- package/server/whatsapp-rpc/web/templates/base.html +150 -0
- package/server/whatsapp-rpc/web/templates/contacts.html +240 -0
- package/server/whatsapp-rpc/web/templates/dashboard.html +320 -0
- package/server/whatsapp-rpc/web/templates/groups.html +328 -0
- package/server/whatsapp-rpc/web/templates/messages.html +465 -0
- package/server/whatsapp-rpc/web/templates/messaging.html +681 -0
- package/server/whatsapp-rpc/web/templates/send.html +259 -0
- 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)
|