openxiangda-devkit-core 2.59.0 → 2.60.1

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 (45) hide show
  1. package/dist/application-services.d.ts +43 -0
  2. package/dist/application-services.d.ts.map +1 -1
  3. package/dist/application-services.js +36 -0
  4. package/dist/application-services.js.map +1 -1
  5. package/dist/application-template-catalog.d.ts +101 -0
  6. package/dist/application-template-catalog.d.ts.map +1 -0
  7. package/dist/application-template-catalog.js +52 -0
  8. package/dist/application-template-catalog.js.map +1 -0
  9. package/dist/command-registry.d.ts +20 -0
  10. package/dist/command-registry.d.ts.map +1 -1
  11. package/dist/command-registry.js +2 -0
  12. package/dist/command-registry.js.map +1 -1
  13. package/dist/compiler/ai-catalog.d.ts.map +1 -1
  14. package/dist/compiler/ai-catalog.js +12 -0
  15. package/dist/compiler/ai-catalog.js.map +1 -1
  16. package/dist/compiler/bundle.d.ts.map +1 -1
  17. package/dist/compiler/bundle.js +6 -3
  18. package/dist/compiler/bundle.js.map +1 -1
  19. package/dist/compiler/config.d.ts +1 -0
  20. package/dist/compiler/config.d.ts.map +1 -1
  21. package/dist/compiler/config.js +22 -0
  22. package/dist/compiler/config.js.map +1 -1
  23. package/dist/compiler/permission-review.d.ts.map +1 -1
  24. package/dist/control-plane-client.d.ts +15 -0
  25. package/dist/control-plane-client.d.ts.map +1 -1
  26. package/dist/control-plane-client.js +12 -0
  27. package/dist/control-plane-client.js.map +1 -1
  28. package/dist/documentation.d.ts +7 -3
  29. package/dist/documentation.d.ts.map +1 -1
  30. package/dist/documentation.js +1 -0
  31. package/dist/documentation.js.map +1 -1
  32. package/dist/index.d.ts +1 -0
  33. package/dist/index.d.ts.map +1 -1
  34. package/dist/index.js +1 -0
  35. package/dist/index.js.map +1 -1
  36. package/dist/internal/workflow.d.ts +7 -1
  37. package/dist/internal/workflow.d.ts.map +1 -1
  38. package/dist/internal/workflow.js +27 -18
  39. package/dist/internal/workflow.js.map +1 -1
  40. package/dist/session.d.ts +1 -1
  41. package/dist/workflow-source-sync.d.ts +59 -0
  42. package/dist/workflow-source-sync.d.ts.map +1 -0
  43. package/dist/workflow-source-sync.js +254 -0
  44. package/dist/workflow-source-sync.js.map +1 -0
  45. package/package.json +2 -2
@@ -1044,6 +1044,12 @@ export function validateAppConfig(value) {
1044
1044
  }
1045
1045
  });
1046
1046
  }
1047
+ (Array.isArray(source.filterWhere) ? source.filterWhere : []).forEach((rawFilter, filterIndex) => {
1048
+ const filterField = string(object(rawFilter).field);
1049
+ if (!targetFieldList.some(candidate => string(object(candidate).code) === filterField)) {
1050
+ diagnostics.push(diagnostic('APP_CONFIG_DATA_RESOURCE_SOURCE_FILTER_FIELD_NOT_FOUND', `动态来源筛选字段 ${filterField} 未在 ${targetCode} 声明`, `${sourcePath}.filterWhere[${filterIndex}].field`));
1051
+ }
1052
+ });
1047
1053
  const sourceFilters = Array.isArray(source.filters) ? source.filters : [];
1048
1054
  sourceFilters.forEach((rawFilter, filterIndex) => {
1049
1055
  const filter = object(rawFilter);
@@ -2526,6 +2532,7 @@ export function validateAppConfig(value) {
2526
2532
  'definitionVersion',
2527
2533
  'bindingVersion',
2528
2534
  'acceptedCommandDeactivationPolicy',
2535
+ 'sourceBase',
2529
2536
  ].includes(key))) {
2530
2537
  diagnostics.push(diagnostic('APP_CONFIG_WORKFLOW_ACTIVATION_INVALID', 'Workflow activation 只能声明固定版本与停用策略', path));
2531
2538
  }
@@ -2537,6 +2544,11 @@ export function validateAppConfig(value) {
2537
2544
  if ('environmentKey' in activation) {
2538
2545
  diagnostics.push(diagnostic('APP_CONFIG_ENVIRONMENT_OVERRIDE_FORBIDDEN', 'Workflow activation 属于环境中立 AppVersion,不能声明 environmentKey', `${path}.environmentKey`));
2539
2546
  }
2547
+ if (activation.sourceBase !== undefined) {
2548
+ const base = object(activation.sourceBase);
2549
+ if (Object.keys(base).length !== 2 || !['definitionDigest', 'bindingDigest'].every(key => /^(sha256:)?[a-f0-9]{64}$/.test(String(base[key] || ''))))
2550
+ diagnostics.push(diagnostic('APP_CONFIG_WORKFLOW_SOURCE_BASE_INVALID', '源码基线只能包含 definitionDigest 和 bindingDigest', `${path}.sourceBase`));
2551
+ }
2540
2552
  const definitionVersion = Number(activation.definitionVersion);
2541
2553
  const bindingVersion = Number(activation.bindingVersion);
2542
2554
  const definition = definitionByKey.get(`${workflowCode}:${definitionVersion}`);
@@ -3229,6 +3241,15 @@ function validateBackendOperations(rawOperations, declaredResources, declaredRes
3229
3241
  ? ai.sideEffects
3230
3242
  : [];
3231
3243
  const risk = string(ai.risk);
3244
+ if (risk === 'external' && ai.reconcile === undefined) {
3245
+ diagnostics.push({
3246
+ ...diagnostic('AI_EXTERNAL_RECONCILIATION_MISSING', '外部 AI 操作未声明业务结果核对能力,执行结果不确定时只能保留未知并人工核实', `${path}.ai.reconcile`),
3247
+ severity: 'warning',
3248
+ });
3249
+ }
3250
+ if (object(ai.reconcile).kind === 'platform-transaction') {
3251
+ diagnostics.push({ ...diagnostic('AI_APP_TRANSACTION_RECONCILIATION_UNSUPPORTED', '应用业务操作的 completing 平台事务核对尚未提供;请声明只读状态操作,否则保留结果未知', `${path}.ai.reconcile`), severity: 'warning' });
3252
+ }
3232
3253
  const aiKeys = Object.keys(ai);
3233
3254
  const allowedAiKeys = new Set([
3234
3255
  'name',
@@ -3237,6 +3258,7 @@ function validateBackendOperations(rawOperations, declaredResources, declaredRes
3237
3258
  'confirmation',
3238
3259
  'resources',
3239
3260
  'sideEffects',
3261
+ 'reconcile',
3240
3262
  'concurrency',
3241
3263
  'timeoutMs',
3242
3264
  'agent',