@gadmin2n/schematics 0.0.138 → 0.0.140

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 (314) hide show
  1. package/dist/lib/application/files/gadmin2-game-angle-demo/Jenkinsfile +6 -34
  2. package/dist/lib/application/files/gadmin2-game-angle-demo/config/prisma/approval.prisma +199 -0
  3. package/dist/lib/application/files/gadmin2-game-angle-demo/config/prisma/system.prisma +9 -0
  4. package/dist/lib/application/files/gadmin2-game-angle-demo/config/prisma/workflow.prisma +191 -14
  5. package/dist/lib/application/files/gadmin2-game-angle-demo/gitignore +6 -5
  6. package/dist/lib/application/files/gadmin2-game-angle-demo/readme.md +10 -3
  7. package/dist/lib/application/files/gadmin2-game-angle-demo/server/migrate-between-pg-schemas.js +6 -4
  8. package/dist/lib/application/files/gadmin2-game-angle-demo/server/package.json +5 -2
  9. package/dist/lib/application/files/gadmin2-game-angle-demo/server/prisma.config.ts +12 -3
  10. package/dist/lib/application/files/gadmin2-game-angle-demo/server/scripts/migrate-human-approval-configs.ts +86 -0
  11. package/dist/lib/application/files/gadmin2-game-angle-demo/server/seed/workflow-node-types.ts +682 -121
  12. package/dist/lib/application/files/gadmin2-game-angle-demo/server/seed/workflow.seed.ts +110 -1
  13. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/config/index.ts +28 -0
  14. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/lib/json-body-parser.spec.ts +61 -0
  15. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/lib/json-body-parser.ts +7 -0
  16. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/lib/structured-all-exceptions.filter.spec.ts +54 -0
  17. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/lib/structured-all-exceptions.filter.ts +86 -0
  18. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/main.ts +9 -3
  19. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/approvalChannel/approval-channel.controller.ts +89 -0
  20. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/approvalChannel/approval-channel.dto.ts +68 -0
  21. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/approvalChannel/approval-channel.service.spec.ts +177 -0
  22. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/approvalChannel/approval-channel.service.ts +283 -0
  23. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/approvalChannel/approvalChannel.module.ts +10 -0
  24. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/codeRuntime/code-executor.spec.ts +42 -0
  25. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/codeRuntime/code-executor.ts +108 -0
  26. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/codeRuntime/code-runtime.controller.ts +101 -0
  27. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/codeRuntime/code-runtime.dto.ts +29 -0
  28. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/codeRuntime/codeRuntime.module.ts +21 -0
  29. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/external-interaction-handler.registry.ts +30 -0
  30. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/external-interaction-handler.ts +15 -0
  31. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/external-interaction-runtime.controller.spec.ts +105 -0
  32. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/external-interaction-runtime.controller.ts +96 -0
  33. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/external-interaction-runtime.dto.ts +78 -0
  34. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/external-interaction-signal-outbox.service.spec.ts +56 -0
  35. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/external-interaction-signal-outbox.service.ts +111 -0
  36. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/external-interaction-token.spec.ts +23 -0
  37. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/external-interaction-token.ts +18 -0
  38. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/external-interaction.service.spec.ts +240 -0
  39. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/external-interaction.service.ts +339 -0
  40. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/external-interaction.types.ts +74 -0
  41. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/external-wait.handler.ts +47 -0
  42. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/externalInteraction.module.ts +41 -0
  43. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/human-approval.handler.spec.ts +70 -0
  44. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/human-approval.handler.ts +76 -0
  45. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/workflow-callback-url.controller.ts +12 -0
  46. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/workflow-callback-url.service.spec.ts +227 -0
  47. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/workflow-callback-url.service.ts +121 -0
  48. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/httpRequest/http-request-runtime.controller.ts +160 -0
  49. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/httpRequest/http-request-runtime.dto.ts +41 -0
  50. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/httpRequest/http-request-runtime.util.spec.ts +171 -0
  51. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/httpRequest/http-request-runtime.util.ts +245 -0
  52. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/httpRequest/httpRequest.module.ts +22 -0
  53. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/approval-rule-evaluator.spec.ts +68 -0
  54. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/approval-rule-evaluator.ts +126 -0
  55. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/approval-rule.types.ts +34 -0
  56. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/approval-signal-outbox.service.ts +115 -0
  57. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/approval-subject-source.util.spec.ts +45 -0
  58. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/approval-subject-source.util.ts +59 -0
  59. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/human-approval.controller.ts +72 -0
  60. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/human-approval.dto.ts +144 -0
  61. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/human-approval.errors.ts +19 -0
  62. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/human-approval.external-decision.spec.ts +350 -0
  63. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/human-approval.service.ts +774 -0
  64. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/humanApproval.module.ts +46 -0
  65. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/legacy-approval-config-migration.ts +227 -0
  66. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/outbox-retry.util.ts +14 -0
  67. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/runtime/human-approval-runtime.controller.ts +151 -0
  68. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/runtime/human-approval-runtime.dto.ts +88 -0
  69. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/runtime/runtime-token.guard.ts +43 -0
  70. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/index.ts +21 -1
  71. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/integrationConnection/integration-connection.controller.ts +77 -0
  72. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/integrationConnection/integration-connection.dto.ts +98 -0
  73. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/integrationConnection/integration-connection.service.ts +277 -0
  74. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/integrationConnection/integration-secret-cipher.spec.ts +14 -0
  75. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/integrationConnection/integration-secret-cipher.ts +59 -0
  76. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/integrationConnection/integrationConnection.module.ts +10 -0
  77. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/subjectProvider/actor-context.util.ts +27 -0
  78. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/subjectProvider/providers/user-group.provider.ts +208 -0
  79. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/subjectProvider/providers/user.provider.ts +168 -0
  80. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/subjectProvider/subject-provider.controller.spec.ts +157 -0
  81. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/subjectProvider/subject-provider.controller.ts +176 -0
  82. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/subjectProvider/subject-provider.dto.ts +21 -0
  83. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/subjectProvider/subject-provider.errors.ts +78 -0
  84. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/subjectProvider/subject-provider.registry.spec.ts +100 -0
  85. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/subjectProvider/subject-provider.registry.ts +115 -0
  86. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/subjectProvider/subject-provider.types.ts +97 -0
  87. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/subjectProvider/subjectProvider.module.ts +34 -0
  88. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/temporalTenantConfig/temporalTenantConfig.controller.spec.ts +89 -1
  89. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/temporalTenantConfig/temporalTenantConfig.controller.ts +4 -0
  90. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/userGroup/user-group.controller.ts +119 -0
  91. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/userGroup/user-group.dto.ts +91 -0
  92. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/userGroup/user-group.errors.ts +34 -0
  93. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/userGroup/user-group.service.spec.ts +161 -0
  94. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/userGroup/user-group.service.ts +390 -0
  95. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/userGroup/userGroup.module.ts +10 -0
  96. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/dsl-validate.util.spec.ts +17 -0
  97. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/dsl-validate.util.ts +8 -2
  98. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/parameter-binding.ts +93 -0
  99. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-callable.spec.ts +158 -0
  100. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-callable.ts +155 -0
  101. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-compiler.service.spec.ts +363 -0
  102. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-compiler.service.ts +354 -0
  103. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-compiler.types.ts +43 -0
  104. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-data-edge.util.spec.ts +174 -0
  105. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-data-edge.util.ts +149 -0
  106. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-dsl-comparison.ts +43 -0
  107. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-execution.dto.ts +1 -1
  108. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-export.dto.ts +4 -0
  109. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-export.service.ts +70 -28
  110. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-handle-validator.ts +128 -0
  111. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow.controller.ts +12 -1
  112. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow.module.ts +18 -3
  113. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow.service.spec.ts +369 -22
  114. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow.service.ts +319 -90
  115. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowConfig/node-config-validator.service.spec.ts +79 -0
  116. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowConfig/node-config-validator.service.ts +62 -0
  117. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowConfig/schema.types.ts +10 -0
  118. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowConfig/subject-config-validator.service.spec.ts +124 -0
  119. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowConfig/subject-config-validator.service.ts +236 -0
  120. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowConfig/widget-catalog.service.spec.ts +49 -0
  121. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowConfig/widget-catalog.service.ts +69 -0
  122. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowConfig/workflowConfig.module.ts +20 -0
  123. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowNodeInstance/node-instance-config.util.spec.ts +15 -0
  124. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowNodeInstance/node-instance-config.util.ts +25 -0
  125. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowNodeInstance/workflowNodeInstance.controller.ts +103 -11
  126. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowNodeInstance/workflowNodeInstance.dto.ts +98 -0
  127. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowNodeInstance/workflowNodeInstance.module.ts +3 -0
  128. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowNodeInstance/workflowNodeInstance.service.spec.ts +72 -62
  129. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowNodeInstance/workflowNodeInstance.service.ts +148 -11
  130. package/dist/lib/application/files/gadmin2-game-angle-demo/web/package.json +13 -9
  131. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/App.tsx +5 -2
  132. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/authProvider.ts +2 -2
  133. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/BulkActions.tsx +0 -5
  134. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/SearchBar.tsx +26 -18
  135. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/auditLog/components/eventList/index.tsx +2 -2
  136. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/auditLog/components/logButton/index.tsx +24 -17
  137. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/auditLog/components/logList/index.tsx +7 -18
  138. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/auditLog/components/modalDiffViewer/index.tsx +2 -2
  139. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/contexts/color-mode/index.tsx +288 -33
  140. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/contexts/color-mode/themeStyles.ts +97 -0
  141. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/layout/SettingDrawer.tsx +251 -0
  142. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/layout/header.tsx +47 -19
  143. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/layout/layout.tsx +18 -9
  144. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/layout/menuRenderer.tsx +155 -0
  145. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/layout/sider.tsx +123 -129
  146. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/config/routeRegistry.tsx +16 -0
  147. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/constants/layout.ts +2 -1
  148. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/dev-shell/AddDataModal.tsx +98 -3
  149. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/dev-shell/AddPageModal.tsx +101 -0
  150. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/dev-shell/DevShell.tsx +8 -0
  151. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/dev-shell/style.css +51 -0
  152. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/form.tsx +1 -1
  153. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/list.tsx +1 -1
  154. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/login.ts +40 -1
  155. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/show.tsx +5 -5
  156. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/useDynamicResources.tsx +16 -1
  157. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/useListPageState.ts +10 -7
  158. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/i18n.ts +4 -2
  159. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/locales/en/common.json +26 -2
  160. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/locales/en/workflow.json +556 -0
  161. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/locales/zh_CN/common.json +26 -2
  162. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/locales/zh_CN/workflow.json +556 -0
  163. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/plugins/devShellPlugin.ts +152 -2
  164. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/agenda/index.tsx +6 -1
  165. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/agenda/show.tsx +41 -9
  166. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/agendaJob/edit.tsx +1 -1
  167. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/agendaJob/list.tsx +10 -8
  168. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/agendaJob/show.tsx +3 -3
  169. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/audit/components/action-cell.css +1 -1
  170. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/audit/edit.tsx +1 -1
  171. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/audit/show.tsx +3 -6
  172. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/CanvasCell.css +3 -0
  173. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/CanvasCell.tsx +45 -13
  174. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/CanvasComponentLibrary.tsx +45 -22
  175. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/CanvasListPage.tsx +168 -101
  176. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/CanvasPage.tsx +248 -74
  177. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/CanvasToolbar.tsx +33 -18
  178. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/CodeFloatWindow.tsx +16 -10
  179. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/PublishModal.tsx +1 -1
  180. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/canvasContextMenuRegistry.tsx +31 -0
  181. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/canvasDefaults.ts +15 -0
  182. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/BarChartDataSourceModal.tsx +16 -11
  183. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/CanvasAiModal.tsx +25 -21
  184. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/ExportModal.tsx +6 -1
  185. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/LineChartDataSourceModal.tsx +9 -10
  186. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/MultiChartConfigModal.tsx +4 -7
  187. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/MultiChartDataSourceModal.tsx +23 -9
  188. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/NumCardDataSourceModal.tsx +16 -11
  189. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/PromptModal.tsx +2 -5
  190. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/RadarChartDataSourceModal.tsx +16 -11
  191. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/TableConfigModal.tsx +2 -9
  192. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/TableDataSourceModal.tsx +23 -12
  193. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/canvasModalProps.ts +2 -17
  194. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/sectionCompactor.test.ts +149 -0
  195. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/sectionCompactor.ts +111 -17
  196. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/types.ts +1 -0
  197. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/whiteboardLayout.test.ts +83 -0
  198. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/whiteboardLayout.ts +118 -0
  199. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/whiteboardName.test.ts +26 -0
  200. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas-page/index.tsx +9 -1
  201. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/game/edit.tsx +1 -1
  202. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/game/list.tsx +10 -8
  203. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/game/show.tsx +3 -6
  204. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/human-approval/DecisionModal.tsx +71 -0
  205. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/human-approval/inbox.tsx +216 -0
  206. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/Components/AssignRolesModal.tsx +6 -1
  207. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/permissionReadme/index.tsx +8 -8
  208. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/resource/Components/modal.tsx +1 -1
  209. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/resource/list.tsx +5 -5
  210. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/Components/modal.tsx +1 -1
  211. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/components/show-drawer.tsx +1 -1
  212. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/approval-channels/ApprovalChannelModal.test.tsx +84 -0
  213. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/approval-channels/ApprovalChannelModal.tsx +141 -0
  214. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/approval-channels/approval-channel.types.ts +16 -0
  215. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/approval-channels/index.tsx +208 -0
  216. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/CreateNodeInstanceDrawer.tsx +154 -0
  217. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/CustomNode.tsx +194 -5
  218. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/DeletableEdge.tsx +76 -0
  219. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/DslView.tsx +1 -1
  220. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/EnhancedFlowRenderer.tsx +176 -22
  221. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/ExecutionStatusNode.test.tsx +62 -0
  222. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/ExecutionStatusNode.tsx +94 -5
  223. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/ExportModal.tsx +15 -10
  224. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/FlowRenderer.tsx +251 -70
  225. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/ImportModal.tsx +18 -24
  226. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/InstanceRequiredDialog.tsx +106 -0
  227. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/LookupConnectionDialog.test.tsx +45 -0
  228. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/LookupConnectionDialog.tsx +43 -0
  229. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/NewNodeDefaults.test.tsx +279 -0
  230. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/NodeEditModal.tsx +6 -7
  231. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/NodePropertyPanel.test.tsx +335 -0
  232. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/NodePropertyPanel.tsx +433 -237
  233. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/ParameterBindingEditor.tsx +179 -0
  234. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/RunWorkflowModal.tsx +18 -16
  235. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/StatusCards.tsx +20 -16
  236. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/VersionPanel.tsx +6 -4
  237. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/connections/ConnectionModal.test.tsx +68 -0
  238. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/connections/ConnectionModal.tsx +367 -0
  239. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/connections/connection.types.ts +21 -0
  240. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/connections/index.tsx +171 -0
  241. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/editor.tsx +38 -22
  242. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/hooks/useNodeInstanceLibrary.ts +41 -0
  243. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/hooks/useWorkflowAgent.ts +6 -0
  244. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/index.tsx +27 -20
  245. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/instance-detail.tsx +8 -11
  246. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/instances.tsx +6 -1
  247. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/components/NodeInstanceForm.tsx +56 -23
  248. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/create.tsx +21 -6
  249. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/edit.tsx +17 -20
  250. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/index.tsx +6 -1
  251. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/schema-form/SchemaField.tsx +311 -0
  252. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/schema-form/SchemaForm.test.tsx +218 -0
  253. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/schema-form/SchemaForm.tsx +83 -0
  254. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/schema-form/default-widgets.tsx +135 -0
  255. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/schema-form/schema-defaults.ts +36 -0
  256. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/schema-form/schema.types.ts +32 -0
  257. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/schema-form/widget-registry.test.tsx +23 -0
  258. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/schema-form/widget-registry.tsx +52 -0
  259. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/show.tsx +9 -13
  260. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/ApprovalRequestTriggerConfigEditor.tsx +39 -0
  261. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/ApprovalRuleEditor.test.tsx +20 -0
  262. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/ApprovalRuleEditor.tsx +72 -0
  263. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/ApproverSourceEditor.test.tsx +47 -0
  264. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/ApproverSourceEditor.tsx +185 -0
  265. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/CallableInputParametersEditor.test.tsx +102 -0
  266. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/CallableInputParametersEditor.tsx +150 -0
  267. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/CodeConfigEditor.tsx +103 -0
  268. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/ExternalRequestConfigEditor.test.tsx +93 -0
  269. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/ExternalRequestConfigEditor.tsx +196 -0
  270. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/ExternalWaitConfigEditor.tsx +303 -0
  271. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/HttpRequestConfigEditor.test.tsx +189 -0
  272. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/HttpRequestConfigEditor.tsx +706 -0
  273. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/HumanApprovalConfigEditor.test.tsx +86 -0
  274. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/HumanApprovalConfigEditor.tsx +458 -0
  275. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/ReturnResultConfigEditor.test.tsx +53 -0
  276. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/ReturnResultConfigEditor.tsx +91 -0
  277. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/SubjectPicker.test.tsx +61 -0
  278. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/SubjectPicker.tsx +266 -0
  279. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/SubmitApprovalResultConfigEditor.tsx +104 -0
  280. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/SubmitExternalResultConfigEditor.tsx +98 -0
  281. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/UserGroupCreateModal.tsx +70 -0
  282. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/UserGroupEditModal.tsx +138 -0
  283. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/approver-source.test.ts +25 -0
  284. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/approver-source.ts +42 -0
  285. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/subject-provider.api.ts +95 -0
  286. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/show.tsx +15 -11
  287. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/temporal-tenant/index.tsx +49 -8
  288. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/types/parameter-binding.ts +49 -0
  289. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/types.ts +31 -2
  290. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/utils/lookupConnection.test.ts +208 -0
  291. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/utils/lookupConnection.ts +246 -0
  292. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/utils/newNodeConfig.ts +73 -0
  293. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/utils/removeWorkflowEdges.test.ts +34 -0
  294. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/utils/removeWorkflowEdges.ts +18 -0
  295. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/utils/resolveLookupPorts.ts +66 -0
  296. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/utils/resolveOutputs.test.ts +39 -0
  297. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/utils/resolveOutputs.ts +48 -0
  298. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/utils/resolveWorkflowDisplay.test.ts +51 -0
  299. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/utils/resolveWorkflowDisplay.ts +32 -0
  300. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflowEventOutbox/edit.tsx +1 -1
  301. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflowEventOutbox/list.tsx +10 -8
  302. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflowEventOutbox/show.tsx +3 -3
  303. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/styles/antd-theme-vars.css +93 -0
  304. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/styles/antd.css +8 -8
  305. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/styles/fc.css +4 -4
  306. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/styles/index.css +20 -5
  307. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/styles/show-drawer.module.css +3 -3
  308. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/styles/show-page.module.css +3 -3
  309. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/styles/theme-styles.css +81 -0
  310. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/test/setup.ts +5 -0
  311. package/dist/lib/application/files/gadmin2-game-angle-demo/web/vite.config.ts +1 -7
  312. package/dist/lib/application/files/gadmin2-game-angle-demo/web/vitest.config.ts +12 -0
  313. package/package.json +1 -1
  314. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/components/DynamicConfigForm.tsx +0 -154
@@ -1,7 +1,69 @@
1
1
  import { ALL_NODE_TYPES } from '@gadmin2n/nest-common/workflow-dsl';
2
2
  import { Prisma, PrismaClient } from '@prisma/client';
3
3
 
4
- export const NODE_TYPES = [
4
+ type BaseNodeTypeSeed = {
5
+ type: string;
6
+ category: string;
7
+ label: string;
8
+ icon: string;
9
+ description: string;
10
+ configSchema: Prisma.InputJsonObject;
11
+ inputSchema: Prisma.InputJsonObject;
12
+ outputSchema: Prisma.InputJsonObject;
13
+ outputs: Prisma.InputJsonValue | null;
14
+ };
15
+
16
+ type NodeTypeSeed = BaseNodeTypeSeed & {
17
+ runtimeKey: string;
18
+ uiSchema: Prisma.InputJsonObject;
19
+ schemaVersion: number;
20
+ instancePolicy: 'REQUIRED' | 'OPTIONAL' | 'INLINE_ONLY';
21
+ };
22
+
23
+ const inlineNode = (definition: BaseNodeTypeSeed): NodeTypeSeed => ({
24
+ ...definition,
25
+ runtimeKey: definition.type,
26
+ schemaVersion: 1,
27
+ instancePolicy: 'INLINE_ONLY',
28
+ uiSchema: {},
29
+ });
30
+
31
+ const PARAMETER_BINDING_SCHEMA = {
32
+ oneOf: [
33
+ {
34
+ type: 'object',
35
+ properties: {
36
+ source: {
37
+ type: 'string',
38
+ enum: ['INPUT', 'WORKFLOW', 'SYSTEM'],
39
+ },
40
+ path: { type: 'string', minLength: 1 },
41
+ },
42
+ required: ['source', 'path'],
43
+ additionalProperties: false,
44
+ },
45
+ {
46
+ type: 'object',
47
+ properties: {
48
+ source: { type: 'string', enum: ['FIXED'] },
49
+ valueType: {
50
+ type: 'string',
51
+ enum: ['STRING', 'NUMBER', 'BOOLEAN', 'JSON'],
52
+ },
53
+ value: { type: 'string' },
54
+ },
55
+ required: ['source', 'valueType', 'value'],
56
+ additionalProperties: false,
57
+ },
58
+ ],
59
+ };
60
+
61
+ const PARAMETER_BINDINGS_SCHEMA = {
62
+ type: 'object',
63
+ additionalProperties: PARAMETER_BINDING_SCHEMA,
64
+ };
65
+
66
+ const INLINE_NODE_DEFINITIONS: BaseNodeTypeSeed[] = [
5
67
  // ─── TRIGGER ───────────────────────────────────────────────────────────────
6
68
  {
7
69
  type: 'cron_trigger',
@@ -33,9 +95,9 @@ export const NODE_TYPES = [
33
95
  {
34
96
  type: 'webhook_trigger',
35
97
  category: 'TRIGGER',
36
- label: 'Webhook Trigger',
98
+ label: '接收外部请求',
37
99
  icon: 'ApiOutlined',
38
- description: 'Trigger workflow via HTTP webhook (HMAC-signed)',
100
+ description: '通过外部 HTTP POST 请求启动 Workflow',
39
101
  configSchema: {
40
102
  type: 'object',
41
103
  properties: {
@@ -46,8 +108,16 @@ export const NODE_TYPES = [
46
108
  },
47
109
  method: {
48
110
  type: 'string',
49
- enum: ['GET', 'POST', 'PUT', 'PATCH', 'DELETE'],
50
- description: 'HTTP method the webhook accepts',
111
+ enum: ['POST'],
112
+ default: 'POST',
113
+ description: 'External requests use POST',
114
+ },
115
+ verificationMode: {
116
+ type: 'string',
117
+ enum: ['HMAC', 'NONE'],
118
+ default: 'HMAC',
119
+ description:
120
+ 'HMAC verifies signed callers. NONE directly accepts systems that cannot sign requests.',
51
121
  },
52
122
  secret: {
53
123
  type: 'string',
@@ -55,7 +125,19 @@ export const NODE_TYPES = [
55
125
  'HMAC-SHA256 secret. Caller must send X-Workflow-Signature: sha256=HEX(HMAC(secret, "{ts}.{rawBody}")) and X-Workflow-Timestamp.',
56
126
  },
57
127
  },
58
- required: ['path', 'method', 'secret'],
128
+ required: ['path', 'method'],
129
+ allOf: [
130
+ {
131
+ if: {
132
+ properties: {
133
+ verificationMode: { const: 'NONE' },
134
+ },
135
+ required: ['verificationMode'],
136
+ },
137
+ then: {},
138
+ else: { required: ['secret'] },
139
+ },
140
+ ],
59
141
  },
60
142
  inputSchema: {
61
143
  type: 'object',
@@ -125,55 +207,69 @@ export const NODE_TYPES = [
125
207
  category: 'ACTION',
126
208
  label: 'HTTP Request',
127
209
  icon: 'GlobalOutlined',
128
- description: 'Make an HTTP request to an external API',
210
+ description: 'Call an external API through a reusable Connection',
129
211
  configSchema: {
130
212
  type: 'object',
131
213
  properties: {
132
- url: { type: 'string', description: 'Request URL' },
214
+ connectionRef: {
215
+ type: 'string',
216
+ description: 'Immutable code of a reusable Connection',
217
+ },
133
218
  method: {
134
219
  type: 'string',
135
220
  enum: ['GET', 'POST', 'PUT', 'DELETE', 'PATCH', 'HEAD'],
136
221
  description: 'HTTP method',
137
222
  },
138
- headers: { type: 'object', description: 'Request headers (JSON)' },
139
- body: { type: 'object', description: 'Request body (JSON)' },
140
- authentication: {
223
+ path: {
141
224
  type: 'string',
142
- enum: ['none', 'basic', 'bearer', 'apiKey', 'oauth2'],
143
- description: 'Authentication type',
144
- },
145
- timeout: {
146
- type: 'number',
147
- description: 'Request timeout in milliseconds',
225
+ description:
226
+ 'Relative API path. Supports explicit {{input.path}} and {{workflow.path}} references.',
148
227
  },
149
- retryOnFail: { type: 'boolean', description: 'Retry on failure' },
150
- maxRetries: { type: 'number', description: 'Maximum retry attempts' },
151
- retryInterval: {
152
- type: 'number',
153
- description: 'Interval between retries (ms)',
228
+ queryBindings: {
229
+ ...PARAMETER_BINDINGS_SCHEMA,
230
+ description: 'Direct value sources for query parameters',
154
231
  },
155
- followRedirects: {
156
- type: 'boolean',
157
- description: 'Follow HTTP redirects',
232
+ headerBindings: {
233
+ ...PARAMETER_BINDINGS_SCHEMA,
234
+ description: 'Direct value sources for request headers',
158
235
  },
159
- responseFormat: {
236
+ bodyMode: {
160
237
  type: 'string',
161
- enum: ['json', 'text', 'binary'],
162
- description: 'Expected response format',
238
+ enum: ['FIELDS', 'JSON'],
239
+ description: 'Request body editing mode',
163
240
  },
164
- ignoreSslErrors: {
165
- type: 'boolean',
166
- description: 'Ignore SSL certificate errors',
241
+ bodyBindings: {
242
+ ...PARAMETER_BINDINGS_SCHEMA,
243
+ description: 'Direct value sources for request body fields',
244
+ },
245
+ body: {
246
+ description:
247
+ 'Advanced JSON body with explicit {{input.path}}, {{workflow.path}}, and {{system.path}} references',
248
+ },
249
+ timeoutSeconds: {
250
+ type: 'integer',
251
+ minimum: 1,
252
+ maximum: 300,
253
+ description: 'Request timeout in seconds',
254
+ },
255
+ retryOnFail: { type: 'boolean', description: 'Retry on failure' },
256
+ maxRetries: { type: 'integer', minimum: 0, maximum: 10 },
257
+ retryInterval: {
258
+ type: 'integer',
259
+ minimum: 0,
260
+ maximum: 60000,
261
+ description: 'Interval between retries in milliseconds',
167
262
  },
168
263
  },
169
- required: ['url', 'method'],
264
+ required: ['connectionRef', 'method', 'path', 'bodyMode'],
265
+ additionalProperties: false,
170
266
  },
171
- inputSchema: { type: 'object', properties: { data: { type: 'object' } } },
267
+ inputSchema: { type: 'object', additionalProperties: true },
172
268
  outputSchema: {
173
269
  type: 'object',
174
270
  properties: {
175
271
  status: { type: 'number' },
176
- data: { type: 'object' },
272
+ data: { description: 'Unmodified response body' },
177
273
  headers: { type: 'object' },
178
274
  },
179
275
  },
@@ -349,7 +445,7 @@ export const NODE_TYPES = [
349
445
  category: 'ACTION',
350
446
  label: 'Set Variable',
351
447
  icon: 'FormOutlined',
352
- description: 'Set, transform, or rename variables in the workflow context',
448
+ description: 'Set, transform, or rename values from the previous node',
353
449
  configSchema: {
354
450
  type: 'object',
355
451
  properties: {
@@ -619,114 +715,571 @@ export const NODE_TYPES = [
619
715
  },
620
716
  outputs: [],
621
717
  },
718
+ ];
622
719
 
623
- // ─── APPROVAL ──────────────────────────────────────────────────────────────
624
- {
625
- type: 'approval',
626
- category: 'APPROVAL',
627
- label: 'Human Approval',
628
- icon: 'CheckCircleOutlined',
629
- description: 'Pause workflow and wait for human approval (Temporal Signal)',
630
- configSchema: {
631
- type: 'object',
632
- properties: {
633
- approvers: {
634
- type: 'array',
635
- items: {
636
- type: 'object',
637
- properties: {
638
- type: { type: 'string', enum: ['user', 'group'] },
639
- id: { type: 'string' },
640
- },
641
- required: ['type', 'id'],
720
+ // ─── APPROVAL ──────────────────────────────────────────────────────────────
721
+ const approvalDefinition: BaseNodeTypeSeed = {
722
+ type: 'approval',
723
+ category: 'APPROVAL',
724
+ label: 'Human Approval',
725
+ icon: 'CheckCircleOutlined',
726
+ description: 'Pause workflow and wait for human approval (Temporal Signal)',
727
+ configSchema: {
728
+ type: 'object',
729
+ properties: {
730
+ approvers: {
731
+ type: 'array',
732
+ items: {
733
+ type: 'object',
734
+ properties: {
735
+ type: { type: 'string', enum: ['user', 'group'] },
736
+ id: { type: 'string' },
642
737
  },
643
- description:
644
- 'Approvers — mix of individual users (type=user, id=userid) and reusable groups (type=group, id=UserGroup.code)',
645
- },
646
- approvalMode: {
647
- type: 'string',
648
- enum: ['any', 'all', 'percentage'],
649
- description:
650
- 'any = one approver, all = unanimous, percentage = quorum',
651
- },
652
- minApprovalCount: {
653
- type: 'number',
654
- description: 'Minimum approvals needed (for percentage mode)',
655
- },
656
- timeout: { type: 'number', description: 'Approval timeout in seconds' },
657
- timeoutAction: {
658
- type: 'string',
659
- enum: ['auto_approve', 'auto_reject', 'escalate'],
660
- description: 'Action when approval times out',
661
- },
662
- escalateTo: {
663
- type: 'array',
664
- items: { type: 'string' },
665
- description: 'Escalation targets (when timeoutAction=escalate)',
666
- },
667
- reminderInterval: {
668
- type: 'number',
669
- description: 'Reminder interval in hours (0 = no reminder)',
670
- },
671
- allowDelegate: {
672
- type: 'boolean',
673
- description: 'Allow approvers to delegate to others',
738
+ required: ['type', 'id'],
674
739
  },
740
+ description:
741
+ 'Approvers — mix of individual users (type=user, id=userid) and reusable groups (type=group, id=UserGroup.code)',
742
+ },
743
+ approvalMode: {
744
+ type: 'string',
745
+ enum: ['any', 'all', 'percentage'],
746
+ description: 'any = one approver, all = unanimous, percentage = quorum',
747
+ },
748
+ minApprovalCount: {
749
+ type: 'number',
750
+ description: 'Minimum approvals needed (for percentage mode)',
751
+ },
752
+ timeout: { type: 'number', description: 'Approval timeout in seconds' },
753
+ timeoutAction: {
754
+ type: 'string',
755
+ enum: ['auto_approve', 'auto_reject', 'escalate'],
756
+ description: 'Action when approval times out',
757
+ },
758
+ escalateTo: {
759
+ type: 'array',
760
+ items: { type: 'string' },
761
+ description: 'Escalation targets (when timeoutAction=escalate)',
762
+ },
763
+ reminderInterval: {
764
+ type: 'number',
765
+ description: 'Reminder interval in hours (0 = no reminder)',
766
+ },
767
+ allowDelegate: {
768
+ type: 'boolean',
769
+ description: 'Allow approvers to delegate to others',
675
770
  },
676
- required: ['approvers'],
677
771
  },
678
- inputSchema: {
772
+ required: ['approvers'],
773
+ },
774
+ inputSchema: {
775
+ type: 'object',
776
+ properties: { requestData: { type: 'object' } },
777
+ },
778
+ outputSchema: {
779
+ type: 'object',
780
+ properties: {
781
+ approved: { type: 'boolean' },
782
+ approvedBy: { type: 'string' },
783
+ comment: { type: 'string' },
784
+ },
785
+ },
786
+ outputs: [],
787
+ };
788
+
789
+ // ─── SUB WORKFLOW ──────────────────────────────────────────────────────────
790
+ const subWorkflowDefinition: BaseNodeTypeSeed = {
791
+ type: 'sub_workflow',
792
+ category: 'SUB_WORKFLOW',
793
+ label: 'Sub Workflow',
794
+ icon: 'SubnodeOutlined',
795
+ description:
796
+ 'Call another workflow as a sub-process (Temporal Child Workflow)',
797
+ configSchema: {
798
+ type: 'object',
799
+ properties: {
800
+ workflowId: {
801
+ type: 'string',
802
+ description: 'Target workflow ID to invoke',
803
+ },
804
+ inputBindings: {
805
+ ...PARAMETER_BINDINGS_SCHEMA,
806
+ description:
807
+ 'Bind child inputs to the previous node, Workflow data, or fixed values',
808
+ },
809
+ waitForCompletion: {
810
+ type: 'boolean',
811
+ description: 'Wait for child workflow to finish (sync vs async)',
812
+ },
813
+ timeout: {
814
+ type: 'number',
815
+ description: 'Child workflow timeout in seconds',
816
+ },
817
+ },
818
+ required: ['workflowId'],
819
+ },
820
+ inputSchema: { type: 'object', properties: { data: { type: 'object' } } },
821
+ outputSchema: {
822
+ type: 'object',
823
+ properties: { result: { type: 'object' }, status: { type: 'string' } },
824
+ },
825
+ outputs: [],
826
+ };
827
+
828
+ const HUMAN_APPROVAL_CONFIG_SCHEMA: NodeTypeSeed['configSchema'] = {
829
+ type: 'object',
830
+ properties: {
831
+ channelRef: {
832
+ type: 'string',
833
+ title: 'Approval channel',
834
+ description:
835
+ 'Optional reusable channel for dispatching to and receiving decisions from an external approval provider.',
836
+ },
837
+ channelInputBindings: {
838
+ ...PARAMETER_BINDINGS_SCHEMA,
839
+ title: 'Approval document fields',
840
+ description:
841
+ 'Bind the selected approval channel inputs to input, Workflow data, or fixed values.',
842
+ },
843
+ approverSources: {
844
+ type: 'array',
845
+ title: '自动找审批人',
846
+ items: {
847
+ type: 'object',
848
+ properties: {
849
+ workflowId: { type: 'string' },
850
+ inputBindings: PARAMETER_BINDINGS_SCHEMA,
851
+ },
852
+ required: ['workflowId', 'inputBindings'],
853
+ },
854
+ },
855
+ subjects: {
856
+ type: 'array',
857
+ title: 'Approvers',
858
+ description: 'Users and reusable groups that may decide this request.',
859
+ minItems: 0,
860
+ 'x-gadmin-capability': 'subject-references',
861
+ items: {
862
+ type: 'object',
863
+ properties: {
864
+ source: { type: 'string', enum: ['STATIC', 'DYNAMIC'] },
865
+ provider: { type: 'string', enum: ['USER', 'USER_GROUP'] },
866
+ refs: { type: 'array', items: { type: 'string' } },
867
+ inputKey: { type: 'string' },
868
+ },
869
+ required: ['source', 'provider'],
870
+ allOf: [
871
+ {
872
+ if: { properties: { source: { const: 'STATIC' } } },
873
+ then: { required: ['refs'] },
874
+ },
875
+ {
876
+ if: { properties: { source: { const: 'DYNAMIC' } } },
877
+ then: { required: ['inputKey'] },
878
+ },
879
+ ],
880
+ },
881
+ },
882
+ approvalRule: {
679
883
  type: 'object',
680
- properties: { requestData: { type: 'object' } },
884
+ title: 'Approval rule',
885
+ properties: {
886
+ mode: { type: 'string', enum: ['ANY', 'ALL', 'COUNT', 'PERCENTAGE'] },
887
+ count: { type: 'integer', minimum: 1 },
888
+ percentage: { type: 'integer', minimum: 1, maximum: 100 },
889
+ },
890
+ required: ['mode'],
891
+ default: { mode: 'ANY' },
681
892
  },
682
- outputSchema: {
893
+ rejectionRule: {
683
894
  type: 'object',
895
+ title: 'Rejection rule',
684
896
  properties: {
685
- approved: { type: 'boolean' },
686
- approvedBy: { type: 'string' },
687
- comment: { type: 'string' },
897
+ mode: { type: 'string', enum: ['ANY', 'ALL', 'COUNT', 'PERCENTAGE'] },
898
+ count: { type: 'integer', minimum: 1 },
899
+ percentage: { type: 'integer', minimum: 1, maximum: 100 },
688
900
  },
901
+ required: ['mode'],
902
+ default: { mode: 'ANY' },
689
903
  },
690
- outputs: [],
691
- },
692
-
693
- // ─── SUB WORKFLOW ──────────────────────────────────────────────────────────
694
- {
695
- type: 'sub_workflow',
696
- category: 'SUB_WORKFLOW',
697
- label: 'Sub Workflow',
698
- icon: 'SubnodeOutlined',
699
- description:
700
- 'Call another workflow as a sub-process (Temporal Child Workflow)',
701
- configSchema: {
904
+ timeout: {
702
905
  type: 'object',
906
+ title: 'Timeout',
703
907
  properties: {
704
- workflowId: {
908
+ durationSeconds: {
909
+ type: 'integer',
910
+ minimum: 0,
911
+ default: 0,
912
+ },
913
+ action: {
705
914
  type: 'string',
706
- description: 'Target workflow ID to invoke',
915
+ enum: ['APPROVED', 'REJECTED'],
916
+ default: 'REJECTED',
707
917
  },
708
- inputMapping: {
918
+ },
919
+ required: ['durationSeconds', 'action'],
920
+ default: { durationSeconds: 0, action: 'REJECTED' },
921
+ },
922
+ },
923
+ required: ['subjects', 'approvalRule', 'rejectionRule', 'timeout'],
924
+ };
925
+
926
+ const HUMAN_APPROVAL_UI_SCHEMA: NodeTypeSeed['uiSchema'] = {
927
+ widget: 'human-approval-config',
928
+ };
929
+
930
+ const humanApprovalNode: NodeTypeSeed = {
931
+ ...approvalDefinition,
932
+ configSchema: HUMAN_APPROVAL_CONFIG_SCHEMA,
933
+ outputs: ['true', 'false'],
934
+ runtimeKey: 'human_approval',
935
+ schemaVersion: 6,
936
+ instancePolicy: 'REQUIRED',
937
+ uiSchema: HUMAN_APPROVAL_UI_SCHEMA,
938
+ };
939
+
940
+ const callableTriggerNode: NodeTypeSeed = {
941
+ type: 'callable_trigger',
942
+ category: 'TRIGGER',
943
+ label: '接收调用',
944
+ icon: 'ImportOutlined',
945
+ description: '接收其他地方传入的 Workflow 启动数据',
946
+ configSchema: {
947
+ type: 'object',
948
+ properties: {
949
+ inputParameters: {
950
+ type: 'array',
951
+ title: '调用参数',
952
+ items: {
709
953
  type: 'object',
710
- description: 'Map current context fields to child workflow input',
711
- },
712
- waitForCompletion: {
713
- type: 'boolean',
714
- description: 'Wait for child workflow to finish (sync vs async)',
954
+ properties: {
955
+ key: { type: 'string', title: '参数名' },
956
+ label: { type: 'string', title: '显示名称' },
957
+ required: { type: 'boolean', title: '必填' },
958
+ },
959
+ required: ['key'],
715
960
  },
716
- timeout: {
717
- type: 'number',
718
- description: 'Child workflow timeout in seconds',
961
+ },
962
+ },
963
+ },
964
+ inputSchema: { type: 'object' },
965
+ outputSchema: { type: 'object' },
966
+ outputs: [],
967
+ runtimeKey: 'callable_trigger',
968
+ schemaVersion: 2,
969
+ instancePolicy: 'INLINE_ONLY',
970
+ uiSchema: {
971
+ fields: {
972
+ inputParameters: { widget: 'callable-input-parameters' },
973
+ },
974
+ },
975
+ };
976
+
977
+ const approvalRequestTriggerNode: NodeTypeSeed = {
978
+ type: 'approval_request_trigger',
979
+ category: 'TRIGGER',
980
+ label: '接收调用',
981
+ icon: 'AuditOutlined',
982
+ description: '旧版审批调用入口,仅用于兼容已有 Workflow',
983
+ configSchema: {
984
+ type: 'object',
985
+ properties: {},
986
+ },
987
+ inputSchema: { type: 'object' },
988
+ outputSchema: { type: 'object' },
989
+ outputs: [],
990
+ runtimeKey: 'approval_request_trigger',
991
+ schemaVersion: 1,
992
+ instancePolicy: 'INLINE_ONLY',
993
+ uiSchema: {
994
+ widget: 'approval-request-trigger-config',
995
+ },
996
+ };
997
+
998
+ const returnResultNode: NodeTypeSeed = {
999
+ type: 'return_result',
1000
+ category: 'ACTION',
1001
+ label: '返回结果',
1002
+ icon: 'ExportOutlined',
1003
+ description: '把上一个节点或 Workflow 数据返回给调用方',
1004
+ configSchema: {
1005
+ type: 'object',
1006
+ properties: {
1007
+ resultType: {
1008
+ type: 'string',
1009
+ title: '结果类型',
1010
+ enum: ['APPROVAL_SUBJECTS'],
1011
+ default: 'APPROVAL_SUBJECTS',
1012
+ },
1013
+ sourceMode: {
1014
+ type: 'string',
1015
+ title: '结果来源',
1016
+ enum: ['INPUT', 'WORKFLOW'],
1017
+ default: 'INPUT',
1018
+ },
1019
+ path: {
1020
+ type: 'string',
1021
+ title: 'Workflow 数据字段',
1022
+ description: '例如 approvers',
1023
+ },
1024
+ },
1025
+ required: ['resultType', 'sourceMode'],
1026
+ },
1027
+ inputSchema: { type: 'object' },
1028
+ outputSchema: { type: 'object' },
1029
+ outputs: [],
1030
+ runtimeKey: 'return_result',
1031
+ schemaVersion: 3,
1032
+ instancePolicy: 'INLINE_ONLY',
1033
+ uiSchema: { widget: 'return-result-config' },
1034
+ };
1035
+
1036
+ const submitApprovalResultNode: NodeTypeSeed = {
1037
+ type: 'submit_approval_result',
1038
+ category: 'ACTION',
1039
+ label: '提交审批结果',
1040
+ icon: 'CheckCircleOutlined',
1041
+ description: '把外部系统的审批决定提交给正在等待的人工审核节点',
1042
+ configSchema: {
1043
+ type: 'object',
1044
+ properties: {
1045
+ inputBindings: {
1046
+ type: 'object',
1047
+ properties: Object.fromEntries(
1048
+ [
1049
+ 'requestId',
1050
+ 'channelRef',
1051
+ 'eventId',
1052
+ 'approverId',
1053
+ 'decision',
1054
+ 'comment',
1055
+ 'payload',
1056
+ ].map((key) => [key, PARAMETER_BINDING_SCHEMA]),
1057
+ ),
1058
+ required: [
1059
+ 'requestId',
1060
+ 'channelRef',
1061
+ 'eventId',
1062
+ 'approverId',
1063
+ 'decision',
1064
+ ],
1065
+ additionalProperties: false,
1066
+ },
1067
+ },
1068
+ required: ['inputBindings'],
1069
+ additionalProperties: false,
1070
+ },
1071
+ inputSchema: { description: 'Normalized approval result' },
1072
+ outputSchema: {
1073
+ type: 'object',
1074
+ properties: {
1075
+ accepted: { type: 'boolean' },
1076
+ requestId: { type: 'string' },
1077
+ },
1078
+ },
1079
+ outputs: [],
1080
+ runtimeKey: 'submit_approval_result',
1081
+ schemaVersion: 1,
1082
+ instancePolicy: 'INLINE_ONLY',
1083
+ uiSchema: { widget: 'submit-approval-result-config' },
1084
+ };
1085
+
1086
+ const submitExternalResultNode: NodeTypeSeed = {
1087
+ type: 'submit_external_result',
1088
+ category: 'ACTION',
1089
+ label: '提交外部处理结果',
1090
+ icon: 'ApiOutlined',
1091
+ description: '把外部系统的处理结果提交给正在等待的 Workflow',
1092
+ configSchema: {
1093
+ type: 'object',
1094
+ properties: {
1095
+ inputBindings: {
1096
+ type: 'object',
1097
+ properties: Object.fromEntries(
1098
+ ['callbackToken', 'eventId', 'outcome', 'operatorId', 'data'].map(
1099
+ (key) => [key, PARAMETER_BINDING_SCHEMA],
1100
+ ),
1101
+ ),
1102
+ required: ['callbackToken', 'eventId', 'outcome'],
1103
+ additionalProperties: false,
1104
+ },
1105
+ },
1106
+ required: ['inputBindings'],
1107
+ additionalProperties: false,
1108
+ },
1109
+ inputSchema: { description: 'External callback payload' },
1110
+ outputSchema: {
1111
+ type: 'object',
1112
+ properties: {
1113
+ accepted: { type: 'boolean' },
1114
+ duplicate: { type: 'boolean' },
1115
+ resolved: { type: 'boolean' },
1116
+ },
1117
+ },
1118
+ outputs: [],
1119
+ runtimeKey: 'submit_external_result',
1120
+ schemaVersion: 1,
1121
+ instancePolicy: 'INLINE_ONLY',
1122
+ uiSchema: { widget: 'submit-external-result-config' },
1123
+ };
1124
+
1125
+ const externalWaitNode: NodeTypeSeed = {
1126
+ type: 'external_wait',
1127
+ category: 'FLOW_CONTROL',
1128
+ label: '等待外部处理',
1129
+ icon: 'HourglassOutlined',
1130
+ description: '发起外部处理,并在收到结果后从对应出口继续',
1131
+ configSchema: {
1132
+ type: 'object',
1133
+ properties: {
1134
+ dispatchWorkflowId: {
1135
+ type: 'string',
1136
+ title: '发送 Workflow',
1137
+ pattern: '^[1-9][0-9]*$',
1138
+ },
1139
+ callbackWorkflowId: {
1140
+ type: 'string',
1141
+ title: '回调 Workflow',
1142
+ pattern: '^[1-9][0-9]*$',
1143
+ },
1144
+ businessDataBinding: PARAMETER_BINDING_SCHEMA,
1145
+ participantsBinding: PARAMETER_BINDING_SCHEMA,
1146
+ outcomes: {
1147
+ type: 'array',
1148
+ minItems: 1,
1149
+ items: {
1150
+ type: 'object',
1151
+ properties: {
1152
+ code: {
1153
+ type: 'string',
1154
+ pattern: '^[A-Z][A-Z0-9_]{0,63}$',
1155
+ },
1156
+ label: { type: 'string', minLength: 1, maxLength: 64 },
1157
+ },
1158
+ required: ['code', 'label'],
1159
+ additionalProperties: false,
719
1160
  },
720
1161
  },
721
- required: ['workflowId'],
1162
+ timeout: {
1163
+ type: 'object',
1164
+ properties: {
1165
+ durationSeconds: { type: 'integer', minimum: 1 },
1166
+ outcome: { type: 'string', const: 'TIMEOUT' },
1167
+ },
1168
+ required: ['durationSeconds', 'outcome'],
1169
+ additionalProperties: false,
1170
+ },
722
1171
  },
723
- inputSchema: { type: 'object', properties: { data: { type: 'object' } } },
724
- outputSchema: {
725
- type: 'object',
726
- properties: { result: { type: 'object' }, status: { type: 'string' } },
1172
+ required: ['dispatchWorkflowId', 'outcomes', 'timeout'],
1173
+ additionalProperties: false,
1174
+ },
1175
+ inputSchema: {
1176
+ description: '上一个节点的结果;默认作为发送给外部系统的业务数据',
1177
+ },
1178
+ outputSchema: {
1179
+ type: 'object',
1180
+ properties: {
1181
+ outcome: { type: 'string' },
1182
+ operatorId: { type: 'string' },
1183
+ data: { type: 'object' },
1184
+ completedAt: { type: 'string' },
727
1185
  },
728
- outputs: [],
1186
+ required: ['outcome'],
729
1187
  },
1188
+ outputs: null,
1189
+ runtimeKey: 'external_wait',
1190
+ schemaVersion: 1,
1191
+ instancePolicy: 'INLINE_ONLY',
1192
+ uiSchema: { widget: 'external-wait-config' },
1193
+ };
1194
+
1195
+ const httpRequestDefinition = INLINE_NODE_DEFINITIONS.find(
1196
+ (definition) => definition.type === 'http_request',
1197
+ )!;
1198
+
1199
+ const webhookDefinition = INLINE_NODE_DEFINITIONS.find(
1200
+ (definition) => definition.type === 'webhook_trigger',
1201
+ )!;
1202
+
1203
+ const webhookNode: NodeTypeSeed = {
1204
+ ...inlineNode(webhookDefinition),
1205
+ runtimeKey: 'webhook_trigger',
1206
+ schemaVersion: 3,
1207
+ uiSchema: { widget: 'external-request-config' },
1208
+ };
1209
+
1210
+ const httpRequestNode: NodeTypeSeed = {
1211
+ ...httpRequestDefinition,
1212
+ runtimeKey: 'http_request',
1213
+ schemaVersion: 5,
1214
+ instancePolicy: 'OPTIONAL',
1215
+ uiSchema: { widget: 'http-request-config' },
1216
+ };
1217
+
1218
+ const codeDefinition = INLINE_NODE_DEFINITIONS.find(
1219
+ (definition) => definition.type === 'code',
1220
+ )!;
1221
+
1222
+ const codeNode: NodeTypeSeed = {
1223
+ ...codeDefinition,
1224
+ configSchema: {
1225
+ type: 'object',
1226
+ properties: {
1227
+ script: {
1228
+ type: 'string',
1229
+ description: 'JavaScript function body. Return the transformed value.',
1230
+ default: 'return input;',
1231
+ },
1232
+ mode: {
1233
+ type: 'string',
1234
+ enum: ['runOnceForAll', 'runOnceForEach'],
1235
+ default: 'runOnceForAll',
1236
+ },
1237
+ timeout: {
1238
+ type: 'integer',
1239
+ minimum: 1,
1240
+ maximum: 5000,
1241
+ default: 1000,
1242
+ description: 'Maximum script execution time in milliseconds',
1243
+ },
1244
+ },
1245
+ required: ['script'],
1246
+ },
1247
+ inputSchema: { description: 'Any JSON value from the previous node' },
1248
+ outputSchema: {
1249
+ type: 'object',
1250
+ properties: {
1251
+ result: { description: 'Any JSON value returned by the script' },
1252
+ },
1253
+ },
1254
+ runtimeKey: 'code',
1255
+ schemaVersion: 4,
1256
+ instancePolicy: 'OPTIONAL',
1257
+ uiSchema: { widget: 'code-config' },
1258
+ };
1259
+
1260
+ const subWorkflowNode: NodeTypeSeed = {
1261
+ ...inlineNode(subWorkflowDefinition),
1262
+ schemaVersion: 2,
1263
+ };
1264
+
1265
+ export const NODE_TYPES: NodeTypeSeed[] = [
1266
+ ...INLINE_NODE_DEFINITIONS.filter(
1267
+ (definition) =>
1268
+ definition.type !== 'http_request' &&
1269
+ definition.type !== 'code' &&
1270
+ definition.type !== 'webhook_trigger',
1271
+ ).map(inlineNode),
1272
+ webhookNode,
1273
+ httpRequestNode,
1274
+ codeNode,
1275
+ humanApprovalNode,
1276
+ callableTriggerNode,
1277
+ approvalRequestTriggerNode,
1278
+ returnResultNode,
1279
+ submitApprovalResultNode,
1280
+ submitExternalResultNode,
1281
+ externalWaitNode,
1282
+ subWorkflowNode,
730
1283
  ];
731
1284
 
732
1285
  // ─── Seed / nest-common consistency check ──────────────────────────────────
@@ -778,6 +1331,10 @@ export async function seedNodeTypes(prisma: PrismaClient) {
778
1331
  inputSchema: nodeType.inputSchema,
779
1332
  outputSchema: nodeType.outputSchema,
780
1333
  outputs: outputsValue,
1334
+ runtimeKey: nodeType.runtimeKey,
1335
+ uiSchema: nodeType.uiSchema,
1336
+ schemaVersion: nodeType.schemaVersion,
1337
+ instancePolicy: nodeType.instancePolicy,
781
1338
  },
782
1339
  create: {
783
1340
  type: nodeType.type,
@@ -789,6 +1346,10 @@ export async function seedNodeTypes(prisma: PrismaClient) {
789
1346
  inputSchema: nodeType.inputSchema,
790
1347
  outputSchema: nodeType.outputSchema,
791
1348
  outputs: outputsValue,
1349
+ runtimeKey: nodeType.runtimeKey,
1350
+ uiSchema: nodeType.uiSchema,
1351
+ schemaVersion: nodeType.schemaVersion,
1352
+ instancePolicy: nodeType.instancePolicy,
792
1353
  },
793
1354
  });
794
1355
  }