mirror of
https://github.com/JimLiu/baoyu-skills.git
synced 2026-07-12 22:09:48 +08:00
49e9c46ca4
Expose Codex CLI's built-in image_gen tool through baoyu-image-gen's
standard CLI + batch flow as a dedicated provider. The provider spawns
the bundled scripts/codex-imagegen/main.ts (synced from
packages/baoyu-codex-imagegen/src/) so the skill remains self-contained
and inherits retry, cache, file-lock, and JSONL logging. No
OPENAI_API_KEY required — uses the user's Codex subscription.
New env vars: BAOYU_CODEX_IMAGEGEN_{BIN,CACHE_DIR,TIMEOUT_MS,RETRIES,LOG_FILE}.
Hyphenated provider names now resolve under-scored env vars (e.g.,
BAOYU_IMAGE_GEN_CODEX_CLI_CONCURRENCY). codex-cli is never auto-selected
— pin via --provider or default_provider in EXTEND.md.
63 lines
1.6 KiB
TypeScript
63 lines
1.6 KiB
TypeScript
import assert from "node:assert/strict";
|
|
import test from "node:test";
|
|
|
|
import type { CliArgs } from "../types.ts";
|
|
import {
|
|
getDefaultModel,
|
|
getDefaultOutputExtension,
|
|
validateArgs,
|
|
} from "./codex-cli.ts";
|
|
|
|
function makeArgs(overrides: Partial<CliArgs> = {}): CliArgs {
|
|
return {
|
|
prompt: null,
|
|
promptFiles: [],
|
|
imagePath: null,
|
|
provider: "codex-cli",
|
|
model: null,
|
|
aspectRatio: null,
|
|
aspectRatioSource: null,
|
|
size: null,
|
|
quality: "2k",
|
|
imageSize: null,
|
|
imageSizeSource: null,
|
|
imageApiDialect: null,
|
|
referenceImages: [],
|
|
n: 1,
|
|
batchFile: null,
|
|
jobs: null,
|
|
json: false,
|
|
help: false,
|
|
...overrides,
|
|
};
|
|
}
|
|
|
|
test("codex-cli defaults to codex-image-gen model and PNG output", () => {
|
|
assert.equal(getDefaultModel(), "codex-image-gen");
|
|
assert.equal(getDefaultOutputExtension(), ".png");
|
|
});
|
|
|
|
test("codex-cli validateArgs rejects n>1 with a non-retryable message", () => {
|
|
assert.throws(
|
|
() => validateArgs("codex-image-gen", makeArgs({ n: 2 })),
|
|
/supports only n=1/,
|
|
);
|
|
});
|
|
|
|
test("codex-cli validateArgs rejects ratio-metadata dialect", () => {
|
|
assert.throws(
|
|
() => validateArgs("codex-image-gen", makeArgs({ imageApiDialect: "ratio-metadata" })),
|
|
/Invalid imageApiDialect/,
|
|
);
|
|
});
|
|
|
|
test("codex-cli validateArgs accepts default n=1 with no dialect", () => {
|
|
assert.doesNotThrow(() => validateArgs("codex-image-gen", makeArgs()));
|
|
});
|
|
|
|
test("codex-cli validateArgs accepts reference images (Codex image_gen supports refs)", () => {
|
|
assert.doesNotThrow(() =>
|
|
validateArgs("codex-image-gen", makeArgs({ referenceImages: ["/tmp/a.png", "/tmp/b.png"] })),
|
|
);
|
|
});
|