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.
Files changed (422) hide show
  1. package/.env.template +71 -71
  2. package/LICENSE +21 -21
  3. package/README.md +163 -87
  4. package/bin/cli.js +62 -106
  5. package/client/.dockerignore +45 -45
  6. package/client/Dockerfile +68 -68
  7. package/client/dist/assets/index-DFSC53FP.css +1 -0
  8. package/client/dist/assets/index-fJ-1gTf5.js +613 -0
  9. package/client/dist/index.html +14 -0
  10. package/client/eslint.config.js +34 -16
  11. package/client/nginx.conf +66 -66
  12. package/client/package.json +61 -48
  13. package/client/src/App.tsx +27 -27
  14. package/client/src/Dashboard.tsx +1200 -1172
  15. package/client/src/ParameterPanel.tsx +302 -300
  16. package/client/src/components/AIAgentNode.tsx +315 -321
  17. package/client/src/components/APIKeyValidator.tsx +117 -117
  18. package/client/src/components/ClaudeChatModelNode.tsx +17 -17
  19. package/client/src/components/CredentialsModal.tsx +1200 -306
  20. package/client/src/components/GeminiChatModelNode.tsx +17 -17
  21. package/client/src/components/GenericNode.tsx +356 -356
  22. package/client/src/components/LocationParameterPanel.tsx +153 -153
  23. package/client/src/components/ModelNode.tsx +285 -285
  24. package/client/src/components/OpenAIChatModelNode.tsx +17 -17
  25. package/client/src/components/OutputPanel.tsx +470 -470
  26. package/client/src/components/ParameterRenderer.tsx +1873 -1873
  27. package/client/src/components/SkillEditorModal.tsx +3 -3
  28. package/client/src/components/SquareNode.tsx +812 -796
  29. package/client/src/components/ToolkitNode.tsx +365 -365
  30. package/client/src/components/auth/LoginPage.tsx +247 -247
  31. package/client/src/components/auth/ProtectedRoute.tsx +59 -59
  32. package/client/src/components/base/BaseChatModelNode.tsx +270 -270
  33. package/client/src/components/icons/AIProviderIcons.tsx +50 -50
  34. package/client/src/components/maps/GoogleMapsPicker.tsx +136 -136
  35. package/client/src/components/maps/MapsPreviewPanel.tsx +109 -109
  36. package/client/src/components/maps/index.ts +25 -25
  37. package/client/src/components/parameterPanel/InputSection.tsx +1094 -1094
  38. package/client/src/components/parameterPanel/LocationPanelLayout.tsx +64 -64
  39. package/client/src/components/parameterPanel/MapsSection.tsx +91 -91
  40. package/client/src/components/parameterPanel/MiddleSection.tsx +867 -571
  41. package/client/src/components/parameterPanel/OutputSection.tsx +80 -80
  42. package/client/src/components/parameterPanel/ParameterPanelLayout.tsx +81 -81
  43. package/client/src/components/parameterPanel/ToolSchemaEditor.tsx +436 -436
  44. package/client/src/components/parameterPanel/index.ts +41 -41
  45. package/client/src/components/shared/DataPanel.tsx +142 -142
  46. package/client/src/components/shared/JSONTreeRenderer.tsx +105 -105
  47. package/client/src/components/ui/AIResultModal.tsx +203 -203
  48. package/client/src/components/ui/ApiKeyInput.tsx +93 -0
  49. package/client/src/components/ui/CodeEditor.tsx +81 -81
  50. package/client/src/components/ui/CollapsibleSection.tsx +87 -87
  51. package/client/src/components/ui/ComponentItem.tsx +153 -153
  52. package/client/src/components/ui/ComponentPalette.tsx +320 -320
  53. package/client/src/components/ui/ConsolePanel.tsx +151 -43
  54. package/client/src/components/ui/ErrorBoundary.tsx +195 -195
  55. package/client/src/components/ui/InputNodesPanel.tsx +203 -203
  56. package/client/src/components/ui/MapSelector.tsx +313 -313
  57. package/client/src/components/ui/Modal.tsx +151 -148
  58. package/client/src/components/ui/NodeOutputPanel.tsx +1150 -1150
  59. package/client/src/components/ui/OutputDisplayPanel.tsx +381 -381
  60. package/client/src/components/ui/QRCodeDisplay.tsx +182 -0
  61. package/client/src/components/ui/TopToolbar.tsx +736 -736
  62. package/client/src/components/ui/WorkflowSidebar.tsx +293 -293
  63. package/client/src/config/antdTheme.ts +186 -186
  64. package/client/src/contexts/AuthContext.tsx +221 -221
  65. package/client/src/contexts/ThemeContext.tsx +42 -42
  66. package/client/src/contexts/WebSocketContext.tsx +2144 -1971
  67. package/client/src/factories/baseChatModelFactory.ts +255 -255
  68. package/client/src/hooks/useAndroidOperations.ts +118 -164
  69. package/client/src/hooks/useApiKeyValidation.ts +106 -106
  70. package/client/src/hooks/useApiKeys.ts +238 -238
  71. package/client/src/hooks/useAppTheme.ts +17 -17
  72. package/client/src/hooks/useComponentPalette.ts +50 -50
  73. package/client/src/hooks/useDragAndDrop.ts +123 -123
  74. package/client/src/hooks/useDragVariable.ts +88 -88
  75. package/client/src/hooks/useExecution.ts +319 -313
  76. package/client/src/hooks/useParameterPanel.ts +176 -176
  77. package/client/src/hooks/useReactFlowNodes.ts +188 -188
  78. package/client/src/hooks/useToolSchema.ts +209 -209
  79. package/client/src/hooks/useWhatsApp.ts +196 -196
  80. package/client/src/hooks/useWorkflowManagement.ts +45 -45
  81. package/client/src/index.css +314 -314
  82. package/client/src/nodeDefinitions/aiAgentNodes.ts +335 -335
  83. package/client/src/nodeDefinitions/aiModelNodes.ts +340 -340
  84. package/client/src/nodeDefinitions/androidServiceNodes.ts +383 -383
  85. package/client/src/nodeDefinitions/chatNodes.ts +135 -135
  86. package/client/src/nodeDefinitions/codeNodes.ts +54 -54
  87. package/client/src/nodeDefinitions/index.ts +14 -14
  88. package/client/src/nodeDefinitions/locationNodes.ts +462 -462
  89. package/client/src/nodeDefinitions/schedulerNodes.ts +220 -220
  90. package/client/src/nodeDefinitions/skillNodes.ts +17 -5
  91. package/client/src/nodeDefinitions/utilityNodes.ts +284 -284
  92. package/client/src/nodeDefinitions/whatsappNodes.ts +821 -865
  93. package/client/src/nodeDefinitions.ts +101 -103
  94. package/client/src/services/dynamicParameterService.ts +95 -95
  95. package/client/src/services/execution/aiAgentExecutionService.ts +34 -34
  96. package/client/src/services/executionService.ts +227 -231
  97. package/client/src/services/workflowApi.ts +91 -91
  98. package/client/src/store/useAppStore.ts +578 -581
  99. package/client/src/styles/theme.ts +513 -508
  100. package/client/src/styles/zIndex.ts +16 -16
  101. package/client/src/types/ComponentTypes.ts +38 -38
  102. package/client/src/types/INodeProperties.ts +287 -287
  103. package/client/src/types/NodeTypes.ts +27 -27
  104. package/client/src/utils/formatters.ts +32 -32
  105. package/client/src/utils/googleMapsLoader.ts +139 -139
  106. package/client/src/utils/locationUtils.ts +84 -84
  107. package/client/src/utils/nodeUtils.ts +30 -30
  108. package/client/src/utils/workflow.ts +29 -29
  109. package/client/src/vite-env.d.ts +12 -12
  110. package/client/tailwind.config.js +59 -59
  111. package/client/tsconfig.json +25 -25
  112. package/client/vite.config.js +35 -35
  113. package/install.ps1 +308 -0
  114. package/install.sh +343 -0
  115. package/package.json +81 -70
  116. package/scripts/build.js +174 -51
  117. package/scripts/clean.js +40 -40
  118. package/scripts/start.js +234 -210
  119. package/scripts/stop.js +301 -325
  120. package/server/.dockerignore +44 -44
  121. package/server/Dockerfile +45 -45
  122. package/server/constants.py +244 -249
  123. package/server/core/cache.py +460 -460
  124. package/server/core/config.py +127 -127
  125. package/server/core/container.py +98 -98
  126. package/server/core/database.py +1296 -1210
  127. package/server/core/logging.py +313 -313
  128. package/server/main.py +288 -288
  129. package/server/middleware/__init__.py +5 -5
  130. package/server/middleware/auth.py +89 -89
  131. package/server/models/auth.py +52 -52
  132. package/server/models/cache.py +24 -24
  133. package/server/models/database.py +235 -210
  134. package/server/models/nodes.py +435 -455
  135. package/server/pyproject.toml +75 -72
  136. package/server/requirements.txt +83 -83
  137. package/server/routers/android.py +294 -294
  138. package/server/routers/auth.py +203 -203
  139. package/server/routers/database.py +150 -150
  140. package/server/routers/maps.py +141 -141
  141. package/server/routers/nodejs_compat.py +288 -288
  142. package/server/routers/webhook.py +90 -90
  143. package/server/routers/websocket.py +2239 -2127
  144. package/server/routers/whatsapp.py +761 -761
  145. package/server/routers/workflow.py +199 -199
  146. package/server/services/ai.py +2444 -2414
  147. package/server/services/android_service.py +588 -588
  148. package/server/services/auth.py +130 -130
  149. package/server/services/chat_client.py +160 -160
  150. package/server/services/deployment/manager.py +706 -706
  151. package/server/services/event_waiter.py +675 -785
  152. package/server/services/execution/executor.py +1351 -1351
  153. package/server/services/execution/models.py +1 -1
  154. package/server/services/handlers/__init__.py +122 -126
  155. package/server/services/handlers/ai.py +390 -355
  156. package/server/services/handlers/android.py +69 -260
  157. package/server/services/handlers/code.py +278 -278
  158. package/server/services/handlers/http.py +193 -193
  159. package/server/services/handlers/tools.py +146 -32
  160. package/server/services/handlers/triggers.py +107 -107
  161. package/server/services/handlers/utility.py +822 -822
  162. package/server/services/handlers/whatsapp.py +423 -476
  163. package/server/services/maps.py +288 -288
  164. package/server/services/memory_store.py +103 -103
  165. package/server/services/node_executor.py +372 -375
  166. package/server/services/scheduler.py +155 -155
  167. package/server/services/skill_loader.py +1 -1
  168. package/server/services/status_broadcaster.py +834 -826
  169. package/server/services/temporal/__init__.py +23 -23
  170. package/server/services/temporal/activities.py +344 -344
  171. package/server/services/temporal/client.py +76 -76
  172. package/server/services/temporal/executor.py +147 -147
  173. package/server/services/temporal/worker.py +251 -251
  174. package/server/services/temporal/workflow.py +355 -355
  175. package/server/services/temporal/ws_client.py +236 -236
  176. package/server/services/text.py +110 -110
  177. package/server/services/user_auth.py +172 -172
  178. package/server/services/websocket_client.py +29 -29
  179. package/server/services/workflow.py +597 -597
  180. package/server/skills/android-skill/SKILL.md +4 -4
  181. package/server/skills/code-skill/SKILL.md +123 -89
  182. package/server/skills/maps-skill/SKILL.md +3 -3
  183. package/server/skills/memory-skill/SKILL.md +1 -1
  184. package/server/skills/web-search-skill/SKILL.md +154 -0
  185. package/server/skills/whatsapp-skill/SKILL.md +3 -3
  186. package/server/uv.lock +461 -100
  187. package/server/whatsapp-rpc/.dockerignore +30 -30
  188. package/server/whatsapp-rpc/Dockerfile +44 -44
  189. package/server/whatsapp-rpc/Dockerfile.web +17 -17
  190. package/server/whatsapp-rpc/README.md +139 -139
  191. package/server/whatsapp-rpc/bin/whatsapp-rpc-server +0 -0
  192. package/server/whatsapp-rpc/cli.js +95 -95
  193. package/server/whatsapp-rpc/configs/config.yaml +6 -6
  194. package/server/whatsapp-rpc/docker-compose.yml +35 -35
  195. package/server/whatsapp-rpc/docs/API.md +410 -410
  196. package/server/whatsapp-rpc/node_modules/.package-lock.json +259 -0
  197. package/server/whatsapp-rpc/node_modules/chalk/license +9 -0
  198. package/server/whatsapp-rpc/node_modules/chalk/package.json +83 -0
  199. package/server/whatsapp-rpc/node_modules/chalk/readme.md +297 -0
  200. package/server/whatsapp-rpc/node_modules/chalk/source/index.d.ts +325 -0
  201. package/server/whatsapp-rpc/node_modules/chalk/source/index.js +225 -0
  202. package/server/whatsapp-rpc/node_modules/chalk/source/utilities.js +33 -0
  203. package/server/whatsapp-rpc/node_modules/chalk/source/vendor/ansi-styles/index.d.ts +236 -0
  204. package/server/whatsapp-rpc/node_modules/chalk/source/vendor/ansi-styles/index.js +223 -0
  205. package/server/whatsapp-rpc/node_modules/chalk/source/vendor/supports-color/browser.d.ts +1 -0
  206. package/server/whatsapp-rpc/node_modules/chalk/source/vendor/supports-color/browser.js +34 -0
  207. package/server/whatsapp-rpc/node_modules/chalk/source/vendor/supports-color/index.d.ts +55 -0
  208. package/server/whatsapp-rpc/node_modules/chalk/source/vendor/supports-color/index.js +190 -0
  209. package/server/whatsapp-rpc/node_modules/commander/LICENSE +22 -0
  210. package/server/whatsapp-rpc/node_modules/commander/Readme.md +1148 -0
  211. package/server/whatsapp-rpc/node_modules/commander/esm.mjs +16 -0
  212. package/server/whatsapp-rpc/node_modules/commander/index.js +26 -0
  213. package/server/whatsapp-rpc/node_modules/commander/lib/argument.js +145 -0
  214. package/server/whatsapp-rpc/node_modules/commander/lib/command.js +2179 -0
  215. package/server/whatsapp-rpc/node_modules/commander/lib/error.js +43 -0
  216. package/server/whatsapp-rpc/node_modules/commander/lib/help.js +462 -0
  217. package/server/whatsapp-rpc/node_modules/commander/lib/option.js +329 -0
  218. package/server/whatsapp-rpc/node_modules/commander/lib/suggestSimilar.js +100 -0
  219. package/server/whatsapp-rpc/node_modules/commander/package-support.json +16 -0
  220. package/server/whatsapp-rpc/node_modules/commander/package.json +80 -0
  221. package/server/whatsapp-rpc/node_modules/commander/typings/esm.d.mts +3 -0
  222. package/server/whatsapp-rpc/node_modules/commander/typings/index.d.ts +884 -0
  223. package/server/whatsapp-rpc/node_modules/cross-spawn/LICENSE +21 -0
  224. package/server/whatsapp-rpc/node_modules/cross-spawn/README.md +89 -0
  225. package/server/whatsapp-rpc/node_modules/cross-spawn/index.js +39 -0
  226. package/server/whatsapp-rpc/node_modules/cross-spawn/lib/enoent.js +59 -0
  227. package/server/whatsapp-rpc/node_modules/cross-spawn/lib/parse.js +91 -0
  228. package/server/whatsapp-rpc/node_modules/cross-spawn/lib/util/escape.js +47 -0
  229. package/server/whatsapp-rpc/node_modules/cross-spawn/lib/util/readShebang.js +23 -0
  230. package/server/whatsapp-rpc/node_modules/cross-spawn/lib/util/resolveCommand.js +52 -0
  231. package/server/whatsapp-rpc/node_modules/cross-spawn/package.json +73 -0
  232. package/server/whatsapp-rpc/node_modules/execa/index.d.ts +955 -0
  233. package/server/whatsapp-rpc/node_modules/execa/index.js +309 -0
  234. package/server/whatsapp-rpc/node_modules/execa/lib/command.js +119 -0
  235. package/server/whatsapp-rpc/node_modules/execa/lib/error.js +87 -0
  236. package/server/whatsapp-rpc/node_modules/execa/lib/kill.js +102 -0
  237. package/server/whatsapp-rpc/node_modules/execa/lib/pipe.js +42 -0
  238. package/server/whatsapp-rpc/node_modules/execa/lib/promise.js +36 -0
  239. package/server/whatsapp-rpc/node_modules/execa/lib/stdio.js +49 -0
  240. package/server/whatsapp-rpc/node_modules/execa/lib/stream.js +133 -0
  241. package/server/whatsapp-rpc/node_modules/execa/lib/verbose.js +19 -0
  242. package/server/whatsapp-rpc/node_modules/execa/license +9 -0
  243. package/server/whatsapp-rpc/node_modules/execa/package.json +90 -0
  244. package/server/whatsapp-rpc/node_modules/execa/readme.md +822 -0
  245. package/server/whatsapp-rpc/node_modules/get-stream/license +9 -0
  246. package/server/whatsapp-rpc/node_modules/get-stream/package.json +53 -0
  247. package/server/whatsapp-rpc/node_modules/get-stream/readme.md +291 -0
  248. package/server/whatsapp-rpc/node_modules/get-stream/source/array-buffer.js +84 -0
  249. package/server/whatsapp-rpc/node_modules/get-stream/source/array.js +32 -0
  250. package/server/whatsapp-rpc/node_modules/get-stream/source/buffer.js +20 -0
  251. package/server/whatsapp-rpc/node_modules/get-stream/source/contents.js +101 -0
  252. package/server/whatsapp-rpc/node_modules/get-stream/source/index.d.ts +119 -0
  253. package/server/whatsapp-rpc/node_modules/get-stream/source/index.js +5 -0
  254. package/server/whatsapp-rpc/node_modules/get-stream/source/string.js +36 -0
  255. package/server/whatsapp-rpc/node_modules/get-stream/source/utils.js +11 -0
  256. package/server/whatsapp-rpc/node_modules/get-them-args/LICENSE +21 -0
  257. package/server/whatsapp-rpc/node_modules/get-them-args/README.md +95 -0
  258. package/server/whatsapp-rpc/node_modules/get-them-args/index.js +97 -0
  259. package/server/whatsapp-rpc/node_modules/get-them-args/package.json +36 -0
  260. package/server/whatsapp-rpc/node_modules/human-signals/LICENSE +201 -0
  261. package/server/whatsapp-rpc/node_modules/human-signals/README.md +168 -0
  262. package/server/whatsapp-rpc/node_modules/human-signals/build/src/core.js +273 -0
  263. package/server/whatsapp-rpc/node_modules/human-signals/build/src/main.d.ts +73 -0
  264. package/server/whatsapp-rpc/node_modules/human-signals/build/src/main.js +70 -0
  265. package/server/whatsapp-rpc/node_modules/human-signals/build/src/realtime.js +16 -0
  266. package/server/whatsapp-rpc/node_modules/human-signals/build/src/signals.js +34 -0
  267. package/server/whatsapp-rpc/node_modules/human-signals/package.json +61 -0
  268. package/server/whatsapp-rpc/node_modules/is-stream/index.d.ts +81 -0
  269. package/server/whatsapp-rpc/node_modules/is-stream/index.js +29 -0
  270. package/server/whatsapp-rpc/node_modules/is-stream/license +9 -0
  271. package/server/whatsapp-rpc/node_modules/is-stream/package.json +44 -0
  272. package/server/whatsapp-rpc/node_modules/is-stream/readme.md +60 -0
  273. package/server/whatsapp-rpc/node_modules/isexe/LICENSE +15 -0
  274. package/server/whatsapp-rpc/node_modules/isexe/README.md +51 -0
  275. package/server/whatsapp-rpc/node_modules/isexe/index.js +57 -0
  276. package/server/whatsapp-rpc/node_modules/isexe/mode.js +41 -0
  277. package/server/whatsapp-rpc/node_modules/isexe/package.json +31 -0
  278. package/server/whatsapp-rpc/node_modules/isexe/test/basic.js +221 -0
  279. package/server/whatsapp-rpc/node_modules/isexe/windows.js +42 -0
  280. package/server/whatsapp-rpc/node_modules/kill-port/.editorconfig +12 -0
  281. package/server/whatsapp-rpc/node_modules/kill-port/.gitattributes +1 -0
  282. package/server/whatsapp-rpc/node_modules/kill-port/LICENSE +21 -0
  283. package/server/whatsapp-rpc/node_modules/kill-port/README.md +140 -0
  284. package/server/whatsapp-rpc/node_modules/kill-port/cli.js +25 -0
  285. package/server/whatsapp-rpc/node_modules/kill-port/example.js +21 -0
  286. package/server/whatsapp-rpc/node_modules/kill-port/index.js +46 -0
  287. package/server/whatsapp-rpc/node_modules/kill-port/logo.png +0 -0
  288. package/server/whatsapp-rpc/node_modules/kill-port/package.json +41 -0
  289. package/server/whatsapp-rpc/node_modules/kill-port/pnpm-lock.yaml +4606 -0
  290. package/server/whatsapp-rpc/node_modules/kill-port/test.js +16 -0
  291. package/server/whatsapp-rpc/node_modules/merge-stream/LICENSE +21 -0
  292. package/server/whatsapp-rpc/node_modules/merge-stream/README.md +78 -0
  293. package/server/whatsapp-rpc/node_modules/merge-stream/index.js +41 -0
  294. package/server/whatsapp-rpc/node_modules/merge-stream/package.json +19 -0
  295. package/server/whatsapp-rpc/node_modules/mimic-fn/index.d.ts +52 -0
  296. package/server/whatsapp-rpc/node_modules/mimic-fn/index.js +71 -0
  297. package/server/whatsapp-rpc/node_modules/mimic-fn/license +9 -0
  298. package/server/whatsapp-rpc/node_modules/mimic-fn/package.json +45 -0
  299. package/server/whatsapp-rpc/node_modules/mimic-fn/readme.md +90 -0
  300. package/server/whatsapp-rpc/node_modules/npm-run-path/index.d.ts +90 -0
  301. package/server/whatsapp-rpc/node_modules/npm-run-path/index.js +52 -0
  302. package/server/whatsapp-rpc/node_modules/npm-run-path/license +9 -0
  303. package/server/whatsapp-rpc/node_modules/npm-run-path/node_modules/path-key/index.d.ts +31 -0
  304. package/server/whatsapp-rpc/node_modules/npm-run-path/node_modules/path-key/index.js +12 -0
  305. package/server/whatsapp-rpc/node_modules/npm-run-path/node_modules/path-key/license +9 -0
  306. package/server/whatsapp-rpc/node_modules/npm-run-path/node_modules/path-key/package.json +41 -0
  307. package/server/whatsapp-rpc/node_modules/npm-run-path/node_modules/path-key/readme.md +57 -0
  308. package/server/whatsapp-rpc/node_modules/npm-run-path/package.json +49 -0
  309. package/server/whatsapp-rpc/node_modules/npm-run-path/readme.md +104 -0
  310. package/server/whatsapp-rpc/node_modules/onetime/index.d.ts +59 -0
  311. package/server/whatsapp-rpc/node_modules/onetime/index.js +41 -0
  312. package/server/whatsapp-rpc/node_modules/onetime/license +9 -0
  313. package/server/whatsapp-rpc/node_modules/onetime/package.json +45 -0
  314. package/server/whatsapp-rpc/node_modules/onetime/readme.md +94 -0
  315. package/server/whatsapp-rpc/node_modules/path-key/index.d.ts +40 -0
  316. package/server/whatsapp-rpc/node_modules/path-key/index.js +16 -0
  317. package/server/whatsapp-rpc/node_modules/path-key/license +9 -0
  318. package/server/whatsapp-rpc/node_modules/path-key/package.json +39 -0
  319. package/server/whatsapp-rpc/node_modules/path-key/readme.md +61 -0
  320. package/server/whatsapp-rpc/node_modules/shebang-command/index.js +19 -0
  321. package/server/whatsapp-rpc/node_modules/shebang-command/license +9 -0
  322. package/server/whatsapp-rpc/node_modules/shebang-command/package.json +34 -0
  323. package/server/whatsapp-rpc/node_modules/shebang-command/readme.md +34 -0
  324. package/server/whatsapp-rpc/node_modules/shebang-regex/index.d.ts +22 -0
  325. package/server/whatsapp-rpc/node_modules/shebang-regex/index.js +2 -0
  326. package/server/whatsapp-rpc/node_modules/shebang-regex/license +9 -0
  327. package/server/whatsapp-rpc/node_modules/shebang-regex/package.json +35 -0
  328. package/server/whatsapp-rpc/node_modules/shebang-regex/readme.md +33 -0
  329. package/server/whatsapp-rpc/node_modules/shell-exec/LICENSE +21 -0
  330. package/server/whatsapp-rpc/node_modules/shell-exec/README.md +60 -0
  331. package/server/whatsapp-rpc/node_modules/shell-exec/index.js +47 -0
  332. package/server/whatsapp-rpc/node_modules/shell-exec/package.json +29 -0
  333. package/server/whatsapp-rpc/node_modules/signal-exit/LICENSE.txt +16 -0
  334. package/server/whatsapp-rpc/node_modules/signal-exit/README.md +74 -0
  335. package/server/whatsapp-rpc/node_modules/signal-exit/dist/cjs/browser.d.ts +12 -0
  336. package/server/whatsapp-rpc/node_modules/signal-exit/dist/cjs/browser.d.ts.map +1 -0
  337. package/server/whatsapp-rpc/node_modules/signal-exit/dist/cjs/browser.js +10 -0
  338. package/server/whatsapp-rpc/node_modules/signal-exit/dist/cjs/browser.js.map +1 -0
  339. package/server/whatsapp-rpc/node_modules/signal-exit/dist/cjs/index.d.ts +48 -0
  340. package/server/whatsapp-rpc/node_modules/signal-exit/dist/cjs/index.d.ts.map +1 -0
  341. package/server/whatsapp-rpc/node_modules/signal-exit/dist/cjs/index.js +279 -0
  342. package/server/whatsapp-rpc/node_modules/signal-exit/dist/cjs/index.js.map +1 -0
  343. package/server/whatsapp-rpc/node_modules/signal-exit/dist/cjs/package.json +3 -0
  344. package/server/whatsapp-rpc/node_modules/signal-exit/dist/cjs/signals.d.ts +29 -0
  345. package/server/whatsapp-rpc/node_modules/signal-exit/dist/cjs/signals.d.ts.map +1 -0
  346. package/server/whatsapp-rpc/node_modules/signal-exit/dist/cjs/signals.js +42 -0
  347. package/server/whatsapp-rpc/node_modules/signal-exit/dist/cjs/signals.js.map +1 -0
  348. package/server/whatsapp-rpc/node_modules/signal-exit/dist/mjs/browser.d.ts +12 -0
  349. package/server/whatsapp-rpc/node_modules/signal-exit/dist/mjs/browser.d.ts.map +1 -0
  350. package/server/whatsapp-rpc/node_modules/signal-exit/dist/mjs/browser.js +4 -0
  351. package/server/whatsapp-rpc/node_modules/signal-exit/dist/mjs/browser.js.map +1 -0
  352. package/server/whatsapp-rpc/node_modules/signal-exit/dist/mjs/index.d.ts +48 -0
  353. package/server/whatsapp-rpc/node_modules/signal-exit/dist/mjs/index.d.ts.map +1 -0
  354. package/server/whatsapp-rpc/node_modules/signal-exit/dist/mjs/index.js +275 -0
  355. package/server/whatsapp-rpc/node_modules/signal-exit/dist/mjs/index.js.map +1 -0
  356. package/server/whatsapp-rpc/node_modules/signal-exit/dist/mjs/package.json +3 -0
  357. package/server/whatsapp-rpc/node_modules/signal-exit/dist/mjs/signals.d.ts +29 -0
  358. package/server/whatsapp-rpc/node_modules/signal-exit/dist/mjs/signals.d.ts.map +1 -0
  359. package/server/whatsapp-rpc/node_modules/signal-exit/dist/mjs/signals.js +39 -0
  360. package/server/whatsapp-rpc/node_modules/signal-exit/dist/mjs/signals.js.map +1 -0
  361. package/server/whatsapp-rpc/node_modules/signal-exit/package.json +106 -0
  362. package/server/whatsapp-rpc/node_modules/strip-final-newline/index.js +14 -0
  363. package/server/whatsapp-rpc/node_modules/strip-final-newline/license +9 -0
  364. package/server/whatsapp-rpc/node_modules/strip-final-newline/package.json +43 -0
  365. package/server/whatsapp-rpc/node_modules/strip-final-newline/readme.md +35 -0
  366. package/server/whatsapp-rpc/node_modules/which/CHANGELOG.md +166 -0
  367. package/server/whatsapp-rpc/node_modules/which/LICENSE +15 -0
  368. package/server/whatsapp-rpc/node_modules/which/README.md +54 -0
  369. package/server/whatsapp-rpc/node_modules/which/bin/node-which +52 -0
  370. package/server/whatsapp-rpc/node_modules/which/package.json +43 -0
  371. package/server/whatsapp-rpc/node_modules/which/which.js +125 -0
  372. package/server/whatsapp-rpc/package-lock.json +272 -0
  373. package/server/whatsapp-rpc/package.json +30 -30
  374. package/server/whatsapp-rpc/schema.json +1294 -1294
  375. package/server/whatsapp-rpc/scripts/clean.cjs +66 -66
  376. package/server/whatsapp-rpc/scripts/cli.js +162 -162
  377. package/server/whatsapp-rpc/src/go/whatsapp/history.go +166 -166
  378. package/server/whatsapp-rpc/src/python/pyproject.toml +15 -15
  379. package/server/whatsapp-rpc/src/python/whatsapp_rpc/__init__.py +4 -4
  380. package/server/whatsapp-rpc/src/python/whatsapp_rpc/client.py +427 -427
  381. package/server/whatsapp-rpc/web/app.py +609 -609
  382. package/server/whatsapp-rpc/web/requirements.txt +6 -6
  383. package/server/whatsapp-rpc/web/rpc_client.py +427 -427
  384. package/server/whatsapp-rpc/web/static/openapi.yaml +59 -59
  385. package/server/whatsapp-rpc/web/templates/base.html +149 -149
  386. package/server/whatsapp-rpc/web/templates/contacts.html +240 -240
  387. package/server/whatsapp-rpc/web/templates/dashboard.html +319 -319
  388. package/server/whatsapp-rpc/web/templates/groups.html +328 -328
  389. package/server/whatsapp-rpc/web/templates/messages.html +465 -465
  390. package/server/whatsapp-rpc/web/templates/messaging.html +680 -680
  391. package/server/whatsapp-rpc/web/templates/send.html +258 -258
  392. package/server/whatsapp-rpc/web/templates/settings.html +459 -459
  393. package/client/src/components/ui/AndroidSettingsPanel.tsx +0 -401
  394. package/client/src/components/ui/WhatsAppSettingsPanel.tsx +0 -345
  395. package/client/src/nodeDefinitions/androidDeviceNodes.ts +0 -140
  396. package/docker-compose.prod.yml +0 -107
  397. package/docker-compose.yml +0 -104
  398. package/docs-MachinaOs/README.md +0 -85
  399. package/docs-MachinaOs/deployment/docker.mdx +0 -228
  400. package/docs-MachinaOs/deployment/production.mdx +0 -345
  401. package/docs-MachinaOs/docs.json +0 -75
  402. package/docs-MachinaOs/faq.mdx +0 -309
  403. package/docs-MachinaOs/favicon.svg +0 -5
  404. package/docs-MachinaOs/installation.mdx +0 -160
  405. package/docs-MachinaOs/introduction.mdx +0 -114
  406. package/docs-MachinaOs/logo/dark.svg +0 -6
  407. package/docs-MachinaOs/logo/light.svg +0 -6
  408. package/docs-MachinaOs/nodes/ai-agent.mdx +0 -216
  409. package/docs-MachinaOs/nodes/ai-models.mdx +0 -240
  410. package/docs-MachinaOs/nodes/android.mdx +0 -411
  411. package/docs-MachinaOs/nodes/overview.mdx +0 -181
  412. package/docs-MachinaOs/nodes/schedulers.mdx +0 -316
  413. package/docs-MachinaOs/nodes/webhooks.mdx +0 -330
  414. package/docs-MachinaOs/nodes/whatsapp.mdx +0 -305
  415. package/docs-MachinaOs/quickstart.mdx +0 -119
  416. package/docs-MachinaOs/tutorials/ai-agent-workflow.mdx +0 -177
  417. package/docs-MachinaOs/tutorials/android-automation.mdx +0 -242
  418. package/docs-MachinaOs/tutorials/first-workflow.mdx +0 -134
  419. package/docs-MachinaOs/tutorials/whatsapp-automation.mdx +0 -185
  420. package/nul +0 -0
  421. package/scripts/check-ports.ps1 +0 -33
  422. package/scripts/kill-port.ps1 +0 -154
package/.env.template CHANGED
@@ -1,71 +1,71 @@
1
- # Service Ports (used by start.js, vite, and docker-compose)
2
- VITE_CLIENT_PORT=3000
3
- PYTHON_BACKEND_PORT=3010
4
- WHATSAPP_RPC_PORT=9400
5
- REDIS_PORT=6379
6
-
7
- # Server Configuration
8
- HOST=127.0.0.1
9
- PORT=3010
10
- DEBUG=false
11
- WORKERS=1
12
-
13
- # Security (Development keys - MUST CHANGE FOR PRODUCTION)
14
- SECRET_KEY=dev-secret-key-12345678901234567890123456789012
15
- API_KEY_ENCRYPTION_KEY=dev-encryption-key-12345678901234567890123456
16
-
17
- # Authentication
18
- # VITE_AUTH_ENABLED: "true" (require login) or "false" (bypass authentication)
19
- VITE_AUTH_ENABLED=false
20
- # AUTH_MODE: "single" (local deploy - first user is owner) or "multi" (cloud - open registration)
21
- AUTH_MODE=single
22
- JWT_SECRET_KEY=dev-jwt-secret-key-12345678901234567890
23
- JWT_EXPIRE_MINUTES=10080
24
- JWT_COOKIE_NAME=machina_token
25
- JWT_COOKIE_SECURE=false
26
- JWT_COOKIE_SAMESITE=lax
27
-
28
- # CORS Configuration - Allow all common dev ports
29
- CORS_ORIGINS=["http://localhost:3000","http://localhost:3001","http://localhost:3002","http://localhost:3003","http://localhost:3004","http://localhost:3005","http://localhost:3006","http://127.0.0.1:3000","http://127.0.0.1:3001","http://127.0.0.1:3002","http://127.0.0.1:3003","http://127.0.0.1:3004","http://127.0.0.1:3005","http://127.0.0.1:3006","http://localhost:5173"]
30
-
31
- # Database Configuration
32
- DATABASE_URL=sqlite+aiosqlite:///./data/workflow.db
33
- DATABASE_ECHO=false
34
- DATABASE_POOL_SIZE=5
35
- DATABASE_MAX_OVERFLOW=10
36
-
37
- # Cache Configuration (Disabled for development)
38
- REDIS_ENABLED=false
39
- CACHE_TTL=300
40
-
41
- # Logging
42
- LOG_LEVEL=INFO
43
- LOG_FORMAT=text
44
-
45
- # Rate Limiting (Relaxed for development)
46
- RATE_LIMIT_ENABLED=false
47
- RATE_LIMIT_REQUESTS=1000
48
- RATE_LIMIT_WINDOW=60
49
-
50
- # Service Timeouts (Extended for debugging)
51
- AI_TIMEOUT=60
52
- AI_MAX_RETRIES=1
53
- AI_RETRY_DELAY=0.5
54
-
55
- MAPS_TIMEOUT=30
56
-
57
- # Health Check
58
- HEALTH_CHECK_INTERVAL=60
59
-
60
- # WebSocket Configuration (For remote Android device connections)
61
- WEBSOCKET_URL=
62
- WEBSOCKET_API_KEY=
63
-
64
- # WhatsApp Service URL
65
- WHATSAPP_SERVICE_URL=http://localhost:5000
66
-
67
- # External API Keys (managed through UI, these are optional defaults)
68
- OPENAI_API_KEY=
69
- GOOGLE_MAPS_API_KEY=
70
- ANTHROPIC_API_KEY=
71
- GOOGLE_AI_API_KEY=
1
+ # Service Ports (used by start.js, vite, and docker-compose)
2
+ VITE_CLIENT_PORT=3000
3
+ PYTHON_BACKEND_PORT=3010
4
+ WHATSAPP_RPC_PORT=9400
5
+ REDIS_PORT=6379
6
+
7
+ # Server Configuration
8
+ HOST=127.0.0.1
9
+ PORT=3010
10
+ DEBUG=false
11
+ WORKERS=1
12
+
13
+ # Security (Development keys - MUST CHANGE FOR PRODUCTION)
14
+ SECRET_KEY=dev-secret-key-12345678901234567890123456789012
15
+ API_KEY_ENCRYPTION_KEY=dev-encryption-key-12345678901234567890123456
16
+
17
+ # Authentication
18
+ # VITE_AUTH_ENABLED: "true" (require login) or "false" (bypass authentication)
19
+ VITE_AUTH_ENABLED=false
20
+ # AUTH_MODE: "single" (local deploy - first user is owner) or "multi" (cloud - open registration)
21
+ AUTH_MODE=single
22
+ JWT_SECRET_KEY=dev-jwt-secret-key-12345678901234567890
23
+ JWT_EXPIRE_MINUTES=10080
24
+ JWT_COOKIE_NAME=machina_token
25
+ JWT_COOKIE_SECURE=false
26
+ JWT_COOKIE_SAMESITE=lax
27
+
28
+ # CORS Configuration - Allow all common dev ports
29
+ CORS_ORIGINS=["http://localhost:3000","http://localhost:3001","http://localhost:3002","http://localhost:3003","http://localhost:3004","http://localhost:3005","http://localhost:3006","http://127.0.0.1:3000","http://127.0.0.1:3001","http://127.0.0.1:3002","http://127.0.0.1:3003","http://127.0.0.1:3004","http://127.0.0.1:3005","http://127.0.0.1:3006","http://localhost:5173"]
30
+
31
+ # Database Configuration
32
+ DATABASE_URL=sqlite+aiosqlite:///./data/workflow.db
33
+ DATABASE_ECHO=false
34
+ DATABASE_POOL_SIZE=5
35
+ DATABASE_MAX_OVERFLOW=10
36
+
37
+ # Cache Configuration (Disabled for development)
38
+ REDIS_ENABLED=false
39
+ CACHE_TTL=300
40
+
41
+ # Logging
42
+ LOG_LEVEL=INFO
43
+ LOG_FORMAT=text
44
+
45
+ # Rate Limiting (Relaxed for development)
46
+ RATE_LIMIT_ENABLED=false
47
+ RATE_LIMIT_REQUESTS=1000
48
+ RATE_LIMIT_WINDOW=60
49
+
50
+ # Service Timeouts (Extended for debugging)
51
+ AI_TIMEOUT=60
52
+ AI_MAX_RETRIES=1
53
+ AI_RETRY_DELAY=0.5
54
+
55
+ MAPS_TIMEOUT=30
56
+
57
+ # Health Check
58
+ HEALTH_CHECK_INTERVAL=60
59
+
60
+ # WebSocket Configuration (For remote Android device connections)
61
+ WEBSOCKET_URL=
62
+ WEBSOCKET_API_KEY=
63
+
64
+ # WhatsApp Service URL
65
+ WHATSAPP_SERVICE_URL=http://localhost:5000
66
+
67
+ # External API Keys (managed through UI, these are optional defaults)
68
+ OPENAI_API_KEY=
69
+ GOOGLE_MAPS_API_KEY=
70
+ ANTHROPIC_API_KEY=
71
+ GOOGLE_AI_API_KEY=
package/LICENSE CHANGED
@@ -1,21 +1,21 @@
1
- MIT License
2
-
3
- Copyright (c) 2025 MachinaOs
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
1
+ MIT License
2
+
3
+ Copyright (c) 2025 MachinaOs
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -1,87 +1,163 @@
1
- # MachinaOs
2
-
3
- Platform to Build Personal AI Assistants for Yourself that Perform Human Like Tasks.
4
- mashup of N8N + Clawdbot
5
-
6
- ## Quick Start
7
-
8
- ```bash
9
- git clone https://github.com/trohitg/MachinaOS.git
10
- cd MachinaOs
11
- npm run docker:build
12
- npm run docker:up
13
- ```
14
-
15
- Open http://localhost:3000
16
-
17
- ## Local Development
18
-
19
- **Prerequisites:** Node.js 18+, Python 3.10+, Go 1.21+
20
-
21
- ```bash
22
- npm run build
23
- npm run start
24
- ```
25
-
26
- ---
27
-
28
- ## Features
29
-
30
- - **AI Workflows** - OpenAI, Claude, Gemini models with tool calling
31
- - **Android Automation** - Control your phone via 17 service nodes
32
- - **WhatsApp Bots** - Send/receive messages with filters
33
- - **HTTP/Webhooks** - API integrations
34
- - **Tool Schema Editor** - Customize AI tool schemas per service
35
-
36
- ## Docker Commands
37
-
38
- ### Development (hot reload, larger images)
39
- | Command | Description |
40
- |---------|-------------|
41
- | `npm run docker:build` | Build dev images |
42
- | `npm run docker:up` | Start dev containers |
43
- | `npm run docker:down` | Stop containers |
44
- | `npm run docker:logs` | View logs |
45
-
46
- ### Production (optimized, smaller images)
47
- | Command | Description |
48
- |---------|-------------|
49
- | `npm run docker:prod:build` | Build prod images |
50
- | `npm run docker:prod:up` | Start prod containers |
51
- | `npm run docker:prod:logs` | View logs |
52
-
53
- **Redis (optional):** Set `REDIS_ENABLED=true` in `.env`
54
-
55
- ## Local Commands
56
-
57
- | Command | Description |
58
- |---------|-------------|
59
- | `npm run start` | Start all services |
60
- | `npm run stop` | Stop all services |
61
- | `npm run build` | Install dependencies |
62
-
63
- ## Configuration
64
-
65
- **API Keys:** Click **Credentials** button in toolbar to add API keys for OpenAI, Claude, Google Maps, etc.
66
-
67
- **Environment:** Edit `.env` for auth settings, ports, and database location.
68
-
69
- ## Project Structure
70
-
71
- ```
72
- MachinaOs/
73
- ├── client/ # React frontend (localhost:3000)
74
- ├── server/ # Python backend (localhost:3010)
75
- │ └── whatsapp-rpc/ # WhatsApp service
76
- └── package.json
77
- ```
78
-
79
- ## Tech Stack
80
-
81
- - **Frontend:** React, TypeScript, React Flow
82
- - **Backend:** Python, FastAPI, SQLite
83
- - **Services:** WhatsApp (Go), WebSocket relay
84
-
85
- ## License
86
-
87
- MIT
1
+ # MachinaOS
2
+
3
+ Open-source workflow automation platform with AI agents, React Flow, and n8n-inspired architecture.
4
+
5
+ ## Quick Start
6
+
7
+ ### Option 1: One-Line Install (Recommended)
8
+
9
+ **Linux/macOS:**
10
+ ```bash
11
+ curl -fsSL https://raw.githubusercontent.com/trohitg/MachinaOS/main/install.sh | bash
12
+ ```
13
+
14
+ **Windows (PowerShell):**
15
+ ```powershell
16
+ iwr -useb https://raw.githubusercontent.com/trohitg/MachinaOS/main/install.ps1 | iex
17
+ ```
18
+
19
+ This automatically installs all dependencies (Node.js, Python, uv, Go) and MachinaOS.
20
+
21
+ ### Option 2: Clone & Run
22
+
23
+ ```bash
24
+ git clone https://github.com/trohitg/MachinaOS.git
25
+ cd MachinaOS
26
+ npm run build
27
+ npm run start
28
+ ```
29
+
30
+ ### Option 3: npm Global Install
31
+
32
+ ```bash
33
+ npm install -g machinaos
34
+ machinaos start
35
+ ```
36
+
37
+ Requires Node.js 18+, Python 3.11+, uv, and Go 1.21+ to be pre-installed.
38
+
39
+ ### Option 4: Docker
40
+
41
+ ```bash
42
+ git clone https://github.com/trohitg/MachinaOS.git
43
+ cd MachinaOS
44
+ npm run docker:up
45
+ ```
46
+
47
+ Open http://localhost:3000
48
+
49
+ ## Prerequisites
50
+
51
+ The install script handles these automatically, but for manual installation:
52
+
53
+ - **Node.js 18+** - https://nodejs.org/
54
+ - **Python 3.11+** - https://python.org/
55
+ - **uv** - `curl -LsSf https://astral.sh/uv/install.sh | sh`
56
+ - **Go 1.21+** - https://go.dev/dl/ (for WhatsApp service)
57
+
58
+ ## CLI Commands
59
+
60
+ | Command | Description |
61
+ |---------|-------------|
62
+ | `machinaos start` | Start all services (frontend, backend, WhatsApp) |
63
+ | `machinaos stop` | Stop all running services |
64
+ | `machinaos build` | Build for production |
65
+ | `machinaos clean` | Remove build artifacts and dependencies |
66
+ | `machinaos docker:up` | Start with Docker Compose |
67
+ | `machinaos docker:down` | Stop Docker containers |
68
+ | `machinaos help` | Show all available commands |
69
+
70
+ ## Local Development
71
+
72
+ ```bash
73
+ git clone https://github.com/trohitg/MachinaOS.git
74
+ cd MachinaOS
75
+ npm run build
76
+ npm run start
77
+ ```
78
+
79
+ ---
80
+
81
+ ## Features
82
+
83
+ - **AI Workflows** - OpenAI, Claude, Gemini, Groq, OpenRouter models with tool calling
84
+ - **AI Agents** - LangGraph-powered agents with memory and skills
85
+ - **Android Automation** - Control your phone via 17 service nodes
86
+ - **WhatsApp Bots** - Send/receive messages with filters and triggers
87
+ - **HTTP/Webhooks** - API integrations with event-driven triggers
88
+ - **Document Processing** - RAG pipeline with vector storage
89
+
90
+ ## Configuration
91
+
92
+ **API Keys:** Click **Credentials** button in toolbar to add API keys for OpenAI, Claude, Google Maps, etc.
93
+
94
+ **Environment:** Copy `.env.template` to `.env` and customize ports, auth settings, database location.
95
+
96
+ ## Docker Commands
97
+
98
+ | Command | Description |
99
+ |---------|-------------|
100
+ | `machinaos docker:up` | Start containers (detached) |
101
+ | `machinaos docker:down` | Stop containers |
102
+ | `machinaos docker:build` | Rebuild images |
103
+ | `machinaos docker:logs` | View logs (follows) |
104
+
105
+ **Redis (optional):** Set `REDIS_ENABLED=true` in `.env`
106
+
107
+ ### Production Docker
108
+
109
+ ```bash
110
+ npm run docker:prod:build
111
+ npm run docker:prod:up
112
+ ```
113
+
114
+ ## Project Structure
115
+
116
+ ```
117
+ MachinaOS/
118
+ ├── client/ # React frontend (localhost:3000)
119
+ ├── server/ # Python FastAPI backend (localhost:3010)
120
+ │ ├── services/ # Workflow execution, AI, handlers
121
+ │ ├── routers/ # API endpoints, WebSocket
122
+ │ └── whatsapp-rpc/ # WhatsApp Go service
123
+ ├── scripts/ # Cross-platform Node.js scripts
124
+ └── bin/cli.js # CLI entry point
125
+ ```
126
+
127
+ ## Tech Stack
128
+
129
+ - **Frontend:** React 19, TypeScript, React Flow, Zustand
130
+ - **Backend:** Python 3.11+, FastAPI, SQLite, LangChain/LangGraph
131
+ - **Services:** WhatsApp (Go + whatsmeow), WebSocket relay
132
+ - **Package Manager:** uv (Python), npm (Node.js)
133
+
134
+ ## Troubleshooting
135
+
136
+ **Port already in use:**
137
+ ```bash
138
+ machinaos stop # Kill all services
139
+ machinaos start # Restart
140
+ ```
141
+
142
+ **Missing dependencies:**
143
+ ```bash
144
+ machinaos build # Install all dependencies
145
+ ```
146
+
147
+ **Clean install:**
148
+ ```bash
149
+ machinaos clean # Remove node_modules, .venv, dist
150
+ machinaos build # Reinstall everything
151
+ ```
152
+
153
+ ## Contributing
154
+
155
+ 1. Fork the repository
156
+ 2. Create a feature branch
157
+ 3. Make your changes
158
+ 4. Run tests and linting
159
+ 5. Submit a pull request
160
+
161
+ ## License
162
+
163
+ MIT
package/bin/cli.js CHANGED
@@ -1,22 +1,20 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  import { spawn, execSync } from 'child_process';
4
- import { existsSync, copyFileSync } from 'fs';
5
- import { resolve, dirname } from 'path';
4
+ import { dirname, resolve } from 'path';
6
5
  import { fileURLToPath } from 'url';
7
6
 
8
- const __filename = fileURLToPath(import.meta.url);
9
- const __dirname = dirname(__filename);
10
- const ROOT_DIR = resolve(__dirname, '..');
7
+ const ROOT = resolve(dirname(fileURLToPath(import.meta.url)), '..');
11
8
 
12
9
  const COMMANDS = {
13
10
  start: 'Start the development server',
14
11
  stop: 'Stop all running services',
15
12
  build: 'Build the project for production',
13
+ clean: 'Clean build artifacts',
16
14
  'docker:up': 'Start with Docker Compose',
17
15
  'docker:down': 'Stop Docker Compose services',
16
+ 'docker:build': 'Build Docker images',
18
17
  'docker:logs': 'View Docker logs',
19
- init: 'Initialize environment file from template',
20
18
  help: 'Show this help message',
21
19
  };
22
20
 
@@ -27,133 +25,91 @@ MachinaOS - Workflow Automation Platform
27
25
  Usage: machinaos <command>
28
26
 
29
27
  Commands:
30
- ${Object.entries(COMMANDS)
31
- .map(([cmd, desc]) => ` ${cmd.padEnd(14)} ${desc}`)
32
- .join('\n')}
28
+ ${Object.entries(COMMANDS).map(([cmd, desc]) => ` ${cmd.padEnd(14)} ${desc}`).join('\n')}
33
29
 
34
30
  Examples:
35
- machinaos init # Create .env from template
36
31
  machinaos start # Start development server
32
+ machinaos build # Build for production
37
33
  machinaos docker:up # Start with Docker
38
34
 
39
35
  Documentation: https://github.com/trohitg/MachinaOS
40
36
  `);
41
37
  }
42
38
 
43
- function checkDependencies() {
44
- const missing = [];
45
-
46
- // Check Node.js version
47
- const nodeVersion = process.version.slice(1).split('.')[0];
48
- if (parseInt(nodeVersion) < 18) {
49
- console.error(`Error: Node.js 18+ required (found ${process.version})`);
50
- process.exit(1);
51
- }
52
-
53
- // Check Python
39
+ function getVersion(cmd) {
54
40
  try {
55
- execSync('python --version', { stdio: 'pipe' });
41
+ return execSync(cmd, { encoding: 'utf-8', stdio: ['pipe', 'pipe', 'pipe'] }).trim();
56
42
  } catch {
57
- missing.push('Python 3.11+');
43
+ return null;
58
44
  }
45
+ }
59
46
 
60
- // Check uv (Python package manager)
61
- try {
62
- execSync('uv --version', { stdio: 'pipe' });
63
- } catch {
64
- missing.push('uv (install: curl -LsSf https://astral.sh/uv/install.sh | sh)');
47
+ function checkDeps() {
48
+ const errors = [];
49
+ const warnings = [];
50
+
51
+ // Node.js version check
52
+ const nodeVersion = parseInt(process.version.slice(1));
53
+ if (nodeVersion < 18) {
54
+ errors.push(`Node.js 18+ required (found ${process.version})`);
65
55
  }
66
56
 
67
- if (missing.length > 0) {
68
- console.error('Missing dependencies:');
69
- missing.forEach((dep) => console.error(` - ${dep}`));
70
- console.error('\nPlease install the missing dependencies and try again.');
71
- process.exit(1);
57
+ // Python version check
58
+ let pyVersion = getVersion('python --version') || getVersion('python3 --version');
59
+ if (!pyVersion) {
60
+ errors.push('Python 3.11+ - https://python.org/');
61
+ } else {
62
+ const match = pyVersion.match(/Python (\d+)\.(\d+)/);
63
+ if (match) {
64
+ const [, major, minor] = match.map(Number);
65
+ if (major < 3 || (major === 3 && minor < 11)) {
66
+ errors.push(`Python 3.11+ required (found ${pyVersion})`);
67
+ }
68
+ }
72
69
  }
73
- }
74
70
 
75
- function initEnv() {
76
- const envPath = resolve(ROOT_DIR, 'server', '.env');
77
- const templatePath = resolve(ROOT_DIR, '.env.template');
71
+ // uv package manager check
72
+ if (!getVersion('uv --version')) {
73
+ errors.push('uv (Python package manager) - https://docs.astral.sh/uv/');
74
+ }
78
75
 
79
- if (existsSync(envPath)) {
80
- console.log('.env file already exists at server/.env');
81
- return;
76
+ // Go check (warning only - needed for WhatsApp service)
77
+ if (!getVersion('go version')) {
78
+ warnings.push('Go 1.21+ (optional, for WhatsApp service) - https://go.dev/dl/');
82
79
  }
83
80
 
84
- if (!existsSync(templatePath)) {
85
- console.error('Error: .env.template not found');
86
- process.exit(1);
81
+ if (warnings.length > 0) {
82
+ console.warn('Warnings:\n' + warnings.map(w => ` - ${w}`).join('\n') + '\n');
87
83
  }
88
84
 
89
- copyFileSync(templatePath, envPath);
90
- console.log('Created server/.env from template');
91
- console.log('Edit server/.env to configure your API keys and settings');
85
+ if (errors.length > 0) {
86
+ console.error('Missing required dependencies:\n' + errors.map(e => ` - ${e}`).join('\n'));
87
+ console.error('\nInstall the missing dependencies and try again.');
88
+ process.exit(1);
89
+ }
92
90
  }
93
91
 
94
- function runNpmScript(script) {
95
- const npm = process.platform === 'win32' ? 'npm.cmd' : 'npm';
96
- const child = spawn(npm, ['run', script], {
97
- cwd: ROOT_DIR,
92
+ function run(script) {
93
+ const child = spawn(process.platform === 'win32' ? 'npm.cmd' : 'npm', ['run', script], {
94
+ cwd: ROOT,
98
95
  stdio: 'inherit',
99
96
  shell: true,
100
97
  });
101
-
102
- child.on('error', (err) => {
103
- console.error(`Failed to run: ${err.message}`);
104
- process.exit(1);
105
- });
106
-
107
- child.on('close', (code) => {
108
- process.exit(code || 0);
109
- });
98
+ child.on('error', (e) => { console.error(`Failed: ${e.message}`); process.exit(1); });
99
+ child.on('close', (code) => process.exit(code || 0));
110
100
  }
111
101
 
112
- // Main
113
- const [, , command = 'help'] = process.argv;
114
-
115
- switch (command) {
116
- case 'help':
117
- case '--help':
118
- case '-h':
119
- printHelp();
120
- break;
121
-
122
- case 'init':
123
- initEnv();
124
- break;
125
-
126
- case 'start':
127
- checkDependencies();
128
- if (!existsSync(resolve(ROOT_DIR, 'server', '.env'))) {
129
- console.log('No .env found. Running init first...');
130
- initEnv();
131
- }
132
- runNpmScript('start');
133
- break;
134
-
135
- case 'stop':
136
- runNpmScript('stop');
137
- break;
138
-
139
- case 'build':
140
- runNpmScript('build');
141
- break;
142
-
143
- case 'docker:up':
144
- runNpmScript('docker:up');
145
- break;
146
-
147
- case 'docker:down':
148
- runNpmScript('docker:down');
149
- break;
150
-
151
- case 'docker:logs':
152
- runNpmScript('docker:logs');
153
- break;
154
-
155
- default:
156
- console.error(`Unknown command: ${command}`);
157
- printHelp();
158
- process.exit(1);
102
+ const cmd = process.argv[2] || 'help';
103
+
104
+ if (cmd === 'help' || cmd === '--help' || cmd === '-h') {
105
+ printHelp();
106
+ } else if (cmd === 'start' || cmd === 'build') {
107
+ checkDeps();
108
+ run(cmd);
109
+ } else if (COMMANDS[cmd]) {
110
+ run(cmd);
111
+ } else {
112
+ console.error(`Unknown command: ${cmd}`);
113
+ printHelp();
114
+ process.exit(1);
159
115
  }