machinaos 0.0.1 → 0.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (422) hide show
  1. package/.env.template +71 -71
  2. package/LICENSE +21 -21
  3. package/README.md +163 -87
  4. package/bin/cli.js +62 -106
  5. package/client/.dockerignore +45 -45
  6. package/client/Dockerfile +68 -68
  7. package/client/dist/assets/index-DFSC53FP.css +1 -0
  8. package/client/dist/assets/index-fJ-1gTf5.js +613 -0
  9. package/client/dist/index.html +14 -0
  10. package/client/eslint.config.js +34 -16
  11. package/client/nginx.conf +66 -66
  12. package/client/package.json +61 -48
  13. package/client/src/App.tsx +27 -27
  14. package/client/src/Dashboard.tsx +1200 -1172
  15. package/client/src/ParameterPanel.tsx +302 -300
  16. package/client/src/components/AIAgentNode.tsx +315 -321
  17. package/client/src/components/APIKeyValidator.tsx +117 -117
  18. package/client/src/components/ClaudeChatModelNode.tsx +17 -17
  19. package/client/src/components/CredentialsModal.tsx +1200 -306
  20. package/client/src/components/GeminiChatModelNode.tsx +17 -17
  21. package/client/src/components/GenericNode.tsx +356 -356
  22. package/client/src/components/LocationParameterPanel.tsx +153 -153
  23. package/client/src/components/ModelNode.tsx +285 -285
  24. package/client/src/components/OpenAIChatModelNode.tsx +17 -17
  25. package/client/src/components/OutputPanel.tsx +470 -470
  26. package/client/src/components/ParameterRenderer.tsx +1873 -1873
  27. package/client/src/components/SkillEditorModal.tsx +3 -3
  28. package/client/src/components/SquareNode.tsx +812 -796
  29. package/client/src/components/ToolkitNode.tsx +365 -365
  30. package/client/src/components/auth/LoginPage.tsx +247 -247
  31. package/client/src/components/auth/ProtectedRoute.tsx +59 -59
  32. package/client/src/components/base/BaseChatModelNode.tsx +270 -270
  33. package/client/src/components/icons/AIProviderIcons.tsx +50 -50
  34. package/client/src/components/maps/GoogleMapsPicker.tsx +136 -136
  35. package/client/src/components/maps/MapsPreviewPanel.tsx +109 -109
  36. package/client/src/components/maps/index.ts +25 -25
  37. package/client/src/components/parameterPanel/InputSection.tsx +1094 -1094
  38. package/client/src/components/parameterPanel/LocationPanelLayout.tsx +64 -64
  39. package/client/src/components/parameterPanel/MapsSection.tsx +91 -91
  40. package/client/src/components/parameterPanel/MiddleSection.tsx +867 -571
  41. package/client/src/components/parameterPanel/OutputSection.tsx +80 -80
  42. package/client/src/components/parameterPanel/ParameterPanelLayout.tsx +81 -81
  43. package/client/src/components/parameterPanel/ToolSchemaEditor.tsx +436 -436
  44. package/client/src/components/parameterPanel/index.ts +41 -41
  45. package/client/src/components/shared/DataPanel.tsx +142 -142
  46. package/client/src/components/shared/JSONTreeRenderer.tsx +105 -105
  47. package/client/src/components/ui/AIResultModal.tsx +203 -203
  48. package/client/src/components/ui/ApiKeyInput.tsx +93 -0
  49. package/client/src/components/ui/CodeEditor.tsx +81 -81
  50. package/client/src/components/ui/CollapsibleSection.tsx +87 -87
  51. package/client/src/components/ui/ComponentItem.tsx +153 -153
  52. package/client/src/components/ui/ComponentPalette.tsx +320 -320
  53. package/client/src/components/ui/ConsolePanel.tsx +151 -43
  54. package/client/src/components/ui/ErrorBoundary.tsx +195 -195
  55. package/client/src/components/ui/InputNodesPanel.tsx +203 -203
  56. package/client/src/components/ui/MapSelector.tsx +313 -313
  57. package/client/src/components/ui/Modal.tsx +151 -148
  58. package/client/src/components/ui/NodeOutputPanel.tsx +1150 -1150
  59. package/client/src/components/ui/OutputDisplayPanel.tsx +381 -381
  60. package/client/src/components/ui/QRCodeDisplay.tsx +182 -0
  61. package/client/src/components/ui/TopToolbar.tsx +736 -736
  62. package/client/src/components/ui/WorkflowSidebar.tsx +293 -293
  63. package/client/src/config/antdTheme.ts +186 -186
  64. package/client/src/contexts/AuthContext.tsx +221 -221
  65. package/client/src/contexts/ThemeContext.tsx +42 -42
  66. package/client/src/contexts/WebSocketContext.tsx +2144 -1971
  67. package/client/src/factories/baseChatModelFactory.ts +255 -255
  68. package/client/src/hooks/useAndroidOperations.ts +118 -164
  69. package/client/src/hooks/useApiKeyValidation.ts +106 -106
  70. package/client/src/hooks/useApiKeys.ts +238 -238
  71. package/client/src/hooks/useAppTheme.ts +17 -17
  72. package/client/src/hooks/useComponentPalette.ts +50 -50
  73. package/client/src/hooks/useDragAndDrop.ts +123 -123
  74. package/client/src/hooks/useDragVariable.ts +88 -88
  75. package/client/src/hooks/useExecution.ts +319 -313
  76. package/client/src/hooks/useParameterPanel.ts +176 -176
  77. package/client/src/hooks/useReactFlowNodes.ts +188 -188
  78. package/client/src/hooks/useToolSchema.ts +209 -209
  79. package/client/src/hooks/useWhatsApp.ts +196 -196
  80. package/client/src/hooks/useWorkflowManagement.ts +45 -45
  81. package/client/src/index.css +314 -314
  82. package/client/src/nodeDefinitions/aiAgentNodes.ts +335 -335
  83. package/client/src/nodeDefinitions/aiModelNodes.ts +340 -340
  84. package/client/src/nodeDefinitions/androidServiceNodes.ts +383 -383
  85. package/client/src/nodeDefinitions/chatNodes.ts +135 -135
  86. package/client/src/nodeDefinitions/codeNodes.ts +54 -54
  87. package/client/src/nodeDefinitions/index.ts +14 -14
  88. package/client/src/nodeDefinitions/locationNodes.ts +462 -462
  89. package/client/src/nodeDefinitions/schedulerNodes.ts +220 -220
  90. package/client/src/nodeDefinitions/skillNodes.ts +17 -5
  91. package/client/src/nodeDefinitions/utilityNodes.ts +284 -284
  92. package/client/src/nodeDefinitions/whatsappNodes.ts +821 -865
  93. package/client/src/nodeDefinitions.ts +101 -103
  94. package/client/src/services/dynamicParameterService.ts +95 -95
  95. package/client/src/services/execution/aiAgentExecutionService.ts +34 -34
  96. package/client/src/services/executionService.ts +227 -231
  97. package/client/src/services/workflowApi.ts +91 -91
  98. package/client/src/store/useAppStore.ts +578 -581
  99. package/client/src/styles/theme.ts +513 -508
  100. package/client/src/styles/zIndex.ts +16 -16
  101. package/client/src/types/ComponentTypes.ts +38 -38
  102. package/client/src/types/INodeProperties.ts +287 -287
  103. package/client/src/types/NodeTypes.ts +27 -27
  104. package/client/src/utils/formatters.ts +32 -32
  105. package/client/src/utils/googleMapsLoader.ts +139 -139
  106. package/client/src/utils/locationUtils.ts +84 -84
  107. package/client/src/utils/nodeUtils.ts +30 -30
  108. package/client/src/utils/workflow.ts +29 -29
  109. package/client/src/vite-env.d.ts +12 -12
  110. package/client/tailwind.config.js +59 -59
  111. package/client/tsconfig.json +25 -25
  112. package/client/vite.config.js +35 -35
  113. package/install.ps1 +308 -0
  114. package/install.sh +343 -0
  115. package/package.json +81 -70
  116. package/scripts/build.js +174 -51
  117. package/scripts/clean.js +40 -40
  118. package/scripts/start.js +234 -210
  119. package/scripts/stop.js +301 -325
  120. package/server/.dockerignore +44 -44
  121. package/server/Dockerfile +45 -45
  122. package/server/constants.py +244 -249
  123. package/server/core/cache.py +460 -460
  124. package/server/core/config.py +127 -127
  125. package/server/core/container.py +98 -98
  126. package/server/core/database.py +1296 -1210
  127. package/server/core/logging.py +313 -313
  128. package/server/main.py +288 -288
  129. package/server/middleware/__init__.py +5 -5
  130. package/server/middleware/auth.py +89 -89
  131. package/server/models/auth.py +52 -52
  132. package/server/models/cache.py +24 -24
  133. package/server/models/database.py +235 -210
  134. package/server/models/nodes.py +435 -455
  135. package/server/pyproject.toml +75 -72
  136. package/server/requirements.txt +83 -83
  137. package/server/routers/android.py +294 -294
  138. package/server/routers/auth.py +203 -203
  139. package/server/routers/database.py +150 -150
  140. package/server/routers/maps.py +141 -141
  141. package/server/routers/nodejs_compat.py +288 -288
  142. package/server/routers/webhook.py +90 -90
  143. package/server/routers/websocket.py +2239 -2127
  144. package/server/routers/whatsapp.py +761 -761
  145. package/server/routers/workflow.py +199 -199
  146. package/server/services/ai.py +2444 -2414
  147. package/server/services/android_service.py +588 -588
  148. package/server/services/auth.py +130 -130
  149. package/server/services/chat_client.py +160 -160
  150. package/server/services/deployment/manager.py +706 -706
  151. package/server/services/event_waiter.py +675 -785
  152. package/server/services/execution/executor.py +1351 -1351
  153. package/server/services/execution/models.py +1 -1
  154. package/server/services/handlers/__init__.py +122 -126
  155. package/server/services/handlers/ai.py +390 -355
  156. package/server/services/handlers/android.py +69 -260
  157. package/server/services/handlers/code.py +278 -278
  158. package/server/services/handlers/http.py +193 -193
  159. package/server/services/handlers/tools.py +146 -32
  160. package/server/services/handlers/triggers.py +107 -107
  161. package/server/services/handlers/utility.py +822 -822
  162. package/server/services/handlers/whatsapp.py +423 -476
  163. package/server/services/maps.py +288 -288
  164. package/server/services/memory_store.py +103 -103
  165. package/server/services/node_executor.py +372 -375
  166. package/server/services/scheduler.py +155 -155
  167. package/server/services/skill_loader.py +1 -1
  168. package/server/services/status_broadcaster.py +834 -826
  169. package/server/services/temporal/__init__.py +23 -23
  170. package/server/services/temporal/activities.py +344 -344
  171. package/server/services/temporal/client.py +76 -76
  172. package/server/services/temporal/executor.py +147 -147
  173. package/server/services/temporal/worker.py +251 -251
  174. package/server/services/temporal/workflow.py +355 -355
  175. package/server/services/temporal/ws_client.py +236 -236
  176. package/server/services/text.py +110 -110
  177. package/server/services/user_auth.py +172 -172
  178. package/server/services/websocket_client.py +29 -29
  179. package/server/services/workflow.py +597 -597
  180. package/server/skills/android-skill/SKILL.md +4 -4
  181. package/server/skills/code-skill/SKILL.md +123 -89
  182. package/server/skills/maps-skill/SKILL.md +3 -3
  183. package/server/skills/memory-skill/SKILL.md +1 -1
  184. package/server/skills/web-search-skill/SKILL.md +154 -0
  185. package/server/skills/whatsapp-skill/SKILL.md +3 -3
  186. package/server/uv.lock +461 -100
  187. package/server/whatsapp-rpc/.dockerignore +30 -30
  188. package/server/whatsapp-rpc/Dockerfile +44 -44
  189. package/server/whatsapp-rpc/Dockerfile.web +17 -17
  190. package/server/whatsapp-rpc/README.md +139 -139
  191. package/server/whatsapp-rpc/bin/whatsapp-rpc-server +0 -0
  192. package/server/whatsapp-rpc/cli.js +95 -95
  193. package/server/whatsapp-rpc/configs/config.yaml +6 -6
  194. package/server/whatsapp-rpc/docker-compose.yml +35 -35
  195. package/server/whatsapp-rpc/docs/API.md +410 -410
  196. package/server/whatsapp-rpc/node_modules/.package-lock.json +259 -0
  197. package/server/whatsapp-rpc/node_modules/chalk/license +9 -0
  198. package/server/whatsapp-rpc/node_modules/chalk/package.json +83 -0
  199. package/server/whatsapp-rpc/node_modules/chalk/readme.md +297 -0
  200. package/server/whatsapp-rpc/node_modules/chalk/source/index.d.ts +325 -0
  201. package/server/whatsapp-rpc/node_modules/chalk/source/index.js +225 -0
  202. package/server/whatsapp-rpc/node_modules/chalk/source/utilities.js +33 -0
  203. package/server/whatsapp-rpc/node_modules/chalk/source/vendor/ansi-styles/index.d.ts +236 -0
  204. package/server/whatsapp-rpc/node_modules/chalk/source/vendor/ansi-styles/index.js +223 -0
  205. package/server/whatsapp-rpc/node_modules/chalk/source/vendor/supports-color/browser.d.ts +1 -0
  206. package/server/whatsapp-rpc/node_modules/chalk/source/vendor/supports-color/browser.js +34 -0
  207. package/server/whatsapp-rpc/node_modules/chalk/source/vendor/supports-color/index.d.ts +55 -0
  208. package/server/whatsapp-rpc/node_modules/chalk/source/vendor/supports-color/index.js +190 -0
  209. package/server/whatsapp-rpc/node_modules/commander/LICENSE +22 -0
  210. package/server/whatsapp-rpc/node_modules/commander/Readme.md +1148 -0
  211. package/server/whatsapp-rpc/node_modules/commander/esm.mjs +16 -0
  212. package/server/whatsapp-rpc/node_modules/commander/index.js +26 -0
  213. package/server/whatsapp-rpc/node_modules/commander/lib/argument.js +145 -0
  214. package/server/whatsapp-rpc/node_modules/commander/lib/command.js +2179 -0
  215. package/server/whatsapp-rpc/node_modules/commander/lib/error.js +43 -0
  216. package/server/whatsapp-rpc/node_modules/commander/lib/help.js +462 -0
  217. package/server/whatsapp-rpc/node_modules/commander/lib/option.js +329 -0
  218. package/server/whatsapp-rpc/node_modules/commander/lib/suggestSimilar.js +100 -0
  219. package/server/whatsapp-rpc/node_modules/commander/package-support.json +16 -0
  220. package/server/whatsapp-rpc/node_modules/commander/package.json +80 -0
  221. package/server/whatsapp-rpc/node_modules/commander/typings/esm.d.mts +3 -0
  222. package/server/whatsapp-rpc/node_modules/commander/typings/index.d.ts +884 -0
  223. package/server/whatsapp-rpc/node_modules/cross-spawn/LICENSE +21 -0
  224. package/server/whatsapp-rpc/node_modules/cross-spawn/README.md +89 -0
  225. package/server/whatsapp-rpc/node_modules/cross-spawn/index.js +39 -0
  226. package/server/whatsapp-rpc/node_modules/cross-spawn/lib/enoent.js +59 -0
  227. package/server/whatsapp-rpc/node_modules/cross-spawn/lib/parse.js +91 -0
  228. package/server/whatsapp-rpc/node_modules/cross-spawn/lib/util/escape.js +47 -0
  229. package/server/whatsapp-rpc/node_modules/cross-spawn/lib/util/readShebang.js +23 -0
  230. package/server/whatsapp-rpc/node_modules/cross-spawn/lib/util/resolveCommand.js +52 -0
  231. package/server/whatsapp-rpc/node_modules/cross-spawn/package.json +73 -0
  232. package/server/whatsapp-rpc/node_modules/execa/index.d.ts +955 -0
  233. package/server/whatsapp-rpc/node_modules/execa/index.js +309 -0
  234. package/server/whatsapp-rpc/node_modules/execa/lib/command.js +119 -0
  235. package/server/whatsapp-rpc/node_modules/execa/lib/error.js +87 -0
  236. package/server/whatsapp-rpc/node_modules/execa/lib/kill.js +102 -0
  237. package/server/whatsapp-rpc/node_modules/execa/lib/pipe.js +42 -0
  238. package/server/whatsapp-rpc/node_modules/execa/lib/promise.js +36 -0
  239. package/server/whatsapp-rpc/node_modules/execa/lib/stdio.js +49 -0
  240. package/server/whatsapp-rpc/node_modules/execa/lib/stream.js +133 -0
  241. package/server/whatsapp-rpc/node_modules/execa/lib/verbose.js +19 -0
  242. package/server/whatsapp-rpc/node_modules/execa/license +9 -0
  243. package/server/whatsapp-rpc/node_modules/execa/package.json +90 -0
  244. package/server/whatsapp-rpc/node_modules/execa/readme.md +822 -0
  245. package/server/whatsapp-rpc/node_modules/get-stream/license +9 -0
  246. package/server/whatsapp-rpc/node_modules/get-stream/package.json +53 -0
  247. package/server/whatsapp-rpc/node_modules/get-stream/readme.md +291 -0
  248. package/server/whatsapp-rpc/node_modules/get-stream/source/array-buffer.js +84 -0
  249. package/server/whatsapp-rpc/node_modules/get-stream/source/array.js +32 -0
  250. package/server/whatsapp-rpc/node_modules/get-stream/source/buffer.js +20 -0
  251. package/server/whatsapp-rpc/node_modules/get-stream/source/contents.js +101 -0
  252. package/server/whatsapp-rpc/node_modules/get-stream/source/index.d.ts +119 -0
  253. package/server/whatsapp-rpc/node_modules/get-stream/source/index.js +5 -0
  254. package/server/whatsapp-rpc/node_modules/get-stream/source/string.js +36 -0
  255. package/server/whatsapp-rpc/node_modules/get-stream/source/utils.js +11 -0
  256. package/server/whatsapp-rpc/node_modules/get-them-args/LICENSE +21 -0
  257. package/server/whatsapp-rpc/node_modules/get-them-args/README.md +95 -0
  258. package/server/whatsapp-rpc/node_modules/get-them-args/index.js +97 -0
  259. package/server/whatsapp-rpc/node_modules/get-them-args/package.json +36 -0
  260. package/server/whatsapp-rpc/node_modules/human-signals/LICENSE +201 -0
  261. package/server/whatsapp-rpc/node_modules/human-signals/README.md +168 -0
  262. package/server/whatsapp-rpc/node_modules/human-signals/build/src/core.js +273 -0
  263. package/server/whatsapp-rpc/node_modules/human-signals/build/src/main.d.ts +73 -0
  264. package/server/whatsapp-rpc/node_modules/human-signals/build/src/main.js +70 -0
  265. package/server/whatsapp-rpc/node_modules/human-signals/build/src/realtime.js +16 -0
  266. package/server/whatsapp-rpc/node_modules/human-signals/build/src/signals.js +34 -0
  267. package/server/whatsapp-rpc/node_modules/human-signals/package.json +61 -0
  268. package/server/whatsapp-rpc/node_modules/is-stream/index.d.ts +81 -0
  269. package/server/whatsapp-rpc/node_modules/is-stream/index.js +29 -0
  270. package/server/whatsapp-rpc/node_modules/is-stream/license +9 -0
  271. package/server/whatsapp-rpc/node_modules/is-stream/package.json +44 -0
  272. package/server/whatsapp-rpc/node_modules/is-stream/readme.md +60 -0
  273. package/server/whatsapp-rpc/node_modules/isexe/LICENSE +15 -0
  274. package/server/whatsapp-rpc/node_modules/isexe/README.md +51 -0
  275. package/server/whatsapp-rpc/node_modules/isexe/index.js +57 -0
  276. package/server/whatsapp-rpc/node_modules/isexe/mode.js +41 -0
  277. package/server/whatsapp-rpc/node_modules/isexe/package.json +31 -0
  278. package/server/whatsapp-rpc/node_modules/isexe/test/basic.js +221 -0
  279. package/server/whatsapp-rpc/node_modules/isexe/windows.js +42 -0
  280. package/server/whatsapp-rpc/node_modules/kill-port/.editorconfig +12 -0
  281. package/server/whatsapp-rpc/node_modules/kill-port/.gitattributes +1 -0
  282. package/server/whatsapp-rpc/node_modules/kill-port/LICENSE +21 -0
  283. package/server/whatsapp-rpc/node_modules/kill-port/README.md +140 -0
  284. package/server/whatsapp-rpc/node_modules/kill-port/cli.js +25 -0
  285. package/server/whatsapp-rpc/node_modules/kill-port/example.js +21 -0
  286. package/server/whatsapp-rpc/node_modules/kill-port/index.js +46 -0
  287. package/server/whatsapp-rpc/node_modules/kill-port/logo.png +0 -0
  288. package/server/whatsapp-rpc/node_modules/kill-port/package.json +41 -0
  289. package/server/whatsapp-rpc/node_modules/kill-port/pnpm-lock.yaml +4606 -0
  290. package/server/whatsapp-rpc/node_modules/kill-port/test.js +16 -0
  291. package/server/whatsapp-rpc/node_modules/merge-stream/LICENSE +21 -0
  292. package/server/whatsapp-rpc/node_modules/merge-stream/README.md +78 -0
  293. package/server/whatsapp-rpc/node_modules/merge-stream/index.js +41 -0
  294. package/server/whatsapp-rpc/node_modules/merge-stream/package.json +19 -0
  295. package/server/whatsapp-rpc/node_modules/mimic-fn/index.d.ts +52 -0
  296. package/server/whatsapp-rpc/node_modules/mimic-fn/index.js +71 -0
  297. package/server/whatsapp-rpc/node_modules/mimic-fn/license +9 -0
  298. package/server/whatsapp-rpc/node_modules/mimic-fn/package.json +45 -0
  299. package/server/whatsapp-rpc/node_modules/mimic-fn/readme.md +90 -0
  300. package/server/whatsapp-rpc/node_modules/npm-run-path/index.d.ts +90 -0
  301. package/server/whatsapp-rpc/node_modules/npm-run-path/index.js +52 -0
  302. package/server/whatsapp-rpc/node_modules/npm-run-path/license +9 -0
  303. package/server/whatsapp-rpc/node_modules/npm-run-path/node_modules/path-key/index.d.ts +31 -0
  304. package/server/whatsapp-rpc/node_modules/npm-run-path/node_modules/path-key/index.js +12 -0
  305. package/server/whatsapp-rpc/node_modules/npm-run-path/node_modules/path-key/license +9 -0
  306. package/server/whatsapp-rpc/node_modules/npm-run-path/node_modules/path-key/package.json +41 -0
  307. package/server/whatsapp-rpc/node_modules/npm-run-path/node_modules/path-key/readme.md +57 -0
  308. package/server/whatsapp-rpc/node_modules/npm-run-path/package.json +49 -0
  309. package/server/whatsapp-rpc/node_modules/npm-run-path/readme.md +104 -0
  310. package/server/whatsapp-rpc/node_modules/onetime/index.d.ts +59 -0
  311. package/server/whatsapp-rpc/node_modules/onetime/index.js +41 -0
  312. package/server/whatsapp-rpc/node_modules/onetime/license +9 -0
  313. package/server/whatsapp-rpc/node_modules/onetime/package.json +45 -0
  314. package/server/whatsapp-rpc/node_modules/onetime/readme.md +94 -0
  315. package/server/whatsapp-rpc/node_modules/path-key/index.d.ts +40 -0
  316. package/server/whatsapp-rpc/node_modules/path-key/index.js +16 -0
  317. package/server/whatsapp-rpc/node_modules/path-key/license +9 -0
  318. package/server/whatsapp-rpc/node_modules/path-key/package.json +39 -0
  319. package/server/whatsapp-rpc/node_modules/path-key/readme.md +61 -0
  320. package/server/whatsapp-rpc/node_modules/shebang-command/index.js +19 -0
  321. package/server/whatsapp-rpc/node_modules/shebang-command/license +9 -0
  322. package/server/whatsapp-rpc/node_modules/shebang-command/package.json +34 -0
  323. package/server/whatsapp-rpc/node_modules/shebang-command/readme.md +34 -0
  324. package/server/whatsapp-rpc/node_modules/shebang-regex/index.d.ts +22 -0
  325. package/server/whatsapp-rpc/node_modules/shebang-regex/index.js +2 -0
  326. package/server/whatsapp-rpc/node_modules/shebang-regex/license +9 -0
  327. package/server/whatsapp-rpc/node_modules/shebang-regex/package.json +35 -0
  328. package/server/whatsapp-rpc/node_modules/shebang-regex/readme.md +33 -0
  329. package/server/whatsapp-rpc/node_modules/shell-exec/LICENSE +21 -0
  330. package/server/whatsapp-rpc/node_modules/shell-exec/README.md +60 -0
  331. package/server/whatsapp-rpc/node_modules/shell-exec/index.js +47 -0
  332. package/server/whatsapp-rpc/node_modules/shell-exec/package.json +29 -0
  333. package/server/whatsapp-rpc/node_modules/signal-exit/LICENSE.txt +16 -0
  334. package/server/whatsapp-rpc/node_modules/signal-exit/README.md +74 -0
  335. package/server/whatsapp-rpc/node_modules/signal-exit/dist/cjs/browser.d.ts +12 -0
  336. package/server/whatsapp-rpc/node_modules/signal-exit/dist/cjs/browser.d.ts.map +1 -0
  337. package/server/whatsapp-rpc/node_modules/signal-exit/dist/cjs/browser.js +10 -0
  338. package/server/whatsapp-rpc/node_modules/signal-exit/dist/cjs/browser.js.map +1 -0
  339. package/server/whatsapp-rpc/node_modules/signal-exit/dist/cjs/index.d.ts +48 -0
  340. package/server/whatsapp-rpc/node_modules/signal-exit/dist/cjs/index.d.ts.map +1 -0
  341. package/server/whatsapp-rpc/node_modules/signal-exit/dist/cjs/index.js +279 -0
  342. package/server/whatsapp-rpc/node_modules/signal-exit/dist/cjs/index.js.map +1 -0
  343. package/server/whatsapp-rpc/node_modules/signal-exit/dist/cjs/package.json +3 -0
  344. package/server/whatsapp-rpc/node_modules/signal-exit/dist/cjs/signals.d.ts +29 -0
  345. package/server/whatsapp-rpc/node_modules/signal-exit/dist/cjs/signals.d.ts.map +1 -0
  346. package/server/whatsapp-rpc/node_modules/signal-exit/dist/cjs/signals.js +42 -0
  347. package/server/whatsapp-rpc/node_modules/signal-exit/dist/cjs/signals.js.map +1 -0
  348. package/server/whatsapp-rpc/node_modules/signal-exit/dist/mjs/browser.d.ts +12 -0
  349. package/server/whatsapp-rpc/node_modules/signal-exit/dist/mjs/browser.d.ts.map +1 -0
  350. package/server/whatsapp-rpc/node_modules/signal-exit/dist/mjs/browser.js +4 -0
  351. package/server/whatsapp-rpc/node_modules/signal-exit/dist/mjs/browser.js.map +1 -0
  352. package/server/whatsapp-rpc/node_modules/signal-exit/dist/mjs/index.d.ts +48 -0
  353. package/server/whatsapp-rpc/node_modules/signal-exit/dist/mjs/index.d.ts.map +1 -0
  354. package/server/whatsapp-rpc/node_modules/signal-exit/dist/mjs/index.js +275 -0
  355. package/server/whatsapp-rpc/node_modules/signal-exit/dist/mjs/index.js.map +1 -0
  356. package/server/whatsapp-rpc/node_modules/signal-exit/dist/mjs/package.json +3 -0
  357. package/server/whatsapp-rpc/node_modules/signal-exit/dist/mjs/signals.d.ts +29 -0
  358. package/server/whatsapp-rpc/node_modules/signal-exit/dist/mjs/signals.d.ts.map +1 -0
  359. package/server/whatsapp-rpc/node_modules/signal-exit/dist/mjs/signals.js +39 -0
  360. package/server/whatsapp-rpc/node_modules/signal-exit/dist/mjs/signals.js.map +1 -0
  361. package/server/whatsapp-rpc/node_modules/signal-exit/package.json +106 -0
  362. package/server/whatsapp-rpc/node_modules/strip-final-newline/index.js +14 -0
  363. package/server/whatsapp-rpc/node_modules/strip-final-newline/license +9 -0
  364. package/server/whatsapp-rpc/node_modules/strip-final-newline/package.json +43 -0
  365. package/server/whatsapp-rpc/node_modules/strip-final-newline/readme.md +35 -0
  366. package/server/whatsapp-rpc/node_modules/which/CHANGELOG.md +166 -0
  367. package/server/whatsapp-rpc/node_modules/which/LICENSE +15 -0
  368. package/server/whatsapp-rpc/node_modules/which/README.md +54 -0
  369. package/server/whatsapp-rpc/node_modules/which/bin/node-which +52 -0
  370. package/server/whatsapp-rpc/node_modules/which/package.json +43 -0
  371. package/server/whatsapp-rpc/node_modules/which/which.js +125 -0
  372. package/server/whatsapp-rpc/package-lock.json +272 -0
  373. package/server/whatsapp-rpc/package.json +30 -30
  374. package/server/whatsapp-rpc/schema.json +1294 -1294
  375. package/server/whatsapp-rpc/scripts/clean.cjs +66 -66
  376. package/server/whatsapp-rpc/scripts/cli.js +162 -162
  377. package/server/whatsapp-rpc/src/go/whatsapp/history.go +166 -166
  378. package/server/whatsapp-rpc/src/python/pyproject.toml +15 -15
  379. package/server/whatsapp-rpc/src/python/whatsapp_rpc/__init__.py +4 -4
  380. package/server/whatsapp-rpc/src/python/whatsapp_rpc/client.py +427 -427
  381. package/server/whatsapp-rpc/web/app.py +609 -609
  382. package/server/whatsapp-rpc/web/requirements.txt +6 -6
  383. package/server/whatsapp-rpc/web/rpc_client.py +427 -427
  384. package/server/whatsapp-rpc/web/static/openapi.yaml +59 -59
  385. package/server/whatsapp-rpc/web/templates/base.html +149 -149
  386. package/server/whatsapp-rpc/web/templates/contacts.html +240 -240
  387. package/server/whatsapp-rpc/web/templates/dashboard.html +319 -319
  388. package/server/whatsapp-rpc/web/templates/groups.html +328 -328
  389. package/server/whatsapp-rpc/web/templates/messages.html +465 -465
  390. package/server/whatsapp-rpc/web/templates/messaging.html +680 -680
  391. package/server/whatsapp-rpc/web/templates/send.html +258 -258
  392. package/server/whatsapp-rpc/web/templates/settings.html +459 -459
  393. package/client/src/components/ui/AndroidSettingsPanel.tsx +0 -401
  394. package/client/src/components/ui/WhatsAppSettingsPanel.tsx +0 -345
  395. package/client/src/nodeDefinitions/androidDeviceNodes.ts +0 -140
  396. package/docker-compose.prod.yml +0 -107
  397. package/docker-compose.yml +0 -104
  398. package/docs-MachinaOs/README.md +0 -85
  399. package/docs-MachinaOs/deployment/docker.mdx +0 -228
  400. package/docs-MachinaOs/deployment/production.mdx +0 -345
  401. package/docs-MachinaOs/docs.json +0 -75
  402. package/docs-MachinaOs/faq.mdx +0 -309
  403. package/docs-MachinaOs/favicon.svg +0 -5
  404. package/docs-MachinaOs/installation.mdx +0 -160
  405. package/docs-MachinaOs/introduction.mdx +0 -114
  406. package/docs-MachinaOs/logo/dark.svg +0 -6
  407. package/docs-MachinaOs/logo/light.svg +0 -6
  408. package/docs-MachinaOs/nodes/ai-agent.mdx +0 -216
  409. package/docs-MachinaOs/nodes/ai-models.mdx +0 -240
  410. package/docs-MachinaOs/nodes/android.mdx +0 -411
  411. package/docs-MachinaOs/nodes/overview.mdx +0 -181
  412. package/docs-MachinaOs/nodes/schedulers.mdx +0 -316
  413. package/docs-MachinaOs/nodes/webhooks.mdx +0 -330
  414. package/docs-MachinaOs/nodes/whatsapp.mdx +0 -305
  415. package/docs-MachinaOs/quickstart.mdx +0 -119
  416. package/docs-MachinaOs/tutorials/ai-agent-workflow.mdx +0 -177
  417. package/docs-MachinaOs/tutorials/android-automation.mdx +0 -242
  418. package/docs-MachinaOs/tutorials/first-workflow.mdx +0 -134
  419. package/docs-MachinaOs/tutorials/whatsapp-automation.mdx +0 -185
  420. package/nul +0 -0
  421. package/scripts/check-ports.ps1 +0 -33
  422. package/scripts/kill-port.ps1 +0 -154
@@ -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
+