@memberjunction/core-actions 2.107.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/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 +3 -3
- package/dist/custom/ai/summarize-content.action.d.ts.map +1 -1
- package/dist/custom/ai/summarize-content.action.js +51 -143
- package/dist/custom/ai/summarize-content.action.js.map +1 -1
- 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 +36 -18
- package/dist/custom/data/execute-research-query.action.d.ts.map +1 -1
- package/dist/custom/data/execute-research-query.action.js +221 -114
- package/dist/custom/data/execute-research-query.action.js.map +1 -1
- package/dist/custom/data/explore-database-schema.action.d.ts +4 -0
- package/dist/custom/data/explore-database-schema.action.d.ts.map +1 -1
- package/dist/custom/data/explore-database-schema.action.js +101 -8
- package/dist/custom/data/explore-database-schema.action.js.map +1 -1
- 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/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 +6 -1
- package/dist/custom/web/google-custom-search.action.d.ts.map +1 -1
- package/dist/custom/web/google-custom-search.action.js +78 -10
- package/dist/custom/web/google-custom-search.action.js.map +1 -1
- 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 +10 -10
- package/dist/generated/action_subclasses.d.ts.map +1 -1
- package/dist/generated/action_subclasses.js +29 -29
- package/dist/generated/action_subclasses.js.map +1 -1
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +28 -0
- package/dist/index.js.map +1 -1
- package/package.json +29 -12
|
@@ -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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"}
|
|
@@ -2,10 +2,9 @@ import { ActionResultSimple, RunActionParams } from "@memberjunction/actions-bas
|
|
|
2
2
|
import { BaseAction } from "@memberjunction/actions";
|
|
3
3
|
/**
|
|
4
4
|
* Action that executes read-only SQL SELECT queries for research purposes with
|
|
5
|
-
*
|
|
5
|
+
* security validation.
|
|
6
6
|
*
|
|
7
7
|
* Security Features:
|
|
8
|
-
* - SQL syntax validation using node-sql-parser
|
|
9
8
|
* - SELECT-only enforcement (rejects INSERT, UPDATE, DELETE, DROP, etc.)
|
|
10
9
|
* - Dangerous operation detection (EXEC, xp_, sp_, dynamic SQL, etc.)
|
|
11
10
|
* - Query timeout protection
|
|
@@ -14,10 +13,12 @@ import { BaseAction } from "@memberjunction/actions";
|
|
|
14
13
|
*
|
|
15
14
|
* Performance Features:
|
|
16
15
|
* - Configurable row limits to prevent overwhelming results
|
|
17
|
-
* - Optional execution plan for performance analysis
|
|
18
16
|
* - Execution time tracking
|
|
19
17
|
* - Validation warnings for potentially slow queries
|
|
20
18
|
*
|
|
19
|
+
* Note: SQL syntax validation is handled by SQL Server during execution.
|
|
20
|
+
* This provides more accurate error messages than a JavaScript parser.
|
|
21
|
+
*
|
|
21
22
|
* @example
|
|
22
23
|
* ```typescript
|
|
23
24
|
* // Simple SELECT query
|
|
@@ -25,11 +26,11 @@ import { BaseAction } from "@memberjunction/actions";
|
|
|
25
26
|
* ActionName: 'Execute Research Query',
|
|
26
27
|
* Params: [{
|
|
27
28
|
* Name: 'Query',
|
|
28
|
-
* Value: 'SELECT TOP 100 * FROM Customers WHERE Country =
|
|
29
|
+
* Value: 'SELECT TOP 100 * FROM Customers WHERE Country = ''USA'''
|
|
29
30
|
* }]
|
|
30
31
|
* });
|
|
31
32
|
*
|
|
32
|
-
* // Query with timeout
|
|
33
|
+
* // Query with timeout
|
|
33
34
|
* await runAction({
|
|
34
35
|
* ActionName: 'Execute Research Query',
|
|
35
36
|
* Params: [{
|
|
@@ -38,15 +39,11 @@ import { BaseAction } from "@memberjunction/actions";
|
|
|
38
39
|
* }, {
|
|
39
40
|
* Name: 'Timeout',
|
|
40
41
|
* Value: 60
|
|
41
|
-
* }, {
|
|
42
|
-
* Name: 'IncludeExecutionPlan',
|
|
43
|
-
* Value: true
|
|
44
42
|
* }]
|
|
45
43
|
* });
|
|
46
44
|
* ```
|
|
47
45
|
*/
|
|
48
46
|
export declare class ExecuteResearchQueryAction extends BaseAction {
|
|
49
|
-
private readonly parser;
|
|
50
47
|
/**
|
|
51
48
|
* List of dangerous SQL keywords and patterns that should be blocked
|
|
52
49
|
*/
|
|
@@ -56,10 +53,6 @@ export declare class ExecuteResearchQueryAction extends BaseAction {
|
|
|
56
53
|
* Validates query for security concerns
|
|
57
54
|
*/
|
|
58
55
|
private validateQuerySecurity;
|
|
59
|
-
/**
|
|
60
|
-
* Validates SQL syntax using node-sql-parser
|
|
61
|
-
*/
|
|
62
|
-
private validateQuerySyntax;
|
|
63
56
|
/**
|
|
64
57
|
* Ensures query has a row limit to prevent overwhelming results
|
|
65
58
|
*/
|
|
@@ -69,13 +62,38 @@ export declare class ExecuteResearchQueryAction extends BaseAction {
|
|
|
69
62
|
*/
|
|
70
63
|
private generateValidationWarnings;
|
|
71
64
|
/**
|
|
72
|
-
* Formats results as CSV string
|
|
65
|
+
* Formats results as CSV string with proper escaping
|
|
66
|
+
* @param results Array of result objects
|
|
67
|
+
* @param columnMaxLength Optional maximum length for column values (0 = no limit)
|
|
73
68
|
*/
|
|
74
69
|
private formatAsCSV;
|
|
75
70
|
/**
|
|
76
|
-
* Formats
|
|
71
|
+
* Formats a single CSV row (for headers)
|
|
72
|
+
*/
|
|
73
|
+
private formatCSVRow;
|
|
74
|
+
/**
|
|
75
|
+
* Formats a single CSV value with proper escaping
|
|
76
|
+
* - Null/undefined values become empty strings
|
|
77
|
+
* - All string values are quoted and escaped
|
|
78
|
+
* - Numbers and booleans are converted to strings and quoted
|
|
79
|
+
*/
|
|
80
|
+
private formatCSVValue;
|
|
81
|
+
/**
|
|
82
|
+
* Trims columns in result set to maximum length
|
|
83
|
+
* Used for JSON format results to prevent verbose fields from overwhelming context
|
|
84
|
+
* @param results Array of result objects
|
|
85
|
+
* @param maxLength Maximum length for string values
|
|
86
|
+
* @returns New array with trimmed values
|
|
87
|
+
*/
|
|
88
|
+
private trimResultColumns;
|
|
89
|
+
/**
|
|
90
|
+
* Analyze query data using AI prompt
|
|
91
|
+
*/
|
|
92
|
+
private analyzeQueryData;
|
|
93
|
+
/**
|
|
94
|
+
* Get prompt by name and category from AIEngine
|
|
77
95
|
*/
|
|
78
|
-
private
|
|
96
|
+
private getPromptByNameAndCategory;
|
|
79
97
|
/**
|
|
80
98
|
* Helper to get string parameter value
|
|
81
99
|
*/
|
|
@@ -85,9 +103,9 @@ export declare class ExecuteResearchQueryAction extends BaseAction {
|
|
|
85
103
|
*/
|
|
86
104
|
private getNumericParam;
|
|
87
105
|
/**
|
|
88
|
-
*
|
|
106
|
+
* Build detailed message with query results for agent consumption
|
|
89
107
|
*/
|
|
90
|
-
private
|
|
108
|
+
private buildDetailedMessage;
|
|
91
109
|
}
|
|
92
110
|
/**
|
|
93
111
|
* Load function to ensure the class is registered and not tree-shaken
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execute-research-query.action.d.ts","sourceRoot":"","sources":["../../../src/custom/data/execute-research-query.action.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAEnF,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"execute-research-query.action.d.ts","sourceRoot":"","sources":["../../../src/custom/data/execute-research-query.action.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAEnF,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AASrD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,qBACa,0BAA2B,SAAQ,UAAU;IAEtD;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAwBjC;cAEc,iBAAiB,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAoLvF;;OAEG;IACH,OAAO,CAAC,qBAAqB;IA4B7B;;OAEG;IACH,OAAO,CAAC,cAAc;IAiBtB;;OAEG;IACH,OAAO,CAAC,0BAA0B;IA8BlC;;;;OAIG;IACH,OAAO,CAAC,WAAW;IAwBnB;;OAEG;IACH,OAAO,CAAC,YAAY;IAIpB;;;;;OAKG;IACH,OAAO,CAAC,cAAc;IAetB;;;;;;OAMG;IACH,OAAO,CAAC,iBAAiB;IAczB;;OAEG;YACW,gBAAgB;IA2D9B;;OAEG;IACH,OAAO,CAAC,0BAA0B;IAOlC;;OAEG;IACH,OAAO,CAAC,cAAc;IAQtB;;OAEG;IACH,OAAO,CAAC,eAAe;IAYvB;;OAEG;IACH,OAAO,CAAC,oBAAoB;CA2E/B;AAED;;GAEG;AACH,wBAAgB,8BAA8B,SAE7C"}
|