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
@@ -0,0 +1,203 @@
1
+ # File System Tasks
2
+
3
+ Tasks for reading, writing, copying, and listing files on the local file system.
4
+
5
+ ---
6
+
7
+ ## Read File
8
+
9
+ Reads a file from the local file system into operation state.
10
+
11
+ ### Settings
12
+
13
+ - **FilePath** — Path to the file to read. Supports Pict template expressions for dynamic paths.
14
+ - **Encoding** — Character encoding (default `utf8`). Use `binary` for non-text files.
15
+ - **MaxBytes** — Maximum bytes to read. Set to `0` for unlimited.
16
+
17
+ ### Outputs
18
+
19
+ - **FileContent** — The full text content of the file.
20
+ - **BytesRead** — Number of bytes that were read.
21
+ - **FileName** — The base name of the file (no directory).
22
+
23
+ ### Events
24
+
25
+ - **ReadComplete** — Fires after a successful read.
26
+ - **Error** — Fires if the file cannot be found or read.
27
+
28
+ ### Tips
29
+
30
+ For very large files, use **Read File Buffered** instead to process content in chunks. Use MaxBytes as a safety limit to avoid loading unexpectedly large files into memory.
31
+
32
+ ---
33
+
34
+ ## Read File Buffered
35
+
36
+ Reads a file in chunks up to a maximum buffer size, splitting on a preferred character boundary. Ideal for processing large files that should not be loaded entirely into memory.
37
+
38
+ ### Settings
39
+
40
+ - **FilePath** — Path to the file to read.
41
+ - **Encoding** — Character encoding (default `utf8`).
42
+ - **MaxBufferSize** — Maximum bytes per chunk (default `65536`).
43
+ - **SplitCharacter** — Preferred character to split on (default newline). The chunk is trimmed to the last occurrence of this character within the buffer so records are not broken mid-line.
44
+ - **ByteOffset** — Byte offset to start reading from. Use `0` for the first chunk and feed the output ByteOffset back for continuation.
45
+
46
+ ### Outputs
47
+
48
+ - **FileContent** — Content of the current chunk.
49
+ - **BytesRead** — Bytes in this chunk.
50
+ - **ByteOffset** — Updated byte offset for the next read.
51
+ - **IsComplete** — `true` when the entire file has been read.
52
+ - **FileName** — Base name of the file.
53
+ - **TotalFileSize** — Total size of the file in bytes.
54
+
55
+ ### Events
56
+
57
+ - **ReadComplete** — Fires when a chunk is read successfully.
58
+ - **Error** — Fires on read failure.
59
+
60
+ ### Tips
61
+
62
+ Wire the ByteOffset output back to the ByteOffset setting input and use an **If Conditional** on IsComplete to create a read loop. This pattern lets you process files of any size line-by-line or paragraph-by-paragraph.
63
+
64
+ ---
65
+
66
+ ## Read JSON
67
+
68
+ Reads a JSON file from disk, parses it, and stores the resulting object in operation state.
69
+
70
+ ### Settings
71
+
72
+ - **FilePath** — Path to the JSON file.
73
+ - **Destination** — State address to store the parsed data. If empty, data is stored at the default output address.
74
+
75
+ ### Outputs
76
+
77
+ - **Data** — The parsed JSON object or array.
78
+
79
+ ### Events
80
+
81
+ - **Complete** — Fires after successful read and parse.
82
+ - **Error** — Fires if the file is missing or contains invalid JSON.
83
+
84
+ ### Tips
85
+
86
+ Pair with **Write JSON** to round-trip configuration or intermediate data. Use the Destination setting to place the parsed data at a specific location in your operation state for downstream tasks.
87
+
88
+ ---
89
+
90
+ ## Write File
91
+
92
+ Writes text content to a file on disk.
93
+
94
+ ### Settings
95
+
96
+ - **FilePath** — Path to the output file. Intermediate directories are created automatically.
97
+ - **Content** — The text content to write. Supports Pict template expressions.
98
+ - **Encoding** — Character encoding (default `utf8`).
99
+ - **Append** — When `true`, appends to an existing file instead of overwriting it.
100
+ - **LineEnding** — Force a line ending style: `lf`, `crlf`, or leave empty for no conversion.
101
+
102
+ ### Outputs
103
+
104
+ - **FileLocation** — The path as specified (may be relative).
105
+ - **FileName** — The base file name only.
106
+ - **FilePath** — The fully resolved absolute path.
107
+ - **BytesWritten** — Number of bytes written.
108
+
109
+ ### Events
110
+
111
+ - **WriteComplete** — Fires on success.
112
+ - **Error** — Fires on write failure.
113
+
114
+ ### Tips
115
+
116
+ Use Append mode with a **String Appender** to build log files or accumulate output across loop iterations.
117
+
118
+ ---
119
+
120
+ ## Write JSON
121
+
122
+ Serializes a state object to JSON and writes it to a file on disk.
123
+
124
+ ### Settings
125
+
126
+ - **FilePath** — Path to the output JSON file.
127
+ - **DataAddress** — State address of the data to serialize. If empty, uses the full operation state.
128
+ - **PrettyFormat** — Pretty-print with indentation (default `true`).
129
+ - **IndentType** — Indent character: `tab` or `space` (default `tab`).
130
+ - **IndentCount** — Number of indent characters per level (default `1`).
131
+ - **SortKeys** — Alphabetically sort object keys for deterministic output.
132
+
133
+ ### Outputs
134
+
135
+ - **FileLocation** — The path as specified.
136
+ - **FileName** — The base file name only.
137
+ - **FilePath** — The fully resolved absolute path.
138
+ - **BytesWritten** — Number of bytes written.
139
+
140
+ ### Events
141
+
142
+ - **Done** — Fires on success.
143
+ - **Error** — Fires on write failure.
144
+
145
+ ### Tips
146
+
147
+ Enable SortKeys for config files that will be compared across versions or stored in version control.
148
+
149
+ ---
150
+
151
+ ## Copy File
152
+
153
+ Copies a file from a source path to a target path.
154
+
155
+ ### Settings
156
+
157
+ - **Source** — Source file path.
158
+ - **TargetFile** — Destination file path.
159
+ - **Overwrite** — Allow overwriting an existing target file (default `true`).
160
+
161
+ ### Outputs
162
+
163
+ - **FileLocation** — The target path as specified.
164
+ - **FileName** — The target file name only.
165
+ - **FilePath** — The fully resolved absolute target path.
166
+ - **BytesCopied** — Size of the copied file in bytes.
167
+
168
+ ### Events
169
+
170
+ - **Done** — Fires on successful copy.
171
+ - **Error** — Fires if the source is missing or the target cannot be written.
172
+
173
+ ### Tips
174
+
175
+ Set Overwrite to `false` to protect existing files from accidental replacement. Both Source and TargetFile support Pict template expressions for dynamic paths.
176
+
177
+ ---
178
+
179
+ ## List Files
180
+
181
+ Lists files in a directory with optional glob pattern filtering.
182
+
183
+ ### Settings
184
+
185
+ - **Folder** — Directory path to list.
186
+ - **Pattern** — Glob pattern filter (e.g. `*.txt`, `*.json`). Default `*` matches all files.
187
+ - **Destination** — State address to store the resulting file list.
188
+ - **Recursive** — When `true`, includes files in subdirectories.
189
+ - **IncludeDirectories** — When `true`, includes directory entries in the results.
190
+
191
+ ### Outputs
192
+
193
+ - **Files** — Array of file name strings matching the pattern.
194
+ - **FileCount** — Number of entries found.
195
+
196
+ ### Events
197
+
198
+ - **Complete** — Fires after listing is complete.
199
+ - **Error** — Fires if the directory cannot be read.
200
+
201
+ ### Tips
202
+
203
+ Use with **Split Execute** to iterate over the file list and process each file individually. Combine Recursive mode with a specific Pattern to find files deep in a directory tree.
@@ -0,0 +1,125 @@
1
+ # Flow Control Tasks
2
+
3
+ Tasks for branching, looping, launching sub-operations, and executing shell commands to control the flow of execution.
4
+
5
+ ---
6
+
7
+ ## If Conditional
8
+
9
+ Evaluates a condition and branches execution to the True or False output. This is the primary decision-making card in a flow.
10
+
11
+ ### Settings
12
+
13
+ - **DataAddress** — State address of the value to test.
14
+ - **CompareValue** — Value to compare against.
15
+ - **Operator** — Comparison operator: `==`, `!=`, `>`, `<`, `>=`, `<=`, `contains`, `startsWith`, `endsWith`. Default `==`.
16
+ - **Expression** — A full expression string. When set, DataAddress/CompareValue/Operator are ignored and the expression is evaluated directly.
17
+
18
+ ### Outputs
19
+
20
+ - **Result** — Boolean result of the evaluation.
21
+
22
+ ### Events
23
+
24
+ - **True** — Fires when the condition is true.
25
+ - **False** — Fires when the condition is false.
26
+
27
+ ### Tips
28
+
29
+ Use Expression for complex conditions that combine multiple state values. For simple equality checks, DataAddress + CompareValue + Operator is more readable. The False output is positioned at the bottom of the card for visual clarity in flow diagrams.
30
+
31
+ ---
32
+
33
+ ## Split Execute
34
+
35
+ Splits a string by a delimiter and processes each token through a sub-graph, acting as a loop iterator within the flow.
36
+
37
+ ### Settings
38
+
39
+ - **InputString** — The string to split. Supports Pict template expressions.
40
+ - **SplitDelimiter** — Delimiter to split on (default newline `\n`).
41
+ - **SkipEmpty** — When `true`, skips empty tokens after splitting.
42
+ - **TrimTokens** — When `true`, trims whitespace from each token.
43
+
44
+ ### Outputs
45
+
46
+ - **CurrentToken** — The current token being processed.
47
+ - **TokenIndex** — Zero-based index of the current token.
48
+ - **TokenCount** — Total number of tokens.
49
+ - **CompletedCount** — Number of tokens processed so far.
50
+
51
+ ### Events
52
+
53
+ - **TokenDataSent** — Fires for each token, sending it through the sub-graph.
54
+ - **CompletedAllSubtasks** — Fires after all tokens have been processed.
55
+ - **Error** — Fires on failure.
56
+
57
+ ### How It Works
58
+
59
+ 1. The input string is split into tokens by the delimiter.
60
+ 2. For each token, **TokenDataSent** fires with the token data in state.
61
+ 3. Connect the downstream processing graph to TokenDataSent.
62
+ 4. Wire the end of your processing graph back to the **StepComplete** event input to advance to the next token.
63
+ 5. After all tokens are processed, **CompletedAllSubtasks** fires.
64
+
65
+ ### Tips
66
+
67
+ Split Execute is the primary looping mechanism in Ultravisor flows. Use it with **List Files** output to process each file, or with newline-delimited text to process line-by-line.
68
+
69
+ ---
70
+
71
+ ## Launch Operation
72
+
73
+ Executes a child operation by its hash, with isolated operation state. This enables modular flow composition by calling one operation from within another.
74
+
75
+ ### Settings
76
+
77
+ - **OperationHash** — The hash identifier of the operation to launch.
78
+ - **InputData** — JSON data to pass as input to the child operation.
79
+ - **TimeoutMs** — Maximum execution time in milliseconds. Set to `0` for unlimited.
80
+ - **InheritGlobalState** — When `true` (default), copies the parent's GlobalState into the child operation.
81
+
82
+ ### Outputs
83
+
84
+ - **Result** — The result data returned by the child operation.
85
+ - **Status** — Final status of the child operation.
86
+ - **ElapsedMs** — Execution time of the child operation in milliseconds.
87
+
88
+ ### Events
89
+
90
+ - **Completed** — Fires when the child operation finishes.
91
+ - **Error** — Fires if the child operation fails or times out.
92
+
93
+ ### Tips
94
+
95
+ Use Launch Operation to break complex workflows into reusable sub-operations. The child operation runs with its own isolated state, so it cannot accidentally modify the parent's local state. Use InheritGlobalState to share configuration and credentials.
96
+
97
+ ---
98
+
99
+ ## Command
100
+
101
+ Executes a shell command on the server and captures its output.
102
+
103
+ ### Settings
104
+
105
+ - **Command** — The shell command to execute (e.g. `ls`, `git`, `python3`).
106
+ - **Parameters** — Command-line arguments as a single string.
107
+ - **Description** — Human-readable description of what this command does (for documentation only).
108
+ - **WorkingDirectory** — Working directory for the command.
109
+ - **TimeoutMs** — Command timeout in milliseconds (default `300000` — 5 minutes).
110
+ - **Environment** — JSON object of environment variables to set for the command.
111
+
112
+ ### Outputs
113
+
114
+ - **StdOut** — Standard output from the command.
115
+ - **StdErr** — Standard error output from the command.
116
+ - **ExitCode** — Exit code (0 typically indicates success).
117
+
118
+ ### Events
119
+
120
+ - **Complete** — Fires when the command finishes.
121
+ - **Error** — Fires if the command fails to start or times out.
122
+
123
+ ### Tips
124
+
125
+ Use an **If Conditional** on ExitCode to handle success vs failure. Both Command and Parameters support Pict template expressions, so you can build dynamic commands from state values. Set Environment to inject secrets or configuration without hardcoding them.
@@ -0,0 +1,119 @@
1
+ # HTTP Client Tasks
2
+
3
+ Tasks for making HTTP requests to external APIs and web services, from simple GET operations to fully configurable REST calls.
4
+
5
+ ---
6
+
7
+ ## Get JSON
8
+
9
+ Performs an HTTP GET request and parses the response body as JSON.
10
+
11
+ ### Settings
12
+
13
+ - **URL** — The URL to request. Supports Pict template expressions for dynamic URLs.
14
+ - **Headers** — JSON string of additional request headers (e.g. `{"Authorization": "Bearer ..."}`).
15
+ - **Destination** — State address to store the parsed response data.
16
+ - **TimeoutMs** — Request timeout in milliseconds (default `30000`).
17
+
18
+ ### Outputs
19
+
20
+ - **Data** — The parsed JSON response object.
21
+ - **StatusCode** — HTTP response status code.
22
+
23
+ ### Events
24
+
25
+ - **Complete** — Fires on a successful response.
26
+ - **Error** — Fires on network failure, timeout, or non-2xx status.
27
+
28
+ ### Tips
29
+
30
+ For APIs requiring authentication, use **Set Values** to build the Headers JSON from stored credentials before connecting to the Headers setting input. Use the StatusCode output with an **If Conditional** to handle different HTTP response codes.
31
+
32
+ ---
33
+
34
+ ## Get Text
35
+
36
+ Performs an HTTP GET request and returns the response body as plain text.
37
+
38
+ ### Settings
39
+
40
+ - **URL** — The URL to request.
41
+ - **Destination** — State address to store the response text.
42
+ - **Headers** — JSON string of additional request headers.
43
+ - **TimeoutMs** — Request timeout in milliseconds (default `30000`).
44
+
45
+ ### Outputs
46
+
47
+ - **Data** — The response body as a string.
48
+ - **StatusCode** — HTTP response status code.
49
+
50
+ ### Events
51
+
52
+ - **Complete** — Fires on a successful response.
53
+ - **Error** — Fires on network failure or timeout.
54
+
55
+ ### Tips
56
+
57
+ Use Get Text for non-JSON responses: HTML pages, CSV downloads, plain text APIs, or XML feeds. Pipe the output into **Parse CSV** for CSV data or **Replace String** for text processing.
58
+
59
+ ---
60
+
61
+ ## Send JSON
62
+
63
+ Sends JSON data to a URL via HTTP POST or PUT.
64
+
65
+ ### Settings
66
+
67
+ - **URL** — The URL to send data to.
68
+ - **Method** — HTTP method: `POST` or `PUT` (default `POST`).
69
+ - **DataAddress** — State address of the object to send as the request body.
70
+ - **Headers** — JSON string of additional request headers.
71
+ - **Destination** — State address to store the response data.
72
+ - **TimeoutMs** — Request timeout in milliseconds (default `30000`).
73
+
74
+ ### Outputs
75
+
76
+ - **Response** — The parsed response data.
77
+ - **StatusCode** — HTTP response status code.
78
+
79
+ ### Events
80
+
81
+ - **Complete** — Fires on success.
82
+ - **Error** — Fires on failure.
83
+
84
+ ### Tips
85
+
86
+ Use Send JSON for creating or updating resources via REST APIs. For more control over the request (custom Content-Type, DELETE method, retries), use **REST Request** instead.
87
+
88
+ ---
89
+
90
+ ## REST Request
91
+
92
+ Performs a fully configurable HTTP request with support for any method, custom content types, request bodies, retries, and timeout control.
93
+
94
+ ### Settings
95
+
96
+ - **URL** — The URL to request.
97
+ - **Method** — HTTP method: `GET`, `POST`, `PUT`, `DELETE`, `PATCH`, etc. (default `GET`).
98
+ - **ContentType** — Content-Type header value (default `application/json`).
99
+ - **Headers** — JSON string of additional request headers.
100
+ - **Body** — Request body as a JSON string or raw text.
101
+ - **Destination** — State address to store the response.
102
+ - **Retries** — Number of retries on failure (default `0`).
103
+ - **TimeoutMs** — Request timeout in milliseconds (default `30000`).
104
+ - **RetryDelayMs** — Delay between retry attempts in milliseconds (default `1000`).
105
+
106
+ ### Outputs
107
+
108
+ - **Response** — The response data.
109
+ - **StatusCode** — HTTP response status code.
110
+ - **ResponseHeaders** — JSON string of response headers.
111
+
112
+ ### Events
113
+
114
+ - **Complete** — Fires on success.
115
+ - **Error** — Fires on failure after all retries are exhausted.
116
+
117
+ ### Tips
118
+
119
+ REST Request is the most flexible HTTP card. Use it for DELETE operations, form-encoded POST bodies, XML APIs, or any case where Get JSON / Send JSON are too restrictive. The Retries setting with RetryDelayMs provides built-in resilience for flaky endpoints.
@@ -0,0 +1,118 @@
1
+ # LLM Tasks
2
+
3
+ Tasks for integrating with large language models, including chat completions, embeddings, and tool use. These tasks dispatch work to Beacon workers with LLM capability.
4
+
5
+ ---
6
+
7
+ ## LLM Chat Completion
8
+
9
+ Sends messages to a large language model and returns the completion. Supports multi-turn conversation history with persistence across operation runs.
10
+
11
+ ### Settings
12
+
13
+ - **SystemPrompt** — System prompt text that sets the LLM's behavior and context.
14
+ - **UserPrompt** — User prompt text for the current turn.
15
+ - **Messages** — JSON array of message objects `[{role, content}]` for direct control over the conversation. Overrides SystemPrompt/UserPrompt when set.
16
+ - **Model** — Override the default model name.
17
+ - **Temperature** — Sampling temperature (0–2). Lower values are more deterministic.
18
+ - **MaxTokens** — Maximum tokens to generate (default `4096`).
19
+ - **TopP** — Nucleus sampling parameter.
20
+ - **StopSequences** — JSON array of sequences that stop generation.
21
+ - **ResponseFormat** — Set to `json_object` to force JSON output.
22
+ - **InputAddress** — State address to read additional context data from (appended to UserPrompt).
23
+ - **Destination** — State address to write the completion text to.
24
+
25
+ ### Conversation History
26
+
27
+ - **ConversationAddress** — State address to store message history for multi-turn conversations.
28
+ - **AppendToConversation** — Append this exchange to history (default `true` when ConversationAddress is set).
29
+ - **ConversationMaxMessages** — Sliding window: maximum non-system messages to keep.
30
+ - **ConversationMaxTokens** — Token budget for history (approximate, trims oldest messages).
31
+ - **PersistConversation** — Copy conversation history to GlobalState for cross-operation persistence.
32
+ - **ConversationPersistAddress** — GlobalState address for persistence.
33
+
34
+ ### Dispatch
35
+
36
+ - **AffinityKey** — Route to a specific Beacon worker for consistent model access.
37
+ - **TimeoutMs** — Timeout in milliseconds (default `120000`).
38
+
39
+ ### Outputs
40
+
41
+ - **Content** — The LLM's response text.
42
+ - **Model** — Model that generated the response.
43
+ - **PromptTokens** / **CompletionTokens** / **TotalTokens** — Token usage statistics.
44
+ - **FinishReason** — Why the completion ended (`stop`, `length`, etc.).
45
+ - **BeaconID** — ID of the Beacon worker that executed the request.
46
+
47
+ ### Tips
48
+
49
+ Use ConversationAddress with PersistConversation to build chatbots that maintain context across multiple operation runs. Set ResponseFormat to `json_object` when you need structured output that downstream cards can parse. Use Temperature `0` for deterministic, reproducible results.
50
+
51
+ ---
52
+
53
+ ## LLM Embedding
54
+
55
+ Generates vector embeddings for text input using an LLM provider. Dispatches the work to a Beacon with LLM capability.
56
+
57
+ ### Settings
58
+
59
+ - **Text** — The text to embed. Supports Pict template expressions.
60
+ - **Model** — Override the default embedding model.
61
+ - **Dimensions** — Requested embedding dimensions (model-dependent).
62
+ - **InputAddress** — State address to read text from (alternative to Text setting).
63
+ - **Destination** — State address to write the embedding vector to.
64
+ - **AffinityKey** — Route to a specific Beacon worker.
65
+ - **TimeoutMs** — Timeout in milliseconds (default `60000`).
66
+
67
+ ### Outputs
68
+
69
+ - **Embedding** — JSON array of floating-point numbers representing the embedding vector.
70
+ - **Dimensions** — Number of dimensions in the embedding.
71
+ - **Model** — Model used for embedding.
72
+ - **BeaconID** — ID of the Beacon that executed the work.
73
+
74
+ ### Tips
75
+
76
+ Use embeddings for semantic search, clustering, or similarity comparisons. Store embeddings in a database via **Meadow Create** for later retrieval. Combine with **Expression Solver** or downstream processing to compute cosine similarity between vectors.
77
+
78
+ ---
79
+
80
+ ## LLM Tool Use
81
+
82
+ Sends messages to a large language model with tool (function) definitions, enabling the LLM to request tool calls that your flow can execute.
83
+
84
+ ### Settings
85
+
86
+ - **SystemPrompt** — System prompt text.
87
+ - **UserPrompt** — User prompt text.
88
+ - **Messages** — JSON array of messages for direct conversation control.
89
+ - **Tools** — JSON array of tool definitions describing available functions the LLM can call.
90
+ - **Model** — Override model name.
91
+ - **ToolChoice** — `auto` (LLM decides), `none` (no tools), or a specific tool name (default `auto`).
92
+ - **Temperature** — Sampling temperature.
93
+ - **MaxTokens** — Maximum tokens to generate.
94
+ - **ConversationAddress** — State address for multi-turn history.
95
+ - **AppendToConversation** — Append this exchange to history.
96
+ - **InputAddress** — State address to read context data from.
97
+ - **Destination** — State address to write completion content.
98
+ - **AffinityKey** — Route to a specific Beacon worker.
99
+ - **TimeoutMs** — Timeout in milliseconds (default `120000`).
100
+
101
+ ### Outputs
102
+
103
+ - **Content** — The LLM's text response (may be empty if tool calls were made).
104
+ - **ToolCalls** — JSON array of tool call objects with function names and arguments.
105
+ - **Model** — Model that generated the response.
106
+ - **FinishReason** — `stop` for normal completion, `tool_calls` when tools were invoked.
107
+ - **PromptTokens** / **CompletionTokens** — Token usage.
108
+ - **BeaconID** — Beacon worker ID.
109
+
110
+ ### Events
111
+
112
+ - **Complete** — Fires when the LLM responds.
113
+ - **ToolCall** — Fires when the LLM requests a tool call.
114
+ - **Error** — Fires on failure.
115
+
116
+ ### Tips
117
+
118
+ Use the ToolCall event to route tool invocations to the appropriate processing cards, then feed results back for another LLM turn. This enables agent-style workflows where the LLM can gather information and take actions through your defined tools.