openxiangda-contracts 2.78.0 → 2.81.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 (172) hide show
  1. package/dist/ai.d.ts +321 -21
  2. package/dist/ai.d.ts.map +1 -1
  3. package/dist/ai.js +37 -14
  4. package/dist/ai.js.map +1 -1
  5. package/dist/application-agent.d.ts +540 -0
  6. package/dist/application-agent.d.ts.map +1 -0
  7. package/dist/application-agent.js +98 -0
  8. package/dist/application-agent.js.map +1 -0
  9. package/dist/browser.d.ts +15 -0
  10. package/dist/browser.d.ts.map +1 -1
  11. package/dist/browser.js +14 -0
  12. package/dist/browser.js.map +1 -1
  13. package/dist/cli.d.ts +5 -0
  14. package/dist/cli.d.ts.map +1 -1
  15. package/dist/data-field-validation.js +26 -23
  16. package/dist/data-field-validation.js.map +1 -1
  17. package/dist/field-value-schemas.d.ts +2 -1427
  18. package/dist/field-value-schemas.d.ts.map +1 -1
  19. package/dist/field-value-schemas.js +2 -261
  20. package/dist/field-value-schemas.js.map +1 -1
  21. package/dist/index.d.ts +13 -0
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +13 -0
  24. package/dist/index.js.map +1 -1
  25. package/dist/native-compiler/address-value.d.ts +13 -0
  26. package/dist/native-compiler/address-value.d.ts.map +1 -0
  27. package/dist/native-compiler/address-value.js +70 -0
  28. package/dist/native-compiler/address-value.js.map +1 -0
  29. package/dist/native-compiler/application-agent.d.ts +39 -0
  30. package/dist/native-compiler/application-agent.d.ts.map +1 -0
  31. package/dist/native-compiler/application-agent.js +344 -0
  32. package/dist/native-compiler/application-agent.js.map +1 -0
  33. package/dist/native-compiler/cascade-value.d.ts +6 -0
  34. package/dist/native-compiler/cascade-value.d.ts.map +1 -0
  35. package/dist/native-compiler/cascade-value.js +47 -0
  36. package/dist/native-compiler/cascade-value.js.map +1 -0
  37. package/dist/native-compiler/compiler.d.ts +1 -1
  38. package/dist/native-compiler/compiler.d.ts.map +1 -1
  39. package/dist/native-compiler/compiler.js +85 -56
  40. package/dist/native-compiler/compiler.js.map +1 -1
  41. package/dist/native-compiler/data-field.d.ts +3 -0
  42. package/dist/native-compiler/data-field.d.ts.map +1 -1
  43. package/dist/native-compiler/data-field.js +10 -2
  44. package/dist/native-compiler/data-field.js.map +1 -1
  45. package/dist/native-compiler/declaration-capacity.d.ts +3 -0
  46. package/dist/native-compiler/declaration-capacity.d.ts.map +1 -1
  47. package/dist/native-compiler/declaration-capacity.js +1 -1
  48. package/dist/native-compiler/declaration-capacity.js.map +1 -1
  49. package/dist/native-compiler/field-value-schemas.d.ts +1428 -0
  50. package/dist/native-compiler/field-value-schemas.d.ts.map +1 -0
  51. package/dist/native-compiler/field-value-schemas.js +262 -0
  52. package/dist/native-compiler/field-value-schemas.js.map +1 -0
  53. package/dist/native-compiler/index.cjs +4 -4
  54. package/dist/native-compiler/index.d.ts +17 -0
  55. package/dist/native-compiler/index.d.ts.map +1 -1
  56. package/dist/native-compiler/index.js +4 -4
  57. package/dist/native-compiler/resource-query.d.ts +21 -0
  58. package/dist/native-compiler/resource-query.d.ts.map +1 -0
  59. package/dist/native-compiler/resource-query.js +154 -0
  60. package/dist/native-compiler/resource-query.js.map +1 -0
  61. package/dist/native-compiler/workflow-approval-empty.d.ts +1 -1
  62. package/dist/native-compiler/workflow-approval-empty.d.ts.map +1 -1
  63. package/dist/native-compiler/workflow-approval-empty.js +1 -1
  64. package/dist/native-compiler/workflow-approval-empty.js.map +1 -1
  65. package/dist/native-compiler/workflow-authoring.d.ts +24 -0
  66. package/dist/native-compiler/workflow-authoring.d.ts.map +1 -0
  67. package/dist/native-compiler/workflow-authoring.js +84 -0
  68. package/dist/native-compiler/workflow-authoring.js.map +1 -0
  69. package/dist/native-compiler/workflow-business-step.d.ts +13 -2
  70. package/dist/native-compiler/workflow-business-step.d.ts.map +1 -1
  71. package/dist/native-compiler/workflow-business-step.js +31 -6
  72. package/dist/native-compiler/workflow-business-step.js.map +1 -1
  73. package/dist/native-compiler/workflow-completion-deadline.d.ts +1 -0
  74. package/dist/native-compiler/workflow-completion-deadline.d.ts.map +1 -1
  75. package/dist/native-compiler/workflow-completion-deadline.js +1 -1
  76. package/dist/native-compiler/workflow-completion-deadline.js.map +1 -1
  77. package/dist/native-compiler/workflow-correction.d.ts +1 -0
  78. package/dist/native-compiler/workflow-correction.d.ts.map +1 -1
  79. package/dist/native-compiler/workflow-correction.js +5 -4
  80. package/dist/native-compiler/workflow-correction.js.map +1 -1
  81. package/dist/native-compiler/workflow-designer.d.ts +134 -0
  82. package/dist/native-compiler/workflow-designer.d.ts.map +1 -0
  83. package/dist/native-compiler/workflow-designer.js +407 -0
  84. package/dist/native-compiler/workflow-designer.js.map +1 -0
  85. package/dist/native-compiler/workflow-events.d.ts +8 -0
  86. package/dist/native-compiler/workflow-events.d.ts.map +1 -0
  87. package/dist/native-compiler/workflow-events.js +53 -0
  88. package/dist/native-compiler/workflow-events.js.map +1 -0
  89. package/dist/native-compiler/workflow-expression.d.ts +4 -0
  90. package/dist/native-compiler/workflow-expression.d.ts.map +1 -0
  91. package/dist/native-compiler/workflow-expression.js +47 -0
  92. package/dist/native-compiler/workflow-expression.js.map +1 -0
  93. package/dist/native-compiler/workflow-graph.d.ts +16 -1
  94. package/dist/native-compiler/workflow-graph.d.ts.map +1 -1
  95. package/dist/native-compiler/workflow-graph.js +27 -5
  96. package/dist/native-compiler/workflow-graph.js.map +1 -1
  97. package/dist/native-compiler/workflow-handle.d.ts +4 -0
  98. package/dist/native-compiler/workflow-handle.d.ts.map +1 -0
  99. package/dist/native-compiler/workflow-handle.js +20 -0
  100. package/dist/native-compiler/workflow-handle.js.map +1 -0
  101. package/dist/native-compiler/workflow-initiator-approval.d.ts +1 -0
  102. package/dist/native-compiler/workflow-initiator-approval.d.ts.map +1 -1
  103. package/dist/native-compiler/workflow-initiator-approval.js +1 -1
  104. package/dist/native-compiler/workflow-initiator-approval.js.map +1 -1
  105. package/dist/native-compiler/workflow-node-administration.d.ts +12 -1
  106. package/dist/native-compiler/workflow-node-administration.d.ts.map +1 -1
  107. package/dist/native-compiler/workflow-node-administration.js +66 -14
  108. package/dist/native-compiler/workflow-node-administration.js.map +1 -1
  109. package/dist/native-compiler/workflow-parallel.d.ts +69 -0
  110. package/dist/native-compiler/workflow-parallel.d.ts.map +1 -0
  111. package/dist/native-compiler/workflow-parallel.js +178 -0
  112. package/dist/native-compiler/workflow-parallel.js.map +1 -0
  113. package/dist/native-compiler/workflow-platform-notify.d.ts +41 -0
  114. package/dist/native-compiler/workflow-platform-notify.d.ts.map +1 -0
  115. package/dist/native-compiler/workflow-platform-notify.js +49 -0
  116. package/dist/native-compiler/workflow-platform-notify.js.map +1 -0
  117. package/dist/native-compiler/workflow-reminders.d.ts +11 -0
  118. package/dist/native-compiler/workflow-reminders.d.ts.map +1 -0
  119. package/dist/native-compiler/workflow-reminders.js +12 -0
  120. package/dist/native-compiler/workflow-reminders.js.map +1 -0
  121. package/dist/native-compiler/workflow-return-eligibility.d.ts +8 -0
  122. package/dist/native-compiler/workflow-return-eligibility.d.ts.map +1 -0
  123. package/dist/native-compiler/workflow-return-eligibility.js +32 -0
  124. package/dist/native-compiler/workflow-return-eligibility.js.map +1 -0
  125. package/dist/native-compiler/workflow-return-policy.d.ts +20 -0
  126. package/dist/native-compiler/workflow-return-policy.d.ts.map +1 -0
  127. package/dist/native-compiler/workflow-return-policy.js +37 -0
  128. package/dist/native-compiler/workflow-return-policy.js.map +1 -0
  129. package/dist/native-compiler/workflow-role-union.d.ts +5 -1
  130. package/dist/native-compiler/workflow-role-union.d.ts.map +1 -1
  131. package/dist/native-compiler/workflow-role-union.js +1 -1
  132. package/dist/native-compiler/workflow-role-union.js.map +1 -1
  133. package/dist/native-compiler/workflow-schema-constants.d.ts +5 -0
  134. package/dist/native-compiler/workflow-schema-constants.d.ts.map +1 -0
  135. package/dist/native-compiler/workflow-schema-constants.js +5 -0
  136. package/dist/native-compiler/workflow-schema-constants.js.map +1 -0
  137. package/dist/native-compiler/workflow-schema.d.ts +1634 -0
  138. package/dist/native-compiler/workflow-schema.d.ts.map +1 -0
  139. package/dist/native-compiler/workflow-schema.js +519 -0
  140. package/dist/native-compiler/workflow-schema.js.map +1 -0
  141. package/dist/native-compiler/workflow-source-sync.d.ts +109 -0
  142. package/dist/native-compiler/workflow-source-sync.d.ts.map +1 -0
  143. package/dist/native-compiler/workflow-source-sync.js +116 -0
  144. package/dist/native-compiler/workflow-source-sync.js.map +1 -0
  145. package/dist/native-compiler/workflow-supervisor-chain.d.ts +16 -0
  146. package/dist/native-compiler/workflow-supervisor-chain.d.ts.map +1 -0
  147. package/dist/native-compiler/workflow-supervisor-chain.js +44 -0
  148. package/dist/native-compiler/workflow-supervisor-chain.js.map +1 -0
  149. package/dist/native-compiler/workflow-task-page.js +1 -1
  150. package/dist/native-compiler/workflow-task-page.js.map +1 -1
  151. package/dist/native-version.d.ts +7 -0
  152. package/dist/native-version.d.ts.map +1 -1
  153. package/dist/native-version.js +7 -0
  154. package/dist/native-version.js.map +1 -1
  155. package/dist/native.d.ts +10 -0
  156. package/dist/native.d.ts.map +1 -1
  157. package/dist/native.js.map +1 -1
  158. package/dist/references.d.ts +4 -0
  159. package/dist/references.d.ts.map +1 -1
  160. package/dist/schemas.d.ts +1485 -1088
  161. package/dist/schemas.d.ts.map +1 -1
  162. package/dist/schemas.js +33 -449
  163. package/dist/schemas.js.map +1 -1
  164. package/dist/types.d.ts +48 -12
  165. package/dist/types.d.ts.map +1 -1
  166. package/dist/types.js +4 -42
  167. package/dist/types.js.map +1 -1
  168. package/dist/workflow-summary.d.ts +1 -1
  169. package/dist/workflow-summary.d.ts.map +1 -1
  170. package/dist/workflow-summary.js +2 -1
  171. package/dist/workflow-summary.js.map +1 -1
  172. package/package.json +1 -1
@@ -0,0 +1,344 @@
1
+ import { sha256Digest } from '../canonical.js';
2
+ import { fieldValueSchemaForDefinition } from './field-value-schemas.js';
3
+ import { projectDataResourceView } from './resource-view.js';
4
+ import { nativeFieldRequiresCreateInputV2, parseNativeDataFieldsV2, NativeDataFieldContractV2Error } from './data-field.js';
5
+ import { isDataAuditMetadataField, isDataSystemSortField } from './data-audit-access.js';
6
+ export const APPLICATION_AGENT_LIMITS_V2 = Object.freeze({ agents: 20, tasks: 20,
7
+ fields: 20, instructions: 16000, instructionBytes: 64000, arrayItems: 50, pages: 10 });
8
+ export class NativeApplicationAgentContractError extends Error {
9
+ code;
10
+ pointer;
11
+ constructor(code, pointer, detail) {
12
+ super(`${code}: ${pointer}: ${detail}`);
13
+ this.code = code;
14
+ this.pointer = pointer;
15
+ this.name = 'NativeApplicationAgentContractError';
16
+ }
17
+ }
18
+ function fail(code, pointer, detail) {
19
+ throw new NativeApplicationAgentContractError(`NATIVE_APPLICATION_AGENT_${code}`, pointer, detail);
20
+ }
21
+ function object(value, pointer) {
22
+ if (!value || typeof value !== 'object' || Array.isArray(value))
23
+ fail('OBJECT_REQUIRED', pointer, '需要对象');
24
+ return value;
25
+ }
26
+ function keys(value, allowed, pointer) {
27
+ for (const key of Object.keys(value))
28
+ if (!allowed.includes(key))
29
+ fail('PROPERTY_UNSUPPORTED', `${pointer}/${key}`, '未知属性');
30
+ }
31
+ function text(value, max, pointer) {
32
+ if (typeof value !== 'string' || !value.trim() || value.length > max)
33
+ fail('TEXT_INVALID', pointer, `需要非空字符串,最多 ${max} 字符`);
34
+ return value;
35
+ }
36
+ function code(value, pointer) {
37
+ const result = text(value, 100, pointer);
38
+ if (!/^[a-z][a-z0-9]*(?:[-.][a-z0-9]+)*$/.test(result))
39
+ fail('CODE_INVALID', pointer, '需要稳定编码');
40
+ return result;
41
+ }
42
+ function strings(value, max, length, pointer) {
43
+ if (value === undefined)
44
+ return [];
45
+ if (!Array.isArray(value) || value.length > max)
46
+ fail('ARRAY_LIMIT', pointer, `最多 ${max} 项`);
47
+ const result = value.map((item, i) => text(item, length, `${pointer}/${i}`));
48
+ if (new Set(result).size !== result.length)
49
+ fail('DUPLICATE', pointer, '不能重复');
50
+ return result;
51
+ }
52
+ /** The loader enforces realpath containment as well; this pure check also guards direct compile callers. */
53
+ export function assertApplicationAgentInstructionPathV2(value, pointer = '/agents/instructions/file') {
54
+ const file = text(value, 500, pointer);
55
+ const parts = file.split('/');
56
+ if (!/\.(md|txt)$/i.test(file) || parts.some(part => !part || part.startsWith('.') || /[\\:\p{Cc}]/u.test(part) ||
57
+ /^(?:\.\.?|AGENTS\.md|CLAUDE\.md|SKILL\.md|credentials.*|secrets?.*|.*\.pem|.*\.key)$/i.test(part)))
58
+ fail('INSTRUCTION_PATH_INVALID', pointer, '需要工作区内的普通 md/txt 文件,不能引用协作说明或凭据');
59
+ return file;
60
+ }
61
+ function instructions(value, pointer, allowFile) {
62
+ if (typeof value === 'string')
63
+ return text(value, APPLICATION_AGENT_LIMITS_V2.instructions, pointer);
64
+ const ref = object(value, pointer);
65
+ keys(ref, ['file'], pointer);
66
+ const file = assertApplicationAgentInstructionPathV2(ref.file, `${pointer}/file`);
67
+ if (!allowFile)
68
+ fail('INSTRUCTIONS_NOT_INLINED', pointer, '文件指令必须先由工作区加载器内联');
69
+ return { file };
70
+ }
71
+ const labelHint = { type: 'object', additionalProperties: false, required: ['label'],
72
+ properties: { label: { type: 'string', minLength: 1, maxLength: 500 } } };
73
+ const references = /^(option|user|department|resource-ref)\.(single|multiple)$/;
74
+ const unavailable = new Set(['file', 'image', 'signature', 'subtable', 'text.rich', 'json', 'serial-number']);
75
+ /** The policy, not the view widget, owns scalar scope selection. */
76
+ export function nativeAgentFieldSelectorV2(resource, field, authz) {
77
+ if (field.type.startsWith('user.'))
78
+ return { selector: { owner: field.userCandidates ? 'user-candidates' : 'directory' } };
79
+ if (field.type.startsWith('department.'))
80
+ return { selector: { owner: 'directory' } };
81
+ if (field.type.startsWith('resource-ref.'))
82
+ return { selector: { owner: 'field-source' } };
83
+ if (field.type.startsWith('option.') || field.type.startsWith('cascade.'))
84
+ return { selector: { owner: 'options' } };
85
+ if (!['text.short', 'uuid'].includes(field.type))
86
+ return {};
87
+ const policy = authz?.dataPolicies?.find(policy => policy.code === resource.dataPolicyCode && policy.resourceCode === resource.code);
88
+ const rules = [...policy?.rules || []];
89
+ const pending = policy?.readExpression ? [policy.readExpression] : [];
90
+ while (pending.length) {
91
+ const expression = pending.shift();
92
+ if (rules.length + pending.length > 2000)
93
+ fail('SELECTOR_POLICY_LIMIT', `/data/resources/${resource.code}`, '范围路由超过规则预算');
94
+ if (expression?.allOf)
95
+ pending.push(...expression.allOf);
96
+ else if (expression?.anyOf)
97
+ pending.push(...expression.anyOf);
98
+ else
99
+ rules.push(expression);
100
+ }
101
+ const dimensions = new Set(rules.flatMap(rule => rule && 'dimensionCode' in rule && rule.field === field.code &&
102
+ authz?.scopeDimensions?.some(dimension => dimension.code === rule.dimensionCode && dimension.valueSource)
103
+ ? [rule.dimensionCode] : []));
104
+ return dimensions.size === 1 ? { selector: { owner: 'scope', dimensionCode: [...dimensions][0] } } :
105
+ dimensions.size > 1 ? { ambiguousScope: true } : {};
106
+ }
107
+ /** A projection for assistance only; ordinary field schemas remain the command's only value contract. */
108
+ export function nativeAgentFieldHintSchemaV2(field, filter = false, route) {
109
+ if (route?.ambiguousScope)
110
+ return undefined;
111
+ if (route?.selector?.owner === 'scope')
112
+ return !filter && field.nullable !== false ? { anyOf: [labelHint, { type: 'null' }] } : labelHint;
113
+ if (references.test(field.type)) {
114
+ const schema = field.type.endsWith('.multiple') ? { type: 'array', minItems: filter ? 1 : 0, maxItems: 50, items: labelHint } : labelHint;
115
+ return !filter && field.nullable !== false ? { anyOf: [schema, { type: 'null' }] } : schema;
116
+ }
117
+ if (!['text.short', 'text.long', 'number.integer', 'number.decimal', 'boolean', 'date', 'time', 'datetime'].includes(field.type))
118
+ return undefined;
119
+ let schema = fieldValueSchemaForDefinition(field);
120
+ if (field.type === 'datetime')
121
+ schema = { ...schema, pattern: '(?:Z|[+-]\\d{2}:\\d{2})$' };
122
+ if (filter && ['number.integer', 'number.decimal', 'date', 'datetime'].includes(field.type))
123
+ return { oneOf: [schema, { type: 'object', additionalProperties: false, minProperties: 1,
124
+ properties: { from: schema, to: schema } }] };
125
+ if (!filter && field.nullable !== false)
126
+ return { anyOf: [schema, { type: 'null' }] };
127
+ return schema;
128
+ }
129
+ function objectSchema(properties, required = []) {
130
+ return { type: 'object', additionalProperties: false, properties, ...(required.length ? { required } : {}) };
131
+ }
132
+ function formBindings(resource, field) {
133
+ const source = field.source || resource.surface?.fields[field.code]?.source;
134
+ return [...(source?.filters || []).flatMap(filter => 'binding' in filter ? [filter.binding.field] : []),
135
+ ...(field.userCandidates?.scope?.field ? [field.userCandidates.scope.field] : [])];
136
+ }
137
+ const handleSchema = { type: 'object', additionalProperties: false, required: ['handle'],
138
+ properties: { handle: { type: 'string', minLength: 1, maxLength: 80 } } };
139
+ const resultSchema = { type: 'object', additionalProperties: false, properties: {
140
+ columns: { type: 'array', maxItems: 500, items: objectSchema({ code: { type: 'string' }, label: { type: 'string' } }, ['code', 'label']) },
141
+ items: { type: 'array', maxItems: 100, items: objectSchema({ handle: { type: 'string' }, title: { type: 'string' },
142
+ fields: { type: 'array', maxItems: 500, items: objectSchema({ code: { type: 'string' }, label: { type: 'string' }, value: { type: 'string' } }, ['code', 'label', 'value']) } }, ['handle', 'fields']) },
143
+ more: { type: 'boolean' }, total: { type: 'integer', minimum: 0 },
144
+ continuation: { type: 'string', maxLength: 80 }, summary: { type: 'string' },
145
+ filter_ambiguous: { type: 'boolean' }, field: { type: 'string', maxLength: 100 },
146
+ labels: { type: 'array', maxItems: 20, items: objectSchema({ label: { type: 'string' }, description: { type: 'string' } }, ['label']) },
147
+ } };
148
+ function compileTask(appCode, agentCode, task, resources, pointer, authz) {
149
+ const resource = resources.find(item => item && typeof item === 'object' && item.code === task.resource && item.status !== 'retired');
150
+ if (!resource?.surface || !resource.surface.fields || !Array.isArray(resource.schema?.fields) ||
151
+ resource.schema.fields.some(field => !field || typeof field.code !== 'string' || typeof field.type !== 'string'))
152
+ fail('RESOURCE_UNAVAILABLE', `${pointer}/resource`, '需要当前模型及标准视图');
153
+ try {
154
+ parseNativeDataFieldsV2(resource.schema.fields, `${pointer}/resource/schema/fields`);
155
+ }
156
+ catch (error) {
157
+ if (!(error instanceof NativeDataFieldContractV2Error))
158
+ throw error;
159
+ fail('RESOURCE_SCHEMA_INVALID', `${pointer}/resource`, error.message);
160
+ }
161
+ if (resource.surface.views !== undefined && !Array.isArray(resource.surface.views))
162
+ fail('VIEW_UNKNOWN', `${pointer}/view`, '需要已验证的标准视图');
163
+ if (!resource.surface.views?.some(view => view.code === task.view) &&
164
+ !(task.view === 'default' && !resource.surface.views?.length))
165
+ fail('VIEW_UNKNOWN', `${pointer}/view`, '视图不存在');
166
+ const view = task.view === 'default' && !resource.surface.views?.length ? resource.surface :
167
+ projectDataResourceView(resource.surface, task.view);
168
+ const byField = new Map(resource.schema.fields.map(field => [field.code, field]));
169
+ const routes = new Map(resource.schema.fields.map(field => [field.code, nativeAgentFieldSelectorV2(resource, field, authz)]));
170
+ const coverage = (names) => [...new Set(names)].flatMap(name => {
171
+ const field = byField.get(name), route = routes.get(name);
172
+ if (!field || !route)
173
+ return [];
174
+ const savedScope = Boolean(field.userCandidates?.scope?.field);
175
+ return [{ field: name, ...(route.selector ? { selector: route.selector } : {}),
176
+ create: task.kind === 'form' && task.action === 'create' && !savedScope,
177
+ update: task.kind === 'form' && task.action === 'update',
178
+ filter: task.kind === 'view' && (task.filters ?? view.list?.filterFields ?? []).includes(name) && !route.ambiguousScope,
179
+ output: route.ambiguousScope ? 'page' : route.selector ? 'label' : 'value',
180
+ ...(route.ambiguousScope ? { reason: 'multiple-scope-dimensions' } : savedScope ? { reason: 'saved-scope-required' } : {}),
181
+ }];
182
+ });
183
+ const base = { code: `${appCode}.agent.${agentCode}.${task.code}`, appCode,
184
+ name: task.name || `${resource.name}${task.kind === 'view' ? '查询' : task.action === 'create' ? '新增' : '修改'}`.slice(0, 80),
185
+ description: task.description || `通过${resource.name}的${task.view}标准视图${task.kind === 'view' ? '查询' : '填写'},遵守当前用户权限`,
186
+ kind: 'nativeTask', resources: [resource.code], limits: { timeoutMs: 10000 },
187
+ agent: { visibility: 'task', ...(task.examples?.length ? { examples: [...task.examples] } : {}) },
188
+ };
189
+ if (task.kind === 'view') {
190
+ if (view.generated?.list === false)
191
+ fail('LIST_DISABLED', pointer, '该视图未生成列表');
192
+ const requestedFilters = task.filters ?? view.list?.filterFields ?? [];
193
+ if (requestedFilters.some(field => !view.list?.filterFields?.includes(field)))
194
+ fail('FILTER_WIDENING', `${pointer}/filters`, '任务只能缩小视图筛选字段');
195
+ const filterFields = requestedFilters.filter(field => !routes.get(field)?.ambiguousScope);
196
+ const filters = Object.fromEntries(filterFields.map(field => {
197
+ const definition = byField.get(field);
198
+ const hint = definition && nativeAgentFieldHintSchemaV2(definition, true, routes.get(field));
199
+ if (!hint)
200
+ fail('FILTER_TYPE_UNSUPPORTED', `${pointer}/filters`, `字段 ${field} 暂不支持模型筛选提示`);
201
+ return [field, hint];
202
+ }));
203
+ const sortable = (view.list?.fieldOrder || []).filter(field => resource.surface.fields[field]?.sortable);
204
+ if (view.list?.defaultSort && !sortable.includes(view.list.defaultSort.field))
205
+ sortable.push(view.list.defaultSort.field);
206
+ const hintSchema = objectSchema({
207
+ ...(view.list?.searchableFields?.length ? { keyword: { type: 'string', maxLength: 200 } } : {}),
208
+ ...(filterFields.length ? { filters: objectSchema(filters) } : {}),
209
+ ...(sortable.length ? { sort: objectSchema({ field: { enum: sortable }, order: { enum: ['asc', 'desc'] } }, ['field']) } : {}),
210
+ limit: { type: 'integer', minimum: 1, maximum: 100 }, continue: { type: 'string', minLength: 1, maxLength: 80 }, record: handleSchema,
211
+ });
212
+ return { ...base, operation: 'query', inputSchema: { type: 'object' }, outputSchema: resultSchema,
213
+ authorization: { capabilities: [resource.capabilities.read] }, risk: 'read', confirmation: 'none',
214
+ idempotency: 'none', concurrency: 'none', sideEffects: [], limits: { ...base.limits, maxRows: 100 },
215
+ binding: { kind: 'native-view', resourceCode: resource.code, viewCode: task.view, filterFields },
216
+ agent: { ...base.agent, nativeTask: { contractVersion: 2, agentCode, taskCode: task.code, hintSchema,
217
+ coverage: coverage([...requestedFilters, ...view.list?.fieldOrder || [], ...view.detail?.fieldOrder || []]) } },
218
+ };
219
+ }
220
+ if ((resource.surface.mutationOwner || 'native') !== 'native' || view.generated?.[task.action] === false)
221
+ fail('MUTATION_NOT_NATIVE', pointer, '只能绑定已生成的普通原生 create/update');
222
+ const fields = task.fields;
223
+ if (!fields.length)
224
+ fail('FIELDS_REQUIRED', `${pointer}/fields`, '需要至少一个表单字段');
225
+ for (const field of fields) {
226
+ const definition = byField.get(field);
227
+ const display = resource.surface.fields[field];
228
+ if (!definition || !view.form?.fieldOrder?.includes(field) || !display || display.system || display.hidden ||
229
+ isDataAuditMetadataField(field) || isDataSystemSortField(field) || unavailable.has(definition.type))
230
+ fail('FORM_FIELD_UNSUPPORTED', `${pointer}/fields`, `字段 ${field} 不属于可编辑的标准单控件表单`);
231
+ if (!Array.isArray(display[`${task.action}Capabilities`]) || display[`${task.action}Capabilities`].length === 0)
232
+ fail('FORM_FIELD_UNWRITABLE', `${pointer}/fields`, `字段 ${field} 未提供 ${task.action} 权限`);
233
+ if (task.action === 'create' && definition.userCandidates?.scope?.field)
234
+ fail('CANDIDATE_CREATE_OWNER_REQUIRED', `${pointer}/fields`, `任务 ${task.code} 字段 ${field} (user-candidates) 的范围取自记录字段,新建需通过流程发起或 Nest 业务操作办理`);
235
+ }
236
+ const included = new Set(fields);
237
+ if (task.action === 'create') {
238
+ for (const field of resource.schema.fields) {
239
+ if (nativeFieldRequiresCreateInputV2(field, resource.surface.fields[field.code]) && !included.has(field.code))
240
+ fail('CREATE_FIELD_REQUIRED', `${pointer}/fields`, `必须包含新增必填字段 ${field.code}`);
241
+ }
242
+ for (const name of fields)
243
+ for (const binding of formBindings(resource, byField.get(name)))
244
+ if (!included.has(binding))
245
+ fail('CREATE_BINDING_REQUIRED', `${pointer}/fields`, `${name} 依赖 ${binding},必须包含绑定字段`);
246
+ }
247
+ else {
248
+ // If a binding is changed, every dependent selector must be visible on the
249
+ // card. A selector may still use an unchanged private saved binding.
250
+ for (const field of resource.schema.fields)
251
+ if (formBindings(resource, field).some(binding => included.has(binding)) && !included.has(field.code))
252
+ fail('UPDATE_DEPENDENT_REQUIRED', `${pointer}/fields`, `修改绑定字段时必须包含依赖选择器 ${field.code}`);
253
+ }
254
+ const definitions = fields.map(field => byField.get(field));
255
+ const required = task.action === 'create' ? definitions.filter(field => nativeFieldRequiresCreateInputV2(field, resource.surface.fields[field.code])).map(field => field.code) : [];
256
+ const dataSchema = objectSchema(Object.fromEntries(definitions.map(field => [field.code, field.nullable === false ? fieldValueSchemaForDefinition(field) : { anyOf: [fieldValueSchemaForDefinition(field), { type: 'null' }] }])), required);
257
+ const hints = Object.fromEntries(definitions.flatMap(field => {
258
+ const hint = nativeAgentFieldHintSchemaV2(field, false, routes.get(field.code));
259
+ return hint ? [[field.code, hint]] : [];
260
+ }));
261
+ const binding = { kind: 'native-form', resourceCode: resource.code,
262
+ viewCode: task.view, action: task.action, fields: [...fields] };
263
+ const inputSchema = objectSchema({ data: dataSchema, ...(task.action === 'update' ? {
264
+ id: { type: 'string', format: 'uuid' }, expectedRevision: { type: 'integer', minimum: 1 },
265
+ } : {}) }, ['data', ...(task.action === 'update' ? ['id', 'expectedRevision'] : [])]);
266
+ return { ...base, operation: task.action, inputSchema, outputSchema: resultSchema,
267
+ authorization: { capabilities: [resource.capabilities[task.action]] }, risk: 'write',
268
+ confirmation: task.confirmation || 'required', idempotency: 'required', concurrency: task.action === 'update' ? 'revision' : 'none',
269
+ sideEffects: [`${resource.code}:${task.action}`], reconcile: { kind: 'platform-transaction' }, binding,
270
+ agent: { ...base.agent, nativeTask: { contractVersion: 2, agentCode, taskCode: task.code,
271
+ hintSchema: objectSchema({ data: objectSchema(hints), ...(task.action === 'update' ? { record: handleSchema } : {}) }), coverage: coverage(fields),
272
+ form: { contractVersion: 2, action: task.action, title: base.name, submitLabel: '提交', resource: resource.code, view: task.view,
273
+ fields: definitions.map(field => ({ path: field.code, label: resource.surface.fields[field.code].label,
274
+ fieldType: field.type, required: nativeFieldRequiresCreateInputV2(field, resource.surface.fields[field.code]), source: { resource: resource.code, field: field.code },
275
+ ...(routes.get(field.code)?.selector ? { selector: routes.get(field.code).selector } : {}) })) },
276
+ } },
277
+ };
278
+ }
279
+ export function compileApplicationAgentsV2(appCode, input, resources, options = {}) {
280
+ const definitions = { schemaVersion: 'openxiangda.application-agent-definitions/v2', appCode, agents: [] };
281
+ const capabilities = [];
282
+ if (input === undefined)
283
+ return { definitions, capabilities };
284
+ if (!Array.isArray(resources))
285
+ fail('RESOURCES_INVALID', '/data/resources', '需要已验证的模型列表');
286
+ if (!Array.isArray(input) || input.length > APPLICATION_AGENT_LIMITS_V2.agents)
287
+ fail('AGENT_LIMIT', '/agents', '最多 20 个助手');
288
+ const agentCodes = new Set();
289
+ for (let i = 0; i < input.length; i++) {
290
+ const pointer = `/agents/${i}`;
291
+ const raw = object(input[i], pointer);
292
+ keys(raw, ['code', 'name', 'purpose', 'instructions', 'starters', 'tasks'], pointer);
293
+ const agentCode = code(raw.code, `${pointer}/code`);
294
+ if (agentCodes.has(agentCode))
295
+ fail('CODE_DUPLICATE', `${pointer}/code`, '助手代码重复');
296
+ agentCodes.add(agentCode);
297
+ const name = text(raw.name, 80, `${pointer}/name`);
298
+ const purpose = text(raw.purpose, 1000, `${pointer}/purpose`);
299
+ const instruction = instructions(raw.instructions, `${pointer}/instructions`, options.allowInstructionFiles === true);
300
+ const starters = strings(raw.starters, 12, 160, `${pointer}/starters`);
301
+ if (!Array.isArray(raw.tasks) || raw.tasks.length < 1 || raw.tasks.length > 20)
302
+ fail('TASK_LIMIT', `${pointer}/tasks`, '需要 1–20 个任务');
303
+ const taskCodes = new Set();
304
+ const agentCapabilities = raw.tasks.map((value, j) => {
305
+ const path = `${pointer}/tasks/${j}`;
306
+ const task = object(value, path);
307
+ if (!['view', 'form'].includes(task.kind))
308
+ fail('TASK_KIND_INVALID', `${path}/kind`, '只支持 view/form');
309
+ keys(task, ['code', 'kind', 'name', 'description', 'resource', 'view', 'examples',
310
+ ...(task.kind === 'view' ? ['filters'] : ['action', 'fields', 'confirmation'])], path);
311
+ const taskCode = code(task.code, `${path}/code`);
312
+ if (taskCodes.has(taskCode))
313
+ fail('TASK_CODE_DUPLICATE', `${path}/code`, '任务代码重复');
314
+ taskCodes.add(taskCode);
315
+ code(task.resource, `${path}/resource`);
316
+ code(task.view, `${path}/view`);
317
+ if (task.name !== undefined)
318
+ text(task.name, 80, `${path}/name`);
319
+ if (task.description !== undefined)
320
+ text(task.description, 1000, `${path}/description`);
321
+ strings(task.examples, 12, 160, `${path}/examples`);
322
+ if (task.kind === 'view')
323
+ strings(task.filters, 20, 100, `${path}/filters`);
324
+ else {
325
+ if (!['create', 'update'].includes(task.action))
326
+ fail('FORM_ACTION_INVALID', `${path}/action`, '只支持 create/update');
327
+ if (task.confirmation !== undefined && !['none', 'required'].includes(task.confirmation))
328
+ fail('CONFIRMATION_INVALID', `${path}/confirmation`, '确认策略无效');
329
+ if (!Array.isArray(task.fields))
330
+ fail('FIELDS_REQUIRED', `${path}/fields`, '需要字段列表');
331
+ strings(task.fields, 20, 100, `${path}/fields`);
332
+ }
333
+ return compileTask(appCode, agentCode, task, resources, path, options.authz);
334
+ });
335
+ const definition = { code: agentCode, name, purpose, instructions: typeof instruction === 'string' ? instruction : '', starters,
336
+ tasks: agentCapabilities.map(capability => ({ code: capability.agent.nativeTask.taskCode, capabilityCode: capability.code })) };
337
+ definitions.agents.push({ ...definition, digest: sha256Digest({ ...definition, capabilities: agentCapabilities }) });
338
+ capabilities.push(...agentCapabilities);
339
+ }
340
+ definitions.agents.sort((a, b) => a.code < b.code ? -1 : a.code > b.code ? 1 : 0);
341
+ capabilities.sort((a, b) => a.code < b.code ? -1 : a.code > b.code ? 1 : 0);
342
+ return { definitions, capabilities };
343
+ }
344
+ //# sourceMappingURL=application-agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"application-agent.js","sourceRoot":"","sources":["../../src/native-compiler/application-agent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { DataFieldOption, LabeledValue } from '../field-values.js';
2
+ export type CascadeStoredValue = LabeledValue[] | LabeledValue[][];
3
+ export declare function cascadeControlValue(value: CascadeStoredValue | undefined, multiple: boolean): string[] | string[][];
4
+ export declare function cascadeStoredValue(options: DataFieldOption[], value: unknown, multiple: boolean): LabeledValue[] | LabeledValue[][] | undefined;
5
+ export declare function cascadeTerminalValues(value: CascadeStoredValue | undefined, multiple: boolean): string[];
6
+ //# sourceMappingURL=cascade-value.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cascade-value.d.ts","sourceRoot":"","sources":["../../src/native-compiler/cascade-value.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAExE,MAAM,MAAM,kBAAkB,GAAG,YAAY,EAAE,GAAG,YAAY,EAAE,EAAE,CAAC;AAuBnE,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,kBAAkB,GAAG,SAAS,EACrC,QAAQ,EAAE,OAAO,yBAUlB;AAED,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,eAAe,EAAE,EAC1B,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,OAAO,iDASlB;AAED,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,kBAAkB,GAAG,SAAS,EACrC,QAAQ,EAAE,OAAO,YAUlB"}
@@ -0,0 +1,47 @@
1
+ function optionSnapshot(option) {
2
+ return {
3
+ value: option.value,
4
+ label: option.label,
5
+ ...(option.description ? { description: option.description } : {}),
6
+ ...(option.color ? { color: option.color } : {}),
7
+ };
8
+ }
9
+ function resolvePath(options, ids, index = 0) {
10
+ const option = options.find(item => item.value === ids[index]);
11
+ if (!option)
12
+ return undefined;
13
+ if (index === ids.length - 1)
14
+ return [optionSnapshot(option)];
15
+ const child = resolvePath(option.children || [], ids, index + 1);
16
+ return child ? [optionSnapshot(option), ...child] : undefined;
17
+ }
18
+ export function cascadeControlValue(value, multiple) {
19
+ if (multiple) {
20
+ return (Array.isArray(value) ? value : [])
21
+ .filter((path) => Array.isArray(path))
22
+ .map(path => path.map(item => item.value));
23
+ }
24
+ return (Array.isArray(value) ? value : [])
25
+ .filter((item) => !Array.isArray(item))
26
+ .map(item => item.value);
27
+ }
28
+ export function cascadeStoredValue(options, value, multiple) {
29
+ const paths = multiple
30
+ ? (Array.isArray(value) ? value : []).filter(Array.isArray)
31
+ : Array.isArray(value) && value.length ? [value.map(String)] : [];
32
+ const snapshots = paths
33
+ .map(path => resolvePath(options, path.map(String)))
34
+ .filter((path) => Boolean(path));
35
+ return multiple ? snapshots : snapshots[0];
36
+ }
37
+ export function cascadeTerminalValues(value, multiple) {
38
+ const paths = multiple
39
+ ? (Array.isArray(value) ? value : []).filter(Array.isArray)
40
+ : [Array.isArray(value)
41
+ ? value.filter(item => !Array.isArray(item))
42
+ : []];
43
+ return paths
44
+ .map(path => path[path.length - 1]?.value)
45
+ .filter((item) => Boolean(item));
46
+ }
47
+ //# sourceMappingURL=cascade-value.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cascade-value.js","sourceRoot":"","sources":["../../src/native-compiler/cascade-value.ts"],"names":[],"mappings":"AAIA,SAAS,cAAc,CAAC,MAAuB;IAC7C,OAAO;QACL,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACjD,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAClB,OAA0B,EAC1B,GAAa,EACb,KAAK,GAAG,CAAC;IAET,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/D,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAC9B,IAAI,KAAK,KAAK,GAAG,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;IAC9D,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;IACjE,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAChE,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,KAAqC,EACrC,QAAiB;IAEjB,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;aACvC,MAAM,CAAC,CAAC,IAAI,EAA0B,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;aAC7D,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;SACvC,MAAM,CAAC,CAAC,IAAI,EAAwB,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;SAC5D,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,OAA0B,EAC1B,KAAc,EACd,QAAiB;IAEjB,MAAM,KAAK,GAAG,QAAQ;QACpB,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAe;QACzE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACpE,MAAM,SAAS,GAAG,KAAK;SACpB,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;SACnD,MAAM,CAAC,CAAC,IAAI,EAA0B,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3D,OAAO,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,KAAqC,EACrC,QAAiB;IAEjB,MAAM,KAAK,GAAG,QAAQ;QACpB,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAqB;QAC/E,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;gBACnB,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAmB;gBAC9D,CAAC,CAAC,EAAE,CAAC,CAAC;IACZ,OAAO,KAAK;SACT,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC;SACzC,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AACrD,CAAC"}
@@ -4,7 +4,7 @@ declare const COMPILER_CONTRACT_VERSION: "native-4";
4
4
  export { NATIVE_CONTRACT_CAPACITY_V2, requiresExtendedDeclarationCapacity, requiresExtendedRoleCapacity, generatedCrudCapabilityOperations } from './declaration-capacity.js';
5
5
  export { NATIVE_ARTIFACT_CAPACITY_V2, NATIVE_HIGH_DENSITY_ARTIFACT_CAPACITY_V2, requiresHighDensityArtifactCapacity, requiresExtendedArtifactCapacity, requiresExtendedConfigurationBytes } from './artifact-capacity.js';
6
6
  export declare const DATA_EVENT_TYPES_V2: readonly ["openxiangda.data.record.created.v2", "openxiangda.data.record.updated.v2", "openxiangda.data.record.deleted.v2"];
7
- export declare const WORKFLOW_EVENT_TYPES_V2: readonly ["openxiangda.workflow.node.skipped.v2", "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"];
7
+ export { WORKFLOW_EVENT_TYPES_V2 } from './workflow-events.js';
8
8
  type JsonObject = Record<string, any>;
9
9
  export interface NativeConfigurationCompilerInput {
10
10
  appCode: string;
@@ -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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"}