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.
- package/.claude/launch.json +11 -0
- package/.claude/ultravisor-dev-config.json +3 -0
- package/card-audit.json +1545 -0
- package/docs/_sidebar.md +17 -0
- package/docs/css/docuserve.css +73 -0
- package/docs/features/beacon-authentication.md +209 -0
- package/docs/features/beacon-providers.md +1299 -0
- package/docs/features/beacons.md +530 -0
- package/docs/features/capabilities.md +193 -0
- package/docs/features/llm-model-setup.md +505 -0
- package/docs/features/llm.md +262 -0
- package/docs/features/tasks-content-system.md +110 -0
- package/docs/features/tasks-data-transform.md +233 -0
- package/docs/features/tasks-extension.md +36 -0
- package/docs/features/tasks-file-system.md +203 -0
- package/docs/features/tasks-flow-control.md +125 -0
- package/docs/features/tasks-http-client.md +119 -0
- package/docs/features/tasks-llm.md +118 -0
- package/docs/features/tasks-meadow-api.md +163 -0
- package/docs/features/tasks-user-interaction.md +49 -0
- package/docs/features/tasks.md +14 -0
- package/docs/index.html +1 -1
- package/docs/retold-catalog.json +1 -1
- package/docs/retold-keyword-index.json +17374 -5
- package/operation-library/api-data-pipeline.json +143 -0
- package/operation-library/beacon-remote-command.json +72 -0
- package/operation-library/conditional-file-backup.json +143 -0
- package/operation-library/config-processor.json +136 -0
- package/operation-library/csv-data-analysis.json +228 -0
- package/operation-library/csv-to-json.json +160 -0
- package/operation-library/directory-inventory.json +128 -0
- package/operation-library/expression-calculator.json +114 -0
- package/operation-library/file-search-replace.json +175 -0
- package/operation-library/git-status-report.json +368 -0
- package/operation-library/health-check-ping.json +329 -0
- package/operation-library/json-config-merge.json +313 -0
- package/operation-library/llm-embedding-tool-use.json +314 -0
- package/operation-library/llm-multi-turn-analysis.json +322 -0
- package/operation-library/llm-summarize.json +264 -0
- package/operation-library/log-line-counter.json +185 -0
- package/operation-library/meadow-crud-lifecycle.json +264 -0
- package/operation-library/npm-project-validator.json +193 -0
- package/operation-library/rest-api-orchestrator.json +218 -0
- package/operation-library/shell-system-info.json +137 -0
- package/operation-library/simple-echo.json +95 -0
- package/operation-library/template-processor.json +299 -0
- package/operation-library/text-sanitizer.json +176 -0
- package/package.json +12 -8
- package/source/Ultravisor.cjs +30 -3
- package/source/beacon/Ultravisor-Beacon-CLI.cjs +143 -0
- package/source/beacon/Ultravisor-Beacon-CapabilityProvider.cjs +129 -0
- package/source/beacon/Ultravisor-Beacon-Client.cjs +568 -0
- package/source/beacon/Ultravisor-Beacon-Executor.cjs +500 -0
- package/source/beacon/Ultravisor-Beacon-ProviderRegistry.cjs +330 -0
- package/source/beacon/providers/Ultravisor-Beacon-Provider-FileSystem.cjs +331 -0
- package/source/beacon/providers/Ultravisor-Beacon-Provider-LLM.cjs +966 -0
- package/source/beacon/providers/Ultravisor-Beacon-Provider-Shell.cjs +95 -0
- package/source/cli/Ultravisor-CLIProgram.cjs +44 -22
- package/source/cli/commands/Ultravisor-Command-SingleOperation.cjs +29 -18
- package/source/cli/commands/Ultravisor-Command-SingleTask.cjs +62 -19
- package/source/cli/commands/Ultravisor-Command-UpdateTask.cjs +27 -15
- package/source/config/Ultravisor-Default-Command-Configuration.cjs +12 -3
- package/source/services/Ultravisor-Beacon-Coordinator.cjs +966 -0
- package/source/services/Ultravisor-ExecutionEngine.cjs +1093 -0
- package/source/services/Ultravisor-ExecutionManifest.cjs +629 -0
- package/source/services/Ultravisor-Hypervisor-State.cjs +270 -97
- package/source/services/Ultravisor-Hypervisor.cjs +185 -75
- package/source/services/Ultravisor-Schedule-Persistence-Base.cjs +45 -0
- package/source/services/Ultravisor-StateManager.cjs +253 -0
- package/source/services/Ultravisor-TaskTypeRegistry.cjs +213 -0
- package/source/services/persistence/Ultravisor-Schedule-Persistence-JSONFile.cjs +140 -0
- package/source/services/tasks/Ultravisor-BuiltIn-TaskConfigs.cjs +19 -0
- package/source/services/tasks/Ultravisor-TaskHelper-BeaconDispatch.cjs +107 -0
- package/source/services/tasks/Ultravisor-TaskType-Base.cjs +125 -0
- package/source/services/tasks/content-system/Ultravisor-TaskConfigs-ContentSystem.cjs +90 -0
- package/source/services/tasks/content-system/definitions/content-create-folder.json +24 -0
- package/source/services/tasks/content-system/definitions/content-list-files.json +27 -0
- package/source/services/tasks/content-system/definitions/content-read-file.json +26 -0
- package/source/services/tasks/content-system/definitions/content-save-file.json +26 -0
- package/source/services/tasks/data-transform/Ultravisor-TaskConfigs-DataTransform.cjs +577 -0
- package/source/services/tasks/data-transform/Ultravisor-TaskType-ReplaceString.cjs +80 -0
- package/source/services/tasks/data-transform/Ultravisor-TaskType-SetValues.cjs +74 -0
- package/source/services/tasks/data-transform/Ultravisor-TaskType-StringAppender.cjs +90 -0
- package/source/services/tasks/data-transform/definitions/comprehension-intersect.json +24 -0
- package/source/services/tasks/data-transform/definitions/csv-transform.json +24 -0
- package/source/services/tasks/data-transform/definitions/expression-solver.json +20 -0
- package/source/services/tasks/data-transform/definitions/histogram.json +23 -0
- package/source/services/tasks/data-transform/definitions/parse-csv.json +27 -0
- package/source/services/tasks/data-transform/definitions/replace-string.json +27 -0
- package/source/services/tasks/data-transform/definitions/set-values.json +17 -0
- package/source/services/tasks/data-transform/definitions/string-appender.json +22 -0
- package/source/services/tasks/data-transform/definitions/template-string.json +20 -0
- package/source/services/tasks/extension/Ultravisor-TaskConfigs-Extension.cjs +87 -0
- package/source/services/tasks/extension/definitions/beacon-dispatch.json +32 -0
- package/source/services/tasks/file-system/Ultravisor-TaskConfigs-FileSystem.cjs +509 -0
- package/source/services/tasks/file-system/Ultravisor-TaskType-ReadFile.cjs +96 -0
- package/source/services/tasks/file-system/Ultravisor-TaskType-ReadFileBuffered.cjs +123 -0
- package/source/services/tasks/file-system/Ultravisor-TaskType-WriteFile.cjs +106 -0
- package/source/services/tasks/file-system/definitions/copy-file.json +27 -0
- package/source/services/tasks/file-system/definitions/list-files.json +27 -0
- package/source/services/tasks/file-system/definitions/read-file-buffered.json +31 -0
- package/source/services/tasks/file-system/definitions/read-file.json +26 -0
- package/source/services/tasks/file-system/definitions/read-json.json +23 -0
- package/source/services/tasks/file-system/definitions/write-file.json +29 -0
- package/source/services/tasks/file-system/definitions/write-json.json +30 -0
- package/source/services/tasks/flow-control/Ultravisor-TaskConfigs-FlowControl.cjs +353 -0
- package/source/services/tasks/flow-control/Ultravisor-TaskType-IfConditional.cjs +125 -0
- package/source/services/tasks/flow-control/Ultravisor-TaskType-LaunchOperation.cjs +186 -0
- package/source/services/tasks/flow-control/Ultravisor-TaskType-SplitExecute.cjs +164 -0
- package/source/services/tasks/flow-control/definitions/if-conditional.json +25 -0
- package/source/services/tasks/flow-control/definitions/launch-operation.json +27 -0
- package/source/services/tasks/flow-control/definitions/split-execute.json +32 -0
- package/source/services/tasks/http-client/Ultravisor-TaskConfigs-HttpClient.cjs +281 -0
- package/source/services/tasks/http-client/definitions/get-json.json +26 -0
- package/source/services/tasks/http-client/definitions/get-text.json +26 -0
- package/source/services/tasks/http-client/definitions/rest-request.json +32 -0
- package/source/services/tasks/http-client/definitions/send-json.json +28 -0
- package/source/services/tasks/llm/Ultravisor-TaskConfigs-LLM.cjs +605 -0
- package/source/services/tasks/llm/definitions/llm-chat-completion.json +46 -0
- package/source/services/tasks/llm/definitions/llm-embedding.json +31 -0
- package/source/services/tasks/llm/definitions/llm-tool-use.json +42 -0
- package/source/services/tasks/meadow-api/Ultravisor-TaskConfigs-MeadowApi.cjs +341 -0
- package/source/services/tasks/meadow-api/definitions/meadow-count.json +26 -0
- package/source/services/tasks/meadow-api/definitions/meadow-create.json +26 -0
- package/source/services/tasks/meadow-api/definitions/meadow-delete.json +23 -0
- package/source/services/tasks/meadow-api/definitions/meadow-read.json +26 -0
- package/source/services/tasks/meadow-api/definitions/meadow-reads.json +29 -0
- package/source/services/tasks/meadow-api/definitions/meadow-update.json +26 -0
- package/source/services/tasks/shell/Ultravisor-TaskConfigs-Shell.cjs +63 -0
- package/source/services/tasks/shell/definitions/command.json +29 -0
- package/source/services/tasks/user-interaction/Ultravisor-TaskConfigs-UserInteraction.cjs +64 -0
- package/source/services/tasks/user-interaction/Ultravisor-TaskType-ErrorMessage.cjs +55 -0
- package/source/services/tasks/user-interaction/Ultravisor-TaskType-ValueInput.cjs +47 -0
- package/source/services/tasks/user-interaction/definitions/error-message.json +18 -0
- package/source/services/tasks/user-interaction/definitions/value-input.json +23 -0
- package/source/web_server/Ultravisor-API-Server.cjs +849 -124
- package/test/Ultravisor_browser_tests.js +2226 -0
- package/test/Ultravisor_operation_library_tests.js +894 -0
- package/test/Ultravisor_tests.js +4946 -5044
- package/test/workflows/test-content-concatenate-all.json +339 -0
- package/test/workflows/test-content-full-pipeline.json +159 -0
- package/test/workflows/test-content-list-files.json +76 -0
- package/test/workflows/test-content-save-and-read.json +106 -0
- package/webinterface/css/ultravisor-themes.css +668 -0
- package/webinterface/css/ultravisor.css +37 -14
- package/webinterface/docs/card-help/beacon-dispatch.md +30 -0
- package/webinterface/docs/card-help/command.md +27 -0
- package/webinterface/docs/card-help/comprehension-intersect.md +24 -0
- package/webinterface/docs/card-help/content-create-folder.md +22 -0
- package/webinterface/docs/card-help/content-list-files.md +25 -0
- package/webinterface/docs/card-help/content-read-file.md +24 -0
- package/webinterface/docs/card-help/content-save-file.md +24 -0
- package/webinterface/docs/card-help/copy-file.md +25 -0
- package/webinterface/docs/card-help/csv-transform.md +24 -0
- package/webinterface/docs/card-help/end.md +11 -0
- package/webinterface/docs/card-help/error-message.md +16 -0
- package/webinterface/docs/card-help/expression-solver.md +21 -0
- package/webinterface/docs/card-help/get-json.md +24 -0
- package/webinterface/docs/card-help/get-text.md +24 -0
- package/webinterface/docs/card-help/histogram.md +23 -0
- package/webinterface/docs/card-help/if-conditional.md +23 -0
- package/webinterface/docs/card-help/launch-operation.md +25 -0
- package/webinterface/docs/card-help/list-files.md +25 -0
- package/webinterface/docs/card-help/llm-chat-completion.md +43 -0
- package/webinterface/docs/card-help/llm-embedding.md +24 -0
- package/webinterface/docs/card-help/llm-tool-use.md +39 -0
- package/webinterface/docs/card-help/meadow-count.md +24 -0
- package/webinterface/docs/card-help/meadow-create.md +24 -0
- package/webinterface/docs/card-help/meadow-delete.md +19 -0
- package/webinterface/docs/card-help/meadow-read.md +24 -0
- package/webinterface/docs/card-help/meadow-reads.md +27 -0
- package/webinterface/docs/card-help/meadow-update.md +24 -0
- package/webinterface/docs/card-help/parse-csv.md +27 -0
- package/webinterface/docs/card-help/read-file-buffered.md +29 -0
- package/webinterface/docs/card-help/read-file.md +24 -0
- package/webinterface/docs/card-help/read-json.md +21 -0
- package/webinterface/docs/card-help/replace-string.md +25 -0
- package/webinterface/docs/card-help/rest-request.md +30 -0
- package/webinterface/docs/card-help/send-json.md +26 -0
- package/webinterface/docs/card-help/set-values.md +16 -0
- package/webinterface/docs/card-help/split-execute.md +35 -0
- package/webinterface/docs/card-help/start.md +11 -0
- package/webinterface/docs/card-help/string-appender.md +22 -0
- package/webinterface/docs/card-help/template-string.md +21 -0
- package/webinterface/docs/card-help/value-input.md +24 -0
- package/webinterface/docs/card-help/write-file.md +27 -0
- package/webinterface/docs/card-help/write-json.md +28 -0
- package/webinterface/html/index.html +5 -0
- package/webinterface/package.json +13 -4
- package/webinterface/source/Pict-Application-Ultravisor.js +564 -70
- package/webinterface/source/Ultravisor-TimingUtils.js +99 -0
- package/webinterface/source/card-help-content.js +46 -0
- package/webinterface/source/cards/Ultravisor-BuiltIn-CardConfigs.js +174 -0
- package/webinterface/source/cards/Ultravisor-CardConfigGenerator.js +431 -0
- package/webinterface/source/data/ExampleFlow-CSVPipeline.js +231 -0
- package/webinterface/source/data/ExampleFlow-FileProcessor.js +315 -0
- package/webinterface/source/data/ExampleFlow-MeadowPipeline.js +328 -0
- package/webinterface/source/panels/Ultravisor-CardSettingsPanel.js +902 -0
- package/webinterface/source/providers/PictRouter-Ultravisor-Configuration.json +20 -8
- package/webinterface/source/views/PictView-Ultravisor-BeaconList.js +817 -0
- package/webinterface/source/views/PictView-Ultravisor-BottomBar.js +5 -5
- package/webinterface/source/views/PictView-Ultravisor-Dashboard.js +25 -25
- package/webinterface/source/views/PictView-Ultravisor-Documentation.js +856 -0
- package/webinterface/source/views/PictView-Ultravisor-FlowEditor.js +777 -0
- package/webinterface/source/views/PictView-Ultravisor-ManifestList.js +321 -58
- package/webinterface/source/views/PictView-Ultravisor-OperationEdit.js +36 -91
- package/webinterface/source/views/PictView-Ultravisor-OperationList.js +388 -16
- package/webinterface/source/views/PictView-Ultravisor-PendingInput.js +314 -0
- package/webinterface/source/views/PictView-Ultravisor-Schedule.js +521 -65
- package/webinterface/source/views/PictView-Ultravisor-TimingView.js +333 -71
- package/webinterface/source/views/PictView-Ultravisor-TopBar.js +257 -21
- package/webinterface/theme-sampler.html +645 -0
- package/debug/Harness.js +0 -6
- package/source/services/Ultravisor-Operation-Manifest.cjs +0 -160
- package/source/services/Ultravisor-Operation.cjs +0 -200
- package/source/services/Ultravisor-Task.cjs +0 -349
- package/source/services/events/Ultravisor-Hypervisor-Event-Solver.cjs +0 -11
- package/source/services/tasks/Ultravisor-Task-Base.cjs +0 -264
- package/source/services/tasks/Ultravisor-Task-CollectValues.cjs +0 -188
- package/source/services/tasks/Ultravisor-Task-Command.cjs +0 -65
- package/source/services/tasks/Ultravisor-Task-CommandEach.cjs +0 -190
- package/source/services/tasks/Ultravisor-Task-Conditional.cjs +0 -104
- package/source/services/tasks/Ultravisor-Task-DateWindow.cjs +0 -72
- package/source/services/tasks/Ultravisor-Task-GeneratePagedOperation.cjs +0 -336
- package/source/services/tasks/Ultravisor-Task-LaunchOperation.cjs +0 -143
- package/source/services/tasks/Ultravisor-Task-LaunchTask.cjs +0 -146
- package/source/services/tasks/Ultravisor-Task-LineMatch.cjs +0 -158
- package/source/services/tasks/Ultravisor-Task-Request.cjs +0 -56
- package/source/services/tasks/Ultravisor-Task-Solver.cjs +0 -89
- package/source/services/tasks/Ultravisor-Task-TemplateString.cjs +0 -93
- package/source/services/tasks/rest/Ultravisor-Task-GetBinary.cjs +0 -127
- package/source/services/tasks/rest/Ultravisor-Task-GetJSON.cjs +0 -119
- package/source/services/tasks/rest/Ultravisor-Task-GetText.cjs +0 -109
- package/source/services/tasks/rest/Ultravisor-Task-GetXML.cjs +0 -112
- package/source/services/tasks/rest/Ultravisor-Task-RestRequest.cjs +0 -499
- package/source/services/tasks/rest/Ultravisor-Task-SendJSON.cjs +0 -150
- package/source/services/tasks/stagingfiles/Ultravisor-Task-CopyFile.cjs +0 -110
- package/source/services/tasks/stagingfiles/Ultravisor-Task-ListFiles.cjs +0 -89
- package/source/services/tasks/stagingfiles/Ultravisor-Task-ReadBinary.cjs +0 -87
- package/source/services/tasks/stagingfiles/Ultravisor-Task-ReadJSON.cjs +0 -67
- package/source/services/tasks/stagingfiles/Ultravisor-Task-ReadText.cjs +0 -66
- package/source/services/tasks/stagingfiles/Ultravisor-Task-ReadXML.cjs +0 -69
- package/source/services/tasks/stagingfiles/Ultravisor-Task-WriteBinary.cjs +0 -95
- package/source/services/tasks/stagingfiles/Ultravisor-Task-WriteJSON.cjs +0 -96
- package/source/services/tasks/stagingfiles/Ultravisor-Task-WriteText.cjs +0 -99
- package/source/services/tasks/stagingfiles/Ultravisor-Task-WriteXML.cjs +0 -102
- package/webinterface/source/views/PictView-Ultravisor-TaskEdit.js +0 -220
- package/webinterface/source/views/PictView-Ultravisor-TaskList.js +0 -248
|
@@ -0,0 +1,262 @@
|
|
|
1
|
+
# LLM Integration
|
|
2
|
+
|
|
3
|
+
Ultravisor can send requests to large language models (LLMs) through the
|
|
4
|
+
Beacon system. An LLM Beacon wraps an API — OpenAI, Anthropic, a local
|
|
5
|
+
Ollama instance, or any OpenAI-compatible endpoint — and exposes it as a
|
|
6
|
+
capability that operation graphs can use like any other task.
|
|
7
|
+
|
|
8
|
+
This means you can build workflows that read data, send it to an LLM for
|
|
9
|
+
analysis or generation, and act on the response, all within the standard
|
|
10
|
+
Ultravisor operation graph.
|
|
11
|
+
|
|
12
|
+
## How It Works
|
|
13
|
+
|
|
14
|
+
The LLM functionality has two layers:
|
|
15
|
+
|
|
16
|
+
1. **Beacon Provider** (`LLM`) — runs on the Beacon worker, wraps the
|
|
17
|
+
actual HTTP calls to the LLM API. This is the "thin wrapper" that
|
|
18
|
+
handles authentication, request formatting, and response normalization
|
|
19
|
+
across different backends.
|
|
20
|
+
|
|
21
|
+
2. **Graph Task Types** (`llm-chat-completion`, `llm-embedding`,
|
|
22
|
+
`llm-tool-use`) — run on the Ultravisor server, dispatch work to an
|
|
23
|
+
LLM Beacon, manage conversation history, and route results back into
|
|
24
|
+
the operation state.
|
|
25
|
+
|
|
26
|
+
```
|
|
27
|
+
┌──────────────────────┐ ┌────────────────────┐ ┌──────────────┐
|
|
28
|
+
│ Operation Graph │ │ BeaconCoordinator │ │ LLM Beacon │
|
|
29
|
+
│ │ │ │ │ │
|
|
30
|
+
│ llm-chat-completion │─enqueue─▶ Work Queue │ │ LLM Provider│
|
|
31
|
+
│ (builds messages, │ │ │◀─poll──│ │
|
|
32
|
+
│ manages history) │ │ assign work │─work──▶│ HTTP call │
|
|
33
|
+
│ │ │ │ │ to LLM API │
|
|
34
|
+
│ WaitingForInput... │ │ │◀result─│ (OpenAI, │
|
|
35
|
+
│ │ │ resumeOperation() │ │ Anthropic, │
|
|
36
|
+
│ updates history, │◀resume──│ │ │ Ollama) │
|
|
37
|
+
│ writes to state │ │ │ │ │
|
|
38
|
+
└──────────────────────┘ └────────────────────┘ └──────────────┘
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## Supported Backends
|
|
42
|
+
|
|
43
|
+
| Backend | Config value | Description |
|
|
44
|
+
|--------------------|----------------------|--------------------------------------------|
|
|
45
|
+
| OpenAI | `openai` | GPT-4, GPT-4o, o1, etc. |
|
|
46
|
+
| Anthropic | `anthropic` | Claude Opus, Sonnet, Haiku |
|
|
47
|
+
| Ollama | `ollama` | Local models (Llama 3, Mistral, Phi, etc.) |
|
|
48
|
+
| OpenAI-compatible | `openai-compatible` | Any API that follows the OpenAI format |
|
|
49
|
+
|
|
50
|
+
The provider normalizes differences between backends automatically. For
|
|
51
|
+
example, Anthropic uses `x-api-key` headers and a different message
|
|
52
|
+
format; Ollama puts parameters in an `options` object. You don't need to
|
|
53
|
+
worry about these details — just set the `Backend` config value and
|
|
54
|
+
provide your messages.
|
|
55
|
+
|
|
56
|
+
## Actions
|
|
57
|
+
|
|
58
|
+
### ChatCompletion
|
|
59
|
+
|
|
60
|
+
Send messages to an LLM and receive a text completion.
|
|
61
|
+
|
|
62
|
+
**Settings:**
|
|
63
|
+
|
|
64
|
+
| Name | Required | Description |
|
|
65
|
+
|-----------------|----------|--------------------------------------------------|
|
|
66
|
+
| Messages | No | JSON array of `{role, content}` message objects |
|
|
67
|
+
| SystemPrompt | No | System prompt (prepended automatically) |
|
|
68
|
+
| Model | No | Override the default model |
|
|
69
|
+
| Temperature | No | Sampling temperature (0-2, lower = more focused) |
|
|
70
|
+
| MaxTokens | No | Maximum tokens to generate |
|
|
71
|
+
| TopP | No | Nucleus sampling parameter |
|
|
72
|
+
| StopSequences | No | JSON array of stop sequences |
|
|
73
|
+
| ResponseFormat | No | `"text"` or `"json_object"` |
|
|
74
|
+
|
|
75
|
+
**Outputs:**
|
|
76
|
+
|
|
77
|
+
| Name | Description |
|
|
78
|
+
|------------------|--------------------------------------|
|
|
79
|
+
| Content | The generated text |
|
|
80
|
+
| Model | Model that produced the response |
|
|
81
|
+
| FinishReason | Why generation stopped (`stop`, `length`, etc.) |
|
|
82
|
+
| PromptTokens | Token count for the input |
|
|
83
|
+
| CompletionTokens | Token count for the output |
|
|
84
|
+
| TotalTokens | Combined token count |
|
|
85
|
+
| Result | Same as Content (convention) |
|
|
86
|
+
|
|
87
|
+
### Embedding
|
|
88
|
+
|
|
89
|
+
Generate vector embeddings for text.
|
|
90
|
+
|
|
91
|
+
**Settings:**
|
|
92
|
+
|
|
93
|
+
| Name | Required | Description |
|
|
94
|
+
|-------|----------|-----------------------------------|
|
|
95
|
+
| Text | Yes | Text to embed |
|
|
96
|
+
| Model | No | Override the default model |
|
|
97
|
+
|
|
98
|
+
**Outputs:**
|
|
99
|
+
|
|
100
|
+
| Name | Description |
|
|
101
|
+
|------------|------------------------------------------|
|
|
102
|
+
| Embedding | JSON array of floating point numbers |
|
|
103
|
+
| Dimensions | Number of dimensions in the embedding |
|
|
104
|
+
| Model | Model used |
|
|
105
|
+
|
|
106
|
+
### ToolUse
|
|
107
|
+
|
|
108
|
+
Chat completion with tool/function definitions. The LLM can request tool
|
|
109
|
+
calls, which are returned as structured data.
|
|
110
|
+
|
|
111
|
+
**Settings:**
|
|
112
|
+
|
|
113
|
+
| Name | Required | Description |
|
|
114
|
+
|------------|----------|--------------------------------------------|
|
|
115
|
+
| Messages | Yes | JSON array of message objects |
|
|
116
|
+
| Tools | Yes | JSON array of tool definitions |
|
|
117
|
+
| Model | No | Override model name |
|
|
118
|
+
| ToolChoice | No | `"auto"`, `"none"`, or a specific tool name |
|
|
119
|
+
| Temperature| No | Sampling temperature |
|
|
120
|
+
| MaxTokens | No | Maximum tokens to generate |
|
|
121
|
+
|
|
122
|
+
**Outputs:**
|
|
123
|
+
|
|
124
|
+
| Name | Description |
|
|
125
|
+
|------------------|--------------------------------------------|
|
|
126
|
+
| Content | Text response (may be empty if tool call) |
|
|
127
|
+
| ToolCalls | JSON array of tool call objects |
|
|
128
|
+
| FinishReason | `stop`, `tool_calls`, etc. |
|
|
129
|
+
| PromptTokens | Token count for the input |
|
|
130
|
+
| CompletionTokens | Token count for the output |
|
|
131
|
+
|
|
132
|
+
Tool call objects are normalized to the OpenAI format regardless of
|
|
133
|
+
backend:
|
|
134
|
+
|
|
135
|
+
```json
|
|
136
|
+
{
|
|
137
|
+
"id": "call_abc123",
|
|
138
|
+
"type": "function",
|
|
139
|
+
"function": {
|
|
140
|
+
"name": "get_weather",
|
|
141
|
+
"arguments": "{\"city\": \"Portland\"}"
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
## Graph Task Types
|
|
147
|
+
|
|
148
|
+
The server-side task types wrap `beacon-dispatch` with LLM-specific
|
|
149
|
+
conveniences: message building, conversation history, and state I/O.
|
|
150
|
+
|
|
151
|
+
### llm-chat-completion
|
|
152
|
+
|
|
153
|
+
The primary task for using LLMs in operation graphs.
|
|
154
|
+
|
|
155
|
+
**Convenience settings** (in addition to all ChatCompletion settings):
|
|
156
|
+
|
|
157
|
+
| Name | Description |
|
|
158
|
+
|--------------------|----------------------------------------------------------|
|
|
159
|
+
| UserPrompt | User message text (builds Messages for you) |
|
|
160
|
+
| InputAddress | State address to read context data from — appended to UserPrompt |
|
|
161
|
+
| Destination | State address to write the completion content to |
|
|
162
|
+
| AffinityKey | Route to a specific Beacon |
|
|
163
|
+
| TimeoutMs | Override timeout (default: 120000) |
|
|
164
|
+
|
|
165
|
+
**Example node data:**
|
|
166
|
+
|
|
167
|
+
```json
|
|
168
|
+
{
|
|
169
|
+
"SystemPrompt": "You are a code review assistant.",
|
|
170
|
+
"UserPrompt": "Review this code for bugs:",
|
|
171
|
+
"InputAddress": "TaskOutput.read-file-node.Content",
|
|
172
|
+
"Destination": "Operation.ReviewResult",
|
|
173
|
+
"Temperature": 0.3,
|
|
174
|
+
"MaxTokens": 2048
|
|
175
|
+
}
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
### Conversation Management
|
|
179
|
+
|
|
180
|
+
Multi-turn conversations are supported through shared message history
|
|
181
|
+
stored in operation or global state.
|
|
182
|
+
|
|
183
|
+
| Setting | Description |
|
|
184
|
+
|----------------------------|--------------------------------------------------------|
|
|
185
|
+
| ConversationAddress | State address for the message history array |
|
|
186
|
+
| AppendToConversation | Append this exchange to history (default: true) |
|
|
187
|
+
| ConversationMaxMessages | Sliding window — keep only the N most recent messages |
|
|
188
|
+
| ConversationMaxTokens | Token budget — trim oldest messages when exceeded |
|
|
189
|
+
| PersistConversation | Copy history to GlobalState on completion |
|
|
190
|
+
| ConversationPersistAddress | GlobalState address for cross-operation persistence |
|
|
191
|
+
|
|
192
|
+
**How it works:**
|
|
193
|
+
|
|
194
|
+
When `ConversationAddress` is set, the task:
|
|
195
|
+
|
|
196
|
+
1. Reads existing message history from that state address
|
|
197
|
+
2. Prepends `SystemPrompt` if not already present
|
|
198
|
+
3. Appends the new `UserPrompt` as a user message
|
|
199
|
+
4. Applies sliding window limits (max messages, max tokens)
|
|
200
|
+
5. Sends the full history to the LLM
|
|
201
|
+
6. Appends the assistant response to the history
|
|
202
|
+
7. Writes updated history back to the state address
|
|
203
|
+
|
|
204
|
+
**Within a single operation** — use `Operation.` addresses:
|
|
205
|
+
|
|
206
|
+
```
|
|
207
|
+
llm-node-1 (ConversationAddress: "Operation.Chat")
|
|
208
|
+
→ llm-node-2 (ConversationAddress: "Operation.Chat")
|
|
209
|
+
→ llm-node-3 (ConversationAddress: "Operation.Chat")
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
Each node sees the full conversation so far and adds to it.
|
|
213
|
+
|
|
214
|
+
**Across operations** — use `Global.` addresses:
|
|
215
|
+
|
|
216
|
+
Set `ConversationAddress: "Global.Sessions.MyAgent"` to store history in
|
|
217
|
+
GlobalState, which persists across operation runs.
|
|
218
|
+
|
|
219
|
+
Or use `PersistConversation: true` with
|
|
220
|
+
`ConversationPersistAddress: "Global.Sessions.MyAgent"` to work in
|
|
221
|
+
OperationState during the run and copy to GlobalState when done.
|
|
222
|
+
|
|
223
|
+
### llm-embedding
|
|
224
|
+
|
|
225
|
+
Dispatches an embedding request. Supports `InputAddress` to read text
|
|
226
|
+
from state and `Destination` to write the embedding.
|
|
227
|
+
|
|
228
|
+
### llm-tool-use
|
|
229
|
+
|
|
230
|
+
Like `llm-chat-completion` but includes tool definitions. Supports
|
|
231
|
+
conversation management. Returns both `Content` and `ToolCalls`.
|
|
232
|
+
|
|
233
|
+
## Routing
|
|
234
|
+
|
|
235
|
+
All LLM Beacons advertise `Capability: "LLM"`. When an `llm-chat-completion`
|
|
236
|
+
task runs, the coordinator assigns the work to any available LLM Beacon.
|
|
237
|
+
|
|
238
|
+
To target a specific Beacon (e.g., the one running Claude vs. the one
|
|
239
|
+
running Llama), use `AffinityKey`:
|
|
240
|
+
|
|
241
|
+
```json
|
|
242
|
+
{
|
|
243
|
+
"UserPrompt": "Explain quantum computing",
|
|
244
|
+
"AffinityKey": "claude-worker"
|
|
245
|
+
}
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
The first request with that affinity key binds to whichever Beacon picks
|
|
249
|
+
it up. Subsequent requests with the same key go to the same Beacon.
|
|
250
|
+
|
|
251
|
+
## Example Operations
|
|
252
|
+
|
|
253
|
+
Two example operations are included in `operation-library/`:
|
|
254
|
+
|
|
255
|
+
- **llm-summarize.json** — Reads a file, sends it to an LLM for
|
|
256
|
+
summarization, writes the result. Demonstrates single-turn usage with
|
|
257
|
+
`InputAddress` and `Destination`.
|
|
258
|
+
|
|
259
|
+
- **llm-multi-turn-analysis.json** — Three chained LLM calls sharing
|
|
260
|
+
a `ConversationAddress`: initial analysis, follow-up question, and
|
|
261
|
+
final synthesis. Demonstrates multi-turn conversation with persistence
|
|
262
|
+
to GlobalState.
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
# Content System Tasks
|
|
2
|
+
|
|
3
|
+
Tasks for reading, writing, and managing files on remote Content System beacon workers. These tasks operate on remote content directories rather than the local file system.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Content Read File
|
|
8
|
+
|
|
9
|
+
Reads a markdown or content file from a remote Content System beacon.
|
|
10
|
+
|
|
11
|
+
### Settings
|
|
12
|
+
|
|
13
|
+
- **FilePath** — Relative path within the content directory on the beacon.
|
|
14
|
+
- **Destination** — State address to store the file content.
|
|
15
|
+
- **AffinityKey** — Worker affinity key to route to a specific beacon.
|
|
16
|
+
- **TimeoutMs** — Timeout in milliseconds (default `300000`).
|
|
17
|
+
|
|
18
|
+
### Outputs
|
|
19
|
+
|
|
20
|
+
- **Content** — The file content as a string.
|
|
21
|
+
- **StdOut** — Status message from the beacon.
|
|
22
|
+
|
|
23
|
+
### Events
|
|
24
|
+
|
|
25
|
+
- **Complete** — Fires after a successful read.
|
|
26
|
+
- **Error** — Fires if the file is not found or the beacon is unreachable.
|
|
27
|
+
|
|
28
|
+
### Tips
|
|
29
|
+
|
|
30
|
+
Content System cards operate on remote Beacon workers, not the local file system. Use AffinityKey to ensure reads and writes go to the same beacon instance. For local file operations, use **Read File** instead.
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## Content Save File
|
|
35
|
+
|
|
36
|
+
Saves content to a file on a remote Content System beacon.
|
|
37
|
+
|
|
38
|
+
### Settings
|
|
39
|
+
|
|
40
|
+
- **FilePath** — Relative path within the content directory.
|
|
41
|
+
- **Content** — The file content to write. Supports Pict template expressions.
|
|
42
|
+
- **AffinityKey** — Worker affinity key to route to a specific beacon.
|
|
43
|
+
- **TimeoutMs** — Timeout in milliseconds (default `300000`).
|
|
44
|
+
|
|
45
|
+
### Outputs
|
|
46
|
+
|
|
47
|
+
- **FilePath** — Path of the saved file.
|
|
48
|
+
- **StdOut** — Status message from the beacon.
|
|
49
|
+
|
|
50
|
+
### Events
|
|
51
|
+
|
|
52
|
+
- **Complete** — Fires after a successful save.
|
|
53
|
+
- **Error** — Fires on failure.
|
|
54
|
+
|
|
55
|
+
### Tips
|
|
56
|
+
|
|
57
|
+
Use Content Save File to publish generated content (reports, processed data, rendered templates) to a Content System. Pair with **Content Read File** to read-modify-write content files on a beacon.
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
## Content List Files
|
|
62
|
+
|
|
63
|
+
Lists files in a directory on a remote Content System beacon.
|
|
64
|
+
|
|
65
|
+
### Settings
|
|
66
|
+
|
|
67
|
+
- **Path** — Relative directory path within the content directory. Leave empty for the root.
|
|
68
|
+
- **Pattern** — Glob pattern filter (e.g. `*.md`, `*.json`).
|
|
69
|
+
- **Recursive** — When `true`, lists files in subdirectories.
|
|
70
|
+
- **AffinityKey** — Worker affinity key to route to a specific beacon.
|
|
71
|
+
- **TimeoutMs** — Timeout in milliseconds (default `300000`).
|
|
72
|
+
|
|
73
|
+
### Outputs
|
|
74
|
+
|
|
75
|
+
- **Files** — JSON array of file entries.
|
|
76
|
+
- **StdOut** — Status message from the beacon.
|
|
77
|
+
|
|
78
|
+
### Events
|
|
79
|
+
|
|
80
|
+
- **Complete** — Fires after listing.
|
|
81
|
+
- **Error** — Fires on failure.
|
|
82
|
+
|
|
83
|
+
### Tips
|
|
84
|
+
|
|
85
|
+
Use Content List Files to discover available content on a beacon before processing. Combine with **Split Execute** to iterate over the file list and read or transform each file.
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
## Content Create Folder
|
|
90
|
+
|
|
91
|
+
Creates a folder in the content directory on a remote Content System beacon.
|
|
92
|
+
|
|
93
|
+
### Settings
|
|
94
|
+
|
|
95
|
+
- **Path** — Relative folder path to create.
|
|
96
|
+
- **AffinityKey** — Worker affinity key to route to a specific beacon.
|
|
97
|
+
- **TimeoutMs** — Timeout in milliseconds (default `300000`).
|
|
98
|
+
|
|
99
|
+
### Outputs
|
|
100
|
+
|
|
101
|
+
- **StdOut** — Status message from the beacon.
|
|
102
|
+
|
|
103
|
+
### Events
|
|
104
|
+
|
|
105
|
+
- **Complete** — Fires after the folder is created.
|
|
106
|
+
- **Error** — Fires on failure.
|
|
107
|
+
|
|
108
|
+
### Tips
|
|
109
|
+
|
|
110
|
+
Use Content Create Folder before **Content Save File** to ensure the target directory structure exists. The operation is idempotent — creating a folder that already exists succeeds without error.
|
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
# Data Transform Tasks
|
|
2
|
+
|
|
3
|
+
Tasks for manipulating values, strings, templates, expressions, and tabular data within operation state.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Set Values
|
|
8
|
+
|
|
9
|
+
Sets one or more values in operation state at specified addresses. This is the primary card for initializing variables, copying data between state locations, and injecting literal values.
|
|
10
|
+
|
|
11
|
+
### Settings
|
|
12
|
+
|
|
13
|
+
- **Mappings** — An array of mapping objects. Each mapping has a `To` address (where to write) and either a `Value` (literal) or `From` address (copy from state).
|
|
14
|
+
|
|
15
|
+
### Events
|
|
16
|
+
|
|
17
|
+
- **Complete** — Fires after all mappings are applied.
|
|
18
|
+
- **Error** — Fires if a mapping fails.
|
|
19
|
+
|
|
20
|
+
### Tips
|
|
21
|
+
|
|
22
|
+
Use Set Values at the start of a flow to initialize default values before branching logic. Mappings are applied in order, so later entries can reference values set by earlier ones within the same card.
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## Replace String
|
|
27
|
+
|
|
28
|
+
Replaces all occurrences of a search string within the input text.
|
|
29
|
+
|
|
30
|
+
### Settings
|
|
31
|
+
|
|
32
|
+
- **InputString** — The source text to search within. Supports Pict template expressions.
|
|
33
|
+
- **SearchString** — The text or pattern to find.
|
|
34
|
+
- **ReplaceString** — The replacement text (empty string to delete matches).
|
|
35
|
+
- **UseRegex** — When `true`, treats SearchString as a regular expression.
|
|
36
|
+
- **CaseSensitive** — Case-sensitive matching (default `true`).
|
|
37
|
+
|
|
38
|
+
### Outputs
|
|
39
|
+
|
|
40
|
+
- **ReplacedString** — The result after all replacements.
|
|
41
|
+
- **ReplacementCount** — Number of replacements made.
|
|
42
|
+
|
|
43
|
+
### Events
|
|
44
|
+
|
|
45
|
+
- **ReplaceComplete** — Fires after replacement.
|
|
46
|
+
- **Error** — Fires on failure (e.g. invalid regex).
|
|
47
|
+
|
|
48
|
+
### Tips
|
|
49
|
+
|
|
50
|
+
Enable UseRegex for advanced pattern matching such as removing HTML tags, normalizing whitespace, or extracting structured tokens. Use ReplacementCount to verify that expected substitutions occurred.
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## String Appender
|
|
55
|
+
|
|
56
|
+
Appends a string to an existing value at a specified state address. Useful for building up output incrementally across loop iterations or multiple steps.
|
|
57
|
+
|
|
58
|
+
### Settings
|
|
59
|
+
|
|
60
|
+
- **InputString** — The text to append. Supports Pict template expressions.
|
|
61
|
+
- **OutputAddress** — State address of the string to append to.
|
|
62
|
+
- **AppendNewline** — When `true`, appends a newline character after the input string.
|
|
63
|
+
- **Separator** — String inserted between the existing content and new content. Overrides AppendNewline when set.
|
|
64
|
+
|
|
65
|
+
### Outputs
|
|
66
|
+
|
|
67
|
+
- **AppendedString** — The full accumulated string after appending.
|
|
68
|
+
|
|
69
|
+
### Events
|
|
70
|
+
|
|
71
|
+
- **Completed** — Fires after the append.
|
|
72
|
+
|
|
73
|
+
### Tips
|
|
74
|
+
|
|
75
|
+
Combine with **Split Execute** to build a report line by line. Use AppendNewline for log-style output or Separator for CSV-style concatenation with a custom delimiter.
|
|
76
|
+
|
|
77
|
+
---
|
|
78
|
+
|
|
79
|
+
## Template String
|
|
80
|
+
|
|
81
|
+
Processes a Pict template string against the current operation state, resolving expressions like `{~D:Record.Name~}` into their runtime values.
|
|
82
|
+
|
|
83
|
+
### Settings
|
|
84
|
+
|
|
85
|
+
- **Template** — A Pict template string containing `{~D:...~}` expressions that reference state addresses.
|
|
86
|
+
- **Destination** — State address to store the rendered result. If empty, the result is available at the default output.
|
|
87
|
+
|
|
88
|
+
### Outputs
|
|
89
|
+
|
|
90
|
+
- **Result** — The fully rendered template output.
|
|
91
|
+
|
|
92
|
+
### Events
|
|
93
|
+
|
|
94
|
+
- **Complete** — Fires after rendering.
|
|
95
|
+
- **Error** — Fires if template parsing fails.
|
|
96
|
+
|
|
97
|
+
### Tips
|
|
98
|
+
|
|
99
|
+
Template String is the workhorse for building dynamic URLs, file paths, messages, and prompts. Any Pict template expression is supported, including conditionals and joins. Chain multiple Template String cards to build complex content from intermediate values.
|
|
100
|
+
|
|
101
|
+
---
|
|
102
|
+
|
|
103
|
+
## Expression Solver
|
|
104
|
+
|
|
105
|
+
Evaluates a mathematical or logical expression using the Fable ExpressionParser and stores the result in state.
|
|
106
|
+
|
|
107
|
+
### Settings
|
|
108
|
+
|
|
109
|
+
- **Expression** — The expression to evaluate. Can reference state values by address.
|
|
110
|
+
- **Destination** — State address to store the evaluation result.
|
|
111
|
+
|
|
112
|
+
### Outputs
|
|
113
|
+
|
|
114
|
+
- **Result** — The computed result as a string.
|
|
115
|
+
|
|
116
|
+
### Events
|
|
117
|
+
|
|
118
|
+
- **Complete** — Fires after evaluation.
|
|
119
|
+
- **Error** — Fires on parse or evaluation failure.
|
|
120
|
+
|
|
121
|
+
### Tips
|
|
122
|
+
|
|
123
|
+
Use Expression Solver for arithmetic calculations, string length checks, or combining multiple state values into a computed result. The expression language supports standard math operators, comparisons, and common functions.
|
|
124
|
+
|
|
125
|
+
---
|
|
126
|
+
|
|
127
|
+
## Parse CSV
|
|
128
|
+
|
|
129
|
+
Parses CSV text into an array of records (objects with field names as keys).
|
|
130
|
+
|
|
131
|
+
### Settings
|
|
132
|
+
|
|
133
|
+
- **SourceAddress** — State address containing the CSV text to parse.
|
|
134
|
+
- **Delimiter** — Column delimiter character (default `,`).
|
|
135
|
+
- **HasHeaders** — When `true`, the first row provides field names. When `false`, fields are indexed numerically.
|
|
136
|
+
- **Destination** — State address to store the parsed records array.
|
|
137
|
+
- **QuoteCharacter** — Character used to quote fields that contain the delimiter (default `"`).
|
|
138
|
+
- **TrimFields** — Trim leading/trailing whitespace from field values.
|
|
139
|
+
- **SkipEmptyLines** — Skip blank lines in the input.
|
|
140
|
+
|
|
141
|
+
### Outputs
|
|
142
|
+
|
|
143
|
+
- **Records** — Array of parsed row objects.
|
|
144
|
+
- **ColumnCount** — Number of columns detected.
|
|
145
|
+
- **Headers** — Array of header names from the first row.
|
|
146
|
+
|
|
147
|
+
### Events
|
|
148
|
+
|
|
149
|
+
- **Complete** — Fires after parsing.
|
|
150
|
+
|
|
151
|
+
### Tips
|
|
152
|
+
|
|
153
|
+
Chain **Read File** → **Parse CSV** → **CSV Transform** for a complete data import pipeline. Use TrimFields and SkipEmptyLines to handle messy real-world CSV exports cleanly.
|
|
154
|
+
|
|
155
|
+
---
|
|
156
|
+
|
|
157
|
+
## CSV Transform
|
|
158
|
+
|
|
159
|
+
Transforms an array of parsed CSV records by applying field mappings, filters, and output field selection.
|
|
160
|
+
|
|
161
|
+
### Settings
|
|
162
|
+
|
|
163
|
+
- **SourceAddress** — State address of the records array to transform.
|
|
164
|
+
- **Destination** — State address to store the transformed records.
|
|
165
|
+
- **Delimiter** — Delimiter for re-serialization (default `,`).
|
|
166
|
+
- **FieldMapping** — JSON array of mapping objects with `From`, `To`, and optional `Template` properties for field renaming and transformation.
|
|
167
|
+
- **FilterExpression** — An expression to filter rows. Only rows where the expression evaluates to true are included.
|
|
168
|
+
- **OutputFields** — JSON array of field names to include in the output. Omit to include all fields.
|
|
169
|
+
|
|
170
|
+
### Outputs
|
|
171
|
+
|
|
172
|
+
- **Records** — The transformed records array.
|
|
173
|
+
|
|
174
|
+
### Events
|
|
175
|
+
|
|
176
|
+
- **Complete** — Fires after transformation.
|
|
177
|
+
|
|
178
|
+
### Tips
|
|
179
|
+
|
|
180
|
+
Use FieldMapping to rename columns, compute derived fields with templates, or restructure data. Combine with FilterExpression to extract subsets of records in a single step.
|
|
181
|
+
|
|
182
|
+
---
|
|
183
|
+
|
|
184
|
+
## Histogram
|
|
185
|
+
|
|
186
|
+
Computes a frequency distribution over a specific field in a dataset array.
|
|
187
|
+
|
|
188
|
+
### Settings
|
|
189
|
+
|
|
190
|
+
- **SourceAddress** — State address of the data array to analyze.
|
|
191
|
+
- **Field** — Field name to compute frequencies for (default `score`).
|
|
192
|
+
- **Bins** — Number of bins for numeric data (default `5`).
|
|
193
|
+
- **Destination** — State address to store the statistics object.
|
|
194
|
+
- **SortBy** — Sort frequency results by `count` or `key`.
|
|
195
|
+
|
|
196
|
+
### Outputs
|
|
197
|
+
|
|
198
|
+
- **Stats** — An object containing the frequency distribution, bin boundaries, and summary statistics.
|
|
199
|
+
|
|
200
|
+
### Events
|
|
201
|
+
|
|
202
|
+
- **Complete** — Fires after computation.
|
|
203
|
+
|
|
204
|
+
### Tips
|
|
205
|
+
|
|
206
|
+
Use Histogram after parsing or loading a dataset to get a quick statistical overview. Combine with **Template String** to generate a text-based report of the distribution.
|
|
207
|
+
|
|
208
|
+
---
|
|
209
|
+
|
|
210
|
+
## Comprehension Intersect
|
|
211
|
+
|
|
212
|
+
Intersects two arrays by matching records on a common field, similar to an SQL inner join.
|
|
213
|
+
|
|
214
|
+
### Settings
|
|
215
|
+
|
|
216
|
+
- **SourceAddressA** — State address of the first array.
|
|
217
|
+
- **SourceAddressB** — State address of the second array.
|
|
218
|
+
- **MatchField** — Field name to match records on. Records from both arrays with the same value in this field are merged.
|
|
219
|
+
- **Destination** — State address to store the intersected results.
|
|
220
|
+
- **JoinType** — Join type (default `inner`). Inner join returns only records that match in both arrays.
|
|
221
|
+
|
|
222
|
+
### Outputs
|
|
223
|
+
|
|
224
|
+
- **Result** — Array of merged record objects.
|
|
225
|
+
- **MatchCount** — Number of matched records.
|
|
226
|
+
|
|
227
|
+
### Events
|
|
228
|
+
|
|
229
|
+
- **Complete** — Fires after intersection.
|
|
230
|
+
|
|
231
|
+
### Tips
|
|
232
|
+
|
|
233
|
+
Use Comprehension Intersect to combine data from two different sources — for example, joining a list of user IDs from one API with user details from another. The matched records are merged into single objects containing fields from both sources.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# Extension Tasks
|
|
2
|
+
|
|
3
|
+
Tasks for dispatching work to remote Beacon worker nodes, providing low-level access to the distributed execution infrastructure.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Beacon Dispatch
|
|
8
|
+
|
|
9
|
+
Dispatches a work item to a remote Beacon worker node. The task pauses until the Beacon completes execution and reports results back.
|
|
10
|
+
|
|
11
|
+
### Settings
|
|
12
|
+
|
|
13
|
+
- **RemoteCapability** — Required capability on the Beacon (e.g. `Shell`, `FileSystem`, `LLM`).
|
|
14
|
+
- **RemoteAction** — Specific action within the capability (e.g. `Execute`, `Read`).
|
|
15
|
+
- **Command** — Shell command to execute on the Beacon (when using Shell capability).
|
|
16
|
+
- **Parameters** — Command-line parameters for the shell command.
|
|
17
|
+
- **AffinityKey** — Worker affinity routing key. Requests with the same key are routed to the same Beacon.
|
|
18
|
+
- **TimeoutMs** — Work item timeout in milliseconds (default `300000`).
|
|
19
|
+
- **InputData** — JSON data to pass to the Beacon worker.
|
|
20
|
+
- **Destination** — State address to write results to on completion.
|
|
21
|
+
|
|
22
|
+
### Outputs
|
|
23
|
+
|
|
24
|
+
- **StdOut** — Standard output from the Beacon execution.
|
|
25
|
+
- **Result** — Result data from the Beacon.
|
|
26
|
+
- **ExitCode** — Exit code of the remote command.
|
|
27
|
+
- **BeaconID** — ID of the Beacon that executed the work.
|
|
28
|
+
|
|
29
|
+
### Events
|
|
30
|
+
|
|
31
|
+
- **Complete** — Fires when the Beacon finishes.
|
|
32
|
+
- **Error** — Fires on failure or timeout.
|
|
33
|
+
|
|
34
|
+
### Tips
|
|
35
|
+
|
|
36
|
+
Beacon Dispatch is the low-level card for sending arbitrary work to remote workers. Use AffinityKey to ensure related work items run on the same Beacon instance. For common patterns, prefer the specialized cards (LLM Chat Completion, Content Read File, etc.) which use Beacon Dispatch internally with appropriate defaults.
|