meigen 0.1.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 +242 -0
- package/README.zh-CN.md +242 -0
- package/bin/meigen-mcp.js +2 -0
- package/data/trending-prompts.json +26737 -0
- package/dist/config.d.ts +24 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +71 -0
- package/dist/config.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +18 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/meigen-api.d.ts +64 -0
- package/dist/lib/meigen-api.d.ts.map +1 -0
- package/dist/lib/meigen-api.js +118 -0
- package/dist/lib/meigen-api.js.map +1 -0
- package/dist/lib/prompt-library.d.ts +44 -0
- package/dist/lib/prompt-library.d.ts.map +1 -0
- package/dist/lib/prompt-library.js +130 -0
- package/dist/lib/prompt-library.js.map +1 -0
- package/dist/lib/prompts.d.ts +21 -0
- package/dist/lib/prompts.d.ts.map +1 -0
- package/dist/lib/prompts.js +116 -0
- package/dist/lib/prompts.js.map +1 -0
- package/dist/lib/providers/comfyui.d.ts +82 -0
- package/dist/lib/providers/comfyui.d.ts.map +1 -0
- package/dist/lib/providers/comfyui.js +436 -0
- package/dist/lib/providers/comfyui.js.map +1 -0
- package/dist/lib/providers/gemini.d.ts +13 -0
- package/dist/lib/providers/gemini.d.ts.map +1 -0
- package/dist/lib/providers/gemini.js +63 -0
- package/dist/lib/providers/gemini.js.map +1 -0
- package/dist/lib/providers/openai.d.ts +14 -0
- package/dist/lib/providers/openai.d.ts.map +1 -0
- package/dist/lib/providers/openai.js +75 -0
- package/dist/lib/providers/openai.js.map +1 -0
- package/dist/lib/providers/types.d.ts +22 -0
- package/dist/lib/providers/types.d.ts.map +1 -0
- package/dist/lib/providers/types.js +7 -0
- package/dist/lib/providers/types.js.map +1 -0
- package/dist/lib/semaphore.d.ts +13 -0
- package/dist/lib/semaphore.d.ts.map +1 -0
- package/dist/lib/semaphore.js +32 -0
- package/dist/lib/semaphore.js.map +1 -0
- package/dist/lib/upload.d.ts +17 -0
- package/dist/lib/upload.d.ts.map +1 -0
- package/dist/lib/upload.js +135 -0
- package/dist/lib/upload.js.map +1 -0
- package/dist/server.d.ts +7 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +163 -0
- package/dist/server.js.map +1 -0
- package/dist/tools/comfyui-workflow.d.ts +17 -0
- package/dist/tools/comfyui-workflow.d.ts.map +1 -0
- package/dist/tools/comfyui-workflow.js +230 -0
- package/dist/tools/comfyui-workflow.js.map +1 -0
- package/dist/tools/enhance-prompt.d.ts +12 -0
- package/dist/tools/enhance-prompt.d.ts.map +1 -0
- package/dist/tools/enhance-prompt.js +27 -0
- package/dist/tools/enhance-prompt.js.map +1 -0
- package/dist/tools/generate-image.d.ts +23 -0
- package/dist/tools/generate-image.d.ts.map +1 -0
- package/dist/tools/generate-image.js +266 -0
- package/dist/tools/generate-image.js.map +1 -0
- package/dist/tools/get-inspiration.d.ts +12 -0
- package/dist/tools/get-inspiration.d.ts.map +1 -0
- package/dist/tools/get-inspiration.js +111 -0
- package/dist/tools/get-inspiration.js.map +1 -0
- package/dist/tools/list-models.d.ts +13 -0
- package/dist/tools/list-models.d.ts.map +1 -0
- package/dist/tools/list-models.js +104 -0
- package/dist/tools/list-models.js.map +1 -0
- package/dist/tools/search-gallery.d.ts +15 -0
- package/dist/tools/search-gallery.d.ts.map +1 -0
- package/dist/tools/search-gallery.js +78 -0
- package/dist/tools/search-gallery.js.map +1 -0
- package/dist/tools/upload-reference-image.d.ts +13 -0
- package/dist/tools/upload-reference-image.d.ts.map +1 -0
- package/dist/tools/upload-reference-image.js +69 -0
- package/dist/tools/upload-reference-image.js.map +1 -0
- package/package.json +45 -0
- package/skills/setup/SKILL.md +324 -0
- package/skills/visual-creative/SKILL.md +185 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"comfyui.js","sourceRoot":"","sources":["../../../src/lib/providers/comfyui.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Google Gemini Provider
|
|
3
|
+
* 支持 gemini-2.5-flash-image、gemini-3-pro-image 等
|
|
4
|
+
*/
|
|
5
|
+
import type { ImageProvider, ImageGenerationRequest, ImageGenerationResult } from './types.js';
|
|
6
|
+
export declare class GeminiProvider implements ImageProvider {
|
|
7
|
+
name: string;
|
|
8
|
+
private apiKey;
|
|
9
|
+
private defaultModel;
|
|
10
|
+
constructor(apiKey: string, defaultModel: string);
|
|
11
|
+
generate(request: ImageGenerationRequest): Promise<ImageGenerationResult>;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=gemini.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gemini.d.ts","sourceRoot":"","sources":["../../../src/lib/providers/gemini.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAoB9F,qBAAa,cAAe,YAAW,aAAa;IAClD,IAAI,SAAW;IAEf,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,YAAY,CAAQ;gBAEhB,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM;IAK1C,QAAQ,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,qBAAqB,CAAC;CAqDhF"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Google Gemini Provider
|
|
4
|
+
* 支持 gemini-2.5-flash-image、gemini-3-pro-image 等
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.GeminiProvider = void 0;
|
|
8
|
+
class GeminiProvider {
|
|
9
|
+
name = 'gemini';
|
|
10
|
+
apiKey;
|
|
11
|
+
defaultModel;
|
|
12
|
+
constructor(apiKey, defaultModel) {
|
|
13
|
+
this.apiKey = apiKey;
|
|
14
|
+
this.defaultModel = defaultModel;
|
|
15
|
+
}
|
|
16
|
+
async generate(request) {
|
|
17
|
+
const model = request.model || this.defaultModel;
|
|
18
|
+
const url = `https://generativelanguage.googleapis.com/v1beta/models/${model}:generateContent`;
|
|
19
|
+
const body = {
|
|
20
|
+
contents: [{
|
|
21
|
+
parts: [{ text: request.prompt }],
|
|
22
|
+
}],
|
|
23
|
+
generationConfig: {
|
|
24
|
+
responseModalities: ['TEXT', 'IMAGE'],
|
|
25
|
+
imageConfig: {
|
|
26
|
+
...(request.aspectRatio && { aspectRatio: request.aspectRatio }),
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
};
|
|
30
|
+
const res = await fetch(url, {
|
|
31
|
+
method: 'POST',
|
|
32
|
+
headers: {
|
|
33
|
+
'x-goog-api-key': this.apiKey,
|
|
34
|
+
'Content-Type': 'application/json',
|
|
35
|
+
},
|
|
36
|
+
body: JSON.stringify(body),
|
|
37
|
+
});
|
|
38
|
+
if (!res.ok) {
|
|
39
|
+
const errorText = await res.text();
|
|
40
|
+
throw new Error(`Gemini API error ${res.status}: ${errorText}`);
|
|
41
|
+
}
|
|
42
|
+
const json = await res.json();
|
|
43
|
+
if (json.error) {
|
|
44
|
+
throw new Error(`Gemini API error: ${json.error.message}`);
|
|
45
|
+
}
|
|
46
|
+
// 从 multimodal response 中提取图片
|
|
47
|
+
const parts = json.candidates?.[0]?.content?.parts;
|
|
48
|
+
if (!parts) {
|
|
49
|
+
throw new Error('No content in Gemini response');
|
|
50
|
+
}
|
|
51
|
+
for (const part of parts) {
|
|
52
|
+
if (part.inlineData) {
|
|
53
|
+
return {
|
|
54
|
+
imageBase64: part.inlineData.data,
|
|
55
|
+
mimeType: part.inlineData.mimeType,
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
throw new Error('No image data in Gemini response');
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
exports.GeminiProvider = GeminiProvider;
|
|
63
|
+
//# sourceMappingURL=gemini.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../../src/lib/providers/gemini.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAsBH,MAAa,cAAc;IACzB,IAAI,GAAG,QAAQ,CAAA;IAEP,MAAM,CAAQ;IACd,YAAY,CAAQ;IAE5B,YAAY,MAAc,EAAE,YAAoB;QAC9C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,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;QAChD,MAAM,GAAG,GAAG,2DAA2D,KAAK,kBAAkB,CAAA;QAE9F,MAAM,IAAI,GAA4B;YACpC,QAAQ,EAAE,CAAC;oBACT,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;iBAClC,CAAC;YACF,gBAAgB,EAAE;gBAChB,kBAAkB,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC;gBACrC,WAAW,EAAE;oBACX,GAAG,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC;iBACjE;aACF;SACF,CAAA;QAED,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAC3B,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,gBAAgB,EAAE,IAAI,CAAC,MAAM;gBAC7B,cAAc,EAAE,kBAAkB;aACnC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC3B,CAAC,CAAA;QAEF,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAA;YAClC,MAAM,IAAI,KAAK,CAAC,oBAAoB,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC,CAAA;QACjE,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAoB,CAAA;QAE/C,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,qBAAqB,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAA;QAC5D,CAAC;QAED,8BAA8B;QAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAA;QAClD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAA;QAClD,CAAC;QAED,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBACpB,OAAO;oBACL,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI;oBACjC,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ;iBACnC,CAAA;YACH,CAAC;QACH,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAA;IACrD,CAAC;CACF;AAhED,wCAgEC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenAI-compatible Provider
|
|
3
|
+
* Supports gpt-image-1, DALL-E 3, and any OpenAI-compatible service (Together AI, DeepInfra, etc.)
|
|
4
|
+
*/
|
|
5
|
+
import type { ImageProvider, ImageGenerationRequest, ImageGenerationResult } from './types.js';
|
|
6
|
+
export declare class OpenAIProvider implements ImageProvider {
|
|
7
|
+
name: string;
|
|
8
|
+
private apiKey;
|
|
9
|
+
private baseUrl;
|
|
10
|
+
private defaultModel;
|
|
11
|
+
constructor(apiKey: string, baseUrl: string, defaultModel: string);
|
|
12
|
+
generate(request: ImageGenerationRequest): Promise<ImageGenerationResult>;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=openai.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../../src/lib/providers/openai.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAS9F,qBAAa,cAAe,YAAW,aAAa;IAClD,IAAI,SAAW;IAEf,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,YAAY,CAAQ;gBAEhB,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM;IAM3D,QAAQ,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,qBAAqB,CAAC;CAkEhF"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* OpenAI-compatible Provider
|
|
4
|
+
* Supports gpt-image-1, DALL-E 3, and any OpenAI-compatible service (Together AI, DeepInfra, etc.)
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.OpenAIProvider = void 0;
|
|
8
|
+
class OpenAIProvider {
|
|
9
|
+
name = 'openai';
|
|
10
|
+
apiKey;
|
|
11
|
+
baseUrl;
|
|
12
|
+
defaultModel;
|
|
13
|
+
constructor(apiKey, baseUrl, defaultModel) {
|
|
14
|
+
this.apiKey = apiKey;
|
|
15
|
+
this.baseUrl = baseUrl.replace(/\/$/, '');
|
|
16
|
+
this.defaultModel = defaultModel;
|
|
17
|
+
}
|
|
18
|
+
async generate(request) {
|
|
19
|
+
const model = request.model || this.defaultModel;
|
|
20
|
+
const body = {
|
|
21
|
+
model,
|
|
22
|
+
prompt: request.prompt,
|
|
23
|
+
n: request.n || 1,
|
|
24
|
+
size: request.size || '1024x1024',
|
|
25
|
+
};
|
|
26
|
+
// gpt-image series returns base64 by default, no need for response_format
|
|
27
|
+
// DALL-E series requires explicit response_format
|
|
28
|
+
if (model.startsWith('dall-e')) {
|
|
29
|
+
body.response_format = 'b64_json';
|
|
30
|
+
}
|
|
31
|
+
if (request.quality) {
|
|
32
|
+
body.quality = request.quality;
|
|
33
|
+
}
|
|
34
|
+
// gpt-image-1 supports reference images via the image parameter
|
|
35
|
+
// DALL-E series does not support image input in the generations endpoint
|
|
36
|
+
if (request.referenceImages?.length && !model.startsWith('dall-e')) {
|
|
37
|
+
body.image = request.referenceImages;
|
|
38
|
+
}
|
|
39
|
+
const res = await fetch(`${this.baseUrl}/v1/images/generations`, {
|
|
40
|
+
method: 'POST',
|
|
41
|
+
headers: {
|
|
42
|
+
'Authorization': `Bearer ${this.apiKey}`,
|
|
43
|
+
'Content-Type': 'application/json',
|
|
44
|
+
},
|
|
45
|
+
body: JSON.stringify(body),
|
|
46
|
+
});
|
|
47
|
+
if (!res.ok) {
|
|
48
|
+
const errorText = await res.text();
|
|
49
|
+
throw new Error(`OpenAI API error ${res.status}: ${errorText}`);
|
|
50
|
+
}
|
|
51
|
+
const json = await res.json();
|
|
52
|
+
const imageData = json.data?.[0];
|
|
53
|
+
if (!imageData) {
|
|
54
|
+
throw new Error('No image data in response');
|
|
55
|
+
}
|
|
56
|
+
if (imageData.b64_json) {
|
|
57
|
+
return {
|
|
58
|
+
imageBase64: imageData.b64_json,
|
|
59
|
+
mimeType: 'image/png',
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
// If response contains a URL, download and convert to base64
|
|
63
|
+
if (imageData.url) {
|
|
64
|
+
const imageRes = await fetch(imageData.url);
|
|
65
|
+
const buffer = await imageRes.arrayBuffer();
|
|
66
|
+
return {
|
|
67
|
+
imageBase64: Buffer.from(buffer).toString('base64'),
|
|
68
|
+
mimeType: imageRes.headers.get('content-type') || 'image/png',
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
throw new Error('Response contains neither b64_json nor url');
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
exports.OpenAIProvider = OpenAIProvider;
|
|
75
|
+
//# sourceMappingURL=openai.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openai.js","sourceRoot":"","sources":["../../../src/lib/providers/openai.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Image generation provider interface
|
|
3
|
+
* For OpenAI-compatible APIs (distinct from the project's APIYI provider)
|
|
4
|
+
*/
|
|
5
|
+
export interface ImageGenerationRequest {
|
|
6
|
+
prompt: string;
|
|
7
|
+
model?: string;
|
|
8
|
+
size?: string;
|
|
9
|
+
aspectRatio?: string;
|
|
10
|
+
quality?: string;
|
|
11
|
+
n?: number;
|
|
12
|
+
referenceImages?: string[];
|
|
13
|
+
}
|
|
14
|
+
export interface ImageGenerationResult {
|
|
15
|
+
imageBase64: string;
|
|
16
|
+
mimeType: string;
|
|
17
|
+
}
|
|
18
|
+
export interface ImageProvider {
|
|
19
|
+
name: string;
|
|
20
|
+
generate(request: ImageGenerationRequest): Promise<ImageGenerationResult>;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/providers/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,CAAC,CAAC,EAAE,MAAM,CAAA;IACV,eAAe,CAAC,EAAE,MAAM,EAAE,CAAA;CAC3B;AAED,MAAM,WAAW,qBAAqB;IACpC,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAA;CAC1E"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/lib/providers/types.ts"],"names":[],"mappings":";AAAA;;;GAGG"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Simple async semaphore for concurrency control.
|
|
3
|
+
* Used to limit parallel generation requests per provider.
|
|
4
|
+
*/
|
|
5
|
+
export declare class Semaphore {
|
|
6
|
+
private max;
|
|
7
|
+
private queue;
|
|
8
|
+
private running;
|
|
9
|
+
constructor(max: number);
|
|
10
|
+
acquire(): Promise<void>;
|
|
11
|
+
release(): void;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=semaphore.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"semaphore.d.ts","sourceRoot":"","sources":["../../src/lib/semaphore.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,qBAAa,SAAS;IAIR,OAAO,CAAC,GAAG;IAHvB,OAAO,CAAC,KAAK,CAAqB;IAClC,OAAO,CAAC,OAAO,CAAI;gBAEC,GAAG,EAAE,MAAM;IAEzB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAU9B,OAAO,IAAI,IAAI;CAKhB"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Simple async semaphore for concurrency control.
|
|
4
|
+
* Used to limit parallel generation requests per provider.
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.Semaphore = void 0;
|
|
8
|
+
class Semaphore {
|
|
9
|
+
max;
|
|
10
|
+
queue = [];
|
|
11
|
+
running = 0;
|
|
12
|
+
constructor(max) {
|
|
13
|
+
this.max = max;
|
|
14
|
+
}
|
|
15
|
+
async acquire() {
|
|
16
|
+
if (this.running < this.max) {
|
|
17
|
+
this.running++;
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
return new Promise(resolve => {
|
|
21
|
+
this.queue.push(() => { this.running++; resolve(); });
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
release() {
|
|
25
|
+
this.running--;
|
|
26
|
+
const next = this.queue.shift();
|
|
27
|
+
if (next)
|
|
28
|
+
next();
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
exports.Semaphore = Semaphore;
|
|
32
|
+
//# sourceMappingURL=semaphore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"semaphore.js","sourceRoot":"","sources":["../../src/lib/semaphore.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,MAAa,SAAS;IAIA;IAHZ,KAAK,GAAmB,EAAE,CAAA;IAC1B,OAAO,GAAG,CAAC,CAAA;IAEnB,YAAoB,GAAW;QAAX,QAAG,GAAH,GAAG,CAAQ;IAAG,CAAC;IAEnC,KAAK,CAAC,OAAO;QACX,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC5B,IAAI,CAAC,OAAO,EAAE,CAAA;YACd,OAAM;QACR,CAAC;QACD,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;YAC3B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAA,CAAC,CAAC,CAAC,CAAA;QACtD,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,OAAO;QACL,IAAI,CAAC,OAAO,EAAE,CAAA;QACd,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA;QAC/B,IAAI,IAAI;YAAE,IAAI,EAAE,CAAA;IAClB,CAAC;CACF;AArBD,8BAqBC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Image compression and R2 upload utility
|
|
3
|
+
* Replicates the frontend's ReferenceImageUpload.tsx logic for Node.js:
|
|
4
|
+
* compress (max 2MB, max 2048px) → presign → PUT to R2 → public URL
|
|
5
|
+
*/
|
|
6
|
+
import type { MeiGenConfig } from '../config.js';
|
|
7
|
+
export interface UploadResult {
|
|
8
|
+
publicUrl: string;
|
|
9
|
+
originalSize: number;
|
|
10
|
+
compressedSize: number;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Read a local image, compress it, and upload to R2.
|
|
14
|
+
* Returns the public URL for use as referenceImages in generate_image.
|
|
15
|
+
*/
|
|
16
|
+
export declare function processAndUploadImage(filePath: string, config: MeiGenConfig): Promise<UploadResult>;
|
|
17
|
+
//# sourceMappingURL=upload.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upload.d.ts","sourceRoot":"","sources":["../../src/lib/upload.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAoBhD,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,EAAE,MAAM,CAAA;IACpB,cAAc,EAAE,MAAM,CAAA;CACvB;AA2GD;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,YAAY,GACnB,OAAO,CAAC,YAAY,CAAC,CAwBvB"}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Image compression and R2 upload utility
|
|
4
|
+
* Replicates the frontend's ReferenceImageUpload.tsx logic for Node.js:
|
|
5
|
+
* compress (max 2MB, max 2048px) → presign → PUT to R2 → public URL
|
|
6
|
+
*/
|
|
7
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
8
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
9
|
+
};
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.processAndUploadImage = processAndUploadImage;
|
|
12
|
+
const fs_1 = require("fs");
|
|
13
|
+
const path_1 = require("path");
|
|
14
|
+
const sharp_1 = __importDefault(require("sharp"));
|
|
15
|
+
const MAX_SIZE_BYTES = 2 * 1024 * 1024; // 2MB compression target (matches frontend)
|
|
16
|
+
const MAX_DIMENSION = 2048; // Max width or height (matches frontend)
|
|
17
|
+
const MIME_MAP = {
|
|
18
|
+
'.jpg': 'image/jpeg',
|
|
19
|
+
'.jpeg': 'image/jpeg',
|
|
20
|
+
'.png': 'image/png',
|
|
21
|
+
'.webp': 'image/webp',
|
|
22
|
+
'.gif': 'image/gif',
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* Compress an image buffer to fit within MAX_SIZE_BYTES and MAX_DIMENSION.
|
|
26
|
+
* Strategy: resize to fit max dimension, then reduce JPEG quality if still too large.
|
|
27
|
+
*/
|
|
28
|
+
async function compressImage(inputBuffer, mimeType) {
|
|
29
|
+
const metadata = await (0, sharp_1.default)(inputBuffer).metadata();
|
|
30
|
+
const { width, height } = metadata;
|
|
31
|
+
// Already small enough — no compression needed
|
|
32
|
+
const needsResize = (width && width > MAX_DIMENSION) || (height && height > MAX_DIMENSION);
|
|
33
|
+
if (!needsResize && inputBuffer.byteLength <= MAX_SIZE_BYTES) {
|
|
34
|
+
return { buffer: inputBuffer, mimeType };
|
|
35
|
+
}
|
|
36
|
+
// Resize to fit within MAX_DIMENSION, preserving aspect ratio
|
|
37
|
+
let pipeline = (0, sharp_1.default)(inputBuffer);
|
|
38
|
+
if (needsResize) {
|
|
39
|
+
pipeline = pipeline.resize(MAX_DIMENSION, MAX_DIMENSION, { fit: 'inside', withoutEnlargement: true });
|
|
40
|
+
}
|
|
41
|
+
// Output as JPEG for best compression (unless already WebP)
|
|
42
|
+
if (mimeType === 'image/webp') {
|
|
43
|
+
let result = await pipeline.webp({ quality: 85 }).toBuffer();
|
|
44
|
+
if (result.byteLength <= MAX_SIZE_BYTES) {
|
|
45
|
+
return { buffer: result, mimeType: 'image/webp' };
|
|
46
|
+
}
|
|
47
|
+
// Reduce quality iteratively
|
|
48
|
+
for (const q of [80, 70, 60]) {
|
|
49
|
+
result = await (0, sharp_1.default)(inputBuffer)
|
|
50
|
+
.resize(MAX_DIMENSION, MAX_DIMENSION, { fit: 'inside', withoutEnlargement: true })
|
|
51
|
+
.webp({ quality: q })
|
|
52
|
+
.toBuffer();
|
|
53
|
+
if (result.byteLength <= MAX_SIZE_BYTES) {
|
|
54
|
+
return { buffer: result, mimeType: 'image/webp' };
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return { buffer: result, mimeType: 'image/webp' };
|
|
58
|
+
}
|
|
59
|
+
// Default: output as JPEG
|
|
60
|
+
let result = await pipeline.jpeg({ quality: 85 }).toBuffer();
|
|
61
|
+
if (result.byteLength <= MAX_SIZE_BYTES) {
|
|
62
|
+
return { buffer: result, mimeType: 'image/jpeg' };
|
|
63
|
+
}
|
|
64
|
+
// Reduce quality iteratively
|
|
65
|
+
for (const q of [80, 70, 60]) {
|
|
66
|
+
result = await (0, sharp_1.default)(inputBuffer)
|
|
67
|
+
.resize(MAX_DIMENSION, MAX_DIMENSION, { fit: 'inside', withoutEnlargement: true })
|
|
68
|
+
.jpeg({ quality: q })
|
|
69
|
+
.toBuffer();
|
|
70
|
+
if (result.byteLength <= MAX_SIZE_BYTES) {
|
|
71
|
+
return { buffer: result, mimeType: 'image/jpeg' };
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
return { buffer: result, mimeType: 'image/jpeg' };
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Upload a buffer to R2 via the presign flow.
|
|
78
|
+
* No authentication required — the presign endpoint validates content-type and size only.
|
|
79
|
+
*/
|
|
80
|
+
async function uploadToR2(buffer, filename, mimeType, config) {
|
|
81
|
+
// 1. Get presigned URL
|
|
82
|
+
const presignRes = await fetch(`${config.uploadGatewayUrl}/upload/presign`, {
|
|
83
|
+
method: 'POST',
|
|
84
|
+
headers: { 'Content-Type': 'application/json' },
|
|
85
|
+
body: JSON.stringify({
|
|
86
|
+
filename,
|
|
87
|
+
contentType: mimeType,
|
|
88
|
+
size: buffer.byteLength,
|
|
89
|
+
}),
|
|
90
|
+
});
|
|
91
|
+
if (!presignRes.ok) {
|
|
92
|
+
const errorData = await presignRes.json().catch(() => ({}));
|
|
93
|
+
throw new Error(errorData.error || `Presign failed: ${presignRes.status}`);
|
|
94
|
+
}
|
|
95
|
+
const presignData = await presignRes.json();
|
|
96
|
+
if (!presignData.success) {
|
|
97
|
+
throw new Error(presignData.error || 'Presign failed');
|
|
98
|
+
}
|
|
99
|
+
// 2. Upload to R2
|
|
100
|
+
const uploadRes = await fetch(presignData.presignedUrl, {
|
|
101
|
+
method: 'PUT',
|
|
102
|
+
headers: { 'Content-Type': mimeType },
|
|
103
|
+
body: buffer,
|
|
104
|
+
});
|
|
105
|
+
if (!uploadRes.ok) {
|
|
106
|
+
throw new Error(`Upload failed: ${uploadRes.status}`);
|
|
107
|
+
}
|
|
108
|
+
return presignData.publicUrl;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Read a local image, compress it, and upload to R2.
|
|
112
|
+
* Returns the public URL for use as referenceImages in generate_image.
|
|
113
|
+
*/
|
|
114
|
+
async function processAndUploadImage(filePath, config) {
|
|
115
|
+
// Read file
|
|
116
|
+
const originalBuffer = (0, fs_1.readFileSync)(filePath);
|
|
117
|
+
const originalSize = originalBuffer.byteLength;
|
|
118
|
+
// Detect MIME type from extension
|
|
119
|
+
const ext = (0, path_1.extname)(filePath).toLowerCase();
|
|
120
|
+
const mimeType = MIME_MAP[ext];
|
|
121
|
+
if (!mimeType) {
|
|
122
|
+
throw new Error(`Unsupported image format: ${ext}. Supported: JPEG, PNG, WebP, GIF`);
|
|
123
|
+
}
|
|
124
|
+
// Compress
|
|
125
|
+
const compressed = await compressImage(originalBuffer, mimeType);
|
|
126
|
+
// Upload
|
|
127
|
+
const filename = (0, path_1.basename)(filePath);
|
|
128
|
+
const publicUrl = await uploadToR2(compressed.buffer, filename, compressed.mimeType, config);
|
|
129
|
+
return {
|
|
130
|
+
publicUrl,
|
|
131
|
+
originalSize,
|
|
132
|
+
compressedSize: compressed.buffer.byteLength,
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=upload.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upload.js","sourceRoot":"","sources":["../../src/lib/upload.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;AA4IH,sDA2BC;AArKD,2BAAiC;AACjC,+BAAwC;AACxC,kDAAyB;AAGzB,MAAM,cAAc,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAA,CAAE,4CAA4C;AACpF,MAAM,aAAa,GAAG,IAAI,CAAA,CAAe,yCAAyC;AAElF,MAAM,QAAQ,GAA2B;IACvC,MAAM,EAAE,YAAY;IACpB,OAAO,EAAE,YAAY;IACrB,MAAM,EAAE,WAAW;IACnB,OAAO,EAAE,YAAY;IACrB,MAAM,EAAE,WAAW;CACpB,CAAA;AAeD;;;GAGG;AACH,KAAK,UAAU,aAAa,CAC1B,WAAmB,EACnB,QAAgB;IAEhB,MAAM,QAAQ,GAAG,MAAM,IAAA,eAAK,EAAC,WAAW,CAAC,CAAC,QAAQ,EAAE,CAAA;IACpD,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAA;IAElC,+CAA+C;IAC/C,MAAM,WAAW,GAAG,CAAC,KAAK,IAAI,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,GAAG,aAAa,CAAC,CAAA;IAC1F,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,UAAU,IAAI,cAAc,EAAE,CAAC;QAC7D,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAA;IAC1C,CAAC;IAED,8DAA8D;IAC9D,IAAI,QAAQ,GAAG,IAAA,eAAK,EAAC,WAAW,CAAC,CAAA;IACjC,IAAI,WAAW,EAAE,CAAC;QAChB,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,aAAa,EAAE,aAAa,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC,CAAA;IACvG,CAAC;IAED,4DAA4D;IAC5D,IAAI,QAAQ,KAAK,YAAY,EAAE,CAAC;QAC9B,IAAI,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAA;QAC5D,IAAI,MAAM,CAAC,UAAU,IAAI,cAAc,EAAE,CAAC;YACxC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAA;QACnD,CAAC;QACD,6BAA6B;QAC7B,KAAK,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;YAC7B,MAAM,GAAG,MAAM,IAAA,eAAK,EAAC,WAAW,CAAC;iBAC9B,MAAM,CAAC,aAAa,EAAE,aAAa,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC;iBACjF,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;iBACpB,QAAQ,EAAE,CAAA;YACb,IAAI,MAAM,CAAC,UAAU,IAAI,cAAc,EAAE,CAAC;gBACxC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAA;YACnD,CAAC;QACH,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAA;IACnD,CAAC;IAED,0BAA0B;IAC1B,IAAI,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAA;IAC5D,IAAI,MAAM,CAAC,UAAU,IAAI,cAAc,EAAE,CAAC;QACxC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAA;IACnD,CAAC;IACD,6BAA6B;IAC7B,KAAK,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;QAC7B,MAAM,GAAG,MAAM,IAAA,eAAK,EAAC,WAAW,CAAC;aAC9B,MAAM,CAAC,aAAa,EAAE,aAAa,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC;aACjF,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;aACpB,QAAQ,EAAE,CAAA;QACb,IAAI,MAAM,CAAC,UAAU,IAAI,cAAc,EAAE,CAAC;YACxC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAA;QACnD,CAAC;IACH,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAA;AACnD,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,UAAU,CACvB,MAAc,EACd,QAAgB,EAChB,QAAgB,EAChB,MAAoB;IAEpB,uBAAuB;IACvB,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,GAAG,MAAM,CAAC,gBAAgB,iBAAiB,EAAE;QAC1E,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;QAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YACnB,QAAQ;YACR,WAAW,EAAE,QAAQ;YACrB,IAAI,EAAE,MAAM,CAAC,UAAU;SACxB,CAAC;KACH,CAAC,CAAA;IAEF,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC;QACnB,MAAM,SAAS,GAAG,MAAM,UAAU,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAuB,CAAA;QACjF,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,mBAAmB,UAAU,CAAC,MAAM,EAAE,CAAC,CAAA;IAC5E,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,UAAU,CAAC,IAAI,EAAqB,CAAA;IAC9D,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,WAAW,CAAC,KAAK,IAAI,gBAAgB,CAAC,CAAA;IACxD,CAAC;IAED,kBAAkB;IAClB,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,WAAW,CAAC,YAAY,EAAE;QACtD,MAAM,EAAE,KAAK;QACb,OAAO,EAAE,EAAE,cAAc,EAAE,QAAQ,EAAE;QACrC,IAAI,EAAE,MAAM;KACb,CAAC,CAAA;IAEF,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,kBAAkB,SAAS,CAAC,MAAM,EAAE,CAAC,CAAA;IACvD,CAAC;IAED,OAAO,WAAW,CAAC,SAAS,CAAA;AAC9B,CAAC;AAED;;;GAGG;AACI,KAAK,UAAU,qBAAqB,CACzC,QAAgB,EAChB,MAAoB;IAEpB,YAAY;IACZ,MAAM,cAAc,GAAG,IAAA,iBAAY,EAAC,QAAQ,CAAC,CAAA;IAC7C,MAAM,YAAY,GAAG,cAAc,CAAC,UAAU,CAAA;IAE9C,kCAAkC;IAClC,MAAM,GAAG,GAAG,IAAA,cAAO,EAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAA;IAC3C,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAA;IAC9B,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,6BAA6B,GAAG,mCAAmC,CAAC,CAAA;IACtF,CAAC;IAED,WAAW;IACX,MAAM,UAAU,GAAG,MAAM,aAAa,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAA;IAEhE,SAAS;IACT,MAAM,QAAQ,GAAG,IAAA,eAAQ,EAAC,QAAQ,CAAC,CAAA;IACnC,MAAM,SAAS,GAAG,MAAM,UAAU,CAAC,UAAU,CAAC,MAAM,EAAE,QAAQ,EAAE,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;IAE5F,OAAO;QACL,SAAS;QACT,YAAY;QACZ,cAAc,EAAE,UAAU,CAAC,MAAM,CAAC,UAAU;KAC7C,CAAA;AACH,CAAC"}
|
package/dist/server.d.ts
ADDED
|
@@ -0,0 +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;AA4InE,wBAAgB,YAAY,cAyB3B"}
|