@dorely13/ai-imagegen-cli 0.1.1 → 0.1.3
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/help.js +63 -16
- package/dist/index.js +178 -39
- package/dist/index.js.map +1 -1
- package/dist/skill.js +56 -0
- package/package.json +3 -2
- package/skill/SKILL.md +16 -0
package/dist/help.js
CHANGED
|
@@ -1,19 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
Usage:
|
|
4
|
-
imagegen auth codex login [--timeout <minutes>] [--no-open]
|
|
5
|
-
imagegen auth codex status [--show-path]
|
|
6
|
-
imagegen auth codex logout
|
|
7
|
-
imagegen generate --prompt <text> --out <path|dir> [--provider <name>] [options]
|
|
8
|
-
imagegen edit --prompt <text> --source <file> [--mask <file>] --out <path|dir> [--provider <name>] [options]
|
|
9
|
-
imagegen providers
|
|
10
|
-
imagegen help [command]
|
|
11
|
-
|
|
12
|
-
Image options (generate, edit):
|
|
1
|
+
const IMAGE_OPTIONS = `Image options (generate, edit):
|
|
13
2
|
--prompt <text> Prompt text (required)
|
|
14
3
|
--out <path|dir> Output file or directory (required)
|
|
15
4
|
--provider <name> Repeatable. Defaults to the only configured provider;
|
|
16
5
|
required when several are configured.
|
|
6
|
+
--model <id> Image model override (Codex default gpt-image-2.5-flare)
|
|
17
7
|
--reference <file> Reference image for continuity (repeatable, max 4)
|
|
18
8
|
--size <size> auto, WIDTHxHEIGHT, aspect (16:9), or preset
|
|
19
9
|
square, portrait, landscape, wide (validated per
|
|
@@ -22,6 +12,49 @@ Image options (generate, edit):
|
|
|
22
12
|
--format <format> png, jpeg, or webp (default png)
|
|
23
13
|
--count <n> Number of images, 1-4 (default 1)
|
|
24
14
|
|
|
15
|
+
Supported Codex models (account availability is determined by the provider):
|
|
16
|
+
gpt-image-2.5-flare Default; fast image generation and editing
|
|
17
|
+
gpt-image-2.5-sunburst Higher-precision image generation and editing
|
|
18
|
+
gpt-image-2 Previous model; retained for compatibility
|
|
19
|
+
|
|
20
|
+
Use full model IDs; other provider-supported IDs may also be supplied.
|
|
21
|
+
Model precedence: --model > constructor imageModel (library callers) >
|
|
22
|
+
IMAGEGEN_CODEX_IMAGE_MODEL > gpt-image-2.5-flare.
|
|
23
|
+
IMAGEGEN_CODEX_MODEL configures orchestration separately; --model selects images.
|
|
24
|
+
|
|
25
|
+
Codex quality: auto (default), low, medium, high; Flare/Sunburst also support
|
|
26
|
+
xhigh and max. gpt-image-2 rejects xhigh/max.
|
|
27
|
+
`;
|
|
28
|
+
const GENERATE_EXAMPLES = `Examples:
|
|
29
|
+
imagegen generate --prompt "a lighthouse at dawn" --out ./lighthouse.png
|
|
30
|
+
imagegen generate --model gpt-image-2 --prompt "a lighthouse" --out ./classic.png
|
|
31
|
+
imagegen generate --model gpt-image-2.5-sunburst --quality max --prompt "a product photo" --out ./product.png
|
|
32
|
+
`;
|
|
33
|
+
const EDIT_EXAMPLES = `Edit options:
|
|
34
|
+
--source <file> Source image (required)
|
|
35
|
+
--mask <file> Optional edit mask
|
|
36
|
+
|
|
37
|
+
Examples:
|
|
38
|
+
imagegen edit --format webp --source ./product.png --prompt "make the product blue" --out ./blue.webp
|
|
39
|
+
imagegen edit --model gpt-image-2.5-sunburst --quality max --source ./product.png --prompt "add a ribbon" --out ./ribbon.png
|
|
40
|
+
`;
|
|
41
|
+
export const USAGE = `imagegen - provider-agnostic image generation CLI
|
|
42
|
+
|
|
43
|
+
Usage:
|
|
44
|
+
imagegen auth codex login [--timeout <minutes>] [--no-open]
|
|
45
|
+
imagegen auth codex status [--show-path]
|
|
46
|
+
imagegen auth codex logout
|
|
47
|
+
imagegen generate --prompt <text> --out <path|dir> [--provider <name>] [options]
|
|
48
|
+
imagegen edit --prompt <text> --source <file> [--mask <file>] --out <path|dir> [--provider <name>] [options]
|
|
49
|
+
imagegen providers
|
|
50
|
+
imagegen skill
|
|
51
|
+
imagegen skill install --target <claude|codex|skills-dir> [--target <...>] [--force]
|
|
52
|
+
imagegen help [command]
|
|
53
|
+
|
|
54
|
+
${IMAGE_OPTIONS}
|
|
55
|
+
${GENERATE_EXAMPLES}
|
|
56
|
+
${EDIT_EXAMPLES}
|
|
57
|
+
|
|
25
58
|
Auth options:
|
|
26
59
|
--timeout <minutes> Login wait timeout (default 10)
|
|
27
60
|
--no-open Print the URL without opening a browser
|
|
@@ -63,16 +96,16 @@ Usage:
|
|
|
63
96
|
Usage:
|
|
64
97
|
imagegen generate --prompt <text> --out <path|dir> [--provider <name>] [options]
|
|
65
98
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
--format png|jpeg|webp, --count 1-4.
|
|
99
|
+
${IMAGE_OPTIONS}
|
|
100
|
+
${GENERATE_EXAMPLES}
|
|
69
101
|
`,
|
|
70
102
|
edit: `imagegen edit - edit a source image with a prompt
|
|
71
103
|
|
|
72
104
|
Usage:
|
|
73
105
|
imagegen edit --prompt <text> --source <file> [--mask <file>] --out <path|dir> [--provider <name>] [options]
|
|
74
106
|
|
|
75
|
-
|
|
107
|
+
${IMAGE_OPTIONS}
|
|
108
|
+
${EDIT_EXAMPLES}
|
|
76
109
|
`,
|
|
77
110
|
providers: `imagegen providers - list registered and configured providers
|
|
78
111
|
|
|
@@ -80,6 +113,20 @@ Usage:
|
|
|
80
113
|
imagegen providers
|
|
81
114
|
|
|
82
115
|
Prints JSON with each provider and whether it is configured.
|
|
116
|
+
`,
|
|
117
|
+
skill: `imagegen skill - print or install the reusable agent skill
|
|
118
|
+
|
|
119
|
+
Usage:
|
|
120
|
+
imagegen skill
|
|
121
|
+
imagegen skill install --target <claude|codex|skills-dir> [--target <...>] [--force]
|
|
122
|
+
|
|
123
|
+
Without install, prints SKILL.md as Markdown. Install accepts repeatable targets:
|
|
124
|
+
claude ~/.claude/skills/imagegen-cli/SKILL.md
|
|
125
|
+
codex ~/.agents/skills/imagegen-cli/SKILL.md
|
|
126
|
+
<skills-dir> <skills-dir>/imagegen-cli/SKILL.md
|
|
127
|
+
|
|
128
|
+
Install prints JSON with each path and status. Existing different content is
|
|
129
|
+
preserved unless --force is passed.
|
|
83
130
|
`,
|
|
84
131
|
help: `imagegen help - show human-readable usage
|
|
85
132
|
|
package/dist/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
3
|
// src/index.ts
|
|
4
|
-
import { mkdir, readFile, stat, writeFile } from "node:fs/promises";
|
|
5
|
-
import { basename, dirname, extname, join as
|
|
4
|
+
import { mkdir as mkdir2, readFile as readFile2, stat, writeFile as writeFile2 } from "node:fs/promises";
|
|
5
|
+
import { basename, dirname as dirname2, extname, join as join3, resolve as resolve2 } from "node:path";
|
|
6
6
|
|
|
7
7
|
// ../../packages/core/dist/types.js
|
|
8
8
|
var ProviderError = class extends Error {
|
|
@@ -226,7 +226,7 @@ var RESPONSES_ENDPOINT = "https://chatgpt.com/backend-api/codex/responses";
|
|
|
226
226
|
var DEFAULT_REDIRECT_URI = "http://localhost:1455/auth/callback";
|
|
227
227
|
var LOOPBACK_PORT = 1455;
|
|
228
228
|
var CALLBACK_PATH = "/auth/callback";
|
|
229
|
-
var DEFAULT_IMAGE_MODEL = "gpt-image-2";
|
|
229
|
+
var DEFAULT_IMAGE_MODEL = "gpt-image-2.5-flare";
|
|
230
230
|
var DEFAULT_ORCHESTRATION_MODEL = "gpt-5.6-luna";
|
|
231
231
|
var DEFAULT_QUALITY = "auto";
|
|
232
232
|
var REQUEST_TIMEOUT_SECONDS = 600;
|
|
@@ -278,7 +278,7 @@ function callbackPage(title, message) {
|
|
|
278
278
|
return `<!doctype html><html><head><meta charset="utf-8"><title>${title}</title></head><body style="font-family:sans-serif;padding:2rem"><h1>${title}</h1><p>${message}</p></body></html>`;
|
|
279
279
|
}
|
|
280
280
|
async function waitForOAuthCallback(timeoutMs = FLOW_TIMEOUT_MINUTES * 60 * 1e3, port = LOOPBACK_PORT) {
|
|
281
|
-
return new Promise((
|
|
281
|
+
return new Promise((resolve3, reject) => {
|
|
282
282
|
let server;
|
|
283
283
|
const timer = setTimeout(() => {
|
|
284
284
|
closeServer();
|
|
@@ -318,7 +318,7 @@ async function waitForOAuthCallback(timeoutMs = FLOW_TIMEOUT_MINUTES * 60 * 1e3,
|
|
|
318
318
|
res.writeHead(200, { "content-type": "text/html" });
|
|
319
319
|
res.end(callbackPage("Connected", "ImageGenCli is connected. You can close this tab."));
|
|
320
320
|
closeServer();
|
|
321
|
-
|
|
321
|
+
resolve3({ code, state });
|
|
322
322
|
} catch (error) {
|
|
323
323
|
fail2(error instanceof Error ? error : new LoopbackError("OAuth callback failed.", "callback_error"));
|
|
324
324
|
}
|
|
@@ -552,9 +552,9 @@ var FileTokenStore = class {
|
|
|
552
552
|
return { backend: "file", location: this.filePath };
|
|
553
553
|
}
|
|
554
554
|
async readAll() {
|
|
555
|
-
const { readFile:
|
|
555
|
+
const { readFile: readFile3 } = await import("node:fs/promises");
|
|
556
556
|
try {
|
|
557
|
-
const raw = await
|
|
557
|
+
const raw = await readFile3(this.filePath, "utf8");
|
|
558
558
|
return JSON.parse(raw);
|
|
559
559
|
} catch (error) {
|
|
560
560
|
if (error.code === "ENOENT")
|
|
@@ -563,10 +563,10 @@ var FileTokenStore = class {
|
|
|
563
563
|
}
|
|
564
564
|
}
|
|
565
565
|
async writeAll(all) {
|
|
566
|
-
const { mkdir:
|
|
567
|
-
const { dirname:
|
|
568
|
-
await
|
|
569
|
-
await
|
|
566
|
+
const { mkdir: mkdir3, writeFile: writeFile3, chmod } = await import("node:fs/promises");
|
|
567
|
+
const { dirname: dirname3 } = await import("node:path");
|
|
568
|
+
await mkdir3(dirname3(this.filePath), { recursive: true });
|
|
569
|
+
await writeFile3(this.filePath, JSON.stringify(all, null, 2), { mode: 384 });
|
|
570
570
|
if (process.platform !== "win32") {
|
|
571
571
|
await chmod(this.filePath, 384);
|
|
572
572
|
}
|
|
@@ -791,8 +791,10 @@ var CodexImageProvider = class {
|
|
|
791
791
|
async generate(request) {
|
|
792
792
|
const format = normalizeOutputFormat(request.format);
|
|
793
793
|
const size = this.sizePolicy.resolveSize(request.size);
|
|
794
|
+
const imageModel2 = this.resolveImageModel(request);
|
|
794
795
|
return this.runAll({
|
|
795
796
|
format,
|
|
797
|
+
imageModel: imageModel2,
|
|
796
798
|
count: normalizeCount(request.count),
|
|
797
799
|
prompt: request.prompt,
|
|
798
800
|
size,
|
|
@@ -804,7 +806,7 @@ var CodexImageProvider = class {
|
|
|
804
806
|
size: size.size,
|
|
805
807
|
quality: request.quality ?? DEFAULT_QUALITY,
|
|
806
808
|
outputFormat: format,
|
|
807
|
-
imageModel:
|
|
809
|
+
imageModel: imageModel2,
|
|
808
810
|
action: "generate",
|
|
809
811
|
partialImages: this.partialImages
|
|
810
812
|
})
|
|
@@ -814,9 +816,11 @@ var CodexImageProvider = class {
|
|
|
814
816
|
async edit(request) {
|
|
815
817
|
const format = normalizeOutputFormat(request.format);
|
|
816
818
|
const size = this.sizePolicy.resolveSize(request.size);
|
|
819
|
+
const imageModel2 = this.resolveImageModel(request);
|
|
817
820
|
const references = [request.sourceImage, ...request.referenceImages ?? []];
|
|
818
821
|
return this.runAll({
|
|
819
822
|
format,
|
|
823
|
+
imageModel: imageModel2,
|
|
820
824
|
count: normalizeCount(request.count),
|
|
821
825
|
prompt: request.prompt,
|
|
822
826
|
size,
|
|
@@ -825,7 +829,7 @@ var CodexImageProvider = class {
|
|
|
825
829
|
size: size.size,
|
|
826
830
|
quality: request.quality ?? DEFAULT_QUALITY,
|
|
827
831
|
outputFormat: format,
|
|
828
|
-
imageModel:
|
|
832
|
+
imageModel: imageModel2,
|
|
829
833
|
action: "edit",
|
|
830
834
|
partialImages: this.partialImages
|
|
831
835
|
});
|
|
@@ -841,12 +845,22 @@ var CodexImageProvider = class {
|
|
|
841
845
|
}
|
|
842
846
|
});
|
|
843
847
|
}
|
|
848
|
+
resolveImageModel(request) {
|
|
849
|
+
const model = (request.model ?? this.imageModel).trim();
|
|
850
|
+
if (!model)
|
|
851
|
+
throw new ProviderError({ kind: "usage", message: "Image model must not be blank." });
|
|
852
|
+
const quality = request.quality?.trim().toLowerCase();
|
|
853
|
+
if (model === "gpt-image-2" && (quality === "xhigh" || quality === "max")) {
|
|
854
|
+
throw new ProviderError({ kind: "usage", message: "gpt-image-2 supports quality auto, low, medium, or high. Use Flare or Sunburst for xhigh or max." });
|
|
855
|
+
}
|
|
856
|
+
return model;
|
|
857
|
+
}
|
|
844
858
|
async runAll(args) {
|
|
845
859
|
const images = [];
|
|
846
860
|
for (let i = 0; i < args.count; i += 1) {
|
|
847
861
|
images.push(await this.sendOnce(args.build(), args.format, args.prompt, args.size));
|
|
848
862
|
}
|
|
849
|
-
return { provider: this.name, imageModel:
|
|
863
|
+
return { provider: this.name, imageModel: args.imageModel, images };
|
|
850
864
|
}
|
|
851
865
|
async sendOnce(payload, format, prompt, size) {
|
|
852
866
|
const accessToken = await this.tokens.getValidAccessToken();
|
|
@@ -994,22 +1008,12 @@ function createCodexEntry() {
|
|
|
994
1008
|
}
|
|
995
1009
|
|
|
996
1010
|
// src/help.ts
|
|
997
|
-
var
|
|
998
|
-
|
|
999
|
-
Usage:
|
|
1000
|
-
imagegen auth codex login [--timeout <minutes>] [--no-open]
|
|
1001
|
-
imagegen auth codex status [--show-path]
|
|
1002
|
-
imagegen auth codex logout
|
|
1003
|
-
imagegen generate --prompt <text> --out <path|dir> [--provider <name>] [options]
|
|
1004
|
-
imagegen edit --prompt <text> --source <file> [--mask <file>] --out <path|dir> [--provider <name>] [options]
|
|
1005
|
-
imagegen providers
|
|
1006
|
-
imagegen help [command]
|
|
1007
|
-
|
|
1008
|
-
Image options (generate, edit):
|
|
1011
|
+
var IMAGE_OPTIONS = `Image options (generate, edit):
|
|
1009
1012
|
--prompt <text> Prompt text (required)
|
|
1010
1013
|
--out <path|dir> Output file or directory (required)
|
|
1011
1014
|
--provider <name> Repeatable. Defaults to the only configured provider;
|
|
1012
1015
|
required when several are configured.
|
|
1016
|
+
--model <id> Image model override (Codex default gpt-image-2.5-flare)
|
|
1013
1017
|
--reference <file> Reference image for continuity (repeatable, max 4)
|
|
1014
1018
|
--size <size> auto, WIDTHxHEIGHT, aspect (16:9), or preset
|
|
1015
1019
|
square, portrait, landscape, wide (validated per
|
|
@@ -1018,6 +1022,49 @@ Image options (generate, edit):
|
|
|
1018
1022
|
--format <format> png, jpeg, or webp (default png)
|
|
1019
1023
|
--count <n> Number of images, 1-4 (default 1)
|
|
1020
1024
|
|
|
1025
|
+
Supported Codex models (account availability is determined by the provider):
|
|
1026
|
+
gpt-image-2.5-flare Default; fast image generation and editing
|
|
1027
|
+
gpt-image-2.5-sunburst Higher-precision image generation and editing
|
|
1028
|
+
gpt-image-2 Previous model; retained for compatibility
|
|
1029
|
+
|
|
1030
|
+
Use full model IDs; other provider-supported IDs may also be supplied.
|
|
1031
|
+
Model precedence: --model > constructor imageModel (library callers) >
|
|
1032
|
+
IMAGEGEN_CODEX_IMAGE_MODEL > gpt-image-2.5-flare.
|
|
1033
|
+
IMAGEGEN_CODEX_MODEL configures orchestration separately; --model selects images.
|
|
1034
|
+
|
|
1035
|
+
Codex quality: auto (default), low, medium, high; Flare/Sunburst also support
|
|
1036
|
+
xhigh and max. gpt-image-2 rejects xhigh/max.
|
|
1037
|
+
`;
|
|
1038
|
+
var GENERATE_EXAMPLES = `Examples:
|
|
1039
|
+
imagegen generate --prompt "a lighthouse at dawn" --out ./lighthouse.png
|
|
1040
|
+
imagegen generate --model gpt-image-2 --prompt "a lighthouse" --out ./classic.png
|
|
1041
|
+
imagegen generate --model gpt-image-2.5-sunburst --quality max --prompt "a product photo" --out ./product.png
|
|
1042
|
+
`;
|
|
1043
|
+
var EDIT_EXAMPLES = `Edit options:
|
|
1044
|
+
--source <file> Source image (required)
|
|
1045
|
+
--mask <file> Optional edit mask
|
|
1046
|
+
|
|
1047
|
+
Examples:
|
|
1048
|
+
imagegen edit --format webp --source ./product.png --prompt "make the product blue" --out ./blue.webp
|
|
1049
|
+
imagegen edit --model gpt-image-2.5-sunburst --quality max --source ./product.png --prompt "add a ribbon" --out ./ribbon.png
|
|
1050
|
+
`;
|
|
1051
|
+
var USAGE = `imagegen - provider-agnostic image generation CLI
|
|
1052
|
+
|
|
1053
|
+
Usage:
|
|
1054
|
+
imagegen auth codex login [--timeout <minutes>] [--no-open]
|
|
1055
|
+
imagegen auth codex status [--show-path]
|
|
1056
|
+
imagegen auth codex logout
|
|
1057
|
+
imagegen generate --prompt <text> --out <path|dir> [--provider <name>] [options]
|
|
1058
|
+
imagegen edit --prompt <text> --source <file> [--mask <file>] --out <path|dir> [--provider <name>] [options]
|
|
1059
|
+
imagegen providers
|
|
1060
|
+
imagegen skill
|
|
1061
|
+
imagegen skill install --target <claude|codex|skills-dir> [--target <...>] [--force]
|
|
1062
|
+
imagegen help [command]
|
|
1063
|
+
|
|
1064
|
+
${IMAGE_OPTIONS}
|
|
1065
|
+
${GENERATE_EXAMPLES}
|
|
1066
|
+
${EDIT_EXAMPLES}
|
|
1067
|
+
|
|
1021
1068
|
Auth options:
|
|
1022
1069
|
--timeout <minutes> Login wait timeout (default 10)
|
|
1023
1070
|
--no-open Print the URL without opening a browser
|
|
@@ -1059,16 +1106,16 @@ Usage:
|
|
|
1059
1106
|
Usage:
|
|
1060
1107
|
imagegen generate --prompt <text> --out <path|dir> [--provider <name>] [options]
|
|
1061
1108
|
|
|
1062
|
-
|
|
1063
|
-
|
|
1064
|
-
--format png|jpeg|webp, --count 1-4.
|
|
1109
|
+
${IMAGE_OPTIONS}
|
|
1110
|
+
${GENERATE_EXAMPLES}
|
|
1065
1111
|
`,
|
|
1066
1112
|
edit: `imagegen edit - edit a source image with a prompt
|
|
1067
1113
|
|
|
1068
1114
|
Usage:
|
|
1069
1115
|
imagegen edit --prompt <text> --source <file> [--mask <file>] --out <path|dir> [--provider <name>] [options]
|
|
1070
1116
|
|
|
1071
|
-
|
|
1117
|
+
${IMAGE_OPTIONS}
|
|
1118
|
+
${EDIT_EXAMPLES}
|
|
1072
1119
|
`,
|
|
1073
1120
|
providers: `imagegen providers - list registered and configured providers
|
|
1074
1121
|
|
|
@@ -1076,6 +1123,20 @@ Usage:
|
|
|
1076
1123
|
imagegen providers
|
|
1077
1124
|
|
|
1078
1125
|
Prints JSON with each provider and whether it is configured.
|
|
1126
|
+
`,
|
|
1127
|
+
skill: `imagegen skill - print or install the reusable agent skill
|
|
1128
|
+
|
|
1129
|
+
Usage:
|
|
1130
|
+
imagegen skill
|
|
1131
|
+
imagegen skill install --target <claude|codex|skills-dir> [--target <...>] [--force]
|
|
1132
|
+
|
|
1133
|
+
Without install, prints SKILL.md as Markdown. Install accepts repeatable targets:
|
|
1134
|
+
claude ~/.claude/skills/imagegen-cli/SKILL.md
|
|
1135
|
+
codex ~/.agents/skills/imagegen-cli/SKILL.md
|
|
1136
|
+
<skills-dir> <skills-dir>/imagegen-cli/SKILL.md
|
|
1137
|
+
|
|
1138
|
+
Install prints JSON with each path and status. Existing different content is
|
|
1139
|
+
preserved unless --force is passed.
|
|
1079
1140
|
`,
|
|
1080
1141
|
help: `imagegen help - show human-readable usage
|
|
1081
1142
|
|
|
@@ -1092,6 +1153,54 @@ ${USAGE}`;
|
|
|
1092
1153
|
return text;
|
|
1093
1154
|
}
|
|
1094
1155
|
|
|
1156
|
+
// src/skill.ts
|
|
1157
|
+
import { mkdir, readFile, writeFile } from "node:fs/promises";
|
|
1158
|
+
import { homedir as homedir2 } from "node:os";
|
|
1159
|
+
import { dirname, join as join2, resolve } from "node:path";
|
|
1160
|
+
var SKILL_NAME = "imagegen-cli";
|
|
1161
|
+
var SkillExistsError = class extends Error {
|
|
1162
|
+
constructor(path) {
|
|
1163
|
+
super(`Skill differs at ${path}. Re-run with --force to replace it.`);
|
|
1164
|
+
this.name = "SkillExistsError";
|
|
1165
|
+
}
|
|
1166
|
+
};
|
|
1167
|
+
async function skillText() {
|
|
1168
|
+
return readFile(new URL("../skill/SKILL.md", import.meta.url), "utf8");
|
|
1169
|
+
}
|
|
1170
|
+
function targetPath(target) {
|
|
1171
|
+
const root = target === "claude" ? join2(homedir2(), ".claude", "skills") : target === "codex" ? join2(homedir2(), ".agents", "skills") : resolve(target);
|
|
1172
|
+
return join2(root, SKILL_NAME, "SKILL.md");
|
|
1173
|
+
}
|
|
1174
|
+
async function existingText(path) {
|
|
1175
|
+
try {
|
|
1176
|
+
return await readFile(path, "utf8");
|
|
1177
|
+
} catch (error) {
|
|
1178
|
+
if (error.code === "ENOENT") return void 0;
|
|
1179
|
+
throw error;
|
|
1180
|
+
}
|
|
1181
|
+
}
|
|
1182
|
+
async function installSkill(targets, force) {
|
|
1183
|
+
const content = await skillText();
|
|
1184
|
+
const planned = /* @__PURE__ */ new Map();
|
|
1185
|
+
for (const target of targets) {
|
|
1186
|
+
const path = targetPath(target);
|
|
1187
|
+
if (planned.has(path)) continue;
|
|
1188
|
+
const existing = await existingText(path);
|
|
1189
|
+
if (existing !== void 0 && existing !== content && !force) throw new SkillExistsError(path);
|
|
1190
|
+
planned.set(path, {
|
|
1191
|
+
target,
|
|
1192
|
+
path,
|
|
1193
|
+
status: existing === void 0 ? "installed" : existing === content ? "up-to-date" : "updated"
|
|
1194
|
+
});
|
|
1195
|
+
}
|
|
1196
|
+
for (const item of planned.values()) {
|
|
1197
|
+
if (item.status === "up-to-date") continue;
|
|
1198
|
+
await mkdir(dirname(item.path), { recursive: true });
|
|
1199
|
+
await writeFile(item.path, content, { encoding: "utf8", flag: item.status === "installed" ? "wx" : "w" });
|
|
1200
|
+
}
|
|
1201
|
+
return [...planned.values()];
|
|
1202
|
+
}
|
|
1203
|
+
|
|
1095
1204
|
// src/index.ts
|
|
1096
1205
|
var EXIT_USAGE = 2;
|
|
1097
1206
|
var EXIT_AUTH = 3;
|
|
@@ -1113,11 +1222,14 @@ function parseArgs(argv) {
|
|
|
1113
1222
|
}
|
|
1114
1223
|
if (arg.startsWith("--")) {
|
|
1115
1224
|
const key = arg.slice(2);
|
|
1116
|
-
if (
|
|
1225
|
+
if (!["prompt", "out", "provider", "model", "reference", "size", "quality", "format", "count", "source", "mask", "timeout", "no-open", "show-path", "target", "force"].includes(key)) {
|
|
1226
|
+
fail("usage", `Unknown option --${key}. Run imagegen help.`, EXIT_USAGE);
|
|
1227
|
+
}
|
|
1228
|
+
if (key === "no-open" || key === "show-path" || key === "force") {
|
|
1117
1229
|
flags.set(key, true);
|
|
1118
1230
|
continue;
|
|
1119
1231
|
}
|
|
1120
|
-
if (key === "reference" || key === "provider") {
|
|
1232
|
+
if (key === "reference" || key === "provider" || key === "target") {
|
|
1121
1233
|
const value2 = argv[i + 1];
|
|
1122
1234
|
if (!value2 || value2.startsWith("--")) fail("usage", `Missing value for --${key}.`, EXIT_USAGE);
|
|
1123
1235
|
i += 1;
|
|
@@ -1139,6 +1251,11 @@ function flagValue(flags, key) {
|
|
|
1139
1251
|
const value = flags.get(key);
|
|
1140
1252
|
return typeof value === "string" ? value : void 0;
|
|
1141
1253
|
}
|
|
1254
|
+
function imageModel(flags) {
|
|
1255
|
+
const model = flagValue(flags, "model")?.trim();
|
|
1256
|
+
if (model !== void 0 && !model) fail("usage", "--model must not be blank.", EXIT_USAGE);
|
|
1257
|
+
return model;
|
|
1258
|
+
}
|
|
1142
1259
|
function redirectUri() {
|
|
1143
1260
|
return process.env["IMAGEGEN_CODEX_REDIRECT_URI"] ?? DEFAULT_REDIRECT_URI;
|
|
1144
1261
|
}
|
|
@@ -1156,7 +1273,7 @@ function redirectPort(uri) {
|
|
|
1156
1273
|
async function loadImageInput(path, label) {
|
|
1157
1274
|
let data;
|
|
1158
1275
|
try {
|
|
1159
|
-
data = await
|
|
1276
|
+
data = await readFile2(path);
|
|
1160
1277
|
} catch {
|
|
1161
1278
|
fail("io", `${label} not found: ${path}`, EXIT_IO);
|
|
1162
1279
|
}
|
|
@@ -1207,7 +1324,7 @@ function requestedProviders(flags) {
|
|
|
1207
1324
|
return raw;
|
|
1208
1325
|
}
|
|
1209
1326
|
async function resolveOutPaths(out, providerName, multiProvider, count, format) {
|
|
1210
|
-
const resolved =
|
|
1327
|
+
const resolved = resolve2(out);
|
|
1211
1328
|
let isDir = false;
|
|
1212
1329
|
try {
|
|
1213
1330
|
const info = await stat(resolved);
|
|
@@ -1218,12 +1335,12 @@ async function resolveOutPaths(out, providerName, multiProvider, count, format)
|
|
|
1218
1335
|
const extension = `.${normalizeOutputFormat(format)}`;
|
|
1219
1336
|
const prefix = multiProvider ? `${providerName}-` : "";
|
|
1220
1337
|
if (isDir) {
|
|
1221
|
-
return Array.from({ length: count }, (_, i) =>
|
|
1338
|
+
return Array.from({ length: count }, (_, i) => join3(resolved, `${prefix}image-${i + 1}${extension}`));
|
|
1222
1339
|
}
|
|
1223
1340
|
if (count > 1 || multiProvider) {
|
|
1224
|
-
const dir =
|
|
1341
|
+
const dir = dirname2(resolved);
|
|
1225
1342
|
const base = basename(resolved, extname(resolved));
|
|
1226
|
-
return Array.from({ length: count }, (_, i) =>
|
|
1343
|
+
return Array.from({ length: count }, (_, i) => join3(dir, `${prefix}${base}-${i + 1}${extension}`));
|
|
1227
1344
|
}
|
|
1228
1345
|
return [resolved.endsWith(extension) ? resolved : `${resolved}${extension}`];
|
|
1229
1346
|
}
|
|
@@ -1248,8 +1365,8 @@ async function saveImages(result, paths) {
|
|
|
1248
1365
|
for (let i = 0; i < result.images.length; i += 1) {
|
|
1249
1366
|
const path = paths[i];
|
|
1250
1367
|
try {
|
|
1251
|
-
await
|
|
1252
|
-
await
|
|
1368
|
+
await mkdir2(dirname2(path), { recursive: true });
|
|
1369
|
+
await writeFile2(path, Buffer.from(result.images[i].data));
|
|
1253
1370
|
} catch {
|
|
1254
1371
|
fail("io", `Could not write output file: ${path}`, EXIT_IO);
|
|
1255
1372
|
}
|
|
@@ -1342,8 +1459,10 @@ async function runGenerate(flags) {
|
|
|
1342
1459
|
const out = flagValue(flags, "out");
|
|
1343
1460
|
if (!prompt) fail("usage", "Missing required --prompt.", EXIT_USAGE);
|
|
1344
1461
|
if (!out) fail("usage", "Missing required --out.", EXIT_USAGE);
|
|
1462
|
+
const model = imageModel(flags);
|
|
1345
1463
|
const providers = await resolveProviders(requestedProviders(flags));
|
|
1346
1464
|
const request = {
|
|
1465
|
+
model,
|
|
1347
1466
|
prompt,
|
|
1348
1467
|
out,
|
|
1349
1468
|
size: flagValue(flags, "size"),
|
|
@@ -1370,6 +1489,7 @@ async function runEdit(flags) {
|
|
|
1370
1489
|
if (!out) fail("usage", "Missing required --out.", EXIT_USAGE);
|
|
1371
1490
|
if (!source) fail("usage", "Missing required --source.", EXIT_USAGE);
|
|
1372
1491
|
const request = {
|
|
1492
|
+
model: imageModel(flags),
|
|
1373
1493
|
prompt,
|
|
1374
1494
|
out,
|
|
1375
1495
|
size: flagValue(flags, "size"),
|
|
@@ -1413,6 +1533,25 @@ async function main() {
|
|
|
1413
1533
|
process.stdout.write(helpFor(sub));
|
|
1414
1534
|
return;
|
|
1415
1535
|
}
|
|
1536
|
+
if (command === "skill" && !sub) {
|
|
1537
|
+
process.stdout.write(await skillText());
|
|
1538
|
+
return;
|
|
1539
|
+
}
|
|
1540
|
+
if (command === "skill" && sub === "install" && !subSub) {
|
|
1541
|
+
const targets = flags.get("target");
|
|
1542
|
+
if (!Array.isArray(targets) || targets.length === 0) {
|
|
1543
|
+
fail("usage", "Missing --target. Run imagegen help skill.", EXIT_USAGE);
|
|
1544
|
+
}
|
|
1545
|
+
try {
|
|
1546
|
+
const installed = await installSkill(targets, flags.get("force") === true);
|
|
1547
|
+
process.stdout.write(`${JSON.stringify({ skill: "imagegen-cli", installed })}
|
|
1548
|
+
`);
|
|
1549
|
+
} catch (error) {
|
|
1550
|
+
if (error instanceof SkillExistsError) fail("usage", error.message, EXIT_USAGE);
|
|
1551
|
+
fail("io", error instanceof Error ? error.message : String(error), EXIT_IO);
|
|
1552
|
+
}
|
|
1553
|
+
return;
|
|
1554
|
+
}
|
|
1416
1555
|
if (command === "providers" && !sub) {
|
|
1417
1556
|
await runProviders();
|
|
1418
1557
|
return;
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/skill.js
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { mkdir, readFile, writeFile } from "node:fs/promises";
|
|
2
|
+
import { homedir } from "node:os";
|
|
3
|
+
import { dirname, join, resolve } from "node:path";
|
|
4
|
+
const SKILL_NAME = "imagegen-cli";
|
|
5
|
+
export class SkillExistsError extends Error {
|
|
6
|
+
constructor(path) {
|
|
7
|
+
super(`Skill differs at ${path}. Re-run with --force to replace it.`);
|
|
8
|
+
this.name = "SkillExistsError";
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
export async function skillText() {
|
|
12
|
+
return readFile(new URL("../skill/SKILL.md", import.meta.url), "utf8");
|
|
13
|
+
}
|
|
14
|
+
function targetPath(target) {
|
|
15
|
+
const root = target === "claude"
|
|
16
|
+
? join(homedir(), ".claude", "skills")
|
|
17
|
+
: target === "codex"
|
|
18
|
+
? join(homedir(), ".agents", "skills")
|
|
19
|
+
: resolve(target);
|
|
20
|
+
return join(root, SKILL_NAME, "SKILL.md");
|
|
21
|
+
}
|
|
22
|
+
async function existingText(path) {
|
|
23
|
+
try {
|
|
24
|
+
return await readFile(path, "utf8");
|
|
25
|
+
}
|
|
26
|
+
catch (error) {
|
|
27
|
+
if (error.code === "ENOENT")
|
|
28
|
+
return undefined;
|
|
29
|
+
throw error;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
export async function installSkill(targets, force) {
|
|
33
|
+
const content = await skillText();
|
|
34
|
+
const planned = new Map();
|
|
35
|
+
for (const target of targets) {
|
|
36
|
+
const path = targetPath(target);
|
|
37
|
+
if (planned.has(path))
|
|
38
|
+
continue;
|
|
39
|
+
const existing = await existingText(path);
|
|
40
|
+
if (existing !== undefined && existing !== content && !force)
|
|
41
|
+
throw new SkillExistsError(path);
|
|
42
|
+
planned.set(path, {
|
|
43
|
+
target,
|
|
44
|
+
path,
|
|
45
|
+
status: existing === undefined ? "installed" : existing === content ? "up-to-date" : "updated",
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
for (const item of planned.values()) {
|
|
49
|
+
if (item.status === "up-to-date")
|
|
50
|
+
continue;
|
|
51
|
+
await mkdir(dirname(item.path), { recursive: true });
|
|
52
|
+
await writeFile(item.path, content, { encoding: "utf8", flag: item.status === "installed" ? "wx" : "w" });
|
|
53
|
+
}
|
|
54
|
+
return [...planned.values()];
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=skill.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dorely13/ai-imagegen-cli",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.3",
|
|
4
4
|
"private": false,
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
@@ -18,7 +18,8 @@
|
|
|
18
18
|
"imagegen": "./dist/index.js"
|
|
19
19
|
},
|
|
20
20
|
"files": [
|
|
21
|
-
"dist/**"
|
|
21
|
+
"dist/**",
|
|
22
|
+
"skill/**"
|
|
22
23
|
],
|
|
23
24
|
"scripts": {
|
|
24
25
|
"dev": "npm run build && node ./dist/index.js",
|
package/skill/SKILL.md
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: imagegen-cli
|
|
3
|
+
description: Create or edit bitmap images with the installed `imagegen` CLI (`@dorely13/ai-imagegen-cli`). Use for image requests when the user has not chosen another tool.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# ImageGenCli
|
|
7
|
+
|
|
8
|
+
Use the installed `imagegen` command to turn the user's prompt into image files. The CLI handles provider selection and credentials. Follow an explicit user choice of another image tool.
|
|
9
|
+
|
|
10
|
+
1. Check that `imagegen` is available. If it is missing, tell the user to install it with `npm install -g @dorely13/ai-imagegen-cli`.
|
|
11
|
+
2. Run `imagegen providers` to see which provider is configured. If none is configured, use `imagegen auth codex login` for the current Codex provider; the user must complete browser authorization. Do not request or expose tokens.
|
|
12
|
+
3. For a new image, run `imagegen generate --prompt "<user's image brief>" --out <output-path>`. For an edit, run `imagegen edit --source <existing-image> --prompt "<requested change>" --out <output-path>`. Use repeatable `--reference <file>` for visual references or continuity. Preserve the user's requested format, size, count, and output location using the corresponding CLI options.
|
|
13
|
+
4. Read `imagegen help generate` or `imagegen help edit` for current option details when needed. Leave provider and model selection to configuration unless the user specifies them or several providers are configured.
|
|
14
|
+
5. Parse the JSON result and use each `images[].path` as the generated file location. Check that the file exists before showing or referencing it. If the command fails, report the CLI error and the action needed to resolve it.
|
|
15
|
+
|
|
16
|
+
The CLI emits JSON by default. Keep its output machine-readable when calling it from scripts.
|