openxiangda-devkit-core 2.59.0 → 2.62.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.
- package/dist/application-agent-source.d.ts +4 -0
- package/dist/application-agent-source.d.ts.map +1 -0
- package/dist/application-agent-source.js +45 -0
- package/dist/application-agent-source.js.map +1 -0
- package/dist/application-services.d.ts +43 -0
- package/dist/application-services.d.ts.map +1 -1
- package/dist/application-services.js +37 -0
- package/dist/application-services.js.map +1 -1
- package/dist/application-template-catalog.d.ts +101 -0
- package/dist/application-template-catalog.d.ts.map +1 -0
- package/dist/application-template-catalog.js +52 -0
- package/dist/application-template-catalog.js.map +1 -0
- package/dist/command-registry.d.ts +20 -0
- package/dist/command-registry.d.ts.map +1 -1
- package/dist/command-registry.js +2 -0
- package/dist/command-registry.js.map +1 -1
- package/dist/compiler/ai-catalog.d.ts.map +1 -1
- package/dist/compiler/ai-catalog.js +14 -0
- package/dist/compiler/ai-catalog.js.map +1 -1
- package/dist/compiler/bundle.d.ts +7 -0
- package/dist/compiler/bundle.d.ts.map +1 -1
- package/dist/compiler/bundle.js +13 -3
- package/dist/compiler/bundle.js.map +1 -1
- package/dist/compiler/config.d.ts +4 -0
- package/dist/compiler/config.d.ts.map +1 -1
- package/dist/compiler/config.js +33 -0
- package/dist/compiler/config.js.map +1 -1
- package/dist/compiler/permission-review.d.ts.map +1 -1
- package/dist/control-plane-client.d.ts +15 -0
- package/dist/control-plane-client.d.ts.map +1 -1
- package/dist/control-plane-client.js +12 -0
- package/dist/control-plane-client.js.map +1 -1
- package/dist/documentation.d.ts +7 -3
- package/dist/documentation.d.ts.map +1 -1
- package/dist/documentation.js +1 -0
- package/dist/documentation.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/internal/workflow.d.ts +7 -1
- package/dist/internal/workflow.d.ts.map +1 -1
- package/dist/internal/workflow.js +27 -18
- package/dist/internal/workflow.js.map +1 -1
- package/dist/session.d.ts +1 -1
- package/dist/workflow-source-sync.d.ts +59 -0
- package/dist/workflow-source-sync.d.ts.map +1 -0
- package/dist/workflow-source-sync.js +254 -0
- package/dist/workflow-source-sync.js.map +1 -0
- package/dist/workspace-loader.d.ts.map +1 -1
- package/dist/workspace-loader.js +2 -1
- package/dist/workspace-loader.js.map +1 -1
- package/package.json +2 -2
package/dist/compiler/config.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { compileApplicationAgentsV2, NativeApplicationAgentContractError } from 'openxiangda-contracts/native-compiler';
|
|
1
2
|
import { normalizeDataMutationGrants } from 'openxiangda-contracts';
|
|
2
3
|
import { parseNativeParentReadPolicy, validateNativeParentReadPolicies, NativeParentReadPolicyError, NativeDataPolicyExpressionV2Error } from 'openxiangda-contracts/native-compiler';
|
|
3
4
|
import { assertWorkflowNativeStagePolicy } from 'openxiangda-contracts';
|
|
@@ -808,6 +809,16 @@ function validateEventFilterCondition(value, path, allowedFields, diagnostics, s
|
|
|
808
809
|
export function validateAppConfig(value) {
|
|
809
810
|
const diagnostics = [];
|
|
810
811
|
const config = object(value);
|
|
812
|
+
if (config.agents !== undefined) {
|
|
813
|
+
try {
|
|
814
|
+
compileApplicationAgentsV2(String(object(config.app).code || ''), config.agents, (Array.isArray(object(config.data).resources) ? object(config.data).resources : []), { allowInstructionFiles: true, authz: object(config.authz) });
|
|
815
|
+
}
|
|
816
|
+
catch (error) {
|
|
817
|
+
if (!(error instanceof NativeApplicationAgentContractError))
|
|
818
|
+
throw error;
|
|
819
|
+
diagnostics.push(diagnostic(error.code, error.message, error.pointer));
|
|
820
|
+
}
|
|
821
|
+
}
|
|
811
822
|
rejectNativeEnvironmentFields(config, diagnostics);
|
|
812
823
|
if (config.schemaVersion !== 3) {
|
|
813
824
|
diagnostics.push(diagnostic('APP_CONFIG_SCHEMA_UNSUPPORTED', 'schemaVersion 必须是 3', 'schemaVersion', '使用 Native 2.0 模板重新生成 openxiangda-app.config.ts;不支持 v2 自动转换'));
|
|
@@ -1044,6 +1055,12 @@ export function validateAppConfig(value) {
|
|
|
1044
1055
|
}
|
|
1045
1056
|
});
|
|
1046
1057
|
}
|
|
1058
|
+
(Array.isArray(source.filterWhere) ? source.filterWhere : []).forEach((rawFilter, filterIndex) => {
|
|
1059
|
+
const filterField = string(object(rawFilter).field);
|
|
1060
|
+
if (!targetFieldList.some(candidate => string(object(candidate).code) === filterField)) {
|
|
1061
|
+
diagnostics.push(diagnostic('APP_CONFIG_DATA_RESOURCE_SOURCE_FILTER_FIELD_NOT_FOUND', `动态来源筛选字段 ${filterField} 未在 ${targetCode} 声明`, `${sourcePath}.filterWhere[${filterIndex}].field`));
|
|
1062
|
+
}
|
|
1063
|
+
});
|
|
1047
1064
|
const sourceFilters = Array.isArray(source.filters) ? source.filters : [];
|
|
1048
1065
|
sourceFilters.forEach((rawFilter, filterIndex) => {
|
|
1049
1066
|
const filter = object(rawFilter);
|
|
@@ -2526,6 +2543,7 @@ export function validateAppConfig(value) {
|
|
|
2526
2543
|
'definitionVersion',
|
|
2527
2544
|
'bindingVersion',
|
|
2528
2545
|
'acceptedCommandDeactivationPolicy',
|
|
2546
|
+
'sourceBase',
|
|
2529
2547
|
].includes(key))) {
|
|
2530
2548
|
diagnostics.push(diagnostic('APP_CONFIG_WORKFLOW_ACTIVATION_INVALID', 'Workflow activation 只能声明固定版本与停用策略', path));
|
|
2531
2549
|
}
|
|
@@ -2537,6 +2555,11 @@ export function validateAppConfig(value) {
|
|
|
2537
2555
|
if ('environmentKey' in activation) {
|
|
2538
2556
|
diagnostics.push(diagnostic('APP_CONFIG_ENVIRONMENT_OVERRIDE_FORBIDDEN', 'Workflow activation 属于环境中立 AppVersion,不能声明 environmentKey', `${path}.environmentKey`));
|
|
2539
2557
|
}
|
|
2558
|
+
if (activation.sourceBase !== undefined) {
|
|
2559
|
+
const base = object(activation.sourceBase);
|
|
2560
|
+
if (Object.keys(base).length !== 2 || !['definitionDigest', 'bindingDigest'].every(key => /^(sha256:)?[a-f0-9]{64}$/.test(String(base[key] || ''))))
|
|
2561
|
+
diagnostics.push(diagnostic('APP_CONFIG_WORKFLOW_SOURCE_BASE_INVALID', '源码基线只能包含 definitionDigest 和 bindingDigest', `${path}.sourceBase`));
|
|
2562
|
+
}
|
|
2540
2563
|
const definitionVersion = Number(activation.definitionVersion);
|
|
2541
2564
|
const bindingVersion = Number(activation.bindingVersion);
|
|
2542
2565
|
const definition = definitionByKey.get(`${workflowCode}:${definitionVersion}`);
|
|
@@ -3229,6 +3252,15 @@ function validateBackendOperations(rawOperations, declaredResources, declaredRes
|
|
|
3229
3252
|
? ai.sideEffects
|
|
3230
3253
|
: [];
|
|
3231
3254
|
const risk = string(ai.risk);
|
|
3255
|
+
if (risk === 'external' && ai.reconcile === undefined) {
|
|
3256
|
+
diagnostics.push({
|
|
3257
|
+
...diagnostic('AI_EXTERNAL_RECONCILIATION_MISSING', '外部 AI 操作未声明业务结果核对能力,执行结果不确定时只能保留未知并人工核实', `${path}.ai.reconcile`),
|
|
3258
|
+
severity: 'warning',
|
|
3259
|
+
});
|
|
3260
|
+
}
|
|
3261
|
+
if (object(ai.reconcile).kind === 'platform-transaction') {
|
|
3262
|
+
diagnostics.push({ ...diagnostic('AI_APP_TRANSACTION_RECONCILIATION_UNSUPPORTED', '应用业务操作的 completing 平台事务核对尚未提供;请声明只读状态操作,否则保留结果未知', `${path}.ai.reconcile`), severity: 'warning' });
|
|
3263
|
+
}
|
|
3232
3264
|
const aiKeys = Object.keys(ai);
|
|
3233
3265
|
const allowedAiKeys = new Set([
|
|
3234
3266
|
'name',
|
|
@@ -3237,6 +3269,7 @@ function validateBackendOperations(rawOperations, declaredResources, declaredRes
|
|
|
3237
3269
|
'confirmation',
|
|
3238
3270
|
'resources',
|
|
3239
3271
|
'sideEffects',
|
|
3272
|
+
'reconcile',
|
|
3240
3273
|
'concurrency',
|
|
3241
3274
|
'timeoutMs',
|
|
3242
3275
|
'agent',
|