@gadmin2n/schematics 0.0.143 → 0.0.145

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 (279) hide show
  1. package/dist/lib/application/files/gadmin2-game-angle-demo/config/.types.d.ts +10 -0
  2. package/dist/lib/application/files/gadmin2-game-angle-demo/config/prisma/approval.prisma +2 -0
  3. package/dist/lib/application/files/gadmin2-game-angle-demo/config/prisma/workflow.prisma +140 -19
  4. package/dist/lib/application/files/gadmin2-game-angle-demo/server/package.json +2 -2
  5. package/dist/lib/application/files/gadmin2-game-angle-demo/server/seed/data-mngt.seed.ts +0 -2
  6. package/dist/lib/application/files/gadmin2-game-angle-demo/server/seed/workflow-node-types.ts +694 -327
  7. package/dist/lib/application/files/gadmin2-game-angle-demo/server/seed/workflow-outbox.ts +57 -0
  8. package/dist/lib/application/files/gadmin2-game-angle-demo/server/seed/workflow.seed.ts +35 -5
  9. package/dist/lib/application/files/gadmin2-game-angle-demo/server/seed/workflows.ts +224 -59
  10. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/codeRuntime/code-executor.spec.ts +23 -0
  11. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/codeRuntime/code-executor.ts +16 -5
  12. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/codeRuntime/code-runtime.controller.spec.ts +98 -0
  13. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/codeRuntime/code-runtime.controller.ts +26 -6
  14. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/codeRuntime/code-runtime.dto.ts +17 -2
  15. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/external-interaction-runtime.controller.spec.ts +1 -0
  16. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/external-interaction-runtime.controller.ts +3 -0
  17. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/external-interaction-runtime.dto.ts +0 -2
  18. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/external-interaction-signal-outbox.service.spec.ts +30 -0
  19. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/external-interaction-signal-outbox.service.ts +28 -6
  20. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/external-interaction.service.spec.ts +63 -0
  21. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/external-interaction.service.ts +151 -38
  22. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/external-wait.handler.ts +4 -1
  23. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/human-approval.handler.spec.ts +16 -5
  24. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/human-approval.handler.ts +23 -6
  25. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/httpRequest/http-request-runtime.controller.spec.ts +130 -0
  26. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/httpRequest/http-request-runtime.controller.ts +62 -62
  27. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/httpRequest/http-request-runtime.dto.ts +15 -1
  28. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/httpRequest/http-request-runtime.util.spec.ts +70 -9
  29. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/httpRequest/http-request-runtime.util.ts +31 -7
  30. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/approval-signal-outbox.service.spec.ts +30 -0
  31. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/approval-signal-outbox.service.ts +28 -6
  32. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/approval-subject-source.util.spec.ts +50 -3
  33. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/approval-subject-source.util.ts +26 -3
  34. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/human-approval.dto.ts +53 -47
  35. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/human-approval.errors.ts +0 -1
  36. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/human-approval.service.spec.ts +541 -0
  37. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/human-approval.service.ts +442 -200
  38. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/outbox-retry.util.ts +1 -0
  39. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/runtime/human-approval-runtime.controller.spec.ts +150 -0
  40. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/runtime/human-approval-runtime.controller.ts +56 -40
  41. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/runtime/human-approval-runtime.dto.ts +16 -60
  42. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/integrationConnection/integration-connection.controller.ts +13 -0
  43. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/integrationConnection/integration-connection.service.spec.ts +44 -0
  44. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/integrationConnection/integration-connection.service.ts +6 -0
  45. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/dsl-validate.util.spec.ts +258 -12
  46. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/dsl-validate.util.ts +127 -14
  47. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/manual-workflow-execution.spec.ts +85 -0
  48. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/manual-workflow-execution.ts +108 -0
  49. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/parameter-binding.ts +5 -5
  50. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/temporal.service.spec.ts +96 -25
  51. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/temporal.service.ts +77 -34
  52. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-callable.spec.ts +23 -34
  53. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-callable.ts +0 -21
  54. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-cancellation.spec.ts +245 -0
  55. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-compiler.service.spec.ts +639 -188
  56. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-compiler.service.ts +408 -235
  57. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-compiler.types.ts +1 -3
  58. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-data-edge.util.spec.ts +279 -95
  59. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-data-edge.util.ts +360 -80
  60. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-event-catalog.spec.ts +323 -0
  61. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-execution-idempotency.spec.ts +773 -0
  62. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-execution.dto.ts +7 -13
  63. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-export.dto.ts +0 -16
  64. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-export.service.spec.ts +184 -0
  65. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-export.service.ts +69 -138
  66. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-handle-validator.spec.ts +113 -0
  67. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-handle-validator.ts +59 -13
  68. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-runtime.facade.ts +86 -0
  69. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-switch-config.spec.ts +25 -0
  70. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-switch-config.ts +45 -0
  71. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow.controller.spec.ts +78 -43
  72. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow.controller.ts +103 -40
  73. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow.dto.ts +57 -0
  74. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow.module.ts +3 -1
  75. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow.service.spec.ts +1000 -240
  76. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow.service.ts +2184 -317
  77. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowConfig/node-config-validator.service.spec.ts +279 -2
  78. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowConfig/node-config-validator.service.ts +5 -1
  79. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowConfig/subject-config-validator.service.spec.ts +4 -1
  80. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowConfig/subject-config-validator.service.ts +5 -1
  81. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowConfig/widget-catalog.service.spec.ts +12 -3
  82. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowConfig/widget-catalog.service.ts +10 -1
  83. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowNodeInstance/workflowNodeInstance.service.spec.ts +2 -24
  84. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowNodeInstance/workflowNodeInstance.service.ts +3 -70
  85. package/dist/lib/application/files/gadmin2-game-angle-demo/web/package.json +3 -1
  86. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/RowActions.tsx +25 -5
  87. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/WorkflowActionButton.test.tsx +71 -0
  88. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/WorkflowActionButton.tsx +89 -0
  89. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/index.ts +1 -0
  90. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/layout/header.tsx +52 -12
  91. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/config/routeRegistry.tsx +12 -0
  92. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/constants/layout.ts +2 -2
  93. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/dev-shell/AddDataModal.tsx +10 -33
  94. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/dev-shell/AddPageModal.tsx +13 -37
  95. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/dev-shell/DevShell.tsx +55 -7
  96. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/dev-shell/style.css +14 -0
  97. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/http.ts +10 -0
  98. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/list.tsx +1 -0
  99. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/workflowAction.ts +19 -0
  100. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/index.ts +1 -0
  101. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/types.ts +3 -1
  102. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/useDynamicResources.tsx +1 -6
  103. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/useReferenceUpload.ts +95 -0
  104. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/locales/en/common.json +2 -2
  105. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/locales/en/workflow.json +672 -110
  106. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/locales/zh_CN/common.json +2 -2
  107. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/locales/zh_CN/workflow.json +676 -114
  108. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/plugins/devShellPlugin.ts +13 -1
  109. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/agenda/index.tsx +1 -0
  110. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/CanvasEditPage.tsx +38 -4
  111. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/CanvasListPage.tsx +276 -376
  112. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/CanvasAiModal.tsx +126 -6
  113. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/human-approval/DecisionModal.test.tsx +50 -0
  114. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/human-approval/DecisionModal.tsx +48 -11
  115. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/human-approval/inbox.tsx +32 -34
  116. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/business-events/RegisterBusinessEventModal.test.tsx +111 -0
  117. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/business-events/RegisterBusinessEventModal.tsx +167 -0
  118. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/business-events/business-events.css +99 -0
  119. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/business-events/detail.test.tsx +106 -0
  120. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/business-events/detail.tsx +324 -0
  121. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/business-events/index.test.tsx +73 -0
  122. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/business-events/index.tsx +359 -0
  123. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/CanvasZoomControls.tsx +46 -0
  124. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/CreateNodeInstanceDrawer.tsx +9 -1
  125. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/CustomNode.test.tsx +105 -4
  126. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/CustomNode.tsx +90 -48
  127. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/DeletableEdge.tsx +3 -2
  128. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/DslView.test.tsx +259 -0
  129. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/DslView.tsx +167 -103
  130. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/EnhancedFlowRenderer.tsx +142 -140
  131. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/ExecutionStatusNode.test.tsx +60 -15
  132. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/ExecutionStatusNode.tsx +25 -12
  133. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/FlowRenderer.tsx +364 -200
  134. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/NewNodeDefaults.test.tsx +220 -52
  135. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/NodeOutputSummary.test.tsx +260 -0
  136. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/NodeOutputSummary.tsx +300 -130
  137. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/NodePropertyPanel.test.tsx +507 -33
  138. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/NodePropertyPanel.tsx +630 -592
  139. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/ParameterBindingEditor.tsx +67 -70
  140. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/ReadonlyNodePanel.test.tsx +90 -0
  141. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/ReadonlyNodePanel.tsx +325 -0
  142. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/RunWorkflowModal.test.tsx +52 -0
  143. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/RunWorkflowModal.tsx +14 -9
  144. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/StatusCards.tsx +2 -1
  145. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/VersionPanel.tsx +2 -1
  146. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/WorkflowCodeEditor.test.tsx +42 -0
  147. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/WorkflowCodeEditor.tsx +76 -0
  148. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/WorkflowWorkspaceHeader.tsx +56 -0
  149. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/parameter-binding-editor.css +46 -0
  150. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/workflow-code-editor.css +34 -0
  151. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/connections/ConnectionModal.test.tsx +53 -7
  152. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/connections/ConnectionModal.tsx +123 -62
  153. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/connections/connections.css +85 -0
  154. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/connections/connectionsApi.ts +29 -0
  155. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/connections/index.test.tsx +75 -0
  156. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/connections/index.tsx +69 -36
  157. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/editor.test.tsx +494 -0
  158. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/editor.tsx +665 -194
  159. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/hooks/useReferencedNodeInstanceConfigs.test.tsx +92 -0
  160. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/hooks/useReferencedNodeInstanceConfigs.ts +96 -0
  161. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/hooks/useWorkflowAgent.test.tsx +297 -0
  162. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/hooks/useWorkflowAgent.ts +135 -65
  163. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/index.tsx +53 -42
  164. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/instance-detail.tsx +344 -155
  165. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/instances.tsx +79 -58
  166. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/components/CreateNodeInstanceModal.tsx +123 -144
  167. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/components/NodeInstanceForm.tsx +169 -98
  168. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/components/node-instance-form.css +91 -0
  169. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/index.tsx +54 -31
  170. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/node-config.css +854 -0
  171. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/schema-form/SchemaField.tsx +41 -14
  172. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/schema-form/SchemaForm.test.tsx +75 -0
  173. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/schema-form/SchemaForm.tsx +3 -0
  174. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/schema-form/default-widgets.tsx +20 -2
  175. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/schema-form/widget-registry.tsx +2 -1
  176. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/show.tsx +61 -66
  177. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/ApprovalRuleEditor.test.tsx +33 -1
  178. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/ApprovalRuleEditor.tsx +47 -15
  179. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/BranchConfigEditors.test.tsx +104 -0
  180. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/CallableInputParametersEditor.tsx +22 -52
  181. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/CodeConfigEditor.test.tsx +72 -0
  182. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/CodeConfigEditor.tsx +78 -70
  183. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/CronTriggerConfigEditor.tsx +569 -0
  184. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/DbExecuteConfigEditor.tsx +130 -0
  185. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/DelayConfigEditor.tsx +100 -0
  186. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/EventTriggerConfigEditor.tsx +620 -0
  187. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/ExternalRequestConfigEditor.test.tsx +22 -45
  188. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/ExternalRequestConfigEditor.tsx +25 -92
  189. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/ExternalWaitConfigEditor.tsx +3 -11
  190. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/ForEachConfigEditor.test.tsx +58 -0
  191. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/ForEachConfigEditor.tsx +107 -0
  192. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/HttpRequestConfigEditor.test.tsx +212 -31
  193. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/HttpRequestConfigEditor.tsx +214 -304
  194. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/HumanApprovalConfigEditor.test.tsx +175 -40
  195. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/HumanApprovalConfigEditor.tsx +693 -293
  196. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/IfElseConfigEditor.tsx +190 -0
  197. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/ManualTriggerConfigEditor.test.tsx +152 -0
  198. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/ManualTriggerConfigEditor.tsx +286 -0
  199. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/ParallelConfigEditor.tsx +101 -0
  200. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/ParameterBindingListEditor.tsx +99 -0
  201. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/SimplifiedNodeEditors.test.tsx +495 -0
  202. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/SubWorkflowConfigEditor.test.tsx +124 -0
  203. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/SubWorkflowConfigEditor.tsx +222 -0
  204. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/SubjectPicker.tsx +2 -4
  205. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/SwitchConfigEditor.tsx +204 -0
  206. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/UserGroupCreateModal.tsx +3 -1
  207. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/UserGroupEditModal.tsx +9 -6
  208. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/callable-workflow.ts +4 -0
  209. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/code-config.css +96 -0
  210. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/event-catalog.api.ts +117 -0
  211. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/http-request-config.css +242 -0
  212. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/human-approval-config.css +194 -0
  213. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/show.tsx +264 -167
  214. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/temporal-tenant/index.tsx +6 -9
  215. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/types/parameter-binding.ts +19 -16
  216. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/types.ts +28 -4
  217. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/useWorkflowFormValidation.test.tsx +59 -0
  218. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/useWorkflowFormValidation.ts +24 -0
  219. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/utils/forEachConnection.test.ts +311 -0
  220. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/utils/forEachConnection.ts +198 -0
  221. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/utils/mainFlowConnection.test.ts +143 -0
  222. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/utils/mainFlowConnection.ts +19 -0
  223. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/utils/newNodeConfig.ts +103 -5
  224. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/utils/removeWorkflowEdges.test.ts +158 -3
  225. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/utils/removeWorkflowEdges.ts +117 -9
  226. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/utils/resolveEffectiveOutput.test.ts +70 -0
  227. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/utils/resolveEffectiveOutput.ts +48 -0
  228. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/utils/resolveLookupPorts.test.ts +55 -0
  229. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/utils/resolveLookupPorts.ts +95 -22
  230. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/utils/resolveOutputs.test.ts +148 -1
  231. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/utils/resolveOutputs.ts +62 -11
  232. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/utils/resolveWorkflowDisplay.test.ts +19 -0
  233. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/utils/resolveWorkflowDisplay.ts +1 -1
  234. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/utils/subWorkflowChange.test.ts +45 -0
  235. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/utils/subWorkflowChange.ts +26 -0
  236. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/utils/validateWorkflowDsl.test.ts +502 -0
  237. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/utils/validateWorkflowDsl.ts +694 -0
  238. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/utils/workflowDateTime.test.ts +27 -0
  239. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/utils/workflowDateTime.ts +33 -0
  240. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/utils/workflowHistory.test.ts +34 -0
  241. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/utils/workflowHistory.ts +52 -0
  242. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/utils/workflowPublishError.test.ts +99 -0
  243. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/utils/workflowPublishError.ts +91 -0
  244. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/utils/workflowSkillPrompt.test.ts +74 -0
  245. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/utils/workflowSkillPrompt.ts +120 -0
  246. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/workflow-ui.css +481 -0
  247. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/styles/index.css +1 -1
  248. package/package.json +1 -1
  249. package/dist/lib/application/files/gadmin2-game-angle-demo/config/ui/WorkflowEventOutbox.ts +0 -62
  250. package/dist/lib/application/files/gadmin2-game-angle-demo/server/scripts/migrate-human-approval-configs.ts +0 -86
  251. package/dist/lib/application/files/gadmin2-game-angle-demo/server/seed/workflow-event-trigger.ts +0 -60
  252. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/human-approval.external-decision.spec.ts +0 -183
  253. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/legacy-approval-config-migration.ts +0 -227
  254. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-http-response.spec.ts +0 -82
  255. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-http-response.ts +0 -111
  256. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowEventOutbox/workflowEventOutbox.controller.spec.ts +0 -54
  257. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowEventOutbox/workflowEventOutbox.controller.ts +0 -147
  258. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowEventOutbox/workflowEventOutbox.module.ts +0 -10
  259. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowEventOutbox/workflowEventOutbox.service.spec.ts +0 -350
  260. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowEventOutbox/workflowEventOutbox.service.ts +0 -110
  261. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/audit/index.ts +0 -1
  262. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/InstanceRequiredDialog.tsx +0 -106
  263. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/LookupConnectionDialog.test.tsx +0 -45
  264. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/LookupConnectionDialog.tsx +0 -43
  265. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/NodeTypeBadge.tsx +0 -36
  266. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/hooks/useNodeInstanceLibrary.ts +0 -41
  267. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/ApproverSourceEditor.test.tsx +0 -47
  268. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/ApproverSourceEditor.tsx +0 -182
  269. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/ReturnResultConfigEditor.test.tsx +0 -34
  270. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/ReturnResultConfigEditor.tsx +0 -16
  271. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/approver-source.test.ts +0 -25
  272. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/approver-source.ts +0 -42
  273. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/utils/lookupConnection.test.ts +0 -208
  274. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/utils/lookupConnection.ts +0 -246
  275. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflowEventOutbox/create.tsx +0 -111
  276. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflowEventOutbox/edit.tsx +0 -127
  277. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflowEventOutbox/index.tsx +0 -4
  278. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflowEventOutbox/list.tsx +0 -282
  279. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflowEventOutbox/show.tsx +0 -74
@@ -10,11 +10,13 @@
10
10
  "create": "Create",
11
11
  "delete": "Delete",
12
12
  "description": "Description",
13
+ "disabled": "Disabled",
13
14
  "edit": "Edit",
14
15
  "enabled": "Enabled",
15
16
  "name": "Name",
16
17
  "optionalDescription": "Optional description",
17
18
  "refresh": "Refresh",
19
+ "retry": "Retry",
18
20
  "save": "Save",
19
21
  "search": "Search",
20
22
  "view": "View"
@@ -27,19 +29,28 @@
27
29
  "newConnection": "New Connection",
28
30
  "method": "Method",
29
31
  "path": "Path",
30
- "pathTemplateHint": "For dynamic path segments, write the source explicitly, for example",
31
- "templateOr": "or",
32
32
  "requestData": "Request data",
33
33
  "requestDataDescription": "For each API field, choose whether its value comes from the previous node, Workflow start data, or a fixed value.",
34
+ "approvalLookupRequestDataDescription": "Set the data used to look up approvers. Each field can read this approval node's input, Workflow start data, or a fixed value.",
35
+ "approvalExternalRequestDataDescription": "Set the data sent to the external approval system. Business input, approval runtime data, and Workflow start data each use a stable scope.",
36
+ "context": {
37
+ "approvalExternal": {
38
+ "input": "The result received by the approval node from the previous node.",
39
+ "workflow": "The original data received when the Workflow started.",
40
+ "approval": "The current approval task, including requestId, callbackToken, callbackUrl, task, and candidates."
41
+ }
42
+ },
34
43
  "queryParameters": "Query parameters",
35
44
  "addQueryParameter": "Add query parameter",
36
45
  "headers": "Headers",
37
46
  "addHeader": "Add header",
38
47
  "requestBody": "Request body",
48
+ "fieldCount": "{{count}} fields",
49
+ "fieldsMode": "Fields",
50
+ "jsonMode": "JSON",
39
51
  "advancedJson": "Advanced JSON",
40
52
  "useFields": "Use fields",
41
53
  "bodyJson": "Body JSON",
42
- "advancedJsonHint": "Advanced JSON also requires an explicit source, for example",
43
54
  "addBodyField": "Add body field",
44
55
  "executionPolicy": "Execution policy",
45
56
  "timeoutSeconds": "Timeout (seconds)",
@@ -48,15 +59,12 @@
48
59
  "retryInterval": "Retry interval (seconds)",
49
60
  "addField": "Add field",
50
61
  "key": "Key",
51
- "value": "Value",
62
+ "value": "Field value",
52
63
  "invalidJson": "Enter valid JSON.",
53
64
  "loadConnectionsFailed": "Unable to load Connections",
54
- "responseOut": "Response OUT",
55
- "responseReturned": "The complete HTTP response is returned",
56
- "responseDescription": "Response OUT contains status, data, and headers. Connect it to a Code node when fields need to be extracted or transformed.",
57
65
  "timeoutRetry": "Timeout and retry",
58
66
  "extraAttempts": "Extra attempts",
59
- "fieldName": "Name",
67
+ "fieldName": "API field name",
60
68
  "deleteField": "Delete {{name}}",
61
69
  "invalidJsonShort": "Invalid JSON",
62
70
  "formatJson": "Format JSON",
@@ -66,14 +74,13 @@
66
74
  "binding": {
67
75
  "sourceAria": "{{name}} value source",
68
76
  "pathAria": "{{name}} field path",
69
- "systemValueAria": "System value for {{name}}",
70
- "systemValuePlaceholder": "Choose system-provided data",
71
77
  "fixedTypeAria": "{{name}} fixed value type",
72
78
  "fixedValueAria": "{{name}} fixed value",
79
+ "invalid": "Enter a field path or a valid fixed value",
73
80
  "sources": {
74
81
  "input": "Previous node result",
75
82
  "workflow": "Workflow start data",
76
- "system": "System-provided",
83
+ "approval": "Current approval task",
77
84
  "fixed": "Fixed value"
78
85
  },
79
86
  "types": {
@@ -102,64 +109,101 @@
102
109
  "keyRequired": "Enter a parameter name",
103
110
  "duplicateKey": "Parameter names must be unique"
104
111
  },
105
- "systemData": {
106
- "callbackToken": "External result callback token",
107
- "approvalRequestId": "Approval request ID",
108
- "approvalCandidates": "Approval candidates",
109
- "approvalExpiresAt": "Approval deadline",
110
- "invocationId": "Invocation tracking ID",
111
- "callerWorkflowInstanceId": "Caller Workflow instance ID"
112
+ "manualInputs": {
113
+ "title": "Start parameters",
114
+ "description": "Declare the data required when this Workflow is run manually. Define parameters here; enter actual values when running it.",
115
+ "empty": "No start parameters. Manual runs do not require data until parameters are added.",
116
+ "key": "Parameter name",
117
+ "keyAria": "Start parameter {{number}} name",
118
+ "keyPlaceholder": "For example, user_id",
119
+ "type": "Type",
120
+ "typeAria": "{{name}} type",
121
+ "required": "Required",
122
+ "requiredAria": "{{name}}: required when run manually",
123
+ "label": "Display name",
124
+ "labelAria": "Start parameter {{number}} display name",
125
+ "labelPlaceholder": "For example, Applicant account",
126
+ "parameterDescription": "Description",
127
+ "descriptionAria": "Start parameter {{number}} description",
128
+ "descriptionPlaceholder": "Explain what this parameter is used for",
129
+ "add": "Add start parameter",
130
+ "remove": "Remove {{name}}",
131
+ "parameterNumber": "Parameter {{number}}",
132
+ "keyRequired": "Enter a parameter name",
133
+ "duplicateKey": "Parameter names must be unique",
134
+ "types": {
135
+ "string": "Text",
136
+ "number": "Number",
137
+ "boolean": "Yes / No",
138
+ "object": "Object",
139
+ "array": "Array"
140
+ }
112
141
  },
113
142
  "approval": {
114
- "workflow": "Approval method",
115
- "workflowDescription": "Use built-in approval tasks, or select a published internal Workflow that creates the external request, waits for the callback, and returns the decision.",
116
- "workflowInputs": "Approval Workflow inputs",
117
- "workflowInputsDescription": "Fill the business parameters declared by the selected Workflow. Each value can come from the previous node, Workflow start data, or a fixed value.",
118
- "required": "Required",
119
- "builtInInbox": "Built-in approval tasks (default)",
120
- "builtInInboxHint": "With no Workflow selected, approvers decide directly in the built-in task inbox.",
121
- "workflowHint": "This Human Approval node still owns approvers and rules. The selected Workflow creates the external request, waits for the callback, and returns the result.",
143
+ "externalSection": "External approval",
144
+ "externalSectionDescription": "Approvers can always act in GAdmin. Optionally send the same approval task to an external system as well.",
145
+ "enableExternal": "Also send to an external system",
146
+ "gadminOnlyHint": "This task is currently handled only from GAdmin Approval Tasks.",
147
+ "externalEnabledHint": "Approvers can approve or reject in GAdmin or the external system. Every decision is applied to the same approval task.",
148
+ "externalRequest": "Dispatch external approval",
149
+ "creationResult": "Validate dispatch response",
150
+ "callbackResult": "Transform callback result",
151
+ "taskSection": "GAdmin approval task",
152
+ "taskTitle": "Task title",
153
+ "taskDescription": "Task description",
154
+ "optional": "Optional",
155
+ "taskDetails": "Detail fields",
156
+ "taskDetailsDescription": "Show key information such as request number, amount, and applicant.",
157
+ "addTaskDetail": "Add field",
158
+ "noTaskDetails": "No detail fields",
159
+ "taskDetailLabel": "Name of detail field {{number}}",
160
+ "taskDetailPlaceholder": "For example: Request amount",
161
+ "removeTaskDetail": "Remove detail field {{number}}",
162
+ "taskDetailValue": "Field value",
122
163
  "whoCanApprove": "Who can approve",
123
- "description": "Choose fixed users and groups, or use a configured rule to find approvers automatically.",
164
+ "description": "Choose fixed approvers or call an API inside this node to look them up dynamically.",
124
165
  "fixedApprovers": "Fixed approvers",
125
- "automaticApprovers": "Find approvers automatically",
126
- "automaticApproversDescription": "Choose a published rule and the system will look up approvers when the Workflow runs.",
127
- "addAutomaticApprover": "Choose a rule, for example: Direct manager",
128
- "noAutomaticApprovers": "No automatic approver rules",
129
- "sourceLoadFailed": "Unable to load approver rules. Refresh and try again.",
130
- "unknownSource": "Approver rule #{{id}}",
131
166
  "approvedBranch": "Approved",
132
167
  "rejectedBranch": "Rejected",
133
- "noSourceParameters": "This rule does not require any input",
134
- "directLookup": "Canvas lookup",
135
- "directLookupHint": "Use this when the approval node should call nodes connected on the canvas.",
136
168
  "dynamicApprovers": "Dynamic approvers",
137
- "dynamicDescription": "Each source adds a clearly labelled lookup OUT and approver IN pair to AP on the canvas.",
138
- "addUsers": "Add users",
139
- "addGroups": "Add groups",
140
- "noDynamicInputs": "No dynamic approver inputs",
141
- "addDynamicHint": "Add one when AP should call an HTTP Request node to find user or group IDs.",
142
- "lookupDescription": "AP calls HR and accepts one ID or an array of IDs",
143
- "lookup": "Lookup",
144
- "resultType": "Result type",
145
- "users": "Users",
146
- "groups": "Groups",
147
- "deleteSource": "Delete source",
169
+ "addUsers": "Add dynamic users",
170
+ "addGroups": "Add dynamic user groups",
171
+ "noDynamicInputs": "No dynamic approvers added",
172
+ "lookupDescription": "Calls an API and transforms its response into one or more approver IDs",
173
+ "dynamicUsers": "Look up users",
174
+ "dynamicGroups": "Look up user groups",
175
+ "dynamicUserDefaultName": "Look up approvers",
176
+ "dynamicGroupDefaultName": "Look up approver groups",
177
+ "dynamicLookupName": "Lookup name",
178
+ "dynamicLookupNamePlaceholder": "For example: Find direct manager",
179
+ "lookupRequest": "Look up approvers",
180
+ "lookupResult": "Extract approvers",
148
181
  "approvalRule": "Approval rule",
149
182
  "ruleMode": "Rule mode",
150
183
  "people": "People",
151
184
  "percentage": "Percentage",
152
185
  "all": "All approvers",
153
186
  "any": "Any approver",
187
+ "anyApprove": "Any person approves",
188
+ "allApprove": "Everyone approves",
189
+ "countApprove": "A set number approve",
190
+ "percentageApprove": "A set percentage approve",
191
+ "anyReject": "Any person rejects",
192
+ "allReject": "Everyone rejects",
193
+ "countReject": "A set number reject",
194
+ "percentageReject": "A set percentage reject",
154
195
  "minimum": "Minimum approvals",
155
196
  "selectApprovers": "Select approvers",
156
- "userIds": "User IDs",
157
- "groupIds": "User group IDs",
158
197
  "remove": "Remove {{name}}",
159
- "decisionRules": "Decision rules",
198
+ "decisionRules": "Approval rules",
199
+ "decisionRulesDescription": "Set the conditions that approve or reject the task.",
160
200
  "approveWhen": "Approve when",
161
201
  "rejectWhen": "Reject when",
202
+ "cancellationPolicy": "Cancellation policy",
203
+ "cancellationPolicyDescription": "Choose whether business cancellation remains allowed after this approval is resolved.",
204
+ "blockCancellationOnResolved": "Block Workflow cancellation after approval or rejection",
162
205
  "timeout": "Timeout",
206
+ "timeoutDescription": "Choose how long the task waits and what happens when time runs out.",
163
207
  "neverTimeout": "Never timeout",
164
208
  "timeoutAfter": "Timeout after a set duration",
165
209
  "timeoutAmount": "Timeout amount",
@@ -175,7 +219,33 @@
175
219
  },
176
220
  "code": {
177
221
  "javascript": "JavaScript",
178
- "description": "Use input for the previous node result and workflow for the original start data. Return the value that should go to the next node.",
222
+ "context": {
223
+ "node": {
224
+ "input": "The result from the previous node.",
225
+ "workflow": "The original data received when the Workflow started.",
226
+ "return": "The returned value is passed to the next node."
227
+ },
228
+ "approverLookup": {
229
+ "input": "The result received by the approval node from the previous node.",
230
+ "workflow": "The original data received when the Workflow started.",
231
+ "response": "The approver lookup response: { status, data, headers }.",
232
+ "return": "Return { subjects: [{ provider, refs }] } to select approvers for this task."
233
+ },
234
+ "approvalCreation": {
235
+ "input": "The result received by the approval node from the previous node.",
236
+ "workflow": "The original data received when the Workflow started.",
237
+ "approval": "The current approval task and callback runtime data.",
238
+ "response": "The external approval creation response: { status, data, headers }.",
239
+ "return": "Used to validate creation and not passed to the next node. Throw an error when creation fails."
240
+ },
241
+ "approvalCallback": {
242
+ "input": "The result received by the approval node from the previous node.",
243
+ "workflow": "The original data received when the Workflow started.",
244
+ "approval": "The current approval task, including its candidates and task content.",
245
+ "callback": "The external callback already matched by callbackToken.",
246
+ "return": "Return a normalized decision used to resolve this approval."
247
+ }
248
+ },
179
249
  "executionLimits": "Execution limits",
180
250
  "runMode": "Run mode",
181
251
  "timeout": "Timeout (ms)",
@@ -184,18 +254,18 @@
184
254
  "runOnceEach": "Run once for each item",
185
255
  "timeoutMilliseconds": "Timeout (milliseconds)"
186
256
  },
187
- "returnResult": {
188
- "fixedTitle": "Returns the previous node result",
189
- "fixedHint": "This node ends the Workflow and returns the connected previous node result to the caller. It has no settings."
190
- },
191
257
  "connection": {
192
258
  "title": "Connections",
193
- "subtitle": "Reusable external system addresses and encrypted credentials.",
194
- "new": "New Connection",
195
- "search": "Search channel name",
196
- "empty": "No Connections yet",
197
- "secretStored": "Secret stored",
198
- "description": "Connection stores the system address and credentials. API Node Templates reuse it without copying secrets.",
259
+ "subtitle": "Manage external system addresses and encrypted credentials for reuse by Workflow nodes.",
260
+ "new": "New connection",
261
+ "search": "Search connection name or code",
262
+ "empty": "No connections yet",
263
+ "refresh": "Refresh",
264
+ "secretStored": "Credentials saved",
265
+ "description": "Connections store external system addresses and credentials for direct reuse by Workflow nodes.",
266
+ "noDescription": "No description",
267
+ "openAndEdit": "View and edit",
268
+ "openAria": "View and edit {{name}}",
199
269
  "code": "Code",
200
270
  "codeDescription": "Permanent reference used by Node Templates. It cannot be changed later.",
201
271
  "autoCode": "Auto-generated when blank",
@@ -219,48 +289,116 @@
219
289
  "testFailed": "Connection failed",
220
290
  "createSuccess": "Connection created",
221
291
  "updateSuccess": "Connection updated",
222
- "saveFailed": "Unable to save Connection",
223
- "loadFailed": "Unable to load Connections",
292
+ "saveFailed": "Unable to save connection",
293
+ "loadFailed": "Unable to load connections",
224
294
  "disabled": "Disabled",
225
- "edit": "Edit Connection",
226
- "createAndUse": "Create and use",
295
+ "edit": "Edit connection",
296
+ "create": "Create connection",
297
+ "saveChanges": "Save changes",
227
298
  "authentication": "Authentication",
228
299
  "basicAuthFull": "Username and password",
229
- "storedHint": "Credentials are already stored. Leave the secret fields blank to keep them unchanged.",
300
+ "basicInformation": "Basic information",
301
+ "credentials": "Authentication and credentials",
302
+ "requestDefaults": "Default request settings",
303
+ "storedHint": "Credentials are encrypted. Load them only when you need to view them.",
304
+ "showStoredSecret": "Show saved credentials",
305
+ "reloadStoredSecret": "Reload",
306
+ "secretLoaded": "Credentials loaded. Use the button in the field to reveal them.",
307
+ "secretLoadFailed": "Unable to load saved credentials",
230
308
  "keyName": "Key name",
231
309
  "sendIn": "Send in",
232
310
  "defaultHeaders": "Default headers (JSON)",
233
311
  "defaultHeadersInvalid": "Default headers must be a JSON object",
234
312
  "namePlaceholder": "Ticket system"
235
313
  },
314
+ "eventCatalog": {
315
+ "title": "Business event catalog",
316
+ "subtitle": "View, register, and manage business events that can trigger Workflows.",
317
+ "refresh": "Refresh",
318
+ "searchPlaceholder": "Search events or fields",
319
+ "resultCount": "{{count}} business events",
320
+ "event": "Business event",
321
+ "availableData": "Available data",
322
+ "subscribers": "Active Workflows",
323
+ "noSubscribers": "Not in use",
324
+ "latestDelivery": "Latest event",
325
+ "notTriggered": "Not triggered yet",
326
+ "detailEyebrow": "Business event details",
327
+ "identifier": "Event identifier",
328
+ "businessKey": "Default business identifier",
329
+ "instancesTitle": "Triggered runs",
330
+ "instancesLoadFailed": "Event run history could not be loaded",
331
+ "noInstances": "This business event has not triggered any Workflow runs",
332
+ "run": "Run",
333
+ "workflow": "Workflow",
334
+ "eventTriggered": "Event trigger",
335
+ "fieldCount": "{{count}} fields",
336
+ "defaultKey": "Default business identifier: {{field}}",
337
+ "fieldsTitle": "Data available to the Workflow",
338
+ "fieldsDescription": "After triggering, the first business node reads these fields from input. The whole Workflow can read the same startup data from workflow.",
339
+ "field": "Field",
340
+ "displayName": "Display name",
341
+ "type": "Type",
342
+ "requirement": "Data requirement",
343
+ "primaryKey": "Primary key",
344
+ "required": "Always provided",
345
+ "nullable": "May be empty",
346
+ "emptyTitle": "No database listeners are registered",
347
+ "emptyDescription": "Register a table, operation, and fields to monitor.",
348
+ "noMatchTitle": "No matching business events",
349
+ "noMatchDescription": "Adjust the search text.",
350
+ "loadFailed": "Business events could not be loaded. Refresh and try again.",
351
+ "deliveryStates": {
352
+ "pending": "Waiting for processing",
353
+ "delivered": "Processed",
354
+ "failed": "Processing failed"
355
+ },
356
+ "registration": {
357
+ "register": "Register business event",
358
+ "title": "Register database change",
359
+ "description": "Choose a table in the current PostgreSQL schema and an operation. UPDATE can watch selected fields; INSERT and DELETE watch the whole row. A PG Trigger writes the Workflow Outbox in the same transaction.",
360
+ "submit": "Register",
361
+ "cancel": "Cancel",
362
+ "success": "Database listener registered",
363
+ "registerFailed": "Registration failed. Try again.",
364
+ "source": "Database table",
365
+ "operation": "Operation",
366
+ "watchedFields": "Watched fields",
367
+ "allFields": "All fields",
368
+ "allFieldsHint": "INSERT and DELETE trigger whenever a row is inserted or deleted, and the event includes every field in that row.",
369
+ "sourceLoadFailed": "Database metadata could not be loaded",
370
+ "actions": "Actions",
371
+ "unregister": "Unregister",
372
+ "unregisterTitle": "Unregister {{event}}?",
373
+ "unregisterDescription": "This removes the PG Trigger. A listener still used by a Workflow cannot be removed.",
374
+ "unregisterConfirm": "Unregister",
375
+ "unregisterSuccess": "Database listener unregistered",
376
+ "unregisterFailed": "Unregister failed"
377
+ }
378
+ },
379
+ "validation": {
380
+ "required": "Enter or select ${label}",
381
+ "url": "Enter a valid ${label}"
382
+ },
236
383
  "externalRequest": {
237
- "description": "Calling this endpoint starts the current Workflow.",
238
- "workflowData": "The request body, query, and headers are available as workflow.body, workflow.query, and workflow.headers.",
239
384
  "endpoint": "External request endpoint",
385
+ "path": "Endpoint name",
386
+ "pathPlaceholder": "For example, order-paid",
387
+ "pathHint": "Use a recognizable business name with letters, numbers, hyphens, or underscores.",
240
388
  "endpointLoading": "Generating an externally reachable address...",
241
389
  "endpointLoadFailed": "Unable to generate the external request address. Configure the server's public Workflow address or network interface.",
242
390
  "copyEndpoint": "Copy endpoint",
243
391
  "copied": "Copied",
244
- "response": "How the call finishes",
245
- "respondImmediately": "Respond immediately",
246
- "respondImmediatelyHint": "Return 202 after starting the Workflow",
247
- "waitForResult": "Wait for Workflow result",
248
- "waitForResultHint": "Keep this request open until a Finish and return node is reached",
249
- "responseTimeout": "Maximum wait time",
250
- "seconds": "seconds",
251
392
  "verification": "Request verification",
252
393
  "signed": "Secure signature",
253
394
  "signedHint": "For systems that can generate the documented signature",
254
395
  "direct": "Direct receive",
255
396
  "directHint": "For MyOA and other systems that cannot sign requests",
256
- "directWarning": "Anyone who knows this endpoint can start the Workflow. Validate a callback credential in a later node before approving or changing data.",
257
397
  "signing": "Request signing",
258
398
  "signingHint": "Set X-Workflow-Timestamp to Unix seconds and X-Workflow-Signature to sha256=HEX(HMAC-SHA256(secret, \"{timestamp}.{rawBody}\")).",
259
399
  "regenerateSecret": "Regenerate signing secret"
260
400
  },
261
401
  "externalWait": {
262
- "description": "Wait for an external result",
263
- "hint": "This Workflow pauses until the callback matching callbackToken arrives or the wait times out.",
264
402
  "callbackToken": "Callback token",
265
403
  "deadline": "Use a supplied deadline",
266
404
  "duration": "Set a fixed maximum duration",
@@ -269,7 +407,7 @@
269
407
  "workflows": "Processing Workflows",
270
408
  "dispatchWorkflow": "Dispatch Workflow",
271
409
  "selectDispatchWorkflow": "Choose the Workflow that sends the external request",
272
- "dispatchHint": "It must start with Receive call and must not return a result.",
410
+ "dispatchHint": "It must start with Receive call.",
273
411
  "callbackWorkflow": "Callback Workflow (optional)",
274
412
  "selectCallbackWorkflow": "Choose a Workflow that starts with Receive external request",
275
413
  "callbackHint": "When selected, its public callback URL is automatically provided to the dispatch Workflow. Otherwise the dispatch Workflow may determine the URL.",
@@ -290,11 +428,210 @@
290
428
  "seconds": "seconds",
291
429
  "timeoutHint": "If no result arrives in time, the pipeline continues through the Timed out branch."
292
430
  },
431
+ "forEach": {
432
+ "items": "Items",
433
+ "execution": "Execution",
434
+ "sequential": "Process one at a time",
435
+ "parallel": "Process in parallel",
436
+ "concurrency": "Maximum concurrent items",
437
+ "failure": "When an item fails",
438
+ "stop": "Stop processing new items",
439
+ "continue": "Record the failure and continue"
440
+ },
441
+ "nodeEditors": {
442
+ "cron": {
443
+ "frequency": "Frequency",
444
+ "frequencyPlaceholder": "Select a frequency",
445
+ "frequencies": {
446
+ "HOURLY": "Every hour",
447
+ "DAILY": "Every day",
448
+ "WEEKDAYS": "Every weekday",
449
+ "WEEKLY": "Every week",
450
+ "MONTHLY": "Every month",
451
+ "YEARLY": "Selected months each year"
452
+ },
453
+ "times": "Run times",
454
+ "timeNumber": "Run time {{number}}",
455
+ "addTime": "Add run time",
456
+ "removeTime": "Remove run time {{number}}",
457
+ "minute": "Minutes within each hour",
458
+ "minuteOption": "At minute {{minute}} of every hour",
459
+ "weekday": "Run day",
460
+ "weekdays": {
461
+ "0": "Sunday",
462
+ "1": "Monday",
463
+ "2": "Tuesday",
464
+ "3": "Wednesday",
465
+ "4": "Thursday",
466
+ "5": "Friday",
467
+ "6": "Saturday"
468
+ },
469
+ "monthDay": "Run day",
470
+ "monthDayOption": "Day {{day}} of each month",
471
+ "months": "Run months",
472
+ "monthOption": "{{month}}",
473
+ "yearMonthDayOption": "Day {{day}}",
474
+ "chooseNewSchedule": "Select a new frequency to replace the current schedule.",
475
+ "timezone": "Time zone",
476
+ "timezonePlaceholder": "Select a time zone",
477
+ "timezoneHint": "The workflow will run at the local time of the selected region.",
478
+ "timezones": {
479
+ "Asia/Shanghai": "China Standard Time",
480
+ "Asia/Singapore": "Singapore Time",
481
+ "Asia/Tokyo": "Japan Time",
482
+ "Europe/London": "United Kingdom Time",
483
+ "America/New_York": "US Eastern Time",
484
+ "UTC": "Coordinated Universal Time"
485
+ }
486
+ },
487
+ "delay": {
488
+ "duration": "Wait for a duration",
489
+ "until": "Wait until a specific time",
490
+ "amount": "Duration",
491
+ "unit": "Time unit",
492
+ "resumeAt": "Resume time",
493
+ "units": {
494
+ "SECONDS": "Seconds",
495
+ "MINUTES": "Minutes",
496
+ "HOURS": "Hours",
497
+ "DAYS": "Days"
498
+ }
499
+ },
500
+ "parallel": {
501
+ "branches": "Parallel branches",
502
+ "description": "Add the work that should run at the same time. Each item is an independent branch, and at least two branches are required.",
503
+ "branch": "Branch {{number}}",
504
+ "branchName": "Branch name",
505
+ "branchNameWithNumber": "Branch name {{number}}",
506
+ "branchNamePlaceholder": "For example: Send notification",
507
+ "branchNameHelp": "Describe the work handled by this branch, such as “Send notification”. The name identifies the branch on the canvas and in execution results.",
508
+ "addBranch": "Add branch",
509
+ "deleteBranch": "Delete branch {{number}}"
510
+ },
511
+ "subWorkflow": {
512
+ "target": "Workflow to call",
513
+ "select": "Select a callable Workflow",
514
+ "version": "Version",
515
+ "selectVersion": "Select a published version",
516
+ "versionLabel": "v{{version}}",
517
+ "latestVersionLabel": "v{{version}} · Latest",
518
+ "newerVersionAvailable": "This selection stays fixed. The latest version is v{{version}}.",
519
+ "loadFailed": "Callable Workflows could not be loaded. Refresh and try again.",
520
+ "noParameters": "This Workflow does not require call parameters"
521
+ },
522
+ "event": {
523
+ "businessEvent": "Business event",
524
+ "selectEvent": "Select a registered business event",
525
+ "loadFailed": "Business events could not be loaded. Refresh and try again.",
526
+ "empty": "No business events are registered",
527
+ "startCondition": "Start conditions",
528
+ "alwaysStart": "Start for every event",
529
+ "conditionalStart": "Start when conditions match",
530
+ "matchAll": "Match all conditions",
531
+ "matchAny": "Match any condition",
532
+ "conditionField": "Field for condition {{number}}",
533
+ "conditionOperator": "Comparison for condition {{number}}",
534
+ "conditionValue": "Value for condition {{number}}",
535
+ "selectConditionField": "Select a field",
536
+ "newDataField": "New data · {{field}}",
537
+ "oldDataField": "Previous data · {{field}}",
538
+ "primaryKeyField": "Primary key · {{field}}",
539
+ "addCondition": "Add condition",
540
+ "deleteCondition": "Delete condition {{number}}",
541
+ "booleanTrue": "Yes",
542
+ "booleanFalse": "No",
543
+ "matchOperators": {
544
+ "EQ": "Equals",
545
+ "NEQ": "Does not equal",
546
+ "EMPTY": "Is empty",
547
+ "NOT_EMPTY": "Is not empty"
548
+ },
549
+ "processing": "Event processing",
550
+ "parallel": "Process in parallel",
551
+ "parallelDescription": "Start every independent event immediately",
552
+ "serial": "Keep the same business object in order",
553
+ "serialDescription": "Process the same object in order while other objects continue",
554
+ "businessKey": "Field that identifies the business object",
555
+ "selectBusinessKey": "Select a field",
556
+ "primaryKey": "Primary key",
557
+ "sameKeyPreview": "Events with the same {{field}} are processed in arrival order",
558
+ "advanced": "Advanced settings",
559
+ "maxConcurrency": "Maximum concurrent objects"
560
+ },
561
+ "database": {
562
+ "sql": "SQL statement",
563
+ "allowWrite": "Allow writes",
564
+ "readOnlyDescription": "When off, this node can only query data.",
565
+ "readWriteDescription": "When on, this node can query, insert, update, or delete data.",
566
+ "readOnlyError": "This node only allows one read-only query.",
567
+ "readWriteError": "Only one query, insert, update, or delete statement is allowed.",
568
+ "parameters": "Parameter values",
569
+ "parameter": "Parameter",
570
+ "value": "Value",
571
+ "parametersHint": "Values are used by $1, $2, and so on in order.",
572
+ "addParameter": "Add parameter value",
573
+ "timeout": "Timeout",
574
+ "seconds": "seconds"
575
+ },
576
+ "ifElse": {
577
+ "matchAll": "Match every condition",
578
+ "matchAny": "Match any condition",
579
+ "condition": "Condition {{number}}",
580
+ "leftValue": "Value to check",
581
+ "rightValue": "Value to compare with",
582
+ "operator": "Comparison",
583
+ "addCondition": "Add condition",
584
+ "deleteCondition": "Delete condition {{number}}",
585
+ "operators": {
586
+ "EQ": "Equals",
587
+ "NEQ": "Does not equal",
588
+ "GT": "Greater than",
589
+ "GTE": "Greater than or equal",
590
+ "LT": "Less than",
591
+ "LTE": "Less than or equal",
592
+ "CONTAINS": "Contains",
593
+ "NOT_CONTAINS": "Does not contain",
594
+ "EMPTY": "Is empty",
595
+ "NOT_EMPTY": "Is not empty"
596
+ }
597
+ },
598
+ "switch": {
599
+ "value": "Value to evaluate",
600
+ "rules": "Branch rules",
601
+ "case": "Branch {{number}}",
602
+ "label": "Branch name",
603
+ "valueType": "Match value type",
604
+ "matchValue": "Match value",
605
+ "whenValueEquals": "When the value equals",
606
+ "thenEnterBranch": "Continue through branch",
607
+ "addCase": "Add branch",
608
+ "deleteCase": "Delete branch {{number}}",
609
+ "defaultBranchTitle": "Other cases",
610
+ "defaultBranch": "Continue here when no branch matches."
611
+ }
612
+ },
293
613
  "nodeInstance": {
294
614
  "title": "Node instances",
295
615
  "management": "Node instance management",
616
+ "managementDescription": "Maintain reusable node configurations shared across Workflows.",
617
+ "searchPlaceholder": "Search by instance name",
618
+ "enabled": "Node instance enabled",
619
+ "disabled": "Node instance disabled",
620
+ "deleted": "Node instance deleted",
621
+ "deleteFailed": "Failed to delete node instance",
622
+ "enableConfirm": "Enable this node instance?",
623
+ "disableConfirm": "Disable this node instance?",
624
+ "detailDescription": "Review this reusable configuration and the Workflows that reference it.",
625
+ "referencesLoadFailed": "References could not be loaded",
626
+ "createdAt": "Created",
627
+ "noConfiguration": "This instance has no configuration",
628
+ "referencedBy": "Referenced by",
629
+ "noReferences": "No Workflows reference this instance",
630
+ "node": "Node",
296
631
  "new": "New Instance",
297
632
  "create": "Create Node Instance",
633
+ "createDescription": "Create a reusable node configuration that can be used across Workflows.",
634
+ "editDescription": "Update the instance details and parameters used by Workflows that reference it.",
298
635
  "createAndUse": "Create and use",
299
636
  "createAndUseDescription": "This creates a reusable Node Instance and immediately adds it to the current workflow.",
300
637
  "instanceName": "Instance name",
@@ -305,14 +642,31 @@
305
642
  "instanceNameExample": "e.g. Send Slack to #general",
306
643
  "recordNotFound": "Record not found",
307
644
  "basicInfo": "Basic Info",
645
+ "basicInfoDescription": "Choose a node type and add details that make this instance easy to recognize and reuse.",
646
+ "parametersDescription": "Configure the parameters used when {{name}} runs in a Workflow.",
647
+ "parametersPendingDescription": "Configuration fields will appear after you choose a node type.",
648
+ "parametersPending": "Choose a node type to continue",
308
649
  "deleteConfirm": "Delete this instance?",
309
650
  "deleteWarning": "This action cannot be undone.",
310
- "noEnabled": "No enabled instances yet. Create one here to continue.",
311
- "useInstance": "Use instance",
312
- "useInline": "Use inline config",
313
651
  "instanceRequired": "This node requires a Node Instance",
314
652
  "aiCreate": "AI Create Node Instance",
315
653
  "describe": "Describe your node instance",
654
+ "promptPlaceholderDefault": "Select a node type, then describe what this instance should do...",
655
+ "promptPlaceholders": {
656
+ "TRIGGER": "e.g. Trigger every weekday at 9am Shanghai time",
657
+ "ACTION": "e.g. Send a POST request to https://api.example.com/notify with the order data",
658
+ "CONDITION": "e.g. Check if order.amount > 1000 AND order.status is \"pending\"",
659
+ "FLOW_CONTROL": "e.g. Wait 30 seconds, iterate over items, or run branches in parallel",
660
+ "APPROVAL": "e.g. Wait for manager@company.com to approve, timeout after 24 hours",
661
+ "SUB_WORKFLOW": "e.g. Call the \"order-processing\" Workflow and wait for its return value"
662
+ },
663
+ "promptRequired": "Please describe what this node instance should do",
664
+ "invalidJson": "Invalid JSON format. Expected: { \"name\": \"...\", \"description\": \"...\", \"config\": {...} }",
665
+ "generate": "Generate",
666
+ "applyJson": "Apply JSON",
667
+ "regenerate": "Re-generate",
668
+ "confirmCreate": "Confirm & Create",
669
+ "generatedDetail": "Name: {{name}}. Config has {{count}} fields.",
316
670
  "waitingAgent": "Waiting for Agent...",
317
671
  "agentHint": "Continue your conversation with the Agent in the chat panel. Once it outputs valid JSON, it will be captured automatically. Or paste JSON below manually.",
318
672
  "jsonResult": "JSON Result",
@@ -324,7 +678,6 @@
324
678
  "createNamed": "Create {{name}} instance",
325
679
  "nameRequired": "Instance name is required",
326
680
  "nameExample": "e.g. {{name}} for approvals",
327
- "chooseNamed": "Choose {{name}} instance",
328
681
  "instanceCode": "Instance {{code}}",
329
682
  "nodeTypeRequired": "Select a node type",
330
683
  "overwriteTitle": "Replace current content",
@@ -338,10 +691,18 @@
338
691
  "edit": "Edit node instance"
339
692
  },
340
693
  "editor": {
694
+ "workspaceEyebrow": "Workflow design",
341
695
  "unsaved": "Unsaved",
342
696
  "aiGenerate": "Generate with AI",
343
697
  "save": "Save Workflow",
698
+ "replaceDraftTitle": "Replace the saved draft?",
699
+ "replaceDraftContent": "Save published version v{{version}} as the current draft. This replaces the existing draft without changing the published version.",
700
+ "replaceDraftConfirm": "Replace draft",
344
701
  "clear": "Clear",
702
+ "undo": "Undo",
703
+ "redo": "Redo",
704
+ "fitCanvas": "Fit canvas",
705
+ "zoomPercentage": "Canvas zoom {{percentage}}%",
345
706
  "workflowName": "Workflow Name",
346
707
  "workflowNamePlaceholder": "Enter workflow name",
347
708
  "aiDescription": "Describe the whole workflow in natural language and AI will generate a visual flow.",
@@ -351,35 +712,59 @@
351
712
  "nodeConfiguration": "Node configuration",
352
713
  "nodeType": "Node type",
353
714
  "nodeName": "Node name",
715
+ "unsavedChanges": "Unsaved changes",
354
716
  "configurationTab": "Configuration",
355
717
  "aiEditTab": "AI edit",
356
718
  "deleteNode": "Delete node",
357
719
  "dragNodes": "Drag nodes to the canvas",
720
+ "addNode": "Add a node",
721
+ "searchNodes": "Search nodes by name or purpose",
722
+ "noMatchingNodes": "No matching nodes",
723
+ "nodeTypesLoadFailed": "Node types could not be loaded.",
724
+ "instanceLoadFailed": "Templates could not be loaded.",
725
+ "templateConfigLoading": "Syncing node template configuration",
726
+ "templateConfigLoadingShort": "Template syncing; ports are unavailable",
727
+ "templateConfigLoadingHint": "Wait for synchronization before editing node settings or saving the Workflow.",
728
+ "templateConfigLoadFailed": "Unable to load node template configuration",
729
+ "templateConfigLoadFailedHint": "The effective node configuration cannot be confirmed. Retry before connecting ports or saving the Workflow.",
730
+ "templateConfigUnavailable": "Template unavailable; ports are locked",
731
+ "callableCatalogLoadingHint": "The callable Workflow catalog is still loading. Try again shortly.",
732
+ "callableCatalogLoadFailed": "Unable to load the callable Workflow catalog. Retry before continuing.",
733
+ "dslValidationFailed": "Invalid Workflow configuration: {{- error}}",
358
734
  "add": "Add",
359
- "reuseInstance": "Reuse existing instance",
360
- "loadingInstances": "Loading instances…",
361
- "noInstances": "No instances available",
362
- "selectInstance": "Select an instance",
363
- "referenceInstance": "Reference instance",
364
- "copyInstanceConfig": "Load configuration",
365
- "referencedInstance": "Referenced instance",
735
+ "template": "Node template",
736
+ "templateOptional": "Use a template or configure this node directly",
737
+ "createTemplate": "New template",
738
+ "selectTemplate": "Select a template",
739
+ "noTemplates": "No templates available",
740
+ "loadingInstances": "Loading templates…",
741
+ "referencedInstance": "Using template",
366
742
  "detach": "Detach reference",
367
743
  "referenceHint": "Changes apply only to this Workflow.",
368
744
  "label": "Display name",
369
745
  "config": "Configuration",
370
746
  "parameters": "Node parameters",
747
+ "indentSpaces": "Spaces",
371
748
  "output": {
372
- "title": "Output (read-only)",
373
- "hint": "The next node reads this data through input",
374
- "flowBranches": "Flow branches",
375
- "required": "Always",
749
+ "title": "Output",
750
+ "passthrough": "Passed through from",
751
+ "inputHint": "The next node can use these input paths; click to copy",
752
+ "parallelBranchResult": "Complete result returned by “{{name}}”",
753
+ "copyPath": "Copy path",
754
+ "pathCopied": "Copied",
755
+ "nestedFields": "Readable fields",
756
+ "required": "Always returned",
376
757
  "branchLabels": {
377
758
  "approved": "Approved",
378
759
  "rejected": "Rejected",
379
760
  "matched": "Condition met",
380
761
  "notMatched": "Condition not met",
381
- "received": "Received",
382
- "timedOut": "Timed out"
762
+ "received": "External result received",
763
+ "timedOut": "Wait timed out",
764
+ "allDone": "All complete",
765
+ "parallelBranch": "Enter parallel branch",
766
+ "allBranchesDone": "All branches complete",
767
+ "other": "Other"
383
768
  },
384
769
  "types": {
385
770
  "any": "Any value",
@@ -391,16 +776,91 @@
391
776
  "object": "Object",
392
777
  "string": "Text"
393
778
  },
779
+ "fieldLabels": {
780
+ "webhook_trigger": {
781
+ "body": "Request body",
782
+ "headers": "Request headers",
783
+ "query": "Query parameters",
784
+ "receivedAt": "Received at"
785
+ },
786
+ "http_request": {
787
+ "status": "Response status",
788
+ "data": "Response data",
789
+ "headers": "Response headers"
790
+ },
791
+ "db_execute": {
792
+ "rows": "Query results",
793
+ "rowCount": "Result row count",
794
+ "affectedRows": "Affected rows",
795
+ "insertedId": "Inserted record ID"
796
+ },
797
+ "for_each": {
798
+ "results": "Processing results",
799
+ "total": "Total items",
800
+ "succeeded": "Successful items",
801
+ "failed": "Failed items"
802
+ },
803
+ "parallel": {
804
+ "branch": "Branch results"
805
+ },
806
+ "approval": {
807
+ "previous": "Data received before approval",
808
+ "result": "This approval's outcome"
809
+ },
810
+ "external_wait": {
811
+ "previous": "Data received before waiting",
812
+ "result": "Result returned externally"
813
+ }
814
+ },
815
+ "fields": {
816
+ "webhook_trigger": {
817
+ "body": "",
818
+ "headers": "",
819
+ "query": "",
820
+ "receivedAt": ""
821
+ },
822
+ "http_request": {
823
+ "status": "For example, 200",
824
+ "data": "",
825
+ "headers": ""
826
+ },
827
+ "db_execute": {
828
+ "rows": "Returned for queries",
829
+ "rowCount": "",
830
+ "affectedRows": "",
831
+ "insertedId": "Returned only for inserts"
832
+ },
833
+ "for_each": {
834
+ "results": "Result for each item",
835
+ "total": "",
836
+ "succeeded": "",
837
+ "failed": ""
838
+ },
839
+ "parallel": {
840
+ "branch": "Collected in configured branch order, starting at index 0"
841
+ },
842
+ "approval": {
843
+ "previous": "",
844
+ "result": "Includes the approver and completion time"
845
+ },
846
+ "external_wait": {
847
+ "previous": "",
848
+ "result": "Contains timeout details when the wait expires"
849
+ }
850
+ },
394
851
  "dynamic": {
395
- "workflowData": "Passes through the Workflow start data. The next node reads the complete value through input.",
396
- "codeReturn": "Determined by the code return value. The next node reads the complete value through input.",
397
- "workflowReturn": "Passes through the called Workflow result. Its structure is defined by the target Workflow.",
398
- "returnPrevious": "Returns the complete previous-node result to the caller and ends this Workflow.",
399
- "anyValue": "The structure is determined at runtime. The next node reads the complete value through input."
852
+ "scheduledStart": "Data received when the schedule starts this Workflow",
853
+ "manualStart": "Data entered when this Workflow is run manually",
854
+ "callerInput": "Data passed by the caller",
855
+ "eventData": "Event data that started this run",
856
+ "codeReturn": "The value returned by the code",
857
+ "workflowReturn": "The result returned by the called Workflow",
858
+ "previousResult": "Passes through the previous result",
859
+ "anyValue": "Output is determined at runtime"
400
860
  }
401
861
  },
402
- "saveAsInstance": "Also save as a node instance",
403
- "instanceNamePlaceholder": "Instance name (required)",
862
+ "saveAsInstance": "Also save as a template",
863
+ "instanceNamePlaceholder": "Template name (required)",
404
864
  "aiEditHint": "Describe what to change",
405
865
  "aiEditPlaceholder": "For example: change the timeout to 30 minutes",
406
866
  "send": "Send",
@@ -416,9 +876,39 @@
416
876
  "saveFailed": "Save failed",
417
877
  "versionLoadFailed": "Failed to load version",
418
878
  "selectVersion": "Select version",
879
+ "viewMode": "View",
419
880
  "dsl": "DSL",
420
881
  "canvas": "Canvas"
421
882
  },
883
+ "viewer": {
884
+ "scheduleStatus": {
885
+ "active": "Schedule active",
886
+ "paused": "Schedule paused",
887
+ "missing": "Schedule not synchronized",
888
+ "unavailable": "Schedule status unavailable"
889
+ },
890
+ "savedDraft": "Saved draft",
891
+ "noChangesToPublish": "There are no draft changes to publish",
892
+ "publishSavedDraft": "Publish the saved draft",
893
+ "workspaceEyebrow": "Workflow overview",
894
+ "copyDsl": "Copy DSL",
895
+ "compareVersions": "Compare versions",
896
+ "versionComparison": "Version comparison",
897
+ "selectOlderVersion": "Select older version",
898
+ "selectNewerVersion": "Select newer version",
899
+ "aiExplain": "Explain with AI",
900
+ "nodeDetails": "Node details",
901
+ "nodeInstance": "Node instance",
902
+ "readableView": "Readable view",
903
+ "advancedConfig": "Advanced configuration",
904
+ "nodeParameters": "Node parameters",
905
+ "noParameters": "This node has no parameters to configure.",
906
+ "noTemplate": "No node template is used",
907
+ "rawNodeConfig": "Raw node configuration",
908
+ "rawNodeHint": "Use this to troubleshoot or copy the complete DSL node data",
909
+ "copyJson": "Copy JSON",
910
+ "copied": "Node JSON copied"
911
+ },
422
912
  "run": {
423
913
  "title": "Run Workflow",
424
914
  "run": "Run",
@@ -482,11 +972,13 @@
482
972
  },
483
973
  "list": {
484
974
  "title": "Workflows",
975
+ "subtitle": "Design, publish, and monitor business processes.",
485
976
  "new": "New Workflow",
486
977
  "fetchFailed": "Failed to fetch workflows",
487
978
  "deleted": "Workflow deleted",
488
979
  "published": "Workflow published!",
489
980
  "publishFailed": "Publish failed",
981
+ "publishFailedHint": "Publication checks failed. Update the Workflow using the details below.",
490
982
  "publish": "Publish",
491
983
  "publishTitle": "Publish Workflow",
492
984
  "runHistory": "Run History",
@@ -496,17 +988,89 @@
496
988
  "completed": "Completed",
497
989
  "running": "Running",
498
990
  "failed": "Failed",
499
- "publishedStatus": "Published"
991
+ "publishedStatus": "Published",
992
+ "status": "Status",
993
+ "version": "Version",
994
+ "runs": "Runs",
995
+ "lastRun": "Last run",
996
+ "updatedAt": "Updated",
997
+ "actions": "Actions",
998
+ "import": "Import",
999
+ "searchPlaceholder": "Search by name",
1000
+ "total": "{{count}} total",
1001
+ "deleteDescription": "Related versions and run records will also be deleted.",
1002
+ "publishDescription": "Describe this release:",
1003
+ "publishPlaceholder": "Summarize what changed…",
1004
+ "enabledSuccess": "Workflow enabled",
1005
+ "disabledSuccess": "Workflow disabled"
1006
+ },
1007
+ "workflowStatus": {
1008
+ "draft": "Draft",
1009
+ "published": "Published",
1010
+ "deleting": "Deleting"
1011
+ },
1012
+ "instances": {
1013
+ "title": "{{name}} · Run history",
1014
+ "subtitle": "Review the status, duration, and initiator of every run.",
1015
+ "loadFailed": "Run history could not be loaded",
1016
+ "workflowLoadFailed": "The Workflow name could not be loaded; run records are still available.",
1017
+ "status": "Status",
1018
+ "startedAt": "Started",
1019
+ "finishedAt": "Finished",
1020
+ "duration": "Duration",
1021
+ "creator": "Initiator",
1022
+ "executionSource": "Execution source",
1023
+ "initialRun": "Initial run",
1024
+ "resumedFrom": "Resumed from #{{id}}",
1025
+ "detail": "View details",
1026
+ "allStatuses": "All statuses",
1027
+ "statuses": {
1028
+ "pending": "Pending",
1029
+ "running": "Running",
1030
+ "completed": "Completed",
1031
+ "failed": "Failed",
1032
+ "cancelled": "Cancelled"
1033
+ }
1034
+ },
1035
+ "instanceDetail": {
1036
+ "eyebrow": "Run details",
1037
+ "title": "{{name}} · Run #{{id}}",
1038
+ "openTemporal": "Open in Temporal",
1039
+ "cancel": "Cancel run",
1040
+ "executionDetails": "Run information",
1041
+ "result": "Final result",
1042
+ "retryAll": "Run entire Workflow again",
1043
+ "retryAllConfirm": "Run the entire Workflow again?",
1044
+ "retryAllDescription": "The Workflow will start from the beginning and may repeat operations that already succeeded.",
1045
+ "retryAllStarted": "The full Workflow retry has started",
1046
+ "retryFromNode": "Retry from here",
1047
+ "retryFromNodeConfirm": "Run again from “{{name}}”?",
1048
+ "retryFromNodeDescription": "Successful earlier results will be reused and the failed run will be kept.",
1049
+ "retryFromNodeStarted": "Retry started from the failed node",
1050
+ "retryFromNodeFailed": "Unable to retry from this node",
1051
+ "viewRetryAttempt": "View retry #{{id}}",
1052
+ "retrySource": "Resumed from",
1053
+ "reusedResults": "Earlier results",
1054
+ "reusedResultsCount": "Reused results from {{count}} successful nodes",
1055
+ "reusedResult": "Reused earlier result",
1056
+ "reusedResultDescription": "This node succeeded earlier, so its result was reused for this run."
500
1057
  },
501
1058
  "nodeTypeBadge": "{{type}} node",
1059
+ "nodeCategories": {
1060
+ "TRIGGER": "Start the Workflow",
1061
+ "ACTION": "Perform an action",
1062
+ "CONDITION": "Decisions and branches",
1063
+ "FLOW_CONTROL": "Flow control",
1064
+ "APPROVAL": "Human approval",
1065
+ "SUB_WORKFLOW": "Workflow calls"
1066
+ },
502
1067
  "nodeTypes": {
503
1068
  "approval": "Human Approval",
504
1069
  "code": "Code",
505
1070
  "cron_trigger": "Schedule Trigger",
506
- "db_execute": "Database Write",
507
- "db_query": "Database Query",
1071
+ "db_execute": "Database Operation",
508
1072
  "delay": "Timed Wait",
509
- "event_trigger": "Event Trigger",
1073
+ "event_trigger": "Business Event Trigger",
510
1074
  "for_each": "For Each",
511
1075
  "http_request": "HTTP Request",
512
1076
  "if_else": "If / Else",
@@ -516,7 +1080,6 @@
516
1080
  "switch": "Switch",
517
1081
  "webhook_trigger": "Receive external request",
518
1082
  "callable_trigger": "Receive call",
519
- "return_result": "Return to caller",
520
1083
  "external_wait": "Wait for external result"
521
1084
  },
522
1085
  "schema": {
@@ -527,6 +1090,7 @@
527
1090
  "remove": "Remove {{label}} {{index}}",
528
1091
  "fields": {
529
1092
  "connectionRef": "Connection",
1093
+ "sql": "SQL statement",
530
1094
  "method": "Method",
531
1095
  "path": "Path",
532
1096
  "inputParameters": "Request parameters",
@@ -539,8 +1103,6 @@
539
1103
  "retryInterval": "Retry interval",
540
1104
  "script": "Script",
541
1105
  "mode": "Mode",
542
- "approvalWorkflowId": "Approval Workflow ID",
543
- "approverSources": "Automatic approvers",
544
1106
  "subjects": "Approvers",
545
1107
  "approvalRule": "Approval rule",
546
1108
  "rejectionRule": "Rejection rule",