maoda-commander-tt 0.0.51 → 0.0.53
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/README.md +11 -4
- package/dist/{chunk-EQ6SKTNQ.js → chunk-JGSGP4UR.js} +31 -20
- package/dist/chunk-JGSGP4UR.js.map +1 -0
- package/dist/index.js +1 -1
- package/dist/main.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-EQ6SKTNQ.js.map +0 -1
package/README.md
CHANGED
|
@@ -331,7 +331,7 @@ tt ai image '画一片绿色树叶'
|
|
|
331
331
|
|
|
332
332
|
# 统一参考图入口;提示词按传入顺序使用图1、图2
|
|
333
333
|
tt ai image --images ./composition.png --images ./palette.png \
|
|
334
|
-
--aspect-ratio 16:9 --
|
|
334
|
+
--aspect-ratio 16:9 --model-id gpt_image_2 \
|
|
335
335
|
'使用图1的构图和图2的配色'
|
|
336
336
|
|
|
337
337
|
# 一次调用等待并保存;也可仅用 --wait 返回归档图片路径
|
|
@@ -347,14 +347,21 @@ tt ai image list
|
|
|
347
347
|
|
|
348
348
|
等待默认 360 秒,上限 600 秒。本地实现完成时会返回 `outputs[].localPath`;
|
|
349
349
|
XYQ 的 `status` / `--wait` 会在 `outputs[]` 返回
|
|
350
|
-
`
|
|
351
|
-
使用 `--output`
|
|
350
|
+
`downloadUrl`、`assetId`、`pippitAssetId` 和尺寸等槽位元数据。
|
|
351
|
+
使用 `--output` 会把 XYQ 产物下载到本地,并用 `localPath` 取代 `downloadUrl`;再次
|
|
352
352
|
`wait --output` 只下载或复制已有产物。
|
|
353
353
|
|
|
354
354
|
参考图的跨 provider 稳定契约是可重复的 `--images <path>`:本地实现把有序绝对路径
|
|
355
355
|
写入生成上下文,XYQ 实现先上传图片,再把对应 `pippitAssetId` 按顺序放进
|
|
356
356
|
`pippit_asset_ids` 槽位。因此切换 source 时调用命令和“图1/图2”提示词都不用变化。
|
|
357
357
|
旧的“直接把绝对路径写进提示词”仍只作为本地实现的兼容用法。
|
|
358
|
+
两种实现都提供 2K 图片,无需在 prompt 中声明分辨率。XYQ 推理强度默认
|
|
359
|
+
`medium`,通常无需设置 `--effort`。支持的比例为 `21:9`、`16:9`、`3:2`、
|
|
360
|
+
`4:3`、`1:1`、`3:4`、`2:3`、`9:16` 和 `auto`。XYQ 未设置时默认 `16:9`;
|
|
361
|
+
非 XYQ 未设置时不追加比例。修图时使用
|
|
362
|
+
`--aspect-ratio auto`,无需在 prompt 重复比例;需要枚举外的特殊比例时使用
|
|
363
|
+
`auto`,并在 prompt 中描述目标比例。非 XYQ 实现会把显式设置的具体比例加入生成
|
|
364
|
+
上下文,`auto` 不追加。
|
|
358
365
|
`--quiet` 关闭提交进度;stdout 始终只有一个最终 JSON envelope。
|
|
359
366
|
|
|
360
367
|
本地任务记录默认位于 `~/.tt/ai/image-tasks`,可用 `TT_AI_IMAGE_TASKS_DIR` 指定持久目录。
|
|
@@ -369,7 +376,7 @@ XYQ 的 `status` / `--wait` 会在 `outputs[]` 返回
|
|
|
369
376
|
能接回同一次远端生成。Codex 会话会保留,便于后续诊断。
|
|
370
377
|
|
|
371
378
|
迁移旧调用:`tt ai image '...'` 若需要直接拿文件,改为
|
|
372
|
-
`tt ai image --
|
|
379
|
+
`tt ai image --output ./result.png '...'`,读取 `data.outputs[0].localPath`,不再读取旧 `imagePath`。
|
|
373
380
|
外部 `generate` 技能中依赖同步行为的命令也需在升级 tt 时加 `--wait`。
|
|
374
381
|
|
|
375
382
|
## AI 音频生成
|
|
@@ -2094,8 +2094,8 @@ function normalizeImageInput(input) {
|
|
|
2094
2094
|
imageCount,
|
|
2095
2095
|
model: normalizeString2(input.model) ?? "gpt_image_2",
|
|
2096
2096
|
aspectRatio: normalizeString2(input.aspectRatio) ?? "16:9",
|
|
2097
|
-
resolution:
|
|
2098
|
-
effort: normalizeString2(input.effort) ?? "
|
|
2097
|
+
resolution: "2K",
|
|
2098
|
+
effort: normalizeString2(input.effort) ?? "medium"
|
|
2099
2099
|
});
|
|
2100
2100
|
}
|
|
2101
2101
|
function buildSubmitImageBody(input) {
|
|
@@ -3635,10 +3635,7 @@ function buildLocalImagePrompt(input) {
|
|
|
3635
3635
|
(filePath, index) => `\u56FE${index + 1}: ${JSON.stringify(path7.resolve(filePath))}`
|
|
3636
3636
|
);
|
|
3637
3637
|
const constraints = [
|
|
3638
|
-
input.aspectRatio ? `\u5BBD\u9AD8\u6BD4: ${input.aspectRatio}` : void 0
|
|
3639
|
-
input.resolution ? `\u5206\u8FA8\u7387: ${input.resolution}` : void 0,
|
|
3640
|
-
input.modelId ? `\u4F18\u5148\u6A21\u578B: ${input.modelId}` : void 0,
|
|
3641
|
-
input.effort ? `\u751F\u6210\u5F3A\u5EA6: ${input.effort}` : void 0
|
|
3638
|
+
input.aspectRatio && input.aspectRatio !== "auto" ? `\u5BBD\u9AD8\u6BD4: ${input.aspectRatio}` : void 0
|
|
3642
3639
|
].filter((value) => value !== void 0);
|
|
3643
3640
|
return [
|
|
3644
3641
|
input.prompt,
|
|
@@ -3688,7 +3685,6 @@ var XyqImageTaskService = class {
|
|
|
3688
3685
|
imageCount: 1,
|
|
3689
3686
|
model: request.modelId,
|
|
3690
3687
|
aspectRatio: request.aspectRatio,
|
|
3691
|
-
resolution: request.resolution,
|
|
3692
3688
|
effort: request.effort
|
|
3693
3689
|
});
|
|
3694
3690
|
if (!submit.ok) return submit;
|
|
@@ -3783,15 +3779,14 @@ function collectXyqImageOutputs(result) {
|
|
|
3783
3779
|
return [...outputs.values()];
|
|
3784
3780
|
}
|
|
3785
3781
|
function toTaskOutput(output, localPath) {
|
|
3786
|
-
|
|
3787
|
-
...localPath ? { localPath } : {},
|
|
3788
|
-
remoteUrl: output.downloadUrl,
|
|
3782
|
+
const metadata = {
|
|
3789
3783
|
...output.assetId ? { assetId: output.assetId } : {},
|
|
3790
3784
|
...output.pippitAssetId ? { pippitAssetId: output.pippitAssetId } : {},
|
|
3791
3785
|
...output.width !== void 0 ? { width: output.width } : {},
|
|
3792
3786
|
...output.height !== void 0 ? { height: output.height } : {},
|
|
3793
3787
|
...output.name ? { name: output.name } : {}
|
|
3794
3788
|
};
|
|
3789
|
+
return localPath ? { ...metadata, localPath } : { ...metadata, downloadUrl: output.downloadUrl };
|
|
3795
3790
|
}
|
|
3796
3791
|
function resolveImageOutputPaths(outputPath, count) {
|
|
3797
3792
|
const resolved = path8.resolve(outputPath);
|
|
@@ -3940,7 +3935,7 @@ var AiImageStatusCommand = class extends BaseCommand {
|
|
|
3940
3935
|
return [
|
|
3941
3936
|
"data \u5FC5\u9009\u5B57\u6BB5: taskId:string\u3001state:string\u3001outputs:Array\uFF1B\u53EF\u9009\u5B57\u6BB5\uFF08?\uFF09: source?:local|xyq\u3001createdAt?:string\u3001updatedAt?:string\u3001retryAfterSeconds?:number\u3001failReason?:string\u3001nextCommand?:string\u3002",
|
|
3942
3937
|
"taskId \u683C\u5F0F\u4E3A local-image:<uuid> \u6216 xyq-image:<threadId>\uFF1B\u524D\u7F00\u51B3\u5B9A\u67E5\u8BE2\u539F provider\uFF0C\u4E0D\u8BFB\u53D6\u5F53\u524D imagegen.source\u3002state \u679A\u4E3E: submitted/working/completed/failed/unknown\u3002code=0 \u8868\u793A\u67E5\u8BE2\u6210\u529F\uFF0C\u4E0D\u8868\u793A\u56FE\u7247\u751F\u6210\u6210\u529F\u3002",
|
|
3943
|
-
"outputs \u65E0\u53EF\u7528\u56FE\u7247\u65F6\u4E3A []\uFF1B\u672C\u5730\u4EA7\u7269\u542B localPath\uFF0CXYQ \u4EA7\u7269\u53EF\u542B
|
|
3938
|
+
"outputs \u65E0\u53EF\u7528\u56FE\u7247\u65F6\u4E3A []\uFF1B\u672C\u5730\u4EA7\u7269\u542B localPath\uFF0CXYQ \u8FDC\u7AEF\u4EA7\u7269\u542B downloadUrl\uFF1B\u4E24\u8005\u4E0E ai audio/video \u7684\u8F93\u51FA\u5951\u7EA6\u4E00\u81F4\u3002\u56FE\u7247\u4EA7\u7269\u8FD8\u53EF\u542B assetId\u3001pippitAssetId\u3001width\u3001height\u3001name\u3002",
|
|
3944
3939
|
"submitted/working \u53EF\u8FD4\u56DE retryAfterSeconds\uFF08\u5EFA\u8BAE\u67E5\u8BE2\u95F4\u9694\uFF0C\u5355\u4F4D\u79D2\uFF09\uFF1Bfailed/unknown \u53EF\u8FD4\u56DE failReason\u3002\u672C\u547D\u4EE4\u5355\u6B21\u67E5\u8BE2\uFF0C\u4E0D\u8FD4\u56DE timedOut\u3002",
|
|
3945
3940
|
"nextCommand \u5728 submitted/working \u65F6\u4E3A wait \u547D\u4EE4\uFF0Cunknown \u65F6\u4E3A status \u547D\u4EE4\uFF0Ccompleted/failed \u65F6\u7701\u7565\u3002",
|
|
3946
3941
|
'data \u793A\u4F8B\uFF08\u7701\u7565\u53EF\u9009\u5B57\u6BB5\uFF09: {"taskId":"local-image:00000000-0000-4000-8000-000000000001","state":"completed","outputs":[{"localPath":"/tmp/image-tasks/00000000-0000-4000-8000-000000000001/image.png"}]}',
|
|
@@ -3975,7 +3970,7 @@ var AiImageWaitCommand = class extends BaseCommand {
|
|
|
3975
3970
|
return [
|
|
3976
3971
|
"data \u5FC5\u9009\u5B57\u6BB5: taskId:string\u3001state:string\u3001outputs:Array<{localPath:string}>\uFF1B\u53EF\u9009\u5B57\u6BB5\uFF08?\uFF09: createdAt?:string\u3001updatedAt?:string\u3001retryAfterSeconds?:number\u3001timedOut?:true\u3001failReason?:string\u3001nextCommand?:string\u3002",
|
|
3977
3972
|
"taskId \u683C\u5F0F\u4E3A local-image:<uuid> \u6216 xyq-image:<threadId>\uFF1B\u524D\u7F00\u51B3\u5B9A\u7B49\u5F85\u539F provider\u3002state \u679A\u4E3E: submitted/working/completed/failed/unknown\u3002code=0 \u53EA\u8868\u793A\u8FD4\u56DE\u4E86\u7B49\u5F85\u7ED3\u679C\uFF0C\u751F\u6210\u662F\u5426\u6210\u529F\u987B\u68C0\u67E5 state\u3002",
|
|
3978
|
-
"outputs \u65E0\u53EF\u7528\u56FE\u7247\u65F6\u4E3A []\uFF1B\
|
|
3973
|
+
"outputs \u65E0\u53EF\u7528\u56FE\u7247\u65F6\u4E3A []\uFF1B\u672A\u4E0B\u8F7D\u7684 XYQ \u4EA7\u7269\u542B downloadUrl\uFF0C\u4F7F\u7528 --output \u540E\u6539\u4E3A\u7EDD\u5BF9 localPath\uFF1B\u4E24\u8005\u4E92\u65A5\uFF0C\u4E0E ai audio/video \u4E00\u81F4\u3002\u91CD\u590D\u8C03\u7528\u4E0D\u4F1A\u91CD\u65B0\u751F\u6210\u3002",
|
|
3979
3974
|
"createdAt/updatedAt \u662F\u8BB0\u5F55\u521B\u5EFA/\u6700\u540E\u5199\u5165\u65F6\u95F4\uFF08ISO 8601 UTC\uFF09\uFF0C\u4E0D\u662F\u7B49\u5F85\u7ED3\u675F\u65F6\u95F4\uFF1Bsubmitted/working \u53EF\u8FD4\u56DE retryAfterSeconds\uFF08\u5355\u4F4D\u79D2\uFF09\uFF0Cfailed/unknown \u53EF\u8FD4\u56DE failReason\u3002",
|
|
3980
3975
|
"\u4EC5\u7B49\u5F85\u8D85\u65F6\u65F6\u8FD4\u56DE timedOut=true\uFF0C\u6B64\u65F6 state \u4ECD\u4E3A submitted/working\uFF0C\u540E\u53F0\u4EFB\u52A1\u7EE7\u7EED\uFF1B\u5176\u4ED6\u7ED3\u679C\u7701\u7565 timedOut\u3002",
|
|
3981
3976
|
"nextCommand \u5728 submitted/working \u65F6\u4E3A wait \u547D\u4EE4\uFF08\u4FDD\u7559\u672C\u6B21 --output\uFF09\uFF0Cunknown \u65F6\u4E3A status \u547D\u4EE4\uFF0Ccompleted/failed \u65F6\u7701\u7565\u3002",
|
|
@@ -3999,6 +3994,17 @@ var AiImageWaitCommand = class extends BaseCommand {
|
|
|
3999
3994
|
};
|
|
4000
3995
|
|
|
4001
3996
|
// src/commands/ai/ai-image-command.ts
|
|
3997
|
+
var IMAGE_ASPECT_RATIOS = [
|
|
3998
|
+
"21:9",
|
|
3999
|
+
"16:9",
|
|
4000
|
+
"3:2",
|
|
4001
|
+
"4:3",
|
|
4002
|
+
"1:1",
|
|
4003
|
+
"3:4",
|
|
4004
|
+
"2:3",
|
|
4005
|
+
"9:16",
|
|
4006
|
+
"auto"
|
|
4007
|
+
];
|
|
4002
4008
|
var AiImageCommand = class extends BaseCommandGroup {
|
|
4003
4009
|
constructor(_service = createDefaultImageTaskService()) {
|
|
4004
4010
|
super();
|
|
@@ -4018,10 +4024,11 @@ var AiImageCommand = class extends BaseCommandGroup {
|
|
|
4018
4024
|
cmd.addOption(
|
|
4019
4025
|
new Option6("--images <path>", "\u53C2\u8003\u56FE\u7247\u8DEF\u5F84\uFF0C\u53EF\u91CD\u590D\uFF1B\u63D0\u793A\u8BCD\u4F7F\u7528\u201C\u56FE1\u3001\u56FE2\u201D\u6307\u4EE3").argParser(appendImagePath).default([])
|
|
4020
4026
|
);
|
|
4021
|
-
cmd.addOption(
|
|
4022
|
-
|
|
4027
|
+
cmd.addOption(
|
|
4028
|
+
new Option6("--aspect-ratio <ratio>", `\u56FE\u7247\u5BBD\u9AD8\u6BD4\uFF0C\u53EF\u9009 ${IMAGE_ASPECT_RATIOS.join("\u3001")}\uFF1BXYQ \u9ED8\u8BA4 16:9`)
|
|
4029
|
+
);
|
|
4023
4030
|
cmd.addOption(new Option6("--model-id <model-id>", "\u56FE\u7247\u6A21\u578B\uFF1BXYQ \u9ED8\u8BA4 gpt_image_2"));
|
|
4024
|
-
cmd.addOption(new Option6("--effort <effort>", "\
|
|
4031
|
+
cmd.addOption(new Option6("--effort <effort>", "XYQ \u63A8\u7406\u5F3A\u5EA6\uFF0C\u9ED8\u8BA4 medium\uFF0C\u901A\u5E38\u65E0\u9700\u8BBE\u7F6E"));
|
|
4025
4032
|
cmd.addOption(new Option6("--wait", "\u63D0\u4EA4\u540E\u7EE7\u7EED\u7B49\u5F85\u56FE\u7247\u751F\u6210\u5B8C\u6210").default(false));
|
|
4026
4033
|
cmd.addOption(new Option6("--quiet", "\u5173\u95ED\u63D0\u4EA4\u9636\u6BB5\u7684 stderr \u8FDB\u5EA6\u4E0E\u5FC3\u8DF3").default(false));
|
|
4027
4034
|
cmd.addOption(new Option6("--timeout-seconds <seconds>", `\u6700\u591A\u7B49\u5F85\u79D2\u6570\uFF0C\u8303\u56F4 1-${MAX_IMAGE_WAIT_SECONDS}`).argParser(Number).default(DEFAULT_IMAGE_WAIT_SECONDS));
|
|
@@ -4033,18 +4040,20 @@ var AiImageCommand = class extends BaseCommandGroup {
|
|
|
4033
4040
|
this._addSubcommand(new AiImageListCommand(this._service));
|
|
4034
4041
|
}
|
|
4035
4042
|
_helpExample() {
|
|
4036
|
-
return "tt ai image '\u753B\u4E00\u7247\u7EFF\u8272\u6811\u53F6'\n tt ai image --images ./ref.png --output ./result.png '\
|
|
4043
|
+
return "tt ai image '\u753B\u4E00\u7247\u7EFF\u8272\u6811\u53F6'\n tt ai image --images ./ref.png --aspect-ratio auto --output ./result.png '\u628A\u56FE1\u4E2D\u7684\u5929\u7A7A\u6539\u4E3A\u665A\u971E'\n tt ai image wait --task-id '<task-id>' --output ./result.png";
|
|
4037
4044
|
}
|
|
4038
4045
|
_agentContract() {
|
|
4039
4046
|
return [
|
|
4040
4047
|
"data \u5FC5\u9009\u5B57\u6BB5: taskId:string\u3001state:string\u3001outputs:Array\uFF1B\u53EF\u9009\u5B57\u6BB5\uFF08?\uFF09: source?:local|xyq\u3001createdAt?:string\u3001updatedAt?:string\u3001retryAfterSeconds?:number\u3001timedOut?:true\u3001failReason?:string\u3001nextCommand?:string\u3002",
|
|
4041
4048
|
"imagegen.source \u7CBE\u786E\u4E3A xyq\uFF08\u5FFD\u7565\u5927\u5C0F\u5199\u4E0E\u9996\u5C3E\u7A7A\u683C\uFF09\u65F6\u8D70 XYQ HTTP\uFF1B\u672A\u914D\u7F6E\u3001\u5176\u4ED6\u503C\u6216\u8BBE\u7F6E\u8BFB\u53D6\u5931\u8D25\u65F6\u4FDD\u6301\u672C\u5730\u5B9E\u73B0\u3002taskId \u4E3A local-image:<uuid> \u6216 xyq-image:<threadId>\u3002",
|
|
4042
4049
|
"\u53C2\u8003\u56FE\u7EDF\u4E00\u901A\u8FC7\u53EF\u91CD\u590D --images \u4F20\u5165\uFF0C\u63D0\u793A\u8BCD\u4EE5\u56FE1\u3001\u56FE2\u6307\u4EE3\uFF1BXYQ \u4F1A\u5148\u4E0A\u4F20\u518D\u5199\u5165 pippit_asset_ids\uFF0C\u672C\u5730\u5B9E\u73B0\u4F1A\u628A\u6709\u5E8F\u7EDD\u5BF9\u8DEF\u5F84\u52A0\u5165\u751F\u6210\u4E0A\u4E0B\u6587\u3002",
|
|
4050
|
+
"\u4E24\u79CD\u5B9E\u73B0\u90FD\u63D0\u4F9B 2K \u56FE\u7247\uFF0C\u65E0\u9700\u5728 prompt \u4E2D\u58F0\u660E\u5206\u8FA8\u7387\u3002--effort \u4EC5\u7528\u4E8E XYQ\uFF0C\u9ED8\u8BA4 medium\uFF0C\u901A\u5E38\u65E0\u9700\u8BBE\u7F6E\u3002",
|
|
4051
|
+
`--aspect-ratio \u652F\u6301 ${IMAGE_ASPECT_RATIOS.join("\u3001")}\uFF1BXYQ \u672A\u8BBE\u7F6E\u65F6\u9ED8\u8BA4 16:9\uFF0C\u975E XYQ \u672A\u8BBE\u7F6E\u65F6\u4E0D\u8FFD\u52A0\u6BD4\u4F8B\u3002\u4FEE\u56FE\u65F6\u4F7F\u7528 auto\uFF0C\u65E0\u9700\u5728 prompt \u91CD\u590D\u6BD4\u4F8B\uFF1B\u9700\u8981\u679A\u4E3E\u5916\u7684\u7279\u6B8A\u6BD4\u4F8B\u65F6\u4F7F\u7528 auto\uFF0C\u5E76\u5728 prompt \u4E2D\u63CF\u8FF0\u76EE\u6807\u6BD4\u4F8B\u3002\u975E XYQ \u5B9E\u73B0\u4F1A\u628A\u663E\u5F0F\u8BBE\u7F6E\u7684\u5177\u4F53\u6BD4\u4F8B\u52A0\u5165\u672C\u5730\u751F\u6210\u4E0A\u4E0B\u6587\uFF0Cauto \u4E0D\u8FFD\u52A0\u3002`,
|
|
4043
4052
|
"state \u679A\u4E3E: submitted/working/completed/failed/unknown\u3002code=0 \u53EA\u8868\u793A\u547D\u4EE4\u6210\u529F\u8FD4\u56DE\u7ED3\u679C\uFF0C\u751F\u6210\u662F\u5426\u6210\u529F\u987B\u68C0\u67E5 state\u3002",
|
|
4044
|
-
"outputs \u65E0\u53EF\u7528\u56FE\u7247\u65F6\u4E3A []\uFF1B\
|
|
4053
|
+
"outputs \u65E0\u53EF\u7528\u56FE\u7247\u65F6\u4E3A []\uFF1B\u672A\u4E0B\u8F7D\u7684 XYQ \u4EA7\u7269\u542B downloadUrl\uFF0C\u4F7F\u7528 --output \u540E\u6539\u4E3A\u7EDD\u5BF9 localPath\uFF1B\u4E24\u8005\u4E92\u65A5\uFF0C\u4E0E ai audio/video \u4E00\u81F4\u3002\u56FE\u7247\u4EA7\u7269\u8FD8\u53EF\u542B assetId\u3001pippitAssetId\u3001width\u3001height\u3001name\u3002",
|
|
4045
4054
|
"createdAt/updatedAt \u662F\u4EFB\u52A1\u8BB0\u5F55\u521B\u5EFA/\u6700\u540E\u5199\u5165\u65F6\u95F4\uFF08ISO 8601 UTC\uFF09\uFF0C\u4E0D\u662F\u672C\u6B21\u67E5\u8BE2\u65F6\u95F4\uFF1Bsubmitted/working \u53EF\u8FD4\u56DE retryAfterSeconds\uFF0C\u5355\u4F4D\u79D2\uFF1Bfailed/unknown \u53EF\u8FD4\u56DE failReason\u3002",
|
|
4046
4055
|
"nextCommand \u5728 submitted/working \u65F6\u4E3A wait \u547D\u4EE4\uFF08\u4FDD\u7559\u672C\u6B21 --output\uFF09\uFF0Cunknown \u65F6\u4E3A status \u547D\u4EE4\uFF0Ccompleted/failed \u65F6\u7701\u7565\u3002",
|
|
4047
|
-
"\u9ED8\u8BA4\
|
|
4056
|
+
"\u9ED8\u8BA4\u5728\u5F53\u524D provider \u63A5\u53D7\u4EFB\u52A1\u540E\u8FD4\u56DE\uFF1B--wait \u6216 --output \u7B49\u5F85\u540C\u4E00\u4EFB\u52A1\uFF0C\u4EC5\u7B49\u5F85\u8D85\u65F6\u65F6\u8FD4\u56DE timedOut=true\uFF0C\u4EFB\u52A1\u7EE7\u7EED\u8FD0\u884C\u3002",
|
|
4048
4057
|
'data \u793A\u4F8B\uFF08\u7701\u7565\u90E8\u5206\u53EF\u9009\u5B57\u6BB5\uFF09: {"taskId":"local-image:00000000-0000-4000-8000-000000000001","state":"working","outputs":[],"retryAfterSeconds":1,"nextCommand":"tt ai image wait --task-id local-image:00000000-0000-4000-8000-000000000001"}',
|
|
4049
4058
|
'\u547D\u4EE4\u5931\u8D25\u65F6 error.stage \u6807\u8BB0 input/submit/wait\uFF1B\u672C\u5730\u63D0\u4EA4\u5931\u8D25\u7ED9\u51FA nextCommand="tt ai image list"\uFF0CXYQ \u63D0\u4EA4\u5931\u8D25\u4E0D\u4F2A\u9020\u53EF\u6062\u590D taskId\uFF1B\u7B49\u5F85\u6216\u4FDD\u5B58\u5931\u8D25\u9644 taskId\u3001recoverable:true\u3001\u4FDD\u7559 --output \u7684 nextCommand\u3002',
|
|
4050
4059
|
"status/wait \u6309 taskId \u524D\u7F00\u81EA\u52A8\u9009\u62E9\u539F provider\uFF0C\u4E0D\u53D7\u5F53\u524D imagegen.source \u5F71\u54CD\uFF1Blist \u53EA\u5217\u672C\u673A local-image \u8BB0\u5F55\u3002",
|
|
@@ -4055,6 +4064,9 @@ var AiImageCommand = class extends BaseCommandGroup {
|
|
|
4055
4064
|
const prompt = joinTextArgs(ctx.args);
|
|
4056
4065
|
if (!prompt) return fail(1, "\u8BF7\u8F93\u5165\u751F\u56FE\u63D0\u793A\u8BCD", { stage: "input" });
|
|
4057
4066
|
const options = ctx.options;
|
|
4067
|
+
if (options.aspectRatio && !IMAGE_ASPECT_RATIOS.includes(options.aspectRatio)) {
|
|
4068
|
+
return fail(1, `--aspect-ratio \u5FC5\u987B\u662F ${IMAGE_ASPECT_RATIOS.join("\u3001")} \u4E4B\u4E00`, { stage: "input" });
|
|
4069
|
+
}
|
|
4058
4070
|
const validation = validateImageWaitOptions(options.timeoutSeconds, options.output);
|
|
4059
4071
|
if (!validation.ok) return validation;
|
|
4060
4072
|
const outputPath = options.output === void 0 ? void 0 : path10.resolve(options.output.trim());
|
|
@@ -4071,7 +4083,6 @@ var AiImageCommand = class extends BaseCommandGroup {
|
|
|
4071
4083
|
prompt,
|
|
4072
4084
|
imagePaths: options.images,
|
|
4073
4085
|
aspectRatio: options.aspectRatio,
|
|
4074
|
-
resolution: options.resolution,
|
|
4075
4086
|
modelId: options.modelId,
|
|
4076
4087
|
effort: options.effort
|
|
4077
4088
|
});
|
|
@@ -8621,4 +8632,4 @@ export {
|
|
|
8621
8632
|
ToolCommand,
|
|
8622
8633
|
createRootCommands
|
|
8623
8634
|
};
|
|
8624
|
-
//# sourceMappingURL=chunk-
|
|
8635
|
+
//# sourceMappingURL=chunk-JGSGP4UR.js.map
|