openxiangda-contracts 2.35.0 → 2.47.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 (84) hide show
  1. package/dist/browser.d.ts +7 -0
  2. package/dist/browser.d.ts.map +1 -1
  3. package/dist/browser.js +7 -0
  4. package/dist/browser.js.map +1 -1
  5. package/dist/data-field-validation.d.ts.map +1 -1
  6. package/dist/data-field-validation.js +3 -2
  7. package/dist/data-field-validation.js.map +1 -1
  8. package/dist/field-value-schemas.d.ts +1 -1
  9. package/dist/field-value-schemas.d.ts.map +1 -1
  10. package/dist/field-value-schemas.js +2 -1
  11. package/dist/field-value-schemas.js.map +1 -1
  12. package/dist/index.d.ts +8 -0
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.js +8 -0
  15. package/dist/index.js.map +1 -1
  16. package/dist/native-compiler/compiler.d.ts +1 -1
  17. package/dist/native-compiler/compiler.d.ts.map +1 -1
  18. package/dist/native-compiler/compiler.js +104 -5
  19. package/dist/native-compiler/compiler.js.map +1 -1
  20. package/dist/native-compiler/data-capacity.d.ts +8 -0
  21. package/dist/native-compiler/data-capacity.d.ts.map +1 -0
  22. package/dist/native-compiler/data-capacity.js +15 -0
  23. package/dist/native-compiler/data-capacity.js.map +1 -0
  24. package/dist/native-compiler/data-field.d.ts.map +1 -1
  25. package/dist/native-compiler/data-field.js +3 -2
  26. package/dist/native-compiler/data-field.js.map +1 -1
  27. package/dist/native-compiler/index.cjs +5 -4
  28. package/dist/native-compiler/index.d.ts +9 -0
  29. package/dist/native-compiler/index.d.ts.map +1 -1
  30. package/dist/native-compiler/index.js +5 -4
  31. package/dist/native-compiler/role-membership-batch.d.ts +73 -0
  32. package/dist/native-compiler/role-membership-batch.d.ts.map +1 -0
  33. package/dist/native-compiler/role-membership-batch.js +91 -0
  34. package/dist/native-compiler/role-membership-batch.js.map +1 -0
  35. package/dist/native-compiler/workflow-assignment-routing.d.ts +121 -0
  36. package/dist/native-compiler/workflow-assignment-routing.d.ts.map +1 -0
  37. package/dist/native-compiler/workflow-assignment-routing.js +113 -0
  38. package/dist/native-compiler/workflow-assignment-routing.js.map +1 -0
  39. package/dist/native-compiler/workflow-automatic-cc.d.ts +20 -0
  40. package/dist/native-compiler/workflow-automatic-cc.d.ts.map +1 -0
  41. package/dist/native-compiler/workflow-automatic-cc.js +36 -0
  42. package/dist/native-compiler/workflow-automatic-cc.js.map +1 -0
  43. package/dist/native-compiler/workflow-business-step-identity.d.ts +12 -0
  44. package/dist/native-compiler/workflow-business-step-identity.d.ts.map +1 -0
  45. package/dist/native-compiler/workflow-business-step-identity.js +11 -0
  46. package/dist/native-compiler/workflow-business-step-identity.js.map +1 -0
  47. package/dist/native-compiler/workflow-business-step.d.ts +119 -0
  48. package/dist/native-compiler/workflow-business-step.d.ts.map +1 -0
  49. package/dist/native-compiler/workflow-business-step.js +357 -0
  50. package/dist/native-compiler/workflow-business-step.js.map +1 -0
  51. package/dist/native-compiler/workflow-delegation-administration.d.ts +1084 -0
  52. package/dist/native-compiler/workflow-delegation-administration.d.ts.map +1 -0
  53. package/dist/native-compiler/workflow-delegation-administration.js +68 -0
  54. package/dist/native-compiler/workflow-delegation-administration.js.map +1 -0
  55. package/dist/native-compiler/workflow-graph.d.ts +28 -2
  56. package/dist/native-compiler/workflow-graph.d.ts.map +1 -1
  57. package/dist/native-compiler/workflow-graph.js +25 -7
  58. package/dist/native-compiler/workflow-graph.js.map +1 -1
  59. package/dist/native-compiler/workflow-node-administration.d.ts.map +1 -1
  60. package/dist/native-compiler/workflow-node-administration.js +12 -3
  61. package/dist/native-compiler/workflow-node-administration.js.map +1 -1
  62. package/dist/native-compiler/workflow-task-page.d.ts +160 -0
  63. package/dist/native-compiler/workflow-task-page.d.ts.map +1 -0
  64. package/dist/native-compiler/workflow-task-page.js +324 -0
  65. package/dist/native-compiler/workflow-task-page.js.map +1 -0
  66. package/dist/native-version.d.ts +12 -0
  67. package/dist/native-version.d.ts.map +1 -1
  68. package/dist/native-version.js +12 -0
  69. package/dist/native-version.js.map +1 -1
  70. package/dist/native.d.ts +2 -0
  71. package/dist/native.d.ts.map +1 -1
  72. package/dist/native.js.map +1 -1
  73. package/dist/schemas.d.ts +5060 -1319
  74. package/dist/schemas.d.ts.map +1 -1
  75. package/dist/schemas.js +226 -7
  76. package/dist/schemas.js.map +1 -1
  77. package/dist/types.d.ts +174 -3
  78. package/dist/types.d.ts.map +1 -1
  79. package/dist/types.js +13 -0
  80. package/dist/types.js.map +1 -1
  81. package/dist/validation.d.ts.map +1 -1
  82. package/dist/validation.js +7 -3
  83. package/dist/validation.js.map +1 -1
  84. package/package.json +1 -1
@@ -0,0 +1,73 @@
1
+ import type { NativeRoleMembership, NativeRoleMembershipMutationResult, NativeScopeGrant, Sha256Digest } from '../types.js';
2
+ export declare const NATIVE_ROLE_MEMBERSHIP_BATCH_MAX_ITEMS = 50;
3
+ export declare const NATIVE_ROLE_MEMBERSHIP_BATCH_MAX_BYTES: number;
4
+ export type NativeRoleMembershipBatchOperation = 'create' | 'update' | 'revoke';
5
+ type Mutation = {
6
+ operationId: string;
7
+ reason: string;
8
+ };
9
+ type Changes = {
10
+ scopeGrants?: NativeScopeGrant[];
11
+ validFrom?: string | null;
12
+ validTo?: string | null;
13
+ };
14
+ export type NativeRoleMembershipBatchItem = (Mutation & Changes & {
15
+ operation: 'create';
16
+ userId: string;
17
+ roleCode: string;
18
+ }) | (Mutation & Changes & {
19
+ operation: 'update';
20
+ membershipId: string;
21
+ expectedRevision: number;
22
+ }) | (Mutation & {
23
+ operation: 'revoke';
24
+ membershipId: string;
25
+ expectedRevision: number;
26
+ });
27
+ export interface NativeRoleMembershipBatchInput {
28
+ schemaVersion: 'openxiangda.native-role-membership-batch-request/v2';
29
+ environmentKey?: 'preproduction' | 'production';
30
+ items: NativeRoleMembershipBatchItem[];
31
+ }
32
+ export type NativeRoleMembershipChange = Pick<NativeRoleMembership, 'userId' | 'roleCode' | 'roleSource' | 'sourceCode' | 'scopeGrants' | 'status' | 'validFrom' | 'validTo'>;
33
+ type ItemIdentity = {
34
+ index: number;
35
+ operationId: string;
36
+ operation: NativeRoleMembershipBatchOperation;
37
+ };
38
+ export type NativeRoleMembershipBatchItemResult = ItemIdentity & ({
39
+ status: 'ready' | 'already_committed';
40
+ before: NativeRoleMembershipChange | null;
41
+ after: NativeRoleMembershipChange;
42
+ } | {
43
+ status: 'committed' | 'replayed';
44
+ result: NativeRoleMembershipMutationResult;
45
+ } | {
46
+ status: 'failed' | 'unconfirmed';
47
+ error: {
48
+ code: string;
49
+ status: number;
50
+ pointer: string;
51
+ retryable: boolean;
52
+ };
53
+ });
54
+ export interface NativeRoleMembershipBatchResult {
55
+ schemaVersion: 'openxiangda.native-role-membership-batch-result/v2';
56
+ mode: 'preview' | 'execute';
57
+ requestDigest: Sha256Digest;
58
+ items: NativeRoleMembershipBatchItemResult[];
59
+ succeeded: number;
60
+ failed: number;
61
+ unconfirmed: number;
62
+ effect: 'future_assignment_keep_existing_tasks';
63
+ }
64
+ export declare class NativeRoleMembershipBatchInputError extends Error {
65
+ readonly pointer: string;
66
+ readonly code = "OPENXIANGDA_NATIVE_AUTHZ_BATCH_INPUT_INVALID";
67
+ readonly status = 400;
68
+ constructor(pointer: string);
69
+ }
70
+ /** Shared structural bounds. Semantic authorization, scope and CAS remain in the Native kernel. */
71
+ export declare function assertNativeRoleMembershipBatchInput(input: unknown): asserts input is NativeRoleMembershipBatchInput;
72
+ export {};
73
+ //# sourceMappingURL=role-membership-batch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"role-membership-batch.d.ts","sourceRoot":"","sources":["../../src/native-compiler/role-membership-batch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,91 @@
1
+ export const NATIVE_ROLE_MEMBERSHIP_BATCH_MAX_ITEMS = 50;
2
+ export const NATIVE_ROLE_MEMBERSHIP_BATCH_MAX_BYTES = 128 * 1024;
3
+ export class NativeRoleMembershipBatchInputError extends Error {
4
+ pointer;
5
+ code = 'OPENXIANGDA_NATIVE_AUTHZ_BATCH_INPUT_INVALID';
6
+ status = 400;
7
+ constructor(pointer) {
8
+ super('OPENXIANGDA_NATIVE_AUTHZ_BATCH_INPUT_INVALID');
9
+ this.pointer = pointer;
10
+ }
11
+ }
12
+ /** Shared structural bounds. Semantic authorization, scope and CAS remain in the Native kernel. */
13
+ export function assertNativeRoleMembershipBatchInput(input) {
14
+ const fail = (path) => { throw new NativeRoleMembershipBatchInputError(path); };
15
+ const record = (value, path) => {
16
+ if (!value || typeof value !== 'object' || Array.isArray(value))
17
+ fail(path);
18
+ return value;
19
+ };
20
+ const keys = (value, allowed, path) => {
21
+ for (const key of Object.keys(value))
22
+ if (!allowed.includes(key))
23
+ fail(`${path}/${key}`);
24
+ };
25
+ const text = (value, max, path) => {
26
+ if (typeof value !== 'string' || !value.trim() || value.length > max)
27
+ fail(path);
28
+ return value;
29
+ };
30
+ const uuid = (value, path) => {
31
+ const id = text(value, 36, path);
32
+ if (!/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(id))
33
+ fail(path);
34
+ return id.toLowerCase();
35
+ };
36
+ const value = record(input, '');
37
+ let bytes;
38
+ try {
39
+ bytes = new TextEncoder().encode(JSON.stringify(value)).byteLength;
40
+ }
41
+ catch {
42
+ fail('');
43
+ }
44
+ if (bytes > NATIVE_ROLE_MEMBERSHIP_BATCH_MAX_BYTES)
45
+ fail('');
46
+ keys(value, ['schemaVersion', 'environmentKey', 'items'], '');
47
+ if (value.schemaVersion !== 'openxiangda.native-role-membership-batch-request/v2')
48
+ fail('/schemaVersion');
49
+ if (value.environmentKey !== undefined && !['preproduction', 'production'].includes(String(value.environmentKey)))
50
+ fail('/environmentKey');
51
+ if (!Array.isArray(value.items) || value.items.length < 1 || value.items.length > NATIVE_ROLE_MEMBERSHIP_BATCH_MAX_ITEMS)
52
+ fail('/items');
53
+ const operationIds = new Set(), targets = new Set();
54
+ let operation;
55
+ for (const [index, raw] of value.items.entries()) {
56
+ const path = `/items/${index}`, item = record(raw, path);
57
+ if (!['create', 'update', 'revoke'].includes(String(item.operation)))
58
+ fail(`${path}/operation`);
59
+ operation ??= item.operation;
60
+ if (operation !== item.operation)
61
+ fail(`${path}/operation`);
62
+ keys(item, ['operation', 'operationId', 'reason', ...(operation === 'create' ? ['userId', 'roleCode'] : ['membershipId', 'expectedRevision']), ...(operation !== 'revoke' ? ['scopeGrants', 'validFrom', 'validTo'] : [])], path);
63
+ const id = uuid(item.operationId, `${path}/operationId`);
64
+ if (operationIds.has(id))
65
+ fail(`${path}/operationId`);
66
+ operationIds.add(id);
67
+ text(item.reason, 1000, `${path}/reason`);
68
+ let target;
69
+ if (operation === 'create') {
70
+ const userId = text(item.userId, 255, `${path}/userId`), roleCode = text(item.roleCode, 128, `${path}/roleCode`);
71
+ if (!/^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)*$/.test(roleCode))
72
+ fail(`${path}/roleCode`);
73
+ target = JSON.stringify([userId, roleCode]);
74
+ }
75
+ else {
76
+ target = uuid(item.membershipId, `${path}/membershipId`);
77
+ if (!Number.isSafeInteger(item.expectedRevision) || Number(item.expectedRevision) < 1)
78
+ fail(`${path}/expectedRevision`);
79
+ }
80
+ if (targets.has(target))
81
+ fail(path);
82
+ targets.add(target);
83
+ // Scope/date semantics are validated by the same kernel as single mutations.
84
+ if (item.scopeGrants !== undefined && (!Array.isArray(item.scopeGrants) || item.scopeGrants.length > 100))
85
+ fail(`${path}/scopeGrants`);
86
+ for (const field of ['validFrom', 'validTo'])
87
+ if (item[field] !== undefined && item[field] !== null)
88
+ text(item[field], 64, `${path}/${field}`);
89
+ }
90
+ }
91
+ //# sourceMappingURL=role-membership-batch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"role-membership-batch.js","sourceRoot":"","sources":["../../src/native-compiler/role-membership-batch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,121 @@
1
+ import type { WorkflowAssignmentRoutingPolicy, WorkflowAssignmentRoutingRule } from '../types.js';
2
+ export declare const WORKFLOW_ROUTING_MAX_RULES = 256;
3
+ export declare const WORKFLOW_ROUTING_MAX_MATCHED_RULES = 64;
4
+ export declare const WORKFLOW_ROUTING_MAX_BYTES = 262144;
5
+ export declare const workflowAssignmentRoutingPolicySchema: {
6
+ readonly type: "object";
7
+ readonly additionalProperties: false;
8
+ readonly required: readonly ["policyCode", "title", "strategy", "dimensions", "sources"];
9
+ readonly properties: {
10
+ readonly policyCode: {
11
+ readonly type: "string";
12
+ readonly pattern: "^[a-z][a-z0-9_-]{0,127}$";
13
+ };
14
+ readonly title: {
15
+ readonly type: "string";
16
+ readonly minLength: 1;
17
+ readonly maxLength: 128;
18
+ };
19
+ readonly strategy: {
20
+ readonly enum: readonly ["replace_then_append", "replace_only"];
21
+ };
22
+ readonly dimensions: {
23
+ readonly type: "object";
24
+ readonly maxProperties: 8;
25
+ readonly propertyNames: {
26
+ readonly type: "string";
27
+ readonly pattern: "^[a-z][a-z0-9_-]{0,127}$";
28
+ };
29
+ readonly additionalProperties: {
30
+ readonly type: "object";
31
+ readonly additionalProperties: false;
32
+ readonly required: readonly ["title", "valueFrom"];
33
+ readonly properties: {
34
+ readonly title: {
35
+ readonly type: "string";
36
+ readonly minLength: 1;
37
+ readonly maxLength: 128;
38
+ };
39
+ readonly valueFrom: {
40
+ readonly type: "string";
41
+ readonly minLength: 1;
42
+ readonly maxLength: 255;
43
+ };
44
+ };
45
+ };
46
+ };
47
+ readonly sources: {
48
+ readonly type: "object";
49
+ readonly minProperties: 1;
50
+ readonly maxProperties: 16;
51
+ readonly propertyNames: {
52
+ readonly type: "string";
53
+ readonly pattern: "^[a-z][a-z0-9_-]{0,127}$";
54
+ };
55
+ readonly additionalProperties: {
56
+ readonly type: "object";
57
+ readonly additionalProperties: false;
58
+ readonly required: readonly ["title", "provider", "roleCode"];
59
+ readonly properties: {
60
+ readonly title: {
61
+ readonly type: "string";
62
+ readonly minLength: 1;
63
+ readonly maxLength: 128;
64
+ };
65
+ readonly provider: {
66
+ readonly enum: readonly ["app_role", "app_role_in_scope"];
67
+ };
68
+ readonly roleCode: {
69
+ readonly type: "string";
70
+ readonly pattern: "^[a-z][a-z0-9_-]{0,127}$";
71
+ };
72
+ readonly scope: {
73
+ readonly type: "object";
74
+ readonly additionalProperties: false;
75
+ readonly required: readonly ["dimension"];
76
+ readonly properties: {
77
+ readonly dimension: {
78
+ readonly type: "string";
79
+ readonly pattern: "^[a-z][a-z0-9_-]{0,127}$";
80
+ };
81
+ readonly value: {
82
+ readonly type: "string";
83
+ readonly minLength: 1;
84
+ readonly maxLength: 255;
85
+ };
86
+ readonly valueFrom: {
87
+ readonly type: "string";
88
+ readonly minLength: 1;
89
+ readonly maxLength: 255;
90
+ };
91
+ };
92
+ };
93
+ };
94
+ };
95
+ };
96
+ };
97
+ };
98
+ export declare function validateWorkflowAssignmentRoutingPolicy(value: unknown): string[];
99
+ export declare function validateWorkflowAssignmentRoutingRules(policy: WorkflowAssignmentRoutingPolicy, value: unknown): string[];
100
+ /** Semantic equality ignores object insertion order and display titles. */
101
+ export declare function workflowAssignmentRoutingSemantic(policy: WorkflowAssignmentRoutingPolicy): string;
102
+ export declare function validateWorkflowAssignmentRoutingBindings(bindings: Array<{
103
+ bindings?: Record<string, {
104
+ routing?: WorkflowAssignmentRoutingPolicy;
105
+ }>;
106
+ }>): string[];
107
+ /** Evaluates only code-declared scalar paths, never prototype properties. */
108
+ export declare function workflowAssignmentRoutingFacts(policy: WorkflowAssignmentRoutingPolicy, facts: Record<string, unknown>): Record<string, string>;
109
+ /** Same deterministic selection for preview and node entry; candidates still belong to the resolver. */
110
+ export declare function selectWorkflowAssignmentRoutingRules(policy: WorkflowAssignmentRoutingPolicy, rules: WorkflowAssignmentRoutingRule[], input: {
111
+ workflowCode: string;
112
+ nodeId: string;
113
+ facts: Record<string, string>;
114
+ at: number;
115
+ }): {
116
+ matched: WorkflowAssignmentRoutingRule[];
117
+ replacement: WorkflowAssignmentRoutingRule | undefined;
118
+ applied: WorkflowAssignmentRoutingRule[];
119
+ ignored: WorkflowAssignmentRoutingRule[];
120
+ };
121
+ //# sourceMappingURL=workflow-assignment-routing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-assignment-routing.d.ts","sourceRoot":"","sources":["../../src/native-compiler/workflow-assignment-routing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,+BAA+B,EAAE,6BAA6B,EAAE,MAAM,aAAa,CAAC;AAElG,eAAO,MAAM,0BAA0B,MAAM,CAAC;AAC9C,eAAO,MAAM,kCAAkC,KAAK,CAAC;AACrD,eAAO,MAAM,0BAA0B,SAAS,CAAC;AAejD,eAAO,MAAM,qCAAqC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAcxC,CAAC;AAEX,wBAAgB,uCAAuC,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,EAAE,CAMhF;AAED,wBAAgB,sCAAsC,CAAC,MAAM,EAAE,+BAA+B,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM,EAAE,CAaxH;AAED,2EAA2E;AAC3E,wBAAgB,iCAAiC,CAAC,MAAM,EAAE,+BAA+B,GAAG,MAAM,CAKjG;AAED,wBAAgB,yCAAyC,CAAC,QAAQ,EAAE,KAAK,CAAC;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,OAAO,CAAC,EAAE,+BAA+B,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,GAAG,MAAM,EAAE,CAWjK;AAED,6EAA6E;AAC7E,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,+BAA+B,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAS9I;AAED,wGAAwG;AACxG,wBAAgB,oCAAoC,CAAC,MAAM,EAAE,+BAA+B,EAAE,KAAK,EAAE,6BAA6B,EAAE,EAAE,KAAK,EAAE;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE;;;;;EAU/N"}
@@ -0,0 +1,113 @@
1
+ export const WORKFLOW_ROUTING_MAX_RULES = 256;
2
+ export const WORKFLOW_ROUTING_MAX_MATCHED_RULES = 64;
3
+ export const WORKFLOW_ROUTING_MAX_BYTES = 262144;
4
+ const codePattern = /^[a-z][a-z0-9_-]{0,127}$/;
5
+ const pathPattern = /^[A-Za-z][A-Za-z0-9_]*(?:\.[A-Za-z][A-Za-z0-9_]*)*$/;
6
+ const forbidden = new Set(['__proto__', 'prototype', 'constructor']);
7
+ const record = (v) => !!v && typeof v === 'object' && !Array.isArray(v);
8
+ const keys = (v, allowed) => Object.keys(v).every(key => allowed.includes(key));
9
+ const text = (v, max) => typeof v === 'string' && v.trim().length > 0 && v.length <= max && !/[\u0000-\u001f\u007f]/.test(v);
10
+ const code = (v) => typeof v === 'string' && codePattern.test(v) && !forbidden.has(v);
11
+ const path = (v) => typeof v === 'string' && v.length <= 255 && pathPattern.test(v) && !v.split('.').some(part => forbidden.has(part));
12
+ const scopeValid = (v) => record(v) && keys(v, ['dimension', 'valueFrom', 'value']) && code(v.dimension) &&
13
+ ((text(v.value, 255) && v.valueFrom === undefined) || (path(v.valueFrom) && v.value === undefined));
14
+ const instant = (v) => typeof v === 'string' && /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d{1,3})?(?:Z|[+-]\d{2}:\d{2})$/.test(v) && Number.isFinite(Date.parse(v));
15
+ const stringCode = { type: 'string', pattern: '^[a-z][a-z0-9_-]{0,127}$' };
16
+ const titleSchema = { type: 'string', minLength: 1, maxLength: 128 };
17
+ export const workflowAssignmentRoutingPolicySchema = {
18
+ type: 'object', additionalProperties: false, required: ['policyCode', 'title', 'strategy', 'dimensions', 'sources'],
19
+ properties: {
20
+ policyCode: stringCode, title: titleSchema, strategy: { enum: ['replace_then_append', 'replace_only'] },
21
+ dimensions: { type: 'object', maxProperties: 8, propertyNames: stringCode, additionalProperties: {
22
+ type: 'object', additionalProperties: false, required: ['title', 'valueFrom'], properties: { title: titleSchema, valueFrom: { type: 'string', minLength: 1, maxLength: 255 } },
23
+ } },
24
+ sources: { type: 'object', minProperties: 1, maxProperties: 16, propertyNames: stringCode, additionalProperties: {
25
+ type: 'object', additionalProperties: false, required: ['title', 'provider', 'roleCode'], properties: {
26
+ title: titleSchema, provider: { enum: ['app_role', 'app_role_in_scope'] }, roleCode: stringCode,
27
+ scope: { type: 'object', additionalProperties: false, required: ['dimension'], properties: { dimension: stringCode, value: { type: 'string', minLength: 1, maxLength: 255 }, valueFrom: { type: 'string', minLength: 1, maxLength: 255 } } },
28
+ },
29
+ } },
30
+ },
31
+ };
32
+ export function validateWorkflowAssignmentRoutingPolicy(value) {
33
+ if (!record(value) || !keys(value, ['policyCode', 'title', 'strategy', 'dimensions', 'sources']) || !code(value.policyCode) || !text(value.title, 128) || !['replace_then_append', 'replace_only'].includes(value.strategy))
34
+ return ['WORKFLOW_V2_ROUTING_POLICY_INVALID'];
35
+ const errors = [];
36
+ if (!record(value.dimensions) || Object.keys(value.dimensions).length > 8 || Object.entries(value.dimensions).some(([key, dimension]) => !code(key) || !record(dimension) || !keys(dimension, ['title', 'valueFrom']) || !text(dimension.title, 128) || !path(dimension.valueFrom)))
37
+ errors.push('WORKFLOW_V2_ROUTING_DIMENSIONS_INVALID');
38
+ if (!record(value.sources) || Object.keys(value.sources).length < 1 || Object.keys(value.sources).length > 16 || Object.entries(value.sources).some(([key, source]) => !code(key) || !record(source) || !keys(source, ['title', 'provider', 'roleCode', 'scope']) || !text(source.title, 128) || !code(source.roleCode) || !['app_role', 'app_role_in_scope'].includes(source.provider) || (source.provider === 'app_role_in_scope' ? !scopeValid(source.scope) : source.scope !== undefined)))
39
+ errors.push('WORKFLOW_V2_ROUTING_SOURCES_INVALID');
40
+ return errors;
41
+ }
42
+ export function validateWorkflowAssignmentRoutingRules(policy, value) {
43
+ if (validateWorkflowAssignmentRoutingPolicy(policy).length)
44
+ return ['WORKFLOW_V2_ROUTING_POLICY_INVALID'];
45
+ if (!Array.isArray(value) || value.length > WORKFLOW_ROUTING_MAX_RULES || new TextEncoder().encode(JSON.stringify(value)).length > WORKFLOW_ROUTING_MAX_BYTES)
46
+ return ['WORKFLOW_V2_ROUTING_RULE_LIMIT_EXCEEDED'];
47
+ const errors = [], seen = new Set();
48
+ for (const rule of value) {
49
+ if (!record(rule) || !keys(rule, ['ruleCode', 'title', 'enabled', 'workflowCode', 'nodeId', 'matches', 'sourceCode', 'effect', 'priority', 'validFrom', 'validTo']) || !code(rule.ruleCode) || !text(rule.title, 128) || typeof rule.enabled !== 'boolean' || !code(rule.sourceCode) || !Object.hasOwn(policy.sources, rule.sourceCode) || !['append', 'replace'].includes(rule.effect) || !Number.isSafeInteger(rule.priority) || rule.priority < -1000 || rule.priority > 1000 || (rule.workflowCode !== undefined && !code(rule.workflowCode)) || (rule.nodeId !== undefined && (!code(rule.nodeId) || rule.workflowCode === undefined)) || (rule.validFrom !== undefined && !instant(rule.validFrom)) || (rule.validTo !== undefined && !instant(rule.validTo)) || (rule.validFrom && rule.validTo && Date.parse(rule.validFrom) >= Date.parse(rule.validTo))) {
50
+ errors.push('WORKFLOW_V2_ROUTING_RULE_INVALID');
51
+ continue;
52
+ }
53
+ if (seen.has(rule.ruleCode))
54
+ errors.push(`WORKFLOW_V2_ROUTING_RULE_DUPLICATE:${rule.ruleCode}`);
55
+ seen.add(rule.ruleCode);
56
+ if (!record(rule.matches) || Object.entries(rule.matches).some(([dimension, values]) => !Object.hasOwn(policy.dimensions, dimension) || !Array.isArray(values) || values.length < 1 || values.length > 64 || new Set(values).size !== values.length || values.some(v => !text(v, 255))))
57
+ errors.push(`WORKFLOW_V2_ROUTING_MATCH_INVALID:${rule.ruleCode}`);
58
+ }
59
+ return [...new Set(errors)];
60
+ }
61
+ /** Semantic equality ignores object insertion order and display titles. */
62
+ export function workflowAssignmentRoutingSemantic(policy) {
63
+ return JSON.stringify({ policyCode: policy.policyCode, strategy: policy.strategy,
64
+ dimensions: Object.entries(policy.dimensions).sort(([a], [b]) => a < b ? -1 : a > b ? 1 : 0).map(([key, d]) => [key, d.valueFrom]),
65
+ sources: Object.entries(policy.sources).sort(([a], [b]) => a < b ? -1 : a > b ? 1 : 0).map(([key, s]) => [key, s.provider, s.roleCode, s.scope?.dimension ?? null, s.scope?.valueFrom ?? null, s.scope?.value ?? null]),
66
+ });
67
+ }
68
+ export function validateWorkflowAssignmentRoutingBindings(bindings) {
69
+ const errors = [], policies = new Map();
70
+ for (const binding of bindings)
71
+ for (const [bindingCode, entry] of Object.entries(binding.bindings || {})) {
72
+ if (!record(entry) || entry.routing === undefined)
73
+ continue;
74
+ const diagnostics = validateWorkflowAssignmentRoutingPolicy(entry.routing);
75
+ if (diagnostics.length) {
76
+ errors.push(...diagnostics.map(error => `${error}:${bindingCode}`));
77
+ continue;
78
+ }
79
+ const semantic = workflowAssignmentRoutingSemantic(entry.routing), existing = policies.get(entry.routing.policyCode);
80
+ if (existing && existing !== semantic)
81
+ errors.push(`WORKFLOW_V2_ROUTING_POLICY_CONFLICT:${entry.routing.policyCode}`);
82
+ policies.set(entry.routing.policyCode, semantic);
83
+ }
84
+ return [...new Set(errors)];
85
+ }
86
+ /** Evaluates only code-declared scalar paths, never prototype properties. */
87
+ export function workflowAssignmentRoutingFacts(policy, facts) {
88
+ const result = {};
89
+ for (const [dimension, declaration] of Object.entries(policy.dimensions)) {
90
+ let value = facts;
91
+ for (const key of declaration.valueFrom.split('.'))
92
+ value = record(value) && Object.hasOwn(value, key) ? value[key] : undefined;
93
+ if (!((typeof value === 'string' && text(value, 255)) || (typeof value === 'number' && Number.isFinite(value)) || typeof value === 'boolean'))
94
+ throw new Error(`WORKFLOW_V2_ROUTING_FACT_REQUIRED:${dimension}`);
95
+ result[dimension] = String(value);
96
+ }
97
+ return result;
98
+ }
99
+ /** Same deterministic selection for preview and node entry; candidates still belong to the resolver. */
100
+ export function selectWorkflowAssignmentRoutingRules(policy, rules, input) {
101
+ const matched = rules.filter(rule => rule.enabled && (!rule.validFrom || Date.parse(rule.validFrom) <= input.at) && (!rule.validTo || Date.parse(rule.validTo) > input.at) && (!rule.workflowCode || rule.workflowCode === input.workflowCode) && (!rule.nodeId || rule.nodeId === input.nodeId) && Object.entries(rule.matches).every(([dimension, values]) => values.includes(input.facts[dimension])));
102
+ if (matched.length > WORKFLOW_ROUTING_MAX_MATCHED_RULES)
103
+ throw new Error('WORKFLOW_V2_ROUTING_MATCH_LIMIT_EXCEEDED');
104
+ const order = (a, b) => b.priority - a.priority || Number(Boolean(a.workflowCode)) - Number(Boolean(b.workflowCode)) || Number(Boolean(a.nodeId)) - Number(Boolean(b.nodeId)) || (a.ruleCode < b.ruleCode ? -1 : a.ruleCode > b.ruleCode ? 1 : 0);
105
+ const replacements = matched.filter(rule => rule.effect === 'replace').sort(order);
106
+ if (replacements.length > 1 && replacements[0].priority === replacements[1].priority)
107
+ throw new Error('WORKFLOW_V2_ROUTING_REPLACE_CONFLICT');
108
+ const replacement = replacements[0];
109
+ const appended = replacement && policy.strategy === 'replace_only' ? [] : matched.filter(rule => rule.effect === 'append').sort(order);
110
+ const applied = [...(replacement ? [replacement] : []), ...appended];
111
+ return { matched: matched.sort(order), replacement, applied, ignored: matched.filter(rule => !applied.includes(rule)) };
112
+ }
113
+ //# sourceMappingURL=workflow-assignment-routing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-assignment-routing.js","sourceRoot":"","sources":["../../src/native-compiler/workflow-assignment-routing.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /** Shared by source compilation, activation and transactional execution. */
2
+ export declare const WORKFLOW_AUTOMATIC_CC_MAX_RECIPIENTS = 20;
3
+ export declare const WORKFLOW_AUTOMATIC_CC_PROVIDERS: readonly ["fixed_users", "initiator", "input_users", "form_field_users", "app_role", "app_role_in_scope", "previous_node_actor"];
4
+ type Definition = {
5
+ nodes?: Record<string, {
6
+ kind: string;
7
+ [key: string]: any;
8
+ }>;
9
+ };
10
+ type Binding = {
11
+ bindings?: Record<string, {
12
+ provider: string;
13
+ min?: number;
14
+ max?: number;
15
+ users?: string[];
16
+ }>;
17
+ };
18
+ export declare function validateWorkflowAutomaticCc(definition: Definition, binding?: Binding): string[];
19
+ export {};
20
+ //# sourceMappingURL=workflow-automatic-cc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-automatic-cc.d.ts","sourceRoot":"","sources":["../../src/native-compiler/workflow-automatic-cc.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,eAAO,MAAM,oCAAoC,KAAK,CAAC;AACvD,eAAO,MAAM,+BAA+B,kIAGlC,CAAC;AAEX,KAAK,UAAU,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC;AACnF,KAAK,OAAO,GAAG;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC;AAEjH,wBAAgB,2BAA2B,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,MAAM,EAAE,CAsB/F"}
@@ -0,0 +1,36 @@
1
+ /** Shared by source compilation, activation and transactional execution. */
2
+ export const WORKFLOW_AUTOMATIC_CC_MAX_RECIPIENTS = 20;
3
+ export const WORKFLOW_AUTOMATIC_CC_PROVIDERS = [
4
+ 'fixed_users', 'initiator', 'input_users', 'form_field_users',
5
+ 'app_role', 'app_role_in_scope', 'previous_node_actor',
6
+ ];
7
+ export function validateWorkflowAutomaticCc(definition, binding) {
8
+ const errors = [];
9
+ for (const [id, node] of Object.entries(definition?.nodes || {})) {
10
+ if (node?.kind !== 'cc')
11
+ continue;
12
+ if (Object.keys(node).some(key => !['id', 'kind', 'title', 'binding', 'next', 'emptyPolicy', 'notify', 'administration'].includes(key)) ||
13
+ typeof node.title !== 'string' || !node.title.trim() || node.title.length > 255 ||
14
+ typeof node.binding !== 'string' || !node.binding.trim() || node.binding.length > 255 ||
15
+ typeof node.next !== 'string' || !node.next.trim() || !definition.nodes?.[node.next] ||
16
+ !['block', 'skip'].includes(node.emptyPolicy) || node.notify !== undefined && typeof node.notify !== 'boolean') {
17
+ errors.push(`WORKFLOW_CC_NODE_INVALID:${id}`);
18
+ }
19
+ if (!binding)
20
+ continue;
21
+ const entry = binding.bindings?.[node.binding];
22
+ if (!entry) {
23
+ errors.push(`WORKFLOW_CC_BINDING_NOT_FOUND:${id}`);
24
+ continue;
25
+ }
26
+ if (!WORKFLOW_AUTOMATIC_CC_PROVIDERS.includes(entry.provider))
27
+ errors.push(`WORKFLOW_CC_PROVIDER_INVALID:${id}`);
28
+ const minimum = entry.min ?? 1, maximum = entry.max ?? WORKFLOW_AUTOMATIC_CC_MAX_RECIPIENTS;
29
+ if (!Number.isSafeInteger(minimum) || !Number.isSafeInteger(maximum) || minimum < 1 || maximum < minimum || maximum > WORKFLOW_AUTOMATIC_CC_MAX_RECIPIENTS ||
30
+ entry.provider === 'fixed_users' && (!Array.isArray(entry.users) || !entry.users.length || entry.users.length > maximum)) {
31
+ errors.push(`WORKFLOW_CC_RECIPIENT_LIMIT_INVALID:${id}`);
32
+ }
33
+ }
34
+ return [...new Set(errors)];
35
+ }
36
+ //# sourceMappingURL=workflow-automatic-cc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-automatic-cc.js","sourceRoot":"","sources":["../../src/native-compiler/workflow-automatic-cc.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { AppEventHandlerContract, EventHandlerManifest } from '../native.js';
2
+ import type { WorkflowBusinessStepResult } from './workflow-business-step.js';
3
+ /** Optional result extends the existing receipt signature without changing old calls. */
4
+ export declare function workflowBusinessStepReceiptSignatureSuffix(result?: WorkflowBusinessStepResult): string;
5
+ /** Other event handlers retain their existing whole-manifest identity. */
6
+ export declare function workflowBusinessStepHandlerDigest(manifest: Omit<EventHandlerManifest, 'handlers'> & {
7
+ readonly handlers: readonly (Omit<AppEventHandlerContract, 'eventTypes' | 'dataSchemaVersions'> & {
8
+ readonly eventTypes: readonly string[];
9
+ readonly dataSchemaVersions: readonly string[];
10
+ })[];
11
+ }, code: string): string;
12
+ //# sourceMappingURL=workflow-business-step-identity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-business-step-identity.d.ts","sourceRoot":"","sources":["../../src/native-compiler/workflow-business-step-identity.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAClF,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AAE9E,yFAAyF;AACzF,wBAAgB,0CAA0C,CAAC,MAAM,CAAC,EAAE,0BAA0B,GAAG,MAAM,CAEtG;AAED,0EAA0E;AAC1E,wBAAgB,iCAAiC,CAAC,QAAQ,EAAE,IAAI,CAAC,oBAAoB,EAAE,UAAU,CAAC,GAAG;IAAE,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC,IAAI,CAAC,uBAAuB,EAAE,YAAY,GAAG,oBAAoB,CAAC,GAAG;QAAE,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;QAAC,QAAQ,CAAC,kBAAkB,EAAE,SAAS,MAAM,EAAE,CAAA;KAAE,CAAC,EAAE,CAAA;CAAE,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAG9T"}
@@ -0,0 +1,11 @@
1
+ import { sha256Digest } from '../canonical.js';
2
+ /** Optional result extends the existing receipt signature without changing old calls. */
3
+ export function workflowBusinessStepReceiptSignatureSuffix(result) {
4
+ return result === undefined ? '' : `\n${sha256Digest(result)}`;
5
+ }
6
+ /** Other event handlers retain their existing whole-manifest identity. */
7
+ export function workflowBusinessStepHandlerDigest(manifest, code) {
8
+ const handler = manifest.handlers.find(item => item.code === code);
9
+ return sha256Digest(handler?.workflowStep ? handler : manifest);
10
+ }
11
+ //# sourceMappingURL=workflow-business-step-identity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-business-step-identity.js","sourceRoot":"","sources":["../../src/native-compiler/workflow-business-step-identity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAI/C,yFAAyF;AACzF,MAAM,UAAU,0CAA0C,CAAC,MAAmC;IAC5F,OAAO,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;AACjE,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,iCAAiC,CAAC,QAAsP,EAAE,IAAY;IACpT,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IACnE,OAAO,YAAY,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;AAClE,CAAC"}