machinaos 0.0.8 → 0.0.10

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 (296) hide show
  1. package/.env.template +4 -0
  2. package/README.md +86 -36
  3. package/bin/cli.js +23 -12
  4. package/client/Dockerfile +8 -6
  5. package/client/src/Dashboard.tsx +57 -11
  6. package/client/src/components/AIAgentNode.tsx +414 -90
  7. package/client/src/components/CredentialsModal.tsx +122 -5
  8. package/client/src/components/GenericNode.tsx +39 -2
  9. package/client/src/components/LocationParameterPanel.tsx +3 -3
  10. package/client/src/components/ModelNode.tsx +5 -10
  11. package/client/src/components/SquareNode.tsx +5 -5
  12. package/client/src/components/ToolkitNode.tsx +22 -17
  13. package/client/src/components/parameterPanel/InputSection.tsx +152 -18
  14. package/client/src/components/parameterPanel/MasterSkillEditor.tsx +581 -0
  15. package/client/src/components/parameterPanel/MiddleSection.tsx +131 -26
  16. package/client/src/components/ui/CodeEditor.tsx +3 -3
  17. package/client/src/components/ui/ComponentPalette.tsx +23 -14
  18. package/client/src/components/ui/SettingsPanel.tsx +289 -131
  19. package/client/src/hooks/useDragAndDrop.ts +6 -6
  20. package/client/src/hooks/useParameterPanel.ts +14 -34
  21. package/client/src/nodeDefinitions/aiAgentNodes.ts +20 -8
  22. package/client/src/nodeDefinitions/locationNodes.ts +16 -16
  23. package/client/src/nodeDefinitions/schedulerNodes.ts +38 -22
  24. package/client/src/nodeDefinitions/skillNodes.ts +37 -1
  25. package/client/src/nodeDefinitions/socialNodes.ts +750 -0
  26. package/client/src/nodeDefinitions/specializedAgentNodes.ts +577 -0
  27. package/client/src/nodeDefinitions/toolNodes.ts +2 -31
  28. package/client/src/nodeDefinitions.ts +13 -1
  29. package/client/src/schemas/workflowSchema.ts +3 -3
  30. package/client/src/services/executionService.ts +6 -3
  31. package/client/src/store/useAppStore.ts +64 -5
  32. package/client/src/styles/theme.ts +2 -0
  33. package/client/src/utils/locationUtils.ts +2 -2
  34. package/client/src/utils/nodeUtils.ts +3 -3
  35. package/client/src/utils/workflowExport.ts +26 -2
  36. package/client/vite.config.js +13 -0
  37. package/package.json +21 -8
  38. package/scripts/build.js +49 -80
  39. package/scripts/clean.js +1 -3
  40. package/scripts/install.js +235 -0
  41. package/scripts/postinstall.js +29 -53
  42. package/scripts/serve-client.js +67 -0
  43. package/scripts/start.js +34 -6
  44. package/server/constants.py +27 -3
  45. package/server/core/config.py +3 -0
  46. package/server/core/database.py +93 -2
  47. package/server/main.py +2 -2
  48. package/server/models/database.py +26 -0
  49. package/server/models/nodes.py +21 -20
  50. package/server/routers/websocket.py +163 -1
  51. package/server/services/ai.py +317 -50
  52. package/server/services/android/client.py +20 -21
  53. package/server/services/android_service.py +12 -14
  54. package/server/services/claude_oauth.py +139 -0
  55. package/server/services/handlers/__init__.py +10 -0
  56. package/server/services/handlers/ai.py +238 -225
  57. package/server/services/handlers/android.py +22 -2
  58. package/server/services/handlers/social.py +525 -0
  59. package/server/services/handlers/tools.py +356 -15
  60. package/server/services/handlers/utility.py +17 -17
  61. package/server/services/maps.py +8 -8
  62. package/server/services/node_executor.py +73 -10
  63. package/server/services/skill_loader.py +10 -13
  64. package/server/services/workflow.py +4 -0
  65. package/server/skills/GUIDE.md +137 -0
  66. package/server/skills/android/personality/SKILL.md +57 -0
  67. package/server/skills/{android-skill → android/skill}/SKILL.md +2 -0
  68. package/server/skills/{assistant-personality → assistant/assistant-personality}/SKILL.md +2 -0
  69. package/server/skills/{code-skill → assistant/code-skill}/SKILL.md +2 -0
  70. package/server/skills/{http-skill → assistant/http-skill}/SKILL.md +2 -0
  71. package/server/skills/{maps-skill → assistant/maps-skill}/SKILL.md +2 -0
  72. package/server/skills/{memory-skill → assistant/memory-skill}/SKILL.md +2 -0
  73. package/server/skills/{scheduler-skill → assistant/scheduler-skill}/SKILL.md +2 -0
  74. package/server/skills/{web-search-skill → assistant/web-search-skill}/SKILL.md +2 -0
  75. package/server/skills/{whatsapp-skill → assistant/whatsapp-skill}/SKILL.md +2 -0
  76. package/client/.dockerignore +0 -45
  77. package/client/dist/assets/index-DFSC53FP.css +0 -1
  78. package/client/dist/assets/index-fJ-1gTf5.js +0 -613
  79. package/client/dist/index.html +0 -14
  80. package/scripts/download-binaries.js +0 -178
  81. package/server/uv.lock +0 -3277
  82. package/server/whatsapp-rpc/.dockerignore +0 -30
  83. package/server/whatsapp-rpc/Dockerfile +0 -44
  84. package/server/whatsapp-rpc/Dockerfile.web +0 -17
  85. package/server/whatsapp-rpc/README.md +0 -139
  86. package/server/whatsapp-rpc/bin/whatsapp-rpc-server +0 -0
  87. package/server/whatsapp-rpc/cli.js +0 -95
  88. package/server/whatsapp-rpc/configs/config.yaml +0 -7
  89. package/server/whatsapp-rpc/docker-compose.yml +0 -35
  90. package/server/whatsapp-rpc/docs/API.md +0 -410
  91. package/server/whatsapp-rpc/go.mod +0 -67
  92. package/server/whatsapp-rpc/go.sum +0 -203
  93. package/server/whatsapp-rpc/node_modules/.package-lock.json +0 -259
  94. package/server/whatsapp-rpc/node_modules/chalk/license +0 -9
  95. package/server/whatsapp-rpc/node_modules/chalk/package.json +0 -83
  96. package/server/whatsapp-rpc/node_modules/chalk/readme.md +0 -297
  97. package/server/whatsapp-rpc/node_modules/chalk/source/index.d.ts +0 -325
  98. package/server/whatsapp-rpc/node_modules/chalk/source/index.js +0 -225
  99. package/server/whatsapp-rpc/node_modules/chalk/source/utilities.js +0 -33
  100. package/server/whatsapp-rpc/node_modules/chalk/source/vendor/ansi-styles/index.d.ts +0 -236
  101. package/server/whatsapp-rpc/node_modules/chalk/source/vendor/ansi-styles/index.js +0 -223
  102. package/server/whatsapp-rpc/node_modules/chalk/source/vendor/supports-color/browser.d.ts +0 -1
  103. package/server/whatsapp-rpc/node_modules/chalk/source/vendor/supports-color/browser.js +0 -34
  104. package/server/whatsapp-rpc/node_modules/chalk/source/vendor/supports-color/index.d.ts +0 -55
  105. package/server/whatsapp-rpc/node_modules/chalk/source/vendor/supports-color/index.js +0 -190
  106. package/server/whatsapp-rpc/node_modules/commander/LICENSE +0 -22
  107. package/server/whatsapp-rpc/node_modules/commander/Readme.md +0 -1148
  108. package/server/whatsapp-rpc/node_modules/commander/esm.mjs +0 -16
  109. package/server/whatsapp-rpc/node_modules/commander/index.js +0 -26
  110. package/server/whatsapp-rpc/node_modules/commander/lib/argument.js +0 -145
  111. package/server/whatsapp-rpc/node_modules/commander/lib/command.js +0 -2179
  112. package/server/whatsapp-rpc/node_modules/commander/lib/error.js +0 -43
  113. package/server/whatsapp-rpc/node_modules/commander/lib/help.js +0 -462
  114. package/server/whatsapp-rpc/node_modules/commander/lib/option.js +0 -329
  115. package/server/whatsapp-rpc/node_modules/commander/lib/suggestSimilar.js +0 -100
  116. package/server/whatsapp-rpc/node_modules/commander/package-support.json +0 -16
  117. package/server/whatsapp-rpc/node_modules/commander/package.json +0 -80
  118. package/server/whatsapp-rpc/node_modules/commander/typings/esm.d.mts +0 -3
  119. package/server/whatsapp-rpc/node_modules/commander/typings/index.d.ts +0 -884
  120. package/server/whatsapp-rpc/node_modules/cross-spawn/LICENSE +0 -21
  121. package/server/whatsapp-rpc/node_modules/cross-spawn/README.md +0 -89
  122. package/server/whatsapp-rpc/node_modules/cross-spawn/index.js +0 -39
  123. package/server/whatsapp-rpc/node_modules/cross-spawn/lib/enoent.js +0 -59
  124. package/server/whatsapp-rpc/node_modules/cross-spawn/lib/parse.js +0 -91
  125. package/server/whatsapp-rpc/node_modules/cross-spawn/lib/util/escape.js +0 -47
  126. package/server/whatsapp-rpc/node_modules/cross-spawn/lib/util/readShebang.js +0 -23
  127. package/server/whatsapp-rpc/node_modules/cross-spawn/lib/util/resolveCommand.js +0 -52
  128. package/server/whatsapp-rpc/node_modules/cross-spawn/package.json +0 -73
  129. package/server/whatsapp-rpc/node_modules/execa/index.d.ts +0 -955
  130. package/server/whatsapp-rpc/node_modules/execa/index.js +0 -309
  131. package/server/whatsapp-rpc/node_modules/execa/lib/command.js +0 -119
  132. package/server/whatsapp-rpc/node_modules/execa/lib/error.js +0 -87
  133. package/server/whatsapp-rpc/node_modules/execa/lib/kill.js +0 -102
  134. package/server/whatsapp-rpc/node_modules/execa/lib/pipe.js +0 -42
  135. package/server/whatsapp-rpc/node_modules/execa/lib/promise.js +0 -36
  136. package/server/whatsapp-rpc/node_modules/execa/lib/stdio.js +0 -49
  137. package/server/whatsapp-rpc/node_modules/execa/lib/stream.js +0 -133
  138. package/server/whatsapp-rpc/node_modules/execa/lib/verbose.js +0 -19
  139. package/server/whatsapp-rpc/node_modules/execa/license +0 -9
  140. package/server/whatsapp-rpc/node_modules/execa/package.json +0 -90
  141. package/server/whatsapp-rpc/node_modules/execa/readme.md +0 -822
  142. package/server/whatsapp-rpc/node_modules/get-stream/license +0 -9
  143. package/server/whatsapp-rpc/node_modules/get-stream/package.json +0 -53
  144. package/server/whatsapp-rpc/node_modules/get-stream/readme.md +0 -291
  145. package/server/whatsapp-rpc/node_modules/get-stream/source/array-buffer.js +0 -84
  146. package/server/whatsapp-rpc/node_modules/get-stream/source/array.js +0 -32
  147. package/server/whatsapp-rpc/node_modules/get-stream/source/buffer.js +0 -20
  148. package/server/whatsapp-rpc/node_modules/get-stream/source/contents.js +0 -101
  149. package/server/whatsapp-rpc/node_modules/get-stream/source/index.d.ts +0 -119
  150. package/server/whatsapp-rpc/node_modules/get-stream/source/index.js +0 -5
  151. package/server/whatsapp-rpc/node_modules/get-stream/source/string.js +0 -36
  152. package/server/whatsapp-rpc/node_modules/get-stream/source/utils.js +0 -11
  153. package/server/whatsapp-rpc/node_modules/get-them-args/LICENSE +0 -21
  154. package/server/whatsapp-rpc/node_modules/get-them-args/README.md +0 -95
  155. package/server/whatsapp-rpc/node_modules/get-them-args/index.js +0 -97
  156. package/server/whatsapp-rpc/node_modules/get-them-args/package.json +0 -36
  157. package/server/whatsapp-rpc/node_modules/human-signals/LICENSE +0 -201
  158. package/server/whatsapp-rpc/node_modules/human-signals/README.md +0 -168
  159. package/server/whatsapp-rpc/node_modules/human-signals/build/src/core.js +0 -273
  160. package/server/whatsapp-rpc/node_modules/human-signals/build/src/main.d.ts +0 -73
  161. package/server/whatsapp-rpc/node_modules/human-signals/build/src/main.js +0 -70
  162. package/server/whatsapp-rpc/node_modules/human-signals/build/src/realtime.js +0 -16
  163. package/server/whatsapp-rpc/node_modules/human-signals/build/src/signals.js +0 -34
  164. package/server/whatsapp-rpc/node_modules/human-signals/package.json +0 -61
  165. package/server/whatsapp-rpc/node_modules/is-stream/index.d.ts +0 -81
  166. package/server/whatsapp-rpc/node_modules/is-stream/index.js +0 -29
  167. package/server/whatsapp-rpc/node_modules/is-stream/license +0 -9
  168. package/server/whatsapp-rpc/node_modules/is-stream/package.json +0 -44
  169. package/server/whatsapp-rpc/node_modules/is-stream/readme.md +0 -60
  170. package/server/whatsapp-rpc/node_modules/isexe/LICENSE +0 -15
  171. package/server/whatsapp-rpc/node_modules/isexe/README.md +0 -51
  172. package/server/whatsapp-rpc/node_modules/isexe/index.js +0 -57
  173. package/server/whatsapp-rpc/node_modules/isexe/mode.js +0 -41
  174. package/server/whatsapp-rpc/node_modules/isexe/package.json +0 -31
  175. package/server/whatsapp-rpc/node_modules/isexe/test/basic.js +0 -221
  176. package/server/whatsapp-rpc/node_modules/isexe/windows.js +0 -42
  177. package/server/whatsapp-rpc/node_modules/kill-port/.editorconfig +0 -12
  178. package/server/whatsapp-rpc/node_modules/kill-port/.gitattributes +0 -1
  179. package/server/whatsapp-rpc/node_modules/kill-port/LICENSE +0 -21
  180. package/server/whatsapp-rpc/node_modules/kill-port/README.md +0 -140
  181. package/server/whatsapp-rpc/node_modules/kill-port/cli.js +0 -25
  182. package/server/whatsapp-rpc/node_modules/kill-port/example.js +0 -21
  183. package/server/whatsapp-rpc/node_modules/kill-port/index.js +0 -46
  184. package/server/whatsapp-rpc/node_modules/kill-port/logo.png +0 -0
  185. package/server/whatsapp-rpc/node_modules/kill-port/package.json +0 -41
  186. package/server/whatsapp-rpc/node_modules/kill-port/pnpm-lock.yaml +0 -4606
  187. package/server/whatsapp-rpc/node_modules/kill-port/test.js +0 -16
  188. package/server/whatsapp-rpc/node_modules/merge-stream/LICENSE +0 -21
  189. package/server/whatsapp-rpc/node_modules/merge-stream/README.md +0 -78
  190. package/server/whatsapp-rpc/node_modules/merge-stream/index.js +0 -41
  191. package/server/whatsapp-rpc/node_modules/merge-stream/package.json +0 -19
  192. package/server/whatsapp-rpc/node_modules/mimic-fn/index.d.ts +0 -52
  193. package/server/whatsapp-rpc/node_modules/mimic-fn/index.js +0 -71
  194. package/server/whatsapp-rpc/node_modules/mimic-fn/license +0 -9
  195. package/server/whatsapp-rpc/node_modules/mimic-fn/package.json +0 -45
  196. package/server/whatsapp-rpc/node_modules/mimic-fn/readme.md +0 -90
  197. package/server/whatsapp-rpc/node_modules/npm-run-path/index.d.ts +0 -90
  198. package/server/whatsapp-rpc/node_modules/npm-run-path/index.js +0 -52
  199. package/server/whatsapp-rpc/node_modules/npm-run-path/license +0 -9
  200. package/server/whatsapp-rpc/node_modules/npm-run-path/node_modules/path-key/index.d.ts +0 -31
  201. package/server/whatsapp-rpc/node_modules/npm-run-path/node_modules/path-key/index.js +0 -12
  202. package/server/whatsapp-rpc/node_modules/npm-run-path/node_modules/path-key/license +0 -9
  203. package/server/whatsapp-rpc/node_modules/npm-run-path/node_modules/path-key/package.json +0 -41
  204. package/server/whatsapp-rpc/node_modules/npm-run-path/node_modules/path-key/readme.md +0 -57
  205. package/server/whatsapp-rpc/node_modules/npm-run-path/package.json +0 -49
  206. package/server/whatsapp-rpc/node_modules/npm-run-path/readme.md +0 -104
  207. package/server/whatsapp-rpc/node_modules/onetime/index.d.ts +0 -59
  208. package/server/whatsapp-rpc/node_modules/onetime/index.js +0 -41
  209. package/server/whatsapp-rpc/node_modules/onetime/license +0 -9
  210. package/server/whatsapp-rpc/node_modules/onetime/package.json +0 -45
  211. package/server/whatsapp-rpc/node_modules/onetime/readme.md +0 -94
  212. package/server/whatsapp-rpc/node_modules/path-key/index.d.ts +0 -40
  213. package/server/whatsapp-rpc/node_modules/path-key/index.js +0 -16
  214. package/server/whatsapp-rpc/node_modules/path-key/license +0 -9
  215. package/server/whatsapp-rpc/node_modules/path-key/package.json +0 -39
  216. package/server/whatsapp-rpc/node_modules/path-key/readme.md +0 -61
  217. package/server/whatsapp-rpc/node_modules/shebang-command/index.js +0 -19
  218. package/server/whatsapp-rpc/node_modules/shebang-command/license +0 -9
  219. package/server/whatsapp-rpc/node_modules/shebang-command/package.json +0 -34
  220. package/server/whatsapp-rpc/node_modules/shebang-command/readme.md +0 -34
  221. package/server/whatsapp-rpc/node_modules/shebang-regex/index.d.ts +0 -22
  222. package/server/whatsapp-rpc/node_modules/shebang-regex/index.js +0 -2
  223. package/server/whatsapp-rpc/node_modules/shebang-regex/license +0 -9
  224. package/server/whatsapp-rpc/node_modules/shebang-regex/package.json +0 -35
  225. package/server/whatsapp-rpc/node_modules/shebang-regex/readme.md +0 -33
  226. package/server/whatsapp-rpc/node_modules/shell-exec/LICENSE +0 -21
  227. package/server/whatsapp-rpc/node_modules/shell-exec/README.md +0 -60
  228. package/server/whatsapp-rpc/node_modules/shell-exec/index.js +0 -47
  229. package/server/whatsapp-rpc/node_modules/shell-exec/package.json +0 -29
  230. package/server/whatsapp-rpc/node_modules/signal-exit/LICENSE.txt +0 -16
  231. package/server/whatsapp-rpc/node_modules/signal-exit/README.md +0 -74
  232. package/server/whatsapp-rpc/node_modules/signal-exit/dist/cjs/browser.d.ts +0 -12
  233. package/server/whatsapp-rpc/node_modules/signal-exit/dist/cjs/browser.d.ts.map +0 -1
  234. package/server/whatsapp-rpc/node_modules/signal-exit/dist/cjs/browser.js +0 -10
  235. package/server/whatsapp-rpc/node_modules/signal-exit/dist/cjs/browser.js.map +0 -1
  236. package/server/whatsapp-rpc/node_modules/signal-exit/dist/cjs/index.d.ts +0 -48
  237. package/server/whatsapp-rpc/node_modules/signal-exit/dist/cjs/index.d.ts.map +0 -1
  238. package/server/whatsapp-rpc/node_modules/signal-exit/dist/cjs/index.js +0 -279
  239. package/server/whatsapp-rpc/node_modules/signal-exit/dist/cjs/index.js.map +0 -1
  240. package/server/whatsapp-rpc/node_modules/signal-exit/dist/cjs/package.json +0 -3
  241. package/server/whatsapp-rpc/node_modules/signal-exit/dist/cjs/signals.d.ts +0 -29
  242. package/server/whatsapp-rpc/node_modules/signal-exit/dist/cjs/signals.d.ts.map +0 -1
  243. package/server/whatsapp-rpc/node_modules/signal-exit/dist/cjs/signals.js +0 -42
  244. package/server/whatsapp-rpc/node_modules/signal-exit/dist/cjs/signals.js.map +0 -1
  245. package/server/whatsapp-rpc/node_modules/signal-exit/dist/mjs/browser.d.ts +0 -12
  246. package/server/whatsapp-rpc/node_modules/signal-exit/dist/mjs/browser.d.ts.map +0 -1
  247. package/server/whatsapp-rpc/node_modules/signal-exit/dist/mjs/browser.js +0 -4
  248. package/server/whatsapp-rpc/node_modules/signal-exit/dist/mjs/browser.js.map +0 -1
  249. package/server/whatsapp-rpc/node_modules/signal-exit/dist/mjs/index.d.ts +0 -48
  250. package/server/whatsapp-rpc/node_modules/signal-exit/dist/mjs/index.d.ts.map +0 -1
  251. package/server/whatsapp-rpc/node_modules/signal-exit/dist/mjs/index.js +0 -275
  252. package/server/whatsapp-rpc/node_modules/signal-exit/dist/mjs/index.js.map +0 -1
  253. package/server/whatsapp-rpc/node_modules/signal-exit/dist/mjs/package.json +0 -3
  254. package/server/whatsapp-rpc/node_modules/signal-exit/dist/mjs/signals.d.ts +0 -29
  255. package/server/whatsapp-rpc/node_modules/signal-exit/dist/mjs/signals.d.ts.map +0 -1
  256. package/server/whatsapp-rpc/node_modules/signal-exit/dist/mjs/signals.js +0 -39
  257. package/server/whatsapp-rpc/node_modules/signal-exit/dist/mjs/signals.js.map +0 -1
  258. package/server/whatsapp-rpc/node_modules/signal-exit/package.json +0 -106
  259. package/server/whatsapp-rpc/node_modules/strip-final-newline/index.js +0 -14
  260. package/server/whatsapp-rpc/node_modules/strip-final-newline/license +0 -9
  261. package/server/whatsapp-rpc/node_modules/strip-final-newline/package.json +0 -43
  262. package/server/whatsapp-rpc/node_modules/strip-final-newline/readme.md +0 -35
  263. package/server/whatsapp-rpc/node_modules/which/CHANGELOG.md +0 -166
  264. package/server/whatsapp-rpc/node_modules/which/LICENSE +0 -15
  265. package/server/whatsapp-rpc/node_modules/which/README.md +0 -54
  266. package/server/whatsapp-rpc/node_modules/which/bin/node-which +0 -52
  267. package/server/whatsapp-rpc/node_modules/which/package.json +0 -43
  268. package/server/whatsapp-rpc/node_modules/which/which.js +0 -125
  269. package/server/whatsapp-rpc/package-lock.json +0 -272
  270. package/server/whatsapp-rpc/package.json +0 -30
  271. package/server/whatsapp-rpc/schema.json +0 -1294
  272. package/server/whatsapp-rpc/scripts/clean.cjs +0 -66
  273. package/server/whatsapp-rpc/scripts/cli.js +0 -171
  274. package/server/whatsapp-rpc/src/go/cmd/server/main.go +0 -91
  275. package/server/whatsapp-rpc/src/go/config/config.go +0 -49
  276. package/server/whatsapp-rpc/src/go/rpc/rpc.go +0 -446
  277. package/server/whatsapp-rpc/src/go/rpc/server.go +0 -112
  278. package/server/whatsapp-rpc/src/go/whatsapp/history.go +0 -166
  279. package/server/whatsapp-rpc/src/go/whatsapp/messages.go +0 -390
  280. package/server/whatsapp-rpc/src/go/whatsapp/service.go +0 -2130
  281. package/server/whatsapp-rpc/src/go/whatsapp/types.go +0 -261
  282. package/server/whatsapp-rpc/src/python/pyproject.toml +0 -15
  283. package/server/whatsapp-rpc/src/python/whatsapp_rpc/__init__.py +0 -4
  284. package/server/whatsapp-rpc/src/python/whatsapp_rpc/client.py +0 -427
  285. package/server/whatsapp-rpc/web/app.py +0 -609
  286. package/server/whatsapp-rpc/web/requirements.txt +0 -6
  287. package/server/whatsapp-rpc/web/rpc_client.py +0 -427
  288. package/server/whatsapp-rpc/web/static/openapi.yaml +0 -59
  289. package/server/whatsapp-rpc/web/templates/base.html +0 -150
  290. package/server/whatsapp-rpc/web/templates/contacts.html +0 -240
  291. package/server/whatsapp-rpc/web/templates/dashboard.html +0 -320
  292. package/server/whatsapp-rpc/web/templates/groups.html +0 -328
  293. package/server/whatsapp-rpc/web/templates/messages.html +0 -465
  294. package/server/whatsapp-rpc/web/templates/messaging.html +0 -681
  295. package/server/whatsapp-rpc/web/templates/send.html +0 -259
  296. package/server/whatsapp-rpc/web/templates/settings.html +0 -459
package/.env.template CHANGED
@@ -64,6 +64,10 @@ WEBSOCKET_API_KEY=
64
64
  # WhatsApp Service URL
65
65
  WHATSAPP_SERVICE_URL=http://localhost:5000
66
66
 
67
+ # AI Proxy Configuration (Ollama-style proxy for Claude Code CLI)
68
+ # Default port for AI proxy servers (e.g., Ollama, Claude Code CLI proxy)
69
+ AI_PROXY_DEFAULT_PORT=11434
70
+
67
71
  # External API Keys (managed through UI, these are optional defaults)
68
72
  OPENAI_API_KEY=
69
73
  GOOGLE_MAPS_API_KEY=
package/README.md CHANGED
@@ -1,10 +1,26 @@
1
1
  # MachinaOS
2
2
 
3
- Open-source workflow automation platform with AI agents, React Flow, and n8n-inspired architecture.
3
+ Open-source Platform to Build Your Own Personal AI Assistant, mashup of clawdbot and n8n, but More Powerful.
4
+
5
+ # Full Capabilities.
6
+
7
+ <img width="1280" height="671" alt="func_img" src="https://github.com/user-attachments/assets/2f14b6c8-3995-4ccc-b076-e40749a83df2" />
8
+
9
+ **60 nodes** | **6 AI providers** | **WebSocket-first** | **Self-hosted**
4
10
 
5
11
  ## Quick Start
6
12
 
7
- ### Option 1: One-Line Install (Recommended)
13
+ ```bash
14
+ npm install -g machinaos
15
+ machinaos start
16
+ ```
17
+
18
+ Open http://localhost:3000
19
+
20
+ <details>
21
+ <summary><b>Other Install Options</b></summary>
22
+
23
+ ### One-Line Install (installs all dependencies automatically)
8
24
 
9
25
  **Linux/macOS:**
10
26
  ```bash
@@ -16,9 +32,7 @@ curl -fsSL https://raw.githubusercontent.com/trohitg/MachinaOS/main/install.sh |
16
32
  iwr -useb https://raw.githubusercontent.com/trohitg/MachinaOS/main/install.ps1 | iex
17
33
  ```
18
34
 
19
- This automatically installs all dependencies (Node.js, Python, uv, Go) and MachinaOS.
20
-
21
- ### Option 2: Clone & Run
35
+ ### Clone & Run
22
36
 
23
37
  ```bash
24
38
  git clone https://github.com/trohitg/MachinaOS.git
@@ -27,16 +41,7 @@ npm run build
27
41
  npm run start
28
42
  ```
29
43
 
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
44
+ ### Docker
40
45
 
41
46
  ```bash
42
47
  git clone https://github.com/trohitg/MachinaOS.git
@@ -44,7 +49,62 @@ cd MachinaOS
44
49
  npm run docker:up
45
50
  ```
46
51
 
47
- Open http://localhost:3000
52
+ </details>
53
+
54
+ ## Features
55
+
56
+ ### AI Integration (6 Providers)
57
+
58
+ | Provider | Models | Features |
59
+ |----------|--------|----------|
60
+ | **OpenAI** | GPT-4o, GPT-4 Turbo, o1, o3, o4-mini | JSON mode, reasoning effort |
61
+ | **Anthropic** | Claude 3.5 Sonnet, Claude 3 Opus, Claude 3 Haiku | Extended thinking |
62
+ | **Google** | Gemini 2.5 Pro, Gemini 2.5 Flash, Gemini 2.0 Flash Thinking | Multimodal, 1M context |
63
+ | **OpenRouter** | 200+ models | Unified API for all providers |
64
+ | **Groq** | Llama, Mixtral, Qwen | Ultra-fast inference |
65
+ | **Cerebras** | Llama, Qwen | Ultra-fast on custom hardware |
66
+
67
+ ### AI Agents & Skills
68
+
69
+ - **AI Agent** - LangGraph-powered with tool calling and iterative reasoning
70
+ - **Chat Agent** - Conversational agent with skill support for multi-turn chat
71
+ - **10 Skills** - WhatsApp, Maps, HTTP, Scheduler, Android, Code, Memory, Web Search, Custom
72
+ - **4 Tools** - Calculator, Current Time, Web Search, Android Toolkit
73
+ - **Simple Memory** - Markdown-based conversation history with vector storage
74
+
75
+ ### Platform Integrations
76
+
77
+ - **WhatsApp** - Send/receive messages with QR pairing, filters, group support
78
+ - **Android** - 17 service nodes for device control (battery, WiFi, Bluetooth, apps, camera, sensors)
79
+ - **HTTP/Webhooks** - REST API integration with event-driven triggers
80
+ - **Google Maps** - Geocoding, nearby places, directions
81
+
82
+ ### Document Processing (RAG Pipeline)
83
+
84
+ - **HTTP Scraper** - Scrape URLs with pagination and date ranges
85
+ - **File Downloader** - Parallel downloads with semaphore concurrency
86
+ - **Document Parser** - PyPDF, Marker (OCR), Unstructured, BeautifulSoup
87
+ - **Text Chunker** - Recursive, markdown, or token-based splitting
88
+ - **Embedding Generator** - HuggingFace, OpenAI, Ollama embeddings
89
+ - **Vector Store** - ChromaDB, Qdrant, Pinecone backends
90
+
91
+ ## Node Categories
92
+
93
+ | Category | Count | Description |
94
+ |----------|-------|-------------|
95
+ | AI Models | 6 | OpenAI, Anthropic, Google, OpenRouter, Groq, Cerebras |
96
+ | AI Agents | 3 | AI Agent, Chat Agent, Simple Memory |
97
+ | AI Skills | 10 | WhatsApp, Maps, HTTP, Scheduler, Android, Code, etc. |
98
+ | AI Tools | 4 | Calculator, Time, Search, Android Toolkit |
99
+ | WhatsApp | 3 | Send, Receive, Database |
100
+ | Android | 17 | Device control and monitoring |
101
+ | Documents | 6 | RAG pipeline nodes |
102
+ | Utilities | 5 | HTTP, Webhooks, Chat Trigger, Console |
103
+ | Location | 3 | Google Maps integration |
104
+ | Code | 2 | Python and JavaScript executors |
105
+ | Workflow | 1 | Start node |
106
+
107
+ **Total: 60 nodes**
48
108
 
49
109
  ## Prerequisites
50
110
 
@@ -67,26 +127,6 @@ The install script handles these automatically, but for manual installation:
67
127
  | `machinaos docker:down` | Stop Docker containers |
68
128
  | `machinaos help` | Show all available commands |
69
129
 
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
130
  ## Configuration
91
131
 
92
132
  **API Keys:** Click **Credentials** button in toolbar to add API keys for OpenAI, Claude, Google Maps, etc.
@@ -131,6 +171,16 @@ MachinaOS/
131
171
  - **Services:** WhatsApp (Go + whatsmeow), WebSocket relay
132
172
  - **Package Manager:** uv (Python), npm (Node.js)
133
173
 
174
+ ## Documentation
175
+
176
+ Full documentation available at: https://docs.machinaos.dev
177
+
178
+ - [Installation Guide](https://docs.machinaos.dev/installation)
179
+ - [Quick Start](https://docs.machinaos.dev/quickstart)
180
+ - [Node Catalog](https://docs.machinaos.dev/nodes/overview)
181
+ - [AI Models](https://docs.machinaos.dev/nodes/ai-models)
182
+ - [AI Agents](https://docs.machinaos.dev/nodes/ai-agent)
183
+
134
184
  ## Troubleshooting
135
185
 
136
186
  **Port already in use:**
package/bin/cli.js CHANGED
@@ -44,14 +44,31 @@ function getVersion(cmd) {
44
44
  }
45
45
  }
46
46
 
47
+ // Add common binary paths to PATH (Linux installs uv to ~/.local/bin)
48
+ function expandPath() {
49
+ const home = process.env.HOME || process.env.USERPROFILE;
50
+ if (home) {
51
+ const additionalPaths = [
52
+ `${home}/.local/bin`, // uv, cargo installs
53
+ `${home}/.cargo/bin`, // Rust tools
54
+ '/usr/local/bin', // Homebrew on macOS
55
+ ];
56
+ const currentPath = process.env.PATH || '';
57
+ const sep = process.platform === 'win32' ? ';' : ':';
58
+ const newPaths = additionalPaths.filter(p => !currentPath.includes(p));
59
+ if (newPaths.length > 0) {
60
+ process.env.PATH = newPaths.join(sep) + sep + currentPath;
61
+ }
62
+ }
63
+ }
64
+
47
65
  function checkDeps() {
48
66
  const errors = [];
49
- const warnings = [];
50
67
 
51
68
  // Node.js version check
52
69
  const nodeVersion = parseInt(process.version.slice(1));
53
- if (nodeVersion < 18) {
54
- errors.push(`Node.js 18+ required (found ${process.version})`);
70
+ if (nodeVersion < 20) {
71
+ errors.push(`Node.js 20+ required (found ${process.version})`);
55
72
  }
56
73
 
57
74
  // Python version check
@@ -73,15 +90,6 @@ function checkDeps() {
73
90
  errors.push('uv (Python package manager) - https://docs.astral.sh/uv/');
74
91
  }
75
92
 
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/');
79
- }
80
-
81
- if (warnings.length > 0) {
82
- console.warn('Warnings:\n' + warnings.map(w => ` - ${w}`).join('\n') + '\n');
83
- }
84
-
85
93
  if (errors.length > 0) {
86
94
  console.error('Missing required dependencies:\n' + errors.map(e => ` - ${e}`).join('\n'));
87
95
  console.error('\nInstall the missing dependencies and try again.');
@@ -99,6 +107,9 @@ function run(script) {
99
107
  child.on('close', (code) => process.exit(code || 0));
100
108
  }
101
109
 
110
+ // Expand PATH to find tools like uv installed in user directories
111
+ expandPath();
112
+
102
113
  const cmd = process.argv[2] || 'help';
103
114
 
104
115
  if (cmd === 'help' || cmd === '--help' || cmd === '-h') {
package/client/Dockerfile CHANGED
@@ -5,10 +5,10 @@ FROM node:22-alpine AS development
5
5
  WORKDIR /app
6
6
 
7
7
  # Copy package files
8
- COPY package.json package-lock.json* ./
8
+ COPY package.json ./
9
9
 
10
- # Install dependencies (npm ci for faster, deterministic installs)
11
- RUN npm ci
10
+ # Install dependencies
11
+ RUN npm install
12
12
 
13
13
  # Copy application code
14
14
  COPY . .
@@ -28,10 +28,10 @@ FROM node:22-alpine AS builder
28
28
  WORKDIR /app
29
29
 
30
30
  # Copy package files
31
- COPY package.json package-lock.json* ./
31
+ COPY package.json ./
32
32
 
33
- # Install dependencies (npm ci for faster, deterministic installs)
34
- RUN npm ci
33
+ # Install dependencies
34
+ RUN npm install
35
35
 
36
36
  # Copy application code
37
37
  COPY . .
@@ -41,12 +41,14 @@ ARG VITE_AUTH_ENABLED=true
41
41
  ARG VITE_PYTHON_SERVICE_URL=
42
42
  ARG VITE_WHATSAPP_SERVICE_URL=
43
43
  ARG VITE_ANDROID_RELAY_URL=
44
+ ARG VITE_APP_VERSION=0.0.0
44
45
 
45
46
  # Expose build args as environment variables for Vite build
46
47
  ENV VITE_AUTH_ENABLED=$VITE_AUTH_ENABLED
47
48
  ENV VITE_PYTHON_SERVICE_URL=$VITE_PYTHON_SERVICE_URL
48
49
  ENV VITE_WHATSAPP_SERVICE_URL=$VITE_WHATSAPP_SERVICE_URL
49
50
  ENV VITE_ANDROID_RELAY_URL=$VITE_ANDROID_RELAY_URL
51
+ ENV VITE_APP_VERSION=$VITE_APP_VERSION
50
52
 
51
53
  # Increase Node.js memory limit for large builds (GCP e2-micro has limited RAM)
52
54
  ENV NODE_OPTIONS="--max-old-space-size=2048"
@@ -27,8 +27,10 @@ import { CHAT_NODE_TYPES } from './nodeDefinitions/chatNodes';
27
27
  import { CODE_NODE_TYPES } from './nodeDefinitions/codeNodes';
28
28
  import { UTILITY_NODE_TYPES } from './nodeDefinitions/utilityNodes';
29
29
  import { TOOL_NODE_TYPES } from './nodeDefinitions/toolNodes';
30
+ import { SPECIALIZED_AGENT_TYPES } from './nodeDefinitions/specializedAgentNodes';
30
31
  import { SKILL_NODE_TYPES } from './nodeDefinitions/skillNodes';
31
32
  import { DOCUMENT_NODE_TYPES } from './nodeDefinitions/documentNodes';
33
+ import { SOCIAL_NODE_TYPES } from './nodeDefinitions/socialNodes';
32
34
  import ParameterPanel from './ParameterPanel';
33
35
  import LocationParameterPanel from './components/LocationParameterPanel';
34
36
  import { useAppStore } from './store/useAppStore';
@@ -65,6 +67,12 @@ const createNodeTypes = (): Record<string, React.ComponentType<any>> => {
65
67
  // Trigger nodes (no input handles) - check by group or specific types
66
68
  const TRIGGER_NODE_TYPES = ['start', 'cronScheduler', 'webhookTrigger', 'whatsappReceive', 'chatTrigger'];
67
69
 
70
+ // Pre-register specialized agent nodes explicitly to ensure they're always available
71
+ // This handles cases where nodeDefinitions iteration order might miss them
72
+ SPECIALIZED_AGENT_TYPES.forEach(type => {
73
+ types[type] = AIAgentNode;
74
+ });
75
+
68
76
  Object.keys(nodeDefinitions).forEach(type => {
69
77
  const definition = nodeDefinitions[type];
70
78
 
@@ -98,20 +106,20 @@ const createNodeTypes = (): Record<string, React.ComponentType<any>> => {
98
106
  // Utility nodes (HTTP, Webhooks) use SquareNode component
99
107
  // Note: webhookTrigger is already handled as trigger above
100
108
  types[type] = SquareNode;
109
+ } else if (SPECIALIZED_AGENT_TYPES.includes(type)) {
110
+ // Specialized agent nodes use AIAgentNode (rectangular card with bottom handles)
111
+ types[type] = AIAgentNode;
101
112
  } else if (TOOL_NODE_TYPES.includes(type)) {
102
- // Most tool nodes use circular ModelNode
103
- // Exception: androidTool uses ToolkitNode with top/bottom handles
104
- if (type === 'androidTool') {
105
- types[type] = ToolkitNode;
106
- } else {
107
- types[type] = ModelNode;
108
- }
113
+ types[type] = SquareNode;
109
114
  } else if (SKILL_NODE_TYPES.includes(type)) {
110
115
  // Skill nodes use ToolkitNode (vertical handle layout like Android Toolkit)
111
116
  types[type] = ToolkitNode;
112
117
  } else if (DOCUMENT_NODE_TYPES.includes(type)) {
113
118
  // Document processing nodes use SquareNode component
114
119
  types[type] = SquareNode;
120
+ } else if (SOCIAL_NODE_TYPES.includes(type)) {
121
+ // Social nodes use AIAgentNode for multiple output handles support
122
+ types[type] = AIAgentNode;
115
123
  } else if (definition?.group?.includes('model')) {
116
124
  // Fallback for other model nodes
117
125
  types[type] = ModelNode;
@@ -293,7 +301,8 @@ const DashboardContent: React.FC = () => {
293
301
  } = useWorkflowManagement();
294
302
 
295
303
  const { collapsedSections, searchQuery, setSearchQuery, toggleSection } = useComponentPalette();
296
- const { saveNodeParameters, executeWorkflow, deployWorkflow, cancelDeployment, nodeStatuses, deploymentStatus, workflowLock } = useWebSocket();
304
+ const { saveNodeParameters, executeWorkflow, deployWorkflow, cancelDeployment, nodeStatuses, deploymentStatus, workflowLock, isConnected, sendRequest } = useWebSocket();
305
+ const applyUIDefaults = useAppStore((state) => state.applyUIDefaults);
297
306
 
298
307
  // Scope deployment and lock to current workflow (n8n pattern)
299
308
  // Only show as "running" or "locked" if it applies to the currently viewed workflow
@@ -334,7 +343,10 @@ const DashboardContent: React.FC = () => {
334
343
  });
335
344
  const [settingsOpen, setSettingsOpen] = React.useState(false);
336
345
  const [credentialsOpen, setCredentialsOpen] = React.useState(false);
337
- const [consolePanelOpen, setConsolePanelOpen] = React.useState(false);
346
+
347
+ // Console panel visibility from store (database-backed)
348
+ const consolePanelVisible = useAppStore((state) => state.consolePanelVisible);
349
+ const toggleConsolePanelVisible = useAppStore((state) => state.toggleConsolePanelVisible);
338
350
 
339
351
  // Context menu state for node right-click
340
352
  const [contextMenu, setContextMenu] = React.useState<{
@@ -348,6 +360,40 @@ const DashboardContent: React.FC = () => {
348
360
  localStorage.setItem('workflow_settings', JSON.stringify(settings));
349
361
  }, [settings]);
350
362
 
363
+ // Load UI defaults from database on initial WebSocket connection
364
+ const hasLoadedUIDefaults = React.useRef(false);
365
+ React.useEffect(() => {
366
+ if (!isConnected || hasLoadedUIDefaults.current) return;
367
+ hasLoadedUIDefaults.current = true;
368
+
369
+ const loadUIDefaults = async () => {
370
+ try {
371
+ const response = await sendRequest<{ settings: any }>('get_user_settings', {});
372
+ if (response?.settings) {
373
+ applyUIDefaults({
374
+ sidebarDefaultOpen: response.settings.sidebar_default_open,
375
+ componentPaletteDefaultOpen: response.settings.component_palette_default_open,
376
+ consolePanelDefaultOpen: response.settings.console_panel_default_open,
377
+ });
378
+ // Also update local settings state for auto-save preferences
379
+ setSettings(prev => ({
380
+ ...prev,
381
+ autoSave: response.settings.auto_save ?? prev.autoSave,
382
+ autoSaveInterval: response.settings.auto_save_interval ?? prev.autoSaveInterval,
383
+ sidebarDefaultOpen: response.settings.sidebar_default_open ?? prev.sidebarDefaultOpen,
384
+ componentPaletteDefaultOpen: response.settings.component_palette_default_open ?? prev.componentPaletteDefaultOpen,
385
+ consolePanelDefaultOpen: response.settings.console_panel_default_open ?? prev.consolePanelDefaultOpen,
386
+ }));
387
+ console.log('[Dashboard] UI defaults loaded from database');
388
+ }
389
+ } catch (error) {
390
+ console.error('[Dashboard] Failed to load UI defaults:', error);
391
+ }
392
+ };
393
+
394
+ loadUIDefaults();
395
+ }, [isConnected, sendRequest, applyUIDefaults]);
396
+
351
397
  // Update nodes with execution status classes
352
398
  const styledNodes = React.useMemo(() => {
353
399
  return nodes.map(node => {
@@ -1140,8 +1186,8 @@ const DashboardContent: React.FC = () => {
1140
1186
 
1141
1187
  {/* Console Panel - n8n-style debug output at bottom */}
1142
1188
  <ConsolePanel
1143
- isOpen={consolePanelOpen}
1144
- onToggle={() => setConsolePanelOpen(prev => !prev)}
1189
+ isOpen={consolePanelVisible}
1190
+ onToggle={toggleConsolePanelVisible}
1145
1191
  nodes={nodes}
1146
1192
  />
1147
1193