@memberjunction/core-actions 2.106.0 → 2.108.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/config.d.ts +112 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +34 -2
- package/dist/config.js.map +1 -1
- package/dist/custom/ai/find-best-agent.action.d.ts +53 -0
- package/dist/custom/ai/find-best-agent.action.d.ts.map +1 -0
- package/dist/custom/ai/find-best-agent.action.js +194 -0
- package/dist/custom/ai/find-best-agent.action.js.map +1 -0
- package/dist/custom/ai/summarize-content.action.d.ts +72 -0
- package/dist/custom/ai/summarize-content.action.d.ts.map +1 -0
- package/dist/custom/ai/summarize-content.action.js +296 -0
- package/dist/custom/ai/summarize-content.action.js.map +1 -0
- package/dist/custom/code-execution/execute-code.action.d.ts +61 -0
- package/dist/custom/code-execution/execute-code.action.d.ts.map +1 -0
- package/dist/custom/code-execution/execute-code.action.js +172 -0
- package/dist/custom/code-execution/execute-code.action.js.map +1 -0
- package/dist/custom/data/csv-parser.action.js +1 -1
- package/dist/custom/data/csv-parser.action.js.map +1 -1
- package/dist/custom/data/execute-research-query.action.d.ts +114 -0
- package/dist/custom/data/execute-research-query.action.d.ts.map +1 -0
- package/dist/custom/data/execute-research-query.action.js +520 -0
- package/dist/custom/data/execute-research-query.action.js.map +1 -0
- package/dist/custom/data/explore-database-schema.action.d.ts +95 -0
- package/dist/custom/data/explore-database-schema.action.d.ts.map +1 -0
- package/dist/custom/data/explore-database-schema.action.js +499 -0
- package/dist/custom/data/explore-database-schema.action.js.map +1 -0
- package/dist/custom/data/get-entity-details.action.d.ts +63 -0
- package/dist/custom/data/get-entity-details.action.d.ts.map +1 -0
- package/dist/custom/data/get-entity-details.action.js +284 -0
- package/dist/custom/data/get-entity-details.action.js.map +1 -0
- package/dist/custom/data/get-entity-list.action.d.ts +57 -0
- package/dist/custom/data/get-entity-list.action.d.ts.map +1 -0
- package/dist/custom/data/get-entity-list.action.js +177 -0
- package/dist/custom/data/get-entity-list.action.js.map +1 -0
- package/dist/custom/files/index.d.ts +2 -0
- package/dist/custom/files/index.d.ts.map +1 -1
- package/dist/custom/files/index.js +5 -1
- package/dist/custom/files/index.js.map +1 -1
- package/dist/custom/files/list-storage-providers.action.d.ts +52 -0
- package/dist/custom/files/list-storage-providers.action.d.ts.map +1 -0
- package/dist/custom/files/list-storage-providers.action.js +175 -0
- package/dist/custom/files/list-storage-providers.action.js.map +1 -0
- package/dist/custom/files/search-storage-files.action.d.ts +61 -0
- package/dist/custom/files/search-storage-files.action.d.ts.map +1 -0
- package/dist/custom/files/search-storage-files.action.js +183 -0
- package/dist/custom/files/search-storage-files.action.js.map +1 -0
- package/dist/custom/visualization/create-svg-chart.action.d.ts +97 -0
- package/dist/custom/visualization/create-svg-chart.action.d.ts.map +1 -0
- package/dist/custom/visualization/create-svg-chart.action.js +290 -0
- package/dist/custom/visualization/create-svg-chart.action.js.map +1 -0
- package/dist/custom/visualization/create-svg-diagram.action.d.ts +151 -0
- package/dist/custom/visualization/create-svg-diagram.action.d.ts.map +1 -0
- package/dist/custom/visualization/create-svg-diagram.action.js +764 -0
- package/dist/custom/visualization/create-svg-diagram.action.js.map +1 -0
- package/dist/custom/visualization/create-svg-infographic.action.d.ts +72 -0
- package/dist/custom/visualization/create-svg-infographic.action.d.ts.map +1 -0
- package/dist/custom/visualization/create-svg-infographic.action.js +343 -0
- package/dist/custom/visualization/create-svg-infographic.action.js.map +1 -0
- package/dist/custom/visualization/create-svg-network.action.d.ts +106 -0
- package/dist/custom/visualization/create-svg-network.action.d.ts.map +1 -0
- package/dist/custom/visualization/create-svg-network.action.js +651 -0
- package/dist/custom/visualization/create-svg-network.action.js.map +1 -0
- package/dist/custom/visualization/create-svg-word-cloud.action.d.ts +94 -0
- package/dist/custom/visualization/create-svg-word-cloud.action.d.ts.map +1 -0
- package/dist/custom/visualization/create-svg-word-cloud.action.js +422 -0
- package/dist/custom/visualization/create-svg-word-cloud.action.js.map +1 -0
- package/dist/custom/visualization/shared/svg-theming.d.ts +91 -0
- package/dist/custom/visualization/shared/svg-theming.d.ts.map +1 -0
- package/dist/custom/visualization/shared/svg-theming.js +235 -0
- package/dist/custom/visualization/shared/svg-theming.js.map +1 -0
- package/dist/custom/visualization/shared/svg-types.d.ts +338 -0
- package/dist/custom/visualization/shared/svg-types.d.ts.map +1 -0
- package/dist/custom/visualization/shared/svg-types.js +11 -0
- package/dist/custom/visualization/shared/svg-types.js.map +1 -0
- package/dist/custom/visualization/shared/svg-utils.d.ts +129 -0
- package/dist/custom/visualization/shared/svg-utils.d.ts.map +1 -0
- package/dist/custom/visualization/shared/svg-utils.js +287 -0
- package/dist/custom/visualization/shared/svg-utils.js.map +1 -0
- package/dist/custom/web/google-custom-search.action.d.ts +60 -0
- package/dist/custom/web/google-custom-search.action.d.ts.map +1 -0
- package/dist/custom/web/google-custom-search.action.js +378 -0
- package/dist/custom/web/google-custom-search.action.js.map +1 -0
- package/dist/custom/web/web-page-content.action.d.ts +24 -0
- package/dist/custom/web/web-page-content.action.d.ts.map +1 -1
- package/dist/custom/web/web-page-content.action.js +90 -9
- package/dist/custom/web/web-page-content.action.js.map +1 -1
- package/dist/generated/action_subclasses.d.ts +51 -3
- package/dist/generated/action_subclasses.d.ts.map +1 -1
- package/dist/generated/action_subclasses.js +174 -90
- package/dist/generated/action_subclasses.js.map +1 -1
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +44 -0
- package/dist/index.js.map +1 -1
- package/package.json +30 -11
|
@@ -0,0 +1,296 @@
|
|
|
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.LoadSummarizeContentAction = exports.SummarizeContentAction = void 0;
|
|
10
|
+
const actions_base_1 = require("@memberjunction/actions-base");
|
|
11
|
+
const actions_1 = require("@memberjunction/actions");
|
|
12
|
+
const global_1 = require("@memberjunction/global");
|
|
13
|
+
const core_1 = require("@memberjunction/core");
|
|
14
|
+
const ai_prompts_1 = require("@memberjunction/ai-prompts");
|
|
15
|
+
const ai_core_plus_1 = require("@memberjunction/ai-core-plus");
|
|
16
|
+
const aiengine_1 = require("@memberjunction/aiengine");
|
|
17
|
+
/**
|
|
18
|
+
* Action that creates a concise summary of content with citations to source material.
|
|
19
|
+
* Can work with either a URL (fetch + summarize) or pre-fetched content.
|
|
20
|
+
*
|
|
21
|
+
* Features:
|
|
22
|
+
* - Flexible input: URL or pre-fetched content
|
|
23
|
+
* - Configurable summary length (word count target)
|
|
24
|
+
* - Optional citations with quotes and links
|
|
25
|
+
* - Focus instructions for domain-specific summarization
|
|
26
|
+
* - Multiple output formats (paragraph, bullets, hybrid)
|
|
27
|
+
* - Automatic anchor link detection for precise citations
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* ```typescript
|
|
31
|
+
* // Summarize from URL
|
|
32
|
+
* await runAction({
|
|
33
|
+
* ActionName: 'Summarize Content',
|
|
34
|
+
* Params: [{
|
|
35
|
+
* Name: 'url',
|
|
36
|
+
* Value: 'https://docs.memberjunction.org/architecture'
|
|
37
|
+
* }, {
|
|
38
|
+
* Name: 'summaryWords',
|
|
39
|
+
* Value: 200
|
|
40
|
+
* }, {
|
|
41
|
+
* Name: 'instructions',
|
|
42
|
+
* Value: 'Focus on metadata layer and entity system'
|
|
43
|
+
* }]
|
|
44
|
+
* });
|
|
45
|
+
*
|
|
46
|
+
* // Summarize pre-fetched content
|
|
47
|
+
* await runAction({
|
|
48
|
+
* ActionName: 'Summarize Content',
|
|
49
|
+
* Params: [{
|
|
50
|
+
* Name: 'content',
|
|
51
|
+
* Value: '<html>...</html>'
|
|
52
|
+
* }, {
|
|
53
|
+
* Name: 'sourceUrl',
|
|
54
|
+
* Value: 'https://docs.memberjunction.org/architecture'
|
|
55
|
+
* }, {
|
|
56
|
+
* Name: 'includeCitations',
|
|
57
|
+
* Value: true
|
|
58
|
+
* }]
|
|
59
|
+
* });
|
|
60
|
+
* ```
|
|
61
|
+
*/
|
|
62
|
+
let SummarizeContentAction = class SummarizeContentAction extends actions_1.BaseAction {
|
|
63
|
+
async InternalRunAction(params) {
|
|
64
|
+
try {
|
|
65
|
+
// Extract parameters
|
|
66
|
+
const url = this.getStringParam(params, "url");
|
|
67
|
+
const content = this.getStringParam(params, "content");
|
|
68
|
+
const sourceUrl = this.getStringParam(params, "sourceurl");
|
|
69
|
+
const summaryWords = this.getNumericParam(params, "summarywords", 200);
|
|
70
|
+
const includeCitations = this.getBooleanParam(params, "includecitations", true);
|
|
71
|
+
const maxCitations = this.getNumericParam(params, "maxcitations", 5);
|
|
72
|
+
const instructions = this.getStringParam(params, "instructions", "Provide a comprehensive summary");
|
|
73
|
+
const format = this.getStringParam(params, "format", "paragraph");
|
|
74
|
+
// Validation: Must have either URL or content
|
|
75
|
+
if (!url && !content) {
|
|
76
|
+
return this.createErrorResult("Must provide either 'url' or 'content' parameter", "MISSING_INPUT");
|
|
77
|
+
}
|
|
78
|
+
// Validation: If content provided, must have sourceUrl
|
|
79
|
+
if (content && !sourceUrl) {
|
|
80
|
+
return this.createErrorResult("When using 'content' parameter, 'sourceUrl' is required for citations", "MISSING_SOURCE_URL");
|
|
81
|
+
}
|
|
82
|
+
let pageContent;
|
|
83
|
+
let finalSourceUrl;
|
|
84
|
+
// Fetch content if URL provided
|
|
85
|
+
if (url) {
|
|
86
|
+
const fetchResult = await this.fetchWebPageContent(url, params);
|
|
87
|
+
if (!fetchResult.success) {
|
|
88
|
+
return this.createErrorResult(`Failed to fetch web page: ${fetchResult.error}`, "FETCH_FAILED");
|
|
89
|
+
}
|
|
90
|
+
pageContent = fetchResult.content;
|
|
91
|
+
finalSourceUrl = url;
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
// Use provided content
|
|
95
|
+
pageContent = content;
|
|
96
|
+
finalSourceUrl = sourceUrl;
|
|
97
|
+
}
|
|
98
|
+
// Call the LLM prompt action to do the actual summarization
|
|
99
|
+
const summaryResult = await this.generateSummary(pageContent, finalSourceUrl, {
|
|
100
|
+
summaryWords,
|
|
101
|
+
includeCitations,
|
|
102
|
+
maxCitations,
|
|
103
|
+
instructions,
|
|
104
|
+
format
|
|
105
|
+
}, params);
|
|
106
|
+
if (!summaryResult.success) {
|
|
107
|
+
return this.createErrorResult(`Failed to generate summary: ${summaryResult.error}`, "SUMMARIZATION_FAILED");
|
|
108
|
+
}
|
|
109
|
+
// Add output parameters
|
|
110
|
+
const outputData = summaryResult.data;
|
|
111
|
+
this.addOutputParam(params, "summary", outputData.summary);
|
|
112
|
+
this.addOutputParam(params, "wordCount", outputData.wordCount);
|
|
113
|
+
if (outputData.citations) {
|
|
114
|
+
this.addOutputParam(params, "citations", outputData.citations);
|
|
115
|
+
}
|
|
116
|
+
if (outputData.keyPoints) {
|
|
117
|
+
this.addOutputParam(params, "keyPoints", outputData.keyPoints);
|
|
118
|
+
}
|
|
119
|
+
if (outputData.metadata) {
|
|
120
|
+
this.addOutputParam(params, "metadata", outputData.metadata);
|
|
121
|
+
}
|
|
122
|
+
return {
|
|
123
|
+
Success: true,
|
|
124
|
+
ResultCode: "SUCCESS",
|
|
125
|
+
Message: JSON.stringify(outputData, null, 2)
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
catch (error) {
|
|
129
|
+
(0, core_1.LogError)(`Error in Summarize Content action: ${error}`);
|
|
130
|
+
return this.createErrorResult(`Error summarizing content: ${error instanceof Error ? error.message : String(error)}`, "UNEXPECTED_ERROR");
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Fetch web page content using the Get Web Page Content action
|
|
135
|
+
*/
|
|
136
|
+
async fetchWebPageContent(url, params) {
|
|
137
|
+
try {
|
|
138
|
+
// Load the Web Page Content action
|
|
139
|
+
await actions_base_1.ActionEngineBase.Instance.Config(false, params.ContextUser);
|
|
140
|
+
const action = actions_base_1.ActionEngineBase.Instance.Actions.find(a => a.Name === 'Web Page Content');
|
|
141
|
+
if (!action) {
|
|
142
|
+
return {
|
|
143
|
+
success: false,
|
|
144
|
+
error: "Action 'Web Page Content' not found"
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
// Build action params
|
|
148
|
+
const actionParams = [{
|
|
149
|
+
Name: "url",
|
|
150
|
+
Type: "Input",
|
|
151
|
+
Value: url
|
|
152
|
+
}];
|
|
153
|
+
const runParams = new actions_base_1.RunActionParams();
|
|
154
|
+
runParams.Action = action;
|
|
155
|
+
runParams.Params = actionParams;
|
|
156
|
+
runParams.ContextUser = params.ContextUser;
|
|
157
|
+
runParams.SkipActionLog = true;
|
|
158
|
+
// Execute the action
|
|
159
|
+
const engine = new actions_1.ActionEngineServer();
|
|
160
|
+
const result = await engine.RunAction(runParams);
|
|
161
|
+
if (!result.Success) {
|
|
162
|
+
return {
|
|
163
|
+
success: false,
|
|
164
|
+
error: result.Message || "Failed to fetch web page"
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
// Extract content from result
|
|
168
|
+
const content = result.Message || "";
|
|
169
|
+
return {
|
|
170
|
+
success: true,
|
|
171
|
+
content
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
catch (error) {
|
|
175
|
+
return {
|
|
176
|
+
success: false,
|
|
177
|
+
error: error instanceof Error ? error.message : String(error)
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Generate summary using AI Prompts package directly
|
|
183
|
+
*/
|
|
184
|
+
async generateSummary(content, sourceUrl, options, params) {
|
|
185
|
+
try {
|
|
186
|
+
// Ensure AIEngine is initialized
|
|
187
|
+
await aiengine_1.AIEngine.Instance.Config(false, params.ContextUser);
|
|
188
|
+
// Get the summarization prompt from AIEngine
|
|
189
|
+
const prompt = this.getPromptByNameAndCategory('Summarize Content', 'MJ: System');
|
|
190
|
+
if (!prompt) {
|
|
191
|
+
return {
|
|
192
|
+
success: false,
|
|
193
|
+
error: "Prompt 'Summarize Content' not found. Ensure metadata has been synced."
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
// Build prompt parameters with data context
|
|
197
|
+
const promptParams = new ai_core_plus_1.AIPromptParams();
|
|
198
|
+
promptParams.prompt = prompt;
|
|
199
|
+
promptParams.data = {
|
|
200
|
+
content,
|
|
201
|
+
sourceUrl,
|
|
202
|
+
summaryWords: options.summaryWords,
|
|
203
|
+
includeCitations: options.includeCitations,
|
|
204
|
+
maxCitations: options.maxCitations,
|
|
205
|
+
instructions: options.instructions,
|
|
206
|
+
format: options.format
|
|
207
|
+
};
|
|
208
|
+
promptParams.contextUser = params.ContextUser;
|
|
209
|
+
promptParams.cleanValidationSyntax = true;
|
|
210
|
+
promptParams.attemptJSONRepair = true;
|
|
211
|
+
// Execute the prompt
|
|
212
|
+
const runner = new ai_prompts_1.AIPromptRunner();
|
|
213
|
+
const result = await runner.ExecutePrompt(promptParams);
|
|
214
|
+
if (!result.success) {
|
|
215
|
+
return {
|
|
216
|
+
success: false,
|
|
217
|
+
error: result.errorMessage || "Prompt execution failed"
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
return {
|
|
221
|
+
success: true,
|
|
222
|
+
data: result.result
|
|
223
|
+
};
|
|
224
|
+
}
|
|
225
|
+
catch (error) {
|
|
226
|
+
return {
|
|
227
|
+
success: false,
|
|
228
|
+
error: error instanceof Error ? error.message : String(error)
|
|
229
|
+
};
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Get prompt by name and category from AIEngine
|
|
234
|
+
*/
|
|
235
|
+
getPromptByNameAndCategory(name, category) {
|
|
236
|
+
return aiengine_1.AIEngine.Instance.Prompts.find(p => p.Name.trim().toLowerCase() === name.trim().toLowerCase() &&
|
|
237
|
+
p.Category?.trim().toLowerCase() === category?.trim().toLowerCase());
|
|
238
|
+
}
|
|
239
|
+
// Helper methods (consistent with other actions)
|
|
240
|
+
getStringParam(params, paramName, defaultValue) {
|
|
241
|
+
const param = params.Params.find(p => p.Name.trim().toLowerCase() === paramName.toLowerCase());
|
|
242
|
+
if (!param || param.Value === undefined || param.Value === null) {
|
|
243
|
+
return defaultValue;
|
|
244
|
+
}
|
|
245
|
+
const value = String(param.Value).trim();
|
|
246
|
+
return value.length > 0 ? value : defaultValue;
|
|
247
|
+
}
|
|
248
|
+
getNumericParam(params, paramName, defaultValue) {
|
|
249
|
+
const param = params.Params.find(p => p.Name.trim().toLowerCase() === paramName.toLowerCase());
|
|
250
|
+
if (!param || param.Value === undefined || param.Value === null) {
|
|
251
|
+
return defaultValue;
|
|
252
|
+
}
|
|
253
|
+
const parsed = Number(param.Value);
|
|
254
|
+
return isNaN(parsed) ? defaultValue : parsed;
|
|
255
|
+
}
|
|
256
|
+
getBooleanParam(params, paramName, defaultValue) {
|
|
257
|
+
const param = params.Params.find(p => p.Name.trim().toLowerCase() === paramName.toLowerCase());
|
|
258
|
+
if (!param || param.Value === undefined || param.Value === null) {
|
|
259
|
+
return defaultValue;
|
|
260
|
+
}
|
|
261
|
+
const value = String(param.Value).trim().toLowerCase();
|
|
262
|
+
if (value === "true" || value === "1" || value === "yes") {
|
|
263
|
+
return true;
|
|
264
|
+
}
|
|
265
|
+
if (value === "false" || value === "0" || value === "no") {
|
|
266
|
+
return false;
|
|
267
|
+
}
|
|
268
|
+
return defaultValue;
|
|
269
|
+
}
|
|
270
|
+
addOutputParam(params, name, value) {
|
|
271
|
+
params.Params.push({
|
|
272
|
+
Name: name,
|
|
273
|
+
Type: "Output",
|
|
274
|
+
Value: value
|
|
275
|
+
});
|
|
276
|
+
}
|
|
277
|
+
createErrorResult(message, code) {
|
|
278
|
+
return {
|
|
279
|
+
Success: false,
|
|
280
|
+
Message: message,
|
|
281
|
+
ResultCode: code
|
|
282
|
+
};
|
|
283
|
+
}
|
|
284
|
+
};
|
|
285
|
+
exports.SummarizeContentAction = SummarizeContentAction;
|
|
286
|
+
exports.SummarizeContentAction = SummarizeContentAction = __decorate([
|
|
287
|
+
(0, global_1.RegisterClass)(actions_1.BaseAction, "SummarizeContentAction")
|
|
288
|
+
], SummarizeContentAction);
|
|
289
|
+
/**
|
|
290
|
+
* Loader function to ensure the SummarizeContentAction class is included in the bundle.
|
|
291
|
+
*/
|
|
292
|
+
function LoadSummarizeContentAction() {
|
|
293
|
+
// This function is a stub that is used to force the bundler to include the above class in the final bundle
|
|
294
|
+
}
|
|
295
|
+
exports.LoadSummarizeContentAction = LoadSummarizeContentAction;
|
|
296
|
+
//# sourceMappingURL=summarize-content.action.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"summarize-content.action.js","sourceRoot":"","sources":["../../../src/custom/ai/summarize-content.action.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Execute Code Action
|
|
3
|
+
*
|
|
4
|
+
* Thin wrapper action that exposes code execution capabilities to AI agents and workflows.
|
|
5
|
+
* Delegates all logic to CodeExecutionService following MJ's pattern of Actions as boundaries.
|
|
6
|
+
*
|
|
7
|
+
* @module @memberjunction/core-actions
|
|
8
|
+
*/
|
|
9
|
+
import { BaseAction } from '@memberjunction/actions';
|
|
10
|
+
import { RunActionParams, ActionResultSimple } from '@memberjunction/actions-base';
|
|
11
|
+
/**
|
|
12
|
+
* Action for executing JavaScript code in a sandboxed environment
|
|
13
|
+
*
|
|
14
|
+
* This is a THIN WRAPPER - all core logic lives in CodeExecutionService.
|
|
15
|
+
* The action's job is simply to:
|
|
16
|
+
* 1. Extract parameters from the action interface
|
|
17
|
+
* 2. Delegate to CodeExecutionService
|
|
18
|
+
* 3. Map results back to ActionResultSimple
|
|
19
|
+
*
|
|
20
|
+
* Security is enforced entirely by CodeExecutionService.
|
|
21
|
+
*
|
|
22
|
+
* @example Agent usage:
|
|
23
|
+
* ```json
|
|
24
|
+
* {
|
|
25
|
+
* "type": "Action",
|
|
26
|
+
* "action": {
|
|
27
|
+
* "name": "Execute Code",
|
|
28
|
+
* "params": {
|
|
29
|
+
* "code": "const sum = input.values.reduce((a,b) => a+b, 0); output = sum;",
|
|
30
|
+
* "language": "javascript",
|
|
31
|
+
* "inputData": "{\"values\": [1,2,3,4,5]}"
|
|
32
|
+
* }
|
|
33
|
+
* }
|
|
34
|
+
* }
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
export declare class ExecuteCodeAction extends BaseAction {
|
|
38
|
+
/**
|
|
39
|
+
* Execute the action by delegating to CodeExecutionService
|
|
40
|
+
*
|
|
41
|
+
* @param params - Action parameters including code, language, inputData
|
|
42
|
+
* @returns ActionResultSimple with execution results or errors
|
|
43
|
+
*/
|
|
44
|
+
protected InternalRunAction(params: RunActionParams): Promise<ActionResultSimple>;
|
|
45
|
+
/**
|
|
46
|
+
* Helper to get string parameter from action params
|
|
47
|
+
* @private
|
|
48
|
+
*/
|
|
49
|
+
private getStringParam;
|
|
50
|
+
/**
|
|
51
|
+
* Helper to get numeric parameter from action params
|
|
52
|
+
* @private
|
|
53
|
+
*/
|
|
54
|
+
private getNumericParam;
|
|
55
|
+
/**
|
|
56
|
+
* Helper to add output parameter to action results
|
|
57
|
+
* @private
|
|
58
|
+
*/
|
|
59
|
+
private addOutputParam;
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=execute-code.action.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execute-code.action.d.ts","sourceRoot":"","sources":["../../../src/custom/code-execution/execute-code.action.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAErD,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAQnF;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,qBACa,iBAAkB,SAAQ,UAAU;IAC7C;;;;;OAKG;cACa,iBAAiB,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAqFvF;;;OAGG;IACH,OAAO,CAAC,cAAc;IAStB;;;OAGG;IACH,OAAO,CAAC,eAAe;IASvB;;;OAGG;IACH,OAAO,CAAC,cAAc;CAOzB"}
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Execute Code Action
|
|
4
|
+
*
|
|
5
|
+
* Thin wrapper action that exposes code execution capabilities to AI agents and workflows.
|
|
6
|
+
* Delegates all logic to CodeExecutionService following MJ's pattern of Actions as boundaries.
|
|
7
|
+
*
|
|
8
|
+
* @module @memberjunction/core-actions
|
|
9
|
+
*/
|
|
10
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
11
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
12
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
13
|
+
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;
|
|
14
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.ExecuteCodeAction = void 0;
|
|
18
|
+
const actions_1 = require("@memberjunction/actions");
|
|
19
|
+
const global_1 = require("@memberjunction/global");
|
|
20
|
+
const code_execution_1 = require("@memberjunction/code-execution");
|
|
21
|
+
const core_1 = require("@memberjunction/core");
|
|
22
|
+
/**
|
|
23
|
+
* Action for executing JavaScript code in a sandboxed environment
|
|
24
|
+
*
|
|
25
|
+
* This is a THIN WRAPPER - all core logic lives in CodeExecutionService.
|
|
26
|
+
* The action's job is simply to:
|
|
27
|
+
* 1. Extract parameters from the action interface
|
|
28
|
+
* 2. Delegate to CodeExecutionService
|
|
29
|
+
* 3. Map results back to ActionResultSimple
|
|
30
|
+
*
|
|
31
|
+
* Security is enforced entirely by CodeExecutionService.
|
|
32
|
+
*
|
|
33
|
+
* @example Agent usage:
|
|
34
|
+
* ```json
|
|
35
|
+
* {
|
|
36
|
+
* "type": "Action",
|
|
37
|
+
* "action": {
|
|
38
|
+
* "name": "Execute Code",
|
|
39
|
+
* "params": {
|
|
40
|
+
* "code": "const sum = input.values.reduce((a,b) => a+b, 0); output = sum;",
|
|
41
|
+
* "language": "javascript",
|
|
42
|
+
* "inputData": "{\"values\": [1,2,3,4,5]}"
|
|
43
|
+
* }
|
|
44
|
+
* }
|
|
45
|
+
* }
|
|
46
|
+
* ```
|
|
47
|
+
*/
|
|
48
|
+
let ExecuteCodeAction = class ExecuteCodeAction extends actions_1.BaseAction {
|
|
49
|
+
/**
|
|
50
|
+
* Execute the action by delegating to CodeExecutionService
|
|
51
|
+
*
|
|
52
|
+
* @param params - Action parameters including code, language, inputData
|
|
53
|
+
* @returns ActionResultSimple with execution results or errors
|
|
54
|
+
*/
|
|
55
|
+
async InternalRunAction(params) {
|
|
56
|
+
try {
|
|
57
|
+
// 1. Extract parameters (this is all the action does besides delegation)
|
|
58
|
+
const code = this.getStringParam(params, "code");
|
|
59
|
+
const language = this.getStringParam(params, "language", "javascript");
|
|
60
|
+
const inputDataStr = this.getStringParam(params, "inputData");
|
|
61
|
+
const timeout = this.getNumericParam(params, "timeout", 30);
|
|
62
|
+
const memoryLimit = this.getNumericParam(params, "memoryLimit", 128);
|
|
63
|
+
// Validate required parameters
|
|
64
|
+
if (!code) {
|
|
65
|
+
return {
|
|
66
|
+
Success: false,
|
|
67
|
+
ResultCode: "MISSING_CODE",
|
|
68
|
+
Message: "Parameter 'code' is required"
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
// Parse input data if provided
|
|
72
|
+
let inputData = undefined;
|
|
73
|
+
if (inputDataStr) {
|
|
74
|
+
try {
|
|
75
|
+
inputData = JSON.parse(inputDataStr);
|
|
76
|
+
}
|
|
77
|
+
catch (parseError) {
|
|
78
|
+
return {
|
|
79
|
+
Success: false,
|
|
80
|
+
ResultCode: "INVALID_INPUT_DATA",
|
|
81
|
+
Message: `Failed to parse inputData as JSON: ${parseError instanceof Error ? parseError.message : String(parseError)}`
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
// 2. Delegate to service (DIRECT IMPORT - not another action!)
|
|
86
|
+
const executionService = new code_execution_1.CodeExecutionService();
|
|
87
|
+
const executionParams = {
|
|
88
|
+
code,
|
|
89
|
+
language,
|
|
90
|
+
inputData,
|
|
91
|
+
timeoutSeconds: timeout,
|
|
92
|
+
memoryLimitMB: memoryLimit
|
|
93
|
+
};
|
|
94
|
+
const result = await executionService.execute(executionParams);
|
|
95
|
+
// 3. Map results to action format
|
|
96
|
+
if (!result.success) {
|
|
97
|
+
return {
|
|
98
|
+
Success: false,
|
|
99
|
+
ResultCode: result.errorType || "EXECUTION_FAILED",
|
|
100
|
+
Message: result.error || "Code execution failed"
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
// Add output parameters for agents to use
|
|
104
|
+
if (result.output !== undefined) {
|
|
105
|
+
this.addOutputParam(params, "output", result.output);
|
|
106
|
+
}
|
|
107
|
+
if (result.logs && result.logs.length > 0) {
|
|
108
|
+
this.addOutputParam(params, "logs", result.logs);
|
|
109
|
+
}
|
|
110
|
+
if (result.executionTimeMs !== undefined) {
|
|
111
|
+
this.addOutputParam(params, "executionTimeMs", result.executionTimeMs);
|
|
112
|
+
}
|
|
113
|
+
return {
|
|
114
|
+
Success: true,
|
|
115
|
+
ResultCode: "SUCCESS",
|
|
116
|
+
Message: JSON.stringify({
|
|
117
|
+
output: result.output,
|
|
118
|
+
logs: result.logs,
|
|
119
|
+
executionTimeMs: result.executionTimeMs
|
|
120
|
+
})
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
catch (error) {
|
|
124
|
+
(0, core_1.LogError)(`Error in ExecuteCodeAction: ${error}`);
|
|
125
|
+
return {
|
|
126
|
+
Success: false,
|
|
127
|
+
ResultCode: "UNEXPECTED_ERROR",
|
|
128
|
+
Message: error instanceof Error ? error.message : String(error)
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Helper to get string parameter from action params
|
|
134
|
+
* @private
|
|
135
|
+
*/
|
|
136
|
+
getStringParam(params, name, defaultValue) {
|
|
137
|
+
const param = params.Params.find(p => p.Name.trim().toLowerCase() === name.toLowerCase());
|
|
138
|
+
if (!param || param.Value === undefined || param.Value === null) {
|
|
139
|
+
return defaultValue;
|
|
140
|
+
}
|
|
141
|
+
const value = String(param.Value).trim();
|
|
142
|
+
return value.length > 0 ? value : defaultValue;
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Helper to get numeric parameter from action params
|
|
146
|
+
* @private
|
|
147
|
+
*/
|
|
148
|
+
getNumericParam(params, name, defaultValue) {
|
|
149
|
+
const param = params.Params.find(p => p.Name.trim().toLowerCase() === name.toLowerCase());
|
|
150
|
+
if (!param || param.Value === undefined || param.Value === null) {
|
|
151
|
+
return defaultValue;
|
|
152
|
+
}
|
|
153
|
+
const parsed = Number(param.Value);
|
|
154
|
+
return isNaN(parsed) ? defaultValue : parsed;
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Helper to add output parameter to action results
|
|
158
|
+
* @private
|
|
159
|
+
*/
|
|
160
|
+
addOutputParam(params, name, value) {
|
|
161
|
+
params.Params.push({
|
|
162
|
+
Name: name,
|
|
163
|
+
Type: "Output",
|
|
164
|
+
Value: value
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
};
|
|
168
|
+
exports.ExecuteCodeAction = ExecuteCodeAction;
|
|
169
|
+
exports.ExecuteCodeAction = ExecuteCodeAction = __decorate([
|
|
170
|
+
(0, global_1.RegisterClass)(actions_1.BaseAction, "Execute Code")
|
|
171
|
+
], ExecuteCodeAction);
|
|
172
|
+
//# sourceMappingURL=execute-code.action.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execute-code.action.js","sourceRoot":"","sources":["../../../src/custom/code-execution/execute-code.action.ts"],"names":[],"mappings":"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"}
|
|
@@ -127,7 +127,7 @@ let CSVParserAction = class CSVParserAction extends base_file_handler_1.BaseFile
|
|
|
127
127
|
skipEmptyLines: skipEmptyRows ? 'greedy' : false,
|
|
128
128
|
dynamicTyping: dynamicTyping,
|
|
129
129
|
preview: maxRows > 0 ? maxRows : undefined,
|
|
130
|
-
|
|
130
|
+
transform: (value, field) => {
|
|
131
131
|
return trimValues ? value.trim() : value;
|
|
132
132
|
}
|
|
133
133
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"csv-parser.action.js","sourceRoot":"","sources":["../../../src/custom/data/csv-parser.action.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,mDAAuD;AACvD,sEAAuE;AACvE,gDAAkC;AAClC,qDAAqD;AAErD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAEI,IAAM,eAAe,GAArB,MAAM,eAAgB,SAAQ,yCAAqB;IAEtD;;;;;;;;;;;;;;;;;OAiBG;IACO,KAAK,CAAC,iBAAiB,CAAC,MAAuB;QACrD,IAAI,CAAC;YACD,wCAAwC;YACxC,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YAEjE,sBAAsB;YACtB,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;YACpE,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,WAAW,CAAC,IAAI,GAAG,CAAC;YACjE,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,WAAW,CAAC,IAAI,GAAG,CAAC;YACjE,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,YAAY,CAAC,IAAI,GAAG,CAAC;YACnE,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,eAAe,EAAE,IAAI,CAAC,CAAC;YAC1E,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;YACpE,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,eAAe,EAAE,IAAI,CAAC,CAAC;YAC1E,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;YAE3D,qBAAqB;YACrB,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACzB,OAAO;oBACH,OAAO,EAAE,KAAK;oBACd,OAAO,EAAE,sCAAsC;oBAC/C,UAAU,EAAE,mBAAmB;iBAClC,CAAC;YACN,CAAC;YAED,wCAAwC;YACxC,MAAM,SAAS,GAAG,OAAO,WAAW,CAAC,OAAO,KAAK,QAAQ;gBACrD,CAAC,CAAC,WAAW,CAAC,OAAO;gBACrB,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;YAErC,4BAA4B;YAC5B,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;gBACtC,MAAM,EAAE,UAAU;gBAClB,SAAS,EAAE,SAAS;gBACpB,SAAS,EAAE,SAAS;gBACpB,UAAU,EAAE,UAAU;gBACtB,cAAc,EAAE,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK;gBAChD,aAAa,EAAE,aAAa;gBAC5B,OAAO,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;gBAC1C,
|
|
1
|
+
{"version":3,"file":"csv-parser.action.js","sourceRoot":"","sources":["../../../src/custom/data/csv-parser.action.ts"],"names":[],"mappings":"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"}
|