@downcity/plugins 1.0.94 → 1.0.96
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/bin/image/ImagePlugin.d.ts +52 -0
- package/bin/image/ImagePlugin.d.ts.map +1 -1
- package/bin/image/ImagePlugin.js +225 -9
- package/bin/image/ImagePlugin.js.map +1 -1
- package/bin/image/types/ImagePlugin.d.ts +48 -3
- package/bin/image/types/ImagePlugin.d.ts.map +1 -1
- package/bin/index.d.ts +1 -1
- package/bin/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/image/ImagePlugin.ts +279 -10
- package/src/image/types/ImagePlugin.ts +53 -3
- package/src/index.ts +3 -0
|
@@ -28,6 +28,7 @@ export declare class ImagePlugin extends BasePlugin {
|
|
|
28
28
|
readonly description: string;
|
|
29
29
|
private readonly image_create;
|
|
30
30
|
private readonly image_result;
|
|
31
|
+
private readonly list_models?;
|
|
31
32
|
private readonly timeout_ms;
|
|
32
33
|
private readonly min_poll_interval_ms;
|
|
33
34
|
private readonly max_poll_interval_ms;
|
|
@@ -37,10 +38,61 @@ export declare class ImagePlugin extends BasePlugin {
|
|
|
37
38
|
*/
|
|
38
39
|
system(_context: AgentContext): string;
|
|
39
40
|
private generate_image;
|
|
41
|
+
/**
|
|
42
|
+
* 查询图片任务,按需等待终态。
|
|
43
|
+
*/
|
|
44
|
+
private read_image_result;
|
|
45
|
+
/**
|
|
46
|
+
* 轮询图片任务直到成功或失败。
|
|
47
|
+
*/
|
|
48
|
+
private wait_for_image_result;
|
|
40
49
|
/**
|
|
41
50
|
* 显式 action 集合。
|
|
42
51
|
*/
|
|
43
52
|
readonly actions: {
|
|
53
|
+
models: {
|
|
54
|
+
execute: () => Promise<{
|
|
55
|
+
success: boolean;
|
|
56
|
+
error: string;
|
|
57
|
+
message: string;
|
|
58
|
+
data?: undefined;
|
|
59
|
+
} | {
|
|
60
|
+
success: boolean;
|
|
61
|
+
data: JsonObject;
|
|
62
|
+
message: string;
|
|
63
|
+
error?: undefined;
|
|
64
|
+
}>;
|
|
65
|
+
};
|
|
66
|
+
image_create: {
|
|
67
|
+
execute: ({ payload }: {
|
|
68
|
+
payload: JsonValue;
|
|
69
|
+
}) => Promise<{
|
|
70
|
+
success: boolean;
|
|
71
|
+
data: JsonObject;
|
|
72
|
+
message: string;
|
|
73
|
+
error?: undefined;
|
|
74
|
+
} | {
|
|
75
|
+
success: boolean;
|
|
76
|
+
error: string;
|
|
77
|
+
message: string;
|
|
78
|
+
data?: undefined;
|
|
79
|
+
}>;
|
|
80
|
+
};
|
|
81
|
+
image_result: {
|
|
82
|
+
execute: ({ payload }: {
|
|
83
|
+
payload: JsonValue;
|
|
84
|
+
}) => Promise<{
|
|
85
|
+
success: boolean;
|
|
86
|
+
data: JsonObject;
|
|
87
|
+
message: string;
|
|
88
|
+
error?: undefined;
|
|
89
|
+
} | {
|
|
90
|
+
success: boolean;
|
|
91
|
+
error: string;
|
|
92
|
+
message: string;
|
|
93
|
+
data?: undefined;
|
|
94
|
+
}>;
|
|
95
|
+
};
|
|
44
96
|
generate: {
|
|
45
97
|
execute: ({ payload }: {
|
|
46
98
|
payload: JsonValue;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ImagePlugin.d.ts","sourceRoot":"","sources":["../../src/image/ImagePlugin.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,oDAAoD,CAAC;AAChF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8DAA8D,CAAC;AACjG,OAAO,KAAK,EACV,UAAU,EACV,SAAS,EACV,MAAM,+CAA+C,CAAC;AACvD,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"ImagePlugin.d.ts","sourceRoot":"","sources":["../../src/image/ImagePlugin.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,oDAAoD,CAAC;AAChF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8DAA8D,CAAC;AACjG,OAAO,KAAK,EACV,UAAU,EACV,SAAS,EACV,MAAM,+CAA+C,CAAC;AACvD,OAAO,KAAK,EAOV,kBAAkB,EAEnB,MAAM,8BAA8B,CAAC;AAmMtC;;GAEG;AACH,qBAAa,WAAY,SAAQ,UAAU;IACzC;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAEvB;;OAEG;IACH,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAE7B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAkD;IAC/E,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAkD;IAC/E,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAoC;IACjE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAS;IAC9C,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAS;gBAElC,OAAO,EAAE,kBAAkB;IAkCvC;;OAEG;IACH,MAAM,CAAC,QAAQ,EAAE,YAAY,GAAG,MAAM;YA8BxB,cAAc;IAe5B;;OAEG;YACW,iBAAiB;IA4C/B;;OAEG;YACW,qBAAqB;IA8DnC;;OAEG;IACH,QAAQ,CAAC,OAAO;;;;;;;;;sBAeqB,UAAU;;;;;;mCAad;gBAAE,OAAO,EAAE,SAAS,CAAA;aAAE;;sBAOjB,UAAU;;;;;;;;;;;mCAaf;gBAAE,OAAO,EAAE,SAAS,CAAA;aAAE;;;;;;;;;;;;;mCA2BtB;gBAAE,OAAO,EAAE,SAAS,CAAA;aAAE;;sBAMjB,UAAU;;;;;;;;;;MAY9C;CACH"}
|
package/bin/image/ImagePlugin.js
CHANGED
|
@@ -27,10 +27,27 @@ function to_record(value) {
|
|
|
27
27
|
function normalize_image_payload(payload) {
|
|
28
28
|
const record = to_record(payload ?? {});
|
|
29
29
|
if (!record) {
|
|
30
|
-
throw new TypeError("ImagePlugin
|
|
30
|
+
throw new TypeError("ImagePlugin image payload must be an object");
|
|
31
31
|
}
|
|
32
32
|
return { ...record };
|
|
33
33
|
}
|
|
34
|
+
/**
|
|
35
|
+
* 归一化图片任务查询 payload。
|
|
36
|
+
*/
|
|
37
|
+
function normalize_image_result_payload(payload) {
|
|
38
|
+
const record = to_record(payload ?? {});
|
|
39
|
+
if (!record) {
|
|
40
|
+
throw new TypeError("ImagePlugin.image_result payload must be an object");
|
|
41
|
+
}
|
|
42
|
+
const job_id = typeof record.job_id === "string" ? record.job_id.trim() : "";
|
|
43
|
+
if (!job_id) {
|
|
44
|
+
throw new TypeError("ImagePlugin.image_result payload must include job_id");
|
|
45
|
+
}
|
|
46
|
+
return {
|
|
47
|
+
...record,
|
|
48
|
+
job_id,
|
|
49
|
+
};
|
|
50
|
+
}
|
|
34
51
|
/**
|
|
35
52
|
* 校验 image 函数返回的 UIMessage。
|
|
36
53
|
*/
|
|
@@ -62,6 +79,81 @@ function normalize_positive_number(value, fallback) {
|
|
|
62
79
|
? value
|
|
63
80
|
: fallback;
|
|
64
81
|
}
|
|
82
|
+
/**
|
|
83
|
+
* 读取可选布尔值。
|
|
84
|
+
*/
|
|
85
|
+
function normalize_boolean(value, fallback) {
|
|
86
|
+
return typeof value === "boolean" ? value : fallback;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* 归一化模型元数据为 JSON 对象。
|
|
90
|
+
*/
|
|
91
|
+
function normalize_json_object(value) {
|
|
92
|
+
const record = to_record(value);
|
|
93
|
+
if (!record)
|
|
94
|
+
return undefined;
|
|
95
|
+
return record;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* 归一化图片模型信息,确保 action 返回纯 JSON。
|
|
99
|
+
*/
|
|
100
|
+
function normalize_image_model(value) {
|
|
101
|
+
const record = to_record(value);
|
|
102
|
+
if (!record)
|
|
103
|
+
return null;
|
|
104
|
+
const id = typeof record.id === "string" ? record.id.trim() : "";
|
|
105
|
+
if (!id)
|
|
106
|
+
return null;
|
|
107
|
+
const modalities = Array.isArray(record.modalities)
|
|
108
|
+
? record.modalities
|
|
109
|
+
.map((item) => String(item || "").trim())
|
|
110
|
+
.filter(Boolean)
|
|
111
|
+
: [];
|
|
112
|
+
if (!modalities.includes("image"))
|
|
113
|
+
return null;
|
|
114
|
+
const tags = Array.isArray(record.tags)
|
|
115
|
+
? record.tags.map((item) => String(item || "").trim()).filter(Boolean)
|
|
116
|
+
: undefined;
|
|
117
|
+
const default_modalities = Array.isArray(record.default_modalities)
|
|
118
|
+
? record.default_modalities
|
|
119
|
+
.map((item) => String(item || "").trim())
|
|
120
|
+
.filter(Boolean)
|
|
121
|
+
: undefined;
|
|
122
|
+
const meta = normalize_json_object(record.meta);
|
|
123
|
+
return {
|
|
124
|
+
id,
|
|
125
|
+
name: typeof record.name === "string" && record.name.trim()
|
|
126
|
+
? record.name.trim()
|
|
127
|
+
: id,
|
|
128
|
+
...(typeof record.description === "string"
|
|
129
|
+
? { description: record.description }
|
|
130
|
+
: {}),
|
|
131
|
+
modalities,
|
|
132
|
+
...(tags && tags.length > 0 ? { tags } : {}),
|
|
133
|
+
...(meta ? { meta } : {}),
|
|
134
|
+
...(typeof record.is_default === "boolean"
|
|
135
|
+
? { is_default: record.is_default }
|
|
136
|
+
: {}),
|
|
137
|
+
...(default_modalities && default_modalities.length > 0
|
|
138
|
+
? { default_modalities }
|
|
139
|
+
: {}),
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* 归一化模型列表结果。
|
|
144
|
+
*/
|
|
145
|
+
function normalize_image_models(values) {
|
|
146
|
+
const items = values
|
|
147
|
+
.map((item) => normalize_image_model(item))
|
|
148
|
+
.filter((item) => item !== null);
|
|
149
|
+
const default_model_id = items.find((item) => item.default_modalities?.includes("image"))?.id ??
|
|
150
|
+
items.find((item) => item.is_default)?.id ??
|
|
151
|
+
items[0]?.id;
|
|
152
|
+
return {
|
|
153
|
+
items,
|
|
154
|
+
...(default_model_id ? { default_model_id } : {}),
|
|
155
|
+
};
|
|
156
|
+
}
|
|
65
157
|
/**
|
|
66
158
|
* 校验任务创建结果。
|
|
67
159
|
*/
|
|
@@ -103,6 +195,7 @@ export class ImagePlugin extends BasePlugin {
|
|
|
103
195
|
description;
|
|
104
196
|
image_create;
|
|
105
197
|
image_result;
|
|
198
|
+
list_models;
|
|
106
199
|
timeout_ms;
|
|
107
200
|
min_poll_interval_ms;
|
|
108
201
|
max_poll_interval_ms;
|
|
@@ -123,6 +216,7 @@ export class ImagePlugin extends BasePlugin {
|
|
|
123
216
|
this.description = String(options.description || DEFAULT_IMAGE_PLUGIN_DESCRIPTION).trim();
|
|
124
217
|
this.image_create = options.image_create;
|
|
125
218
|
this.image_result = options.image_result;
|
|
219
|
+
this.list_models = options.list_models;
|
|
126
220
|
this.timeout_ms = normalize_positive_number(options.timeout_ms, DEFAULT_TIMEOUT_MS);
|
|
127
221
|
this.min_poll_interval_ms = normalize_positive_number(options.min_poll_interval_ms, DEFAULT_MIN_POLL_INTERVAL_MS);
|
|
128
222
|
this.max_poll_interval_ms = normalize_positive_number(options.max_poll_interval_ms, DEFAULT_MAX_POLL_INTERVAL_MS);
|
|
@@ -152,36 +246,158 @@ export class ImagePlugin extends BasePlugin {
|
|
|
152
246
|
"Payload rules:",
|
|
153
247
|
"- `prompt` is required unless `messages` provides the full multimodal image context.",
|
|
154
248
|
"- Optional common fields: `messages`, `size`, `aspect_ratio`, `ratio`, `quality`, `n`, `count`, `seed`, `provider_options`.",
|
|
249
|
+
"- To choose a model, call `models` and pass the selected model `id` as payload `model`.",
|
|
155
250
|
"- Preserve the user's creative intent; do not over-rewrite the prompt unless clarification is necessary.",
|
|
251
|
+
"- For a two-step flow, call `image_create` first, then call `image_result` with `job_id`; `image_result` waits until the job finishes by default.",
|
|
252
|
+
"- `generate` is a convenience action that creates the job and waits for the final image in one call.",
|
|
156
253
|
"- Generated image file parts are saved under project `.downcity/resources` and attached to the final assistant message automatically.",
|
|
157
254
|
].join("\n");
|
|
158
255
|
}
|
|
159
256
|
async generate_image(input) {
|
|
160
257
|
const created = await this.image_create(input);
|
|
161
258
|
validate_created_job(created);
|
|
162
|
-
const
|
|
163
|
-
|
|
259
|
+
const current = await this.wait_for_image_result({
|
|
260
|
+
job_id: created.job_id,
|
|
261
|
+
poll_after_ms: created.poll_after_ms,
|
|
262
|
+
});
|
|
263
|
+
if (!current.result) {
|
|
264
|
+
throw new Error(`Image job ${created.job_id} succeeded without result`);
|
|
265
|
+
}
|
|
266
|
+
return normalize_image_result(current.result);
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* 查询图片任务,按需等待终态。
|
|
270
|
+
*/
|
|
271
|
+
async read_image_result(input, options) {
|
|
272
|
+
const timeout_ms = normalize_positive_number(input.timeout_ms, this.timeout_ms);
|
|
273
|
+
const min_poll_interval_ms = normalize_positive_number(input.min_poll_interval_ms, this.min_poll_interval_ms);
|
|
274
|
+
const max_poll_interval_ms = normalize_positive_number(input.max_poll_interval_ms, this.max_poll_interval_ms);
|
|
275
|
+
const until_finish = normalize_boolean(input.until_finish, options.default_until_finish);
|
|
276
|
+
const first = await this.image_result({ job_id: input.job_id });
|
|
277
|
+
validate_job_result(first);
|
|
278
|
+
if (!until_finish || first.status === "succeeded") {
|
|
279
|
+
if (first.status === "succeeded" && first.result) {
|
|
280
|
+
normalize_image_result(first.result);
|
|
281
|
+
}
|
|
282
|
+
return first;
|
|
283
|
+
}
|
|
284
|
+
if (first.status === "failed") {
|
|
285
|
+
throw new Error(`Image job failed: ${first.error ?? first.message ?? input.job_id}`);
|
|
286
|
+
}
|
|
287
|
+
return await this.wait_for_image_result({
|
|
288
|
+
job_id: input.job_id,
|
|
289
|
+
poll_after_ms: first.poll_after_ms,
|
|
290
|
+
timeout_ms,
|
|
291
|
+
min_poll_interval_ms,
|
|
292
|
+
max_poll_interval_ms,
|
|
293
|
+
});
|
|
294
|
+
}
|
|
295
|
+
/**
|
|
296
|
+
* 轮询图片任务直到成功或失败。
|
|
297
|
+
*/
|
|
298
|
+
async wait_for_image_result(input) {
|
|
299
|
+
const timeout_ms = normalize_positive_number(input.timeout_ms, this.timeout_ms);
|
|
300
|
+
const min_poll_interval_ms = normalize_positive_number(input.min_poll_interval_ms, this.min_poll_interval_ms);
|
|
301
|
+
const max_poll_interval_ms = normalize_positive_number(input.max_poll_interval_ms, this.max_poll_interval_ms);
|
|
302
|
+
const deadline = Date.now() + timeout_ms;
|
|
303
|
+
let poll_after_ms = input.poll_after_ms;
|
|
164
304
|
while (Date.now() < deadline) {
|
|
165
|
-
await sleep(clamp_poll_interval(poll_after_ms,
|
|
166
|
-
const current = await this.image_result({ job_id:
|
|
305
|
+
await sleep(clamp_poll_interval(poll_after_ms, min_poll_interval_ms, max_poll_interval_ms));
|
|
306
|
+
const current = await this.image_result({ job_id: input.job_id });
|
|
167
307
|
validate_job_result(current);
|
|
168
308
|
poll_after_ms = current.poll_after_ms;
|
|
169
309
|
if (current.status === "succeeded") {
|
|
170
310
|
if (!current.result) {
|
|
171
|
-
throw new Error(`Image job ${
|
|
311
|
+
throw new Error(`Image job ${input.job_id} succeeded without result`);
|
|
172
312
|
}
|
|
173
|
-
|
|
313
|
+
normalize_image_result(current.result);
|
|
314
|
+
return current;
|
|
174
315
|
}
|
|
175
316
|
if (current.status === "failed") {
|
|
176
|
-
throw new Error(`Image job failed: ${current.error ?? current.message ??
|
|
317
|
+
throw new Error(`Image job failed: ${current.error ?? current.message ?? input.job_id}`);
|
|
177
318
|
}
|
|
178
319
|
}
|
|
179
|
-
throw new Error(`Image job timed out: ${
|
|
320
|
+
throw new Error(`Image job timed out: ${input.job_id}`);
|
|
180
321
|
}
|
|
181
322
|
/**
|
|
182
323
|
* 显式 action 集合。
|
|
183
324
|
*/
|
|
184
325
|
actions = {
|
|
326
|
+
models: {
|
|
327
|
+
execute: async () => {
|
|
328
|
+
try {
|
|
329
|
+
if (!this.list_models) {
|
|
330
|
+
return {
|
|
331
|
+
success: false,
|
|
332
|
+
error: "ImagePlugin list_models is not configured",
|
|
333
|
+
message: "ImagePlugin list_models is not configured",
|
|
334
|
+
};
|
|
335
|
+
}
|
|
336
|
+
const models = await this.list_models();
|
|
337
|
+
const result = normalize_image_models(models);
|
|
338
|
+
return {
|
|
339
|
+
success: true,
|
|
340
|
+
data: result,
|
|
341
|
+
message: "image models listed",
|
|
342
|
+
};
|
|
343
|
+
}
|
|
344
|
+
catch (error) {
|
|
345
|
+
return {
|
|
346
|
+
success: false,
|
|
347
|
+
error: String(error),
|
|
348
|
+
message: String(error),
|
|
349
|
+
};
|
|
350
|
+
}
|
|
351
|
+
},
|
|
352
|
+
},
|
|
353
|
+
image_create: {
|
|
354
|
+
execute: async ({ payload }) => {
|
|
355
|
+
try {
|
|
356
|
+
const input = normalize_image_payload(payload);
|
|
357
|
+
const created = await this.image_create(input);
|
|
358
|
+
validate_created_job(created);
|
|
359
|
+
return {
|
|
360
|
+
success: true,
|
|
361
|
+
data: created,
|
|
362
|
+
message: "image job created",
|
|
363
|
+
};
|
|
364
|
+
}
|
|
365
|
+
catch (error) {
|
|
366
|
+
return {
|
|
367
|
+
success: false,
|
|
368
|
+
error: String(error),
|
|
369
|
+
message: String(error),
|
|
370
|
+
};
|
|
371
|
+
}
|
|
372
|
+
},
|
|
373
|
+
},
|
|
374
|
+
image_result: {
|
|
375
|
+
execute: async ({ payload }) => {
|
|
376
|
+
try {
|
|
377
|
+
const input = normalize_image_result_payload(payload);
|
|
378
|
+
const current = await this.read_image_result(input, {
|
|
379
|
+
default_until_finish: true,
|
|
380
|
+
});
|
|
381
|
+
const data = current.status === "succeeded" && current.result
|
|
382
|
+
? current.result
|
|
383
|
+
: current;
|
|
384
|
+
return {
|
|
385
|
+
success: true,
|
|
386
|
+
data,
|
|
387
|
+
message: current.status === "succeeded"
|
|
388
|
+
? "image generated"
|
|
389
|
+
: `image job ${current.status}`,
|
|
390
|
+
};
|
|
391
|
+
}
|
|
392
|
+
catch (error) {
|
|
393
|
+
return {
|
|
394
|
+
success: false,
|
|
395
|
+
error: String(error),
|
|
396
|
+
message: String(error),
|
|
397
|
+
};
|
|
398
|
+
}
|
|
399
|
+
},
|
|
400
|
+
},
|
|
185
401
|
generate: {
|
|
186
402
|
execute: async ({ payload }) => {
|
|
187
403
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ImagePlugin.js","sourceRoot":"","sources":["../../src/image/ImagePlugin.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ImagePlugin.js","sourceRoot":"","sources":["../../src/image/ImagePlugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -110,6 +110,51 @@ export interface ImagePluginJobResult {
|
|
|
110
110
|
/** 建议下一次轮询的间隔毫秒数。 */
|
|
111
111
|
poll_after_ms?: number;
|
|
112
112
|
}
|
|
113
|
+
/**
|
|
114
|
+
* 图片任务查询输入。
|
|
115
|
+
*/
|
|
116
|
+
export interface ImagePluginJobResultInput {
|
|
117
|
+
/** 图片任务 ID,由 `image_create` 返回。 */
|
|
118
|
+
job_id: string;
|
|
119
|
+
/** 是否持续轮询直到任务进入成功或失败终态,默认由 action 决定。 */
|
|
120
|
+
until_finish?: boolean;
|
|
121
|
+
/** 单次查询最大等待时间,单位毫秒。 */
|
|
122
|
+
timeout_ms?: number;
|
|
123
|
+
/** 轮询间隔下限,单位毫秒。 */
|
|
124
|
+
min_poll_interval_ms?: number;
|
|
125
|
+
/** 轮询间隔上限,单位毫秒。 */
|
|
126
|
+
max_poll_interval_ms?: number;
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* ImagePlugin 可见模型信息。
|
|
130
|
+
*/
|
|
131
|
+
export interface ImagePluginModel {
|
|
132
|
+
/** 模型唯一 ID,用于 `image_create` / `generate` payload 的 `model` 字段。 */
|
|
133
|
+
id: string;
|
|
134
|
+
/** 模型展示名称。 */
|
|
135
|
+
name: string;
|
|
136
|
+
/** 模型说明文本。 */
|
|
137
|
+
description?: string;
|
|
138
|
+
/** 模型支持的能力列表,例如 `image`。 */
|
|
139
|
+
modalities: string[];
|
|
140
|
+
/** 模型标签。 */
|
|
141
|
+
tags?: string[];
|
|
142
|
+
/** 模型元数据。 */
|
|
143
|
+
meta?: JsonObject;
|
|
144
|
+
/** 当前模型是否为目录全局默认模型。 */
|
|
145
|
+
is_default?: boolean;
|
|
146
|
+
/** 当前模型作为默认模型负责的 modality 列表。 */
|
|
147
|
+
default_modalities?: string[];
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* ImagePlugin 模型列表结果。
|
|
151
|
+
*/
|
|
152
|
+
export interface ImagePluginModelsResult {
|
|
153
|
+
/** 可用于图片生成的模型列表。 */
|
|
154
|
+
items: ImagePluginModel[];
|
|
155
|
+
/** 图片能力默认模型 ID。 */
|
|
156
|
+
default_model_id?: string;
|
|
157
|
+
}
|
|
113
158
|
/**
|
|
114
159
|
* ImagePlugin 构造参数。
|
|
115
160
|
*/
|
|
@@ -123,9 +168,9 @@ export interface ImagePluginOptions {
|
|
|
123
168
|
/** 创建图片生成任务,通常传入 `(input) => city.ai.image_create(input)`。 */
|
|
124
169
|
image_create?: (input: ImagePluginInput) => Promise<ImagePluginJobCreateResult> | ImagePluginJobCreateResult;
|
|
125
170
|
/** 查询图片生成任务,通常传入 `(input) => city.ai.image_result(input)`。 */
|
|
126
|
-
image_result?: (input:
|
|
127
|
-
|
|
128
|
-
|
|
171
|
+
image_result?: (input: Pick<ImagePluginJobResultInput, "job_id">) => Promise<ImagePluginJobResult> | ImagePluginJobResult;
|
|
172
|
+
/** 列出可用图片模型,通常传入 `async () => city.ai.listModels().then((catalog) => catalog.forModality("image"))`。 */
|
|
173
|
+
list_models?: () => Promise<ImagePluginModel[]> | ImagePluginModel[];
|
|
129
174
|
/** 图片任务最大等待时间,默认 300000ms。 */
|
|
130
175
|
timeout_ms?: number;
|
|
131
176
|
/** 轮询间隔下限,默认 100ms。 */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ImagePlugin.d.ts","sourceRoot":"","sources":["../../../src/image/types/ImagePlugin.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ImagePlugin.d.ts","sourceRoot":"","sources":["../../../src/image/types/ImagePlugin.ts"],"names":[],"mappings":"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"}
|
package/bin/index.d.ts
CHANGED
|
@@ -31,6 +31,6 @@ export type { TaskPluginOptions } from "./task/types/TaskPluginOptions.js";
|
|
|
31
31
|
export type { MemoryActionPayload, MemoryDefaults, MemoryDigestHandler, MemoryDigestHandlerInput, MemoryDigestHandlerOutput, MemoryDigestPayload, MemoryDigestResponse, MemoryPluginOptions, MemoryReadPayload, MemoryReadResponse, MemoryRememberPayload, MemoryRememberResponse, MemoryReviseHandler, MemoryReviseHandlerInput, MemoryReviseHandlerOutput, MemoryRevisePayload, MemoryReviseResponse, MemorySearchMode, MemorySearchPayload, MemorySearchResponse, MemorySearchResultItem, MemorySourceStat, MemorySourceType, MemoryStatusResponse, MemoryWikiPageDraft, } from "./memory/types/Memory.js";
|
|
32
32
|
export type { AsrPluginInput, AsrPluginOptions, AsrPluginResult, } from "./asr/types/AsrPlugin.js";
|
|
33
33
|
export type { TtsPluginInput, TtsPluginOptions, TtsPluginResult, TtsPluginSimpleAudioResult, TtsPluginUiMessageResult, } from "./tts/types/TtsPlugin.js";
|
|
34
|
-
export type { ImagePluginContent, ImagePluginFileContent, ImagePluginInput, ImagePluginJobCreateResult, ImagePluginJobResult, ImagePluginJobStatus, ImagePluginMessage, ImagePluginOptions, ImagePluginResult, ImagePluginTextContent, } from "./image/types/ImagePlugin.js";
|
|
34
|
+
export type { ImagePluginContent, ImagePluginFileContent, ImagePluginInput, ImagePluginJobCreateResult, ImagePluginJobResult, ImagePluginJobResultInput, ImagePluginJobStatus, ImagePluginMessage, ImagePluginModel, ImagePluginModelsResult, ImagePluginOptions, ImagePluginResult, ImagePluginTextContent, } from "./image/types/ImagePlugin.js";
|
|
35
35
|
export type { ChatAuthorizationCatalog, ChatAuthorizationChannel, ChatAuthorizationConfig, ChatAuthorizationDecision, ChatAuthorizationEvaluateInput, ChatAuthorizationEvaluateResult, ChatAuthorizationObservePrincipalPayload, ChatAuthorizationObservedChat, ChatAuthorizationObservedUser, ChatAuthorizationPermission, ChatAuthorizationPermissionMeta, ChatAuthorizationResolveUserRolePayload, ChatAuthorizationRole, ChatAuthorizationSetUserRolePayload, ChatAuthorizationSnapshot, ChatAuthorizationStateFile, ChatAuthorizationWriteConfigPayload, ChatChannelAuthorizationConfig, } from "./auth/types/AuthPlugin.js";
|
|
36
36
|
//# sourceMappingURL=index.d.ts.map
|
package/bin/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EACL,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EACV,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EACL,aAAa,EACb,SAAS,EACT,eAAe,GAChB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,yBAAyB,EAAE,MAAM,0CAA0C,CAAC;AACrF,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EACL,0BAA0B,EAC1B,+BAA+B,EAC/B,4BAA4B,GAC7B,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAAE,yBAAyB,EAAE,MAAM,uCAAuC,CAAC;AAClF,OAAO,EACL,0BAA0B,EAC1B,2BAA2B,EAC3B,yBAAyB,EACzB,mCAAmC,EACnC,0BAA0B,GAC3B,MAAM,4BAA4B,CAAC;AAEpC,YAAY,EACV,0BAA0B,GAC3B,MAAM,gCAAgC,CAAC;AACxC,YAAY,EACV,sBAAsB,EACtB,cAAc,EACd,oBAAoB,EACpB,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,mCAAmC,CAAC;AAC3C,YAAY,EACV,WAAW,EACX,uBAAuB,EACvB,iBAAiB,GAClB,MAAM,mCAAmC,CAAC;AAC3C,YAAY,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AACpF,YAAY,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAC3E,YAAY,EACV,mBAAmB,EACnB,cAAc,EACd,mBAAmB,EACnB,wBAAwB,EACxB,yBAAyB,EACzB,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAClB,qBAAqB,EACrB,sBAAsB,EACtB,mBAAmB,EACnB,wBAAwB,EACxB,yBAAyB,EACzB,mBAAmB,EACnB,oBAAoB,EACpB,gBAAgB,EAChB,mBAAmB,EACnB,oBAAoB,EACpB,sBAAsB,EACtB,gBAAgB,EAChB,gBAAgB,EAChB,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,0BAA0B,CAAC;AAClC,YAAY,EACV,cAAc,EACd,gBAAgB,EAChB,eAAe,GAChB,MAAM,0BAA0B,CAAC;AAClC,YAAY,EACV,cAAc,EACd,gBAAgB,EAChB,eAAe,EACf,0BAA0B,EAC1B,wBAAwB,GACzB,MAAM,0BAA0B,CAAC;AAClC,YAAY,EACV,kBAAkB,EAClB,sBAAsB,EACtB,gBAAgB,EAChB,0BAA0B,EAC1B,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,sBAAsB,GACvB,MAAM,8BAA8B,CAAC;AACtC,YAAY,EACV,wBAAwB,EACxB,wBAAwB,EACxB,uBAAuB,EACvB,yBAAyB,EACzB,8BAA8B,EAC9B,+BAA+B,EAC/B,wCAAwC,EACxC,6BAA6B,EAC7B,6BAA6B,EAC7B,2BAA2B,EAC3B,+BAA+B,EAC/B,uCAAuC,EACvC,qBAAqB,EACrB,mCAAmC,EACnC,yBAAyB,EACzB,0BAA0B,EAC1B,mCAAmC,EACnC,8BAA8B,GAC/B,MAAM,4BAA4B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/image/ImagePlugin.ts
CHANGED
|
@@ -17,6 +17,9 @@ import type {
|
|
|
17
17
|
ImagePluginInput,
|
|
18
18
|
ImagePluginJobCreateResult,
|
|
19
19
|
ImagePluginJobResult,
|
|
20
|
+
ImagePluginJobResultInput,
|
|
21
|
+
ImagePluginModel,
|
|
22
|
+
ImagePluginModelsResult,
|
|
20
23
|
ImagePluginOptions,
|
|
21
24
|
ImagePluginResult,
|
|
22
25
|
} from "@/image/types/ImagePlugin.js";
|
|
@@ -45,11 +48,31 @@ function normalize_image_payload(
|
|
|
45
48
|
): ImagePluginInput {
|
|
46
49
|
const record = to_record(payload ?? {});
|
|
47
50
|
if (!record) {
|
|
48
|
-
throw new TypeError("ImagePlugin
|
|
51
|
+
throw new TypeError("ImagePlugin image payload must be an object");
|
|
49
52
|
}
|
|
50
53
|
return { ...record } as ImagePluginInput;
|
|
51
54
|
}
|
|
52
55
|
|
|
56
|
+
/**
|
|
57
|
+
* 归一化图片任务查询 payload。
|
|
58
|
+
*/
|
|
59
|
+
function normalize_image_result_payload(
|
|
60
|
+
payload: JsonValue | undefined,
|
|
61
|
+
): ImagePluginJobResultInput {
|
|
62
|
+
const record = to_record(payload ?? {});
|
|
63
|
+
if (!record) {
|
|
64
|
+
throw new TypeError("ImagePlugin.image_result payload must be an object");
|
|
65
|
+
}
|
|
66
|
+
const job_id = typeof record.job_id === "string" ? record.job_id.trim() : "";
|
|
67
|
+
if (!job_id) {
|
|
68
|
+
throw new TypeError("ImagePlugin.image_result payload must include job_id");
|
|
69
|
+
}
|
|
70
|
+
return {
|
|
71
|
+
...record,
|
|
72
|
+
job_id,
|
|
73
|
+
} as ImagePluginJobResultInput;
|
|
74
|
+
}
|
|
75
|
+
|
|
53
76
|
/**
|
|
54
77
|
* 校验 image 函数返回的 UIMessage。
|
|
55
78
|
*/
|
|
@@ -89,6 +112,82 @@ function normalize_positive_number(value: unknown, fallback: number): number {
|
|
|
89
112
|
: fallback;
|
|
90
113
|
}
|
|
91
114
|
|
|
115
|
+
/**
|
|
116
|
+
* 读取可选布尔值。
|
|
117
|
+
*/
|
|
118
|
+
function normalize_boolean(value: unknown, fallback: boolean): boolean {
|
|
119
|
+
return typeof value === "boolean" ? value : fallback;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* 归一化模型元数据为 JSON 对象。
|
|
124
|
+
*/
|
|
125
|
+
function normalize_json_object(value: unknown): JsonObject | undefined {
|
|
126
|
+
const record = to_record(value);
|
|
127
|
+
if (!record) return undefined;
|
|
128
|
+
return record as JsonObject;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
* 归一化图片模型信息,确保 action 返回纯 JSON。
|
|
133
|
+
*/
|
|
134
|
+
function normalize_image_model(value: ImagePluginModel): ImagePluginModel | null {
|
|
135
|
+
const record = to_record(value);
|
|
136
|
+
if (!record) return null;
|
|
137
|
+
const id = typeof record.id === "string" ? record.id.trim() : "";
|
|
138
|
+
if (!id) return null;
|
|
139
|
+
const modalities = Array.isArray(record.modalities)
|
|
140
|
+
? record.modalities
|
|
141
|
+
.map((item) => String(item || "").trim())
|
|
142
|
+
.filter(Boolean)
|
|
143
|
+
: [];
|
|
144
|
+
if (!modalities.includes("image")) return null;
|
|
145
|
+
const tags = Array.isArray(record.tags)
|
|
146
|
+
? record.tags.map((item) => String(item || "").trim()).filter(Boolean)
|
|
147
|
+
: undefined;
|
|
148
|
+
const default_modalities = Array.isArray(record.default_modalities)
|
|
149
|
+
? record.default_modalities
|
|
150
|
+
.map((item) => String(item || "").trim())
|
|
151
|
+
.filter(Boolean)
|
|
152
|
+
: undefined;
|
|
153
|
+
const meta = normalize_json_object(record.meta);
|
|
154
|
+
return {
|
|
155
|
+
id,
|
|
156
|
+
name: typeof record.name === "string" && record.name.trim()
|
|
157
|
+
? record.name.trim()
|
|
158
|
+
: id,
|
|
159
|
+
...(typeof record.description === "string"
|
|
160
|
+
? { description: record.description }
|
|
161
|
+
: {}),
|
|
162
|
+
modalities,
|
|
163
|
+
...(tags && tags.length > 0 ? { tags } : {}),
|
|
164
|
+
...(meta ? { meta } : {}),
|
|
165
|
+
...(typeof record.is_default === "boolean"
|
|
166
|
+
? { is_default: record.is_default }
|
|
167
|
+
: {}),
|
|
168
|
+
...(default_modalities && default_modalities.length > 0
|
|
169
|
+
? { default_modalities }
|
|
170
|
+
: {}),
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
/**
|
|
175
|
+
* 归一化模型列表结果。
|
|
176
|
+
*/
|
|
177
|
+
function normalize_image_models(values: ImagePluginModel[]): ImagePluginModelsResult {
|
|
178
|
+
const items = values
|
|
179
|
+
.map((item) => normalize_image_model(item))
|
|
180
|
+
.filter((item): item is ImagePluginModel => item !== null);
|
|
181
|
+
const default_model_id =
|
|
182
|
+
items.find((item) => item.default_modalities?.includes("image"))?.id ??
|
|
183
|
+
items.find((item) => item.is_default)?.id ??
|
|
184
|
+
items[0]?.id;
|
|
185
|
+
return {
|
|
186
|
+
items,
|
|
187
|
+
...(default_model_id ? { default_model_id } : {}),
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
|
|
92
191
|
/**
|
|
93
192
|
* 校验任务创建结果。
|
|
94
193
|
*/
|
|
@@ -139,6 +238,7 @@ export class ImagePlugin extends BasePlugin {
|
|
|
139
238
|
|
|
140
239
|
private readonly image_create: NonNullable<ImagePluginOptions["image_create"]>;
|
|
141
240
|
private readonly image_result: NonNullable<ImagePluginOptions["image_result"]>;
|
|
241
|
+
private readonly list_models?: ImagePluginOptions["list_models"];
|
|
142
242
|
private readonly timeout_ms: number;
|
|
143
243
|
private readonly min_poll_interval_ms: number;
|
|
144
244
|
private readonly max_poll_interval_ms: number;
|
|
@@ -162,6 +262,7 @@ export class ImagePlugin extends BasePlugin {
|
|
|
162
262
|
).trim();
|
|
163
263
|
this.image_create = options.image_create;
|
|
164
264
|
this.image_result = options.image_result;
|
|
265
|
+
this.list_models = options.list_models;
|
|
165
266
|
this.timeout_ms = normalize_positive_number(
|
|
166
267
|
options.timeout_ms,
|
|
167
268
|
DEFAULT_TIMEOUT_MS,
|
|
@@ -201,7 +302,10 @@ export class ImagePlugin extends BasePlugin {
|
|
|
201
302
|
"Payload rules:",
|
|
202
303
|
"- `prompt` is required unless `messages` provides the full multimodal image context.",
|
|
203
304
|
"- Optional common fields: `messages`, `size`, `aspect_ratio`, `ratio`, `quality`, `n`, `count`, `seed`, `provider_options`.",
|
|
305
|
+
"- To choose a model, call `models` and pass the selected model `id` as payload `model`.",
|
|
204
306
|
"- Preserve the user's creative intent; do not over-rewrite the prompt unless clarification is necessary.",
|
|
307
|
+
"- For a two-step flow, call `image_create` first, then call `image_result` with `job_id`; `image_result` waits until the job finishes by default.",
|
|
308
|
+
"- `generate` is a convenience action that creates the job and waits for the final image in one call.",
|
|
205
309
|
"- Generated image file parts are saved under project `.downcity/resources` and attached to the final assistant message automatically.",
|
|
206
310
|
].join("\n");
|
|
207
311
|
}
|
|
@@ -211,40 +315,205 @@ export class ImagePlugin extends BasePlugin {
|
|
|
211
315
|
): Promise<ImagePluginResult> {
|
|
212
316
|
const created = await this.image_create(input);
|
|
213
317
|
validate_created_job(created);
|
|
214
|
-
const
|
|
215
|
-
|
|
318
|
+
const current = await this.wait_for_image_result({
|
|
319
|
+
job_id: created.job_id,
|
|
320
|
+
poll_after_ms: created.poll_after_ms,
|
|
321
|
+
});
|
|
322
|
+
if (!current.result) {
|
|
323
|
+
throw new Error(`Image job ${created.job_id} succeeded without result`);
|
|
324
|
+
}
|
|
325
|
+
return normalize_image_result(current.result);
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
/**
|
|
329
|
+
* 查询图片任务,按需等待终态。
|
|
330
|
+
*/
|
|
331
|
+
private async read_image_result(
|
|
332
|
+
input: ImagePluginJobResultInput,
|
|
333
|
+
options: {
|
|
334
|
+
/**
|
|
335
|
+
* 默认是否等待终态。
|
|
336
|
+
*/
|
|
337
|
+
default_until_finish: boolean;
|
|
338
|
+
},
|
|
339
|
+
): Promise<ImagePluginJobResult> {
|
|
340
|
+
const timeout_ms = normalize_positive_number(input.timeout_ms, this.timeout_ms);
|
|
341
|
+
const min_poll_interval_ms = normalize_positive_number(
|
|
342
|
+
input.min_poll_interval_ms,
|
|
343
|
+
this.min_poll_interval_ms,
|
|
344
|
+
);
|
|
345
|
+
const max_poll_interval_ms = normalize_positive_number(
|
|
346
|
+
input.max_poll_interval_ms,
|
|
347
|
+
this.max_poll_interval_ms,
|
|
348
|
+
);
|
|
349
|
+
const until_finish = normalize_boolean(
|
|
350
|
+
input.until_finish,
|
|
351
|
+
options.default_until_finish,
|
|
352
|
+
);
|
|
353
|
+
const first = await this.image_result({ job_id: input.job_id });
|
|
354
|
+
validate_job_result(first);
|
|
355
|
+
if (!until_finish || first.status === "succeeded") {
|
|
356
|
+
if (first.status === "succeeded" && first.result) {
|
|
357
|
+
normalize_image_result(first.result);
|
|
358
|
+
}
|
|
359
|
+
return first;
|
|
360
|
+
}
|
|
361
|
+
if (first.status === "failed") {
|
|
362
|
+
throw new Error(
|
|
363
|
+
`Image job failed: ${first.error ?? first.message ?? input.job_id}`,
|
|
364
|
+
);
|
|
365
|
+
}
|
|
366
|
+
return await this.wait_for_image_result({
|
|
367
|
+
job_id: input.job_id,
|
|
368
|
+
poll_after_ms: first.poll_after_ms,
|
|
369
|
+
timeout_ms,
|
|
370
|
+
min_poll_interval_ms,
|
|
371
|
+
max_poll_interval_ms,
|
|
372
|
+
});
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
/**
|
|
376
|
+
* 轮询图片任务直到成功或失败。
|
|
377
|
+
*/
|
|
378
|
+
private async wait_for_image_result(input: {
|
|
379
|
+
/**
|
|
380
|
+
* 图片任务 ID。
|
|
381
|
+
*/
|
|
382
|
+
job_id: string;
|
|
383
|
+
/**
|
|
384
|
+
* 首次建议轮询间隔。
|
|
385
|
+
*/
|
|
386
|
+
poll_after_ms?: number;
|
|
387
|
+
/**
|
|
388
|
+
* 最大等待时间。
|
|
389
|
+
*/
|
|
390
|
+
timeout_ms?: number;
|
|
391
|
+
/**
|
|
392
|
+
* 轮询间隔下限。
|
|
393
|
+
*/
|
|
394
|
+
min_poll_interval_ms?: number;
|
|
395
|
+
/**
|
|
396
|
+
* 轮询间隔上限。
|
|
397
|
+
*/
|
|
398
|
+
max_poll_interval_ms?: number;
|
|
399
|
+
}): Promise<ImagePluginJobResult> {
|
|
400
|
+
const timeout_ms = normalize_positive_number(input.timeout_ms, this.timeout_ms);
|
|
401
|
+
const min_poll_interval_ms = normalize_positive_number(
|
|
402
|
+
input.min_poll_interval_ms,
|
|
403
|
+
this.min_poll_interval_ms,
|
|
404
|
+
);
|
|
405
|
+
const max_poll_interval_ms = normalize_positive_number(
|
|
406
|
+
input.max_poll_interval_ms,
|
|
407
|
+
this.max_poll_interval_ms,
|
|
408
|
+
);
|
|
409
|
+
const deadline = Date.now() + timeout_ms;
|
|
410
|
+
let poll_after_ms = input.poll_after_ms;
|
|
216
411
|
|
|
217
412
|
while (Date.now() < deadline) {
|
|
218
413
|
await sleep(
|
|
219
414
|
clamp_poll_interval(
|
|
220
415
|
poll_after_ms,
|
|
221
|
-
|
|
222
|
-
|
|
416
|
+
min_poll_interval_ms,
|
|
417
|
+
max_poll_interval_ms,
|
|
223
418
|
),
|
|
224
419
|
);
|
|
225
|
-
const current = await this.image_result({ job_id:
|
|
420
|
+
const current = await this.image_result({ job_id: input.job_id });
|
|
226
421
|
validate_job_result(current);
|
|
227
422
|
poll_after_ms = current.poll_after_ms;
|
|
228
423
|
if (current.status === "succeeded") {
|
|
229
424
|
if (!current.result) {
|
|
230
|
-
throw new Error(`Image job ${
|
|
425
|
+
throw new Error(`Image job ${input.job_id} succeeded without result`);
|
|
231
426
|
}
|
|
232
|
-
|
|
427
|
+
normalize_image_result(current.result);
|
|
428
|
+
return current;
|
|
233
429
|
}
|
|
234
430
|
if (current.status === "failed") {
|
|
235
431
|
throw new Error(
|
|
236
|
-
`Image job failed: ${current.error ?? current.message ??
|
|
432
|
+
`Image job failed: ${current.error ?? current.message ?? input.job_id}`,
|
|
237
433
|
);
|
|
238
434
|
}
|
|
239
435
|
}
|
|
240
436
|
|
|
241
|
-
throw new Error(`Image job timed out: ${
|
|
437
|
+
throw new Error(`Image job timed out: ${input.job_id}`);
|
|
242
438
|
}
|
|
243
439
|
|
|
244
440
|
/**
|
|
245
441
|
* 显式 action 集合。
|
|
246
442
|
*/
|
|
247
443
|
readonly actions = {
|
|
444
|
+
models: {
|
|
445
|
+
execute: async () => {
|
|
446
|
+
try {
|
|
447
|
+
if (!this.list_models) {
|
|
448
|
+
return {
|
|
449
|
+
success: false,
|
|
450
|
+
error: "ImagePlugin list_models is not configured",
|
|
451
|
+
message: "ImagePlugin list_models is not configured",
|
|
452
|
+
};
|
|
453
|
+
}
|
|
454
|
+
const models = await this.list_models();
|
|
455
|
+
const result = normalize_image_models(models);
|
|
456
|
+
return {
|
|
457
|
+
success: true,
|
|
458
|
+
data: result as unknown as JsonObject,
|
|
459
|
+
message: "image models listed",
|
|
460
|
+
};
|
|
461
|
+
} catch (error) {
|
|
462
|
+
return {
|
|
463
|
+
success: false,
|
|
464
|
+
error: String(error),
|
|
465
|
+
message: String(error),
|
|
466
|
+
};
|
|
467
|
+
}
|
|
468
|
+
},
|
|
469
|
+
},
|
|
470
|
+
image_create: {
|
|
471
|
+
execute: async ({ payload }: { payload: JsonValue }) => {
|
|
472
|
+
try {
|
|
473
|
+
const input = normalize_image_payload(payload);
|
|
474
|
+
const created = await this.image_create(input);
|
|
475
|
+
validate_created_job(created);
|
|
476
|
+
return {
|
|
477
|
+
success: true,
|
|
478
|
+
data: created as unknown as JsonObject,
|
|
479
|
+
message: "image job created",
|
|
480
|
+
};
|
|
481
|
+
} catch (error) {
|
|
482
|
+
return {
|
|
483
|
+
success: false,
|
|
484
|
+
error: String(error),
|
|
485
|
+
message: String(error),
|
|
486
|
+
};
|
|
487
|
+
}
|
|
488
|
+
},
|
|
489
|
+
},
|
|
490
|
+
image_result: {
|
|
491
|
+
execute: async ({ payload }: { payload: JsonValue }) => {
|
|
492
|
+
try {
|
|
493
|
+
const input = normalize_image_result_payload(payload);
|
|
494
|
+
const current = await this.read_image_result(input, {
|
|
495
|
+
default_until_finish: true,
|
|
496
|
+
});
|
|
497
|
+
const data = current.status === "succeeded" && current.result
|
|
498
|
+
? current.result as unknown as JsonObject
|
|
499
|
+
: current as unknown as JsonObject;
|
|
500
|
+
return {
|
|
501
|
+
success: true,
|
|
502
|
+
data,
|
|
503
|
+
message:
|
|
504
|
+
current.status === "succeeded"
|
|
505
|
+
? "image generated"
|
|
506
|
+
: `image job ${current.status}`,
|
|
507
|
+
};
|
|
508
|
+
} catch (error) {
|
|
509
|
+
return {
|
|
510
|
+
success: false,
|
|
511
|
+
error: String(error),
|
|
512
|
+
message: String(error),
|
|
513
|
+
};
|
|
514
|
+
}
|
|
515
|
+
},
|
|
516
|
+
},
|
|
248
517
|
generate: {
|
|
249
518
|
execute: async ({ payload }: { payload: JsonValue }) => {
|
|
250
519
|
try {
|
|
@@ -130,6 +130,54 @@ export interface ImagePluginJobResult {
|
|
|
130
130
|
poll_after_ms?: number;
|
|
131
131
|
}
|
|
132
132
|
|
|
133
|
+
/**
|
|
134
|
+
* 图片任务查询输入。
|
|
135
|
+
*/
|
|
136
|
+
export interface ImagePluginJobResultInput {
|
|
137
|
+
/** 图片任务 ID,由 `image_create` 返回。 */
|
|
138
|
+
job_id: string;
|
|
139
|
+
/** 是否持续轮询直到任务进入成功或失败终态,默认由 action 决定。 */
|
|
140
|
+
until_finish?: boolean;
|
|
141
|
+
/** 单次查询最大等待时间,单位毫秒。 */
|
|
142
|
+
timeout_ms?: number;
|
|
143
|
+
/** 轮询间隔下限,单位毫秒。 */
|
|
144
|
+
min_poll_interval_ms?: number;
|
|
145
|
+
/** 轮询间隔上限,单位毫秒。 */
|
|
146
|
+
max_poll_interval_ms?: number;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
/**
|
|
150
|
+
* ImagePlugin 可见模型信息。
|
|
151
|
+
*/
|
|
152
|
+
export interface ImagePluginModel {
|
|
153
|
+
/** 模型唯一 ID,用于 `image_create` / `generate` payload 的 `model` 字段。 */
|
|
154
|
+
id: string;
|
|
155
|
+
/** 模型展示名称。 */
|
|
156
|
+
name: string;
|
|
157
|
+
/** 模型说明文本。 */
|
|
158
|
+
description?: string;
|
|
159
|
+
/** 模型支持的能力列表,例如 `image`。 */
|
|
160
|
+
modalities: string[];
|
|
161
|
+
/** 模型标签。 */
|
|
162
|
+
tags?: string[];
|
|
163
|
+
/** 模型元数据。 */
|
|
164
|
+
meta?: JsonObject;
|
|
165
|
+
/** 当前模型是否为目录全局默认模型。 */
|
|
166
|
+
is_default?: boolean;
|
|
167
|
+
/** 当前模型作为默认模型负责的 modality 列表。 */
|
|
168
|
+
default_modalities?: string[];
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
/**
|
|
172
|
+
* ImagePlugin 模型列表结果。
|
|
173
|
+
*/
|
|
174
|
+
export interface ImagePluginModelsResult {
|
|
175
|
+
/** 可用于图片生成的模型列表。 */
|
|
176
|
+
items: ImagePluginModel[];
|
|
177
|
+
/** 图片能力默认模型 ID。 */
|
|
178
|
+
default_model_id?: string;
|
|
179
|
+
}
|
|
180
|
+
|
|
133
181
|
/**
|
|
134
182
|
* ImagePlugin 构造参数。
|
|
135
183
|
*/
|
|
@@ -145,9 +193,11 @@ export interface ImagePluginOptions {
|
|
|
145
193
|
input: ImagePluginInput,
|
|
146
194
|
) => Promise<ImagePluginJobCreateResult> | ImagePluginJobCreateResult;
|
|
147
195
|
/** 查询图片生成任务,通常传入 `(input) => city.ai.image_result(input)`。 */
|
|
148
|
-
image_result?: (
|
|
149
|
-
|
|
150
|
-
|
|
196
|
+
image_result?: (
|
|
197
|
+
input: Pick<ImagePluginJobResultInput, "job_id">,
|
|
198
|
+
) => Promise<ImagePluginJobResult> | ImagePluginJobResult;
|
|
199
|
+
/** 列出可用图片模型,通常传入 `async () => city.ai.listModels().then((catalog) => catalog.forModality("image"))`。 */
|
|
200
|
+
list_models?: () => Promise<ImagePluginModel[]> | ImagePluginModel[];
|
|
151
201
|
/** 图片任务最大等待时间,默认 300000ms。 */
|
|
152
202
|
timeout_ms?: number;
|
|
153
203
|
/** 轮询间隔下限,默认 100ms。 */
|
package/src/index.ts
CHANGED
|
@@ -107,8 +107,11 @@ export type {
|
|
|
107
107
|
ImagePluginInput,
|
|
108
108
|
ImagePluginJobCreateResult,
|
|
109
109
|
ImagePluginJobResult,
|
|
110
|
+
ImagePluginJobResultInput,
|
|
110
111
|
ImagePluginJobStatus,
|
|
111
112
|
ImagePluginMessage,
|
|
113
|
+
ImagePluginModel,
|
|
114
|
+
ImagePluginModelsResult,
|
|
112
115
|
ImagePluginOptions,
|
|
113
116
|
ImagePluginResult,
|
|
114
117
|
ImagePluginTextContent,
|