@solidxai/core 0.1.13-beta.11 → 0.1.13-beta.13
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/settings.local.json +16 -0
- package/CHANGELOG.md +1128 -0
- package/CLAUDE.md +26 -0
- package/dist/commands/run-tests.command.d.ts +2 -0
- package/dist/commands/run-tests.command.d.ts.map +1 -1
- package/dist/commands/run-tests.command.js +20 -3
- package/dist/commands/run-tests.command.js.map +1 -1
- package/dist/seeders/seed-data/solid-core-metadata.json +1 -1
- package/dist/services/chatter-message.service.d.ts +4 -1
- package/dist/services/chatter-message.service.d.ts.map +1 -1
- package/dist/services/chatter-message.service.js +4 -1
- package/dist/services/chatter-message.service.js.map +1 -1
- package/dist/services/crud-helper.service.d.ts +1 -2
- package/dist/services/crud-helper.service.d.ts.map +1 -1
- package/dist/services/crud-helper.service.js +2 -16
- package/dist/services/crud-helper.service.js.map +1 -1
- package/dist/services/crud.service.d.ts.map +1 -1
- package/dist/services/crud.service.js +1 -1
- package/dist/services/crud.service.js.map +1 -1
- package/dist/services/draft-publish-helper.service.d.ts +1 -0
- package/dist/services/draft-publish-helper.service.d.ts.map +1 -1
- package/dist/services/draft-publish-helper.service.js +38 -4
- package/dist/services/draft-publish-helper.service.js.map +1 -1
- package/dist/services/settings/default-settings-provider.service.d.ts +62 -6
- package/dist/services/settings/default-settings-provider.service.d.ts.map +1 -1
- package/dist/services/settings/default-settings-provider.service.js +34 -3
- package/dist/services/settings/default-settings-provider.service.js.map +1 -1
- package/dist/testing/reporter/console-reporter.d.ts +3 -0
- package/dist/testing/reporter/console-reporter.d.ts.map +1 -1
- package/dist/testing/reporter/console-reporter.js +2 -0
- package/dist/testing/reporter/console-reporter.js.map +1 -1
- package/dist/testing/reporter/progress-reporter.d.ts +64 -0
- package/dist/testing/reporter/progress-reporter.d.ts.map +1 -0
- package/dist/testing/reporter/progress-reporter.js +224 -0
- package/dist/testing/reporter/progress-reporter.js.map +1 -0
- package/dist/testing/reporter/reporter.types.d.ts +3 -0
- package/dist/testing/reporter/reporter.types.d.ts.map +1 -1
- package/dist/testing/reporter/reporter.types.js.map +1 -1
- package/dist/testing/runner/run-from-metadata.d.ts.map +1 -1
- package/dist/testing/runner/run-from-metadata.js +1 -0
- package/dist/testing/runner/run-from-metadata.js.map +1 -1
- package/dist/theme/theme-registry.d.ts +14 -0
- package/dist/theme/theme-registry.d.ts.map +1 -0
- package/dist/theme/theme-registry.js +147 -0
- package/dist/theme/theme-registry.js.map +1 -0
- package/package.json +1 -1
- package/src/commands/run-tests.command.ts +17 -3
- package/src/seeders/seed-data/solid-core-metadata.json +1 -1
- package/src/services/1.js +6 -0
- package/src/services/chatter-message.service.ts +22 -1
- package/src/services/crud-helper.service.ts +19 -16
- package/src/services/crud.service.ts +2 -1
- package/src/services/draft-publish-helper.service.ts +56 -4
- package/src/services/settings/default-settings-provider.service.ts +34 -3
- package/src/testing/README.md +2 -1
- package/src/testing/reporter/console-reporter.ts +4 -0
- package/src/testing/reporter/progress-reporter.ts +251 -0
- package/src/testing/reporter/reporter.types.ts +3 -0
- package/src/testing/runner/run-from-metadata.ts +1 -0
- package/src/theme/theme-registry.ts +181 -0
- package/dist-tests/api/authenticate.spec.js +0 -119
- package/dist-tests/api/authenticate.spec.js.map +0 -1
- package/dist-tests/api/crud-service.findOne.cityMaster.spec.js +0 -97
- package/dist-tests/api/crud-service.findOne.cityMaster.spec.js.map +0 -1
- package/dist-tests/api/ping.spec.js +0 -21
- package/dist-tests/api/ping.spec.js.map +0 -1
- package/dist-tests/helpers/auth.js +0 -41
- package/dist-tests/helpers/auth.js.map +0 -1
- package/dist-tests/helpers/env.js +0 -11
- package/dist-tests/helpers/env.js.map +0 -1
- package/docs/agent-builder/notebook-lm-prompt-for-agent-builder.md +0 -136
- package/docs/agent-builder/team-ready-note-agent-builder.md +0 -305
- package/docs/agent-hub-grooming.md +0 -301
- package/docs/dashboards/AGENTIC_DASHBOARD_IMPLEMENTATION_PLAN.md +0 -438
- package/docs/dashboards/dashboard-curl-smoke-tests.txt +0 -146
- package/docs/dashboards/delete-legacy-dashboard-metadata.sql +0 -172
- package/docs/datasource-introspection-ddl-analysis.md +0 -326
- package/docs/datasource-introspection-implementation-plan.md +0 -306
- package/docs/grouping-enhancements.md +0 -89
- package/docs/java-spring/README.md +0 -3
- package/docs/java-spring/solid-core-module-deep-dive-report.md +0 -1317
- package/docs/module-package-import-handoff.md +0 -691
- package/docs/seed-changes.md +0 -65
- package/docs/test-data-workflow.md +0 -200
- package/docs/type-declaration-import-issue.md +0 -24
- package/docs/workflow/business-automation-example-notes.md +0 -309
- package/docs/workflow/control-flow-node-addition-sop.md +0 -324
- package/docs/workflow/data-engineering-pipeline-example-notes.md +0 -330
- package/docs/workflow/foreach-example-notes.md +0 -187
- package/docs/workflow/hello-world-example-notes.md +0 -271
- package/docs/workflow/kestra-concepts-plugins-blueprints.md +0 -315
- package/docs/workflow/loop-until-example-notes.md +0 -198
- package/docs/workflow/microservices-and-apis-example-notes.md +0 -264
- package/docs/workflow/samples.md +0 -25
- package/docs/workflow/what-is-kestra.md +0 -79
- package/docs/workflow/workflow-core-module-handoff-summary.md +0 -191
- package/docs/workflow/workflow-module-brd.md +0 -185
- package/docs/workflow/workflow-module-domain-model.md +0 -252
- package/docs/workflow/workflow-module-metadata-dsl.md +0 -302
- package/docs/workflow/workflow-module-technical-spec.md +0 -293
- package/docs/workflow/workflow-node-type-contracts.md +0 -635
- package/docs/workflow/workflow-node-ui-metadata-contract.md +0 -1262
- package/docs/workflow/workflow-solidx-model-field-spec.md +0 -284
|
@@ -1,264 +0,0 @@
|
|
|
1
|
-
# Microservices and APIs Example Notes
|
|
2
|
-
|
|
3
|
-
## Purpose
|
|
4
|
-
|
|
5
|
-
This document captures a third reference workflow focused on conditional branching and triggers. It is especially useful for the SolidX workflow UI because it shows how an `if / then / else` structure should appear in topology and how triggers can be visualized as a separate grouped area.
|
|
6
|
-
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
## Example Workflow YAML
|
|
10
|
-
|
|
11
|
-
```yaml
|
|
12
|
-
id: microservices-and-apis
|
|
13
|
-
namespace: tutorial
|
|
14
|
-
labels:
|
|
15
|
-
name: Microservices and APIs
|
|
16
|
-
|
|
17
|
-
inputs:
|
|
18
|
-
- id: server_uri
|
|
19
|
-
type: URI
|
|
20
|
-
defaults: https://kestra.io
|
|
21
|
-
|
|
22
|
-
- id: slack_webhook_uri
|
|
23
|
-
type: URI
|
|
24
|
-
defaults: https://kestra.io/api/mock
|
|
25
|
-
|
|
26
|
-
tasks:
|
|
27
|
-
- id: http_request
|
|
28
|
-
type: io.kestra.plugin.core.http.Request
|
|
29
|
-
description: Check the target server endpoint for an HTTP response.
|
|
30
|
-
uri: "{{ inputs.server_uri }}"
|
|
31
|
-
options:
|
|
32
|
-
allowFailed: true
|
|
33
|
-
|
|
34
|
-
- id: check_status
|
|
35
|
-
type: io.kestra.plugin.core.flow.If
|
|
36
|
-
description: Branch based on the HTTP status to alert or confirm health.
|
|
37
|
-
condition: "{{ outputs.http_request.code != 200 }}"
|
|
38
|
-
then:
|
|
39
|
-
- id: server_unreachable_alert
|
|
40
|
-
type: io.kestra.plugin.slack.notifications.SlackIncomingWebhook
|
|
41
|
-
description: Send a Slack alert if the server cannot be reached.
|
|
42
|
-
url: "{{ inputs.slack_webhook_uri }}"
|
|
43
|
-
messageText: "The server {{ inputs.server_uri }} is down!"
|
|
44
|
-
else:
|
|
45
|
-
- id: healthy
|
|
46
|
-
type: io.kestra.plugin.core.log.Log
|
|
47
|
-
description: Log that the server is responding normally.
|
|
48
|
-
message: Everything is fine!
|
|
49
|
-
|
|
50
|
-
triggers:
|
|
51
|
-
- id: daily
|
|
52
|
-
type: io.kestra.plugin.core.trigger.Schedule
|
|
53
|
-
disabled: true
|
|
54
|
-
cron: 0 9 * * *
|
|
55
|
-
|
|
56
|
-
description: |
|
|
57
|
-
**Use case:** Simple microservice health check with conditional alerting.
|
|
58
|
-
**Schedule:** Disabled daily run at 09:00 to show how to automate recurring checks.
|
|
59
|
-
**Highlights:**
|
|
60
|
-
- Probe the target server and capture the HTTP response code.
|
|
61
|
-
- Branch on non-200 results to send a Slack webhook alert; otherwise log success.
|
|
62
|
-
- Parameterize the target URL and webhook for easy reuse across environments.
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
---
|
|
66
|
-
|
|
67
|
-
## What This Example Adds
|
|
68
|
-
|
|
69
|
-
This example is the clearest reference so far for:
|
|
70
|
-
|
|
71
|
-
- `if / then / else` branching
|
|
72
|
-
- visual trigger grouping
|
|
73
|
-
- workflow inputs at the top level
|
|
74
|
-
- branch child tasks inside a control-flow node
|
|
75
|
-
- separate success and failure paths converging back into the main sequence
|
|
76
|
-
|
|
77
|
-
---
|
|
78
|
-
|
|
79
|
-
## High-Level Structure
|
|
80
|
-
|
|
81
|
-
The workflow shape is:
|
|
82
|
-
|
|
83
|
-
```text
|
|
84
|
-
Triggers
|
|
85
|
-
└── daily
|
|
86
|
-
|
|
87
|
-
Main Flow
|
|
88
|
-
http_request
|
|
89
|
-
|
|
|
90
|
-
v
|
|
91
|
-
check_status
|
|
92
|
-
├── then: server_unreachable_alert
|
|
93
|
-
└── else: healthy
|
|
94
|
-
```
|
|
95
|
-
|
|
96
|
-
Another useful representation is:
|
|
97
|
-
|
|
98
|
-
```text
|
|
99
|
-
Start
|
|
100
|
-
|
|
|
101
|
-
v
|
|
102
|
-
[trigger group: daily]
|
|
103
|
-
|
|
|
104
|
-
v
|
|
105
|
-
http_request
|
|
106
|
-
|
|
|
107
|
-
v
|
|
108
|
-
check_status (If)
|
|
109
|
-
|-- then --> server_unreachable_alert
|
|
110
|
-
|-- else --> healthy
|
|
111
|
-
|
|
|
112
|
-
v
|
|
113
|
-
End
|
|
114
|
-
```
|
|
115
|
-
|
|
116
|
-
---
|
|
117
|
-
|
|
118
|
-
## Main New Note
|
|
119
|
-
|
|
120
|
-
### Example With `if / then / else` Branching
|
|
121
|
-
|
|
122
|
-
This is the key purpose of this example.
|
|
123
|
-
|
|
124
|
-
It shows that a workflow topology renderer must support:
|
|
125
|
-
|
|
126
|
-
- a control-flow node such as `If`
|
|
127
|
-
- visually grouped child branches
|
|
128
|
-
- separate `then` and `else` lanes
|
|
129
|
-
- branch child nodes rendered inside the control-flow region
|
|
130
|
-
- a visual merge back into the primary downstream flow
|
|
131
|
-
|
|
132
|
-
This is not just nested sequencing. It is explicit branching.
|
|
133
|
-
|
|
134
|
-
---
|
|
135
|
-
|
|
136
|
-
## Trigger Visualization Notes
|
|
137
|
-
|
|
138
|
-
This example also shows that triggers can be represented as a separate visual group from the main task sequence.
|
|
139
|
-
|
|
140
|
-
Important implications:
|
|
141
|
-
|
|
142
|
-
- triggers should not be treated as ordinary sequential tasks
|
|
143
|
-
- trigger nodes should be rendered in their own grouped zone
|
|
144
|
-
- the trigger group can visually connect into the main workflow start
|
|
145
|
-
- disabled triggers should still be shown, likely with a muted or status-aware treatment
|
|
146
|
-
|
|
147
|
-
For SolidX, this strongly suggests:
|
|
148
|
-
|
|
149
|
-
- trigger rendering belongs in topology and editor views
|
|
150
|
-
- trigger editing can still be delayed, but trigger visualization should be part of the long-term flow model
|
|
151
|
-
|
|
152
|
-
---
|
|
153
|
-
|
|
154
|
-
## Inputs Notes
|
|
155
|
-
|
|
156
|
-
This example highlights workflow-level inputs:
|
|
157
|
-
|
|
158
|
-
- `server_uri`
|
|
159
|
-
- `slack_webhook_uri`
|
|
160
|
-
|
|
161
|
-
That means the workflow-definition editor will eventually need a clean workflow-level configuration surface, not just task-level editing.
|
|
162
|
-
|
|
163
|
-
Good future implications:
|
|
164
|
-
|
|
165
|
-
- workflow metadata and inputs belong in code
|
|
166
|
-
- later, they may also deserve a dedicated schema-driven modal or side panel
|
|
167
|
-
|
|
168
|
-
---
|
|
169
|
-
|
|
170
|
-
## Topology Notes
|
|
171
|
-
|
|
172
|
-
The reference topology demonstrates three distinct visual concepts together:
|
|
173
|
-
|
|
174
|
-
1. trigger group
|
|
175
|
-
2. sequential task node
|
|
176
|
-
3. branching control-flow group
|
|
177
|
-
|
|
178
|
-
That makes this example especially valuable for validating the canvas contract.
|
|
179
|
-
|
|
180
|
-
### Visual Behaviors Observed
|
|
181
|
-
|
|
182
|
-
- the trigger sits inside a green grouped region
|
|
183
|
-
- the `If` task sits inside a blue grouped region
|
|
184
|
-
- the branch children appear inside that `If` region
|
|
185
|
-
- the children are positioned as left and right alternatives
|
|
186
|
-
- dashed directional connectors preserve the sense of control flow
|
|
187
|
-
- the branch appears to rejoin the main vertical sequence
|
|
188
|
-
|
|
189
|
-
---
|
|
190
|
-
|
|
191
|
-
## Implications For SolidX Flow Modeling
|
|
192
|
-
|
|
193
|
-
This example implies the React Flow layer must eventually support at least these structural categories:
|
|
194
|
-
|
|
195
|
-
- simple task node
|
|
196
|
-
- trigger node
|
|
197
|
-
- trigger group container
|
|
198
|
-
- control-flow node
|
|
199
|
-
- branch container
|
|
200
|
-
- branch child node
|
|
201
|
-
|
|
202
|
-
Even if the first pass simplifies some of this, the metadata and transformation layer should be designed with these categories in mind.
|
|
203
|
-
|
|
204
|
-
---
|
|
205
|
-
|
|
206
|
-
## Edit-Screen Notes
|
|
207
|
-
|
|
208
|
-
The edit screenshots again reinforce the desired authoring shell:
|
|
209
|
-
|
|
210
|
-
- left: code
|
|
211
|
-
- right: topology / flow
|
|
212
|
-
- docs may be opened contextually when needed
|
|
213
|
-
|
|
214
|
-
This example also shows the code and flow surfaces staying aligned while a structurally richer workflow is displayed.
|
|
215
|
-
|
|
216
|
-
That is useful because it proves the editor cannot assume every workflow is purely linear.
|
|
217
|
-
|
|
218
|
-
---
|
|
219
|
-
|
|
220
|
-
## Control-Flow Contract Notes
|
|
221
|
-
|
|
222
|
-
This example is a good reminder that the DSL remains the source of truth.
|
|
223
|
-
|
|
224
|
-
For this workflow:
|
|
225
|
-
|
|
226
|
-
- branch semantics come from the `If` node contract
|
|
227
|
-
- branch children are defined by `then` and `else`
|
|
228
|
-
- the canvas should reflect those semantics, not invent new ones
|
|
229
|
-
|
|
230
|
-
So the flow renderer should be a structured projection of the DSL, not a freeform graph authoring tool.
|
|
231
|
-
|
|
232
|
-
---
|
|
233
|
-
|
|
234
|
-
## Pending Feature Notes
|
|
235
|
-
|
|
236
|
-
This example highlights future needs:
|
|
237
|
-
|
|
238
|
-
- dedicated trigger authoring UI
|
|
239
|
-
- branch-aware flow rendering
|
|
240
|
-
- grouped region handling for control-flow nodes
|
|
241
|
-
- workflow-level input editing UX
|
|
242
|
-
- branch-aware validation feedback in the editor
|
|
243
|
-
|
|
244
|
-
---
|
|
245
|
-
|
|
246
|
-
## Screenshot References
|
|
247
|
-
|
|
248
|
-
These screenshots informed the notes above:
|
|
249
|
-
|
|
250
|
-
- `/Users/harishpatel/Desktop/Screenshot 2026-07-10 at 17.11.11.png`
|
|
251
|
-
- `/Users/harishpatel/Desktop/Screenshot 2026-07-10 at 17.11.22.png`
|
|
252
|
-
- `/Users/harishpatel/Desktop/Screenshot 2026-07-10 at 17.11.43.png`
|
|
253
|
-
|
|
254
|
-
---
|
|
255
|
-
|
|
256
|
-
## Recommended Follow-On Use
|
|
257
|
-
|
|
258
|
-
This example should be used as a reference for:
|
|
259
|
-
|
|
260
|
-
1. `If` node rendering rules
|
|
261
|
-
2. `then` / `else` lane visualization
|
|
262
|
-
3. trigger-group rendering
|
|
263
|
-
4. branch-aware layout logic
|
|
264
|
-
5. future trigger and workflow-input editing UX
|
package/docs/workflow/samples.md
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
curl -X POST "http://localhost:3000/api/workflow-definition/by-key/sample-workflow-builder-smoke-test/execute" \
|
|
2
|
-
-H "Content-Type: application/json" \
|
|
3
|
-
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOjEsInVzZXJuYW1lIjoic2EiLCJlbWFpbCI6InNhQHNvbGlkeGFpLmNvbSIsInJvbGVzIjpbIkFkbWluIiwiSW50ZXJuYWwgVXNlciJdLCJpYXQiOjE3ODM2MTk0NzgsImV4cCI6MTc4MzcwNTg3OCwiYXVkIjoiaHR0cDovL2xvY2FsaG9zdDozMDAwIiwiaXNzIjoid29ya2Zsb3ctbWFuYWdlbWVudCJ9.58AqoXRkJkCE_U2nJVdhSrz_m-PrG47EnVOYpp3VGMY" \
|
|
4
|
-
-d '{
|
|
5
|
-
"triggerType": "manual",
|
|
6
|
-
"input": {
|
|
7
|
-
"name": "Harish",
|
|
8
|
-
"runHttp": true,
|
|
9
|
-
"url": "https://solidxai.com",
|
|
10
|
-
"items": ["alpha", "beta", "gamma"]
|
|
11
|
-
}
|
|
12
|
-
}'
|
|
13
|
-
|
|
14
|
-
curl -X POST "http://localhost:3000/api/workflow-definition/by-key/sample-workflow-builder-smoke-test/execute" \
|
|
15
|
-
-H "Content-Type: application/json" \
|
|
16
|
-
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOjEsInVzZXJuYW1lIjoic2EiLCJlbWFpbCI6InNhQHNvbGlkeGFpLmNvbSIsInJvbGVzIjpbIkFkbWluIiwiSW50ZXJuYWwgVXNlciJdLCJpYXQiOjE3ODM2MTk0NzgsImV4cCI6MTc4MzcwNTg3OCwiYXVkIjoiaHR0cDovL2xvY2FsaG9zdDozMDAwIiwiaXNzIjoid29ya2Zsb3ctbWFuYWdlbWVudCJ9.58AqoXRkJkCE_U2nJVdhSrz_m-PrG47EnVOYpp3VGMY" \
|
|
17
|
-
-d '{
|
|
18
|
-
"triggerType": "manual",
|
|
19
|
-
"input": {
|
|
20
|
-
"name": "Bhoomi",
|
|
21
|
-
"runHttp": true,
|
|
22
|
-
"url": "https://solidxai.com",
|
|
23
|
-
"items": ["item 1", "item 2", "item 3"]
|
|
24
|
-
}
|
|
25
|
-
}'
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
# What Is Kestra
|
|
2
|
-
|
|
3
|
-
This note summarizes the Kestra Academy introduction lessons you shared so we have a common baseline before defining the workflow-management module for SolidX.
|
|
4
|
-
|
|
5
|
-
## Summary
|
|
6
|
-
|
|
7
|
-
Kestra presents workflow orchestration using the metaphor of an orchestra conductor. In the same way a conductor coordinates many musicians, a workflow orchestrator coordinates many systems, tools, and steps so work happens in the right order and at the right time.
|
|
8
|
-
|
|
9
|
-
At a practical level, workflow orchestration is about:
|
|
10
|
-
|
|
11
|
-
- Running multi-step processes in the correct sequence
|
|
12
|
-
- Handling failures and retries in a controlled way
|
|
13
|
-
- Triggering work from schedules or events
|
|
14
|
-
- Giving operators visibility into execution progress and problems
|
|
15
|
-
|
|
16
|
-
Kestra positions itself as an open-source orchestration platform that can support everything from small automations to large distributed pipelines. Its core framing is flexibility:
|
|
17
|
-
|
|
18
|
-
- Workflows can be authored as code
|
|
19
|
-
- Workflows can also be built visually
|
|
20
|
-
- The platform is API-first and event-driven
|
|
21
|
-
- It is language-agnostic, so each step can use the most suitable runtime
|
|
22
|
-
- It is integration-heavy, with a broad plugin ecosystem for external systems
|
|
23
|
-
|
|
24
|
-
The main idea is that Kestra is not limited to a single narrow use case. It is meant to be a general orchestration foundation for workflows that span systems, teams, and execution environments.
|
|
25
|
-
|
|
26
|
-
## Key Characteristics Of Kestra
|
|
27
|
-
|
|
28
|
-
### 1. Orchestration, not just scripting
|
|
29
|
-
|
|
30
|
-
Kestra is not simply about writing a script with several commands. The orchestration layer is responsible for sequencing, triggering, error handling, observability, and operational control.
|
|
31
|
-
|
|
32
|
-
### 2. Multiple authoring modes
|
|
33
|
-
|
|
34
|
-
Kestra supports code-first and visual/no-code workflow creation. That is important for adoption because different users prefer different levels of abstraction.
|
|
35
|
-
|
|
36
|
-
### 3. Event-driven and API-first
|
|
37
|
-
|
|
38
|
-
This suggests workflows are not only scheduled jobs. They can also react to external events and be controlled programmatically.
|
|
39
|
-
|
|
40
|
-
### 4. Language-agnostic execution
|
|
41
|
-
|
|
42
|
-
A workflow step should not be tightly coupled to one programming language or runtime. The platform should coordinate heterogeneous tasks rather than force everything into a single stack.
|
|
43
|
-
|
|
44
|
-
### 5. Integration as a first-class concern
|
|
45
|
-
|
|
46
|
-
Kestra emphasizes connecting to databases, cloud services, APIs, storage, messaging systems, and operational tools. That means orchestration value comes from connecting existing systems reliably, not from replacing them.
|
|
47
|
-
|
|
48
|
-
## Use Cases
|
|
49
|
-
|
|
50
|
-
The linked Academy use-cases lesson is mostly a visual overview, but its message is clear: Kestra is intended to support a broad range of workflow patterns rather than one single domain.
|
|
51
|
-
|
|
52
|
-
Reasonable use-case categories implied by the introduction are:
|
|
53
|
-
|
|
54
|
-
- Data movement and transformation pipelines
|
|
55
|
-
- Scheduled operational jobs and batch processing
|
|
56
|
-
- API and system-to-system orchestration
|
|
57
|
-
- Notifications, alerts, and downstream actions
|
|
58
|
-
- Business process automation with dependent steps
|
|
59
|
-
|
|
60
|
-
## What This Means For Our SolidX Module
|
|
61
|
-
|
|
62
|
-
If we are building a reusable workflow-management module inspired by Kestra, this summary suggests a few important design principles:
|
|
63
|
-
|
|
64
|
-
- We should treat workflow definition and workflow execution as separate but connected concerns.
|
|
65
|
-
- We should support both technical and less-technical authoring experiences over time.
|
|
66
|
-
- Triggers, retries, failure handling, and execution visibility should be part of the module’s foundation, not afterthoughts.
|
|
67
|
-
- The module should orchestrate external systems cleanly instead of assuming all logic lives inside one runtime.
|
|
68
|
-
- Reusability will depend on a strong plugin/action model and clean metadata boundaries.
|
|
69
|
-
|
|
70
|
-
## Sources
|
|
71
|
-
|
|
72
|
-
- [What is Workflow Orchestration?](https://academy.kestra.io/p/courses/kestra-fundamentals/3492611-introduction/11404069-what-is-workflow-orchestration)
|
|
73
|
-
- [What is Kestra?](https://academy.kestra.io/p/courses/kestra-fundamentals/3492611-introduction/11404080-what-is-kestra)
|
|
74
|
-
- [Use Cases](https://academy.kestra.io/p/courses/kestra-fundamentals/3492611-introduction/11404082-use-cases)
|
|
75
|
-
|
|
76
|
-
## Notes
|
|
77
|
-
|
|
78
|
-
- The first two lessons contained direct explanatory text.
|
|
79
|
-
- The use-cases lesson was mostly image-based in the retrieved page, so the use-case categories above are a light inference from the lesson framing plus the surrounding Kestra introduction context.
|
|
@@ -1,191 +0,0 @@
|
|
|
1
|
-
# Workflow Core Module Handoff Summary
|
|
2
|
-
|
|
3
|
-
## Current Branches
|
|
4
|
-
|
|
5
|
-
- `solid-core-module` work is on branch `ft-workflow`.
|
|
6
|
-
- `solid-core-ui` also has a matching `ft-workflow` branch created from `dev`.
|
|
7
|
-
- The original consuming project docs have been moved into `solid-core-module/docs/workflow`.
|
|
8
|
-
|
|
9
|
-
## What We Built So Far
|
|
10
|
-
|
|
11
|
-
Workflow functionality has been moved out of the consuming project and into `solid-core-module` so workflows become a first-class Solid Core feature.
|
|
12
|
-
|
|
13
|
-
The backend now includes generated/core workflow models, controllers, services, repositories, DTOs, metadata, and a first-pass runtime engine. The current runtime supports seeded workflow definitions and execution through the workflow definition controller.
|
|
14
|
-
|
|
15
|
-
## Workflow Models
|
|
16
|
-
|
|
17
|
-
The agreed model set currently implemented is:
|
|
18
|
-
|
|
19
|
-
- `WorkflowDefinition`
|
|
20
|
-
- `WorkflowExecution`
|
|
21
|
-
- `WorkflowStepExecution`
|
|
22
|
-
- `WorkflowExecutionLog`
|
|
23
|
-
- `WorkflowExecutionArtifact`
|
|
24
|
-
- `WorkflowTriggerExecution`
|
|
25
|
-
|
|
26
|
-
`WorkflowBlueprint` remains intentionally ignored for now.
|
|
27
|
-
|
|
28
|
-
Definition versioning is represented as fields on definition and execution records rather than a separate version table.
|
|
29
|
-
|
|
30
|
-
## Metadata And Tables
|
|
31
|
-
|
|
32
|
-
Workflow metadata now lives in `src/seeders/seed-data/solid-core-metadata.json`.
|
|
33
|
-
|
|
34
|
-
Workflow tables use the `ss_` prefix, for example:
|
|
35
|
-
|
|
36
|
-
- `ss_workflow_definition`
|
|
37
|
-
- `ss_workflow_execution`
|
|
38
|
-
- `ss_workflow_step_execution`
|
|
39
|
-
- `ss_workflow_execution_log`
|
|
40
|
-
- `ss_workflow_execution_artifact`
|
|
41
|
-
- `ss_workflow_trigger_execution`
|
|
42
|
-
|
|
43
|
-
`workflowExecution.executionIdentifier` is now a normal `shortText` field because the runtime generates it directly. It is no longer modeled as a computed field.
|
|
44
|
-
|
|
45
|
-
## Runtime And Node System
|
|
46
|
-
|
|
47
|
-
The runtime uses a registry-based node provider model:
|
|
48
|
-
|
|
49
|
-
- Node providers are registered through a decorator and interface pattern.
|
|
50
|
-
- Discovery happens at module startup using Nest discovery/reflection.
|
|
51
|
-
- The registry skips discovered wrappers that do not have a valid provider class `metatype`.
|
|
52
|
-
|
|
53
|
-
The current v1 node/provider set includes:
|
|
54
|
-
|
|
55
|
-
- `log.write`
|
|
56
|
-
- `http.request`
|
|
57
|
-
- `if`
|
|
58
|
-
- `forEach`
|
|
59
|
-
- `parallel`
|
|
60
|
-
|
|
61
|
-
The workflow YAML shape uses ordered arrays with nested child arrays for control nodes, following the Kestra-style structure we agreed on.
|
|
62
|
-
|
|
63
|
-
## Execution Flow
|
|
64
|
-
|
|
65
|
-
Workflow execution is exposed through `WorkflowDefinitionController`:
|
|
66
|
-
|
|
67
|
-
```bash
|
|
68
|
-
POST /workflow-definition/by-key/:key/execute
|
|
69
|
-
POST /workflow-definition/:id/execute
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
The sample seeded workflow key is:
|
|
73
|
-
|
|
74
|
-
```text
|
|
75
|
-
sample-workflow-builder-smoke-test
|
|
76
|
-
```
|
|
77
|
-
|
|
78
|
-
Example curl:
|
|
79
|
-
|
|
80
|
-
```bash
|
|
81
|
-
curl -X POST "http://localhost:3000/workflow-definition/by-key/sample-workflow-builder-smoke-test/execute" \
|
|
82
|
-
-H "Content-Type: application/json" \
|
|
83
|
-
-H "Authorization: Bearer YOUR_JWT_TOKEN" \
|
|
84
|
-
-d '{
|
|
85
|
-
"triggerType": "manual",
|
|
86
|
-
"input": {
|
|
87
|
-
"name": "Harish",
|
|
88
|
-
"runHttp": false,
|
|
89
|
-
"url": "https://example.com",
|
|
90
|
-
"items": ["alpha", "beta", "gamma"]
|
|
91
|
-
}
|
|
92
|
-
}'
|
|
93
|
-
```
|
|
94
|
-
|
|
95
|
-
## Workflow Execution Relations
|
|
96
|
-
|
|
97
|
-
`WorkflowExecution` now has contextual one-to-many relations for:
|
|
98
|
-
|
|
99
|
-
- `workflowStepExecutions`
|
|
100
|
-
- `workflowExecutionLogs`
|
|
101
|
-
- `workflowExecutionArtifacts`
|
|
102
|
-
|
|
103
|
-
These are exposed as tabs in the Workflow Execution form. The child models are not marked with `isChild: true`; that flag is reserved for another SolidX use case.
|
|
104
|
-
|
|
105
|
-
Standalone menu items for step executions, logs, and artifacts were removed because these records are intended to be viewed in the context of a workflow execution.
|
|
106
|
-
|
|
107
|
-
`WorkflowTriggerExecution` remains as a standalone menu item because trigger executions can conceptually exist independently from a completed workflow execution.
|
|
108
|
-
|
|
109
|
-
## Admin Metadata UI Changes
|
|
110
|
-
|
|
111
|
-
Workflow menus are grouped under a top-level `Workflow` menu, similar to the existing Layout Builder pattern.
|
|
112
|
-
|
|
113
|
-
Workflow Definition form:
|
|
114
|
-
|
|
115
|
-
- `Basic Info`
|
|
116
|
-
- `Definition YAML`
|
|
117
|
-
|
|
118
|
-
Workflow Execution form:
|
|
119
|
-
|
|
120
|
-
- `Basic Info`
|
|
121
|
-
- `Input`
|
|
122
|
-
- `Output`
|
|
123
|
-
- `Definition Snapshot`
|
|
124
|
-
- `Steps`
|
|
125
|
-
- `Logs`
|
|
126
|
-
- `Artifacts`
|
|
127
|
-
- `Errors`
|
|
128
|
-
|
|
129
|
-
JSON fields in the dedicated JSON tabs use metadata-only layout attributes:
|
|
130
|
-
|
|
131
|
-
- `className` on the field wrapper
|
|
132
|
-
- `height` passed to `SolidCodeEditor`
|
|
133
|
-
|
|
134
|
-
The JSON editor height is currently set with viewport-based values such as:
|
|
135
|
-
|
|
136
|
-
```json
|
|
137
|
-
"height": "calc(100vh - 260px)"
|
|
138
|
-
```
|
|
139
|
-
|
|
140
|
-
## Seeding
|
|
141
|
-
|
|
142
|
-
`ModuleMetadataSeederService` was updated to seed workflow definitions from module metadata JSON.
|
|
143
|
-
|
|
144
|
-
The consuming project currently still owns a sample workflow metadata file under:
|
|
145
|
-
|
|
146
|
-
```text
|
|
147
|
-
solid-api/src/workflow-builder/metadata/workflow-builder-metadata.json
|
|
148
|
-
```
|
|
149
|
-
|
|
150
|
-
That sample is useful for smoke testing the runtime.
|
|
151
|
-
|
|
152
|
-
## Important Decisions
|
|
153
|
-
|
|
154
|
-
- Workflow definitions are not treated as a single opaque blob internally, but they do have a canonical YAML DSL for sharing, seeding, validation, and developer workflows.
|
|
155
|
-
- Runtime data belongs in execution records/context, not in the definition YAML.
|
|
156
|
-
- New workflow node types should be registry-driven from day one.
|
|
157
|
-
- JSON fields are processed in memory to keep the workflow engine DB agnostic.
|
|
158
|
-
- Revisions/version tables are deferred; version/checksum fields are sufficient for now.
|
|
159
|
-
|
|
160
|
-
## Recent Verification
|
|
161
|
-
|
|
162
|
-
The following has passed after the latest workflow-related changes:
|
|
163
|
-
|
|
164
|
-
```bash
|
|
165
|
-
npm run build
|
|
166
|
-
```
|
|
167
|
-
|
|
168
|
-
Run it from:
|
|
169
|
-
|
|
170
|
-
```text
|
|
171
|
-
/Users/harishpatel/Code/javascript/solid-core-module
|
|
172
|
-
```
|
|
173
|
-
|
|
174
|
-
## Moved Design Docs
|
|
175
|
-
|
|
176
|
-
The original design docs are now under this folder:
|
|
177
|
-
|
|
178
|
-
```text
|
|
179
|
-
docs/workflow
|
|
180
|
-
```
|
|
181
|
-
|
|
182
|
-
Key docs include:
|
|
183
|
-
|
|
184
|
-
- `what-is-kestra.md`
|
|
185
|
-
- `kestra-concepts-plugins-blueprints.md`
|
|
186
|
-
- `workflow-module-brd.md`
|
|
187
|
-
- `workflow-module-technical-spec.md`
|
|
188
|
-
- `workflow-module-domain-model.md`
|
|
189
|
-
- `workflow-module-metadata-dsl.md`
|
|
190
|
-
- `workflow-node-type-contracts.md`
|
|
191
|
-
- `workflow-solidx-model-field-spec.md`
|