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.
- package/.env.template +71 -0
- package/LICENSE +21 -0
- package/README.md +87 -0
- package/bin/cli.js +159 -0
- package/client/.dockerignore +45 -0
- package/client/Dockerfile +68 -0
- package/client/eslint.config.js +29 -0
- package/client/index.html +13 -0
- package/client/nginx.conf +66 -0
- package/client/package.json +48 -0
- package/client/src/App.tsx +27 -0
- package/client/src/Dashboard.tsx +1173 -0
- package/client/src/ParameterPanel.tsx +301 -0
- package/client/src/components/AIAgentNode.tsx +321 -0
- package/client/src/components/APIKeyValidator.tsx +118 -0
- package/client/src/components/ClaudeChatModelNode.tsx +18 -0
- package/client/src/components/ConditionalEdge.tsx +189 -0
- package/client/src/components/CredentialsModal.tsx +306 -0
- package/client/src/components/EdgeConditionEditor.tsx +443 -0
- package/client/src/components/GeminiChatModelNode.tsx +18 -0
- package/client/src/components/GenericNode.tsx +357 -0
- package/client/src/components/LocationParameterPanel.tsx +154 -0
- package/client/src/components/ModelNode.tsx +286 -0
- package/client/src/components/OpenAIChatModelNode.tsx +18 -0
- package/client/src/components/OutputPanel.tsx +471 -0
- package/client/src/components/ParameterRenderer.tsx +1874 -0
- package/client/src/components/SkillEditorModal.tsx +417 -0
- package/client/src/components/SquareNode.tsx +797 -0
- package/client/src/components/StartNode.tsx +250 -0
- package/client/src/components/ToolkitNode.tsx +365 -0
- package/client/src/components/TriggerNode.tsx +463 -0
- package/client/src/components/auth/LoginPage.tsx +247 -0
- package/client/src/components/auth/ProtectedRoute.tsx +59 -0
- package/client/src/components/base/BaseChatModelNode.tsx +271 -0
- package/client/src/components/icons/AIProviderIcons.tsx +50 -0
- package/client/src/components/maps/GoogleMapsPicker.tsx +137 -0
- package/client/src/components/maps/MapsPreviewPanel.tsx +110 -0
- package/client/src/components/maps/index.ts +26 -0
- package/client/src/components/parameterPanel/InputSection.tsx +1094 -0
- package/client/src/components/parameterPanel/LocationPanelLayout.tsx +65 -0
- package/client/src/components/parameterPanel/MapsSection.tsx +92 -0
- package/client/src/components/parameterPanel/MiddleSection.tsx +571 -0
- package/client/src/components/parameterPanel/OutputSection.tsx +81 -0
- package/client/src/components/parameterPanel/ParameterPanelLayout.tsx +82 -0
- package/client/src/components/parameterPanel/ToolSchemaEditor.tsx +436 -0
- package/client/src/components/parameterPanel/index.ts +42 -0
- package/client/src/components/shared/DataPanel.tsx +142 -0
- package/client/src/components/shared/JSONTreeRenderer.tsx +106 -0
- package/client/src/components/ui/AIResultModal.tsx +204 -0
- package/client/src/components/ui/AndroidSettingsPanel.tsx +401 -0
- package/client/src/components/ui/CodeEditor.tsx +81 -0
- package/client/src/components/ui/CollapsibleSection.tsx +88 -0
- package/client/src/components/ui/ComponentItem.tsx +154 -0
- package/client/src/components/ui/ComponentPalette.tsx +321 -0
- package/client/src/components/ui/ConsolePanel.tsx +1074 -0
- package/client/src/components/ui/ErrorBoundary.tsx +196 -0
- package/client/src/components/ui/InputNodesPanel.tsx +204 -0
- package/client/src/components/ui/MapSelector.tsx +314 -0
- package/client/src/components/ui/Modal.tsx +149 -0
- package/client/src/components/ui/NodeContextMenu.tsx +192 -0
- package/client/src/components/ui/NodeOutputPanel.tsx +1150 -0
- package/client/src/components/ui/OutputDisplayPanel.tsx +381 -0
- package/client/src/components/ui/SettingsPanel.tsx +243 -0
- package/client/src/components/ui/TopToolbar.tsx +736 -0
- package/client/src/components/ui/WhatsAppSettingsPanel.tsx +345 -0
- package/client/src/components/ui/WorkflowSidebar.tsx +294 -0
- package/client/src/config/antdTheme.ts +186 -0
- package/client/src/config/api.ts +54 -0
- package/client/src/contexts/AuthContext.tsx +221 -0
- package/client/src/contexts/ThemeContext.tsx +42 -0
- package/client/src/contexts/WebSocketContext.tsx +1971 -0
- package/client/src/factories/baseChatModelFactory.ts +256 -0
- package/client/src/hooks/useAndroidOperations.ts +164 -0
- package/client/src/hooks/useApiKeyValidation.ts +107 -0
- package/client/src/hooks/useApiKeys.ts +238 -0
- package/client/src/hooks/useAppTheme.ts +17 -0
- package/client/src/hooks/useComponentPalette.ts +51 -0
- package/client/src/hooks/useCopyPaste.ts +155 -0
- package/client/src/hooks/useDragAndDrop.ts +124 -0
- package/client/src/hooks/useDragVariable.ts +88 -0
- package/client/src/hooks/useExecution.ts +313 -0
- package/client/src/hooks/useParameterPanel.ts +176 -0
- package/client/src/hooks/useReactFlowNodes.ts +189 -0
- package/client/src/hooks/useToolSchema.ts +209 -0
- package/client/src/hooks/useWhatsApp.ts +196 -0
- package/client/src/hooks/useWorkflowManagement.ts +46 -0
- package/client/src/index.css +315 -0
- package/client/src/main.tsx +19 -0
- package/client/src/nodeDefinitions/aiAgentNodes.ts +336 -0
- package/client/src/nodeDefinitions/aiModelNodes.ts +340 -0
- package/client/src/nodeDefinitions/androidDeviceNodes.ts +140 -0
- package/client/src/nodeDefinitions/androidServiceNodes.ts +383 -0
- package/client/src/nodeDefinitions/chatNodes.ts +135 -0
- package/client/src/nodeDefinitions/codeNodes.ts +54 -0
- package/client/src/nodeDefinitions/documentNodes.ts +379 -0
- package/client/src/nodeDefinitions/index.ts +15 -0
- package/client/src/nodeDefinitions/locationNodes.ts +463 -0
- package/client/src/nodeDefinitions/schedulerNodes.ts +220 -0
- package/client/src/nodeDefinitions/skillNodes.ts +211 -0
- package/client/src/nodeDefinitions/toolNodes.ts +198 -0
- package/client/src/nodeDefinitions/utilityNodes.ts +284 -0
- package/client/src/nodeDefinitions/whatsappNodes.ts +865 -0
- package/client/src/nodeDefinitions/workflowNodes.ts +41 -0
- package/client/src/nodeDefinitions.ts +104 -0
- package/client/src/schemas/workflowSchema.ts +264 -0
- package/client/src/services/dynamicParameterService.ts +96 -0
- package/client/src/services/execution/aiAgentExecutionService.ts +35 -0
- package/client/src/services/executionService.ts +232 -0
- package/client/src/services/workflowApi.ts +91 -0
- package/client/src/store/useAppStore.ts +582 -0
- package/client/src/styles/theme.ts +508 -0
- package/client/src/styles/zIndex.ts +17 -0
- package/client/src/types/ComponentTypes.ts +39 -0
- package/client/src/types/EdgeCondition.ts +231 -0
- package/client/src/types/INodeProperties.ts +288 -0
- package/client/src/types/NodeTypes.ts +28 -0
- package/client/src/utils/formatters.ts +33 -0
- package/client/src/utils/googleMapsLoader.ts +140 -0
- package/client/src/utils/locationUtils.ts +85 -0
- package/client/src/utils/nodeUtils.ts +31 -0
- package/client/src/utils/workflow.ts +30 -0
- package/client/src/utils/workflowExport.ts +120 -0
- package/client/src/vite-env.d.ts +12 -0
- package/client/tailwind.config.js +60 -0
- package/client/tsconfig.json +25 -0
- package/client/tsconfig.node.json +11 -0
- package/client/vite.config.js +35 -0
- package/docker-compose.prod.yml +107 -0
- package/docker-compose.yml +104 -0
- package/docs-MachinaOs/README.md +85 -0
- package/docs-MachinaOs/deployment/docker.mdx +228 -0
- package/docs-MachinaOs/deployment/production.mdx +345 -0
- package/docs-MachinaOs/docs.json +75 -0
- package/docs-MachinaOs/faq.mdx +309 -0
- package/docs-MachinaOs/favicon.svg +5 -0
- package/docs-MachinaOs/installation.mdx +160 -0
- package/docs-MachinaOs/introduction.mdx +114 -0
- package/docs-MachinaOs/logo/dark.svg +6 -0
- package/docs-MachinaOs/logo/light.svg +6 -0
- package/docs-MachinaOs/nodes/ai-agent.mdx +216 -0
- package/docs-MachinaOs/nodes/ai-models.mdx +240 -0
- package/docs-MachinaOs/nodes/android.mdx +411 -0
- package/docs-MachinaOs/nodes/overview.mdx +181 -0
- package/docs-MachinaOs/nodes/schedulers.mdx +316 -0
- package/docs-MachinaOs/nodes/webhooks.mdx +330 -0
- package/docs-MachinaOs/nodes/whatsapp.mdx +305 -0
- package/docs-MachinaOs/quickstart.mdx +119 -0
- package/docs-MachinaOs/tutorials/ai-agent-workflow.mdx +177 -0
- package/docs-MachinaOs/tutorials/android-automation.mdx +242 -0
- package/docs-MachinaOs/tutorials/first-workflow.mdx +134 -0
- package/docs-MachinaOs/tutorials/whatsapp-automation.mdx +185 -0
- package/nul +0 -0
- package/package.json +70 -0
- package/scripts/build.js +158 -0
- package/scripts/check-ports.ps1 +33 -0
- package/scripts/clean.js +40 -0
- package/scripts/docker.js +93 -0
- package/scripts/kill-port.ps1 +154 -0
- package/scripts/start.js +210 -0
- package/scripts/stop.js +325 -0
- package/server/.dockerignore +44 -0
- package/server/Dockerfile +45 -0
- package/server/constants.py +249 -0
- package/server/core/__init__.py +1 -0
- package/server/core/cache.py +461 -0
- package/server/core/config.py +128 -0
- package/server/core/container.py +99 -0
- package/server/core/database.py +1211 -0
- package/server/core/logging.py +314 -0
- package/server/main.py +289 -0
- package/server/middleware/__init__.py +5 -0
- package/server/middleware/auth.py +89 -0
- package/server/models/__init__.py +1 -0
- package/server/models/auth.py +52 -0
- package/server/models/cache.py +24 -0
- package/server/models/database.py +211 -0
- package/server/models/nodes.py +455 -0
- package/server/package.json +9 -0
- package/server/pyproject.toml +72 -0
- package/server/requirements.txt +83 -0
- package/server/routers/__init__.py +1 -0
- package/server/routers/android.py +294 -0
- package/server/routers/auth.py +203 -0
- package/server/routers/database.py +151 -0
- package/server/routers/maps.py +142 -0
- package/server/routers/nodejs_compat.py +289 -0
- package/server/routers/webhook.py +90 -0
- package/server/routers/websocket.py +2127 -0
- package/server/routers/whatsapp.py +761 -0
- package/server/routers/workflow.py +200 -0
- package/server/services/__init__.py +1 -0
- package/server/services/ai.py +2415 -0
- package/server/services/android/__init__.py +27 -0
- package/server/services/android/broadcaster.py +114 -0
- package/server/services/android/client.py +608 -0
- package/server/services/android/manager.py +78 -0
- package/server/services/android/protocol.py +165 -0
- package/server/services/android_service.py +588 -0
- package/server/services/auth.py +131 -0
- package/server/services/chat_client.py +160 -0
- package/server/services/deployment/__init__.py +12 -0
- package/server/services/deployment/manager.py +706 -0
- package/server/services/deployment/state.py +47 -0
- package/server/services/deployment/triggers.py +275 -0
- package/server/services/event_waiter.py +785 -0
- package/server/services/execution/__init__.py +77 -0
- package/server/services/execution/cache.py +769 -0
- package/server/services/execution/conditions.py +373 -0
- package/server/services/execution/dlq.py +132 -0
- package/server/services/execution/executor.py +1351 -0
- package/server/services/execution/models.py +531 -0
- package/server/services/execution/recovery.py +235 -0
- package/server/services/handlers/__init__.py +126 -0
- package/server/services/handlers/ai.py +355 -0
- package/server/services/handlers/android.py +260 -0
- package/server/services/handlers/code.py +278 -0
- package/server/services/handlers/document.py +598 -0
- package/server/services/handlers/http.py +193 -0
- package/server/services/handlers/polyglot.py +105 -0
- package/server/services/handlers/tools.py +845 -0
- package/server/services/handlers/triggers.py +107 -0
- package/server/services/handlers/utility.py +822 -0
- package/server/services/handlers/whatsapp.py +476 -0
- package/server/services/maps.py +289 -0
- package/server/services/memory_store.py +103 -0
- package/server/services/node_executor.py +375 -0
- package/server/services/parameter_resolver.py +218 -0
- package/server/services/polyglot_client.py +169 -0
- package/server/services/scheduler.py +155 -0
- package/server/services/skill_loader.py +417 -0
- package/server/services/status_broadcaster.py +826 -0
- package/server/services/temporal/__init__.py +23 -0
- package/server/services/temporal/activities.py +344 -0
- package/server/services/temporal/client.py +76 -0
- package/server/services/temporal/executor.py +147 -0
- package/server/services/temporal/worker.py +251 -0
- package/server/services/temporal/workflow.py +355 -0
- package/server/services/temporal/ws_client.py +236 -0
- package/server/services/text.py +111 -0
- package/server/services/user_auth.py +172 -0
- package/server/services/websocket_client.py +29 -0
- package/server/services/workflow.py +597 -0
- package/server/skills/android-skill/SKILL.md +82 -0
- package/server/skills/assistant-personality/SKILL.md +45 -0
- package/server/skills/code-skill/SKILL.md +140 -0
- package/server/skills/http-skill/SKILL.md +161 -0
- package/server/skills/maps-skill/SKILL.md +170 -0
- package/server/skills/memory-skill/SKILL.md +154 -0
- package/server/skills/scheduler-skill/SKILL.md +84 -0
- package/server/skills/whatsapp-skill/SKILL.md +283 -0
- package/server/uv.lock +2916 -0
- package/server/whatsapp-rpc/.dockerignore +30 -0
- package/server/whatsapp-rpc/Dockerfile +44 -0
- package/server/whatsapp-rpc/Dockerfile.web +17 -0
- package/server/whatsapp-rpc/README.md +139 -0
- package/server/whatsapp-rpc/cli.js +95 -0
- package/server/whatsapp-rpc/configs/config.yaml +7 -0
- package/server/whatsapp-rpc/docker-compose.yml +35 -0
- package/server/whatsapp-rpc/docs/API.md +410 -0
- package/server/whatsapp-rpc/go.mod +67 -0
- package/server/whatsapp-rpc/go.sum +203 -0
- package/server/whatsapp-rpc/package.json +30 -0
- package/server/whatsapp-rpc/schema.json +1294 -0
- package/server/whatsapp-rpc/scripts/clean.cjs +66 -0
- package/server/whatsapp-rpc/scripts/cli.js +162 -0
- package/server/whatsapp-rpc/src/go/cmd/server/main.go +91 -0
- package/server/whatsapp-rpc/src/go/config/config.go +49 -0
- package/server/whatsapp-rpc/src/go/rpc/rpc.go +446 -0
- package/server/whatsapp-rpc/src/go/rpc/server.go +112 -0
- package/server/whatsapp-rpc/src/go/whatsapp/history.go +166 -0
- package/server/whatsapp-rpc/src/go/whatsapp/messages.go +390 -0
- package/server/whatsapp-rpc/src/go/whatsapp/service.go +2130 -0
- package/server/whatsapp-rpc/src/go/whatsapp/types.go +261 -0
- package/server/whatsapp-rpc/src/python/pyproject.toml +15 -0
- package/server/whatsapp-rpc/src/python/whatsapp_rpc/__init__.py +4 -0
- package/server/whatsapp-rpc/src/python/whatsapp_rpc/client.py +427 -0
- package/server/whatsapp-rpc/web/app.py +609 -0
- package/server/whatsapp-rpc/web/requirements.txt +6 -0
- package/server/whatsapp-rpc/web/rpc_client.py +427 -0
- package/server/whatsapp-rpc/web/static/openapi.yaml +59 -0
- package/server/whatsapp-rpc/web/templates/base.html +150 -0
- package/server/whatsapp-rpc/web/templates/contacts.html +240 -0
- package/server/whatsapp-rpc/web/templates/dashboard.html +320 -0
- package/server/whatsapp-rpc/web/templates/groups.html +328 -0
- package/server/whatsapp-rpc/web/templates/messages.html +465 -0
- package/server/whatsapp-rpc/web/templates/messaging.html +681 -0
- package/server/whatsapp-rpc/web/templates/send.html +259 -0
- package/server/whatsapp-rpc/web/templates/settings.html +459 -0
|
@@ -0,0 +1,383 @@
|
|
|
1
|
+
// Android Service Nodes - Individual nodes for each Android system service
|
|
2
|
+
import {
|
|
3
|
+
INodeTypeDescription,
|
|
4
|
+
NodeConnectionType
|
|
5
|
+
} from '../types/INodeProperties';
|
|
6
|
+
import { API_CONFIG } from '../config/api';
|
|
7
|
+
|
|
8
|
+
// ============================================================================
|
|
9
|
+
// ANDROID SERVICE NODES - Individual nodes for each Android system service
|
|
10
|
+
// ============================================================================
|
|
11
|
+
|
|
12
|
+
// Helper function to create Android service node definition
|
|
13
|
+
function createAndroidServiceNode(config: {
|
|
14
|
+
name: string;
|
|
15
|
+
displayName: string;
|
|
16
|
+
serviceId: string;
|
|
17
|
+
icon: string;
|
|
18
|
+
color: string;
|
|
19
|
+
group: string[];
|
|
20
|
+
description: string;
|
|
21
|
+
defaultAction: string;
|
|
22
|
+
additionalProperties?: Array<{
|
|
23
|
+
displayName: string;
|
|
24
|
+
name: string;
|
|
25
|
+
type: 'string' | 'number' | 'boolean' | 'options' | 'multiOptions' | 'collection' | 'fixedCollection' | 'color' | 'dateTime' | 'json' | 'notice' | 'hidden' | 'resourceLocator' | 'code' | 'file';
|
|
26
|
+
default?: any;
|
|
27
|
+
required?: boolean;
|
|
28
|
+
description?: string;
|
|
29
|
+
placeholder?: string;
|
|
30
|
+
displayOptions?: {
|
|
31
|
+
show?: Record<string, any[]>;
|
|
32
|
+
};
|
|
33
|
+
}>;
|
|
34
|
+
}): INodeTypeDescription {
|
|
35
|
+
return {
|
|
36
|
+
displayName: config.displayName,
|
|
37
|
+
name: config.name,
|
|
38
|
+
icon: config.icon,
|
|
39
|
+
group: config.group,
|
|
40
|
+
version: 1,
|
|
41
|
+
subtitle: `Android ${config.group[1]} Service`,
|
|
42
|
+
description: config.description,
|
|
43
|
+
defaults: { name: config.displayName, color: config.color },
|
|
44
|
+
inputs: [{
|
|
45
|
+
name: 'main',
|
|
46
|
+
displayName: 'Input',
|
|
47
|
+
type: 'main' as NodeConnectionType,
|
|
48
|
+
description: 'Service trigger',
|
|
49
|
+
required: false
|
|
50
|
+
}],
|
|
51
|
+
outputs: [
|
|
52
|
+
{
|
|
53
|
+
name: 'main',
|
|
54
|
+
displayName: 'Output',
|
|
55
|
+
type: 'main' as NodeConnectionType,
|
|
56
|
+
description: 'Service execution result'
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
name: 'tool',
|
|
60
|
+
displayName: 'Tool Output',
|
|
61
|
+
type: 'main' as NodeConnectionType,
|
|
62
|
+
description: 'Connect to Android Toolkit (top handle)'
|
|
63
|
+
}
|
|
64
|
+
],
|
|
65
|
+
properties: [
|
|
66
|
+
// Hidden service_id - automatically set based on node type
|
|
67
|
+
{
|
|
68
|
+
displayName: 'Service ID',
|
|
69
|
+
name: 'service_id',
|
|
70
|
+
type: 'hidden',
|
|
71
|
+
default: config.serviceId,
|
|
72
|
+
required: true
|
|
73
|
+
},
|
|
74
|
+
|
|
75
|
+
// Hidden Android device connection settings - use defaults
|
|
76
|
+
{
|
|
77
|
+
displayName: 'Android Host',
|
|
78
|
+
name: 'android_host',
|
|
79
|
+
type: 'hidden',
|
|
80
|
+
default: 'localhost',
|
|
81
|
+
required: true
|
|
82
|
+
},
|
|
83
|
+
|
|
84
|
+
{
|
|
85
|
+
displayName: 'Android Port',
|
|
86
|
+
name: 'android_port',
|
|
87
|
+
type: 'hidden',
|
|
88
|
+
default: 8888,
|
|
89
|
+
required: true
|
|
90
|
+
},
|
|
91
|
+
|
|
92
|
+
// Display label for this service node
|
|
93
|
+
{
|
|
94
|
+
displayName: 'Label',
|
|
95
|
+
name: 'label',
|
|
96
|
+
type: 'string',
|
|
97
|
+
default: config.displayName,
|
|
98
|
+
required: false,
|
|
99
|
+
description: 'Custom label for this node instance'
|
|
100
|
+
},
|
|
101
|
+
|
|
102
|
+
// Dynamic Action field - loads options based on node type
|
|
103
|
+
{
|
|
104
|
+
displayName: 'Action',
|
|
105
|
+
name: 'action',
|
|
106
|
+
type: 'options',
|
|
107
|
+
typeOptions: {
|
|
108
|
+
loadOptionsMethod: 'getAndroidServiceActions'
|
|
109
|
+
},
|
|
110
|
+
options: [],
|
|
111
|
+
default: config.defaultAction,
|
|
112
|
+
required: true,
|
|
113
|
+
description: `Action to perform on ${config.displayName}`
|
|
114
|
+
},
|
|
115
|
+
// Add any additional properties for this specific node
|
|
116
|
+
...(config.additionalProperties || [])
|
|
117
|
+
],
|
|
118
|
+
methods: {
|
|
119
|
+
loadOptions: {
|
|
120
|
+
async getAndroidServiceActions(this: any): Promise<Array<{name: string, value: string, description?: string}>> {
|
|
121
|
+
try {
|
|
122
|
+
const response = await fetch(`${API_CONFIG.PYTHON_BASE_URL}/api/android/services/${config.serviceId}/actions`, {
|
|
123
|
+
credentials: 'include'
|
|
124
|
+
});
|
|
125
|
+
const data = await response.json();
|
|
126
|
+
|
|
127
|
+
if (data.success && data.actions) {
|
|
128
|
+
return data.actions.map((action: any) => ({
|
|
129
|
+
name: action.name,
|
|
130
|
+
value: action.value,
|
|
131
|
+
description: action.description
|
|
132
|
+
}));
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
return [];
|
|
136
|
+
} catch (error) {
|
|
137
|
+
console.error(`Failed to load ${config.displayName} actions:`, error);
|
|
138
|
+
return [];
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
export const androidServiceNodes: Record<string, INodeTypeDescription> = {
|
|
147
|
+
// ============================================================================
|
|
148
|
+
// SYSTEM MONITORING SERVICES
|
|
149
|
+
// ============================================================================
|
|
150
|
+
|
|
151
|
+
batteryMonitor: createAndroidServiceNode({
|
|
152
|
+
name: 'batteryMonitor',
|
|
153
|
+
displayName: 'Battery Monitor',
|
|
154
|
+
serviceId: 'battery',
|
|
155
|
+
icon: '🔋',
|
|
156
|
+
color: '#4CAF50',
|
|
157
|
+
group: ['android', 'monitoring'],
|
|
158
|
+
description: 'Monitor battery status, level, charging state, temperature, and health',
|
|
159
|
+
defaultAction: 'status'
|
|
160
|
+
}),
|
|
161
|
+
|
|
162
|
+
networkMonitor: createAndroidServiceNode({
|
|
163
|
+
name: 'networkMonitor',
|
|
164
|
+
displayName: 'Network Monitor',
|
|
165
|
+
serviceId: 'network',
|
|
166
|
+
icon: '📡',
|
|
167
|
+
color: '#2196F3',
|
|
168
|
+
group: ['android', 'monitoring'],
|
|
169
|
+
description: 'Monitor network connectivity status, type, and internet availability',
|
|
170
|
+
defaultAction: 'status'
|
|
171
|
+
}),
|
|
172
|
+
|
|
173
|
+
systemInfo: createAndroidServiceNode({
|
|
174
|
+
name: 'systemInfo',
|
|
175
|
+
displayName: 'System Info',
|
|
176
|
+
serviceId: 'system_info',
|
|
177
|
+
icon: '📱',
|
|
178
|
+
color: '#9C27B0',
|
|
179
|
+
group: ['android', 'monitoring'],
|
|
180
|
+
description: 'Get device and OS information including Android version, API level, memory, and hardware details',
|
|
181
|
+
defaultAction: 'info'
|
|
182
|
+
}),
|
|
183
|
+
|
|
184
|
+
location: createAndroidServiceNode({
|
|
185
|
+
name: 'location',
|
|
186
|
+
displayName: 'Location',
|
|
187
|
+
serviceId: 'location',
|
|
188
|
+
icon: '📍',
|
|
189
|
+
color: '#F44336',
|
|
190
|
+
group: ['android', 'monitoring'],
|
|
191
|
+
description: 'GPS location tracking with latitude, longitude, accuracy, and provider information',
|
|
192
|
+
defaultAction: 'current'
|
|
193
|
+
}),
|
|
194
|
+
|
|
195
|
+
// ============================================================================
|
|
196
|
+
// APP MANAGEMENT SERVICES
|
|
197
|
+
// ============================================================================
|
|
198
|
+
|
|
199
|
+
appLauncher: createAndroidServiceNode({
|
|
200
|
+
name: 'appLauncher',
|
|
201
|
+
displayName: 'App Launcher',
|
|
202
|
+
serviceId: 'app_launcher',
|
|
203
|
+
icon: '🚀',
|
|
204
|
+
color: '#FF9800',
|
|
205
|
+
group: ['android', 'apps'],
|
|
206
|
+
description: 'Launch applications by package name',
|
|
207
|
+
defaultAction: 'launch',
|
|
208
|
+
additionalProperties: [
|
|
209
|
+
{
|
|
210
|
+
displayName: 'Package Name',
|
|
211
|
+
name: 'package_name',
|
|
212
|
+
type: 'string',
|
|
213
|
+
default: '',
|
|
214
|
+
required: true,
|
|
215
|
+
description: 'Package name of the app to launch (e.g., com.whatsapp)',
|
|
216
|
+
placeholder: 'com.example.app',
|
|
217
|
+
displayOptions: {
|
|
218
|
+
show: {
|
|
219
|
+
action: ['launch']
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
]
|
|
224
|
+
}),
|
|
225
|
+
|
|
226
|
+
appList: createAndroidServiceNode({
|
|
227
|
+
name: 'appList',
|
|
228
|
+
displayName: 'App List',
|
|
229
|
+
serviceId: 'app_list',
|
|
230
|
+
icon: '📋',
|
|
231
|
+
color: '#00BCD4',
|
|
232
|
+
group: ['android', 'apps'],
|
|
233
|
+
description: 'Get list of installed applications with package names, versions, and metadata',
|
|
234
|
+
defaultAction: 'list'
|
|
235
|
+
}),
|
|
236
|
+
|
|
237
|
+
// ============================================================================
|
|
238
|
+
// DEVICE AUTOMATION SERVICES
|
|
239
|
+
// ============================================================================
|
|
240
|
+
|
|
241
|
+
wifiAutomation: createAndroidServiceNode({
|
|
242
|
+
name: 'wifiAutomation',
|
|
243
|
+
displayName: 'WiFi Automation',
|
|
244
|
+
serviceId: 'wifi_automation',
|
|
245
|
+
icon: '📶',
|
|
246
|
+
color: '#3F51B5',
|
|
247
|
+
group: ['android', 'automation'],
|
|
248
|
+
description: 'WiFi control and scanning - enable, disable, get status, scan for networks',
|
|
249
|
+
defaultAction: 'status'
|
|
250
|
+
}),
|
|
251
|
+
|
|
252
|
+
bluetoothAutomation: createAndroidServiceNode({
|
|
253
|
+
name: 'bluetoothAutomation',
|
|
254
|
+
displayName: 'Bluetooth Automation',
|
|
255
|
+
serviceId: 'bluetooth_automation',
|
|
256
|
+
icon: '🔵',
|
|
257
|
+
color: '#2196F3',
|
|
258
|
+
group: ['android', 'automation'],
|
|
259
|
+
description: 'Bluetooth control - enable, disable, get status, and paired devices',
|
|
260
|
+
defaultAction: 'status'
|
|
261
|
+
}),
|
|
262
|
+
|
|
263
|
+
audioAutomation: createAndroidServiceNode({
|
|
264
|
+
name: 'audioAutomation',
|
|
265
|
+
displayName: 'Audio Automation',
|
|
266
|
+
serviceId: 'audio_automation',
|
|
267
|
+
icon: '🔊',
|
|
268
|
+
color: '#E91E63',
|
|
269
|
+
group: ['android', 'automation'],
|
|
270
|
+
description: 'Volume and audio control - get/set volume, mute, unmute',
|
|
271
|
+
defaultAction: 'get_volume'
|
|
272
|
+
}),
|
|
273
|
+
|
|
274
|
+
deviceStateAutomation: createAndroidServiceNode({
|
|
275
|
+
name: 'deviceStateAutomation',
|
|
276
|
+
displayName: 'Device State',
|
|
277
|
+
serviceId: 'device_state_automation',
|
|
278
|
+
icon: '⚙️',
|
|
279
|
+
color: '#607D8B',
|
|
280
|
+
group: ['android', 'automation'],
|
|
281
|
+
description: 'Device state control - airplane mode, screen on/off, power save mode, brightness',
|
|
282
|
+
defaultAction: 'status'
|
|
283
|
+
}),
|
|
284
|
+
|
|
285
|
+
screenControlAutomation: createAndroidServiceNode({
|
|
286
|
+
name: 'screenControlAutomation',
|
|
287
|
+
displayName: 'Screen Control',
|
|
288
|
+
serviceId: 'screen_control_automation',
|
|
289
|
+
icon: '💡',
|
|
290
|
+
color: '#FFC107',
|
|
291
|
+
group: ['android', 'automation'],
|
|
292
|
+
description: 'Screen control - brightness adjustment, wake screen, auto-brightness, screen timeout',
|
|
293
|
+
defaultAction: 'status'
|
|
294
|
+
}),
|
|
295
|
+
|
|
296
|
+
airplaneModeControl: createAndroidServiceNode({
|
|
297
|
+
name: 'airplaneModeControl',
|
|
298
|
+
displayName: 'Airplane Mode',
|
|
299
|
+
serviceId: 'airplane_mode_control',
|
|
300
|
+
icon: '✈️',
|
|
301
|
+
color: '#795548',
|
|
302
|
+
group: ['android', 'automation'],
|
|
303
|
+
description: 'Airplane mode status monitoring and control',
|
|
304
|
+
defaultAction: 'status'
|
|
305
|
+
}),
|
|
306
|
+
|
|
307
|
+
// ============================================================================
|
|
308
|
+
// SENSOR SERVICES (Experimental)
|
|
309
|
+
// ============================================================================
|
|
310
|
+
|
|
311
|
+
motionDetection: createAndroidServiceNode({
|
|
312
|
+
name: 'motionDetection',
|
|
313
|
+
displayName: 'Motion Detection',
|
|
314
|
+
serviceId: 'motion_detection',
|
|
315
|
+
icon: '📳',
|
|
316
|
+
color: '#FF5722',
|
|
317
|
+
group: ['android', 'sensors'],
|
|
318
|
+
description: 'Accelerometer and gyroscope data - detect motion, shake gestures, device orientation',
|
|
319
|
+
defaultAction: 'current_motion'
|
|
320
|
+
}),
|
|
321
|
+
|
|
322
|
+
environmentalSensors: createAndroidServiceNode({
|
|
323
|
+
name: 'environmentalSensors',
|
|
324
|
+
displayName: 'Environmental Sensors',
|
|
325
|
+
serviceId: 'environmental_sensors',
|
|
326
|
+
icon: '🌡️',
|
|
327
|
+
color: '#009688',
|
|
328
|
+
group: ['android', 'sensors'],
|
|
329
|
+
description: 'Environmental sensors - temperature, humidity, pressure, light level',
|
|
330
|
+
defaultAction: 'ambient_conditions'
|
|
331
|
+
}),
|
|
332
|
+
|
|
333
|
+
// ============================================================================
|
|
334
|
+
// MEDIA SERVICES (Experimental)
|
|
335
|
+
// ============================================================================
|
|
336
|
+
|
|
337
|
+
cameraControl: createAndroidServiceNode({
|
|
338
|
+
name: 'cameraControl',
|
|
339
|
+
displayName: 'Camera Control',
|
|
340
|
+
serviceId: 'camera_control',
|
|
341
|
+
icon: '📷',
|
|
342
|
+
color: '#673AB7',
|
|
343
|
+
group: ['android', 'media'],
|
|
344
|
+
description: 'Camera control - get camera info, take photos, camera capabilities',
|
|
345
|
+
defaultAction: 'camera_info'
|
|
346
|
+
}),
|
|
347
|
+
|
|
348
|
+
mediaControl: createAndroidServiceNode({
|
|
349
|
+
name: 'mediaControl',
|
|
350
|
+
displayName: 'Media Control',
|
|
351
|
+
serviceId: 'media_control',
|
|
352
|
+
icon: '🎵',
|
|
353
|
+
color: '#E91E63',
|
|
354
|
+
group: ['android', 'media'],
|
|
355
|
+
description: 'Media playback control - volume control, playback control, play media files',
|
|
356
|
+
defaultAction: 'volume_control'
|
|
357
|
+
})
|
|
358
|
+
};
|
|
359
|
+
|
|
360
|
+
// Export node type identifiers
|
|
361
|
+
export const ANDROID_SERVICE_NODE_TYPES = [
|
|
362
|
+
// System Monitoring
|
|
363
|
+
'batteryMonitor',
|
|
364
|
+
'networkMonitor',
|
|
365
|
+
'systemInfo',
|
|
366
|
+
'location',
|
|
367
|
+
// App Management
|
|
368
|
+
'appLauncher',
|
|
369
|
+
'appList',
|
|
370
|
+
// Device Automation
|
|
371
|
+
'wifiAutomation',
|
|
372
|
+
'bluetoothAutomation',
|
|
373
|
+
'audioAutomation',
|
|
374
|
+
'deviceStateAutomation',
|
|
375
|
+
'screenControlAutomation',
|
|
376
|
+
'airplaneModeControl',
|
|
377
|
+
// Sensors
|
|
378
|
+
'motionDetection',
|
|
379
|
+
'environmentalSensors',
|
|
380
|
+
// Media
|
|
381
|
+
'cameraControl',
|
|
382
|
+
'mediaControl'
|
|
383
|
+
];
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
// Chat Node Definitions - JSON-RPC 2.0 WebSocket chat integration
|
|
2
|
+
import { INodeTypeDescription, NodeConnectionType } from '../types/INodeProperties';
|
|
3
|
+
|
|
4
|
+
// Chat icon (speech bubble)
|
|
5
|
+
const CHAT_ICON = "data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%234A90D9'%3E%3Cpath d='M20 2H4c-1.1 0-2 .9-2 2v18l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm0 14H6l-2 2V4h16v12z'/%3E%3C/svg%3E";
|
|
6
|
+
|
|
7
|
+
export const chatNodes: Record<string, INodeTypeDescription> = {
|
|
8
|
+
// Chat Send Message Node
|
|
9
|
+
chatSend: {
|
|
10
|
+
displayName: 'Chat Send',
|
|
11
|
+
name: 'chatSend',
|
|
12
|
+
icon: CHAT_ICON,
|
|
13
|
+
group: ['chat'],
|
|
14
|
+
version: 1,
|
|
15
|
+
subtitle: 'Send Chat Message',
|
|
16
|
+
description: 'Send a message to the chat backend via JSON-RPC 2.0 WebSocket',
|
|
17
|
+
defaults: { name: 'Chat Send', color: '#4A90D9' },
|
|
18
|
+
inputs: [{
|
|
19
|
+
name: 'main',
|
|
20
|
+
displayName: 'Input',
|
|
21
|
+
type: 'main' as NodeConnectionType,
|
|
22
|
+
description: 'Trigger input'
|
|
23
|
+
}],
|
|
24
|
+
outputs: [{
|
|
25
|
+
name: 'main',
|
|
26
|
+
displayName: 'Output',
|
|
27
|
+
type: 'main' as NodeConnectionType,
|
|
28
|
+
description: 'message_id, status, timestamp'
|
|
29
|
+
}],
|
|
30
|
+
properties: [
|
|
31
|
+
// Connection settings
|
|
32
|
+
{
|
|
33
|
+
displayName: 'Host',
|
|
34
|
+
name: 'host',
|
|
35
|
+
type: 'string',
|
|
36
|
+
default: 'localhost',
|
|
37
|
+
description: 'Chat server host'
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
displayName: 'Port',
|
|
41
|
+
name: 'port',
|
|
42
|
+
type: 'number',
|
|
43
|
+
default: 8080,
|
|
44
|
+
description: 'Chat server port'
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
displayName: 'Session ID',
|
|
48
|
+
name: 'session_id',
|
|
49
|
+
type: 'string',
|
|
50
|
+
default: 'default',
|
|
51
|
+
description: 'Chat session identifier'
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
displayName: 'API Key',
|
|
55
|
+
name: 'api_key',
|
|
56
|
+
type: 'string',
|
|
57
|
+
default: '',
|
|
58
|
+
description: 'API key for authentication'
|
|
59
|
+
},
|
|
60
|
+
// Message
|
|
61
|
+
{
|
|
62
|
+
displayName: 'Message',
|
|
63
|
+
name: 'content',
|
|
64
|
+
type: 'string',
|
|
65
|
+
default: '',
|
|
66
|
+
required: true,
|
|
67
|
+
typeOptions: { rows: 3 },
|
|
68
|
+
description: 'Message content to send'
|
|
69
|
+
}
|
|
70
|
+
]
|
|
71
|
+
},
|
|
72
|
+
|
|
73
|
+
// Chat Get History Node
|
|
74
|
+
chatHistory: {
|
|
75
|
+
displayName: 'Chat History',
|
|
76
|
+
name: 'chatHistory',
|
|
77
|
+
icon: CHAT_ICON,
|
|
78
|
+
group: ['chat'],
|
|
79
|
+
version: 1,
|
|
80
|
+
subtitle: 'Get Chat History',
|
|
81
|
+
description: 'Retrieve chat message history from the backend',
|
|
82
|
+
defaults: { name: 'Chat History', color: '#4A90D9' },
|
|
83
|
+
inputs: [{
|
|
84
|
+
name: 'main',
|
|
85
|
+
displayName: 'Input',
|
|
86
|
+
type: 'main' as NodeConnectionType,
|
|
87
|
+
description: 'Trigger input'
|
|
88
|
+
}],
|
|
89
|
+
outputs: [{
|
|
90
|
+
name: 'main',
|
|
91
|
+
displayName: 'Output',
|
|
92
|
+
type: 'main' as NodeConnectionType,
|
|
93
|
+
description: 'messages array'
|
|
94
|
+
}],
|
|
95
|
+
properties: [
|
|
96
|
+
{
|
|
97
|
+
displayName: 'Host',
|
|
98
|
+
name: 'host',
|
|
99
|
+
type: 'string',
|
|
100
|
+
default: 'localhost',
|
|
101
|
+
description: 'Chat server host'
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
displayName: 'Port',
|
|
105
|
+
name: 'port',
|
|
106
|
+
type: 'number',
|
|
107
|
+
default: 8080,
|
|
108
|
+
description: 'Chat server port'
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
displayName: 'Session ID',
|
|
112
|
+
name: 'session_id',
|
|
113
|
+
type: 'string',
|
|
114
|
+
default: 'default',
|
|
115
|
+
description: 'Chat session identifier'
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
displayName: 'API Key',
|
|
119
|
+
name: 'api_key',
|
|
120
|
+
type: 'string',
|
|
121
|
+
default: '',
|
|
122
|
+
description: 'API key for authentication'
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
displayName: 'Limit',
|
|
126
|
+
name: 'limit',
|
|
127
|
+
type: 'number',
|
|
128
|
+
default: 50,
|
|
129
|
+
description: 'Maximum number of messages to retrieve'
|
|
130
|
+
}
|
|
131
|
+
]
|
|
132
|
+
}
|
|
133
|
+
};
|
|
134
|
+
|
|
135
|
+
export const CHAT_NODE_TYPES = ['chatSend', 'chatHistory'];
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
// Code Execution Nodes
|
|
2
|
+
import { INodeTypeDescription, NodeConnectionType } from '../types/INodeProperties';
|
|
3
|
+
|
|
4
|
+
export const codeNodes: Record<string, INodeTypeDescription> = {
|
|
5
|
+
pythonExecutor: {
|
|
6
|
+
displayName: 'Python Executor',
|
|
7
|
+
name: 'pythonExecutor',
|
|
8
|
+
icon: 'https://cdn.jsdelivr.net/gh/devicons/devicon/icons/python/python-original.svg',
|
|
9
|
+
group: ['code', 'transform'],
|
|
10
|
+
version: 1,
|
|
11
|
+
subtitle: 'Run Python Code',
|
|
12
|
+
description: 'Execute Python code with input data access',
|
|
13
|
+
defaults: { name: 'Python Executor', color: '#3776AB' },
|
|
14
|
+
inputs: [{ name: 'main', displayName: 'Input', type: 'main' as NodeConnectionType, description: 'Input data as input_data variable' }],
|
|
15
|
+
outputs: [{ name: 'main', displayName: 'Output', type: 'main' as NodeConnectionType, description: 'Python execution result' }],
|
|
16
|
+
properties: [
|
|
17
|
+
{
|
|
18
|
+
displayName: 'Code',
|
|
19
|
+
name: 'code',
|
|
20
|
+
type: 'string',
|
|
21
|
+
default: '# Python Executor - Transform and process data\n#\n# Available:\n# input_data - dict with connected node outputs\n# math, json - imported modules\n# print() - for debugging\n#\n# Set the "output" variable with your result\n\n# Example: Get data from connected node\ndata = input_data.get("start", {}) or input_data\n\n# Process data\nresult = {\n "message": "Hello from Python!",\n "input_received": data,\n "processed": True\n}\n\n# Set output (required)\noutput = result',
|
|
22
|
+
required: true,
|
|
23
|
+
typeOptions: { rows: 5, editor: 'code', editorLanguage: 'python' },
|
|
24
|
+
placeholder: '# Write your Python code here...'
|
|
25
|
+
}
|
|
26
|
+
]
|
|
27
|
+
},
|
|
28
|
+
|
|
29
|
+
javascriptExecutor: {
|
|
30
|
+
displayName: 'JavaScript Executor',
|
|
31
|
+
name: 'javascriptExecutor',
|
|
32
|
+
icon: 'https://cdn.jsdelivr.net/gh/devicons/devicon/icons/javascript/javascript-original.svg',
|
|
33
|
+
group: ['code', 'transform'],
|
|
34
|
+
version: 1,
|
|
35
|
+
subtitle: 'Run JavaScript Code',
|
|
36
|
+
description: 'Execute JavaScript code with input data access',
|
|
37
|
+
defaults: { name: 'JavaScript Executor', color: '#F7DF1E' },
|
|
38
|
+
inputs: [{ name: 'main', displayName: 'Input', type: 'main' as NodeConnectionType, description: 'Input data as input_data variable' }],
|
|
39
|
+
outputs: [{ name: 'main', displayName: 'Output', type: 'main' as NodeConnectionType, description: 'JavaScript execution result' }],
|
|
40
|
+
properties: [
|
|
41
|
+
{
|
|
42
|
+
displayName: 'Code',
|
|
43
|
+
name: 'code',
|
|
44
|
+
type: 'string',
|
|
45
|
+
default: '// JavaScript Executor - Transform and process data\n//\n// Available:\n// input_data - object with connected node outputs\n// console.log() - for debugging\n//\n// Set the "output" variable with your result\n\n// Example: Get data from connected node\nconst data = input_data?.start || input_data || {};\n\n// Process data\nconst result = {\n message: "Hello from JavaScript!",\n input_received: data,\n processed: true\n};\n\n// Set output (required)\noutput = result;',
|
|
46
|
+
required: true,
|
|
47
|
+
typeOptions: { rows: 5, editor: 'code', editorLanguage: 'javascript' },
|
|
48
|
+
placeholder: '// Write your JavaScript code here...'
|
|
49
|
+
}
|
|
50
|
+
]
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
export const CODE_NODE_TYPES = ['pythonExecutor', 'javascriptExecutor'];
|