@memberjunction/core-actions 2.54.0 → 2.55.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/execute-ai-prompt.action.d.ts +94 -0
- package/dist/custom/ai/execute-ai-prompt.action.d.ts.map +1 -0
- package/dist/custom/ai/execute-ai-prompt.action.js +274 -0
- package/dist/custom/ai/execute-ai-prompt.action.js.map +1 -0
- package/dist/custom/communication/slack-webhook.action.d.ts +101 -0
- package/dist/custom/communication/slack-webhook.action.d.ts.map +1 -0
- package/dist/custom/communication/slack-webhook.action.js +269 -0
- package/dist/custom/communication/slack-webhook.action.js.map +1 -0
- package/dist/custom/communication/teams-webhook.action.d.ts +96 -0
- package/dist/custom/communication/teams-webhook.action.d.ts.map +1 -0
- package/dist/custom/communication/teams-webhook.action.js +275 -0
- package/dist/custom/communication/teams-webhook.action.js.map +1 -0
- package/dist/custom/data/aggregate-data.action.d.ts +91 -0
- package/dist/custom/data/aggregate-data.action.d.ts.map +1 -0
- package/dist/custom/data/aggregate-data.action.js +333 -0
- package/dist/custom/data/aggregate-data.action.js.map +1 -0
- package/dist/custom/data/csv-parser.action.d.ts +68 -0
- package/dist/custom/data/csv-parser.action.d.ts.map +1 -0
- package/dist/custom/data/csv-parser.action.js +184 -0
- package/dist/custom/data/csv-parser.action.js.map +1 -0
- package/dist/custom/data/data-mapper.action.d.ts +89 -0
- package/dist/custom/data/data-mapper.action.d.ts.map +1 -0
- package/dist/custom/data/data-mapper.action.js +325 -0
- package/dist/custom/data/data-mapper.action.js.map +1 -0
- package/dist/custom/data/json-transform.action.d.ts +57 -0
- package/dist/custom/data/json-transform.action.d.ts.map +1 -0
- package/dist/custom/data/json-transform.action.js +205 -0
- package/dist/custom/data/json-transform.action.js.map +1 -0
- package/dist/custom/data/xml-parser.action.d.ts +85 -0
- package/dist/custom/data/xml-parser.action.d.ts.map +1 -0
- package/dist/custom/data/xml-parser.action.js +326 -0
- package/dist/custom/data/xml-parser.action.js.map +1 -0
- package/dist/custom/files/excel-reader.action.d.ts +86 -0
- package/dist/custom/files/excel-reader.action.d.ts.map +1 -0
- package/dist/custom/files/excel-reader.action.js +348 -0
- package/dist/custom/files/excel-reader.action.js.map +1 -0
- package/dist/custom/files/excel-writer.action.d.ts +79 -0
- package/dist/custom/files/excel-writer.action.d.ts.map +1 -0
- package/dist/custom/files/excel-writer.action.js +325 -0
- package/dist/custom/files/excel-writer.action.js.map +1 -0
- package/dist/custom/files/file-compress.action.d.ts +90 -0
- package/dist/custom/files/file-compress.action.d.ts.map +1 -0
- package/dist/custom/files/file-compress.action.js +346 -0
- package/dist/custom/files/file-compress.action.js.map +1 -0
- package/dist/custom/files/pdf-extractor.action.d.ts +86 -0
- package/dist/custom/files/pdf-extractor.action.d.ts.map +1 -0
- package/dist/custom/files/pdf-extractor.action.js +247 -0
- package/dist/custom/files/pdf-extractor.action.js.map +1 -0
- package/dist/custom/files/pdf-generator.action.d.ts +70 -0
- package/dist/custom/files/pdf-generator.action.d.ts.map +1 -0
- package/dist/custom/files/pdf-generator.action.js +286 -0
- package/dist/custom/files/pdf-generator.action.js.map +1 -0
- package/dist/custom/integration/api-rate-limiter.action.d.ts +88 -0
- package/dist/custom/integration/api-rate-limiter.action.d.ts.map +1 -0
- package/dist/custom/integration/api-rate-limiter.action.js +363 -0
- package/dist/custom/integration/api-rate-limiter.action.js.map +1 -0
- package/dist/custom/integration/graphql-query.action.d.ts +92 -0
- package/dist/custom/integration/graphql-query.action.d.ts.map +1 -0
- package/dist/custom/integration/graphql-query.action.js +251 -0
- package/dist/custom/integration/graphql-query.action.js.map +1 -0
- package/dist/custom/integration/http-request.action.d.ts +96 -0
- package/dist/custom/integration/http-request.action.d.ts.map +1 -0
- package/dist/custom/integration/http-request.action.js +316 -0
- package/dist/custom/integration/http-request.action.js.map +1 -0
- package/dist/custom/integration/oauth-flow.action.d.ts +130 -0
- package/dist/custom/integration/oauth-flow.action.d.ts.map +1 -0
- package/dist/custom/integration/oauth-flow.action.js +624 -0
- package/dist/custom/integration/oauth-flow.action.js.map +1 -0
- package/dist/custom/security/password-strength.action.d.ts +129 -0
- package/dist/custom/security/password-strength.action.d.ts.map +1 -0
- package/dist/custom/security/password-strength.action.js +463 -0
- package/dist/custom/security/password-strength.action.js.map +1 -0
- package/dist/custom/utilities/base-file-handler.d.ts +54 -0
- package/dist/custom/utilities/base-file-handler.d.ts.map +1 -0
- package/dist/custom/utilities/base-file-handler.js +167 -0
- package/dist/custom/utilities/base-file-handler.js.map +1 -0
- package/dist/custom/utilities/index.d.ts +3 -0
- package/dist/custom/utilities/index.d.ts.map +1 -0
- package/dist/custom/utilities/index.js +19 -0
- package/dist/custom/utilities/index.js.map +1 -0
- package/dist/custom/utilities/json-param-helper.d.ts +33 -0
- package/dist/custom/utilities/json-param-helper.d.ts.map +1 -0
- package/dist/custom/utilities/json-param-helper.js +66 -0
- package/dist/custom/utilities/json-param-helper.js.map +1 -0
- package/dist/custom/web/duckduckgo-rate-limiter.d.ts +72 -0
- package/dist/custom/web/duckduckgo-rate-limiter.d.ts.map +1 -0
- package/dist/custom/web/duckduckgo-rate-limiter.js +175 -0
- package/dist/custom/web/duckduckgo-rate-limiter.js.map +1 -0
- package/dist/custom/web/web-search.action.d.ts +1 -0
- package/dist/custom/web/web-search.action.d.ts.map +1 -1
- package/dist/custom/web/web-search.action.js +48 -20
- package/dist/custom/web/web-search.action.js.map +1 -1
- package/dist/custom/workflow/conditional.action.d.ts +94 -0
- package/dist/custom/workflow/conditional.action.d.ts.map +1 -0
- package/dist/custom/workflow/conditional.action.js +274 -0
- package/dist/custom/workflow/conditional.action.js.map +1 -0
- package/dist/custom/workflow/delay.action.d.ts +76 -0
- package/dist/custom/workflow/delay.action.d.ts.map +1 -0
- package/dist/custom/workflow/delay.action.js +187 -0
- package/dist/custom/workflow/delay.action.js.map +1 -0
- package/dist/custom/workflow/loop.action.d.ts +112 -0
- package/dist/custom/workflow/loop.action.d.ts.map +1 -0
- package/dist/custom/workflow/loop.action.js +380 -0
- package/dist/custom/workflow/loop.action.js.map +1 -0
- package/dist/custom/workflow/parallel-execute.action.d.ts +105 -0
- package/dist/custom/workflow/parallel-execute.action.d.ts.map +1 -0
- package/dist/custom/workflow/parallel-execute.action.js +457 -0
- package/dist/custom/workflow/parallel-execute.action.js.map +1 -0
- package/dist/custom/workflow/retry.action.d.ts +90 -0
- package/dist/custom/workflow/retry.action.d.ts.map +1 -0
- package/dist/custom/workflow/retry.action.js +378 -0
- package/dist/custom/workflow/retry.action.js.map +1 -0
- package/dist/index.d.ts +23 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +75 -0
- package/dist/index.js.map +1 -1
- package/package.json +25 -10
- package/readme.md +11270 -101
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { ActionResultSimple, RunActionParams } from "@memberjunction/actions-base";
|
|
2
|
+
import { BaseAction } from "@memberjunction/actions";
|
|
3
|
+
/**
|
|
4
|
+
* Action that retries failed actions with exponential backoff
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* ```typescript
|
|
8
|
+
* // Basic retry with defaults
|
|
9
|
+
* await runAction({
|
|
10
|
+
* ActionName: 'Retry',
|
|
11
|
+
* Params: [{
|
|
12
|
+
* Name: 'Action',
|
|
13
|
+
* Value: {
|
|
14
|
+
* ActionName: 'HTTP Request',
|
|
15
|
+
* Params: { URL: 'https://api.example.com/data' }
|
|
16
|
+
* }
|
|
17
|
+
* }]
|
|
18
|
+
* });
|
|
19
|
+
*
|
|
20
|
+
* // Advanced retry with custom configuration
|
|
21
|
+
* await runAction({
|
|
22
|
+
* ActionName: 'Retry',
|
|
23
|
+
* Params: [{
|
|
24
|
+
* Name: 'Action',
|
|
25
|
+
* Value: {
|
|
26
|
+
* ActionName: 'Database Query',
|
|
27
|
+
* Params: { Query: 'SELECT * FROM orders' }
|
|
28
|
+
* }
|
|
29
|
+
* }, {
|
|
30
|
+
* Name: 'MaxRetries',
|
|
31
|
+
* Value: 5
|
|
32
|
+
* }, {
|
|
33
|
+
* Name: 'RetryDelay',
|
|
34
|
+
* Value: 2000
|
|
35
|
+
* }, {
|
|
36
|
+
* Name: 'BackoffMultiplier',
|
|
37
|
+
* Value: 2
|
|
38
|
+
* }, {
|
|
39
|
+
* Name: 'RetryOn',
|
|
40
|
+
* Value: ['TIMEOUT', 'CONNECTION_ERROR']
|
|
41
|
+
* }, {
|
|
42
|
+
* Name: 'GiveUpOn',
|
|
43
|
+
* Value: ['INVALID_CREDENTIALS', 'NOT_FOUND']
|
|
44
|
+
* }]
|
|
45
|
+
* });
|
|
46
|
+
* ```
|
|
47
|
+
*/
|
|
48
|
+
export declare class RetryAction extends BaseAction {
|
|
49
|
+
/**
|
|
50
|
+
* Retries failed actions with exponential backoff
|
|
51
|
+
*
|
|
52
|
+
* @param params - The action parameters containing:
|
|
53
|
+
* - Action: Action configuration to retry (required)
|
|
54
|
+
* - MaxRetries: Maximum number of retry attempts (default: 3)
|
|
55
|
+
* - RetryDelay: Initial delay in milliseconds (default: 1000)
|
|
56
|
+
* - BackoffMultiplier: Multiplier for exponential backoff (default: 2)
|
|
57
|
+
* - MaxDelay: Maximum delay between retries in ms (default: 30000)
|
|
58
|
+
* - UseJitter: Add random jitter to delays (default: true)
|
|
59
|
+
* - RetryOn: Array of error codes to retry on (optional - retries all by default)
|
|
60
|
+
* - GiveUpOn: Array of error codes to not retry (optional)
|
|
61
|
+
*
|
|
62
|
+
* @returns Result of the successful action or final failure
|
|
63
|
+
*/
|
|
64
|
+
protected InternalRunAction(params: RunActionParams): Promise<ActionResultSimple>;
|
|
65
|
+
/**
|
|
66
|
+
* Check if error should be retried
|
|
67
|
+
*/
|
|
68
|
+
private shouldRetry;
|
|
69
|
+
/**
|
|
70
|
+
* Delay with optional jitter
|
|
71
|
+
*/
|
|
72
|
+
private delay;
|
|
73
|
+
/**
|
|
74
|
+
* Get numeric parameter with default
|
|
75
|
+
*/
|
|
76
|
+
private getNumericParam;
|
|
77
|
+
/**
|
|
78
|
+
* Get boolean parameter with default
|
|
79
|
+
*/
|
|
80
|
+
private getBooleanParam;
|
|
81
|
+
/**
|
|
82
|
+
* Get parameter value by name (case-insensitive)
|
|
83
|
+
*/
|
|
84
|
+
private getParamValue;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Loader function to ensure the RetryAction class is included in the bundle
|
|
88
|
+
*/
|
|
89
|
+
export declare function LoadRetryAction(): void;
|
|
90
|
+
//# sourceMappingURL=retry.action.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retry.action.d.ts","sourceRoot":"","sources":["../../../src/custom/workflow/retry.action.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAEnF,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAGrD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,qBACa,WAAY,SAAQ,UAAU;IAEvC;;;;;;;;;;;;;;OAcG;cACa,iBAAiB,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAyPvF;;OAEG;IACH,OAAO,CAAC,WAAW;IAsCnB;;OAEG;IACH,OAAO,CAAC,KAAK;IAQb;;OAEG;IACH,OAAO,CAAC,eAAe;IAOvB;;OAEG;IACH,OAAO,CAAC,eAAe;IAUvB;;OAEG;IACH,OAAO,CAAC,aAAa;CAIxB;AAED;;GAEG;AACH,wBAAgB,eAAe,SAE9B"}
|
|
@@ -0,0 +1,378 @@
|
|
|
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.LoadRetryAction = exports.RetryAction = void 0;
|
|
10
|
+
const global_1 = require("@memberjunction/global");
|
|
11
|
+
const actions_1 = require("@memberjunction/actions");
|
|
12
|
+
const actions_2 = require("@memberjunction/actions");
|
|
13
|
+
/**
|
|
14
|
+
* Action that retries failed actions with exponential backoff
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```typescript
|
|
18
|
+
* // Basic retry with defaults
|
|
19
|
+
* await runAction({
|
|
20
|
+
* ActionName: 'Retry',
|
|
21
|
+
* Params: [{
|
|
22
|
+
* Name: 'Action',
|
|
23
|
+
* Value: {
|
|
24
|
+
* ActionName: 'HTTP Request',
|
|
25
|
+
* Params: { URL: 'https://api.example.com/data' }
|
|
26
|
+
* }
|
|
27
|
+
* }]
|
|
28
|
+
* });
|
|
29
|
+
*
|
|
30
|
+
* // Advanced retry with custom configuration
|
|
31
|
+
* await runAction({
|
|
32
|
+
* ActionName: 'Retry',
|
|
33
|
+
* Params: [{
|
|
34
|
+
* Name: 'Action',
|
|
35
|
+
* Value: {
|
|
36
|
+
* ActionName: 'Database Query',
|
|
37
|
+
* Params: { Query: 'SELECT * FROM orders' }
|
|
38
|
+
* }
|
|
39
|
+
* }, {
|
|
40
|
+
* Name: 'MaxRetries',
|
|
41
|
+
* Value: 5
|
|
42
|
+
* }, {
|
|
43
|
+
* Name: 'RetryDelay',
|
|
44
|
+
* Value: 2000
|
|
45
|
+
* }, {
|
|
46
|
+
* Name: 'BackoffMultiplier',
|
|
47
|
+
* Value: 2
|
|
48
|
+
* }, {
|
|
49
|
+
* Name: 'RetryOn',
|
|
50
|
+
* Value: ['TIMEOUT', 'CONNECTION_ERROR']
|
|
51
|
+
* }, {
|
|
52
|
+
* Name: 'GiveUpOn',
|
|
53
|
+
* Value: ['INVALID_CREDENTIALS', 'NOT_FOUND']
|
|
54
|
+
* }]
|
|
55
|
+
* });
|
|
56
|
+
* ```
|
|
57
|
+
*/
|
|
58
|
+
let RetryAction = class RetryAction extends actions_1.BaseAction {
|
|
59
|
+
/**
|
|
60
|
+
* Retries failed actions with exponential backoff
|
|
61
|
+
*
|
|
62
|
+
* @param params - The action parameters containing:
|
|
63
|
+
* - Action: Action configuration to retry (required)
|
|
64
|
+
* - MaxRetries: Maximum number of retry attempts (default: 3)
|
|
65
|
+
* - RetryDelay: Initial delay in milliseconds (default: 1000)
|
|
66
|
+
* - BackoffMultiplier: Multiplier for exponential backoff (default: 2)
|
|
67
|
+
* - MaxDelay: Maximum delay between retries in ms (default: 30000)
|
|
68
|
+
* - UseJitter: Add random jitter to delays (default: true)
|
|
69
|
+
* - RetryOn: Array of error codes to retry on (optional - retries all by default)
|
|
70
|
+
* - GiveUpOn: Array of error codes to not retry (optional)
|
|
71
|
+
*
|
|
72
|
+
* @returns Result of the successful action or final failure
|
|
73
|
+
*/
|
|
74
|
+
async InternalRunAction(params) {
|
|
75
|
+
try {
|
|
76
|
+
const action = this.getParamValue(params, 'action');
|
|
77
|
+
const maxRetries = this.getNumericParam(params, 'maxretries', 3);
|
|
78
|
+
const retryDelay = this.getNumericParam(params, 'retrydelay', 1000);
|
|
79
|
+
const backoffMultiplier = this.getNumericParam(params, 'backoffmultiplier', 2);
|
|
80
|
+
const maxDelay = this.getNumericParam(params, 'maxdelay', 30000);
|
|
81
|
+
const useJitter = this.getBooleanParam(params, 'usejitter', true);
|
|
82
|
+
const retryOn = this.getParamValue(params, 'retryon');
|
|
83
|
+
const giveUpOn = this.getParamValue(params, 'giveupon');
|
|
84
|
+
// Validate required parameters
|
|
85
|
+
if (!action) {
|
|
86
|
+
return {
|
|
87
|
+
Success: false,
|
|
88
|
+
Message: "Action parameter is required",
|
|
89
|
+
ResultCode: "MISSING_ACTION"
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
if (!action.ActionName) {
|
|
93
|
+
return {
|
|
94
|
+
Success: false,
|
|
95
|
+
Message: "Action configuration must include ActionName",
|
|
96
|
+
ResultCode: "INVALID_ACTION"
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
// Validate numeric parameters
|
|
100
|
+
if (maxRetries < 0) {
|
|
101
|
+
return {
|
|
102
|
+
Success: false,
|
|
103
|
+
Message: "MaxRetries must be non-negative",
|
|
104
|
+
ResultCode: "INVALID_MAX_RETRIES"
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
if (retryDelay < 0) {
|
|
108
|
+
return {
|
|
109
|
+
Success: false,
|
|
110
|
+
Message: "RetryDelay must be non-negative",
|
|
111
|
+
ResultCode: "INVALID_RETRY_DELAY"
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
if (backoffMultiplier < 1) {
|
|
115
|
+
return {
|
|
116
|
+
Success: false,
|
|
117
|
+
Message: "BackoffMultiplier must be at least 1",
|
|
118
|
+
ResultCode: "INVALID_BACKOFF_MULTIPLIER"
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
// Prepare action configuration
|
|
122
|
+
const preparedAction = {
|
|
123
|
+
...action,
|
|
124
|
+
Params: action.Params || []
|
|
125
|
+
};
|
|
126
|
+
// Create action engine
|
|
127
|
+
const engine = new actions_2.ActionEngineServer();
|
|
128
|
+
// Track attempts
|
|
129
|
+
const attempts = [];
|
|
130
|
+
const startTime = Date.now();
|
|
131
|
+
let lastResult;
|
|
132
|
+
// Execute with retries
|
|
133
|
+
let currentDelay = retryDelay;
|
|
134
|
+
for (let attempt = 0; attempt <= maxRetries; attempt++) {
|
|
135
|
+
const attemptStart = Date.now();
|
|
136
|
+
try {
|
|
137
|
+
// Execute the action
|
|
138
|
+
const result = await engine.RunAction(preparedAction);
|
|
139
|
+
const attemptDuration = Date.now() - attemptStart;
|
|
140
|
+
// Convert ActionResult to ActionResultSimple
|
|
141
|
+
const simpleResult = {
|
|
142
|
+
Success: result.Success,
|
|
143
|
+
ResultCode: result.Result?.ResultCode || (result.Success ? "SUCCESS" : "FAILED"),
|
|
144
|
+
Message: result.Message,
|
|
145
|
+
Params: result.Params
|
|
146
|
+
};
|
|
147
|
+
// Record attempt
|
|
148
|
+
attempts.push({
|
|
149
|
+
attempt: attempt + 1,
|
|
150
|
+
success: simpleResult.Success,
|
|
151
|
+
resultCode: simpleResult.ResultCode,
|
|
152
|
+
duration: attemptDuration,
|
|
153
|
+
delay: attempt > 0 ? currentDelay : 0
|
|
154
|
+
});
|
|
155
|
+
if (simpleResult.Success) {
|
|
156
|
+
// Success! Return the result
|
|
157
|
+
params.Params.push({
|
|
158
|
+
Name: 'Attempts',
|
|
159
|
+
Type: 'Output',
|
|
160
|
+
Value: attempts
|
|
161
|
+
});
|
|
162
|
+
params.Params.push({
|
|
163
|
+
Name: 'TotalAttempts',
|
|
164
|
+
Type: 'Output',
|
|
165
|
+
Value: attempt + 1
|
|
166
|
+
});
|
|
167
|
+
params.Params.push({
|
|
168
|
+
Name: 'ActionResult',
|
|
169
|
+
Type: 'Output',
|
|
170
|
+
Value: simpleResult
|
|
171
|
+
});
|
|
172
|
+
return {
|
|
173
|
+
Success: true,
|
|
174
|
+
ResultCode: "SUCCESS_WITH_RETRIES",
|
|
175
|
+
Message: JSON.stringify({
|
|
176
|
+
message: `Action succeeded after ${attempt + 1} attempt(s)`,
|
|
177
|
+
attempts: attempts,
|
|
178
|
+
finalResult: simpleResult
|
|
179
|
+
}, null, 2)
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
// Check if we should retry this error
|
|
183
|
+
lastResult = simpleResult;
|
|
184
|
+
const shouldRetry = this.shouldRetry(simpleResult, retryOn, giveUpOn);
|
|
185
|
+
if (!shouldRetry || attempt === maxRetries) {
|
|
186
|
+
// Don't retry or final attempt
|
|
187
|
+
params.Params.push({
|
|
188
|
+
Name: 'Attempts',
|
|
189
|
+
Type: 'Output',
|
|
190
|
+
Value: attempts
|
|
191
|
+
});
|
|
192
|
+
params.Params.push({
|
|
193
|
+
Name: 'TotalAttempts',
|
|
194
|
+
Type: 'Output',
|
|
195
|
+
Value: attempt + 1
|
|
196
|
+
});
|
|
197
|
+
params.Params.push({
|
|
198
|
+
Name: 'FinalError',
|
|
199
|
+
Type: 'Output',
|
|
200
|
+
Value: simpleResult
|
|
201
|
+
});
|
|
202
|
+
return {
|
|
203
|
+
Success: false,
|
|
204
|
+
ResultCode: shouldRetry ? "MAX_RETRIES_EXCEEDED" : "NON_RETRYABLE_ERROR",
|
|
205
|
+
Message: JSON.stringify({
|
|
206
|
+
message: shouldRetry
|
|
207
|
+
? `Action failed after ${attempt + 1} attempt(s)`
|
|
208
|
+
: `Action failed with non-retryable error`,
|
|
209
|
+
attempts: attempts,
|
|
210
|
+
finalError: simpleResult
|
|
211
|
+
}, null, 2)
|
|
212
|
+
};
|
|
213
|
+
}
|
|
214
|
+
// Wait before retry
|
|
215
|
+
if (attempt < maxRetries) {
|
|
216
|
+
await this.delay(currentDelay, useJitter);
|
|
217
|
+
currentDelay = Math.min(currentDelay * backoffMultiplier, maxDelay);
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
catch (error) {
|
|
221
|
+
const attemptDuration = Date.now() - attemptStart;
|
|
222
|
+
// Create error result
|
|
223
|
+
const errorResult = {
|
|
224
|
+
Success: false,
|
|
225
|
+
ResultCode: "EXECUTION_ERROR",
|
|
226
|
+
Message: error instanceof Error ? error.message : String(error)
|
|
227
|
+
};
|
|
228
|
+
// Record attempt
|
|
229
|
+
attempts.push({
|
|
230
|
+
attempt: attempt + 1,
|
|
231
|
+
success: false,
|
|
232
|
+
resultCode: errorResult.ResultCode,
|
|
233
|
+
error: error instanceof Error ? error.message : String(error),
|
|
234
|
+
duration: attemptDuration,
|
|
235
|
+
delay: attempt > 0 ? currentDelay : 0
|
|
236
|
+
});
|
|
237
|
+
lastResult = errorResult;
|
|
238
|
+
const shouldRetry = this.shouldRetry(errorResult, retryOn, giveUpOn);
|
|
239
|
+
if (!shouldRetry || attempt === maxRetries) {
|
|
240
|
+
// Don't retry or final attempt
|
|
241
|
+
params.Params.push({
|
|
242
|
+
Name: 'Attempts',
|
|
243
|
+
Type: 'Output',
|
|
244
|
+
Value: attempts
|
|
245
|
+
});
|
|
246
|
+
params.Params.push({
|
|
247
|
+
Name: 'TotalAttempts',
|
|
248
|
+
Type: 'Output',
|
|
249
|
+
Value: attempt + 1
|
|
250
|
+
});
|
|
251
|
+
params.Params.push({
|
|
252
|
+
Name: 'FinalError',
|
|
253
|
+
Type: 'Output',
|
|
254
|
+
Value: error instanceof Error ? error.message : String(error)
|
|
255
|
+
});
|
|
256
|
+
return {
|
|
257
|
+
Success: false,
|
|
258
|
+
ResultCode: shouldRetry ? "MAX_RETRIES_EXCEEDED" : "NON_RETRYABLE_ERROR",
|
|
259
|
+
Message: JSON.stringify({
|
|
260
|
+
message: shouldRetry
|
|
261
|
+
? `Action failed after ${attempt + 1} attempt(s)`
|
|
262
|
+
: `Action failed with non-retryable error`,
|
|
263
|
+
attempts: attempts,
|
|
264
|
+
finalError: error instanceof Error ? error.message : String(error)
|
|
265
|
+
}, null, 2)
|
|
266
|
+
};
|
|
267
|
+
}
|
|
268
|
+
// Wait before retry
|
|
269
|
+
if (attempt < maxRetries) {
|
|
270
|
+
await this.delay(currentDelay, useJitter);
|
|
271
|
+
currentDelay = Math.min(currentDelay * backoffMultiplier, maxDelay);
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
// Should never reach here
|
|
276
|
+
return {
|
|
277
|
+
Success: false,
|
|
278
|
+
ResultCode: "UNEXPECTED_ERROR",
|
|
279
|
+
Message: "Retry logic completed unexpectedly"
|
|
280
|
+
};
|
|
281
|
+
}
|
|
282
|
+
catch (error) {
|
|
283
|
+
return {
|
|
284
|
+
Success: false,
|
|
285
|
+
Message: `Retry action failed: ${error instanceof Error ? error.message : String(error)}`,
|
|
286
|
+
ResultCode: "RETRY_FAILED"
|
|
287
|
+
};
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
/**
|
|
291
|
+
* Check if error should be retried
|
|
292
|
+
*/
|
|
293
|
+
shouldRetry(result, retryOn, giveUpOn) {
|
|
294
|
+
// If giveUpOn is specified and matches, don't retry
|
|
295
|
+
if (giveUpOn && Array.isArray(giveUpOn) && giveUpOn.length > 0) {
|
|
296
|
+
if (giveUpOn.includes(result.ResultCode || '')) {
|
|
297
|
+
return false;
|
|
298
|
+
}
|
|
299
|
+
// Also check if error message contains any giveUpOn values
|
|
300
|
+
if (result.Message) {
|
|
301
|
+
for (const giveUp of giveUpOn) {
|
|
302
|
+
if (result.Message.toLowerCase().includes(giveUp.toLowerCase())) {
|
|
303
|
+
return false;
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
// If retryOn is not specified, retry all errors
|
|
309
|
+
if (!retryOn || !Array.isArray(retryOn) || retryOn.length === 0) {
|
|
310
|
+
return true;
|
|
311
|
+
}
|
|
312
|
+
// Check if error code matches retryOn list
|
|
313
|
+
if (retryOn.includes(result.ResultCode || '')) {
|
|
314
|
+
return true;
|
|
315
|
+
}
|
|
316
|
+
// Check if error message contains any retryOn values
|
|
317
|
+
if (result.Message) {
|
|
318
|
+
for (const retry of retryOn) {
|
|
319
|
+
if (result.Message.toLowerCase().includes(retry.toLowerCase())) {
|
|
320
|
+
return true;
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
return false;
|
|
325
|
+
}
|
|
326
|
+
/**
|
|
327
|
+
* Delay with optional jitter
|
|
328
|
+
*/
|
|
329
|
+
delay(milliseconds, useJitter) {
|
|
330
|
+
const actualDelay = useJitter
|
|
331
|
+
? milliseconds * (0.5 + Math.random() * 0.5) // 50% to 100% of delay
|
|
332
|
+
: milliseconds;
|
|
333
|
+
return new Promise(resolve => setTimeout(resolve, actualDelay));
|
|
334
|
+
}
|
|
335
|
+
/**
|
|
336
|
+
* Get numeric parameter with default
|
|
337
|
+
*/
|
|
338
|
+
getNumericParam(params, name, defaultValue) {
|
|
339
|
+
const value = this.getParamValue(params, name);
|
|
340
|
+
if (value === undefined || value === null)
|
|
341
|
+
return defaultValue;
|
|
342
|
+
const num = Number(value);
|
|
343
|
+
return isNaN(num) ? defaultValue : num;
|
|
344
|
+
}
|
|
345
|
+
/**
|
|
346
|
+
* Get boolean parameter with default
|
|
347
|
+
*/
|
|
348
|
+
getBooleanParam(params, name, defaultValue) {
|
|
349
|
+
const value = this.getParamValue(params, name);
|
|
350
|
+
if (value === undefined || value === null)
|
|
351
|
+
return defaultValue;
|
|
352
|
+
if (typeof value === 'boolean')
|
|
353
|
+
return value;
|
|
354
|
+
if (typeof value === 'string') {
|
|
355
|
+
return value.toLowerCase() === 'true';
|
|
356
|
+
}
|
|
357
|
+
return defaultValue;
|
|
358
|
+
}
|
|
359
|
+
/**
|
|
360
|
+
* Get parameter value by name (case-insensitive)
|
|
361
|
+
*/
|
|
362
|
+
getParamValue(params, name) {
|
|
363
|
+
const param = params.Params.find(p => p.Name.toLowerCase() === name.toLowerCase());
|
|
364
|
+
return param?.Value;
|
|
365
|
+
}
|
|
366
|
+
};
|
|
367
|
+
exports.RetryAction = RetryAction;
|
|
368
|
+
exports.RetryAction = RetryAction = __decorate([
|
|
369
|
+
(0, global_1.RegisterClass)(actions_1.BaseAction, "Retry")
|
|
370
|
+
], RetryAction);
|
|
371
|
+
/**
|
|
372
|
+
* Loader function to ensure the RetryAction class is included in the bundle
|
|
373
|
+
*/
|
|
374
|
+
function LoadRetryAction() {
|
|
375
|
+
// Stub function to prevent tree shaking
|
|
376
|
+
}
|
|
377
|
+
exports.LoadRetryAction = LoadRetryAction;
|
|
378
|
+
//# sourceMappingURL=retry.action.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retry.action.js","sourceRoot":"","sources":["../../../src/custom/workflow/retry.action.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
export * from './generated/action_subclasses';
|
|
2
2
|
export * from './custom/communication/send-single-message.action';
|
|
3
|
+
export * from './custom/communication/slack-webhook.action';
|
|
4
|
+
export * from './custom/communication/teams-webhook.action';
|
|
3
5
|
export * from './custom/crud/create-record.action';
|
|
4
6
|
export * from './custom/crud/get-record.action';
|
|
5
7
|
export * from './custom/crud/update-record.action';
|
|
@@ -20,4 +22,25 @@ export * from './custom/web/web-search.action';
|
|
|
20
22
|
export * from './custom/web/web-page-content.action';
|
|
21
23
|
export * from './custom/web/url-link-validator.action';
|
|
22
24
|
export * from './custom/web/url-metadata-extractor.action';
|
|
25
|
+
export * from './custom/data/csv-parser.action';
|
|
26
|
+
export * from './custom/data/json-transform.action';
|
|
27
|
+
export * from './custom/data/xml-parser.action';
|
|
28
|
+
export * from './custom/data/aggregate-data.action';
|
|
29
|
+
export * from './custom/data/data-mapper.action';
|
|
30
|
+
export * from './custom/files/pdf-generator.action';
|
|
31
|
+
export * from './custom/files/pdf-extractor.action';
|
|
32
|
+
export * from './custom/files/excel-reader.action';
|
|
33
|
+
export * from './custom/files/excel-writer.action';
|
|
34
|
+
export * from './custom/files/file-compress.action';
|
|
35
|
+
export * from './custom/integration/http-request.action';
|
|
36
|
+
export * from './custom/integration/graphql-query.action';
|
|
37
|
+
export * from './custom/integration/oauth-flow.action';
|
|
38
|
+
export * from './custom/integration/api-rate-limiter.action';
|
|
39
|
+
export * from './custom/security/password-strength.action';
|
|
40
|
+
export * from './custom/workflow/conditional.action';
|
|
41
|
+
export * from './custom/workflow/loop.action';
|
|
42
|
+
export * from './custom/workflow/parallel-execute.action';
|
|
43
|
+
export * from './custom/workflow/retry.action';
|
|
44
|
+
export * from './custom/workflow/delay.action';
|
|
45
|
+
export * from './custom/ai/execute-ai-prompt.action';
|
|
23
46
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,+BAA+B,CAAC;AAG9C,cAAc,mDAAmD,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,+BAA+B,CAAC;AAG9C,cAAc,mDAAmD,CAAC;AAClE,cAAc,6CAA6C,CAAC;AAC5D,cAAc,6CAA6C,CAAC;AAG5D,cAAc,oCAAoC,CAAC;AACnD,cAAc,iCAAiC,CAAC;AAChD,cAAc,oCAAoC,CAAC;AACnD,cAAc,oCAAoC,CAAC;AAGnD,cAAc,kCAAkC,CAAC;AACjD,cAAc,sCAAsC,CAAC;AACrD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,sCAAsC,CAAC;AACrD,cAAc,oCAAoC,CAAC;AACnD,cAAc,qCAAqC,CAAC;AAGpD,cAAc,4CAA4C,CAAC;AAC3D,cAAc,oDAAoD,CAAC;AACnE,cAAc,0CAA0C,CAAC;AACzD,cAAc,8CAA8C,CAAC;AAC7D,cAAc,qDAAqD,CAAC;AACpE,cAAc,mCAAmC,CAAC;AAGlD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,sCAAsC,CAAC;AACrD,cAAc,wCAAwC,CAAC;AACvD,cAAc,4CAA4C,CAAC;AAG3D,cAAc,iCAAiC,CAAC;AAChD,cAAc,qCAAqC,CAAC;AACpD,cAAc,iCAAiC,CAAC;AAChD,cAAc,qCAAqC,CAAC;AACpD,cAAc,kCAAkC,CAAC;AAGjD,cAAc,qCAAqC,CAAC;AACpD,cAAc,qCAAqC,CAAC;AACpD,cAAc,oCAAoC,CAAC;AACnD,cAAc,oCAAoC,CAAC;AACnD,cAAc,qCAAqC,CAAC;AAGpD,cAAc,0CAA0C,CAAC;AACzD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,wCAAwC,CAAC;AACvD,cAAc,8CAA8C,CAAC;AAG7D,cAAc,4CAA4C,CAAC;AAG3D,cAAc,sCAAsC,CAAC;AACrD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,2CAA2C,CAAC;AAC1D,cAAc,gCAAgC,CAAC;AAC/C,cAAc,gCAAgC,CAAC;AAG/C,cAAc,sCAAsC,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -17,6 +17,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
17
17
|
__exportStar(require("./generated/action_subclasses"), exports);
|
|
18
18
|
// Communication Actions
|
|
19
19
|
__exportStar(require("./custom/communication/send-single-message.action"), exports);
|
|
20
|
+
__exportStar(require("./custom/communication/slack-webhook.action"), exports);
|
|
21
|
+
__exportStar(require("./custom/communication/teams-webhook.action"), exports);
|
|
20
22
|
// CRUD Actions
|
|
21
23
|
__exportStar(require("./custom/crud/create-record.action"), exports);
|
|
22
24
|
__exportStar(require("./custom/crud/get-record.action"), exports);
|
|
@@ -41,8 +43,37 @@ __exportStar(require("./custom/web/web-search.action"), exports);
|
|
|
41
43
|
__exportStar(require("./custom/web/web-page-content.action"), exports);
|
|
42
44
|
__exportStar(require("./custom/web/url-link-validator.action"), exports);
|
|
43
45
|
__exportStar(require("./custom/web/url-metadata-extractor.action"), exports);
|
|
46
|
+
// Data Transformation Actions
|
|
47
|
+
__exportStar(require("./custom/data/csv-parser.action"), exports);
|
|
48
|
+
__exportStar(require("./custom/data/json-transform.action"), exports);
|
|
49
|
+
__exportStar(require("./custom/data/xml-parser.action"), exports);
|
|
50
|
+
__exportStar(require("./custom/data/aggregate-data.action"), exports);
|
|
51
|
+
__exportStar(require("./custom/data/data-mapper.action"), exports);
|
|
52
|
+
// File Operation Actions
|
|
53
|
+
__exportStar(require("./custom/files/pdf-generator.action"), exports);
|
|
54
|
+
__exportStar(require("./custom/files/pdf-extractor.action"), exports);
|
|
55
|
+
__exportStar(require("./custom/files/excel-reader.action"), exports);
|
|
56
|
+
__exportStar(require("./custom/files/excel-writer.action"), exports);
|
|
57
|
+
__exportStar(require("./custom/files/file-compress.action"), exports);
|
|
58
|
+
// Integration Actions
|
|
59
|
+
__exportStar(require("./custom/integration/http-request.action"), exports);
|
|
60
|
+
__exportStar(require("./custom/integration/graphql-query.action"), exports);
|
|
61
|
+
__exportStar(require("./custom/integration/oauth-flow.action"), exports);
|
|
62
|
+
__exportStar(require("./custom/integration/api-rate-limiter.action"), exports);
|
|
63
|
+
// Security Actions
|
|
64
|
+
__exportStar(require("./custom/security/password-strength.action"), exports);
|
|
65
|
+
// Workflow Control Actions
|
|
66
|
+
__exportStar(require("./custom/workflow/conditional.action"), exports);
|
|
67
|
+
__exportStar(require("./custom/workflow/loop.action"), exports);
|
|
68
|
+
__exportStar(require("./custom/workflow/parallel-execute.action"), exports);
|
|
69
|
+
__exportStar(require("./custom/workflow/retry.action"), exports);
|
|
70
|
+
__exportStar(require("./custom/workflow/delay.action"), exports);
|
|
71
|
+
// AI Actions
|
|
72
|
+
__exportStar(require("./custom/ai/execute-ai-prompt.action"), exports);
|
|
44
73
|
// Import Load functions to prevent tree shaking of @RegisterClass decorators
|
|
45
74
|
const send_single_message_action_1 = require("./custom/communication/send-single-message.action");
|
|
75
|
+
const slack_webhook_action_1 = require("./custom/communication/slack-webhook.action");
|
|
76
|
+
const teams_webhook_action_1 = require("./custom/communication/teams-webhook.action");
|
|
46
77
|
const create_record_action_1 = require("./custom/crud/create-record.action");
|
|
47
78
|
const get_record_action_1 = require("./custom/crud/get-record.action");
|
|
48
79
|
const update_record_action_1 = require("./custom/crud/update-record.action");
|
|
@@ -63,9 +94,32 @@ const web_search_action_1 = require("./custom/web/web-search.action");
|
|
|
63
94
|
const web_page_content_action_1 = require("./custom/web/web-page-content.action");
|
|
64
95
|
const url_link_validator_action_1 = require("./custom/web/url-link-validator.action");
|
|
65
96
|
const url_metadata_extractor_action_1 = require("./custom/web/url-metadata-extractor.action");
|
|
97
|
+
const csv_parser_action_1 = require("./custom/data/csv-parser.action");
|
|
98
|
+
const json_transform_action_1 = require("./custom/data/json-transform.action");
|
|
99
|
+
const xml_parser_action_1 = require("./custom/data/xml-parser.action");
|
|
100
|
+
const aggregate_data_action_1 = require("./custom/data/aggregate-data.action");
|
|
101
|
+
const data_mapper_action_1 = require("./custom/data/data-mapper.action");
|
|
102
|
+
const pdf_generator_action_1 = require("./custom/files/pdf-generator.action");
|
|
103
|
+
const pdf_extractor_action_1 = require("./custom/files/pdf-extractor.action");
|
|
104
|
+
const excel_reader_action_1 = require("./custom/files/excel-reader.action");
|
|
105
|
+
const excel_writer_action_1 = require("./custom/files/excel-writer.action");
|
|
106
|
+
const file_compress_action_1 = require("./custom/files/file-compress.action");
|
|
107
|
+
const http_request_action_1 = require("./custom/integration/http-request.action");
|
|
108
|
+
const graphql_query_action_1 = require("./custom/integration/graphql-query.action");
|
|
109
|
+
const oauth_flow_action_1 = require("./custom/integration/oauth-flow.action");
|
|
110
|
+
const api_rate_limiter_action_1 = require("./custom/integration/api-rate-limiter.action");
|
|
111
|
+
const password_strength_action_1 = require("./custom/security/password-strength.action");
|
|
112
|
+
const conditional_action_1 = require("./custom/workflow/conditional.action");
|
|
113
|
+
const loop_action_1 = require("./custom/workflow/loop.action");
|
|
114
|
+
const parallel_execute_action_1 = require("./custom/workflow/parallel-execute.action");
|
|
115
|
+
const retry_action_1 = require("./custom/workflow/retry.action");
|
|
116
|
+
const delay_action_1 = require("./custom/workflow/delay.action");
|
|
117
|
+
const execute_ai_prompt_action_1 = require("./custom/ai/execute-ai-prompt.action");
|
|
66
118
|
// Call all Load functions to ensure @RegisterClass decorators execute
|
|
67
119
|
// This prevents tree shaking from removing the action classes
|
|
68
120
|
(0, send_single_message_action_1.LoadSendSingleMessageAction)();
|
|
121
|
+
(0, slack_webhook_action_1.LoadSlackWebhookAction)();
|
|
122
|
+
(0, teams_webhook_action_1.LoadTeamsWebhookAction)();
|
|
69
123
|
(0, create_record_action_1.LoadCreateRecordAction)();
|
|
70
124
|
(0, get_record_action_1.LoadGetRecordAction)();
|
|
71
125
|
(0, update_record_action_1.LoadUpdateRecordAction)();
|
|
@@ -86,4 +140,25 @@ const url_metadata_extractor_action_1 = require("./custom/web/url-metadata-extra
|
|
|
86
140
|
(0, web_page_content_action_1.LoadWebPageContentAction)();
|
|
87
141
|
(0, url_link_validator_action_1.LoadURLLinkValidatorAction)();
|
|
88
142
|
(0, url_metadata_extractor_action_1.LoadURLMetadataExtractorAction)();
|
|
143
|
+
(0, csv_parser_action_1.LoadCSVParserAction)();
|
|
144
|
+
(0, json_transform_action_1.LoadJSONTransformAction)();
|
|
145
|
+
(0, xml_parser_action_1.LoadXMLParserAction)();
|
|
146
|
+
(0, aggregate_data_action_1.LoadAggregateDataAction)();
|
|
147
|
+
(0, data_mapper_action_1.LoadDataMapperAction)();
|
|
148
|
+
(0, pdf_generator_action_1.LoadPDFGeneratorAction)();
|
|
149
|
+
(0, pdf_extractor_action_1.LoadPDFExtractorAction)();
|
|
150
|
+
(0, excel_reader_action_1.LoadExcelReaderAction)();
|
|
151
|
+
(0, excel_writer_action_1.LoadExcelWriterAction)();
|
|
152
|
+
(0, file_compress_action_1.LoadFileCompressAction)();
|
|
153
|
+
(0, http_request_action_1.LoadHTTPRequestAction)();
|
|
154
|
+
(0, graphql_query_action_1.LoadGraphQLQueryAction)();
|
|
155
|
+
(0, oauth_flow_action_1.LoadOAuthFlowAction)();
|
|
156
|
+
(0, api_rate_limiter_action_1.LoadAPIRateLimiterAction)();
|
|
157
|
+
(0, password_strength_action_1.LoadPasswordStrengthAction)();
|
|
158
|
+
(0, conditional_action_1.LoadConditionalAction)();
|
|
159
|
+
(0, loop_action_1.LoadLoopAction)();
|
|
160
|
+
(0, parallel_execute_action_1.LoadParallelExecuteAction)();
|
|
161
|
+
(0, retry_action_1.LoadRetryAction)();
|
|
162
|
+
(0, delay_action_1.LoadDelayAction)();
|
|
163
|
+
(0, execute_ai_prompt_action_1.LoadExecuteAIPromptAction)();
|
|
89
164
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gEAA8C;AAE9C,wBAAwB;AACxB,oFAAkE;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|