@memberjunction/core-actions 2.132.0 → 3.0.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/dist/custom/ai/generate-image.action.d.ts +111 -0
- package/dist/custom/ai/generate-image.action.d.ts.map +1 -0
- package/dist/custom/ai/generate-image.action.js +339 -0
- package/dist/custom/ai/generate-image.action.js.map +1 -0
- package/dist/custom/files/excel-writer.action.d.ts +24 -11
- package/dist/custom/files/excel-writer.action.d.ts.map +1 -1
- package/dist/custom/files/excel-writer.action.js +149 -139
- package/dist/custom/files/excel-writer.action.js.map +1 -1
- package/dist/custom/lists/add-records-to-list.action.d.ts +27 -0
- package/dist/custom/lists/add-records-to-list.action.d.ts.map +1 -0
- package/dist/custom/lists/add-records-to-list.action.js +200 -0
- package/dist/custom/lists/add-records-to-list.action.js.map +1 -0
- package/dist/custom/lists/create-list.action.d.ts +27 -0
- package/dist/custom/lists/create-list.action.d.ts.map +1 -0
- package/dist/custom/lists/create-list.action.js +180 -0
- package/dist/custom/lists/create-list.action.js.map +1 -0
- package/dist/custom/lists/get-list-records.action.d.ts +42 -0
- package/dist/custom/lists/get-list-records.action.d.ts.map +1 -0
- package/dist/custom/lists/get-list-records.action.js +240 -0
- package/dist/custom/lists/get-list-records.action.js.map +1 -0
- package/dist/custom/lists/get-record-list-membership.action.d.ts +24 -0
- package/dist/custom/lists/get-record-list-membership.action.d.ts.map +1 -0
- package/dist/custom/lists/get-record-list-membership.action.js +177 -0
- package/dist/custom/lists/get-record-list-membership.action.js.map +1 -0
- package/dist/custom/lists/index.d.ts +25 -0
- package/dist/custom/lists/index.d.ts.map +1 -0
- package/dist/custom/lists/index.js +56 -0
- package/dist/custom/lists/index.js.map +1 -0
- package/dist/custom/lists/remove-records-from-list.action.d.ts +44 -0
- package/dist/custom/lists/remove-records-from-list.action.d.ts.map +1 -0
- package/dist/custom/lists/remove-records-from-list.action.js +195 -0
- package/dist/custom/lists/remove-records-from-list.action.js.map +1 -0
- package/dist/custom/lists/update-list-item-status.action.d.ts +36 -0
- package/dist/custom/lists/update-list-item-status.action.d.ts.map +1 -0
- package/dist/custom/lists/update-list-item-status.action.js +201 -0
- package/dist/custom/lists/update-list-item-status.action.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/package.json +48 -23
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { ActionResultSimple, RunActionParams } from "@memberjunction/actions-base";
|
|
2
|
+
import { BaseAction } from "@memberjunction/actions";
|
|
3
|
+
/**
|
|
4
|
+
* Action that generates images using AI image generation models (DALL-E, Gemini, etc.)
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* ```typescript
|
|
8
|
+
* // Generate a simple image
|
|
9
|
+
* await runAction({
|
|
10
|
+
* ActionName: 'Generate Image',
|
|
11
|
+
* Params: [{
|
|
12
|
+
* Name: 'Prompt',
|
|
13
|
+
* Value: 'A serene mountain landscape at sunset with snow-capped peaks'
|
|
14
|
+
* }]
|
|
15
|
+
* });
|
|
16
|
+
*
|
|
17
|
+
* // Generate with specific model and size
|
|
18
|
+
* await runAction({
|
|
19
|
+
* ActionName: 'Generate Image',
|
|
20
|
+
* Params: [{
|
|
21
|
+
* Name: 'Prompt',
|
|
22
|
+
* Value: 'A futuristic cityscape with flying vehicles'
|
|
23
|
+
* }, {
|
|
24
|
+
* Name: 'Model',
|
|
25
|
+
* Value: 'dall-e-3'
|
|
26
|
+
* }, {
|
|
27
|
+
* Name: 'Size',
|
|
28
|
+
* Value: '1792x1024'
|
|
29
|
+
* }, {
|
|
30
|
+
* Name: 'Quality',
|
|
31
|
+
* Value: 'hd'
|
|
32
|
+
* }]
|
|
33
|
+
* });
|
|
34
|
+
*
|
|
35
|
+
* // Generate multiple images
|
|
36
|
+
* await runAction({
|
|
37
|
+
* ActionName: 'Generate Image',
|
|
38
|
+
* Params: [{
|
|
39
|
+
* Name: 'Prompt',
|
|
40
|
+
* Value: 'Abstract art in vibrant colors'
|
|
41
|
+
* }, {
|
|
42
|
+
* Name: 'NumberOfImages',
|
|
43
|
+
* Value: 3
|
|
44
|
+
* }]
|
|
45
|
+
* });
|
|
46
|
+
*
|
|
47
|
+
* // Image-to-image editing (transform a source image)
|
|
48
|
+
* await runAction({
|
|
49
|
+
* ActionName: 'Generate Image',
|
|
50
|
+
* Params: [{
|
|
51
|
+
* Name: 'Prompt',
|
|
52
|
+
* Value: 'Transform this into a professional infographic with dark theme'
|
|
53
|
+
* }, {
|
|
54
|
+
* Name: 'SourceImage',
|
|
55
|
+
* Value: 'base64_encoded_image_or_url'
|
|
56
|
+
* }]
|
|
57
|
+
* });
|
|
58
|
+
* ```
|
|
59
|
+
*/
|
|
60
|
+
export declare class GenerateImageAction extends BaseAction {
|
|
61
|
+
/**
|
|
62
|
+
* Generates or edits image(s) using AI image generation models.
|
|
63
|
+
*
|
|
64
|
+
* When SourceImage is provided, performs image-to-image editing (style transfer, transformation).
|
|
65
|
+
* When SourceImage is not provided, performs text-to-image generation.
|
|
66
|
+
*
|
|
67
|
+
* @param params - The action parameters containing:
|
|
68
|
+
* - Prompt: Text description of the image to generate or edit instructions (required)
|
|
69
|
+
* - Model: Model name/ID to use (optional, uses default if not specified)
|
|
70
|
+
* - NumberOfImages: Number of images to generate (optional, default: 1)
|
|
71
|
+
* - Size: Image size like "1024x1024" (optional)
|
|
72
|
+
* - Quality: Quality level - "standard" or "hd" (optional)
|
|
73
|
+
* - Style: Style preset - "vivid" or "natural" (optional)
|
|
74
|
+
* - NegativePrompt: Things to avoid in the image (optional)
|
|
75
|
+
* - OutputFormat: "base64" or "url" (optional, default: "base64")
|
|
76
|
+
* - SourceImage: Source image for image-to-image editing (optional, base64 or URL)
|
|
77
|
+
* - Mask: Mask image for inpainting - white/transparent areas are regenerated (optional)
|
|
78
|
+
*
|
|
79
|
+
* @returns Generated or edited image(s) as base64 or URLs
|
|
80
|
+
*/
|
|
81
|
+
protected InternalRunAction(params: RunActionParams): Promise<ActionResultSimple>;
|
|
82
|
+
/**
|
|
83
|
+
* Prepare an image generator instance using proper metadata lookup
|
|
84
|
+
*/
|
|
85
|
+
private prepareImageGenerator;
|
|
86
|
+
/**
|
|
87
|
+
* Execute text-to-image generation
|
|
88
|
+
*/
|
|
89
|
+
private executeImageGeneration;
|
|
90
|
+
/**
|
|
91
|
+
* Execute image-to-image editing
|
|
92
|
+
*/
|
|
93
|
+
private executeImageEdit;
|
|
94
|
+
/**
|
|
95
|
+
* Format a generated image for output as MediaOutput
|
|
96
|
+
*/
|
|
97
|
+
private formatImageOutput;
|
|
98
|
+
/**
|
|
99
|
+
* Get parameter value by name (case-insensitive)
|
|
100
|
+
*/
|
|
101
|
+
private getParamValue;
|
|
102
|
+
/**
|
|
103
|
+
* Get number parameter with default
|
|
104
|
+
*/
|
|
105
|
+
private getNumberParam;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Loader function to ensure the GenerateImageAction class is included in the bundle
|
|
109
|
+
*/
|
|
110
|
+
export declare function LoadGenerateImageAction(): void;
|
|
111
|
+
//# sourceMappingURL=generate-image.action.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-image.action.d.ts","sourceRoot":"","sources":["../../../src/custom/ai/generate-image.action.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAEnF,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAcrD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwDG;AACH,qBACa,mBAAoB,SAAQ,UAAU;IAE/C;;;;;;;;;;;;;;;;;;;OAmBG;cACa,iBAAiB,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAgIvF;;OAEG;YACW,qBAAqB;IAuEnC;;OAEG;YACW,sBAAsB;IAkCpC;;OAEG;YACW,gBAAgB;IAgC9B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAYzB;;OAEG;IACH,OAAO,CAAC,aAAa;IAKrB;;OAEG;IACH,OAAO,CAAC,cAAc;CAMzB;AAED;;GAEG;AACH,wBAAgB,uBAAuB,SAEtC"}
|
|
@@ -0,0 +1,339 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.LoadGenerateImageAction = exports.GenerateImageAction = void 0;
|
|
10
|
+
const global_1 = require("@memberjunction/global");
|
|
11
|
+
const actions_1 = require("@memberjunction/actions");
|
|
12
|
+
const global_2 = require("@memberjunction/global");
|
|
13
|
+
const ai_1 = require("@memberjunction/ai");
|
|
14
|
+
const ai_engine_base_1 = require("@memberjunction/ai-engine-base");
|
|
15
|
+
/**
|
|
16
|
+
* Action that generates images using AI image generation models (DALL-E, Gemini, etc.)
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```typescript
|
|
20
|
+
* // Generate a simple image
|
|
21
|
+
* await runAction({
|
|
22
|
+
* ActionName: 'Generate Image',
|
|
23
|
+
* Params: [{
|
|
24
|
+
* Name: 'Prompt',
|
|
25
|
+
* Value: 'A serene mountain landscape at sunset with snow-capped peaks'
|
|
26
|
+
* }]
|
|
27
|
+
* });
|
|
28
|
+
*
|
|
29
|
+
* // Generate with specific model and size
|
|
30
|
+
* await runAction({
|
|
31
|
+
* ActionName: 'Generate Image',
|
|
32
|
+
* Params: [{
|
|
33
|
+
* Name: 'Prompt',
|
|
34
|
+
* Value: 'A futuristic cityscape with flying vehicles'
|
|
35
|
+
* }, {
|
|
36
|
+
* Name: 'Model',
|
|
37
|
+
* Value: 'dall-e-3'
|
|
38
|
+
* }, {
|
|
39
|
+
* Name: 'Size',
|
|
40
|
+
* Value: '1792x1024'
|
|
41
|
+
* }, {
|
|
42
|
+
* Name: 'Quality',
|
|
43
|
+
* Value: 'hd'
|
|
44
|
+
* }]
|
|
45
|
+
* });
|
|
46
|
+
*
|
|
47
|
+
* // Generate multiple images
|
|
48
|
+
* await runAction({
|
|
49
|
+
* ActionName: 'Generate Image',
|
|
50
|
+
* Params: [{
|
|
51
|
+
* Name: 'Prompt',
|
|
52
|
+
* Value: 'Abstract art in vibrant colors'
|
|
53
|
+
* }, {
|
|
54
|
+
* Name: 'NumberOfImages',
|
|
55
|
+
* Value: 3
|
|
56
|
+
* }]
|
|
57
|
+
* });
|
|
58
|
+
*
|
|
59
|
+
* // Image-to-image editing (transform a source image)
|
|
60
|
+
* await runAction({
|
|
61
|
+
* ActionName: 'Generate Image',
|
|
62
|
+
* Params: [{
|
|
63
|
+
* Name: 'Prompt',
|
|
64
|
+
* Value: 'Transform this into a professional infographic with dark theme'
|
|
65
|
+
* }, {
|
|
66
|
+
* Name: 'SourceImage',
|
|
67
|
+
* Value: 'base64_encoded_image_or_url'
|
|
68
|
+
* }]
|
|
69
|
+
* });
|
|
70
|
+
* ```
|
|
71
|
+
*/
|
|
72
|
+
let GenerateImageAction = class GenerateImageAction extends actions_1.BaseAction {
|
|
73
|
+
/**
|
|
74
|
+
* Generates or edits image(s) using AI image generation models.
|
|
75
|
+
*
|
|
76
|
+
* When SourceImage is provided, performs image-to-image editing (style transfer, transformation).
|
|
77
|
+
* When SourceImage is not provided, performs text-to-image generation.
|
|
78
|
+
*
|
|
79
|
+
* @param params - The action parameters containing:
|
|
80
|
+
* - Prompt: Text description of the image to generate or edit instructions (required)
|
|
81
|
+
* - Model: Model name/ID to use (optional, uses default if not specified)
|
|
82
|
+
* - NumberOfImages: Number of images to generate (optional, default: 1)
|
|
83
|
+
* - Size: Image size like "1024x1024" (optional)
|
|
84
|
+
* - Quality: Quality level - "standard" or "hd" (optional)
|
|
85
|
+
* - Style: Style preset - "vivid" or "natural" (optional)
|
|
86
|
+
* - NegativePrompt: Things to avoid in the image (optional)
|
|
87
|
+
* - OutputFormat: "base64" or "url" (optional, default: "base64")
|
|
88
|
+
* - SourceImage: Source image for image-to-image editing (optional, base64 or URL)
|
|
89
|
+
* - Mask: Mask image for inpainting - white/transparent areas are regenerated (optional)
|
|
90
|
+
*
|
|
91
|
+
* @returns Generated or edited image(s) as base64 or URLs
|
|
92
|
+
*/
|
|
93
|
+
async InternalRunAction(params) {
|
|
94
|
+
try {
|
|
95
|
+
const prompt = this.getParamValue(params, 'prompt');
|
|
96
|
+
const modelName = this.getParamValue(params, 'model');
|
|
97
|
+
const numberOfImages = this.getNumberParam(params, 'numberofimages', 1);
|
|
98
|
+
const size = this.getParamValue(params, 'size') || '1024x1024';
|
|
99
|
+
const quality = this.getParamValue(params, 'quality');
|
|
100
|
+
const style = this.getParamValue(params, 'style');
|
|
101
|
+
const negativePrompt = this.getParamValue(params, 'negativeprompt');
|
|
102
|
+
const outputFormat = this.getParamValue(params, 'outputformat') || 'base64';
|
|
103
|
+
const sourceImage = this.getParamValue(params, 'sourceimage');
|
|
104
|
+
const mask = this.getParamValue(params, 'mask');
|
|
105
|
+
// Validate prompt
|
|
106
|
+
if (!prompt) {
|
|
107
|
+
return {
|
|
108
|
+
Success: false,
|
|
109
|
+
Message: "Prompt parameter is required",
|
|
110
|
+
ResultCode: "MISSING_PROMPT"
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
// Get image generator model and create instance
|
|
114
|
+
const { generator, model, apiName } = await this.prepareImageGenerator(params.ContextUser, modelName);
|
|
115
|
+
let result;
|
|
116
|
+
if (sourceImage) {
|
|
117
|
+
// Image-to-image: use EditImage when source image is provided
|
|
118
|
+
result = await this.executeImageEdit(generator, {
|
|
119
|
+
prompt,
|
|
120
|
+
apiName,
|
|
121
|
+
sourceImage,
|
|
122
|
+
mask,
|
|
123
|
+
numberOfImages,
|
|
124
|
+
size,
|
|
125
|
+
outputFormat,
|
|
126
|
+
negativePrompt
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
// Text-to-image: use GenerateImage
|
|
131
|
+
result = await this.executeImageGeneration(generator, {
|
|
132
|
+
prompt,
|
|
133
|
+
apiName,
|
|
134
|
+
numberOfImages,
|
|
135
|
+
size,
|
|
136
|
+
outputFormat,
|
|
137
|
+
quality,
|
|
138
|
+
style,
|
|
139
|
+
negativePrompt
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
if (!result.success) {
|
|
143
|
+
return {
|
|
144
|
+
Success: false,
|
|
145
|
+
Message: `Image generation failed: ${result.errorMessage || 'Unknown error'}`,
|
|
146
|
+
ResultCode: "GENERATION_FAILED"
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
if (!result.images || result.images.length === 0) {
|
|
150
|
+
return {
|
|
151
|
+
Success: false,
|
|
152
|
+
Message: "No images were generated",
|
|
153
|
+
ResultCode: "NO_IMAGES"
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
// Format output images
|
|
157
|
+
const outputImages = result.images.map((img, index) => this.formatImageOutput(img, index));
|
|
158
|
+
// Add output parameters
|
|
159
|
+
params.Params.push({
|
|
160
|
+
Name: 'Images',
|
|
161
|
+
Type: 'Output',
|
|
162
|
+
Value: outputImages
|
|
163
|
+
});
|
|
164
|
+
params.Params.push({
|
|
165
|
+
Name: 'ImageCount',
|
|
166
|
+
Type: 'Output',
|
|
167
|
+
Value: result.images.length
|
|
168
|
+
});
|
|
169
|
+
if (result.revisedPrompt) {
|
|
170
|
+
params.Params.push({
|
|
171
|
+
Name: 'RevisedPrompt',
|
|
172
|
+
Type: 'Output',
|
|
173
|
+
Value: result.revisedPrompt
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
params.Params.push({
|
|
177
|
+
Name: 'ModelUsed',
|
|
178
|
+
Type: 'Output',
|
|
179
|
+
Value: model.Name
|
|
180
|
+
});
|
|
181
|
+
// Build response - NOTE: images data is in output params, not in Message
|
|
182
|
+
// This keeps Message lightweight for LLM context (base64 images are ~700K tokens each)
|
|
183
|
+
const responseData = {
|
|
184
|
+
message: `Successfully generated ${result.images.length} image(s)`,
|
|
185
|
+
model: model.Name,
|
|
186
|
+
imageCount: result.images.length,
|
|
187
|
+
// Images are available in the 'Images' output parameter
|
|
188
|
+
// Use the provided placeholder references in your response
|
|
189
|
+
revisedPrompt: result.revisedPrompt
|
|
190
|
+
};
|
|
191
|
+
return {
|
|
192
|
+
Success: true,
|
|
193
|
+
ResultCode: "IMAGES_GENERATED",
|
|
194
|
+
Message: JSON.stringify(responseData, null, 2)
|
|
195
|
+
};
|
|
196
|
+
}
|
|
197
|
+
catch (error) {
|
|
198
|
+
return {
|
|
199
|
+
Success: false,
|
|
200
|
+
Message: `Generate image failed: ${error instanceof Error ? error.message : String(error)}`,
|
|
201
|
+
ResultCode: "ACTION_FAILED"
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Prepare an image generator instance using proper metadata lookup
|
|
207
|
+
*/
|
|
208
|
+
async prepareImageGenerator(contextUser, modelName) {
|
|
209
|
+
// Ensure AIEngine is loaded
|
|
210
|
+
await ai_engine_base_1.AIEngineBase.Instance.Config(false, contextUser);
|
|
211
|
+
// Find image generator models
|
|
212
|
+
const imageGeneratorModels = ai_engine_base_1.AIEngineBase.Instance.Models.filter(m => m.AIModelType?.toLowerCase() === 'image generator' && m.IsActive);
|
|
213
|
+
if (imageGeneratorModels.length === 0) {
|
|
214
|
+
throw new Error('No active image generator models found');
|
|
215
|
+
}
|
|
216
|
+
// Select model - use specified or highest power
|
|
217
|
+
let model;
|
|
218
|
+
if (modelName) {
|
|
219
|
+
const foundModel = imageGeneratorModels.find(m => m.Name.toLowerCase() === modelName.toLowerCase() ||
|
|
220
|
+
(m.APIName && m.APIName.toLowerCase() === modelName.toLowerCase()));
|
|
221
|
+
if (!foundModel) {
|
|
222
|
+
throw new Error(`Image generator model '${modelName}' not found`);
|
|
223
|
+
}
|
|
224
|
+
model = foundModel;
|
|
225
|
+
}
|
|
226
|
+
else {
|
|
227
|
+
// Get highest power image generator model
|
|
228
|
+
model = imageGeneratorModels.reduce((best, current) => (current.PowerRank || 0) > (best.PowerRank || 0) ? current : best);
|
|
229
|
+
}
|
|
230
|
+
// Find the inference provider from ModelVendors (populated by AIEngineBase)
|
|
231
|
+
// Inference providers have DriverClass set
|
|
232
|
+
const inferenceProvider = model.ModelVendors.find(mv => mv.DriverClass && mv.DriverClass.length > 0 && mv.Status === 'Active');
|
|
233
|
+
if (!inferenceProvider) {
|
|
234
|
+
throw new Error(`No active inference provider found for model '${model.Name}'`);
|
|
235
|
+
}
|
|
236
|
+
// Get API key using the vendor's driver class
|
|
237
|
+
const driverClass = inferenceProvider.DriverClass;
|
|
238
|
+
const apiName = inferenceProvider.APIName || model.APIName || model.Name;
|
|
239
|
+
const apiKey = (0, ai_1.GetAIAPIKey)(driverClass);
|
|
240
|
+
if (!apiKey) {
|
|
241
|
+
// Try getting by vendor name as fallback
|
|
242
|
+
const vendor = ai_engine_base_1.AIEngineBase.Instance.Vendors.find(v => v.ID === inferenceProvider.VendorID);
|
|
243
|
+
const vendorApiKey = vendor ? (0, ai_1.GetAIAPIKey)(vendor.Name) : null;
|
|
244
|
+
if (!vendorApiKey) {
|
|
245
|
+
throw new Error(`No API key found for ${driverClass} or vendor ${vendor?.Name || 'unknown'}`);
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
const generator = global_2.MJGlobal.Instance.ClassFactory.CreateInstance(ai_1.BaseImageGenerator, driverClass, apiKey);
|
|
249
|
+
if (!generator) {
|
|
250
|
+
throw new Error(`Failed to create image generator instance for ${driverClass}. Ensure the provider is registered.`);
|
|
251
|
+
}
|
|
252
|
+
return { generator, model, apiName };
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* Execute text-to-image generation
|
|
256
|
+
*/
|
|
257
|
+
async executeImageGeneration(generator, options) {
|
|
258
|
+
const genParams = {
|
|
259
|
+
prompt: options.prompt,
|
|
260
|
+
model: options.apiName,
|
|
261
|
+
n: options.numberOfImages,
|
|
262
|
+
size: options.size,
|
|
263
|
+
outputFormat: options.outputFormat === 'url' ? 'url' : 'b64_json'
|
|
264
|
+
};
|
|
265
|
+
if (options.quality) {
|
|
266
|
+
genParams.quality = options.quality;
|
|
267
|
+
}
|
|
268
|
+
if (options.style) {
|
|
269
|
+
genParams.style = options.style;
|
|
270
|
+
}
|
|
271
|
+
if (options.negativePrompt) {
|
|
272
|
+
genParams.negativePrompt = options.negativePrompt;
|
|
273
|
+
}
|
|
274
|
+
return generator.GenerateImage(genParams);
|
|
275
|
+
}
|
|
276
|
+
/**
|
|
277
|
+
* Execute image-to-image editing
|
|
278
|
+
*/
|
|
279
|
+
async executeImageEdit(generator, options) {
|
|
280
|
+
const editParams = {
|
|
281
|
+
prompt: options.prompt,
|
|
282
|
+
model: options.apiName,
|
|
283
|
+
image: options.sourceImage,
|
|
284
|
+
n: options.numberOfImages,
|
|
285
|
+
size: options.size,
|
|
286
|
+
outputFormat: options.outputFormat === 'url' ? 'url' : 'b64_json'
|
|
287
|
+
};
|
|
288
|
+
if (options.mask) {
|
|
289
|
+
editParams.mask = options.mask;
|
|
290
|
+
}
|
|
291
|
+
if (options.negativePrompt) {
|
|
292
|
+
editParams.negativePrompt = options.negativePrompt;
|
|
293
|
+
}
|
|
294
|
+
return generator.EditImage(editParams);
|
|
295
|
+
}
|
|
296
|
+
/**
|
|
297
|
+
* Format a generated image for output as MediaOutput
|
|
298
|
+
*/
|
|
299
|
+
formatImageOutput(img, index) {
|
|
300
|
+
return {
|
|
301
|
+
modality: 'Image',
|
|
302
|
+
mimeType: img.format ? `image/${img.format}` : 'image/png',
|
|
303
|
+
data: img.base64,
|
|
304
|
+
url: img.url,
|
|
305
|
+
width: img.width,
|
|
306
|
+
height: img.height,
|
|
307
|
+
label: `Generated image ${index + 1}`
|
|
308
|
+
};
|
|
309
|
+
}
|
|
310
|
+
/**
|
|
311
|
+
* Get parameter value by name (case-insensitive)
|
|
312
|
+
*/
|
|
313
|
+
getParamValue(params, name) {
|
|
314
|
+
const param = params.Params.find(p => p.Name.toLowerCase() === name.toLowerCase());
|
|
315
|
+
return param?.Value;
|
|
316
|
+
}
|
|
317
|
+
/**
|
|
318
|
+
* Get number parameter with default
|
|
319
|
+
*/
|
|
320
|
+
getNumberParam(params, name, defaultValue) {
|
|
321
|
+
const value = this.getParamValue(params, name);
|
|
322
|
+
if (value === undefined || value === null)
|
|
323
|
+
return defaultValue;
|
|
324
|
+
const num = Number(value);
|
|
325
|
+
return isNaN(num) ? defaultValue : num;
|
|
326
|
+
}
|
|
327
|
+
};
|
|
328
|
+
exports.GenerateImageAction = GenerateImageAction;
|
|
329
|
+
exports.GenerateImageAction = GenerateImageAction = __decorate([
|
|
330
|
+
(0, global_1.RegisterClass)(actions_1.BaseAction, "Generate Image")
|
|
331
|
+
], GenerateImageAction);
|
|
332
|
+
/**
|
|
333
|
+
* Loader function to ensure the GenerateImageAction class is included in the bundle
|
|
334
|
+
*/
|
|
335
|
+
function LoadGenerateImageAction() {
|
|
336
|
+
// Stub function to prevent tree shaking
|
|
337
|
+
}
|
|
338
|
+
exports.LoadGenerateImageAction = LoadGenerateImageAction;
|
|
339
|
+
//# sourceMappingURL=generate-image.action.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-image.action.js","sourceRoot":"","sources":["../../../src/custom/ai/generate-image.action.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { ActionResultSimple, RunActionParams } from "@memberjunction/actions-base";
|
|
2
2
|
import { BaseFileHandlerAction } from "../utilities/base-file-handler";
|
|
3
3
|
/**
|
|
4
|
-
* Action that creates Excel files from JSON data
|
|
5
|
-
* Supports multiple sheets, formatting, and formulas
|
|
4
|
+
* Action that creates Excel files from JSON data using the MemberJunction export-engine.
|
|
5
|
+
* Supports multiple sheets, formatting, styles, and formulas.
|
|
6
6
|
*
|
|
7
7
|
* @example
|
|
8
8
|
* ```typescript
|
|
@@ -31,12 +31,14 @@ import { BaseFileHandlerAction } from "../utilities/base-file-handler";
|
|
|
31
31
|
* data: salesData,
|
|
32
32
|
* headers: ['Product', 'Units', 'Revenue'],
|
|
33
33
|
* columnWidths: [20, 10, 15],
|
|
34
|
-
*
|
|
35
|
-
*
|
|
34
|
+
* headerStyle: {
|
|
35
|
+
* font: { bold: true, color: 'FFFFFF' },
|
|
36
|
+
* fill: { pattern: 'solid', fgColor: '4472C4' }
|
|
36
37
|
* }
|
|
37
38
|
* }, {
|
|
38
39
|
* name: 'Summary',
|
|
39
|
-
* data: summaryData
|
|
40
|
+
* data: summaryData,
|
|
41
|
+
* formulas: [{ cell: 'B10', formula: 'SUM(B2:B9)' }]
|
|
40
42
|
* }]
|
|
41
43
|
* }]
|
|
42
44
|
* });
|
|
@@ -44,7 +46,7 @@ import { BaseFileHandlerAction } from "../utilities/base-file-handler";
|
|
|
44
46
|
*/
|
|
45
47
|
export declare class ExcelWriterAction extends BaseFileHandlerAction {
|
|
46
48
|
/**
|
|
47
|
-
* Creates Excel files from JSON data
|
|
49
|
+
* Creates Excel files from JSON data using the export-engine
|
|
48
50
|
*
|
|
49
51
|
* @param params - The action parameters containing:
|
|
50
52
|
* - Sheets: Array of sheet definitions, each containing:
|
|
@@ -52,8 +54,11 @@ export declare class ExcelWriterAction extends BaseFileHandlerAction {
|
|
|
52
54
|
* - data: Array of data rows (required)
|
|
53
55
|
* - headers: Array of column headers (optional, derived from data if not provided)
|
|
54
56
|
* - columnWidths: Array of column widths in characters (optional)
|
|
55
|
-
* -
|
|
57
|
+
* - headerStyle: Style object for headers (optional)
|
|
58
|
+
* - dataStyle: Style object for data rows (optional)
|
|
56
59
|
* - formulas: Array of formula definitions (optional)
|
|
60
|
+
* - autoFilter: Enable auto-filter (optional, boolean or range string)
|
|
61
|
+
* - freeze: Freeze panes configuration (optional)
|
|
57
62
|
* - OutputFileID: Optional MJ Storage file ID to save to
|
|
58
63
|
* - FileName: Name for the generated Excel file (default: 'workbook.xlsx')
|
|
59
64
|
* - Author: Author metadata (optional)
|
|
@@ -64,13 +69,21 @@ export declare class ExcelWriterAction extends BaseFileHandlerAction {
|
|
|
64
69
|
*/
|
|
65
70
|
protected InternalRunAction(params: RunActionParams): Promise<ActionResultSimple>;
|
|
66
71
|
/**
|
|
67
|
-
*
|
|
72
|
+
* Convert the input sheet definition to the export-engine SheetDefinition format
|
|
68
73
|
*/
|
|
69
|
-
private
|
|
74
|
+
private convertToSheetDefinition;
|
|
70
75
|
/**
|
|
71
|
-
*
|
|
76
|
+
* Convert legacy ExcelJS-style objects to export-engine CellStyle format
|
|
72
77
|
*/
|
|
73
|
-
private
|
|
78
|
+
private convertLegacyStyle;
|
|
79
|
+
/**
|
|
80
|
+
* Extract color value from legacy format (handles both string and { argb: string } formats)
|
|
81
|
+
*/
|
|
82
|
+
private extractColorValue;
|
|
83
|
+
/**
|
|
84
|
+
* Convert a legacy border side definition to export-engine BorderSide format
|
|
85
|
+
*/
|
|
86
|
+
private convertBorderSide;
|
|
74
87
|
}
|
|
75
88
|
/**
|
|
76
89
|
* Loader function to ensure the ExcelWriterAction class is included in the bundle
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"excel-writer.action.d.ts","sourceRoot":"","sources":["../../../src/custom/files/excel-writer.action.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAEnF,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"excel-writer.action.d.ts","sourceRoot":"","sources":["../../../src/custom/files/excel-writer.action.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAEnF,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAavE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,qBACa,iBAAkB,SAAQ,qBAAqB;IAExD;;;;;;;;;;;;;;;;;;;;;OAqBG;cACa,iBAAiB,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAmIvF;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAqDhC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAyD1B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAczB;;OAEG;IACH,OAAO,CAAC,iBAAiB;CAM5B;AAqDD;;GAEG;AACH,wBAAgB,qBAAqB,SAEpC"}
|