mcp-hydrocoder-image 1.1.1 → 1.2.0
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/README.md +134 -23
- package/dist/api/geminiClient.d.ts +3 -30
- package/dist/api/geminiClient.d.ts.map +1 -1
- package/dist/api/geminiClient.js +13 -57
- package/dist/api/geminiClient.js.map +1 -1
- package/dist/api/geminiTextClient.js +1 -1
- package/dist/api/geminiTextClient.js.map +1 -1
- package/dist/api/imageProvider.d.ts +29 -0
- package/dist/api/imageProvider.d.ts.map +1 -0
- package/dist/api/imageProvider.js +5 -0
- package/dist/api/imageProvider.js.map +1 -0
- package/dist/api/volcengineClient.d.ts +13 -0
- package/dist/api/volcengineClient.d.ts.map +1 -0
- package/dist/api/volcengineClient.js +288 -0
- package/dist/api/volcengineClient.js.map +1 -0
- package/dist/business/inputValidator.d.ts.map +1 -1
- package/dist/business/inputValidator.js +69 -1
- package/dist/business/inputValidator.js.map +1 -1
- package/dist/business/multiImagePrompt.d.ts +13 -0
- package/dist/business/multiImagePrompt.d.ts.map +1 -0
- package/dist/business/multiImagePrompt.js +135 -0
- package/dist/business/multiImagePrompt.js.map +1 -0
- package/dist/business/responseBuilder.d.ts +3 -2
- package/dist/business/responseBuilder.d.ts.map +1 -1
- package/dist/business/responseBuilder.js +69 -48
- package/dist/business/responseBuilder.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/server/errorHandler.d.ts.map +1 -1
- package/dist/server/errorHandler.js +3 -2
- package/dist/server/errorHandler.js.map +1 -1
- package/dist/server/mcpServer.d.ts +90 -29
- package/dist/server/mcpServer.d.ts.map +1 -1
- package/dist/server/mcpServer.js +429 -288
- package/dist/server/mcpServer.js.map +1 -1
- package/dist/types/mcp.d.ts +62 -15
- package/dist/types/mcp.d.ts.map +1 -1
- package/dist/types/mcp.js +15 -0
- package/dist/types/mcp.js.map +1 -1
- package/dist/utils/config.d.ts +6 -2
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js +37 -12
- package/dist/utils/config.js.map +1 -1
- package/dist/utils/errors.d.ts +9 -0
- package/dist/utils/errors.d.ts.map +1 -1
- package/dist/utils/errors.js +50 -1
- package/dist/utils/errors.js.map +1 -1
- package/package.json +2 -1
package/README.md
CHANGED
|
@@ -36,6 +36,8 @@ The prompt optimizer uses a **Subject–Context–Style** framework (powered by
|
|
|
36
36
|
|
|
37
37
|
## Features
|
|
38
38
|
|
|
39
|
+
- **Multi-Provider Support**: Use either Google Gemini or Volcengine Seedream behind the same MCP server, with provider selection via config or per-request override.
|
|
40
|
+
- **Dedicated Multi-Image Tooling**: Use `generate_image` for single-image work and `generate_multi_image` for grouped multi-image output with server-side fan-out and prompt normalization.
|
|
39
41
|
- **Built-in Prompt Optimization**: Your simple prompt is automatically enriched with photographic and artistic details — lighting, composition, atmosphere — using Gemini 2.5 Flash. No prompt engineering skills required.
|
|
40
42
|
- **Three Quality Tiers**: Choose between fast iteration, balanced quality, or maximum fidelity with Nano Banana 2 (Gemini 3.1 Flash Image) and Nano Banana Pro (Gemini 3 Pro Image). [See Quality Presets](#quality-presets).
|
|
41
43
|
- **Image Editing**: Transform existing images with natural language instructions (image-to-image) while preserving original style and visual consistency.
|
|
@@ -90,15 +92,19 @@ npx mcp-hydrocoder-image skills install --path ~/.claude/skills
|
|
|
90
92
|
## Prerequisites
|
|
91
93
|
|
|
92
94
|
- **Node.js** 20 or higher
|
|
93
|
-
- **
|
|
95
|
+
- **API Key**
|
|
96
|
+
- Gemini: get yours at [Google AI Studio](https://aistudio.google.com/apikey)
|
|
97
|
+
- Volcengine: create an Ark API key in the Volcengine console
|
|
94
98
|
- An MCP-compatible AI tool: **Cursor**, **Claude Code**, **Codex**, or others
|
|
95
99
|
- Basic terminal/command line knowledge
|
|
96
100
|
|
|
97
101
|
## Quick Start
|
|
98
102
|
|
|
99
|
-
### 1. Get Your
|
|
103
|
+
### 1. Get Your API Key
|
|
100
104
|
|
|
101
|
-
|
|
105
|
+
Choose a provider and create an API key:
|
|
106
|
+
- **Gemini**: [Google AI Studio](https://aistudio.google.com/apikey)
|
|
107
|
+
- **Volcengine**: Volcengine Ark console (`ARK_API_KEY`-compatible key)
|
|
102
108
|
|
|
103
109
|
### 2. MCP Configuration
|
|
104
110
|
|
|
@@ -112,6 +118,7 @@ command = "npx"
|
|
|
112
118
|
args = ["-y", "mcp-hydrocoder-image"]
|
|
113
119
|
|
|
114
120
|
[mcp_servers.mcp-hydrocoder-image.env]
|
|
121
|
+
IMAGE_PROVIDER = "gemini"
|
|
115
122
|
GEMINI_API_KEY = "your_gemini_api_key_here"
|
|
116
123
|
IMAGE_OUTPUT_DIR = "/absolute/path/to/images"
|
|
117
124
|
API_TIMEOUT = "120000" # Optional: timeout in milliseconds (default: 120s)
|
|
@@ -131,6 +138,7 @@ Add to your Cursor settings:
|
|
|
131
138
|
"command": "npx",
|
|
132
139
|
"args": ["-y", "mcp-hydrocoder-image"],
|
|
133
140
|
"env": {
|
|
141
|
+
"IMAGE_PROVIDER": "gemini",
|
|
134
142
|
"GEMINI_API_KEY": "your_gemini_api_key_here",
|
|
135
143
|
"IMAGE_OUTPUT_DIR": "/absolute/path/to/images",
|
|
136
144
|
"API_TIMEOUT": "120000"
|
|
@@ -148,6 +156,7 @@ Add to your Cursor settings:
|
|
|
148
156
|
"command": "npx",
|
|
149
157
|
"args": ["-y", "mcp-hydrocoder-image"],
|
|
150
158
|
"env": {
|
|
159
|
+
"IMAGE_PROVIDER": "gemini",
|
|
151
160
|
"GEMINI_API_KEY": "your_gemini_api_key_here",
|
|
152
161
|
"IMAGE_OUTPUT_DIR": "C:\\absolute\\path\\to\\images",
|
|
153
162
|
"API_TIMEOUT": "120000"
|
|
@@ -164,6 +173,7 @@ Run in your project directory to enable for that project:
|
|
|
164
173
|
```bash
|
|
165
174
|
cd /path/to/your/project
|
|
166
175
|
claude mcp add mcp-hydrocoder-image \
|
|
176
|
+
--env IMAGE_PROVIDER=gemini \
|
|
167
177
|
--env GEMINI_API_KEY=your-api-key \
|
|
168
178
|
--env IMAGE_OUTPUT_DIR=/absolute/path/to/images \
|
|
169
179
|
--env API_TIMEOUT=120000 \
|
|
@@ -174,6 +184,7 @@ Or add globally for all projects:
|
|
|
174
184
|
|
|
175
185
|
```bash
|
|
176
186
|
claude mcp add mcp-hydrocoder-image --scope user \
|
|
187
|
+
--env IMAGE_PROVIDER=gemini \
|
|
177
188
|
--env GEMINI_API_KEY=your-api-key \
|
|
178
189
|
--env IMAGE_OUTPUT_DIR=/absolute/path/to/images \
|
|
179
190
|
--env API_TIMEOUT=120000 \
|
|
@@ -190,6 +201,7 @@ Or add via JSON config (`~/.claude/settings.json` for global, `.mcp.json` for pr
|
|
|
190
201
|
"command": "npx",
|
|
191
202
|
"args": ["-y", "mcp-hydrocoder-image"],
|
|
192
203
|
"env": {
|
|
204
|
+
"IMAGE_PROVIDER": "gemini",
|
|
193
205
|
"GEMINI_API_KEY": "your_gemini_api_key_here",
|
|
194
206
|
"IMAGE_OUTPUT_DIR": "/absolute/path/to/images",
|
|
195
207
|
"API_TIMEOUT": "120000"
|
|
@@ -207,6 +219,7 @@ Or add via JSON config (`~/.claude/settings.json` for global, `.mcp.json` for pr
|
|
|
207
219
|
"command": "npx",
|
|
208
220
|
"args": ["-y", "mcp-hydrocoder-image"],
|
|
209
221
|
"env": {
|
|
222
|
+
"IMAGE_PROVIDER": "gemini",
|
|
210
223
|
"GEMINI_API_KEY": "your_gemini_api_key_here",
|
|
211
224
|
"IMAGE_OUTPUT_DIR": "C:\\absolute\\path\\to\\images",
|
|
212
225
|
"API_TIMEOUT": "120000"
|
|
@@ -263,7 +276,48 @@ IMAGE_OUTPUT_DIR = "/absolute/path/to/images"
|
|
|
263
276
|
|
|
264
277
|
> **Note**: The base URL should be the root domain (e.g., `https://llm.myseek.fun`), without the `/v1` suffix — the SDK will append the API version automatically.
|
|
265
278
|
|
|
266
|
-
|
|
279
|
+
### Volcengine Example
|
|
280
|
+
|
|
281
|
+
To use Volcengine Seedream as the default backend, switch provider and set a Volcengine API key.
|
|
282
|
+
|
|
283
|
+
Current implementation status for Volcengine in this repo:
|
|
284
|
+
- Stable path: text-to-image
|
|
285
|
+
- Reference-image workflows are wired through the OpenAI-compatible image API using the `image` field
|
|
286
|
+
- Base64 image inputs are normalized to the official Volcengine format: `data:image/<format>;base64,<Base64编码>`
|
|
287
|
+
- Grouped output (`outputCount`) is best-effort and depends on provider-side behavior
|
|
288
|
+
- If the user does not specify `aspectRatio` or `imageSize`, Gemini and Volcengine default to `16:9` and `4K`
|
|
289
|
+
- If the user specifies `aspectRatio` and/or `imageSize`, the server automatically normalizes the final `WxH` into Volcengine's legal pixel range
|
|
290
|
+
- When the user provides local image paths, they should be passed through `inputImagePath` / `inputImagePaths` instead of being summarized into the prompt
|
|
291
|
+
|
|
292
|
+
**Claude Code:**
|
|
293
|
+
```bash
|
|
294
|
+
claude mcp add mcp-hydrocoder-image \
|
|
295
|
+
--env IMAGE_PROVIDER=volcengine \
|
|
296
|
+
--env VOLCENGINE_API_KEY=your-volcengine-api-key \
|
|
297
|
+
--env VOLCENGINE_API_BASE_URL=https://ark.cn-beijing.volces.com/api/v3 \
|
|
298
|
+
--env IMAGE_OUTPUT_DIR=/absolute/path/to/images \
|
|
299
|
+
-- npx -y mcp-hydrocoder-image
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
**Cursor / JSON config:**
|
|
303
|
+
```json
|
|
304
|
+
{
|
|
305
|
+
"mcpServers": {
|
|
306
|
+
"mcp-hydrocoder-image": {
|
|
307
|
+
"command": "npx",
|
|
308
|
+
"args": ["-y", "mcp-hydrocoder-image"],
|
|
309
|
+
"env": {
|
|
310
|
+
"IMAGE_PROVIDER": "volcengine",
|
|
311
|
+
"VOLCENGINE_API_KEY": "your_volcengine_api_key_here",
|
|
312
|
+
"VOLCENGINE_MODEL": "doubao-seedream-4-5-251128",
|
|
313
|
+
"VOLCENGINE_API_BASE_URL": "https://ark.cn-beijing.volces.com/api/v3",
|
|
314
|
+
"IMAGE_OUTPUT_DIR": "/absolute/path/to/images"
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
```
|
|
320
|
+
|
|
267
321
|
|
|
268
322
|
Choose the right balance of speed, quality, and cost:
|
|
269
323
|
|
|
@@ -330,7 +384,7 @@ Your prompt is automatically enhanced with rich details about lighting, material
|
|
|
330
384
|
(with inputImagePath: "/path/to/image.jpg")
|
|
331
385
|
```
|
|
332
386
|
|
|
333
|
-
### Advanced Features
|
|
387
|
+
### Advanced Features
|
|
334
388
|
|
|
335
389
|
**Character Consistency:**
|
|
336
390
|
```
|
|
@@ -344,41 +398,98 @@ Your prompt is automatically enhanced with rich details about lighting, material
|
|
|
344
398
|
(with imageSize: "4K")
|
|
345
399
|
```
|
|
346
400
|
|
|
347
|
-
**Custom Aspect Ratio:**
|
|
348
|
-
```
|
|
349
|
-
"Generate a cinematic landscape of a desert at golden hour"
|
|
350
|
-
(with aspectRatio: "21:9")
|
|
351
|
-
```
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
401
|
+
**Custom Aspect Ratio:**
|
|
402
|
+
```
|
|
403
|
+
"Generate a cinematic landscape of a desert at golden hour"
|
|
404
|
+
(with aspectRatio: "21:9")
|
|
405
|
+
```
|
|
406
|
+
|
|
407
|
+
### Grouped Multi-Image Generation
|
|
408
|
+
|
|
409
|
+
For a grouped multi-image task, prefer `generate_multi_image` instead of repeating `generate_image`.
|
|
410
|
+
|
|
411
|
+
**Natural-language grouped request:**
|
|
412
|
+
```text
|
|
413
|
+
"Use generate_multi_image to create 4 unified e-commerce product images of the same minimalist white thermos cup: hero shot, side-detail shot, handheld lifestyle shot, and desk scene. Return 4 separate images in one run."
|
|
414
|
+
```
|
|
415
|
+
|
|
416
|
+
**Structured grouped request with inferred numbering:**
|
|
417
|
+
```json
|
|
418
|
+
{
|
|
419
|
+
"prompt": "同一款极简白色保温杯,整体风格统一,高级感、干净、真实、适合品牌官网和详情页使用。",
|
|
420
|
+
"outputCount": 4,
|
|
421
|
+
"provider": "volcengine"
|
|
422
|
+
}
|
|
423
|
+
```
|
|
424
|
+
|
|
425
|
+
**Structured grouped request with explicit per-image prompts:**
|
|
426
|
+
```json
|
|
427
|
+
{
|
|
428
|
+
"prompt": "同一款极简白色保温杯,整体风格统一,高级感、干净、真实、适合品牌官网和详情页使用。",
|
|
429
|
+
"provider": "volcengine",
|
|
430
|
+
"imageRequests": [
|
|
431
|
+
"电商主图,白底,正面展示产品",
|
|
432
|
+
"侧面细节图,突出杯盖和材质纹理",
|
|
433
|
+
"手持使用场景图,突出尺寸感",
|
|
434
|
+
"办公桌场景图,氛围高级"
|
|
435
|
+
]
|
|
436
|
+
}
|
|
437
|
+
```
|
|
438
|
+
|
|
439
|
+
## API Reference
|
|
440
|
+
|
|
441
|
+
### `generate_image` Tool
|
|
356
442
|
|
|
357
443
|
The server uses a two-stage process with separate models for each stage:
|
|
358
444
|
1. **Prompt Optimization** (Gemini 2.5 Flash): Refines your prompt using the Subject–Context–Style framework. Skippable via `SKIP_PROMPT_ENHANCEMENT`.
|
|
359
|
-
2. **Image Generation** (Nano Banana 2 or Pro): Creates the final image. Model varies by quality preset.
|
|
445
|
+
2. **Image Generation** (Nano Banana 2 or Pro): Creates the final image. Model varies by quality preset.
|
|
446
|
+
|
|
447
|
+
Use `generate_image` as the default tool for single-image generation and image editing. If the user wants multiple images in one grouped request, prefer `generate_multi_image`.
|
|
360
448
|
|
|
361
449
|
#### Parameters
|
|
362
450
|
|
|
363
451
|
| Parameter | Type | Required | Description |
|
|
364
452
|
|-----------|------|----------|-------------|
|
|
365
453
|
| `prompt` | string | Yes | Text description or editing instruction |
|
|
454
|
+
| `provider` | string | - | Optional provider override: `gemini` or `volcengine`. Defaults to `IMAGE_PROVIDER` |
|
|
366
455
|
| `quality` | string | - | Quality preset: `fast` (default), `balanced`, `quality`. Overrides `IMAGE_QUALITY` env var for this request |
|
|
367
|
-
| `
|
|
368
|
-
| `
|
|
369
|
-
| `
|
|
370
|
-
| `
|
|
371
|
-
| `
|
|
456
|
+
| `outputFormat` | string | - | Output image format if supported by the provider. Some provider endpoints may ignore or reject format overrides |
|
|
457
|
+
| `outputCount` | integer | - | Backward-compatible grouped output count for `generate_image`. For new multi-image requests, prefer `generate_multi_image` |
|
|
458
|
+
| `inputImagePath` | string | - | Absolute path to input image for image-to-image editing. Supported by Gemini and by Volcengine reference-image workflows |
|
|
459
|
+
| `inputImage` | string | - | Base64 encoded image data for image-to-image editing. Gemini accepts raw base64; Volcengine sends it as `data:image/<format>;base64,<data>` and uses `inputImageMimeType` to build the official request format |
|
|
460
|
+
| `inputImageMimeType` | string | - | MIME type of the input image (`image/jpeg`, `image/png`, `image/webp`, `image/gif`, `image/bmp`). Required for correct Volcengine Data URL formatting when `inputImage` is provided |
|
|
461
|
+
| `inputImages` | array | - | Multiple input images for multi-image composition. Each item uses `{ data, mimeType }`; Volcengine converts them to `data:image/<format>;base64,<data>` entries in the `image` array |
|
|
462
|
+
| `inputImagePaths` | array | - | Multiple input image file paths for multi-image composition. Supported by Gemini and by Volcengine when mapped to reference-image arrays |
|
|
372
463
|
| `returnBase64` | boolean | - | Return the generated image as base64 data in the response. Image is always saved to disk regardless |
|
|
373
464
|
| `fileName` | string | - | Custom filename for output (auto-generated if not specified). Extension is auto-appended based on output format if omitted |
|
|
374
465
|
| `skipPromptEnhancement` | boolean | - | Skip prompt enhancement and use the prompt as-is. Recommended for multi-image blending. Overrides `SKIP_PROMPT_ENHANCEMENT` env var. Default: `false` |
|
|
375
|
-
| `aspectRatio` | string | - | `1:1
|
|
376
|
-
| `
|
|
466
|
+
| `aspectRatio` | string | - | `1:1`, `2:3`, `3:2`, `3:4`, `4:3`, `4:5`, `5:4`, `9:16`, `16:9`, `21:9`, `1:4`, `1:8`, `4:1`, `8:1`. When omitted, Gemini and Volcengine default to `16:9` |
|
|
467
|
+
| `imageRequests` | array | - | Backward-compatible per-image prompts for `generate_image`. For new grouped multi-image requests, prefer `generate_multi_image` |
|
|
468
|
+
| `imageSize` | string | - | `1K`, `2K`, `4K`. When omitted, Gemini and Volcengine default to `4K`. Volcengine further normalizes the final `WxH` into the provider legal pixel range |
|
|
377
469
|
| `blendImages` | boolean | - | Enable multi-image blending for combining multiple visual elements naturally |
|
|
378
470
|
| `maintainCharacterConsistency` | boolean | - | Maintain character appearance consistency across different poses and scenes |
|
|
379
471
|
| `useWorldKnowledge` | boolean | - | Use real-world knowledge for accurate context (historical figures, landmarks, factual scenarios) |
|
|
380
472
|
| `useGoogleSearch` | boolean | - | Enable Google Search grounding for real-time factual accuracy |
|
|
381
|
-
| `purpose` | string | - | Intended use (e.g., "cookbook cover", "social media post"). Helps tailor visual style and details |
|
|
473
|
+
| `purpose` | string | - | Intended use (e.g., "cookbook cover", "social media post"). Helps tailor visual style and details |
|
|
474
|
+
|
|
475
|
+
### `generate_multi_image` Tool
|
|
476
|
+
|
|
477
|
+
Use `generate_multi_image` for grouped multi-image generation in a single tool call. This is the preferred entry for Notebook planners that might otherwise split one user request into multiple `generate_image` calls.
|
|
478
|
+
|
|
479
|
+
#### Recommended patterns
|
|
480
|
+
|
|
481
|
+
- Use `outputCount` when the user wants multiple images with shared overall constraints.
|
|
482
|
+
- Use `imageRequests` when the user wants several distinct images in one grouped request.
|
|
483
|
+
- If `outputCount` is omitted, the server will try to infer it from phrases such as `4张图`, `四张海报`, or `4 images`.
|
|
484
|
+
|
|
485
|
+
#### Example
|
|
486
|
+
|
|
487
|
+
```json
|
|
488
|
+
{
|
|
489
|
+
"prompt": "请生成4张统一风格的电商产品图,主题都是同一款极简白色保温杯,分别覆盖主图、侧面细节、手持使用场景、办公桌场景。要求返回4张独立图片,不要拆成多次生成。",
|
|
490
|
+
"provider": "volcengine"
|
|
491
|
+
}
|
|
492
|
+
```
|
|
382
493
|
|
|
383
494
|
#### Response
|
|
384
495
|
|
|
@@ -3,22 +3,10 @@
|
|
|
3
3
|
* Integrates with Google's Gemini AI API using the official SDK
|
|
4
4
|
* Supports automatic URL Context processing and feature parameters
|
|
5
5
|
*/
|
|
6
|
-
import type {
|
|
6
|
+
import type { GeneratedImageResult, ImageProviderClient } from './imageProvider.js';
|
|
7
7
|
import type { Result } from '../types/result.js';
|
|
8
8
|
import type { Config } from '../utils/config.js';
|
|
9
9
|
import { GeminiAPIError, NetworkError } from '../utils/errors.js';
|
|
10
|
-
/**
|
|
11
|
-
* Metadata for generated images
|
|
12
|
-
*/
|
|
13
|
-
export interface GeminiGenerationMetadata {
|
|
14
|
-
model: string;
|
|
15
|
-
prompt: string;
|
|
16
|
-
mimeType: string;
|
|
17
|
-
timestamp: Date;
|
|
18
|
-
inputImageProvided: boolean;
|
|
19
|
-
modelVersion?: string;
|
|
20
|
-
responseId?: string;
|
|
21
|
-
}
|
|
22
10
|
/**
|
|
23
11
|
* Parameters for Gemini API image generation
|
|
24
12
|
*/
|
|
@@ -33,25 +21,10 @@ export interface GeminiApiParams {
|
|
|
33
21
|
aspectRatio?: string;
|
|
34
22
|
imageSize?: string;
|
|
35
23
|
useGoogleSearch?: boolean;
|
|
36
|
-
quality?:
|
|
24
|
+
quality?: 'fast' | 'balanced' | 'quality';
|
|
37
25
|
}
|
|
38
|
-
|
|
39
|
-
* Result of image generation
|
|
40
|
-
*/
|
|
41
|
-
export interface GeneratedImageResult {
|
|
42
|
-
imageData: Buffer;
|
|
43
|
-
metadata: GeminiGenerationMetadata;
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* Gemini API client interface
|
|
47
|
-
*/
|
|
48
|
-
export interface GeminiClient {
|
|
26
|
+
export interface GeminiClient extends ImageProviderClient {
|
|
49
27
|
generateImage(params: GeminiApiParams): Promise<Result<GeneratedImageResult, GeminiAPIError | NetworkError>>;
|
|
50
28
|
}
|
|
51
|
-
/**
|
|
52
|
-
* Creates a new Gemini API client
|
|
53
|
-
* @param config Configuration containing API key and other settings
|
|
54
|
-
* @returns Result containing the client or an error
|
|
55
|
-
*/
|
|
56
29
|
export declare function createGeminiClient(config: Config): Result<GeminiClient, GeminiAPIError>;
|
|
57
30
|
//# sourceMappingURL=geminiClient.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"geminiClient.d.ts","sourceRoot":"","sources":["../../src/api/geminiClient.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"geminiClient.d.ts","sourceRoot":"","sources":["../../src/api/geminiClient.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAA0B,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AAE3G,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAEhD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAkHjE;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,WAAW,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACvD,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,OAAO,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAAA;CAC1C;AAED,MAAM,WAAW,YAAa,SAAQ,mBAAmB;IACvD,aAAa,CACX,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,MAAM,CAAC,oBAAoB,EAAE,cAAc,GAAG,YAAY,CAAC,CAAC,CAAA;CACxE;AA6TD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,YAAY,EAAE,cAAc,CAAC,CAiDvF"}
|
package/dist/api/geminiClient.js
CHANGED
|
@@ -8,9 +8,6 @@ import { GEMINI_MODELS } from '../types/mcp.js';
|
|
|
8
8
|
import { Err, Ok } from '../types/result.js';
|
|
9
9
|
import { GeminiAPIError, NetworkError } from '../utils/errors.js';
|
|
10
10
|
import { applyProxyFetch } from '../utils/proxyFetch.js';
|
|
11
|
-
/**
|
|
12
|
-
* Safely analyze response structure for debugging (removes sensitive data)
|
|
13
|
-
*/
|
|
14
11
|
function analyzeResponseStructure(obj) {
|
|
15
12
|
if (!obj || typeof obj !== 'object') {
|
|
16
13
|
return { type: typeof obj, value: obj };
|
|
@@ -21,10 +18,11 @@ function analyzeResponseStructure(obj) {
|
|
|
21
18
|
return '[max depth]';
|
|
22
19
|
if (value === null || value === undefined)
|
|
23
20
|
return value;
|
|
24
|
-
if (typeof value !== 'object')
|
|
21
|
+
if (typeof value !== 'object') {
|
|
25
22
|
return typeof value === 'string' && value.length > 100
|
|
26
23
|
? `[string length: ${value.length}]`
|
|
27
24
|
: value;
|
|
25
|
+
}
|
|
28
26
|
if (seen.has(value))
|
|
29
27
|
return '[circular]';
|
|
30
28
|
seen.add(value);
|
|
@@ -34,12 +32,10 @@ function analyzeResponseStructure(obj) {
|
|
|
34
32
|
const record = value;
|
|
35
33
|
const result = {};
|
|
36
34
|
for (const [key, val] of Object.entries(record)) {
|
|
37
|
-
// Skip sensitive keys
|
|
38
35
|
if (/apikey|token|secret|password|credential/i.test(key)) {
|
|
39
36
|
result[key] = '[REDACTED]';
|
|
40
37
|
}
|
|
41
38
|
else if (key === 'data' && typeof val === 'string' && val.length > 100) {
|
|
42
|
-
// Likely base64 image data
|
|
43
39
|
result[key] = `[base64 data, length: ${val.length}]`;
|
|
44
40
|
}
|
|
45
41
|
else {
|
|
@@ -50,24 +46,18 @@ function analyzeResponseStructure(obj) {
|
|
|
50
46
|
};
|
|
51
47
|
return sanitize(obj);
|
|
52
48
|
}
|
|
53
|
-
/**
|
|
54
|
-
* Type guard for Gemini response validation
|
|
55
|
-
*/
|
|
56
49
|
function isGeminiResponse(obj) {
|
|
57
50
|
if (!obj || typeof obj !== 'object')
|
|
58
51
|
return false;
|
|
59
52
|
const response = obj;
|
|
60
|
-
// Check if it has response property (wrapped response)
|
|
61
53
|
if ('response' in response && response['response'] && typeof response['response'] === 'object') {
|
|
62
54
|
const innerResponse = response['response'];
|
|
63
55
|
return 'candidates' in innerResponse && Array.isArray(innerResponse['candidates']);
|
|
64
56
|
}
|
|
65
|
-
// Check direct candidates property (direct response)
|
|
66
57
|
return 'candidates' in response && Array.isArray(response['candidates']);
|
|
67
58
|
}
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
*/
|
|
59
|
+
const DEFAULT_GEMINI_ASPECT_RATIO = '16:9';
|
|
60
|
+
const DEFAULT_GEMINI_IMAGE_SIZE = '4K';
|
|
71
61
|
class GeminiClientImpl {
|
|
72
62
|
constructor(genai, defaultQuality = 'fast') {
|
|
73
63
|
this.genai = genai;
|
|
@@ -75,12 +65,8 @@ class GeminiClientImpl {
|
|
|
75
65
|
}
|
|
76
66
|
async generateImage(params) {
|
|
77
67
|
try {
|
|
78
|
-
// Prepare the request content with proper structure for multimodal input
|
|
79
68
|
const requestContent = [];
|
|
80
|
-
// Structure the contents properly for image generation/editing
|
|
81
|
-
// Priority: inputImages > inputImage > text-only
|
|
82
69
|
if (params.inputImages && params.inputImages.length > 0) {
|
|
83
|
-
// For multi-image: multiple inlineData parts + text
|
|
84
70
|
const parts = params.inputImages.map((img) => ({
|
|
85
71
|
inlineData: {
|
|
86
72
|
data: img.data,
|
|
@@ -91,7 +77,6 @@ class GeminiClientImpl {
|
|
|
91
77
|
requestContent.push({ parts });
|
|
92
78
|
}
|
|
93
79
|
else if (params.inputImage) {
|
|
94
|
-
// For image editing: provide image first, then text instructions
|
|
95
80
|
requestContent.push({
|
|
96
81
|
parts: [
|
|
97
82
|
{
|
|
@@ -107,7 +92,6 @@ class GeminiClientImpl {
|
|
|
107
92
|
});
|
|
108
93
|
}
|
|
109
94
|
else {
|
|
110
|
-
// For text-to-image: provide only text prompt
|
|
111
95
|
requestContent.push({
|
|
112
96
|
parts: [
|
|
113
97
|
{
|
|
@@ -116,38 +100,27 @@ class GeminiClientImpl {
|
|
|
116
100
|
],
|
|
117
101
|
});
|
|
118
102
|
}
|
|
119
|
-
// Determine effective quality
|
|
120
103
|
const effectiveQuality = params.quality ?? this.defaultQuality;
|
|
121
|
-
// Select model based on quality preset
|
|
122
104
|
const modelName = effectiveQuality === 'quality' ? GEMINI_MODELS.PRO : GEMINI_MODELS.FLASH;
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
}
|
|
128
|
-
if (params.imageSize) {
|
|
129
|
-
imageConfig['imageSize'] = params.imageSize;
|
|
130
|
-
}
|
|
131
|
-
// Build config with optional thinkingConfig
|
|
105
|
+
const imageConfig = {
|
|
106
|
+
aspectRatio: params.aspectRatio ?? DEFAULT_GEMINI_ASPECT_RATIO,
|
|
107
|
+
imageSize: params.imageSize ?? DEFAULT_GEMINI_IMAGE_SIZE,
|
|
108
|
+
};
|
|
132
109
|
const thinkingConfig = effectiveQuality === 'balanced' ? { thinkingConfig: { thinkingLevel: 'high' } } : {};
|
|
133
110
|
const config = {
|
|
134
|
-
|
|
111
|
+
imageConfig,
|
|
135
112
|
responseModalities: ['IMAGE'],
|
|
136
113
|
...thinkingConfig,
|
|
137
114
|
};
|
|
138
|
-
// Construct tools array for Google Search grounding
|
|
139
115
|
const tools = params.useGoogleSearch ? [{ googleSearch: {} }] : undefined;
|
|
140
|
-
// Generate content using Gemini API
|
|
141
116
|
const rawResponse = await this.genai.models.generateContent({
|
|
142
117
|
model: modelName,
|
|
143
118
|
contents: requestContent,
|
|
144
119
|
config,
|
|
145
120
|
...(tools && { tools }),
|
|
146
121
|
});
|
|
147
|
-
// Validate response structure with type guard
|
|
148
122
|
if (!isGeminiResponse(rawResponse)) {
|
|
149
123
|
const responseStructure = analyzeResponseStructure(rawResponse);
|
|
150
|
-
// Check if it's an error response from Gemini
|
|
151
124
|
const asRecord = rawResponse;
|
|
152
125
|
if (asRecord['error']) {
|
|
153
126
|
const error = asRecord['error'];
|
|
@@ -160,16 +133,14 @@ class GeminiClientImpl {
|
|
|
160
133
|
}
|
|
161
134
|
return Err(new GeminiAPIError('Invalid response structure from Gemini API', {
|
|
162
135
|
message: 'The API returned an unexpected response format',
|
|
163
|
-
responseStructure
|
|
136
|
+
responseStructure,
|
|
164
137
|
stage: 'response_validation',
|
|
165
138
|
suggestion: 'Check if the API endpoint or model configuration is correct',
|
|
166
139
|
}));
|
|
167
140
|
}
|
|
168
|
-
// Extract the actual response data (handle wrapped responses)
|
|
169
141
|
const responseData = rawResponse['response']
|
|
170
142
|
? rawResponse['response']
|
|
171
143
|
: rawResponse;
|
|
172
|
-
// Check for prompt feedback (safety blocking)
|
|
173
144
|
const responseAsRecord = responseData;
|
|
174
145
|
if (responseAsRecord['promptFeedback']) {
|
|
175
146
|
const promptFeedback = responseAsRecord['promptFeedback'];
|
|
@@ -189,7 +160,6 @@ class GeminiClientImpl {
|
|
|
189
160
|
}));
|
|
190
161
|
}
|
|
191
162
|
}
|
|
192
|
-
// Check for candidates
|
|
193
163
|
if (!responseData.candidates || responseData.candidates.length === 0) {
|
|
194
164
|
return Err(new GeminiAPIError('No image generated: Content may have been filtered', {
|
|
195
165
|
stage: 'generation',
|
|
@@ -205,7 +175,6 @@ class GeminiClientImpl {
|
|
|
205
175
|
}));
|
|
206
176
|
}
|
|
207
177
|
const parts = candidate.content.parts;
|
|
208
|
-
// Handle finish reason specific errors before checking parts
|
|
209
178
|
if (candidate.finishReason) {
|
|
210
179
|
const finishReason = candidate.finishReason;
|
|
211
180
|
if (finishReason === 'IMAGE_SAFETY') {
|
|
@@ -241,11 +210,9 @@ class GeminiClientImpl {
|
|
|
241
210
|
suggestion: 'The generation was incomplete. Please try again',
|
|
242
211
|
}));
|
|
243
212
|
}
|
|
244
|
-
// Check if we got an image or text (error message)
|
|
245
213
|
const imagePart = parts.find((part) => part.inlineData?.data);
|
|
246
214
|
const textPart = parts.find((part) => part.text);
|
|
247
215
|
if (!imagePart?.inlineData) {
|
|
248
|
-
// If there's text, it's likely an error message from Gemini
|
|
249
216
|
const errorMessage = textPart?.text || 'Image generation failed';
|
|
250
217
|
return Err(new GeminiAPIError('Image generation failed due to content filtering', {
|
|
251
218
|
reason: errorMessage,
|
|
@@ -253,11 +220,10 @@ class GeminiClientImpl {
|
|
|
253
220
|
suggestion: 'The prompt was blocked by safety filters. Try rephrasing your prompt to avoid potentially sensitive content.',
|
|
254
221
|
}));
|
|
255
222
|
}
|
|
256
|
-
// Convert base64 image data to Buffer
|
|
257
223
|
const imageBuffer = Buffer.from(imagePart.inlineData.data, 'base64');
|
|
258
224
|
const mimeType = imagePart.inlineData.mimeType || 'image/png';
|
|
259
|
-
// Create metadata
|
|
260
225
|
const metadata = {
|
|
226
|
+
provider: 'gemini',
|
|
261
227
|
model: modelName,
|
|
262
228
|
prompt: params.prompt,
|
|
263
229
|
mimeType,
|
|
@@ -277,15 +243,12 @@ class GeminiClientImpl {
|
|
|
277
243
|
}
|
|
278
244
|
handleError(error, prompt) {
|
|
279
245
|
const errorMessage = error instanceof Error ? error.message : 'Unknown error';
|
|
280
|
-
// Check if it's a network error
|
|
281
246
|
if (this.isNetworkError(error)) {
|
|
282
247
|
return Err(new NetworkError(`Network error during image generation: ${errorMessage}`, 'Check your internet connection and try again', error instanceof Error ? error : undefined));
|
|
283
248
|
}
|
|
284
|
-
// Check if it's an API-specific error
|
|
285
249
|
if (this.isAPIError(error)) {
|
|
286
250
|
return Err(new GeminiAPIError(`Failed to generate image: ${errorMessage}`, this.getAPIErrorSuggestion(errorMessage), this.extractStatusCode(error)));
|
|
287
251
|
}
|
|
288
|
-
// Generic API error
|
|
289
252
|
return Err(new GeminiAPIError(`Failed to generate image with prompt "${prompt}": ${errorMessage}`, 'Check your API key, quota, and prompt validity. Try again with a different prompt'));
|
|
290
253
|
}
|
|
291
254
|
isNetworkError(error) {
|
|
@@ -322,16 +285,10 @@ class GeminiClientImpl {
|
|
|
322
285
|
return undefined;
|
|
323
286
|
}
|
|
324
287
|
}
|
|
325
|
-
/**
|
|
326
|
-
* Creates a new Gemini API client
|
|
327
|
-
* @param config Configuration containing API key and other settings
|
|
328
|
-
* @returns Result containing the client or an error
|
|
329
|
-
*/
|
|
330
288
|
export function createGeminiClient(config) {
|
|
331
289
|
try {
|
|
332
290
|
const createClient = async () => {
|
|
333
291
|
await applyProxyFetch();
|
|
334
|
-
// Build httpOptions with optional baseUrl
|
|
335
292
|
const httpOptions = {};
|
|
336
293
|
if (config.geminiApiBaseUrl) {
|
|
337
294
|
httpOptions.baseUrl = config.geminiApiBaseUrl;
|
|
@@ -340,11 +297,10 @@ export function createGeminiClient(config) {
|
|
|
340
297
|
httpOptions.timeout = config.apiTimeout;
|
|
341
298
|
}
|
|
342
299
|
return new GoogleGenAI({
|
|
343
|
-
apiKey: config.geminiApiKey,
|
|
344
|
-
...(Object.keys(httpOptions).length > 0 && { httpOptions })
|
|
300
|
+
apiKey: config.geminiApiKey || '',
|
|
301
|
+
...(Object.keys(httpOptions).length > 0 && { httpOptions }),
|
|
345
302
|
});
|
|
346
303
|
};
|
|
347
|
-
// Create client synchronously with lazy proxy initialization
|
|
348
304
|
let genaiInstance = null;
|
|
349
305
|
const genaiProxy = new Proxy({}, {
|
|
350
306
|
get(_target, prop) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"geminiClient.js","sourceRoot":"","sources":["../../src/api/geminiClient.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"geminiClient.js","sourceRoot":"","sources":["../../src/api/geminiClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -27,7 +27,7 @@ class GeminiTextClientImpl {
|
|
|
27
27
|
async getGenai() {
|
|
28
28
|
if (!this.genai) {
|
|
29
29
|
await applyProxyFetch();
|
|
30
|
-
this.genai = new GoogleGenAI({ apiKey: this.config.geminiApiKey });
|
|
30
|
+
this.genai = new GoogleGenAI({ apiKey: this.config.geminiApiKey || '' });
|
|
31
31
|
}
|
|
32
32
|
return this.genai;
|
|
33
33
|
}
|