machinaos 0.0.1

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 (288) hide show
  1. package/.env.template +71 -0
  2. package/LICENSE +21 -0
  3. package/README.md +87 -0
  4. package/bin/cli.js +159 -0
  5. package/client/.dockerignore +45 -0
  6. package/client/Dockerfile +68 -0
  7. package/client/eslint.config.js +29 -0
  8. package/client/index.html +13 -0
  9. package/client/nginx.conf +66 -0
  10. package/client/package.json +48 -0
  11. package/client/src/App.tsx +27 -0
  12. package/client/src/Dashboard.tsx +1173 -0
  13. package/client/src/ParameterPanel.tsx +301 -0
  14. package/client/src/components/AIAgentNode.tsx +321 -0
  15. package/client/src/components/APIKeyValidator.tsx +118 -0
  16. package/client/src/components/ClaudeChatModelNode.tsx +18 -0
  17. package/client/src/components/ConditionalEdge.tsx +189 -0
  18. package/client/src/components/CredentialsModal.tsx +306 -0
  19. package/client/src/components/EdgeConditionEditor.tsx +443 -0
  20. package/client/src/components/GeminiChatModelNode.tsx +18 -0
  21. package/client/src/components/GenericNode.tsx +357 -0
  22. package/client/src/components/LocationParameterPanel.tsx +154 -0
  23. package/client/src/components/ModelNode.tsx +286 -0
  24. package/client/src/components/OpenAIChatModelNode.tsx +18 -0
  25. package/client/src/components/OutputPanel.tsx +471 -0
  26. package/client/src/components/ParameterRenderer.tsx +1874 -0
  27. package/client/src/components/SkillEditorModal.tsx +417 -0
  28. package/client/src/components/SquareNode.tsx +797 -0
  29. package/client/src/components/StartNode.tsx +250 -0
  30. package/client/src/components/ToolkitNode.tsx +365 -0
  31. package/client/src/components/TriggerNode.tsx +463 -0
  32. package/client/src/components/auth/LoginPage.tsx +247 -0
  33. package/client/src/components/auth/ProtectedRoute.tsx +59 -0
  34. package/client/src/components/base/BaseChatModelNode.tsx +271 -0
  35. package/client/src/components/icons/AIProviderIcons.tsx +50 -0
  36. package/client/src/components/maps/GoogleMapsPicker.tsx +137 -0
  37. package/client/src/components/maps/MapsPreviewPanel.tsx +110 -0
  38. package/client/src/components/maps/index.ts +26 -0
  39. package/client/src/components/parameterPanel/InputSection.tsx +1094 -0
  40. package/client/src/components/parameterPanel/LocationPanelLayout.tsx +65 -0
  41. package/client/src/components/parameterPanel/MapsSection.tsx +92 -0
  42. package/client/src/components/parameterPanel/MiddleSection.tsx +571 -0
  43. package/client/src/components/parameterPanel/OutputSection.tsx +81 -0
  44. package/client/src/components/parameterPanel/ParameterPanelLayout.tsx +82 -0
  45. package/client/src/components/parameterPanel/ToolSchemaEditor.tsx +436 -0
  46. package/client/src/components/parameterPanel/index.ts +42 -0
  47. package/client/src/components/shared/DataPanel.tsx +142 -0
  48. package/client/src/components/shared/JSONTreeRenderer.tsx +106 -0
  49. package/client/src/components/ui/AIResultModal.tsx +204 -0
  50. package/client/src/components/ui/AndroidSettingsPanel.tsx +401 -0
  51. package/client/src/components/ui/CodeEditor.tsx +81 -0
  52. package/client/src/components/ui/CollapsibleSection.tsx +88 -0
  53. package/client/src/components/ui/ComponentItem.tsx +154 -0
  54. package/client/src/components/ui/ComponentPalette.tsx +321 -0
  55. package/client/src/components/ui/ConsolePanel.tsx +1074 -0
  56. package/client/src/components/ui/ErrorBoundary.tsx +196 -0
  57. package/client/src/components/ui/InputNodesPanel.tsx +204 -0
  58. package/client/src/components/ui/MapSelector.tsx +314 -0
  59. package/client/src/components/ui/Modal.tsx +149 -0
  60. package/client/src/components/ui/NodeContextMenu.tsx +192 -0
  61. package/client/src/components/ui/NodeOutputPanel.tsx +1150 -0
  62. package/client/src/components/ui/OutputDisplayPanel.tsx +381 -0
  63. package/client/src/components/ui/SettingsPanel.tsx +243 -0
  64. package/client/src/components/ui/TopToolbar.tsx +736 -0
  65. package/client/src/components/ui/WhatsAppSettingsPanel.tsx +345 -0
  66. package/client/src/components/ui/WorkflowSidebar.tsx +294 -0
  67. package/client/src/config/antdTheme.ts +186 -0
  68. package/client/src/config/api.ts +54 -0
  69. package/client/src/contexts/AuthContext.tsx +221 -0
  70. package/client/src/contexts/ThemeContext.tsx +42 -0
  71. package/client/src/contexts/WebSocketContext.tsx +1971 -0
  72. package/client/src/factories/baseChatModelFactory.ts +256 -0
  73. package/client/src/hooks/useAndroidOperations.ts +164 -0
  74. package/client/src/hooks/useApiKeyValidation.ts +107 -0
  75. package/client/src/hooks/useApiKeys.ts +238 -0
  76. package/client/src/hooks/useAppTheme.ts +17 -0
  77. package/client/src/hooks/useComponentPalette.ts +51 -0
  78. package/client/src/hooks/useCopyPaste.ts +155 -0
  79. package/client/src/hooks/useDragAndDrop.ts +124 -0
  80. package/client/src/hooks/useDragVariable.ts +88 -0
  81. package/client/src/hooks/useExecution.ts +313 -0
  82. package/client/src/hooks/useParameterPanel.ts +176 -0
  83. package/client/src/hooks/useReactFlowNodes.ts +189 -0
  84. package/client/src/hooks/useToolSchema.ts +209 -0
  85. package/client/src/hooks/useWhatsApp.ts +196 -0
  86. package/client/src/hooks/useWorkflowManagement.ts +46 -0
  87. package/client/src/index.css +315 -0
  88. package/client/src/main.tsx +19 -0
  89. package/client/src/nodeDefinitions/aiAgentNodes.ts +336 -0
  90. package/client/src/nodeDefinitions/aiModelNodes.ts +340 -0
  91. package/client/src/nodeDefinitions/androidDeviceNodes.ts +140 -0
  92. package/client/src/nodeDefinitions/androidServiceNodes.ts +383 -0
  93. package/client/src/nodeDefinitions/chatNodes.ts +135 -0
  94. package/client/src/nodeDefinitions/codeNodes.ts +54 -0
  95. package/client/src/nodeDefinitions/documentNodes.ts +379 -0
  96. package/client/src/nodeDefinitions/index.ts +15 -0
  97. package/client/src/nodeDefinitions/locationNodes.ts +463 -0
  98. package/client/src/nodeDefinitions/schedulerNodes.ts +220 -0
  99. package/client/src/nodeDefinitions/skillNodes.ts +211 -0
  100. package/client/src/nodeDefinitions/toolNodes.ts +198 -0
  101. package/client/src/nodeDefinitions/utilityNodes.ts +284 -0
  102. package/client/src/nodeDefinitions/whatsappNodes.ts +865 -0
  103. package/client/src/nodeDefinitions/workflowNodes.ts +41 -0
  104. package/client/src/nodeDefinitions.ts +104 -0
  105. package/client/src/schemas/workflowSchema.ts +264 -0
  106. package/client/src/services/dynamicParameterService.ts +96 -0
  107. package/client/src/services/execution/aiAgentExecutionService.ts +35 -0
  108. package/client/src/services/executionService.ts +232 -0
  109. package/client/src/services/workflowApi.ts +91 -0
  110. package/client/src/store/useAppStore.ts +582 -0
  111. package/client/src/styles/theme.ts +508 -0
  112. package/client/src/styles/zIndex.ts +17 -0
  113. package/client/src/types/ComponentTypes.ts +39 -0
  114. package/client/src/types/EdgeCondition.ts +231 -0
  115. package/client/src/types/INodeProperties.ts +288 -0
  116. package/client/src/types/NodeTypes.ts +28 -0
  117. package/client/src/utils/formatters.ts +33 -0
  118. package/client/src/utils/googleMapsLoader.ts +140 -0
  119. package/client/src/utils/locationUtils.ts +85 -0
  120. package/client/src/utils/nodeUtils.ts +31 -0
  121. package/client/src/utils/workflow.ts +30 -0
  122. package/client/src/utils/workflowExport.ts +120 -0
  123. package/client/src/vite-env.d.ts +12 -0
  124. package/client/tailwind.config.js +60 -0
  125. package/client/tsconfig.json +25 -0
  126. package/client/tsconfig.node.json +11 -0
  127. package/client/vite.config.js +35 -0
  128. package/docker-compose.prod.yml +107 -0
  129. package/docker-compose.yml +104 -0
  130. package/docs-MachinaOs/README.md +85 -0
  131. package/docs-MachinaOs/deployment/docker.mdx +228 -0
  132. package/docs-MachinaOs/deployment/production.mdx +345 -0
  133. package/docs-MachinaOs/docs.json +75 -0
  134. package/docs-MachinaOs/faq.mdx +309 -0
  135. package/docs-MachinaOs/favicon.svg +5 -0
  136. package/docs-MachinaOs/installation.mdx +160 -0
  137. package/docs-MachinaOs/introduction.mdx +114 -0
  138. package/docs-MachinaOs/logo/dark.svg +6 -0
  139. package/docs-MachinaOs/logo/light.svg +6 -0
  140. package/docs-MachinaOs/nodes/ai-agent.mdx +216 -0
  141. package/docs-MachinaOs/nodes/ai-models.mdx +240 -0
  142. package/docs-MachinaOs/nodes/android.mdx +411 -0
  143. package/docs-MachinaOs/nodes/overview.mdx +181 -0
  144. package/docs-MachinaOs/nodes/schedulers.mdx +316 -0
  145. package/docs-MachinaOs/nodes/webhooks.mdx +330 -0
  146. package/docs-MachinaOs/nodes/whatsapp.mdx +305 -0
  147. package/docs-MachinaOs/quickstart.mdx +119 -0
  148. package/docs-MachinaOs/tutorials/ai-agent-workflow.mdx +177 -0
  149. package/docs-MachinaOs/tutorials/android-automation.mdx +242 -0
  150. package/docs-MachinaOs/tutorials/first-workflow.mdx +134 -0
  151. package/docs-MachinaOs/tutorials/whatsapp-automation.mdx +185 -0
  152. package/nul +0 -0
  153. package/package.json +70 -0
  154. package/scripts/build.js +158 -0
  155. package/scripts/check-ports.ps1 +33 -0
  156. package/scripts/clean.js +40 -0
  157. package/scripts/docker.js +93 -0
  158. package/scripts/kill-port.ps1 +154 -0
  159. package/scripts/start.js +210 -0
  160. package/scripts/stop.js +325 -0
  161. package/server/.dockerignore +44 -0
  162. package/server/Dockerfile +45 -0
  163. package/server/constants.py +249 -0
  164. package/server/core/__init__.py +1 -0
  165. package/server/core/cache.py +461 -0
  166. package/server/core/config.py +128 -0
  167. package/server/core/container.py +99 -0
  168. package/server/core/database.py +1211 -0
  169. package/server/core/logging.py +314 -0
  170. package/server/main.py +289 -0
  171. package/server/middleware/__init__.py +5 -0
  172. package/server/middleware/auth.py +89 -0
  173. package/server/models/__init__.py +1 -0
  174. package/server/models/auth.py +52 -0
  175. package/server/models/cache.py +24 -0
  176. package/server/models/database.py +211 -0
  177. package/server/models/nodes.py +455 -0
  178. package/server/package.json +9 -0
  179. package/server/pyproject.toml +72 -0
  180. package/server/requirements.txt +83 -0
  181. package/server/routers/__init__.py +1 -0
  182. package/server/routers/android.py +294 -0
  183. package/server/routers/auth.py +203 -0
  184. package/server/routers/database.py +151 -0
  185. package/server/routers/maps.py +142 -0
  186. package/server/routers/nodejs_compat.py +289 -0
  187. package/server/routers/webhook.py +90 -0
  188. package/server/routers/websocket.py +2127 -0
  189. package/server/routers/whatsapp.py +761 -0
  190. package/server/routers/workflow.py +200 -0
  191. package/server/services/__init__.py +1 -0
  192. package/server/services/ai.py +2415 -0
  193. package/server/services/android/__init__.py +27 -0
  194. package/server/services/android/broadcaster.py +114 -0
  195. package/server/services/android/client.py +608 -0
  196. package/server/services/android/manager.py +78 -0
  197. package/server/services/android/protocol.py +165 -0
  198. package/server/services/android_service.py +588 -0
  199. package/server/services/auth.py +131 -0
  200. package/server/services/chat_client.py +160 -0
  201. package/server/services/deployment/__init__.py +12 -0
  202. package/server/services/deployment/manager.py +706 -0
  203. package/server/services/deployment/state.py +47 -0
  204. package/server/services/deployment/triggers.py +275 -0
  205. package/server/services/event_waiter.py +785 -0
  206. package/server/services/execution/__init__.py +77 -0
  207. package/server/services/execution/cache.py +769 -0
  208. package/server/services/execution/conditions.py +373 -0
  209. package/server/services/execution/dlq.py +132 -0
  210. package/server/services/execution/executor.py +1351 -0
  211. package/server/services/execution/models.py +531 -0
  212. package/server/services/execution/recovery.py +235 -0
  213. package/server/services/handlers/__init__.py +126 -0
  214. package/server/services/handlers/ai.py +355 -0
  215. package/server/services/handlers/android.py +260 -0
  216. package/server/services/handlers/code.py +278 -0
  217. package/server/services/handlers/document.py +598 -0
  218. package/server/services/handlers/http.py +193 -0
  219. package/server/services/handlers/polyglot.py +105 -0
  220. package/server/services/handlers/tools.py +845 -0
  221. package/server/services/handlers/triggers.py +107 -0
  222. package/server/services/handlers/utility.py +822 -0
  223. package/server/services/handlers/whatsapp.py +476 -0
  224. package/server/services/maps.py +289 -0
  225. package/server/services/memory_store.py +103 -0
  226. package/server/services/node_executor.py +375 -0
  227. package/server/services/parameter_resolver.py +218 -0
  228. package/server/services/polyglot_client.py +169 -0
  229. package/server/services/scheduler.py +155 -0
  230. package/server/services/skill_loader.py +417 -0
  231. package/server/services/status_broadcaster.py +826 -0
  232. package/server/services/temporal/__init__.py +23 -0
  233. package/server/services/temporal/activities.py +344 -0
  234. package/server/services/temporal/client.py +76 -0
  235. package/server/services/temporal/executor.py +147 -0
  236. package/server/services/temporal/worker.py +251 -0
  237. package/server/services/temporal/workflow.py +355 -0
  238. package/server/services/temporal/ws_client.py +236 -0
  239. package/server/services/text.py +111 -0
  240. package/server/services/user_auth.py +172 -0
  241. package/server/services/websocket_client.py +29 -0
  242. package/server/services/workflow.py +597 -0
  243. package/server/skills/android-skill/SKILL.md +82 -0
  244. package/server/skills/assistant-personality/SKILL.md +45 -0
  245. package/server/skills/code-skill/SKILL.md +140 -0
  246. package/server/skills/http-skill/SKILL.md +161 -0
  247. package/server/skills/maps-skill/SKILL.md +170 -0
  248. package/server/skills/memory-skill/SKILL.md +154 -0
  249. package/server/skills/scheduler-skill/SKILL.md +84 -0
  250. package/server/skills/whatsapp-skill/SKILL.md +283 -0
  251. package/server/uv.lock +2916 -0
  252. package/server/whatsapp-rpc/.dockerignore +30 -0
  253. package/server/whatsapp-rpc/Dockerfile +44 -0
  254. package/server/whatsapp-rpc/Dockerfile.web +17 -0
  255. package/server/whatsapp-rpc/README.md +139 -0
  256. package/server/whatsapp-rpc/cli.js +95 -0
  257. package/server/whatsapp-rpc/configs/config.yaml +7 -0
  258. package/server/whatsapp-rpc/docker-compose.yml +35 -0
  259. package/server/whatsapp-rpc/docs/API.md +410 -0
  260. package/server/whatsapp-rpc/go.mod +67 -0
  261. package/server/whatsapp-rpc/go.sum +203 -0
  262. package/server/whatsapp-rpc/package.json +30 -0
  263. package/server/whatsapp-rpc/schema.json +1294 -0
  264. package/server/whatsapp-rpc/scripts/clean.cjs +66 -0
  265. package/server/whatsapp-rpc/scripts/cli.js +162 -0
  266. package/server/whatsapp-rpc/src/go/cmd/server/main.go +91 -0
  267. package/server/whatsapp-rpc/src/go/config/config.go +49 -0
  268. package/server/whatsapp-rpc/src/go/rpc/rpc.go +446 -0
  269. package/server/whatsapp-rpc/src/go/rpc/server.go +112 -0
  270. package/server/whatsapp-rpc/src/go/whatsapp/history.go +166 -0
  271. package/server/whatsapp-rpc/src/go/whatsapp/messages.go +390 -0
  272. package/server/whatsapp-rpc/src/go/whatsapp/service.go +2130 -0
  273. package/server/whatsapp-rpc/src/go/whatsapp/types.go +261 -0
  274. package/server/whatsapp-rpc/src/python/pyproject.toml +15 -0
  275. package/server/whatsapp-rpc/src/python/whatsapp_rpc/__init__.py +4 -0
  276. package/server/whatsapp-rpc/src/python/whatsapp_rpc/client.py +427 -0
  277. package/server/whatsapp-rpc/web/app.py +609 -0
  278. package/server/whatsapp-rpc/web/requirements.txt +6 -0
  279. package/server/whatsapp-rpc/web/rpc_client.py +427 -0
  280. package/server/whatsapp-rpc/web/static/openapi.yaml +59 -0
  281. package/server/whatsapp-rpc/web/templates/base.html +150 -0
  282. package/server/whatsapp-rpc/web/templates/contacts.html +240 -0
  283. package/server/whatsapp-rpc/web/templates/dashboard.html +320 -0
  284. package/server/whatsapp-rpc/web/templates/groups.html +328 -0
  285. package/server/whatsapp-rpc/web/templates/messages.html +465 -0
  286. package/server/whatsapp-rpc/web/templates/messaging.html +681 -0
  287. package/server/whatsapp-rpc/web/templates/send.html +259 -0
  288. package/server/whatsapp-rpc/web/templates/settings.html +459 -0
@@ -0,0 +1,340 @@
1
+ // AI Model Node Definitions - Standardized chat model configurations using base factory
2
+ import { INodeTypeDescription } from '../types/INodeProperties';
3
+ import { createBaseChatModel, ChatModelConfig, STANDARD_PARAMETERS } from '../factories/baseChatModelFactory';
4
+
5
+ // ============================================================================
6
+ // CHAT MODEL CONFIGURATIONS
7
+ // ============================================================================
8
+
9
+ // OpenAI Chat Model Configuration
10
+ const openaiConfig: ChatModelConfig = {
11
+ providerId: 'openai',
12
+ displayName: 'OpenAI',
13
+ icon: '🤖',
14
+ color: '#00A67E',
15
+ description: 'OpenAI GPT models for chat completion and generation',
16
+ models: [], // Models fetched dynamically via API
17
+ parameters: [
18
+ STANDARD_PARAMETERS.frequencyPenalty,
19
+ {
20
+ ...STANDARD_PARAMETERS.maxTokens,
21
+ default: 4096,
22
+ typeOptions: { minValue: 1, maxValue: 128000 },
23
+ description: 'Maximum tokens to generate'
24
+ },
25
+ {
26
+ displayName: 'Response Format',
27
+ name: 'responseFormat',
28
+ type: 'options',
29
+ options: [
30
+ {
31
+ name: 'Text',
32
+ value: 'text'
33
+ },
34
+ {
35
+ name: 'JSON Object',
36
+ value: 'json_object'
37
+ }
38
+ ],
39
+ default: 'text',
40
+ description: 'Format of the response'
41
+ },
42
+ STANDARD_PARAMETERS.presencePenalty,
43
+ {
44
+ ...STANDARD_PARAMETERS.temperature,
45
+ description: 'Controls randomness (0-2). Note: O-series models (o1, o3, o4) only support temperature=1, which is set automatically.'
46
+ },
47
+ {
48
+ displayName: 'Timeout',
49
+ name: 'timeout',
50
+ type: 'number',
51
+ default: 60000,
52
+ typeOptions: {
53
+ minValue: 1000,
54
+ maxValue: 180000
55
+ },
56
+ description: 'Timeout for the request in milliseconds'
57
+ },
58
+ {
59
+ displayName: 'Max Retries',
60
+ name: 'maxRetries',
61
+ type: 'number',
62
+ default: 2,
63
+ typeOptions: {
64
+ minValue: 0,
65
+ maxValue: 5
66
+ },
67
+ description: 'Maximum number of retries'
68
+ },
69
+ STANDARD_PARAMETERS.topP,
70
+ // Thinking/Reasoning for o-series models (o1, o3, o4)
71
+ STANDARD_PARAMETERS.thinkingEnabled,
72
+ STANDARD_PARAMETERS.reasoningEffort
73
+ ]
74
+ };
75
+
76
+ // Claude Chat Model Configuration
77
+ const claudeConfig: ChatModelConfig = {
78
+ providerId: 'anthropic',
79
+ displayName: 'Claude',
80
+ icon: '🧠',
81
+ color: '#FF6B35',
82
+ description: 'Anthropic Claude models for conversation and analysis',
83
+ models: [], // Models fetched dynamically via API
84
+ parameters: [
85
+ {
86
+ ...STANDARD_PARAMETERS.maxTokens,
87
+ default: 4096, // Higher default for Claude to accommodate thinking mode
88
+ typeOptions: { minValue: 1, maxValue: 64000 },
89
+ description: 'Maximum tokens to generate. Must be greater than Thinking Budget when thinking is enabled.'
90
+ },
91
+ {
92
+ ...STANDARD_PARAMETERS.temperature,
93
+ typeOptions: { minValue: 0, maxValue: 1, numberStepSize: 0.1 },
94
+ description: 'Controls randomness (0-1). Note: Automatically set to 1 when thinking mode is enabled.'
95
+ },
96
+ STANDARD_PARAMETERS.topP,
97
+ STANDARD_PARAMETERS.topK,
98
+ {
99
+ displayName: 'Timeout',
100
+ name: 'timeout',
101
+ type: 'number',
102
+ default: 60000,
103
+ typeOptions: {
104
+ minValue: 1000,
105
+ maxValue: 180000
106
+ },
107
+ description: 'Timeout for the request in milliseconds'
108
+ },
109
+ {
110
+ displayName: 'Max Retries',
111
+ name: 'maxRetries',
112
+ type: 'number',
113
+ default: 2,
114
+ typeOptions: {
115
+ minValue: 0,
116
+ maxValue: 5
117
+ },
118
+ description: 'Maximum number of retries'
119
+ },
120
+ // Extended thinking for Claude models
121
+ STANDARD_PARAMETERS.thinkingEnabled,
122
+ {
123
+ ...STANDARD_PARAMETERS.thinkingBudget,
124
+ description: 'Token budget for thinking (1024-16000). Must be less than Maximum Tokens.'
125
+ }
126
+ ]
127
+ };
128
+
129
+ // Gemini Chat Model Configuration
130
+ const geminiConfig: ChatModelConfig = {
131
+ providerId: 'gemini',
132
+ displayName: 'Gemini',
133
+ icon: '⭐',
134
+ color: '#4285F4',
135
+ description: 'Google Gemini models for multimodal AI capabilities',
136
+ models: [], // Models fetched dynamically via API
137
+ parameters: [
138
+ {
139
+ ...STANDARD_PARAMETERS.maxTokens,
140
+ default: 4096,
141
+ typeOptions: { minValue: 1, maxValue: 65536 },
142
+ description: 'Maximum tokens to generate'
143
+ },
144
+ {
145
+ ...STANDARD_PARAMETERS.temperature,
146
+ default: 0.9,
147
+ typeOptions: { minValue: 0, maxValue: 1, numberStepSize: 0.1 }
148
+ },
149
+ {
150
+ ...STANDARD_PARAMETERS.topP,
151
+ default: 0.95
152
+ },
153
+ STANDARD_PARAMETERS.topK,
154
+ {
155
+ displayName: 'Safety Settings',
156
+ name: 'safetySettings',
157
+ type: 'options',
158
+ options: [
159
+ {
160
+ name: 'Default',
161
+ value: 'default'
162
+ },
163
+ {
164
+ name: 'Strict',
165
+ value: 'strict'
166
+ },
167
+ {
168
+ name: 'Permissive',
169
+ value: 'permissive'
170
+ }
171
+ ],
172
+ default: 'default',
173
+ description: 'Content safety filtering level'
174
+ },
175
+ {
176
+ displayName: 'Timeout',
177
+ name: 'timeout',
178
+ type: 'number',
179
+ default: 60000,
180
+ typeOptions: {
181
+ minValue: 1000,
182
+ maxValue: 180000
183
+ },
184
+ description: 'Timeout for the request in milliseconds'
185
+ },
186
+ {
187
+ displayName: 'Max Retries',
188
+ name: 'maxRetries',
189
+ type: 'number',
190
+ default: 2,
191
+ typeOptions: {
192
+ minValue: 0,
193
+ maxValue: 5
194
+ },
195
+ description: 'Maximum number of retries'
196
+ },
197
+ // Thinking for Gemini models - uses thinking_budget (token count)
198
+ STANDARD_PARAMETERS.thinkingEnabled,
199
+ {
200
+ ...STANDARD_PARAMETERS.thinkingBudget,
201
+ description: 'Token budget for thinking. Works with Gemini 2.5 Flash/Pro and Flash Thinking models.'
202
+ }
203
+ ]
204
+ };
205
+
206
+ // OpenRouter Chat Model Configuration
207
+ const openrouterConfig: ChatModelConfig = {
208
+ providerId: 'openrouter',
209
+ displayName: 'OpenRouter',
210
+ icon: '🔀',
211
+ color: '#6366F1',
212
+ description: 'OpenRouter unified API - access OpenAI, Claude, Gemini, Llama, and more through one API',
213
+ models: [], // Models fetched dynamically via API
214
+ parameters: [
215
+ STANDARD_PARAMETERS.temperature,
216
+ STANDARD_PARAMETERS.maxTokens,
217
+ STANDARD_PARAMETERS.topP,
218
+ STANDARD_PARAMETERS.frequencyPenalty,
219
+ STANDARD_PARAMETERS.presencePenalty,
220
+ {
221
+ displayName: 'Timeout',
222
+ name: 'timeout',
223
+ type: 'number',
224
+ default: 60000,
225
+ typeOptions: {
226
+ minValue: 1000,
227
+ maxValue: 180000
228
+ },
229
+ description: 'Timeout for the request in milliseconds'
230
+ },
231
+ {
232
+ displayName: 'Max Retries',
233
+ name: 'maxRetries',
234
+ type: 'number',
235
+ default: 2,
236
+ typeOptions: {
237
+ minValue: 0,
238
+ maxValue: 5
239
+ },
240
+ description: 'Maximum number of retries'
241
+ }
242
+ ]
243
+ };
244
+
245
+ // Groq Chat Model Configuration
246
+ const groqConfig: ChatModelConfig = {
247
+ providerId: 'groq',
248
+ displayName: 'Groq',
249
+ icon: '⚡',
250
+ color: '#F55036',
251
+ description: 'Groq - Ultra-fast LLM inference with Llama, Mixtral, and Gemma models',
252
+ models: [], // Models fetched dynamically via API
253
+ parameters: [
254
+ STANDARD_PARAMETERS.temperature,
255
+ STANDARD_PARAMETERS.maxTokens,
256
+ STANDARD_PARAMETERS.topP,
257
+ {
258
+ displayName: 'Timeout',
259
+ name: 'timeout',
260
+ type: 'number',
261
+ default: 60000,
262
+ typeOptions: {
263
+ minValue: 1000,
264
+ maxValue: 180000
265
+ },
266
+ description: 'Timeout for the request in milliseconds'
267
+ },
268
+ {
269
+ displayName: 'Max Retries',
270
+ name: 'maxRetries',
271
+ type: 'number',
272
+ default: 2,
273
+ typeOptions: {
274
+ minValue: 0,
275
+ maxValue: 5
276
+ },
277
+ description: 'Maximum number of retries'
278
+ },
279
+ // Reasoning for Groq models (Qwen3, QwQ)
280
+ STANDARD_PARAMETERS.thinkingEnabled,
281
+ STANDARD_PARAMETERS.reasoningFormat
282
+ ]
283
+ };
284
+
285
+ // Cerebras Chat Model Configuration
286
+ const cerebrasConfig: ChatModelConfig = {
287
+ providerId: 'cerebras',
288
+ displayName: 'Cerebras',
289
+ icon: '🧬',
290
+ color: '#FF6600',
291
+ description: 'Cerebras - Ultra-fast inference with Llama and Qwen models on custom AI hardware',
292
+ models: [], // Models fetched dynamically via API
293
+ parameters: [
294
+ STANDARD_PARAMETERS.temperature,
295
+ STANDARD_PARAMETERS.maxTokens,
296
+ STANDARD_PARAMETERS.topP,
297
+ {
298
+ displayName: 'Timeout',
299
+ name: 'timeout',
300
+ type: 'number',
301
+ default: 60000,
302
+ typeOptions: {
303
+ minValue: 1000,
304
+ maxValue: 180000
305
+ },
306
+ description: 'Timeout for the request in milliseconds'
307
+ },
308
+ {
309
+ displayName: 'Max Retries',
310
+ name: 'maxRetries',
311
+ type: 'number',
312
+ default: 2,
313
+ typeOptions: {
314
+ minValue: 0,
315
+ maxValue: 5
316
+ },
317
+ description: 'Maximum number of retries'
318
+ },
319
+ // Thinking for Cerebras models (Qwen, Llama)
320
+ STANDARD_PARAMETERS.thinkingEnabled,
321
+ STANDARD_PARAMETERS.thinkingBudget
322
+ ]
323
+ };
324
+
325
+ // ============================================================================
326
+ // GENERATED CHAT MODEL NODES
327
+ // ============================================================================
328
+
329
+ export const aiModelNodes: Record<string, INodeTypeDescription> = {
330
+ openaiChatModel: createBaseChatModel(openaiConfig),
331
+ anthropicChatModel: createBaseChatModel(claudeConfig),
332
+ geminiChatModel: createBaseChatModel(geminiConfig),
333
+ openrouterChatModel: createBaseChatModel(openrouterConfig),
334
+ groqChatModel: createBaseChatModel(groqConfig),
335
+ cerebrasChatModel: createBaseChatModel(cerebrasConfig)
336
+ };
337
+
338
+ // Export configurations and factory for external use
339
+ export { openaiConfig, claudeConfig, geminiConfig, openrouterConfig, groqConfig, cerebrasConfig, createBaseChatModel };
340
+
@@ -0,0 +1,140 @@
1
+ // Android Device Management Nodes
2
+ import {
3
+ INodeTypeDescription,
4
+ NodeConnectionType
5
+ } from '../types/INodeProperties';
6
+ import { API_CONFIG } from '../config/api';
7
+
8
+ export const androidDeviceNodes: Record<string, INodeTypeDescription> = {
9
+ androidDeviceSetup: {
10
+ displayName: 'Android Device Setup',
11
+ name: 'androidDeviceSetup',
12
+ icon: '🔌',
13
+ group: ['android', 'setup'],
14
+ version: 1,
15
+ subtitle: 'Connect Android Device',
16
+ description: 'Setup Android device connection via local ADB or remote relay with QR code pairing',
17
+ defaults: { name: 'Android Device Setup', color: '#3DDC84' },
18
+ inputs: [{
19
+ name: 'main',
20
+ displayName: 'Input',
21
+ type: 'main' as NodeConnectionType,
22
+ description: 'Trigger device setup',
23
+ required: false
24
+ }],
25
+ outputs: [{
26
+ name: 'main',
27
+ displayName: 'Output',
28
+ type: 'main' as NodeConnectionType,
29
+ description: 'Device connection status'
30
+ }],
31
+ properties: [
32
+ {
33
+ displayName: 'Connection Type',
34
+ name: 'connection_type',
35
+ type: 'options',
36
+ options: [
37
+ {
38
+ name: 'Local ADB Device',
39
+ value: 'local',
40
+ description: 'Connect to Android device via USB/ADB with port forwarding'
41
+ },
42
+ {
43
+ name: 'Remote Relay (QR Pairing)',
44
+ value: 'remote',
45
+ description: 'Connect via relay server with QR code pairing'
46
+ }
47
+ ],
48
+ default: 'remote',
49
+ required: true,
50
+ description: 'Choose connection method: local ADB or remote relay'
51
+ },
52
+ // Local ADB options
53
+ {
54
+ displayName: 'Android Device',
55
+ name: 'device_id',
56
+ type: 'options',
57
+ typeOptions: {
58
+ loadOptionsMethod: 'getAndroidDevices'
59
+ },
60
+ displayOptions: {
61
+ show: {
62
+ connection_type: ['local']
63
+ }
64
+ },
65
+ options: [],
66
+ default: '',
67
+ required: true,
68
+ description: 'Select connected Android device (from adb devices)'
69
+ },
70
+ {
71
+ displayName: 'Auto Setup Port Forwarding',
72
+ name: 'auto_forward',
73
+ type: 'boolean',
74
+ displayOptions: {
75
+ show: {
76
+ connection_type: ['local']
77
+ }
78
+ },
79
+ default: true,
80
+ required: false,
81
+ description: 'Automatically setup ADB port forwarding when node executes'
82
+ },
83
+ {
84
+ displayName: 'Port',
85
+ name: 'port',
86
+ type: 'number',
87
+ displayOptions: {
88
+ show: {
89
+ connection_type: ['local']
90
+ }
91
+ },
92
+ default: 8888,
93
+ required: true,
94
+ description: 'Port number for local ADB port forwarding'
95
+ },
96
+ // Remote relay options
97
+ {
98
+ displayName: 'Relay URL',
99
+ name: 'websocket_url',
100
+ type: 'string',
101
+ displayOptions: {
102
+ show: {
103
+ connection_type: ['remote']
104
+ }
105
+ },
106
+ default: '',
107
+ required: true,
108
+ placeholder: 'wss://your-relay-server.com/ws',
109
+ description: 'Relay server URL for QR code pairing with Android device'
110
+ }
111
+ ],
112
+ methods: {
113
+ loadOptions: {
114
+ async getAndroidDevices(this: any): Promise<Array<{name: string, value: string, description?: string}>> {
115
+ try {
116
+ const response = await fetch(`${API_CONFIG.PYTHON_BASE_URL}/api/android/devices`, {
117
+ credentials: 'include'
118
+ });
119
+ const data = await response.json();
120
+
121
+ if (data.success && data.devices) {
122
+ return data.devices.map((device: any) => ({
123
+ name: `${device.model || device.id} (${device.id})`,
124
+ value: device.id,
125
+ description: `${device.state} - Android ${device.android_version || 'Unknown'}`
126
+ }));
127
+ }
128
+
129
+ return [];
130
+ } catch (error) {
131
+ console.error('Failed to load Android devices:', error);
132
+ return [];
133
+ }
134
+ }
135
+ }
136
+ }
137
+ }
138
+ };
139
+
140
+ export const ANDROID_DEVICE_NODE_TYPES = ['androidDeviceSetup'];