@gadmin2n/schematics 0.0.139 → 0.0.141

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 (329) 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/config/ui/Event.ts +1 -1
  6. package/dist/lib/application/files/gadmin2-game-angle-demo/gitignore +6 -5
  7. package/dist/lib/application/files/gadmin2-game-angle-demo/readme.md +10 -3
  8. package/dist/lib/application/files/gadmin2-game-angle-demo/server/migrate-between-pg-schemas.js +6 -4
  9. package/dist/lib/application/files/gadmin2-game-angle-demo/server/package.json +5 -2
  10. package/dist/lib/application/files/gadmin2-game-angle-demo/server/prisma.config.ts +12 -3
  11. package/dist/lib/application/files/gadmin2-game-angle-demo/server/scripts/gen-jwt.ts +8 -1
  12. package/dist/lib/application/files/gadmin2-game-angle-demo/server/scripts/migrate-human-approval-configs.ts +86 -0
  13. package/dist/lib/application/files/gadmin2-game-angle-demo/server/seed/workflow-node-types.ts +710 -121
  14. package/dist/lib/application/files/gadmin2-game-angle-demo/server/seed/workflow.seed.ts +125 -10
  15. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/config/index.ts +28 -0
  16. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/lib/json-body-parser.spec.ts +61 -0
  17. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/lib/json-body-parser.ts +7 -0
  18. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/lib/structured-all-exceptions.filter.spec.ts +54 -0
  19. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/lib/structured-all-exceptions.filter.ts +86 -0
  20. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/main.ts +9 -3
  21. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/approvalChannel/approval-channel.controller.ts +89 -0
  22. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/approvalChannel/approval-channel.dto.ts +68 -0
  23. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/approvalChannel/approval-channel.service.spec.ts +177 -0
  24. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/approvalChannel/approval-channel.service.ts +283 -0
  25. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/approvalChannel/approvalChannel.module.ts +10 -0
  26. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/codeRuntime/code-executor.spec.ts +42 -0
  27. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/codeRuntime/code-executor.ts +108 -0
  28. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/codeRuntime/code-runtime.controller.ts +101 -0
  29. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/codeRuntime/code-runtime.dto.ts +29 -0
  30. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/codeRuntime/codeRuntime.module.ts +21 -0
  31. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/external-interaction-handler.registry.ts +30 -0
  32. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/external-interaction-handler.ts +15 -0
  33. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/external-interaction-runtime.controller.spec.ts +105 -0
  34. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/external-interaction-runtime.controller.ts +96 -0
  35. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/external-interaction-runtime.dto.ts +78 -0
  36. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/external-interaction-signal-outbox.service.spec.ts +56 -0
  37. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/external-interaction-signal-outbox.service.ts +111 -0
  38. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/external-interaction-token.spec.ts +23 -0
  39. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/external-interaction-token.ts +18 -0
  40. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/external-interaction.service.spec.ts +240 -0
  41. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/external-interaction.service.ts +339 -0
  42. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/external-interaction.types.ts +74 -0
  43. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/external-wait.handler.ts +47 -0
  44. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/externalInteraction.module.ts +41 -0
  45. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/human-approval.handler.spec.ts +70 -0
  46. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/human-approval.handler.ts +76 -0
  47. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/workflow-callback-url.controller.ts +12 -0
  48. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/workflow-callback-url.service.spec.ts +227 -0
  49. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/externalInteraction/workflow-callback-url.service.ts +121 -0
  50. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/httpRequest/http-request-runtime.controller.ts +160 -0
  51. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/httpRequest/http-request-runtime.dto.ts +41 -0
  52. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/httpRequest/http-request-runtime.util.spec.ts +171 -0
  53. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/httpRequest/http-request-runtime.util.ts +245 -0
  54. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/httpRequest/httpRequest.module.ts +22 -0
  55. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/approval-rule-evaluator.spec.ts +68 -0
  56. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/approval-rule-evaluator.ts +126 -0
  57. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/approval-rule.types.ts +34 -0
  58. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/approval-signal-outbox.service.ts +115 -0
  59. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/approval-subject-source.util.spec.ts +45 -0
  60. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/approval-subject-source.util.ts +59 -0
  61. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/human-approval.controller.ts +72 -0
  62. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/human-approval.dto.ts +144 -0
  63. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/human-approval.errors.ts +19 -0
  64. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/human-approval.external-decision.spec.ts +350 -0
  65. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/human-approval.service.ts +774 -0
  66. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/humanApproval.module.ts +46 -0
  67. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/legacy-approval-config-migration.ts +227 -0
  68. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/outbox-retry.util.ts +14 -0
  69. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/runtime/human-approval-runtime.controller.ts +151 -0
  70. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/runtime/human-approval-runtime.dto.ts +88 -0
  71. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/humanApproval/runtime/runtime-token.guard.ts +43 -0
  72. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/index.ts +21 -1
  73. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/integrationConnection/integration-connection.controller.ts +77 -0
  74. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/integrationConnection/integration-connection.dto.ts +98 -0
  75. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/integrationConnection/integration-connection.service.ts +277 -0
  76. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/integrationConnection/integration-secret-cipher.spec.ts +14 -0
  77. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/integrationConnection/integration-secret-cipher.ts +59 -0
  78. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/integrationConnection/integrationConnection.module.ts +10 -0
  79. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/subjectProvider/actor-context.util.ts +27 -0
  80. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/subjectProvider/providers/user-group.provider.ts +208 -0
  81. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/subjectProvider/providers/user.provider.ts +168 -0
  82. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/subjectProvider/subject-provider.controller.spec.ts +157 -0
  83. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/subjectProvider/subject-provider.controller.ts +176 -0
  84. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/subjectProvider/subject-provider.dto.ts +21 -0
  85. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/subjectProvider/subject-provider.errors.ts +78 -0
  86. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/subjectProvider/subject-provider.registry.spec.ts +100 -0
  87. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/subjectProvider/subject-provider.registry.ts +115 -0
  88. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/subjectProvider/subject-provider.types.ts +97 -0
  89. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/subjectProvider/subjectProvider.module.ts +34 -0
  90. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/temporalTenantConfig/temporalTenantConfig.controller.spec.ts +89 -1
  91. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/temporalTenantConfig/temporalTenantConfig.controller.ts +4 -0
  92. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/userGroup/user-group.controller.ts +119 -0
  93. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/userGroup/user-group.dto.ts +91 -0
  94. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/userGroup/user-group.errors.ts +34 -0
  95. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/userGroup/user-group.service.spec.ts +161 -0
  96. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/userGroup/user-group.service.ts +390 -0
  97. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/userGroup/userGroup.module.ts +10 -0
  98. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/dsl-validate.util.spec.ts +17 -0
  99. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/dsl-validate.util.ts +8 -2
  100. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/parameter-binding.ts +93 -0
  101. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/temporal.service.spec.ts +34 -1
  102. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/temporal.service.ts +26 -0
  103. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-callable.spec.ts +158 -0
  104. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-callable.ts +155 -0
  105. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-compiler.service.spec.ts +512 -0
  106. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-compiler.service.ts +368 -0
  107. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-compiler.types.ts +43 -0
  108. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-data-edge.util.spec.ts +174 -0
  109. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-data-edge.util.ts +149 -0
  110. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-dsl-comparison.ts +43 -0
  111. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-execution.dto.ts +1 -1
  112. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-export.dto.ts +4 -0
  113. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-export.service.ts +70 -28
  114. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-handle-validator.ts +128 -0
  115. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-http-response.spec.ts +85 -0
  116. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-http-response.ts +157 -0
  117. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow.controller.spec.ts +59 -0
  118. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow.controller.ts +27 -5
  119. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow.module.ts +18 -3
  120. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow.service.spec.ts +493 -21
  121. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow.service.ts +426 -90
  122. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowConfig/node-config-validator.service.spec.ts +79 -0
  123. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowConfig/node-config-validator.service.ts +62 -0
  124. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowConfig/schema.types.ts +10 -0
  125. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowConfig/subject-config-validator.service.spec.ts +124 -0
  126. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowConfig/subject-config-validator.service.ts +236 -0
  127. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowConfig/widget-catalog.service.spec.ts +49 -0
  128. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowConfig/widget-catalog.service.ts +69 -0
  129. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowConfig/workflowConfig.module.ts +20 -0
  130. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowNodeInstance/node-instance-config.util.spec.ts +15 -0
  131. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowNodeInstance/node-instance-config.util.ts +25 -0
  132. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowNodeInstance/workflowNodeInstance.controller.ts +103 -11
  133. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowNodeInstance/workflowNodeInstance.dto.ts +98 -0
  134. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowNodeInstance/workflowNodeInstance.module.ts +3 -0
  135. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowNodeInstance/workflowNodeInstance.service.spec.ts +72 -62
  136. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowNodeInstance/workflowNodeInstance.service.ts +148 -11
  137. package/dist/lib/application/files/gadmin2-game-angle-demo/web/package.json +13 -9
  138. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/App.tsx +5 -2
  139. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/authProvider.ts +2 -2
  140. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/BulkActions.tsx +0 -5
  141. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/PageHeader.tsx +46 -0
  142. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/SearchBar.tsx +26 -18
  143. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/auditLog/components/eventList/index.tsx +2 -2
  144. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/auditLog/components/logButton/index.tsx +24 -17
  145. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/auditLog/components/logList/index.tsx +7 -18
  146. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/auditLog/components/modalDiffViewer/index.tsx +2 -2
  147. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/contexts/color-mode/index.tsx +288 -33
  148. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/contexts/color-mode/themeStyles.ts +97 -0
  149. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/index.ts +1 -0
  150. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/layout/SettingDrawer.tsx +251 -0
  151. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/layout/header.tsx +47 -19
  152. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/layout/layout.tsx +18 -9
  153. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/layout/menuRenderer.tsx +155 -0
  154. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/layout/sider.tsx +123 -129
  155. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/config/routeRegistry.test.ts +10 -0
  156. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/config/routeRegistry.tsx +18 -0
  157. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/constants/layout.ts +32 -3
  158. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/dev-shell/AddDataModal.tsx +98 -3
  159. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/dev-shell/AddPageModal.tsx +101 -0
  160. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/dev-shell/DevShell.tsx +8 -0
  161. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/dev-shell/style.css +51 -0
  162. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/form.tsx +1 -1
  163. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/list.tsx +1 -1
  164. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/login.ts +40 -1
  165. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/show.tsx +5 -5
  166. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/useDynamicResources.tsx +16 -1
  167. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/useListPageState.ts +10 -7
  168. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/i18n.ts +4 -2
  169. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/locales/en/common.json +26 -2
  170. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/locales/en/workflow.json +575 -0
  171. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/locales/zh_CN/common.json +26 -2
  172. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/locales/zh_CN/workflow.json +575 -0
  173. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/plugins/devShellPlugin.ts +152 -2
  174. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/agenda/index.tsx +9 -15
  175. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/agenda/show.tsx +41 -9
  176. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/agendaJob/edit.tsx +1 -1
  177. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/agendaJob/list.tsx +10 -8
  178. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/agendaJob/show.tsx +3 -3
  179. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/audit/components/action-cell.css +1 -1
  180. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/audit/edit.tsx +1 -1
  181. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/audit/list.tsx +141 -138
  182. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/audit/show.tsx +3 -6
  183. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/CanvasCell.css +3 -0
  184. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/CanvasCell.tsx +45 -13
  185. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/CanvasComponentLibrary.tsx +45 -22
  186. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/CanvasListPage.tsx +175 -119
  187. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/CanvasPage.tsx +248 -74
  188. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/CanvasToolbar.tsx +33 -18
  189. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/CodeFloatWindow.tsx +16 -10
  190. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/PublishModal.tsx +1 -1
  191. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/canvasContextMenuRegistry.tsx +31 -0
  192. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/canvasDefaults.ts +15 -0
  193. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/BarChartDataSourceModal.tsx +16 -11
  194. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/CanvasAiModal.tsx +25 -21
  195. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/ExportModal.tsx +6 -1
  196. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/LineChartDataSourceModal.tsx +9 -10
  197. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/MultiChartConfigModal.tsx +4 -7
  198. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/MultiChartDataSourceModal.tsx +23 -9
  199. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/NumCardDataSourceModal.tsx +16 -11
  200. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/PromptModal.tsx +2 -5
  201. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/RadarChartDataSourceModal.tsx +16 -11
  202. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/TableConfigModal.tsx +2 -9
  203. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/TableDataSourceModal.tsx +23 -12
  204. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/canvasModalProps.ts +2 -17
  205. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/sectionCompactor.test.ts +149 -0
  206. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/sectionCompactor.ts +111 -17
  207. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/types.ts +1 -0
  208. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/whiteboardLayout.test.ts +83 -0
  209. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/whiteboardLayout.ts +118 -0
  210. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/whiteboardName.test.ts +26 -0
  211. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas-page/index.tsx +9 -1
  212. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/game/edit.tsx +1 -1
  213. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/game/list.tsx +10 -8
  214. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/game/show.tsx +3 -6
  215. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/human-approval/DecisionModal.tsx +71 -0
  216. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/human-approval/inbox.tsx +209 -0
  217. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/Components/AssignRolesModal.tsx +6 -1
  218. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/list.tsx +47 -150
  219. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/permissionReadme/index.tsx +21 -20
  220. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/resource/Components/modal.tsx +1 -1
  221. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/resource/list.tsx +115 -118
  222. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/Components/modal.tsx +1 -1
  223. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/list.tsx +61 -64
  224. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/components/show-drawer.tsx +1 -1
  225. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/list.tsx +187 -200
  226. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/approval-channels/ApprovalChannelModal.test.tsx +84 -0
  227. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/approval-channels/ApprovalChannelModal.tsx +141 -0
  228. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/approval-channels/approval-channel.types.ts +16 -0
  229. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/approval-channels/index.tsx +210 -0
  230. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/CreateNodeInstanceDrawer.tsx +154 -0
  231. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/CustomNode.tsx +194 -5
  232. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/DeletableEdge.tsx +76 -0
  233. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/DslView.tsx +1 -1
  234. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/EnhancedFlowRenderer.tsx +176 -22
  235. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/ExecutionStatusNode.test.tsx +62 -0
  236. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/ExecutionStatusNode.tsx +94 -5
  237. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/ExportModal.tsx +15 -10
  238. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/FlowRenderer.tsx +251 -70
  239. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/ImportModal.tsx +18 -24
  240. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/InstanceRequiredDialog.tsx +106 -0
  241. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/LookupConnectionDialog.test.tsx +45 -0
  242. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/LookupConnectionDialog.tsx +43 -0
  243. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/NewNodeDefaults.test.tsx +283 -0
  244. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/NodeEditModal.tsx +6 -7
  245. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/NodePropertyPanel.test.tsx +335 -0
  246. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/NodePropertyPanel.tsx +433 -237
  247. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/ParameterBindingEditor.tsx +179 -0
  248. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/RunWorkflowModal.tsx +18 -16
  249. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/StatusCards.tsx +20 -16
  250. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/VersionPanel.tsx +6 -4
  251. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/connections/ConnectionModal.test.tsx +68 -0
  252. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/connections/ConnectionModal.tsx +367 -0
  253. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/connections/connection.types.ts +21 -0
  254. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/connections/index.tsx +180 -0
  255. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/editor.tsx +38 -22
  256. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/hooks/useNodeInstanceLibrary.ts +41 -0
  257. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/hooks/useWorkflowAgent.ts +6 -0
  258. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/index.tsx +29 -35
  259. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/instance-detail.tsx +8 -11
  260. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/instances.tsx +4 -3
  261. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/components/NodeInstanceForm.tsx +56 -23
  262. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/create.tsx +21 -6
  263. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/edit.tsx +17 -20
  264. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/index.tsx +9 -17
  265. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/schema-form/SchemaField.tsx +311 -0
  266. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/schema-form/SchemaForm.test.tsx +218 -0
  267. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/schema-form/SchemaForm.tsx +83 -0
  268. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/schema-form/default-widgets.tsx +135 -0
  269. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/schema-form/schema-defaults.ts +36 -0
  270. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/schema-form/schema.types.ts +32 -0
  271. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/schema-form/widget-registry.test.tsx +23 -0
  272. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/schema-form/widget-registry.tsx +52 -0
  273. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/show.tsx +9 -13
  274. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/ApprovalRequestTriggerConfigEditor.tsx +39 -0
  275. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/ApprovalRuleEditor.test.tsx +20 -0
  276. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/ApprovalRuleEditor.tsx +72 -0
  277. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/ApproverSourceEditor.test.tsx +47 -0
  278. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/ApproverSourceEditor.tsx +185 -0
  279. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/CallableInputParametersEditor.test.tsx +102 -0
  280. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/CallableInputParametersEditor.tsx +150 -0
  281. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/CodeConfigEditor.tsx +103 -0
  282. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/ExternalRequestConfigEditor.test.tsx +135 -0
  283. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/ExternalRequestConfigEditor.tsx +273 -0
  284. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/ExternalWaitConfigEditor.tsx +303 -0
  285. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/HttpRequestConfigEditor.test.tsx +189 -0
  286. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/HttpRequestConfigEditor.tsx +706 -0
  287. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/HumanApprovalConfigEditor.test.tsx +86 -0
  288. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/HumanApprovalConfigEditor.tsx +458 -0
  289. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/ReturnResultConfigEditor.test.tsx +81 -0
  290. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/ReturnResultConfigEditor.tsx +281 -0
  291. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/SubjectPicker.test.tsx +61 -0
  292. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/SubjectPicker.tsx +266 -0
  293. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/SubmitApprovalResultConfigEditor.tsx +104 -0
  294. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/SubmitExternalResultConfigEditor.tsx +98 -0
  295. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/UserGroupCreateModal.tsx +70 -0
  296. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/UserGroupEditModal.tsx +138 -0
  297. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/approver-source.test.ts +25 -0
  298. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/approver-source.ts +42 -0
  299. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/widgets/subject-provider.api.ts +95 -0
  300. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/show.tsx +15 -11
  301. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/temporal-tenant/index.test.tsx +152 -0
  302. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/temporal-tenant/index.tsx +438 -141
  303. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/types/parameter-binding.ts +49 -0
  304. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/types.ts +31 -2
  305. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/utils/lookupConnection.test.ts +208 -0
  306. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/utils/lookupConnection.ts +246 -0
  307. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/utils/newNodeConfig.ts +77 -0
  308. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/utils/removeWorkflowEdges.test.ts +34 -0
  309. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/utils/removeWorkflowEdges.ts +18 -0
  310. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/utils/resolveLookupPorts.ts +66 -0
  311. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/utils/resolveOutputs.test.ts +39 -0
  312. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/utils/resolveOutputs.ts +48 -0
  313. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/utils/resolveWorkflowDisplay.test.ts +51 -0
  314. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/utils/resolveWorkflowDisplay.ts +32 -0
  315. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflowEventOutbox/edit.tsx +1 -1
  316. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflowEventOutbox/list.tsx +10 -8
  317. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflowEventOutbox/show.tsx +3 -3
  318. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/styles/antd-theme-vars.css +93 -0
  319. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/styles/antd.css +8 -8
  320. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/styles/fc.css +4 -4
  321. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/styles/index.css +40 -5
  322. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/styles/show-drawer.module.css +3 -3
  323. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/styles/show-page.module.css +3 -3
  324. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/styles/theme-styles.css +81 -0
  325. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/test/setup.ts +5 -0
  326. package/dist/lib/application/files/gadmin2-game-angle-demo/web/vite.config.ts +1 -7
  327. package/dist/lib/application/files/gadmin2-game-angle-demo/web/vitest.config.ts +12 -0
  328. package/package.json +1 -1
  329. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/components/DynamicConfigForm.tsx +0 -154
@@ -0,0 +1,66 @@
1
+ import type { WorkflowNode } from '../types';
2
+
3
+ export interface LookupPort {
4
+ id: string;
5
+ label: string;
6
+ direction: 'input' | 'output';
7
+ kind: 'CALL' | 'RETURN';
8
+ }
9
+
10
+ export interface RuntimePorts {
11
+ inputId?: string;
12
+ inputLabel: string;
13
+ outputId?: string;
14
+ outputLabel: string;
15
+ emphasized?: boolean;
16
+ }
17
+
18
+ export function resolveRuntimePorts(node: WorkflowNode): RuntimePorts {
19
+ if (node.type === 'http_request')
20
+ return {
21
+ inputId: 'request-in',
22
+ inputLabel: 'Request IN',
23
+ outputId: 'response-out',
24
+ outputLabel: 'Response OUT',
25
+ emphasized: true,
26
+ };
27
+ if (node.type === 'code')
28
+ return {
29
+ inputId: 'data-in',
30
+ inputLabel: 'Data IN',
31
+ outputId: 'result-out',
32
+ outputLabel: 'Result OUT',
33
+ emphasized: true,
34
+ };
35
+ return { inputLabel: 'IN', outputLabel: 'OUT' };
36
+ }
37
+
38
+ export function resolveLookupPorts(node: WorkflowNode): LookupPort[] {
39
+ if (node.type !== 'approval' && node.type !== 'human_approval') return [];
40
+ const subjects = Array.isArray(node.config?.subjects)
41
+ ? node.config.subjects
42
+ : [];
43
+ return subjects.flatMap((subject: any) => {
44
+ if (subject?.source !== 'DYNAMIC' || !subject.inputKey) return [];
45
+ const isGroup = subject.provider === 'USER_GROUP';
46
+ const inputKey = String(subject.inputKey);
47
+ return [
48
+ {
49
+ id: `approver:${inputKey}`,
50
+ label: isGroup ? 'User groups IN' : 'Users IN',
51
+ direction: 'input' as const,
52
+ kind: 'RETURN' as const,
53
+ },
54
+ {
55
+ id: `lookup:${inputKey}`,
56
+ label: isGroup ? 'Find user groups OUT' : 'Find users OUT',
57
+ direction: 'output' as const,
58
+ kind: 'CALL' as const,
59
+ },
60
+ ];
61
+ });
62
+ }
63
+
64
+ export function lookupInputKey(handle: string | null | undefined): string {
65
+ return handle?.startsWith('lookup:') ? handle.slice('lookup:'.length) : '';
66
+ }
@@ -0,0 +1,39 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import type { WorkflowNode } from '../types';
3
+ import { resolveOutputs } from './resolveOutputs';
4
+
5
+ describe('resolveOutputs', () => {
6
+ it('always exposes approved and rejected branches for human approval', () => {
7
+ const node = {
8
+ id: 'approval-1',
9
+ type: 'approval',
10
+ label: 'Approval',
11
+ position: { x: 0, y: 0 },
12
+ config: {},
13
+ } as WorkflowNode;
14
+
15
+ expect(resolveOutputs(node, { outputs: [] })).toEqual(['true', 'false']);
16
+ });
17
+
18
+ it('uses configured external outcomes and the timeout branch', () => {
19
+ const node = {
20
+ id: 'wait-1',
21
+ type: 'external_wait',
22
+ label: '等待签署',
23
+ position: { x: 0, y: 0 },
24
+ config: {
25
+ outcomes: [
26
+ { code: 'SIGNED', label: '已签署' },
27
+ { code: 'REJECTED', label: '已拒绝' },
28
+ ],
29
+ timeout: { durationSeconds: 3600, outcome: 'TIMEOUT' },
30
+ },
31
+ } as WorkflowNode;
32
+
33
+ expect(resolveOutputs(node, { outputs: [] })).toEqual([
34
+ 'SIGNED',
35
+ 'REJECTED',
36
+ 'TIMEOUT',
37
+ ]);
38
+ });
39
+ });
@@ -14,6 +14,9 @@ export function resolveOutputs(
14
14
  node: WorkflowNode,
15
15
  nodeTypeMeta: { outputs?: string[] | null } | undefined,
16
16
  ): string[] {
17
+ if (node.type === 'approval' || node.type === 'human_approval') {
18
+ return ['true', 'false'];
19
+ }
17
20
  if (node.type === 'switch') {
18
21
  const cases = (node.config as any)?.cases as
19
22
  | Array<{ value?: string }>
@@ -23,5 +26,50 @@ export function resolveOutputs(
23
26
  .map((c) => c?.value)
24
27
  .filter((v): v is string => typeof v === 'string' && v.length > 0);
25
28
  }
29
+ if (node.type === 'external_wait') {
30
+ const outcomes = Array.isArray((node.config as any)?.outcomes)
31
+ ? ((node.config as any).outcomes as Array<{ code?: unknown }>)
32
+ : [];
33
+ const codes = outcomes
34
+ .map((item) => item?.code)
35
+ .filter(
36
+ (code): code is string =>
37
+ typeof code === 'string' && code.trim().length > 0,
38
+ );
39
+ const timeoutOutcome = (node.config as any)?.timeout?.outcome;
40
+ return [
41
+ ...codes,
42
+ ...(typeof timeoutOutcome === 'string' && timeoutOutcome.trim()
43
+ ? [timeoutOutcome]
44
+ : []),
45
+ ];
46
+ }
26
47
  return nodeTypeMeta?.outputs ?? [];
27
48
  }
49
+
50
+ export function resolveOutputLabels(
51
+ node: WorkflowNode,
52
+ ): Record<string, string> {
53
+ if (node.type !== 'external_wait') return {};
54
+ const outcomes = Array.isArray((node.config as any)?.outcomes)
55
+ ? ((node.config as any).outcomes as Array<{
56
+ code?: unknown;
57
+ label?: unknown;
58
+ }>)
59
+ : [];
60
+ const labels = Object.fromEntries(
61
+ outcomes.flatMap((item) =>
62
+ typeof item.code === 'string' &&
63
+ item.code.trim() &&
64
+ typeof item.label === 'string' &&
65
+ item.label.trim()
66
+ ? [[item.code, item.label]]
67
+ : [],
68
+ ),
69
+ );
70
+ const timeoutOutcome = (node.config as any)?.timeout?.outcome;
71
+ if (typeof timeoutOutcome === 'string' && timeoutOutcome.trim()) {
72
+ labels[timeoutOutcome] = '已超时';
73
+ }
74
+ return labels;
75
+ }
@@ -0,0 +1,51 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import type { Workflow, WorkflowDSL } from '../types';
3
+ import { resolveWorkflowDisplay } from './resolveWorkflowDisplay';
4
+
5
+ const draftDsl: WorkflowDSL = { nodes: [], edges: [] };
6
+
7
+ function workflow(overrides: Partial<Workflow>): Workflow {
8
+ return {
9
+ id: '1',
10
+ name: 'Approval',
11
+ description: null,
12
+ status: 'DRAFT',
13
+ isEnabled: false,
14
+ dsl: null,
15
+ creator: 'test',
16
+ createdAt: '',
17
+ updatedAt: '',
18
+ ...overrides,
19
+ };
20
+ }
21
+
22
+ describe('resolveWorkflowDisplay', () => {
23
+ it('shows a saved draft even when it has not been published', () => {
24
+ expect(resolveWorkflowDisplay(workflow({ dsl: draftDsl }))).toEqual({
25
+ dsl: draftDsl,
26
+ version: null,
27
+ });
28
+ });
29
+
30
+ it('shows the immutable latest version for a published workflow', () => {
31
+ const publishedDsl: WorkflowDSL = {
32
+ nodes: [
33
+ {
34
+ id: 'start',
35
+ type: 'start',
36
+ label: 'Start',
37
+ position: { x: 0, y: 0 },
38
+ config: {},
39
+ },
40
+ ],
41
+ edges: [],
42
+ };
43
+
44
+ expect(
45
+ resolveWorkflowDisplay({
46
+ ...workflow({ status: 'PUBLISHED', dsl: draftDsl }),
47
+ versions: [{ version: 2, dsl: publishedDsl }],
48
+ }),
49
+ ).toEqual({ dsl: publishedDsl, version: 2 });
50
+ });
51
+ });
@@ -0,0 +1,32 @@
1
+ import type { Workflow, WorkflowDSL, WorkflowVersion } from '../types';
2
+
3
+ type WorkflowWithLoadedVersion = Workflow & {
4
+ versions?: Array<Partial<WorkflowVersion>>;
5
+ };
6
+
7
+ export interface WorkflowDisplay {
8
+ dsl: WorkflowDSL | null;
9
+ version: number | null;
10
+ }
11
+
12
+ /**
13
+ * Drafts are the latest saved editor state. Published workflows display the
14
+ * compiled DSL snapshot belonging to their latest immutable version.
15
+ */
16
+ export function resolveWorkflowDisplay(
17
+ workflow: WorkflowWithLoadedVersion,
18
+ ): WorkflowDisplay {
19
+ if (workflow.status === 'DRAFT' && workflow.dsl) {
20
+ return { dsl: workflow.dsl, version: null };
21
+ }
22
+
23
+ const latestVersion = workflow.versions?.[0];
24
+ if (latestVersion?.dsl) {
25
+ return {
26
+ dsl: latestVersion.dsl,
27
+ version: latestVersion.version ?? null,
28
+ };
29
+ }
30
+
31
+ return { dsl: workflow.dsl ?? null, version: null };
32
+ }
@@ -83,7 +83,7 @@ export const WorkflowEventOutboxEdit: React.FC<
83
83
  headerButtons={
84
84
  <>
85
85
  <ListButton />
86
- <RefreshButton meta={{ select: formPrismaSelect }} />
86
+ <RefreshButton />
87
87
  </>
88
88
  }
89
89
  >
@@ -95,10 +95,10 @@ export const WorkflowEventOutboxList: React.FC<
95
95
  const {
96
96
  tableProps,
97
97
  sorters: sorter,
98
- setCurrent,
98
+ setCurrentPage,
99
99
  setFilters,
100
100
  filters,
101
- tableQueryResult,
101
+ tableQuery,
102
102
  searchFormProps,
103
103
  } = useTable<WorkflowEventOutbox, HttpError>({
104
104
  meta: {
@@ -114,22 +114,24 @@ export const WorkflowEventOutboxList: React.FC<
114
114
  // onFinish: 将表单值转换为 CrudFilters 并更新筛选条件
115
115
  // 有 createdAt 字段的模型(默认)
116
116
  searchFormProps.initialValues = getSearchFormInitialValues(parsedFilters);
117
- searchFormProps.onFinish = createSearchFormOnFinish(setCurrent, setFilters);
117
+ searchFormProps.onFinish = createSearchFormOnFinish(
118
+ setCurrentPage,
119
+ setFilters,
120
+ );
118
121
 
119
122
  // 没有 createdAt 字段的模型
120
123
  // searchFormProps.initialValues = getSearchFormInitialValues(parsedFilters, { dateField: null });
121
- // searchFormProps.onFinish = createSearchFormOnFinish(setCurrent, setFilters, { dateField: null });
122
-
124
+ // searchFormProps.onFinish = createSearchFormOnFinish(setCurrentPage, setFilters, { dateField: null });
123
125
  // 使用其他日期字段(如 updatedAt)
124
126
  // searchFormProps.initialValues = getSearchFormInitialValues(parsedFilters, { dateField: 'updatedAt' });
125
- // searchFormProps.onFinish = createSearchFormOnFinish(setCurrent, setFilters, { dateField: 'updatedAt' });
127
+ // searchFormProps.onFinish = createSearchFormOnFinish(setCurrentPage, setFilters, { dateField: 'updatedAt' });
126
128
 
127
129
  // Batch operations (selection, update, delete)
128
130
  const batchOps = useBatchOperations({
129
131
  resourceName,
130
132
  apiUrl,
131
133
  requestHeaders,
132
- onSuccess: () => tableQueryResult.refetch(),
134
+ onSuccess: () => tableQuery.refetch(),
133
135
  t,
134
136
  });
135
137
 
@@ -201,7 +203,7 @@ export const WorkflowEventOutboxList: React.FC<
201
203
  importProps={importProps}
202
204
  onExport={triggerExport}
203
205
  exportLoading={exportLoading}
204
- onRefresh={() => tableQueryResult.refetch()}
206
+ onRefresh={() => tableQuery.refetch()}
205
207
  resourceName={resourceName}
206
208
  />
207
209
  ),
@@ -22,10 +22,10 @@ export const WorkflowEventOutboxShow: React.FC<
22
22
  const resourceName = 'workflowEventOutbox';
23
23
  const t = useTranslate();
24
24
 
25
- const { queryResult } = useShow<WorkflowEventOutbox>({
25
+ const { query } = useShow<WorkflowEventOutbox>({
26
26
  meta: { select: showPrismaSelect },
27
27
  });
28
- const { data, isLoading } = queryResult;
28
+ const { data, isLoading } = query;
29
29
  const record = data?.data;
30
30
 
31
31
  const [[fields, model]] = useState(() => {
@@ -60,7 +60,7 @@ export const WorkflowEventOutboxShow: React.FC<
60
60
  >
61
61
  <div
62
62
  style={{
63
- border: '1px solid #f0f0f0',
63
+ border: '1px solid var(--ant-color-border-secondary)',
64
64
  borderRadius: 8,
65
65
  overflow: 'hidden',
66
66
  }}
@@ -0,0 +1,93 @@
1
+ /**
2
+ * --ant-* 主题变量(手写,替代 antd theme.cssVar)。
3
+ *
4
+ * 背景:antd 5.x 的 cssVar 机制按 ConfigProvider 实例生成 .css-var-{id} 类并全局
5
+ * 注入变量规则;在暗→浅来回切换时,旧主题的样式 tag 清理依赖 cssinjs 的引用计数
6
+ * 与 effect 时序,组件树较大时会出现旧暗色规则滞后的竞态(表头/按钮残留暗色)。
7
+ * 弃用 cssVar 后,antd 组件改回按主题生成 hash 类(类名随主题变化,旧规则天然
8
+ * 失效),明暗切换稳健;我们页面里使用的 var(--ant-*) 则由本文件提供。
9
+ *
10
+ * 取值来源:antd 5.29 defaultAlgorithm / darkAlgorithm 的实际派生结果
11
+ * (colorError 固定 #fa541c;主色按 THEME_PRESETS 各预设分别派生)。
12
+ * 升级 antd 或调整预设色板时,需同步核对本文件。
13
+ */
14
+
15
+ /* ============ 亮色(默认蓝色预设) ============ */
16
+ html[data-mode='light'] {
17
+ --ant-color-bg-layout: #f0f2f5; /* 项目约定值,antd 默认 #f5f5f5 */
18
+ --ant-color-bg-container: #ffffff;
19
+ --ant-color-bg-elevated: #ffffff;
20
+ --ant-color-border: #d9d9d9;
21
+ --ant-color-border-secondary: #f0f0f0;
22
+ --ant-color-error-bg: #fff2e8;
23
+ --ant-color-fill-alter: rgba(0, 0, 0, 0.02);
24
+ --ant-color-fill-quaternary: rgba(0, 0, 0, 0.02);
25
+ --ant-color-fill-secondary: rgba(0, 0, 0, 0.06);
26
+ --ant-color-fill-tertiary: rgba(0, 0, 0, 0.04);
27
+ --ant-color-text: rgba(0, 0, 0, 0.88);
28
+ --ant-color-text-secondary: rgba(0, 0, 0, 0.65);
29
+ --ant-color-text-tertiary: rgba(0, 0, 0, 0.45);
30
+ --ant-color-text-quaternary: rgba(0, 0, 0, 0.25);
31
+ --ant-color-text-disabled: rgba(0, 0, 0, 0.25);
32
+ --ant-color-warning-bg: #fffbe6;
33
+
34
+ --ant-color-primary: #1677ff;
35
+ --ant-color-primary-bg: #e6f4ff;
36
+ --ant-color-primary-border: #91caff;
37
+ }
38
+
39
+ /* ============ 暗色(默认蓝色预设) ============ */
40
+ html[data-mode='dark'] {
41
+ --ant-color-bg-layout: #000000;
42
+ --ant-color-bg-container: #141414;
43
+ --ant-color-bg-elevated: #1f1f1f;
44
+ --ant-color-border: #424242;
45
+ --ant-color-border-secondary: #303030;
46
+ --ant-color-error-bg: #2b1611;
47
+ --ant-color-fill-alter: rgba(255, 255, 255, 0.04);
48
+ --ant-color-fill-quaternary: rgba(255, 255, 255, 0.04);
49
+ --ant-color-fill-secondary: rgba(255, 255, 255, 0.12);
50
+ --ant-color-fill-tertiary: rgba(255, 255, 255, 0.08);
51
+ --ant-color-text: rgba(255, 255, 255, 0.85);
52
+ --ant-color-text-secondary: rgba(255, 255, 255, 0.65);
53
+ --ant-color-text-tertiary: rgba(255, 255, 255, 0.45);
54
+ --ant-color-text-quaternary: rgba(255, 255, 255, 0.25);
55
+ --ant-color-text-disabled: rgba(255, 255, 255, 0.25);
56
+ --ant-color-warning-bg: #2b2111;
57
+
58
+ --ant-color-primary: #1668dc;
59
+ --ant-color-primary-bg: #15325b;
60
+ --ant-color-primary-border: #15325b;
61
+ }
62
+
63
+ /* ============ 主色预设覆盖(仅 primary 系列随预设变化) ============ */
64
+ html[data-preset='teal'][data-mode='light'] {
65
+ --ant-color-primary: #13a8a8;
66
+ --ant-color-primary-bg: #d3e8e5;
67
+ --ant-color-primary-border: #7acfc6;
68
+ }
69
+ html[data-preset='teal'][data-mode='dark'] {
70
+ --ant-color-primary: #139292;
71
+ --ant-color-primary-bg: #144040;
72
+ --ant-color-primary-border: #144040;
73
+ }
74
+ html[data-preset='purple'][data-mode='light'] {
75
+ --ant-color-primary: #722ed1;
76
+ --ant-color-primary-bg: #f9f0ff;
77
+ --ant-color-primary-border: #d3adf7;
78
+ }
79
+ html[data-preset='purple'][data-mode='dark'] {
80
+ --ant-color-primary: #642ab5;
81
+ --ant-color-primary-bg: #301c4d;
82
+ --ant-color-primary-border: #301c4d;
83
+ }
84
+ html[data-preset='orange'][data-mode='light'] {
85
+ --ant-color-primary: #fa8c16;
86
+ --ant-color-primary-bg: #fff7e6;
87
+ --ant-color-primary-border: #ffd591;
88
+ }
89
+ html[data-preset='orange'][data-mode='dark'] {
90
+ --ant-color-primary: #d87a16;
91
+ --ant-color-primary-bg: #593815;
92
+ --ant-color-primary-border: #593815;
93
+ }
@@ -5,7 +5,7 @@
5
5
 
6
6
  .ant-modal-header {
7
7
  padding: 20px 24px;
8
- border-bottom: 1px solid #d9d9d9;
8
+ border-bottom: 1px solid var(--ant-color-border);
9
9
  margin-bottom: 0px;
10
10
  }
11
11
 
@@ -19,7 +19,7 @@
19
19
 
20
20
  .ant-modal-footer {
21
21
  padding: 20px 24px;
22
- border-top: 1px solid #d9d9d9;
22
+ border-top: 1px solid var(--ant-color-border);
23
23
  margin-top: 0px;
24
24
  }
25
25
 
@@ -43,7 +43,7 @@
43
43
 
44
44
  .ant-select.kanban-users-form-select {
45
45
  .ant-select-selector {
46
- background-color: #fff;
46
+ background-color: var(--ant-color-bg-container);
47
47
  }
48
48
  }
49
49
 
@@ -77,7 +77,7 @@
77
77
  .ant-pagination-total-text {
78
78
  margin-right: auto;
79
79
  font-size: 14px !important;
80
- color: rgba(0, 0, 0, 0.45) !important;
80
+ color: var(--ant-color-text-tertiary) !important;
81
81
  margin-inline-end: auto !important;
82
82
  }
83
83
 
@@ -94,11 +94,11 @@
94
94
  }
95
95
 
96
96
  th.ant-table-column-sort {
97
- background-color: #fafafa !important;
97
+ background-color: var(--ant-color-fill-alter) !important;
98
98
  }
99
99
 
100
100
  td.ant-table-column-sort {
101
- background-color: #ffffff !important;
101
+ background-color: var(--ant-color-bg-container) !important;
102
102
  }
103
103
 
104
104
  .ant-table-tbody > tr > td {
@@ -131,8 +131,8 @@ tr.ant-table-measure-row {
131
131
  }
132
132
 
133
133
  .ant-picker-input > input[disabled] {
134
- color: #777 !important;
134
+ color: var(--ant-color-text-disabled) !important;
135
135
  }
136
136
  .ant-table-expanded-row-level-1 {
137
- background-color: #eee;
137
+ background-color: var(--ant-color-fill-secondary);
138
138
  }
@@ -1,10 +1,10 @@
1
1
  :root {
2
- --fc-today-bg-color: rgba(230, 244, 255, 1);
2
+ --fc-today-bg-color: var(--ant-color-primary-bg);
3
3
  }
4
4
 
5
5
  .fc-daygrid-day-number,
6
6
  .fc-col-header-cell-cushion {
7
- color: rgba(0, 0, 0, 0.75) !important;
7
+ color: var(--ant-color-text) !important;
8
8
  font-weight: 400;
9
9
  }
10
10
 
@@ -21,7 +21,7 @@
21
21
  .fc-event {
22
22
  .fc-event-title,
23
23
  .fc-event-time {
24
- color: rgba(0, 0, 0, 0.65);
24
+ color: var(--ant-color-text-secondary);
25
25
  font-weight: 400 !important;
26
26
  font-size: 12px;
27
27
  }
@@ -44,7 +44,7 @@
44
44
  .fc-timegrid-slot-label-cushion,
45
45
  .fc-list-day-text,
46
46
  .fc-list-day-side-text {
47
- color: rgba(0, 0, 0, 0.75);
47
+ color: var(--ant-color-text);
48
48
  }
49
49
 
50
50
  .fc-list-day {
@@ -46,13 +46,13 @@
46
46
  .ant-text,
47
47
  .anticon {
48
48
  &.primary {
49
- color: rgba(0, 0, 0, 0.85);
49
+ color: var(--ant-color-text);
50
50
  }
51
51
  &.secondary {
52
- color: rgba(0, 0, 0, 0.65);
52
+ color: var(--ant-color-text-secondary);
53
53
  }
54
54
  &.tertiary {
55
- color: rgba(0, 0, 0, 0.45);
55
+ color: var(--ant-color-text-tertiary);
56
56
  }
57
57
  }
58
58
 
@@ -103,7 +103,7 @@
103
103
  .ant-picker-prefix,
104
104
  .ant-input-prefix,
105
105
  .ant-select-prefix {
106
- color: gray !important;
106
+ color: var(--ant-color-text-quaternary) !important;
107
107
  }
108
108
 
109
109
  .flex-center {
@@ -119,10 +119,45 @@
119
119
  }
120
120
 
121
121
  .cost-cente-cell-bg-color {
122
- background-color: #fffbe6;
122
+ background-color: var(--ant-color-warning-bg);
123
123
  }
124
124
 
125
125
  .endpoint-self-select .ant-select-selection-item {
126
126
  display: inline-flex !important;
127
127
  justify-content: flex-end !important;
128
128
  }
129
+
130
+ /* 卡片内的筛选表单:去掉 Form.Item 底部间距,避免卡片下方空隙过大 */
131
+ .card-search-bar .ant-form-item {
132
+ margin-bottom: 0;
133
+ }
134
+
135
+ /* 卡片内的表格:去掉分页器底部间距,避免卡片下方空隙过大 */
136
+ .card-table .ant-table-pagination.ant-pagination {
137
+ margin-bottom: 0;
138
+ }
139
+
140
+ /* 批量操作栏为空(无选中且非检查模式)时,隐藏占位容器避免多余空隙 */
141
+ .card-table > .ant-card-body > div:empty {
142
+ display: none;
143
+ }
144
+
145
+ /*
146
+ * Refine CRUD 页头统一为「压扁白卡」风格(与 PageHeader/HEADER_CARD_PROPS 一致)。
147
+ * Refine Create/Edit/Show/List 的页头是 pro-layout PageHeader(ghost 透明底、
148
+ * 根节点内联 padding:0),其标题行渲染为 .ant-page-header-heading,
149
+ * 内容(表单/卡片)在兄弟节点 .ant-page-header-content,因此只给标题行加白卡样式。
150
+ * cssinjs 生成的类优先级更高,box 属性需 !important。
151
+ */
152
+ .ant-page-header-heading {
153
+ background: var(--ant-color-bg-container);
154
+ border: 1px solid var(--ant-color-border-secondary);
155
+ border-radius: 8px;
156
+ padding: 12px 24px !important;
157
+ margin-bottom: 16px !important;
158
+ }
159
+
160
+ /* pro-layout 默认给内容区 12px 上 padding,归零使页头卡与内容卡间距恰为 16px */
161
+ .ant-page-header-content {
162
+ padding-top: 0 !important;
163
+ }
@@ -2,17 +2,17 @@
2
2
  display: flex;
3
3
  justify-content: flex-end;
4
4
  padding: 16px;
5
- background: #fff;
5
+ background: var(--ant-color-bg-container);
6
6
  }
7
7
 
8
8
  .container {
9
9
  padding: 16px;
10
- background: #f5f5f5;
10
+ background: var(--ant-color-bg-layout);
11
11
  }
12
12
 
13
13
  .container > div {
14
14
  padding: 16px;
15
- background: #fff;
15
+ background: var(--ant-color-bg-container);
16
16
  border-radius: 2px;
17
17
  margin-bottom: 16px;
18
18
  }
@@ -1,5 +1,5 @@
1
1
  .contentProps {
2
- background-color: #f5f5f5;
2
+ background-color: var(--ant-color-bg-layout);
3
3
  padding: 0;
4
4
  margin-top: 1rem;
5
5
  }
@@ -10,12 +10,12 @@
10
10
 
11
11
  .container {
12
12
  padding: 0px;
13
- background: #f5f5f5;
13
+ background: var(--ant-color-bg-layout);
14
14
  }
15
15
 
16
16
  .container > div {
17
17
  padding: 16px;
18
- background: #fff;
18
+ background: var(--ant-color-bg-container);
19
19
  border-radius: 2px;
20
20
  margin-bottom: 16px;
21
21
  }