@emmvish/stable-request 1.9.0 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. package/README.md +1309 -1595
  2. package/dist/core/index.d.ts +1 -0
  3. package/dist/core/index.d.ts.map +1 -1
  4. package/dist/core/index.js +1 -0
  5. package/dist/core/index.js.map +1 -1
  6. package/dist/core/stable-api-gateway.d.ts +3 -2
  7. package/dist/core/stable-api-gateway.d.ts.map +1 -1
  8. package/dist/core/stable-api-gateway.js +33 -8
  9. package/dist/core/stable-api-gateway.js.map +1 -1
  10. package/dist/core/stable-function.d.ts +3 -0
  11. package/dist/core/stable-function.d.ts.map +1 -0
  12. package/dist/core/stable-function.js +280 -0
  13. package/dist/core/stable-function.js.map +1 -0
  14. package/dist/core/stable-request.d.ts.map +1 -1
  15. package/dist/core/stable-request.js +4 -4
  16. package/dist/core/stable-request.js.map +1 -1
  17. package/dist/core/stable-workflow.d.ts.map +1 -1
  18. package/dist/core/stable-workflow.js +3 -2
  19. package/dist/core/stable-workflow.js.map +1 -1
  20. package/dist/enums/index.d.ts +4 -0
  21. package/dist/enums/index.d.ts.map +1 -1
  22. package/dist/enums/index.js +5 -0
  23. package/dist/enums/index.js.map +1 -1
  24. package/dist/index.d.ts +4 -4
  25. package/dist/index.d.ts.map +1 -1
  26. package/dist/index.js +3 -3
  27. package/dist/index.js.map +1 -1
  28. package/dist/types/index.d.ts +154 -2
  29. package/dist/types/index.d.ts.map +1 -1
  30. package/dist/utilities/circuit-breaker.js +1 -1
  31. package/dist/utilities/circuit-breaker.js.map +1 -1
  32. package/dist/utilities/execute-concurrently.d.ts +2 -2
  33. package/dist/utilities/execute-concurrently.d.ts.map +1 -1
  34. package/dist/utilities/execute-concurrently.js +39 -62
  35. package/dist/utilities/execute-concurrently.js.map +1 -1
  36. package/dist/utilities/execute-gateway-item.d.ts +6 -0
  37. package/dist/utilities/execute-gateway-item.d.ts.map +1 -0
  38. package/dist/utilities/execute-gateway-item.js +117 -0
  39. package/dist/utilities/execute-gateway-item.js.map +1 -0
  40. package/dist/utilities/execute-non-linear-workflow.js +3 -3
  41. package/dist/utilities/execute-non-linear-workflow.js.map +1 -1
  42. package/dist/utilities/execute-phase.d.ts.map +1 -1
  43. package/dist/utilities/execute-phase.js +15 -1
  44. package/dist/utilities/execute-phase.js.map +1 -1
  45. package/dist/utilities/execute-sequentially.d.ts +2 -2
  46. package/dist/utilities/execute-sequentially.d.ts.map +1 -1
  47. package/dist/utilities/execute-sequentially.js +27 -42
  48. package/dist/utilities/execute-sequentially.js.map +1 -1
  49. package/dist/utilities/execute-workflow-graph.d.ts.map +1 -1
  50. package/dist/utilities/execute-workflow-graph.js +103 -63
  51. package/dist/utilities/execute-workflow-graph.js.map +1 -1
  52. package/dist/utilities/fn-exec.d.ts +3 -0
  53. package/dist/utilities/fn-exec.d.ts.map +1 -0
  54. package/dist/utilities/fn-exec.js +66 -0
  55. package/dist/utilities/fn-exec.js.map +1 -0
  56. package/dist/utilities/function-cache-manager.d.ts +30 -0
  57. package/dist/utilities/function-cache-manager.d.ts.map +1 -0
  58. package/dist/utilities/function-cache-manager.js +106 -0
  59. package/dist/utilities/function-cache-manager.js.map +1 -0
  60. package/dist/utilities/index.d.ts +4 -0
  61. package/dist/utilities/index.d.ts.map +1 -1
  62. package/dist/utilities/index.js +4 -0
  63. package/dist/utilities/index.js.map +1 -1
  64. package/dist/utilities/metrics-aggregator.d.ts +4 -0
  65. package/dist/utilities/metrics-aggregator.d.ts.map +1 -1
  66. package/dist/utilities/metrics-aggregator.js +29 -0
  67. package/dist/utilities/metrics-aggregator.js.map +1 -1
  68. package/dist/utilities/prepare-api-function-options.d.ts +3 -0
  69. package/dist/utilities/prepare-api-function-options.d.ts.map +1 -0
  70. package/dist/utilities/prepare-api-function-options.js +50 -0
  71. package/dist/utilities/prepare-api-function-options.js.map +1 -0
  72. package/dist/utilities/req-fn.js +2 -2
  73. package/dist/utilities/req-fn.js.map +1 -1
  74. package/dist/utilities/validate-workflow-graph.d.ts +0 -3
  75. package/dist/utilities/validate-workflow-graph.d.ts.map +1 -1
  76. package/dist/utilities/validate-workflow-graph.js +9 -7
  77. package/dist/utilities/validate-workflow-graph.js.map +1 -1
  78. package/package.json +2 -2
@@ -1,61 +1,46 @@
1
- import { stableRequest } from "../core/index.js";
2
- import { prepareApiRequestData } from "./prepare-api-request-data.js";
3
- import { prepareApiRequestOptions } from './prepare-api-request-options.js';
1
+ import { executeGatewayItem } from "./execute-gateway-item.js";
2
+ import { RequestOrFunction } from "../enums/index.js";
4
3
  import { CircuitBreaker, CircuitBreakerOpenError } from "./circuit-breaker.js";
5
- export async function executeSequentially(requests = [], requestExecutionOptions = {}) {
4
+ export async function executeSequentially(items = [], requestExecutionOptions = {}) {
6
5
  const responses = [];
7
6
  const circuitBreaker = requestExecutionOptions.circuitBreaker
8
7
  ? (requestExecutionOptions.circuitBreaker instanceof CircuitBreaker
9
8
  ? requestExecutionOptions.circuitBreaker
10
9
  : new CircuitBreaker(requestExecutionOptions.circuitBreaker))
11
10
  : null;
12
- for (let i = 0; i < requests.length; i++) {
13
- const req = requests[i];
14
- try {
15
- if (circuitBreaker && !circuitBreaker.getState().config.trackIndividualAttempts) {
16
- const canExecute = await circuitBreaker.canExecute();
17
- if (!canExecute) {
18
- throw new CircuitBreakerOpenError(`stable-request: Circuit breaker is ${circuitBreaker.getState().state}. Request blocked.`);
19
- }
20
- }
21
- const finalRequestOptions = {
22
- reqData: prepareApiRequestData(req, requestExecutionOptions),
23
- ...prepareApiRequestOptions(req, requestExecutionOptions),
24
- commonBuffer: requestExecutionOptions.sharedBuffer ?? req.requestOptions.commonBuffer,
25
- ...(circuitBreaker ? { circuitBreaker } : {}),
26
- executionContext: {
27
- ...requestExecutionOptions.executionContext,
28
- requestId: req.id
29
- }
11
+ // Convert to unified format if needed
12
+ const unifiedItems = items.map(item => {
13
+ if ('type' in item) {
14
+ return item;
15
+ }
16
+ else {
17
+ return {
18
+ type: RequestOrFunction.REQUEST,
19
+ request: item
30
20
  };
31
- const requestResult = await stableRequest(finalRequestOptions);
32
- if (circuitBreaker && !circuitBreaker.getState().config.trackIndividualAttempts) {
33
- circuitBreaker.recordSuccess();
21
+ }
22
+ });
23
+ for (let i = 0; i < unifiedItems.length; i++) {
24
+ const item = unifiedItems[i];
25
+ try {
26
+ const response = await executeGatewayItem(item, requestExecutionOptions, circuitBreaker);
27
+ responses.push(response);
28
+ if (!response.success && requestExecutionOptions.stopOnFirstError) {
29
+ break;
34
30
  }
35
- responses.push({
36
- requestId: req.id,
37
- ...(req.groupId && { groupId: req.groupId }),
38
- success: requestResult.success,
39
- ...(requestResult.data !== undefined && { data: requestResult.data }),
40
- ...(!requestResult.success && {
41
- error: requestResult.error || 'Request was unsuccessful, but the error was analyzed successfully!'
42
- })
43
- });
44
31
  }
45
32
  catch (error) {
46
- if (circuitBreaker &&
47
- !(error instanceof CircuitBreakerOpenError) &&
48
- !circuitBreaker.getState().config.trackIndividualAttempts) {
49
- circuitBreaker.recordFailure();
50
- }
33
+ const itemId = item.type === RequestOrFunction.REQUEST ? item.request.id : item.function.id;
34
+ const groupId = item.type === RequestOrFunction.REQUEST ? item.request.groupId : item.function.groupId;
51
35
  const isCircuitBreakerError = error instanceof CircuitBreakerOpenError;
52
36
  responses.push({
53
- requestId: req.id,
54
- ...(req.groupId && { groupId: req.groupId }),
37
+ requestId: itemId,
38
+ ...(groupId && { groupId }),
55
39
  success: false,
56
40
  error: isCircuitBreakerError
57
41
  ? `Circuit breaker open: ${error.message}`
58
- : (error?.message || 'An error occurred! Error description is unavailable.')
42
+ : (error?.message || 'An error occurred! Error description is unavailable.'),
43
+ type: item.type
59
44
  });
60
45
  if (requestExecutionOptions.stopOnFirstError) {
61
46
  break;
@@ -1 +1 @@
1
- {"version":3,"file":"execute-sequentially.js","sourceRoot":"","sources":["../../src/utilities/execute-sequentially.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"execute-sequentially.js","sourceRoot":"","sources":["../../src/utilities/execute-sequentially.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAOtD,OAAO,EAAE,cAAc,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAE/E,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACrC,QAAsI,EAAE,EACxI,0BAAmG,EAAE;IAErG,MAAM,SAAS,GAA6C,EAAE,CAAC;IAE/D,MAAM,cAAc,GAAG,uBAAuB,CAAC,cAAc;QACzD,CAAC,CAAC,CAAC,uBAAuB,CAAC,cAAc,YAAY,cAAc;YAC/D,CAAC,CAAC,uBAAuB,CAAC,cAAc;YACxC,CAAC,CAAC,IAAI,cAAc,CAAC,uBAAuB,CAAC,cAAqB,CAAC,CAAC;QACxE,CAAC,CAAC,IAAI,CAAC;IAEX,sCAAsC;IACtC,MAAM,YAAY,GAAsE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;QACrG,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;YACjB,OAAO,IAAuE,CAAC;QACnF,CAAC;aAAM,CAAC;YACJ,OAAO;gBACH,IAAI,EAAE,iBAAiB,CAAC,OAAO;gBAC/B,OAAO,EAAE,IAA8D;aAC1E,CAAC;QACN,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3C,MAAM,IAAI,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;QAE7B,IAAI,CAAC;YACD,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,IAAI,EAAE,uBAAuB,EAAE,cAAc,CAAC,CAAC;YACzF,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAEzB,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,uBAAuB,CAAC,gBAAgB,EAAE,CAAC;gBAChE,MAAM;YACV,CAAC;QACL,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YAClB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,KAAK,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5F,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,KAAK,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;YACvG,MAAM,qBAAqB,GAAG,KAAK,YAAY,uBAAuB,CAAC;YAEvE,SAAS,CAAC,IAAI,CAAC;gBACX,SAAS,EAAE,MAAM;gBACjB,GAAG,CAAC,OAAO,IAAI,EAAE,OAAO,EAAE,CAAC;gBAC3B,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,qBAAqB;oBACxB,CAAC,CAAC,yBAAyB,KAAK,CAAC,OAAO,EAAE;oBAC1C,CAAC,CAAC,CAAC,KAAK,EAAE,OAAO,IAAI,sDAAsD,CAAC;gBAChF,IAAI,EAAE,IAAI,CAAC,IAAI;aAClB,CAAC,CAAC;YAEH,IAAI,uBAAuB,CAAC,gBAAgB,EAAE,CAAC;gBAC3C,MAAM;YACV,CAAC;QACL,CAAC;IACL,CAAC;IAED,OAAO,SAAS,CAAC;AACrB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"execute-workflow-graph.d.ts","sourceRoot":"","sources":["../../src/utilities/execute-workflow-graph.ts"],"names":[],"mappings":"AACA,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,sBAAsB,EAIvB,MAAM,mBAAmB,CAAC;AAS3B,wBAAsB,oBAAoB,CAAC,eAAe,GAAG,GAAG,EAAE,gBAAgB,GAAG,GAAG,EACtF,KAAK,EAAE,aAAa,CAAC,eAAe,EAAE,gBAAgB,CAAC,EACvD,OAAO,EAAE,oBAAoB,CAAC,eAAe,EAAE,gBAAgB,CAAC,GAC/D,OAAO,CAAC,sBAAsB,CAAC,gBAAgB,CAAC,CAAC,CA4VnD"}
1
+ {"version":3,"file":"execute-workflow-graph.d.ts","sourceRoot":"","sources":["../../src/utilities/execute-workflow-graph.ts"],"names":[],"mappings":"AACA,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,sBAAsB,EAIvB,MAAM,mBAAmB,CAAC;AAS3B,wBAAsB,oBAAoB,CAAC,eAAe,GAAG,GAAG,EAAE,gBAAgB,GAAG,GAAG,EACtF,KAAK,EAAE,aAAa,CAAC,eAAe,EAAE,gBAAgB,CAAC,EACvD,OAAO,EAAE,oBAAoB,CAAC,eAAe,EAAE,gBAAgB,CAAC,GAC/D,OAAO,CAAC,sBAAsB,CAAC,gBAAgB,CAAC,CAAC,CAqZnD"}
@@ -37,7 +37,7 @@ export async function executeWorkflowGraph(graph, options) {
37
37
  }
38
38
  const node = graph.nodes.get(nodeId);
39
39
  if (!node) {
40
- throw new Error(`Node '${nodeId}' not found in graph`);
40
+ throw new Error(`${formatLogContext({ workflowId })}Node '${nodeId}' not found in graph`);
41
41
  }
42
42
  if (node.type === WorkflowNodeTypes.MERGE_POINT && node.waitForNodes) {
43
43
  if (!areDependenciesSatisfied(nodeId, node.waitForNodes)) {
@@ -107,76 +107,116 @@ export async function executeWorkflowGraph(graph, options) {
107
107
  };
108
108
  const executePhaseNode = async (node, nodeId) => {
109
109
  if (!node.phase) {
110
- throw new Error(`Phase node '${nodeId}' has no phase configuration`);
110
+ throw new Error(`${formatLogContext({ workflowId })}Phase node '${nodeId}' has no phase configuration`);
111
111
  }
112
112
  const phaseIndex = phaseResults.length;
113
113
  const phaseId = node.phase.id || nodeId;
114
- try {
115
- let phase = node.phase;
116
- if (options.prePhaseExecutionHook) {
117
- phase = await executeWithPersistence(options.prePhaseExecutionHook, {
118
- phase,
114
+ let executionNumber = 1;
115
+ let shouldReplay = false;
116
+ do {
117
+ try {
118
+ let phase = node.phase;
119
+ if (options.prePhaseExecutionHook) {
120
+ phase = await executeWithPersistence(options.prePhaseExecutionHook, {
121
+ phase,
122
+ phaseId,
123
+ phaseIndex,
124
+ workflowId,
125
+ sharedBuffer,
126
+ params: options.workflowHookParams?.prePhaseExecutionHookParams
127
+ }, options.statePersistence, { workflowId, phaseId }, sharedBuffer);
128
+ }
129
+ const phaseResult = await executePhase(phase, phaseIndex, workflowId, options, options.requestGroups || [], options.logPhaseResults || false, options.handlePhaseCompletion || (async () => { }), options.maxSerializableChars || 1000, options.workflowHookParams || {}, sharedBuffer, undefined, options.prePhaseExecutionHook);
130
+ results.set(nodeId, phaseResult);
131
+ phaseResults.push(phaseResult);
132
+ totalRequests += phaseResult.totalRequests;
133
+ successfulRequests += phaseResult.successfulRequests;
134
+ failedRequests += phaseResult.failedRequests;
135
+ const executionRecord = {
119
136
  phaseId,
120
137
  phaseIndex,
121
- workflowId,
122
- sharedBuffer,
123
- params: options.workflowHookParams?.prePhaseExecutionHookParams
124
- }, options.statePersistence, { workflowId, phaseId }, sharedBuffer);
138
+ executionNumber,
139
+ timestamp: phaseResult.timestamp,
140
+ success: phaseResult.success,
141
+ executionTime: phaseResult.executionTime
142
+ };
143
+ shouldReplay = false;
144
+ if (node.phaseDecisionHook) {
145
+ const decision = await executeWithPersistence(node.phaseDecisionHook, {
146
+ workflowId,
147
+ phaseResult,
148
+ phaseId,
149
+ phaseIndex,
150
+ executionHistory,
151
+ sharedBuffer,
152
+ params: options.workflowHookParams?.handlePhaseDecisionParams
153
+ }, options.statePersistence, { workflowId, phaseId }, sharedBuffer);
154
+ executionRecord.decision = decision;
155
+ if (decision.action === 'replay') {
156
+ shouldReplay = true;
157
+ executionNumber++;
158
+ if (options.logPhaseResults) {
159
+ console.info(`${formatLogContext({ workflowId, phaseId })}stable-request: Phase decision - REPLAY (execution ${executionNumber})`);
160
+ }
161
+ }
162
+ else if (decision.action === 'terminate') {
163
+ terminatedEarly = true;
164
+ terminationReason = decision.reason || 'Phase decision hook requested termination';
165
+ if (options.logPhaseResults) {
166
+ console.info(`${formatLogContext({ workflowId, phaseId })}stable-request: Phase decision - TERMINATE: ${terminationReason}`);
167
+ }
168
+ }
169
+ }
170
+ executionHistory.push(executionRecord);
171
+ if (options.logPhaseResults) {
172
+ const logContext = formatLogContext({
173
+ workflowId,
174
+ phaseId
175
+ });
176
+ console.info(`${logContext}stable-request: Phase completed - Success: ${phaseResult.success}, Requests: ${phaseResult.totalRequests}`);
177
+ console.info(`${logContext}stable-request: ${safelyStringify(phaseResult, options.maxSerializableChars || 1000)}`);
178
+ }
179
+ if (options.handlePhaseCompletion) {
180
+ await executeWithPersistence(options.handlePhaseCompletion, {
181
+ phaseResult,
182
+ phaseId,
183
+ phaseIndex,
184
+ workflowId,
185
+ sharedBuffer,
186
+ params: options.workflowHookParams?.handlePhaseCompletionParams
187
+ }, options.statePersistence, { workflowId, phaseId }, sharedBuffer);
188
+ }
189
+ if (!phaseResult.success && options.stopOnFirstPhaseError) {
190
+ terminatedEarly = true;
191
+ terminationReason = `Phase '${phaseId}' failed`;
192
+ shouldReplay = false;
193
+ }
125
194
  }
126
- const phaseResult = await executePhase(phase, phaseIndex, workflowId, options, options.requestGroups || [], options.logPhaseResults || false, options.handlePhaseCompletion || (async () => { }), options.maxSerializableChars || 1000, options.workflowHookParams || {}, sharedBuffer, undefined, options.prePhaseExecutionHook);
127
- results.set(nodeId, phaseResult);
128
- phaseResults.push(phaseResult);
129
- totalRequests += phaseResult.totalRequests;
130
- successfulRequests += phaseResult.successfulRequests;
131
- failedRequests += phaseResult.failedRequests;
132
- executionHistory.push({
133
- phaseId,
134
- phaseIndex,
135
- executionNumber: 1,
136
- timestamp: phaseResult.timestamp,
137
- success: phaseResult.success,
138
- executionTime: phaseResult.executionTime
139
- });
140
- if (options.logPhaseResults) {
141
- const logContext = formatLogContext({
195
+ catch (error) {
196
+ const errorResult = {
142
197
  workflowId,
143
- phaseId
144
- });
145
- console.info(`${logContext}stable-request: Phase completed - Success: ${phaseResult.success}, Requests: ${phaseResult.totalRequests}`);
146
- console.info(`${logContext}stable-request: ${safelyStringify(phaseResult, options.maxSerializableChars || 1000)}`);
147
- }
148
- if (!phaseResult.success && options.stopOnFirstPhaseError) {
149
- terminatedEarly = true;
150
- terminationReason = `Phase '${phaseId}' failed`;
151
- return;
152
- }
153
- }
154
- catch (error) {
155
- const errorResult = {
156
- workflowId,
157
- phaseId,
158
- phaseIndex,
159
- success: false,
160
- executionTime: Date.now() - startTime,
161
- timestamp: new Date().toISOString(),
162
- totalRequests: 0,
163
- successfulRequests: 0,
164
- failedRequests: 0,
165
- responses: [],
166
- error: error.message || 'Unknown error'
167
- };
168
- results.set(nodeId, errorResult);
169
- phaseResults.push(errorResult);
170
- if (options.stopOnFirstPhaseError) {
198
+ phaseId,
199
+ phaseIndex,
200
+ success: false,
201
+ executionTime: Date.now() - startTime,
202
+ timestamp: new Date().toISOString(),
203
+ totalRequests: 0,
204
+ successfulRequests: 0,
205
+ failedRequests: 0,
206
+ responses: [],
207
+ error: error.message || 'Unknown error'
208
+ };
209
+ results.set(nodeId, errorResult);
210
+ phaseResults.push(errorResult);
171
211
  terminatedEarly = true;
172
- terminationReason = `Phase '${phaseId}' threw error: ${error.message}`;
173
- throw error;
212
+ terminationReason = error.message || `${formatLogContext({ workflowId })}stable-request: Unknown error during execution`;
213
+ shouldReplay = false;
174
214
  }
175
- }
215
+ } while (shouldReplay && !terminatedEarly);
176
216
  };
177
217
  const executeBranchNode = async (node, nodeId) => {
178
218
  if (!node.branch) {
179
- throw new Error(`Branch node '${nodeId}' has no branch configuration`);
219
+ throw new Error(`${formatLogContext({ workflowId })}Branch node '${nodeId}' has no branch configuration`);
180
220
  }
181
221
  const branchResult = await executeBranchWorkflow({
182
222
  branches: [node.branch],
@@ -220,7 +260,7 @@ export async function executeWorkflowGraph(graph, options) {
220
260
  };
221
261
  const executeConditionalNode = async (node, nodeId) => {
222
262
  if (!node.condition) {
223
- throw new Error(`Conditional node '${nodeId}' has no condition`);
263
+ throw new Error(`${formatLogContext({ workflowId })}Conditional node '${nodeId}' has no condition`);
224
264
  }
225
265
  visited.add(nodeId);
226
266
  const nextNodeId = await executeWithPersistence(node.condition.evaluate, {
@@ -236,12 +276,12 @@ export async function executeWorkflowGraph(graph, options) {
236
276
  await executeNode(nextNodeId);
237
277
  }
238
278
  else {
239
- throw new Error(`Conditional node '${nodeId}' evaluated to non-existent node '${nextNodeId}'`);
279
+ throw new Error(`${formatLogContext({ workflowId })}Conditional node '${nodeId}' evaluated to non-existent node '${nextNodeId}'`);
240
280
  }
241
281
  };
242
282
  const executeParallelGroupNode = async (node, nodeId) => {
243
283
  if (!node.parallelNodes || node.parallelNodes.length === 0) {
244
- throw new Error(`Parallel group node '${nodeId}' has no parallel nodes`);
284
+ throw new Error(`${formatLogContext({ workflowId })}Parallel group node '${nodeId}' has no parallel nodes`);
245
285
  }
246
286
  if (options.logPhaseResults) {
247
287
  console.info(`${formatLogContext({ workflowId })}stable-request: Starting parallel execution of: ${node.parallelNodes.join(', ')}`);
@@ -257,7 +297,7 @@ export async function executeWorkflowGraph(graph, options) {
257
297
  catch (error) {
258
298
  if (!terminatedEarly) {
259
299
  terminatedEarly = true;
260
- terminationReason = error.message || 'Unknown error during execution';
300
+ terminationReason = error.message || `${formatLogContext({ workflowId })}stable-request: Unknown error during execution`;
261
301
  }
262
302
  }
263
303
  const executionTime = Date.now() - startTime;
@@ -1 +1 @@
1
- {"version":3,"file":"execute-workflow-graph.js","sourceRoot":"","sources":["../../src/utilities/execute-workflow-graph.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAA;AASjF,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAEvE,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,KAAuD,EACvD,OAAgE;IAEhE,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,kBAAkB,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;IAExE,IAAI,OAAO,CAAC,aAAa,KAAK,KAAK,EAAE,CAAC;QACpC,MAAM,UAAU,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;QAChD,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,4BAA4B,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC9E,CAAC;QAED,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;YAC9D,OAAO,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,EAAE,UAAU,EAAE,CAAC,6CAA6C,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC/H,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,GAAG,EAA0D,CAAC;IAClF,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,MAAM,gBAAgB,GAA2B,EAAE,CAAC;IACpD,MAAM,YAAY,GAAqD,EAAE,CAAC;IAC1E,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,EAAE,CAAC;IAEhD,IAAI,aAAa,GAAG,CAAC,CAAC;IACtB,IAAI,kBAAkB,GAAG,CAAC,CAAC;IAC3B,IAAI,cAAc,GAAG,CAAC,CAAC;IACvB,IAAI,eAAe,GAAG,KAAK,CAAC;IAC5B,IAAI,iBAAqC,CAAC;IAE1C,MAAM,wBAAwB,GAAG,CAAC,MAAc,EAAE,YAAsB,EAAW,EAAE;QACnF,OAAO,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;IACzD,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,KAAK,EAAE,MAAc,EAAiB,EAAE;QAC1D,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,eAAe,EAAE,CAAC;YAC3C,OAAO;QACT,CAAC;QAED,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACrC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,SAAS,MAAM,sBAAsB,CAAC,CAAC;QACzD,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,KAAK,iBAAiB,CAAC,WAAW,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACrE,IAAI,CAAC,wBAAwB,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;gBACzD,OAAO;YACT,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAEpB,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;gBAC5B,OAAO,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,EAAE,UAAU,EAAE,CAAC,gCAAgC,MAAM,+BAA+B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACxJ,CAAC;YAED,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YAC5C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,IAAI,eAAe;oBAAE,MAAM;gBAC3B,MAAM,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC7B,CAAC;YACD,OAAO;QACT,CAAC;QAED,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,KAAK,iBAAiB,CAAC,KAAK;gBAC1B,MAAM,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;gBACrC,MAAM;YAER,KAAK,iBAAiB,CAAC,MAAM;gBAC3B,MAAM,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;gBACtC,MAAM;YAER,KAAK,iBAAiB,CAAC,WAAW;gBAChC,MAAM,sBAAsB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;gBAC3C,OAAO;YAET,KAAK,iBAAiB,CAAC,cAAc;gBACnC,MAAM,wBAAwB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;gBAC7C,MAAM;QACV,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAEpB,IAAI,eAAe,EAAE,CAAC;YACpB,OAAO;QACT,CAAC;QAED,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QAC5C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBACnB,IAAI,cAAc,GAAG,KAAK,CAAC;gBAE3B,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,0BAA0B,CAAC,MAAM,EAAE,CAAC;oBAC9D,cAAc,GAAG,IAAI,CAAC;gBACxB,CAAC;qBAAM,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,0BAA0B,CAAC,OAAO,EAAE,CAAC;oBACtE,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;oBACnC,cAAc,GAAG,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;gBAC5C,CAAC;qBAAM,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,0BAA0B,CAAC,OAAO,EAAE,CAAC;oBACtE,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;oBACnC,cAAc,GAAG,MAAM,EAAE,OAAO,KAAK,KAAK,CAAC;gBAC7C,CAAC;qBAAM,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,0BAA0B,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;oBAChG,cAAc,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;wBAC7C,OAAO;wBACP,YAAY;wBACZ,gBAAgB;wBAChB,aAAa,EAAE,MAAM;qBACtB,CAAC,CAAC;gBACL,CAAC;gBAED,IAAI,CAAC,cAAc,EAAE,CAAC;oBACpB,SAAS;gBACX,CAAC;YACH,CAAC;YAED,IAAI,eAAe;gBAAE,MAAM;YAC3B,MAAM,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,gBAAgB,GAAG,KAAK,EAAE,IAAqD,EAAE,MAAc,EAAiB,EAAE;QACtH,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,eAAe,MAAM,8BAA8B,CAAC,CAAC;QACvE,CAAC;QAED,MAAM,UAAU,GAAG,YAAY,CAAC,MAAM,CAAC;QACvC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,MAAM,CAAC;QAExC,IAAI,CAAC;YACH,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;YACvB,IAAI,OAAO,CAAC,qBAAqB,EAAE,CAAC;gBAClC,KAAK,GAAG,MAAM,sBAAsB,CAClC,OAAO,CAAC,qBAAqB,EAC7B;oBACE,KAAK;oBACL,OAAO;oBACP,UAAU;oBACV,UAAU;oBACV,YAAY;oBACZ,MAAM,EAAE,OAAO,CAAC,kBAAkB,EAAE,2BAA2B;iBAChE,EACD,OAAO,CAAC,gBAAgB,EACxB,EAAE,UAAU,EAAE,OAAO,EAAE,EACvB,YAAY,CACb,CAAC;YACJ,CAAC;YAED,MAAM,WAAW,GAAG,MAAM,YAAY,CACpC,KAAK,EACL,UAAU,EACV,UAAU,EACV,OAAO,EACP,OAAO,CAAC,aAAa,IAAI,EAAE,EAC3B,OAAO,CAAC,eAAe,IAAI,KAAK,EAChC,OAAO,CAAC,qBAAqB,IAAI,CAAC,KAAK,IAAI,EAAE,GAAE,CAAC,CAAC,EACjD,OAAO,CAAC,oBAAoB,IAAI,IAAI,EACpC,OAAO,CAAC,kBAAkB,IAAI,EAAE,EAChC,YAAY,EACZ,SAAS,EACT,OAAO,CAAC,qBAAqB,CAC9B,CAAC;YAEF,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;YACjC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAE/B,aAAa,IAAI,WAAW,CAAC,aAAa,CAAC;YAC3C,kBAAkB,IAAI,WAAW,CAAC,kBAAkB,CAAC;YACrD,cAAc,IAAI,WAAW,CAAC,cAAc,CAAC;YAE7C,gBAAgB,CAAC,IAAI,CAAC;gBACpB,OAAO;gBACP,UAAU;gBACV,eAAe,EAAE,CAAC;gBAClB,SAAS,EAAE,WAAW,CAAC,SAAS;gBAChC,OAAO,EAAE,WAAW,CAAC,OAAO;gBAC5B,aAAa,EAAE,WAAW,CAAC,aAAa;aACzC,CAAC,CAAC;YAEH,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;gBAC5B,MAAM,UAAU,GAAG,gBAAgB,CAAC;oBAClC,UAAU;oBACV,OAAO;iBACR,CAAC,CAAC;gBACH,OAAO,CAAC,IAAI,CAAC,GAAG,UAAU,8CAA8C,WAAW,CAAC,OAAO,eAAe,WAAW,CAAC,aAAa,EAAE,CAAC,CAAC;gBACvI,OAAO,CAAC,IAAI,CAAC,GAAG,UAAU,mBAAmB,eAAe,CAAC,WAAW,EAAE,OAAO,CAAC,oBAAoB,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC;YACrH,CAAC;YAED,IAAI,CAAC,WAAW,CAAC,OAAO,IAAI,OAAO,CAAC,qBAAqB,EAAE,CAAC;gBAC1D,eAAe,GAAG,IAAI,CAAC;gBACvB,iBAAiB,GAAG,UAAU,OAAO,UAAU,CAAC;gBAChD,OAAO;YACT,CAAC;QAEH,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,MAAM,WAAW,GAAmD;gBAClE,UAAU;gBACV,OAAO;gBACP,UAAU;gBACV,OAAO,EAAE,KAAK;gBACd,aAAa,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;gBACrC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACnC,aAAa,EAAE,CAAC;gBAChB,kBAAkB,EAAE,CAAC;gBACrB,cAAc,EAAE,CAAC;gBACjB,SAAS,EAAE,EAAE;gBACb,KAAK,EAAE,KAAK,CAAC,OAAO,IAAI,eAAe;aACxC,CAAC;YAEF,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;YACjC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAE/B,IAAI,OAAO,CAAC,qBAAqB,EAAE,CAAC;gBAClC,eAAe,GAAG,IAAI,CAAC;gBACvB,iBAAiB,GAAG,UAAU,OAAO,kBAAkB,KAAK,CAAC,OAAO,EAAE,CAAC;gBACvE,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,iBAAiB,GAAG,KAAK,EAAE,IAAqD,EAAE,MAAc,EAAiB,EAAE;QACvH,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,gBAAgB,MAAM,+BAA+B,CAAC,CAAC;QACzE,CAAC;QAED,MAAM,YAAY,GAAG,MAAM,qBAAqB,CAAC;YAC/C,QAAQ,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC;YACvB,UAAU;YACV,oBAAoB,EAAE,OAAO;YAC7B,aAAa,EAAE,OAAO,CAAC,aAAa,IAAI,EAAE;YAC1C,eAAe,EAAE,OAAO,CAAC,eAAe,IAAI,KAAK;YACjD,qBAAqB,EAAE,OAAO,CAAC,qBAAqB,IAAI,CAAC,KAAK,IAAI,EAAE,GAAE,CAAC,CAAC;YACxE,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,IAAI,CAAC,KAAK,IAAI,EAAE,GAAE,CAAC,CAAC;YAC9D,sBAAsB,EAAE,OAAO,CAAC,sBAAsB;YACtD,sBAAsB,EAAE,OAAO,CAAC,sBAAsB;YACtD,qBAAqB,EAAE,OAAO,CAAC,qBAAqB;YACpD,oBAAoB,EAAE,OAAO,CAAC,oBAAoB,IAAI,IAAI;YAC1D,kBAAkB,EAAE,OAAO,CAAC,kBAAkB,IAAI,EAAE;YACpD,YAAY;YACZ,qBAAqB,EAAE,OAAO,CAAC,qBAAqB,IAAI,KAAK;YAC7D,qBAAqB,EAAE,OAAO,CAAC,qBAAqB,IAAI,IAAI;SAC7D,CAAC,CAAC;QAEH,IAAI,YAAY,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1C,MAAM,MAAM,GAAG,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;YAE7C,MAAM,iBAAiB,GAAmD;gBACxE,UAAU;gBACV,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,OAAO,EAAE,UAAU,MAAM,CAAC,QAAQ,EAAE;gBACpC,UAAU,EAAE,YAAY,CAAC,MAAM;gBAC/B,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,aAAa,EAAE,MAAM,CAAC,aAAa;gBACnC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACnC,aAAa,EAAE,YAAY,CAAC,aAAa;gBACzC,kBAAkB,EAAE,YAAY,CAAC,kBAAkB;gBACnD,cAAc,EAAE,YAAY,CAAC,cAAc;gBAC3C,SAAS,EAAE,EAAE;aACd,CAAC;YAEF,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;YACvC,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAErC,aAAa,IAAI,YAAY,CAAC,aAAa,CAAC;YAC5C,kBAAkB,IAAI,YAAY,CAAC,kBAAkB,CAAC;YACtD,cAAc,IAAI,YAAY,CAAC,cAAc,CAAC;YAE9C,YAAY,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,eAAe,CAAC,CAAC;QACrD,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,sBAAsB,GAAG,KAAK,EAAE,IAAqD,EAAE,MAAc,EAAiB,EAAE;QAC5H,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,qBAAqB,MAAM,oBAAoB,CAAC,CAAC;QACnE,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAEpB,MAAM,UAAU,GAAG,MAAM,sBAAsB,CAC7C,IAAI,CAAC,SAAS,CAAC,QAAQ,EACvB;YACE,OAAO;YACP,YAAY;YACZ,gBAAgB;YAChB,aAAa,EAAE,MAAM;SACtB,EACD,OAAO,CAAC,gBAAgB,EACxB,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,EAC/B,YAAY,CACb,CAAC;QAEF,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;YAC5B,OAAO,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,gCAAgC,MAAM,mBAAmB,UAAU,EAAE,CAAC,CAAC;QAC1I,CAAC;QAED,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;YAChC,MAAM,WAAW,CAAC,UAAU,CAAC,CAAC;QAChC,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,qBAAqB,MAAM,qCAAqC,UAAU,GAAG,CAAC,CAAC;QACjG,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,wBAAwB,GAAG,KAAK,EAAE,IAAqD,EAAE,MAAc,EAAiB,EAAE;QAC9H,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3D,MAAM,IAAI,KAAK,CAAC,wBAAwB,MAAM,yBAAyB,CAAC,CAAC;QAC3E,CAAC;QAED,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;YAC5B,OAAO,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,EAAE,UAAU,EAAE,CAAC,mDAAmD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACtI,CAAC;QAED,MAAM,OAAO,CAAC,GAAG,CACf,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC,CACtE,CAAC;QAEF,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;YAC5B,OAAO,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,EAAE,UAAU,EAAE,CAAC,qDAAqD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACxI,CAAC;IACH,CAAC,CAAC;IAEF,IAAI,CAAC;QACH,MAAM,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IACtC,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,eAAe,GAAG,IAAI,CAAC;YACvB,iBAAiB,GAAG,KAAK,CAAC,OAAO,IAAI,gCAAgC,CAAC;QACxE,CAAC;IACH,CAAC;IAED,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;IAE7C,MAAM,MAAM,GAA6C;QACvD,UAAU;QACV,OAAO,EAAE,CAAC,eAAe,IAAI,cAAc,KAAK,CAAC;QACjD,aAAa;QACb,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,WAAW,EAAE,YAAY,CAAC,MAAM;QAChC,eAAe,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM;QAC3D,aAAa;QACb,kBAAkB;QAClB,cAAc;QACd,MAAM,EAAE,YAAY;QACpB,gBAAgB;QAChB,eAAe;QACf,iBAAiB;KAClB,CAAC;IAEF,IAAI,CAAC;QACH,MAAM,CAAC,OAAO,GAAG,iBAAiB,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC;IACpE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;IAEjB,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"execute-workflow-graph.js","sourceRoot":"","sources":["../../src/utilities/execute-workflow-graph.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAA;AASjF,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAEvE,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,KAAuD,EACvD,OAAgE;IAEhE,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,kBAAkB,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;IAExE,IAAI,OAAO,CAAC,aAAa,KAAK,KAAK,EAAE,CAAC;QACpC,MAAM,UAAU,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;QAChD,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,4BAA4B,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC9E,CAAC;QAED,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;YAC9D,OAAO,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,EAAE,UAAU,EAAE,CAAC,6CAA6C,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC/H,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,GAAG,EAA0D,CAAC;IAClF,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,MAAM,gBAAgB,GAA2B,EAAE,CAAC;IACpD,MAAM,YAAY,GAAqD,EAAE,CAAC;IAC1E,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,EAAE,CAAC;IAEhD,IAAI,aAAa,GAAG,CAAC,CAAC;IACtB,IAAI,kBAAkB,GAAG,CAAC,CAAC;IAC3B,IAAI,cAAc,GAAG,CAAC,CAAC;IACvB,IAAI,eAAe,GAAG,KAAK,CAAC;IAC5B,IAAI,iBAAqC,CAAC;IAE1C,MAAM,wBAAwB,GAAG,CAAC,MAAc,EAAE,YAAsB,EAAW,EAAE;QACnF,OAAO,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;IACzD,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,KAAK,EAAE,MAAc,EAAiB,EAAE;QAC1D,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,eAAe,EAAE,CAAC;YAC3C,OAAO;QACT,CAAC;QAED,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACrC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,GAAG,gBAAgB,CAAC,EAAE,UAAU,EAAE,CAAC,SAAS,MAAM,sBAAsB,CAAC,CAAC;QAC5F,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,KAAK,iBAAiB,CAAC,WAAW,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACrE,IAAI,CAAC,wBAAwB,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;gBACzD,OAAO;YACT,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAEpB,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;gBAC5B,OAAO,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,EAAE,UAAU,EAAE,CAAC,gCAAgC,MAAM,+BAA+B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACxJ,CAAC;YAED,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YAC5C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,IAAI,eAAe;oBAAE,MAAM;gBAC3B,MAAM,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC7B,CAAC;YACD,OAAO;QACT,CAAC;QAED,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,KAAK,iBAAiB,CAAC,KAAK;gBAC1B,MAAM,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;gBACrC,MAAM;YAER,KAAK,iBAAiB,CAAC,MAAM;gBAC3B,MAAM,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;gBACtC,MAAM;YAER,KAAK,iBAAiB,CAAC,WAAW;gBAChC,MAAM,sBAAsB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;gBAC3C,OAAO;YAET,KAAK,iBAAiB,CAAC,cAAc;gBACnC,MAAM,wBAAwB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;gBAC7C,MAAM;QACV,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAEpB,IAAI,eAAe,EAAE,CAAC;YACpB,OAAO;QACT,CAAC;QAED,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QAC5C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBACnB,IAAI,cAAc,GAAG,KAAK,CAAC;gBAE3B,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,0BAA0B,CAAC,MAAM,EAAE,CAAC;oBAC9D,cAAc,GAAG,IAAI,CAAC;gBACxB,CAAC;qBAAM,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,0BAA0B,CAAC,OAAO,EAAE,CAAC;oBACtE,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;oBACnC,cAAc,GAAG,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;gBAC5C,CAAC;qBAAM,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,0BAA0B,CAAC,OAAO,EAAE,CAAC;oBACtE,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;oBACnC,cAAc,GAAG,MAAM,EAAE,OAAO,KAAK,KAAK,CAAC;gBAC7C,CAAC;qBAAM,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,0BAA0B,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;oBAChG,cAAc,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;wBAC7C,OAAO;wBACP,YAAY;wBACZ,gBAAgB;wBAChB,aAAa,EAAE,MAAM;qBACtB,CAAC,CAAC;gBACL,CAAC;gBAED,IAAI,CAAC,cAAc,EAAE,CAAC;oBACpB,SAAS;gBACX,CAAC;YACH,CAAC;YAED,IAAI,eAAe;gBAAE,MAAM;YAC3B,MAAM,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,gBAAgB,GAAG,KAAK,EAAE,IAAqD,EAAE,MAAc,EAAiB,EAAE;QACtH,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,GAAG,gBAAgB,CAAC,EAAE,UAAU,EAAE,CAAC,eAAe,MAAM,8BAA8B,CAAC,CAAC;QAC1G,CAAC;QAED,MAAM,UAAU,GAAG,YAAY,CAAC,MAAM,CAAC;QACvC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,MAAM,CAAC;QACxC,IAAI,eAAe,GAAG,CAAC,CAAC;QACxB,IAAI,YAAY,GAAG,KAAK,CAAC;QAEzB,GAAG,CAAC;YACF,IAAI,CAAC;gBACH,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;gBACvB,IAAI,OAAO,CAAC,qBAAqB,EAAE,CAAC;oBAClC,KAAK,GAAG,MAAM,sBAAsB,CAClC,OAAO,CAAC,qBAAqB,EAC7B;wBACE,KAAK;wBACL,OAAO;wBACP,UAAU;wBACV,UAAU;wBACV,YAAY;wBACZ,MAAM,EAAE,OAAO,CAAC,kBAAkB,EAAE,2BAA2B;qBAChE,EACD,OAAO,CAAC,gBAAgB,EACxB,EAAE,UAAU,EAAE,OAAO,EAAE,EACvB,YAAY,CACb,CAAC;gBACJ,CAAC;gBAED,MAAM,WAAW,GAAG,MAAM,YAAY,CACpC,KAAK,EACL,UAAU,EACV,UAAU,EACV,OAAO,EACP,OAAO,CAAC,aAAa,IAAI,EAAE,EAC3B,OAAO,CAAC,eAAe,IAAI,KAAK,EAChC,OAAO,CAAC,qBAAqB,IAAI,CAAC,KAAK,IAAI,EAAE,GAAE,CAAC,CAAC,EACjD,OAAO,CAAC,oBAAoB,IAAI,IAAI,EACpC,OAAO,CAAC,kBAAkB,IAAI,EAAE,EAChC,YAAY,EACZ,SAAS,EACT,OAAO,CAAC,qBAAqB,CAC9B,CAAC;gBAEF,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;gBACjC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBAE/B,aAAa,IAAI,WAAW,CAAC,aAAa,CAAC;gBAC3C,kBAAkB,IAAI,WAAW,CAAC,kBAAkB,CAAC;gBACrD,cAAc,IAAI,WAAW,CAAC,cAAc,CAAC;gBAE7C,MAAM,eAAe,GAAyB;oBAC5C,OAAO;oBACP,UAAU;oBACV,eAAe;oBACf,SAAS,EAAE,WAAW,CAAC,SAAS;oBAChC,OAAO,EAAE,WAAW,CAAC,OAAO;oBAC5B,aAAa,EAAE,WAAW,CAAC,aAAa;iBACzC,CAAC;gBAEF,YAAY,GAAG,KAAK,CAAC;gBACrB,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;oBAC3B,MAAM,QAAQ,GAAG,MAAM,sBAAsB,CAC3C,IAAI,CAAC,iBAAiB,EACtB;wBACE,UAAU;wBACV,WAAW;wBACX,OAAO;wBACP,UAAU;wBACV,gBAAgB;wBAChB,YAAY;wBACZ,MAAM,EAAE,OAAO,CAAC,kBAAkB,EAAE,yBAAyB;qBAC9D,EACD,OAAO,CAAC,gBAAgB,EACxB,EAAE,UAAU,EAAE,OAAO,EAAE,EACvB,YAAY,CACb,CAAC;oBAEF,eAAe,CAAC,QAAQ,GAAG,QAAQ,CAAC;oBAEpC,IAAI,QAAQ,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;wBACjC,YAAY,GAAG,IAAI,CAAC;wBACpB,eAAe,EAAE,CAAC;wBAElB,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;4BAC5B,OAAO,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,sDAAsD,eAAe,GAAG,CAAC,CAAC;wBACrI,CAAC;oBACH,CAAC;yBAAM,IAAI,QAAQ,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;wBAC3C,eAAe,GAAG,IAAI,CAAC;wBACvB,iBAAiB,GAAG,QAAQ,CAAC,MAAM,IAAI,2CAA2C,CAAC;wBAEnF,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;4BAC5B,OAAO,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,+CAA+C,iBAAiB,EAAE,CAAC,CAAC;wBAC/H,CAAC;oBACH,CAAC;gBACH,CAAC;gBAED,gBAAgB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;gBAEvC,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;oBAC5B,MAAM,UAAU,GAAG,gBAAgB,CAAC;wBAClC,UAAU;wBACV,OAAO;qBACR,CAAC,CAAC;oBACH,OAAO,CAAC,IAAI,CAAC,GAAG,UAAU,8CAA8C,WAAW,CAAC,OAAO,eAAe,WAAW,CAAC,aAAa,EAAE,CAAC,CAAC;oBACvI,OAAO,CAAC,IAAI,CAAC,GAAG,UAAU,mBAAmB,eAAe,CAAC,WAAW,EAAE,OAAO,CAAC,oBAAoB,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC;gBACrH,CAAC;gBAED,IAAI,OAAO,CAAC,qBAAqB,EAAE,CAAC;oBAClC,MAAM,sBAAsB,CAC1B,OAAO,CAAC,qBAAqB,EAC7B;wBACE,WAAW;wBACX,OAAO;wBACP,UAAU;wBACV,UAAU;wBACV,YAAY;wBACZ,MAAM,EAAE,OAAO,CAAC,kBAAkB,EAAE,2BAA2B;qBAChE,EACD,OAAO,CAAC,gBAAgB,EACxB,EAAE,UAAU,EAAE,OAAO,EAAE,EACvB,YAAY,CACb,CAAC;gBACJ,CAAC;gBAED,IAAI,CAAC,WAAW,CAAC,OAAO,IAAI,OAAO,CAAC,qBAAqB,EAAE,CAAC;oBAC1D,eAAe,GAAG,IAAI,CAAC;oBACvB,iBAAiB,GAAG,UAAU,OAAO,UAAU,CAAC;oBAChD,YAAY,GAAG,KAAK,CAAC;gBACvB,CAAC;YACH,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,MAAM,WAAW,GAAmD;oBAClE,UAAU;oBACV,OAAO;oBACP,UAAU;oBACV,OAAO,EAAE,KAAK;oBACd,aAAa,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;oBACrC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;oBACnC,aAAa,EAAE,CAAC;oBAChB,kBAAkB,EAAE,CAAC;oBACrB,cAAc,EAAE,CAAC;oBACjB,SAAS,EAAE,EAAE;oBACb,KAAK,EAAE,KAAK,CAAC,OAAO,IAAI,eAAe;iBACxC,CAAC;gBAEF,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;gBACjC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBAE/B,eAAe,GAAG,IAAI,CAAC;gBACvB,iBAAiB,GAAG,KAAK,CAAC,OAAO,IAAI,GAAG,gBAAgB,CAAC,EAAE,UAAU,EAAE,CAAC,gDAAgD,CAAC;gBACzH,YAAY,GAAG,KAAK,CAAC;YACvB,CAAC;QACH,CAAC,QAAQ,YAAY,IAAI,CAAC,eAAe,EAAE;IAC7C,CAAC,CAAC;IAEF,MAAM,iBAAiB,GAAG,KAAK,EAAE,IAAqD,EAAE,MAAc,EAAiB,EAAE;QACvH,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,GAAG,gBAAgB,CAAC,EAAE,UAAU,EAAE,CAAC,gBAAgB,MAAM,+BAA+B,CAAC,CAAC;QAC5G,CAAC;QAED,MAAM,YAAY,GAAG,MAAM,qBAAqB,CAAC;YAC/C,QAAQ,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC;YACvB,UAAU;YACV,oBAAoB,EAAE,OAAO;YAC7B,aAAa,EAAE,OAAO,CAAC,aAAa,IAAI,EAAE;YAC1C,eAAe,EAAE,OAAO,CAAC,eAAe,IAAI,KAAK;YACjD,qBAAqB,EAAE,OAAO,CAAC,qBAAqB,IAAI,CAAC,KAAK,IAAI,EAAE,GAAE,CAAC,CAAC;YACxE,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,IAAI,CAAC,KAAK,IAAI,EAAE,GAAE,CAAC,CAAC;YAC9D,sBAAsB,EAAE,OAAO,CAAC,sBAAsB;YACtD,sBAAsB,EAAE,OAAO,CAAC,sBAAsB;YACtD,qBAAqB,EAAE,OAAO,CAAC,qBAAqB;YACpD,oBAAoB,EAAE,OAAO,CAAC,oBAAoB,IAAI,IAAI;YAC1D,kBAAkB,EAAE,OAAO,CAAC,kBAAkB,IAAI,EAAE;YACpD,YAAY;YACZ,qBAAqB,EAAE,OAAO,CAAC,qBAAqB,IAAI,KAAK;YAC7D,qBAAqB,EAAE,OAAO,CAAC,qBAAqB,IAAI,IAAI;SAC7D,CAAC,CAAC;QAEH,IAAI,YAAY,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1C,MAAM,MAAM,GAAG,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;YAE7C,MAAM,iBAAiB,GAAmD;gBACxE,UAAU;gBACV,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,OAAO,EAAE,UAAU,MAAM,CAAC,QAAQ,EAAE;gBACpC,UAAU,EAAE,YAAY,CAAC,MAAM;gBAC/B,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,aAAa,EAAE,MAAM,CAAC,aAAa;gBACnC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACnC,aAAa,EAAE,YAAY,CAAC,aAAa;gBACzC,kBAAkB,EAAE,YAAY,CAAC,kBAAkB;gBACnD,cAAc,EAAE,YAAY,CAAC,cAAc;gBAC3C,SAAS,EAAE,EAAE;aACd,CAAC;YAEF,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;YACvC,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAErC,aAAa,IAAI,YAAY,CAAC,aAAa,CAAC;YAC5C,kBAAkB,IAAI,YAAY,CAAC,kBAAkB,CAAC;YACtD,cAAc,IAAI,YAAY,CAAC,cAAc,CAAC;YAE9C,YAAY,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,eAAe,CAAC,CAAC;QACrD,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,sBAAsB,GAAG,KAAK,EAAE,IAAqD,EAAE,MAAc,EAAiB,EAAE;QAC5H,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,GAAG,gBAAgB,CAAC,EAAE,UAAU,EAAE,CAAC,qBAAqB,MAAM,oBAAoB,CAAC,CAAC;QACtG,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAEpB,MAAM,UAAU,GAAG,MAAM,sBAAsB,CAC7C,IAAI,CAAC,SAAS,CAAC,QAAQ,EACvB;YACE,OAAO;YACP,YAAY;YACZ,gBAAgB;YAChB,aAAa,EAAE,MAAM;SACtB,EACD,OAAO,CAAC,gBAAgB,EACxB,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,EAC/B,YAAY,CACb,CAAC;QAEF,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;YAC5B,OAAO,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,gCAAgC,MAAM,mBAAmB,UAAU,EAAE,CAAC,CAAC;QAC1I,CAAC;QAED,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;YAChC,MAAM,WAAW,CAAC,UAAU,CAAC,CAAC;QAChC,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,GAAG,gBAAgB,CAAC,EAAE,UAAU,EAAE,CAAC,qBAAqB,MAAM,qCAAqC,UAAU,GAAG,CAAC,CAAC;QACpI,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,wBAAwB,GAAG,KAAK,EAAE,IAAqD,EAAE,MAAc,EAAiB,EAAE;QAC9H,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3D,MAAM,IAAI,KAAK,CAAC,GAAG,gBAAgB,CAAC,EAAE,UAAU,EAAE,CAAC,wBAAwB,MAAM,yBAAyB,CAAC,CAAC;QAC9G,CAAC;QAED,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;YAC5B,OAAO,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,EAAE,UAAU,EAAE,CAAC,mDAAmD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACtI,CAAC;QAED,MAAM,OAAO,CAAC,GAAG,CACf,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC,CACtE,CAAC;QAEF,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;YAC5B,OAAO,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,EAAE,UAAU,EAAE,CAAC,qDAAqD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACxI,CAAC;IACH,CAAC,CAAC;IAEF,IAAI,CAAC;QACH,MAAM,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IACtC,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,eAAe,GAAG,IAAI,CAAC;YACvB,iBAAiB,GAAG,KAAK,CAAC,OAAO,IAAI,GAAG,gBAAgB,CAAC,EAAE,UAAU,EAAE,CAAC,gDAAgD,CAAC;QAC3H,CAAC;IACH,CAAC;IAED,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;IAE7C,MAAM,MAAM,GAA6C;QACvD,UAAU;QACV,OAAO,EAAE,CAAC,eAAe,IAAI,cAAc,KAAK,CAAC;QACjD,aAAa;QACb,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,WAAW,EAAE,YAAY,CAAC,MAAM;QAChC,eAAe,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM;QAC3D,aAAa;QACb,kBAAkB;QAClB,cAAc;QACd,MAAM,EAAE,YAAY;QACpB,gBAAgB;QAChB,eAAe;QACf,iBAAiB;KAClB,CAAC;IAEF,IAAI,CAAC;QACH,MAAM,CAAC,OAAO,GAAG,iBAAiB,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC;IACpE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;IAEjB,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { FnExecResponse, TRIAL_MODE_OPTIONS, FunctionCacheConfig, ExecutionContext } from '../types/index.js';
2
+ export declare function fnExec<TArgs extends any[] = any[], TReturn = any>(fn: (...args: TArgs) => TReturn | Promise<TReturn>, args: TArgs, returnResult?: boolean, maxSerializableChars?: number, trialMode?: TRIAL_MODE_OPTIONS, cacheConfig?: FunctionCacheConfig<TArgs, TReturn>, executionContext?: ExecutionContext): Promise<FnExecResponse<TReturn>>;
3
+ //# sourceMappingURL=fn-exec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fn-exec.d.ts","sourceRoot":"","sources":["../../src/utilities/fn-exec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAK9G,wBAAsB,MAAM,CAAC,KAAK,SAAS,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,OAAO,GAAG,GAAG,EACrE,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,EAClD,IAAI,EAAE,KAAK,EACX,YAAY,UAAQ,EACpB,oBAAoB,SAAO,EAC3B,SAAS,GAAE,kBAAuC,EAClD,WAAW,CAAC,EAAE,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC,EACjD,gBAAgB,CAAC,EAAE,gBAAgB,GAClC,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAsElC"}
@@ -0,0 +1,66 @@
1
+ import { safelyStringify } from './safely-stringify.js';
2
+ import { getGlobalFunctionCacheManager } from './function-cache-manager.js';
3
+ import { formatLogContext } from './format-log-context.js';
4
+ export async function fnExec(fn, args, returnResult = false, maxSerializableChars = 1000, trialMode = { enabled: false }, cacheConfig, executionContext) {
5
+ const startTime = Date.now();
6
+ let stopTime = 0;
7
+ const timestamp = new Date(startTime).toISOString();
8
+ let cacheManager = null;
9
+ if (cacheConfig?.enabled) {
10
+ cacheManager = getGlobalFunctionCacheManager(cacheConfig);
11
+ const cached = cacheManager.get(fn, args);
12
+ if (cached) {
13
+ return {
14
+ ok: true,
15
+ isRetryable: true,
16
+ data: returnResult ? cached.data : undefined,
17
+ timestamp: new Date(cached.timestamp).toISOString(),
18
+ executionTime: 0,
19
+ fromCache: true
20
+ };
21
+ }
22
+ }
23
+ try {
24
+ if (trialMode.enabled) {
25
+ const trialCondition = Math.random() <= (trialMode?.reqFailureProbability ?? 0);
26
+ if (trialCondition) {
27
+ console.error(`${formatLogContext(executionContext)}stable-request: Function execution failed in trial mode.\nFunction: ${fn.name || 'anonymous'}\nArgs:\n`, safelyStringify(args, maxSerializableChars));
28
+ throw new Error(`${formatLogContext(executionContext)}stable-request: Function execution failed in trial mode.`);
29
+ }
30
+ else {
31
+ stopTime = Date.now();
32
+ return {
33
+ ok: true,
34
+ isRetryable: true,
35
+ data: returnResult ? { trialMode } : undefined,
36
+ timestamp,
37
+ executionTime: stopTime - startTime
38
+ };
39
+ }
40
+ }
41
+ const result = await fn(...args);
42
+ stopTime = Date.now();
43
+ if (cacheManager) {
44
+ cacheManager.set(fn, args, result);
45
+ }
46
+ return {
47
+ ok: true,
48
+ isRetryable: true,
49
+ data: returnResult ? result : undefined,
50
+ timestamp,
51
+ executionTime: stopTime - startTime
52
+ };
53
+ }
54
+ catch (error) {
55
+ stopTime = Date.now();
56
+ const executionTime = stopTime - startTime;
57
+ return {
58
+ ok: false,
59
+ isRetryable: true,
60
+ error: `${formatLogContext(executionContext)}stable-request: ${error.message || String(error)}`,
61
+ timestamp,
62
+ executionTime
63
+ };
64
+ }
65
+ }
66
+ //# sourceMappingURL=fn-exec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fn-exec.js","sourceRoot":"","sources":["../../src/utilities/fn-exec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import { FunctionCacheConfig } from '../types/index.js';
2
+ export interface CachedFunctionResponse<T = any> {
3
+ data: T;
4
+ timestamp: number;
5
+ expiresAt: number;
6
+ }
7
+ export declare class FunctionCacheManager {
8
+ private cache;
9
+ private config;
10
+ private stats;
11
+ constructor(config: FunctionCacheConfig<any, any>);
12
+ private generateKey;
13
+ get<TArgs extends any[], TReturn>(fn: (...args: TArgs) => any, args: TArgs): CachedFunctionResponse<TReturn> | null;
14
+ set<TArgs extends any[], TReturn>(fn: (...args: TArgs) => any, args: TArgs, data: TReturn): void;
15
+ clear(): void;
16
+ getStats(): {
17
+ hits: number;
18
+ misses: number;
19
+ hitRate: number;
20
+ missRate: number;
21
+ sets: number;
22
+ evictions: number;
23
+ size: number;
24
+ maxSize: number;
25
+ averageGetTime: number;
26
+ averageSetTime: number;
27
+ };
28
+ }
29
+ export declare function getGlobalFunctionCacheManager(config?: FunctionCacheConfig<any, any>): FunctionCacheManager;
30
+ //# sourceMappingURL=function-cache-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"function-cache-manager.d.ts","sourceRoot":"","sources":["../../src/utilities/function-cache-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAGxD,MAAM,WAAW,sBAAsB,CAAC,CAAC,GAAG,GAAG;IAC7C,IAAI,EAAE,CAAC,CAAC;IACR,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,KAAK,CAAsC;IACnD,OAAO,CAAC,MAAM,CAAgC;IAC9C,OAAO,CAAC,KAAK,CAOX;gBAEU,MAAM,EAAE,mBAAmB,CAAC,GAAG,EAAE,GAAG,CAAC;IASjD,OAAO,CAAC,WAAW;IAWnB,GAAG,CAAC,KAAK,SAAS,GAAG,EAAE,EAAE,OAAO,EAC9B,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,KAAK,GAAG,EAC3B,IAAI,EAAE,KAAK,GACV,sBAAsB,CAAC,OAAO,CAAC,GAAG,IAAI;IA0BzC,GAAG,CAAC,KAAK,SAAS,GAAG,EAAE,EAAE,OAAO,EAC9B,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,KAAK,GAAG,EAC3B,IAAI,EAAE,KAAK,EACX,IAAI,EAAE,OAAO,GACZ,IAAI;IA4BP,KAAK,IAAI,IAAI;IAIb,QAAQ;;;;;;;;;;;;CAmBT;AAID,wBAAgB,6BAA6B,CAAC,MAAM,CAAC,EAAE,mBAAmB,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,oBAAoB,CAK1G"}
@@ -0,0 +1,106 @@
1
+ import crypto from 'crypto';
2
+ export class FunctionCacheManager {
3
+ cache;
4
+ config;
5
+ stats = {
6
+ hits: 0,
7
+ misses: 0,
8
+ sets: 0,
9
+ evictions: 0,
10
+ getTimes: [],
11
+ setTimes: []
12
+ };
13
+ constructor(config) {
14
+ this.cache = new Map();
15
+ this.config = {
16
+ ttl: 300000,
17
+ maxSize: 1000,
18
+ ...config
19
+ };
20
+ }
21
+ generateKey(fn, args) {
22
+ if (this.config.keyGenerator) {
23
+ return this.config.keyGenerator(fn, args);
24
+ }
25
+ const fnName = fn.name || fn.toString();
26
+ const argsString = JSON.stringify(args);
27
+ const hash = crypto.createHash('md5').update(`${fnName}:${argsString}`).digest('hex');
28
+ return hash;
29
+ }
30
+ get(fn, args) {
31
+ const startTime = Date.now();
32
+ try {
33
+ const key = this.generateKey(fn, args);
34
+ const cached = this.cache.get(key);
35
+ if (!cached) {
36
+ this.stats.misses++;
37
+ return null;
38
+ }
39
+ const now = Date.now();
40
+ if (now > cached.expiresAt) {
41
+ this.cache.delete(key);
42
+ this.stats.misses++;
43
+ return null;
44
+ }
45
+ this.stats.hits++;
46
+ return cached;
47
+ }
48
+ finally {
49
+ this.stats.getTimes.push(Date.now() - startTime);
50
+ }
51
+ }
52
+ set(fn, args, data) {
53
+ const startTime = Date.now();
54
+ try {
55
+ const key = this.generateKey(fn, args);
56
+ const now = Date.now();
57
+ const ttl = this.config.ttl || 300000;
58
+ if (this.cache.size >= (this.config.maxSize || 1000) && !this.cache.has(key)) {
59
+ const firstKey = this.cache.keys().next().value;
60
+ if (firstKey) {
61
+ this.cache.delete(firstKey);
62
+ this.stats.evictions++;
63
+ }
64
+ }
65
+ this.cache.set(key, {
66
+ data,
67
+ timestamp: now,
68
+ expiresAt: now + ttl
69
+ });
70
+ this.stats.sets++;
71
+ }
72
+ finally {
73
+ this.stats.setTimes.push(Date.now() - startTime);
74
+ }
75
+ }
76
+ clear() {
77
+ this.cache.clear();
78
+ }
79
+ getStats() {
80
+ const totalRequests = this.stats.hits + this.stats.misses;
81
+ return {
82
+ hits: this.stats.hits,
83
+ misses: this.stats.misses,
84
+ hitRate: totalRequests > 0 ? (this.stats.hits / totalRequests) * 100 : 0,
85
+ missRate: totalRequests > 0 ? (this.stats.misses / totalRequests) * 100 : 0,
86
+ sets: this.stats.sets,
87
+ evictions: this.stats.evictions,
88
+ size: this.cache.size,
89
+ maxSize: this.config.maxSize || 1000,
90
+ averageGetTime: this.stats.getTimes.length > 0
91
+ ? this.stats.getTimes.reduce((a, b) => a + b, 0) / this.stats.getTimes.length
92
+ : 0,
93
+ averageSetTime: this.stats.setTimes.length > 0
94
+ ? this.stats.setTimes.reduce((a, b) => a + b, 0) / this.stats.setTimes.length
95
+ : 0
96
+ };
97
+ }
98
+ }
99
+ let globalFunctionCacheManager = null;
100
+ export function getGlobalFunctionCacheManager(config) {
101
+ if (!globalFunctionCacheManager || config) {
102
+ globalFunctionCacheManager = new FunctionCacheManager(config || { enabled: true });
103
+ }
104
+ return globalFunctionCacheManager;
105
+ }
106
+ //# sourceMappingURL=function-cache-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"function-cache-manager.js","sourceRoot":"","sources":["../../src/utilities/function-cache-manager.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  export { CacheManager, getGlobalCacheManager, resetGlobalCacheManager } from './cache-manager.js';
2
+ export { FunctionCacheManager, getGlobalFunctionCacheManager } from './function-cache-manager.js';
2
3
  export { CircuitBreaker, CircuitBreakerOpenError, getGlobalCircuitBreaker, resetGlobalCircuitBreaker } from './circuit-breaker.js';
3
4
  export { ConcurrencyLimiter, getGlobalConcurrencyLimiter, resetGlobalConcurrencyLimiter } from './concurrency-limiter.js';
4
5
  export { delay } from './delay.js';
@@ -16,8 +17,11 @@ export { isRetryableError } from './is-retryable-error.js';
16
17
  export { MetricsAggregator } from './metrics-aggregator.js';
17
18
  export { prepareApiRequestData } from './prepare-api-request-data.js';
18
19
  export { prepareApiRequestOptions } from './prepare-api-request-options.js';
20
+ export { prepareApiFunctionOptions } from './prepare-api-function-options.js';
21
+ export { executeGatewayItem, executeGatewayRequest, executeGatewayFunction } from './execute-gateway-item.js';
19
22
  export { RateLimiter, getGlobalRateLimiter, resetGlobalRateLimiter } from './rate-limiter.js';
20
23
  export { reqFn } from './req-fn.js';
24
+ export { fnExec } from './fn-exec.js';
21
25
  export { safelyExecuteUnknownFunction } from './safely-execute-unknown-function.js';
22
26
  export { safelyStringify } from './safely-stringify.js';
23
27
  export { validateTrialModeProbabilities } from './validate-trial-mode-probabilities.js';