machinaos 0.0.1 → 0.0.6

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 (420) hide show
  1. package/.env.template +71 -71
  2. package/LICENSE +21 -21
  3. package/README.md +145 -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/package.json +78 -70
  114. package/scripts/build.js +153 -45
  115. package/scripts/clean.js +40 -40
  116. package/scripts/start.js +234 -210
  117. package/scripts/stop.js +301 -325
  118. package/server/.dockerignore +44 -44
  119. package/server/Dockerfile +45 -45
  120. package/server/constants.py +244 -249
  121. package/server/core/cache.py +460 -460
  122. package/server/core/config.py +127 -127
  123. package/server/core/container.py +98 -98
  124. package/server/core/database.py +1296 -1210
  125. package/server/core/logging.py +313 -313
  126. package/server/main.py +288 -288
  127. package/server/middleware/__init__.py +5 -5
  128. package/server/middleware/auth.py +89 -89
  129. package/server/models/auth.py +52 -52
  130. package/server/models/cache.py +24 -24
  131. package/server/models/database.py +235 -210
  132. package/server/models/nodes.py +435 -455
  133. package/server/pyproject.toml +75 -72
  134. package/server/requirements.txt +83 -83
  135. package/server/routers/android.py +294 -294
  136. package/server/routers/auth.py +203 -203
  137. package/server/routers/database.py +150 -150
  138. package/server/routers/maps.py +141 -141
  139. package/server/routers/nodejs_compat.py +288 -288
  140. package/server/routers/webhook.py +90 -90
  141. package/server/routers/websocket.py +2239 -2127
  142. package/server/routers/whatsapp.py +761 -761
  143. package/server/routers/workflow.py +199 -199
  144. package/server/services/ai.py +2444 -2414
  145. package/server/services/android_service.py +588 -588
  146. package/server/services/auth.py +130 -130
  147. package/server/services/chat_client.py +160 -160
  148. package/server/services/deployment/manager.py +706 -706
  149. package/server/services/event_waiter.py +675 -785
  150. package/server/services/execution/executor.py +1351 -1351
  151. package/server/services/execution/models.py +1 -1
  152. package/server/services/handlers/__init__.py +122 -126
  153. package/server/services/handlers/ai.py +390 -355
  154. package/server/services/handlers/android.py +69 -260
  155. package/server/services/handlers/code.py +278 -278
  156. package/server/services/handlers/http.py +193 -193
  157. package/server/services/handlers/tools.py +146 -32
  158. package/server/services/handlers/triggers.py +107 -107
  159. package/server/services/handlers/utility.py +822 -822
  160. package/server/services/handlers/whatsapp.py +423 -476
  161. package/server/services/maps.py +288 -288
  162. package/server/services/memory_store.py +103 -103
  163. package/server/services/node_executor.py +372 -375
  164. package/server/services/scheduler.py +155 -155
  165. package/server/services/skill_loader.py +1 -1
  166. package/server/services/status_broadcaster.py +834 -826
  167. package/server/services/temporal/__init__.py +23 -23
  168. package/server/services/temporal/activities.py +344 -344
  169. package/server/services/temporal/client.py +76 -76
  170. package/server/services/temporal/executor.py +147 -147
  171. package/server/services/temporal/worker.py +251 -251
  172. package/server/services/temporal/workflow.py +355 -355
  173. package/server/services/temporal/ws_client.py +236 -236
  174. package/server/services/text.py +110 -110
  175. package/server/services/user_auth.py +172 -172
  176. package/server/services/websocket_client.py +29 -29
  177. package/server/services/workflow.py +597 -597
  178. package/server/skills/android-skill/SKILL.md +4 -4
  179. package/server/skills/code-skill/SKILL.md +123 -89
  180. package/server/skills/maps-skill/SKILL.md +3 -3
  181. package/server/skills/memory-skill/SKILL.md +1 -1
  182. package/server/skills/web-search-skill/SKILL.md +154 -0
  183. package/server/skills/whatsapp-skill/SKILL.md +3 -3
  184. package/server/uv.lock +461 -100
  185. package/server/whatsapp-rpc/.dockerignore +30 -30
  186. package/server/whatsapp-rpc/Dockerfile +44 -44
  187. package/server/whatsapp-rpc/Dockerfile.web +17 -17
  188. package/server/whatsapp-rpc/README.md +139 -139
  189. package/server/whatsapp-rpc/bin/whatsapp-rpc-server +0 -0
  190. package/server/whatsapp-rpc/cli.js +95 -95
  191. package/server/whatsapp-rpc/configs/config.yaml +6 -6
  192. package/server/whatsapp-rpc/docker-compose.yml +35 -35
  193. package/server/whatsapp-rpc/docs/API.md +410 -410
  194. package/server/whatsapp-rpc/node_modules/.package-lock.json +259 -0
  195. package/server/whatsapp-rpc/node_modules/chalk/license +9 -0
  196. package/server/whatsapp-rpc/node_modules/chalk/package.json +83 -0
  197. package/server/whatsapp-rpc/node_modules/chalk/readme.md +297 -0
  198. package/server/whatsapp-rpc/node_modules/chalk/source/index.d.ts +325 -0
  199. package/server/whatsapp-rpc/node_modules/chalk/source/index.js +225 -0
  200. package/server/whatsapp-rpc/node_modules/chalk/source/utilities.js +33 -0
  201. package/server/whatsapp-rpc/node_modules/chalk/source/vendor/ansi-styles/index.d.ts +236 -0
  202. package/server/whatsapp-rpc/node_modules/chalk/source/vendor/ansi-styles/index.js +223 -0
  203. package/server/whatsapp-rpc/node_modules/chalk/source/vendor/supports-color/browser.d.ts +1 -0
  204. package/server/whatsapp-rpc/node_modules/chalk/source/vendor/supports-color/browser.js +34 -0
  205. package/server/whatsapp-rpc/node_modules/chalk/source/vendor/supports-color/index.d.ts +55 -0
  206. package/server/whatsapp-rpc/node_modules/chalk/source/vendor/supports-color/index.js +190 -0
  207. package/server/whatsapp-rpc/node_modules/commander/LICENSE +22 -0
  208. package/server/whatsapp-rpc/node_modules/commander/Readme.md +1148 -0
  209. package/server/whatsapp-rpc/node_modules/commander/esm.mjs +16 -0
  210. package/server/whatsapp-rpc/node_modules/commander/index.js +26 -0
  211. package/server/whatsapp-rpc/node_modules/commander/lib/argument.js +145 -0
  212. package/server/whatsapp-rpc/node_modules/commander/lib/command.js +2179 -0
  213. package/server/whatsapp-rpc/node_modules/commander/lib/error.js +43 -0
  214. package/server/whatsapp-rpc/node_modules/commander/lib/help.js +462 -0
  215. package/server/whatsapp-rpc/node_modules/commander/lib/option.js +329 -0
  216. package/server/whatsapp-rpc/node_modules/commander/lib/suggestSimilar.js +100 -0
  217. package/server/whatsapp-rpc/node_modules/commander/package-support.json +16 -0
  218. package/server/whatsapp-rpc/node_modules/commander/package.json +80 -0
  219. package/server/whatsapp-rpc/node_modules/commander/typings/esm.d.mts +3 -0
  220. package/server/whatsapp-rpc/node_modules/commander/typings/index.d.ts +884 -0
  221. package/server/whatsapp-rpc/node_modules/cross-spawn/LICENSE +21 -0
  222. package/server/whatsapp-rpc/node_modules/cross-spawn/README.md +89 -0
  223. package/server/whatsapp-rpc/node_modules/cross-spawn/index.js +39 -0
  224. package/server/whatsapp-rpc/node_modules/cross-spawn/lib/enoent.js +59 -0
  225. package/server/whatsapp-rpc/node_modules/cross-spawn/lib/parse.js +91 -0
  226. package/server/whatsapp-rpc/node_modules/cross-spawn/lib/util/escape.js +47 -0
  227. package/server/whatsapp-rpc/node_modules/cross-spawn/lib/util/readShebang.js +23 -0
  228. package/server/whatsapp-rpc/node_modules/cross-spawn/lib/util/resolveCommand.js +52 -0
  229. package/server/whatsapp-rpc/node_modules/cross-spawn/package.json +73 -0
  230. package/server/whatsapp-rpc/node_modules/execa/index.d.ts +955 -0
  231. package/server/whatsapp-rpc/node_modules/execa/index.js +309 -0
  232. package/server/whatsapp-rpc/node_modules/execa/lib/command.js +119 -0
  233. package/server/whatsapp-rpc/node_modules/execa/lib/error.js +87 -0
  234. package/server/whatsapp-rpc/node_modules/execa/lib/kill.js +102 -0
  235. package/server/whatsapp-rpc/node_modules/execa/lib/pipe.js +42 -0
  236. package/server/whatsapp-rpc/node_modules/execa/lib/promise.js +36 -0
  237. package/server/whatsapp-rpc/node_modules/execa/lib/stdio.js +49 -0
  238. package/server/whatsapp-rpc/node_modules/execa/lib/stream.js +133 -0
  239. package/server/whatsapp-rpc/node_modules/execa/lib/verbose.js +19 -0
  240. package/server/whatsapp-rpc/node_modules/execa/license +9 -0
  241. package/server/whatsapp-rpc/node_modules/execa/package.json +90 -0
  242. package/server/whatsapp-rpc/node_modules/execa/readme.md +822 -0
  243. package/server/whatsapp-rpc/node_modules/get-stream/license +9 -0
  244. package/server/whatsapp-rpc/node_modules/get-stream/package.json +53 -0
  245. package/server/whatsapp-rpc/node_modules/get-stream/readme.md +291 -0
  246. package/server/whatsapp-rpc/node_modules/get-stream/source/array-buffer.js +84 -0
  247. package/server/whatsapp-rpc/node_modules/get-stream/source/array.js +32 -0
  248. package/server/whatsapp-rpc/node_modules/get-stream/source/buffer.js +20 -0
  249. package/server/whatsapp-rpc/node_modules/get-stream/source/contents.js +101 -0
  250. package/server/whatsapp-rpc/node_modules/get-stream/source/index.d.ts +119 -0
  251. package/server/whatsapp-rpc/node_modules/get-stream/source/index.js +5 -0
  252. package/server/whatsapp-rpc/node_modules/get-stream/source/string.js +36 -0
  253. package/server/whatsapp-rpc/node_modules/get-stream/source/utils.js +11 -0
  254. package/server/whatsapp-rpc/node_modules/get-them-args/LICENSE +21 -0
  255. package/server/whatsapp-rpc/node_modules/get-them-args/README.md +95 -0
  256. package/server/whatsapp-rpc/node_modules/get-them-args/index.js +97 -0
  257. package/server/whatsapp-rpc/node_modules/get-them-args/package.json +36 -0
  258. package/server/whatsapp-rpc/node_modules/human-signals/LICENSE +201 -0
  259. package/server/whatsapp-rpc/node_modules/human-signals/README.md +168 -0
  260. package/server/whatsapp-rpc/node_modules/human-signals/build/src/core.js +273 -0
  261. package/server/whatsapp-rpc/node_modules/human-signals/build/src/main.d.ts +73 -0
  262. package/server/whatsapp-rpc/node_modules/human-signals/build/src/main.js +70 -0
  263. package/server/whatsapp-rpc/node_modules/human-signals/build/src/realtime.js +16 -0
  264. package/server/whatsapp-rpc/node_modules/human-signals/build/src/signals.js +34 -0
  265. package/server/whatsapp-rpc/node_modules/human-signals/package.json +61 -0
  266. package/server/whatsapp-rpc/node_modules/is-stream/index.d.ts +81 -0
  267. package/server/whatsapp-rpc/node_modules/is-stream/index.js +29 -0
  268. package/server/whatsapp-rpc/node_modules/is-stream/license +9 -0
  269. package/server/whatsapp-rpc/node_modules/is-stream/package.json +44 -0
  270. package/server/whatsapp-rpc/node_modules/is-stream/readme.md +60 -0
  271. package/server/whatsapp-rpc/node_modules/isexe/LICENSE +15 -0
  272. package/server/whatsapp-rpc/node_modules/isexe/README.md +51 -0
  273. package/server/whatsapp-rpc/node_modules/isexe/index.js +57 -0
  274. package/server/whatsapp-rpc/node_modules/isexe/mode.js +41 -0
  275. package/server/whatsapp-rpc/node_modules/isexe/package.json +31 -0
  276. package/server/whatsapp-rpc/node_modules/isexe/test/basic.js +221 -0
  277. package/server/whatsapp-rpc/node_modules/isexe/windows.js +42 -0
  278. package/server/whatsapp-rpc/node_modules/kill-port/.editorconfig +12 -0
  279. package/server/whatsapp-rpc/node_modules/kill-port/.gitattributes +1 -0
  280. package/server/whatsapp-rpc/node_modules/kill-port/LICENSE +21 -0
  281. package/server/whatsapp-rpc/node_modules/kill-port/README.md +140 -0
  282. package/server/whatsapp-rpc/node_modules/kill-port/cli.js +25 -0
  283. package/server/whatsapp-rpc/node_modules/kill-port/example.js +21 -0
  284. package/server/whatsapp-rpc/node_modules/kill-port/index.js +46 -0
  285. package/server/whatsapp-rpc/node_modules/kill-port/logo.png +0 -0
  286. package/server/whatsapp-rpc/node_modules/kill-port/package.json +41 -0
  287. package/server/whatsapp-rpc/node_modules/kill-port/pnpm-lock.yaml +4606 -0
  288. package/server/whatsapp-rpc/node_modules/kill-port/test.js +16 -0
  289. package/server/whatsapp-rpc/node_modules/merge-stream/LICENSE +21 -0
  290. package/server/whatsapp-rpc/node_modules/merge-stream/README.md +78 -0
  291. package/server/whatsapp-rpc/node_modules/merge-stream/index.js +41 -0
  292. package/server/whatsapp-rpc/node_modules/merge-stream/package.json +19 -0
  293. package/server/whatsapp-rpc/node_modules/mimic-fn/index.d.ts +52 -0
  294. package/server/whatsapp-rpc/node_modules/mimic-fn/index.js +71 -0
  295. package/server/whatsapp-rpc/node_modules/mimic-fn/license +9 -0
  296. package/server/whatsapp-rpc/node_modules/mimic-fn/package.json +45 -0
  297. package/server/whatsapp-rpc/node_modules/mimic-fn/readme.md +90 -0
  298. package/server/whatsapp-rpc/node_modules/npm-run-path/index.d.ts +90 -0
  299. package/server/whatsapp-rpc/node_modules/npm-run-path/index.js +52 -0
  300. package/server/whatsapp-rpc/node_modules/npm-run-path/license +9 -0
  301. package/server/whatsapp-rpc/node_modules/npm-run-path/node_modules/path-key/index.d.ts +31 -0
  302. package/server/whatsapp-rpc/node_modules/npm-run-path/node_modules/path-key/index.js +12 -0
  303. package/server/whatsapp-rpc/node_modules/npm-run-path/node_modules/path-key/license +9 -0
  304. package/server/whatsapp-rpc/node_modules/npm-run-path/node_modules/path-key/package.json +41 -0
  305. package/server/whatsapp-rpc/node_modules/npm-run-path/node_modules/path-key/readme.md +57 -0
  306. package/server/whatsapp-rpc/node_modules/npm-run-path/package.json +49 -0
  307. package/server/whatsapp-rpc/node_modules/npm-run-path/readme.md +104 -0
  308. package/server/whatsapp-rpc/node_modules/onetime/index.d.ts +59 -0
  309. package/server/whatsapp-rpc/node_modules/onetime/index.js +41 -0
  310. package/server/whatsapp-rpc/node_modules/onetime/license +9 -0
  311. package/server/whatsapp-rpc/node_modules/onetime/package.json +45 -0
  312. package/server/whatsapp-rpc/node_modules/onetime/readme.md +94 -0
  313. package/server/whatsapp-rpc/node_modules/path-key/index.d.ts +40 -0
  314. package/server/whatsapp-rpc/node_modules/path-key/index.js +16 -0
  315. package/server/whatsapp-rpc/node_modules/path-key/license +9 -0
  316. package/server/whatsapp-rpc/node_modules/path-key/package.json +39 -0
  317. package/server/whatsapp-rpc/node_modules/path-key/readme.md +61 -0
  318. package/server/whatsapp-rpc/node_modules/shebang-command/index.js +19 -0
  319. package/server/whatsapp-rpc/node_modules/shebang-command/license +9 -0
  320. package/server/whatsapp-rpc/node_modules/shebang-command/package.json +34 -0
  321. package/server/whatsapp-rpc/node_modules/shebang-command/readme.md +34 -0
  322. package/server/whatsapp-rpc/node_modules/shebang-regex/index.d.ts +22 -0
  323. package/server/whatsapp-rpc/node_modules/shebang-regex/index.js +2 -0
  324. package/server/whatsapp-rpc/node_modules/shebang-regex/license +9 -0
  325. package/server/whatsapp-rpc/node_modules/shebang-regex/package.json +35 -0
  326. package/server/whatsapp-rpc/node_modules/shebang-regex/readme.md +33 -0
  327. package/server/whatsapp-rpc/node_modules/shell-exec/LICENSE +21 -0
  328. package/server/whatsapp-rpc/node_modules/shell-exec/README.md +60 -0
  329. package/server/whatsapp-rpc/node_modules/shell-exec/index.js +47 -0
  330. package/server/whatsapp-rpc/node_modules/shell-exec/package.json +29 -0
  331. package/server/whatsapp-rpc/node_modules/signal-exit/LICENSE.txt +16 -0
  332. package/server/whatsapp-rpc/node_modules/signal-exit/README.md +74 -0
  333. package/server/whatsapp-rpc/node_modules/signal-exit/dist/cjs/browser.d.ts +12 -0
  334. package/server/whatsapp-rpc/node_modules/signal-exit/dist/cjs/browser.d.ts.map +1 -0
  335. package/server/whatsapp-rpc/node_modules/signal-exit/dist/cjs/browser.js +10 -0
  336. package/server/whatsapp-rpc/node_modules/signal-exit/dist/cjs/browser.js.map +1 -0
  337. package/server/whatsapp-rpc/node_modules/signal-exit/dist/cjs/index.d.ts +48 -0
  338. package/server/whatsapp-rpc/node_modules/signal-exit/dist/cjs/index.d.ts.map +1 -0
  339. package/server/whatsapp-rpc/node_modules/signal-exit/dist/cjs/index.js +279 -0
  340. package/server/whatsapp-rpc/node_modules/signal-exit/dist/cjs/index.js.map +1 -0
  341. package/server/whatsapp-rpc/node_modules/signal-exit/dist/cjs/package.json +3 -0
  342. package/server/whatsapp-rpc/node_modules/signal-exit/dist/cjs/signals.d.ts +29 -0
  343. package/server/whatsapp-rpc/node_modules/signal-exit/dist/cjs/signals.d.ts.map +1 -0
  344. package/server/whatsapp-rpc/node_modules/signal-exit/dist/cjs/signals.js +42 -0
  345. package/server/whatsapp-rpc/node_modules/signal-exit/dist/cjs/signals.js.map +1 -0
  346. package/server/whatsapp-rpc/node_modules/signal-exit/dist/mjs/browser.d.ts +12 -0
  347. package/server/whatsapp-rpc/node_modules/signal-exit/dist/mjs/browser.d.ts.map +1 -0
  348. package/server/whatsapp-rpc/node_modules/signal-exit/dist/mjs/browser.js +4 -0
  349. package/server/whatsapp-rpc/node_modules/signal-exit/dist/mjs/browser.js.map +1 -0
  350. package/server/whatsapp-rpc/node_modules/signal-exit/dist/mjs/index.d.ts +48 -0
  351. package/server/whatsapp-rpc/node_modules/signal-exit/dist/mjs/index.d.ts.map +1 -0
  352. package/server/whatsapp-rpc/node_modules/signal-exit/dist/mjs/index.js +275 -0
  353. package/server/whatsapp-rpc/node_modules/signal-exit/dist/mjs/index.js.map +1 -0
  354. package/server/whatsapp-rpc/node_modules/signal-exit/dist/mjs/package.json +3 -0
  355. package/server/whatsapp-rpc/node_modules/signal-exit/dist/mjs/signals.d.ts +29 -0
  356. package/server/whatsapp-rpc/node_modules/signal-exit/dist/mjs/signals.d.ts.map +1 -0
  357. package/server/whatsapp-rpc/node_modules/signal-exit/dist/mjs/signals.js +39 -0
  358. package/server/whatsapp-rpc/node_modules/signal-exit/dist/mjs/signals.js.map +1 -0
  359. package/server/whatsapp-rpc/node_modules/signal-exit/package.json +106 -0
  360. package/server/whatsapp-rpc/node_modules/strip-final-newline/index.js +14 -0
  361. package/server/whatsapp-rpc/node_modules/strip-final-newline/license +9 -0
  362. package/server/whatsapp-rpc/node_modules/strip-final-newline/package.json +43 -0
  363. package/server/whatsapp-rpc/node_modules/strip-final-newline/readme.md +35 -0
  364. package/server/whatsapp-rpc/node_modules/which/CHANGELOG.md +166 -0
  365. package/server/whatsapp-rpc/node_modules/which/LICENSE +15 -0
  366. package/server/whatsapp-rpc/node_modules/which/README.md +54 -0
  367. package/server/whatsapp-rpc/node_modules/which/bin/node-which +52 -0
  368. package/server/whatsapp-rpc/node_modules/which/package.json +43 -0
  369. package/server/whatsapp-rpc/node_modules/which/which.js +125 -0
  370. package/server/whatsapp-rpc/package-lock.json +272 -0
  371. package/server/whatsapp-rpc/package.json +30 -30
  372. package/server/whatsapp-rpc/schema.json +1294 -1294
  373. package/server/whatsapp-rpc/scripts/clean.cjs +66 -66
  374. package/server/whatsapp-rpc/scripts/cli.js +162 -162
  375. package/server/whatsapp-rpc/src/go/whatsapp/history.go +166 -166
  376. package/server/whatsapp-rpc/src/python/pyproject.toml +15 -15
  377. package/server/whatsapp-rpc/src/python/whatsapp_rpc/__init__.py +4 -4
  378. package/server/whatsapp-rpc/src/python/whatsapp_rpc/client.py +427 -427
  379. package/server/whatsapp-rpc/web/app.py +609 -609
  380. package/server/whatsapp-rpc/web/requirements.txt +6 -6
  381. package/server/whatsapp-rpc/web/rpc_client.py +427 -427
  382. package/server/whatsapp-rpc/web/static/openapi.yaml +59 -59
  383. package/server/whatsapp-rpc/web/templates/base.html +149 -149
  384. package/server/whatsapp-rpc/web/templates/contacts.html +240 -240
  385. package/server/whatsapp-rpc/web/templates/dashboard.html +319 -319
  386. package/server/whatsapp-rpc/web/templates/groups.html +328 -328
  387. package/server/whatsapp-rpc/web/templates/messages.html +465 -465
  388. package/server/whatsapp-rpc/web/templates/messaging.html +680 -680
  389. package/server/whatsapp-rpc/web/templates/send.html +258 -258
  390. package/server/whatsapp-rpc/web/templates/settings.html +459 -459
  391. package/client/src/components/ui/AndroidSettingsPanel.tsx +0 -401
  392. package/client/src/components/ui/WhatsAppSettingsPanel.tsx +0 -345
  393. package/client/src/nodeDefinitions/androidDeviceNodes.ts +0 -140
  394. package/docker-compose.prod.yml +0 -107
  395. package/docker-compose.yml +0 -104
  396. package/docs-MachinaOs/README.md +0 -85
  397. package/docs-MachinaOs/deployment/docker.mdx +0 -228
  398. package/docs-MachinaOs/deployment/production.mdx +0 -345
  399. package/docs-MachinaOs/docs.json +0 -75
  400. package/docs-MachinaOs/faq.mdx +0 -309
  401. package/docs-MachinaOs/favicon.svg +0 -5
  402. package/docs-MachinaOs/installation.mdx +0 -160
  403. package/docs-MachinaOs/introduction.mdx +0 -114
  404. package/docs-MachinaOs/logo/dark.svg +0 -6
  405. package/docs-MachinaOs/logo/light.svg +0 -6
  406. package/docs-MachinaOs/nodes/ai-agent.mdx +0 -216
  407. package/docs-MachinaOs/nodes/ai-models.mdx +0 -240
  408. package/docs-MachinaOs/nodes/android.mdx +0 -411
  409. package/docs-MachinaOs/nodes/overview.mdx +0 -181
  410. package/docs-MachinaOs/nodes/schedulers.mdx +0 -316
  411. package/docs-MachinaOs/nodes/webhooks.mdx +0 -330
  412. package/docs-MachinaOs/nodes/whatsapp.mdx +0 -305
  413. package/docs-MachinaOs/quickstart.mdx +0 -119
  414. package/docs-MachinaOs/tutorials/ai-agent-workflow.mdx +0 -177
  415. package/docs-MachinaOs/tutorials/android-automation.mdx +0 -242
  416. package/docs-MachinaOs/tutorials/first-workflow.mdx +0 -134
  417. package/docs-MachinaOs/tutorials/whatsapp-automation.mdx +0 -185
  418. package/nul +0 -0
  419. package/scripts/check-ports.ps1 +0 -33
  420. 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,145 @@
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: Clone & Run
8
+
9
+ ```bash
10
+ git clone https://github.com/trohitg/MachinaOS.git
11
+ cd MachinaOS
12
+ npm run build
13
+ npm run start
14
+ ```
15
+
16
+ ### Option 2: Global Install
17
+
18
+ ```bash
19
+ npm install -g machinaos
20
+ machinaos start
21
+ ```
22
+
23
+ ### Option 3: Docker
24
+
25
+ ```bash
26
+ git clone https://github.com/trohitg/MachinaOS.git
27
+ cd MachinaOS
28
+ npm run docker:up
29
+ ```
30
+
31
+ Open http://localhost:3000
32
+
33
+ ## Prerequisites
34
+
35
+ - **Node.js 18+** - https://nodejs.org/
36
+ - **Python 3.11+** - https://python.org/
37
+ - **uv** - `curl -LsSf https://astral.sh/uv/install.sh | sh`
38
+ - **Go 1.21+** - https://go.dev/dl/ (for WhatsApp service)
39
+
40
+ ## CLI Commands
41
+
42
+ | Command | Description |
43
+ |---------|-------------|
44
+ | `machinaos start` | Start all services (frontend, backend, WhatsApp) |
45
+ | `machinaos stop` | Stop all running services |
46
+ | `machinaos build` | Build for production |
47
+ | `machinaos clean` | Remove build artifacts and dependencies |
48
+ | `machinaos docker:up` | Start with Docker Compose |
49
+ | `machinaos docker:down` | Stop Docker containers |
50
+ | `machinaos help` | Show all available commands |
51
+
52
+ ## Local Development
53
+
54
+ ```bash
55
+ git clone https://github.com/trohitg/MachinaOS.git
56
+ cd MachinaOS
57
+ npm run build
58
+ npm run start
59
+ ```
60
+
61
+ ---
62
+
63
+ ## Features
64
+
65
+ - **AI Workflows** - OpenAI, Claude, Gemini, Groq, OpenRouter models with tool calling
66
+ - **AI Agents** - LangGraph-powered agents with memory and skills
67
+ - **Android Automation** - Control your phone via 17 service nodes
68
+ - **WhatsApp Bots** - Send/receive messages with filters and triggers
69
+ - **HTTP/Webhooks** - API integrations with event-driven triggers
70
+ - **Document Processing** - RAG pipeline with vector storage
71
+
72
+ ## Configuration
73
+
74
+ **API Keys:** Click **Credentials** button in toolbar to add API keys for OpenAI, Claude, Google Maps, etc.
75
+
76
+ **Environment:** Copy `.env.template` to `.env` and customize ports, auth settings, database location.
77
+
78
+ ## Docker Commands
79
+
80
+ | Command | Description |
81
+ |---------|-------------|
82
+ | `machinaos docker:up` | Start containers (detached) |
83
+ | `machinaos docker:down` | Stop containers |
84
+ | `machinaos docker:build` | Rebuild images |
85
+ | `machinaos docker:logs` | View logs (follows) |
86
+
87
+ **Redis (optional):** Set `REDIS_ENABLED=true` in `.env`
88
+
89
+ ### Production Docker
90
+
91
+ ```bash
92
+ npm run docker:prod:build
93
+ npm run docker:prod:up
94
+ ```
95
+
96
+ ## Project Structure
97
+
98
+ ```
99
+ MachinaOS/
100
+ ├── client/ # React frontend (localhost:3000)
101
+ ├── server/ # Python FastAPI backend (localhost:3010)
102
+ │ ├── services/ # Workflow execution, AI, handlers
103
+ │ ├── routers/ # API endpoints, WebSocket
104
+ │ └── whatsapp-rpc/ # WhatsApp Go service
105
+ ├── scripts/ # Cross-platform Node.js scripts
106
+ └── bin/cli.js # CLI entry point
107
+ ```
108
+
109
+ ## Tech Stack
110
+
111
+ - **Frontend:** React 19, TypeScript, React Flow, Zustand
112
+ - **Backend:** Python 3.11+, FastAPI, SQLite, LangChain/LangGraph
113
+ - **Services:** WhatsApp (Go + whatsmeow), WebSocket relay
114
+ - **Package Manager:** uv (Python), npm (Node.js)
115
+
116
+ ## Troubleshooting
117
+
118
+ **Port already in use:**
119
+ ```bash
120
+ machinaos stop # Kill all services
121
+ machinaos start # Restart
122
+ ```
123
+
124
+ **Missing dependencies:**
125
+ ```bash
126
+ machinaos build # Install all dependencies
127
+ ```
128
+
129
+ **Clean install:**
130
+ ```bash
131
+ machinaos clean # Remove node_modules, .venv, dist
132
+ machinaos build # Reinstall everything
133
+ ```
134
+
135
+ ## Contributing
136
+
137
+ 1. Fork the repository
138
+ 2. Create a feature branch
139
+ 3. Make your changes
140
+ 4. Run tests and linting
141
+ 5. Submit a pull request
142
+
143
+ ## License
144
+
145
+ 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
  }