openxiangda-contracts 2.34.0 → 2.43.0

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 (68) hide show
  1. package/dist/browser.d.ts +8 -0
  2. package/dist/browser.d.ts.map +1 -1
  3. package/dist/browser.js +8 -0
  4. package/dist/browser.js.map +1 -1
  5. package/dist/index.d.ts +9 -0
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +9 -0
  8. package/dist/index.js.map +1 -1
  9. package/dist/native-compiler/compiler.d.ts +1 -1
  10. package/dist/native-compiler/compiler.d.ts.map +1 -1
  11. package/dist/native-compiler/compiler.js +99 -5
  12. package/dist/native-compiler/compiler.js.map +1 -1
  13. package/dist/native-compiler/index.cjs +6 -5
  14. package/dist/native-compiler/index.d.ts +10 -0
  15. package/dist/native-compiler/index.d.ts.map +1 -1
  16. package/dist/native-compiler/index.js +6 -5
  17. package/dist/native-compiler/role-membership-batch.d.ts +73 -0
  18. package/dist/native-compiler/role-membership-batch.d.ts.map +1 -0
  19. package/dist/native-compiler/role-membership-batch.js +91 -0
  20. package/dist/native-compiler/role-membership-batch.js.map +1 -0
  21. package/dist/native-compiler/workflow-assignment-routing.d.ts +121 -0
  22. package/dist/native-compiler/workflow-assignment-routing.d.ts.map +1 -0
  23. package/dist/native-compiler/workflow-assignment-routing.js +113 -0
  24. package/dist/native-compiler/workflow-assignment-routing.js.map +1 -0
  25. package/dist/native-compiler/workflow-automatic-cc.d.ts +20 -0
  26. package/dist/native-compiler/workflow-automatic-cc.d.ts.map +1 -0
  27. package/dist/native-compiler/workflow-automatic-cc.js +36 -0
  28. package/dist/native-compiler/workflow-automatic-cc.js.map +1 -0
  29. package/dist/native-compiler/workflow-business-step-identity.d.ts +12 -0
  30. package/dist/native-compiler/workflow-business-step-identity.d.ts.map +1 -0
  31. package/dist/native-compiler/workflow-business-step-identity.js +11 -0
  32. package/dist/native-compiler/workflow-business-step-identity.js.map +1 -0
  33. package/dist/native-compiler/workflow-business-step.d.ts +119 -0
  34. package/dist/native-compiler/workflow-business-step.d.ts.map +1 -0
  35. package/dist/native-compiler/workflow-business-step.js +357 -0
  36. package/dist/native-compiler/workflow-business-step.js.map +1 -0
  37. package/dist/native-compiler/workflow-delegation-administration.d.ts +1084 -0
  38. package/dist/native-compiler/workflow-delegation-administration.d.ts.map +1 -0
  39. package/dist/native-compiler/workflow-delegation-administration.js +68 -0
  40. package/dist/native-compiler/workflow-delegation-administration.js.map +1 -0
  41. package/dist/native-compiler/workflow-graph.d.ts +182 -0
  42. package/dist/native-compiler/workflow-graph.d.ts.map +1 -0
  43. package/dist/native-compiler/workflow-graph.js +201 -0
  44. package/dist/native-compiler/workflow-graph.js.map +1 -0
  45. package/dist/native-compiler/workflow-node-administration.d.ts +46 -0
  46. package/dist/native-compiler/workflow-node-administration.d.ts.map +1 -0
  47. package/dist/native-compiler/workflow-node-administration.js +105 -0
  48. package/dist/native-compiler/workflow-node-administration.js.map +1 -0
  49. package/dist/native-compiler/workflow-task-page.d.ts +119 -0
  50. package/dist/native-compiler/workflow-task-page.d.ts.map +1 -0
  51. package/dist/native-compiler/workflow-task-page.js +225 -0
  52. package/dist/native-compiler/workflow-task-page.js.map +1 -0
  53. package/dist/native-version.d.ts +10 -0
  54. package/dist/native-version.d.ts.map +1 -1
  55. package/dist/native-version.js +10 -0
  56. package/dist/native-version.js.map +1 -1
  57. package/dist/native.d.ts +2 -0
  58. package/dist/native.d.ts.map +1 -1
  59. package/dist/native.js.map +1 -1
  60. package/dist/schemas.d.ts +4745 -1006
  61. package/dist/schemas.d.ts.map +1 -1
  62. package/dist/schemas.js +217 -0
  63. package/dist/schemas.js.map +1 -1
  64. package/dist/types.d.ts +218 -3
  65. package/dist/types.d.ts.map +1 -1
  66. package/dist/types.js +13 -0
  67. package/dist/types.js.map +1 -1
  68. package/package.json +1 -1
package/dist/browser.d.ts CHANGED
@@ -11,10 +11,18 @@ export * from './surface.js';
11
11
  export * from './types.js';
12
12
  export * from './workflow-summary.js';
13
13
  export * from './workflow-detail.js';
14
+ export * from './native-compiler/workflow-delegation-administration.js';
15
+ export * from './native-compiler/workflow-graph.js';
16
+ export * from './native-compiler/workflow-node-administration.js';
17
+ export * from './native-compiler/workflow-automatic-cc.js';
18
+ export * from './native-compiler/workflow-business-step.js';
19
+ export * from './native-compiler/workflow-task-page.js';
20
+ export * from './native-compiler/workflow-assignment-routing.js';
14
21
  export * from './validation.js';
15
22
  export * from './workflow-correction.js';
16
23
  export * from './native-compiler/data-audit-access.js';
17
24
  export * from './process-resolution.js';
18
25
  export * from './application-diagnostics.js';
19
26
  export * from './native-compiler/unique-keys.js';
27
+ export * from './native-compiler/role-membership-batch.js';
20
28
  //# sourceMappingURL=browser.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AAAA,2FAA2F;AAC3F,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wCAAwC,CAAC;AAEvD,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAE7C,cAAc,kCAAkC,CAAC"}
1
+ {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AAAA,2FAA2F;AAC3F,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yDAAyD,CAAC;AACxE,cAAc,qCAAqC,CAAC;AACpD,cAAc,mDAAmD,CAAC;AAClE,cAAc,4CAA4C,CAAC;AAC3D,cAAc,6CAA6C,CAAC;AAC5D,cAAc,yCAAyC,CAAC;AACxD,cAAc,kDAAkD,CAAC;AACjE,cAAc,iBAAiB,CAAC;AAChC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wCAAwC,CAAC;AAEvD,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAE7C,cAAc,kCAAkC,CAAC;AACjD,cAAc,4CAA4C,CAAC"}
package/dist/browser.js CHANGED
@@ -11,10 +11,18 @@ export * from './surface.js';
11
11
  export * from './types.js';
12
12
  export * from './workflow-summary.js';
13
13
  export * from './workflow-detail.js';
14
+ export * from './native-compiler/workflow-delegation-administration.js';
15
+ export * from './native-compiler/workflow-graph.js';
16
+ export * from './native-compiler/workflow-node-administration.js';
17
+ export * from './native-compiler/workflow-automatic-cc.js';
18
+ export * from './native-compiler/workflow-business-step.js';
19
+ export * from './native-compiler/workflow-task-page.js';
20
+ export * from './native-compiler/workflow-assignment-routing.js';
14
21
  export * from './validation.js';
15
22
  export * from './workflow-correction.js';
16
23
  export * from './native-compiler/data-audit-access.js';
17
24
  export * from './process-resolution.js';
18
25
  export * from './application-diagnostics.js';
19
26
  export * from './native-compiler/unique-keys.js';
27
+ export * from './native-compiler/role-membership-batch.js';
20
28
  //# sourceMappingURL=browser.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"browser.js","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AAAA,2FAA2F;AAC3F,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wCAAwC,CAAC;AAEvD,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAE7C,cAAc,kCAAkC,CAAC"}
1
+ {"version":3,"file":"browser.js","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AAAA,2FAA2F;AAC3F,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yDAAyD,CAAC;AACxE,cAAc,qCAAqC,CAAC;AACpD,cAAc,mDAAmD,CAAC;AAClE,cAAc,4CAA4C,CAAC;AAC3D,cAAc,6CAA6C,CAAC;AAC5D,cAAc,yCAAyC,CAAC;AACxD,cAAc,kDAAkD,CAAC;AACjE,cAAc,iBAAiB,CAAC;AAChC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wCAAwC,CAAC;AAEvD,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAE7C,cAAc,kCAAkC,CAAC;AACjD,cAAc,4CAA4C,CAAC"}
package/dist/index.d.ts CHANGED
@@ -15,6 +15,13 @@ export * from './cli.js';
15
15
  export * from './types.js';
16
16
  export * from './workflow-summary.js';
17
17
  export * from './workflow-detail.js';
18
+ export * from './native-compiler/workflow-delegation-administration.js';
19
+ export * from './native-compiler/workflow-graph.js';
20
+ export * from './native-compiler/workflow-node-administration.js';
21
+ export * from './native-compiler/workflow-automatic-cc.js';
22
+ export * from './native-compiler/workflow-business-step.js';
23
+ export * from './native-compiler/workflow-task-page.js';
24
+ export * from './native-compiler/workflow-assignment-routing.js';
18
25
  export * from './validation.js';
19
26
  export * from './workflow-correction.js';
20
27
  export * from './native-compiler/workflow-instance-policy.js';
@@ -22,4 +29,6 @@ export { validateDataFieldDefinition } from './data-field-validation.js';
22
29
  export * from './process-resolution.js';
23
30
  export * from './application-diagnostics.js';
24
31
  export * from './native-compiler/unique-keys.js';
32
+ export * from './native-compiler/role-membership-batch.js';
33
+ export * from './native-compiler/workflow-business-step-identity.js';
25
34
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,0CAA0C,CAAC;AACzD,cAAc,wCAAwC,CAAC;AACvD,cAAc,SAAS,CAAC;AACxB,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,0BAA0B,CAAC;AACzC,cAAc,+CAA+C,CAAC;AAC9D,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AAEzE,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAE7C,cAAc,kCAAkC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,0CAA0C,CAAC;AACzD,cAAc,wCAAwC,CAAC;AACvD,cAAc,SAAS,CAAC;AACxB,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yDAAyD,CAAC;AACxE,cAAc,qCAAqC,CAAC;AACpD,cAAc,mDAAmD,CAAC;AAClE,cAAc,4CAA4C,CAAC;AAC3D,cAAc,6CAA6C,CAAC;AAC5D,cAAc,yCAAyC,CAAC;AACxD,cAAc,kDAAkD,CAAC;AACjE,cAAc,iBAAiB,CAAC;AAChC,cAAc,0BAA0B,CAAC;AACzC,cAAc,+CAA+C,CAAC;AAC9D,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AAEzE,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAE7C,cAAc,kCAAkC,CAAC;AACjD,cAAc,4CAA4C,CAAC;AAE3D,cAAc,sDAAsD,CAAC"}
package/dist/index.js CHANGED
@@ -15,6 +15,13 @@ export * from './cli.js';
15
15
  export * from './types.js';
16
16
  export * from './workflow-summary.js';
17
17
  export * from './workflow-detail.js';
18
+ export * from './native-compiler/workflow-delegation-administration.js';
19
+ export * from './native-compiler/workflow-graph.js';
20
+ export * from './native-compiler/workflow-node-administration.js';
21
+ export * from './native-compiler/workflow-automatic-cc.js';
22
+ export * from './native-compiler/workflow-business-step.js';
23
+ export * from './native-compiler/workflow-task-page.js';
24
+ export * from './native-compiler/workflow-assignment-routing.js';
18
25
  export * from './validation.js';
19
26
  export * from './workflow-correction.js';
20
27
  export * from './native-compiler/workflow-instance-policy.js';
@@ -22,4 +29,6 @@ export { validateDataFieldDefinition } from './data-field-validation.js';
22
29
  export * from './process-resolution.js';
23
30
  export * from './application-diagnostics.js';
24
31
  export * from './native-compiler/unique-keys.js';
32
+ export * from './native-compiler/role-membership-batch.js';
33
+ export * from './native-compiler/workflow-business-step-identity.js';
25
34
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,0CAA0C,CAAC;AACzD,cAAc,wCAAwC,CAAC;AACvD,cAAc,SAAS,CAAC;AACxB,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,0BAA0B,CAAC;AACzC,cAAc,+CAA+C,CAAC;AAC9D,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AAEzE,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAE7C,cAAc,kCAAkC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,0CAA0C,CAAC;AACzD,cAAc,wCAAwC,CAAC;AACvD,cAAc,SAAS,CAAC;AACxB,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yDAAyD,CAAC;AACxE,cAAc,qCAAqC,CAAC;AACpD,cAAc,mDAAmD,CAAC;AAClE,cAAc,4CAA4C,CAAC;AAC3D,cAAc,6CAA6C,CAAC;AAC5D,cAAc,yCAAyC,CAAC;AACxD,cAAc,kDAAkD,CAAC;AACjE,cAAc,iBAAiB,CAAC;AAChC,cAAc,0BAA0B,CAAC;AACzC,cAAc,+CAA+C,CAAC;AAC9D,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AAEzE,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAE7C,cAAc,kCAAkC,CAAC;AACjD,cAAc,4CAA4C,CAAC;AAE3D,cAAc,sDAAsD,CAAC"}
@@ -18,7 +18,7 @@ export declare const NATIVE_CONTRACT_CAPACITY_V2: Readonly<{
18
18
  readonly adminNavigationItems: 500;
19
19
  }>;
20
20
  export declare const DATA_EVENT_TYPES_V2: readonly ["openxiangda.data.record.created.v2", "openxiangda.data.record.updated.v2", "openxiangda.data.record.deleted.v2"];
21
- export declare const WORKFLOW_EVENT_TYPES_V2: readonly ["openxiangda.workflow.instance.started.v2", "openxiangda.workflow.instance.cc_added.v2", "openxiangda.workflow.instance.completed.v2", "openxiangda.workflow.instance.rejected.v2", "openxiangda.workflow.instance.returned.v2", "openxiangda.workflow.instance.resumed.v2", "openxiangda.workflow.instance.withdrawn.v2", "openxiangda.workflow.instance.terminated.v2", "openxiangda.workflow.task.created.v2", "openxiangda.workflow.task.assigned.v2", "openxiangda.workflow.task.assignment_pending.v2", "openxiangda.workflow.task.assignment_resolution_failed.v2", "openxiangda.workflow.task.approved.v2", "openxiangda.workflow.task.completed.v2", "openxiangda.workflow.task.rejected.v2", "openxiangda.workflow.task.returned.v2", "openxiangda.workflow.task.resubmitted.v2", "openxiangda.workflow.task.transferred.v2", "openxiangda.workflow.task.reassigned.v2", "openxiangda.workflow.task.delegated.v2", "openxiangda.workflow.task.assignee_added.v2", "openxiangda.workflow.task.cancelled.v2", "openxiangda.workflow.participant.activated.v2", "openxiangda.workflow.participant.completed.v2", "openxiangda.workflow.participant.rejected.v2", "openxiangda.workflow.participant.returned.v2", "openxiangda.workflow.participant.transferred.v2", "openxiangda.workflow.participant.reassigned.v2", "openxiangda.workflow.participant.delegated.v2", "openxiangda.workflow.participant.added.v2", "openxiangda.workflow.participant.suspended.v2", "openxiangda.workflow.participant.resumed.v2", "openxiangda.workflow.participant.cancelled.v2"];
21
+ export declare const WORKFLOW_EVENT_TYPES_V2: readonly ["openxiangda.workflow.step.requested.v2", "openxiangda.workflow.step.result_received.v2", "openxiangda.workflow.step.completed.v2", "openxiangda.workflow.step.continuation_failed.v2", "openxiangda.workflow.instance.started.v2", "openxiangda.workflow.instance.cc_added.v2", "openxiangda.workflow.instance.completed.v2", "openxiangda.workflow.instance.rejected.v2", "openxiangda.workflow.instance.returned.v2", "openxiangda.workflow.instance.resumed.v2", "openxiangda.workflow.instance.withdrawn.v2", "openxiangda.workflow.instance.terminated.v2", "openxiangda.workflow.task.created.v2", "openxiangda.workflow.task.assigned.v2", "openxiangda.workflow.task.assignment_pending.v2", "openxiangda.workflow.task.assignment_resolution_failed.v2", "openxiangda.workflow.task.approved.v2", "openxiangda.workflow.task.completed.v2", "openxiangda.workflow.task.rejected.v2", "openxiangda.workflow.task.returned.v2", "openxiangda.workflow.task.resubmitted.v2", "openxiangda.workflow.task.transferred.v2", "openxiangda.workflow.task.reassigned.v2", "openxiangda.workflow.task.delegated.v2", "openxiangda.workflow.task.assignee_added.v2", "openxiangda.workflow.task.cancelled.v2", "openxiangda.workflow.participant.activated.v2", "openxiangda.workflow.participant.completed.v2", "openxiangda.workflow.participant.rejected.v2", "openxiangda.workflow.participant.returned.v2", "openxiangda.workflow.participant.transferred.v2", "openxiangda.workflow.participant.reassigned.v2", "openxiangda.workflow.participant.delegated.v2", "openxiangda.workflow.participant.added.v2", "openxiangda.workflow.participant.suspended.v2", "openxiangda.workflow.participant.resumed.v2", "openxiangda.workflow.participant.cancelled.v2"];
22
22
  type JsonObject = Record<string, any>;
23
23
  export interface NativeConfigurationCompilerInput {
24
24
  appCode: string;
@@ -1 +1 @@
1
- {"version":3,"file":"compiler.d.ts","sourceRoot":"","sources":["../../src/native-compiler/compiler.ts"],"names":[],"mappings":"AAcA,OAAO,EAEL,KAAK,kCAAkC,IAAI,uCAAuC,EACnF,MAAM,aAAa,CAAC;AAyBrB,QAAA,MAAM,iBAAiB,mDAAmD,CAAC;AAC3E,QAAA,MAAM,yBAAyB,YAA2C,CAAC;AAgF3E,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;EAe7B,CAAC;AACZ,eAAO,MAAM,mBAAmB,6HAItB,CAAC;AACX,eAAO,MAAM,uBAAuB,u/CAkC1B,CAAC;AAGX,KAAK,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAEtC,MAAM,WAAW,gCAAgC;IAC/C,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC;IAC1C,aAAa,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC;IAC5C,oBAAoB,EAAE,MAAM,CAAC;IAC7B,sBAAsB,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,6BAA6B,CAAC,CAAC,GAAG,UAAU;IAC3D,KAAK,EAAE,CAAC,CAAC;IACT,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,iCAAiC;IAChD,aAAa,EAAE,OAAO,iBAAiB,CAAC;IACxC,uBAAuB,EAAE,OAAO,yBAAyB,CAAC;IAC1D,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE;QACN,YAAY,EAAE,MAAM,CAAC;QACrB,cAAc,EAAE,MAAM,CAAC;QACvB,gBAAgB,EAAE,MAAM,CAAC;KAC1B,CAAC;IACF,WAAW,EAAE;QACX,KAAK,EAAE,6BAA6B,CAAC;QACrC,IAAI,EAAE,6BAA6B,CAAC;QACpC,MAAM,EAAE,6BAA6B,CAAC;QACtC,SAAS,EAAE,6BAA6B,CAAC;QACzC,OAAO,EAAE,6BAA6B,CAAC;QACvC,SAAS,EAAE,6BAA6B,CAAC;KAC1C,CAAC;IACF,4BAA4B,EAAE,uCAAuC,EAAE,CAAC;IACxE,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,qBAAa,gCAAiC,SAAQ,KAAK;IACzD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gBAG3C,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,WAAW,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM;CAY5C;AAED,wBAAgB,qCAAqC,CACnD,KAAK,EAAE,gCAAgC,GACtC,iCAAiC,CAmJnC;AAED;;;GAGG;AACH,wBAAgB,qCAAqC,CACnD,MAAM,EAAE,UAAU,GACjB,uCAAuC,EAAE,CAuT3C;AAED,MAAM,WAAW,wBAAwB;IACvC,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC/B;AAED;;;;GAIG;AACH,wBAAgB,gCAAgC,CAAC,KAAK,EAAE;IACtD,SAAS,EAAE,UAAU,EAAE,CAAC;IACxB,YAAY,EAAE,UAAU,EAAE,CAAC;IAC3B,aAAa,EAAE,UAAU,EAAE,CAAC;IAC5B,eAAe,CAAC,EAAE,UAAU,EAAE,CAAC;CAChC,GAAG,wBAAwB,EAAE,CA4J7B"}
1
+ {"version":3,"file":"compiler.d.ts","sourceRoot":"","sources":["../../src/native-compiler/compiler.ts"],"names":[],"mappings":"AAoBA,OAAO,EAEL,KAAK,kCAAkC,IAAI,uCAAuC,EACnF,MAAM,aAAa,CAAC;AAyBrB,QAAA,MAAM,iBAAiB,mDAAmD,CAAC;AAC3E,QAAA,MAAM,yBAAyB,YAA2C,CAAC;AAgF3E,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;EAe7B,CAAC;AACZ,eAAO,MAAM,mBAAmB,6HAItB,CAAC;AACX,eAAO,MAAM,uBAAuB,+qDAsC1B,CAAC;AAGX,KAAK,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAEtC,MAAM,WAAW,gCAAgC;IAC/C,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC;IAC1C,aAAa,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC;IAC5C,oBAAoB,EAAE,MAAM,CAAC;IAC7B,sBAAsB,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,6BAA6B,CAAC,CAAC,GAAG,UAAU;IAC3D,KAAK,EAAE,CAAC,CAAC;IACT,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,iCAAiC;IAChD,aAAa,EAAE,OAAO,iBAAiB,CAAC;IACxC,uBAAuB,EAAE,OAAO,yBAAyB,CAAC;IAC1D,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE;QACN,YAAY,EAAE,MAAM,CAAC;QACrB,cAAc,EAAE,MAAM,CAAC;QACvB,gBAAgB,EAAE,MAAM,CAAC;KAC1B,CAAC;IACF,WAAW,EAAE;QACX,KAAK,EAAE,6BAA6B,CAAC;QACrC,IAAI,EAAE,6BAA6B,CAAC;QACpC,MAAM,EAAE,6BAA6B,CAAC;QACtC,SAAS,EAAE,6BAA6B,CAAC;QACzC,OAAO,EAAE,6BAA6B,CAAC;QACvC,SAAS,EAAE,6BAA6B,CAAC;KAC1C,CAAC;IACF,4BAA4B,EAAE,uCAAuC,EAAE,CAAC;IACxE,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,qBAAa,gCAAiC,SAAQ,KAAK;IACzD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gBAG3C,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,WAAW,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM;CAY5C;AAED,wBAAgB,qCAAqC,CACnD,KAAK,EAAE,gCAAgC,GACtC,iCAAiC,CAmJnC;AAED;;;GAGG;AACH,wBAAgB,qCAAqC,CACnD,MAAM,EAAE,UAAU,GACjB,uCAAuC,EAAE,CAyV3C;AAED,MAAM,WAAW,wBAAwB;IACvC,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC/B;AAED;;;;GAIG;AACH,wBAAgB,gCAAgC,CAAC,KAAK,EAAE;IACtD,SAAS,EAAE,UAAU,EAAE,CAAC;IACxB,YAAY,EAAE,UAAU,EAAE,CAAC;IAC3B,aAAa,EAAE,UAAU,EAAE,CAAC;IAC5B,eAAe,CAAC,EAAE,UAAU,EAAE,CAAC;CAChC,GAAG,wBAAwB,EAAE,CA4J7B"}
@@ -6,6 +6,12 @@ import { compileNativeEventAction } from './event-action.js';
6
6
  import { projectNativeDataResourceViewV2 } from './data-surface.js';
7
7
  import { hasDataAuditReadPolicy, isDataAuditMetadataField } from './data-audit-access.js';
8
8
  import { validateWorkflowInstanceCommandPolicies } from './workflow-instance-policy.js';
9
+ import { validateWorkflowReadability } from './workflow-graph.js';
10
+ import { validateWorkflowAdministration } from './workflow-node-administration.js';
11
+ import { validateWorkflowAutomaticCc } from './workflow-automatic-cc.js';
12
+ import { validateWorkflowTaskPages } from './workflow-task-page.js';
13
+ import { validateWorkflowBusinessSteps, compileWorkflowBusinessStepHandlers, validateWorkflowBusinessStepSubscriptions, WORKFLOW_BUSINESS_STEP_EVENT, WORKFLOW_BUSINESS_STEP_EVENTS } from './workflow-business-step.js';
14
+ import { validateWorkflowAssignmentRoutingBindings, validateWorkflowAssignmentRoutingPolicy } from './workflow-assignment-routing.js';
9
15
  import * as crypto from 'crypto';
10
16
  import { OPENXIANGDA_COMPILER_CONTRACT_VERSION as OPENXIANGDA_V2_COMPILER_CONTRACT_VERSION, PLATFORM_CAPABILITY_CONTRACT_VERSIONS as OPENXIANGDA_V2_PLATFORM_CAPABILITY_CONTRACT_VERSIONS, } from '../native-version.js';
11
17
  import { canonicalJson, sha256Digest as sha256Canonical } from '../canonical.js';
@@ -118,6 +124,10 @@ export const DATA_EVENT_TYPES_V2 = [
118
124
  'openxiangda.data.record.deleted.v2',
119
125
  ];
120
126
  export const WORKFLOW_EVENT_TYPES_V2 = [
127
+ WORKFLOW_BUSINESS_STEP_EVENT,
128
+ 'openxiangda.workflow.step.result_received.v2',
129
+ 'openxiangda.workflow.step.completed.v2',
130
+ 'openxiangda.workflow.step.continuation_failed.v2',
121
131
  'openxiangda.workflow.instance.started.v2',
122
132
  'openxiangda.workflow.instance.cc_added.v2',
123
133
  'openxiangda.workflow.instance.completed.v2',
@@ -291,10 +301,24 @@ export function compileRequiredPlatformCapabilitiesV3(config) {
291
301
  config.events.subscriptions.some((subscription) => subscription.platformAccess?.managedFileCopies);
292
302
  const usesNotification = operations.some(operation => operation.platformAccess?.notification) ||
293
303
  config.events.subscriptions.some((subscription) => subscription.platformAccess?.notification);
304
+ const taskManagedFileDefinitions = config.workflows.definitions.filter((item) => {
305
+ const fields = resources.find(resource => resource.code === item.definition.subject?.resourceCode)?.schema.fields || [];
306
+ return Object.values(item.definition.taskPages || {}).some((page) => page.fields.some((field) => !field.readonly && fields.some((metadata) => metadata.code === field.code && ['file', 'image'].includes(metadata.type))));
307
+ });
294
308
  const standardProcessDefinitions = config.workflows.definitions.filter((declaration) => declaration.launch.mode === 'standalone' ||
295
309
  declaration.launch.mode === 'hidden-handoff');
296
310
  const usesBusinessProcess = operations.some(operation => operation.platformAccess?.workflow) ||
297
311
  standardProcessDefinitions.length > 0;
312
+ const namedInputSourceDefinitions = standardProcessDefinitions.filter((declaration) => {
313
+ const submission = declaration.launch.submission;
314
+ if (!submission)
315
+ return false;
316
+ const resource = resources.find(item => item.code === declaration.definition.subject.resourceCode);
317
+ return [submission.create, submission.existing].some(intent => intent &&
318
+ Object.values(intent.inputs).some((binding) => binding.source === 'field' &&
319
+ resource?.schema.fields.some((field) => field.code === binding.fieldCode &&
320
+ field.type.startsWith('resource-ref.') && field.source)));
321
+ });
298
322
  const dataUsage = { resources };
299
323
  const authzUsage = {
300
324
  perspectives: config.perspectives,
@@ -471,6 +495,26 @@ export function compileRequiredPlatformCapabilitiesV3(config) {
471
495
  declaration: config.workflows.definitions.filter((item) => item.definition.instanceCommands !== undefined),
472
496
  }]
473
497
  : []),
498
+ ...(namedInputSourceDefinitions.length
499
+ ? [{ code: 'workflow.named-input-sources', declaration: namedInputSourceDefinitions }]
500
+ : []),
501
+ ...(config.workflows.definitions.some((item) => Object.values(item.definition.nodes).some((node) => node.administration !== undefined || node.operationPolicy !== undefined))
502
+ ? [{ code: 'workflow.node-administration', declaration: config.workflows.definitions.filter((item) => Object.values(item.definition.nodes).some((node) => node.administration !== undefined || node.operationPolicy !== undefined)) }]
503
+ : []),
504
+ ...(config.workflows.definitions.some((item) => Object.values(item.definition.nodes).some((node) => node.kind === 'cc'))
505
+ ? [{ code: 'workflow.automatic-cc', declaration: config.workflows.definitions.filter((item) => Object.values(item.definition.nodes).some((node) => node.kind === 'cc')) }]
506
+ : []),
507
+ ...(config.workflows.definitions.some((item) => item.definition.taskPages !== undefined)
508
+ ? ['workflow.task-page-submit', 'workflow.task-private-drafts'].map(code => ({ code, declaration: config.workflows.definitions.filter((item) => item.definition.taskPages !== undefined) }))
509
+ : []),
510
+ ...(taskManagedFileDefinitions.length
511
+ ? [{ code: 'workflow.task-managed-files', declaration: taskManagedFileDefinitions }] : []),
512
+ ...(config.workflows.definitions.some((item) => Object.values(item.definition.nodes).some((node) => node.kind === 'action'))
513
+ ? [{ code: 'workflow.durable-business-step', declaration: config.workflows.definitions.filter((item) => Object.values(item.definition.nodes).some((node) => node.kind === 'action')) }]
514
+ : []),
515
+ ...(config.workflows.bindings.some((item) => Object.values(item.binding.bindings).some((entry) => entry.routing !== undefined))
516
+ ? [{ code: 'workflow.assignment-routing', declaration: config.workflows.bindings.filter((item) => Object.values(item.binding.bindings).some((entry) => entry.routing !== undefined)) }]
517
+ : []),
474
518
  ...(usesBusinessProcess
475
519
  ? [
476
520
  {
@@ -944,7 +988,7 @@ function compileExpectedContract(config, configDigest, generatorVersion) {
944
988
  field: trigger.field,
945
989
  })),
946
990
  ...(config.workflows.activations.length
947
- ? WORKFLOW_EVENT_TYPES_V2.map(eventType => ({
991
+ ? WORKFLOW_EVENT_TYPES_V2.filter(eventType => !WORKFLOW_BUSINESS_STEP_EVENTS.includes(eventType) || config.workflows.definitions.some((item) => Object.values(item.definition.nodes).some((node) => node.kind === 'action'))).map(eventType => ({
948
992
  code: `workflow:${eventType}`,
949
993
  source: 'workflow',
950
994
  eventType,
@@ -971,6 +1015,11 @@ function compileExpectedContract(config, configDigest, generatorVersion) {
971
1015
  fail('NATIVE_MANAGED_CONCURRENCY_INVALID', '/data/concurrency', { reason: 'durable commands require backend runtime' });
972
1016
  const subjectReadSurfaces = compileSubjectReadSurfaces(config, capabilities);
973
1017
  const operations = compileOperations(config);
1018
+ const stepDefinitions = config.workflows.definitions.map((item) => item.definition);
1019
+ const stepHandlers = compileWorkflowBusinessStepHandlers(stepDefinitions);
1020
+ const stepSubscriptionErrors = validateWorkflowBusinessStepSubscriptions(stepDefinitions, eventConsumers, true);
1021
+ if (stepSubscriptionErrors.length)
1022
+ fail(stepSubscriptionErrors[0], '/config/events/subscriptions');
974
1023
  try {
975
1024
  validateDecimalReservationLifecycles(config.data.resources, operations);
976
1025
  }
@@ -1006,6 +1055,7 @@ function compileExpectedContract(config, configDigest, generatorVersion) {
1006
1055
  : applicationSchemaVersions.get(eventType) || '2.0.0')),
1007
1056
  maxBodyBytes: 65536,
1008
1057
  receiptProtocolVersion: 2,
1058
+ ...(stepHandlers[consumer.code] ? { workflowStep: stepHandlers[consumer.code] } : {}),
1009
1059
  })),
1010
1060
  },
1011
1061
  eventTypes,
@@ -4258,6 +4308,10 @@ function validateWorkflowReferences(config) {
4258
4308
  definitions.add(key);
4259
4309
  validateWorkflowDefinition(definition, `${pointer}/definition`);
4260
4310
  validateWorkflowSubject(definition.subject, resources, `${pointer}/definition/subject`);
4311
+ const taskPageErrors = validateWorkflowTaskPages(definition, new Map((resources.get(definition.subject.resourceCode)?.schema.fields || [])
4312
+ .map((field) => [field.code, { ...resources.get(definition.subject.resourceCode)?.surface?.fields?.[field.code], ...field, system: ['id', 'revision', 'createdAt', 'updatedAt', 'createdBy', 'updatedBy'].includes(field.code) }])));
4313
+ if (taskPageErrors.length)
4314
+ fail(taskPageErrors[0], `${pointer}/definition/taskPages`);
4261
4315
  const policyErrors = validateWorkflowInstanceCommandPolicies(definition, {
4262
4316
  appCode: config.appCode,
4263
4317
  capabilities: config.authz.capabilities.map((item) => item.code),
@@ -4312,6 +4366,9 @@ function validateWorkflowReferences(config) {
4312
4366
  }
4313
4367
  const definition = definitionValues.get(definitionKey);
4314
4368
  const binding = bindingValues.get(bindingKey);
4369
+ const administrationErrors = validateWorkflowAdministration(definition, binding);
4370
+ if (administrationErrors.length)
4371
+ fail(administrationErrors[0], pointer);
4315
4372
  if (!['finish-pinned', 'cancel-on-deactivate'].includes(activation.acceptedCommandDeactivationPolicy) ||
4316
4373
  activation.acceptedCommandDeactivationPolicy !==
4317
4374
  definition.acceptedCommandDeactivationPolicy) {
@@ -4320,6 +4377,9 @@ function validateWorkflowReferences(config) {
4320
4377
  validateWorkflowDefinitionBinding(definition, binding, `/config/workflows/activations/${index}`);
4321
4378
  activeBindings.set(code, binding);
4322
4379
  }
4380
+ const routingErrors = validateWorkflowAssignmentRoutingBindings([...activeBindings.values()]);
4381
+ if (routingErrors.length)
4382
+ fail(routingErrors[0], '/config/workflows/activations');
4323
4383
  const providerCodes = new Set();
4324
4384
  config.workflows.providers.forEach((raw, index) => {
4325
4385
  const pointer = `/config/workflows/providers/${index}`;
@@ -4473,7 +4533,7 @@ function validateWorkflowDefinition(definition, pointer) {
4473
4533
  'startAt',
4474
4534
  'inputSchema',
4475
4535
  'nodes',
4476
- ], pointer, ['organizationContext', 'instanceCommands']);
4536
+ ], pointer, ['organizationContext', 'instanceCommands', 'readability', 'taskPages']);
4477
4537
  equal(definition.schemaVersion, 'openxiangda.workflow-definition/v2', `${pointer}/schemaVersion`);
4478
4538
  workflowCodeValue(definition.code, `${pointer}/code`);
4479
4539
  requiredString(definition.title, `${pointer}/title`, 255);
@@ -4486,6 +4546,21 @@ function validateWorkflowDefinition(definition, pointer) {
4486
4546
  fail('NATIVE_WORKFLOW_NODE_COUNT_INVALID', `${pointer}/nodes`);
4487
4547
  }
4488
4548
  const startAt = requiredString(definition.startAt, `${pointer}/startAt`, 128);
4549
+ const readabilityErrors = validateWorkflowReadability(definition);
4550
+ if (readabilityErrors.length)
4551
+ fail(readabilityErrors[0], `${pointer}/readability`);
4552
+ const administrationErrors = validateWorkflowAdministration(definition);
4553
+ if (administrationErrors.length)
4554
+ fail(administrationErrors[0], `${pointer}/nodes`);
4555
+ const ccErrors = validateWorkflowAutomaticCc(definition);
4556
+ if (ccErrors.length)
4557
+ fail(ccErrors[0], `${pointer}/nodes`);
4558
+ const taskPageErrors = validateWorkflowTaskPages(definition);
4559
+ if (taskPageErrors.length)
4560
+ fail(taskPageErrors[0], `${pointer}/taskPages`);
4561
+ const stepErrors = validateWorkflowBusinessSteps(definition);
4562
+ if (stepErrors.length)
4563
+ fail(stepErrors[0], `${pointer}/nodes`);
4489
4564
  if (!nodes[startAt])
4490
4565
  fail('NATIVE_WORKFLOW_START_NODE_MISSING', `${pointer}/startAt`);
4491
4566
  const edges = new Map();
@@ -4493,7 +4568,7 @@ function validateWorkflowDefinition(definition, pointer) {
4493
4568
  const nodePointer = `${pointer}/nodes/${nodeId}`;
4494
4569
  const node = object(rawNode, nodePointer);
4495
4570
  equal(node.id, nodeId, `${nodePointer}/id`);
4496
- if (!['approval', 'condition', 'end'].includes(node.kind)) {
4571
+ if (!['approval', 'condition', 'end', 'cc', 'action'].includes(node.kind)) {
4497
4572
  fail('NATIVE_WORKFLOW_NODE_KIND_INVALID', `${nodePointer}/kind`);
4498
4573
  }
4499
4574
  const targets = [];
@@ -4515,6 +4590,14 @@ function validateWorkflowDefinition(definition, pointer) {
4515
4590
  }
4516
4591
  }
4517
4592
  }
4593
+ else if (node.kind === 'action') {
4594
+ targets.push(requiredString(node.next, `${nodePointer}/next`, 128));
4595
+ }
4596
+ else if (node.kind === 'cc') {
4597
+ requiredString(node.title, `${nodePointer}/title`, 255);
4598
+ workflowBindingCode(node.binding, `${nodePointer}/binding`);
4599
+ targets.push(requiredString(node.next, `${nodePointer}/next`, 128));
4600
+ }
4518
4601
  else if (node.kind === 'condition') {
4519
4602
  const branches = boundedArray(node.branches, `${nodePointer}/branches`, 100);
4520
4603
  if (branches.length === 0) {
@@ -4564,7 +4647,7 @@ function validateWorkflowExpression(value, pointer, depth) {
4564
4647
  return;
4565
4648
  if (op === 'path') {
4566
4649
  const path = requiredString(expression.path, `${pointer}/path`, 255);
4567
- if (!/^[A-Za-z][A-Za-z0-9_.]{0,254}$/.test(path)) {
4650
+ if (!/^[A-Za-z][A-Za-z0-9_.-]{0,254}$/.test(path) || path.split('.').some(part => ['__proto__', 'constructor', 'prototype'].includes(part))) {
4568
4651
  fail('NATIVE_WORKFLOW_EXPRESSION_PATH_INVALID', `${pointer}/path`);
4569
4652
  }
4570
4653
  return;
@@ -4630,14 +4713,25 @@ function validateWorkflowBinding(binding, pointer) {
4630
4713
  if (provider === 'application_provider') {
4631
4714
  stableCode(entry.providerCode, `${pointer}/bindings/${code}/providerCode`);
4632
4715
  }
4716
+ if (entry.routing !== undefined) {
4717
+ const errors = validateWorkflowAssignmentRoutingPolicy(entry.routing);
4718
+ if (errors.length)
4719
+ fail(errors[0], `${pointer}/bindings/${code}/routing`);
4720
+ }
4633
4721
  }
4634
4722
  }
4635
4723
  function validateWorkflowDefinitionBinding(definition, binding, pointer) {
4636
4724
  equal(binding.workflowCode, definition.code, `${pointer}/workflowCode`);
4637
4725
  const entries = object(binding.bindings, `${pointer}/bindings`);
4726
+ const ccErrors = validateWorkflowAutomaticCc(definition, binding);
4727
+ if (ccErrors.length)
4728
+ fail(ccErrors[0], pointer);
4729
+ const stepErrors = validateWorkflowBusinessSteps(definition, binding);
4730
+ if (stepErrors.length)
4731
+ fail(stepErrors[0], pointer);
4638
4732
  for (const [nodeId, rawNode] of Object.entries(object(definition.nodes, `${pointer}/nodes`))) {
4639
4733
  const node = object(rawNode, `${pointer}/nodes/${nodeId}`);
4640
- if (node.kind === 'approval' && !entries[node.binding]) {
4734
+ if (['approval', 'cc'].includes(node.kind) && !entries[node.binding]) {
4641
4735
  fail('NATIVE_WORKFLOW_BINDING_REFERENCE_MISSING', `${pointer}/nodes/${nodeId}/binding`);
4642
4736
  }
4643
4737
  }