openxiangda-contracts 2.83.0 → 2.85.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 (53) hide show
  1. package/dist/native-compiler/compiler.d.ts.map +1 -1
  2. package/dist/native-compiler/compiler.js +37 -10
  3. package/dist/native-compiler/compiler.js.map +1 -1
  4. package/dist/native-compiler/index.cjs +4 -4
  5. package/dist/native-compiler/index.js +4 -4
  6. package/dist/native-compiler/user-candidates.d.ts.map +1 -1
  7. package/dist/native-compiler/user-candidates.js +2 -1
  8. package/dist/native-compiler/user-candidates.js.map +1 -1
  9. package/dist/native-compiler/workflow-authoring.d.ts.map +1 -1
  10. package/dist/native-compiler/workflow-authoring.js +2 -0
  11. package/dist/native-compiler/workflow-authoring.js.map +1 -1
  12. package/dist/native-compiler/workflow-conditional-assignment-schema.d.ts +662 -0
  13. package/dist/native-compiler/workflow-conditional-assignment-schema.d.ts.map +1 -0
  14. package/dist/native-compiler/workflow-conditional-assignment-schema.js +21 -0
  15. package/dist/native-compiler/workflow-conditional-assignment-schema.js.map +1 -0
  16. package/dist/native-compiler/workflow-conditional-assignment.d.ts +14 -667
  17. package/dist/native-compiler/workflow-conditional-assignment.d.ts.map +1 -1
  18. package/dist/native-compiler/workflow-conditional-assignment.js +31 -19
  19. package/dist/native-compiler/workflow-conditional-assignment.js.map +1 -1
  20. package/dist/native-compiler/workflow-expression-schema.d.ts +29 -0
  21. package/dist/native-compiler/workflow-expression-schema.d.ts.map +1 -0
  22. package/dist/native-compiler/workflow-expression-schema.js +31 -0
  23. package/dist/native-compiler/workflow-expression-schema.js.map +1 -0
  24. package/dist/native-compiler/workflow-launch-preflight.d.ts.map +1 -1
  25. package/dist/native-compiler/workflow-launch-preflight.js +6 -1
  26. package/dist/native-compiler/workflow-launch-preflight.js.map +1 -1
  27. package/dist/native-compiler/workflow-node-administration.d.ts +4 -1
  28. package/dist/native-compiler/workflow-node-administration.d.ts.map +1 -1
  29. package/dist/native-compiler/workflow-node-administration.js +45 -14
  30. package/dist/native-compiler/workflow-node-administration.js.map +1 -1
  31. package/dist/native-compiler/workflow-schema.d.ts +909 -276
  32. package/dist/native-compiler/workflow-schema.d.ts.map +1 -1
  33. package/dist/native-compiler/workflow-schema.js +5 -98
  34. package/dist/native-compiler/workflow-schema.js.map +1 -1
  35. package/dist/native-compiler/workflow-source-sync.d.ts.map +1 -1
  36. package/dist/native-compiler/workflow-source-sync.js +5 -1
  37. package/dist/native-compiler/workflow-source-sync.js.map +1 -1
  38. package/dist/native-compiler/workflow-standard-binding-schema.d.ts +304 -0
  39. package/dist/native-compiler/workflow-standard-binding-schema.d.ts.map +1 -0
  40. package/dist/native-compiler/workflow-standard-binding-schema.js +75 -0
  41. package/dist/native-compiler/workflow-standard-binding-schema.js.map +1 -0
  42. package/dist/native-version.d.ts +1 -0
  43. package/dist/native-version.d.ts.map +1 -1
  44. package/dist/native-version.js +1 -0
  45. package/dist/native-version.js.map +1 -1
  46. package/dist/schemas.d.ts +897 -230
  47. package/dist/schemas.d.ts.map +1 -1
  48. package/dist/schemas.js +1 -0
  49. package/dist/schemas.js.map +1 -1
  50. package/dist/types.d.ts +7 -4
  51. package/dist/types.d.ts.map +1 -1
  52. package/dist/types.js.map +1 -1
  53. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"compiler.d.ts","sourceRoot":"","sources":["../../src/native-compiler/compiler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compiler.d.ts","sourceRoot":"","sources":["../../src/native-compiler/compiler.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,5 @@
1
+ import { workflowAssignmentLeaves, workflowAssignmentLeafBinding, validateWorkflowConditionalAssignmentShape, validateWorkflowConditionalBindingDefinition } from './workflow-conditional-assignment.js';
2
+ import { workflowBindingRoleCodes } from './workflow-role-union.js';
1
3
  import { compileApplicationAgentsV2 } from './application-agent.js';
2
4
  import { validateWorkflowSupervisorChains, validateWorkflowSupervisorChainBinding } from './workflow-supervisor-chain.js';
3
5
  import { validateWorkflowReminders } from './workflow-reminders.js';
@@ -35,7 +37,7 @@ import { validateWorkflowTaskPages } from './workflow-task-page.js';
35
37
  import { requiresExtendedOwnedSubtableCapacity, requiresAggregateOwnedSubtableCapacity, dataOwnedRowLimit, isDataOwnedRowLimit } from './data-capacity.js';
36
38
  import { validateWorkflowBusinessSteps, compileWorkflowBusinessStepHandlers, validateWorkflowBusinessStepSubscriptions } from './workflow-business-step.js';
37
39
  import { validateWorkflowAssignmentRoutingBindings, validateWorkflowAssignmentRoutingPolicy } from './workflow-assignment-routing.js';
38
- import { requiresWorkflowRoleUnion, validateWorkflowRoleUnion, requiresWorkflowRoleInputSelection, validateWorkflowRoleInputSelection } from './workflow-role-union.js';
40
+ import { validateWorkflowRoleUnion, validateWorkflowRoleInputSelection } from './workflow-role-union.js';
39
41
  import { assertWorkflowOwnedSubjectCreate, assertWorkflowOwnedSubjectCreateResources } from './workflow-owned-subject.js';
40
42
  import * as crypto from 'crypto';
41
43
  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';
@@ -564,10 +566,10 @@ export function compileRequiredPlatformCapabilitiesV3(config) {
564
566
  ...(config.data.resources.some((resource) => resource.schema.fields.some((field) => field.userCandidates !== undefined))
565
567
  ? [{ code: 'data.user-candidates', declaration: config.data.resources.filter((resource) => resource.schema.fields.some((field) => field.userCandidates !== undefined)) }]
566
568
  : []),
567
- ...(requiresWorkflowRoleInputSelection(config.workflows.bindings)
568
- ? [{ code: 'workflow.role-input-selection', declaration: config.workflows.bindings.filter((item) => Object.values(item.binding.bindings).some((entry) => entry.selectedInputPath !== undefined)) }] : []),
569
- ...(requiresWorkflowRoleUnion(config.workflows.bindings)
570
- ? [{ code: 'workflow.role-union', declaration: config.workflows.bindings.filter((item) => Object.values(item.binding.bindings).some((entry) => entry.roleCodes !== undefined)) }] : []),
569
+ ...(config.workflows.bindings.some((item) => Object.values(item.binding.bindings).flatMap((entry) => workflowAssignmentLeaves(entry)).some(entry => entry.selectedInputPath !== undefined))
570
+ ? [{ code: 'workflow.role-input-selection', declaration: config.workflows.bindings.filter((item) => Object.values(item.binding.bindings).flatMap((entry) => workflowAssignmentLeaves(entry)).some(entry => entry.selectedInputPath !== undefined)) }] : []),
571
+ ...(config.workflows.bindings.some((item) => Object.values(item.binding.bindings).flatMap((entry) => workflowAssignmentLeaves(entry)).some(entry => entry.roleCodes !== undefined))
572
+ ? [{ code: 'workflow.role-union', declaration: config.workflows.bindings.filter((item) => Object.values(item.binding.bindings).flatMap((entry) => workflowAssignmentLeaves(entry)).some(entry => entry.roleCodes !== undefined)) }] : []),
571
573
  ...(config.backend.operations.some((item) => item.platformAccess?.ownedSubject)
572
574
  ? [{ code: 'workflow.named-owned-create', declaration: config.backend.operations.filter((item) => item.platformAccess?.ownedSubject) }] : []),
573
575
  ...(requiresUserCandidateLaunchScope(config.data.resources)
@@ -643,7 +645,9 @@ export function compileRequiredPlatformCapabilitiesV3(config) {
643
645
  ...(config.workflows.definitions.some((item) => Object.values(item.definition.nodes).some((node) => node.kind === 'approval' && node.emptyPolicy !== undefined))
644
646
  ? [{ code: 'workflow.approval-empty-policy', declaration: config.workflows.definitions.filter((item) => Object.values(item.definition.nodes).some((node) => node.kind === 'approval' && node.emptyPolicy !== undefined)) }]
645
647
  : []),
646
- ...(config.workflows.bindings.some((item) => Object.values(item.binding.bindings).some((entry) => entry.provider === 'supervisor_chain')) ? [{ code: 'workflow.supervisor-chain', declaration: config.workflows.bindings.filter((item) => Object.values(item.binding.bindings).some((entry) => entry.provider === 'supervisor_chain')) }] : []),
648
+ ...(config.workflows.bindings.some((item) => Object.values(item.binding.bindings).some((entry) => entry.provider === 'conditional'))
649
+ ? [{ code: 'workflow.conditional-assignment', declaration: config.workflows.bindings.filter((item) => Object.values(item.binding.bindings).some((entry) => entry.provider === 'conditional')) }] : []),
650
+ ...(config.workflows.bindings.some((item) => Object.values(item.binding.bindings).flatMap((entry) => workflowAssignmentLeaves(entry)).some(entry => entry.provider === 'supervisor_chain')) ? [{ code: 'workflow.supervisor-chain', declaration: config.workflows.bindings.filter((item) => Object.values(item.binding.bindings).flatMap((entry) => workflowAssignmentLeaves(entry)).some(entry => entry.provider === 'supervisor_chain')) }] : []),
647
651
  ...(config.workflows.definitions.some((item) => Object.values(item.definition.nodes).some((node) => node.reminders)) ? [{ code: 'workflow.reminders', declaration: config.workflows.definitions.filter((item) => Object.values(item.definition.nodes).some((node) => node.reminders)) }] : []),
648
652
  ...(config.workflows.definitions.some((item) => Object.values(item.definition.nodes).some((node) => isWorkflowPlatformNotify(node)))
649
653
  ? [{ code: 'workflow.platform-notify', declaration: config.workflows.definitions.filter((item) => Object.values(item.definition.nodes).some((node) => isWorkflowPlatformNotify(node))) }] : []),
@@ -677,8 +681,8 @@ export function compileRequiredPlatformCapabilitiesV3(config) {
677
681
  ...(config.workflows.definitions.some((item) => [...Object.values(item.definition.nodes), ...item.definition.authoring?.businessSteps || []].some((node) => node.handler?.dataTransaction))
678
682
  ? [{ code: 'workflow.step-data-transaction', declaration: config.workflows.definitions.filter((item) => [...Object.values(item.definition.nodes), ...item.definition.authoring?.businessSteps || []].some((node) => node.handler?.dataTransaction)) }]
679
683
  : []),
680
- ...(config.workflows.bindings.some((item) => Object.values(item.binding.bindings).some((entry) => entry.routing !== undefined))
681
- ? [{ code: 'workflow.assignment-routing', declaration: config.workflows.bindings.filter((item) => Object.values(item.binding.bindings).some((entry) => entry.routing !== undefined)) }]
684
+ ...(config.workflows.bindings.some((item) => Object.values(item.binding.bindings).flatMap((entry) => workflowAssignmentLeaves(entry)).some(entry => entry.routing !== undefined))
685
+ ? [{ code: 'workflow.assignment-routing', declaration: config.workflows.bindings.filter((item) => Object.values(item.binding.bindings).flatMap((entry) => workflowAssignmentLeaves(entry)).some(entry => entry.routing !== undefined)) }]
682
686
  : []),
683
687
  ...(usesBusinessProcess
684
688
  ? [
@@ -1117,7 +1121,7 @@ function compileExpectedContract(config, configDigest, generatorVersion) {
1117
1121
  fail('NATIVE_EVENT_TYPE_NOT_REGISTERED', `${pointer}/eventTypes/${eventIndex}`, { eventType });
1118
1122
  }
1119
1123
  });
1120
- const nativeAction = compileNativeEventAction(subscription, config.data.resources, pointer, { emitEventTypes: eventSchemas.map((schema) => String(schema.eventType)), workflowResources: config.workflows.bindings.map((binding) => String(binding.binding?.resourceCode || binding.resourceCode || '')) });
1124
+ const nativeAction = compileNativeEventAction(subscription, config.data.resources, pointer, { emitEventTypes: eventSchemas.map((schema) => String(schema.eventType)), workflowResources: config.workflows.definitions.map((entry) => String(entry.definition?.subject?.resourceCode || '')) });
1121
1125
  const delivery = validateEventDeliveryPolicy(subscription.delivery, eventTypes, `${pointer}/delivery`);
1122
1126
  const platformAccess = validateEventSubscriptionPlatformAccess(subscription.platformAccess, `${pointer}/platformAccess`, eventResourceFields, config, subscription);
1123
1127
  return {
@@ -4736,6 +4740,20 @@ function validateWorkflowReferences(config) {
4736
4740
  validateWorkflowBinding(binding, `/config/workflows/bindings/${index}/binding`);
4737
4741
  bindingValues.set(key, binding);
4738
4742
  }
4743
+ // Conditional defaults must never hide undeclared roles in an unselected leaf.
4744
+ const conditionalRoleCodes = new Set(config.authz.roles.map((role) => role.code));
4745
+ for (const [index, item] of config.workflows.bindings.entries()) {
4746
+ for (const [key, entry] of Object.entries(item.binding.bindings)) {
4747
+ if (entry.provider !== 'conditional')
4748
+ continue;
4749
+ for (const leaf of workflowAssignmentLeaves(entry)) {
4750
+ const roles = [...workflowBindingRoleCodes(leaf), ...Object.values(leaf.routing?.sources || {}).map(source => source.roleCode)];
4751
+ for (const role of roles)
4752
+ if (!conditionalRoleCodes.has(role))
4753
+ fail('WORKFLOW_CONDITIONAL_ROLE_UNDECLARED', `/config/workflows/bindings/${index}/binding/bindings/${key}`);
4754
+ }
4755
+ }
4756
+ }
4739
4757
  const activationCodes = new Set();
4740
4758
  const activeBindings = new Map();
4741
4759
  for (const [index, raw] of config.workflows.activations.entries()) {
@@ -4791,7 +4809,7 @@ function validateWorkflowReferences(config) {
4791
4809
  }
4792
4810
  activeBindings.set(code, binding);
4793
4811
  }
4794
- const routingErrors = validateWorkflowAssignmentRoutingBindings([...activeBindings.values()]);
4812
+ const routingErrors = validateWorkflowAssignmentRoutingBindings([...activeBindings.values()].map(binding => workflowAssignmentLeafBinding(binding)));
4795
4813
  if (routingErrors.length)
4796
4814
  fail(routingErrors[0], '/config/workflows/activations');
4797
4815
  const providerCodes = new Set();
@@ -5147,6 +5165,12 @@ function validateWorkflowBinding(binding, pointer) {
5147
5165
  for (const [code, raw] of Object.entries(entries)) {
5148
5166
  workflowBindingCode(code, `${pointer}/bindings/${code}`);
5149
5167
  const entry = object(raw, `${pointer}/bindings/${code}`);
5168
+ if (entry.provider === 'conditional') {
5169
+ const errors = validateWorkflowConditionalAssignmentShape(entry);
5170
+ if (errors.length)
5171
+ fail(errors[0], `${pointer}/bindings/${code}`);
5172
+ continue;
5173
+ }
5150
5174
  const chainErrors = validateWorkflowSupervisorChainBinding(entry);
5151
5175
  if (chainErrors.length)
5152
5176
  fail(chainErrors[0], `${pointer}/bindings/${code}`);
@@ -5198,6 +5222,9 @@ function validateWorkflowBinding(binding, pointer) {
5198
5222
  }
5199
5223
  }
5200
5224
  function validateWorkflowDefinitionBinding(definition, binding, pointer) {
5225
+ const conditionalErrors = validateWorkflowConditionalBindingDefinition(definition, binding);
5226
+ if (conditionalErrors.length)
5227
+ fail(conditionalErrors[0], pointer);
5201
5228
  const chainErrors = validateWorkflowSupervisorChains(definition, binding);
5202
5229
  if (chainErrors.length)
5203
5230
  fail(chainErrors[0], pointer);