machinaos 0.0.76 → 0.0.78

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 (393) hide show
  1. package/README.md +143 -107
  2. package/client/dist/assets/ActionBar-Du2MSFSz.js +1 -0
  3. package/client/dist/assets/ApiKeyInput-k2LBmBjb.js +1 -0
  4. package/client/dist/assets/ApiKeyPanel-C_bV9U0X.js +1 -0
  5. package/client/dist/assets/ApiUsageSection-CmVfwZzL.js +1 -0
  6. package/client/dist/assets/EmailPanel-CeKIMGu-.js +1 -0
  7. package/client/dist/assets/OAuthPanel-KA3t3Q2K.js +1 -0
  8. package/client/dist/assets/QrPairingPanel-NgNpJNuk.js +1 -0
  9. package/client/dist/assets/RateLimitSection-Du5YNVIA.js +1 -0
  10. package/client/dist/assets/StatusCard-DNLyayXc.js +1 -0
  11. package/client/dist/assets/index-DQ0nwhec.js +257 -0
  12. package/client/dist/assets/index-DxmbVskS.css +1 -0
  13. package/client/dist/assets/vendor-flow-CZmBvHRo.js +1 -0
  14. package/client/dist/assets/vendor-icons-CVrPjN2Q.js +22 -0
  15. package/client/dist/assets/vendor-markdown-CRou3yQ5.js +62 -0
  16. package/client/dist/assets/vendor-misc-C4VxKHs5.js +1 -0
  17. package/client/dist/assets/vendor-query-SzWcOU0G.js +1 -0
  18. package/client/dist/assets/vendor-radix-Dnos29jG.js +56 -0
  19. package/client/dist/assets/vendor-react-DvWIbVx0.js +1 -0
  20. package/client/dist/index.html +37 -3
  21. package/client/index.html +28 -1
  22. package/client/package.json +44 -40
  23. package/client/src/App.tsx +2 -0
  24. package/client/src/Dashboard.tsx +157 -45
  25. package/client/src/ParameterPanel.tsx +3 -5
  26. package/client/src/adapters/nodeSpecToDescription.ts +1 -0
  27. package/client/src/assets/icons/NodeIcon.tsx +32 -0
  28. package/client/src/assets/icons/index.ts +4 -0
  29. package/client/src/assets/icons/stripe.svg +1 -0
  30. package/client/src/assets/icons/themedGlyphs.ts +404 -0
  31. package/client/src/components/AIAgentNode.tsx +77 -53
  32. package/client/src/components/GenericNode.tsx +34 -52
  33. package/client/src/components/OutputPanel.tsx +64 -147
  34. package/client/src/components/ParameterRenderer.tsx +5 -3
  35. package/client/src/components/SkillEditorModal.tsx +9 -18
  36. package/client/src/components/SquareNode.tsx +97 -115
  37. package/client/src/components/StartNode.tsx +32 -42
  38. package/client/src/components/SvgFilterDefs.tsx +54 -0
  39. package/client/src/components/TeamMonitorNode.tsx +12 -14
  40. package/client/src/components/ToolkitNode.tsx +35 -60
  41. package/client/src/components/TriggerNode.tsx +43 -77
  42. package/client/src/components/__tests__/CredentialsModal.test.tsx +49 -45
  43. package/client/src/components/credentials/CredentialsModal.tsx +98 -30
  44. package/client/src/components/credentials/CredentialsPalette.tsx +73 -5
  45. package/client/src/components/credentials/catalogueAdapter.ts +17 -1
  46. package/client/src/components/credentials/panels/ApiKeyPanel.tsx +102 -37
  47. package/client/src/components/credentials/panels/EmailPanel.tsx +7 -19
  48. package/client/src/components/credentials/panels/OAuthPanel.tsx +5 -1
  49. package/client/src/components/credentials/panels/QrPairingPanel.tsx +1 -3
  50. package/client/src/components/credentials/primitives/ActionBar.tsx +7 -11
  51. package/client/src/components/credentials/primitives/OAuthConnect.tsx +19 -28
  52. package/client/src/components/credentials/sections/ProviderDefaultsSection.tsx +24 -3
  53. package/client/src/components/credentials/types.ts +12 -2
  54. package/client/src/components/credentials/useCredentialPanel.ts +43 -19
  55. package/client/src/components/icons/AIProviderIcons.tsx +16 -0
  56. package/client/src/components/onboarding/OnboardingWizard.tsx +23 -63
  57. package/client/src/components/onboarding/nodeRoleClasses.ts +23 -0
  58. package/client/src/components/onboarding/steps/CanvasStep.tsx +15 -21
  59. package/client/src/components/onboarding/steps/ConceptsStep.tsx +2 -11
  60. package/client/src/components/onboarding/steps/GetStartedStep.tsx +2 -10
  61. package/client/src/components/parameterPanel/InputSection.tsx +9 -7
  62. package/client/src/components/parameterPanel/MasterSkillEditor.tsx +84 -198
  63. package/client/src/components/parameterPanel/MiddleSection.tsx +57 -80
  64. package/client/src/components/parameterPanel/ToolSchemaEditor.tsx +31 -25
  65. package/client/src/components/parameterPanel/__tests__/InputSection.test.tsx +7 -2
  66. package/client/src/components/ui/AIResultModal.tsx +1 -1
  67. package/client/src/components/ui/CollapsibleSection.tsx +9 -5
  68. package/client/src/components/ui/CommandPalette.tsx +147 -0
  69. package/client/src/components/ui/CommandPaletteHost.tsx +189 -0
  70. package/client/src/components/ui/ComponentItem.tsx +13 -7
  71. package/client/src/components/ui/ComponentPalette.tsx +24 -13
  72. package/client/src/components/ui/ConsolePanel.tsx +19 -11
  73. package/client/src/components/ui/DropCap.tsx +28 -0
  74. package/client/src/components/ui/EditableNodeLabel.tsx +10 -2
  75. package/client/src/components/ui/InputNodesPanel.tsx +1 -1
  76. package/client/src/components/ui/Modal.tsx +38 -6
  77. package/client/src/components/ui/OutputDisplayPanel.tsx +1 -1
  78. package/client/src/components/ui/SettingsPanel.tsx +42 -13
  79. package/client/src/components/ui/StatusBar.tsx +108 -0
  80. package/client/src/components/ui/ThemeSwitcher.tsx +109 -0
  81. package/client/src/components/ui/TopToolbar.tsx +42 -25
  82. package/client/src/components/ui/WorkflowSidebar.tsx +32 -16
  83. package/client/src/components/ui/action-button.tsx +40 -15
  84. package/client/src/components/ui/button.tsx +24 -1
  85. package/client/src/components/ui/dropdown-menu.tsx +24 -2
  86. package/client/src/components/ui/input.tsx +19 -2
  87. package/client/src/components/ui/select.tsx +15 -0
  88. package/client/src/components/ui/textarea.tsx +15 -2
  89. package/client/src/contexts/AuthContext.tsx +148 -109
  90. package/client/src/contexts/ThemeContext.tsx +93 -17
  91. package/client/src/contexts/WebSocketContext.tsx +373 -206
  92. package/client/src/contexts/__tests__/AuthContext.test.tsx +221 -0
  93. package/client/src/hooks/__tests__/useDragVariable.test.ts +7 -1
  94. package/client/src/hooks/__tests__/useWorkflowOpsListener.test.ts +142 -0
  95. package/client/src/hooks/useAppTheme.ts +209 -7
  96. package/client/src/hooks/useAutoSkillEdges.ts +7 -2
  97. package/client/src/hooks/useCatalogueQuery.ts +67 -1
  98. package/client/src/hooks/useDragVariable.ts +1 -1
  99. package/client/src/hooks/useNodeAllowlist.ts +115 -8
  100. package/client/src/hooks/useOnboarding.ts +20 -8
  101. package/client/src/hooks/useParameterPanel.ts +2 -1
  102. package/client/src/hooks/useReactFlowNodes.ts +2 -1
  103. package/client/src/hooks/useSound.ts +185 -0
  104. package/client/src/hooks/useWorkflowManagement.ts +6 -8
  105. package/client/src/hooks/useWorkflowOpsListener.ts +90 -0
  106. package/client/src/index.css +65 -3
  107. package/client/src/lib/__tests__/connectionConfig.test.ts +91 -0
  108. package/client/src/lib/aiModelProviders.ts +8 -0
  109. package/client/src/lib/connectionConfig.ts +107 -0
  110. package/client/src/lib/queryPersist.ts +13 -5
  111. package/client/src/lib/sound.ts +393 -0
  112. package/client/src/main.tsx +20 -0
  113. package/client/src/store/useAppStore.ts +26 -0
  114. package/client/src/styles/canvasAnimations.ts +37 -36
  115. package/client/src/styles/theme.ts +36 -20
  116. package/client/src/test/setup.ts +1 -0
  117. package/client/src/themes/atomic.css +253 -0
  118. package/client/src/themes/base.css +373 -0
  119. package/client/src/themes/cyber.css +890 -0
  120. package/client/src/themes/dark.css +70 -0
  121. package/client/src/themes/edo.css +246 -0
  122. package/client/src/themes/greek.css +293 -0
  123. package/client/src/themes/light.css +78 -0
  124. package/client/src/themes/plague.css +253 -0
  125. package/client/src/themes/renaissance.css +727 -0
  126. package/client/src/themes/rot.css +249 -0
  127. package/client/src/themes/steampunk.css +272 -0
  128. package/client/src/themes/surveillance.css +289 -0
  129. package/client/src/themes/wasteland.css +250 -0
  130. package/client/src/types/INodeProperties.ts +5 -0
  131. package/client/src/types/NodeTypes.ts +11 -1
  132. package/client/src/types/__tests__/cloudEvents.test.ts +99 -0
  133. package/client/src/types/cloudEvents.ts +78 -0
  134. package/client/src/vite-env.d.ts +7 -0
  135. package/client/tsconfig.json +1 -1
  136. package/client/vite.config.js +62 -2
  137. package/install.ps1 +1 -1
  138. package/install.sh +1 -1
  139. package/machina/commands/build.py +51 -7
  140. package/machina/pyproject.toml +4 -0
  141. package/machina/supervisor.py +12 -2
  142. package/machina/tree.py +71 -21
  143. package/package.json +4 -4
  144. package/scripts/install.js +16 -1
  145. package/server/config/ai_cli_providers.json +54 -0
  146. package/server/config/credential_providers.json +109 -2
  147. package/server/config/llm_defaults.json +24 -0
  148. package/server/config/model_registry.json +338 -499
  149. package/server/config/node_allowlist.json +16 -1
  150. package/server/config/pricing.json +8 -0
  151. package/server/constants.py +38 -15
  152. package/server/core/container.py +2 -2
  153. package/server/core/credentials_database.py +35 -2
  154. package/server/core/logging.py +4 -3
  155. package/server/main.py +99 -13
  156. package/server/models/node_metadata.py +1 -0
  157. package/server/nodejs/package.json +8 -6
  158. package/server/nodejs/src/index.ts +22 -5
  159. package/server/nodes/README.md +31 -4
  160. package/server/nodes/agent/_inline.py +2 -0
  161. package/server/nodes/agent/_specialized.py +6 -3
  162. package/server/nodes/agent/ai_agent.py +13 -3
  163. package/server/nodes/agent/chat_agent.py +6 -3
  164. package/server/nodes/agent/claude_code_agent.py +287 -75
  165. package/server/nodes/agent/codex_agent.py +239 -0
  166. package/server/nodes/agent/deep_agent.py +3 -3
  167. package/server/nodes/agent/rlm_agent.py +3 -3
  168. package/server/nodes/android/__init__.py +31 -1
  169. package/server/nodes/android/_base.py +9 -5
  170. package/server/{services/android_service.py → nodes/android/_dispatcher.py} +2 -2
  171. package/server/nodes/android/_handlers.py +154 -0
  172. package/server/nodes/android/_option_loaders.py +44 -0
  173. package/server/nodes/android/_refresh.py +127 -0
  174. package/server/{services/android → nodes/android/_relay}/client.py +4 -4
  175. package/server/{routers/android.py → nodes/android/_router.py} +27 -8
  176. package/server/nodes/browser/browser.py +2 -2
  177. package/server/nodes/code/_base.py +6 -2
  178. package/server/nodes/code/_claude_code.py +134 -0
  179. package/server/nodes/document/embedding_generator.py +3 -3
  180. package/server/nodes/document/http_scraper.py +3 -3
  181. package/server/nodes/document/vector_store.py +5 -5
  182. package/server/nodes/email/__init__.py +11 -1
  183. package/server/nodes/email/_filters.py +21 -0
  184. package/server/{services/himalaya_service.py → nodes/email/_himalaya.py} +6 -10
  185. package/server/{services/email_service.py → nodes/email/_service.py} +9 -13
  186. package/server/nodes/email/email_read.py +1 -1
  187. package/server/nodes/email/email_receive.py +54 -5
  188. package/server/nodes/email/email_send.py +1 -1
  189. package/server/nodes/filesystem/shell.py +24 -1
  190. package/server/nodes/google/__init__.py +55 -1
  191. package/server/{services/handlers/google_auth.py → nodes/google/_auth_helper.py} +8 -5
  192. package/server/nodes/google/_base.py +2 -2
  193. package/server/nodes/google/_credentials.py +5 -5
  194. package/server/nodes/google/_filters.py +25 -0
  195. package/server/nodes/google/_handlers.py +57 -0
  196. package/server/{services/google_oauth.py → nodes/google/_oauth.py} +195 -162
  197. package/server/nodes/google/_option_loaders.py +107 -0
  198. package/server/nodes/google/_refresh.py +66 -0
  199. package/server/nodes/google/_router.py +131 -0
  200. package/server/nodes/google/gmail_receive.py +41 -4
  201. package/server/nodes/groups.py +1 -0
  202. package/server/nodes/location/_credentials.py +45 -1
  203. package/server/{services/maps.py → nodes/location/_service.py} +18 -3
  204. package/server/nodes/location/gmaps_create.py +4 -4
  205. package/server/nodes/location/gmaps_locations.py +4 -4
  206. package/server/nodes/location/gmaps_nearby_places.py +4 -4
  207. package/server/nodes/model/_base.py +8 -3
  208. package/server/nodes/model/_credentials.py +96 -8
  209. package/server/nodes/model/_local_validator.py +345 -0
  210. package/server/nodes/model/lmstudio_chat_model.py +23 -0
  211. package/server/nodes/model/ollama_chat_model.py +25 -0
  212. package/server/nodes/proxy/_usage.py +2 -2
  213. package/server/nodes/proxy/proxy_config.py +14 -14
  214. package/server/nodes/proxy/proxy_request.py +4 -4
  215. package/server/nodes/scraper/_credentials.py +29 -1
  216. package/server/nodes/scraper/apify_actor.py +9 -9
  217. package/server/nodes/scraper/crawlee_scraper.py +5 -5
  218. package/server/nodes/search/brave_search.py +4 -0
  219. package/server/nodes/search/perplexity_search.py +9 -0
  220. package/server/nodes/search/serper_search.py +3 -0
  221. package/server/nodes/skill/simple_memory.py +12 -0
  222. package/server/nodes/social/_base.py +2 -2
  223. package/server/nodes/stripe/__init__.py +46 -0
  224. package/server/nodes/stripe/_credentials.py +33 -0
  225. package/server/nodes/stripe/_handlers.py +270 -0
  226. package/server/nodes/stripe/_install.py +127 -0
  227. package/server/nodes/stripe/_source.py +174 -0
  228. package/server/nodes/stripe/stripe_action.py +81 -0
  229. package/server/nodes/stripe/stripe_receive.py +92 -0
  230. package/server/nodes/telegram/_credentials.py +52 -1
  231. package/server/nodes/telegram/_handlers.py +19 -18
  232. package/server/nodes/telegram/_service.py +134 -32
  233. package/server/nodes/telegram/telegram_send.py +5 -6
  234. package/server/nodes/text/file_handler.py +2 -2
  235. package/server/nodes/text/text_generator.py +2 -2
  236. package/server/nodes/tool/agent_builder.py +630 -0
  237. package/server/nodes/tool/task_manager.py +144 -2
  238. package/server/nodes/twitter/__init__.py +38 -1
  239. package/server/nodes/twitter/_base.py +7 -7
  240. package/server/nodes/twitter/_credentials.py +1 -1
  241. package/server/nodes/twitter/_filters.py +37 -0
  242. package/server/nodes/twitter/_handlers.py +77 -0
  243. package/server/nodes/twitter/_oauth.py +124 -0
  244. package/server/nodes/twitter/_refresh.py +78 -0
  245. package/server/nodes/twitter/_router.py +29 -0
  246. package/server/nodes/twitter/twitter_receive.py +4 -0
  247. package/server/nodes/visuals.json +64 -19
  248. package/server/nodes/whatsapp/__init__.py +45 -5
  249. package/server/nodes/whatsapp/_base.py +3 -3
  250. package/server/nodes/whatsapp/_filters.py +137 -0
  251. package/server/nodes/whatsapp/_handlers.py +167 -0
  252. package/server/nodes/whatsapp/_option_loaders.py +68 -0
  253. package/server/nodes/whatsapp/_refresh.py +62 -0
  254. package/server/nodes/whatsapp/_runtime.py +1 -1
  255. package/server/pyproject.toml +29 -7
  256. package/server/routers/schemas.py +2 -2
  257. package/server/routers/webhook.py +26 -9
  258. package/server/routers/websocket.py +149 -810
  259. package/server/services/ai.py +89 -8
  260. package/server/services/auth.py +220 -43
  261. package/server/services/claude_oauth.py +126 -100
  262. package/server/services/cli_agent/__init__.py +78 -0
  263. package/server/services/cli_agent/_handlers.py +237 -0
  264. package/server/services/cli_agent/config.py +112 -0
  265. package/server/services/cli_agent/factory.py +48 -0
  266. package/server/services/cli_agent/lockfile.py +141 -0
  267. package/server/services/cli_agent/mcp_server.py +482 -0
  268. package/server/services/cli_agent/protocol.py +173 -0
  269. package/server/services/cli_agent/providers/__init__.py +9 -0
  270. package/server/services/cli_agent/providers/anthropic_claude.py +419 -0
  271. package/server/services/cli_agent/providers/google_gemini.py +80 -0
  272. package/server/services/cli_agent/providers/openai_codex.py +310 -0
  273. package/server/services/cli_agent/service.py +607 -0
  274. package/server/services/cli_agent/session.py +618 -0
  275. package/server/services/cli_agent/types.py +227 -0
  276. package/server/services/cli_agent/workflow_tools.py +233 -0
  277. package/server/services/credential_registry.py +26 -1
  278. package/server/services/deployment/manager.py +26 -145
  279. package/server/services/deployment/poll_registry.py +59 -0
  280. package/server/services/event_waiter.py +76 -246
  281. package/server/services/events/__init__.py +54 -0
  282. package/server/services/events/cli.py +78 -0
  283. package/server/services/events/daemon.py +163 -0
  284. package/server/services/events/envelope.py +281 -0
  285. package/server/services/events/lifecycle.py +99 -0
  286. package/server/services/events/oauth_lifecycle.py +534 -0
  287. package/server/services/events/polling.py +60 -0
  288. package/server/services/events/push.py +36 -0
  289. package/server/services/events/source.py +63 -0
  290. package/server/services/events/triggers.py +118 -0
  291. package/server/services/events/verifiers/__init__.py +25 -0
  292. package/server/services/events/verifiers/base.py +28 -0
  293. package/server/services/events/verifiers/github.py +25 -0
  294. package/server/services/events/verifiers/hmac_basic.py +32 -0
  295. package/server/services/events/verifiers/standard_webhooks.py +47 -0
  296. package/server/services/events/verifiers/stripe.py +42 -0
  297. package/server/services/events/webhook.py +105 -0
  298. package/server/services/handlers/tools.py +28 -186
  299. package/server/services/llm/config.py +7 -0
  300. package/server/services/llm/factory.py +8 -2
  301. package/server/services/memory/__init__.py +52 -0
  302. package/server/services/memory/jsonl.py +80 -0
  303. package/server/services/memory/markdown.py +65 -0
  304. package/server/services/memory/state.py +112 -0
  305. package/server/services/memory/vector_store.py +40 -0
  306. package/server/services/model_registry.py +76 -0
  307. package/server/services/node_allowlist.py +71 -15
  308. package/server/services/node_executor.py +2 -2
  309. package/server/services/node_output_schemas.py +21 -10
  310. package/server/services/node_spec.py +1 -1
  311. package/server/services/oauth_utils.py +1 -1
  312. package/server/services/plugin/__init__.py +2 -0
  313. package/server/services/plugin/base.py +44 -2
  314. package/server/services/plugin/credential.py +288 -1
  315. package/server/services/plugin/deps.py +105 -0
  316. package/server/services/plugin/edge_walker.py +12 -4
  317. package/server/services/plugin/oauth.py +381 -0
  318. package/server/services/plugin/polling.py +247 -0
  319. package/server/services/plugin/registry.py +145 -0
  320. package/server/services/plugin/singleton.py +65 -0
  321. package/server/services/plugin/ws.py +81 -0
  322. package/server/services/process_service.py +31 -2
  323. package/server/services/status_broadcaster.py +155 -238
  324. package/server/services/temporal/workflow.py +7 -7
  325. package/server/services/workflow.py +21 -3
  326. package/server/services/ws_handler_registry.py +111 -28
  327. package/server/skills/GUIDE.md +16 -1
  328. package/server/skills/assistant/agent-builder-skill/SKILL.md +166 -0
  329. package/server/skills/payments_agent/stripe-skill/SKILL.md +306 -0
  330. package/server/tests/credentials/test_auth_service.py +16 -9
  331. package/server/tests/credentials/test_credential_broadcasts.py +219 -0
  332. package/server/tests/credentials/test_google_oauth.py +6 -6
  333. package/server/tests/credentials/test_oauth_utils.py +1 -1
  334. package/server/tests/credentials/test_twitter_oauth.py +2 -2
  335. package/server/tests/credentials/test_websocket_handlers.py +44 -20
  336. package/server/tests/llm/test_factory.py +1 -0
  337. package/server/tests/llm/test_wiring.py +5 -1
  338. package/server/tests/nodes/_compat.py +24 -24
  339. package/server/tests/nodes/test_agent_builder.py +439 -0
  340. package/server/tests/nodes/test_ai_tools.py +18 -14
  341. package/server/tests/nodes/test_code_fs_process.py +17 -8
  342. package/server/tests/nodes/test_email.py +10 -9
  343. package/server/tests/nodes/test_google_workspace.py +2 -2
  344. package/server/tests/nodes/test_specialized_agents.py +100 -53
  345. package/server/tests/nodes/test_stripe_plugin.py +293 -0
  346. package/server/tests/nodes/test_telegram_social.py +4 -4
  347. package/server/tests/nodes/test_twitter.py +1 -1
  348. package/server/tests/nodes/test_web_automation.py +2 -2
  349. package/server/tests/nodes/test_whatsapp.py +9 -9
  350. package/server/tests/services/cli_agent/__init__.py +0 -0
  351. package/server/tests/services/cli_agent/test_mcp_server.py +432 -0
  352. package/server/tests/services/cli_agent/test_providers.py +358 -0
  353. package/server/tests/services/cli_agent/test_service.py +298 -0
  354. package/server/tests/services/memory/__init__.py +0 -0
  355. package/server/tests/services/memory/test_jsonl.py +188 -0
  356. package/server/tests/services/test_events.py +333 -0
  357. package/server/tests/test_node_spec.py +56 -16
  358. package/server/tests/test_plugin_helpers.py +116 -0
  359. package/server/tests/test_plugin_self_containment.py +486 -0
  360. package/server/tests/test_status_broadcasts.py +425 -0
  361. package/workflows/{AI Assistant_workflow-1777421105154-0m4snkzjf.json → AI Assistant_workflow-1778504793388-ou1m1tz2x.json } +70 -266
  362. package/workflows/{AI Employee_workflow-1777720598005-u4cm858dv.json → AI Employee_example_workflow-1777720598005-u4cm858dv.json } +112 -112
  363. package/workflows/Claude Assistant_workflow-1778380124051-mdibn807c.json +709 -0
  364. package/client/dist/assets/ActionBar-vzPpSR77.js +0 -1
  365. package/client/dist/assets/ApiKeyInput-Ds7AKFe8.js +0 -1
  366. package/client/dist/assets/ApiKeyPanel-gfblELep.js +0 -1
  367. package/client/dist/assets/ApiUsageSection-BMNWTe2r.js +0 -1
  368. package/client/dist/assets/EmailPanel-B1Om64p5.js +0 -1
  369. package/client/dist/assets/OAuthPanel-CXyQYGBz.js +0 -1
  370. package/client/dist/assets/QrPairingPanel-BgNuI1we.js +0 -1
  371. package/client/dist/assets/RateLimitSection-YYK8sx1T.js +0 -1
  372. package/client/dist/assets/StatusCard-DuYA5hJR.js +0 -1
  373. package/client/dist/assets/index-D9tZfgvi.js +0 -363
  374. package/client/dist/assets/index-al7snTkG.css +0 -1
  375. package/client/src/components/credentials/providers.tsx +0 -177
  376. package/server/routers/google.py +0 -277
  377. package/server/routers/maps.py +0 -142
  378. package/server/routers/twitter.py +0 -365
  379. package/server/services/claude_code_service.py +0 -106
  380. package/server/services/memory.py +0 -159
  381. package/server/services/node_option_loaders/__init__.py +0 -77
  382. package/server/services/node_option_loaders/android_loaders.py +0 -55
  383. package/server/services/node_option_loaders/google_loaders.py +0 -97
  384. package/server/services/node_option_loaders/whatsapp_loaders.py +0 -69
  385. package/server/services/twitter_oauth.py +0 -411
  386. package/server/services/websocket_client.py +0 -29
  387. /package/server/{services/android → nodes/android/_relay}/__init__.py +0 -0
  388. /package/server/{services/android → nodes/android/_relay}/broadcaster.py +0 -0
  389. /package/server/{services/android → nodes/android/_relay}/manager.py +0 -0
  390. /package/server/{services/android → nodes/android/_relay}/protocol.py +0 -0
  391. /package/server/{services/browser_service.py → nodes/browser/_service.py} +0 -0
  392. /package/server/{services/whatsapp_service.py → nodes/whatsapp/_service.py} +0 -0
  393. /package/server/skills/{task_agent → assistant}/write-todos-skill/SKILL.md +0 -0
@@ -0,0 +1,373 @@
1
+ /* ============================================================================
2
+ * themes/base.css — neutral defaults shared by every theme.
3
+ *
4
+ * These are scoped to :root (no data-theme selector) so they apply as
5
+ * fallbacks when a theme block omits the variable. Per-theme blocks
6
+ * always win via specificity (`:root[data-theme="..."]` beats `:root`).
7
+ *
8
+ * Source: design_handoff_machinaos_themes/themes/base.css.
9
+ * ============================================================================ */
10
+
11
+ :root {
12
+ /* Space scale (4 / 8 / 12 / 16 / 24 / 32 / 48 / 64) */
13
+ --space-1: 4px;
14
+ --space-2: 8px;
15
+ --space-3: 12px;
16
+ --space-4: 16px;
17
+ --space-5: 24px;
18
+ --space-6: 32px;
19
+ --space-7: 48px;
20
+ --space-8: 64px;
21
+
22
+ /* New-contract radii — exposed as Tailwind tokens via index.css.
23
+ * Co-exist with shadcn `--radius` (still used by existing primitives). */
24
+ --radius-pill: 999px;
25
+
26
+ /* Motion */
27
+ --dur-fast: 90ms;
28
+ --dur-default: 180ms;
29
+ --dur-slow: 320ms;
30
+ --ease-default: cubic-bezier(0.2, 0.7, 0.3, 1);
31
+ --ease-emphasis: cubic-bezier(0.6, -0.05, 0.3, 1.4);
32
+ --motion-style: smooth;
33
+
34
+ /* Sound (read by JS in a future phase) */
35
+ --sound-pack: none;
36
+
37
+ /* Type case toggle — themes flip between `none` / `uppercase` / `capitalize`. */
38
+ --type-uppercase: none;
39
+ --type-tracking-display: 0;
40
+ --type-scale-base: 14px;
41
+
42
+ /* Cursor + scrollbar */
43
+ --cursor-default: auto;
44
+ --cursor-pointer: pointer;
45
+
46
+ /* Canvas-host background pattern slot — themes override with a CSS
47
+ * gradient or SVG data-url. Default: no pattern. */
48
+ --canvas-grid: none;
49
+ --canvas-grid-opacity: 0.4;
50
+
51
+ /* Node execution pulse colour (Wave 30). Independent of `--node-color`
52
+ * (the plugin accent) so the executing-node glow stays high-contrast
53
+ * against the canvas background regardless of which plugin is running.
54
+ * Each theme overrides this to its most visible accent (Cyber neon
55
+ * cyan, Renaissance gold, Surveillance REC red, etc.). The default
56
+ * `hsl(var(--info))` resolves to a theme-tinted blue under shadcn. */
57
+ --node-pulse-color: hsl(var(--info));
58
+ }
59
+
60
+ /* ============================================================================
61
+ * Reduced-motion override — respects the user's OS-level
62
+ * `prefers-reduced-motion: reduce` setting (DevTools rendering panel
63
+ * also surfaces this).
64
+ *
65
+ * Targets every theme's per-component animation: cyber-flicker /
66
+ * cyber-roll / cyber-blink / cyber-glitch (Cyber), surv-blink
67
+ * (Surveillance), ren-flicker (Renaissance), plus any `transition`
68
+ * on canvas-host pseudo-elements that synthesise motion.
69
+ *
70
+ * Sounds are not motion — left enabled regardless. Settings → Audio
71
+ * → Sound effects is the user-facing audio toggle.
72
+ * ============================================================================ */
73
+
74
+ /* ============================================================================
75
+ * Wave 33: pause every CSS animation when the tab is hidden.
76
+ *
77
+ * Browsers continue advancing CSS keyframe timing on background tabs (RAF
78
+ * is throttled to ~1Hz but `animation` keyframes still accumulate paused
79
+ * frames in the compositor queue). When the tab becomes visible, all
80
+ * paused frames flush at once — with W30's three-layer box-shadow
81
+ * `node-pulse` (peak `0 0 56px 16px color-mix(...)` × 3 layers) running
82
+ * on every executing node, plus Cyber theme's full-viewport
83
+ * `cyber-flicker` (5s opacity) + `cyber-roll` (8s viewport-height
84
+ * translateY), the GPU compositor stalls for 100-200ms. During the stall
85
+ * input events queue but don't dispatch — first click on tab return
86
+ * appears unresponsive.
87
+ *
88
+ * The Dashboard mounts a small `visibilitychange` listener that toggles
89
+ * this attribute on `<html>`. Setting `animation-play-state: paused`
90
+ * flushes the keyframe queue so resume has nothing to catch up on. The
91
+ * dashboard defers the unpause via `requestAnimationFrame` so input
92
+ * dispatch happens before composite.
93
+ * ============================================================================ */
94
+
95
+ html[data-page-hidden] *,
96
+ html[data-page-hidden] *::before,
97
+ html[data-page-hidden] *::after {
98
+ animation-play-state: paused !important;
99
+ }
100
+
101
+ @media (prefers-reduced-motion: reduce) {
102
+ /* Cyber */
103
+ :root[data-theme="cyber"] .app-frame,
104
+ :root[data-theme="cyber"] .app-frame::before,
105
+ :root[data-theme="cyber"] .app-frame::after,
106
+ :root[data-theme="cyber"] .canvas::after,
107
+ :root[data-theme="cyber"] .canvas-host::after,
108
+ :root[data-theme="cyber"] .node::before,
109
+ :root[data-theme="cyber"] .sq-node.selected .sq-node-box,
110
+ :root[data-theme="cyber"] .row:hover::after,
111
+ :root[data-theme="cyber"] .statusbar .pip,
112
+ :root[data-theme="cyber"] .cmdk-item.active::after,
113
+ :root[data-theme="cyber"] .v-display:hover,
114
+ /* Surveillance */
115
+ :root[data-theme="surveillance"] .sq-node-box::before,
116
+ :root[data-theme="surveillance"] .statusbar .pip,
117
+ /* Renaissance */
118
+ :root[data-theme="renaissance"] .canvas .ornament,
119
+ /* Generic Tailwind animate-pulse used by node execution pip */
120
+ .animate-pulse,
121
+ /* Wave 21 default node pulse */
122
+ .react-flow__node.executing .node {
123
+ animation: none !important;
124
+ transition: none !important;
125
+ }
126
+ }
127
+
128
+ /* ============================================================================
129
+ * Default canvas-node visuals (Wave 21).
130
+ *
131
+ * Each node component sets `--node-color` inline from its plugin's
132
+ * accent hex (visuals.json). These rules consume that custom property
133
+ * to draw a sensible default border / gradient / shadow so light, dark,
134
+ * and any theme that doesn't define its own `.node` rule still renders
135
+ * correctly. Per-theme CSS in client/src/themes/<theme>.css overrides
136
+ * these with material-specific decorations (vellum, neon, marble, etc.).
137
+ * ============================================================================ */
138
+
139
+ .node {
140
+ position: relative;
141
+ border-radius: 12px;
142
+ border: 2px solid color-mix(in srgb, var(--node-color, hsl(var(--border))) 60%, transparent);
143
+ background:
144
+ linear-gradient(
145
+ 135deg,
146
+ color-mix(in srgb, var(--node-color, hsl(var(--card))) 14%, hsl(var(--card))) 0%,
147
+ hsl(var(--card)) 100%
148
+ );
149
+ box-shadow: 0 2px 8px color-mix(in srgb, var(--node-color, #000) 18%, transparent);
150
+ transition:
151
+ transform 0.15s ease,
152
+ border-color 0.15s ease,
153
+ box-shadow 0.15s ease;
154
+ }
155
+
156
+ .node:hover {
157
+ transform: translateY(-1px);
158
+ box-shadow: 0 4px 14px color-mix(in srgb, var(--node-color, #000) 28%, transparent);
159
+ }
160
+
161
+ .node.selected {
162
+ border-color: var(--node-color, hsl(var(--ring)));
163
+ box-shadow:
164
+ 0 0 0 1px var(--node-color, hsl(var(--ring))),
165
+ 0 4px 14px color-mix(in srgb, var(--node-color, #000) 32%, transparent);
166
+ }
167
+
168
+ /* Pulse during execution — react-flow toggles `.executing` on the wrapper
169
+ via canvasAnimations.ts (`.react-flow__node.executing`). The keyframe
170
+ uses --node-pulse-color (theme-controlled high-contrast accent) NOT
171
+ --node-color (plugin accent), so the glow stays visible against any
172
+ theme background — Cyber's near-black, Renaissance's vellum,
173
+ Surveillance's grey, etc. */
174
+ .react-flow__node.executing .node {
175
+ animation: node-pulse 1.4s ease-in-out infinite;
176
+ }
177
+
178
+ /* Three-layer pulse for high-visibility executing-node glow:
179
+ * 1. inner solid ring — definitive "this node is live" signal
180
+ * 2. mid soft halo — bleeds outside the node bounds
181
+ * 3. outer atmospheric halo — readable at distant canvas zoom
182
+ *
183
+ * Total reach at peak: ~52px outside the node box (12px ring +
184
+ * 40px outer halo). Peak intensity tuned so the glow doesn't
185
+ * appear blown-out or wash the surrounding canvas — the outer
186
+ * halo is 25% opacity, the ring is 45%. */
187
+ @keyframes node-pulse {
188
+ 0%,
189
+ 100% {
190
+ box-shadow:
191
+ 0 0 0 0 color-mix(in srgb, var(--node-pulse-color) 80%, transparent),
192
+ 0 0 14px 2px color-mix(in srgb, var(--node-pulse-color) 50%, transparent),
193
+ 0 0 28px 4px color-mix(in srgb, var(--node-pulse-color) 25%, transparent);
194
+ }
195
+ 50% {
196
+ box-shadow:
197
+ 0 0 0 12px color-mix(in srgb, var(--node-pulse-color) 45%, transparent),
198
+ 0 0 32px 8px color-mix(in srgb, var(--node-pulse-color) 65%, transparent),
199
+ 0 0 56px 16px color-mix(in srgb, var(--node-pulse-color) 30%, transparent);
200
+ }
201
+ }
202
+
203
+ /* Square-node default visuals — outer wrapper is layout-only, the inner
204
+ `.sq-node-box` carries the bordered icon-square. Per-theme CSS
205
+ already in `client/src/themes/*.css` overrides these for material
206
+ identity. */
207
+ .sq-node {
208
+ position: relative;
209
+ }
210
+
211
+ .sq-node-box {
212
+ border-radius: 10px;
213
+ border: 2px solid color-mix(in srgb, var(--node-color, hsl(var(--border))) 60%, transparent);
214
+ background:
215
+ linear-gradient(
216
+ 135deg,
217
+ color-mix(in srgb, var(--node-color, hsl(var(--card))) 18%, hsl(var(--card))) 0%,
218
+ hsl(var(--card)) 100%
219
+ );
220
+ box-shadow: 0 2px 8px color-mix(in srgb, var(--node-color, #000) 18%, transparent);
221
+ transition:
222
+ transform 0.15s ease,
223
+ border-color 0.15s ease,
224
+ box-shadow 0.15s ease;
225
+ }
226
+
227
+ .sq-node-box:hover {
228
+ transform: translateY(-1px);
229
+ box-shadow: 0 4px 14px color-mix(in srgb, var(--node-color, #000) 28%, transparent);
230
+ }
231
+
232
+ .sq-node.selected .sq-node-box {
233
+ border-color: var(--node-color, hsl(var(--ring)));
234
+ box-shadow:
235
+ 0 0 0 1px var(--node-color, hsl(var(--ring))),
236
+ 0 4px 14px color-mix(in srgb, var(--node-color, #000) 32%, transparent);
237
+ }
238
+
239
+ .react-flow__node.executing .sq-node-box,
240
+ .sq-node[data-executing] .sq-node-box {
241
+ animation: node-pulse 1.5s ease-in-out infinite;
242
+ }
243
+
244
+ /* ============================================================================
245
+ * Canvas-host background pattern + cursor (Wave 24).
246
+ *
247
+ * Themes provide per-theme decorative backgrounds via the `--canvas-grid`
248
+ * custom property (CSS gradient or SVG data-url) and per-theme cursors
249
+ * via `--cursor-default`. Both fall back to neutral defaults from `:root`.
250
+ *
251
+ * The pattern is layered on top of React Flow's own background — themes
252
+ * keep their canvas surface colour via shadcn `--background` tokens and
253
+ * this rule adds the decorative grid on top.
254
+ * ============================================================================ */
255
+
256
+ .canvas-host {
257
+ background-image: var(--canvas-grid, none);
258
+ cursor: var(--cursor-default, auto);
259
+ }
260
+
261
+ /* ============================================================================
262
+ * Default canvas-node inner-element visuals (Wave 26).
263
+ *
264
+ * Status pips, gear buttons, handles, and labels — defaults that fire
265
+ * across all themes that don't override. Status pips are driven by
266
+ * `data-status` set inline by the React component; CSS picks the colour
267
+ * from shadcn semantic tokens. Per-theme CSS in client/src/themes/<theme>.css
268
+ * overrides these for material-specific identity.
269
+ * ============================================================================ */
270
+
271
+ /* Status pip — square-node and rectangular-node variants */
272
+ .sq-node-pip,
273
+ .node-pip {
274
+ background: hsl(var(--muted-foreground));
275
+ }
276
+
277
+ .sq-node-pip[data-status="idle"],
278
+ .node-pip[data-status="idle"] {
279
+ background: hsl(var(--muted-foreground));
280
+ }
281
+
282
+ .sq-node-pip[data-status="executing"],
283
+ .sq-node-pip[data-status="waiting"],
284
+ .node-pip[data-status="executing"],
285
+ .node-pip[data-status="waiting"] {
286
+ background: var(--node-color, hsl(var(--info)));
287
+ box-shadow: 0 0 6px color-mix(in srgb, var(--node-color, hsl(var(--info))) 60%, transparent);
288
+ }
289
+
290
+ .sq-node-pip[data-status="success"],
291
+ .node-pip[data-status="success"] {
292
+ background: hsl(var(--success));
293
+ }
294
+
295
+ .sq-node-pip[data-status="error"],
296
+ .node-pip[data-status="error"] {
297
+ background: hsl(var(--destructive));
298
+ }
299
+
300
+ /* Gear button defaults */
301
+ .sq-node-gear,
302
+ .node-gear {
303
+ background: hsl(var(--card));
304
+ border: 1px solid hsl(var(--border));
305
+ color: hsl(var(--muted-foreground));
306
+ transition: background-color 0.15s ease, border-color 0.15s ease;
307
+ }
308
+
309
+ .sq-node-gear:hover,
310
+ .node-gear:hover {
311
+ background: hsl(var(--accent));
312
+ border-color: hsl(var(--accent-foreground) / 0.2);
313
+ }
314
+
315
+ /* Handle defaults */
316
+ .sq-node-handle,
317
+ .node-handle {
318
+ background: hsl(var(--background));
319
+ border: 2px solid hsl(var(--muted-foreground));
320
+ transition: background-color 0.15s ease, border-color 0.15s ease;
321
+ }
322
+
323
+ .sq-node-handle.out,
324
+ .node-handle.out {
325
+ background: var(--node-color, hsl(var(--primary)));
326
+ border-color: var(--node-color, hsl(var(--primary)));
327
+ }
328
+
329
+ .sq-node-handle.in,
330
+ .node-handle.in {
331
+ background: hsl(var(--background));
332
+ border-color: hsl(var(--muted-foreground));
333
+ }
334
+
335
+ /* Label defaults — picks up display typography from theme */
336
+ .sq-node-label,
337
+ .node-label {
338
+ font-family: var(--font-display, var(--font-body));
339
+ letter-spacing: var(--type-tracking-display, 0);
340
+ text-transform: var(--type-uppercase, none);
341
+ color: hsl(var(--foreground));
342
+ }
343
+
344
+ /* ============================================================================
345
+ * Status-state box glow (Wave 29).
346
+ *
347
+ * The W26 status-pip rules (.sq-node-pip[data-status="..."]) color the
348
+ * small status indicator. This block adds a complementary glow to the
349
+ * NODE BOX itself for `success` and `error` states, so post-execution
350
+ * outcomes are visible at canvas zoom levels where the pip is too
351
+ * small to read. Per-theme files override these via higher-specificity
352
+ * `:root[data-theme="..."] .sq-node[data-status="..."] .sq-node-box`
353
+ * selectors when they want a material-specific outcome glow.
354
+ * ============================================================================ */
355
+
356
+ .sq-node[data-status="success"] .sq-node-box,
357
+ .react-flow__node[data-status="success"] .node {
358
+ box-shadow:
359
+ 0 0 0 1px hsl(var(--success)),
360
+ 0 0 14px color-mix(in srgb, hsl(var(--success)) 60%, transparent);
361
+ }
362
+
363
+ .sq-node[data-status="error"] .sq-node-box,
364
+ .react-flow__node[data-status="error"] .node {
365
+ box-shadow:
366
+ 0 0 0 1px hsl(var(--destructive)),
367
+ 0 0 14px color-mix(in srgb, hsl(var(--destructive)) 60%, transparent);
368
+ }
369
+
370
+ /* TODO(wave-30): mirror data-status from the pip to the outer .sq-node /
371
+ * .react-flow__node wrapper in each canvas-node component so the box
372
+ * glow rules above fire. The wave-29 selectors are pre-positioned;
373
+ * components currently set data-status on the pip only (W26). */