machinaos 0.0.1 → 0.0.7
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 -71
- package/LICENSE +21 -21
- package/README.md +163 -87
- package/bin/cli.js +62 -106
- package/client/.dockerignore +45 -45
- package/client/Dockerfile +68 -68
- package/client/dist/assets/index-DFSC53FP.css +1 -0
- package/client/dist/assets/index-fJ-1gTf5.js +613 -0
- package/client/dist/index.html +14 -0
- package/client/eslint.config.js +34 -16
- package/client/nginx.conf +66 -66
- package/client/package.json +61 -48
- package/client/src/App.tsx +27 -27
- package/client/src/Dashboard.tsx +1200 -1172
- package/client/src/ParameterPanel.tsx +302 -300
- package/client/src/components/AIAgentNode.tsx +315 -321
- package/client/src/components/APIKeyValidator.tsx +117 -117
- package/client/src/components/ClaudeChatModelNode.tsx +17 -17
- package/client/src/components/CredentialsModal.tsx +1200 -306
- package/client/src/components/GeminiChatModelNode.tsx +17 -17
- package/client/src/components/GenericNode.tsx +356 -356
- package/client/src/components/LocationParameterPanel.tsx +153 -153
- package/client/src/components/ModelNode.tsx +285 -285
- package/client/src/components/OpenAIChatModelNode.tsx +17 -17
- package/client/src/components/OutputPanel.tsx +470 -470
- package/client/src/components/ParameterRenderer.tsx +1873 -1873
- package/client/src/components/SkillEditorModal.tsx +3 -3
- package/client/src/components/SquareNode.tsx +812 -796
- package/client/src/components/ToolkitNode.tsx +365 -365
- package/client/src/components/auth/LoginPage.tsx +247 -247
- package/client/src/components/auth/ProtectedRoute.tsx +59 -59
- package/client/src/components/base/BaseChatModelNode.tsx +270 -270
- package/client/src/components/icons/AIProviderIcons.tsx +50 -50
- package/client/src/components/maps/GoogleMapsPicker.tsx +136 -136
- package/client/src/components/maps/MapsPreviewPanel.tsx +109 -109
- package/client/src/components/maps/index.ts +25 -25
- package/client/src/components/parameterPanel/InputSection.tsx +1094 -1094
- package/client/src/components/parameterPanel/LocationPanelLayout.tsx +64 -64
- package/client/src/components/parameterPanel/MapsSection.tsx +91 -91
- package/client/src/components/parameterPanel/MiddleSection.tsx +867 -571
- package/client/src/components/parameterPanel/OutputSection.tsx +80 -80
- package/client/src/components/parameterPanel/ParameterPanelLayout.tsx +81 -81
- package/client/src/components/parameterPanel/ToolSchemaEditor.tsx +436 -436
- package/client/src/components/parameterPanel/index.ts +41 -41
- package/client/src/components/shared/DataPanel.tsx +142 -142
- package/client/src/components/shared/JSONTreeRenderer.tsx +105 -105
- package/client/src/components/ui/AIResultModal.tsx +203 -203
- package/client/src/components/ui/ApiKeyInput.tsx +93 -0
- package/client/src/components/ui/CodeEditor.tsx +81 -81
- package/client/src/components/ui/CollapsibleSection.tsx +87 -87
- package/client/src/components/ui/ComponentItem.tsx +153 -153
- package/client/src/components/ui/ComponentPalette.tsx +320 -320
- package/client/src/components/ui/ConsolePanel.tsx +151 -43
- package/client/src/components/ui/ErrorBoundary.tsx +195 -195
- package/client/src/components/ui/InputNodesPanel.tsx +203 -203
- package/client/src/components/ui/MapSelector.tsx +313 -313
- package/client/src/components/ui/Modal.tsx +151 -148
- package/client/src/components/ui/NodeOutputPanel.tsx +1150 -1150
- package/client/src/components/ui/OutputDisplayPanel.tsx +381 -381
- package/client/src/components/ui/QRCodeDisplay.tsx +182 -0
- package/client/src/components/ui/TopToolbar.tsx +736 -736
- package/client/src/components/ui/WorkflowSidebar.tsx +293 -293
- package/client/src/config/antdTheme.ts +186 -186
- package/client/src/contexts/AuthContext.tsx +221 -221
- package/client/src/contexts/ThemeContext.tsx +42 -42
- package/client/src/contexts/WebSocketContext.tsx +2144 -1971
- package/client/src/factories/baseChatModelFactory.ts +255 -255
- package/client/src/hooks/useAndroidOperations.ts +118 -164
- package/client/src/hooks/useApiKeyValidation.ts +106 -106
- package/client/src/hooks/useApiKeys.ts +238 -238
- package/client/src/hooks/useAppTheme.ts +17 -17
- package/client/src/hooks/useComponentPalette.ts +50 -50
- package/client/src/hooks/useDragAndDrop.ts +123 -123
- package/client/src/hooks/useDragVariable.ts +88 -88
- package/client/src/hooks/useExecution.ts +319 -313
- package/client/src/hooks/useParameterPanel.ts +176 -176
- package/client/src/hooks/useReactFlowNodes.ts +188 -188
- package/client/src/hooks/useToolSchema.ts +209 -209
- package/client/src/hooks/useWhatsApp.ts +196 -196
- package/client/src/hooks/useWorkflowManagement.ts +45 -45
- package/client/src/index.css +314 -314
- package/client/src/nodeDefinitions/aiAgentNodes.ts +335 -335
- package/client/src/nodeDefinitions/aiModelNodes.ts +340 -340
- package/client/src/nodeDefinitions/androidServiceNodes.ts +383 -383
- package/client/src/nodeDefinitions/chatNodes.ts +135 -135
- package/client/src/nodeDefinitions/codeNodes.ts +54 -54
- package/client/src/nodeDefinitions/index.ts +14 -14
- package/client/src/nodeDefinitions/locationNodes.ts +462 -462
- package/client/src/nodeDefinitions/schedulerNodes.ts +220 -220
- package/client/src/nodeDefinitions/skillNodes.ts +17 -5
- package/client/src/nodeDefinitions/utilityNodes.ts +284 -284
- package/client/src/nodeDefinitions/whatsappNodes.ts +821 -865
- package/client/src/nodeDefinitions.ts +101 -103
- package/client/src/services/dynamicParameterService.ts +95 -95
- package/client/src/services/execution/aiAgentExecutionService.ts +34 -34
- package/client/src/services/executionService.ts +227 -231
- package/client/src/services/workflowApi.ts +91 -91
- package/client/src/store/useAppStore.ts +578 -581
- package/client/src/styles/theme.ts +513 -508
- package/client/src/styles/zIndex.ts +16 -16
- package/client/src/types/ComponentTypes.ts +38 -38
- package/client/src/types/INodeProperties.ts +287 -287
- package/client/src/types/NodeTypes.ts +27 -27
- package/client/src/utils/formatters.ts +32 -32
- package/client/src/utils/googleMapsLoader.ts +139 -139
- package/client/src/utils/locationUtils.ts +84 -84
- package/client/src/utils/nodeUtils.ts +30 -30
- package/client/src/utils/workflow.ts +29 -29
- package/client/src/vite-env.d.ts +12 -12
- package/client/tailwind.config.js +59 -59
- package/client/tsconfig.json +25 -25
- package/client/vite.config.js +35 -35
- package/install.ps1 +308 -0
- package/install.sh +343 -0
- package/package.json +81 -70
- package/scripts/build.js +174 -51
- package/scripts/clean.js +40 -40
- package/scripts/start.js +234 -210
- package/scripts/stop.js +301 -325
- package/server/.dockerignore +44 -44
- package/server/Dockerfile +45 -45
- package/server/constants.py +244 -249
- package/server/core/cache.py +460 -460
- package/server/core/config.py +127 -127
- package/server/core/container.py +98 -98
- package/server/core/database.py +1296 -1210
- package/server/core/logging.py +313 -313
- package/server/main.py +288 -288
- package/server/middleware/__init__.py +5 -5
- package/server/middleware/auth.py +89 -89
- package/server/models/auth.py +52 -52
- package/server/models/cache.py +24 -24
- package/server/models/database.py +235 -210
- package/server/models/nodes.py +435 -455
- package/server/pyproject.toml +75 -72
- package/server/requirements.txt +83 -83
- package/server/routers/android.py +294 -294
- package/server/routers/auth.py +203 -203
- package/server/routers/database.py +150 -150
- package/server/routers/maps.py +141 -141
- package/server/routers/nodejs_compat.py +288 -288
- package/server/routers/webhook.py +90 -90
- package/server/routers/websocket.py +2239 -2127
- package/server/routers/whatsapp.py +761 -761
- package/server/routers/workflow.py +199 -199
- package/server/services/ai.py +2444 -2414
- package/server/services/android_service.py +588 -588
- package/server/services/auth.py +130 -130
- package/server/services/chat_client.py +160 -160
- package/server/services/deployment/manager.py +706 -706
- package/server/services/event_waiter.py +675 -785
- package/server/services/execution/executor.py +1351 -1351
- package/server/services/execution/models.py +1 -1
- package/server/services/handlers/__init__.py +122 -126
- package/server/services/handlers/ai.py +390 -355
- package/server/services/handlers/android.py +69 -260
- package/server/services/handlers/code.py +278 -278
- package/server/services/handlers/http.py +193 -193
- package/server/services/handlers/tools.py +146 -32
- package/server/services/handlers/triggers.py +107 -107
- package/server/services/handlers/utility.py +822 -822
- package/server/services/handlers/whatsapp.py +423 -476
- package/server/services/maps.py +288 -288
- package/server/services/memory_store.py +103 -103
- package/server/services/node_executor.py +372 -375
- package/server/services/scheduler.py +155 -155
- package/server/services/skill_loader.py +1 -1
- package/server/services/status_broadcaster.py +834 -826
- package/server/services/temporal/__init__.py +23 -23
- package/server/services/temporal/activities.py +344 -344
- package/server/services/temporal/client.py +76 -76
- package/server/services/temporal/executor.py +147 -147
- package/server/services/temporal/worker.py +251 -251
- package/server/services/temporal/workflow.py +355 -355
- package/server/services/temporal/ws_client.py +236 -236
- package/server/services/text.py +110 -110
- package/server/services/user_auth.py +172 -172
- package/server/services/websocket_client.py +29 -29
- package/server/services/workflow.py +597 -597
- package/server/skills/android-skill/SKILL.md +4 -4
- package/server/skills/code-skill/SKILL.md +123 -89
- package/server/skills/maps-skill/SKILL.md +3 -3
- package/server/skills/memory-skill/SKILL.md +1 -1
- package/server/skills/web-search-skill/SKILL.md +154 -0
- package/server/skills/whatsapp-skill/SKILL.md +3 -3
- package/server/uv.lock +461 -100
- package/server/whatsapp-rpc/.dockerignore +30 -30
- package/server/whatsapp-rpc/Dockerfile +44 -44
- package/server/whatsapp-rpc/Dockerfile.web +17 -17
- package/server/whatsapp-rpc/README.md +139 -139
- package/server/whatsapp-rpc/bin/whatsapp-rpc-server +0 -0
- package/server/whatsapp-rpc/cli.js +95 -95
- package/server/whatsapp-rpc/configs/config.yaml +6 -6
- package/server/whatsapp-rpc/docker-compose.yml +35 -35
- package/server/whatsapp-rpc/docs/API.md +410 -410
- package/server/whatsapp-rpc/node_modules/.package-lock.json +259 -0
- package/server/whatsapp-rpc/node_modules/chalk/license +9 -0
- package/server/whatsapp-rpc/node_modules/chalk/package.json +83 -0
- package/server/whatsapp-rpc/node_modules/chalk/readme.md +297 -0
- package/server/whatsapp-rpc/node_modules/chalk/source/index.d.ts +325 -0
- package/server/whatsapp-rpc/node_modules/chalk/source/index.js +225 -0
- package/server/whatsapp-rpc/node_modules/chalk/source/utilities.js +33 -0
- package/server/whatsapp-rpc/node_modules/chalk/source/vendor/ansi-styles/index.d.ts +236 -0
- package/server/whatsapp-rpc/node_modules/chalk/source/vendor/ansi-styles/index.js +223 -0
- package/server/whatsapp-rpc/node_modules/chalk/source/vendor/supports-color/browser.d.ts +1 -0
- package/server/whatsapp-rpc/node_modules/chalk/source/vendor/supports-color/browser.js +34 -0
- package/server/whatsapp-rpc/node_modules/chalk/source/vendor/supports-color/index.d.ts +55 -0
- package/server/whatsapp-rpc/node_modules/chalk/source/vendor/supports-color/index.js +190 -0
- package/server/whatsapp-rpc/node_modules/commander/LICENSE +22 -0
- package/server/whatsapp-rpc/node_modules/commander/Readme.md +1148 -0
- package/server/whatsapp-rpc/node_modules/commander/esm.mjs +16 -0
- package/server/whatsapp-rpc/node_modules/commander/index.js +26 -0
- package/server/whatsapp-rpc/node_modules/commander/lib/argument.js +145 -0
- package/server/whatsapp-rpc/node_modules/commander/lib/command.js +2179 -0
- package/server/whatsapp-rpc/node_modules/commander/lib/error.js +43 -0
- package/server/whatsapp-rpc/node_modules/commander/lib/help.js +462 -0
- package/server/whatsapp-rpc/node_modules/commander/lib/option.js +329 -0
- package/server/whatsapp-rpc/node_modules/commander/lib/suggestSimilar.js +100 -0
- package/server/whatsapp-rpc/node_modules/commander/package-support.json +16 -0
- package/server/whatsapp-rpc/node_modules/commander/package.json +80 -0
- package/server/whatsapp-rpc/node_modules/commander/typings/esm.d.mts +3 -0
- package/server/whatsapp-rpc/node_modules/commander/typings/index.d.ts +884 -0
- package/server/whatsapp-rpc/node_modules/cross-spawn/LICENSE +21 -0
- package/server/whatsapp-rpc/node_modules/cross-spawn/README.md +89 -0
- package/server/whatsapp-rpc/node_modules/cross-spawn/index.js +39 -0
- package/server/whatsapp-rpc/node_modules/cross-spawn/lib/enoent.js +59 -0
- package/server/whatsapp-rpc/node_modules/cross-spawn/lib/parse.js +91 -0
- package/server/whatsapp-rpc/node_modules/cross-spawn/lib/util/escape.js +47 -0
- package/server/whatsapp-rpc/node_modules/cross-spawn/lib/util/readShebang.js +23 -0
- package/server/whatsapp-rpc/node_modules/cross-spawn/lib/util/resolveCommand.js +52 -0
- package/server/whatsapp-rpc/node_modules/cross-spawn/package.json +73 -0
- package/server/whatsapp-rpc/node_modules/execa/index.d.ts +955 -0
- package/server/whatsapp-rpc/node_modules/execa/index.js +309 -0
- package/server/whatsapp-rpc/node_modules/execa/lib/command.js +119 -0
- package/server/whatsapp-rpc/node_modules/execa/lib/error.js +87 -0
- package/server/whatsapp-rpc/node_modules/execa/lib/kill.js +102 -0
- package/server/whatsapp-rpc/node_modules/execa/lib/pipe.js +42 -0
- package/server/whatsapp-rpc/node_modules/execa/lib/promise.js +36 -0
- package/server/whatsapp-rpc/node_modules/execa/lib/stdio.js +49 -0
- package/server/whatsapp-rpc/node_modules/execa/lib/stream.js +133 -0
- package/server/whatsapp-rpc/node_modules/execa/lib/verbose.js +19 -0
- package/server/whatsapp-rpc/node_modules/execa/license +9 -0
- package/server/whatsapp-rpc/node_modules/execa/package.json +90 -0
- package/server/whatsapp-rpc/node_modules/execa/readme.md +822 -0
- package/server/whatsapp-rpc/node_modules/get-stream/license +9 -0
- package/server/whatsapp-rpc/node_modules/get-stream/package.json +53 -0
- package/server/whatsapp-rpc/node_modules/get-stream/readme.md +291 -0
- package/server/whatsapp-rpc/node_modules/get-stream/source/array-buffer.js +84 -0
- package/server/whatsapp-rpc/node_modules/get-stream/source/array.js +32 -0
- package/server/whatsapp-rpc/node_modules/get-stream/source/buffer.js +20 -0
- package/server/whatsapp-rpc/node_modules/get-stream/source/contents.js +101 -0
- package/server/whatsapp-rpc/node_modules/get-stream/source/index.d.ts +119 -0
- package/server/whatsapp-rpc/node_modules/get-stream/source/index.js +5 -0
- package/server/whatsapp-rpc/node_modules/get-stream/source/string.js +36 -0
- package/server/whatsapp-rpc/node_modules/get-stream/source/utils.js +11 -0
- package/server/whatsapp-rpc/node_modules/get-them-args/LICENSE +21 -0
- package/server/whatsapp-rpc/node_modules/get-them-args/README.md +95 -0
- package/server/whatsapp-rpc/node_modules/get-them-args/index.js +97 -0
- package/server/whatsapp-rpc/node_modules/get-them-args/package.json +36 -0
- package/server/whatsapp-rpc/node_modules/human-signals/LICENSE +201 -0
- package/server/whatsapp-rpc/node_modules/human-signals/README.md +168 -0
- package/server/whatsapp-rpc/node_modules/human-signals/build/src/core.js +273 -0
- package/server/whatsapp-rpc/node_modules/human-signals/build/src/main.d.ts +73 -0
- package/server/whatsapp-rpc/node_modules/human-signals/build/src/main.js +70 -0
- package/server/whatsapp-rpc/node_modules/human-signals/build/src/realtime.js +16 -0
- package/server/whatsapp-rpc/node_modules/human-signals/build/src/signals.js +34 -0
- package/server/whatsapp-rpc/node_modules/human-signals/package.json +61 -0
- package/server/whatsapp-rpc/node_modules/is-stream/index.d.ts +81 -0
- package/server/whatsapp-rpc/node_modules/is-stream/index.js +29 -0
- package/server/whatsapp-rpc/node_modules/is-stream/license +9 -0
- package/server/whatsapp-rpc/node_modules/is-stream/package.json +44 -0
- package/server/whatsapp-rpc/node_modules/is-stream/readme.md +60 -0
- package/server/whatsapp-rpc/node_modules/isexe/LICENSE +15 -0
- package/server/whatsapp-rpc/node_modules/isexe/README.md +51 -0
- package/server/whatsapp-rpc/node_modules/isexe/index.js +57 -0
- package/server/whatsapp-rpc/node_modules/isexe/mode.js +41 -0
- package/server/whatsapp-rpc/node_modules/isexe/package.json +31 -0
- package/server/whatsapp-rpc/node_modules/isexe/test/basic.js +221 -0
- package/server/whatsapp-rpc/node_modules/isexe/windows.js +42 -0
- package/server/whatsapp-rpc/node_modules/kill-port/.editorconfig +12 -0
- package/server/whatsapp-rpc/node_modules/kill-port/.gitattributes +1 -0
- package/server/whatsapp-rpc/node_modules/kill-port/LICENSE +21 -0
- package/server/whatsapp-rpc/node_modules/kill-port/README.md +140 -0
- package/server/whatsapp-rpc/node_modules/kill-port/cli.js +25 -0
- package/server/whatsapp-rpc/node_modules/kill-port/example.js +21 -0
- package/server/whatsapp-rpc/node_modules/kill-port/index.js +46 -0
- package/server/whatsapp-rpc/node_modules/kill-port/logo.png +0 -0
- package/server/whatsapp-rpc/node_modules/kill-port/package.json +41 -0
- package/server/whatsapp-rpc/node_modules/kill-port/pnpm-lock.yaml +4606 -0
- package/server/whatsapp-rpc/node_modules/kill-port/test.js +16 -0
- package/server/whatsapp-rpc/node_modules/merge-stream/LICENSE +21 -0
- package/server/whatsapp-rpc/node_modules/merge-stream/README.md +78 -0
- package/server/whatsapp-rpc/node_modules/merge-stream/index.js +41 -0
- package/server/whatsapp-rpc/node_modules/merge-stream/package.json +19 -0
- package/server/whatsapp-rpc/node_modules/mimic-fn/index.d.ts +52 -0
- package/server/whatsapp-rpc/node_modules/mimic-fn/index.js +71 -0
- package/server/whatsapp-rpc/node_modules/mimic-fn/license +9 -0
- package/server/whatsapp-rpc/node_modules/mimic-fn/package.json +45 -0
- package/server/whatsapp-rpc/node_modules/mimic-fn/readme.md +90 -0
- package/server/whatsapp-rpc/node_modules/npm-run-path/index.d.ts +90 -0
- package/server/whatsapp-rpc/node_modules/npm-run-path/index.js +52 -0
- package/server/whatsapp-rpc/node_modules/npm-run-path/license +9 -0
- package/server/whatsapp-rpc/node_modules/npm-run-path/node_modules/path-key/index.d.ts +31 -0
- package/server/whatsapp-rpc/node_modules/npm-run-path/node_modules/path-key/index.js +12 -0
- package/server/whatsapp-rpc/node_modules/npm-run-path/node_modules/path-key/license +9 -0
- package/server/whatsapp-rpc/node_modules/npm-run-path/node_modules/path-key/package.json +41 -0
- package/server/whatsapp-rpc/node_modules/npm-run-path/node_modules/path-key/readme.md +57 -0
- package/server/whatsapp-rpc/node_modules/npm-run-path/package.json +49 -0
- package/server/whatsapp-rpc/node_modules/npm-run-path/readme.md +104 -0
- package/server/whatsapp-rpc/node_modules/onetime/index.d.ts +59 -0
- package/server/whatsapp-rpc/node_modules/onetime/index.js +41 -0
- package/server/whatsapp-rpc/node_modules/onetime/license +9 -0
- package/server/whatsapp-rpc/node_modules/onetime/package.json +45 -0
- package/server/whatsapp-rpc/node_modules/onetime/readme.md +94 -0
- package/server/whatsapp-rpc/node_modules/path-key/index.d.ts +40 -0
- package/server/whatsapp-rpc/node_modules/path-key/index.js +16 -0
- package/server/whatsapp-rpc/node_modules/path-key/license +9 -0
- package/server/whatsapp-rpc/node_modules/path-key/package.json +39 -0
- package/server/whatsapp-rpc/node_modules/path-key/readme.md +61 -0
- package/server/whatsapp-rpc/node_modules/shebang-command/index.js +19 -0
- package/server/whatsapp-rpc/node_modules/shebang-command/license +9 -0
- package/server/whatsapp-rpc/node_modules/shebang-command/package.json +34 -0
- package/server/whatsapp-rpc/node_modules/shebang-command/readme.md +34 -0
- package/server/whatsapp-rpc/node_modules/shebang-regex/index.d.ts +22 -0
- package/server/whatsapp-rpc/node_modules/shebang-regex/index.js +2 -0
- package/server/whatsapp-rpc/node_modules/shebang-regex/license +9 -0
- package/server/whatsapp-rpc/node_modules/shebang-regex/package.json +35 -0
- package/server/whatsapp-rpc/node_modules/shebang-regex/readme.md +33 -0
- package/server/whatsapp-rpc/node_modules/shell-exec/LICENSE +21 -0
- package/server/whatsapp-rpc/node_modules/shell-exec/README.md +60 -0
- package/server/whatsapp-rpc/node_modules/shell-exec/index.js +47 -0
- package/server/whatsapp-rpc/node_modules/shell-exec/package.json +29 -0
- package/server/whatsapp-rpc/node_modules/signal-exit/LICENSE.txt +16 -0
- package/server/whatsapp-rpc/node_modules/signal-exit/README.md +74 -0
- package/server/whatsapp-rpc/node_modules/signal-exit/dist/cjs/browser.d.ts +12 -0
- package/server/whatsapp-rpc/node_modules/signal-exit/dist/cjs/browser.d.ts.map +1 -0
- package/server/whatsapp-rpc/node_modules/signal-exit/dist/cjs/browser.js +10 -0
- package/server/whatsapp-rpc/node_modules/signal-exit/dist/cjs/browser.js.map +1 -0
- package/server/whatsapp-rpc/node_modules/signal-exit/dist/cjs/index.d.ts +48 -0
- package/server/whatsapp-rpc/node_modules/signal-exit/dist/cjs/index.d.ts.map +1 -0
- package/server/whatsapp-rpc/node_modules/signal-exit/dist/cjs/index.js +279 -0
- package/server/whatsapp-rpc/node_modules/signal-exit/dist/cjs/index.js.map +1 -0
- package/server/whatsapp-rpc/node_modules/signal-exit/dist/cjs/package.json +3 -0
- package/server/whatsapp-rpc/node_modules/signal-exit/dist/cjs/signals.d.ts +29 -0
- package/server/whatsapp-rpc/node_modules/signal-exit/dist/cjs/signals.d.ts.map +1 -0
- package/server/whatsapp-rpc/node_modules/signal-exit/dist/cjs/signals.js +42 -0
- package/server/whatsapp-rpc/node_modules/signal-exit/dist/cjs/signals.js.map +1 -0
- package/server/whatsapp-rpc/node_modules/signal-exit/dist/mjs/browser.d.ts +12 -0
- package/server/whatsapp-rpc/node_modules/signal-exit/dist/mjs/browser.d.ts.map +1 -0
- package/server/whatsapp-rpc/node_modules/signal-exit/dist/mjs/browser.js +4 -0
- package/server/whatsapp-rpc/node_modules/signal-exit/dist/mjs/browser.js.map +1 -0
- package/server/whatsapp-rpc/node_modules/signal-exit/dist/mjs/index.d.ts +48 -0
- package/server/whatsapp-rpc/node_modules/signal-exit/dist/mjs/index.d.ts.map +1 -0
- package/server/whatsapp-rpc/node_modules/signal-exit/dist/mjs/index.js +275 -0
- package/server/whatsapp-rpc/node_modules/signal-exit/dist/mjs/index.js.map +1 -0
- package/server/whatsapp-rpc/node_modules/signal-exit/dist/mjs/package.json +3 -0
- package/server/whatsapp-rpc/node_modules/signal-exit/dist/mjs/signals.d.ts +29 -0
- package/server/whatsapp-rpc/node_modules/signal-exit/dist/mjs/signals.d.ts.map +1 -0
- package/server/whatsapp-rpc/node_modules/signal-exit/dist/mjs/signals.js +39 -0
- package/server/whatsapp-rpc/node_modules/signal-exit/dist/mjs/signals.js.map +1 -0
- package/server/whatsapp-rpc/node_modules/signal-exit/package.json +106 -0
- package/server/whatsapp-rpc/node_modules/strip-final-newline/index.js +14 -0
- package/server/whatsapp-rpc/node_modules/strip-final-newline/license +9 -0
- package/server/whatsapp-rpc/node_modules/strip-final-newline/package.json +43 -0
- package/server/whatsapp-rpc/node_modules/strip-final-newline/readme.md +35 -0
- package/server/whatsapp-rpc/node_modules/which/CHANGELOG.md +166 -0
- package/server/whatsapp-rpc/node_modules/which/LICENSE +15 -0
- package/server/whatsapp-rpc/node_modules/which/README.md +54 -0
- package/server/whatsapp-rpc/node_modules/which/bin/node-which +52 -0
- package/server/whatsapp-rpc/node_modules/which/package.json +43 -0
- package/server/whatsapp-rpc/node_modules/which/which.js +125 -0
- package/server/whatsapp-rpc/package-lock.json +272 -0
- package/server/whatsapp-rpc/package.json +30 -30
- package/server/whatsapp-rpc/schema.json +1294 -1294
- package/server/whatsapp-rpc/scripts/clean.cjs +66 -66
- package/server/whatsapp-rpc/scripts/cli.js +162 -162
- package/server/whatsapp-rpc/src/go/whatsapp/history.go +166 -166
- package/server/whatsapp-rpc/src/python/pyproject.toml +15 -15
- package/server/whatsapp-rpc/src/python/whatsapp_rpc/__init__.py +4 -4
- package/server/whatsapp-rpc/src/python/whatsapp_rpc/client.py +427 -427
- package/server/whatsapp-rpc/web/app.py +609 -609
- package/server/whatsapp-rpc/web/requirements.txt +6 -6
- package/server/whatsapp-rpc/web/rpc_client.py +427 -427
- package/server/whatsapp-rpc/web/static/openapi.yaml +59 -59
- package/server/whatsapp-rpc/web/templates/base.html +149 -149
- package/server/whatsapp-rpc/web/templates/contacts.html +240 -240
- package/server/whatsapp-rpc/web/templates/dashboard.html +319 -319
- package/server/whatsapp-rpc/web/templates/groups.html +328 -328
- package/server/whatsapp-rpc/web/templates/messages.html +465 -465
- package/server/whatsapp-rpc/web/templates/messaging.html +680 -680
- package/server/whatsapp-rpc/web/templates/send.html +258 -258
- package/server/whatsapp-rpc/web/templates/settings.html +459 -459
- package/client/src/components/ui/AndroidSettingsPanel.tsx +0 -401
- package/client/src/components/ui/WhatsAppSettingsPanel.tsx +0 -345
- package/client/src/nodeDefinitions/androidDeviceNodes.ts +0 -140
- package/docker-compose.prod.yml +0 -107
- package/docker-compose.yml +0 -104
- package/docs-MachinaOs/README.md +0 -85
- package/docs-MachinaOs/deployment/docker.mdx +0 -228
- package/docs-MachinaOs/deployment/production.mdx +0 -345
- package/docs-MachinaOs/docs.json +0 -75
- package/docs-MachinaOs/faq.mdx +0 -309
- package/docs-MachinaOs/favicon.svg +0 -5
- package/docs-MachinaOs/installation.mdx +0 -160
- package/docs-MachinaOs/introduction.mdx +0 -114
- package/docs-MachinaOs/logo/dark.svg +0 -6
- package/docs-MachinaOs/logo/light.svg +0 -6
- package/docs-MachinaOs/nodes/ai-agent.mdx +0 -216
- package/docs-MachinaOs/nodes/ai-models.mdx +0 -240
- package/docs-MachinaOs/nodes/android.mdx +0 -411
- package/docs-MachinaOs/nodes/overview.mdx +0 -181
- package/docs-MachinaOs/nodes/schedulers.mdx +0 -316
- package/docs-MachinaOs/nodes/webhooks.mdx +0 -330
- package/docs-MachinaOs/nodes/whatsapp.mdx +0 -305
- package/docs-MachinaOs/quickstart.mdx +0 -119
- package/docs-MachinaOs/tutorials/ai-agent-workflow.mdx +0 -177
- package/docs-MachinaOs/tutorials/android-automation.mdx +0 -242
- package/docs-MachinaOs/tutorials/first-workflow.mdx +0 -134
- package/docs-MachinaOs/tutorials/whatsapp-automation.mdx +0 -185
- package/nul +0 -0
- package/scripts/check-ports.ps1 +0 -33
- package/scripts/kill-port.ps1 +0 -154
|
@@ -1,305 +0,0 @@
|
|
|
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>
|
|
@@ -1,119 +0,0 @@
|
|
|
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>
|
|
@@ -1,177 +0,0 @@
|
|
|
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>
|