ultravisor 1.0.3 → 1.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (109) hide show
  1. package/.claude/launch.json +11 -0
  2. package/.claude/ultravisor-dev-config.json +3 -0
  3. package/.ultravisor.json +426 -0
  4. package/package.json +7 -6
  5. package/source/Ultravisor.cjs +22 -3
  6. package/source/cli/Ultravisor-CLIProgram.cjs +35 -23
  7. package/source/cli/commands/Ultravisor-Command-SingleOperation.cjs +29 -18
  8. package/source/cli/commands/Ultravisor-Command-SingleTask.cjs +62 -19
  9. package/source/cli/commands/Ultravisor-Command-UpdateTask.cjs +27 -15
  10. package/source/config/Ultravisor-Default-Command-Configuration.cjs +5 -3
  11. package/source/services/Ultravisor-ExecutionEngine.cjs +1039 -0
  12. package/source/services/Ultravisor-ExecutionManifest.cjs +399 -0
  13. package/source/services/Ultravisor-Hypervisor-State.cjs +270 -97
  14. package/source/services/Ultravisor-Hypervisor.cjs +38 -83
  15. package/source/services/Ultravisor-StateManager.cjs +241 -0
  16. package/source/services/Ultravisor-TaskTypeRegistry.cjs +143 -0
  17. package/source/services/tasks/Ultravisor-TaskType-Base.cjs +105 -0
  18. package/source/services/tasks/control/Ultravisor-TaskType-IfConditional.cjs +148 -0
  19. package/source/services/tasks/control/Ultravisor-TaskType-LaunchOperation.cjs +187 -0
  20. package/source/services/tasks/control/Ultravisor-TaskType-SplitExecute.cjs +184 -0
  21. package/source/services/tasks/data/Ultravisor-TaskType-ReplaceString.cjs +82 -0
  22. package/source/services/tasks/data/Ultravisor-TaskType-SetValues.cjs +81 -0
  23. package/source/services/tasks/data/Ultravisor-TaskType-StringAppender.cjs +101 -0
  24. package/source/services/tasks/file-io/Ultravisor-TaskType-ReadFile.cjs +103 -0
  25. package/source/services/tasks/file-io/Ultravisor-TaskType-WriteFile.cjs +117 -0
  26. package/source/services/tasks/interaction/Ultravisor-TaskType-ErrorMessage.cjs +54 -0
  27. package/source/services/tasks/interaction/Ultravisor-TaskType-ValueInput.cjs +62 -0
  28. package/source/web_server/Ultravisor-API-Server.cjs +237 -124
  29. package/test/Ultravisor_browser_tests.js +2226 -0
  30. package/test/Ultravisor_tests.js +1143 -5830
  31. package/webinterface/css/ultravisor.css +23 -0
  32. package/webinterface/package.json +6 -3
  33. package/webinterface/source/Pict-Application-Ultravisor.js +93 -73
  34. package/webinterface/source/cards/FlowCard-CSVTransform.js +43 -0
  35. package/webinterface/source/cards/FlowCard-Command.js +86 -0
  36. package/webinterface/source/cards/FlowCard-ComprehensionIntersect.js +40 -0
  37. package/webinterface/source/cards/FlowCard-Conditional.js +87 -0
  38. package/webinterface/source/cards/FlowCard-CopyFile.js +55 -0
  39. package/webinterface/source/cards/FlowCard-End.js +29 -0
  40. package/webinterface/source/cards/FlowCard-GetJSON.js +55 -0
  41. package/webinterface/source/cards/FlowCard-GetText.js +54 -0
  42. package/webinterface/source/cards/FlowCard-Histogram.js +176 -0
  43. package/webinterface/source/cards/FlowCard-LaunchOperation.js +82 -0
  44. package/webinterface/source/cards/FlowCard-ListFiles.js +55 -0
  45. package/webinterface/source/cards/FlowCard-MeadowCount.js +44 -0
  46. package/webinterface/source/cards/FlowCard-MeadowCreate.js +44 -0
  47. package/webinterface/source/cards/FlowCard-MeadowDelete.js +45 -0
  48. package/webinterface/source/cards/FlowCard-MeadowRead.js +46 -0
  49. package/webinterface/source/cards/FlowCard-MeadowReads.js +46 -0
  50. package/webinterface/source/cards/FlowCard-MeadowUpdate.js +44 -0
  51. package/webinterface/source/cards/FlowCard-ParseCSV.js +85 -0
  52. package/webinterface/source/cards/FlowCard-ReadJSON.js +54 -0
  53. package/webinterface/source/cards/FlowCard-ReadText.js +54 -0
  54. package/webinterface/source/cards/FlowCard-RestRequest.js +59 -0
  55. package/webinterface/source/cards/FlowCard-SendJSON.js +57 -0
  56. package/webinterface/source/cards/FlowCard-Solver.js +77 -0
  57. package/webinterface/source/cards/FlowCard-Start.js +29 -0
  58. package/webinterface/source/cards/FlowCard-TemplateString.js +77 -0
  59. package/webinterface/source/cards/FlowCard-WriteJSON.js +54 -0
  60. package/webinterface/source/cards/FlowCard-WriteText.js +54 -0
  61. package/webinterface/source/data/ExampleFlow-CSVPipeline.js +231 -0
  62. package/webinterface/source/data/ExampleFlow-FileProcessor.js +315 -0
  63. package/webinterface/source/data/ExampleFlow-MeadowPipeline.js +328 -0
  64. package/webinterface/source/providers/PictRouter-Ultravisor-Configuration.json +8 -8
  65. package/webinterface/source/views/PictView-Ultravisor-Dashboard.js +6 -6
  66. package/webinterface/source/views/PictView-Ultravisor-FlowEditor.js +436 -0
  67. package/webinterface/source/views/PictView-Ultravisor-ManifestList.js +45 -43
  68. package/webinterface/source/views/PictView-Ultravisor-OperationEdit.js +34 -89
  69. package/webinterface/source/views/PictView-Ultravisor-OperationList.js +128 -13
  70. package/webinterface/source/views/PictView-Ultravisor-PendingInput.js +314 -0
  71. package/webinterface/source/views/PictView-Ultravisor-Schedule.js +18 -53
  72. package/webinterface/source/views/PictView-Ultravisor-TimingView.js +27 -14
  73. package/webinterface/source/views/PictView-Ultravisor-TopBar.js +2 -1
  74. package/debug/Harness.js +0 -6
  75. package/source/services/Ultravisor-Operation-Manifest.cjs +0 -160
  76. package/source/services/Ultravisor-Operation.cjs +0 -200
  77. package/source/services/Ultravisor-Task.cjs +0 -349
  78. package/source/services/events/Ultravisor-Hypervisor-Event-Solver.cjs +0 -11
  79. package/source/services/tasks/Ultravisor-Task-Base.cjs +0 -264
  80. package/source/services/tasks/Ultravisor-Task-CollectValues.cjs +0 -188
  81. package/source/services/tasks/Ultravisor-Task-Command.cjs +0 -65
  82. package/source/services/tasks/Ultravisor-Task-CommandEach.cjs +0 -190
  83. package/source/services/tasks/Ultravisor-Task-Conditional.cjs +0 -104
  84. package/source/services/tasks/Ultravisor-Task-DateWindow.cjs +0 -72
  85. package/source/services/tasks/Ultravisor-Task-GeneratePagedOperation.cjs +0 -336
  86. package/source/services/tasks/Ultravisor-Task-LaunchOperation.cjs +0 -143
  87. package/source/services/tasks/Ultravisor-Task-LaunchTask.cjs +0 -146
  88. package/source/services/tasks/Ultravisor-Task-LineMatch.cjs +0 -158
  89. package/source/services/tasks/Ultravisor-Task-Request.cjs +0 -56
  90. package/source/services/tasks/Ultravisor-Task-Solver.cjs +0 -89
  91. package/source/services/tasks/Ultravisor-Task-TemplateString.cjs +0 -93
  92. package/source/services/tasks/rest/Ultravisor-Task-GetBinary.cjs +0 -127
  93. package/source/services/tasks/rest/Ultravisor-Task-GetJSON.cjs +0 -119
  94. package/source/services/tasks/rest/Ultravisor-Task-GetText.cjs +0 -109
  95. package/source/services/tasks/rest/Ultravisor-Task-GetXML.cjs +0 -112
  96. package/source/services/tasks/rest/Ultravisor-Task-RestRequest.cjs +0 -499
  97. package/source/services/tasks/rest/Ultravisor-Task-SendJSON.cjs +0 -150
  98. package/source/services/tasks/stagingfiles/Ultravisor-Task-CopyFile.cjs +0 -110
  99. package/source/services/tasks/stagingfiles/Ultravisor-Task-ListFiles.cjs +0 -89
  100. package/source/services/tasks/stagingfiles/Ultravisor-Task-ReadBinary.cjs +0 -87
  101. package/source/services/tasks/stagingfiles/Ultravisor-Task-ReadJSON.cjs +0 -67
  102. package/source/services/tasks/stagingfiles/Ultravisor-Task-ReadText.cjs +0 -66
  103. package/source/services/tasks/stagingfiles/Ultravisor-Task-ReadXML.cjs +0 -69
  104. package/source/services/tasks/stagingfiles/Ultravisor-Task-WriteBinary.cjs +0 -95
  105. package/source/services/tasks/stagingfiles/Ultravisor-Task-WriteJSON.cjs +0 -96
  106. package/source/services/tasks/stagingfiles/Ultravisor-Task-WriteText.cjs +0 -99
  107. package/source/services/tasks/stagingfiles/Ultravisor-Task-WriteXML.cjs +0 -102
  108. package/webinterface/source/views/PictView-Ultravisor-TaskEdit.js +0 -220
  109. package/webinterface/source/views/PictView-Ultravisor-TaskList.js +0 -248
@@ -9,19 +9,26 @@ class UltravisorCommandSingleOperationRun extends libCommandLineCommand
9
9
  this.options.CommandKeyword = 'singleoperation';
10
10
  this.options.Description = 'Execute a single ultravisor operation immediately, no matter what.';
11
11
 
12
- this.options.CommandArguments.push({ Name: '<operation>', Description: 'The operation(s) to run.' });
13
- this.options.CommandOptions.push({ Name: '-d, --dry_run', Description: 'Dry run the task.', Default: false });
12
+ this.options.CommandArguments.push({ Name: '<operation>', Description: 'The operation hash to run.' });
13
+ this.options.CommandOptions.push({ Name: '-d, --dry_run', Description: 'Dry run the operation.', Default: false });
14
14
 
15
15
  this.options.Aliases.push('operation');
16
16
 
17
17
  this.addCommand();
18
18
  }
19
19
 
20
+ _getService(pTypeName)
21
+ {
22
+ return this.fable.servicesMap[pTypeName]
23
+ ? Object.values(this.fable.servicesMap[pTypeName])[0]
24
+ : null;
25
+ }
26
+
20
27
  onRunAsync(fCallback)
21
28
  {
22
- let tmpOperationGUID = this.ArgumentString;
29
+ let tmpOperationHash = this.ArgumentString;
23
30
 
24
- if (!tmpOperationGUID)
31
+ if (!tmpOperationHash)
25
32
  {
26
33
  console.log(`Error: operation argument is required.`);
27
34
  return fCallback();
@@ -31,16 +38,16 @@ class UltravisorCommandSingleOperationRun extends libCommandLineCommand
31
38
 
32
39
  if (tmpDryRun)
33
40
  {
34
- console.log(`[DRY RUN] Would execute operation: ${tmpOperationGUID}`);
41
+ console.log(`[DRY RUN] Would execute operation: ${tmpOperationHash}`);
35
42
  return fCallback();
36
43
  }
37
44
 
38
- console.log(`Executing operation: ${tmpOperationGUID}`);
45
+ console.log(`Executing operation: ${tmpOperationHash}`);
39
46
 
40
- let tmpStateService = this.fable['Ultravisor-Hypervisor-State'];
41
- let tmpOperationService = this.fable['Ultravisor-Operation'];
47
+ let tmpStateService = this._getService('UltravisorHypervisorState');
48
+ let tmpEngine = this._getService('UltravisorExecutionEngine');
42
49
 
43
- tmpStateService.getOperation(tmpOperationGUID,
50
+ tmpStateService.getOperation(tmpOperationHash,
44
51
  function (pError, pOperation)
45
52
  {
46
53
  if (pError)
@@ -49,8 +56,8 @@ class UltravisorCommandSingleOperationRun extends libCommandLineCommand
49
56
  return fCallback();
50
57
  }
51
58
 
52
- tmpOperationService.executeOperation(pOperation,
53
- function (pExecError, pManifest)
59
+ tmpEngine.executeOperation(pOperation,
60
+ function (pExecError, pContext)
54
61
  {
55
62
  if (pExecError)
56
63
  {
@@ -59,16 +66,20 @@ class UltravisorCommandSingleOperationRun extends libCommandLineCommand
59
66
  }
60
67
 
61
68
  console.log(`\nOperation Result:`);
62
- console.log(` Status: ${pManifest.Status}`);
63
- console.log(` Success: ${pManifest.Success}`);
64
- console.log(` Start: ${pManifest.StartTime}`);
65
- console.log(` Stop: ${pManifest.StopTime}`);
66
- console.log(` Tasks Executed: ${pManifest.TaskResults.length}`);
67
- console.log(` Summary: ${pManifest.Summary}`);
69
+ console.log(` Status: ${pContext.Status}`);
70
+ console.log(` Start: ${pContext.StartTime}`);
71
+ console.log(` Stop: ${pContext.StopTime}`);
72
+ console.log(` Elapsed: ${pContext.ElapsedMs}ms`);
73
+ let tmpTaskCount = pContext.TaskManifests ? Object.keys(pContext.TaskManifests).length : 0;
74
+ console.log(` Tasks Executed: ${tmpTaskCount}`);
75
+ if (pContext.Errors && pContext.Errors.length > 0)
76
+ {
77
+ console.log(` Errors: ${pContext.Errors.length}`);
78
+ }
68
79
  return fCallback();
69
80
  });
70
81
  });
71
82
  }
72
83
  }
73
84
 
74
- module.exports = UltravisorCommandSingleOperationRun;
85
+ module.exports = UltravisorCommandSingleOperationRun;
@@ -9,8 +9,7 @@ class UltravisorCommandSingleTaskRun extends libCommandLineCommand
9
9
  this.options.CommandKeyword = 'singletask';
10
10
  this.options.Description = 'Execute a single ultravisor task immediately, no matter what.';
11
11
 
12
- this.options.CommandArguments.push({ Name: '<task>', Description: 'The task(s) to run.' });
13
- this.options.CommandOptions.push({ Name: '-o, --operation [operation]', Description: 'The operation to scope the task(s) to.', Default: 'Default' });
12
+ this.options.CommandArguments.push({ Name: '<task>', Description: 'The task hash to run.' });
14
13
  this.options.CommandOptions.push({ Name: '-d, --dry_run', Description: 'Dry run the task.', Default: false });
15
14
 
16
15
  this.options.Aliases.push('task');
@@ -18,11 +17,18 @@ class UltravisorCommandSingleTaskRun extends libCommandLineCommand
18
17
  this.addCommand();
19
18
  }
20
19
 
20
+ _getService(pTypeName)
21
+ {
22
+ return this.fable.servicesMap[pTypeName]
23
+ ? Object.values(this.fable.servicesMap[pTypeName])[0]
24
+ : null;
25
+ }
26
+
21
27
  onRunAsync(fCallback)
22
28
  {
23
- let tmpTaskGUID = this.ArgumentString;
29
+ let tmpTaskHash = this.ArgumentString;
24
30
 
25
- if (!tmpTaskGUID)
31
+ if (!tmpTaskHash)
26
32
  {
27
33
  console.log(`Error: task argument is required.`);
28
34
  return fCallback();
@@ -32,17 +38,17 @@ class UltravisorCommandSingleTaskRun extends libCommandLineCommand
32
38
 
33
39
  if (tmpDryRun)
34
40
  {
35
- console.log(`[DRY RUN] Would execute task: ${tmpTaskGUID}`);
41
+ console.log(`[DRY RUN] Would execute task: ${tmpTaskHash}`);
36
42
  return fCallback();
37
43
  }
38
44
 
39
- console.log(`Executing task: ${tmpTaskGUID}`);
45
+ console.log(`Executing task: ${tmpTaskHash}`);
40
46
 
41
- let tmpStateService = this.fable['Ultravisor-Hypervisor-State'];
42
- let tmpTaskService = this.fable['Ultravisor-Task'];
47
+ let tmpStateService = this._getService('UltravisorHypervisorState');
48
+ let tmpEngine = this._getService('UltravisorExecutionEngine');
43
49
 
44
- tmpStateService.getTask(tmpTaskGUID,
45
- function (pError, pTask)
50
+ tmpStateService.getTaskDefinition(tmpTaskHash,
51
+ function (pError, pTaskDef)
46
52
  {
47
53
  if (pError)
48
54
  {
@@ -50,8 +56,41 @@ class UltravisorCommandSingleTaskRun extends libCommandLineCommand
50
56
  return fCallback();
51
57
  }
52
58
 
53
- tmpTaskService.executeTask(pTask, {},
54
- function (pExecError, pResult)
59
+ // Wrap single task in a minimal operation graph and execute
60
+ let tmpAdHocOperation = {
61
+ Hash: `ADHOC-${pTaskDef.Hash}`,
62
+ Name: `Ad-hoc: ${pTaskDef.Name || pTaskDef.Hash}`,
63
+ Graph:
64
+ {
65
+ Nodes:
66
+ [
67
+ { Hash: 'start-node', Type: 'start', X: 0, Y: 100 },
68
+ { Hash: pTaskDef.Hash, Type: pTaskDef.Type, DefinitionHash: pTaskDef.Type, Settings: pTaskDef.Settings || {}, X: 200, Y: 100 },
69
+ { Hash: 'end-node', Type: 'end', X: 400, Y: 100 }
70
+ ],
71
+ Connections:
72
+ [
73
+ {
74
+ SourceNodeHash: 'start-node',
75
+ SourcePortHash: 'start-node-eo-Start',
76
+ TargetNodeHash: pTaskDef.Hash,
77
+ TargetPortHash: pTaskDef.Hash + '-ei-Execute',
78
+ ConnectionType: 'Event'
79
+ },
80
+ {
81
+ SourceNodeHash: pTaskDef.Hash,
82
+ SourcePortHash: pTaskDef.Hash + '-eo-Complete',
83
+ TargetNodeHash: 'end-node',
84
+ TargetPortHash: 'end-node-ei-Finish',
85
+ ConnectionType: 'Event'
86
+ }
87
+ ],
88
+ ViewState: {}
89
+ }
90
+ };
91
+
92
+ tmpEngine.executeOperation(tmpAdHocOperation,
93
+ function (pExecError, pContext)
55
94
  {
56
95
  if (pExecError)
57
96
  {
@@ -60,13 +99,17 @@ class UltravisorCommandSingleTaskRun extends libCommandLineCommand
60
99
  }
61
100
 
62
101
  console.log(`\nTask Result:`);
63
- console.log(` Status: ${pResult.Status}`);
64
- console.log(` Success: ${pResult.Success}`);
65
- console.log(` Start: ${pResult.StartTime}`);
66
- console.log(` Stop: ${pResult.StopTime}`);
67
- if (pResult.Output)
102
+ console.log(` Status: ${pContext.Status}`);
103
+ console.log(` Start: ${pContext.StartTime}`);
104
+ console.log(` Stop: ${pContext.StopTime}`);
105
+ console.log(` Elapsed: ${pContext.ElapsedMs}ms`);
106
+ if (pContext.TaskOutputs && pContext.TaskOutputs[pTaskDef.Hash])
107
+ {
108
+ console.log(` Output: ${JSON.stringify(pContext.TaskOutputs[pTaskDef.Hash]).substring(0, 1000)}`);
109
+ }
110
+ if (pContext.Errors && pContext.Errors.length > 0)
68
111
  {
69
- console.log(` Output: ${pResult.Output.substring(0, 1000)}`);
112
+ console.log(` Errors: ${pContext.Errors.length}`);
70
113
  }
71
114
  return fCallback();
72
115
  });
@@ -74,4 +117,4 @@ class UltravisorCommandSingleTaskRun extends libCommandLineCommand
74
117
  }
75
118
  }
76
119
 
77
- module.exports = UltravisorCommandSingleTaskRun;
120
+ module.exports = UltravisorCommandSingleTaskRun;
@@ -10,20 +10,25 @@ class UltravisorCommandAddTask extends libCommandLineCommand
10
10
  super(pFable, pManifest, pServiceHash);
11
11
 
12
12
  this.options.CommandKeyword = 'updatetask';
13
- this.options.Description = 'Update (or add) a task to the available tasks.';
13
+ this.options.Description = 'Update (or add) a task definition.';
14
14
 
15
15
  this.options.CommandOptions.push({ Name:'-f, --file [json_filepath]', Description:'JSON Task definition file path.', Default:false });
16
16
 
17
- this.options.CommandOptions.push({ Name:'-g, --guid [task_guid]', Description:'The guid for the task.', Default:false });
18
- this.options.CommandOptions.push({ Name:'-c, --code [task_code]', Description:'The code for the task.', Default:false });
17
+ this.options.CommandOptions.push({ Name:'-h, --hash [task_hash]', Description:'The hash for the task definition.', Default:false });
19
18
  this.options.CommandOptions.push({ Name:'-n, --name [task_name]', Description:'The name of the task.', Default:false });
20
19
 
21
- this.options.CommandOptions.push({ Name:'-t, --type [task_type]', Description:'The type of task.', Default:'CRON' });
22
- this.options.CommandOptions.push({ Name:'-p, --parameters [task_parameters]', Description:'The parameters of the task.', Default:'0 0 * * * *' });
20
+ this.options.CommandOptions.push({ Name:'-t, --type [task_type]', Description:'The type of task (e.g. read-file, write-file, set-values).', Default:false });
23
21
 
24
22
  this.addCommand();
25
23
  }
26
24
 
25
+ _getService(pTypeName)
26
+ {
27
+ return this.fable.servicesMap[pTypeName]
28
+ ? Object.values(this.fable.servicesMap[pTypeName])[0]
29
+ : null;
30
+ }
31
+
27
32
  onRunAsync(fCallback)
28
33
  {
29
34
  const tmpOperationState = {};
@@ -64,28 +69,35 @@ class UltravisorCommandAddTask extends libCommandLineCommand
64
69
 
65
70
  tmpOperationState.TaskDefinition_Parameterized = {};
66
71
 
67
- tmpOperationState.TaskDefinition_Parameterized.GUIDTask = this.CommandOptions.guid;
68
- tmpOperationState.TaskDefinition_Parameterized.Code = this.CommandOptions.code;
69
- tmpOperationState.TaskDefinition_Parameterized.Name = this.CommandOptions.name;
70
-
71
- tmpOperationState.TaskDefinition_Parameterized.Type = this.CommandOptions.type;
72
- tmpOperationState.TaskDefinition_Parameterized.Parameters = this.CommandOptions.parameters;
72
+ if (this.CommandOptions.hash)
73
+ {
74
+ tmpOperationState.TaskDefinition_Parameterized.Hash = this.CommandOptions.hash;
75
+ }
76
+ if (this.CommandOptions.name)
77
+ {
78
+ tmpOperationState.TaskDefinition_Parameterized.Name = this.CommandOptions.name;
79
+ }
80
+ if (this.CommandOptions.type)
81
+ {
82
+ tmpOperationState.TaskDefinition_Parameterized.Type = this.CommandOptions.type;
83
+ }
73
84
 
74
85
  tmpOperationState.TaskDefinition = Object.assign({}, tmpOperationState.TaskDefinition_Parameterized, tmpOperationState.JSONFile);
75
86
 
76
- this.fable['Ultravisor-Hypervisor-State'].updateTask(tmpOperationState.TaskDefinition,
87
+ let tmpStateService = this._getService('UltravisorHypervisorState');
88
+ tmpStateService.updateTaskDefinition(tmpOperationState.TaskDefinition,
77
89
  function (pError, pUpdatedTask)
78
90
  {
79
91
  if (pError)
80
92
  {
81
- return fCallback(new Error(`Could not update task: ${pError.message}`));
93
+ return fCallback(new Error(`Could not update task definition: ${pError.message}`));
82
94
  }
83
95
 
84
- console.log(`Task with GUID ${pUpdatedTask.GUIDTask} updated successfully.`);
96
+ console.log(`Task definition ${pUpdatedTask.Hash} updated successfully.`);
85
97
 
86
98
  return fCallback();
87
99
  }.bind(this));
88
100
  }
89
101
  }
90
102
 
91
- module.exports = UltravisorCommandAddTask;
103
+ module.exports = UltravisorCommandAddTask;
@@ -1,10 +1,12 @@
1
+ let _ModuleRoot = require('path').resolve(__dirname, '..', '..');
2
+
1
3
  module.exports = (
2
4
  {
3
5
  "UltravisorAPIServerPort": 54321,
4
- "UltravisorFileStorePath": `${process.cwd()}/dist/ultravisor_datastore`,
5
- "UltravisorStagingRoot": `${process.cwd()}/dist/ultravisor_staging`,
6
+ "UltravisorFileStorePath": `${_ModuleRoot}/dist/ultravisor_datastore`,
7
+ "UltravisorStagingRoot": `${_ModuleRoot}/dist/ultravisor_staging`,
6
8
  "UltravisorTickIntervalMilliseconds": 60000,
7
9
  "UltravisorCommandTimeoutMilliseconds": 300000,
8
10
  "UltravisorCommandMaxBufferBytes": 10485760,
9
- "UltravisorWebInterfacePath": false
11
+ "UltravisorWebInterfacePath": `${_ModuleRoot}/webinterface/dist`
10
12
  });