@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
@@ -1 +1 @@
1
- {"version":3,"file":"workflow-runtime.service.js","sourceRoot":"","sources":["../../../src/services/workflow/workflow-runtime.service.ts"],"names":[],"mappings":"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","sourcesContent":["import { BadRequestException, Injectable, Logger, NotFoundException } from '@nestjs/common';\nimport { InjectEntityManager } from '@nestjs/typeorm';\nimport { EntityManager } from 'typeorm';\nimport { WorkflowDefinition } from '../../entities/workflow-definition.entity';\nimport { WorkflowExecution } from '../../entities/workflow-execution.entity';\nimport { WorkflowStepExecution } from '../../entities/workflow-step-execution.entity';\nimport {\n WorkflowDefinitionDsl,\n WorkflowExecutionRequest,\n WorkflowExecutionResponse,\n WorkflowNodeDefinition,\n WorkflowRuntimeContext,\n} from '../../types/workflow-dsl.types';\nimport { WorkflowExecutionWriterService } from './workflow-execution-writer.service';\nimport { WorkflowExpressionService } from './workflow-expression.service';\nimport { WorkflowDefinitionValidatorService } from './workflow-definition-validator.service';\nimport { WorkflowNodeRegistryService } from './workflow-node-registry.service';\nimport { WorkflowSecretService } from '../workflow-secret.service';\nimport { PublisherFactory } from '../queues/publisher-factory.service';\nimport { WorkflowExecutionQueuePayload } from '../../types/workflow-execution-queue.types';\nimport YAML from 'yaml';\n\n@Injectable()\nexport class WorkflowRuntimeService {\n private readonly logger = new Logger(WorkflowRuntimeService.name);\n\n constructor(\n @InjectEntityManager('default')\n private readonly entityManager: EntityManager,\n private readonly registry: WorkflowNodeRegistryService,\n private readonly expression: WorkflowExpressionService,\n private readonly writer: WorkflowExecutionWriterService,\n private readonly validator: WorkflowDefinitionValidatorService,\n private readonly workflowSecretService: WorkflowSecretService,\n private readonly workflowExecutionPublisherFactory: PublisherFactory<WorkflowExecutionQueuePayload>,\n ) {}\n\n async executeDefinitionById(\n id: number,\n request: WorkflowExecutionRequest,\n ): Promise<WorkflowExecutionResponse> {\n const definition = await this.entityManager.findOne(WorkflowDefinition, {\n where: { id } as any,\n });\n\n return this.executeDefinition(definition, request);\n }\n\n async executeDefinitionByIdAsync(\n id: number,\n request: WorkflowExecutionRequest = {},\n ): Promise<WorkflowExecutionResponse> {\n const definition = await this.entityManager.findOne(WorkflowDefinition, {\n where: { id } as any,\n });\n\n return this.enqueueDefinition(definition, request);\n }\n\n async executeDefinitionByKey(\n key: string,\n request: WorkflowExecutionRequest,\n ): Promise<WorkflowExecutionResponse> {\n const definition = await this.entityManager.findOne(WorkflowDefinition, {\n where: { key } as any,\n });\n\n return this.executeDefinition(definition, request);\n }\n\n async executeDefinitionByKeyAsync(\n key: string,\n request: WorkflowExecutionRequest = {},\n ): Promise<WorkflowExecutionResponse> {\n const definition = await this.entityManager.findOne(WorkflowDefinition, {\n where: { key } as any,\n });\n\n return this.enqueueDefinition(definition, request);\n }\n\n private async queueWorkflowExecution(\n payload: WorkflowExecutionQueuePayload,\n ): Promise<string> {\n const messageId = await this.workflowExecutionPublisherFactory.publish(\n {\n payload,\n parentEntityId: payload.executionId,\n parentEntity: 'workflowExecution',\n retryCount: 0,\n retryInterval: 1000,\n },\n 'WorkflowExecutionPublisher',\n );\n\n this.logger.log(\n `Queued workflow execution message ${messageId} for execution id ${payload.executionId}.`,\n );\n\n return messageId;\n }\n\n private async enqueueDefinition(\n definition: WorkflowDefinition | null,\n request: WorkflowExecutionRequest,\n ): Promise<WorkflowExecutionResponse> {\n if (!definition) {\n throw new BadRequestException('Workflow definition not found.');\n }\n\n this.validator.validate(this.assertDefinitionYaml(definition.definitionYaml));\n const execution = await this.writer.createEnqueuedExecution(definition, request);\n await this.queueWorkflowExecution({\n executionId: execution.id,\n });\n\n return this.toResponse(execution);\n }\n\n async executeEnqueuedExecution(\n executionId: number,\n ): Promise<WorkflowExecutionResponse> {\n const execution = await this.entityManager.findOne(WorkflowExecution, {\n where: { id: executionId } as any,\n relations: ['workflowDefinition'],\n });\n\n if (!execution) {\n throw new NotFoundException(`Workflow execution ${executionId} not found.`);\n }\n\n if (execution.status !== 'enqueued') {\n throw new BadRequestException(\n `Workflow execution ${executionId} is ${execution.status}; expected enqueued.`,\n );\n }\n\n const request = this.readEnqueuedExecutionRequest(execution);\n return this.executeDefinition(execution.workflowDefinition, request, execution);\n }\n\n private async executeDefinition(\n definition: WorkflowDefinition | null,\n request: WorkflowExecutionRequest,\n existingExecution?: WorkflowExecution,\n ): Promise<WorkflowExecutionResponse> {\n if (!definition) {\n throw new BadRequestException('Workflow definition not found.');\n }\n\n const definitionDsl = this.assertDefinitionYaml(definition.definitionYaml);\n this.validator.validate(definitionDsl);\n const secrets = await this.workflowSecretService.getWorkflowSecretsContext();\n const input = this.resolveWorkflowInput(definitionDsl, request, secrets);\n const variables = this.resolveWorkflowVariables(definitionDsl, request, input, secrets);\n const effectiveRequest: WorkflowExecutionRequest = {\n ...request,\n input,\n variables,\n };\n const execution = existingExecution\n ? await this.writer.startExecution(existingExecution, effectiveRequest)\n : await this.writer.createExecution(definition, effectiveRequest);\n const nodeCount = this.countNodes(definitionDsl.nodes);\n const outputs: Record<string, any> = {};\n const runtimeContext: WorkflowRuntimeContext = {\n execution,\n input,\n variables,\n secrets,\n outputs,\n counters: {\n step: 0,\n log: 0,\n },\n };\n\n try {\n this.logger.log(\n `Starting workflow execution ${execution.executionIdentifier} for ${definition.key} with ${nodeCount} node(s).`,\n );\n await this.writer.writeLog(execution, undefined, {\n level: 'info',\n eventType: 'execution.started',\n message: `Workflow execution started for ${definition.key}.`,\n metadata: {\n executionIdentifier: execution.executionIdentifier,\n workflowKey: definition.key,\n triggerType: execution.triggerType,\n nodeCount,\n inputKeys: Object.keys(runtimeContext.input ?? {}),\n variableKeys: Object.keys(runtimeContext.variables ?? {}),\n },\n }, this.nextLogSequence(runtimeContext));\n\n await this.runNodes(definitionDsl.nodes, runtimeContext);\n\n const completed = await this.writer.completeExecution(execution, outputs);\n\n this.logger.log(\n `Completed workflow execution ${completed.executionIdentifier} for ${definition.key} in ${completed.durationMs ?? 0} ms.`,\n );\n await this.writer.writeLog(completed, undefined, {\n level: 'info',\n eventType: 'execution.completed',\n message: `Workflow execution completed for ${definition.key}.`,\n metadata: {\n executionIdentifier: completed.executionIdentifier,\n durationMs: completed.durationMs,\n outputNodeIds: Object.keys(outputs),\n },\n }, this.nextLogSequence(runtimeContext));\n\n return this.toResponse(completed);\n } catch (error) {\n const failed = await this.writer.failExecution(execution, error);\n\n this.logger.error(\n `Failed workflow execution ${failed.executionIdentifier} for ${definition.key}: ${failed.errorSummary}`,\n error instanceof Error ? error.stack : undefined,\n );\n await this.writer.writeLog(failed, undefined, {\n level: 'error',\n eventType: 'execution.failed',\n message: failed.errorSummary,\n context: this.summarizeError(error),\n metadata: {\n executionIdentifier: failed.executionIdentifier,\n durationMs: failed.durationMs,\n },\n }, this.nextLogSequence(runtimeContext));\n\n return this.toResponse(failed);\n }\n }\n\n async getExecutionStatus(executionId: number): Promise<WorkflowExecutionResponse> {\n const execution = await this.findExecutionOrThrow(executionId);\n return this.toResponse(execution);\n }\n\n async getLastStepOutput(executionId: number): Promise<any> {\n await this.findExecutionOrThrow(executionId);\n const step = await this.entityManager.findOne(WorkflowStepExecution, {\n where: { workflowExecution: { id: executionId } } as any,\n order: {\n sequenceNumber: 'DESC',\n id: 'DESC',\n } as any,\n });\n\n if (!step) {\n throw new NotFoundException(`No step executions found for workflow execution ${executionId}.`);\n }\n\n return this.toStepOutputResponse(step);\n }\n\n async getStepOutput(\n executionId: number,\n stepNameOrId: string,\n options: { latest?: boolean; limit?: number; offset?: number } = {},\n ): Promise<any> {\n await this.findExecutionOrThrow(executionId);\n\n const qb = this.entityManager\n .createQueryBuilder(WorkflowStepExecution, 'step')\n .innerJoin('step.workflowExecution', 'execution')\n .where('execution.id = :executionId', { executionId })\n .andWhere(\n '(step.nodeId = :stepNameOrId OR step.nodeName = :stepNameOrId OR step.stepExecutionKey = :stepNameOrId)',\n { stepNameOrId },\n )\n .orderBy('step.sequenceNumber', options.latest === false ? 'ASC' : 'DESC')\n .addOrderBy('step.id', options.latest === false ? 'ASC' : 'DESC');\n\n if (options.latest !== false && options.limit === undefined && options.offset === undefined) {\n const step = await qb.getOne();\n if (!step) {\n throw new NotFoundException(\n `No step output found for '${stepNameOrId}' in workflow execution ${executionId}.`,\n );\n }\n return this.toStepOutputResponse(step);\n }\n\n const limit = Math.max(1, Math.min(Number(options.limit ?? 50), 200));\n const offset = Math.max(0, Number(options.offset ?? 0));\n const [steps, totalRecords] = await qb.limit(limit).offset(offset).getManyAndCount();\n\n return {\n meta: this.buildPagedMeta(offset, limit, totalRecords),\n records: steps.map((step) => this.toStepOutputResponse(step)),\n };\n }\n\n private resolveWorkflowInput(\n definitionDsl: WorkflowDefinitionDsl,\n request: WorkflowExecutionRequest,\n secrets: Record<string, any>,\n ): Record<string, any> {\n const requestedInput = request.input ?? {};\n const defaultInput = Object.entries(definitionDsl.inputs ?? {}).reduce(\n (acc, [key, inputDefinition]) => {\n if (\n inputDefinition &&\n typeof inputDefinition === 'object' &&\n !Array.isArray(inputDefinition) &&\n Object.prototype.hasOwnProperty.call(inputDefinition, 'default')\n ) {\n acc[key] = inputDefinition.default;\n return acc;\n }\n\n if (\n inputDefinition === null ||\n inputDefinition === undefined ||\n (typeof inputDefinition === 'object' && !Array.isArray(inputDefinition))\n ) {\n return acc;\n }\n\n acc[key] = inputDefinition;\n return acc;\n },\n {} as Record<string, any>,\n );\n const rawInput = {\n ...defaultInput,\n ...requestedInput,\n };\n\n return this.expression.interpolate(rawInput, {\n execution: undefined as any,\n input: rawInput,\n variables: definitionDsl.variables ?? {},\n secrets,\n outputs: {},\n });\n }\n\n private resolveWorkflowVariables(\n definitionDsl: WorkflowDefinitionDsl,\n request: WorkflowExecutionRequest,\n input: Record<string, any>,\n secrets: Record<string, any>,\n ): Record<string, any> {\n const rawVariables = {\n ...(definitionDsl.variables ?? {}),\n ...(request.variables ?? {}),\n };\n\n return this.expression.interpolate(rawVariables, {\n execution: undefined as any,\n input,\n variables: rawVariables,\n secrets,\n outputs: {},\n });\n }\n\n private async runNodes(\n nodes: WorkflowNodeDefinition[],\n context: WorkflowRuntimeContext,\n ): Promise<Record<string, any>> {\n for (const node of nodes ?? []) {\n await this.runNode(node, context);\n }\n\n return context.outputs;\n }\n\n private async runNode(\n node: WorkflowNodeDefinition,\n context: WorkflowRuntimeContext,\n ): Promise<void> {\n const inputPayload = {\n configuration: node.configuration,\n input: context.input,\n variables: context.variables,\n item: context.item,\n index: context.index,\n };\n\n const step = await this.writer.createStep(\n context.execution,\n node,\n this.nextStepSequence(context),\n inputPayload,\n context.parentNodeId,\n context.parentStepExecutionKey,\n );\n\n if (node.disabled) {\n context.outputs[node.id] = { skipped: true };\n await this.writer.completeStep(step, 'skipped', context.outputs[node.id]);\n await this.writer.writeLog(context.execution, step, {\n level: 'debug',\n eventType: 'node.skipped',\n message: `Skipped disabled node ${node.id}.`,\n metadata: this.nodeLogMetadata(node, context, step),\n }, this.nextLogSequence(context));\n return;\n }\n\n try {\n await this.writer.writeLog(context.execution, step, {\n level: 'debug',\n eventType: 'node.started',\n message: `Starting node ${node.id} (${node.type}).`,\n metadata: this.nodeLogMetadata(node, context, step),\n }, this.nextLogSequence(context));\n\n this.logger.debug(\n `Starting workflow node ${node.id} (${node.type}) for execution ${context.execution.executionIdentifier}.`,\n );\n const startedAtMs = Date.now();\n const handler = this.registry.get(node.type);\n const result = await handler.execute({\n ...context,\n node,\n stepExecution: step,\n expression: this.expression,\n runNodes: async (childNodes, options = {}) =>\n this.runNodes(childNodes, {\n ...context,\n ...options,\n execution: context.execution,\n outputs: options.outputs ?? context.outputs,\n parentNodeId: node.id,\n parentStepExecutionKey: step.stepExecutionKey,\n }),\n emitLog: async (entry) => {\n await this.writer.writeLog(\n context.execution,\n step,\n entry,\n this.nextLogSequence(context),\n );\n },\n emitArtifact: async (entry) => {\n await this.writer.writeArtifact(context.execution, step, entry);\n },\n });\n\n const output = result.output ?? {};\n context.outputs[node.id] = output;\n\n for (const artifact of result.artifacts ?? []) {\n await this.writer.writeArtifact(context.execution, step, artifact);\n }\n\n await this.writer.completeStep(\n step,\n result.status ?? 'success',\n output,\n {\n item: context.item,\n index: context.index,\n },\n );\n\n await this.writer.writeLog(context.execution, step, {\n level: 'debug',\n eventType: 'node.completed',\n message: `Completed node ${node.id} (${node.type}).`,\n metadata: {\n ...this.nodeLogMetadata(node, context, step),\n status: result.status ?? 'success',\n durationMs: Date.now() - startedAtMs,\n outputSummary: this.summarizeValue(output),\n artifactCount: result.artifacts?.length ?? 0,\n },\n }, this.nextLogSequence(context));\n } catch (error) {\n await this.writer.failStep(step, error);\n\n if (node.onError === 'continue') {\n context.outputs[node.id] = {\n error: error instanceof Error ? error.message : String(error),\n };\n await this.writer.writeLog(context.execution, step, {\n level: 'warn',\n eventType: 'node.failed.continued',\n message: `Node ${node.id} failed but workflow continued: ${this.errorMessage(error)}.`,\n context: this.summarizeError(error),\n metadata: this.nodeLogMetadata(node, context, step),\n }, this.nextLogSequence(context));\n return;\n }\n\n await this.writer.writeLog(context.execution, step, {\n level: 'error',\n eventType: 'node.failed',\n message: `Node ${node.id} failed: ${this.errorMessage(error)}.`,\n context: this.summarizeError(error),\n metadata: this.nodeLogMetadata(node, context, step),\n }, this.nextLogSequence(context));\n throw error;\n }\n }\n\n private assertDefinitionYaml(value: any): WorkflowDefinitionDsl {\n if (!value || typeof value !== 'string') {\n throw new BadRequestException(\n 'Workflow definition YAML must be stored as a string.',\n );\n }\n\n let parsed: unknown;\n try {\n parsed = YAML.parse(value);\n } catch (error: any) {\n throw new BadRequestException(\n error?.message ?? 'Workflow definition YAML could not be parsed.',\n );\n }\n\n if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed)) {\n throw new BadRequestException(\n 'Workflow definition YAML must resolve to an object with a nodes array.',\n );\n }\n\n if (!Array.isArray((parsed as WorkflowDefinitionDsl).nodes)) {\n throw new BadRequestException(\n 'Workflow definition YAML must include a nodes array.',\n );\n }\n\n return parsed as WorkflowDefinitionDsl;\n }\n\n private readEnqueuedExecutionRequest(execution: WorkflowExecution): WorkflowExecutionRequest {\n const payload = execution.inputPayload;\n if (!payload || typeof payload !== 'object' || Array.isArray(payload)) {\n return {\n triggerType: execution.triggerType,\n requestedByUserId: execution.requestedByUserId as any,\n };\n }\n\n return {\n ...(payload as WorkflowExecutionRequest),\n triggerType: (payload as WorkflowExecutionRequest).triggerType ?? execution.triggerType,\n requestedByUserId:\n (payload as WorkflowExecutionRequest).requestedByUserId ??\n (execution.requestedByUserId as any),\n };\n }\n\n private async findExecutionOrThrow(executionId: number): Promise<WorkflowExecution> {\n const execution = await this.entityManager.findOne(WorkflowExecution, {\n where: { id: executionId } as any,\n });\n\n if (!execution) {\n throw new NotFoundException(`Workflow execution ${executionId} not found.`);\n }\n\n return execution;\n }\n\n private toStepOutputResponse(step: WorkflowStepExecution) {\n return {\n id: step.id,\n stepExecutionKey: step.stepExecutionKey,\n nodeId: step.nodeId,\n nodeName: step.nodeName,\n nodeType: step.nodeType,\n nodeKind: step.nodeKind,\n sequenceNumber: step.sequenceNumber,\n attemptNumber: step.attemptNumber,\n status: step.status,\n startedAt: step.startedAt,\n finishedAt: step.finishedAt,\n durationMs: step.durationMs as any,\n runtimeContext: step.runtimeContext,\n outputPayload: step.outputPayload,\n errorSummary: step.errorSummary,\n };\n }\n\n private buildPagedMeta(offset: number, limit: number, totalRecords: number) {\n const currentPage = limit ? Math.floor(offset / limit) + 1 : 1;\n const totalPages = limit ? Math.max(1, Math.ceil(totalRecords / limit)) : 1;\n return {\n totalRecords,\n currentPage,\n nextPage: currentPage < totalPages ? currentPage + 1 : null,\n prevPage: currentPage > 1 ? currentPage - 1 : null,\n totalPages,\n perPage: limit,\n };\n }\n\n private toResponse(execution: WorkflowExecution): WorkflowExecutionResponse {\n return {\n id: execution.id,\n executionIdentifier: execution.executionIdentifier,\n workflowKey: execution.workflowKey,\n status: execution.status as any,\n startedAt: execution.startedAt,\n finishedAt: execution.finishedAt,\n durationMs: execution.durationMs as any,\n outputPayload: execution.outputPayload,\n errorSummary: execution.errorSummary,\n };\n }\n\n private nextStepSequence(context: WorkflowRuntimeContext): number {\n context.counters = context.counters ?? { step: 0, log: 0 };\n context.counters.step += 1;\n return context.counters.step;\n }\n\n private nextLogSequence(context: WorkflowRuntimeContext): number {\n context.counters = context.counters ?? { step: 0, log: 0 };\n context.counters.log += 1;\n return context.counters.log;\n }\n\n private countNodes(nodes: WorkflowNodeDefinition[] = []): number {\n return nodes.reduce((count, node) => {\n const nestedNodes = [\n ...(node.tasks ?? []),\n ...(node.then ?? []),\n ...(node.else ?? []),\n ...(node.defaults ?? []),\n ...Object.values(node.cases ?? {}).flat(),\n ];\n\n return count + 1 + this.countNodes(nestedNodes);\n }, 0);\n }\n\n private nodeLogMetadata(\n node: WorkflowNodeDefinition,\n context: WorkflowRuntimeContext,\n step?: WorkflowStepExecution,\n ) {\n return {\n executionIdentifier: context.execution.executionIdentifier,\n stepExecutionKey: step?.stepExecutionKey,\n nodeId: node.id,\n nodeName: node.name,\n nodeType: node.type,\n nodeKind: node.kind,\n parentNodeId: context.parentNodeId,\n parentStepExecutionKey: context.parentStepExecutionKey,\n index: context.index,\n hasItem: context.item !== undefined,\n configurationKeys:\n node.configuration && typeof node.configuration === 'object'\n ? Object.keys(node.configuration)\n : [],\n availableInputKeys: Object.keys(context.input ?? {}),\n availableVariableKeys: Object.keys(context.variables ?? {}),\n availableOutputNodeIds: Object.keys(context.outputs ?? {}),\n };\n }\n\n private summarizeValue(value: any): any {\n if (Array.isArray(value)) {\n return {\n type: 'array',\n length: value.length,\n };\n }\n\n if (value && typeof value === 'object') {\n return {\n type: 'object',\n keys: Object.keys(value),\n };\n }\n\n return {\n type: value === null ? 'null' : typeof value,\n empty: value === undefined || value === null || value === '',\n };\n }\n\n private errorMessage(error: unknown): string {\n return error instanceof Error ? error.message : String(error);\n }\n\n private summarizeError(error: unknown): any {\n if (error instanceof Error) {\n return {\n name: error.name,\n message: error.message,\n stack: error.stack,\n };\n }\n\n return { error };\n }\n}\n"]}
1
+ {"version":3,"file":"workflow-runtime.service.js","sourceRoot":"","sources":["../../../src/services/workflow/workflow-runtime.service.ts"],"names":[],"mappings":"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","sourcesContent":["import { BadRequestException, Injectable, Logger, NotFoundException } from '@nestjs/common';\nimport { InjectEntityManager } from '@nestjs/typeorm';\nimport { EntityManager } from 'typeorm';\nimport { WorkflowDefinition } from '../../entities/workflow-definition.entity';\nimport { WorkflowExecution } from '../../entities/workflow-execution.entity';\nimport { WorkflowStepExecution } from '../../entities/workflow-step-execution.entity';\nimport {\n WorkflowDefinitionDsl,\n WorkflowExecutionRequest,\n WorkflowExecutionResponse,\n WorkflowNodeDefinition,\n WorkflowRuntimeContext,\n} from '../../types/workflow-dsl.types';\nimport { WorkflowExecutionWriterService } from './workflow-execution-writer.service';\nimport { WorkflowExpressionService } from './workflow-expression.service';\nimport { WorkflowDefinitionValidatorService } from './workflow-definition-validator.service';\nimport { WorkflowNodeRegistryService } from './workflow-node-registry.service';\nimport { WorkflowSecretService } from '../workflow-secret.service';\nimport { PublisherFactory } from '../queues/publisher-factory.service';\nimport { WorkflowExecutionQueuePayload } from '../../types/workflow-execution-queue.types';\nimport YAML from 'yaml';\n\n@Injectable()\nexport class WorkflowRuntimeService {\n private readonly logger = new Logger(WorkflowRuntimeService.name);\n\n constructor(\n @InjectEntityManager('default')\n private readonly entityManager: EntityManager,\n private readonly registry: WorkflowNodeRegistryService,\n private readonly expression: WorkflowExpressionService,\n private readonly writer: WorkflowExecutionWriterService,\n private readonly validator: WorkflowDefinitionValidatorService,\n private readonly workflowSecretService: WorkflowSecretService,\n private readonly workflowExecutionPublisherFactory: PublisherFactory<WorkflowExecutionQueuePayload>,\n ) {}\n\n async executeDefinitionById(\n id: number,\n request: WorkflowExecutionRequest,\n ): Promise<WorkflowExecutionResponse> {\n const definition = await this.entityManager.findOne(WorkflowDefinition, {\n where: { id } as any,\n });\n\n return this.executeDefinition(definition, request);\n }\n\n async executeDefinitionByIdAsync(\n id: number,\n request: WorkflowExecutionRequest = {},\n ): Promise<WorkflowExecutionResponse> {\n const definition = await this.entityManager.findOne(WorkflowDefinition, {\n where: { id } as any,\n });\n\n return this.enqueueDefinition(definition, request);\n }\n\n async executeDefinitionByKey(\n key: string,\n request: WorkflowExecutionRequest,\n ): Promise<WorkflowExecutionResponse> {\n const definition = await this.entityManager.findOne(WorkflowDefinition, {\n where: { key } as any,\n });\n\n return this.executeDefinition(definition, request);\n }\n\n async executeDefinitionByKeyAsync(\n key: string,\n request: WorkflowExecutionRequest = {},\n ): Promise<WorkflowExecutionResponse> {\n const definition = await this.entityManager.findOne(WorkflowDefinition, {\n where: { key } as any,\n });\n\n return this.enqueueDefinition(definition, request);\n }\n\n private async queueWorkflowExecution(\n payload: WorkflowExecutionQueuePayload,\n ): Promise<string> {\n const messageId = await this.workflowExecutionPublisherFactory.publish(\n {\n payload,\n parentEntityId: payload.executionId,\n parentEntity: 'workflowExecution',\n retryCount: 0,\n retryInterval: 1000,\n },\n 'WorkflowExecutionPublisher',\n );\n\n this.logger.log(\n `Queued workflow execution message ${messageId} for execution id ${payload.executionId}.`,\n );\n\n return messageId;\n }\n\n private async enqueueDefinition(\n definition: WorkflowDefinition | null,\n request: WorkflowExecutionRequest,\n ): Promise<WorkflowExecutionResponse> {\n if (!definition) {\n throw new BadRequestException('Workflow definition not found.');\n }\n\n this.validator.validate(this.assertDefinitionYaml(definition.definitionYaml));\n const execution = await this.writer.createEnqueuedExecution(definition, request);\n await this.queueWorkflowExecution({\n executionId: execution.id,\n });\n\n return this.toResponse(execution);\n }\n\n async executeEnqueuedExecution(\n executionId: number,\n ): Promise<WorkflowExecutionResponse> {\n const execution = await this.entityManager.findOne(WorkflowExecution, {\n where: { id: executionId } as any,\n relations: ['workflowDefinition'],\n });\n\n if (!execution) {\n throw new NotFoundException(`Workflow execution ${executionId} not found.`);\n }\n\n if (execution.status !== 'enqueued') {\n throw new BadRequestException(\n `Workflow execution ${executionId} is ${execution.status}; expected enqueued.`,\n );\n }\n\n const request = this.readEnqueuedExecutionRequest(execution);\n return this.executeDefinition(execution.workflowDefinition, request, execution);\n }\n\n private async executeDefinition(\n definition: WorkflowDefinition | null,\n request: WorkflowExecutionRequest,\n existingExecution?: WorkflowExecution,\n ): Promise<WorkflowExecutionResponse> {\n if (!definition) {\n throw new BadRequestException('Workflow definition not found.');\n }\n\n const definitionDsl = this.assertDefinitionYaml(definition.definitionYaml);\n this.validator.validate(definitionDsl);\n const secrets = await this.workflowSecretService.getWorkflowSecretsContext();\n const input = this.resolveWorkflowInput(definitionDsl, request, secrets);\n const variables = this.resolveWorkflowVariables(definitionDsl, request, input, secrets);\n const effectiveRequest: WorkflowExecutionRequest = {\n ...request,\n input,\n variables,\n };\n const execution = existingExecution\n ? await this.writer.startExecution(existingExecution, effectiveRequest)\n : await this.writer.createExecution(definition, effectiveRequest);\n const nodeCount = this.countNodes([\n ...(definitionDsl.nodes ?? []),\n ...(definitionDsl.errors ?? []),\n ...(definitionDsl.finally ?? []),\n ]);\n const outputs: Record<string, any> = {};\n const runtimeContext: WorkflowRuntimeContext = {\n execution,\n input,\n variables,\n secrets,\n outputs,\n counters: {\n step: 0,\n log: 0,\n },\n };\n\n this.logger.log(\n `Starting workflow execution ${execution.executionIdentifier} for ${definition.key} with ${nodeCount} node(s).`,\n );\n await this.writer.writeLog(execution, undefined, {\n level: 'info',\n eventType: 'execution.started',\n message: `Workflow execution started for ${definition.key}.`,\n metadata: {\n executionIdentifier: execution.executionIdentifier,\n workflowKey: definition.key,\n triggerType: execution.triggerType,\n nodeCount,\n inputKeys: Object.keys(runtimeContext.input ?? {}),\n variableKeys: Object.keys(runtimeContext.variables ?? {}),\n },\n }, this.nextLogSequence(runtimeContext));\n\n let executionError: unknown;\n\n try {\n await this.runNodes(definitionDsl.nodes, runtimeContext);\n } catch (error) {\n executionError = error;\n await this.runGlobalErrorHandlers(definitionDsl, runtimeContext, error);\n }\n\n try {\n await this.runFinallyHandlers(definitionDsl, runtimeContext);\n } catch (finallyError) {\n await this.writer.writeLog(execution, undefined, {\n level: 'error',\n eventType: 'finally.failed',\n message: `Finally handler failed: ${this.errorMessage(finallyError)}.`,\n context: this.summarizeError(finallyError),\n metadata: {\n originalError: executionError\n ? this.summarizeError(executionError)\n : undefined,\n },\n }, this.nextLogSequence(runtimeContext));\n if (!executionError) {\n executionError = finallyError;\n }\n }\n\n if (!executionError) {\n const completed = await this.writer.completeExecution(execution, outputs);\n\n this.logger.log(\n `Completed workflow execution ${completed.executionIdentifier} for ${definition.key} in ${completed.durationMs ?? 0} ms.`,\n );\n await this.writer.writeLog(completed, undefined, {\n level: 'info',\n eventType: 'execution.completed',\n message: `Workflow execution completed for ${definition.key}.`,\n metadata: {\n executionIdentifier: completed.executionIdentifier,\n durationMs: completed.durationMs,\n outputNodeIds: Object.keys(outputs),\n },\n }, this.nextLogSequence(runtimeContext));\n\n return this.toResponse(completed);\n }\n\n const failed = await this.writer.failExecution(execution, executionError);\n\n this.logger.error(\n `Failed workflow execution ${failed.executionIdentifier} for ${definition.key}: ${failed.errorSummary}`,\n executionError instanceof Error ? executionError.stack : undefined,\n );\n await this.writer.writeLog(failed, undefined, {\n level: 'error',\n eventType: 'execution.failed',\n message: failed.errorSummary,\n context: this.summarizeError(executionError),\n metadata: {\n executionIdentifier: failed.executionIdentifier,\n durationMs: failed.durationMs,\n },\n }, this.nextLogSequence(runtimeContext));\n\n return this.toResponse(failed);\n }\n\n async getExecutionStatus(executionId: number): Promise<WorkflowExecutionResponse> {\n const execution = await this.findExecutionOrThrow(executionId);\n return this.toResponse(execution);\n }\n\n async getLastStepOutput(executionId: number): Promise<any> {\n await this.findExecutionOrThrow(executionId);\n const step = await this.entityManager.findOne(WorkflowStepExecution, {\n where: { workflowExecution: { id: executionId } } as any,\n order: {\n sequenceNumber: 'DESC',\n id: 'DESC',\n } as any,\n });\n\n if (!step) {\n throw new NotFoundException(`No step executions found for workflow execution ${executionId}.`);\n }\n\n return this.toStepOutputResponse(step);\n }\n\n async getStepOutput(\n executionId: number,\n stepNameOrId: string,\n options: { latest?: boolean; limit?: number; offset?: number } = {},\n ): Promise<any> {\n await this.findExecutionOrThrow(executionId);\n\n const qb = this.entityManager\n .createQueryBuilder(WorkflowStepExecution, 'step')\n .innerJoin('step.workflowExecution', 'execution')\n .where('execution.id = :executionId', { executionId })\n .andWhere(\n '(step.nodeId = :stepNameOrId OR step.nodeName = :stepNameOrId OR step.stepExecutionKey = :stepNameOrId)',\n { stepNameOrId },\n )\n .orderBy('step.sequenceNumber', options.latest === false ? 'ASC' : 'DESC')\n .addOrderBy('step.id', options.latest === false ? 'ASC' : 'DESC');\n\n if (options.latest !== false && options.limit === undefined && options.offset === undefined) {\n const step = await qb.getOne();\n if (!step) {\n throw new NotFoundException(\n `No step output found for '${stepNameOrId}' in workflow execution ${executionId}.`,\n );\n }\n return this.toStepOutputResponse(step);\n }\n\n const limit = Math.max(1, Math.min(Number(options.limit ?? 50), 200));\n const offset = Math.max(0, Number(options.offset ?? 0));\n const [steps, totalRecords] = await qb.limit(limit).offset(offset).getManyAndCount();\n\n return {\n meta: this.buildPagedMeta(offset, limit, totalRecords),\n records: steps.map((step) => this.toStepOutputResponse(step)),\n };\n }\n\n private resolveWorkflowInput(\n definitionDsl: WorkflowDefinitionDsl,\n request: WorkflowExecutionRequest,\n secrets: Record<string, any>,\n ): Record<string, any> {\n const requestedInput = request.input ?? {};\n const defaultInput = Object.entries(definitionDsl.inputs ?? {}).reduce(\n (acc, [key, inputDefinition]) => {\n if (\n inputDefinition &&\n typeof inputDefinition === 'object' &&\n !Array.isArray(inputDefinition) &&\n Object.prototype.hasOwnProperty.call(inputDefinition, 'default')\n ) {\n acc[key] = inputDefinition.default;\n return acc;\n }\n\n if (\n inputDefinition === null ||\n inputDefinition === undefined ||\n (typeof inputDefinition === 'object' && !Array.isArray(inputDefinition))\n ) {\n return acc;\n }\n\n acc[key] = inputDefinition;\n return acc;\n },\n {} as Record<string, any>,\n );\n const rawInput = {\n ...defaultInput,\n ...requestedInput,\n };\n\n return this.expression.interpolate(rawInput, {\n execution: undefined as any,\n input: rawInput,\n variables: definitionDsl.variables ?? {},\n secrets,\n outputs: {},\n });\n }\n\n private resolveWorkflowVariables(\n definitionDsl: WorkflowDefinitionDsl,\n request: WorkflowExecutionRequest,\n input: Record<string, any>,\n secrets: Record<string, any>,\n ): Record<string, any> {\n const rawVariables = {\n ...(definitionDsl.variables ?? {}),\n ...(request.variables ?? {}),\n };\n\n return this.expression.interpolate(rawVariables, {\n execution: undefined as any,\n input,\n variables: rawVariables,\n secrets,\n outputs: {},\n });\n }\n\n private async runNodes(\n nodes: WorkflowNodeDefinition[],\n context: WorkflowRuntimeContext,\n ): Promise<Record<string, any>> {\n const nodeOutputs: Record<string, any> = {};\n\n for (const node of nodes ?? []) {\n nodeOutputs[node.id] = await this.runNode(node, context);\n }\n\n return nodeOutputs;\n }\n\n private async runNode(\n node: WorkflowNodeDefinition,\n context: WorkflowRuntimeContext,\n ): Promise<Record<string, any>> {\n const inputPayload = {\n configuration: node.configuration,\n input: context.input,\n variables: context.variables,\n item: context.item,\n index: context.index,\n };\n\n const step = await this.writer.createStep(\n context.execution,\n node,\n this.nextStepSequence(context),\n inputPayload,\n context.parentNodeId,\n context.parentStepExecutionKey,\n );\n\n if (node.disabled) {\n context.outputs[node.id] = { skipped: true };\n await this.writer.completeStep(step, 'skipped', context.outputs[node.id]);\n await this.writer.writeLog(context.execution, step, {\n level: 'debug',\n eventType: 'node.skipped',\n message: `Skipped disabled node ${node.id}.`,\n metadata: this.nodeLogMetadata(node, context, step),\n }, this.nextLogSequence(context));\n return context.outputs[node.id];\n }\n\n try {\n await this.writer.writeLog(context.execution, step, {\n level: 'debug',\n eventType: 'node.started',\n message: `Starting node ${node.id} (${node.type}).`,\n metadata: this.nodeLogMetadata(node, context, step),\n }, this.nextLogSequence(context));\n\n this.logger.debug(\n `Starting workflow node ${node.id} (${node.type}) for execution ${context.execution.executionIdentifier}.`,\n );\n const startedAtMs = Date.now();\n const handler = this.registry.get(node.type);\n const result = await handler.execute({\n ...context,\n node,\n stepExecution: step,\n expression: this.expression,\n runNodes: async (childNodes, options = {}) =>\n this.runNodes(childNodes, {\n ...context,\n ...options,\n execution: context.execution,\n outputs: options.outputs ?? context.outputs,\n parentNodeId: node.id,\n parentStepExecutionKey: step.stepExecutionKey,\n }),\n emitLog: async (entry) => {\n await this.writer.writeLog(\n context.execution,\n step,\n entry,\n this.nextLogSequence(context),\n );\n },\n emitArtifact: async (entry) => {\n await this.writer.writeArtifact(context.execution, step, entry);\n },\n });\n\n const output = result.output ?? {};\n context.outputs[node.id] = this.getRuntimeContextOutput(node, output);\n\n for (const artifact of result.artifacts ?? []) {\n await this.writer.writeArtifact(context.execution, step, artifact);\n }\n\n await this.writer.completeStep(\n step,\n result.status ?? 'success',\n output,\n {\n item: context.item,\n index: context.index,\n },\n );\n\n await this.writer.writeLog(context.execution, step, {\n level: 'debug',\n eventType: 'node.completed',\n message: `Completed node ${node.id} (${node.type}).`,\n metadata: {\n ...this.nodeLogMetadata(node, context, step),\n status: result.status ?? 'success',\n durationMs: Date.now() - startedAtMs,\n outputSummary: this.summarizeValue(output),\n artifactCount: result.artifacts?.length ?? 0,\n },\n }, this.nextLogSequence(context));\n\n return output;\n } catch (error) {\n await this.writer.failStep(step, error);\n\n if (node.onError === 'continue') {\n context.outputs[node.id] = {\n error: error instanceof Error ? error.message : String(error),\n };\n await this.writer.writeLog(context.execution, step, {\n level: 'warn',\n eventType: 'node.failed.continued',\n message: `Node ${node.id} failed but workflow continued: ${this.errorMessage(error)}.`,\n context: this.summarizeError(error),\n metadata: this.nodeLogMetadata(node, context, step),\n }, this.nextLogSequence(context));\n return context.outputs[node.id];\n }\n\n await this.writer.writeLog(context.execution, step, {\n level: 'error',\n eventType: 'node.failed',\n message: `Node ${node.id} failed: ${this.errorMessage(error)}.`,\n context: this.summarizeError(error),\n metadata: this.nodeLogMetadata(node, context, step),\n }, this.nextLogSequence(context));\n await this.runLocalErrorHandlers(node, context, error);\n throw error;\n }\n }\n\n private async runGlobalErrorHandlers(\n definitionDsl: WorkflowDefinitionDsl,\n context: WorkflowRuntimeContext,\n error: unknown,\n ): Promise<void> {\n const errorNodes = definitionDsl.errors ?? [];\n if (!errorNodes.length) {\n return;\n }\n\n await this.runErrorHandlers(\n errorNodes,\n context,\n error,\n 'global',\n undefined,\n undefined,\n );\n }\n\n private async runFinallyHandlers(\n definitionDsl: WorkflowDefinitionDsl,\n context: WorkflowRuntimeContext,\n ): Promise<void> {\n const finallyNodes = definitionDsl.finally ?? [];\n if (!finallyNodes.length) {\n return;\n }\n\n await this.writer.writeLog(context.execution, undefined, {\n level: 'info',\n eventType: 'finally.started',\n message: 'Running workflow finally handlers.',\n metadata: {\n handlerNodeCount: finallyNodes.length,\n },\n }, this.nextLogSequence(context));\n\n await this.runNodes(finallyNodes, context);\n\n await this.writer.writeLog(context.execution, undefined, {\n level: 'info',\n eventType: 'finally.completed',\n message: 'Workflow finally handlers completed.',\n metadata: {\n handlerNodeCount: finallyNodes.length,\n },\n }, this.nextLogSequence(context));\n }\n\n private async runLocalErrorHandlers(\n node: WorkflowNodeDefinition,\n context: WorkflowRuntimeContext,\n error: unknown,\n ): Promise<void> {\n const errorNodes = node.errors ?? [];\n if (!errorNodes.length) {\n return;\n }\n\n await this.runErrorHandlers(\n errorNodes,\n context,\n error,\n 'local',\n node.id,\n context.stepExecution?.stepExecutionKey,\n );\n }\n\n private async runErrorHandlers(\n errorNodes: WorkflowNodeDefinition[],\n context: WorkflowRuntimeContext,\n error: unknown,\n scope: 'global' | 'local',\n sourceNodeId?: string,\n sourceStepExecutionKey?: string,\n ): Promise<void> {\n const errorContext = this.buildErrorContext(error, sourceNodeId, sourceStepExecutionKey);\n\n await this.writer.writeLog(context.execution, undefined, {\n level: 'warn',\n eventType: `error-handler.${scope}.started`,\n message:\n scope === 'global'\n ? 'Running workflow-level error handlers.'\n : `Running local error handlers for node ${sourceNodeId}.`,\n context: errorContext,\n metadata: {\n sourceNodeId,\n sourceStepExecutionKey,\n handlerNodeCount: errorNodes.length,\n },\n }, this.nextLogSequence(context));\n\n try {\n await this.runNodes(errorNodes, {\n ...context,\n error: errorContext,\n parentNodeId: sourceNodeId ?? context.parentNodeId,\n parentStepExecutionKey:\n sourceStepExecutionKey ?? context.parentStepExecutionKey,\n });\n } catch (handlerError) {\n await this.writer.writeLog(context.execution, undefined, {\n level: 'error',\n eventType: `error-handler.${scope}.failed`,\n message: `Error handler failed: ${this.errorMessage(handlerError)}.`,\n context: this.summarizeError(handlerError),\n metadata: {\n originalError: errorContext,\n sourceNodeId,\n sourceStepExecutionKey,\n },\n }, this.nextLogSequence(context));\n return;\n }\n\n await this.writer.writeLog(context.execution, undefined, {\n level: 'info',\n eventType: `error-handler.${scope}.completed`,\n message:\n scope === 'global'\n ? 'Workflow-level error handlers completed.'\n : `Local error handlers completed for node ${sourceNodeId}.`,\n context: errorContext,\n metadata: {\n sourceNodeId,\n sourceStepExecutionKey,\n },\n }, this.nextLogSequence(context));\n }\n\n private buildErrorContext(\n error: unknown,\n nodeId?: string,\n stepExecutionKey?: string,\n ): Record<string, any> {\n const summary = this.summarizeError(error);\n return {\n ...summary,\n message: this.errorMessage(error),\n nodeId,\n stepExecutionKey,\n };\n }\n\n private assertDefinitionYaml(value: any): WorkflowDefinitionDsl {\n if (!value || typeof value !== 'string') {\n throw new BadRequestException(\n 'Workflow definition YAML must be stored as a string.',\n );\n }\n\n let parsed: unknown;\n try {\n parsed = YAML.parse(value);\n } catch (error: any) {\n throw new BadRequestException(\n error?.message ?? 'Workflow definition YAML could not be parsed.',\n );\n }\n\n if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed)) {\n throw new BadRequestException(\n 'Workflow definition YAML must resolve to an object with a nodes array.',\n );\n }\n\n if (!Array.isArray((parsed as WorkflowDefinitionDsl).nodes)) {\n throw new BadRequestException(\n 'Workflow definition YAML must include a nodes array.',\n );\n }\n\n return parsed as WorkflowDefinitionDsl;\n }\n\n private readEnqueuedExecutionRequest(execution: WorkflowExecution): WorkflowExecutionRequest {\n const payload = execution.inputPayload;\n if (!payload || typeof payload !== 'object' || Array.isArray(payload)) {\n return {\n triggerType: execution.triggerType,\n requestedByUserId: execution.requestedByUserId as any,\n };\n }\n\n return {\n ...(payload as WorkflowExecutionRequest),\n triggerType: (payload as WorkflowExecutionRequest).triggerType ?? execution.triggerType,\n requestedByUserId:\n (payload as WorkflowExecutionRequest).requestedByUserId ??\n (execution.requestedByUserId as any),\n };\n }\n\n private async findExecutionOrThrow(executionId: number): Promise<WorkflowExecution> {\n const execution = await this.entityManager.findOne(WorkflowExecution, {\n where: { id: executionId } as any,\n });\n\n if (!execution) {\n throw new NotFoundException(`Workflow execution ${executionId} not found.`);\n }\n\n return execution;\n }\n\n private toStepOutputResponse(step: WorkflowStepExecution) {\n return {\n id: step.id,\n stepExecutionKey: step.stepExecutionKey,\n nodeId: step.nodeId,\n nodeName: step.nodeName,\n nodeType: step.nodeType,\n nodeKind: step.nodeKind,\n sequenceNumber: step.sequenceNumber,\n attemptNumber: step.attemptNumber,\n status: step.status,\n startedAt: step.startedAt,\n finishedAt: step.finishedAt,\n durationMs: step.durationMs as any,\n runtimeContext: step.runtimeContext,\n outputPayload: step.outputPayload,\n errorSummary: step.errorSummary,\n };\n }\n\n private buildPagedMeta(offset: number, limit: number, totalRecords: number) {\n const currentPage = limit ? Math.floor(offset / limit) + 1 : 1;\n const totalPages = limit ? Math.max(1, Math.ceil(totalRecords / limit)) : 1;\n return {\n totalRecords,\n currentPage,\n nextPage: currentPage < totalPages ? currentPage + 1 : null,\n prevPage: currentPage > 1 ? currentPage - 1 : null,\n totalPages,\n perPage: limit,\n };\n }\n\n private toResponse(execution: WorkflowExecution): WorkflowExecutionResponse {\n return {\n id: execution.id,\n executionIdentifier: execution.executionIdentifier,\n workflowKey: execution.workflowKey,\n status: execution.status as any,\n startedAt: execution.startedAt,\n finishedAt: execution.finishedAt,\n durationMs: execution.durationMs as any,\n outputPayload: execution.outputPayload,\n errorSummary: execution.errorSummary,\n };\n }\n\n private nextStepSequence(context: WorkflowRuntimeContext): number {\n context.counters = context.counters ?? { step: 0, log: 0 };\n context.counters.step += 1;\n return context.counters.step;\n }\n\n private nextLogSequence(context: WorkflowRuntimeContext): number {\n context.counters = context.counters ?? { step: 0, log: 0 };\n context.counters.log += 1;\n return context.counters.log;\n }\n\n private countNodes(nodes: WorkflowNodeDefinition[] = []): number {\n return nodes.reduce((count, node) => {\n const nestedNodes = [\n ...(node.tasks ?? []),\n ...(node.then ?? []),\n ...(node.else ?? []),\n ...(node.defaults ?? []),\n ...(node.errors ?? []),\n ...Object.values(node.cases ?? {}).flat(),\n ];\n\n return count + 1 + this.countNodes(nestedNodes);\n }, 0);\n }\n\n private nodeLogMetadata(\n node: WorkflowNodeDefinition,\n context: WorkflowRuntimeContext,\n step?: WorkflowStepExecution,\n ) {\n return {\n executionIdentifier: context.execution.executionIdentifier,\n stepExecutionKey: step?.stepExecutionKey,\n nodeId: node.id,\n nodeName: node.name,\n nodeType: node.type,\n nodeKind: node.kind,\n parentNodeId: context.parentNodeId,\n parentStepExecutionKey: context.parentStepExecutionKey,\n index: context.index,\n hasItem: context.item !== undefined,\n configurationKeys:\n node.configuration && typeof node.configuration === 'object'\n ? Object.keys(node.configuration)\n : [],\n availableInputKeys: Object.keys(context.input ?? {}),\n availableVariableKeys: Object.keys(context.variables ?? {}),\n availableOutputNodeIds: Object.keys(context.outputs ?? {}),\n };\n }\n\n private getRuntimeContextOutput(\n node: WorkflowNodeDefinition,\n output: Record<string, any>,\n ): Record<string, any> {\n const hiddenOutputPaths =\n this.registry\n .getMetadata(node.type)\n .authoring?.outputs?.filter(\n (definition) => definition.includeInRuntimeContext === false,\n )\n .map((definition) => definition.path ?? definition.key)\n .filter(Boolean) ?? [];\n\n if (!hiddenOutputPaths.length || !output || typeof output !== 'object') {\n return output;\n }\n\n const runtimeOutput = this.cloneOutput(output);\n hiddenOutputPaths.forEach((path) => {\n this.deletePath(runtimeOutput, path);\n });\n\n return runtimeOutput;\n }\n\n private cloneOutput(output: Record<string, any>): Record<string, any> {\n if (typeof structuredClone === 'function') {\n return structuredClone(output);\n }\n\n return JSON.parse(JSON.stringify(output));\n }\n\n private deletePath(target: Record<string, any>, path: string) {\n const parts = path.split('.').filter(Boolean);\n if (!parts.length) {\n return;\n }\n\n let cursor: any = target;\n for (let index = 0; index < parts.length - 1; index += 1) {\n cursor = cursor?.[parts[index]];\n if (!cursor || typeof cursor !== 'object') {\n return;\n }\n }\n\n if (cursor && typeof cursor === 'object') {\n delete cursor[parts[parts.length - 1]];\n }\n }\n\n private summarizeValue(value: any): any {\n if (Array.isArray(value)) {\n return {\n type: 'array',\n length: value.length,\n };\n }\n\n if (value && typeof value === 'object') {\n return {\n type: 'object',\n keys: Object.keys(value),\n };\n }\n\n return {\n type: value === null ? 'null' : typeof value,\n empty: value === undefined || value === null || value === '',\n };\n }\n\n private errorMessage(error: unknown): string {\n return error instanceof Error ? error.message : String(error);\n }\n\n private summarizeError(error: unknown): any {\n if (error instanceof Error) {\n return {\n name: error.name,\n message: error.message,\n stack: error.stack,\n };\n }\n\n return { error };\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"solid-core.module.d.ts","sourceRoot":"","sources":["../src/solid-core.module.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,CAAC;AAChB,OAAO,EAAU,kBAAkB,EAAU,UAAU,EAAE,MAAM,gBAAgB,CAAC;AA8chF,qBA4jBa,eAAgB,YAAW,UAAU;IAChD,SAAS,CAAC,QAAQ,EAAE,kBAAkB;CAQvC"}
1
+ {"version":3,"file":"solid-core.module.d.ts","sourceRoot":"","sources":["../src/solid-core.module.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,CAAC;AAChB,OAAO,EAAU,kBAAkB,EAAU,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAgdhF,qBA8jBa,eAAgB,YAAW,UAAU;IAChD,SAAS,CAAC,QAAQ,EAAE,kBAAkB;CAQvC"}
@@ -450,10 +450,12 @@ const workflow_invocation_service_1 = require("./services/workflow/workflow-invo
450
450
  const workflow_node_registry_service_1 = require("./services/workflow/workflow-node-registry.service");
451
451
  const workflow_runtime_service_1 = require("./services/workflow/workflow-runtime.service");
452
452
  const workflow_scheduled_trigger_job_1 = require("./services/workflow/workflow-scheduled-trigger.job");
453
+ const execution_fail_node_1 = require("./services/workflow/nodes/execution-fail.node");
453
454
  const for_each_node_1 = require("./services/workflow/nodes/for-each.node");
454
455
  const http_request_node_1 = require("./services/workflow/nodes/http-request.node");
455
456
  const if_node_1 = require("./services/workflow/nodes/if.node");
456
457
  const log_write_node_1 = require("./services/workflow/nodes/log-write.node");
458
+ const loop_until_node_1 = require("./services/workflow/nodes/loop-until.node");
457
459
  const parallel_node_1 = require("./services/workflow/nodes/parallel.node");
458
460
  const runtime_python_node_1 = require("./services/workflow/nodes/runtime-python.node");
459
461
  const sequential_node_1 = require("./services/workflow/nodes/sequential.node");
@@ -935,10 +937,12 @@ exports.SolidCoreModule = SolidCoreModule = __decorate([
935
937
  workflow_definition_validator_service_1.WorkflowDefinitionValidatorService,
936
938
  workflow_node_registry_service_1.WorkflowNodeRegistryService,
937
939
  workflow_scheduled_trigger_job_1.WorkflowScheduledTriggerJobService,
940
+ execution_fail_node_1.ExecutionFailNode,
938
941
  log_write_node_1.LogWriteNode,
939
942
  http_request_node_1.HttpRequestNode,
940
943
  if_node_1.IfNode,
941
944
  for_each_node_1.ForEachNode,
945
+ loop_until_node_1.LoopUntilNode,
942
946
  parallel_node_1.ParallelNode,
943
947
  runtime_python_node_1.RuntimePythonNode,
944
948
  sequential_node_1.SequentialNode,