maoda-commander-tt 0.0.31 → 0.0.38
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/dist/main.js +106 -17
- package/dist/main.js.map +1 -1
- package/package.json +1 -1
package/dist/main.js
CHANGED
|
@@ -3563,10 +3563,11 @@ var XyqSession = class {
|
|
|
3563
3563
|
threadId,
|
|
3564
3564
|
serverRunId ?? requestedRunId
|
|
3565
3565
|
);
|
|
3566
|
-
const state = mapVideoRunState(toNumber(runRecord.state));
|
|
3567
|
-
const retryAfterSeconds = isTerminalVideoState(state) ? 0 : resolveRetryAfterSeconds(queueInfo ?? runRecord.RunQueueInfo);
|
|
3568
3566
|
const entryList = Array.isArray(runRecord.entry_list) ? runRecord.entry_list : [];
|
|
3569
3567
|
const artifacts = entryList.map(extractVideoArtifact).filter((artifact) => artifact !== void 0);
|
|
3568
|
+
const providerState = mapVideoRunState(toNumber(runRecord.state));
|
|
3569
|
+
const state = hasUsableVideoOutput(artifacts) ? "completed" : providerState;
|
|
3570
|
+
const retryAfterSeconds = isTerminalVideoState(state) ? 0 : resolveRetryAfterSeconds(queueInfo ?? runRecord.RunQueueInfo);
|
|
3570
3571
|
return ok20({
|
|
3571
3572
|
taskId: createXyqTaskId(threadId),
|
|
3572
3573
|
threadId,
|
|
@@ -3928,6 +3929,9 @@ function mapVideoRunState(stateCode) {
|
|
|
3928
3929
|
function isTerminalVideoState(state) {
|
|
3929
3930
|
return ["completed", "failed", "canceled", "inputRequired"].includes(state);
|
|
3930
3931
|
}
|
|
3932
|
+
function hasUsableVideoOutput(artifacts) {
|
|
3933
|
+
return artifacts.some((artifact) => artifact.videos.length > 0);
|
|
3934
|
+
}
|
|
3931
3935
|
function extractVideoArtifact(entry) {
|
|
3932
3936
|
if (!isRecord2(entry)) {
|
|
3933
3937
|
return void 0;
|
|
@@ -4979,6 +4983,74 @@ var AiVideoWaitCommand = class extends AiBaseCommand {
|
|
|
4979
4983
|
}
|
|
4980
4984
|
};
|
|
4981
4985
|
|
|
4986
|
+
// src/commands/ai/ai-video-submit-progress.ts
|
|
4987
|
+
var VIDEO_SUBMIT_HEARTBEAT_INTERVAL_MS = 1e4;
|
|
4988
|
+
var DEFAULT_RUNTIME = {
|
|
4989
|
+
now: Date.now,
|
|
4990
|
+
setInterval: (handler, timeoutMs) => setInterval(handler, timeoutMs),
|
|
4991
|
+
clearInterval: (timer) => clearInterval(timer),
|
|
4992
|
+
writeStderr: (text) => {
|
|
4993
|
+
process.stderr.write(text);
|
|
4994
|
+
}
|
|
4995
|
+
};
|
|
4996
|
+
function createVideoSubmitProgressReporter(options) {
|
|
4997
|
+
return new VideoSubmitProgressReporter(options);
|
|
4998
|
+
}
|
|
4999
|
+
var VideoSubmitProgressReporter = class {
|
|
5000
|
+
constructor(_options) {
|
|
5001
|
+
this._options = _options;
|
|
5002
|
+
this._runtime = _options.runtime ?? DEFAULT_RUNTIME;
|
|
5003
|
+
this._heartbeatIntervalMs = _options.heartbeatIntervalMs ?? VIDEO_SUBMIT_HEARTBEAT_INTERVAL_MS;
|
|
5004
|
+
}
|
|
5005
|
+
_runtime;
|
|
5006
|
+
_heartbeatIntervalMs;
|
|
5007
|
+
_startedAt;
|
|
5008
|
+
_timer;
|
|
5009
|
+
start() {
|
|
5010
|
+
if (!this._options.enabled || this._startedAt !== void 0) {
|
|
5011
|
+
return;
|
|
5012
|
+
}
|
|
5013
|
+
this._startedAt = this._runtime.now();
|
|
5014
|
+
this._emitProgress();
|
|
5015
|
+
this._timer = this._runtime.setInterval(
|
|
5016
|
+
() => this._emitProgress(),
|
|
5017
|
+
this._heartbeatIntervalMs
|
|
5018
|
+
);
|
|
5019
|
+
this._timer.unref?.();
|
|
5020
|
+
}
|
|
5021
|
+
stop() {
|
|
5022
|
+
if (this._timer !== void 0) {
|
|
5023
|
+
this._runtime.clearInterval(this._timer);
|
|
5024
|
+
this._timer = void 0;
|
|
5025
|
+
}
|
|
5026
|
+
}
|
|
5027
|
+
_emitProgress() {
|
|
5028
|
+
if (this._startedAt === void 0) {
|
|
5029
|
+
return;
|
|
5030
|
+
}
|
|
5031
|
+
const elapsedSeconds = Math.max(
|
|
5032
|
+
0,
|
|
5033
|
+
Math.floor((this._runtime.now() - this._startedAt) / 1e3)
|
|
5034
|
+
);
|
|
5035
|
+
const event = {
|
|
5036
|
+
protocol: "tt.agent.v1",
|
|
5037
|
+
type: "progress",
|
|
5038
|
+
command: "ai video",
|
|
5039
|
+
phase: "submitting",
|
|
5040
|
+
state: "working",
|
|
5041
|
+
elapsedSeconds,
|
|
5042
|
+
taskIdAvailable: false,
|
|
5043
|
+
final: false,
|
|
5044
|
+
message: "\u6B63\u5728\u6821\u9A8C\u8BF7\u6C42\u3001\u521D\u59CB\u5316\u4F1A\u8BDD\u3001\u4E0A\u4F20\u53C2\u8003\u7D20\u6750\u5E76\u521B\u5EFA\u8FDC\u7AEF\u4EFB\u52A1\uFF1B\u8FD9\u4E0D\u662F\u6700\u7EC8\u7ED3\u679C\uFF0C\u8BF7\u7B49\u5F85\u8FDB\u7A0B\u9000\u51FA\u540E\u8BFB\u53D6 stdout\u3002"
|
|
5045
|
+
};
|
|
5046
|
+
try {
|
|
5047
|
+
this._runtime.writeStderr(`${JSON.stringify(event)}
|
|
5048
|
+
`);
|
|
5049
|
+
} catch {
|
|
5050
|
+
}
|
|
5051
|
+
}
|
|
5052
|
+
};
|
|
5053
|
+
|
|
4982
5054
|
// src/commands/ai/ai-video-command.ts
|
|
4983
5055
|
var AiVideoCommand = class extends BaseSubcommandHost {
|
|
4984
5056
|
constructor(_videoGenerationService = createDefaultVideoGenerationService()) {
|
|
@@ -4988,7 +5060,7 @@ var AiVideoCommand = class extends BaseSubcommandHost {
|
|
|
4988
5060
|
_meta() {
|
|
4989
5061
|
return {
|
|
4990
5062
|
name: "video",
|
|
4991
|
-
description: "\u63D0\u4EA4\u89C6\u9891\u751F\u6210\u4EFB\u52A1\uFF1B\u9ED8\u8BA4\u8FD4\u56DE taskId\uFF0C\u4E5F\u53EF\u7B49\u5F85\
|
|
5063
|
+
description: "\u63D0\u4EA4\u89C6\u9891\u751F\u6210\u4EFB\u52A1\uFF1B\u9ED8\u8BA4\u5728\u7D20\u6750\u4E0A\u4F20\u548C\u4EFB\u52A1\u521B\u5EFA\u5B8C\u6210\u540E\u8FD4\u56DE taskId\uFF0C\u4E5F\u53EF\u7EE7\u7EED\u7B49\u5F85\u4EA7\u7269"
|
|
4992
5064
|
};
|
|
4993
5065
|
}
|
|
4994
5066
|
_configureOptions(cmd) {
|
|
@@ -5040,7 +5112,13 @@ var AiVideoCommand = class extends BaseSubcommandHost {
|
|
|
5040
5112
|
cmd.addOption(
|
|
5041
5113
|
new Option10(
|
|
5042
5114
|
"--wait",
|
|
5043
|
-
"\
|
|
5115
|
+
"\u4EFB\u52A1\u521B\u5EFA\u540E\u7EE7\u7EED\u7B49\u5F85\u4EA7\u7269\uFF1B\u672A\u6307\u5B9A\u65F6\u5728\u7D20\u6750\u4E0A\u4F20\u548C\u4EFB\u52A1\u521B\u5EFA\u5B8C\u6210\u540E\u8FD4\u56DE taskId"
|
|
5116
|
+
).default(false)
|
|
5117
|
+
);
|
|
5118
|
+
cmd.addOption(
|
|
5119
|
+
new Option10(
|
|
5120
|
+
"--quiet",
|
|
5121
|
+
"\u4E0D\u5411 stderr \u8F93\u51FA\u63D0\u4EA4\u9636\u6BB5\u7684\u7ED3\u6784\u5316\u8FDB\u5EA6\u548C\u5FC3\u8DF3"
|
|
5044
5122
|
).default(false)
|
|
5045
5123
|
);
|
|
5046
5124
|
cmd.addOption(
|
|
@@ -5060,7 +5138,10 @@ var AiVideoCommand = class extends BaseSubcommandHost {
|
|
|
5060
5138
|
[
|
|
5061
5139
|
"",
|
|
5062
5140
|
"Agent \u8C03\u7528\u5951\u7EA6:",
|
|
5063
|
-
" \u9ED8\u8BA4: \u5F02\u6B65\
|
|
5141
|
+
" \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",
|
|
5142
|
+
" \u63D0\u4EA4\u671F\u95F4 stderr \u7ACB\u5373\u8F93\u51FA\u7ED3\u6784\u5316 progress\uFF0C\u4E4B\u540E\u6BCF 10 \u79D2\u5FC3\u8DF3\uFF1B\u6700\u7EC8 stdout \u59CB\u7EC8\u53EA\u6709\u4E00\u4E2A JSON\u3002",
|
|
5143
|
+
" progress \u4E0D\u662F\u6700\u7EC8\u7ED3\u679C\uFF1B\u5FC5\u987B\u7B49\u5F85\u8FDB\u7A0B\u9000\u51FA\u3002\u82E5 runner \u8FD4\u56DE session/process handle\uFF0C\u7EE7\u7EED\u8F6E\u8BE2\u76F4\u5230\u62FF\u5230 exit code\u3002",
|
|
5144
|
+
" --quiet: \u5173\u95ED\u975E\u9519\u8BEF stderr progress\uFF1B\u771F\u5B9E\u9519\u8BEF\u4ECD\u4F1A\u5199\u5165 stderr\u3002",
|
|
5064
5145
|
" --wait: \u5355\u6B21\u8C03\u7528\u7B49\u5F85\u5B8C\u6210\uFF0C\u8FD4\u56DE\u6700\u9AD8\u753B\u8D28\u89C6\u9891\u4E91\u94FE\u63A5\u3002",
|
|
5065
5146
|
" --output <path>: \u81EA\u52A8\u9690\u542B --wait\uFF0C\u8FD4\u56DE\u4E0B\u8F7D\u540E\u7684\u7EDD\u5BF9 localPath\u3002",
|
|
5066
5147
|
" \u751F\u6210\u901A\u5E38\u7EA6 5 \u5206\u949F\uFF1B\u7B49\u5F85\u8D85\u65F6\u4ECD\u8FD4\u56DE taskId\uFF0C\u53EF\u7EE7\u7EED\u8C03\u7528 video wait\u3002",
|
|
@@ -5091,19 +5172,27 @@ var AiVideoCommand = class extends BaseSubcommandHost {
|
|
|
5091
5172
|
return this._makeError(timeoutResult.code, timeoutResult.msg);
|
|
5092
5173
|
}
|
|
5093
5174
|
}
|
|
5094
|
-
const
|
|
5095
|
-
|
|
5096
|
-
|
|
5097
|
-
|
|
5098
|
-
|
|
5099
|
-
|
|
5100
|
-
|
|
5101
|
-
|
|
5102
|
-
|
|
5103
|
-
|
|
5104
|
-
|
|
5175
|
+
const submitProgress = createVideoSubmitProgressReporter({
|
|
5176
|
+
enabled: !options.quiet
|
|
5177
|
+
});
|
|
5178
|
+
submitProgress.start();
|
|
5179
|
+
const result = await (async () => {
|
|
5180
|
+
try {
|
|
5181
|
+
return await this._videoGenerationService.generate({
|
|
5182
|
+
prompt: readPrompt(ctx),
|
|
5183
|
+
imagePaths: options.images,
|
|
5184
|
+
videoPaths: options.videos,
|
|
5185
|
+
audioPaths: options.audios,
|
|
5186
|
+
aspectRatio: options.aspectRatio,
|
|
5187
|
+
resolution: options.resolution,
|
|
5188
|
+
durationSeconds: options.durationSeconds,
|
|
5189
|
+
outputCount: options.outputCount,
|
|
5190
|
+
modelId: options.modelId
|
|
5191
|
+
});
|
|
5192
|
+
} finally {
|
|
5193
|
+
submitProgress.stop();
|
|
5105
5194
|
}
|
|
5106
|
-
);
|
|
5195
|
+
})();
|
|
5107
5196
|
if (!result.ok) {
|
|
5108
5197
|
process.stdout.write(
|
|
5109
5198
|
`${JSON.stringify(
|