maoda-commander-tt 0.0.53 → 0.0.54

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 CHANGED
@@ -319,9 +319,9 @@ tt sc w2
319
319
  `wait` 等待已有任务,`--output` 隐含 `--wait`。生成是否成功以 `data.state` 为准,
320
320
  不能只看查询命令的 `code=0`;超时返回 `data.timedOut=true`,不会取消生成。
321
321
 
322
- `ai image` 根据 cross-app settings 的 `imagegen.source` 选择实现:值精确为 `xyq`
323
- (忽略大小写和首尾空格)时,通过 XYQ HTTP 提交;未配置、其他值或读取失败时继续
324
- 使用原来的本地 Codex 后台任务。两种实现都返回 `taskId`、当前 `state` 和
322
+ `ai image` 根据 cross-app settings 的 `imagegen.source` 选择实现:未配置、为空或值为
323
+ `xyq`(忽略大小写和首尾空格)时,通过 XYQ HTTP 提交;显式配置其他值时使用
324
+ 原来的本地 Codex 后台任务。两种实现都返回 `taskId`、当前 `state` 和
325
325
  `nextCommand`。图片 ID 分别为 `xyq-image:<threadId>` 和 `local-image:<uuid>`;
326
326
  后续 `status` / `wait` 根据 ID 前缀回到原 provider,不受配置后来切换影响。
327
327
 
@@ -346,7 +346,8 @@ tt ai image list
346
346
  ```
347
347
 
348
348
  等待默认 360 秒,上限 600 秒。本地实现完成时会返回 `outputs[].localPath`;
349
- XYQ 的 `status` / `--wait` 会在 `outputs[]` 返回
349
+ XYQ 优先使用 artifact 的 `image.url` 无水印原图,缺失时才回退到 `scene_urls`。
350
+ `status` / `--wait` 会在 `outputs[]` 返回
350
351
  `downloadUrl`、`assetId`、`pippitAssetId` 和尺寸等槽位元数据。
351
352
  使用 `--output` 会把 XYQ 产物下载到本地,并用 `localPath` 取代 `downloadUrl`;再次
352
353
  `wait --output` 只下载或复制已有产物。
@@ -1353,6 +1353,7 @@ function sleep(delayMs) {
1353
1353
  var XYQ_ORIGIN = "https://xyq.jianying.com";
1354
1354
  var XYQ_SESSION_COOKIE_NAME = "sessionid_pippitcn_web";
1355
1355
  var SEEDANCE_PPE_CONFIG_KEY = "seedance.ppe";
1356
+ var SEEDANCE_DEFAULT_PPE = "ppe_wyfree";
1356
1357
  var XYQ_TASK_ID_PREFIX = "xyq:";
1357
1358
  var XYQ_IMAGE_TASK_ID_PREFIX = "xyq-image:";
1358
1359
  var XYQ_VIDEO_MODEL_ID_MAP = {
@@ -2052,7 +2053,10 @@ var XyqSession = class {
2052
2053
  }
2053
2054
  async _readSubmitPpeHeaders() {
2054
2055
  if (!this._settingsReader) {
2055
- return ok7({});
2056
+ return ok7({
2057
+ "x-tt-env": SEEDANCE_DEFAULT_PPE,
2058
+ "x-use-ppe": "1"
2059
+ });
2056
2060
  }
2057
2061
  const settingResult = await this._settingsReader.getString(
2058
2062
  SEEDANCE_PPE_CONFIG_KEY
@@ -2063,12 +2067,11 @@ var XyqSession = class {
2063
2067
  `\u8BFB\u53D6 Seedance PPE \u8BBE\u7F6E\u5931\u8D25: ${settingResult.msg}`
2064
2068
  );
2065
2069
  }
2066
- const ppe = normalizeString2(settingResult.value);
2067
- const headers = ppe ? {
2070
+ const ppe = normalizeString2(settingResult.value) ?? SEEDANCE_DEFAULT_PPE;
2071
+ return ok7({
2068
2072
  "x-tt-env": ppe,
2069
2073
  "x-use-ppe": "1"
2070
- } : {};
2071
- return ok7(headers);
2074
+ });
2072
2075
  }
2073
2076
  };
2074
2077
  function normalizeImageInput(input) {
@@ -2480,7 +2483,7 @@ function collectExplicitImage(value, inheritedPippitAssetId, results, depth) {
2480
2483
  }
2481
2484
  if (!isRecord2(value)) return;
2482
2485
  const sceneUrls = isRecord2(value.scene_urls) ? value.scene_urls : isRecord2(value.sceneUrls) ? value.sceneUrls : {};
2483
- const downloadUrl = normalizeString2(sceneUrls.download) ?? normalizeString2(sceneUrls.share_without_watermark ?? sceneUrls.shareWithoutWatermark) ?? normalizeString2(value.download_url ?? value.downloadUrl) ?? normalizeString2(value.url);
2486
+ const downloadUrl = normalizeString2(value.url) ?? normalizeString2(sceneUrls.origin_url ?? sceneUrls.originUrl) ?? normalizeString2(sceneUrls.share_without_watermark ?? sceneUrls.shareWithoutWatermark) ?? normalizeString2(sceneUrls.download) ?? normalizeString2(value.download_url ?? value.downloadUrl) ?? normalizeString2(sceneUrls.preview_high ?? sceneUrls.previewHigh);
2484
2487
  if (!downloadUrl) return;
2485
2488
  const metadata = parseJsonRecord(value.metadata) ?? {};
2486
2489
  const assetId = normalizeString2(value.asset_id ?? value.assetId);
@@ -3827,7 +3830,8 @@ var RoutedImageTaskService = class {
3827
3830
  }
3828
3831
  async submit(input) {
3829
3832
  const source = await this._settingsReader.getString(IMAGE_GENERATION_SOURCE_SETTING_KEY);
3830
- const useXyq = source.ok && source.value?.trim().toLowerCase() === "xyq";
3833
+ const configuredSource = source.ok ? source.value?.trim().toLowerCase() : void 0;
3834
+ const useXyq = configuredSource === void 0 || configuredSource === "" || configuredSource === "xyq";
3831
3835
  const result = await (useXyq ? this._xyqService : this._localService).submit(input);
3832
3836
  return result.ok ? result : withFailureSource(result, useXyq ? "xyq" : "local");
3833
3837
  }
@@ -3935,7 +3939,7 @@ var AiImageStatusCommand = class extends BaseCommand {
3935
3939
  return [
3936
3940
  "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",
3937
3941
  "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",
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",
3942
+ "outputs \u65E0\u53EF\u7528\u56FE\u7247\u65F6\u4E3A []\uFF1B\u672C\u5730\u4EA7\u7269\u542B localPath\uFF0CXYQ \u4F18\u5148\u8FD4\u56DE\u65E0\u6C34\u5370\u539F\u56FE\u7684 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",
3939
3943
  "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",
3940
3944
  "nextCommand \u5728 submitted/working \u65F6\u4E3A wait \u547D\u4EE4\uFF0Cunknown \u65F6\u4E3A status \u547D\u4EE4\uFF0Ccompleted/failed \u65F6\u7701\u7565\u3002",
3941
3945
  '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"}]}',
@@ -4013,7 +4017,7 @@ var AiImageCommand = class extends BaseCommandGroup {
4013
4017
  _meta() {
4014
4018
  return {
4015
4019
  name: "image",
4016
- description: "\u63D0\u4EA4\u56FE\u7247\u751F\u6210\u4EFB\u52A1\uFF1Bimagegen.source=xyq \u65F6\u8D70 XYQ\uFF0C\u5426\u5219\u8D70\u672C\u5730\u5B9E\u73B0",
4020
+ description: "\u63D0\u4EA4\u56FE\u7247\u751F\u6210\u4EFB\u52A1\uFF1B\u9ED8\u8BA4\u8D70 XYQ\uFF0C\u53EF\u7528 imagegen.source \u5207\u6362\u5B9E\u73B0",
4017
4021
  output: "json"
4018
4022
  };
4019
4023
  }
@@ -4045,12 +4049,12 @@ var AiImageCommand = class extends BaseCommandGroup {
4045
4049
  _agentContract() {
4046
4050
  return [
4047
4051
  "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",
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",
4052
+ "imagegen.source \u672A\u914D\u7F6E\u3001\u4E3A\u7A7A\u6216\u4E3A xyq\uFF08\u5FFD\u7565\u5927\u5C0F\u5199\u4E0E\u9996\u5C3E\u7A7A\u683C\uFF09\u65F6\u8D70 XYQ HTTP\uFF1B\u663E\u5F0F\u914D\u7F6E\u5176\u4ED6\u503C\u65F6\u8D70\u672C\u5730\u5B9E\u73B0\u3002taskId \u4E3A local-image:<uuid> \u6216 xyq-image:<threadId>\u3002",
4049
4053
  "\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
4054
  "\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
4055
  `--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`,
4052
4056
  "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",
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",
4057
+ "outputs \u65E0\u53EF\u7528\u56FE\u7247\u65F6\u4E3A []\uFF1BXYQ \u4F18\u5148\u8FD4\u56DE\u65E0\u6C34\u5370\u539F\u56FE\u3002\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",
4054
4058
  "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",
4055
4059
  "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",
4056
4060
  "\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",
@@ -5157,6 +5161,7 @@ var AiVideoCommand = class extends BaseCommandGroup {
5157
5161
  return [
5158
5162
  "\u9ED8\u8BA4: \u751F\u6210\u8FC7\u7A0B\u5F02\u6B65\uFF0C\u4F46\u672C\u547D\u4EE4\u4F1A\u540C\u6B65\u5B8C\u6210\u4F1A\u8BDD\u521D\u59CB\u5316\u3001\u53C2\u8003\u7D20\u6750\u4E0A\u4F20\u548C\u8FDC\u7AEF\u4EFB\u52A1\u521B\u5EFA\uFF0C\u4E4B\u540E\u624D\u8FD4\u56DE taskId\u3002",
5159
5163
  "\u89C6\u9891 taskId \u76F4\u63A5\u4F7F\u7528\u540E\u7AEF threadId\u3002",
5164
+ "XYQ \u63D0\u4EA4\u8BFB\u53D6 seedance.ppe\uFF1B\u672A\u914D\u7F6E\u6216\u4E3A\u7A7A\u65F6\u9ED8\u8BA4\u4F7F\u7528 ppe_wyfree\u3002",
5160
5165
  '\u63D0\u4EA4 data \u5B57\u6BB5\uFF08? \u8868\u793A\u53EF\u9009\uFF09\uFF1A{taskId:string,state:"submitted",nextCommand:string,estimatedWaitSeconds?:number,appliedParameters?:object,adjustments?:object[]}\uFF1B\u6B64\u65F6\u6CA1\u6709 outputs \u5B57\u6BB5\u3002',
5161
5166
  '\u63D0\u4EA4 data \u793A\u4F8B\uFF08\u7701\u7565\u53EF\u9009\u5B57\u6BB5\uFF09\uFF1A{"taskId":"thread-id","state":"submitted","nextCommand":"tt ai video wait --task-id thread-id"}',
5162
5167
  "estimatedWaitSeconds \u662F\u9884\u8BA1\u751F\u6210\u79D2\u6570\uFF1BappliedParameters \u662F\u5B9E\u9645\u751F\u6548\u53C2\u6570\uFF1Badjustments \u662F\u53C2\u6570\u9ED8\u8BA4\u503C\u6216\u8C03\u6574\u8BF4\u660E\uFF0C\u4EC5\u975E\u7A7A\u65F6\u8FD4\u56DE\u3002",
@@ -8632,4 +8637,4 @@ export {
8632
8637
  ToolCommand,
8633
8638
  createRootCommands
8634
8639
  };
8635
- //# sourceMappingURL=chunk-JGSGP4UR.js.map
8640
+ //# sourceMappingURL=chunk-G43DMZTY.js.map