meigen 0.1.0 → 0.1.2
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/LICENSE +21 -0
- package/README.md +37 -45
- package/README.zh-CN.md +36 -44
- package/dist/config.js +1 -1
- package/dist/config.js.map +1 -1
- package/dist/lib/providers/openai.d.ts +1 -1
- package/dist/lib/providers/openai.js +2 -2
- package/dist/lib/providers/openai.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +22 -3
- package/dist/server.js.map +1 -1
- package/dist/tools/generate-image.d.ts.map +1 -1
- package/dist/tools/generate-image.js +49 -30
- package/dist/tools/generate-image.js.map +1 -1
- package/package.json +1 -1
- package/skills/setup/SKILL.md +5 -6
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 MeiGen
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
<p align="center">
|
|
2
|
-
<img src="assets/banner.jpg" alt="
|
|
2
|
+
<img src="assets/banner.jpg" alt="MeiGen-Art Banner" width="600">
|
|
3
3
|
</p>
|
|
4
4
|
|
|
5
5
|
<h1 align="center">
|
|
6
|
-
|
|
6
|
+
MeiGen-Art — Visual Creative Expert
|
|
7
7
|
</h1>
|
|
8
8
|
|
|
9
9
|
<p align="center">
|
|
@@ -31,11 +31,11 @@
|
|
|
31
31
|
|
|
32
32
|
---
|
|
33
33
|
|
|
34
|
-
## Why
|
|
34
|
+
## Why MeiGen-Art?
|
|
35
35
|
|
|
36
36
|
Most AI image tools are either simple prompt-in-image-out APIs, or complex UIs that require expertise.
|
|
37
37
|
|
|
38
|
-
|
|
38
|
+
MeiGen-Art takes a different approach: it gives your AI assistant **professional creative knowledge** — 1,300+ curated trending prompts, style-specific enhancement techniques, and multi-step workflow orchestration — so you can describe what you want in plain language, and get production-quality results.
|
|
39
39
|
|
|
40
40
|
**No prompt engineering skills needed.** Just talk to your AI assistant like you would to a creative director.
|
|
41
41
|
|
|
@@ -45,60 +45,47 @@ LibreArt takes a different approach: it gives your AI assistant **professional c
|
|
|
45
45
|
|
|
46
46
|
### Claude Code
|
|
47
47
|
|
|
48
|
-
One command — no clone, no build:
|
|
49
|
-
|
|
50
48
|
```bash
|
|
51
|
-
|
|
49
|
+
# Add the plugin source
|
|
50
|
+
/plugin marketplace add jau123/MeiGen-Art
|
|
51
|
+
|
|
52
|
+
# Install
|
|
53
|
+
/plugin install meigen@meigen-marketplace
|
|
52
54
|
```
|
|
53
55
|
|
|
54
|
-
|
|
56
|
+
**After installation, restart Claude Code** (close and reopen, or open a new terminal tab) to activate the plugin.
|
|
55
57
|
|
|
56
|
-
|
|
57
|
-
claude mcp add --transport stdio libreart \
|
|
58
|
-
--env MEIGEN_API_TOKEN=meigen_sk_xxx \
|
|
59
|
-
-- npx -y meigen
|
|
60
|
-
```
|
|
58
|
+
#### First-Time Setup
|
|
61
59
|
|
|
62
|
-
|
|
60
|
+
Once restarted, free features work immediately — try asking:
|
|
61
|
+
|
|
62
|
+
> "Search for some creative inspiration"
|
|
63
|
+
|
|
64
|
+
To unlock image generation, run the setup wizard:
|
|
63
65
|
|
|
64
66
|
```
|
|
65
67
|
/meigen:setup
|
|
66
68
|
```
|
|
67
69
|
|
|
68
|
-
|
|
70
|
+
The wizard walks you through:
|
|
71
|
+
1. **Choose a provider** — MeiGen Platform (recommended, supports Nanobanana Pro / GPT image 1.5 / Seedream 4.5), local ComfyUI, or OpenAI-compatible API
|
|
72
|
+
2. **Enter credentials** — API token, key, or ComfyUI URL. You can also paste a `curl` command and it auto-extracts everything
|
|
73
|
+
3. **Done** — restart Claude Code once more, then start generating
|
|
69
74
|
|
|
70
|
-
|
|
75
|
+
### OpenClaw
|
|
71
76
|
|
|
72
|
-
|
|
73
|
-
{
|
|
74
|
-
"plugins": {
|
|
75
|
-
"openclaw-mcp-adapter": {
|
|
76
|
-
"servers": {
|
|
77
|
-
"libreart": {
|
|
78
|
-
"transport": "stdio",
|
|
79
|
-
"command": "npx",
|
|
80
|
-
"args": ["-y", "libreart"],
|
|
81
|
-
"env": {
|
|
82
|
-
"MEIGEN_API_TOKEN": "meigen_sk_..."
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
```
|
|
77
|
+
Our skills follow the [Agent Skills](https://agentskills.io) open standard. Copy them into your OpenClaw workspace and they work directly. For MCP tools, use OpenClaw's MCP adapter to connect the MeiGen server.
|
|
90
78
|
|
|
91
|
-
###
|
|
79
|
+
### Other MCP-Compatible Hosts
|
|
92
80
|
|
|
93
|
-
Add to your `.mcp.json`
|
|
81
|
+
Add to your MCP config (e.g. `.mcp.json`, `claude_desktop_config.json`, etc.):
|
|
94
82
|
|
|
95
83
|
```json
|
|
96
84
|
{
|
|
97
85
|
"mcpServers": {
|
|
98
|
-
"
|
|
99
|
-
"type": "stdio",
|
|
86
|
+
"meigen": {
|
|
100
87
|
"command": "npx",
|
|
101
|
-
"args": ["-y", "
|
|
88
|
+
"args": ["-y", "meigen@latest"],
|
|
102
89
|
"env": {
|
|
103
90
|
"MEIGEN_API_TOKEN": "meigen_sk_..."
|
|
104
91
|
}
|
|
@@ -107,7 +94,7 @@ Add to your `.mcp.json` or equivalent config:
|
|
|
107
94
|
}
|
|
108
95
|
```
|
|
109
96
|
|
|
110
|
-
> **Tip:** Even without an API key, free features (inspiration search, prompt enhancement, model listing) work immediately.
|
|
97
|
+
> **Tip:** Even without an API key, free features (inspiration search, prompt enhancement, model listing) work immediately. Configure your provider via `~/.config/meigen/config.json` or environment variables — see [Configuration](#configuration).
|
|
111
98
|
|
|
112
99
|
---
|
|
113
100
|
|
|
@@ -161,11 +148,16 @@ Local images are automatically compressed and uploaded. The returned URL works a
|
|
|
161
148
|
|
|
162
149
|
<h2 id="providers">Providers</h2>
|
|
163
150
|
|
|
164
|
-
|
|
151
|
+
MeiGen-Art supports three image generation backends. You can configure one or multiple — the assistant auto-selects the best available, or you can specify per-request.
|
|
165
152
|
|
|
166
153
|
### MeiGen Platform (Recommended)
|
|
167
154
|
|
|
168
|
-
Cloud API with multiple model options:
|
|
155
|
+
Cloud API with multiple model options: Nanobanana Pro, GPT image 1.5, Seedream 4.5, and more.
|
|
156
|
+
|
|
157
|
+
**Get your API token:**
|
|
158
|
+
1. Sign in at [meigen.ai](https://www.meigen.ai)
|
|
159
|
+
2. Click your avatar → **Settings** → **API Keys**
|
|
160
|
+
3. Create a new key (starts with `meigen_sk_`)
|
|
169
161
|
|
|
170
162
|
```json
|
|
171
163
|
{ "meigenApiToken": "meigen_sk_..." }
|
|
@@ -184,13 +176,13 @@ Run generation on your own GPU with full control over models, samplers, and work
|
|
|
184
176
|
|
|
185
177
|
### OpenAI-Compatible API
|
|
186
178
|
|
|
187
|
-
Bring your own API key for OpenAI (gpt-image-1), Together AI, Fireworks AI, or any OpenAI-compatible service.
|
|
179
|
+
Bring your own API key for OpenAI (gpt-image-1.5), Together AI, Fireworks AI, or any OpenAI-compatible service.
|
|
188
180
|
|
|
189
181
|
```json
|
|
190
182
|
{
|
|
191
183
|
"openaiApiKey": "sk-...",
|
|
192
184
|
"openaiBaseUrl": "https://api.openai.com",
|
|
193
|
-
"openaiModel": "gpt-image-1"
|
|
185
|
+
"openaiModel": "gpt-image-1.5"
|
|
194
186
|
}
|
|
195
187
|
```
|
|
196
188
|
|
|
@@ -221,7 +213,7 @@ Environment variables take priority over the config file.
|
|
|
221
213
|
| `MEIGEN_API_TOKEN` | MeiGen platform token |
|
|
222
214
|
| `OPENAI_API_KEY` | OpenAI / compatible API key |
|
|
223
215
|
| `OPENAI_BASE_URL` | API base URL (default: `https://api.openai.com`) |
|
|
224
|
-
| `OPENAI_MODEL` | Default model (default: `gpt-image-1`) |
|
|
216
|
+
| `OPENAI_MODEL` | Default model (default: `gpt-image-1.5`) |
|
|
225
217
|
| `COMFYUI_URL` | ComfyUI server URL (default: `http://localhost:8188`) |
|
|
226
218
|
|
|
227
219
|
---
|
package/README.zh-CN.md
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
<p align="center">
|
|
2
|
-
<img src="assets/banner.jpg" alt="
|
|
2
|
+
<img src="assets/banner.jpg" alt="MeiGen-Art Banner" width="600">
|
|
3
3
|
</p>
|
|
4
4
|
|
|
5
5
|
<h1 align="center">
|
|
6
|
-
|
|
6
|
+
MeiGen-Art — AI 视觉创意专家
|
|
7
7
|
</h1>
|
|
8
8
|
|
|
9
9
|
<p align="center">
|
|
@@ -31,11 +31,11 @@
|
|
|
31
31
|
|
|
32
32
|
---
|
|
33
33
|
|
|
34
|
-
## 为什么选择
|
|
34
|
+
## 为什么选择 MeiGen-Art?
|
|
35
35
|
|
|
36
36
|
大多数 AI 图片工具,要么是简单的"输入提示词 → 输出图片"的 API,要么是需要专业知识的复杂界面。
|
|
37
37
|
|
|
38
|
-
|
|
38
|
+
MeiGen-Art 走了一条不同的路:它赋予你的 AI 助手**专业的创意能力**——1,300+ 精选热门提示词、风格化的提示词增强技术、多步骤工作流编排——你只需要用自然语言描述想要什么,就能得到专业品质的结果。
|
|
39
39
|
|
|
40
40
|
**不需要任何提示词工程知识。** 像跟创意总监对话一样,跟你的 AI 助手聊就行了。
|
|
41
41
|
|
|
@@ -45,60 +45,47 @@ LibreArt 走了一条不同的路:它赋予你的 AI 助手**专业的创意
|
|
|
45
45
|
|
|
46
46
|
### Claude Code
|
|
47
47
|
|
|
48
|
-
一行命令,无需 clone 或构建:
|
|
49
|
-
|
|
50
48
|
```bash
|
|
51
|
-
|
|
49
|
+
# 添加插件源
|
|
50
|
+
/plugin marketplace add jau123/MeiGen-Art
|
|
51
|
+
|
|
52
|
+
# 安装
|
|
53
|
+
/plugin install meigen@meigen-marketplace
|
|
52
54
|
```
|
|
53
55
|
|
|
54
|
-
|
|
56
|
+
**安装完成后,重启 Claude Code**(关闭再打开,或新建终端标签页)以激活插件。
|
|
55
57
|
|
|
56
|
-
|
|
57
|
-
claude mcp add --transport stdio libreart \
|
|
58
|
-
--env MEIGEN_API_TOKEN=meigen_sk_xxx \
|
|
59
|
-
-- npx -y meigen
|
|
60
|
-
```
|
|
58
|
+
#### 首次配置
|
|
61
59
|
|
|
62
|
-
|
|
60
|
+
重启后,免费功能无需配置即可使用——试试问:
|
|
61
|
+
|
|
62
|
+
> "帮我搜索一些创意灵感"
|
|
63
|
+
|
|
64
|
+
如需解锁图片生成,运行配置向导:
|
|
63
65
|
|
|
64
66
|
```
|
|
65
67
|
/meigen:setup
|
|
66
68
|
```
|
|
67
69
|
|
|
68
|
-
|
|
70
|
+
向导会引导你完成:
|
|
71
|
+
1. **选择后端** — MeiGen 平台(推荐,支持 Nanobanana Pro / GPT image 1.5 / Seedream 4.5)、本地 ComfyUI、或 OpenAI 兼容 API
|
|
72
|
+
2. **输入凭证** — API Token、Key 或 ComfyUI 地址。也可以直接粘贴 `curl` 命令,自动提取配置
|
|
73
|
+
3. **完成** — 再次重启 Claude Code,即可开始生成图片
|
|
69
74
|
|
|
70
|
-
|
|
75
|
+
### OpenClaw
|
|
71
76
|
|
|
72
|
-
|
|
73
|
-
{
|
|
74
|
-
"plugins": {
|
|
75
|
-
"openclaw-mcp-adapter": {
|
|
76
|
-
"servers": {
|
|
77
|
-
"libreart": {
|
|
78
|
-
"transport": "stdio",
|
|
79
|
-
"command": "npx",
|
|
80
|
-
"args": ["-y", "libreart"],
|
|
81
|
-
"env": {
|
|
82
|
-
"MEIGEN_API_TOKEN": "meigen_sk_..."
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
```
|
|
77
|
+
我们的技能遵循 [Agent Skills](https://agentskills.io) 开放标准,可复制到 OpenClaw 工作区直接使用。如需 MCP 工具,通过 OpenClaw 的 MCP adapter 连接 MeiGen server 即可。
|
|
90
78
|
|
|
91
79
|
### 其他 MCP 兼容客户端
|
|
92
80
|
|
|
93
|
-
添加到 `.mcp.json`
|
|
81
|
+
添加到 MCP 配置文件(如 `.mcp.json`、`claude_desktop_config.json` 等):
|
|
94
82
|
|
|
95
83
|
```json
|
|
96
84
|
{
|
|
97
85
|
"mcpServers": {
|
|
98
|
-
"
|
|
99
|
-
"type": "stdio",
|
|
86
|
+
"meigen": {
|
|
100
87
|
"command": "npx",
|
|
101
|
-
"args": ["-y", "
|
|
88
|
+
"args": ["-y", "meigen@latest"],
|
|
102
89
|
"env": {
|
|
103
90
|
"MEIGEN_API_TOKEN": "meigen_sk_..."
|
|
104
91
|
}
|
|
@@ -107,7 +94,7 @@ claude mcp add --transport stdio libreart \
|
|
|
107
94
|
}
|
|
108
95
|
```
|
|
109
96
|
|
|
110
|
-
> **提示:** 即使没有 API Key
|
|
97
|
+
> **提示:** 即使没有 API Key,免费功能(灵感搜索、提示词增强、模型列表)也可以直接使用。通过 `~/.config/meigen/config.json` 或环境变量配置你的后端——详见[配置](#配置)。
|
|
111
98
|
|
|
112
99
|
---
|
|
113
100
|
|
|
@@ -161,11 +148,16 @@ claude mcp add --transport stdio libreart \
|
|
|
161
148
|
|
|
162
149
|
<h2 id="生成后端">生成后端</h2>
|
|
163
150
|
|
|
164
|
-
|
|
151
|
+
MeiGen-Art 支持三种图片生成后端,可以配置一个或多个——助手会自动选择最佳可用后端,也可以在每次请求时手动指定。
|
|
165
152
|
|
|
166
153
|
### MeiGen 平台(推荐)
|
|
167
154
|
|
|
168
|
-
云端 API,支持多种模型:
|
|
155
|
+
云端 API,支持多种模型:Nanobanana Pro、GPT image 1.5、Seedream 4.5 等。
|
|
156
|
+
|
|
157
|
+
**获取 API Token:**
|
|
158
|
+
1. 登录 [meigen.ai](https://www.meigen.ai)
|
|
159
|
+
2. 点击头像 → **设置** → **API Keys**
|
|
160
|
+
3. 创建新 Key(以 `meigen_sk_` 开头)
|
|
169
161
|
|
|
170
162
|
```json
|
|
171
163
|
{ "meigenApiToken": "meigen_sk_..." }
|
|
@@ -184,13 +176,13 @@ LibreArt 支持三种图片生成后端,可以配置一个或多个——助
|
|
|
184
176
|
|
|
185
177
|
### OpenAI 兼容 API
|
|
186
178
|
|
|
187
|
-
使用你自己的 API Key 接入 OpenAI(gpt-image-1)、Together AI、Fireworks AI 或任何 OpenAI 兼容服务。
|
|
179
|
+
使用你自己的 API Key 接入 OpenAI(gpt-image-1.5)、Together AI、Fireworks AI 或任何 OpenAI 兼容服务。
|
|
188
180
|
|
|
189
181
|
```json
|
|
190
182
|
{
|
|
191
183
|
"openaiApiKey": "sk-...",
|
|
192
184
|
"openaiBaseUrl": "https://api.openai.com",
|
|
193
|
-
"openaiModel": "gpt-image-1"
|
|
185
|
+
"openaiModel": "gpt-image-1.5"
|
|
194
186
|
}
|
|
195
187
|
```
|
|
196
188
|
|
|
@@ -221,7 +213,7 @@ LibreArt 支持三种图片生成后端,可以配置一个或多个——助
|
|
|
221
213
|
| `MEIGEN_API_TOKEN` | MeiGen 平台 Token |
|
|
222
214
|
| `OPENAI_API_KEY` | OpenAI / 兼容 API Key |
|
|
223
215
|
| `OPENAI_BASE_URL` | API 地址(默认:`https://api.openai.com`) |
|
|
224
|
-
| `OPENAI_MODEL` | 默认模型(默认:`gpt-image-1`) |
|
|
216
|
+
| `OPENAI_MODEL` | 默认模型(默认:`gpt-image-1.5`) |
|
|
225
217
|
| `COMFYUI_URL` | ComfyUI 服务地址(默认:`http://localhost:8188`) |
|
|
226
218
|
|
|
227
219
|
---
|
package/dist/config.js
CHANGED
|
@@ -37,7 +37,7 @@ function loadConfig() {
|
|
|
37
37
|
meigenApiToken: process.env.MEIGEN_API_TOKEN || file.meigenApiToken,
|
|
38
38
|
openaiApiKey: process.env.OPENAI_API_KEY || file.openaiApiKey,
|
|
39
39
|
openaiBaseUrl: process.env.OPENAI_BASE_URL || file.openaiBaseUrl || 'https://api.openai.com',
|
|
40
|
-
openaiModel: process.env.OPENAI_MODEL || file.openaiModel || 'gpt-image-1',
|
|
40
|
+
openaiModel: process.env.OPENAI_MODEL || file.openaiModel || 'gpt-image-1.5',
|
|
41
41
|
meigenBaseUrl: process.env.MEIGEN_BASE_URL || 'https://www.meigen.ai',
|
|
42
42
|
uploadGatewayUrl: process.env.UPLOAD_GATEWAY_URL || file.uploadGatewayUrl || 'https://gen.meigen.art/api',
|
|
43
43
|
comfyuiUrl: process.env.COMFYUI_URL || file.comfyuiUrl,
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AA2DH,gCAgBC;AAMD,sDAMC;AAGD,gDAKC;AA7FD,2BAA8C;AAC9C,+BAA2B;AAC3B,2BAA4B;AAkC5B,SAAS,cAAc;IACrB,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,IAAA,WAAI,EAAC,IAAA,YAAO,GAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAA;QACtE,MAAM,OAAO,GAAG,IAAA,iBAAY,EAAC,UAAU,EAAE,OAAO,CAAC,CAAA;QACjD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAe,CAAA;IAC1C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAA;IACX,CAAC;AACH,CAAC;AAED,oEAAoE;AACpE,SAAS,mBAAmB;IAC1B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAA,WAAI,EAAC,IAAA,YAAO,GAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAA;QAC7D,MAAM,KAAK,GAAG,IAAA,gBAAW,EAAC,GAAG,CAAC,CAAA;QAC9B,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAA;IAC7C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC;AAED,SAAgB,UAAU;IACxB,MAAM,IAAI,GAAG,cAAc,EAAE,CAAA;IAC7B,OAAO;QACL,cAAc,EAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,IAAI,CAAC,cAAc;QAEnE,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,IAAI,CAAC,YAAY;QAC7D,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,IAAI,CAAC,aAAa,IAAI,wBAAwB;QAC5F,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,IAAI,CAAC,WAAW,IAAI,
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AA2DH,gCAgBC;AAMD,sDAMC;AAGD,gDAKC;AA7FD,2BAA8C;AAC9C,+BAA2B;AAC3B,2BAA4B;AAkC5B,SAAS,cAAc;IACrB,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,IAAA,WAAI,EAAC,IAAA,YAAO,GAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAA;QACtE,MAAM,OAAO,GAAG,IAAA,iBAAY,EAAC,UAAU,EAAE,OAAO,CAAC,CAAA;QACjD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAe,CAAA;IAC1C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAA;IACX,CAAC;AACH,CAAC;AAED,oEAAoE;AACpE,SAAS,mBAAmB;IAC1B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAA,WAAI,EAAC,IAAA,YAAO,GAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAA;QAC7D,MAAM,KAAK,GAAG,IAAA,gBAAW,EAAC,GAAG,CAAC,CAAA;QAC9B,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAA;IAC7C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC;AAED,SAAgB,UAAU;IACxB,MAAM,IAAI,GAAG,cAAc,EAAE,CAAA;IAC7B,OAAO;QACL,cAAc,EAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,IAAI,CAAC,cAAc;QAEnE,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,IAAI,CAAC,YAAY;QAC7D,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,IAAI,CAAC,aAAa,IAAI,wBAAwB;QAC5F,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,IAAI,CAAC,WAAW,IAAI,eAAe;QAE5E,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,uBAAuB;QAErE,gBAAgB,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,IAAI,CAAC,gBAAgB,IAAI,4BAA4B;QAEzG,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,IAAI,CAAC,UAAU;QACtD,sBAAsB,EAAE,IAAI,CAAC,sBAAsB;KACpD,CAAA;AACH,CAAC;AAED;;;GAGG;AACH,SAAgB,qBAAqB,CAAC,MAAoB;IACxD,MAAM,SAAS,GAAmB,EAAE,CAAA;IACpC,IAAI,MAAM,CAAC,cAAc;QAAE,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IACnD,IAAI,mBAAmB,EAAE;QAAE,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IACpD,IAAI,MAAM,CAAC,YAAY;QAAE,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IACjD,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,yCAAyC;AACzC,SAAgB,kBAAkB,CAAC,MAAoB;IACrD,IAAI,MAAM,CAAC,cAAc;QAAE,OAAO,QAAQ,CAAA;IAC1C,IAAI,mBAAmB,EAAE;QAAE,OAAO,SAAS,CAAA;IAC3C,IAAI,MAAM,CAAC,YAAY;QAAE,OAAO,QAAQ,CAAA;IACxC,OAAO,IAAI,CAAA;AACb,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* OpenAI-compatible Provider
|
|
3
|
-
* Supports gpt-image-1, DALL-E 3, and any OpenAI-compatible service (Together AI, DeepInfra, etc.)
|
|
3
|
+
* Supports gpt-image-1.5, DALL-E 3, and any OpenAI-compatible service (Together AI, DeepInfra, etc.)
|
|
4
4
|
*/
|
|
5
5
|
import type { ImageProvider, ImageGenerationRequest, ImageGenerationResult } from './types.js';
|
|
6
6
|
export declare class OpenAIProvider implements ImageProvider {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
3
|
* OpenAI-compatible Provider
|
|
4
|
-
* Supports gpt-image-1, DALL-E 3, and any OpenAI-compatible service (Together AI, DeepInfra, etc.)
|
|
4
|
+
* Supports gpt-image-1.5, DALL-E 3, and any OpenAI-compatible service (Together AI, DeepInfra, etc.)
|
|
5
5
|
*/
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
7
|
exports.OpenAIProvider = void 0;
|
|
@@ -31,7 +31,7 @@ class OpenAIProvider {
|
|
|
31
31
|
if (request.quality) {
|
|
32
32
|
body.quality = request.quality;
|
|
33
33
|
}
|
|
34
|
-
// gpt-image-1 supports reference images via the image parameter
|
|
34
|
+
// gpt-image-1.5 supports reference images via the image parameter
|
|
35
35
|
// DALL-E series does not support image input in the generations endpoint
|
|
36
36
|
if (request.referenceImages?.length && !model.startsWith('dall-e')) {
|
|
37
37
|
body.image = request.referenceImages;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai.js","sourceRoot":"","sources":["../../../src/lib/providers/openai.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAWH,MAAa,cAAc;IACzB,IAAI,GAAG,QAAQ,CAAA;IAEP,MAAM,CAAQ;IACd,OAAO,CAAQ;IACf,YAAY,CAAQ;IAE5B,YAAY,MAAc,EAAE,OAAe,EAAE,YAAoB;QAC/D,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;QACzC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAA;IAClC,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,OAA+B;QAC5C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,YAAY,CAAA;QAEhD,MAAM,IAAI,GAA4B;YACpC,KAAK;YACL,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,CAAC,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC;YACjB,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,WAAW;SAClC,CAAA;QAED,0EAA0E;QAC1E,kDAAkD;QAClD,IAAI,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC/B,IAAI,CAAC,eAAe,GAAG,UAAU,CAAA;QACnC,CAAC;QAED,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAA;QAChC,CAAC;QAED,
|
|
1
|
+
{"version":3,"file":"openai.js","sourceRoot":"","sources":["../../../src/lib/providers/openai.ts"],"names":[],"mappings":"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"}
|
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AA+JnE,wBAAgB,YAAY,cAyB3B"}
|
package/dist/server.js
CHANGED
|
@@ -15,7 +15,17 @@ const get_inspiration_js_1 = require("./tools/get-inspiration.js");
|
|
|
15
15
|
const generate_image_js_1 = require("./tools/generate-image.js");
|
|
16
16
|
const comfyui_workflow_js_1 = require("./tools/comfyui-workflow.js");
|
|
17
17
|
const upload_reference_image_js_1 = require("./tools/upload-reference-image.js");
|
|
18
|
-
const SERVER_INSTRUCTIONS = `You are an AI image creation assistant powered by
|
|
18
|
+
const SERVER_INSTRUCTIONS = `You are an AI image creation assistant powered by MeiGen-Art.
|
|
19
|
+
|
|
20
|
+
## Phase 0: Provider Check
|
|
21
|
+
|
|
22
|
+
If generate_image returns "No image generation providers configured", guide the user:
|
|
23
|
+
1. **Recommended**: Get a MeiGen API token at https://www.meigen.ai
|
|
24
|
+
(sign in → click avatar → Settings → API Keys → create a new key starting with meigen_sk_)
|
|
25
|
+
2. Then run /meigen:setup and paste the token
|
|
26
|
+
3. Restart Claude Code to activate
|
|
27
|
+
|
|
28
|
+
Free features (search_gallery, enhance_prompt, get_inspiration, list_models) work without any API key.
|
|
19
29
|
|
|
20
30
|
## Phase 1: Intent Assessment
|
|
21
31
|
|
|
@@ -43,7 +53,16 @@ User knows what they want. Don't over-process.
|
|
|
43
53
|
How to tell: the prompt has specific visual details, style references,
|
|
44
54
|
or technical terms (lens, lighting, composition, etc.)
|
|
45
55
|
|
|
46
|
-
### D.
|
|
56
|
+
### D. EDIT/MODIFY — user provides an existing image and asks for changes
|
|
57
|
+
User wants to modify an existing image: add text, change background, adjust colors, remove elements, etc.
|
|
58
|
+
-> Do NOT enhance or expand the prompt. Keep it minimal and edit-focused.
|
|
59
|
+
-> Upload the reference image (if local), then generate with a short, literal prompt
|
|
60
|
+
describing ONLY the edit, e.g. "Add the text 'meigen.ai' at the bottom of this image"
|
|
61
|
+
-> The reference image carries all the visual context — the prompt only needs to describe the change
|
|
62
|
+
-> NEVER re-describe the entire original image in the prompt
|
|
63
|
+
How to tell: user provides/references an image AND describes a specific change (not a new creation)
|
|
64
|
+
|
|
65
|
+
### E. BATCH REQUEST — "4 directions", "multiple versions", "a set of assets"
|
|
47
66
|
User wants multiple images.
|
|
48
67
|
-> Plan the variants first, show the plan, get confirmation
|
|
49
68
|
-> THEN generate (see Phase 2 for limits)
|
|
@@ -112,7 +131,7 @@ You are a creative assistant, not a generation API wrapper.
|
|
|
112
131
|
compress and upload it, then use the returned URL as referenceImages
|
|
113
132
|
- Works with ALL providers:
|
|
114
133
|
- MeiGen: full support (native)
|
|
115
|
-
- OpenAI: gpt-image-1 supports image input (DALL-E does not)
|
|
134
|
+
- OpenAI: gpt-image-1.5 supports image input (DALL-E does not)
|
|
116
135
|
- ComfyUI: requires a LoadImage node in the workflow (e.g., img2img workflows)
|
|
117
136
|
|
|
118
137
|
## Phase 4: Error Recovery
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":";AAAA;;;GAGG;;
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAiKH,oCAyBC;AAxLD,oEAAmE;AACnE,2CAAwC;AACxC,uDAAqD;AACrD,iEAAiE;AACjE,iEAAiE;AACjE,2DAA2D;AAC3D,mEAAmE;AACnE,iEAAiE;AACjE,qEAAqE;AACrE,iFAAgF;AAEhF,MAAM,mBAAmB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wEAkJ4C,CAAA;AAExE,SAAgB,YAAY;IAC1B,MAAM,MAAM,GAAG,IAAA,sBAAU,GAAE,CAAA;IAC3B,MAAM,SAAS,GAAG,IAAI,+BAAe,CAAC,MAAM,CAAC,CAAA;IAE7C,MAAM,MAAM,GAAG,IAAI,kBAAS,CAC1B,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,EACpC,EAAE,YAAY,EAAE,mBAAmB,EAAE,CACtC,CAAA;IAED,4CAA4C;IAC5C,IAAA,yCAAqB,EAAC,MAAM,CAAC,CAAA;IAC7B,IAAA,yCAAqB,EAAC,MAAM,CAAC,CAAA;IAC7B,IAAA,mCAAkB,EAAC,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,CAAA;IAC7C,IAAA,2CAAsB,EAAC,MAAM,EAAE,SAAS,CAAC,CAAA;IAEzC,mDAAmD;IACnD,IAAA,wDAA4B,EAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAE5C,8BAA8B;IAC9B,IAAA,6CAAuB,EAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAEvC,yEAAyE;IACzE,IAAA,yCAAqB,EAAC,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,CAAA;IAEhD,OAAO,MAAM,CAAA;AACf,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-image.d.ts","sourceRoot":"","sources":["../../src/tools/generate-image.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;
|
|
1
|
+
{"version":3,"file":"generate-image.d.ts","sourceRoot":"","sources":["../../src/tools/generate-image.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAKvB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AAGxE,OAAO,KAAK,EAAE,YAAY,EAAgB,MAAM,cAAc,CAAA;AAE9D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AA4C3D,eAAO,MAAM,mBAAmB;;;;;;;;;;CAkB/B,CAAA;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,EAAE,YAAY,QAiFxG"}
|
|
@@ -9,6 +9,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
9
9
|
exports.generateImageSchema = void 0;
|
|
10
10
|
exports.registerGenerateImage = registerGenerateImage;
|
|
11
11
|
const zod_1 = require("zod");
|
|
12
|
+
const fs_1 = require("fs");
|
|
13
|
+
const path_1 = require("path");
|
|
14
|
+
const os_1 = require("os");
|
|
15
|
+
const crypto_1 = require("crypto");
|
|
12
16
|
const config_js_1 = require("../config.js");
|
|
13
17
|
const openai_js_1 = require("../lib/providers/openai.js");
|
|
14
18
|
const comfyui_js_1 = require("../lib/providers/comfyui.js");
|
|
@@ -16,10 +20,39 @@ const semaphore_js_1 = require("../lib/semaphore.js");
|
|
|
16
20
|
// Concurrency control: ComfyUI serial (local GPU), API max 4 parallel
|
|
17
21
|
const apiSemaphore = new semaphore_js_1.Semaphore(4);
|
|
18
22
|
const comfyuiSemaphore = new semaphore_js_1.Semaphore(1);
|
|
23
|
+
/** Save base64 image to ~/Pictures/meigen/, returns the file path or undefined on failure */
|
|
24
|
+
function saveImageLocally(base64, mimeType) {
|
|
25
|
+
try {
|
|
26
|
+
const ext = mimeType.includes('png') ? 'png' : mimeType.includes('webp') ? 'webp' : 'jpg';
|
|
27
|
+
const date = new Date().toISOString().slice(0, 10);
|
|
28
|
+
const id = (0, crypto_1.randomBytes)(4).toString('hex');
|
|
29
|
+
const filename = `${date}_${id}.${ext}`;
|
|
30
|
+
const dir = (0, path_1.join)((0, os_1.homedir)(), 'Pictures', 'meigen');
|
|
31
|
+
(0, fs_1.mkdirSync)(dir, { recursive: true });
|
|
32
|
+
const filePath = (0, path_1.join)(dir, filename);
|
|
33
|
+
(0, fs_1.writeFileSync)(filePath, Buffer.from(base64, 'base64'));
|
|
34
|
+
return filePath;
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
return undefined;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
/** Safe notification — silently ignores if client doesn't support logging */
|
|
41
|
+
async function notify(extra, message) {
|
|
42
|
+
try {
|
|
43
|
+
await extra.sendNotification({
|
|
44
|
+
method: 'notifications/message',
|
|
45
|
+
params: { level: 'info', logger: 'generate_image', data: message },
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
// Client doesn't support logging — ignore
|
|
50
|
+
}
|
|
51
|
+
}
|
|
19
52
|
exports.generateImageSchema = {
|
|
20
53
|
prompt: zod_1.z.string().describe('The image generation prompt'),
|
|
21
54
|
model: zod_1.z.string().optional()
|
|
22
|
-
.describe('Model name. For OpenAI-compatible: gpt-image-1, dall-e-3, etc. For MeiGen: use model IDs from list_models.'),
|
|
55
|
+
.describe('Model name. For OpenAI-compatible: gpt-image-1.5, dall-e-3, etc. For MeiGen: use model IDs from list_models.'),
|
|
23
56
|
size: zod_1.z.string().optional()
|
|
24
57
|
.describe('Image size for OpenAI-compatible providers: "1024x1024", "1536x1024", "auto". MeiGen/ComfyUI: use aspectRatio instead.'),
|
|
25
58
|
aspectRatio: zod_1.z.string().optional()
|
|
@@ -27,7 +60,7 @@ exports.generateImageSchema = {
|
|
|
27
60
|
quality: zod_1.z.string().optional()
|
|
28
61
|
.describe('Image quality for OpenAI-compatible providers: "low", "medium", "high"'),
|
|
29
62
|
referenceImages: zod_1.z.array(zod_1.z.string()).optional()
|
|
30
|
-
.describe('Public image URLs (http/https) for style/content guidance. Sources: gallery image URLs from search_gallery/get_inspiration, Image URLs from previous generate_image results, or URLs from upload_reference_image. Local file paths are NOT supported — use upload_reference_image to convert local files to URLs first. Works with all providers: MeiGen, OpenAI (gpt-image-1), ComfyUI (requires LoadImage node in workflow).'),
|
|
63
|
+
.describe('Public image URLs (http/https) for style/content guidance. Sources: gallery image URLs from search_gallery/get_inspiration, Image URLs from previous generate_image results, or URLs from upload_reference_image. Local file paths are NOT supported — use upload_reference_image to convert local files to URLs first. Works with all providers: MeiGen, OpenAI (gpt-image-1.5), ComfyUI (requires LoadImage node in workflow).'),
|
|
31
64
|
provider: zod_1.z.enum(['openai', 'meigen', 'comfyui']).optional()
|
|
32
65
|
.describe('Which provider to use. Auto-detected from configuration if not specified.'),
|
|
33
66
|
workflow: zod_1.z.string().optional()
|
|
@@ -42,7 +75,7 @@ function registerGenerateImage(server, apiClient, config) {
|
|
|
42
75
|
return {
|
|
43
76
|
content: [{
|
|
44
77
|
type: 'text',
|
|
45
|
-
text: 'No image generation providers configured.\n\
|
|
78
|
+
text: 'No image generation providers configured.\n\nQuickest way to start:\n1. Get a MeiGen API token at https://www.meigen.ai (sign in → avatar → Settings → API Keys)\n2. Run /meigen:setup and paste your token\n\nOr configure one of:\n- MEIGEN_API_TOKEN: MeiGen platform (Nanobanana Pro, GPT image 1.5, Seedream 4.5)\n- OPENAI_API_KEY: OpenAI/compatible API (gpt-image-1.5, etc.)\n- Import a ComfyUI workflow for local GPU generation',
|
|
46
79
|
}],
|
|
47
80
|
isError: true,
|
|
48
81
|
};
|
|
@@ -119,9 +152,11 @@ function registerGenerateImage(server, apiClient, config) {
|
|
|
119
152
|
async function generateWithOpenAI(config, prompt, model, size, quality, referenceImages) {
|
|
120
153
|
const provider = new openai_js_1.OpenAIProvider(config.openaiApiKey, config.openaiBaseUrl, config.openaiModel);
|
|
121
154
|
const result = await provider.generate({ prompt, model, size, quality, referenceImages });
|
|
155
|
+
const savedPath = saveImageLocally(result.imageBase64, result.mimeType);
|
|
122
156
|
const refNote = referenceImages?.length
|
|
123
157
|
? `\nUsed ${referenceImages.length} reference image(s) for guidance.`
|
|
124
158
|
: '';
|
|
159
|
+
const pathNote = savedPath ? `\nSaved to: ${savedPath}` : '';
|
|
125
160
|
return {
|
|
126
161
|
content: [
|
|
127
162
|
{
|
|
@@ -131,7 +166,7 @@ async function generateWithOpenAI(config, prompt, model, size, quality, referenc
|
|
|
131
166
|
},
|
|
132
167
|
{
|
|
133
168
|
type: 'text',
|
|
134
|
-
text: `Image generated
|
|
169
|
+
text: `Image generated via OpenAI (${model || config.openaiModel}).${refNote}${pathNote}`,
|
|
135
170
|
},
|
|
136
171
|
],
|
|
137
172
|
};
|
|
@@ -148,20 +183,10 @@ async function generateWithMeiGen(apiClient, prompt, model, aspectRatio, referen
|
|
|
148
183
|
throw new Error('No generation ID returned');
|
|
149
184
|
}
|
|
150
185
|
// Notify: generation submitted
|
|
151
|
-
await extra
|
|
152
|
-
method: 'notifications/message',
|
|
153
|
-
params: { level: 'info', logger: 'generate_image', data: 'Image generation submitted, waiting for result...' },
|
|
154
|
-
});
|
|
186
|
+
await notify(extra, 'Image generation submitted, waiting for result...');
|
|
155
187
|
// 2. Poll until completed (with progress notifications)
|
|
156
188
|
const status = await apiClient.waitForGeneration(genResponse.generationId, 300_000, async (elapsedMs) => {
|
|
157
|
-
await extra.
|
|
158
|
-
method: 'notifications/message',
|
|
159
|
-
params: {
|
|
160
|
-
level: 'info',
|
|
161
|
-
logger: 'generate_image',
|
|
162
|
-
data: `Still generating... (${Math.round(elapsedMs / 1000)}s elapsed)`,
|
|
163
|
-
},
|
|
164
|
-
});
|
|
189
|
+
await notify(extra, `Still generating... (${Math.round(elapsedMs / 1000)}s elapsed)`);
|
|
165
190
|
});
|
|
166
191
|
if (status.status === 'failed') {
|
|
167
192
|
throw new Error(status.error || 'Generation failed');
|
|
@@ -177,6 +202,8 @@ async function generateWithMeiGen(apiClient, prompt, model, aspectRatio, referen
|
|
|
177
202
|
const buffer = await imageRes.arrayBuffer();
|
|
178
203
|
const base64 = Buffer.from(buffer).toString('base64');
|
|
179
204
|
const mimeType = imageRes.headers.get('content-type') || 'image/jpeg';
|
|
205
|
+
const savedPath = saveImageLocally(base64, mimeType);
|
|
206
|
+
const pathNote = savedPath ? `\nSaved to: ${savedPath}` : '';
|
|
180
207
|
return {
|
|
181
208
|
content: [
|
|
182
209
|
{
|
|
@@ -186,7 +213,7 @@ async function generateWithMeiGen(apiClient, prompt, model, aspectRatio, referen
|
|
|
186
213
|
},
|
|
187
214
|
{
|
|
188
215
|
type: 'text',
|
|
189
|
-
text: `Image generated via MeiGen (model: ${model || 'default'})
|
|
216
|
+
text: `Image generated via MeiGen (model: ${model || 'default'}).${pathNote}\nImage URL: ${status.imageUrl}\n\nYou can use this URL as referenceImages in follow-up generate_image() calls for variations or style transfer.`,
|
|
190
217
|
},
|
|
191
218
|
],
|
|
192
219
|
};
|
|
@@ -211,21 +238,13 @@ async function generateWithComfyUI(config, prompt, workflow, aspectRatio, negati
|
|
|
211
238
|
}
|
|
212
239
|
}
|
|
213
240
|
// Notify: generation submitted
|
|
214
|
-
await extra
|
|
215
|
-
method: 'notifications/message',
|
|
216
|
-
params: { level: 'info', logger: 'generate_image', data: `Submitting workflow "${workflowName}" to ComfyUI...` },
|
|
217
|
-
});
|
|
241
|
+
await notify(extra, `Submitting workflow "${workflowName}" to ComfyUI...`);
|
|
218
242
|
const provider = new comfyui_js_1.ComfyUIProvider(config.comfyuiUrl || 'http://localhost:8188');
|
|
219
243
|
const result = await provider.generate(workflowData, prompt, { width, height, negativePrompt, referenceImages }, async (elapsedMs) => {
|
|
220
|
-
await extra.
|
|
221
|
-
method: 'notifications/message',
|
|
222
|
-
params: {
|
|
223
|
-
level: 'info',
|
|
224
|
-
logger: 'generate_image',
|
|
225
|
-
data: `Still generating... (${Math.round(elapsedMs / 1000)}s elapsed)`,
|
|
226
|
-
},
|
|
227
|
-
});
|
|
244
|
+
await notify(extra, `Still generating... (${Math.round(elapsedMs / 1000)}s elapsed)`);
|
|
228
245
|
});
|
|
246
|
+
const savedPath = saveImageLocally(result.imageBase64, result.mimeType);
|
|
247
|
+
const pathNote = savedPath ? `\nSaved to: ${savedPath}` : '';
|
|
229
248
|
return {
|
|
230
249
|
content: [
|
|
231
250
|
{
|
|
@@ -235,7 +254,7 @@ async function generateWithComfyUI(config, prompt, workflow, aspectRatio, negati
|
|
|
235
254
|
},
|
|
236
255
|
{
|
|
237
256
|
type: 'text',
|
|
238
|
-
text: `Image generated via ComfyUI (workflow: ${workflowName}).${result.referenceImageWarning ? `\n\nWarning: ${result.referenceImageWarning}` : ''}
|
|
257
|
+
text: `Image generated via ComfyUI (workflow: ${workflowName}).${pathNote}${result.referenceImageWarning ? `\n\nWarning: ${result.referenceImageWarning}` : ''}`,
|
|
239
258
|
},
|
|
240
259
|
],
|
|
241
260
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-image.js","sourceRoot":"","sources":["../../src/tools/generate-image.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;
|
|
1
|
+
{"version":3,"file":"generate-image.js","sourceRoot":"","sources":["../../src/tools/generate-image.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AA4EH,sDAiFC;AA3JD,6BAAuB;AACvB,2BAA6C;AAC7C,+BAA2B;AAC3B,2BAA4B;AAC5B,mCAAoC;AAKpC,4CAAwE;AAExE,0DAA2D;AAC3D,4DAMoC;AACpC,sDAA+C;AAE/C,sEAAsE;AACtE,MAAM,YAAY,GAAG,IAAI,wBAAS,CAAC,CAAC,CAAC,CAAA;AACrC,MAAM,gBAAgB,GAAG,IAAI,wBAAS,CAAC,CAAC,CAAC,CAAA;AAEzC,6FAA6F;AAC7F,SAAS,gBAAgB,CAAC,MAAc,EAAE,QAAgB;IACxD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAA;QACzF,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;QAClD,MAAM,EAAE,GAAG,IAAA,oBAAW,EAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;QACzC,MAAM,QAAQ,GAAG,GAAG,IAAI,IAAI,EAAE,IAAI,GAAG,EAAE,CAAA;QACvC,MAAM,GAAG,GAAG,IAAA,WAAI,EAAC,IAAA,YAAO,GAAE,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAA;QACjD,IAAA,cAAS,EAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QACnC,MAAM,QAAQ,GAAG,IAAA,WAAI,EAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;QACpC,IAAA,kBAAa,EAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAA;QACtD,OAAO,QAAQ,CAAA;IACjB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAA;IAClB,CAAC;AACH,CAAC;AAED,6EAA6E;AAC7E,KAAK,UAAU,MAAM,CAAC,KAA6D,EAAE,OAAe;IAClG,IAAI,CAAC;QACH,MAAM,KAAK,CAAC,gBAAgB,CAAC;YAC3B,MAAM,EAAE,uBAAuB;YAC/B,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,IAAI,EAAE,OAAO,EAAE;SACnE,CAAC,CAAA;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,0CAA0C;IAC5C,CAAC;AACH,CAAC;AAEY,QAAA,mBAAmB,GAAG;IACjC,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;IAC1D,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;SACzB,QAAQ,CAAC,8GAA8G,CAAC;IAC3H,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;SACxB,QAAQ,CAAC,wHAAwH,CAAC;IACrI,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;SAC/B,QAAQ,CAAC,sFAAsF,CAAC;IACnG,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;SAC3B,QAAQ,CAAC,wEAAwE,CAAC;IACrF,eAAe,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;SAC5C,QAAQ,CAAC,kaAAka,CAAC;IAC/a,QAAQ,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE;SACzD,QAAQ,CAAC,2EAA2E,CAAC;IACxF,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;SAC5B,QAAQ,CAAC,oGAAoG,CAAC;IACjH,cAAc,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;SAClC,QAAQ,CAAC,6FAA6F,CAAC;CAC3G,CAAA;AAED,SAAgB,qBAAqB,CAAC,MAAiB,EAAE,SAA0B,EAAE,MAAoB;IACvG,MAAM,CAAC,IAAI,CACT,gBAAgB,EAChB,gOAAgO,EAChO,2BAAmB,EACnB,EAAE,YAAY,EAAE,KAAK,EAAE,EACvB,KAAK,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,iBAAiB,EAAE,QAAQ,EAAE,cAAc,EAAE,EAAE,KAAK,EAAE,EAAE;QACrI,MAAM,kBAAkB,GAAG,IAAA,iCAAqB,EAAC,MAAM,CAAC,CAAA;QAExD,IAAI,kBAAkB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpC,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,6aAA6a;qBACpb,CAAC;gBACF,OAAO,EAAE,IAAI;aACd,CAAA;QACH,CAAC;QAED,kCAAkC;QAClC,IAAI,YAA0B,CAAA;QAC9B,IAAI,iBAAiB,EAAE,CAAC;YACtB,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC;gBACpD,OAAO;oBACL,OAAO,EAAE,CAAC;4BACR,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,aAAa,iBAAiB,mCAAmC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;yBACvG,CAAC;oBACF,OAAO,EAAE,IAAI;iBACd,CAAA;YACH,CAAC;YACD,YAAY,GAAG,iBAAiB,CAAA;QAClC,CAAC;aAAM,CAAC;YACN,YAAY,GAAG,IAAA,8BAAkB,EAAC,MAAM,CAAE,CAAA;QAC5C,CAAC;QAED,IAAI,CAAC;YACH,QAAQ,YAAY,EAAE,CAAC;gBACrB,KAAK,QAAQ,CAAC,CAAC,CAAC;oBACd,MAAM,YAAY,CAAC,OAAO,EAAE,CAAA;oBAC5B,IAAI,CAAC;wBACH,OAAO,MAAM,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,eAAe,CAAC,CAAA;oBACxF,CAAC;4BAAS,CAAC;wBACT,YAAY,CAAC,OAAO,EAAE,CAAA;oBACxB,CAAC;gBACH,CAAC;gBACD,KAAK,QAAQ,CAAC,CAAC,CAAC;oBACd,MAAM,YAAY,CAAC,OAAO,EAAE,CAAA;oBAC5B,IAAI,CAAC;wBACH,OAAO,MAAM,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,KAAK,CAAC,CAAA;oBAChG,CAAC;4BAAS,CAAC;wBACT,YAAY,CAAC,OAAO,EAAE,CAAA;oBACxB,CAAC;gBACH,CAAC;gBACD,KAAK,SAAS,CAAC,CAAC,CAAC;oBACf,MAAM,gBAAgB,CAAC,OAAO,EAAE,CAAA;oBAChC,IAAI,CAAC;wBACH,OAAO,MAAM,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,cAAc,EAAE,eAAe,EAAE,KAAK,CAAC,CAAA;oBACjH,CAAC;4BAAS,CAAC;wBACT,gBAAgB,CAAC,OAAO,EAAE,CAAA;oBAC5B,CAAC;gBACH,CAAC;gBACD;oBACE,OAAO;wBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,qBAAqB,YAAY,EAAE,EAAE,CAAC;wBAC/E,OAAO,EAAE,IAAI;qBACd,CAAA;YACL,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YACtE,MAAM,QAAQ,GAAG,aAAa,CAAC,OAAO,CAAC,CAAA;YACvC,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,4BAA4B,OAAO,OAAO,QAAQ,EAAE;qBAC3D,CAAC;gBACF,OAAO,EAAE,IAAI;aACd,CAAA;QACH,CAAC;IACH,CAAC,CACF,CAAA;AACH,CAAC;AAED,+DAA+D;AAC/D,yCAAyC;AACzC,+DAA+D;AAE/D,KAAK,UAAU,kBAAkB,CAC/B,MAAoB,EACpB,MAAc,EACd,KAAc,EACd,IAAa,EACb,OAAgB,EAChB,eAA0B;IAE1B,MAAM,QAAQ,GAAG,IAAI,0BAAc,CAAC,MAAM,CAAC,YAAa,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,WAAW,CAAC,CAAA;IACnG,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC,CAAA;IAEzF,MAAM,SAAS,GAAG,gBAAgB,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAA;IACvE,MAAM,OAAO,GAAG,eAAe,EAAE,MAAM;QACrC,CAAC,CAAC,UAAU,eAAe,CAAC,MAAM,mCAAmC;QACrE,CAAC,CAAC,EAAE,CAAA;IACN,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,eAAe,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;IAE5D,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,OAAgB;gBACtB,IAAI,EAAE,MAAM,CAAC,WAAW;gBACxB,QAAQ,EAAE,MAAM,CAAC,QAAQ;aAC1B;YACD;gBACE,IAAI,EAAE,MAAe;gBACrB,IAAI,EAAE,+BAA+B,KAAK,IAAI,MAAM,CAAC,WAAW,KAAK,OAAO,GAAG,QAAQ,EAAE;aAC1F;SACF;KACF,CAAA;AACH,CAAC;AAED,KAAK,UAAU,kBAAkB,CAC/B,SAA0B,EAC1B,MAAc,EACd,KAAyB,EACzB,WAA+B,EAC/B,eAAqC,EACrC,KAA6D;IAE7D,+BAA+B;IAC/B,MAAM,WAAW,GAAG,MAAM,SAAS,CAAC,aAAa,CAAC;QAChD,MAAM;QACN,OAAO,EAAE,KAAK;QACd,WAAW,EAAE,WAAW,IAAI,KAAK;QACjC,eAAe;KAChB,CAAC,CAAA;IAEF,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAA;IAC9C,CAAC;IAED,+BAA+B;IAC/B,MAAM,MAAM,CAAC,KAAK,EAAE,mDAAmD,CAAC,CAAA;IAExE,wDAAwD;IACxD,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,iBAAiB,CAC9C,WAAW,CAAC,YAAY,EACxB,OAAO,EACP,KAAK,EAAE,SAAS,EAAE,EAAE;QAClB,MAAM,MAAM,CAAC,KAAK,EAAE,wBAAwB,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,CAAA;IACvF,CAAC,CACF,CAAA;IAED,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,mBAAmB,CAAC,CAAA;IACtD,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAA;IACzD,CAAC;IAED,0DAA0D;IAC1D,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;IAC7C,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,uCAAuC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAA;IAC3E,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAA;IAC3C,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;IACrD,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,YAAY,CAAA;IAErE,MAAM,SAAS,GAAG,gBAAgB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;IACpD,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,eAAe,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;IAE5D,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,OAAgB;gBACtB,IAAI,EAAE,MAAM;gBACZ,QAAQ;aACT;YACD;gBACE,IAAI,EAAE,MAAe;gBACrB,IAAI,EAAE,sCAAsC,KAAK,IAAI,SAAS,KAAK,QAAQ,gBAAgB,MAAM,CAAC,QAAQ,mHAAmH;aAC9N;SACF;KACF,CAAA;AACH,CAAC;AAED,KAAK,UAAU,mBAAmB,CAChC,MAAoB,EACpB,MAAc,EACd,QAA4B,EAC5B,WAA+B,EAC/B,cAAkC,EAClC,eAAqC,EACrC,KAA6D;IAE7D,qBAAqB;IACrB,MAAM,SAAS,GAAG,IAAA,0BAAa,GAAE,CAAA;IACjC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,gGAAgG,CAAC,CAAA;IACnH,CAAC;IAED,MAAM,YAAY,GAAG,QAAQ,IAAI,MAAM,CAAC,sBAAsB,IAAI,SAAS,CAAC,CAAC,CAAC,CAAA;IAC9E,MAAM,YAAY,GAAG,IAAA,yBAAY,EAAC,YAAY,CAAC,CAAA;IAE/C,kDAAkD;IAClD,IAAI,KAAyB,CAAA;IAC7B,IAAI,MAA0B,CAAA;IAC9B,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,OAAO,GAAG,IAAA,+BAAkB,EAAC,YAAY,CAAC,CAAA;QAChD,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACpC,MAAM,OAAO,GAAG,IAAA,0BAAa,EAAC,WAAW,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;YACzE,KAAK,GAAG,OAAO,CAAC,KAAK,CAAA;YACrB,MAAM,GAAG,OAAO,CAAC,MAAM,CAAA;QACzB,CAAC;IACH,CAAC;IAED,+BAA+B;IAC/B,MAAM,MAAM,CAAC,KAAK,EAAE,wBAAwB,YAAY,iBAAiB,CAAC,CAAA;IAE1E,MAAM,QAAQ,GAAG,IAAI,4BAAe,CAAC,MAAM,CAAC,UAAU,IAAI,uBAAuB,CAAC,CAAA;IAClF,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,QAAQ,CACpC,YAAY,EACZ,MAAM,EACN,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,eAAe,EAAE,EAClD,KAAK,EAAE,SAAS,EAAE,EAAE;QAClB,MAAM,MAAM,CAAC,KAAK,EAAE,wBAAwB,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,CAAA;IACvF,CAAC,CACF,CAAA;IAED,MAAM,SAAS,GAAG,gBAAgB,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAA;IACvE,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,eAAe,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;IAE5D,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,OAAgB;gBACtB,IAAI,EAAE,MAAM,CAAC,WAAW;gBACxB,QAAQ,EAAE,MAAM,CAAC,QAAQ;aAC1B;YACD;gBACE,IAAI,EAAE,MAAe;gBACrB,IAAI,EAAE,0CAA0C,YAAY,KAAK,QAAQ,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC,gBAAgB,MAAM,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;aACjK;SACF;KACF,CAAA;AACH,CAAC;AAED,+DAA+D;AAC/D,uBAAuB;AACvB,+DAA+D;AAE/D,SAAS,aAAa,CAAC,OAAe;IACpC,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,EAAE,CAAA;IAEnC,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC;QAChH,OAAO,8GAA8G,CAAA;IAEvH,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;QACvF,OAAO,2FAA2F,CAAA;IAEpG,IAAI,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC;QAC1D,OAAO,wGAAwG,CAAA;IAEjH,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QACtF,OAAO,qFAAqF,CAAA;IAE9F,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC;QAC5D,OAAO,sGAAsG,CAAA;IAE/G,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QACrF,OAAO,+DAA+D,CAAA;IAExE,IAAI,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC;QAC/F,OAAO,yEAAyE,CAAA;IAElF,IAAI,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC;QAC5D,OAAO,oGAAoG,CAAA;IAE7G,OAAO,qDAAqD,CAAA;AAC9D,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "meigen",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2",
|
|
4
4
|
"description": "Visual creative expert plugin — search inspiration, enhance prompts, and generate AI images with intelligent workflow orchestration",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
package/skills/setup/SKILL.md
CHANGED
|
@@ -46,8 +46,7 @@ Present these options to the user:
|
|
|
46
46
|
|
|
47
47
|
### Option A: MeiGen Platform (Recommended)
|
|
48
48
|
|
|
49
|
-
- Supports **Nanobanana Pro**, **
|
|
50
|
-
- Free daily credits included
|
|
49
|
+
- Supports **Nanobanana Pro**, **GPT image 1.5**, **Seedream 4.5** and more
|
|
51
50
|
- Reference image support for style transfer
|
|
52
51
|
- No additional accounts needed — just get a token from meigen.ai
|
|
53
52
|
|
|
@@ -178,7 +177,7 @@ Collect the following information. Present common presets first for convenience:
|
|
|
178
177
|
|
|
179
178
|
| Service | Base URL | Default Model |
|
|
180
179
|
|---------|----------|---------------|
|
|
181
|
-
| **OpenAI** | `https://api.openai.com` (default) | `gpt-image-1` |
|
|
180
|
+
| **OpenAI** | `https://api.openai.com` (default) | `gpt-image-1.5` |
|
|
182
181
|
| **Together AI** | `https://api.together.xyz/v1` | (check their docs) |
|
|
183
182
|
| **Fireworks AI** | `https://api.fireworks.ai/inference/v1` | (check their docs) |
|
|
184
183
|
|
|
@@ -194,7 +193,7 @@ Ask the user to either pick a preset or provide custom values.
|
|
|
194
193
|
- Only needed if using a non-OpenAI service
|
|
195
194
|
|
|
196
195
|
3. **Model Name** (optional): Which model to use
|
|
197
|
-
- Default: `gpt-image-1`
|
|
196
|
+
- Default: `gpt-image-1.5`
|
|
198
197
|
- Different services use different model names
|
|
199
198
|
|
|
200
199
|
### Optional: Test the connection
|
|
@@ -210,7 +209,7 @@ This helps catch invalid keys or wrong URLs before saving.
|
|
|
210
209
|
|
|
211
210
|
Proceed to **Step 4** with config from the collected fields (see bottom of this section for format).
|
|
212
211
|
|
|
213
|
-
Only include fields that differ from defaults. Omit `openaiBaseUrl` if it's `https://api.openai.com`, omit `openaiModel` if it's `gpt-image-1`.
|
|
212
|
+
Only include fields that differ from defaults. Omit `openaiBaseUrl` if it's `https://api.openai.com`, omit `openaiModel` if it's `gpt-image-1.5`.
|
|
214
213
|
|
|
215
214
|
## Step 3D: Import from curl Example
|
|
216
215
|
|
|
@@ -221,7 +220,7 @@ Ask the user to paste their curl command. Common formats they might paste:
|
|
|
221
220
|
curl https://api.openai.com/v1/images/generations \
|
|
222
221
|
-H "Authorization: Bearer sk-xxx" \
|
|
223
222
|
-H "Content-Type: application/json" \
|
|
224
|
-
-d '{"model": "gpt-image-1", "prompt": "a cat", "n": 1, "size": "1024x1024"}'
|
|
223
|
+
-d '{"model": "gpt-image-1.5", "prompt": "a cat", "n": 1, "size": "1024x1024"}'
|
|
225
224
|
```
|
|
226
225
|
|
|
227
226
|
**Format 2: Simple model list test**
|