@lokvis/schema 0.2.2 → 0.4.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.
@@ -0,0 +1,19 @@
1
+ /**
2
+ * AUTO-GENERATED BY scripts/codegen-capabilities.ts — DO NOT EDIT.
3
+ *
4
+ * 来源:packages/capability/manifests/ai.manifest.json, packages/capability/manifests/audio.manifest.json, packages/capability/manifests/image.manifest.json, packages/capability/manifests/pdf.manifest.json, packages/capability/manifests/video.manifest.json
5
+ * 重跑:pnpm codegen
6
+ *
7
+ * 此文件提供精确字面量联合类型 BuiltinCapabilityName,
8
+ * 用于 IDE 自动补全与编译期拼写检查。
9
+ *
10
+ * 注意:
11
+ * - `CapabilityName`(见 capability.ts)仍是 `string` 别名,
12
+ * 接受任意能力名(含第三方 plugin 注册的自定义能力)
13
+ * - `BuiltinCapabilityName` 是已知内置能力的字面量子集,
14
+ * 可作为 `CapabilityName` 的精确化类型
15
+ */
16
+ export type BuiltinCapabilityName = 'ai.ocr' | 'ai.caption' | 'ai.background-remove' | 'ai.generate-workflow' | 'ai.optimize-workflow' | 'audio.trim' | 'audio.normalize' | 'audio.merge' | 'audio.transcode' | 'audio.denoise' | 'image.resize' | 'image.compress' | 'image.convert' | 'image.crop' | 'image.rotate' | 'image.flip' | 'image.watermark' | 'image.background' | 'image.filter' | 'pdf.merge' | 'pdf.split' | 'pdf.compress' | 'pdf.rotate' | 'pdf.watermark' | 'pdf.ocr' | 'pdf.sign' | 'pdf.add-page-numbers' | 'video.compress' | 'video.transcode' | 'video.trim' | 'video.merge' | 'video.extract-audio' | 'video.to-gif' | 'video.screenshot';
17
+ /** 全部内置能力名常量数组(运行时校验 / 枚举用) */
18
+ export declare const BUILTIN_CAPABILITY_NAMES: readonly BuiltinCapabilityName[];
19
+ //# sourceMappingURL=capability-names.generated.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capability-names.generated.d.ts","sourceRoot":"","sources":["../src/capability-names.generated.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,qBAAqB,GAC7B,QAAQ,GACR,YAAY,GACZ,sBAAsB,GACtB,sBAAsB,GACtB,sBAAsB,GACtB,YAAY,GACZ,iBAAiB,GACjB,aAAa,GACb,iBAAiB,GACjB,eAAe,GACf,cAAc,GACd,gBAAgB,GAChB,eAAe,GACf,YAAY,GACZ,cAAc,GACd,YAAY,GACZ,iBAAiB,GACjB,kBAAkB,GAClB,cAAc,GACd,WAAW,GACX,WAAW,GACX,cAAc,GACd,YAAY,GACZ,eAAe,GACf,SAAS,GACT,UAAU,GACV,sBAAsB,GACtB,gBAAgB,GAChB,iBAAiB,GACjB,YAAY,GACZ,aAAa,GACb,qBAAqB,GACrB,cAAc,GACd,kBAAkB,CAAC;AAEvB,+BAA+B;AAC/B,eAAO,MAAM,wBAAwB,EAAE,SAAS,qBAAqB,EAmCpE,CAAC"}
@@ -0,0 +1,38 @@
1
+ /** 全部内置能力名常量数组(运行时校验 / 枚举用) */
2
+ export const BUILTIN_CAPABILITY_NAMES = [
3
+ 'ai.ocr',
4
+ 'ai.caption',
5
+ 'ai.background-remove',
6
+ 'ai.generate-workflow',
7
+ 'ai.optimize-workflow',
8
+ 'audio.trim',
9
+ 'audio.normalize',
10
+ 'audio.merge',
11
+ 'audio.transcode',
12
+ 'audio.denoise',
13
+ 'image.resize',
14
+ 'image.compress',
15
+ 'image.convert',
16
+ 'image.crop',
17
+ 'image.rotate',
18
+ 'image.flip',
19
+ 'image.watermark',
20
+ 'image.background',
21
+ 'image.filter',
22
+ 'pdf.merge',
23
+ 'pdf.split',
24
+ 'pdf.compress',
25
+ 'pdf.rotate',
26
+ 'pdf.watermark',
27
+ 'pdf.ocr',
28
+ 'pdf.sign',
29
+ 'pdf.add-page-numbers',
30
+ 'video.compress',
31
+ 'video.transcode',
32
+ 'video.trim',
33
+ 'video.merge',
34
+ 'video.extract-audio',
35
+ 'video.to-gif',
36
+ 'video.screenshot',
37
+ ];
38
+ //# sourceMappingURL=capability-names.generated.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capability-names.generated.js","sourceRoot":"","sources":["../src/capability-names.generated.ts"],"names":[],"mappings":"AAmDA,+BAA+B;AAC/B,MAAM,CAAC,MAAM,wBAAwB,GAAqC;IACxE,QAAQ;IACR,YAAY;IACZ,sBAAsB;IACtB,sBAAsB;IACtB,sBAAsB;IACtB,YAAY;IACZ,iBAAiB;IACjB,aAAa;IACb,iBAAiB;IACjB,eAAe;IACf,cAAc;IACd,gBAAgB;IAChB,eAAe;IACf,YAAY;IACZ,cAAc;IACd,YAAY;IACZ,iBAAiB;IACjB,kBAAkB;IAClB,cAAc;IACd,WAAW;IACX,WAAW;IACX,cAAc;IACd,YAAY;IACZ,eAAe;IACf,SAAS;IACT,UAAU;IACV,sBAAsB;IACtB,gBAAgB;IAChB,iBAAiB;IACjB,YAAY;IACZ,aAAa;IACb,qBAAqB;IACrB,cAAc;IACd,kBAAkB;CACnB,CAAC"}
@@ -87,6 +87,17 @@ export declare const workflowEdgeSchema: z.ZodObject<{
87
87
  from: string;
88
88
  to: string;
89
89
  }>;
90
+ /** E1: 多 target 输出定义 */
91
+ export declare const outputTargetSchema: z.ZodObject<{
92
+ name: z.ZodString;
93
+ params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
94
+ }, "strip", z.ZodTypeAny, {
95
+ name: string;
96
+ params?: Record<string, unknown> | undefined;
97
+ }, {
98
+ name: string;
99
+ params?: Record<string, unknown> | undefined;
100
+ }>;
90
101
  export declare const workflowSchema: z.ZodObject<{
91
102
  $schema: z.ZodOptional<z.ZodString>;
92
103
  id: z.ZodString;
@@ -165,20 +176,38 @@ export declare const workflowSchema: z.ZodObject<{
165
176
  outputs: z.ZodObject<{
166
177
  type: z.ZodEnum<["image", "video", "audio", "pdf", "text", "data", "unknown", "archive"]>;
167
178
  format: z.ZodOptional<z.ZodString>;
179
+ targets: z.ZodOptional<z.ZodArray<z.ZodObject<{
180
+ name: z.ZodString;
181
+ params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
182
+ }, "strip", z.ZodTypeAny, {
183
+ name: string;
184
+ params?: Record<string, unknown> | undefined;
185
+ }, {
186
+ name: string;
187
+ params?: Record<string, unknown> | undefined;
188
+ }>, "many">>;
168
189
  }, "strip", z.ZodTypeAny, {
169
190
  type: "image" | "video" | "audio" | "pdf" | "text" | "data" | "unknown" | "archive";
170
191
  format?: string | undefined;
192
+ targets?: {
193
+ name: string;
194
+ params?: Record<string, unknown> | undefined;
195
+ }[] | undefined;
171
196
  }, {
172
197
  type: "image" | "video" | "audio" | "pdf" | "text" | "data" | "unknown" | "archive";
173
198
  format?: string | undefined;
199
+ targets?: {
200
+ name: string;
201
+ params?: Record<string, unknown> | undefined;
202
+ }[] | undefined;
174
203
  }>;
175
204
  official: z.ZodOptional<z.ZodBoolean>;
176
205
  createdAt: z.ZodOptional<z.ZodNumber>;
177
206
  updatedAt: z.ZodOptional<z.ZodNumber>;
178
207
  }, "strip", z.ZodTypeAny, {
179
208
  id: string;
180
- version: string;
181
209
  name: string;
210
+ version: string;
182
211
  description: string;
183
212
  author: {
184
213
  id: string;
@@ -206,6 +235,10 @@ export declare const workflowSchema: z.ZodObject<{
206
235
  outputs: {
207
236
  type: "image" | "video" | "audio" | "pdf" | "text" | "data" | "unknown" | "archive";
208
237
  format?: string | undefined;
238
+ targets?: {
239
+ name: string;
240
+ params?: Record<string, unknown> | undefined;
241
+ }[] | undefined;
209
242
  };
210
243
  $schema?: string | undefined;
211
244
  official?: boolean | undefined;
@@ -213,8 +246,8 @@ export declare const workflowSchema: z.ZodObject<{
213
246
  updatedAt?: number | undefined;
214
247
  }, {
215
248
  id: string;
216
- version: string;
217
249
  name: string;
250
+ version: string;
218
251
  description: string;
219
252
  author: {
220
253
  id: string;
@@ -242,6 +275,10 @@ export declare const workflowSchema: z.ZodObject<{
242
275
  outputs: {
243
276
  type: "image" | "video" | "audio" | "pdf" | "text" | "data" | "unknown" | "archive";
244
277
  format?: string | undefined;
278
+ targets?: {
279
+ name: string;
280
+ params?: Record<string, unknown> | undefined;
281
+ }[] | undefined;
245
282
  };
246
283
  $schema?: string | undefined;
247
284
  official?: boolean | undefined;
@@ -266,8 +303,8 @@ export declare const pluginManifestSchema: z.ZodObject<{
266
303
  }>;
267
304
  permissions: z.ZodArray<z.ZodString, "many">;
268
305
  }, "strip", z.ZodTypeAny, {
269
- version: string;
270
306
  name: string;
307
+ version: string;
271
308
  description: string;
272
309
  author: string;
273
310
  license: string;
@@ -279,8 +316,8 @@ export declare const pluginManifestSchema: z.ZodObject<{
279
316
  permissions: string[];
280
317
  icon?: string | undefined;
281
318
  }, {
282
- version: string;
283
319
  name: string;
320
+ version: string;
284
321
  description: string;
285
322
  author: string;
286
323
  license: string;
@@ -322,8 +359,8 @@ export interface ValidateWorkflowOptions {
322
359
  }
323
360
  export declare function validateWorkflow(data: unknown, options?: ValidateWorkflowOptions): z.SafeParseError<{
324
361
  id: string;
325
- version: string;
326
362
  name: string;
363
+ version: string;
327
364
  description: string;
328
365
  author: {
329
366
  id: string;
@@ -351,6 +388,10 @@ export declare function validateWorkflow(data: unknown, options?: ValidateWorkfl
351
388
  outputs: {
352
389
  type: "image" | "video" | "audio" | "pdf" | "text" | "data" | "unknown" | "archive";
353
390
  format?: string | undefined;
391
+ targets?: {
392
+ name: string;
393
+ params?: Record<string, unknown> | undefined;
394
+ }[] | undefined;
354
395
  };
355
396
  $schema?: string | undefined;
356
397
  official?: boolean | undefined;
@@ -370,8 +411,8 @@ export declare function validateWorkflow(data: unknown, options?: ValidateWorkfl
370
411
  success: true;
371
412
  data: {
372
413
  id: string;
373
- version: string;
374
414
  name: string;
415
+ version: string;
375
416
  description: string;
376
417
  author: {
377
418
  id: string;
@@ -399,6 +440,10 @@ export declare function validateWorkflow(data: unknown, options?: ValidateWorkfl
399
440
  outputs: {
400
441
  type: "image" | "video" | "audio" | "pdf" | "text" | "data" | "unknown" | "archive";
401
442
  format?: string | undefined;
443
+ targets?: {
444
+ name: string;
445
+ params?: Record<string, unknown> | undefined;
446
+ }[] | undefined;
402
447
  };
403
448
  $schema?: string | undefined;
404
449
  official?: boolean | undefined;
@@ -409,8 +454,8 @@ export declare function validateWorkflow(data: unknown, options?: ValidateWorkfl
409
454
  };
410
455
  /** 校验 Plugin Manifest */
411
456
  export declare function validatePluginManifest(data: unknown): z.SafeParseReturnType<{
412
- version: string;
413
457
  name: string;
458
+ version: string;
414
459
  description: string;
415
460
  author: string;
416
461
  license: string;
@@ -422,8 +467,8 @@ export declare function validatePluginManifest(data: unknown): z.SafeParseReturn
422
467
  permissions: string[];
423
468
  icon?: string | undefined;
424
469
  }, {
425
- version: string;
426
470
  name: string;
471
+ version: string;
427
472
  description: string;
428
473
  author: string;
429
474
  license: string;
@@ -1 +1 @@
1
- {"version":3,"file":"validators.d.ts","sourceRoot":"","sources":["../src/validators.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,eAAe,0EAQ1B,CAAC;AAEH,kDAAkD;AAClD,eAAO,MAAM,sBAAsB,oHAWjC,CAAC;AAEH,+CAA+C;AAC/C,eAAO,MAAM,wBAAwB,qFASnC,CAAC;AAEH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAS9B,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAU9B,CAAC;AAEF,eAAO,MAAM,kBAAkB;;;;;;;;;EAG7B,CAAC;AAEH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwBzB,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAW/B,CAAC;AAEH;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,WAAW,uBAAuB;IACtC,iDAAiD;IACjD,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK;QACpC,UAAU,EAAE,MAAM,EAAE,CAAC;QACrB,WAAW,EAAE,MAAM,EAAE,CAAC;KACvB,GAAG,SAAS,CAAC;IACd,kBAAkB;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+HhF;AA4FD,yBAAyB;AACzB,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;GAEnD"}
1
+ {"version":3,"file":"validators.d.ts","sourceRoot":"","sources":["../src/validators.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,eAAe,0EAQ1B,CAAC;AAEH,kDAAkD;AAClD,eAAO,MAAM,sBAAsB,oHAWjC,CAAC;AAEH,+CAA+C;AAC/C,eAAO,MAAM,wBAAwB,qFASnC,CAAC;AAEH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAS9B,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAU9B,CAAC;AAEF,eAAO,MAAM,kBAAkB;;;;;;;;;EAG7B,CAAC;AAEH,wBAAwB;AACxB,eAAO,MAAM,kBAAkB;;;;;;;;;EAG7B,CAAC;AAEH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyBzB,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAW/B,CAAC;AAEH;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,WAAW,uBAAuB;IACtC,iDAAiD;IACjD,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK;QACpC,UAAU,EAAE,MAAM,EAAE,CAAC;QACrB,WAAW,EAAE,MAAM,EAAE,CAAC;KACvB,GAAG,SAAS,CAAC;IACd,kBAAkB;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA0IhF;AAqGD,yBAAyB;AACzB,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;GAEnD"}
@@ -59,6 +59,11 @@ export const workflowEdgeSchema = z.object({
59
59
  from: z.string(),
60
60
  to: z.string(),
61
61
  });
62
+ /** E1: 多 target 输出定义 */
63
+ export const outputTargetSchema = z.object({
64
+ name: z.string(),
65
+ params: z.record(z.unknown()).optional(),
66
+ });
62
67
  export const workflowSchema = z.object({
63
68
  $schema: z.string().optional(),
64
69
  id: z.string(),
@@ -79,6 +84,7 @@ export const workflowSchema = z.object({
79
84
  outputs: z.object({
80
85
  type: workflowOutputTypeSchema,
81
86
  format: z.string().optional(),
87
+ targets: z.array(outputTargetSchema).optional(),
82
88
  }),
83
89
  official: z.boolean().optional(),
84
90
  createdAt: z.number().optional(),
@@ -182,6 +188,16 @@ export function validateWorkflow(data, options) {
182
188
  errors.push(`Workflow contains a cycle: only ${visited}/${wf.nodes.length} nodes are reachable.`);
183
189
  }
184
190
  }
191
+ // 4b. E1: 多 target 名称唯一性校验
192
+ if (wf.outputs.targets && wf.outputs.targets.length > 0) {
193
+ const seenTargetNames = new Set();
194
+ for (const target of wf.outputs.targets) {
195
+ if (seenTargetNames.has(target.name)) {
196
+ errors.push(`Duplicate output target name: "${target.name}". Target names must be unique.`);
197
+ }
198
+ seenTargetNames.add(target.name);
199
+ }
200
+ }
185
201
  // 5. W10.2: capability 兼容性校验(可选,仅在 resolveCapability 提供时)
186
202
  // 检查相邻节点(通过 edge 连接)的 outputTypes 与下一节点的 inputTypes 是否有交集。
187
203
  // - 线性链:edge.from → edge.to,from 节点的 outputTypes 与 to 节点的 inputTypes 交集为空则报错
@@ -228,21 +244,31 @@ function validateCapabilityCompatibility(wf, resolveCapability, errors) {
228
244
  capCache.set(node.capability, cap);
229
245
  return cap;
230
246
  };
231
- // 5a. 输入节点(入度 0)的 inputTypes workflow.inputs.type 兼容
247
+ // 5a. 全节点 capability 注册校验(transform + input + output 均覆盖)
248
+ // B4 修复:原实现仅检查入度 0 节点,transform 节点的 unknown capability
249
+ // 在 5b 边检查中被静默跳过(`!fromCap || !toCap` continue),导致用户得到
250
+ // "校验通过"假象,运行时才报错。现拆分为两步:
251
+ // - 5a:全节点 unknown capability 检查(不区分入度)
252
+ // - 5a-in:输入节点 inputTypes 与 workflow.inputs.type 兼容性检查
232
253
  for (const node of wf.nodes) {
233
- if ((inDegree.get(node.id) ?? 0) > 0)
254
+ if (!node.capability)
234
255
  continue;
235
256
  const cap = getCap(node);
236
- // 未注册的 capability 不静默跳过:在 schema 层显式报错,避免用户得到"校验通过"
237
- // 的假象,运行时才报错。resolveCapability 未提供时(getCap 始终返回 undefined)
238
- // 整个 capability 兼容性校验跳过(向后兼容,见 5d 兜底)
257
+ // 未注册的 capability 不静默跳过:在 schema 层显式报错
258
+ // resolveCapability 未提供时(getCap 始终返回 undefined)
259
+ // 整个 capability 兼容性校验跳过( validateWorkflow 的 if 守卫保证)
239
260
  if (!cap) {
240
- if (node.capability) {
241
- errors.push(`Node "${node.id}" references unknown capability "${node.capability}". ` +
242
- `Capability is not registered in the registry.`);
243
- }
244
- continue;
261
+ errors.push(`Node "${node.id}" references unknown capability "${node.capability}". ` +
262
+ `Capability is not registered in the registry.`);
245
263
  }
264
+ }
265
+ // 5a-in. 输入节点(入度 0)的 inputTypes 与 workflow.inputs.type 兼容
266
+ for (const node of wf.nodes) {
267
+ if ((inDegree.get(node.id) ?? 0) > 0)
268
+ continue;
269
+ const cap = getCap(node);
270
+ if (!cap)
271
+ continue; // 5a 已报告未注册 capability,此处不重复
246
272
  const inputTypeMatches = cap.inputTypes.includes(wf.inputs.type);
247
273
  if (!inputTypeMatches) {
248
274
  errors.push(`Node "${node.id}" (capability "${node.capability}") expects input types ` +
@@ -1 +1 @@
1
- {"version":3,"file":"validators.js","sourceRoot":"","sources":["../src/validators.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validators.js","sourceRoot":"","sources":["../src/validators.ts"],"names":[],"mappings":"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"}
@@ -38,10 +38,32 @@ export interface WorkflowInput {
38
38
  /** 文件类型过滤 */
39
39
  accept?: string[];
40
40
  }
41
+ /**
42
+ * Workflow 输出 target(E1:多 target 机制)。
43
+ *
44
+ * 一个线性 Workflow 可通过 targets 定义多个输出端口,
45
+ * 每个 target 的 params 会浅合并到链上每个 transform 节点的 params 中
46
+ * (target params 优先),从而用单条链产出多个不同尺寸/参数的文件。
47
+ *
48
+ * 典型场景:社交媒体多平台图适配(一条 resize→compress→convert 链,
49
+ * 5 个 target 分别覆盖 width/height 产出 5 个尺寸)。
50
+ */
51
+ export interface OutputTarget {
52
+ /** target 名称(如 "instagram"、"twitter"),同一 outputs 内不可重复 */
53
+ name: string;
54
+ /** 参数覆盖(浅合并到每个 transform 节点的 params) */
55
+ params?: Record<string, unknown>;
56
+ }
41
57
  /** Workflow 输出定义 */
42
58
  export interface WorkflowOutput {
43
59
  type: AssetType | 'archive';
44
60
  format?: string;
61
+ /**
62
+ * 多 target 输出(E1)。
63
+ * 存在且非空时,runtime 为每个 target 独立执行一次 transform 链,
64
+ * 产出 len(targets) 个文件。所有 target 共享同一 output type/format。
65
+ */
66
+ targets?: OutputTarget[];
45
67
  }
46
68
  /** Workflow 作者信息 */
47
69
  export interface WorkflowAuthor {
@@ -1 +1 @@
1
- {"version":3,"file":"workflow.d.ts","sourceRoot":"","sources":["../src/workflow.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,oBAAoB;AACpB,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAC;AAEvD,oBAAoB;AACpB,MAAM,WAAW,YAAY;IAC3B,cAAc;IACd,EAAE,EAAE,MAAM,CAAC;IACX,WAAW;IACX,IAAI,EAAE,QAAQ,CAAC;IACf;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW;IACX,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,mBAAmB;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,8BAA8B;AAC9B,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,oBAAoB;AACpB,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,SAAS,CAAC;IAChB,eAAe;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,8BAA8B;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa;IACb,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,oBAAoB;AACpB,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,SAAS,GAAG,SAAS,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,oBAAoB;AACpB,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CACd;AAED,oBAAoB;AACpB,MAAM,WAAW,eAAe;IAC9B,iBAAiB;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,uBAAuB;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,kBAAkB;AAClB,MAAM,MAAM,gBAAgB,GACxB,OAAO,GACP,OAAO,GACP,OAAO,GACP,KAAK,GACL,IAAI,GACJ,MAAM,GACN,WAAW,GACX,WAAW,GACX,kBAAkB,GAClB,OAAO,CAAC;AAEZ,qBAAqB;AACrB,MAAM,WAAW,QAAQ;IACvB,iBAAiB;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,qBAAqB;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,UAAU;IACV,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,SAAS;IACT,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS;IACT,MAAM,EAAE,cAAc,CAAC;IACvB,SAAS;IACT,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,SAAS;IACT,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,WAAW;IACX,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,eAAe;IACf,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,WAAW;IACX,MAAM,EAAE,aAAa,CAAC;IACtB,WAAW;IACX,OAAO,EAAE,cAAc,CAAC;IACxB,eAAe;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW;IACX,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW;IACX,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,oBAAoB;AACpB,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,qBAAqB;IACrB,OAAO,EAAE,OAAO,YAAY,EAAE,OAAO,EAAE,CAAC;IACxC,eAAe;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW;IACX,MAAM,EAAE,WAAW,GAAG,WAAW,GAAG,QAAQ,CAAC;IAC7C,4BAA4B;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;GAIG;AACH,MAAM,WAAW,qBAAqB;IACpC,iGAAiG;IACjG,WAAW,EAAE,MAAM,CAAC;IACpB,kCAAkC;IAClC,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,0CAA0C;IAC1C,WAAW,EAAE,MAAM,CAAC;IACpB,wBAAwB;IACxB,OAAO,EAAE;QACP,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC/B,cAAc,EAAE,MAAM,CAAC;KACxB,CAAC;CACH;AAED;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,QAAQ,GAAG,qBAAqB,CA6BjF"}
1
+ {"version":3,"file":"workflow.d.ts","sourceRoot":"","sources":["../src/workflow.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"workflow.js","sourceRoot":"","sources":["../src/workflow.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAiJH;;;;;;;;GAQG;AACH,MAAM,UAAU,uBAAuB,CAAC,QAAkB;IACxD,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK;SACzB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC;SAC3B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,UAAU,gBAAgB,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;IAE/E,kCAAkC;IAClC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,YAAY,GAAa,EAAE,CAAC;IAClC,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;QAClC,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YAClD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC1B,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IAED,sCAAsC;IACtC,8CAA8C;IAC9C,MAAM,YAAY,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC;IAEtE,OAAO;QACL,WAAW,EACT,WAAW,QAAQ,CAAC,KAAK,CAAC,MAAM,mBAAmB,QAAQ,CAAC,IAAI,MAAM,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;QAC3F,YAAY;QACZ,WAAW,EAAE,0BAA0B,CAAC,QAAQ,CAAC;QACjD,OAAO,EAAE;YACP,KAAK,EAAE,EAAE,UAAU,EAAE,kBAAkB,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE;YAC/D,cAAc,EAAE,aAAa,QAAQ,CAAC,MAAM,CAAC,IAAI,aAAa,YAAY,EAAE;SAC7E;KACF,CAAC;AACJ,CAAC;AAED,kDAAkD;AAClD,SAAS,0BAA0B,CAAC,QAAkB;IACpD,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC;IACjC,MAAM,MAAM,GAA4B;QACtC,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,iCAAiC,QAAQ,CAAC,IAAI,QAAQ,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;aACpG;SACF;QACD,QAAQ,EAAE,CAAC,YAAY,CAAC;KACzB,CAAC;IACF,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACrB,MAAM,CAAC,UAAsC,CAAC,UAAU,GAAG;YAC1D,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACzB,WAAW,EAAE,iBAAiB,QAAQ,CAAC,IAAI,cAAc,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,QAAQ,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;SAClH,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"workflow.js","sourceRoot":"","sources":["../src/workflow.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAwKH;;;;;;;;GAQG;AACH,MAAM,UAAU,uBAAuB,CAAC,QAAkB;IACxD,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK;SACzB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC;SAC3B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,UAAU,gBAAgB,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;IAE/E,kCAAkC;IAClC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,YAAY,GAAa,EAAE,CAAC;IAClC,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;QAClC,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YAClD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC1B,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IAED,sCAAsC;IACtC,8CAA8C;IAC9C,MAAM,YAAY,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC;IAEtE,OAAO;QACL,WAAW,EACT,WAAW,QAAQ,CAAC,KAAK,CAAC,MAAM,mBAAmB,QAAQ,CAAC,IAAI,MAAM,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;QAC3F,YAAY;QACZ,WAAW,EAAE,0BAA0B,CAAC,QAAQ,CAAC;QACjD,OAAO,EAAE;YACP,KAAK,EAAE,EAAE,UAAU,EAAE,kBAAkB,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE;YAC/D,cAAc,EAAE,aAAa,QAAQ,CAAC,MAAM,CAAC,IAAI,aAAa,YAAY,EAAE;SAC7E;KACF,CAAC;AACJ,CAAC;AAED,kDAAkD;AAClD,SAAS,0BAA0B,CAAC,QAAkB;IACpD,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC;IACjC,MAAM,MAAM,GAA4B;QACtC,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,iCAAiC,QAAQ,CAAC,IAAI,QAAQ,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;aACpG;SACF;QACD,QAAQ,EAAE,CAAC,YAAY,CAAC;KACzB,CAAC;IACF,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACrB,MAAM,CAAC,UAAsC,CAAC,UAAU,GAAG;YAC1D,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACzB,WAAW,EAAE,iBAAiB,QAAQ,CAAC,IAAI,cAAc,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,QAAQ,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;SAClH,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lokvis/schema",
3
- "version": "0.2.2",
3
+ "version": "0.4.0",
4
4
  "description": "Lokvis Schema - Workflow / Asset / Plugin type definitions and validators",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -0,0 +1,88 @@
1
+ /**
2
+ * AUTO-GENERATED BY scripts/codegen-capabilities.ts — DO NOT EDIT.
3
+ *
4
+ * 来源:packages/capability/manifests/ai.manifest.json, packages/capability/manifests/audio.manifest.json, packages/capability/manifests/image.manifest.json, packages/capability/manifests/pdf.manifest.json, packages/capability/manifests/video.manifest.json
5
+ * 重跑:pnpm codegen
6
+ *
7
+ * 此文件提供精确字面量联合类型 BuiltinCapabilityName,
8
+ * 用于 IDE 自动补全与编译期拼写检查。
9
+ *
10
+ * 注意:
11
+ * - `CapabilityName`(见 capability.ts)仍是 `string` 别名,
12
+ * 接受任意能力名(含第三方 plugin 注册的自定义能力)
13
+ * - `BuiltinCapabilityName` 是已知内置能力的字面量子集,
14
+ * 可作为 `CapabilityName` 的精确化类型
15
+ */
16
+ export type BuiltinCapabilityName =
17
+ | 'ai.ocr'
18
+ | 'ai.caption'
19
+ | 'ai.background-remove'
20
+ | 'ai.generate-workflow'
21
+ | 'ai.optimize-workflow'
22
+ | 'audio.trim'
23
+ | 'audio.normalize'
24
+ | 'audio.merge'
25
+ | 'audio.transcode'
26
+ | 'audio.denoise'
27
+ | 'image.resize'
28
+ | 'image.compress'
29
+ | 'image.convert'
30
+ | 'image.crop'
31
+ | 'image.rotate'
32
+ | 'image.flip'
33
+ | 'image.watermark'
34
+ | 'image.background'
35
+ | 'image.filter'
36
+ | 'pdf.merge'
37
+ | 'pdf.split'
38
+ | 'pdf.compress'
39
+ | 'pdf.rotate'
40
+ | 'pdf.watermark'
41
+ | 'pdf.ocr'
42
+ | 'pdf.sign'
43
+ | 'pdf.add-page-numbers'
44
+ | 'video.compress'
45
+ | 'video.transcode'
46
+ | 'video.trim'
47
+ | 'video.merge'
48
+ | 'video.extract-audio'
49
+ | 'video.to-gif'
50
+ | 'video.screenshot';
51
+
52
+ /** 全部内置能力名常量数组(运行时校验 / 枚举用) */
53
+ export const BUILTIN_CAPABILITY_NAMES: readonly BuiltinCapabilityName[] = [
54
+ 'ai.ocr',
55
+ 'ai.caption',
56
+ 'ai.background-remove',
57
+ 'ai.generate-workflow',
58
+ 'ai.optimize-workflow',
59
+ 'audio.trim',
60
+ 'audio.normalize',
61
+ 'audio.merge',
62
+ 'audio.transcode',
63
+ 'audio.denoise',
64
+ 'image.resize',
65
+ 'image.compress',
66
+ 'image.convert',
67
+ 'image.crop',
68
+ 'image.rotate',
69
+ 'image.flip',
70
+ 'image.watermark',
71
+ 'image.background',
72
+ 'image.filter',
73
+ 'pdf.merge',
74
+ 'pdf.split',
75
+ 'pdf.compress',
76
+ 'pdf.rotate',
77
+ 'pdf.watermark',
78
+ 'pdf.ocr',
79
+ 'pdf.sign',
80
+ 'pdf.add-page-numbers',
81
+ 'video.compress',
82
+ 'video.transcode',
83
+ 'video.trim',
84
+ 'video.merge',
85
+ 'video.extract-audio',
86
+ 'video.to-gif',
87
+ 'video.screenshot',
88
+ ];
package/src/validators.ts CHANGED
@@ -70,6 +70,12 @@ export const workflowEdgeSchema = z.object({
70
70
  to: z.string(),
71
71
  });
72
72
 
73
+ /** E1: 多 target 输出定义 */
74
+ export const outputTargetSchema = z.object({
75
+ name: z.string(),
76
+ params: z.record(z.unknown()).optional(),
77
+ });
78
+
73
79
  export const workflowSchema = z.object({
74
80
  $schema: z.string().optional(),
75
81
  id: z.string(),
@@ -90,6 +96,7 @@ export const workflowSchema = z.object({
90
96
  outputs: z.object({
91
97
  type: workflowOutputTypeSchema,
92
98
  format: z.string().optional(),
99
+ targets: z.array(outputTargetSchema).optional(),
93
100
  }),
94
101
  official: z.boolean().optional(),
95
102
  createdAt: z.number().optional(),
@@ -242,6 +249,17 @@ export function validateWorkflow(data: unknown, options?: ValidateWorkflowOption
242
249
  }
243
250
  }
244
251
 
252
+ // 4b. E1: 多 target 名称唯一性校验
253
+ if (wf.outputs.targets && wf.outputs.targets.length > 0) {
254
+ const seenTargetNames = new Set<string>();
255
+ for (const target of wf.outputs.targets) {
256
+ if (seenTargetNames.has(target.name)) {
257
+ errors.push(`Duplicate output target name: "${target.name}". Target names must be unique.`);
258
+ }
259
+ seenTargetNames.add(target.name);
260
+ }
261
+ }
262
+
245
263
  // 5. W10.2: capability 兼容性校验(可选,仅在 resolveCapability 提供时)
246
264
  // 检查相邻节点(通过 edge 连接)的 outputTypes 与下一节点的 inputTypes 是否有交集。
247
265
  // - 线性链:edge.from → edge.to,from 节点的 outputTypes 与 to 节点的 inputTypes 交集为空则报错
@@ -296,22 +314,31 @@ function validateCapabilityCompatibility(
296
314
  return cap;
297
315
  };
298
316
 
299
- // 5a. 输入节点(入度 0)的 inputTypes workflow.inputs.type 兼容
317
+ // 5a. 全节点 capability 注册校验(transform + input + output 均覆盖)
318
+ // B4 修复:原实现仅检查入度 0 节点,transform 节点的 unknown capability
319
+ // 在 5b 边检查中被静默跳过(`!fromCap || !toCap` continue),导致用户得到
320
+ // "校验通过"假象,运行时才报错。现拆分为两步:
321
+ // - 5a:全节点 unknown capability 检查(不区分入度)
322
+ // - 5a-in:输入节点 inputTypes 与 workflow.inputs.type 兼容性检查
300
323
  for (const node of wf.nodes) {
301
- if ((inDegree.get(node.id) ?? 0) > 0) continue;
324
+ if (!node.capability) continue;
302
325
  const cap = getCap(node);
303
- // 未注册的 capability 不静默跳过:在 schema 层显式报错,避免用户得到"校验通过"
304
- // 的假象,运行时才报错。resolveCapability 未提供时(getCap 始终返回 undefined)
305
- // 整个 capability 兼容性校验跳过(向后兼容,见 5d 兜底)
326
+ // 未注册的 capability 不静默跳过:在 schema 层显式报错
327
+ // resolveCapability 未提供时(getCap 始终返回 undefined)
328
+ // 整个 capability 兼容性校验跳过( validateWorkflow 的 if 守卫保证)
306
329
  if (!cap) {
307
- if (node.capability) {
308
- errors.push(
309
- `Node "${node.id}" references unknown capability "${node.capability}". ` +
310
- `Capability is not registered in the registry.`
311
- );
312
- }
313
- continue;
330
+ errors.push(
331
+ `Node "${node.id}" references unknown capability "${node.capability}". ` +
332
+ `Capability is not registered in the registry.`
333
+ );
314
334
  }
335
+ }
336
+
337
+ // 5a-in. 输入节点(入度 0)的 inputTypes 与 workflow.inputs.type 兼容
338
+ for (const node of wf.nodes) {
339
+ if ((inDegree.get(node.id) ?? 0) > 0) continue;
340
+ const cap = getCap(node);
341
+ if (!cap) continue; // 5a 已报告未注册 capability,此处不重复
315
342
  const inputTypeMatches = cap.inputTypes.includes(wf.inputs.type);
316
343
  if (!inputTypeMatches) {
317
344
  errors.push(
package/src/workflow.ts CHANGED
@@ -44,10 +44,33 @@ export interface WorkflowInput {
44
44
  accept?: string[];
45
45
  }
46
46
 
47
+ /**
48
+ * Workflow 输出 target(E1:多 target 机制)。
49
+ *
50
+ * 一个线性 Workflow 可通过 targets 定义多个输出端口,
51
+ * 每个 target 的 params 会浅合并到链上每个 transform 节点的 params 中
52
+ * (target params 优先),从而用单条链产出多个不同尺寸/参数的文件。
53
+ *
54
+ * 典型场景:社交媒体多平台图适配(一条 resize→compress→convert 链,
55
+ * 5 个 target 分别覆盖 width/height 产出 5 个尺寸)。
56
+ */
57
+ export interface OutputTarget {
58
+ /** target 名称(如 "instagram"、"twitter"),同一 outputs 内不可重复 */
59
+ name: string;
60
+ /** 参数覆盖(浅合并到每个 transform 节点的 params) */
61
+ params?: Record<string, unknown>;
62
+ }
63
+
47
64
  /** Workflow 输出定义 */
48
65
  export interface WorkflowOutput {
49
66
  type: AssetType | 'archive';
50
67
  format?: string;
68
+ /**
69
+ * 多 target 输出(E1)。
70
+ * 存在且非空时,runtime 为每个 target 独立执行一次 transform 链,
71
+ * 产出 len(targets) 个文件。所有 target 共享同一 output type/format。
72
+ */
73
+ targets?: OutputTarget[];
51
74
  }
52
75
 
53
76
  /** Workflow 作者信息 */