diff --git a/Environment.js b/Environment.js index 544f5ffa1..6909eb088 100644 --- a/Environment.js +++ b/Environment.js @@ -32,6 +32,7 @@ exports.newEnvironment = function () { PATH_TO_FONTS: path.join(basePath, './Platform/WebServer/Fonts'), DESKTOP_APP_SIGNING_ACCOUNT: 'Social-Trading-Desktop-App-1', DESKTOP_APP_MAX_OUTGOING_PEERS: 1, + TASK_SERVER_APP_MAX_OUTGOING_PEERS: 1, MOBILE_APP_SIGNING_ACCOUNT: 'Social-Trading-Mobile-App-1', SERVER_APP_SIGNING_ACCOUNT: 'Social-Trading-Server-App-1', PLATFORM_APP_SIGNING_ACCOUNT: 'Algo-Traders-Platform-1', diff --git a/Projects/Algorithmic-Trading/UI/Function-Libraries/TradingSessionFunctions.js b/Projects/Algorithmic-Trading/UI/Function-Libraries/TradingSessionFunctions.js index 1a3d66ec7..0ab17f9f4 100644 --- a/Projects/Algorithmic-Trading/UI/Function-Libraries/TradingSessionFunctions.js +++ b/Projects/Algorithmic-Trading/UI/Function-Libraries/TradingSessionFunctions.js @@ -105,6 +105,9 @@ function newAlgorithmicTradingFunctionLibraryTradingSessionFunctions() { 'Managed Stop Loss->Managed Take Profit->' + 'Phase->Formula->Next Phase Event->Move To Phase Event->Phase->' + 'Situation->Condition->Javascript Code->' + + 'Outgoing Signals->Incoming Signals->Signal Reference->' + + 'Trigger On Signal->Trigger Off Signal->Take Position Signal->' + + 'Create Order Signal->Cancel Order Signal->' + 'Close Stage->' + 'Initial Targets->Target Size In Base Asset->Target Size In Quoted Asset->Target Rate->Formula->' + 'Open Execution->Close Execution->' + diff --git a/Projects/Foundations/Schemas/App-Schema/take-position-event.json b/Projects/Foundations/Schemas/App-Schema/take-position-event.json index 6d6c2472f..5a203b569 100644 --- a/Projects/Foundations/Schemas/App-Schema/take-position-event.json +++ b/Projects/Foundations/Schemas/App-Schema/take-position-event.json @@ -21,20 +21,20 @@ "action": "Add UI Object", "actionProject": "Visual-Scripting", "disableIfPropertyIsDefined": true, - "propertyToCheckFor": "sendSignals", + "propertyToCheckFor": "outgoingSignals", "actionFunction": "payload.executeAction", - "label": "Add Send Signals", - "relatedUiObject": "Send Signals", + "label": "Add Outgoing Signals", + "relatedUiObject": "Outgoing Signals", "relatedUiObjectProject": "Trading-Signals" }, { "action": "Add UI Object", "actionProject": "Visual-Scripting", "disableIfPropertyIsDefined": true, - "propertyToCheckFor": "receiveSignals", + "propertyToCheckFor": "incomingSignals", "actionFunction": "payload.executeAction", - "label": "Add Receive Signals", - "relatedUiObject": "Receive Signals", + "label": "Add Incoming Signals", + "relatedUiObject": "Incoming Signals", "relatedUiObjectProject": "Trading-Signals" }, { @@ -67,15 +67,15 @@ "project": "Social-Bots" }, { - "name": "sendSignals", + "name": "outgoingSignals", "type": "node", - "childType": "Send Signals", + "childType": "Outgoing Signals", "project": "Trading-Signals" }, { - "name": "receiveSignals", + "name": "incomingSignals", "type": "node", - "childType": "Receive Signals", + "childType": "Incoming Signals", "project": "Trading-Signals" } ], diff --git a/Projects/Foundations/Schemas/App-Schema/task.json b/Projects/Foundations/Schemas/App-Schema/task.json index c13b68202..bd0891240 100644 --- a/Projects/Foundations/Schemas/App-Schema/task.json +++ b/Projects/Foundations/Schemas/App-Schema/task.json @@ -87,6 +87,16 @@ "actionProject": "Visual-Scripting", "relatedUiObjectProject": "Foundations" }, + { + "action": "Add UI Object", + "disableIfPropertyIsDefined": true, + "propertyToCheckFor": "taskServerAppReference", + "label": "Add Task Server App Reference", + "relatedUiObject": "Task Server App Reference", + "actionFunction": "payload.executeAction", + "actionProject": "Visual-Scripting", + "relatedUiObjectProject": "Governance" + }, { "action": "Delete UI Object", "actionProject": "Visual-Scripting", @@ -134,6 +144,12 @@ "name": "keyReference", "type": "node", "childType": "Key Reference" + }, + { + "name": "taskServerAppReference", + "type": "node", + "childType": "Task Server App Reference", + "project": "Governance" } ], "propertyNameAtParent": "tasks" diff --git a/Projects/Foundations/Schemas/App-Schema/trigger-off-event.json b/Projects/Foundations/Schemas/App-Schema/trigger-off-event.json index 57977f828..65eec5f08 100644 --- a/Projects/Foundations/Schemas/App-Schema/trigger-off-event.json +++ b/Projects/Foundations/Schemas/App-Schema/trigger-off-event.json @@ -21,20 +21,20 @@ "action": "Add UI Object", "actionProject": "Visual-Scripting", "disableIfPropertyIsDefined": true, - "propertyToCheckFor": "sendSignals", + "propertyToCheckFor": "outgoingSignals", "actionFunction": "payload.executeAction", - "label": "Add Send Signals", - "relatedUiObject": "Send Signals", + "label": "Add Outgoing Signals", + "relatedUiObject": "Outgoing Signals", "relatedUiObjectProject": "Trading-Signals" }, { "action": "Add UI Object", "actionProject": "Visual-Scripting", "disableIfPropertyIsDefined": true, - "propertyToCheckFor": "receiveSignals", + "propertyToCheckFor": "incomingSignals", "actionFunction": "payload.executeAction", - "label": "Add Receive Signals", - "relatedUiObject": "Receive Signals", + "label": "Add Incoming Signals", + "relatedUiObject": "Incoming Signals", "relatedUiObjectProject": "Trading-Signals" }, { @@ -67,15 +67,15 @@ "project": "Social-Bots" }, { - "name": "sendSignals", + "name": "outgoingSignals", "type": "node", - "childType": "Send Signals", + "childType": "Outgoing Signals", "project": "Trading-Signals" }, { - "name": "receiveSignals", + "name": "incomingSignals", "type": "node", - "childType": "Receive Signals", + "childType": "Incoming Signals", "project": "Trading-Signals" } ], diff --git a/Projects/Foundations/Schemas/App-Schema/trigger-on-event.json b/Projects/Foundations/Schemas/App-Schema/trigger-on-event.json index 270ab9c48..2b7a7e9ab 100644 --- a/Projects/Foundations/Schemas/App-Schema/trigger-on-event.json +++ b/Projects/Foundations/Schemas/App-Schema/trigger-on-event.json @@ -21,20 +21,20 @@ "action": "Add UI Object", "actionProject": "Visual-Scripting", "disableIfPropertyIsDefined": true, - "propertyToCheckFor": "sendSignals", + "propertyToCheckFor": "outgoingSignals", "actionFunction": "payload.executeAction", - "label": "Add Send Signals", - "relatedUiObject": "Send Signals", + "label": "Add Outgoing Signals", + "relatedUiObject": "Outgoing Signals", "relatedUiObjectProject": "Trading-Signals" }, { "action": "Add UI Object", "actionProject": "Visual-Scripting", "disableIfPropertyIsDefined": true, - "propertyToCheckFor": "receiveSignals", + "propertyToCheckFor": "incomingSignals", "actionFunction": "payload.executeAction", - "label": "Add Receive Signals", - "relatedUiObject": "Receive Signals", + "label": "Add Incoming Signals", + "relatedUiObject": "Incoming Signals", "relatedUiObjectProject": "Trading-Signals" }, { @@ -67,15 +67,15 @@ "project": "Social-Bots" }, { - "name": "sendSignals", + "name": "outgoingSignals", "type": "node", - "childType": "Send Signals", + "childType": "Outgoing Signals", "project": "Trading-Signals" }, { - "name": "receiveSignals", + "name": "incomingSignals", "type": "node", - "childType": "Receive Signals", + "childType": "Incoming Signals", "project": "Trading-Signals" } ], diff --git a/Projects/Foundations/TS/Globals/TaskConstants.js b/Projects/Foundations/TS/Globals/TaskConstants.js index a3c8e5cc9..68b8ef837 100644 --- a/Projects/Foundations/TS/Globals/TaskConstants.js +++ b/Projects/Foundations/TS/Globals/TaskConstants.js @@ -9,6 +9,7 @@ exports.newFoundationsGlobalsTaskConstants = function () { PROJECT_DEFINITION_NODE: undefined, PROJECTS_SCHEMA: undefined, EVENT_SERVER_CLIENT_MODULE_OBJECT: undefined, // This is an instance of the Event Server Client pointing to the localhost server + P2P_NETWORK: undefined, TASK_HEARTBEAT_INTERVAL_HANDLER: undefined } diff --git a/Projects/Foundations/UI/Function-Libraries/TaskFunctions.js b/Projects/Foundations/UI/Function-Libraries/TaskFunctions.js index 3e945c6ef..6085e9d2e 100644 --- a/Projects/Foundations/UI/Function-Libraries/TaskFunctions.js +++ b/Projects/Foundations/UI/Function-Libraries/TaskFunctions.js @@ -116,11 +116,13 @@ function newFoundationsFunctionLibraryTaskFunctions() { } let taskLightingPath = '->Task->' + + 'Task Server App Reference->Task Server App->Signing Account->' + 'Sensor Bot Instance->' + 'API Data Fetcher Bot Instance->' + 'Indicator Bot Instance->' + 'Trading Bot Instance->' + 'Learning Bot Instance->' + + 'Social Trading Bot Reference->Signing Account->' + 'Sensor Process Instance->Time Frames Filter->API Data Fetcher Process Instance->Indicator Process Instance->Trading Process Instance->Learning Process Instance->' + 'Social Trading Bot Reference->Social Trading Bot->Signing Account->' + 'Execution Started Event->' + diff --git a/Projects/Trading-Signals/Icons/receive-signals.png b/Projects/Governance/Icons/task-server-app-reference.png similarity index 100% rename from Projects/Trading-Signals/Icons/receive-signals.png rename to Projects/Governance/Icons/task-server-app-reference.png diff --git a/Projects/Trading-Signals/Icons/send-signals.png b/Projects/Governance/Icons/task-server-app.png similarity index 100% rename from Projects/Trading-Signals/Icons/send-signals.png rename to Projects/Governance/Icons/task-server-app.png diff --git a/Projects/Governance/Plugins/User-Profiles/Luis-Fernando-Molina.json b/Projects/Governance/Plugins/User-Profiles/Luis-Fernando-Molina.json index d96ed6aa2..11d013a53 100644 --- a/Projects/Governance/Plugins/User-Profiles/Luis-Fernando-Molina.json +++ b/Projects/Governance/Plugins/User-Profiles/Luis-Fernando-Molina.json @@ -16981,11 +16981,11 @@ "id": "f8182a9c-f830-4ec1-a238-ac3a5efd69e6", "savedPayload": { "position": { - "x": 33633.333333333336, + "x": 37800, "y": 18800 }, "targetPosition": { - "x": 33333.333333333336, + "x": 37500, "y": 18800 }, "floatingObject": { @@ -17008,11 +17008,11 @@ "id": "9870ca2a-cefc-484b-b7fc-206d62782ebc", "savedPayload": { "position": { - "x": 33483.333333333336, + "x": 37650, "y": 19059.807621135333 }, "targetPosition": { - "x": 33333.333333333336, + "x": 37500, "y": 18800 }, "floatingObject": { @@ -17047,16 +17047,16 @@ "signingAccount": { "type": "Signing Account", "name": "New Signing Account", - "config": "{\n \"codeName\": \"Social-Trading-Desktop-App-1\",\n \"signature\": {\n \"message\": \"Luis-Fernando-Molina\",\n \"messageHash\": \"0x443abf3389e332a62d21b84dd12e271cb428d334195d3aeb986ca85ee53cccb9\",\n \"v\": \"0x1c\",\n \"r\": \"0xc0aaf26d4eda5d88a99ac03d9efc3596ef255eac4dfd876d07140ac8abe3685d\",\n \"s\": \"0x7f8b4fbded9159a5b68f87f509f9055d6bb05168686bd810ab97255b1330ded1\",\n \"signature\": \"0xc0aaf26d4eda5d88a99ac03d9efc3596ef255eac4dfd876d07140ac8abe3685d7f8b4fbded9159a5b68f87f509f9055d6bb05168686bd810ab97255b1330ded11c\"\n }\n}", + "config": "{\n \"codeName\": \"Social-Trading-Desktop-App-1\",\n \"signature\": {\n \"message\": \"Luis-Fernando-Molina\",\n \"messageHash\": \"0x443abf3389e332a62d21b84dd12e271cb428d334195d3aeb986ca85ee53cccb9\",\n \"v\": \"0x1c\",\n \"r\": \"0x898b2153520afe468c285dc7432b52f2e61e5572215917a3761e1ebffbd55bcd\",\n \"s\": \"0x3fdd357a3bde3776062cbfb29ed6b82fa4b071fe0e2339a2b42b9ec47ada851f\",\n \"signature\": \"0x898b2153520afe468c285dc7432b52f2e61e5572215917a3761e1ebffbd55bcd3fdd357a3bde3776062cbfb29ed6b82fa4b071fe0e2339a2b42b9ec47ada851f1c\"\n }\n}", "project": "Governance", - "id": "37571576-8c99-49d9-ab4d-50aa4707d7ba", + "id": "71e01eca-2d04-43fa-8cb2-144b64507402", "savedPayload": { "position": { - "x": 33780.59428913476, + "x": 37947.26095580142, "y": 19649.585369022054 }, "targetPosition": { - "x": 33520.786667999426, + "x": 37687.45333466609, "y": 19499.585369022054 }, "floatingObject": { @@ -17075,11 +17075,11 @@ "id": "33c4f8e9-f8a3-4dea-91f4-1539e3aed0d3", "savedPayload": { "position": { - "x": 33520.786667999426, + "x": 37687.45333466609, "y": 19499.585369022054 }, "targetPosition": { - "x": 33260.97904686409, + "x": 37427.64571353076, "y": 19349.585369022054 }, "floatingObject": { @@ -17103,16 +17103,16 @@ "signingAccount": { "type": "Signing Account", "name": "New Signing Account", - "config": "{\n \"codeName\": \"Social-Trading-Desktop-App-2\",\n \"signature\": {\n \"message\": \"Luis-Fernando-Molina\",\n \"messageHash\": \"0x443abf3389e332a62d21b84dd12e271cb428d334195d3aeb986ca85ee53cccb9\",\n \"v\": \"0x1b\",\n \"r\": \"0x3e67720de3bdbf45880cf18c0fe04c5e41300abdaa4ae91b0966738187d3032b\",\n \"s\": \"0x148e2948cdd112046bacac87fdaf5111e012318a201c0543334e02c9e7b0c649\",\n \"signature\": \"0x3e67720de3bdbf45880cf18c0fe04c5e41300abdaa4ae91b0966738187d3032b148e2948cdd112046bacac87fdaf5111e012318a201c0543334e02c9e7b0c6491b\"\n }\n}", + "config": "{\n \"codeName\": \"Social-Trading-Desktop-App-2\",\n \"signature\": {\n \"message\": \"Luis-Fernando-Molina\",\n \"messageHash\": \"0x443abf3389e332a62d21b84dd12e271cb428d334195d3aeb986ca85ee53cccb9\",\n \"v\": \"0x1b\",\n \"r\": \"0xf6cd2df3ab15cd9652bd018ee571b120faa2003a91f61d7b7836220d9a712355\",\n \"s\": \"0x5c8f89f5eabd9e43a0e24383d475c1b56ea760fe1190a67a43dc139b1567d64c\",\n \"signature\": \"0xf6cd2df3ab15cd9652bd018ee571b120faa2003a91f61d7b7836220d9a7123555c8f89f5eabd9e43a0e24383d475c1b56ea760fe1190a67a43dc139b1567d64c1b\"\n }\n}", "project": "Governance", - "id": "947be666-7f33-4b4b-88ca-5d579b3e3158", + "id": "95b48c78-cfba-4457-aab0-270225a4d2f7", "savedPayload": { "position": { - "x": 33416.27047392561, + "x": 37582.93714059227, "y": 19929.140864795496 }, "targetPosition": { - "x": 33338.62476039485, + "x": 37505.291427061515, "y": 19639.363116908775 }, "floatingObject": { @@ -17131,11 +17131,11 @@ "id": "ad887d5f-998f-48c5-9db7-78e17c66f4e4", "savedPayload": { "position": { - "x": 33338.62476039485, + "x": 37505.291427061515, "y": 19639.363116908775 }, "targetPosition": { - "x": 33260.97904686409, + "x": 37427.64571353076, "y": 19349.585369022054 }, "floatingObject": { @@ -17161,16 +17161,16 @@ "signingAccount": { "type": "Signing Account", "name": "New Signing Account", - "config": "{\n \"codeName\": \"Algo-Traders-Platform-1\",\n \"signature\": {\n \"message\": \"Luis-Fernando-Molina\",\n \"messageHash\": \"0x443abf3389e332a62d21b84dd12e271cb428d334195d3aeb986ca85ee53cccb9\",\n \"v\": \"0x1c\",\n \"r\": \"0x00127bd29163215cf0a4b695f7514c11d9ee7a7d2c8440a1b957b02d7702ce0c\",\n \"s\": \"0x43d93148fc30f3e8e9ed8fbbff9ad324841e42c08de4520ad6b00e3c946346f3\",\n \"signature\": \"0x00127bd29163215cf0a4b695f7514c11d9ee7a7d2c8440a1b957b02d7702ce0c43d93148fc30f3e8e9ed8fbbff9ad324841e42c08de4520ad6b00e3c946346f31c\"\n }\n}", + "config": "{\n \"codeName\": \"Algo-Traders-Platform-1\",\n \"signature\": {\n \"message\": \"Luis-Fernando-Molina\",\n \"messageHash\": \"0x443abf3389e332a62d21b84dd12e271cb428d334195d3aeb986ca85ee53cccb9\",\n \"v\": \"0x1b\",\n \"r\": \"0x49610638d20ae306ccfb31e65bde5fdbf47203a97ad01d9f4378e7321084a727\",\n \"s\": \"0x2be4f2d5072fb88475d2f07beacf09295e46f246785e976e58794923f00d002b\",\n \"signature\": \"0x49610638d20ae306ccfb31e65bde5fdbf47203a97ad01d9f4378e7321084a7272be4f2d5072fb88475d2f07beacf09295e46f246785e976e58794923f00d002b1b\"\n }\n}", "project": "Governance", - "id": "d29d5158-2332-437e-9b58-deb65df48932", + "id": "aa0a9beb-3498-4184-97a2-5f85181199fa", "savedPayload": { "position": { - "x": 32960.97904686409, + "x": 37127.64571353076, "y": 19869.20061129272 }, "targetPosition": { - "x": 33110.97904686409, + "x": 37277.64571353076, "y": 19609.392990157387 }, "floatingObject": { @@ -17189,11 +17189,11 @@ "id": "0a06a54b-825b-4ff4-93cc-36465348ad26", "savedPayload": { "position": { - "x": 33110.97904686409, + "x": 37277.64571353076, "y": 19609.392990157387 }, "targetPosition": { - "x": 33260.97904686409, + "x": 37427.64571353076, "y": 19349.585369022054 }, "floatingObject": { @@ -17213,11 +17213,11 @@ "id": "abcc6b01-099e-42b4-84cc-24fb6daa7a15", "savedPayload": { "position": { - "x": 33260.97904686409, + "x": 37427.64571353076, "y": 19349.585369022054 }, "targetPosition": { - "x": 33183.333333333336, + "x": 37350, "y": 19059.807621135333 }, "floatingObject": { @@ -17247,16 +17247,16 @@ "signingAccount": { "type": "Signing Account", "name": "New Signing Account", - "config": "{\n \"codeName\": \"Social-Trading-Mobile-App-1\",\n \"signature\": {\n \"message\": \"Luis-Fernando-Molina\",\n \"messageHash\": \"0x443abf3389e332a62d21b84dd12e271cb428d334195d3aeb986ca85ee53cccb9\",\n \"v\": \"0x1b\",\n \"r\": \"0x18d7d409ae20bece50d35d9a5e080e45ec8b749bc30853c3be1becf553b6d19e\",\n \"s\": \"0x3d25345dc9125c99d85c784113523cc04b3770db4a78e18dbbe9bcfb7a154654\",\n \"signature\": \"0x18d7d409ae20bece50d35d9a5e080e45ec8b749bc30853c3be1becf553b6d19e3d25345dc9125c99d85c784113523cc04b3770db4a78e18dbbe9bcfb7a1546541b\"\n }\n}", + "config": "{\n \"codeName\": \"Social-Trading-Mobile-App-1\",\n \"signature\": {\n \"message\": \"Luis-Fernando-Molina\",\n \"messageHash\": \"0x443abf3389e332a62d21b84dd12e271cb428d334195d3aeb986ca85ee53cccb9\",\n \"v\": \"0x1b\",\n \"r\": \"0x79f3cfdf758eeaeadcfca9163d9b8d58fe10ad0b4e8f2c7ce1da90e262058a1a\",\n \"s\": \"0x41ed971b2a304885eac9101f6d0e70964ef707b8589f2ce0dd4058737ab87611\",\n \"signature\": \"0x79f3cfdf758eeaeadcfca9163d9b8d58fe10ad0b4e8f2c7ce1da90e262058a1a41ed971b2a304885eac9101f6d0e70964ef707b8589f2ce0dd4058737ab876111b\"\n }\n}", "project": "Governance", - "id": "5dea7a2d-a534-4391-a801-a3bef25dacfa", + "id": "53d1e709-d520-44a9-9321-43cd5f1df872", "savedPayload": { "position": { - "x": 32733.333333333336, + "x": 36900, "y": 19839.23048454133 }, "targetPosition": { - "x": 32883.333333333336, + "x": 37050, "y": 19579.422863406 }, "floatingObject": { @@ -17275,11 +17275,11 @@ "id": "42843263-b1f3-4e4e-885a-5d8b9d7b647a", "savedPayload": { "position": { - "x": 32883.333333333336, + "x": 37050, "y": 19579.422863406 }, "targetPosition": { - "x": 33033.333333333336, + "x": 37200, "y": 19319.615242270665 }, "floatingObject": { @@ -17299,11 +17299,11 @@ "id": "de1b0ac7-1bcf-4412-af43-4597443c0ec3", "savedPayload": { "position": { - "x": 33033.333333333336, + "x": 37200, "y": 19319.615242270665 }, "targetPosition": { - "x": 33183.333333333336, + "x": 37350, "y": 19059.807621135333 }, "floatingObject": { @@ -17324,6 +17324,120 @@ "name": "New Server Apps", "config": "{}", "project": "Governance", + "taskServerApps": [ + { + "type": "Task Server App", + "name": "Task Server App #1", + "config": "{\n \"codeName\": \"Task-Server-App-1\"\n}", + "project": "Governance", + "signingAccount": { + "type": "Signing Account", + "name": "New Signing Account", + "config": "{\n \"codeName\": \"Task-Server-App-1\",\n \"signature\": {\n \"message\": \"Luis-Fernando-Molina\",\n \"messageHash\": \"0x443abf3389e332a62d21b84dd12e271cb428d334195d3aeb986ca85ee53cccb9\",\n \"v\": \"0x1b\",\n \"r\": \"0xe631e24d501ccb6de25efdffedeb36e75d678d426d269aca7fa29116886ca6cd\",\n \"s\": \"0x3c16d8e0cf5220b5bf2078cab8d8aa48f1e0ef777228c19a5cf3d0ce7ac5340d\",\n \"signature\": \"0xe631e24d501ccb6de25efdffedeb36e75d678d426d269aca7fa29116886ca6cd3c16d8e0cf5220b5bf2078cab8d8aa48f1e0ef777228c19a5cf3d0ce7ac5340d1b\"\n }\n}", + "project": "Governance", + "id": "faa2d0ea-4e8d-4e79-9e21-e0006cce48c6", + "savedPayload": { + "position": { + "x": 36760.22225211328, + "y": 19657.068576936756 + }, + "targetPosition": { + "x": 36910.22225211328, + "y": 19397.260955801423 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "id": "c4bdbb6a-5172-4f94-856e-02e930a8d8a9", + "savedPayload": { + "position": { + "x": 36910.22225211328, + "y": 19397.260955801423 + }, + "targetPosition": { + "x": 37060.22225211328, + "y": 19137.45333466609 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Task Server App", + "name": "Task Server App #2", + "config": "{\n \"codeName\": \"Task-Server-App-2\"\n}", + "project": "Governance", + "signingAccount": { + "type": "Signing Account", + "name": "New Signing Account", + "config": "{\n \"codeName\": \"Task-Server-App-2\",\n \"signature\": {\n \"message\": \"Luis-Fernando-Molina\",\n \"messageHash\": \"0x443abf3389e332a62d21b84dd12e271cb428d334195d3aeb986ca85ee53cccb9\",\n \"v\": \"0x1c\",\n \"r\": \"0x3e8698a5bf00f3b5d13eda57ce6dc77a0670915b6277b160e8c23df30553a3cb\",\n \"s\": \"0x2e7d7ac3fb1100a55886a30ae9a62484040dfbf64995695a4de3ef9f2c9cef9e\",\n \"signature\": \"0x3e8698a5bf00f3b5d13eda57ce6dc77a0670915b6277b160e8c23df30553a3cb2e7d7ac3fb1100a55886a30ae9a62484040dfbf64995695a4de3ef9f2c9cef9e1c\"\n }\n}", + "project": "Governance", + "id": "e85e08cc-a688-4ff5-b515-fb3ca67708ee", + "savedPayload": { + "position": { + "x": 36480.66675633984, + "y": 19292.744761727605 + }, + "targetPosition": { + "x": 36770.44450422656, + "y": 19215.099048196847 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "id": "bd3e6d5a-900f-4067-ab89-0a06d768c43b", + "savedPayload": { + "position": { + "x": 36770.44450422656, + "y": 19215.099048196847 + }, + "targetPosition": { + "x": 37060.22225211328, + "y": 19137.45333466609 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + } + ], "socialTradingServerApps": [ { "type": "Social Trading Server App", @@ -17333,17 +17447,17 @@ "signingAccount": { "type": "Signing Account", "name": "New Signing Account", - "config": "{\n \"codeName\": \"Social-Trading-Server-App-1\",\n \"signature\": {\n \"message\": \"Luis-Fernando-Molina\",\n \"messageHash\": \"0x443abf3389e332a62d21b84dd12e271cb428d334195d3aeb986ca85ee53cccb9\",\n \"v\": \"0x1b\",\n \"r\": \"0x62dbf304e3178ed47587598d9d7eb3def4f149c946fb59b6a6880334d4312c03\",\n \"s\": \"0x1803dfd451aa6fe660b70a789854875fb9996efaf64c5ca02c91a8e58afe94bf\",\n \"signature\": \"0x62dbf304e3178ed47587598d9d7eb3def4f149c946fb59b6a6880334d4312c031803dfd451aa6fe660b70a789854875fb9996efaf64c5ca02c91a8e58afe94bf1b\"\n }\n}", + "config": "{\n \"codeName\": \"Social-Trading-Server-App-1\",\n \"signature\": {\n \"message\": \"Luis-Fernando-Molina\",\n \"messageHash\": \"0x443abf3389e332a62d21b84dd12e271cb428d334195d3aeb986ca85ee53cccb9\",\n \"v\": \"0x1c\",\n \"r\": \"0x944f1d46c6e725609e832f380de33e9871a28606a604d74c9fd9be33dbb6cec2\",\n \"s\": \"0x75ce5a3316bdefebfd28f7ea1d462a1751d1ab76d5997ae4c9cf14fe9a3467f4\",\n \"signature\": \"0x944f1d46c6e725609e832f380de33e9871a28606a604d74c9fd9be33dbb6cec275ce5a3316bdefebfd28f7ea1d462a1751d1ab76d5997ae4c9cf14fe9a3467f41c\"\n }\n}", "project": "Governance", - "id": "6285c67f-f669-44bf-8cfe-46309e6da4e2", + "id": "553eb437-f487-4cd0-95b0-8ba6bb3d5f51", "savedPayload": { "position": { - "x": 32314.000089673173, - "y": 19292.744761727605 + "x": 36540.60700984261, + "y": 18837.45333466609 }, "targetPosition": { - "x": 32603.777837559894, - "y": 19215.099048196847 + "x": 36800.414630977946, + "y": 18987.45333466609 }, "floatingObject": { "isPinned": false, @@ -17361,11 +17475,11 @@ "id": "0216b143-0e46-4da6-b2cb-e95556fc1bfd", "savedPayload": { "position": { - "x": 32603.777837559894, - "y": 19215.099048196847 + "x": 36800.414630977946, + "y": 18987.45333466609 }, "targetPosition": { - "x": 32893.555585446615, + "x": 37060.22225211328, "y": 19137.45333466609 }, "floatingObject": { @@ -17385,11 +17499,11 @@ "id": "b0db0d19-5529-4b96-ab4f-ac7d54e1e6db", "savedPayload": { "position": { - "x": 32893.555585446615, + "x": 37060.22225211328, "y": 19137.45333466609 }, "targetPosition": { - "x": 33183.333333333336, + "x": 37350, "y": 19059.807621135333 }, "floatingObject": { @@ -17408,17 +17522,17 @@ "id": "c57bd931-a0e1-4cf2-9270-b33f08839484", "savedPayload": { "position": { - "x": 33183.333333333336, + "x": 37350, "y": 19059.807621135333 }, "targetPosition": { - "x": 33333.333333333336, + "x": 37500, "y": 18800 }, "floatingObject": { "isPinned": false, "isFrozen": false, - "isCollapsed": true, + "isCollapsed": false, "angleToParent": 1, "distanceToParent": 3, "arrangementStyle": 0 @@ -17592,13 +17706,13 @@ "signingAccount": { "type": "Signing Account", "name": "New Signing Account", - "config": "{\n \"codeName\": \"Social-Trading-Bot-1\",\n \"signature\": {\n \"message\": \"Luis-Fernando-Molina\",\n \"messageHash\": \"0x443abf3389e332a62d21b84dd12e271cb428d334195d3aeb986ca85ee53cccb9\",\n \"v\": \"0x1b\",\n \"r\": \"0x5031e2c0c479c5ca15c9328bc1c03df6a6c95b9a656185e435666154fbb8faeb\",\n \"s\": \"0x667728bba0ce67a3b691ea4c63d9143f42d03136e5314e50955bbcb111cb51f3\",\n \"signature\": \"0x5031e2c0c479c5ca15c9328bc1c03df6a6c95b9a656185e435666154fbb8faeb667728bba0ce67a3b691ea4c63d9143f42d03136e5314e50955bbcb111cb51f31b\"\n }\n}", + "config": "{\n \"codeName\": \"Social-Trading-Bot-1\",\n \"signature\": {\n \"message\": \"Luis-Fernando-Molina\",\n \"messageHash\": \"0x443abf3389e332a62d21b84dd12e271cb428d334195d3aeb986ca85ee53cccb9\",\n \"v\": \"0x1c\",\n \"r\": \"0xf60f00a96558f3fc94e71d59460c3bdd43e62f0c5706bb68805280817b840ac6\",\n \"s\": \"0x63b83b8d1629709d9ccca81efee72d9950e224078a9e396f1ffdb5cc2fcd6d51\",\n \"signature\": \"0xf60f00a96558f3fc94e71d59460c3bdd43e62f0c5706bb68805280817b840ac663b83b8d1629709d9ccca81efee72d9950e224078a9e396f1ffdb5cc2fcd6d511c\"\n }\n}", "project": "Governance", - "id": "363574ea-edf4-4cab-8b52-c04ce8f037c6", + "id": "ca84c500-2c93-441e-be41-0d5dadfa62be", "savedPayload": { "position": { - "x": 32213.71809106267, - "y": 19100 + "x": 32452.525712198003, + "y": 19030 }, "targetPosition": { "x": 32473.525712198003, @@ -18553,13 +18667,13 @@ "signingAccount": { "type": "Signing Account", "name": "New Signing Account", - "config": "{\n \"codeName\": \"Social-Trading-Bot-2\",\n \"signature\": {\n \"message\": \"Luis-Fernando-Molina\",\n \"messageHash\": \"0x443abf3389e332a62d21b84dd12e271cb428d334195d3aeb986ca85ee53cccb9\",\n \"v\": \"0x1c\",\n \"r\": \"0xbd2b196f2f930a15a87c5a8aaa992a444bf0faa8e76a5caa7321a1cc9a2d4fdc\",\n \"s\": \"0x190b24c211994122a10664864d1d1a41c094bacb9c6c03d9bdbb76259550953c\",\n \"signature\": \"0xbd2b196f2f930a15a87c5a8aaa992a444bf0faa8e76a5caa7321a1cc9a2d4fdc190b24c211994122a10664864d1d1a41c094bacb9c6c03d9bdbb76259550953c1c\"\n }\n}", + "config": "{\n \"codeName\": \"Social-Trading-Bot-2\",\n \"signature\": {\n \"message\": \"Luis-Fernando-Molina\",\n \"messageHash\": \"0x443abf3389e332a62d21b84dd12e271cb428d334195d3aeb986ca85ee53cccb9\",\n \"v\": \"0x1c\",\n \"r\": \"0xddeff57782baa1f4650b7bcaf293102a9d5b2260db3176e2e9ab4d046d4339a5\",\n \"s\": \"0x3640cbc79138edab416ea73b89eccbce87c9fe04628bb3e8964c4650fb82dec3\",\n \"signature\": \"0xddeff57782baa1f4650b7bcaf293102a9d5b2260db3176e2e9ab4d046d4339a53640cbc79138edab416ea73b89eccbce87c9fe04628bb3e8964c4650fb82dec31c\"\n }\n}", "project": "Governance", - "id": "dc038dd9-ce63-4d0d-89ac-d8c97191bafa", + "id": "5f1fdb9a-c7ae-4760-a188-80ee15eff0ae", "savedPayload": { "position": { - "x": 32173.525712198003, - "y": 18650 + "x": 32451.525712198003, + "y": 18562 }, "targetPosition": { "x": 32473.525712198003, @@ -18859,17 +18973,17 @@ "id": "54ced611-b518-435f-a284-935666ef47db", "savedPayload": { "position": { - "x": 33033.333333333336, + "x": 37200, "y": 18800 }, "targetPosition": { - "x": 33333.333333333336, + "x": 37500, "y": 18800 }, "floatingObject": { "isPinned": false, "isFrozen": false, - "isCollapsed": false, + "isCollapsed": true, "angleToParent": 1, "distanceToParent": 3, "arrangementStyle": 0 @@ -19029,13 +19143,13 @@ "signingAccount": { "type": "Signing Account", "name": "New Signing Account", - "config": "{\n \"codeName\": \"Social-Persona-1\",\n \"signature\": {\n \"message\": \"Luis-Fernando-Molina\",\n \"messageHash\": \"0x443abf3389e332a62d21b84dd12e271cb428d334195d3aeb986ca85ee53cccb9\",\n \"v\": \"0x1b\",\n \"r\": \"0xad610ea563d92f743911519fd2aeaa975dcd68a2eeb0bdf7608e653899781069\",\n \"s\": \"0x3bafa717f124faaa58cac2ef2a7dbb3fba9fb39e0868a9563c03588c2f433d46\",\n \"signature\": \"0xad610ea563d92f743911519fd2aeaa975dcd68a2eeb0bdf7608e6538997810693bafa717f124faaa58cac2ef2a7dbb3fba9fb39e0868a9563c03588c2f433d461b\"\n }\n}", + "config": "{\n \"codeName\": \"Social-Persona-1\",\n \"signature\": {\n \"message\": \"Luis-Fernando-Molina\",\n \"messageHash\": \"0x443abf3389e332a62d21b84dd12e271cb428d334195d3aeb986ca85ee53cccb9\",\n \"v\": \"0x1c\",\n \"r\": \"0xaabe9a8f34b22d058200320e218af3bd58f77ba26127903f72f4b39b4fec9199\",\n \"s\": \"0x5e8d7ebe876a3712611196205aa664b96d20ce547b04d50420fb27baa4b7e721\",\n \"signature\": \"0xaabe9a8f34b22d058200320e218af3bd58f77ba26127903f72f4b39b4fec91995e8d7ebe876a3712611196205aa664b96d20ce547b04d50420fb27baa4b7e7211c\"\n }\n}", "project": "Governance", - "id": "f7fdce94-4bd6-49f9-b7d8-383163ef2103", + "id": "e4f9d4a6-c9d1-4d7a-a2e0-dc7d4105768e", "savedPayload": { "position": { - "x": 37289.19189848183, - "y": 18276.606064796506 + "x": 37249.19189848183, + "y": 18241.606064796506 }, "targetPosition": { "x": 37229.19189848183, @@ -19085,13 +19199,13 @@ "signingAccount": { "type": "Signing Account", "name": "New Signing Account", - "config": "{\n \"codeName\": \"Social-Persona-2\",\n \"signature\": {\n \"message\": \"Luis-Fernando-Molina\",\n \"messageHash\": \"0x443abf3389e332a62d21b84dd12e271cb428d334195d3aeb986ca85ee53cccb9\",\n \"v\": \"0x1b\",\n \"r\": \"0xa0a840db6208d9f780bad53a54312e691cb629c9c718a2ea0ad2c80b73e8f5fd\",\n \"s\": \"0x53524acb6f10a4d0955a5a1aede8c0bade23396c9be599a0fae164a8eb785882\",\n \"signature\": \"0xa0a840db6208d9f780bad53a54312e691cb629c9c718a2ea0ad2c80b73e8f5fd53524acb6f10a4d0955a5a1aede8c0bade23396c9be599a0fae164a8eb7858821b\"\n }\n}", + "config": "{\n \"codeName\": \"Social-Persona-2\",\n \"signature\": {\n \"message\": \"Luis-Fernando-Molina\",\n \"messageHash\": \"0x443abf3389e332a62d21b84dd12e271cb428d334195d3aeb986ca85ee53cccb9\",\n \"v\": \"0x1b\",\n \"r\": \"0x71413077e5544c24a616c565fb761f45454233e18b2b29bc13b9aca5e249b5ac\",\n \"s\": \"0x2d25d9101c4dde0d1ab9e2ebcfc79e156a051350741f41083b7d6162ce220436\",\n \"signature\": \"0x71413077e5544c24a616c565fb761f45454233e18b2b29bc13b9aca5e249b5ac2d25d9101c4dde0d1ab9e2ebcfc79e156a051350741f41083b7d6162ce2204361b\"\n }\n}", "project": "Governance", - "id": "4fbd1349-c156-4716-8f7c-208f14241a4b", + "id": "bd27765f-4612-4b57-befe-3d76d764d668", "savedPayload": { "position": { - "x": 37617.670272136376, - "y": 18269.84978460961 + "x": 37569.670272136376, + "y": 18187.84978460961 }, "targetPosition": { "x": 37521.670272136376, @@ -19137,11 +19251,11 @@ "id": "e453990c-57e2-4886-9dc1-060cd2750467", "savedPayload": { "position": { - "x": 33183.333333333336, + "x": 37350, "y": 18540.192378864667 }, "targetPosition": { - "x": 33333.333333333336, + "x": 37500, "y": 18800 }, "floatingObject": { @@ -19171,16 +19285,16 @@ "signingAccount": { "type": "Signing Account", "name": "New Signing Account", - "config": "{\n \"codeName\": \"P2P-Network-Node-1\",\n \"signature\": {\n \"message\": \"Luis-Fernando-Molina\",\n \"messageHash\": \"0x443abf3389e332a62d21b84dd12e271cb428d334195d3aeb986ca85ee53cccb9\",\n \"v\": \"0x1b\",\n \"r\": \"0x6c2ef80f6cb8b4dd1203006fde816d29425fc3ae118caaf18705dbccf9b56ccf\",\n \"s\": \"0x024ca25e8145f4638d62b9b45906bbf7ce91201c1e513875761333301ba1db3f\",\n \"signature\": \"0x6c2ef80f6cb8b4dd1203006fde816d29425fc3ae118caaf18705dbccf9b56ccf024ca25e8145f4638d62b9b45906bbf7ce91201c1e513875761333301ba1db3f1b\"\n }\n}", + "config": "{\n \"codeName\": \"P2P-Network-Node-1\",\n \"signature\": {\n \"message\": \"Luis-Fernando-Molina\",\n \"messageHash\": \"0x443abf3389e332a62d21b84dd12e271cb428d334195d3aeb986ca85ee53cccb9\",\n \"v\": \"0x1c\",\n \"r\": \"0xa519983fd30d4340dde3aed5d8eaa99befeb611ddc08c99e8eaa629491b6faf5\",\n \"s\": \"0x3083736197c5d4f0d071168f9becdb113cb93f054e2370ed11b555a047d70eb3\",\n \"signature\": \"0xa519983fd30d4340dde3aed5d8eaa99befeb611ddc08c99e8eaa629491b6faf53083736197c5d4f0d071168f9becdb113cb93f054e2370ed11b555a047d70eb31c\"\n }\n}", "project": "Governance", - "id": "f8feca97-5cf6-4731-a774-155fb8f8222a", + "id": "99c27360-3dbf-44c6-ba6c-eea9da1711ce", "savedPayload": { "position": { - "x": 33483.333333333336, + "x": 37650, "y": 17940.192378864667 }, "targetPosition": { - "x": 33483.333333333336, + "x": 37650, "y": 18240.192378864667 }, "floatingObject": { @@ -19199,11 +19313,11 @@ "id": "56cc0c90-4a58-4e25-a63f-4f9a6921d0f3", "savedPayload": { "position": { - "x": 33483.333333333336, + "x": 37650, "y": 18240.192378864667 }, "targetPosition": { - "x": 33483.333333333336, + "x": 37650, "y": 18540.192378864667 }, "floatingObject": { @@ -19227,16 +19341,16 @@ "signingAccount": { "type": "Signing Account", "name": "New Signing Account", - "config": "{\n \"codeName\": \"P2P-Network-Node-2\",\n \"signature\": {\n \"message\": \"Luis-Fernando-Molina\",\n \"messageHash\": \"0x443abf3389e332a62d21b84dd12e271cb428d334195d3aeb986ca85ee53cccb9\",\n \"v\": \"0x1b\",\n \"r\": \"0x9323774a587c6aeef9a52cbf35b2cdc9543a07ac7010c418224f48ed44da8b8f\",\n \"s\": \"0x160bcfc59a7d10d7bcd33fcfee3bd399061a1b6fab54c3f355dae71dbb19dd04\",\n \"signature\": \"0x9323774a587c6aeef9a52cbf35b2cdc9543a07ac7010c418224f48ed44da8b8f160bcfc59a7d10d7bcd33fcfee3bd399061a1b6fab54c3f355dae71dbb19dd041b\"\n }\n}", + "config": "{\n \"codeName\": \"P2P-Network-Node-2\",\n \"signature\": {\n \"message\": \"Luis-Fernando-Molina\",\n \"messageHash\": \"0x443abf3389e332a62d21b84dd12e271cb428d334195d3aeb986ca85ee53cccb9\",\n \"v\": \"0x1c\",\n \"r\": \"0x82de669c37cc4d376aad3369d00db371ffdd2dbe06a21393cb736c0be5d71116\",\n \"s\": \"0x510d1f631ad66b71613e9ef6ad64c4b5510d494b74cc29462cc2e26ac64f5736\",\n \"signature\": \"0x82de669c37cc4d376aad3369d00db371ffdd2dbe06a21393cb736c0be5d71116510d1f631ad66b71613e9ef6ad64c4b5510d494b74cc29462cc2e26ac64f57361c\"\n }\n}", "project": "Governance", - "id": "0d4c4724-3c0a-4fdf-aaeb-4a282ae0787f", + "id": "afa8b24a-6618-4811-8d42-49321b95f4ac", "savedPayload": { "position": { - "x": 34002.948575604, + "x": 38169.615242270665, "y": 18240.192378864667 }, "targetPosition": { - "x": 33743.14095446867, + "x": 37909.80762113533, "y": 18390.192378864667 }, "floatingObject": { @@ -19255,11 +19369,11 @@ "id": "352cd906-c36c-48c7-8f01-728ff78b78e9", "savedPayload": { "position": { - "x": 33743.14095446867, + "x": 37909.80762113533, "y": 18390.192378864667 }, "targetPosition": { - "x": 33483.333333333336, + "x": 37650, "y": 18540.192378864667 }, "floatingObject": { @@ -19279,11 +19393,11 @@ "id": "da779e56-cb36-4825-bcd5-06692175a982", "savedPayload": { "position": { - "x": 33483.333333333336, + "x": 37650, "y": 18540.192378864667 }, "targetPosition": { - "x": 33333.333333333336, + "x": 37500, "y": 18800 }, "floatingObject": { @@ -19302,11 +19416,11 @@ "id": "a8de78f0-c3e4-4a2a-b7e8-f659073969db", "savedPayload": { "position": { - "x": 33333.333333333336, + "x": 37500, "y": 18800 }, "targetPosition": { - "x": 33333.333333333336, + "x": 37500, "y": 18800 }, "floatingObject": { diff --git a/Projects/Governance/Schemas/App-Schema/server-apps.json b/Projects/Governance/Schemas/App-Schema/server-apps.json index 97890a68f..116b64b1e 100644 --- a/Projects/Governance/Schemas/App-Schema/server-apps.json +++ b/Projects/Governance/Schemas/App-Schema/server-apps.json @@ -8,6 +8,14 @@ "iconPathOn": "configuration", "iconPathOff": "configuration" }, + { + "action": "Add UI Object", + "actionProject": "Visual-Scripting", + "actionFunction": "payload.executeAction", + "label": "Add Task Server App", + "relatedUiObject": "Task Server App", + "relatedUiObjectProject": "Governance" + }, { "action": "Add UI Object", "actionProject": "Visual-Scripting", @@ -40,6 +48,12 @@ }, "propertyNameAtParent": "serverApps", "childrenNodesProperties": [ + { + "name": "taskServerApps", + "type": "array", + "childType": "Task Server App", + "autoAdd": false + }, { "name": "socialTradingServerApps", "type": "array", diff --git a/Projects/Governance/Schemas/App-Schema/task-server-app-reference.json b/Projects/Governance/Schemas/App-Schema/task-server-app-reference.json new file mode 100644 index 000000000..14431fffb --- /dev/null +++ b/Projects/Governance/Schemas/App-Schema/task-server-app-reference.json @@ -0,0 +1,25 @@ +{ + "type": "Task Server App Reference", + "menuItems": [ + { + "action": "Delete UI Object", + "actionProject": "Visual-Scripting", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete-entity", + "iconPathOff": "delete-entity", + "actionFunction": "payload.executeAction" + } + ], + "addLeftIcons": true, + "level": 1, + "attachingRules": { + "compatibleTypes": "->Task->" + }, + "referencingRules": { + "compatibleTypes": "->Task Server App->" + }, + "childrenNodesProperties": [], + "propertyNameAtParent": "taskServerAppReference" +} \ No newline at end of file diff --git a/Projects/Governance/Schemas/App-Schema/task-server-app.json b/Projects/Governance/Schemas/App-Schema/task-server-app.json new file mode 100644 index 000000000..e009fd499 --- /dev/null +++ b/Projects/Governance/Schemas/App-Schema/task-server-app.json @@ -0,0 +1,44 @@ +{ + "type": "Task Server App", + "menuItems": [ + { + "action": "Configure", + "actionProject": "Foundations", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration", + "dontShowAtFullscreen": true, + "actionFunction": "uiObject.configEditor.activate" + }, + { + "action": "Delete UI Object", + "actionProject": "Visual-Scripting", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete-entity", + "iconPathOff": "delete-entity", + "actionFunction": "payload.executeAction" + } + ], + "editors": { + "config": true + }, + "initialValues": { + "config": "{ \n\"codeName\": \"\"\n}" + }, + "addLeftIcons": true, + "level": 1, + "attachingRules": { + "compatibleTypes": "->Server Apps->" + }, + "childrenNodesProperties": [ + { + "name": "signingAccount", + "type": "node", + "childType": "Signing Account", + "autoAdd": false + } + ], + "propertyNameAtParent": "taskServerApps" +} \ No newline at end of file diff --git a/Projects/Governance/UI/Function-Libraries/ProfileConstructor.js b/Projects/Governance/UI/Function-Libraries/ProfileConstructor.js index bc92d6b46..106575b8e 100644 --- a/Projects/Governance/UI/Function-Libraries/ProfileConstructor.js +++ b/Projects/Governance/UI/Function-Libraries/ProfileConstructor.js @@ -217,6 +217,7 @@ function newGovernanceFunctionLibraryProfileConstructor() { let socialTradingDesktopApp = UI.projects.visualScripting.utilities.branches.nodeBranchToArray(userProfile.userApps, 'Social Trading Desktop App') let socialTradingMobileApp = UI.projects.visualScripting.utilities.branches.nodeBranchToArray(userProfile.userApps, 'Social Trading Mobile App') let socialTradingServerApp = UI.projects.visualScripting.utilities.branches.nodeBranchToArray(userProfile.userApps, 'Social Trading Server App') + let taskServerApp = UI.projects.visualScripting.utilities.branches.nodeBranchToArray(userProfile.userApps, 'Task Server App') let socialTradingBots = UI.projects.visualScripting.utilities.branches.nodeBranchToArray(userProfile.userBots, 'Social Trading Bot') let socialPersonas = UI.projects.visualScripting.utilities.branches.nodeBranchToArray(userProfile.socialPersonas, 'Social Persona') let p2pNetworkNodes = UI.projects.visualScripting.utilities.branches.nodeBranchToArray(userProfile.p2pNetworkNodes, 'P2P Network Node') @@ -225,6 +226,7 @@ function newGovernanceFunctionLibraryProfileConstructor() { addSigningAccounts(socialTradingDesktopApp, 'Social Trading Desktop App') addSigningAccounts(socialTradingMobileApp, 'Social Trading Mobile App') addSigningAccounts(socialTradingServerApp, 'Social Trading Server App') + addSigningAccounts(taskServerApp, 'Task Server App') addSigningAccounts(socialTradingBots, 'Social Trading Bot') addSigningAccounts(socialPersonas, 'Social Persona') addSigningAccounts(p2pNetworkNodes, 'P2P Network Node') diff --git a/Projects/Network/SA/Modules/UserProfiles.js b/Projects/Network/SA/Modules/UserProfiles.js index ee068b497..5dcb1d1ba 100644 --- a/Projects/Network/SA/Modules/UserProfiles.js +++ b/Projects/Network/SA/Modules/UserProfiles.js @@ -102,6 +102,7 @@ exports.newNetworkModulesUserProfiles = function newNetworkModulesUserProfiles() let socialTradingDesktopApp = SA.projects.visualScripting.utilities.nodeFunctions.nodeBranchToArray(userProfilePlugin.userApps, 'Social Trading Desktop App') let socialTradingMobileApp = SA.projects.visualScripting.utilities.nodeFunctions.nodeBranchToArray(userProfilePlugin.userApps, 'Social Trading Mobile App') let socialTradingServerApp = SA.projects.visualScripting.utilities.nodeFunctions.nodeBranchToArray(userProfilePlugin.userApps, 'Social Trading Server App') + let taskServerApp = SA.projects.visualScripting.utilities.nodeFunctions.nodeBranchToArray(userProfilePlugin.userApps, 'Task Server App') let socialTradingBots = SA.projects.visualScripting.utilities.nodeFunctions.nodeBranchToArray(userProfilePlugin.userBots, 'Social Trading Bot') let socialPersonas = SA.projects.visualScripting.utilities.nodeFunctions.nodeBranchToArray(userProfilePlugin.socialPersonas, 'Social Persona') let p2pNetworkNodes = SA.projects.visualScripting.utilities.nodeFunctions.nodeBranchToArray(userProfilePlugin.p2pNetworkNodes, 'P2P Network Node') @@ -110,6 +111,7 @@ exports.newNetworkModulesUserProfiles = function newNetworkModulesUserProfiles() checkNwetworkClients(socialTradingDesktopApp) checkNwetworkClients(socialTradingMobileApp) checkNwetworkClients(socialTradingServerApp) + checkNwetworkClients(taskServerApp) checkNwetworkClients(socialTradingBots) checkNwetworkClients(socialPersonas) checkNwetworkClients(p2pNetworkNodes) diff --git a/Projects/Trading-Signals/Icons/incoming-signals.png b/Projects/Trading-Signals/Icons/incoming-signals.png new file mode 100644 index 000000000..a4ee2a209 Binary files /dev/null and b/Projects/Trading-Signals/Icons/incoming-signals.png differ diff --git a/Projects/Trading-Signals/Icons/outgoing-signals.png b/Projects/Trading-Signals/Icons/outgoing-signals.png new file mode 100644 index 000000000..a4ee2a209 Binary files /dev/null and b/Projects/Trading-Signals/Icons/outgoing-signals.png differ diff --git a/Projects/Trading-Signals/Schemas/App-Schema/receive-signals.json b/Projects/Trading-Signals/Schemas/App-Schema/incoming-signals.json similarity index 93% rename from Projects/Trading-Signals/Schemas/App-Schema/receive-signals.json rename to Projects/Trading-Signals/Schemas/App-Schema/incoming-signals.json index 788124a5e..92cb341ee 100644 --- a/Projects/Trading-Signals/Schemas/App-Schema/receive-signals.json +++ b/Projects/Trading-Signals/Schemas/App-Schema/incoming-signals.json @@ -1,5 +1,5 @@ { - "type": "Receive Signals", + "type": "Incoming Signals", "menuItems": [ { "action": "Add UI Object", @@ -33,5 +33,5 @@ "autoAdd": false } ], - "propertyNameAtParent": "receiveSignals" + "propertyNameAtParent": "incomingSignals" } \ No newline at end of file diff --git a/Projects/Trading-Signals/Schemas/App-Schema/send-signals.json b/Projects/Trading-Signals/Schemas/App-Schema/outgoing-signals.json similarity index 93% rename from Projects/Trading-Signals/Schemas/App-Schema/send-signals.json rename to Projects/Trading-Signals/Schemas/App-Schema/outgoing-signals.json index 246f118d0..9ea63a012 100644 --- a/Projects/Trading-Signals/Schemas/App-Schema/send-signals.json +++ b/Projects/Trading-Signals/Schemas/App-Schema/outgoing-signals.json @@ -1,5 +1,5 @@ { - "type": "Send Signals", + "type": "Outgoing Signals", "menuItems": [ { "action": "Add UI Object", @@ -33,5 +33,5 @@ "autoAdd": false } ], - "propertyNameAtParent": "sendSignals" + "propertyNameAtParent": "outgoingSignals" } \ No newline at end of file diff --git a/Projects/Trading-Signals/TS/Bot-Modules/TradingSignals.js b/Projects/Trading-Signals/TS/Bot-Modules/TradingSignals.js index b000feecb..1ca3f825a 100644 --- a/Projects/Trading-Signals/TS/Bot-Modules/TradingSignals.js +++ b/Projects/Trading-Signals/TS/Bot-Modules/TradingSignals.js @@ -18,6 +18,7 @@ exports.newTradingSignalsBotModulesTradingSignals = function (processIndex) { tradingEngine = TS.projects.foundations.globals.processVariables.VARIABLES_BY_PROCESS_INDEX_MAP.get(processIndex).SIMULATION_STATE.tradingEngine sessionParameters = TS.projects.foundations.globals.processConstants.CONSTANTS_BY_PROCESS_INDEX_MAP.get(processIndex).SESSION_NODE.tradingParameters + taskParameters = { exchange: TS.projects.foundations.globals.taskConstants.TASK_NODE.parentNode.parentNode.parentNode.referenceParent.parentNode.parentNode.name, market: TS.projects.foundations.globals.taskConstants.TASK_NODE.parentNode.parentNode.parentNode.referenceParent.baseAsset.referenceParent.config.codeName + diff --git a/TaskServer/TaskServer.js b/TaskServer/TaskServer.js index 463058c99..d690a33ef 100644 --- a/TaskServer/TaskServer.js +++ b/TaskServer/TaskServer.js @@ -82,10 +82,12 @@ exports.newTaskServer = function newTaskServer() { } } - function bootingProcess() { + async function bootingProcess() { try { initializeProjectDefinitionNode() + await setupNetwork() setupTaskHeartbeats() + startProcesses() function initializeProjectDefinitionNode() { TS.projects.foundations.globals.taskConstants.PROJECT_DEFINITION_NODE = SA.projects.visualScripting.utilities.nodeFunctions.findNodeInNodeMesh(TS.projects.foundations.globals.taskConstants.TASK_NODE, 'Project Definition') @@ -109,6 +111,45 @@ exports.newTaskServer = function newTaskServer() { } } + async function setupNetwork() { + /* + If we received a App Server Reference Node and a Signing Account, then we will connect to the P2P Network + */ + if ( + TS.projects.foundations.globals.taskConstants.TASK_NODE.taskServerAppReference === undefined || + TS.projects.foundations.globals.taskConstants.TASK_NODE.taskServerAppReference.referenceParent === undefined || + TS.projects.foundations.globals.taskConstants.TASK_NODE.taskServerAppReference.referenceParent.signingAccount === undefined + ) { + return + } + TS.projects.foundations.globals.taskConstants.P2P_NETWORK = {} + /* + We set up ourselves as a Network Client. + */ + TS.projects.foundations.globals.taskConstants.P2P_NETWORK.p2pNetworkClient = SA.projects.network.modules.p2pNetworkClient.newNetworkModulesP2PNetworkClient() + await TS.projects.foundations.globals.taskConstants.P2P_NETWORK.p2pNetworkClient.initialize() + /* + We will read all user profiles plugins and get from there our network identity. + */ + TS.projects.foundations.globals.taskConstants.P2P_NETWORK.userProfiles = SA.projects.network.modules.userProfiles.newNetworkModulesUserProfiles() + await TS.projects.foundations.globals.taskConstants.P2P_NETWORK.userProfiles.initialize(TS.projects.foundations.globals.taskConstants.TASK_NODE.taskServerAppReference.referenceParent.config.codeName, TS.projects.foundations.globals.taskConstants.P2P_NETWORK.p2pNetworkClient) + /* + We set up the P2P Network. + */ + TS.projects.foundations.globals.taskConstants.P2P_NETWORK.p2pNetwork = SA.projects.network.modules.p2pNetwork.newNetworkModulesP2PNetwork() + await TS.projects.foundations.globals.taskConstants.P2P_NETWORK.p2pNetwork.initialize('Network Client') + /* + Set up the connections to network nodes. + */ + TS.projects.foundations.globals.taskConstants.P2P_NETWORK.p2pNetworkPeers = SA.projects.network.modules.p2pNetworkPeers.newNetworkModulesP2PNetworkPeers() + await TS.projects.foundations.globals.taskConstants.P2P_NETWORK.p2pNetworkPeers.initialize( + 'Network Client', + TS.projects.foundations.globals.taskConstants.P2P_NETWORK.p2pNetworkClient, + TS.projects.foundations.globals.taskConstants.P2P_NETWORK.p2pNetwork, + global.env.TASK_SERVER_APP_MAX_OUTGOING_PEERS + ) + } + function setupTaskHeartbeats() { /* Heartbeat sent to the UI @@ -129,42 +170,44 @@ exports.newTaskServer = function newTaskServer() { } } - for (let processIndex = 0; processIndex < TS.projects.foundations.globals.taskConstants.TASK_NODE.bot.processes.length; processIndex++) { - /* - Here we will validate that the process is connected all the way to a Mine - and that nodes in the middle have whatever config is mandatory. - */ - if (TS.projects.foundations.globals.taskConstants.TASK_NODE.bot.processes[processIndex].referenceParent === undefined) { - console.log("[ERROR] Task Server -> Task -> bootingProcess -> Process Instance without a Reference Parent. This process will not be executed. -> Process Instance = " + JSON.stringify(TS.projects.foundations.globals.taskConstants.TASK_NODE.bot.processes[processIndex])); - continue - } + function startProcesses() { + for (let processIndex = 0; processIndex < TS.projects.foundations.globals.taskConstants.TASK_NODE.bot.processes.length; processIndex++) { + /* + Here we will validate that the process is connected all the way to a Mine + and that nodes in the middle have whatever config is mandatory. + */ + if (TS.projects.foundations.globals.taskConstants.TASK_NODE.bot.processes[processIndex].referenceParent === undefined) { + console.log("[ERROR] Task Server -> Task -> bootingProcess -> Process Instance without a Reference Parent. This process will not be executed. -> Process Instance = " + JSON.stringify(TS.projects.foundations.globals.taskConstants.TASK_NODE.bot.processes[processIndex])); + continue + } - if (TS.projects.foundations.globals.taskConstants.TASK_NODE.bot.processes[processIndex].referenceParent.parentNode === undefined) { - console.log("[ERROR] Task Server -> Task -> bootingProcess -> Process Definition without parent Bot Definition. -> Process Definition = " + JSON.stringify(TS.projects.foundations.globals.taskConstants.TASK_NODE.bot.processes[processIndex].referenceParent)); - continue - } + if (TS.projects.foundations.globals.taskConstants.TASK_NODE.bot.processes[processIndex].referenceParent.parentNode === undefined) { + console.log("[ERROR] Task Server -> Task -> bootingProcess -> Process Definition without parent Bot Definition. -> Process Definition = " + JSON.stringify(TS.projects.foundations.globals.taskConstants.TASK_NODE.bot.processes[processIndex].referenceParent)); + continue + } - if (TS.projects.foundations.globals.taskConstants.TASK_NODE.bot.processes[processIndex].referenceParent.parentNode.parentNode === undefined) { - console.log("[ERROR] Task Server -> Task -> bootingProcess -> Bot Definition without parent Mine. -> Bot Definition = " + JSON.stringify(TS.projects.foundations.globals.taskConstants.TASK_NODE.bot.processes[processIndex].referenceParent.parentNode)); - continue - } + if (TS.projects.foundations.globals.taskConstants.TASK_NODE.bot.processes[processIndex].referenceParent.parentNode.parentNode === undefined) { + console.log("[ERROR] Task Server -> Task -> bootingProcess -> Bot Definition without parent Mine. -> Bot Definition = " + JSON.stringify(TS.projects.foundations.globals.taskConstants.TASK_NODE.bot.processes[processIndex].referenceParent.parentNode)); + continue + } - if (TS.projects.foundations.globals.taskConstants.TASK_NODE.bot.processes[processIndex].referenceParent.config.codeName === undefined) { - console.log("[ERROR] Task Server -> Task -> bootingProcess -> Process Definition without a codeName defined. -> Process Definition = " + JSON.stringify(TS.projects.foundations.globals.taskConstants.TASK_NODE.bot.processes[processIndex].referenceParent)); - continue - } + if (TS.projects.foundations.globals.taskConstants.TASK_NODE.bot.processes[processIndex].referenceParent.config.codeName === undefined) { + console.log("[ERROR] Task Server -> Task -> bootingProcess -> Process Definition without a codeName defined. -> Process Definition = " + JSON.stringify(TS.projects.foundations.globals.taskConstants.TASK_NODE.bot.processes[processIndex].referenceParent)); + continue + } - if (TS.projects.foundations.globals.taskConstants.TASK_NODE.bot.processes[processIndex].referenceParent.parentNode.config.codeName === undefined) { - console.log("[ERROR] Task Server -> Task -> bootingProcess -> Bot Definition without a codeName defined. -> Bot Definition = " + JSON.stringify(TS.projects.foundations.globals.taskConstants.TASK_NODE.bot.processes[processIndex].referenceParent.parentNode)); - continue - } + if (TS.projects.foundations.globals.taskConstants.TASK_NODE.bot.processes[processIndex].referenceParent.parentNode.config.codeName === undefined) { + console.log("[ERROR] Task Server -> Task -> bootingProcess -> Bot Definition without a codeName defined. -> Bot Definition = " + JSON.stringify(TS.projects.foundations.globals.taskConstants.TASK_NODE.bot.processes[processIndex].referenceParent.parentNode)); + continue + } - if (TS.projects.foundations.globals.taskConstants.TASK_NODE.bot.processes[processIndex].referenceParent.parentNode.parentNode.config.codeName === undefined) { - console.log("[ERROR] Task Server -> Task -> bootingProcess -> Mine without a codeName defined. -> Mine Definition = " + JSON.stringify(TS.projects.foundations.globals.taskConstants.TASK_NODE.bot.processes[processIndex].referenceParent.parentNode.parentNode)); - continue - } + if (TS.projects.foundations.globals.taskConstants.TASK_NODE.bot.processes[processIndex].referenceParent.parentNode.parentNode.config.codeName === undefined) { + console.log("[ERROR] Task Server -> Task -> bootingProcess -> Mine without a codeName defined. -> Mine Definition = " + JSON.stringify(TS.projects.foundations.globals.taskConstants.TASK_NODE.bot.processes[processIndex].referenceParent.parentNode.parentNode)); + continue + } - startProcessInstance(processIndex); + startProcessInstance(processIndex); + } } } catch (err) { console.log('[ERROR] Task Server -> Task -> bootingProcess -> Fatal Error. Can not run this task. -> ' + err.stack) diff --git a/TaskServerRoot.js b/TaskServerRoot.js index d45d37f38..0be6ec1e1 100644 --- a/TaskServerRoot.js +++ b/TaskServerRoot.js @@ -55,6 +55,17 @@ SA.nodeModules = { lookpath: require('lookpath'), twitter: require('twitter') } +/* +Setting up Secrets. +*/ +SA.secrets = { + array: require('./My-Secrets/Secrets.json').secrets, + map: new Map() +} +for (let i = 0; i < SA.secrets.array.length; i++) { + let secret = SA.secrets.array[i] + SA.secrets.map.set(secret.nodeCodeName, secret) +} run()