@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 CHANGED
@@ -1,19 +1,9 @@
1
- export const USAGE = `imagegen - provider-agnostic image generation CLI
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
- Options: --provider <name> (repeatable; run on several providers),
67
- --reference <file> (repeatable, max 4), --size, --quality,
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
- Same image options as generate.
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 join2, resolve } from "node:path";
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((resolve2, reject) => {
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
- resolve2({ code, state });
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: readFile2 } = await import("node:fs/promises");
555
+ const { readFile: readFile3 } = await import("node:fs/promises");
556
556
  try {
557
- const raw = await readFile2(this.filePath, "utf8");
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: mkdir2, writeFile: writeFile2, chmod } = await import("node:fs/promises");
567
- const { dirname: dirname2 } = await import("node:path");
568
- await mkdir2(dirname2(this.filePath), { recursive: true });
569
- await writeFile2(this.filePath, JSON.stringify(all, null, 2), { mode: 384 });
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: this.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: this.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: this.imageModel, images };
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 USAGE = `imagegen - provider-agnostic image generation CLI
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
- Options: --provider <name> (repeatable; run on several providers),
1063
- --reference <file> (repeatable, max 4), --size, --quality,
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
- Same image options as generate.
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 (key === "no-open" || key === "show-path") {
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 readFile(path);
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 = resolve(out);
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) => join2(resolved, `${prefix}image-${i + 1}${extension}`));
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 = dirname(resolved);
1341
+ const dir = dirname2(resolved);
1225
1342
  const base = basename(resolved, extname(resolved));
1226
- return Array.from({ length: count }, (_, i) => join2(dir, `${prefix}${base}-${i + 1}${extension}`));
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 mkdir(dirname(path), { recursive: true });
1252
- await writeFile(path, Buffer.from(result.images[i].data));
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.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.