ultravisor 1.0.3 → 1.0.8

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 (248) hide show
  1. package/.claude/launch.json +11 -0
  2. package/.claude/ultravisor-dev-config.json +3 -0
  3. package/card-audit.json +1545 -0
  4. package/docs/_sidebar.md +17 -0
  5. package/docs/css/docuserve.css +73 -0
  6. package/docs/features/beacon-authentication.md +209 -0
  7. package/docs/features/beacon-providers.md +1299 -0
  8. package/docs/features/beacons.md +530 -0
  9. package/docs/features/capabilities.md +193 -0
  10. package/docs/features/llm-model-setup.md +505 -0
  11. package/docs/features/llm.md +262 -0
  12. package/docs/features/tasks-content-system.md +110 -0
  13. package/docs/features/tasks-data-transform.md +233 -0
  14. package/docs/features/tasks-extension.md +36 -0
  15. package/docs/features/tasks-file-system.md +203 -0
  16. package/docs/features/tasks-flow-control.md +125 -0
  17. package/docs/features/tasks-http-client.md +119 -0
  18. package/docs/features/tasks-llm.md +118 -0
  19. package/docs/features/tasks-meadow-api.md +163 -0
  20. package/docs/features/tasks-user-interaction.md +49 -0
  21. package/docs/features/tasks.md +14 -0
  22. package/docs/index.html +1 -1
  23. package/docs/retold-catalog.json +1 -1
  24. package/docs/retold-keyword-index.json +17374 -5
  25. package/operation-library/api-data-pipeline.json +143 -0
  26. package/operation-library/beacon-remote-command.json +72 -0
  27. package/operation-library/conditional-file-backup.json +143 -0
  28. package/operation-library/config-processor.json +136 -0
  29. package/operation-library/csv-data-analysis.json +228 -0
  30. package/operation-library/csv-to-json.json +160 -0
  31. package/operation-library/directory-inventory.json +128 -0
  32. package/operation-library/expression-calculator.json +114 -0
  33. package/operation-library/file-search-replace.json +175 -0
  34. package/operation-library/git-status-report.json +368 -0
  35. package/operation-library/health-check-ping.json +329 -0
  36. package/operation-library/json-config-merge.json +313 -0
  37. package/operation-library/llm-embedding-tool-use.json +314 -0
  38. package/operation-library/llm-multi-turn-analysis.json +322 -0
  39. package/operation-library/llm-summarize.json +264 -0
  40. package/operation-library/log-line-counter.json +185 -0
  41. package/operation-library/meadow-crud-lifecycle.json +264 -0
  42. package/operation-library/npm-project-validator.json +193 -0
  43. package/operation-library/rest-api-orchestrator.json +218 -0
  44. package/operation-library/shell-system-info.json +137 -0
  45. package/operation-library/simple-echo.json +95 -0
  46. package/operation-library/template-processor.json +299 -0
  47. package/operation-library/text-sanitizer.json +176 -0
  48. package/package.json +12 -8
  49. package/source/Ultravisor.cjs +30 -3
  50. package/source/beacon/Ultravisor-Beacon-CLI.cjs +143 -0
  51. package/source/beacon/Ultravisor-Beacon-CapabilityProvider.cjs +129 -0
  52. package/source/beacon/Ultravisor-Beacon-Client.cjs +568 -0
  53. package/source/beacon/Ultravisor-Beacon-Executor.cjs +500 -0
  54. package/source/beacon/Ultravisor-Beacon-ProviderRegistry.cjs +330 -0
  55. package/source/beacon/providers/Ultravisor-Beacon-Provider-FileSystem.cjs +331 -0
  56. package/source/beacon/providers/Ultravisor-Beacon-Provider-LLM.cjs +966 -0
  57. package/source/beacon/providers/Ultravisor-Beacon-Provider-Shell.cjs +95 -0
  58. package/source/cli/Ultravisor-CLIProgram.cjs +44 -22
  59. package/source/cli/commands/Ultravisor-Command-SingleOperation.cjs +29 -18
  60. package/source/cli/commands/Ultravisor-Command-SingleTask.cjs +62 -19
  61. package/source/cli/commands/Ultravisor-Command-UpdateTask.cjs +27 -15
  62. package/source/config/Ultravisor-Default-Command-Configuration.cjs +12 -3
  63. package/source/services/Ultravisor-Beacon-Coordinator.cjs +966 -0
  64. package/source/services/Ultravisor-ExecutionEngine.cjs +1093 -0
  65. package/source/services/Ultravisor-ExecutionManifest.cjs +629 -0
  66. package/source/services/Ultravisor-Hypervisor-State.cjs +270 -97
  67. package/source/services/Ultravisor-Hypervisor.cjs +185 -75
  68. package/source/services/Ultravisor-Schedule-Persistence-Base.cjs +45 -0
  69. package/source/services/Ultravisor-StateManager.cjs +253 -0
  70. package/source/services/Ultravisor-TaskTypeRegistry.cjs +213 -0
  71. package/source/services/persistence/Ultravisor-Schedule-Persistence-JSONFile.cjs +140 -0
  72. package/source/services/tasks/Ultravisor-BuiltIn-TaskConfigs.cjs +19 -0
  73. package/source/services/tasks/Ultravisor-TaskHelper-BeaconDispatch.cjs +107 -0
  74. package/source/services/tasks/Ultravisor-TaskType-Base.cjs +125 -0
  75. package/source/services/tasks/content-system/Ultravisor-TaskConfigs-ContentSystem.cjs +90 -0
  76. package/source/services/tasks/content-system/definitions/content-create-folder.json +24 -0
  77. package/source/services/tasks/content-system/definitions/content-list-files.json +27 -0
  78. package/source/services/tasks/content-system/definitions/content-read-file.json +26 -0
  79. package/source/services/tasks/content-system/definitions/content-save-file.json +26 -0
  80. package/source/services/tasks/data-transform/Ultravisor-TaskConfigs-DataTransform.cjs +577 -0
  81. package/source/services/tasks/data-transform/Ultravisor-TaskType-ReplaceString.cjs +80 -0
  82. package/source/services/tasks/data-transform/Ultravisor-TaskType-SetValues.cjs +74 -0
  83. package/source/services/tasks/data-transform/Ultravisor-TaskType-StringAppender.cjs +90 -0
  84. package/source/services/tasks/data-transform/definitions/comprehension-intersect.json +24 -0
  85. package/source/services/tasks/data-transform/definitions/csv-transform.json +24 -0
  86. package/source/services/tasks/data-transform/definitions/expression-solver.json +20 -0
  87. package/source/services/tasks/data-transform/definitions/histogram.json +23 -0
  88. package/source/services/tasks/data-transform/definitions/parse-csv.json +27 -0
  89. package/source/services/tasks/data-transform/definitions/replace-string.json +27 -0
  90. package/source/services/tasks/data-transform/definitions/set-values.json +17 -0
  91. package/source/services/tasks/data-transform/definitions/string-appender.json +22 -0
  92. package/source/services/tasks/data-transform/definitions/template-string.json +20 -0
  93. package/source/services/tasks/extension/Ultravisor-TaskConfigs-Extension.cjs +87 -0
  94. package/source/services/tasks/extension/definitions/beacon-dispatch.json +32 -0
  95. package/source/services/tasks/file-system/Ultravisor-TaskConfigs-FileSystem.cjs +509 -0
  96. package/source/services/tasks/file-system/Ultravisor-TaskType-ReadFile.cjs +96 -0
  97. package/source/services/tasks/file-system/Ultravisor-TaskType-ReadFileBuffered.cjs +123 -0
  98. package/source/services/tasks/file-system/Ultravisor-TaskType-WriteFile.cjs +106 -0
  99. package/source/services/tasks/file-system/definitions/copy-file.json +27 -0
  100. package/source/services/tasks/file-system/definitions/list-files.json +27 -0
  101. package/source/services/tasks/file-system/definitions/read-file-buffered.json +31 -0
  102. package/source/services/tasks/file-system/definitions/read-file.json +26 -0
  103. package/source/services/tasks/file-system/definitions/read-json.json +23 -0
  104. package/source/services/tasks/file-system/definitions/write-file.json +29 -0
  105. package/source/services/tasks/file-system/definitions/write-json.json +30 -0
  106. package/source/services/tasks/flow-control/Ultravisor-TaskConfigs-FlowControl.cjs +353 -0
  107. package/source/services/tasks/flow-control/Ultravisor-TaskType-IfConditional.cjs +125 -0
  108. package/source/services/tasks/flow-control/Ultravisor-TaskType-LaunchOperation.cjs +186 -0
  109. package/source/services/tasks/flow-control/Ultravisor-TaskType-SplitExecute.cjs +164 -0
  110. package/source/services/tasks/flow-control/definitions/if-conditional.json +25 -0
  111. package/source/services/tasks/flow-control/definitions/launch-operation.json +27 -0
  112. package/source/services/tasks/flow-control/definitions/split-execute.json +32 -0
  113. package/source/services/tasks/http-client/Ultravisor-TaskConfigs-HttpClient.cjs +281 -0
  114. package/source/services/tasks/http-client/definitions/get-json.json +26 -0
  115. package/source/services/tasks/http-client/definitions/get-text.json +26 -0
  116. package/source/services/tasks/http-client/definitions/rest-request.json +32 -0
  117. package/source/services/tasks/http-client/definitions/send-json.json +28 -0
  118. package/source/services/tasks/llm/Ultravisor-TaskConfigs-LLM.cjs +605 -0
  119. package/source/services/tasks/llm/definitions/llm-chat-completion.json +46 -0
  120. package/source/services/tasks/llm/definitions/llm-embedding.json +31 -0
  121. package/source/services/tasks/llm/definitions/llm-tool-use.json +42 -0
  122. package/source/services/tasks/meadow-api/Ultravisor-TaskConfigs-MeadowApi.cjs +341 -0
  123. package/source/services/tasks/meadow-api/definitions/meadow-count.json +26 -0
  124. package/source/services/tasks/meadow-api/definitions/meadow-create.json +26 -0
  125. package/source/services/tasks/meadow-api/definitions/meadow-delete.json +23 -0
  126. package/source/services/tasks/meadow-api/definitions/meadow-read.json +26 -0
  127. package/source/services/tasks/meadow-api/definitions/meadow-reads.json +29 -0
  128. package/source/services/tasks/meadow-api/definitions/meadow-update.json +26 -0
  129. package/source/services/tasks/shell/Ultravisor-TaskConfigs-Shell.cjs +63 -0
  130. package/source/services/tasks/shell/definitions/command.json +29 -0
  131. package/source/services/tasks/user-interaction/Ultravisor-TaskConfigs-UserInteraction.cjs +64 -0
  132. package/source/services/tasks/user-interaction/Ultravisor-TaskType-ErrorMessage.cjs +55 -0
  133. package/source/services/tasks/user-interaction/Ultravisor-TaskType-ValueInput.cjs +47 -0
  134. package/source/services/tasks/user-interaction/definitions/error-message.json +18 -0
  135. package/source/services/tasks/user-interaction/definitions/value-input.json +23 -0
  136. package/source/web_server/Ultravisor-API-Server.cjs +849 -124
  137. package/test/Ultravisor_browser_tests.js +2226 -0
  138. package/test/Ultravisor_operation_library_tests.js +894 -0
  139. package/test/Ultravisor_tests.js +4946 -5044
  140. package/test/workflows/test-content-concatenate-all.json +339 -0
  141. package/test/workflows/test-content-full-pipeline.json +159 -0
  142. package/test/workflows/test-content-list-files.json +76 -0
  143. package/test/workflows/test-content-save-and-read.json +106 -0
  144. package/webinterface/css/ultravisor-themes.css +668 -0
  145. package/webinterface/css/ultravisor.css +37 -14
  146. package/webinterface/docs/card-help/beacon-dispatch.md +30 -0
  147. package/webinterface/docs/card-help/command.md +27 -0
  148. package/webinterface/docs/card-help/comprehension-intersect.md +24 -0
  149. package/webinterface/docs/card-help/content-create-folder.md +22 -0
  150. package/webinterface/docs/card-help/content-list-files.md +25 -0
  151. package/webinterface/docs/card-help/content-read-file.md +24 -0
  152. package/webinterface/docs/card-help/content-save-file.md +24 -0
  153. package/webinterface/docs/card-help/copy-file.md +25 -0
  154. package/webinterface/docs/card-help/csv-transform.md +24 -0
  155. package/webinterface/docs/card-help/end.md +11 -0
  156. package/webinterface/docs/card-help/error-message.md +16 -0
  157. package/webinterface/docs/card-help/expression-solver.md +21 -0
  158. package/webinterface/docs/card-help/get-json.md +24 -0
  159. package/webinterface/docs/card-help/get-text.md +24 -0
  160. package/webinterface/docs/card-help/histogram.md +23 -0
  161. package/webinterface/docs/card-help/if-conditional.md +23 -0
  162. package/webinterface/docs/card-help/launch-operation.md +25 -0
  163. package/webinterface/docs/card-help/list-files.md +25 -0
  164. package/webinterface/docs/card-help/llm-chat-completion.md +43 -0
  165. package/webinterface/docs/card-help/llm-embedding.md +24 -0
  166. package/webinterface/docs/card-help/llm-tool-use.md +39 -0
  167. package/webinterface/docs/card-help/meadow-count.md +24 -0
  168. package/webinterface/docs/card-help/meadow-create.md +24 -0
  169. package/webinterface/docs/card-help/meadow-delete.md +19 -0
  170. package/webinterface/docs/card-help/meadow-read.md +24 -0
  171. package/webinterface/docs/card-help/meadow-reads.md +27 -0
  172. package/webinterface/docs/card-help/meadow-update.md +24 -0
  173. package/webinterface/docs/card-help/parse-csv.md +27 -0
  174. package/webinterface/docs/card-help/read-file-buffered.md +29 -0
  175. package/webinterface/docs/card-help/read-file.md +24 -0
  176. package/webinterface/docs/card-help/read-json.md +21 -0
  177. package/webinterface/docs/card-help/replace-string.md +25 -0
  178. package/webinterface/docs/card-help/rest-request.md +30 -0
  179. package/webinterface/docs/card-help/send-json.md +26 -0
  180. package/webinterface/docs/card-help/set-values.md +16 -0
  181. package/webinterface/docs/card-help/split-execute.md +35 -0
  182. package/webinterface/docs/card-help/start.md +11 -0
  183. package/webinterface/docs/card-help/string-appender.md +22 -0
  184. package/webinterface/docs/card-help/template-string.md +21 -0
  185. package/webinterface/docs/card-help/value-input.md +24 -0
  186. package/webinterface/docs/card-help/write-file.md +27 -0
  187. package/webinterface/docs/card-help/write-json.md +28 -0
  188. package/webinterface/html/index.html +5 -0
  189. package/webinterface/package.json +13 -4
  190. package/webinterface/source/Pict-Application-Ultravisor.js +564 -70
  191. package/webinterface/source/Ultravisor-TimingUtils.js +99 -0
  192. package/webinterface/source/card-help-content.js +46 -0
  193. package/webinterface/source/cards/Ultravisor-BuiltIn-CardConfigs.js +174 -0
  194. package/webinterface/source/cards/Ultravisor-CardConfigGenerator.js +431 -0
  195. package/webinterface/source/data/ExampleFlow-CSVPipeline.js +231 -0
  196. package/webinterface/source/data/ExampleFlow-FileProcessor.js +315 -0
  197. package/webinterface/source/data/ExampleFlow-MeadowPipeline.js +328 -0
  198. package/webinterface/source/panels/Ultravisor-CardSettingsPanel.js +902 -0
  199. package/webinterface/source/providers/PictRouter-Ultravisor-Configuration.json +20 -8
  200. package/webinterface/source/views/PictView-Ultravisor-BeaconList.js +817 -0
  201. package/webinterface/source/views/PictView-Ultravisor-BottomBar.js +5 -5
  202. package/webinterface/source/views/PictView-Ultravisor-Dashboard.js +25 -25
  203. package/webinterface/source/views/PictView-Ultravisor-Documentation.js +856 -0
  204. package/webinterface/source/views/PictView-Ultravisor-FlowEditor.js +777 -0
  205. package/webinterface/source/views/PictView-Ultravisor-ManifestList.js +321 -58
  206. package/webinterface/source/views/PictView-Ultravisor-OperationEdit.js +36 -91
  207. package/webinterface/source/views/PictView-Ultravisor-OperationList.js +388 -16
  208. package/webinterface/source/views/PictView-Ultravisor-PendingInput.js +314 -0
  209. package/webinterface/source/views/PictView-Ultravisor-Schedule.js +521 -65
  210. package/webinterface/source/views/PictView-Ultravisor-TimingView.js +333 -71
  211. package/webinterface/source/views/PictView-Ultravisor-TopBar.js +257 -21
  212. package/webinterface/theme-sampler.html +645 -0
  213. package/debug/Harness.js +0 -6
  214. package/source/services/Ultravisor-Operation-Manifest.cjs +0 -160
  215. package/source/services/Ultravisor-Operation.cjs +0 -200
  216. package/source/services/Ultravisor-Task.cjs +0 -349
  217. package/source/services/events/Ultravisor-Hypervisor-Event-Solver.cjs +0 -11
  218. package/source/services/tasks/Ultravisor-Task-Base.cjs +0 -264
  219. package/source/services/tasks/Ultravisor-Task-CollectValues.cjs +0 -188
  220. package/source/services/tasks/Ultravisor-Task-Command.cjs +0 -65
  221. package/source/services/tasks/Ultravisor-Task-CommandEach.cjs +0 -190
  222. package/source/services/tasks/Ultravisor-Task-Conditional.cjs +0 -104
  223. package/source/services/tasks/Ultravisor-Task-DateWindow.cjs +0 -72
  224. package/source/services/tasks/Ultravisor-Task-GeneratePagedOperation.cjs +0 -336
  225. package/source/services/tasks/Ultravisor-Task-LaunchOperation.cjs +0 -143
  226. package/source/services/tasks/Ultravisor-Task-LaunchTask.cjs +0 -146
  227. package/source/services/tasks/Ultravisor-Task-LineMatch.cjs +0 -158
  228. package/source/services/tasks/Ultravisor-Task-Request.cjs +0 -56
  229. package/source/services/tasks/Ultravisor-Task-Solver.cjs +0 -89
  230. package/source/services/tasks/Ultravisor-Task-TemplateString.cjs +0 -93
  231. package/source/services/tasks/rest/Ultravisor-Task-GetBinary.cjs +0 -127
  232. package/source/services/tasks/rest/Ultravisor-Task-GetJSON.cjs +0 -119
  233. package/source/services/tasks/rest/Ultravisor-Task-GetText.cjs +0 -109
  234. package/source/services/tasks/rest/Ultravisor-Task-GetXML.cjs +0 -112
  235. package/source/services/tasks/rest/Ultravisor-Task-RestRequest.cjs +0 -499
  236. package/source/services/tasks/rest/Ultravisor-Task-SendJSON.cjs +0 -150
  237. package/source/services/tasks/stagingfiles/Ultravisor-Task-CopyFile.cjs +0 -110
  238. package/source/services/tasks/stagingfiles/Ultravisor-Task-ListFiles.cjs +0 -89
  239. package/source/services/tasks/stagingfiles/Ultravisor-Task-ReadBinary.cjs +0 -87
  240. package/source/services/tasks/stagingfiles/Ultravisor-Task-ReadJSON.cjs +0 -67
  241. package/source/services/tasks/stagingfiles/Ultravisor-Task-ReadText.cjs +0 -66
  242. package/source/services/tasks/stagingfiles/Ultravisor-Task-ReadXML.cjs +0 -69
  243. package/source/services/tasks/stagingfiles/Ultravisor-Task-WriteBinary.cjs +0 -95
  244. package/source/services/tasks/stagingfiles/Ultravisor-Task-WriteJSON.cjs +0 -96
  245. package/source/services/tasks/stagingfiles/Ultravisor-Task-WriteText.cjs +0 -99
  246. package/source/services/tasks/stagingfiles/Ultravisor-Task-WriteXML.cjs +0 -102
  247. package/webinterface/source/views/PictView-Ultravisor-TaskEdit.js +0 -220
  248. package/webinterface/source/views/PictView-Ultravisor-TaskList.js +0 -248
@@ -1,127 +0,0 @@
1
- const libUltravisorTaskBase = require('../Ultravisor-Task-Base.cjs');
2
-
3
- const libHTTP = require('http');
4
- const libHTTPS = require('https');
5
-
6
- class UltravisorTaskGetBinary extends libUltravisorTaskBase
7
- {
8
- constructor(pFable)
9
- {
10
- super(pFable);
11
- }
12
-
13
- /**
14
- * Download a binary file from an HTTP/HTTPS URL.
15
- *
16
- * Task definition fields:
17
- * - URL: the endpoint to download from
18
- * - Headers (optional): object of request headers
19
- * - Destination (optional): manyfest address in GlobalState
20
- * where the binary data is stored as base64 (defaults to "Output")
21
- * - Persist (optional): where to store the downloaded content
22
- * string -- manyfest address into GlobalState (stores base64)
23
- * { Address: "..." } -- same as string form
24
- * { File: "..." } -- writes the raw binary to a staging file
25
- */
26
- execute(pTaskDefinition, pContext, pManifestEntry, fCallback)
27
- {
28
- let tmpURL = pTaskDefinition.URL || pTaskDefinition.Parameters || '';
29
-
30
- if (!tmpURL || tmpURL.length === 0)
31
- {
32
- pManifestEntry.StopTime = new Date().toISOString();
33
- pManifestEntry.Status = 'Error';
34
- pManifestEntry.Log.push(`GetBinary: missing URL.`);
35
- return fCallback(null, pManifestEntry);
36
- }
37
-
38
- pManifestEntry.Log.push(`GetBinary: GET ${tmpURL}`);
39
-
40
- let tmpHeaders = Object.assign({}, pTaskDefinition.Headers || {});
41
-
42
- let tmpParsedURL;
43
- try
44
- {
45
- tmpParsedURL = new URL(tmpURL);
46
- }
47
- catch (pParseError)
48
- {
49
- pManifestEntry.StopTime = new Date().toISOString();
50
- pManifestEntry.Status = 'Error';
51
- pManifestEntry.Log.push(`GetBinary: invalid URL: ${pParseError.message}`);
52
- return fCallback(null, pManifestEntry);
53
- }
54
-
55
- let tmpTransport = (tmpParsedURL.protocol === 'https:') ? libHTTPS : libHTTP;
56
- let tmpTimeout = (this.fable?.ProgramConfiguration?.UltravisorCommandTimeoutMilliseconds) || 300000;
57
-
58
- let tmpRequestOptions = {
59
- method: 'GET',
60
- headers: tmpHeaders,
61
- timeout: tmpTimeout
62
- };
63
-
64
- let tmpRequest = tmpTransport.request(tmpURL, tmpRequestOptions,
65
- (pResponse) =>
66
- {
67
- let tmpChunks = [];
68
-
69
- pResponse.on('data', (pChunk) => { tmpChunks.push(pChunk); });
70
-
71
- pResponse.on('end', () =>
72
- {
73
- let tmpBuffer = Buffer.concat(tmpChunks);
74
-
75
- pManifestEntry.StopTime = new Date().toISOString();
76
- pManifestEntry.Log.push(`GetBinary: received ${tmpBuffer.length} bytes, status ${pResponse.statusCode}.`);
77
-
78
- pManifestEntry.Output = `${tmpBuffer.length} bytes downloaded`;
79
- pManifestEntry.Status = 'Complete';
80
- pManifestEntry.Success = true;
81
- pManifestEntry.Log.push(`GetBinary: download completed successfully.`);
82
-
83
- this.storeDestination(pTaskDefinition, pContext, pManifestEntry, tmpBuffer.toString('base64'));
84
-
85
- // Persist the result
86
- if (pTaskDefinition.Persist)
87
- {
88
- let tmpPersist = pTaskDefinition.Persist;
89
- let tmpIsAddressPersist = (typeof(tmpPersist) === 'string') ||
90
- (typeof(tmpPersist) === 'object' && tmpPersist !== null && tmpPersist.Address);
91
-
92
- if (tmpIsAddressPersist)
93
- {
94
- this.storeResult(pTaskDefinition, pContext, pManifestEntry, tmpBuffer.toString('base64'));
95
- }
96
- else
97
- {
98
- this.storeResult(pTaskDefinition, pContext, pManifestEntry, tmpBuffer);
99
- }
100
- }
101
-
102
- return fCallback(null, pManifestEntry);
103
- });
104
- });
105
-
106
- tmpRequest.on('error', (pError) =>
107
- {
108
- pManifestEntry.StopTime = new Date().toISOString();
109
- pManifestEntry.Status = 'Error';
110
- pManifestEntry.Log.push(`GetBinary: request error: ${pError.message}`);
111
- return fCallback(null, pManifestEntry);
112
- });
113
-
114
- tmpRequest.on('timeout', () =>
115
- {
116
- tmpRequest.destroy();
117
- pManifestEntry.StopTime = new Date().toISOString();
118
- pManifestEntry.Status = 'Error';
119
- pManifestEntry.Log.push(`GetBinary: request timed out after ${tmpTimeout}ms.`);
120
- return fCallback(null, pManifestEntry);
121
- });
122
-
123
- tmpRequest.end();
124
- }
125
- }
126
-
127
- module.exports = UltravisorTaskGetBinary;
@@ -1,119 +0,0 @@
1
- const libUltravisorTaskBase = require('../Ultravisor-Task-Base.cjs');
2
-
3
- const libHTTP = require('http');
4
- const libHTTPS = require('https');
5
-
6
- class UltravisorTaskGetJSON extends libUltravisorTaskBase
7
- {
8
- constructor(pFable)
9
- {
10
- super(pFable);
11
- }
12
-
13
- /**
14
- * Perform an HTTP/HTTPS GET and parse the response as JSON.
15
- *
16
- * Task definition fields:
17
- * - URL: the endpoint to request
18
- * - Headers (optional): object of request headers
19
- * - Destination (optional): manyfest address in GlobalState
20
- * where the parsed object is stored (defaults to "Output")
21
- * - Persist (optional): where to store the parsed response
22
- * string -- manyfest address into GlobalState
23
- * { Address: "..." } -- same as string form
24
- * { File: "..." } -- writes JSON to a staging file
25
- */
26
- execute(pTaskDefinition, pContext, pManifestEntry, fCallback)
27
- {
28
- let tmpURL = pTaskDefinition.URL || pTaskDefinition.Parameters || '';
29
-
30
- if (!tmpURL || tmpURL.length === 0)
31
- {
32
- pManifestEntry.StopTime = new Date().toISOString();
33
- pManifestEntry.Status = 'Error';
34
- pManifestEntry.Log.push(`GetJSON: missing URL.`);
35
- return fCallback(null, pManifestEntry);
36
- }
37
-
38
- pManifestEntry.Log.push(`GetJSON: GET ${tmpURL}`);
39
-
40
- let tmpHeaders = Object.assign({ 'Accept': 'application/json' }, pTaskDefinition.Headers || {});
41
-
42
- let tmpParsedURL;
43
- try
44
- {
45
- tmpParsedURL = new URL(tmpURL);
46
- }
47
- catch (pParseError)
48
- {
49
- pManifestEntry.StopTime = new Date().toISOString();
50
- pManifestEntry.Status = 'Error';
51
- pManifestEntry.Log.push(`GetJSON: invalid URL: ${pParseError.message}`);
52
- return fCallback(null, pManifestEntry);
53
- }
54
-
55
- let tmpTransport = (tmpParsedURL.protocol === 'https:') ? libHTTPS : libHTTP;
56
- let tmpTimeout = (this.fable?.ProgramConfiguration?.UltravisorCommandTimeoutMilliseconds) || 300000;
57
-
58
- let tmpRequestOptions = {
59
- method: 'GET',
60
- headers: tmpHeaders,
61
- timeout: tmpTimeout
62
- };
63
-
64
- let tmpRequest = tmpTransport.request(tmpURL, tmpRequestOptions,
65
- (pResponse) =>
66
- {
67
- let tmpData = '';
68
-
69
- pResponse.on('data', (pChunk) => { tmpData += pChunk; });
70
-
71
- pResponse.on('end', () =>
72
- {
73
- pManifestEntry.StopTime = new Date().toISOString();
74
- pManifestEntry.Log.push(`GetJSON: received ${tmpData.length} bytes, status ${pResponse.statusCode}.`);
75
-
76
- try
77
- {
78
- let tmpParsed = JSON.parse(tmpData);
79
- pManifestEntry.Output = JSON.stringify(tmpParsed);
80
- pManifestEntry.Status = 'Complete';
81
- pManifestEntry.Success = true;
82
- pManifestEntry.Log.push(`GetJSON: parsed JSON successfully.`);
83
-
84
- this.storeDestination(pTaskDefinition, pContext, pManifestEntry, tmpParsed);
85
- this.storeResult(pTaskDefinition, pContext, pManifestEntry, tmpParsed);
86
- }
87
- catch (pJsonError)
88
- {
89
- pManifestEntry.Output = tmpData.substring(0, 2000);
90
- pManifestEntry.Status = 'Error';
91
- pManifestEntry.Log.push(`GetJSON: failed to parse response as JSON: ${pJsonError.message}`);
92
- }
93
-
94
- return fCallback(null, pManifestEntry);
95
- });
96
- });
97
-
98
- tmpRequest.on('error', (pError) =>
99
- {
100
- pManifestEntry.StopTime = new Date().toISOString();
101
- pManifestEntry.Status = 'Error';
102
- pManifestEntry.Log.push(`GetJSON: request error: ${pError.message}`);
103
- return fCallback(null, pManifestEntry);
104
- });
105
-
106
- tmpRequest.on('timeout', () =>
107
- {
108
- tmpRequest.destroy();
109
- pManifestEntry.StopTime = new Date().toISOString();
110
- pManifestEntry.Status = 'Error';
111
- pManifestEntry.Log.push(`GetJSON: request timed out after ${tmpTimeout}ms.`);
112
- return fCallback(null, pManifestEntry);
113
- });
114
-
115
- tmpRequest.end();
116
- }
117
- }
118
-
119
- module.exports = UltravisorTaskGetJSON;
@@ -1,109 +0,0 @@
1
- const libUltravisorTaskBase = require('../Ultravisor-Task-Base.cjs');
2
-
3
- const libHTTP = require('http');
4
- const libHTTPS = require('https');
5
-
6
- class UltravisorTaskGetText extends libUltravisorTaskBase
7
- {
8
- constructor(pFable)
9
- {
10
- super(pFable);
11
- }
12
-
13
- /**
14
- * Perform an HTTP/HTTPS GET and return the response as plain text.
15
- *
16
- * Task definition fields:
17
- * - URL: the endpoint to request
18
- * - Headers (optional): object of request headers
19
- * - Destination (optional): manyfest address in GlobalState
20
- * where the response text is stored (defaults to "Output")
21
- * - Persist (optional): where to store the response text
22
- * string -- manyfest address into GlobalState
23
- * { Address: "..." } -- same as string form
24
- * { File: "..." } -- writes the text to a staging file
25
- */
26
- execute(pTaskDefinition, pContext, pManifestEntry, fCallback)
27
- {
28
- let tmpURL = pTaskDefinition.URL || pTaskDefinition.Parameters || '';
29
-
30
- if (!tmpURL || tmpURL.length === 0)
31
- {
32
- pManifestEntry.StopTime = new Date().toISOString();
33
- pManifestEntry.Status = 'Error';
34
- pManifestEntry.Log.push(`GetText: missing URL.`);
35
- return fCallback(null, pManifestEntry);
36
- }
37
-
38
- pManifestEntry.Log.push(`GetText: GET ${tmpURL}`);
39
-
40
- let tmpHeaders = Object.assign({ 'Accept': 'text/plain' }, pTaskDefinition.Headers || {});
41
-
42
- let tmpParsedURL;
43
- try
44
- {
45
- tmpParsedURL = new URL(tmpURL);
46
- }
47
- catch (pParseError)
48
- {
49
- pManifestEntry.StopTime = new Date().toISOString();
50
- pManifestEntry.Status = 'Error';
51
- pManifestEntry.Log.push(`GetText: invalid URL: ${pParseError.message}`);
52
- return fCallback(null, pManifestEntry);
53
- }
54
-
55
- let tmpTransport = (tmpParsedURL.protocol === 'https:') ? libHTTPS : libHTTP;
56
- let tmpTimeout = (this.fable?.ProgramConfiguration?.UltravisorCommandTimeoutMilliseconds) || 300000;
57
-
58
- let tmpRequestOptions = {
59
- method: 'GET',
60
- headers: tmpHeaders,
61
- timeout: tmpTimeout
62
- };
63
-
64
- let tmpRequest = tmpTransport.request(tmpURL, tmpRequestOptions,
65
- (pResponse) =>
66
- {
67
- let tmpData = '';
68
-
69
- pResponse.on('data', (pChunk) => { tmpData += pChunk; });
70
-
71
- pResponse.on('end', () =>
72
- {
73
- pManifestEntry.StopTime = new Date().toISOString();
74
- pManifestEntry.Log.push(`GetText: received ${tmpData.length} bytes, status ${pResponse.statusCode}.`);
75
-
76
- pManifestEntry.Output = tmpData;
77
- pManifestEntry.Status = 'Complete';
78
- pManifestEntry.Success = true;
79
- pManifestEntry.Log.push(`GetText: response received successfully.`);
80
-
81
- this.storeDestination(pTaskDefinition, pContext, pManifestEntry, tmpData);
82
- this.storeResult(pTaskDefinition, pContext, pManifestEntry, tmpData);
83
-
84
- return fCallback(null, pManifestEntry);
85
- });
86
- });
87
-
88
- tmpRequest.on('error', (pError) =>
89
- {
90
- pManifestEntry.StopTime = new Date().toISOString();
91
- pManifestEntry.Status = 'Error';
92
- pManifestEntry.Log.push(`GetText: request error: ${pError.message}`);
93
- return fCallback(null, pManifestEntry);
94
- });
95
-
96
- tmpRequest.on('timeout', () =>
97
- {
98
- tmpRequest.destroy();
99
- pManifestEntry.StopTime = new Date().toISOString();
100
- pManifestEntry.Status = 'Error';
101
- pManifestEntry.Log.push(`GetText: request timed out after ${tmpTimeout}ms.`);
102
- return fCallback(null, pManifestEntry);
103
- });
104
-
105
- tmpRequest.end();
106
- }
107
- }
108
-
109
- module.exports = UltravisorTaskGetText;
@@ -1,112 +0,0 @@
1
- const libUltravisorTaskBase = require('../Ultravisor-Task-Base.cjs');
2
-
3
- const libHTTP = require('http');
4
- const libHTTPS = require('https');
5
-
6
- class UltravisorTaskGetXML extends libUltravisorTaskBase
7
- {
8
- constructor(pFable)
9
- {
10
- super(pFable);
11
- }
12
-
13
- /**
14
- * Perform an HTTP/HTTPS GET and return the response as XML text.
15
- *
16
- * The raw XML string is returned in Output. No parsing is performed
17
- * -- the caller is responsible for interpreting the XML structure.
18
- *
19
- * Task definition fields:
20
- * - URL: the endpoint to request
21
- * - Headers (optional): object of request headers
22
- * - Destination (optional): manyfest address in GlobalState
23
- * where the XML response is stored (defaults to "Output")
24
- * - Persist (optional): where to store the XML response
25
- * string -- manyfest address into GlobalState
26
- * { Address: "..." } -- same as string form
27
- * { File: "..." } -- writes the XML to a staging file
28
- */
29
- execute(pTaskDefinition, pContext, pManifestEntry, fCallback)
30
- {
31
- let tmpURL = pTaskDefinition.URL || pTaskDefinition.Parameters || '';
32
-
33
- if (!tmpURL || tmpURL.length === 0)
34
- {
35
- pManifestEntry.StopTime = new Date().toISOString();
36
- pManifestEntry.Status = 'Error';
37
- pManifestEntry.Log.push(`GetXML: missing URL.`);
38
- return fCallback(null, pManifestEntry);
39
- }
40
-
41
- pManifestEntry.Log.push(`GetXML: GET ${tmpURL}`);
42
-
43
- let tmpHeaders = Object.assign({ 'Accept': 'application/xml, text/xml' }, pTaskDefinition.Headers || {});
44
-
45
- let tmpParsedURL;
46
- try
47
- {
48
- tmpParsedURL = new URL(tmpURL);
49
- }
50
- catch (pParseError)
51
- {
52
- pManifestEntry.StopTime = new Date().toISOString();
53
- pManifestEntry.Status = 'Error';
54
- pManifestEntry.Log.push(`GetXML: invalid URL: ${pParseError.message}`);
55
- return fCallback(null, pManifestEntry);
56
- }
57
-
58
- let tmpTransport = (tmpParsedURL.protocol === 'https:') ? libHTTPS : libHTTP;
59
- let tmpTimeout = (this.fable?.ProgramConfiguration?.UltravisorCommandTimeoutMilliseconds) || 300000;
60
-
61
- let tmpRequestOptions = {
62
- method: 'GET',
63
- headers: tmpHeaders,
64
- timeout: tmpTimeout
65
- };
66
-
67
- let tmpRequest = tmpTransport.request(tmpURL, tmpRequestOptions,
68
- (pResponse) =>
69
- {
70
- let tmpData = '';
71
-
72
- pResponse.on('data', (pChunk) => { tmpData += pChunk; });
73
-
74
- pResponse.on('end', () =>
75
- {
76
- pManifestEntry.StopTime = new Date().toISOString();
77
- pManifestEntry.Log.push(`GetXML: received ${tmpData.length} bytes, status ${pResponse.statusCode}.`);
78
-
79
- pManifestEntry.Output = tmpData;
80
- pManifestEntry.Status = 'Complete';
81
- pManifestEntry.Success = true;
82
- pManifestEntry.Log.push(`GetXML: response received successfully.`);
83
-
84
- this.storeDestination(pTaskDefinition, pContext, pManifestEntry, tmpData);
85
- this.storeResult(pTaskDefinition, pContext, pManifestEntry, tmpData);
86
-
87
- return fCallback(null, pManifestEntry);
88
- });
89
- });
90
-
91
- tmpRequest.on('error', (pError) =>
92
- {
93
- pManifestEntry.StopTime = new Date().toISOString();
94
- pManifestEntry.Status = 'Error';
95
- pManifestEntry.Log.push(`GetXML: request error: ${pError.message}`);
96
- return fCallback(null, pManifestEntry);
97
- });
98
-
99
- tmpRequest.on('timeout', () =>
100
- {
101
- tmpRequest.destroy();
102
- pManifestEntry.StopTime = new Date().toISOString();
103
- pManifestEntry.Status = 'Error';
104
- pManifestEntry.Log.push(`GetXML: request timed out after ${tmpTimeout}ms.`);
105
- return fCallback(null, pManifestEntry);
106
- });
107
-
108
- tmpRequest.end();
109
- }
110
- }
111
-
112
- module.exports = UltravisorTaskGetXML;