cyrus-claude-runner 0.2.7 → 0.2.9
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.
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Available GPT Image models
|
|
3
|
+
*/
|
|
4
|
+
export type ImageModel = "gpt-image-1.5" | "gpt-image-1" | "gpt-image-1-mini";
|
|
1
5
|
/**
|
|
2
6
|
* Options for creating image generation tools
|
|
3
7
|
*/
|
|
@@ -13,10 +17,10 @@ export interface ImageToolsOptions {
|
|
|
13
17
|
}
|
|
14
18
|
/**
|
|
15
19
|
* Create an SDK MCP server with GPT Image generation tools
|
|
16
|
-
* Uses the
|
|
20
|
+
* Uses the direct Images API for synchronous generation with model selection
|
|
17
21
|
*
|
|
18
|
-
* @see https://platform.openai.com/docs/guides/image-generation
|
|
19
|
-
* @see https://platform.openai.com/docs/
|
|
22
|
+
* @see https://platform.openai.com/docs/guides/image-generation - GPT Image documentation
|
|
23
|
+
* @see https://platform.openai.com/docs/api-reference/images - Images API reference
|
|
20
24
|
*/
|
|
21
25
|
export declare function createImageToolsServer(options: ImageToolsOptions): import("@anthropic-ai/claude-agent-sdk").McpSdkServerConfigWithInstance;
|
|
22
26
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/image-tools/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/image-tools/index.ts"],"names":[],"mappings":"AAMA;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,eAAe,GAAG,aAAa,GAAG,kBAAkB,CAAC;AAE9E;;GAEG;AACH,MAAM,WAAW,iBAAiB;IACjC;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,iBAAiB,2EAgNhE"}
|
|
@@ -4,10 +4,10 @@ import OpenAI from "openai";
|
|
|
4
4
|
import { z } from "zod";
|
|
5
5
|
/**
|
|
6
6
|
* Create an SDK MCP server with GPT Image generation tools
|
|
7
|
-
* Uses the
|
|
7
|
+
* Uses the direct Images API for synchronous generation with model selection
|
|
8
8
|
*
|
|
9
|
-
* @see https://platform.openai.com/docs/guides/image-generation
|
|
10
|
-
* @see https://platform.openai.com/docs/
|
|
9
|
+
* @see https://platform.openai.com/docs/guides/image-generation - GPT Image documentation
|
|
10
|
+
* @see https://platform.openai.com/docs/api-reference/images - Images API reference
|
|
11
11
|
*/
|
|
12
12
|
export function createImageToolsServer(options) {
|
|
13
13
|
const { apiKey, outputDirectory = process.cwd() } = options;
|
|
@@ -16,27 +16,31 @@ export function createImageToolsServer(options) {
|
|
|
16
16
|
apiKey,
|
|
17
17
|
timeout: 600 * 1000, // 10 minutes
|
|
18
18
|
});
|
|
19
|
-
|
|
20
|
-
const jobFormats = new Map();
|
|
21
|
-
const generateImageTool = tool("gpt_image_generate", "Generate an image using GPT Image (gpt-image-1). This starts an async image generation job and returns a job ID. Use gpt_image_get to wait for completion and download the image.", {
|
|
19
|
+
const generateImageTool = tool("gpt_image_generate", "Generate an image using OpenAI's GPT Image models. Supports gpt-image-1.5 (best quality), gpt-image-1, and gpt-image-1-mini. Returns the generated image file path directly.", {
|
|
22
20
|
prompt: z
|
|
23
21
|
.string()
|
|
24
|
-
.
|
|
22
|
+
.max(32000)
|
|
23
|
+
.describe("Text description of the image you want to generate. Be as detailed as possible for best results. Maximum 32,000 characters."),
|
|
24
|
+
model: z
|
|
25
|
+
.enum(["gpt-image-1.5", "gpt-image-1", "gpt-image-1-mini"])
|
|
26
|
+
.optional()
|
|
27
|
+
.default("gpt-image-1.5")
|
|
28
|
+
.describe("Model to use: gpt-image-1.5 (best quality, recommended), gpt-image-1 (good quality), or gpt-image-1-mini (faster, lower cost)"),
|
|
25
29
|
size: z
|
|
26
30
|
.enum(["1024x1024", "1536x1024", "1024x1536", "auto"])
|
|
27
31
|
.optional()
|
|
28
32
|
.default("auto")
|
|
29
|
-
.describe("Image size: 1024x1024 (square), 1536x1024 (landscape), 1024x1536 (portrait), or auto (model decides)"),
|
|
33
|
+
.describe("Image size: 1024x1024 (square, faster), 1536x1024 (landscape), 1024x1536 (portrait), or auto (model decides)"),
|
|
30
34
|
quality: z
|
|
31
|
-
.enum(["low", "medium", "high"
|
|
35
|
+
.enum(["low", "medium", "high"])
|
|
32
36
|
.optional()
|
|
33
|
-
.default("
|
|
34
|
-
.describe("Image quality: low (fastest), medium, high (best quality
|
|
37
|
+
.default("high")
|
|
38
|
+
.describe("Image quality: low (fastest), medium (good for iteration), high (best quality, default). Production work should use high."),
|
|
35
39
|
background: z
|
|
36
40
|
.enum(["transparent", "opaque", "auto"])
|
|
37
41
|
.optional()
|
|
38
42
|
.default("auto")
|
|
39
|
-
.describe("Background type: transparent (PNG/WebP only), opaque, or auto (model decides)"),
|
|
43
|
+
.describe("Background type: transparent (PNG/WebP only, works best with medium/high quality), opaque, or auto (model decides)"),
|
|
40
44
|
output_format: z
|
|
41
45
|
.enum(["png", "jpeg", "webp"])
|
|
42
46
|
.optional()
|
|
@@ -48,9 +52,13 @@ export function createImageToolsServer(options) {
|
|
|
48
52
|
.max(100)
|
|
49
53
|
.optional()
|
|
50
54
|
.describe("Compression level for jpeg/webp (0-100%). Higher = less compression, larger file. Only applicable for jpeg and webp formats."),
|
|
51
|
-
|
|
55
|
+
filename: z
|
|
56
|
+
.string()
|
|
57
|
+
.optional()
|
|
58
|
+
.describe("Custom filename for the image (without extension). If not provided, a timestamped name will be generated."),
|
|
59
|
+
}, async ({ prompt, model, size, quality, background, output_format, output_compression, filename, }) => {
|
|
52
60
|
try {
|
|
53
|
-
console.log(`[ImageTools] Starting image generation: ${prompt.substring(0, 50)}... (${size}, ${quality}, ${output_format})`);
|
|
61
|
+
console.log(`[ImageTools] Starting image generation with ${model}: ${prompt.substring(0, 50)}... (${size}, ${quality}, ${output_format})`);
|
|
54
62
|
// Validate background transparency is only for PNG/WebP
|
|
55
63
|
if (background === "transparent" && output_format === "jpeg") {
|
|
56
64
|
return {
|
|
@@ -65,162 +73,63 @@ export function createImageToolsServer(options) {
|
|
|
65
73
|
],
|
|
66
74
|
};
|
|
67
75
|
}
|
|
68
|
-
// Build
|
|
69
|
-
|
|
70
|
-
|
|
76
|
+
// Build request parameters
|
|
77
|
+
// Note: GPT Image models always return base64-encoded images,
|
|
78
|
+
// so response_format is not needed (and not supported for gpt-image-1.5)
|
|
79
|
+
const params = {
|
|
80
|
+
model: model,
|
|
81
|
+
prompt,
|
|
82
|
+
n: 1,
|
|
71
83
|
};
|
|
72
84
|
// Add optional parameters (only if not auto)
|
|
73
|
-
if (size !== "auto")
|
|
74
|
-
|
|
75
|
-
if (quality !== "auto")
|
|
76
|
-
toolConfig.quality = quality;
|
|
77
|
-
if (background !== "auto")
|
|
78
|
-
toolConfig.background = background;
|
|
79
|
-
if (output_format)
|
|
80
|
-
toolConfig.output_format = output_format;
|
|
81
|
-
if (output_compression !== undefined)
|
|
82
|
-
toolConfig.output_compression = output_compression;
|
|
83
|
-
// Use Responses API with background mode for async processing
|
|
84
|
-
const response = await client.responses.create({
|
|
85
|
-
model: "gpt-5", // Wrapper model that can call image_generation tool
|
|
86
|
-
background: true, // Enable async mode
|
|
87
|
-
store: true, // Store result for retrieval
|
|
88
|
-
tools: [toolConfig],
|
|
89
|
-
input: [
|
|
90
|
-
{
|
|
91
|
-
role: "user",
|
|
92
|
-
content: prompt,
|
|
93
|
-
},
|
|
94
|
-
],
|
|
95
|
-
});
|
|
96
|
-
console.log(`[ImageTools] Image generation job started: ${response.id}`);
|
|
97
|
-
// Store the format for this job so we know the extension when downloading
|
|
98
|
-
jobFormats.set(response.id, output_format || "png");
|
|
99
|
-
return {
|
|
100
|
-
content: [
|
|
101
|
-
{
|
|
102
|
-
type: "text",
|
|
103
|
-
text: JSON.stringify({
|
|
104
|
-
success: true,
|
|
105
|
-
jobId: response.id,
|
|
106
|
-
status: response.status,
|
|
107
|
-
message: "Image generation job started. Use gpt_image_get to wait for completion and download the image.",
|
|
108
|
-
}),
|
|
109
|
-
},
|
|
110
|
-
],
|
|
111
|
-
};
|
|
112
|
-
}
|
|
113
|
-
catch (error) {
|
|
114
|
-
console.error("[ImageTools] Error starting image generation:", error);
|
|
115
|
-
return {
|
|
116
|
-
content: [
|
|
117
|
-
{
|
|
118
|
-
type: "text",
|
|
119
|
-
text: JSON.stringify({
|
|
120
|
-
success: false,
|
|
121
|
-
error: error instanceof Error ? error.message : String(error),
|
|
122
|
-
}),
|
|
123
|
-
},
|
|
124
|
-
],
|
|
125
|
-
};
|
|
126
|
-
}
|
|
127
|
-
});
|
|
128
|
-
const getImageTool = tool("gpt_image_get", "Check if GPT Image generation is complete and download the image if ready. If not ready, returns status. Call this tool again later if the image is not ready yet.", {
|
|
129
|
-
jobId: z.string().describe("The job ID from gpt_image_generate"),
|
|
130
|
-
filename: z
|
|
131
|
-
.string()
|
|
132
|
-
.optional()
|
|
133
|
-
.describe("Custom filename for the image (default: generated-{jobId}.png)"),
|
|
134
|
-
}, async ({ jobId, filename }) => {
|
|
135
|
-
try {
|
|
136
|
-
console.log(`[ImageTools] Checking image generation job: ${jobId}`);
|
|
137
|
-
// Check job status once
|
|
138
|
-
const response = await client.responses.retrieve(jobId);
|
|
139
|
-
console.log(`[ImageTools] Job ${jobId} status: ${response.status}`);
|
|
140
|
-
// If not completed, return status
|
|
141
|
-
if (response.status !== "completed") {
|
|
142
|
-
if (response.status === "failed") {
|
|
143
|
-
return {
|
|
144
|
-
content: [
|
|
145
|
-
{
|
|
146
|
-
type: "text",
|
|
147
|
-
text: JSON.stringify({
|
|
148
|
-
success: false,
|
|
149
|
-
error: "Image generation failed",
|
|
150
|
-
jobId,
|
|
151
|
-
status: response.status,
|
|
152
|
-
}),
|
|
153
|
-
},
|
|
154
|
-
],
|
|
155
|
-
};
|
|
156
|
-
}
|
|
157
|
-
// Still in progress
|
|
158
|
-
return {
|
|
159
|
-
content: [
|
|
160
|
-
{
|
|
161
|
-
type: "text",
|
|
162
|
-
text: JSON.stringify({
|
|
163
|
-
success: false,
|
|
164
|
-
ready: false,
|
|
165
|
-
jobId,
|
|
166
|
-
status: response.status,
|
|
167
|
-
message: `Image is not ready yet. Current status: ${response.status}. Try calling gpt_image_get again in a few moments.`,
|
|
168
|
-
}),
|
|
169
|
-
},
|
|
170
|
-
],
|
|
171
|
-
};
|
|
85
|
+
if (size !== "auto") {
|
|
86
|
+
params.size = size;
|
|
172
87
|
}
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
error: "No image generation data found in response",
|
|
185
|
-
}),
|
|
186
|
-
},
|
|
187
|
-
],
|
|
188
|
-
};
|
|
88
|
+
if (quality) {
|
|
89
|
+
params.quality = quality;
|
|
90
|
+
}
|
|
91
|
+
if (background !== "auto") {
|
|
92
|
+
params.background = background;
|
|
93
|
+
}
|
|
94
|
+
if (output_format) {
|
|
95
|
+
params.output_format = output_format;
|
|
96
|
+
}
|
|
97
|
+
if (output_compression !== undefined) {
|
|
98
|
+
params.output_compression = output_compression;
|
|
189
99
|
}
|
|
190
|
-
|
|
191
|
-
const
|
|
192
|
-
const
|
|
193
|
-
if (!
|
|
100
|
+
// Generate image using direct Images API
|
|
101
|
+
const response = await client.images.generate(params);
|
|
102
|
+
const imageData = response.data?.[0];
|
|
103
|
+
if (!imageData || !("b64_json" in imageData) || !imageData.b64_json) {
|
|
194
104
|
return {
|
|
195
105
|
content: [
|
|
196
106
|
{
|
|
197
107
|
type: "text",
|
|
198
108
|
text: JSON.stringify({
|
|
199
109
|
success: false,
|
|
200
|
-
error: "No image data
|
|
110
|
+
error: "No image data returned from API",
|
|
201
111
|
}),
|
|
202
112
|
},
|
|
203
113
|
],
|
|
204
114
|
};
|
|
205
115
|
}
|
|
206
116
|
// Convert base64 to buffer
|
|
207
|
-
const buffer = Buffer.from(
|
|
117
|
+
const buffer = Buffer.from(imageData.b64_json, "base64");
|
|
208
118
|
// Ensure output directory exists
|
|
209
119
|
await fs.ensureDir(outputDirectory);
|
|
210
|
-
//
|
|
211
|
-
const
|
|
212
|
-
const ext = format.toLowerCase();
|
|
120
|
+
// Determine file extension
|
|
121
|
+
const ext = (output_format || "png").toLowerCase();
|
|
213
122
|
// Determine final filename
|
|
214
123
|
const timestamp = Date.now();
|
|
215
|
-
const finalFilename = filename
|
|
124
|
+
const finalFilename = filename
|
|
125
|
+
? `${filename}.${ext}`
|
|
126
|
+
: `generated-${timestamp}.${ext}`;
|
|
216
127
|
const filePath = `${outputDirectory}/${finalFilename}`;
|
|
217
128
|
// Write to disk
|
|
218
129
|
await fs.writeFile(filePath, buffer);
|
|
219
|
-
// Clean up stored format
|
|
220
|
-
jobFormats.delete(jobId);
|
|
221
130
|
console.log(`[ImageTools] Image saved to: ${filePath}`);
|
|
222
|
-
if (
|
|
223
|
-
console.log(`[ImageTools] Revised prompt: ${
|
|
131
|
+
if (imageData.revised_prompt) {
|
|
132
|
+
console.log(`[ImageTools] Revised prompt: ${imageData.revised_prompt}`);
|
|
224
133
|
}
|
|
225
134
|
return {
|
|
226
135
|
content: [
|
|
@@ -231,17 +140,16 @@ export function createImageToolsServer(options) {
|
|
|
231
140
|
filePath,
|
|
232
141
|
filename: finalFilename,
|
|
233
142
|
size: buffer.length,
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
message: `Image downloaded and saved to ${filePath}`,
|
|
143
|
+
model,
|
|
144
|
+
revisedPrompt: imageData.revised_prompt || undefined,
|
|
145
|
+
message: `Image generated and saved to ${filePath}`,
|
|
238
146
|
}),
|
|
239
147
|
},
|
|
240
148
|
],
|
|
241
149
|
};
|
|
242
150
|
}
|
|
243
151
|
catch (error) {
|
|
244
|
-
console.error(
|
|
152
|
+
console.error("[ImageTools] Error generating image:", error);
|
|
245
153
|
return {
|
|
246
154
|
content: [
|
|
247
155
|
{
|
|
@@ -258,7 +166,7 @@ export function createImageToolsServer(options) {
|
|
|
258
166
|
return createSdkMcpServer({
|
|
259
167
|
name: "image-tools",
|
|
260
168
|
version: "1.0.0",
|
|
261
|
-
tools: [generateImageTool
|
|
169
|
+
tools: [generateImageTool],
|
|
262
170
|
});
|
|
263
171
|
}
|
|
264
172
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/image-tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,IAAI,EAAE,MAAM,gCAAgC,CAAC;AAC1E,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,MAAM,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/image-tools/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "cyrus-claude-runner",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.9",
|
|
4
4
|
"description": "Claude CLI execution wrapper for Cyrus",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
"fs-extra": "^11.3.2",
|
|
17
17
|
"openai": "^6.9.1",
|
|
18
18
|
"zod": "^3.24.1",
|
|
19
|
-
"cyrus-core": "0.2.
|
|
19
|
+
"cyrus-core": "0.2.9"
|
|
20
20
|
},
|
|
21
21
|
"devDependencies": {
|
|
22
22
|
"@types/fs-extra": "^11.0.4",
|