diff --git a/packages/cli/src/commands/image/edit.ts b/packages/cli/src/commands/image/edit.ts index a8bf39b..42f5d14 100644 --- a/packages/cli/src/commands/image/edit.ts +++ b/packages/cli/src/commands/image/edit.ts @@ -24,6 +24,10 @@ import { promptText, failIfMissing } from "../../output/prompt.ts"; import { emitResult, emitBare } from "../../output/output.ts"; import { resolveImageSize } from "../../utils/image-size.ts"; import { join } from "path"; +import { + BOOL_FLAG_PROMPT_EXTEND_CLI_TRUE, + BOOL_FLAG_WATERMARK, +} from "../../utils/flag-descriptions.ts"; export default defineCommand({ name: "image edit", @@ -51,11 +55,11 @@ export default defineCommand({ }, { flag: "--prompt-extend ", - description: "Enable prompt extend (true/false). Default: true.", + description: BOOL_FLAG_PROMPT_EXTEND_CLI_TRUE, }, { flag: "--watermark ", - description: "Enable watermark (true/false). Default: true.", + description: BOOL_FLAG_WATERMARK, }, { flag: "--out-dir ", description: "Download images to directory" }, { flag: "--out-prefix ", description: "Filename prefix (default: edited)" }, diff --git a/packages/cli/src/commands/image/generate.ts b/packages/cli/src/commands/image/generate.ts index 9189ba2..1b89c90 100644 --- a/packages/cli/src/commands/image/generate.ts +++ b/packages/cli/src/commands/image/generate.ts @@ -26,6 +26,10 @@ import { runConcurrent, downloadParallel, getConcurrency } from "../../utils/con import { promptText, failIfMissing } from "../../output/prompt.ts"; import { emitResult, emitBare } from "../../output/output.ts"; import { resolveImageSize } from "../../utils/image-size.ts"; +import { + BOOL_FLAG_PROMPT_EXTEND_IMAGE_GENERATE, + BOOL_FLAG_WATERMARK, +} from "../../utils/flag-descriptions.ts"; import { join } from "path"; @@ -60,12 +64,11 @@ export default defineCommand({ }, { flag: "--prompt-extend ", - description: - "Enable prompt extend (true/false). Default: true for qwen-image sync models; omit for async.", + description: BOOL_FLAG_PROMPT_EXTEND_IMAGE_GENERATE, }, { flag: "--watermark ", - description: "Enable watermark (true/false). Default: true.", + description: BOOL_FLAG_WATERMARK, }, { flag: "--no-wait", diff --git a/packages/cli/src/commands/video/edit.ts b/packages/cli/src/commands/video/edit.ts index 9c69533..9ec8948 100644 --- a/packages/cli/src/commands/video/edit.ts +++ b/packages/cli/src/commands/video/edit.ts @@ -22,6 +22,10 @@ import { poll } from "../../utils/polling.ts"; import { downloadFile, formatBytes } from "../../utils/download.ts"; import { promptText, failIfMissing } from "../../output/prompt.ts"; import { emitResult, emitBare } from "../../output/output.ts"; +import { + BOOL_FLAG_PROMPT_EXTEND_API_DEFAULT, + BOOL_FLAG_WATERMARK, +} from "../../utils/flag-descriptions.ts"; export default defineCommand({ name: "video edit", @@ -55,11 +59,11 @@ export default defineCommand({ }, { flag: "--prompt-extend ", - description: "Enable prompt extend (true/false). Omit to use API default.", + description: BOOL_FLAG_PROMPT_EXTEND_API_DEFAULT, }, { flag: "--watermark ", - description: "Enable watermark (true/false). Default: true.", + description: BOOL_FLAG_WATERMARK, }, { flag: "--seed ", description: "Random seed for reproducible generation", type: "number" }, { flag: "--download ", description: "Save video to file on completion" }, diff --git a/packages/cli/src/commands/video/generate.ts b/packages/cli/src/commands/video/generate.ts index cfd2bc3..4fcab06 100644 --- a/packages/cli/src/commands/video/generate.ts +++ b/packages/cli/src/commands/video/generate.ts @@ -23,6 +23,10 @@ import { downloadFile, formatBytes } from "../../utils/download.ts"; import { runConcurrent, getConcurrency } from "../../utils/concurrent.ts"; import { promptText, failIfMissing } from "../../output/prompt.ts"; import { emitResult, emitBare } from "../../output/output.ts"; +import { + BOOL_FLAG_PROMPT_EXTEND_API_DEFAULT, + BOOL_FLAG_WATERMARK, +} from "../../utils/flag-descriptions.ts"; // Normalize shorthand resolution (720P, 1080P) to pixel format for video generation models const RESOLUTION_SHORTCUTS: Record = { @@ -62,11 +66,11 @@ export default defineCommand({ }, { flag: "--prompt-extend ", - description: "Enable prompt extend (true/false). Omit to use API default.", + description: BOOL_FLAG_PROMPT_EXTEND_API_DEFAULT, }, { flag: "--watermark ", - description: "Enable watermark (true/false). Default: true.", + description: BOOL_FLAG_WATERMARK, }, { flag: "--seed ", description: "Random seed for reproducible generation", type: "number" }, { flag: "--download ", description: "Save video to file on completion" }, diff --git a/packages/cli/src/commands/video/ref.ts b/packages/cli/src/commands/video/ref.ts index 458e0df..ecf185f 100644 --- a/packages/cli/src/commands/video/ref.ts +++ b/packages/cli/src/commands/video/ref.ts @@ -22,6 +22,10 @@ import { poll } from "../../utils/polling.ts"; import { downloadFile, formatBytes } from "../../utils/download.ts"; import { promptText, failIfMissing } from "../../output/prompt.ts"; import { emitResult, emitBare } from "../../output/output.ts"; +import { + BOOL_FLAG_PROMPT_EXTEND_API_DEFAULT, + BOOL_FLAG_WATERMARK, +} from "../../utils/flag-descriptions.ts"; export default defineCommand({ name: "video ref", @@ -65,11 +69,11 @@ export default defineCommand({ }, { flag: "--prompt-extend ", - description: "Enable prompt extend (true/false). Omit to use API default.", + description: BOOL_FLAG_PROMPT_EXTEND_API_DEFAULT, }, { flag: "--watermark ", - description: "Enable watermark (true/false). Default: true.", + description: BOOL_FLAG_WATERMARK, }, { flag: "--seed ", description: "Random seed for reproducible generation", type: "number" }, { flag: "--download ", description: "Save video to file on completion" }, diff --git a/packages/cli/src/utils/flag-descriptions.ts b/packages/cli/src/utils/flag-descriptions.ts new file mode 100644 index 0000000..9c63031 --- /dev/null +++ b/packages/cli/src/utils/flag-descriptions.ts @@ -0,0 +1,16 @@ +/** Shared --foo help text; keep wording consistent across commands. */ + +export const BOOL_FLAG_WATERMARK = + "Enable watermark (true/false). Default: true. Omit to use API default."; + +/** CLI sends prompt_extend=true when flag omitted (qwen-image edit, etc.). */ +export const BOOL_FLAG_PROMPT_EXTEND_CLI_TRUE = + "Enable prompt extend (true/false). Default: true. Omit to use API default."; + +/** Sync qwen-image defaults on; async models omit the field unless flag is set. */ +export const BOOL_FLAG_PROMPT_EXTEND_IMAGE_GENERATE = + "Enable prompt extend (true/false). Default: true for qwen-image sync. Omit to use API default."; + +/** CLI omits prompt_extend in the request when flag is unset (video commands). */ +export const BOOL_FLAG_PROMPT_EXTEND_API_DEFAULT = + "Enable prompt extend (true/false). Default: API default. Omit to use API default."; diff --git a/packages/cli/tests/args.test.ts b/packages/cli/tests/args.test.ts index 1a72036..890deeb 100644 --- a/packages/cli/tests/args.test.ts +++ b/packages/cli/tests/args.test.ts @@ -1,11 +1,12 @@ import { expect, test } from "vite-plus/test"; import { ExitCode, GLOBAL_OPTIONS } from "bailian-cli-core"; import { parseFlags } from "../src/args.ts"; +import { BOOL_FLAG_WATERMARK } from "../src/utils/flag-descriptions.ts"; const IMAGE_GENERATE_OPTIONS = [ { flag: "--prompt ", description: "Image description", required: true }, { flag: "--model ", description: "Model ID" }, - { flag: "--watermark ", description: "Enable watermark (true/false). Default: true." }, + { flag: "--watermark ", description: BOOL_FLAG_WATERMARK }, ]; test("parseFlags rejects unknown long flags", () => {