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
@@ -1,508 +1,513 @@
1
- // Unified theme system - consolidated design tokens and component styles
2
-
3
- // ============================================================================
4
- // DRACULA COLOR PALETTE (vibrant action colors + dark theme backgrounds)
5
- // ============================================================================
6
- export const dracula = {
7
- // Vibrant action colors
8
- green: '#50fa7b', // Run/Success - bright green
9
- purple: '#bd93f9', // Deploy/Save - purple
10
- pink: '#ff79c6', // Cancel/Stop - pink
11
- cyan: '#8be9fd', // Info/Alternative - cyan
12
- red: '#ff5555', // Error/Danger - red
13
- orange: '#ffb86c', // Warning - orange
14
- yellow: '#f1fa8c', // Highlight - yellow
15
- // Dark theme backgrounds
16
- background: '#282a36', // Main background
17
- currentLine: '#44475a', // Current line / elevated background
18
- selection: '#44475a', // Selection / panel background
19
- comment: '#6272a4', // Comments / muted text
20
- foreground: '#f8f8f2', // Main text
21
- } as const;
22
-
23
- // ============================================================================
24
- // SOLARIZED COLOR PALETTE
25
- // ============================================================================
26
- export const solarized = {
27
- // Base colors (dark to light)
28
- base03: '#002b36', // darkest background
29
- base02: '#073642', // dark background highlights
30
- base01: '#586e75', // dark content tone (comments)
31
- base00: '#657b83', // light content tone
32
- base0: '#839496', // dark content tone
33
- base1: '#93a1a1', // light content tone (emphasis)
34
- base2: '#eee8d5', // light background highlights
35
- base3: '#fdf6e3', // lightest background
36
- // Accent colors
37
- yellow: '#b58900',
38
- orange: '#cb4b16',
39
- red: '#dc322f',
40
- magenta: '#d33682',
41
- violet: '#6c71c4',
42
- blue: '#268bd2',
43
- cyan: '#2aa198',
44
- green: '#859900',
45
- } as const;
46
-
47
- // ============================================================================
48
- // LIGHT THEME COLORS - Modern, clean design with proper contrast
49
- // ============================================================================
50
- export const lightColors = {
51
- // Backgrounds - slightly warmer canvas for depth
52
- background: '#f5f7fa', // Slightly blue-gray canvas
53
- backgroundAlt: '#eef1f5', // Subtle gray for contrast areas
54
- backgroundPanel: '#ffffff', // Pure white for panels
55
- backgroundElevated: '#ffffff', // Elevated surfaces
56
- backgroundHover: 'rgba(0,0,0,0.05)',
57
- backgroundActive: 'rgba(0,0,0,0.08)',
58
- backgroundCanvas: '#e8ecf1', // Cooler gray for canvas - more contrast with white nodes
59
- // Text - high contrast
60
- text: '#1a1d21', // Near-black for readability
61
- textSecondary: '#374151', // Darker secondary text (gray-700)
62
- textMuted: '#4b5563', // gray-600 - muted but readable
63
- // Borders - subtle but defined
64
- border: '#d1d5db', // gray-300 - more visible
65
- borderHover: '#9ca3af', // gray-400
66
- borderFocus: '#3b82f6', // Brighter blue for focus
67
- borderNode: '#c7ccd4', // Slightly darker for nodes
68
- // Shadows - more depth for light mode
69
- shadow: 'rgba(0,0,0,0.12)',
70
- shadowLight: 'rgba(0,0,0,0.06)',
71
- shadowHeavy: 'rgba(0,0,0,0.18)',
72
- shadowNode: '0 2px 8px rgba(0,0,0,0.1), 0 4px 16px rgba(0,0,0,0.06)',
73
- // Focus
74
- focus: '#3b82f6',
75
- focusRing: 'rgba(59, 130, 246, 0.25)',
76
- // Semantic
77
- primary: '#2563eb', // Blue-600 - slightly darker for contrast
78
- success: '#059669', // Emerald-600
79
- warning: '#d97706', // Amber-600
80
- error: '#dc2626', // Red-600
81
- info: '#0891b2', // Cyan-600
82
- // Special
83
- templateVariable: '#7c3aed', // Violet for variables
84
- // Node-specific
85
- nodeBackground: '#ffffff',
86
- nodeBorder: '#d1d5db',
87
- nodeHeaderBg: '#f3f4f6',
88
- // Action colors (optimized for light backgrounds - darker for contrast)
89
- actionRun: '#059669', // Emerald-600
90
- actionDeploy: '#7c3aed', // Violet
91
- actionStop: '#dc2626', // Red-600
92
- actionSave: '#0284c7', // Sky-600
93
- actionSettings: '#d97706', // Amber-600
94
- actionCredentials: '#ca8a04', // Yellow-600
95
- actionTheme: '#7c3aed', // Violet
96
- actionSidebar: '#0891b2', // Cyan-600
97
- actionPalette: '#7c3aed', // Violet
98
- statusSaved: '#059669', // Emerald-600
99
- statusModified: '#d97706', // Amber-600
100
- // Edge colors for light mode - MUCH darker for visibility
101
- edgeDefault: '#6b7280', // gray-500 - much more visible
102
- edgeSelected: '#7c3aed', // Violet
103
- edgeExecuting: '#7c3aed', // Violet
104
- edgeCompleted: '#059669', // Emerald-600
105
- edgeError: '#dc2626', // Red-600
106
- // Category colors for light mode (darker, more saturated)
107
- categoryWorkflow: '#ea580c', // Orange-600
108
- categoryTrigger: '#db2777', // Pink-600
109
- categoryAI: '#7c3aed', // Violet-600
110
- categoryLocation: '#dc2626', // Red-600
111
- categoryWhatsapp: '#059669', // Emerald-600
112
- categoryAndroid: '#0891b2', // Cyan-600
113
- categoryChat: '#ca8a04', // Yellow-600
114
- categoryCode: '#ea580c', // Orange-600
115
- categoryUtil: '#7c3aed', // Violet-600
116
- } as const;
117
-
118
- // ============================================================================
119
- // DARK THEME COLORS (Dracula text for better contrast)
120
- // ============================================================================
121
- export const darkColors = {
122
- // Backgrounds - Solarized dark
123
- background: solarized.base03,
124
- backgroundAlt: solarized.base02,
125
- backgroundPanel: solarized.base02,
126
- backgroundElevated: '#0d1f2d',
127
- backgroundHover: 'rgba(255,255,255,0.04)',
128
- backgroundActive: 'rgba(255,255,255,0.08)',
129
- backgroundCanvas: solarized.base03,
130
- // Text - Dracula for better contrast
131
- text: dracula.foreground, // #f8f8f2 - bright white text
132
- textSecondary: '#bfbfbf', // Lighter secondary text
133
- textMuted: dracula.comment, // #6272a4 - muted/comments
134
- // Borders
135
- border: solarized.base01 + '60',
136
- borderHover: solarized.base01,
137
- borderFocus: solarized.blue,
138
- borderNode: solarized.base01,
139
- // Shadows
140
- shadow: 'rgba(0,0,0,0.4)',
141
- shadowLight: 'rgba(0,0,0,0.25)',
142
- shadowHeavy: 'rgba(0,0,0,0.5)',
143
- shadowNode: '0 2px 12px rgba(0,0,0,0.3)',
144
- // Focus
145
- focus: solarized.blue,
146
- focusRing: 'rgba(38, 139, 210, 0.3)',
147
- // Semantic
148
- primary: solarized.blue,
149
- success: solarized.green,
150
- warning: solarized.yellow,
151
- error: solarized.red,
152
- info: solarized.cyan,
153
- // Special
154
- templateVariable: solarized.cyan,
155
- // Node-specific
156
- nodeBackground: solarized.base02,
157
- nodeBorder: solarized.base01,
158
- nodeHeaderBg: solarized.base03,
159
- // Action colors (Dracula - optimized for dark backgrounds)
160
- actionRun: dracula.green, // #50fa7b - bright green
161
- actionDeploy: dracula.purple, // #bd93f9 - purple
162
- actionStop: dracula.pink, // #ff79c6 - pink
163
- actionSave: dracula.cyan, // #8be9fd - cyan
164
- actionSettings: dracula.orange, // #ffb86c - orange
165
- actionCredentials: dracula.yellow, // #f1fa8c - yellow
166
- actionTheme: dracula.yellow, // #f1fa8c - yellow (sun icon)
167
- actionSidebar: dracula.cyan, // #8be9fd - cyan
168
- actionPalette: dracula.purple, // #bd93f9 - purple
169
- statusSaved: dracula.green, // #50fa7b - green
170
- statusModified: dracula.orange, // #ffb86c - orange
171
- // Edge colors for dark mode
172
- edgeDefault: dracula.cyan, // Cyan
173
- edgeSelected: dracula.purple, // Purple
174
- edgeExecuting: dracula.purple, // Purple
175
- edgeCompleted: dracula.green, // Green
176
- edgeError: dracula.red, // Red
177
- // Category colors for dark mode (Dracula - vibrant)
178
- categoryWorkflow: dracula.orange,
179
- categoryTrigger: dracula.pink,
180
- categoryAI: dracula.purple,
181
- categoryLocation: dracula.red,
182
- categoryWhatsapp: dracula.green,
183
- categoryAndroid: dracula.cyan,
184
- categoryChat: dracula.yellow,
185
- categoryCode: dracula.orange,
186
- categoryUtil: dracula.purple,
187
- } as const;
188
-
189
- // ============================================================================
190
- // BASE THEME (uses light colors by default)
191
- // ============================================================================
192
- export const theme = {
193
- // Color palette - use lightColors as default
194
- colors: lightColors,
195
-
196
- // Solarized accent colors (available in both themes)
197
- accent: solarized,
198
-
199
- // Dracula vibrant colors (for action buttons)
200
- dracula: dracula,
201
-
202
- // Essential spacing scale
203
- spacing: {
204
- xs: '4px',
205
- sm: '8px',
206
- md: '12px',
207
- lg: '16px',
208
- xl: '20px',
209
- xxl: '32px',
210
- },
211
-
212
- // Simplified typography
213
- fontSize: {
214
- xs: '11px',
215
- sm: '12px',
216
- base: '14px',
217
- lg: '16px',
218
- xl: '18px',
219
- },
220
-
221
- fontWeight: {
222
- normal: '400',
223
- medium: '500',
224
- semibold: '600',
225
- },
226
-
227
- borderRadius: {
228
- sm: '4px',
229
- md: '6px',
230
- lg: '8px',
231
- },
232
-
233
- // Node sizes (fixed per industry standard)
234
- nodeSize: {
235
- square: '60px', // SquareNode, BaseChatModelNode, ModelNode
236
- squareIcon: '28px', // Icon inside square node
237
- handle: '8px', // Connection handles
238
- statusIndicator: '10px', // Status dot
239
- paramButton: '16px', // Parameters gear button
240
- outputBadge: '14px', // Output data indicator
241
- },
242
-
243
- // Icon sizes
244
- iconSize: {
245
- xs: '12px',
246
- sm: '16px',
247
- md: '24px',
248
- lg: '28px',
249
- xl: '32px',
250
- },
251
-
252
- // Button sizes
253
- buttonSize: {
254
- sm: '24px',
255
- md: '32px',
256
- lg: '34px',
257
- },
258
-
259
- // Layout constants
260
- layout: {
261
- sidebarWidth: '288px',
262
- workflowSidebarWidth: '280px',
263
- parameterPanelWidth: '320px',
264
- headerHeight: '60px',
265
- toolbarHeight: '48px',
266
- },
267
-
268
- transitions: {
269
- fast: '0.2s ease',
270
- medium: '0.3s ease',
271
- },
272
-
273
- // App constants - moved from utils/constants.ts
274
- constants: {
275
- storageKeys: {
276
- workflows: 'react-flow-workflows',
277
- workflowData: (id: string) => `react-flow-workflows-${id}`,
278
- },
279
- defaultWorkflowName: 'Untitled Workflow',
280
- debounceDelay: {
281
- workflowUpdate: 100,
282
- search: 300,
283
- },
284
- gridSize: 20,
285
- defaultNodePosition: { x: 100, y: 200 },
286
- dragOffset: { x: 75, y: 50 },
287
- },
288
- };
289
-
290
- // Component styles - consolidated from components.ts + theme.ts
291
- export const styles = {
292
- // Button variants
293
- button: {
294
- base: {
295
- padding: `${theme.spacing.sm} ${theme.spacing.lg}`,
296
- borderRadius: theme.borderRadius.md,
297
- fontSize: theme.fontSize.sm,
298
- fontWeight: theme.fontWeight.medium,
299
- cursor: 'pointer',
300
- transition: theme.transitions.fast,
301
- border: 'none',
302
- outline: 'none',
303
- display: 'inline-flex',
304
- alignItems: 'center',
305
- justifyContent: 'center',
306
- gap: theme.spacing.sm,
307
- },
308
- primary: {
309
- backgroundColor: theme.colors.focus,
310
- color: 'white',
311
- },
312
- secondary: {
313
- backgroundColor: 'transparent',
314
- border: `1px solid ${theme.colors.border}`,
315
- color: theme.colors.textSecondary,
316
- },
317
- danger: {
318
- backgroundColor: '#ef4444',
319
- color: 'white',
320
- },
321
- },
322
-
323
- // Input styles
324
- input: {
325
- base: {
326
- width: '100%',
327
- padding: `${theme.spacing.sm} ${theme.spacing.md}`,
328
- fontSize: theme.fontSize.base,
329
- border: `1px solid ${theme.colors.border}`,
330
- borderRadius: theme.borderRadius.md,
331
- backgroundColor: theme.colors.background,
332
- color: theme.colors.text,
333
- fontFamily: 'system-ui, sans-serif',
334
- outline: 'none',
335
- transition: `border-color ${theme.transitions.fast}`,
336
- },
337
- },
338
-
339
- // Card styles
340
- card: {
341
- base: {
342
- backgroundColor: theme.colors.background,
343
- border: `1px solid ${theme.colors.border}`,
344
- borderRadius: theme.borderRadius.lg,
345
- boxShadow: `0 1px 2px ${theme.colors.shadowLight}`,
346
- transition: theme.transitions.fast,
347
- },
348
- },
349
-
350
- // Modal styles
351
- modal: {
352
- overlay: {
353
- position: 'fixed' as const,
354
- top: 0,
355
- left: 0,
356
- right: 0,
357
- bottom: 0,
358
- backgroundColor: 'rgba(0, 0, 0, 0.5)',
359
- display: 'flex',
360
- alignItems: 'center',
361
- justifyContent: 'center',
362
- zIndex: 1000,
363
- padding: theme.spacing.xl,
364
- },
365
- content: {
366
- backgroundColor: theme.colors.background,
367
- borderRadius: theme.borderRadius.lg,
368
- boxShadow: '0 25px 50px -12px rgba(0, 0, 0, 0.25)',
369
- width: '100%',
370
- maxHeight: '90vh',
371
- display: 'flex',
372
- flexDirection: 'column' as const,
373
- overflow: 'hidden',
374
- },
375
- header: {
376
- padding: theme.spacing.xl,
377
- borderBottom: `1px solid ${theme.colors.border}`,
378
- backgroundColor: theme.colors.backgroundAlt,
379
- },
380
- title: {
381
- margin: 0,
382
- fontSize: theme.fontSize.xl,
383
- fontWeight: theme.fontWeight.semibold,
384
- color: theme.colors.text,
385
- },
386
- },
387
-
388
- // Layout components
389
- sidebar: {
390
- width: '100%',
391
- height: '100%',
392
- overflowY: 'auto' as const,
393
- backgroundColor: theme.colors.backgroundPanel,
394
- display: 'flex',
395
- flexDirection: 'column' as const,
396
- },
397
-
398
- sidebarHeader: {
399
- padding: theme.spacing.xl,
400
- borderBottom: `1px solid ${theme.colors.border}`,
401
- backgroundColor: theme.colors.background,
402
- },
403
-
404
- sidebarTitle: {
405
- margin: 0,
406
- fontSize: theme.fontSize.xl,
407
- fontWeight: theme.fontWeight.semibold,
408
- color: theme.colors.text,
409
- fontFamily: 'system-ui, sans-serif',
410
- },
411
-
412
- // Component item styles
413
- componentItem: {
414
- padding: '10px',
415
- marginBottom: theme.spacing.sm,
416
- backgroundColor: theme.colors.background,
417
- border: `1px solid ${theme.colors.border}`,
418
- borderRadius: theme.borderRadius.md,
419
- cursor: 'grab',
420
- transition: theme.transitions.fast,
421
- display: 'flex',
422
- alignItems: 'center',
423
- gap: '10px',
424
- boxShadow: `0 1px 2px ${theme.colors.shadowLight}`,
425
- fontFamily: 'system-ui, sans-serif',
426
- },
427
-
428
- componentIcon: {
429
- fontSize: theme.fontSize.lg,
430
- width: '28px',
431
- height: '28px',
432
- display: 'flex',
433
- alignItems: 'center',
434
- justifyContent: 'center',
435
- borderRadius: theme.borderRadius.md,
436
- color: theme.colors.background,
437
- boxShadow: `0 2px 4px ${theme.colors.shadow}`,
438
- flexShrink: 0,
439
- },
440
-
441
- componentTitle: {
442
- fontWeight: theme.fontWeight.medium,
443
- fontSize: theme.fontSize.base,
444
- color: theme.colors.text,
445
- marginBottom: '1px',
446
- overflow: 'hidden',
447
- textOverflow: 'ellipsis',
448
- whiteSpace: 'nowrap' as const,
449
- },
450
-
451
- componentDescription: {
452
- fontSize: theme.fontSize.sm,
453
- color: theme.colors.textSecondary,
454
- overflow: 'hidden',
455
- textOverflow: 'ellipsis',
456
- whiteSpace: 'nowrap' as const,
457
- },
458
-
459
- // Section styles
460
- sectionHeader: {
461
- display: 'flex',
462
- alignItems: 'center',
463
- justifyContent: 'space-between',
464
- padding: `${theme.spacing.sm} ${theme.spacing.md}`,
465
- fontSize: theme.fontSize.sm,
466
- fontWeight: theme.fontWeight.semibold,
467
- color: theme.colors.textSecondary,
468
- textTransform: 'uppercase' as const,
469
- letterSpacing: '0.05em',
470
- fontFamily: 'system-ui, sans-serif',
471
- backgroundColor: theme.colors.backgroundPanel,
472
- border: `1px solid ${theme.colors.border}`,
473
- borderRadius: theme.borderRadius.md,
474
- cursor: 'pointer',
475
- transition: theme.transitions.fast,
476
- userSelect: 'none' as const,
477
- },
478
-
479
- sectionContent: {
480
- overflow: 'hidden',
481
- transition: `max-height ${theme.transitions.medium}, opacity ${theme.transitions.fast}`,
482
- },
483
-
484
- // Layout containers
485
- mainContainer: {
486
- width: '100%',
487
- height: '100%',
488
- display: 'flex',
489
- backgroundColor: theme.colors.background,
490
- color: theme.colors.text,
491
- fontFamily: 'system-ui, sans-serif',
492
- },
493
-
494
- canvasContainer: {
495
- flex: 1,
496
- height: '100%',
497
- position: 'relative' as const,
498
- backgroundColor: theme.colors.backgroundAlt,
499
- transition: `margin-left ${theme.transitions.medium}`,
500
- },
501
-
502
- reactFlowContainer: {
503
- width: '100%',
504
- height: '100%',
505
- backgroundColor: theme.colors.background,
506
- },
507
- };
508
-
1
+ // Unified theme system - consolidated design tokens and component styles
2
+
3
+ // ============================================================================
4
+ // DRACULA COLOR PALETTE (vibrant action colors + dark theme backgrounds)
5
+ // ============================================================================
6
+ export const dracula = {
7
+ // Vibrant action colors
8
+ green: '#50fa7b', // Run/Success - bright green
9
+ purple: '#bd93f9', // Deploy/Save - purple
10
+ pink: '#ff79c6', // Cancel/Stop - pink
11
+ cyan: '#8be9fd', // Info/Alternative - cyan
12
+ red: '#ff5555', // Error/Danger - red
13
+ orange: '#ffb86c', // Warning - orange
14
+ yellow: '#f1fa8c', // Highlight - yellow
15
+ // Dark theme backgrounds
16
+ background: '#282a36', // Main background
17
+ currentLine: '#44475a', // Current line / elevated background
18
+ selection: '#44475a', // Selection / panel background
19
+ comment: '#6272a4', // Comments / muted text
20
+ foreground: '#f8f8f2', // Main text
21
+ } as const;
22
+
23
+ // ============================================================================
24
+ // SOLARIZED COLOR PALETTE
25
+ // ============================================================================
26
+ export const solarized = {
27
+ // Base colors (dark to light)
28
+ base03: '#002b36', // darkest background
29
+ base02: '#073642', // dark background highlights
30
+ base01: '#586e75', // dark content tone (comments)
31
+ base00: '#657b83', // light content tone
32
+ base0: '#839496', // dark content tone
33
+ base1: '#93a1a1', // light content tone (emphasis)
34
+ base2: '#eee8d5', // light background highlights
35
+ base3: '#fdf6e3', // lightest background
36
+ // Accent colors
37
+ yellow: '#b58900',
38
+ orange: '#cb4b16',
39
+ red: '#dc322f',
40
+ magenta: '#d33682',
41
+ violet: '#6c71c4',
42
+ blue: '#268bd2',
43
+ cyan: '#2aa198',
44
+ green: '#859900',
45
+ } as const;
46
+
47
+ // ============================================================================
48
+ // LIGHT THEME COLORS - Modern, clean design with proper contrast
49
+ // ============================================================================
50
+ export const lightColors = {
51
+ // Backgrounds - slightly warmer canvas for depth
52
+ background: '#f5f7fa', // Slightly blue-gray canvas
53
+ backgroundAlt: '#eef1f5', // Subtle gray for contrast areas
54
+ backgroundPanel: '#ffffff', // Pure white for panels
55
+ backgroundElevated: '#ffffff', // Elevated surfaces
56
+ backgroundHover: 'rgba(0,0,0,0.05)',
57
+ backgroundActive: 'rgba(0,0,0,0.08)',
58
+ backgroundCanvas: '#e8ecf1', // Cooler gray for canvas - more contrast with white nodes
59
+ // Text - high contrast
60
+ text: '#1a1d21', // Near-black for readability
61
+ textSecondary: '#374151', // Darker secondary text (gray-700)
62
+ textMuted: '#4b5563', // gray-600 - muted but readable
63
+ // Borders - subtle but defined
64
+ border: '#d1d5db', // gray-300 - more visible
65
+ borderHover: '#9ca3af', // gray-400
66
+ borderFocus: '#3b82f6', // Brighter blue for focus
67
+ borderNode: '#c7ccd4', // Slightly darker for nodes
68
+ // Shadows - more depth for light mode
69
+ shadow: 'rgba(0,0,0,0.12)',
70
+ shadowLight: 'rgba(0,0,0,0.06)',
71
+ shadowHeavy: 'rgba(0,0,0,0.18)',
72
+ shadowNode: '0 2px 8px rgba(0,0,0,0.1), 0 4px 16px rgba(0,0,0,0.06)',
73
+ // Focus
74
+ focus: '#3b82f6',
75
+ focusRing: 'rgba(59, 130, 246, 0.25)',
76
+ // Semantic
77
+ primary: '#2563eb', // Blue-600 - slightly darker for contrast
78
+ success: '#059669', // Emerald-600
79
+ warning: '#d97706', // Amber-600
80
+ error: '#dc2626', // Red-600
81
+ info: '#0891b2', // Cyan-600
82
+ // Special
83
+ templateVariable: '#7c3aed', // Violet for variables
84
+ // Node-specific
85
+ nodeBackground: '#ffffff',
86
+ nodeBorder: '#d1d5db',
87
+ nodeHeaderBg: '#f3f4f6',
88
+ // Action colors (optimized for light backgrounds - darker for contrast)
89
+ actionRun: '#059669', // Emerald-600
90
+ actionDeploy: '#7c3aed', // Violet
91
+ actionStop: '#dc2626', // Red-600
92
+ actionSave: '#0284c7', // Sky-600
93
+ actionSettings: '#d97706', // Amber-600
94
+ actionCredentials: '#ca8a04', // Yellow-600
95
+ actionTheme: '#7c3aed', // Violet
96
+ actionSidebar: '#0891b2', // Cyan-600
97
+ actionPalette: '#7c3aed', // Violet
98
+ statusSaved: '#059669', // Emerald-600
99
+ statusModified: '#d97706', // Amber-600
100
+ // Edge colors for light mode - MUCH darker for visibility
101
+ edgeDefault: '#6b7280', // gray-500 - much more visible
102
+ edgeSelected: '#7c3aed', // Violet
103
+ edgeExecuting: '#7c3aed', // Violet
104
+ edgeCompleted: '#059669', // Emerald-600
105
+ edgeError: '#dc2626', // Red-600
106
+ // Category colors for light mode (darker, more saturated)
107
+ categoryWorkflow: '#ea580c', // Orange-600
108
+ categoryTrigger: '#db2777', // Pink-600
109
+ categoryAI: '#7c3aed', // Violet-600
110
+ categoryLocation: '#dc2626', // Red-600
111
+ categoryWhatsapp: '#059669', // Emerald-600
112
+ categoryAndroid: '#0891b2', // Cyan-600
113
+ categoryChat: '#ca8a04', // Yellow-600
114
+ categoryCode: '#ea580c', // Orange-600
115
+ categoryUtil: '#7c3aed', // Violet-600
116
+ } as const;
117
+
118
+ // ============================================================================
119
+ // DARK THEME COLORS (Dracula text for better contrast)
120
+ // ============================================================================
121
+ export const darkColors = {
122
+ // Backgrounds - Solarized dark
123
+ background: solarized.base03,
124
+ backgroundAlt: solarized.base02,
125
+ backgroundPanel: solarized.base02,
126
+ backgroundElevated: '#0d1f2d',
127
+ backgroundHover: 'rgba(255,255,255,0.04)',
128
+ backgroundActive: 'rgba(255,255,255,0.08)',
129
+ backgroundCanvas: solarized.base03,
130
+ // Text - Dracula for better contrast
131
+ text: dracula.foreground, // #f8f8f2 - bright white text
132
+ textSecondary: '#bfbfbf', // Lighter secondary text
133
+ textMuted: dracula.comment, // #6272a4 - muted/comments
134
+ // Borders
135
+ border: solarized.base01 + '60',
136
+ borderHover: solarized.base01,
137
+ borderFocus: solarized.blue,
138
+ borderNode: solarized.base01,
139
+ // Shadows
140
+ shadow: 'rgba(0,0,0,0.4)',
141
+ shadowLight: 'rgba(0,0,0,0.25)',
142
+ shadowHeavy: 'rgba(0,0,0,0.5)',
143
+ shadowNode: '0 2px 12px rgba(0,0,0,0.3)',
144
+ // Focus
145
+ focus: solarized.blue,
146
+ focusRing: 'rgba(38, 139, 210, 0.3)',
147
+ // Semantic
148
+ primary: solarized.blue,
149
+ success: solarized.green,
150
+ warning: solarized.yellow,
151
+ error: solarized.red,
152
+ info: solarized.cyan,
153
+ // Special
154
+ templateVariable: solarized.cyan,
155
+ // Node-specific
156
+ nodeBackground: solarized.base02,
157
+ nodeBorder: solarized.base01,
158
+ nodeHeaderBg: solarized.base03,
159
+ // Action colors (Dracula - optimized for dark backgrounds)
160
+ actionRun: dracula.green, // #50fa7b - bright green
161
+ actionDeploy: dracula.purple, // #bd93f9 - purple
162
+ actionStop: dracula.pink, // #ff79c6 - pink
163
+ actionSave: dracula.cyan, // #8be9fd - cyan
164
+ actionSettings: dracula.orange, // #ffb86c - orange
165
+ actionCredentials: dracula.yellow, // #f1fa8c - yellow
166
+ actionTheme: dracula.yellow, // #f1fa8c - yellow (sun icon)
167
+ actionSidebar: dracula.cyan, // #8be9fd - cyan
168
+ actionPalette: dracula.purple, // #bd93f9 - purple
169
+ statusSaved: dracula.green, // #50fa7b - green
170
+ statusModified: dracula.orange, // #ffb86c - orange
171
+ // Edge colors for dark mode
172
+ edgeDefault: dracula.cyan, // Cyan
173
+ edgeSelected: dracula.purple, // Purple
174
+ edgeExecuting: dracula.purple, // Purple
175
+ edgeCompleted: dracula.green, // Green
176
+ edgeError: dracula.red, // Red
177
+ // Category colors for dark mode (Dracula - vibrant)
178
+ categoryWorkflow: dracula.orange,
179
+ categoryTrigger: dracula.pink,
180
+ categoryAI: dracula.purple,
181
+ categoryLocation: dracula.red,
182
+ categoryWhatsapp: dracula.green,
183
+ categoryAndroid: dracula.cyan,
184
+ categoryChat: dracula.yellow,
185
+ categoryCode: dracula.orange,
186
+ categoryUtil: dracula.purple,
187
+ } as const;
188
+
189
+ // ============================================================================
190
+ // BASE THEME (uses light colors by default)
191
+ // ============================================================================
192
+ export const theme = {
193
+ // Color palette - use lightColors as default
194
+ colors: lightColors,
195
+
196
+ // Solarized accent colors (available in both themes)
197
+ accent: solarized,
198
+
199
+ // Dracula vibrant colors (for action buttons)
200
+ dracula: dracula,
201
+
202
+ // Essential spacing scale
203
+ spacing: {
204
+ xs: '4px',
205
+ sm: '8px',
206
+ md: '12px',
207
+ lg: '16px',
208
+ xl: '20px',
209
+ xxl: '32px',
210
+ },
211
+
212
+ // Simplified typography
213
+ fontSize: {
214
+ xs: '11px',
215
+ sm: '12px',
216
+ base: '14px',
217
+ lg: '16px',
218
+ xl: '18px',
219
+ },
220
+
221
+ fontWeight: {
222
+ normal: '400',
223
+ medium: '500',
224
+ semibold: '600',
225
+ },
226
+
227
+ fontFamily: {
228
+ sans: '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif',
229
+ mono: 'ui-monospace, SFMono-Regular, "SF Mono", Menlo, Monaco, Consolas, monospace',
230
+ },
231
+
232
+ borderRadius: {
233
+ sm: '4px',
234
+ md: '6px',
235
+ lg: '8px',
236
+ },
237
+
238
+ // Node sizes (fixed per industry standard)
239
+ nodeSize: {
240
+ square: '60px', // SquareNode, BaseChatModelNode, ModelNode
241
+ squareIcon: '28px', // Icon inside square node
242
+ handle: '8px', // Connection handles
243
+ statusIndicator: '10px', // Status dot
244
+ paramButton: '16px', // Parameters gear button
245
+ outputBadge: '14px', // Output data indicator
246
+ },
247
+
248
+ // Icon sizes
249
+ iconSize: {
250
+ xs: '12px',
251
+ sm: '16px',
252
+ md: '24px',
253
+ lg: '28px',
254
+ xl: '32px',
255
+ },
256
+
257
+ // Button sizes
258
+ buttonSize: {
259
+ sm: '24px',
260
+ md: '32px',
261
+ lg: '34px',
262
+ },
263
+
264
+ // Layout constants
265
+ layout: {
266
+ sidebarWidth: '288px',
267
+ workflowSidebarWidth: '280px',
268
+ parameterPanelWidth: '320px',
269
+ headerHeight: '60px',
270
+ toolbarHeight: '48px',
271
+ },
272
+
273
+ transitions: {
274
+ fast: '0.2s ease',
275
+ medium: '0.3s ease',
276
+ },
277
+
278
+ // App constants - moved from utils/constants.ts
279
+ constants: {
280
+ storageKeys: {
281
+ workflows: 'react-flow-workflows',
282
+ workflowData: (id: string) => `react-flow-workflows-${id}`,
283
+ },
284
+ defaultWorkflowName: 'Untitled Workflow',
285
+ debounceDelay: {
286
+ workflowUpdate: 100,
287
+ search: 300,
288
+ },
289
+ gridSize: 20,
290
+ defaultNodePosition: { x: 100, y: 200 },
291
+ dragOffset: { x: 75, y: 50 },
292
+ },
293
+ };
294
+
295
+ // Component styles - consolidated from components.ts + theme.ts
296
+ export const styles = {
297
+ // Button variants
298
+ button: {
299
+ base: {
300
+ padding: `${theme.spacing.sm} ${theme.spacing.lg}`,
301
+ borderRadius: theme.borderRadius.md,
302
+ fontSize: theme.fontSize.sm,
303
+ fontWeight: theme.fontWeight.medium,
304
+ cursor: 'pointer',
305
+ transition: theme.transitions.fast,
306
+ border: 'none',
307
+ outline: 'none',
308
+ display: 'inline-flex',
309
+ alignItems: 'center',
310
+ justifyContent: 'center',
311
+ gap: theme.spacing.sm,
312
+ },
313
+ primary: {
314
+ backgroundColor: theme.colors.focus,
315
+ color: 'white',
316
+ },
317
+ secondary: {
318
+ backgroundColor: 'transparent',
319
+ border: `1px solid ${theme.colors.border}`,
320
+ color: theme.colors.textSecondary,
321
+ },
322
+ danger: {
323
+ backgroundColor: '#ef4444',
324
+ color: 'white',
325
+ },
326
+ },
327
+
328
+ // Input styles
329
+ input: {
330
+ base: {
331
+ width: '100%',
332
+ padding: `${theme.spacing.sm} ${theme.spacing.md}`,
333
+ fontSize: theme.fontSize.base,
334
+ border: `1px solid ${theme.colors.border}`,
335
+ borderRadius: theme.borderRadius.md,
336
+ backgroundColor: theme.colors.background,
337
+ color: theme.colors.text,
338
+ fontFamily: 'system-ui, sans-serif',
339
+ outline: 'none',
340
+ transition: `border-color ${theme.transitions.fast}`,
341
+ },
342
+ },
343
+
344
+ // Card styles
345
+ card: {
346
+ base: {
347
+ backgroundColor: theme.colors.background,
348
+ border: `1px solid ${theme.colors.border}`,
349
+ borderRadius: theme.borderRadius.lg,
350
+ boxShadow: `0 1px 2px ${theme.colors.shadowLight}`,
351
+ transition: theme.transitions.fast,
352
+ },
353
+ },
354
+
355
+ // Modal styles
356
+ modal: {
357
+ overlay: {
358
+ position: 'fixed' as const,
359
+ top: 0,
360
+ left: 0,
361
+ right: 0,
362
+ bottom: 0,
363
+ backgroundColor: 'rgba(0, 0, 0, 0.5)',
364
+ display: 'flex',
365
+ alignItems: 'center',
366
+ justifyContent: 'center',
367
+ zIndex: 1000,
368
+ padding: theme.spacing.xl,
369
+ },
370
+ content: {
371
+ backgroundColor: theme.colors.background,
372
+ borderRadius: theme.borderRadius.lg,
373
+ boxShadow: '0 25px 50px -12px rgba(0, 0, 0, 0.25)',
374
+ width: '100%',
375
+ maxHeight: '90vh',
376
+ display: 'flex',
377
+ flexDirection: 'column' as const,
378
+ overflow: 'hidden',
379
+ },
380
+ header: {
381
+ padding: theme.spacing.xl,
382
+ borderBottom: `1px solid ${theme.colors.border}`,
383
+ backgroundColor: theme.colors.backgroundAlt,
384
+ },
385
+ title: {
386
+ margin: 0,
387
+ fontSize: theme.fontSize.xl,
388
+ fontWeight: theme.fontWeight.semibold,
389
+ color: theme.colors.text,
390
+ },
391
+ },
392
+
393
+ // Layout components
394
+ sidebar: {
395
+ width: '100%',
396
+ height: '100%',
397
+ overflowY: 'auto' as const,
398
+ backgroundColor: theme.colors.backgroundPanel,
399
+ display: 'flex',
400
+ flexDirection: 'column' as const,
401
+ },
402
+
403
+ sidebarHeader: {
404
+ padding: theme.spacing.xl,
405
+ borderBottom: `1px solid ${theme.colors.border}`,
406
+ backgroundColor: theme.colors.background,
407
+ },
408
+
409
+ sidebarTitle: {
410
+ margin: 0,
411
+ fontSize: theme.fontSize.xl,
412
+ fontWeight: theme.fontWeight.semibold,
413
+ color: theme.colors.text,
414
+ fontFamily: 'system-ui, sans-serif',
415
+ },
416
+
417
+ // Component item styles
418
+ componentItem: {
419
+ padding: '10px',
420
+ marginBottom: theme.spacing.sm,
421
+ backgroundColor: theme.colors.background,
422
+ border: `1px solid ${theme.colors.border}`,
423
+ borderRadius: theme.borderRadius.md,
424
+ cursor: 'grab',
425
+ transition: theme.transitions.fast,
426
+ display: 'flex',
427
+ alignItems: 'center',
428
+ gap: '10px',
429
+ boxShadow: `0 1px 2px ${theme.colors.shadowLight}`,
430
+ fontFamily: 'system-ui, sans-serif',
431
+ },
432
+
433
+ componentIcon: {
434
+ fontSize: theme.fontSize.lg,
435
+ width: '28px',
436
+ height: '28px',
437
+ display: 'flex',
438
+ alignItems: 'center',
439
+ justifyContent: 'center',
440
+ borderRadius: theme.borderRadius.md,
441
+ color: theme.colors.background,
442
+ boxShadow: `0 2px 4px ${theme.colors.shadow}`,
443
+ flexShrink: 0,
444
+ },
445
+
446
+ componentTitle: {
447
+ fontWeight: theme.fontWeight.medium,
448
+ fontSize: theme.fontSize.base,
449
+ color: theme.colors.text,
450
+ marginBottom: '1px',
451
+ overflow: 'hidden',
452
+ textOverflow: 'ellipsis',
453
+ whiteSpace: 'nowrap' as const,
454
+ },
455
+
456
+ componentDescription: {
457
+ fontSize: theme.fontSize.sm,
458
+ color: theme.colors.textSecondary,
459
+ overflow: 'hidden',
460
+ textOverflow: 'ellipsis',
461
+ whiteSpace: 'nowrap' as const,
462
+ },
463
+
464
+ // Section styles
465
+ sectionHeader: {
466
+ display: 'flex',
467
+ alignItems: 'center',
468
+ justifyContent: 'space-between',
469
+ padding: `${theme.spacing.sm} ${theme.spacing.md}`,
470
+ fontSize: theme.fontSize.sm,
471
+ fontWeight: theme.fontWeight.semibold,
472
+ color: theme.colors.textSecondary,
473
+ textTransform: 'uppercase' as const,
474
+ letterSpacing: '0.05em',
475
+ fontFamily: 'system-ui, sans-serif',
476
+ backgroundColor: theme.colors.backgroundPanel,
477
+ border: `1px solid ${theme.colors.border}`,
478
+ borderRadius: theme.borderRadius.md,
479
+ cursor: 'pointer',
480
+ transition: theme.transitions.fast,
481
+ userSelect: 'none' as const,
482
+ },
483
+
484
+ sectionContent: {
485
+ overflow: 'hidden',
486
+ transition: `max-height ${theme.transitions.medium}, opacity ${theme.transitions.fast}`,
487
+ },
488
+
489
+ // Layout containers
490
+ mainContainer: {
491
+ width: '100%',
492
+ height: '100%',
493
+ display: 'flex',
494
+ backgroundColor: theme.colors.background,
495
+ color: theme.colors.text,
496
+ fontFamily: 'system-ui, sans-serif',
497
+ },
498
+
499
+ canvasContainer: {
500
+ flex: 1,
501
+ height: '100%',
502
+ position: 'relative' as const,
503
+ backgroundColor: theme.colors.backgroundAlt,
504
+ transition: `margin-left ${theme.transitions.medium}`,
505
+ },
506
+
507
+ reactFlowContainer: {
508
+ width: '100%',
509
+ height: '100%',
510
+ backgroundColor: theme.colors.background,
511
+ },
512
+ };
513
+