@solidxai/core 0.1.13-beta.2 → 0.1.13-beta.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (134) hide show
  1. package/dist/commands/seed.command.d.ts +2 -0
  2. package/dist/commands/seed.command.d.ts.map +1 -1
  3. package/dist/commands/seed.command.js +21 -0
  4. package/dist/commands/seed.command.js.map +1 -1
  5. package/dist/entities/saved-filters.entity.js +3 -3
  6. package/dist/entities/saved-filters.entity.js.map +1 -1
  7. package/dist/entities/workflow-trigger-execution.entity.js +1 -1
  8. package/dist/entities/workflow-trigger-execution.entity.js.map +1 -1
  9. package/dist/index.d.ts +2 -0
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +2 -0
  12. package/dist/index.js.map +1 -1
  13. package/dist/interfaces.d.ts +1 -0
  14. package/dist/interfaces.d.ts.map +1 -1
  15. package/dist/interfaces.js.map +1 -1
  16. package/dist/seeders/module-metadata-seeder.service.d.ts.map +1 -1
  17. package/dist/seeders/module-metadata-seeder.service.js +44 -27
  18. package/dist/seeders/module-metadata-seeder.service.js.map +1 -1
  19. package/dist/seeders/seed-data/solid-core-metadata.json +80 -67
  20. package/dist/services/workflow/nodes/execution-fail.node.d.ts +6 -0
  21. package/dist/services/workflow/nodes/execution-fail.node.d.ts.map +1 -0
  22. package/dist/services/workflow/nodes/execution-fail.node.js +81 -0
  23. package/dist/services/workflow/nodes/execution-fail.node.js.map +1 -0
  24. package/dist/services/workflow/nodes/for-each.node.d.ts +2 -0
  25. package/dist/services/workflow/nodes/for-each.node.d.ts.map +1 -1
  26. package/dist/services/workflow/nodes/for-each.node.js +114 -5
  27. package/dist/services/workflow/nodes/for-each.node.js.map +1 -1
  28. package/dist/services/workflow/nodes/if.node.d.ts.map +1 -1
  29. package/dist/services/workflow/nodes/if.node.js +7 -0
  30. package/dist/services/workflow/nodes/if.node.js.map +1 -1
  31. package/dist/services/workflow/nodes/log-write.node.d.ts.map +1 -1
  32. package/dist/services/workflow/nodes/log-write.node.js +2 -0
  33. package/dist/services/workflow/nodes/log-write.node.js.map +1 -1
  34. package/dist/services/workflow/nodes/loop-until.node.d.ts +12 -0
  35. package/dist/services/workflow/nodes/loop-until.node.d.ts.map +1 -0
  36. package/dist/services/workflow/nodes/loop-until.node.js +281 -0
  37. package/dist/services/workflow/nodes/loop-until.node.js.map +1 -0
  38. package/dist/services/workflow/nodes/parallel.node.d.ts.map +1 -1
  39. package/dist/services/workflow/nodes/parallel.node.js +7 -0
  40. package/dist/services/workflow/nodes/parallel.node.js.map +1 -1
  41. package/dist/services/workflow/nodes/sequential.node.d.ts.map +1 -1
  42. package/dist/services/workflow/nodes/sequential.node.js +7 -0
  43. package/dist/services/workflow/nodes/sequential.node.js.map +1 -1
  44. package/dist/services/workflow/nodes/switch.node.d.ts.map +1 -1
  45. package/dist/services/workflow/nodes/switch.node.js +7 -0
  46. package/dist/services/workflow/nodes/switch.node.js.map +1 -1
  47. package/dist/services/workflow/workflow-definition-validator.service.d.ts.map +1 -1
  48. package/dist/services/workflow/workflow-definition-validator.service.js +5 -2
  49. package/dist/services/workflow/workflow-definition-validator.service.js.map +1 -1
  50. package/dist/services/workflow/workflow-expression.service.d.ts.map +1 -1
  51. package/dist/services/workflow/workflow-expression.service.js +5 -0
  52. package/dist/services/workflow/workflow-expression.service.js.map +1 -1
  53. package/dist/services/workflow/workflow-node-registry.service.d.ts +2 -1
  54. package/dist/services/workflow/workflow-node-registry.service.d.ts.map +1 -1
  55. package/dist/services/workflow/workflow-node-registry.service.js +7 -0
  56. package/dist/services/workflow/workflow-node-registry.service.js.map +1 -1
  57. package/dist/services/workflow/workflow-runtime.service.d.ts +8 -0
  58. package/dist/services/workflow/workflow-runtime.service.d.ts.map +1 -1
  59. package/dist/services/workflow/workflow-runtime.service.js +197 -32
  60. package/dist/services/workflow/workflow-runtime.service.js.map +1 -1
  61. package/dist/solid-core.module.d.ts.map +1 -1
  62. package/dist/solid-core.module.js +4 -0
  63. package/dist/solid-core.module.js.map +1 -1
  64. package/dist/types/workflow-dsl.types.d.ts +14 -0
  65. package/dist/types/workflow-dsl.types.d.ts.map +1 -1
  66. package/dist/types/workflow-dsl.types.js.map +1 -1
  67. package/dist-tests/api/authenticate.spec.js +119 -0
  68. package/dist-tests/api/authenticate.spec.js.map +1 -0
  69. package/dist-tests/api/crud-service.findOne.cityMaster.spec.js +97 -0
  70. package/dist-tests/api/crud-service.findOne.cityMaster.spec.js.map +1 -0
  71. package/dist-tests/api/ping.spec.js +21 -0
  72. package/dist-tests/api/ping.spec.js.map +1 -0
  73. package/dist-tests/helpers/auth.js +41 -0
  74. package/dist-tests/helpers/auth.js.map +1 -0
  75. package/dist-tests/helpers/env.js +11 -0
  76. package/dist-tests/helpers/env.js.map +1 -0
  77. package/docs/agent-builder/notebook-lm-prompt-for-agent-builder.md +136 -0
  78. package/docs/agent-builder/team-ready-note-agent-builder.md +305 -0
  79. package/docs/agent-hub-grooming.md +301 -0
  80. package/docs/dashboards/AGENTIC_DASHBOARD_IMPLEMENTATION_PLAN.md +438 -0
  81. package/docs/dashboards/dashboard-curl-smoke-tests.txt +146 -0
  82. package/docs/dashboards/delete-legacy-dashboard-metadata.sql +172 -0
  83. package/docs/datasource-introspection-ddl-analysis.md +326 -0
  84. package/docs/datasource-introspection-implementation-plan.md +306 -0
  85. package/docs/grouping-enhancements.md +89 -0
  86. package/docs/java-spring/README.md +3 -0
  87. package/docs/java-spring/solid-core-module-deep-dive-report.md +1317 -0
  88. package/docs/module-package-import-handoff.md +691 -0
  89. package/docs/seed-changes.md +65 -0
  90. package/docs/test-data-workflow.md +200 -0
  91. package/docs/type-declaration-import-issue.md +24 -0
  92. package/docs/workflow/business-automation-example-notes.md +309 -0
  93. package/docs/workflow/control-flow-node-addition-sop.md +324 -0
  94. package/docs/workflow/data-engineering-pipeline-example-notes.md +330 -0
  95. package/docs/workflow/foreach-example-notes.md +187 -0
  96. package/docs/workflow/hello-world-example-notes.md +271 -0
  97. package/docs/workflow/kestra-concepts-plugins-blueprints.md +315 -0
  98. package/docs/workflow/loop-until-example-notes.md +198 -0
  99. package/docs/workflow/microservices-and-apis-example-notes.md +264 -0
  100. package/docs/workflow/samples.md +25 -0
  101. package/docs/workflow/what-is-kestra.md +79 -0
  102. package/docs/workflow/workflow-core-module-handoff-summary.md +191 -0
  103. package/docs/workflow/workflow-module-brd.md +185 -0
  104. package/docs/workflow/workflow-module-domain-model.md +252 -0
  105. package/docs/workflow/workflow-module-metadata-dsl.md +302 -0
  106. package/docs/workflow/workflow-module-technical-spec.md +293 -0
  107. package/docs/workflow/workflow-node-type-contracts.md +635 -0
  108. package/docs/workflow/workflow-node-ui-metadata-contract.md +1262 -0
  109. package/docs/workflow/workflow-solidx-model-field-spec.md +284 -0
  110. package/package.json +1 -1
  111. package/src/commands/seed.command.ts +19 -0
  112. package/src/entities/saved-filters.entity.ts +3 -3
  113. package/src/entities/workflow-trigger-execution.entity.ts +1 -1
  114. package/src/index.ts +2 -0
  115. package/src/interfaces.ts +1 -0
  116. package/src/seeders/module-metadata-seeder.service.ts +50 -36
  117. package/src/seeders/seed-data/solid-core-metadata.json +80 -67
  118. package/src/services/workflow/nodes/execution-fail.node.ts +82 -0
  119. package/src/services/workflow/nodes/for-each.node.ts +140 -6
  120. package/src/services/workflow/nodes/if.node.ts +7 -0
  121. package/src/services/workflow/nodes/log-write.node.ts +2 -0
  122. package/src/services/workflow/nodes/loop-until.node.ts +343 -0
  123. package/src/services/workflow/nodes/parallel.node.ts +7 -0
  124. package/src/services/workflow/nodes/sequential.node.ts +7 -0
  125. package/src/services/workflow/nodes/switch.node.ts +7 -0
  126. package/src/services/workflow/workflow-definition-validator.service.ts +5 -2
  127. package/src/services/workflow/workflow-expression.service.ts +5 -0
  128. package/src/services/workflow/workflow-node-registry.service.ts +11 -0
  129. package/src/services/workflow/workflow-runtime.service.ts +274 -39
  130. package/src/solid-core.module.ts +4 -0
  131. package/src/types/workflow-dsl.types.ts +43 -0
  132. package/.claude/settings.local.json +0 -16
  133. package/CLAUDE.md +0 -26
  134. package/src/services/1.js +0 -6
@@ -0,0 +1,264 @@
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
@@ -0,0 +1,25 @@
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
+ }'
@@ -0,0 +1,79 @@
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.
@@ -0,0 +1,191 @@
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`