maoda-commander-tt 0.0.69 → 0.0.71

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.
@@ -608,7 +608,7 @@ function createAgentProgressReporter(options) {
608
608
  // src/commands/ai/ai-audio-command.ts
609
609
  import { resolve as resolve5 } from "node:path";
610
610
  import { Option as Option3 } from "commander";
611
- import { ok as ok26 } from "rockbed/error";
611
+ import { ok as ok27 } from "rockbed/error";
612
612
 
613
613
  // src/bedrock/cross-app-settings/file-cross-app-settings-writer.ts
614
614
  import { randomUUID } from "node:crypto";
@@ -2418,11 +2418,11 @@ function parseJimengAudioTaskId(taskId) {
2418
2418
 
2419
2419
  // src/modules/audio-generation/xyq-audio-generation-provider.ts
2420
2420
  import { Disposable as Disposable10 } from "rockbed/dispose";
2421
- import { err as err18, ok as ok23 } from "rockbed/error";
2421
+ import { err as err18, ok as ok24 } from "rockbed/error";
2422
2422
 
2423
2423
  // src/modules/xyq/xyq-client.ts
2424
2424
  import { createHash as createHash2 } from "node:crypto";
2425
- import { ok as ok21 } from "rockbed/error";
2425
+ import { ok as ok22 } from "rockbed/error";
2426
2426
 
2427
2427
  // src/modules/xyq/xyq-auth.ts
2428
2428
  import { ok as ok17 } from "rockbed/error";
@@ -2711,7 +2711,7 @@ function isRecord8(value) {
2711
2711
  // src/modules/xyq/xyq-session.ts
2712
2712
  import * as fs6 from "node:fs/promises";
2713
2713
  import { createHash, randomUUID as randomUUID8 } from "node:crypto";
2714
- import { ok as ok20 } from "rockbed/error";
2714
+ import { ok as ok21 } from "rockbed/error";
2715
2715
 
2716
2716
  // src/modules/xyq/xyq-asset-cache.ts
2717
2717
  import { randomUUID as randomUUID7 } from "node:crypto";
@@ -3062,6 +3062,172 @@ async function readXyqGenerationPpeHeaders(settingsReader) {
3062
3062
  });
3063
3063
  }
3064
3064
 
3065
+ // src/modules/xyq/xyq-asset-results.ts
3066
+ import { ok as ok20 } from "rockbed/error";
3067
+ function collectXyqAssetReferences(value, kind) {
3068
+ const references = /* @__PURE__ */ new Map();
3069
+ collect(value, kind, void 0, references, 0);
3070
+ return [...references.values()];
3071
+ }
3072
+ async function resolveXyqAssetArtifacts(input) {
3073
+ const { kind } = input;
3074
+ const label = kind === "image" ? "\u56FE\u7247" : "\u89C6\u9891";
3075
+ const originalLabel = kind === "image" ? "\u65E0\u6C34\u5370\u539F\u56FE" : "\u65E0\u6C34\u5370\u89C6\u9891";
3076
+ const references = input.artifacts.flatMap((artifact) => artifact.references);
3077
+ if (references.length === 0) {
3078
+ return ok20(input.artifacts.map((artifact) => ({ raw: artifact.raw, outputs: [] })));
3079
+ }
3080
+ if (references.some((reference) => !reference.pippitAssetId)) {
3081
+ return invalidResult(kind, `XYQ ${label}\u751F\u6210\u7ED3\u679C\u7F3A\u5C11 pippit_asset_id\uFF0C\u65E0\u6CD5\u67E5\u8BE2${originalLabel}`);
3082
+ }
3083
+ const pippitAssetIds = [...new Set(references.map((reference) => reference.pippitAssetId))];
3084
+ const response = await requestXyqJson(
3085
+ input.fetcher,
3086
+ `${XYQ_ORIGIN}/api/biz/v1/asset/query`,
3087
+ {
3088
+ method: "POST",
3089
+ headers: { ...input.headers, "content-type": "application/json" },
3090
+ body: JSON.stringify({ Base: { Client: "web" }, pippit_asset_ids: pippitAssetIds })
3091
+ },
3092
+ {
3093
+ requestFailedCode: kind === "image" ? XyqErrorCode.ImageQueryRequestFailed : XyqErrorCode.VideoQueryRequestFailed,
3094
+ responseInvalidCode: kind === "image" ? XyqErrorCode.ImageQueryResponseInvalid : XyqErrorCode.VideoQueryResponseInvalid,
3095
+ operation: `\u67E5\u8BE2 XYQ ${originalLabel}`
3096
+ }
3097
+ );
3098
+ if (!response.ok) return response;
3099
+ const data = isRecord7(response.value.data) ? response.value.data : {};
3100
+ if (!Array.isArray(data.Assets)) {
3101
+ return invalidResult(kind, `XYQ ${label}\u8D44\u4EA7\u54CD\u5E94\u7F3A\u5C11 Assets\uFF0C\u65E0\u6CD5\u83B7\u53D6${originalLabel}`);
3102
+ }
3103
+ const urls = /* @__PURE__ */ new Map();
3104
+ for (const asset of data.Assets) {
3105
+ if (!isRecord7(asset) || asset.AssetType !== (kind === "image" ? 1 : 2)) continue;
3106
+ const id = normalize(asset.PippitAssetID);
3107
+ if (!id || !pippitAssetIds.includes(id)) continue;
3108
+ const media = asset[kind === "image" ? "Image" : "Video"];
3109
+ const url = isRecord7(media) ? originalUrl(kind, media) : void 0;
3110
+ if (url) urls.set(id, url);
3111
+ }
3112
+ const missingId = pippitAssetIds.find((id) => !urls.has(id));
3113
+ if (missingId) {
3114
+ return invalidResult(kind, `XYQ ${label}\u8D44\u4EA7 ${missingId} \u7F3A\u5C11${originalLabel}\u5730\u5740`);
3115
+ }
3116
+ return ok20(input.artifacts.map((artifact) => ({
3117
+ raw: artifact.raw,
3118
+ outputs: artifact.references.map((reference) => ({
3119
+ ...reference,
3120
+ downloadUrl: urls.get(reference.pippitAssetId)
3121
+ }))
3122
+ })));
3123
+ }
3124
+ function collect(value, kind, inheritedId, references, depth) {
3125
+ if (depth > 10) return;
3126
+ if (typeof value === "string") {
3127
+ const parsed = parseValue(value);
3128
+ if (parsed !== void 0) collect(parsed, kind, inheritedId, references, depth + 1);
3129
+ return;
3130
+ }
3131
+ if (Array.isArray(value)) {
3132
+ for (const child of value) collect(child, kind, inheritedId, references, depth + 1);
3133
+ return;
3134
+ }
3135
+ if (!isRecord7(value)) return;
3136
+ const pippitAssetId = normalize(value.pippit_asset_id ?? value.pippitAssetId) ?? inheritedId;
3137
+ for (const [key, child] of Object.entries(value)) {
3138
+ if (key === kind || key === `${kind}s`) {
3139
+ collectExplicit(child, kind, pippitAssetId, references, depth + 1);
3140
+ }
3141
+ collect(child, kind, pippitAssetId, references, depth + 1);
3142
+ }
3143
+ }
3144
+ function collectExplicit(value, kind, inheritedId, references, depth) {
3145
+ if (depth > 10) return;
3146
+ if (typeof value === "string") {
3147
+ const parsed = parseValue(value);
3148
+ if (parsed !== void 0) collectExplicit(parsed, kind, inheritedId, references, depth + 1);
3149
+ return;
3150
+ }
3151
+ if (Array.isArray(value)) {
3152
+ for (const child of value) collectExplicit(child, kind, inheritedId, references, depth + 1);
3153
+ return;
3154
+ }
3155
+ if (!isRecord7(value)) return;
3156
+ const metadata = parseRecord(value.metadata) ?? {};
3157
+ const assetId = normalize(value.asset_id ?? value.assetId);
3158
+ const pippitAssetId = normalize(value.pippit_asset_id ?? value.pippitAssetId) ?? inheritedId;
3159
+ const agentUrl = normalize(value.url ?? value.download_url ?? value.downloadUrl);
3160
+ const sceneUrls = parseRecord(value.scene_urls ?? value.sceneUrls);
3161
+ if (!assetId && !pippitAssetId && !agentUrl && !sceneUrls) return;
3162
+ const width = number(metadata.width ?? value.width);
3163
+ const height = number(metadata.height ?? value.height);
3164
+ const name = kind === "image" ? normalize(value.name) : void 0;
3165
+ const extra = parseRecord(value.extra) ?? {};
3166
+ const durationMs = kind === "video" ? number(metadata.duration_ms ?? value.duration_ms ?? extra.ark_video_duration_ms) : void 0;
3167
+ const reference = {
3168
+ ...assetId ? { assetId } : {},
3169
+ ...pippitAssetId ? { pippitAssetId } : {},
3170
+ ...width !== void 0 ? { width } : {},
3171
+ ...height !== void 0 ? { height } : {},
3172
+ ...name ? { name } : {},
3173
+ ...durationMs !== void 0 ? { durationMs } : {}
3174
+ };
3175
+ const identity = assetId ? `asset:${assetId}` : pippitAssetId ? `pippit:${pippitAssetId}` : `${kind}:${references.size}`;
3176
+ const existing = references.get(identity);
3177
+ if (kind === "image" || !existing || qualityScore(reference) > qualityScore(existing)) {
3178
+ references.set(identity, reference);
3179
+ }
3180
+ }
3181
+ function qualityScore(reference) {
3182
+ return (reference.width ?? 0) * (reference.height ?? 0);
3183
+ }
3184
+ function originalUrl(kind, media) {
3185
+ if (kind === "video") {
3186
+ const noWatermark = isRecord7(media.no_watermark_video_url) ? media.no_watermark_video_url : {};
3187
+ return httpUrl(normalize(media.origin_url) ?? noWatermark.download_url);
3188
+ }
3189
+ const preview = isRecord7(media.not_watermark_preview) ? media.not_watermark_preview : {};
3190
+ const original = isRecord7(preview.previewinfo) ? preview.previewinfo : {};
3191
+ return httpUrl(original.preview_url);
3192
+ }
3193
+ function invalidResult(kind, message) {
3194
+ return xyqError(
3195
+ kind === "image" ? XyqErrorCode.ImageQueryResponseInvalid : XyqErrorCode.VideoQueryResponseInvalid,
3196
+ message
3197
+ );
3198
+ }
3199
+ function httpUrl(value) {
3200
+ const normalized = typeof value === "string" ? value.trim() : "";
3201
+ try {
3202
+ const url = new URL(normalized);
3203
+ return url.protocol === "https:" || url.protocol === "http:" ? normalized : void 0;
3204
+ } catch {
3205
+ return void 0;
3206
+ }
3207
+ }
3208
+ function normalize(value) {
3209
+ if (typeof value !== "string" && typeof value !== "number") return void 0;
3210
+ return String(value).trim() || void 0;
3211
+ }
3212
+ function number(value) {
3213
+ if (value === void 0 || value === null || value === "") return void 0;
3214
+ const parsed = Number(value);
3215
+ return Number.isFinite(parsed) ? parsed : void 0;
3216
+ }
3217
+ function parseRecord(value) {
3218
+ const parsed = typeof value === "string" ? parseValue(value) : value;
3219
+ return isRecord7(parsed) ? parsed : void 0;
3220
+ }
3221
+ function parseValue(value) {
3222
+ const text = value.trim();
3223
+ if (!text.startsWith("{") && !text.startsWith("[")) return void 0;
3224
+ try {
3225
+ return JSON.parse(text);
3226
+ } catch {
3227
+ return void 0;
3228
+ }
3229
+ }
3230
+
3065
3231
  // src/modules/xyq/xyq-session.ts
3066
3232
  var ASSET_TYPE = {
3067
3233
  video: "1",
@@ -3141,7 +3307,7 @@ var XyqSession = class {
3141
3307
  }
3142
3308
  );
3143
3309
  if (!responseResult.ok) return responseResult;
3144
- return ok20({
3310
+ return ok21({
3145
3311
  taskId: `${XYQ_IMAGE_TASK_ID_PREFIX}${threadId}`,
3146
3312
  threadId,
3147
3313
  clientRunId,
@@ -3191,10 +3357,20 @@ var XyqSession = class {
3191
3357
  const runRecord = isRecord7(run) ? run : {};
3192
3358
  const serverRunId = normalizeString2(runRecord.run_id);
3193
3359
  const entryList = Array.isArray(runRecord.entry_list) ? runRecord.entry_list : [];
3194
- const artifacts = entryList.map(extractImageArtifact).filter((artifact) => artifact !== void 0);
3195
- const providerState = mapXyqRunState(toNumber(runRecord.state));
3196
- const state = hasUsableImageOutput(artifacts) ? "completed" : providerState;
3197
- return ok20({
3360
+ const state = mapXyqRunState(toNumber(runRecord.state));
3361
+ const artifactReferences = entryList.map((entry) => extractAssetArtifact(entry, "image", state === "completed")).filter((artifact) => artifact !== void 0);
3362
+ const artifactsResult = await resolveXyqAssetArtifacts({
3363
+ fetcher: this._fetcher,
3364
+ headers: { ...this._headers(), ...ppeHeadersResult.value },
3365
+ kind: "image",
3366
+ artifacts: artifactReferences
3367
+ });
3368
+ if (!artifactsResult.ok) return artifactsResult;
3369
+ const artifacts = artifactsResult.value.map((artifact) => ({
3370
+ images: artifact.outputs,
3371
+ raw: artifact.raw
3372
+ }));
3373
+ return ok21({
3198
3374
  taskId: `${XYQ_IMAGE_TASK_ID_PREFIX}${threadId}`,
3199
3375
  threadId,
3200
3376
  ...serverRunId ? { runId: serverRunId } : {},
@@ -3217,10 +3393,10 @@ var XyqSession = class {
3217
3393
  const result = await this.queryImage(input);
3218
3394
  if (!result.ok) return result;
3219
3395
  if (isTerminalXyqTaskState(result.value.state)) {
3220
- return ok20({ ...result.value, timedOut: false });
3396
+ return ok21({ ...result.value, timedOut: false });
3221
3397
  }
3222
3398
  const remainingMs = deadline - this._now();
3223
- if (remainingMs <= 0) return ok20({ ...result.value, timedOut: true });
3399
+ if (remainingMs <= 0) return ok21({ ...result.value, timedOut: true });
3224
3400
  try {
3225
3401
  await this._sleep(Math.min(result.value.retryAfterSeconds * 1e3, remainingMs), input.signal);
3226
3402
  } catch (caughtError) {
@@ -3268,7 +3444,7 @@ var XyqSession = class {
3268
3444
  "\u521B\u5EFA XYQ \u56FE\u7247\u753B\u5E03\u9879\u76EE\u6210\u529F\uFF0C\u4F46\u54CD\u5E94\u7F3A\u5C11 project_id \u6216 canvas_asset_id"
3269
3445
  );
3270
3446
  }
3271
- return ok20({ projectId, canvasAssetId });
3447
+ return ok21({ projectId, canvasAssetId });
3272
3448
  }
3273
3449
  async submitAudio(input) {
3274
3450
  const prompt = input.prompt.trim();
@@ -3329,7 +3505,7 @@ var XyqSession = class {
3329
3505
  if (!responseResult.ok) {
3330
3506
  return responseResult;
3331
3507
  }
3332
- return ok20({
3508
+ return ok21({
3333
3509
  taskId: createXyqTaskId(threadId),
3334
3510
  threadId,
3335
3511
  clientRunId,
@@ -3388,7 +3564,7 @@ var XyqSession = class {
3388
3564
  const providerState = mapXyqRunState(toNumber(runRecord.state));
3389
3565
  const state = hasUsableAudioOutput(artifacts) ? "completed" : providerState;
3390
3566
  const retryAfterSeconds = isTerminalXyqTaskState(state) ? 0 : 2;
3391
- return ok20({
3567
+ return ok21({
3392
3568
  taskId: createXyqTaskId(threadId),
3393
3569
  threadId,
3394
3570
  ...serverRunId ? { runId: serverRunId } : {},
@@ -3419,11 +3595,11 @@ var XyqSession = class {
3419
3595
  return result;
3420
3596
  }
3421
3597
  if (isTerminalXyqTaskState(result.value.state)) {
3422
- return ok20({ ...result.value, timedOut: false });
3598
+ return ok21({ ...result.value, timedOut: false });
3423
3599
  }
3424
3600
  const remainingMs = deadline - this._now();
3425
3601
  if (remainingMs <= 0) {
3426
- return ok20({ ...result.value, timedOut: true });
3602
+ return ok21({ ...result.value, timedOut: true });
3427
3603
  }
3428
3604
  try {
3429
3605
  await this._sleep(
@@ -3491,7 +3667,7 @@ var XyqSession = class {
3491
3667
  if (!responseResult.ok) {
3492
3668
  return responseResult;
3493
3669
  }
3494
- return ok20({
3670
+ return ok21({
3495
3671
  taskId: threadId,
3496
3672
  threadId,
3497
3673
  clientRunId,
@@ -3546,11 +3722,21 @@ var XyqSession = class {
3546
3722
  const runRecord = isRecord7(run) ? run : {};
3547
3723
  const serverRunId = normalizeString2(runRecord.run_id);
3548
3724
  const entryList = Array.isArray(runRecord.entry_list) ? runRecord.entry_list : [];
3549
- const artifacts = entryList.map(extractVideoArtifact).filter((artifact) => artifact !== void 0);
3550
- const providerState = mapXyqRunState(toNumber(runRecord.state));
3551
- const state = hasUsableVideoOutput(artifacts) ? "completed" : providerState;
3725
+ const state = mapXyqRunState(toNumber(runRecord.state));
3726
+ const artifactReferences = entryList.map((entry) => extractAssetArtifact(entry, "video", state === "completed")).filter((artifact) => artifact !== void 0);
3727
+ const artifactsResult = await resolveXyqAssetArtifacts({
3728
+ fetcher: this._fetcher,
3729
+ headers: { ...this._headers(), ...ppeHeadersResult.value },
3730
+ kind: "video",
3731
+ artifacts: artifactReferences
3732
+ });
3733
+ if (!artifactsResult.ok) return artifactsResult;
3734
+ const artifacts = artifactsResult.value.map((artifact) => ({
3735
+ videos: artifact.outputs,
3736
+ raw: artifact.raw
3737
+ }));
3552
3738
  const retryAfterSeconds = isTerminalXyqTaskState(state) ? 0 : VIDEO_POLL_INTERVAL_SECONDS;
3553
- return ok20({
3739
+ return ok21({
3554
3740
  taskId: threadId,
3555
3741
  threadId,
3556
3742
  ...serverRunId ? { runId: serverRunId } : {},
@@ -3582,11 +3768,11 @@ var XyqSession = class {
3582
3768
  return result;
3583
3769
  }
3584
3770
  if (isTerminalXyqTaskState(result.value.state)) {
3585
- return ok20({ ...result.value, timedOut: false });
3771
+ return ok21({ ...result.value, timedOut: false });
3586
3772
  }
3587
3773
  const remainingMs = deadline - this._now();
3588
3774
  if (remainingMs <= 0) {
3589
- return ok20({ ...result.value, timedOut: true });
3775
+ return ok21({ ...result.value, timedOut: true });
3590
3776
  }
3591
3777
  try {
3592
3778
  await this._sleep(
@@ -3638,7 +3824,7 @@ var XyqSession = class {
3638
3824
  if (!result.ok) {
3639
3825
  return result;
3640
3826
  }
3641
- return ok20({
3827
+ return ok21({
3642
3828
  ...result.value,
3643
3829
  metadata: {
3644
3830
  ...result.value.metadata,
@@ -3724,7 +3910,7 @@ var XyqSession = class {
3724
3910
  ...uploadData,
3725
3911
  ...preview
3726
3912
  });
3727
- return ok20({
3913
+ return ok21({
3728
3914
  ...camelizedAsset,
3729
3915
  assetId,
3730
3916
  pippitAssetId,
@@ -3772,7 +3958,7 @@ function normalizeImageInput(input) {
3772
3958
  }
3773
3959
  pippitAssetIds.push(id);
3774
3960
  }
3775
- return ok20({
3961
+ return ok21({
3776
3962
  prompt,
3777
3963
  pippitAssetIds,
3778
3964
  imageCount,
@@ -3963,7 +4149,7 @@ function normalizeVideoPartInput(input) {
3963
4149
  if (!audiosResult.ok) {
3964
4150
  return audiosResult;
3965
4151
  }
3966
- return ok20({
4152
+ return ok21({
3967
4153
  prompt,
3968
4154
  images: imagesResult.value,
3969
4155
  videos: videosResult.value,
@@ -3987,7 +4173,7 @@ function normalizeVideoAssetReferences(assets, label) {
3987
4173
  }
3988
4174
  normalized.push({ asset_id: assetId, pippit_asset_id: pippitAssetId });
3989
4175
  }
3990
- return ok20(normalized);
4176
+ return ok21(normalized);
3991
4177
  }
3992
4178
  function buildVideoPartRunExtra(clientRunId, messageId) {
3993
4179
  return {
@@ -4083,12 +4269,6 @@ function mapXyqRunState(stateCode) {
4083
4269
  function isTerminalXyqTaskState(state) {
4084
4270
  return ["completed", "failed", "canceled", "inputRequired"].includes(state);
4085
4271
  }
4086
- function hasUsableVideoOutput(artifacts) {
4087
- return artifacts.some((artifact) => artifact.videos.length > 0);
4088
- }
4089
- function hasUsableImageOutput(artifacts) {
4090
- return artifacts.some((artifact) => artifact.images.length > 0);
4091
- }
4092
4272
  function hasUsableAudioOutput(artifacts) {
4093
4273
  return artifacts.some((artifact) => artifact.audios.length > 0);
4094
4274
  }
@@ -4105,78 +4285,14 @@ function extractAudioArtifact(entry) {
4105
4285
  raw: camelizeValue(artifact)
4106
4286
  };
4107
4287
  }
4108
- function extractVideoArtifact(entry) {
4109
- if (!isRecord7(entry)) {
4110
- return void 0;
4111
- }
4112
- const artifact = parseJsonRecord(entry.artifact);
4113
- if (!artifact) {
4114
- return void 0;
4115
- }
4116
- return {
4117
- videos: deepCollectVideoOutputs(artifact),
4118
- raw: camelizeValue(artifact)
4119
- };
4120
- }
4121
- function extractImageArtifact(entry) {
4288
+ function extractAssetArtifact(entry, kind, completed) {
4122
4289
  if (!isRecord7(entry)) return void 0;
4123
4290
  const artifact = parseJsonRecord(entry.artifact);
4124
4291
  if (!artifact) return void 0;
4125
- return { images: deepCollectImageOutputs(artifact), raw: camelizeValue(artifact) };
4126
- }
4127
- function deepCollectImageOutputs(value) {
4128
- const results = /* @__PURE__ */ new Map();
4129
- collectImageOutputs(value, void 0, results, 0);
4130
- return [...results.values()];
4131
- }
4132
- function collectImageOutputs(value, inheritedPippitAssetId, results, depth) {
4133
- if (depth > 10) return;
4134
- if (typeof value === "string") {
4135
- const parsed = parseJsonValue(value);
4136
- if (parsed !== void 0) collectImageOutputs(parsed, inheritedPippitAssetId, results, depth + 1);
4137
- return;
4138
- }
4139
- if (Array.isArray(value)) {
4140
- for (const item of value) collectImageOutputs(item, inheritedPippitAssetId, results, depth + 1);
4141
- return;
4142
- }
4143
- if (!isRecord7(value)) return;
4144
- const pippitAssetId = normalizeString2(value.pippit_asset_id ?? value.pippitAssetId) ?? inheritedPippitAssetId;
4145
- for (const [key, child] of Object.entries(value)) {
4146
- if (key === "image" || key === "images") {
4147
- collectExplicitImage(child, pippitAssetId, results, depth + 1);
4148
- }
4149
- collectImageOutputs(child, pippitAssetId, results, depth + 1);
4150
- }
4151
- }
4152
- function collectExplicitImage(value, inheritedPippitAssetId, results, depth) {
4153
- if (depth > 10) return;
4154
- if (typeof value === "string") {
4155
- const parsed = parseJsonValue(value);
4156
- if (parsed !== void 0) collectExplicitImage(parsed, inheritedPippitAssetId, results, depth + 1);
4157
- return;
4158
- }
4159
- if (Array.isArray(value)) {
4160
- for (const item of value) collectExplicitImage(item, inheritedPippitAssetId, results, depth + 1);
4161
- return;
4162
- }
4163
- if (!isRecord7(value)) return;
4164
- const sceneUrls = isRecord7(value.scene_urls) ? value.scene_urls : isRecord7(value.sceneUrls) ? value.sceneUrls : {};
4165
- 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);
4166
- if (!downloadUrl) return;
4167
- const metadata = parseJsonRecord(value.metadata) ?? {};
4168
- const assetId = normalizeString2(value.asset_id ?? value.assetId);
4169
- const pippitAssetId = normalizeString2(value.pippit_asset_id ?? value.pippitAssetId) ?? inheritedPippitAssetId;
4170
- const output = {
4171
- downloadUrl,
4172
- ...assetId ? { assetId } : {},
4173
- ...pippitAssetId ? { pippitAssetId } : {},
4174
- ...toNumber(metadata.width ?? value.width) !== void 0 ? { width: toNumber(metadata.width ?? value.width) } : {},
4175
- ...toNumber(metadata.height ?? value.height) !== void 0 ? { height: toNumber(metadata.height ?? value.height) } : {},
4176
- ...normalizeString2(value.name) ? { name: normalizeString2(value.name) } : {}
4292
+ return {
4293
+ references: completed ? collectXyqAssetReferences(artifact, kind) : [],
4294
+ raw: camelizeValue(artifact)
4177
4295
  };
4178
- const identity = assetId ? `asset:${assetId}` : pippitAssetId ? `pippit:${pippitAssetId}` : `url:${downloadUrl}`;
4179
- results.set(identity, output);
4180
4296
  }
4181
4297
  function deepCollectAudioOutputs(value) {
4182
4298
  const results = /* @__PURE__ */ new Map();
@@ -4274,89 +4390,6 @@ function collectExplicitAudio(value, inheritedPippitAssetId, results, depth) {
4274
4390
  const identity = assetId ? `asset:${assetId}` : pippitAssetId ? `pippit:${pippitAssetId}` : `url:${downloadUrl}`;
4275
4391
  results.set(identity, output);
4276
4392
  }
4277
- function deepCollectVideoOutputs(value) {
4278
- const results = /* @__PURE__ */ new Map();
4279
- collectVideoOutputs(value, void 0, results, 0);
4280
- return [...results.values()];
4281
- }
4282
- function collectVideoOutputs(value, inheritedPippitAssetId, results, depth) {
4283
- if (depth > 10) {
4284
- return;
4285
- }
4286
- if (typeof value === "string") {
4287
- const parsed = parseJsonValue(value);
4288
- if (parsed !== void 0) {
4289
- collectVideoOutputs(parsed, inheritedPippitAssetId, results, depth + 1);
4290
- }
4291
- return;
4292
- }
4293
- if (Array.isArray(value)) {
4294
- for (const item of value) {
4295
- collectVideoOutputs(item, inheritedPippitAssetId, results, depth + 1);
4296
- }
4297
- return;
4298
- }
4299
- if (!isRecord7(value)) {
4300
- return;
4301
- }
4302
- const pippitAssetId = normalizeString2(value.pippit_asset_id) ?? inheritedPippitAssetId;
4303
- for (const [key, child] of Object.entries(value)) {
4304
- if (key === "video" || key === "videos") {
4305
- collectExplicitVideo(child, pippitAssetId, results, depth + 1);
4306
- }
4307
- collectVideoOutputs(child, pippitAssetId, results, depth + 1);
4308
- }
4309
- }
4310
- function collectExplicitVideo(value, inheritedPippitAssetId, results, depth) {
4311
- if (depth > 10) {
4312
- return;
4313
- }
4314
- if (typeof value === "string") {
4315
- const parsed = parseJsonValue(value);
4316
- if (parsed !== void 0) {
4317
- collectExplicitVideo(parsed, inheritedPippitAssetId, results, depth + 1);
4318
- }
4319
- return;
4320
- }
4321
- if (Array.isArray(value)) {
4322
- for (const item of value) {
4323
- collectExplicitVideo(item, inheritedPippitAssetId, results, depth + 1);
4324
- }
4325
- return;
4326
- }
4327
- if (!isRecord7(value)) {
4328
- return;
4329
- }
4330
- const downloadUrl = normalizeString2(value.download_url) ?? normalizeString2(value.url);
4331
- if (!downloadUrl) {
4332
- return;
4333
- }
4334
- const metadata = isRecord7(value.metadata) ? value.metadata : {};
4335
- const extra = isRecord7(value.extra) ? value.extra : {};
4336
- const assetId = normalizeString2(value.asset_id);
4337
- const pippitAssetId = normalizeString2(value.pippit_asset_id) ?? inheritedPippitAssetId;
4338
- const width = toNumber(metadata.width ?? value.width);
4339
- const height = toNumber(metadata.height ?? value.height);
4340
- const durationMs = toNumber(
4341
- metadata.duration_ms ?? value.duration_ms ?? extra.ark_video_duration_ms
4342
- );
4343
- const output = {
4344
- downloadUrl,
4345
- ...assetId ? { assetId } : {},
4346
- ...pippitAssetId ? { pippitAssetId } : {},
4347
- ...width !== void 0 ? { width } : {},
4348
- ...height !== void 0 ? { height } : {},
4349
- ...durationMs !== void 0 ? { durationMs } : {}
4350
- };
4351
- const identity = assetId ? `asset:${assetId}` : pippitAssetId ? `pippit:${pippitAssetId}` : `url:${downloadUrl}`;
4352
- const existing = results.get(identity);
4353
- if (!existing || videoQualityScore(output) > videoQualityScore(existing)) {
4354
- results.set(identity, output);
4355
- }
4356
- }
4357
- function videoQualityScore(output) {
4358
- return (output.width ?? 0) * (output.height ?? 0);
4359
- }
4360
4393
  function parseJsonRecord(value) {
4361
4394
  if (isRecord7(value)) {
4362
4395
  return value;
@@ -4481,7 +4514,7 @@ var XyqClient = class {
4481
4514
  if (!options.forceRefresh) {
4482
4515
  const session = this._sessions.get(fingerprint);
4483
4516
  if (session) {
4484
- return ok21(session);
4517
+ return ok22(session);
4485
4518
  }
4486
4519
  const pendingSession2 = this._pendingSessions.get(fingerprint);
4487
4520
  if (pendingSession2) {
@@ -4512,7 +4545,7 @@ var XyqClient = class {
4512
4545
  if (!forceRefresh) {
4513
4546
  const cached = await this._readCacheBestEffort();
4514
4547
  if (cached?.cookieFingerprint === fingerprint) {
4515
- return ok21(this._createSession(cookie, cached));
4548
+ return ok22(this._createSession(cookie, cached));
4516
4549
  }
4517
4550
  }
4518
4551
  const contextResult = await this._fetchSessionContext(cookie);
@@ -4529,7 +4562,7 @@ var XyqClient = class {
4529
4562
  if (this._activeFingerprint === fingerprint) {
4530
4563
  await this._writeCacheBestEffort(cacheRecord);
4531
4564
  }
4532
- return ok21(
4565
+ return ok22(
4533
4566
  new XyqSession(contextResult.value, this._fetcher, {
4534
4567
  settingsReader: this._settingsReader
4535
4568
  })
@@ -4582,7 +4615,7 @@ var XyqClient = class {
4582
4615
  "\u83B7\u53D6 XYQ workspace \u6210\u529F\uFF0C\u4F46\u672A\u627E\u5230 workspace_id"
4583
4616
  );
4584
4617
  }
4585
- return ok21({
4618
+ return ok22({
4586
4619
  cookies: { [XYQ_SESSION_COOKIE_NAME]: cookie },
4587
4620
  uid,
4588
4621
  workspaceId,
@@ -4638,7 +4671,7 @@ function findFirstAudioUrl(task) {
4638
4671
  }
4639
4672
 
4640
4673
  // src/modules/xyq-tasks/audio-task-runner.ts
4641
- import { err as err17, ok as ok22 } from "rockbed/error";
4674
+ import { err as err17, ok as ok23 } from "rockbed/error";
4642
4675
  async function createDefaultAudioSession() {
4643
4676
  return createDefaultXyqClient().createSession();
4644
4677
  }
@@ -4650,14 +4683,14 @@ function collectTaskVideoOutputs(result) {
4650
4683
  for (const video of artifact.videos) {
4651
4684
  const identity = video.assetId ? `asset:${video.assetId}` : video.pippitAssetId ? `pippit:${video.pippitAssetId}` : `url:${video.downloadUrl}`;
4652
4685
  const existing = outputs.get(identity);
4653
- if (!existing || qualityScore(video) > qualityScore(existing)) {
4686
+ if (!existing || qualityScore2(video) > qualityScore2(existing)) {
4654
4687
  outputs.set(identity, video);
4655
4688
  }
4656
4689
  }
4657
4690
  }
4658
4691
  return [...outputs.values()];
4659
4692
  }
4660
- function qualityScore(output) {
4693
+ function qualityScore2(output) {
4661
4694
  return (output.width ?? 0) * (output.height ?? 0);
4662
4695
  }
4663
4696
 
@@ -4708,7 +4741,7 @@ var XyqAudioGenerationProvider = class extends Disposable10 {
4708
4741
  ...pippitAssetId ? { pippitAssetId } : {}
4709
4742
  });
4710
4743
  if (!submit.ok) return xyqAudioFailure(submit, stage, "submit");
4711
- return ok23({ taskId: submit.value.taskId, state: "submitted" });
4744
+ return ok24({ taskId: submit.value.taskId, state: "submitted" });
4712
4745
  } catch (caughtError) {
4713
4746
  return err18(1, toErrorMessage2(caughtError), { stage });
4714
4747
  }
@@ -4723,7 +4756,7 @@ var XyqAudioGenerationProvider = class extends Disposable10 {
4723
4756
  stage = "query";
4724
4757
  const result = await sessionResult.value.queryAudio({ threadId });
4725
4758
  if (!result.ok) return xyqAudioFailure(result, stage, "query", taskId);
4726
- return ok23(toAudioTaskResult(result.value));
4759
+ return ok24(toAudioTaskResult(result.value));
4727
4760
  } catch (caughtError) {
4728
4761
  return err18(1, toErrorMessage2(caughtError), { stage, taskId });
4729
4762
  }
@@ -4739,7 +4772,7 @@ var XyqAudioGenerationProvider = class extends Disposable10 {
4739
4772
  stage = "wait";
4740
4773
  const result = await sessionResult.value.waitAudio({ threadId, timeoutSeconds });
4741
4774
  if (!result.ok) return xyqAudioFailure(result, stage, "query", taskId);
4742
- return ok23(toAudioTaskResult(result.value));
4775
+ return ok24(toAudioTaskResult(result.value));
4743
4776
  } catch (caughtError) {
4744
4777
  return err18(1, toErrorMessage2(caughtError), { stage, taskId });
4745
4778
  }
@@ -4794,7 +4827,7 @@ function createDefaultAudioGenerationService(options = {}) {
4794
4827
 
4795
4828
  // src/commands/ai/ai-audio-status-command.ts
4796
4829
  import { Option } from "commander";
4797
- import { ok as ok24 } from "rockbed/error";
4830
+ import { ok as ok25 } from "rockbed/error";
4798
4831
 
4799
4832
  // src/commands/ai/ai-audio-task-output.ts
4800
4833
  function audioErrorStage(errorInfo, phase) {
@@ -4873,7 +4906,7 @@ var AiAudioStatusCommand = class extends BaseCommand {
4873
4906
  if (!result.ok) {
4874
4907
  return failFrom(result, audioFailureDetail(result.errorInfo, "query", { taskId }));
4875
4908
  }
4876
- return ok24(toAudioTaskOutput(result.value));
4909
+ return ok25(toAudioTaskOutput(result.value));
4877
4910
  } catch (caughtError) {
4878
4911
  return fail(1, caughtError instanceof Error ? caughtError.message : String(caughtError), {
4879
4912
  stage: "query",
@@ -4886,7 +4919,7 @@ var AiAudioStatusCommand = class extends BaseCommand {
4886
4919
  // src/commands/ai/ai-audio-wait-command.ts
4887
4920
  import { resolve as resolve4 } from "node:path";
4888
4921
  import { Option as Option2 } from "commander";
4889
- import { ok as ok25 } from "rockbed/error";
4922
+ import { ok as ok26 } from "rockbed/error";
4890
4923
  var AiAudioWaitCommand = class extends BaseCommand {
4891
4924
  constructor(_audioGenerationService = createDefaultAudioGenerationService()) {
4892
4925
  super();
@@ -4929,7 +4962,7 @@ var AiAudioWaitCommand = class extends BaseCommand {
4929
4962
  if (!result.ok) {
4930
4963
  return failFrom(result, audioFailureDetail(result.errorInfo, "wait", { taskId, outputPath }));
4931
4964
  }
4932
- return ok25(toAudioTaskOutput(result.value, { outputPath }));
4965
+ return ok26(toAudioTaskOutput(result.value, { outputPath }));
4933
4966
  }
4934
4967
  };
4935
4968
 
@@ -5024,7 +5057,7 @@ var AiAudioCommand = class extends BaseCommandGroup {
5024
5057
  }
5025
5058
  taskId = submitted.value.taskId;
5026
5059
  progress.dispose();
5027
- if (!shouldWait) return ok26(toAudioSubmitOutput(taskId));
5060
+ if (!shouldWait) return ok27(toAudioSubmitOutput(taskId));
5028
5061
  stage = "wait";
5029
5062
  const completed = await this._audioGenerationService.wait({
5030
5063
  taskId,
@@ -5034,7 +5067,7 @@ var AiAudioCommand = class extends BaseCommandGroup {
5034
5067
  if (!completed.ok) {
5035
5068
  return failFrom(completed, audioFailureDetail(completed.errorInfo, "wait", { taskId, outputPath }));
5036
5069
  }
5037
- return ok26(toAudioTaskOutput(completed.value, { outputPath }));
5070
+ return ok27(toAudioTaskOutput(completed.value, { outputPath }));
5038
5071
  } catch (caughtError) {
5039
5072
  return fail(1, caughtError instanceof Error ? caughtError.message : String(caughtError), {
5040
5073
  stage,
@@ -5052,14 +5085,14 @@ function appendAudioPath(value, previous) {
5052
5085
  // src/commands/ai/ai-image-command.ts
5053
5086
  import * as path10 from "node:path";
5054
5087
  import { Option as Option6 } from "commander";
5055
- import { ok as ok35 } from "rockbed/error";
5088
+ import { ok as ok36 } from "rockbed/error";
5056
5089
 
5057
5090
  // src/modules/image-generation/image-task-service.ts
5058
5091
  import * as path6 from "node:path";
5059
5092
  import { fileURLToPath } from "node:url";
5060
5093
  import { randomUUID as randomUUID9 } from "node:crypto";
5061
5094
  import { Disposable as Disposable11 } from "rockbed/dispose";
5062
- import { err as err19, ok as ok27 } from "rockbed/error";
5095
+ import { err as err19, ok as ok28 } from "rockbed/error";
5063
5096
  var ImageTaskService = class extends Disposable11 {
5064
5097
  _taskStore;
5065
5098
  _launchWorker;
@@ -5105,17 +5138,17 @@ var ImageTaskService = class extends Disposable11 {
5105
5138
  const record = await this._taskStore.read(taskId);
5106
5139
  const artifact = this._taskStore.artifactPath(taskId);
5107
5140
  if ((await validateImageArtifact(artifact)).ok) {
5108
- return ok27(toOutput(record, "completed", [{ localPath: artifact }]));
5141
+ return ok28(toOutput(record, "completed", [{ localPath: artifact }]));
5109
5142
  }
5110
5143
  if (record.state === "completed") {
5111
- return ok27({ ...toOutput(record, "unknown"), failReason: "\u4EFB\u52A1\u66FE\u5B8C\u6210\uFF0C\u4F46\u672C\u5730\u5F52\u6863\u56FE\u7247\u7F3A\u5931\u6216\u635F\u574F\uFF1B\u672A\u91CD\u65B0\u751F\u6210" });
5144
+ return ok28({ ...toOutput(record, "unknown"), failReason: "\u4EFB\u52A1\u66FE\u5B8C\u6210\uFF0C\u4F46\u672C\u5730\u5F52\u6863\u56FE\u7247\u7F3A\u5931\u6216\u635F\u574F\uFF1B\u672A\u91CD\u65B0\u751F\u6210" });
5112
5145
  }
5113
- if (record.state === "failed" || record.state === "unknown") return ok27(toOutput(record));
5114
- if (await this._isWorkerAlive(record)) return ok27({ ...toOutput(record), retryAfterSeconds: 1 });
5146
+ if (record.state === "failed" || record.state === "unknown") return ok28(toOutput(record));
5147
+ if (await this._isWorkerAlive(record)) return ok28({ ...toOutput(record), retryAfterSeconds: 1 });
5115
5148
  const latest = await this._taskStore.read(taskId);
5116
- if ((await validateImageArtifact(artifact)).ok) return ok27(toOutput(latest, "completed", [{ localPath: artifact }]));
5117
- if (latest.state === "failed") return ok27(toOutput(latest));
5118
- return ok27({ ...toOutput(latest, "unknown"), failReason: "\u65E0\u6CD5\u786E\u8BA4\u539F\u56FE\u7247 worker \u4ECD\u5728\u8FD0\u884C\uFF0C\u4E14\u672A\u53D1\u73B0\u5B8C\u6574\u5F52\u6863\u4EA7\u7269\uFF1B\u8BF7\u7A0D\u540E\u67E5\u8BE2\u539F\u4EFB\u52A1\uFF0C\u672A\u81EA\u52A8\u6062\u590D\u6216\u91CD\u65B0\u751F\u6210" });
5149
+ if ((await validateImageArtifact(artifact)).ok) return ok28(toOutput(latest, "completed", [{ localPath: artifact }]));
5150
+ if (latest.state === "failed") return ok28(toOutput(latest));
5151
+ return ok28({ ...toOutput(latest, "unknown"), failReason: "\u65E0\u6CD5\u786E\u8BA4\u539F\u56FE\u7247 worker \u4ECD\u5728\u8FD0\u884C\uFF0C\u4E14\u672A\u53D1\u73B0\u5B8C\u6574\u5F52\u6863\u4EA7\u7269\uFF1B\u8BF7\u7A0D\u540E\u67E5\u8BE2\u539F\u4EFB\u52A1\uFF0C\u672A\u81EA\u52A8\u6062\u590D\u6216\u91CD\u65B0\u751F\u6210" });
5119
5152
  } catch (error) {
5120
5153
  return taskError(error, taskId);
5121
5154
  }
@@ -5134,11 +5167,11 @@ var ImageTaskService = class extends Disposable11 {
5134
5167
  if (!localPath) return err19(1, "\u56FE\u7247\u4EFB\u52A1\u5DF2\u5B8C\u6210\uFF0C\u4F46\u672C\u5730\u5F52\u6863\u8DEF\u5F84\u7F3A\u5931", { taskId });
5135
5168
  const copied = await copyImageArtifact(localPath, outputPath);
5136
5169
  if (!copied.ok) return err19(copied.code, copied.msg, { ...errorDetails(copied.errorInfo), taskId, state: "completed", outputs: current.value.outputs });
5137
- return ok27({ ...current.value, outputs: [{ localPath: copied.value }] });
5170
+ return ok28({ ...current.value, outputs: [{ localPath: copied.value }] });
5138
5171
  }
5139
5172
  if (current.value.state === "failed" || current.value.state === "unknown") return current;
5140
5173
  const remaining = deadline - this._now();
5141
- if (remaining <= 0) return ok27({ ...current.value, timedOut: true });
5174
+ if (remaining <= 0) return ok28({ ...current.value, timedOut: true });
5142
5175
  await this._delay(Math.min(remaining, this._pollIntervalMs));
5143
5176
  }
5144
5177
  }
@@ -5149,7 +5182,7 @@ var ImageTaskService = class extends Disposable11 {
5149
5182
  const current = await this.status(taskId);
5150
5183
  results.push(current.ok ? current.value : { taskId, state: "unknown", outputs: [], failReason: current.msg });
5151
5184
  }
5152
- return ok27(results.sort((a, b) => (b.createdAt ?? "").localeCompare(a.createdAt ?? "")));
5185
+ return ok28(results.sort((a, b) => (b.createdAt ?? "").localeCompare(a.createdAt ?? "")));
5153
5186
  } catch (error) {
5154
5187
  return err19(1, `\u8BFB\u53D6\u56FE\u7247\u4EFB\u52A1\u5217\u8868\u5931\u8D25: ${error instanceof Error ? error.message : String(error)}`);
5155
5188
  }
@@ -5196,13 +5229,13 @@ ${constraints.join("\n")}` : void 0
5196
5229
  }
5197
5230
 
5198
5231
  // src/modules/image-generation/routed-image-task-service.ts
5199
- import { err as err22, ok as ok30 } from "rockbed/error";
5232
+ import { err as err22, ok as ok31 } from "rockbed/error";
5200
5233
 
5201
5234
  // src/modules/image-generation/jimeng-image-task-service.ts
5202
5235
  import * as path7 from "node:path";
5203
5236
  import { setTimeout as sleep3 } from "node:timers/promises";
5204
5237
  import { Disposable as Disposable12 } from "rockbed/dispose";
5205
- import { err as err20, ok as ok28 } from "rockbed/error";
5238
+ import { err as err20, ok as ok29 } from "rockbed/error";
5206
5239
  var JIMENG_IMAGE_TASK_ID_PREFIX = "jimeng-image:";
5207
5240
  var JimengImageTaskService = class extends Disposable12 {
5208
5241
  _api;
@@ -5309,7 +5342,7 @@ var JimengImageTaskService = class extends Disposable12 {
5309
5342
  }), "submit", "submit", taskId);
5310
5343
  }
5311
5344
  const interval = submission.queue_info?.polling_config?.interval_seconds;
5312
- return ok28({
5345
+ return ok29({
5313
5346
  taskId,
5314
5347
  state: "submitted",
5315
5348
  outputs: [],
@@ -5331,7 +5364,7 @@ var JimengImageTaskService = class extends Disposable12 {
5331
5364
  const parsed = parseJimengImageStatus(response.value, submitId);
5332
5365
  if (!parsed.ok) return imageFailure(err20(parsed.code, parsed.msg, { failureKind: "response" }), "query", "query", normalizedTaskId);
5333
5366
  const { failReason, ...snapshot } = parsed.value;
5334
- return ok28({
5367
+ return ok29({
5335
5368
  taskId: normalizedTaskId,
5336
5369
  ...snapshot,
5337
5370
  source: "jimeng",
@@ -5352,17 +5385,17 @@ var JimengImageTaskService = class extends Disposable12 {
5352
5385
  if (!queried.ok) return queried;
5353
5386
  const task = queried.value;
5354
5387
  if (task.state === "completed") {
5355
- return options.outputPath ? this._download(task, options.outputPath) : ok28(task);
5388
+ return options.outputPath ? this._download(task, options.outputPath) : ok29(task);
5356
5389
  }
5357
- if (task.state === "failed") return ok28(task);
5390
+ if (task.state === "failed") return ok29(task);
5358
5391
  const remaining = deadline - this._now();
5359
- if (remaining <= 0) return ok28({ ...task, timedOut: true });
5392
+ if (remaining <= 0) return ok29({ ...task, timedOut: true });
5360
5393
  const interval = Math.max(1, task.retryAfterSeconds ?? 2) * 1e3;
5361
5394
  await this._sleep(Math.min(interval, remaining));
5362
5395
  }
5363
5396
  }
5364
5397
  async list() {
5365
- return ok28([]);
5398
+ return ok29([]);
5366
5399
  }
5367
5400
  async _download(task, outputPath) {
5368
5401
  if (task.outputs.length === 0) {
@@ -5382,7 +5415,7 @@ var JimengImageTaskService = class extends Disposable12 {
5382
5415
  const { downloadUrl: _downloadUrl, ...metadata } = output;
5383
5416
  outputs.push({ ...metadata, localPath: downloaded.value });
5384
5417
  }
5385
- return ok28({ ...task, outputs });
5418
+ return ok29({ ...task, outputs });
5386
5419
  }
5387
5420
  };
5388
5421
  function parseJimengImageTaskId(taskId) {
@@ -5423,7 +5456,7 @@ function isJimengImageModelId(modelId) {
5423
5456
  import * as fs7 from "node:fs/promises";
5424
5457
  import { homedir as homedir3 } from "node:os";
5425
5458
  import * as path8 from "node:path";
5426
- import { err as err21, ok as ok29 } from "rockbed/error";
5459
+ import { err as err21, ok as ok30 } from "rockbed/error";
5427
5460
  var XyqImageTaskService = class {
5428
5461
  _createSession;
5429
5462
  _downloadDirectory;
@@ -5461,7 +5494,7 @@ var XyqImageTaskService = class {
5461
5494
  aspectRatio: request.aspectRatio
5462
5495
  });
5463
5496
  if (!submit.ok) return xyqImageFailure(submit, "submit");
5464
- return ok29({
5497
+ return ok30({
5465
5498
  taskId: submit.value.taskId,
5466
5499
  state: "submitted",
5467
5500
  outputs: [],
@@ -5476,7 +5509,7 @@ var XyqImageTaskService = class {
5476
5509
  const sessionResult = await this._createSession();
5477
5510
  if (!sessionResult.ok) return xyqImageFailure(sessionResult, "setup", taskId);
5478
5511
  const result = await sessionResult.value.queryImage({ threadId: threadIdResult.value });
5479
- return result.ok ? ok29(await this._toTaskResult(result.value)) : xyqImageFailure(result, "query", taskId);
5512
+ return result.ok ? ok30(await this._toTaskResult(result.value)) : xyqImageFailure(result, "query", taskId);
5480
5513
  }
5481
5514
  async wait(options) {
5482
5515
  const threadIdResult = parseXyqImageTaskId(options.taskId);
@@ -5490,11 +5523,11 @@ var XyqImageTaskService = class {
5490
5523
  if (!result.ok) return xyqImageFailure(result, "query", options.taskId);
5491
5524
  const task = await this._toTaskResult(result.value);
5492
5525
  if (task.state !== "completed") {
5493
- return ok29({ ...task, ...result.value.timedOut ? { timedOut: true } : {} });
5526
+ return ok30({ ...task, ...result.value.timedOut ? { timedOut: true } : {} });
5494
5527
  }
5495
5528
  const remoteOutputs = collectXyqImageOutputs(result.value);
5496
5529
  if (remoteOutputs.length === 0) return err21(1, "XYQ \u56FE\u7247\u4EFB\u52A1\u5DF2\u5B8C\u6210\uFF0C\u4F46\u6CA1\u6709\u627E\u5230\u56FE\u7247\u4E0B\u8F7D\u5730\u5740");
5497
- if (!options.outputPath) return ok29(task);
5530
+ if (!options.outputPath) return ok30(task);
5498
5531
  const targets = resolveImageOutputPaths2(
5499
5532
  options.outputPath,
5500
5533
  remoteOutputs.length
@@ -5508,10 +5541,10 @@ var XyqImageTaskService = class {
5508
5541
  if (!downloaded.ok) return xyqImageFailure(downloaded, "download", options.taskId);
5509
5542
  outputs.push(toTaskOutput(output, downloaded.value));
5510
5543
  }
5511
- return ok29({ ...task, outputs });
5544
+ return ok30({ ...task, outputs });
5512
5545
  }
5513
5546
  async list() {
5514
- return ok29([]);
5547
+ return ok30([]);
5515
5548
  }
5516
5549
  async _toTaskResult(result) {
5517
5550
  const remoteOutputs = collectXyqImageOutputs(result);
@@ -5539,7 +5572,7 @@ function parseXyqImageTaskId(taskId) {
5539
5572
  return err21(1, `XYQ \u56FE\u7247 task-id \u683C\u5F0F\u5FC5\u987B\u662F ${XYQ_IMAGE_TASK_ID_PREFIX}<threadId>`, { failureKind: "input", requestOutcome: "not_sent" });
5540
5573
  }
5541
5574
  const threadId = normalized.slice(XYQ_IMAGE_TASK_ID_PREFIX.length).trim();
5542
- return threadId ? ok29(threadId) : err21(1, "XYQ \u56FE\u7247 taskId \u4E0D\u80FD\u4E3A\u7A7A", { failureKind: "input", requestOutcome: "not_sent" });
5575
+ return threadId ? ok30(threadId) : err21(1, "XYQ \u56FE\u7247 taskId \u4E0D\u80FD\u4E3A\u7A7A", { failureKind: "input", requestOutcome: "not_sent" });
5543
5576
  }
5544
5577
  function xyqImageFailure(result, operation, taskId) {
5545
5578
  const original = typeof result.errorInfo === "object" && result.errorInfo !== null && !Array.isArray(result.errorInfo) ? result.errorInfo : {};
@@ -5634,7 +5667,7 @@ var RoutedImageTaskService = class {
5634
5667
  }
5635
5668
  async list() {
5636
5669
  const local = await this._localService.list();
5637
- return local.ok ? ok30(local.value) : local;
5670
+ return local.ok ? ok31(local.value) : local;
5638
5671
  }
5639
5672
  _serviceForTask(taskId) {
5640
5673
  if (taskId.trim().startsWith(JIMENG_IMAGE_TASK_ID_PREFIX)) return this._jimengService;
@@ -5650,10 +5683,10 @@ function createDefaultImageTaskService() {
5650
5683
  }
5651
5684
 
5652
5685
  // src/commands/ai/ai-image-list-command.ts
5653
- import { ok as ok32 } from "rockbed/error";
5686
+ import { ok as ok33 } from "rockbed/error";
5654
5687
 
5655
5688
  // src/commands/ai/ai-image-task-output.ts
5656
- import { ok as ok31 } from "rockbed/error";
5689
+ import { ok as ok32 } from "rockbed/error";
5657
5690
  function validateImageWaitOptions(timeoutSeconds, outputPath) {
5658
5691
  if (!Number.isInteger(timeoutSeconds) || timeoutSeconds < 1 || timeoutSeconds > MAX_IMAGE_WAIT_SECONDS) {
5659
5692
  return fail(1, `--timeout-seconds \u5FC5\u987B\u662F 1-${MAX_IMAGE_WAIT_SECONDS} \u7684\u6574\u6570`, { stage: "input" });
@@ -5661,7 +5694,7 @@ function validateImageWaitOptions(timeoutSeconds, outputPath) {
5661
5694
  if (outputPath !== void 0 && !outputPath.trim()) {
5662
5695
  return fail(1, "--output \u4E00\u65E6\u4F20\u5165\u5C31\u5FC5\u987B\u662F\u975E\u7A7A\u8DEF\u5F84", { stage: "input" });
5663
5696
  }
5664
- return ok31();
5697
+ return ok32();
5665
5698
  }
5666
5699
  function imageWaitCommand(taskId, outputPath) {
5667
5700
  return `tt ai image wait --task-id ${quoteArgument2(taskId)}${outputPath ? ` --output ${quoteArgument2(outputPath)}` : ""}`;
@@ -5708,13 +5741,13 @@ var AiImageListCommand = class extends BaseCommand {
5708
5741
  }
5709
5742
  async _execute() {
5710
5743
  const result = await this._service.list();
5711
- return result.ok ? ok32({ tasks: result.value.map((task) => toImageTaskOutput(task)) }) : failFrom(result, { stage: "query" });
5744
+ return result.ok ? ok33({ tasks: result.value.map((task) => toImageTaskOutput(task)) }) : failFrom(result, { stage: "query" });
5712
5745
  }
5713
5746
  };
5714
5747
 
5715
5748
  // src/commands/ai/ai-image-status-command.ts
5716
5749
  import { Option as Option4 } from "commander";
5717
- import { ok as ok33 } from "rockbed/error";
5750
+ import { ok as ok34 } from "rockbed/error";
5718
5751
  var AiImageStatusCommand = class extends BaseCommand {
5719
5752
  constructor(_service = createDefaultImageTaskService()) {
5720
5753
  super();
@@ -5739,14 +5772,14 @@ var AiImageStatusCommand = class extends BaseCommand {
5739
5772
  }
5740
5773
  async _execute(ctx) {
5741
5774
  const result = await this._service.status(ctx.options.taskId);
5742
- return result.ok ? ok33(toImageTaskOutput(result.value)) : failFrom(result, { taskId: ctx.options.taskId, stage: "query" });
5775
+ return result.ok ? ok34(toImageTaskOutput(result.value)) : failFrom(result, { taskId: ctx.options.taskId, stage: "query" });
5743
5776
  }
5744
5777
  };
5745
5778
 
5746
5779
  // src/commands/ai/ai-image-wait-command.ts
5747
5780
  import * as path9 from "node:path";
5748
5781
  import { Option as Option5 } from "commander";
5749
- import { ok as ok34 } from "rockbed/error";
5782
+ import { ok as ok35 } from "rockbed/error";
5750
5783
  var AiImageWaitCommand = class extends BaseCommand {
5751
5784
  constructor(_service = createDefaultImageTaskService()) {
5752
5785
  super();
@@ -5779,7 +5812,7 @@ var AiImageWaitCommand = class extends BaseCommand {
5779
5812
  const outputPath = options.output === void 0 ? void 0 : path9.resolve(options.output.trim());
5780
5813
  try {
5781
5814
  const result = await this._service.wait({ taskId: options.taskId, timeoutSeconds: options.timeoutSeconds, outputPath });
5782
- return result.ok ? ok34(toImageTaskOutput(result.value, outputPath)) : imageTaskFailure(result, options.taskId, outputPath);
5815
+ return result.ok ? ok35(toImageTaskOutput(result.value, outputPath)) : imageTaskFailure(result, options.taskId, outputPath);
5783
5816
  } catch (error) {
5784
5817
  return imageTaskFailure(fail(1, error instanceof Error ? error.message : String(error)), options.taskId, outputPath);
5785
5818
  }
@@ -5887,11 +5920,11 @@ var AiImageCommand = class extends BaseCommandGroup {
5887
5920
  ...hasLocalTask && readFailureField(submit.errorInfo, "nextCommand") === void 0 ? { nextCommand: "tt ai image list" } : {}
5888
5921
  });
5889
5922
  }
5890
- if (!options.wait && options.output === void 0) return ok35(toImageTaskOutput(submit.value));
5923
+ if (!options.wait && options.output === void 0) return ok36(toImageTaskOutput(submit.value));
5891
5924
  const taskId = submit.value.taskId;
5892
5925
  try {
5893
5926
  const result = await this._service.wait({ taskId, timeoutSeconds: options.timeoutSeconds, outputPath });
5894
- return result.ok ? ok35(toImageTaskOutput(result.value, outputPath)) : imageTaskFailure(result, taskId, outputPath);
5927
+ return result.ok ? ok36(toImageTaskOutput(result.value, outputPath)) : imageTaskFailure(result, taskId, outputPath);
5895
5928
  } catch (error) {
5896
5929
  return imageTaskFailure(fail(1, error instanceof Error ? error.message : String(error)), taskId, outputPath);
5897
5930
  }
@@ -5908,7 +5941,7 @@ function readFailureField(value, field) {
5908
5941
 
5909
5942
  // src/commands/ai/ai-video-command.ts
5910
5943
  import { Option as Option9 } from "commander";
5911
- import { ok as ok40 } from "rockbed/error";
5944
+ import { ok as ok41 } from "rockbed/error";
5912
5945
 
5913
5946
  // src/modules/video-generation/video-generation-provider-registry.ts
5914
5947
  var VideoGenerationProviderRegistry = class {
@@ -5944,7 +5977,7 @@ import * as path11 from "node:path";
5944
5977
  import { setTimeout as sleep4 } from "node:timers/promises";
5945
5978
 
5946
5979
  // src/modules/video-generation/video-generation-error.ts
5947
- import { err as err23, ok as ok36 } from "rockbed/error";
5980
+ import { err as err23, ok as ok37 } from "rockbed/error";
5948
5981
  function makeVideoGenerationError(options) {
5949
5982
  const errorInfo = {
5950
5983
  code: options.code,
@@ -5959,7 +5992,7 @@ function makeVideoGenerationError(options) {
5959
5992
  return err23(options.number, options.message, errorInfo);
5960
5993
  }
5961
5994
  function makeVideoGenerationOk(value) {
5962
- return ok36(value);
5995
+ return ok37(value);
5963
5996
  }
5964
5997
 
5965
5998
  // src/modules/video-generation/normalize-video-generation-request.ts
@@ -6869,7 +6902,7 @@ function createDefaultVideoGenerationService() {
6869
6902
  }
6870
6903
 
6871
6904
  // src/commands/ai/ai-video-cache-clear-command.ts
6872
- import { ok as ok37 } from "rockbed/error";
6905
+ import { ok as ok38 } from "rockbed/error";
6873
6906
  var AiVideoCacheClearCommand = class extends BaseCommand {
6874
6907
  constructor(_clearAssetCache = clearDefaultXyqAssetCache) {
6875
6908
  super();
@@ -6885,7 +6918,7 @@ var AiVideoCacheClearCommand = class extends BaseCommand {
6885
6918
  return ["data.clearedEntries:number \u662F\u6E05\u9664\u7684\u7F13\u5B58\u6761\u76EE\u6570\u3002"];
6886
6919
  }
6887
6920
  async _execute(_ctx) {
6888
- return ok37(this._clearAssetCache());
6921
+ return ok38(this._clearAssetCache());
6889
6922
  }
6890
6923
  };
6891
6924
 
@@ -6904,7 +6937,7 @@ var AiVideoCacheCommand = class extends BaseCommandGroup {
6904
6937
 
6905
6938
  // src/commands/ai/ai-video-status-command.ts
6906
6939
  import { Option as Option7 } from "commander";
6907
- import { ok as ok38 } from "rockbed/error";
6940
+ import { ok as ok39 } from "rockbed/error";
6908
6941
 
6909
6942
  // src/commands/ai/ai-video-task-output.ts
6910
6943
  function videoFailureRecovery(recovery = {}, taskId, nextCommand) {
@@ -6988,13 +7021,13 @@ var AiVideoStatusCommand = class extends BaseCommand {
6988
7021
  taskId
6989
7022
  });
6990
7023
  }
6991
- return ok38(toVideoTaskOutput(result.value));
7024
+ return ok39(toVideoTaskOutput(result.value));
6992
7025
  }
6993
7026
  };
6994
7027
 
6995
7028
  // src/commands/ai/ai-video-wait-command.ts
6996
7029
  import { Option as Option8 } from "commander";
6997
- import { ok as ok39 } from "rockbed/error";
7030
+ import { ok as ok40 } from "rockbed/error";
6998
7031
  var AiVideoWaitCommand = class extends BaseCommand {
6999
7032
  constructor(_service = createDefaultVideoGenerationService()) {
7000
7033
  super();
@@ -7049,7 +7082,7 @@ var AiVideoWaitCommand = class extends BaseCommand {
7049
7082
  ...videoFailureRecovery(result.errorInfo?.recovery, options.taskId, result.errorInfo?.nextCommand)
7050
7083
  });
7051
7084
  }
7052
- return ok39(toVideoTaskOutput(result.value));
7085
+ return ok40(toVideoTaskOutput(result.value));
7053
7086
  }
7054
7087
  };
7055
7088
 
@@ -7200,7 +7233,7 @@ var AiVideoCommand = class extends BaseCommandGroup {
7200
7233
  return submitResult;
7201
7234
  }
7202
7235
  if (!shouldWait) {
7203
- return ok40(toVideoSubmitOutput(submitResult.value));
7236
+ return ok41(toVideoSubmitOutput(submitResult.value));
7204
7237
  }
7205
7238
  const taskId = submitResult.value.taskId;
7206
7239
  if (!taskId) {
@@ -7220,7 +7253,7 @@ var AiVideoCommand = class extends BaseCommandGroup {
7220
7253
  ...videoFailureRecovery(completionResult.errorInfo?.recovery, taskId, completionResult.errorInfo?.nextCommand)
7221
7254
  });
7222
7255
  }
7223
- return ok40(
7256
+ return ok41(
7224
7257
  toVideoEndToEndOutput(submitResult.value, completionResult.value)
7225
7258
  );
7226
7259
  }
@@ -7295,7 +7328,7 @@ function supportLines(label, standard, supported) {
7295
7328
 
7296
7329
  // src/modules/ark/ark-web-search.ts
7297
7330
  import { Disposable as Disposable14 } from "rockbed/dispose";
7298
- import { err as err24, ok as ok41 } from "rockbed/error";
7331
+ import { err as err24, ok as ok42 } from "rockbed/error";
7299
7332
 
7300
7333
  // src/constants/ak.ts
7301
7334
  var LEGACY_ARK_API_KEY = "6990de07-83be-487d-930d-f5dd3b6d5993";
@@ -7308,14 +7341,14 @@ var ARK_WEB_SEARCH_MODEL = "doubao-seed-2-0-mini-260215";
7308
7341
  async function resolveArkApiKey(settingsReader, env = process.env) {
7309
7342
  const fromEnv = env[ARK_API_KEY_ENV]?.trim();
7310
7343
  if (fromEnv) {
7311
- return ok41(fromEnv);
7344
+ return ok42(fromEnv);
7312
7345
  }
7313
7346
  const fromSettings = await settingsReader.getString(ARK_API_KEY_SETTING_KEY);
7314
7347
  if (!fromSettings.ok) {
7315
7348
  return fromSettings;
7316
7349
  }
7317
7350
  const value = fromSettings.value?.trim();
7318
- return ok41(value || LEGACY_ARK_API_KEY);
7351
+ return ok42(value || LEGACY_ARK_API_KEY);
7319
7352
  }
7320
7353
  var ArkWebSearchClient = class extends Disposable14 {
7321
7354
  _fetcher;
@@ -7373,7 +7406,7 @@ var ArkWebSearchClient = class extends Disposable14 {
7373
7406
  if (!content) {
7374
7407
  return err24(1, "\u8FD4\u56DE\u6570\u636E\u683C\u5F0F\u5F02\u5E38");
7375
7408
  }
7376
- return ok41({
7409
+ return ok42({
7377
7410
  query,
7378
7411
  model: ARK_WEB_SEARCH_MODEL,
7379
7412
  text: extractOutputText(content),
@@ -7458,12 +7491,12 @@ var AiCommand = class extends BaseCommandGroup {
7458
7491
 
7459
7492
  // src/modules/codex/index.ts
7460
7493
  import { fileURLToPath as fileURLToPath2 } from "node:url";
7461
- import { ok as ok43 } from "rockbed/error";
7494
+ import { ok as ok44 } from "rockbed/error";
7462
7495
 
7463
7496
  // src/modules/codex/codex-input.ts
7464
7497
  import { stat as stat3 } from "node:fs/promises";
7465
7498
  import { resolve as resolve12 } from "node:path";
7466
- import { err as err25, ok as ok42 } from "rockbed/error";
7499
+ import { err as err25, ok as ok43 } from "rockbed/error";
7467
7500
  var DEFAULT_CODEX_CWD = "/Users/bytedance/work/autogen";
7468
7501
  var DEFAULT_CODEX_MODEL = "gpt-6.1-sol";
7469
7502
  var DEFAULT_CODEX_REASONING = "max";
@@ -7473,7 +7506,7 @@ function validateCodexParameters(input) {
7473
7506
  if (!input.prompt.trim()) return err25(1, "\u8BF7\u8F93\u5165\u975E\u7A7A prompt");
7474
7507
  if (!CODEX_MODELS.some((model) => model === input.model)) return err25(1, "\u4E0D\u652F\u6301\u7684\u6A21\u578B");
7475
7508
  if (!CODEX_REASONING_LEVELS.some((level) => level === input.reasoning)) return err25(1, "\u4E0D\u652F\u6301\u7684\u63A8\u7406\u5F3A\u5EA6");
7476
- return ok42();
7509
+ return ok43();
7477
7510
  }
7478
7511
  async function validateCodexInput(input) {
7479
7512
  const parameters = validateCodexParameters(input);
@@ -7485,7 +7518,7 @@ async function validateCodexInput(input) {
7485
7518
  } catch {
7486
7519
  return err25(1, `\u5DE5\u4F5C\u76EE\u5F55\u4E0D\u5B58\u5728\u6216\u4E0D\u53EF\u8BBF\u95EE: ${cwd}`);
7487
7520
  }
7488
- return ok42({ ...input, cwd });
7521
+ return ok43({ ...input, cwd });
7489
7522
  }
7490
7523
 
7491
7524
  // src/modules/codex/codex-exec.ts
@@ -7553,7 +7586,7 @@ async function launchCodex(input, launch = launchDefaultCodexWorker) {
7553
7586
  const { cwd } = validated.value;
7554
7587
  const result = await launch(validated.value);
7555
7588
  if (!result.ok) return result;
7556
- return ok43({ status: "launched", pid: result.value.pid, cwd, model: input.model, reasoning: input.reasoning, ...result.value.data });
7589
+ return ok44({ status: "launched", pid: result.value.pid, cwd, model: input.model, reasoning: input.reasoning, ...result.value.data });
7557
7590
  }
7558
7591
  function launchDefaultCodexWorker(input) {
7559
7592
  const source = import.meta.url.endsWith(".ts");
@@ -7605,7 +7638,7 @@ var CodexCommand = class extends BaseCommand {
7605
7638
  };
7606
7639
 
7607
7640
  // src/commands/codex/codex-exec-command.ts
7608
- import { err as err27, ok as ok44 } from "rockbed/error";
7641
+ import { err as err27, ok as ok45 } from "rockbed/error";
7609
7642
  var CodexExecCommand = class extends BaseCommand {
7610
7643
  constructor(_executeCodex = executeCodex) {
7611
7644
  super();
@@ -7662,12 +7695,12 @@ var CodexExecCommand = class extends BaseCommand {
7662
7695
  });
7663
7696
  if (!result.ok) return result;
7664
7697
  process.exitCode = result.value.exitCode;
7665
- return ok44();
7698
+ return ok45();
7666
7699
  }
7667
7700
  };
7668
7701
 
7669
7702
  // src/commands/deploy/deploy-command.ts
7670
- import { ok as ok45 } from "rockbed/error";
7703
+ import { ok as ok46 } from "rockbed/error";
7671
7704
 
7672
7705
  // src/modules/static-deploy/static-deploy-service.ts
7673
7706
  import { spawn } from "node:child_process";
@@ -8018,15 +8051,15 @@ async function runTarProcess(input) {
8018
8051
  clearTimeout(timer);
8019
8052
  reject(error);
8020
8053
  });
8021
- const collect = (chunks, chunk) => {
8054
+ const collect2 = (chunks, chunk) => {
8022
8055
  captured += chunk.length;
8023
8056
  if (captured > 1024 * 1024) {
8024
8057
  processError = new Error("\u5F52\u6863\u8FDB\u7A0B\u8F93\u51FA\u8D85\u51FA 1 MiB \u9650\u5236");
8025
8058
  child.kill("SIGKILL");
8026
8059
  } else chunks.push(chunk);
8027
8060
  };
8028
- child.stdout.on("data", (chunk) => collect(stdout, chunk));
8029
- child.stderr.on("data", (chunk) => collect(stderr, chunk));
8061
+ child.stdout.on("data", (chunk) => collect2(stdout, chunk));
8062
+ child.stderr.on("data", (chunk) => collect2(stderr, chunk));
8030
8063
  child.on("close", (exitCode) => {
8031
8064
  clearTimeout(timer);
8032
8065
  if (processError) reject(processError);
@@ -8109,12 +8142,12 @@ var DeployCommand = class extends BaseCommand {
8109
8142
  try {
8110
8143
  const service = this._createService();
8111
8144
  if (operation === "list") {
8112
- return ok45(await service.list());
8145
+ return ok46(await service.list());
8113
8146
  }
8114
8147
  if (operation === "delete") {
8115
- return ok45(await service.delete(deleteName));
8148
+ return ok46(await service.delete(deleteName));
8116
8149
  }
8117
- return ok45(
8150
+ return ok46(
8118
8151
  await service.deploy({
8119
8152
  sourcePath,
8120
8153
  ...name !== void 0 ? { name } : {}
@@ -8134,7 +8167,7 @@ function inputError(msg) {
8134
8167
  }
8135
8168
 
8136
8169
  // src/modules/git/git-cli.ts
8137
- import { err as err28, ok as ok46 } from "rockbed/error";
8170
+ import { err as err28, ok as ok47 } from "rockbed/error";
8138
8171
  function runGit(args) {
8139
8172
  return runProcess("git", args);
8140
8173
  }
@@ -8143,7 +8176,7 @@ async function captureGit(args) {
8143
8176
  if (!result.ok) {
8144
8177
  return result;
8145
8178
  }
8146
- return ok46(result.value.stdout.trim());
8179
+ return ok47(result.value.stdout.trim());
8147
8180
  }
8148
8181
  function gitAddAll() {
8149
8182
  return runGit(["add", "."]);
@@ -8272,7 +8305,7 @@ var GitMmCommand = class extends GitBaseCommand {
8272
8305
  };
8273
8306
 
8274
8307
  // src/commands/git/git-mr-command.ts
8275
- import { ok as ok47 } from "rockbed/error";
8308
+ import { ok as ok48 } from "rockbed/error";
8276
8309
  var GitMrCommand = class extends GitBaseCommand {
8277
8310
  _meta() {
8278
8311
  return {
@@ -8298,7 +8331,7 @@ var GitMrCommand = class extends GitBaseCommand {
8298
8331
  if (!openResult.ok) {
8299
8332
  this._debug(openResult.msg);
8300
8333
  }
8301
- return ok47();
8334
+ return ok48();
8302
8335
  }
8303
8336
  };
8304
8337
 
@@ -8346,7 +8379,7 @@ var GitCommand = class extends BaseCommandGroup {
8346
8379
  };
8347
8380
 
8348
8381
  // src/commands/hello/hello-greet-command.ts
8349
- import { ok as ok48 } from "rockbed/error";
8382
+ import { ok as ok49 } from "rockbed/error";
8350
8383
  var HelloGreetCommand = class extends BaseCommand {
8351
8384
  _meta() {
8352
8385
  return {
@@ -8362,14 +8395,14 @@ var HelloGreetCommand = class extends BaseCommand {
8362
8395
  }
8363
8396
  async _execute(ctx) {
8364
8397
  const message = `Hello, ${readStringArg(ctx.args, 0) || "World"}!`;
8365
- return ok48({
8398
+ return ok49({
8366
8399
  message: ctx.options.uppercase ? message.toUpperCase() : message
8367
8400
  });
8368
8401
  }
8369
8402
  };
8370
8403
 
8371
8404
  // src/commands/hello/hello-info-command.ts
8372
- import { ok as ok49 } from "rockbed/error";
8405
+ import { ok as ok50 } from "rockbed/error";
8373
8406
  var HelloInfoCommand = class extends BaseCommand {
8374
8407
  _meta() {
8375
8408
  return {
@@ -8378,7 +8411,7 @@ var HelloInfoCommand = class extends BaseCommand {
8378
8411
  };
8379
8412
  }
8380
8413
  async _execute(_ctx) {
8381
- return ok49({
8414
+ return ok50({
8382
8415
  version: "1.0.0",
8383
8416
  description: "Hello \u547D\u4EE4\u7EC4 - \u7528\u4E8E\u6253\u62DB\u547C\u7684\u793A\u4F8B\u547D\u4EE4"
8384
8417
  });
@@ -8402,14 +8435,14 @@ var HelloCommand = class extends BaseCommandGroup {
8402
8435
  };
8403
8436
 
8404
8437
  // src/modules/pippit/douyin-video/cn-douyin-video.ts
8405
- import { err as err29, ok as ok51 } from "rockbed/error";
8438
+ import { err as err29, ok as ok52 } from "rockbed/error";
8406
8439
 
8407
8440
  // src/modules/pippit/request-json.ts
8408
- import { ok as ok50 } from "rockbed/error";
8441
+ import { ok as ok51 } from "rockbed/error";
8409
8442
  async function readJsonBody(response, url, responseParseFailed) {
8410
8443
  const bodyText = await response.text();
8411
8444
  try {
8412
- return ok50(JSON.parse(bodyText));
8445
+ return ok51(JSON.parse(bodyText));
8413
8446
  } catch (error) {
8414
8447
  const cause = error instanceof Error ? ` (${error.message})` : "";
8415
8448
  return responseParseFailed(`\u63A5\u53E3\u8FD4\u56DE\u975E JSON \u54CD\u5E94: ${url}${cause}`);
@@ -8524,7 +8557,7 @@ async function fetchDouyinVideoCn(options, dependencies = {}) {
8524
8557
  const response = responseResult.value;
8525
8558
  const videoUrl = parseVideoUrl(response.data);
8526
8559
  if (videoUrl) {
8527
- return ok51({ video_url: videoUrl });
8560
+ return ok52({ video_url: videoUrl });
8528
8561
  }
8529
8562
  if (response.ret !== void 0 && String(response.ret) !== "0") {
8530
8563
  return err29(
@@ -8653,7 +8686,7 @@ var ShortcutCommand = class extends BaseCommandGroup {
8653
8686
  };
8654
8687
 
8655
8688
  // src/commands/tool/tool-draw-command.ts
8656
- import { err as err30, ok as ok52 } from "rockbed/error";
8689
+ import { err as err30, ok as ok53 } from "rockbed/error";
8657
8690
  var ToolDrawCommand = class extends BaseCommand {
8658
8691
  _meta() {
8659
8692
  return {
@@ -8690,7 +8723,7 @@ var ToolDrawCommand = class extends BaseCommand {
8690
8723
  if (!distributionResult.ok) {
8691
8724
  return distributionResult;
8692
8725
  }
8693
- return ok52({
8726
+ return ok53({
8694
8727
  items: drawWeightedItems(countResult.value, distributionResult.value)
8695
8728
  });
8696
8729
  }
@@ -8700,7 +8733,7 @@ function parseCount(value) {
8700
8733
  if (!Number.isInteger(count) || count <= 0) {
8701
8734
  return err30(1, "\u62BD\u53D6\u4E2A\u6570\u5FC5\u987B\u662F\u6B63\u6574\u6570");
8702
8735
  }
8703
- return ok52(count);
8736
+ return ok53(count);
8704
8737
  }
8705
8738
  function stringifyDistributionArg(value) {
8706
8739
  if (Array.isArray(value)) {
@@ -8748,7 +8781,7 @@ function parseJsonDistributionEntry(value, index) {
8748
8781
  if (!weightResult.ok) {
8749
8782
  return weightResult;
8750
8783
  }
8751
- return ok52({ name: nameResult.value, weight: weightResult.value });
8784
+ return ok53({ name: nameResult.value, weight: weightResult.value });
8752
8785
  }
8753
8786
  function getJsonWeightValue(record) {
8754
8787
  if ("weight" in record) {
@@ -8797,7 +8830,7 @@ function parseEntryName(value, label) {
8797
8830
  if (!name) {
8798
8831
  return err30(1, `${label}\u7684\u540D\u79F0\u4E0D\u80FD\u4E3A\u7A7A`);
8799
8832
  }
8800
- return ok52(name);
8833
+ return ok53(name);
8801
8834
  }
8802
8835
  function parseWeight(value, label) {
8803
8836
  const rawValue = typeof value === "string" ? value.trim().replace(/[%%]$/, "") : value;
@@ -8805,13 +8838,13 @@ function parseWeight(value, label) {
8805
8838
  if (!Number.isFinite(weight) || weight <= 0) {
8806
8839
  return err30(1, `${label}\u7684\u6982\u7387\u5FC5\u987B\u662F\u5927\u4E8E 0 \u7684\u6570\u5B57`);
8807
8840
  }
8808
- return ok52(weight);
8841
+ return ok53(weight);
8809
8842
  }
8810
8843
  function validateDistribution(entries) {
8811
8844
  if (entries.length === 0) {
8812
8845
  return err30(1, "\u6982\u7387\u5206\u5E03\u81F3\u5C11\u9700\u8981 1 \u9879");
8813
8846
  }
8814
- return ok52(entries);
8847
+ return ok53(entries);
8815
8848
  }
8816
8849
  function drawWeightedItems(count, entries) {
8817
8850
  const totalWeight = entries.reduce((sum, entry) => sum + entry.weight, 0);
@@ -8839,7 +8872,7 @@ function asRecord(value) {
8839
8872
  }
8840
8873
 
8841
8874
  // src/commands/tool/tool-get-config-command.ts
8842
- import { err as err31, ok as ok53 } from "rockbed/error";
8875
+ import { err as err31, ok as ok54 } from "rockbed/error";
8843
8876
  var ToolGetConfigCommand = class extends BaseCommand {
8844
8877
  constructor(_settingsReader = new FileCrossAppSettingsReader()) {
8845
8878
  super();
@@ -8902,9 +8935,9 @@ async function readConfigValue(settingsReader, key) {
8902
8935
  }
8903
8936
  const entry = snapshotResult.value.document.settings[key];
8904
8937
  if (!entry) {
8905
- return ok53({ key, configured: false });
8938
+ return ok54({ key, configured: false });
8906
8939
  }
8907
- return ok53({
8940
+ return ok54({
8908
8941
  key,
8909
8942
  configured: true,
8910
8943
  value: entry.value,
@@ -8914,7 +8947,7 @@ async function readConfigValue(settingsReader, key) {
8914
8947
  }
8915
8948
 
8916
8949
  // src/commands/tool/tool-set-config-command.ts
8917
- import { ok as ok54 } from "rockbed/error";
8950
+ import { ok as ok55 } from "rockbed/error";
8918
8951
  var ToolSetConfigCommand = class extends BaseCommand {
8919
8952
  constructor(_settingsWriter = new FileCrossAppSettingsWriter()) {
8920
8953
  super();
@@ -8947,7 +8980,7 @@ var ToolSetConfigCommand = class extends BaseCommand {
8947
8980
  }
8948
8981
  const result = await this._settingsWriter.set(ctx.options);
8949
8982
  if (!result.ok) return failFrom(result, { stage: "write_config" });
8950
- return ok54({ ...result.value, configured: true });
8983
+ return ok55({ ...result.value, configured: true });
8951
8984
  }
8952
8985
  };
8953
8986
 
@@ -8971,7 +9004,7 @@ var ToolCommand = class extends BaseCommandGroup {
8971
9004
  import { stat as stat5 } from "node:fs/promises";
8972
9005
  import { resolve as resolve14 } from "node:path";
8973
9006
  import { fileURLToPath as fileURLToPath3 } from "node:url";
8974
- import { err as err32, ok as ok55 } from "rockbed/error";
9007
+ import { err as err32, ok as ok56 } from "rockbed/error";
8975
9008
  var DEFAULT_TRAEX_CWD = "/Users/bytedance/work/autogen";
8976
9009
  var DEFAULT_TRAEX_MODEL = "gpt-5.6-sol";
8977
9010
  var DEFAULT_TRAEX_REASONING = "xhigh";
@@ -8990,7 +9023,7 @@ async function launchTraex(input, launch = launchDefaultTraexWorker) {
8990
9023
  }
8991
9024
  const result = await launch({ ...input, cwd });
8992
9025
  if (!result.ok) return result;
8993
- return ok55({ status: "launched", pid: result.value.pid, cwd, model: input.model, reasoning: input.reasoning, ...result.value.data });
9026
+ return ok56({ status: "launched", pid: result.value.pid, cwd, model: input.model, reasoning: input.reasoning, ...result.value.data });
8994
9027
  }
8995
9028
  function launchDefaultTraexWorker(input) {
8996
9029
  const source = import.meta.url.endsWith(".ts");
@@ -9089,4 +9122,4 @@ export {
9089
9122
  TraexCommand,
9090
9123
  createRootCommands
9091
9124
  };
9092
- //# sourceMappingURL=chunk-BQKZGZDW.js.map
9125
+ //# sourceMappingURL=chunk-YZFLZ22B.js.map