@forestadmin/workflow-executor 1.35.8 → 1.37.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/adapters/forest-server-workflow-port.d.ts +6 -2
- package/dist/adapters/forest-server-workflow-port.js +36 -3
- package/dist/adapters/run-to-available-step-mapper.js +6 -1
- package/dist/adapters/server-types.d.ts +10 -6
- package/dist/adapters/server-types.js +1 -1
- package/dist/adapters/step-outcome-to-update-step-mapper.d.ts +3 -1
- package/dist/adapters/step-outcome-to-update-step-mapper.js +9 -2
- package/dist/errors.d.ts +20 -0
- package/dist/errors.js +51 -2
- package/dist/executors/base-step-executor.d.ts +1 -0
- package/dist/executors/base-step-executor.js +20 -18
- package/dist/executors/condition-step-executor.d.ts +5 -0
- package/dist/executors/condition-step-executor.js +170 -15
- package/dist/executors/iteration-run-store.d.ts +24 -0
- package/dist/executors/iteration-run-store.js +98 -0
- package/dist/executors/load-related-record-step-executor.d.ts +7 -3
- package/dist/executors/load-related-record-step-executor.js +158 -138
- package/dist/executors/per-record-step-executor.d.ts +27 -0
- package/dist/executors/per-record-step-executor.js +369 -0
- package/dist/executors/record-step-executor.d.ts +4 -0
- package/dist/executors/record-step-executor.js +44 -22
- package/dist/executors/related-record-picker.d.ts +21 -0
- package/dist/executors/related-record-picker.js +180 -0
- package/dist/executors/step-executor-factory.d.ts +3 -1
- package/dist/executors/step-executor-factory.js +49 -1
- package/dist/executors/summary/step-execution-formatters.js +5 -4
- package/dist/executors/summary/step-summary-builder.js +23 -1
- package/dist/http/mcp-oauth-credentials.d.ts +1 -1
- package/dist/http/pending-data-validators.d.ts +2 -0
- package/dist/http/pending-data-validators.js +21 -6
- package/dist/http/step-serializer.js +54 -27
- package/dist/ports/workflow-port.d.ts +12 -1
- package/dist/runner.d.ts +1 -0
- package/dist/runner.js +52 -12
- package/dist/types/execution-context.d.ts +6 -0
- package/dist/types/step-execution-data.d.ts +65 -12
- package/dist/types/step-execution-data.js +5 -1
- package/dist/types/validated/execution.d.ts +7 -117
- package/dist/types/validated/execution.js +3 -1
- package/dist/types/validated/step-definition.d.ts +23 -117
- package/dist/types/validated/step-definition.js +21 -4
- package/package.json +1 -1
|
@@ -3,10 +3,24 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.findStepExecution = findStepExecution;
|
|
6
7
|
const ai_proxy_1 = require("@forestadmin/ai-proxy");
|
|
7
8
|
const errors_1 = require("../errors");
|
|
8
9
|
const pending_data_validators_1 = __importDefault(require("../http/pending-data-validators"));
|
|
9
10
|
const step_summary_builder_1 = __importDefault(require("./summary/step-summary-builder"));
|
|
11
|
+
// A step the executor ran has its execution at its own stepIndex. A revision clone never ran, so
|
|
12
|
+
// it inherits the record of the step it copied (originalStepIndex).
|
|
13
|
+
function findStepExecution(step, executions) {
|
|
14
|
+
const own = executions.find(e => e.stepIndex === step.stepOutcome.stepIndex);
|
|
15
|
+
if (own)
|
|
16
|
+
return own;
|
|
17
|
+
// An errored clone persists nothing, so inheriting the copied record would resurface the
|
|
18
|
+
// superseded original's — only fall back when the clone didn't run-and-fail.
|
|
19
|
+
if (step.originalStepIndex !== undefined && step.stepOutcome.status !== 'error') {
|
|
20
|
+
return executions.find(e => e.stepIndex === step.originalStepIndex);
|
|
21
|
+
}
|
|
22
|
+
return undefined;
|
|
23
|
+
}
|
|
10
24
|
class BaseStepExecutor {
|
|
11
25
|
constructor(context) {
|
|
12
26
|
this.context = context;
|
|
@@ -67,14 +81,7 @@ class BaseStepExecutor {
|
|
|
67
81
|
// Both catch branches below route through here, so neither can drop the classification. The
|
|
68
82
|
// factory's own catch (step-executor-factory.ts) builds its outcome separately and does not.
|
|
69
83
|
buildErrorOutcome(error) {
|
|
70
|
-
return this.buildOutcomeResult({
|
|
71
|
-
status: 'error',
|
|
72
|
-
error: error.userMessage,
|
|
73
|
-
...(error.errorKind !== undefined && { errorKind: error.errorKind }),
|
|
74
|
-
...(error.errorSourceStepIndex !== undefined && {
|
|
75
|
-
errorSourceStepIndex: error.errorSourceStepIndex,
|
|
76
|
-
}),
|
|
77
|
-
});
|
|
84
|
+
return this.buildOutcomeResult({ status: 'error', ...(0, errors_1.toErrorOutcome)(error) });
|
|
78
85
|
}
|
|
79
86
|
checkIdempotency() {
|
|
80
87
|
return Promise.resolve(null);
|
|
@@ -172,6 +179,9 @@ class BaseStepExecutor {
|
|
|
172
179
|
if (!stepDefinition.prompt?.trim() && stepDefinition.title) {
|
|
173
180
|
lines.push(`Step title: "${stepDefinition.title}"`);
|
|
174
181
|
}
|
|
182
|
+
if (this.context.perRecordLabel) {
|
|
183
|
+
lines.push(`This step runs once per record. This run is for ${this.context.perRecordLabel}.`);
|
|
184
|
+
}
|
|
175
185
|
return new ai_proxy_1.SystemMessage(lines.join('\n'));
|
|
176
186
|
}
|
|
177
187
|
async buildPreviousStepsMessages() {
|
|
@@ -191,15 +201,7 @@ class BaseStepExecutor {
|
|
|
191
201
|
// stops a re-executed step (which has its own entry) from resurfacing the superseded
|
|
192
202
|
// original's record.
|
|
193
203
|
resolveStepExecution(step, executions) {
|
|
194
|
-
|
|
195
|
-
if (own)
|
|
196
|
-
return own;
|
|
197
|
-
// An errored clone persists nothing, so inheriting the copied record would resurface the
|
|
198
|
-
// superseded original's — only fall back when the clone didn't run-and-fail.
|
|
199
|
-
if (step.originalStepIndex !== undefined && step.stepOutcome.status !== 'error') {
|
|
200
|
-
return executions.find(e => e.stepIndex === step.originalStepIndex);
|
|
201
|
-
}
|
|
202
|
-
return undefined;
|
|
204
|
+
return findStepExecution(step, executions);
|
|
203
205
|
}
|
|
204
206
|
static mergeLeadingSystemMessages(messages) {
|
|
205
207
|
let i = 0;
|
|
@@ -306,4 +308,4 @@ class BaseStepExecutor {
|
|
|
306
308
|
}
|
|
307
309
|
}
|
|
308
310
|
exports.default = BaseStepExecutor;
|
|
309
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1zdGVwLWV4ZWN1dG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2V4ZWN1dG9ycy9iYXNlLXN0ZXAtZXhlY3V0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFlQSxvREFBc0Q7QUFFdEQsc0NBWW1CO0FBQ25CLDhGQUErRDtBQUMvRCwwRkFBZ0U7QUFFaEUsTUFBOEIsZ0JBQWdCO0lBSzVDLFlBQVksT0FBZ0M7UUFDMUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7SUFDekIsQ0FBQztJQUVELEtBQUssQ0FBQyxPQUFPO1FBQ1gsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLGNBQWMsRUFBRTtZQUMzQyxHQUFHLElBQUksQ0FBQyxNQUFNO1lBQ2QsU0FBUyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYztTQUN2QyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsd0JBQXdCLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRW5FLElBQUksQ0FBQztZQUNILHlGQUF5RjtZQUN6RixzRUFBc0U7WUFDdEUsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUU3QyxJQUFJLE1BQU0sRUFBRSxDQUFDO2dCQUNYLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxnREFBZ0QsRUFBRTtvQkFDNUUsR0FBRyxJQUFJLENBQUMsTUFBTTtvQkFDZCxVQUFVLEVBQUUsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNO2lCQUN0QyxDQUFDLENBQUM7Z0JBRUgsT0FBTyxNQUFNLENBQUM7WUFDaEIsQ0FBQztZQUVELE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBRTNDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSwwQkFBMEIsRUFBRTtnQkFDdEQsR0FBRyxJQUFJLENBQUMsTUFBTTtnQkFDZCxVQUFVLEVBQUUsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNO2FBQ3RDLENBQUMsQ0FBQztZQUVILE9BQU8sTUFBTSxDQUFDO1FBQ2hCLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsSUFBSSxLQUFLLFlBQVkseUJBQWdCLEVBQUUsQ0FBQztnQkFDdEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPLEVBQUU7b0JBQzFDLEdBQUcsSUFBSSxDQUFDLE1BQU07b0JBQ2QsUUFBUSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWTtpQkFDcEMsQ0FBQyxDQUFDO2dCQUVILE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3ZDLENBQUM7WUFFRCxJQUFJLEtBQUssWUFBWSw4QkFBcUIsRUFBRSxDQUFDO2dCQUMzQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU8sRUFBRTtvQkFDMUMsR0FBRyxJQUFJLENBQUMsTUFBTTtvQkFDZCxLQUFLLEVBQUUsSUFBQSw0QkFBbUIsRUFBQyxLQUFLLENBQUMsS0FBSyxDQUFDO29CQUN2QyxLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTO2lCQUNwRSxDQUFDLENBQUM7Z0JBRUgsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdkMsQ0FBQztZQUVELE1BQU0sRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLEdBQUcsS0FBNEIsQ0FBQztZQUMzRCxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsd0NBQXdDLEVBQUU7Z0JBQ3JFLEdBQUcsSUFBSSxDQUFDLE1BQU07Z0JBQ2QsS0FBSyxFQUFFLElBQUEsNEJBQW1CLEVBQUMsS0FBSyxDQUFDO2dCQUNqQyxLQUFLLEVBQUUsSUFBQSw0QkFBbUIsRUFBQyxVQUFVLENBQUM7Z0JBQ3RDLEtBQUssRUFBRSxLQUFLLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTO2FBQ3hELENBQUMsQ0FBQztZQUVILE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDO2dCQUM3QixNQUFNLEVBQUUsT0FBTztnQkFDZixLQUFLLEVBQUUsd0NBQXdDO2FBQ2hELENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDO0lBRUQsNEZBQTRGO0lBQzVGLDZGQUE2RjtJQUNyRixpQkFBaUIsQ0FBQyxLQUE0QjtRQUNwRCxPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztZQUM3QixNQUFNLEVBQUUsT0FBTztZQUNmLEtBQUssRUFBRSxLQUFLLENBQUMsV0FBVztZQUN4QixHQUFHLENBQUMsS0FBSyxDQUFDLFNBQVMsS0FBSyxTQUFTLElBQUksRUFBRSxTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3BFLEdBQUcsQ0FBQyxLQUFLLENBQUMsb0JBQW9CLEtBQUssU0FBUyxJQUFJO2dCQUM5QyxvQkFBb0IsRUFBRSxLQUFLLENBQUMsb0JBQW9CO2FBQ2pELENBQUM7U0FDSCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBSVMsZ0JBQWdCO1FBQ3hCLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQsa0dBQWtHO0lBQ2xHLHNGQUFzRjtJQUN0RixzRUFBc0U7SUFDOUQsS0FBSyxDQUFDLGNBQWM7UUFDMUIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUM7UUFDM0MsSUFBSSxDQUFDLFFBQVEsSUFBSSxRQUFRLElBQUksQ0FBQztZQUFFLE9BQU8sSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBRXhELElBQUksS0FBaUMsQ0FBQztRQUN0QyxJQUFJLGVBQWUsR0FBRyxLQUFLLENBQUM7UUFDNUIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBRXJDLFdBQVcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDdEIsSUFBSSxDQUFDLGVBQWU7Z0JBQUUsT0FBTztZQUM3QixJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUscURBQXFELEVBQUU7Z0JBQ2pGLEdBQUcsSUFBSSxDQUFDLE1BQU07Z0JBQ2QsS0FBSyxFQUFFLElBQUEsNEJBQW1CLEVBQUMsR0FBRyxDQUFDO2FBQ2hDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDO1lBQ0gsT0FBTyxNQUFNLE9BQU8sQ0FBQyxJQUFJLENBQUM7Z0JBQ3hCLFdBQVc7Z0JBQ1gsSUFBSSxPQUFPLENBQVEsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLEVBQUU7b0JBQy9CLEtBQUssR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFO3dCQUN0QixlQUFlLEdBQUcsSUFBSSxDQUFDO3dCQUN2QixNQUFNLENBQUMsSUFBSSx5QkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO29CQUN6QyxDQUFDLEVBQUUsUUFBUSxHQUFHLElBQUksQ0FBQyxDQUFDO2dCQUN0QixDQUFDLENBQUM7YUFDSCxDQUFDLENBQUM7UUFDTCxDQUFDO2dCQUFTLENBQUM7WUFDVCxJQUFJLEtBQUs7Z0JBQUUsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLENBQUM7SUFDSCxDQUFDO0lBU1MsS0FBSyxDQUFDLG9CQUFvQixDQUNsQyxJQUFZO1FBRVosTUFBTSxjQUFjLEdBQUcsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXpGLE9BQU8sY0FBYyxDQUFDLElBQUksQ0FDeEIsQ0FBQyxDQUFDLEVBQWMsRUFBRSxDQUFFLENBQVcsQ0FBQyxJQUFJLEtBQUssSUFBSSxJQUFJLENBQUMsQ0FBQyxTQUFTLEtBQUssSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQ3hGLENBQUM7SUFDSixDQUFDO0lBRVMsS0FBSyxDQUFDLHlCQUF5QixDQUN2QyxXQUFxQjtRQUVyQixNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUM7UUFDN0MsTUFBTSxTQUFTLEdBQUcsTUFBTSxJQUFJLENBQUMsb0JBQW9CLENBQVEsSUFBSSxDQUFDLENBQUM7UUFFL0QsSUFBSSxDQUFDLFNBQVM7WUFBRSxPQUFPLFNBQVMsQ0FBQztRQUVqQyxJQUFJLFdBQVcsS0FBSyxTQUFTO1lBQUUsT0FBTyxTQUFTLENBQUM7UUFFaEQsTUFBTSxNQUFNLEdBQUcsaUNBQWdCLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRWhELElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNaLE1BQU0sSUFBSSx1QkFBYyxDQUN0Qix1REFBdUQsU0FBUyxDQUFDLElBQUksR0FBRyxDQUN6RSxDQUFDO1FBQ0osQ0FBQztRQUVELE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFN0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNwQixNQUFNLElBQUksdUJBQWMsQ0FDdEIseUJBQXlCLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FDOUUsQ0FBQztRQUNKLENBQUM7UUFFRCxNQUFNLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxJQUFpQyxDQUFDO1FBRWxFLE1BQU0sT0FBTyxHQUFVO1lBQ3JCLEdBQUcsU0FBUztZQUNaLGdCQUFnQjtTQUNqQixDQUFDO1FBRUYsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztRQUUzRSxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRUQsb0ZBQW9GO0lBQ3BGLHVFQUF1RTtJQUM3RCxLQUFLLENBQUMsc0JBQXNCLENBQ3BDLFNBQWdCLEVBQ2hCLGlCQUFxRTtRQUVyRSxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQzNCLE1BQU0sSUFBSSx1QkFBYyxDQUFDLGlCQUFpQixJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsc0JBQXNCLENBQUMsQ0FBQztRQUMxRixDQUFDO1FBRUQsTUFBTSxFQUFFLGFBQWEsRUFBRSxHQUFHLFNBQVMsQ0FBQyxnQkFBZ0IsSUFBSSxFQUFFLENBQUM7UUFFM0QsSUFBSSxhQUFhLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDaEMsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsRUFBRSxNQUFNLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO1FBQy9ELENBQUM7UUFFRCxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDbkIsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRTtnQkFDaEUsR0FBRyxTQUFTO2dCQUNaLGVBQWUsRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUU7YUFDZCxDQUFDLENBQUM7WUFFeEIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztRQUN4RCxDQUFDO1FBRUQsT0FBTyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRVMsbUJBQW1CO1FBQzNCLE1BQU0sRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUM5QyxNQUFNLEdBQUcsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1FBRXZCLE1BQU0sS0FBSyxHQUFHO1lBQ1oscUJBQXFCLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxJQUFJLENBQUMsS0FBSyxTQUFTLElBQUksQ0FBQyxFQUFFLEdBQUc7WUFDdEYsU0FBUyxJQUFJLENBQUMsSUFBSSxZQUFZLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDekMsMEJBQTBCLEdBQUcsQ0FBQyxXQUFXLEVBQUUsUUFBUTtTQUNwRCxDQUFDO1FBRUYsOEZBQThGO1FBQzlGLHNGQUFzRjtRQUN0RixJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxjQUFjLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDM0QsS0FBSyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsY0FBYyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDdEQsQ0FBQztRQUVELE9BQU8sSUFBSSx3QkFBYSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRVMsS0FBSyxDQUFDLDBCQUEwQjtRQUN4QyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsTUFBTTtZQUFFLE9BQU8sRUFBRSxDQUFDO1FBRWxELE1BQU0saUJBQWlCLEdBQUcsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVGLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYTthQUN2QyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDVixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxFQUFFLGlCQUFpQixDQUFDLENBQUM7WUFFckUsT0FBTyw4QkFBa0IsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ3BGLENBQUMsQ0FBQzthQUNELElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVoQixPQUFPLENBQUMsSUFBSSx3QkFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELDhGQUE4RjtJQUM5RiwrRkFBK0Y7SUFDL0YscUZBQXFGO0lBQ3JGLHFCQUFxQjtJQUNYLG9CQUFvQixDQUM1QixJQUFVLEVBQ1YsVUFBK0I7UUFFL0IsTUFBTSxHQUFHLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLEtBQUssSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM3RSxJQUFJLEdBQUc7WUFBRSxPQUFPLEdBQUcsQ0FBQztRQUVwQix5RkFBeUY7UUFDekYsNkVBQTZFO1FBQzdFLElBQUksSUFBSSxDQUFDLGlCQUFpQixLQUFLLFNBQVMsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sS0FBSyxPQUFPLEVBQUUsQ0FBQztZQUNoRixPQUFPLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxLQUFLLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ3RFLENBQUM7UUFFRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRU8sTUFBTSxDQUFDLDBCQUEwQixDQUFDLFFBQXVCO1FBQy9ELElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNWLE9BQU8sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxNQUFNLElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQyxZQUFZLHdCQUFhO1lBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzRSxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQUUsT0FBTyxRQUFRLENBQUM7UUFFNUIsTUFBTSxNQUFNLEdBQUcsSUFBSSx3QkFBYSxDQUM5QixRQUFRO2FBQ0wsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7YUFDWCxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7YUFDakYsTUFBTSxDQUFDLE9BQU8sQ0FBQzthQUNmLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FDaEIsQ0FBQztRQUVGLE9BQU8sQ0FBQyxNQUFNLEVBQUUsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVPLE1BQU0sQ0FBQyw4QkFBOEIsQ0FBQyxRQUF1QjtRQUNuRSxJQUFJLGFBQWEsR0FBRyxLQUFLLENBQUM7UUFFMUIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQzVDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsWUFBWSx3QkFBYSxDQUFDLEVBQUUsQ0FBQztnQkFDNUMsYUFBYSxHQUFHLElBQUksQ0FBQztZQUN2QixDQUFDO2lCQUFNLElBQUksYUFBYSxFQUFFLENBQUM7Z0JBQ3pCLE1BQU0sSUFBSSw4QkFBcUIsQ0FDN0IsNkJBQTZCLENBQUMsbUdBQW1HLENBQ2xJLENBQUM7WUFDSixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFUyxLQUFLLENBQUMsZUFBZSxDQUM3QixRQUF1QixFQUN2QixLQUFnQztRQUVoQyxnQkFBZ0IsQ0FBQyw4QkFBOEIsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMxRCxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDbkYsTUFBTSxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQywwQkFBMEIsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMvRSxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDO1FBQ2pELE1BQU0sUUFBUSxHQUFHLFVBQVUsSUFBSSxVQUFVLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUN2RSxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFFM0UsSUFBSSxRQUFRLENBQUM7UUFFYixJQUFJLENBQUM7WUFDSCxnR0FBZ0c7WUFDaEcsUUFBUSxHQUFHLE1BQU0sY0FBYyxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDdkUsQ0FBQztRQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDYix3RkFBd0Y7WUFDeEYsZ0ZBQWdGO1lBQ2hGLElBQUksUUFBUSxLQUFLLFNBQVMsSUFBSSxNQUFNLEVBQUUsT0FBTztnQkFBRSxNQUFNLElBQUksNkJBQW9CLENBQUMsUUFBUSxDQUFDLENBQUM7WUFFeEYsSUFBSSxJQUFBLCtCQUFzQixFQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ2hDLE1BQU0sSUFBSSw2QkFBb0IsQ0FDNUIsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQzlDLEdBQVksQ0FDYixDQUFDO1lBQ0osQ0FBQztZQUVELE1BQU0sR0FBRyxDQUFDO1FBQ1osQ0FBQztRQUVELE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUUxQyxJQUFJLFFBQVEsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUMzQixJQUFJLFFBQVEsQ0FBQyxJQUFJLEtBQUssU0FBUyxJQUFJLFFBQVEsQ0FBQyxJQUFJLEtBQUssSUFBSSxFQUFFLENBQUM7Z0JBQzFELE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDLElBQVMsRUFBRSxDQUFDO1lBQy9ELENBQUM7WUFFRCxNQUFNLElBQUksK0JBQXNCLENBQUMsUUFBUSxDQUFDLElBQUksSUFBSSxTQUFTLEVBQUUsK0JBQStCLENBQUMsQ0FBQztRQUNoRyxDQUFDO1FBRUQsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFckQsSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUNoQixNQUFNLElBQUksK0JBQXNCLENBQzlCLFdBQVcsQ0FBQyxJQUFJLElBQUksU0FBUyxFQUM3QixXQUFXLENBQUMsS0FBSyxJQUFJLHNCQUFzQixDQUM1QyxDQUFDO1FBQ0osQ0FBQztRQUVELE1BQU0sSUFBSSw2QkFBb0IsRUFBRSxDQUFDO0lBQ25DLENBQUM7SUFFRCxnR0FBZ0c7SUFDaEcsa0VBQWtFO0lBQzFELE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBMkM7UUFDbEUsTUFBTSxLQUFLLEdBQUcsS0FBMEQsQ0FBQztRQUV6RSxPQUFPLEtBQUssQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLFNBQVMsSUFBSSxTQUFTLENBQUM7SUFDckQsQ0FBQztJQUVTLEtBQUssQ0FBQyxjQUFjLENBQzVCLFFBQXVCLEVBQ3ZCLElBQTJCO1FBRTNCLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxlQUFlLENBQUksUUFBUSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNoRSxDQUFDO0lBRUQseUZBQXlGO0lBQ3pGLCtFQUErRTtJQUNyRSxLQUFLLENBQUMsWUFBWSxDQUFJLElBQXNCO1FBQ3BELElBQUksQ0FBQztZQUNILE9BQU8sTUFBTSxJQUFJLEVBQUUsQ0FBQztRQUN0QixDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLElBQUksS0FBSyxZQUFZLGlDQUF3QjtnQkFBRSxNQUFNLEtBQUssQ0FBQztZQUMzRCxxRkFBcUY7WUFDckYsNEZBQTRGO1lBQzVGLHVGQUF1RjtZQUN2RixJQUFJLEtBQUssWUFBWSw2QkFBb0I7Z0JBQUUsTUFBTSxLQUFLLENBQUM7WUFFdkQsTUFBTSxJQUFJLGlDQUF3QixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVDLENBQUM7SUFDSCxDQUFDO0lBRVMsWUFBWSxDQUFDLE1BQWU7UUFDcEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQ2pCLE1BQU0sRUFDTixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLElBQUksdUNBQXVDLEVBQzFFLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFBLDRCQUFtQixFQUFDLE1BQU0sQ0FBQyxFQUFFLENBQ3ZELENBQUM7SUFDSixDQUFDO0lBRUQsMkZBQTJGO0lBQ2pGLGtCQUFrQjtRQUMxQixPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFRCxJQUFjLE1BQU07UUFDbEIsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBRWpGLE9BQU87WUFDTCxLQUFLO1lBQ0wsTUFBTTtZQUNOLFNBQVM7WUFDVCxRQUFRLEVBQUUsY0FBYyxDQUFDLElBQUk7WUFDN0IsVUFBVSxFQUFFLGFBQWEsQ0FBQyxjQUFjO1lBQ3hDLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixFQUFFO1NBQzdCLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUFuWkQsbUNBbVpDIn0=
|
|
311
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1zdGVwLWV4ZWN1dG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2V4ZWN1dG9ycy9iYXNlLXN0ZXAtZXhlY3V0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFvQ0EsOENBY0M7QUFuQ0Qsb0RBQXNEO0FBRXRELHNDQWFtQjtBQUNuQiw4RkFBK0Q7QUFDL0QsMEZBQWdFO0FBRWhFLGlHQUFpRztBQUNqRyxvRUFBb0U7QUFDcEUsU0FBZ0IsaUJBQWlCLENBQy9CLElBQVUsRUFDVixVQUErQjtJQUUvQixNQUFNLEdBQUcsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsS0FBSyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzdFLElBQUksR0FBRztRQUFFLE9BQU8sR0FBRyxDQUFDO0lBRXBCLHlGQUF5RjtJQUN6Riw2RUFBNkU7SUFDN0UsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEtBQUssU0FBUyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxLQUFLLE9BQU8sRUFBRSxDQUFDO1FBQ2hGLE9BQU8sVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLEtBQUssSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUVELE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUM7QUFFRCxNQUE4QixnQkFBZ0I7SUFLNUMsWUFBWSxPQUFnQztRQUMxQyxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUN6QixDQUFDO0lBRUQsS0FBSyxDQUFDLE9BQU87UUFDWCxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsY0FBYyxFQUFFO1lBQzNDLEdBQUcsSUFBSSxDQUFDLE1BQU07WUFDZCxTQUFTLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxj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
|
|
@@ -11,8 +11,13 @@ export default class ConditionStepExecutor extends BaseStepExecutor<ConditionSte
|
|
|
11
11
|
selectedOption?: string;
|
|
12
12
|
}): StepExecutionResult;
|
|
13
13
|
protected doExecute(): Promise<StepExecutionResult>;
|
|
14
|
+
private findOperatorChoice;
|
|
15
|
+
private findPausedDecision;
|
|
16
|
+
private completePausedDecision;
|
|
14
17
|
private evaluateDeterministically;
|
|
18
|
+
private evaluateGroup;
|
|
15
19
|
private evaluateCondition;
|
|
20
|
+
private evaluateOverRecords;
|
|
16
21
|
private resolveConditionValue;
|
|
17
22
|
private readUserChoice;
|
|
18
23
|
private askAi;
|
|
@@ -9,7 +9,16 @@ const errors_1 = require("../errors");
|
|
|
9
9
|
const base_step_executor_1 = __importDefault(require("./base-step-executor"));
|
|
10
10
|
const deterministic_condition_evaluator_1 = __importDefault(require("./deterministic-condition-evaluator"));
|
|
11
11
|
const pending_data_validators_1 = __importDefault(require("../http/pending-data-validators"));
|
|
12
|
+
const record_id_1 = require("../record-id");
|
|
13
|
+
const step_execution_data_1 = require("../types/step-execution-data");
|
|
12
14
|
const step_definition_1 = require("../types/validated/step-definition");
|
|
15
|
+
// Three-valued: null is a condition a record without a value could still turn either way.
|
|
16
|
+
function combine(aggregator, verdicts) {
|
|
17
|
+
const settling = aggregator === 'or';
|
|
18
|
+
if (verdicts.includes(settling))
|
|
19
|
+
return settling;
|
|
20
|
+
return verdicts.includes(null) ? null : !settling;
|
|
21
|
+
}
|
|
13
22
|
const GATEWAY_SYSTEM_PROMPT = `You are an AI agent selecting the correct option for a workflow gateway decision.
|
|
14
23
|
|
|
15
24
|
**Task**: Analyze the question and available options, then select the option that DIRECTLY answers the question. Options must be literal answers, not interpretations.
|
|
@@ -45,12 +54,20 @@ class ConditionStepExecutor extends base_step_executor_1.default {
|
|
|
45
54
|
async doExecute() {
|
|
46
55
|
const { stepDefinition: step, incomingPendingData } = this.context;
|
|
47
56
|
if ((0, step_definition_1.isDeterministicConditionStep)(step)) {
|
|
57
|
+
const stepExecutions = await this.context.runStore.getStepExecutions(this.context.runId);
|
|
58
|
+
const operatorChoice = this.findOperatorChoice(stepExecutions);
|
|
59
|
+
if (operatorChoice !== undefined) {
|
|
60
|
+
return this.buildOutcomeResult({ status: 'success', selectedOption: operatorChoice });
|
|
61
|
+
}
|
|
62
|
+
const paused = this.findPausedDecision(stepExecutions);
|
|
63
|
+
if (paused)
|
|
64
|
+
return this.completePausedDecision(step, paused, incomingPendingData);
|
|
48
65
|
// The config wins over an explicit human action, so say so: a mixed-version fleet can pause
|
|
49
66
|
// the step on an args-blind instance, and the user's click would otherwise vanish untraced.
|
|
50
67
|
if (incomingPendingData !== undefined) {
|
|
51
68
|
this.context.logger('Warn', 'Ignoring a submitted option: this decision is evaluated from its conditions', this.logCtx);
|
|
52
69
|
}
|
|
53
|
-
return this.evaluateDeterministically(step);
|
|
70
|
+
return this.evaluateDeterministically(step, stepExecutions);
|
|
54
71
|
}
|
|
55
72
|
// Manual mode: the user picks the option from the frontend. Wait for their input
|
|
56
73
|
// without ever calling the AI.
|
|
@@ -75,31 +92,81 @@ class ConditionStepExecutor extends base_step_executor_1.default {
|
|
|
75
92
|
}
|
|
76
93
|
return this.buildOutcomeResult({ status: 'success', selectedOption });
|
|
77
94
|
}
|
|
78
|
-
|
|
95
|
+
// The branch an operator picked stands: a dispatch repeating the step replays it.
|
|
96
|
+
findOperatorChoice(stepExecutions) {
|
|
97
|
+
const own = stepExecutions.find(e => e.stepIndex === this.context.stepIndex);
|
|
98
|
+
if (own?.type !== 'condition' || own.executionResult === undefined)
|
|
99
|
+
return undefined;
|
|
100
|
+
const params = own.executionParams;
|
|
101
|
+
return params.selectedBy === 'operator' ? own.executionResult.answer : undefined;
|
|
102
|
+
}
|
|
103
|
+
// A decision paused on records it could not check, waiting for the operator's branch.
|
|
104
|
+
findPausedDecision(stepExecutions) {
|
|
105
|
+
const own = stepExecutions.find(e => e.stepIndex === this.context.stepIndex);
|
|
106
|
+
if (own?.type !== 'condition' || own.executionResult !== undefined)
|
|
107
|
+
return undefined;
|
|
108
|
+
if (!('unchecked' in own.executionParams))
|
|
109
|
+
return undefined;
|
|
110
|
+
return own;
|
|
111
|
+
}
|
|
112
|
+
async completePausedDecision(step, paused, incomingPendingData) {
|
|
113
|
+
if (incomingPendingData === undefined) {
|
|
114
|
+
return this.buildOutcomeResult({ status: 'awaiting-input' });
|
|
115
|
+
}
|
|
116
|
+
const { selectedOption } = this.readUserChoice(step, incomingPendingData);
|
|
117
|
+
await this.context.runStore.saveStepExecution(this.context.runId, {
|
|
118
|
+
type: 'condition',
|
|
119
|
+
stepIndex: this.context.stepIndex,
|
|
120
|
+
executionParams: {
|
|
121
|
+
...paused.executionParams,
|
|
122
|
+
selectedOption: selectedOption,
|
|
123
|
+
usedFallback: false,
|
|
124
|
+
selectedBy: 'operator',
|
|
125
|
+
},
|
|
126
|
+
executionResult: { answer: selectedOption },
|
|
127
|
+
});
|
|
128
|
+
return this.buildOutcomeResult({ status: 'success', selectedOption: selectedOption });
|
|
129
|
+
}
|
|
130
|
+
async evaluateDeterministically(step, stepExecutions) {
|
|
79
131
|
const { optionConditions, fallbackOption } = step.preRecordedArgs;
|
|
80
|
-
const stepExecutions = await this.context.runStore.getStepExecutions(this.context.runId);
|
|
81
132
|
// One clock per step, so "today" cannot flip between the first and the last condition.
|
|
82
133
|
const clock = { now: new Date(), timezone: this.context.timezone };
|
|
134
|
+
const unchecked = new Set();
|
|
83
135
|
let matchedOption;
|
|
84
136
|
const evaluations = optionConditions.map(({ option, aggregator, conditions }) => {
|
|
85
|
-
|
|
137
|
+
// Options are taken first match first, so none is taken past one left undecided.
|
|
138
|
+
if (matchedOption !== undefined || unchecked.size > 0) {
|
|
86
139
|
return { option, outcome: 'not-evaluated' };
|
|
87
140
|
}
|
|
88
|
-
const
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
: results.every(result => result.met === true);
|
|
141
|
+
const group = this.evaluateGroup(option, { aggregator, conditions }, stepExecutions, clock);
|
|
142
|
+
// Only a record without a value that could still change a quantified condition leaves the
|
|
143
|
+
// option undecided.
|
|
144
|
+
if (group.verdict === null)
|
|
145
|
+
group.unchecked.forEach(recordId => unchecked.add(recordId));
|
|
146
|
+
const matched = group.verdict === true;
|
|
95
147
|
if (matched)
|
|
96
148
|
matchedOption = option;
|
|
97
149
|
return {
|
|
98
150
|
option,
|
|
99
151
|
outcome: matched ? 'matched' : 'not-matched',
|
|
100
|
-
conditions:
|
|
152
|
+
conditions: group.conditions,
|
|
101
153
|
};
|
|
102
154
|
});
|
|
155
|
+
// A record without a value that could change the branch: the decision takes none, and the
|
|
156
|
+
// operator picks one, knowing which records went unchecked.
|
|
157
|
+
if (unchecked.size > 0) {
|
|
158
|
+
await this.context.runStore.saveStepExecution(this.context.runId, {
|
|
159
|
+
type: 'condition',
|
|
160
|
+
stepIndex: this.context.stepIndex,
|
|
161
|
+
executionParams: {
|
|
162
|
+
evaluations,
|
|
163
|
+
evaluatedAt: clock.now.toISOString(),
|
|
164
|
+
timezone: clock.timezone,
|
|
165
|
+
unchecked: [...unchecked],
|
|
166
|
+
},
|
|
167
|
+
});
|
|
168
|
+
return this.buildOutcomeResult({ status: 'awaiting-input' });
|
|
169
|
+
}
|
|
103
170
|
const usedFallback = matchedOption === undefined;
|
|
104
171
|
const selectedOption = matchedOption ?? fallbackOption;
|
|
105
172
|
// optionConditions and options come from two different server-side derivations; an option the
|
|
@@ -122,8 +189,42 @@ class ConditionStepExecutor extends base_step_executor_1.default {
|
|
|
122
189
|
});
|
|
123
190
|
return this.buildOutcomeResult({ status: 'success', selectedOption });
|
|
124
191
|
}
|
|
125
|
-
|
|
192
|
+
// A value that could not be read counts as not met, as on a single record. A group's verdict is
|
|
193
|
+
// three-valued like its conditions', and its trace `met` is false while undecided.
|
|
194
|
+
evaluateGroup(option, { aggregator, conditions }, stepExecutions, clock) {
|
|
195
|
+
const evaluated = conditions.map((node, index) => {
|
|
196
|
+
if ((0, step_definition_1.isDeterministicConditionGroup)(node)) {
|
|
197
|
+
const { verdict, unchecked, ...result } = this.evaluateGroup(option, node, stepExecutions, clock);
|
|
198
|
+
return { verdict, unchecked, result: { index, ...result } };
|
|
199
|
+
}
|
|
200
|
+
const result = this.evaluateCondition(option, node, stepExecutions, clock);
|
|
201
|
+
return {
|
|
202
|
+
verdict: result.unchecked ? null : result.met === true,
|
|
203
|
+
unchecked: result.unchecked ?? [],
|
|
204
|
+
result: {
|
|
205
|
+
index,
|
|
206
|
+
met: result.met,
|
|
207
|
+
...(result.reason && { reason: result.reason }),
|
|
208
|
+
...(result.records && { records: result.records }),
|
|
209
|
+
},
|
|
210
|
+
};
|
|
211
|
+
});
|
|
212
|
+
const verdict = combine(aggregator, evaluated.map(child => child.verdict));
|
|
213
|
+
return {
|
|
214
|
+
verdict,
|
|
215
|
+
unchecked: verdict === null ? evaluated.flatMap(child => child.unchecked) : [],
|
|
216
|
+
met: verdict === true,
|
|
217
|
+
conditions: evaluated.map(child => child.result),
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
evaluateCondition(option, condition, stepExecutions, clock) {
|
|
126
221
|
const resolved = this.resolveConditionValue(condition, stepExecutions);
|
|
222
|
+
if (resolved.found === 'per-record') {
|
|
223
|
+
if (!condition.quantifier) {
|
|
224
|
+
throw new errors_1.MissingConditionQuantifierError(option, condition.fieldName);
|
|
225
|
+
}
|
|
226
|
+
return this.evaluateOverRecords(condition, resolved.values, clock);
|
|
227
|
+
}
|
|
127
228
|
// The reason is what keeps the fallback from passing for a decision the data took: the run view
|
|
128
229
|
// words it instead of showing a bare cross. Returning here also means "never read" is not
|
|
129
230
|
// "read and empty", so present and blank get no answer out of it either.
|
|
@@ -136,7 +237,48 @@ class ConditionStepExecutor extends base_step_executor_1.default {
|
|
|
136
237
|
});
|
|
137
238
|
return { met: null, reason: resolved.reason };
|
|
138
239
|
}
|
|
139
|
-
|
|
240
|
+
const met = (0, deterministic_condition_evaluator_1.default)(condition.operator, resolved.value, condition.value, clock);
|
|
241
|
+
if (!condition.quantifier)
|
|
242
|
+
return { met };
|
|
243
|
+
const records = { matched: met === true ? 1 : 0, evaluated: met === null ? 0 : 1 };
|
|
244
|
+
// "none" holds when the one record does not match; an undecided value stays undecided.
|
|
245
|
+
return { met: condition.quantifier === 'none' && met !== null ? !met : met, records };
|
|
246
|
+
}
|
|
247
|
+
// A record whose value decides nothing (not read, or read empty for a comparison) is unchecked.
|
|
248
|
+
evaluateOverRecords(condition, values, clock) {
|
|
249
|
+
const unchecked = [];
|
|
250
|
+
let matched = 0;
|
|
251
|
+
let evaluated = 0;
|
|
252
|
+
values.forEach(({ recordId, found, value }) => {
|
|
253
|
+
const met = found
|
|
254
|
+
? (0, deterministic_condition_evaluator_1.default)(condition.operator, value, condition.value, clock)
|
|
255
|
+
: null;
|
|
256
|
+
if (met === null) {
|
|
257
|
+
unchecked.push(recordId);
|
|
258
|
+
}
|
|
259
|
+
else {
|
|
260
|
+
evaluated += 1;
|
|
261
|
+
if (met)
|
|
262
|
+
matched += 1;
|
|
263
|
+
}
|
|
264
|
+
});
|
|
265
|
+
const records = { matched, evaluated, ...(unchecked.length > 0 && { unchecked }) };
|
|
266
|
+
const quantifier = condition.quantifier;
|
|
267
|
+
// The records read can settle it whatever the others hold: one match answers any and none, one
|
|
268
|
+
// record that does not match answers every.
|
|
269
|
+
const settled = {
|
|
270
|
+
any: matched > 0 ? true : undefined,
|
|
271
|
+
every: matched < evaluated ? false : undefined,
|
|
272
|
+
none: matched > 0 ? false : undefined,
|
|
273
|
+
}[quantifier];
|
|
274
|
+
if (settled !== undefined)
|
|
275
|
+
return { met: settled, records };
|
|
276
|
+
if (unchecked.length > 0)
|
|
277
|
+
return { met: null, records, unchecked };
|
|
278
|
+
// Over no record at all, "every" and "none" would hold vacuously: nothing was checked.
|
|
279
|
+
if (evaluated === 0)
|
|
280
|
+
return { met: false, records };
|
|
281
|
+
return { met: quantifier !== 'any', records };
|
|
140
282
|
}
|
|
141
283
|
// Same live-path + most-recent-occurrence resolution as resolveSourceRecordRef: previousSteps
|
|
142
284
|
// are already restricted to the live path, and in a loop the same step id repeats.
|
|
@@ -147,6 +289,19 @@ class ConditionStepExecutor extends base_step_executor_1.default {
|
|
|
147
289
|
if (!sourceStep)
|
|
148
290
|
return { found: false, reason: 'source-step-not-reached' };
|
|
149
291
|
const execution = this.resolveStepExecution(sourceStep, stepExecutions);
|
|
292
|
+
if ((0, step_execution_data_1.isPerRecordExecution)(execution)) {
|
|
293
|
+
return {
|
|
294
|
+
found: 'per-record',
|
|
295
|
+
values: execution.iterations.map(iteration => {
|
|
296
|
+
const result = iteration.executionResult;
|
|
297
|
+
const field = result?.fields?.find(f => f.name === condition.fieldName);
|
|
298
|
+
const recordId = (0, record_id_1.serializeRecordId)(iteration.sourceRecordRef.recordId);
|
|
299
|
+
return field && 'value' in field
|
|
300
|
+
? { recordId, found: true, value: field.value }
|
|
301
|
+
: { recordId, found: false };
|
|
302
|
+
}),
|
|
303
|
+
};
|
|
304
|
+
}
|
|
150
305
|
if (execution?.type !== 'read-record')
|
|
151
306
|
return { found: false, reason: 'field-not-loaded' };
|
|
152
307
|
const field = execution.executionResult.fields.find(f => f.name === condition.fieldName);
|
|
@@ -197,4 +352,4 @@ class ConditionStepExecutor extends base_step_executor_1.default {
|
|
|
197
352
|
}
|
|
198
353
|
}
|
|
199
354
|
exports.default = ConditionStepExecutor;
|
|
200
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZGl0aW9uLXN0ZXAtZXhlY3V0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZXhlY3V0b3JzL2NvbmRpdGlvbi1zdGVwLWV4ZWN1dG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBYUEsb0RBQTJGO0FBQzNGLDZCQUF3QjtBQUV4QixzQ0FBK0Y7QUFDL0YsOEVBQW9EO0FBQ3BELDRHQUFtRjtBQUNuRiw4RkFBK0Q7QUFDL0Qsd0VBSTRDO0FBYTVDLE1BQU0scUJBQXFCLEdBQUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3NGQW9Cd0QsQ0FBQztBQUV2RixNQUFxQixxQkFBc0IsU0FBUSw0QkFBeUM7SUFDaEYsa0JBQWtCLENBQUMsT0FNNUI7UUFDQyxPQUFPO1lBQ0wsV0FBVyxFQUFFO2dCQUNYLElBQUksRUFBRSxXQUFXO2dCQUNqQixNQUFNLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNO2dCQUMzQixTQUFTLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTO2dCQUNqQyxHQUFHLE9BQU87YUFDWDtTQUNGLENBQUM7SUFDSixDQUFDO0lBRVMsS0FBSyxDQUFDLFNBQVM7UUFDdkIsTUFBTSxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsbUJBQW1CLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBRW5FLElBQUksSUFBQSw4Q0FBNEIsRUFBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3ZDLDRGQUE0RjtZQUM1Riw0RkFBNEY7WUFDNUYsSUFBSSxtQkFBbUIsS0FBSyxTQUFTLEVBQUUsQ0FBQztnQkFDdEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQ2pCLE1BQU0sRUFDTiw2RUFBNkUsRUFDN0UsSUFBSSxDQUFDLE1BQU0sQ0FDWixDQUFDO1lBQ0osQ0FBQztZQUVELE9BQU8sSUFBSSxDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzlDLENBQUM7UUFFRCxpRkFBaUY7UUFD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
|
|
355
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZGl0aW9uLXN0ZXAtZXhlY3V0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZXhlY3V0b3JzL2NvbmRpdGlvbi1zdGVwLWV4ZWN1dG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBaUJBLG9EQUEyRjtBQUMzRiw2QkFBd0I7QUFFeEIsc0NBS21CO0FBQ25CLDhFQUFvRDtBQUNwRCw0R0FBbUY7QUFDbkYsOEZBQStEO0FBQy9ELDRDQUFpRDtBQUNqRCxzRUFBb0U7QUFDcEUsd0VBSzRDO0FBc0I1QywwRkFBMEY7QUFDMUYsU0FBUyxPQUFPLENBQUMsVUFBd0IsRUFBRSxRQUErQjtJQUN4RSxNQUFNLFFBQVEsR0FBRyxVQUFVLEtBQUssSUFBSSxDQUFDO0lBQ3JDLElBQUksUUFBUSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUM7UUFBRSxPQUFPLFFBQVEsQ0FBQztJQUVqRCxPQUFPLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7QUFDcEQsQ0FBQztBQUVELE1BQU0scUJBQXFCLEdBQUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3NGQW9Cd0QsQ0FBQztBQUV2RixNQUFxQixxQkFBc0IsU0FBUSw0QkFBeUM7SUFDaEYsa0JBQWtCLENBQUMsT0FNNUI7UUFDQyxPQUFPO1lBQ0wsV0FBVyxFQUFFO2dCQUNYLElBQUksRUFBRSxXQUFXO2dCQUNqQixNQUFNLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNO2dCQUMzQixTQUFTLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTO2dCQUNqQyxHQUFHLE9BQU87YUFDWDtTQUNGLENBQUM7SUFDSixDQUFDO0lBRVMsS0FBSyxDQUFDLFNBQVM7UUFDdkIsTUFBTSxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsbUJBQW1CLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBRW5FLElBQUksSUFBQSw4Q0FBNEIsRUFBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3ZDLE1BQU0sY0FBYyxHQUFHLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN6RixNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsY0FBYyxDQUFDLENBQUM7WUFFL0QsSUFBSSxjQUFjLEtBQUssU0FBUyxFQUFFLENBQUM7Z0JBQ2pDLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLENBQUMsQ0FBQztZQUN4RixDQUFDO1lBRUQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQ3ZELElBQUksTUFBTTtnQkFBRSxPQUFPLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLG1CQUFtQixDQUFDLENBQUM7WUFFbEYsNEZBQTRGO1lBQzVGLDRGQUE0RjtZQUM1RixJQUFJLG1CQUFtQixLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUN0QyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FDakIsTUFBTSxFQUNOLDZFQUE2RSxFQUM3RSxJQUFJLENBQUMsTUFBTSxDQUNaLENBQUM7WUFDSixDQUFDO1lBRUQsT0FBTyxJQUFJLENBQUMseUJBQXlCLENBQUMsSUFBSSxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBQzlELENBQUM7UUFFRCxpRkFBaUY7UUFDakYsK0JBQStCO1FBQy9CLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxhQUFhLEtBQUssbUNBQWlCLENBQUMsTUFBTSxDQUFDO1FBRWpFLElBQUksUUFBUSxJQUFJLG1CQUFtQixLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ2xELE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsTUFBTSxFQUFFLGdCQUFnQixFQUFFLENBQUMsQ0FBQztRQUMvRCxDQUFDO1FBRUQsTUFBTSxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUsR0FDakMsbUJBQW1CLEtBQUssU0FBUztZQUMvQixDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsbUJBQW1CLENBQUM7WUFDaEQsQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUU3QixNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFO1lBQ2hFLElBQUksRUFBRSxXQUFXO1lBQ2pCLFNBQVMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVM7WUFDakMsZUFBZSxFQUFFLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUU7WUFDdEQsZUFBZSxFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVM7U0FDekUsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3BCLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDO2dCQUM3QixNQUFNLEVBQUUsT0FBTztnQkFDZixLQUFLLEVBQUUsMkRBQTJEO2FBQ25FLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBRUQsa0ZBQWtGO0lBQzFFLGtCQUFrQixDQUFDLGNBQW1DO1FBQzVELE1BQU0sR0FBRyxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxLQUFLLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDN0UsSUFBSSxHQUFHLEVBQUUsSUFBSSxLQUFLLFdBQVcsSUFBSSxHQUFHLENBQUMsZUFBZSxLQUFLLFNBQVM7WUFBRSxPQUFPLFNBQVMsQ0FBQztRQUVyRixNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsZUFBMEMsQ0FBQztRQUU5RCxPQUFPLE1BQU0sQ0FBQyxVQUFVLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ25GLENBQUM7SUFFRCxzRkFBc0Y7SUFDOUUsa0JBQWtCLENBQ3hCLGNBQW1DO1FBSW5DLE1BQU0sR0FBRyxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxLQUFLLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDN0UsSUFBSSxHQUFHLEVBQUUsSUFBSSxLQUFLLFdBQVcsSUFBSSxHQUFHLENBQUMsZUFBZSxLQUFLLFNBQVM7WUFBRSxPQUFPLFNBQVMsQ0FBQztRQUNyRixJQUFJLENBQUMsQ0FBQyxXQUFXLElBQUksR0FBRyxDQUFDLGVBQWUsQ0FBQztZQUFFLE9BQU8sU0FBUyxDQUFDO1FBRTVELE9BQU8sR0FBdUYsQ0FBQztJQUNqRyxDQUFDO0lBRU8sS0FBSyxDQUFDLHNCQUFzQixDQUNsQyxJQUFnQyxFQUNoQyxNQUF3RixFQUN4RixtQkFBNEI7UUFFNUIsSUFBSSxtQkFBbUIsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUN0QyxPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLE1BQU0sRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7UUFDL0QsQ0FBQztRQUVELE1BQU0sRUFBRSxjQUFjLEVBQUUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO1FBRTFFLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUU7WUFDaEUsSUFBSSxFQUFFLFdBQVc7WUFDakIsU0FBUyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUztZQUNqQyxlQUFlLEVBQUU7Z0JBQ2YsR0FBRyxNQUFNLENBQUMsZUFBZTtnQkFDekIsY0FBYyxFQUFFLGNBQXdCO2dCQUN4QyxZQUFZLEVBQUUsS0FBSztnQkFDbkIsVUFBVSxFQUFFLFVBQVU7YUFDdkI7WUFDRCxlQUFlLEVBQUUsRUFBRSxNQUFNLEVBQUUsY0FBd0IsRUFBRTtTQUN0RCxDQUFDLENBQUM7UUFFSCxPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLGNBQXdCLEVBQUUsQ0FBQyxDQUFDO0lBQ2xHLENBQUM7SUFFTyxLQUFLLENBQUMseUJBQXlCLENBQ3JDLElBQWdDLEVBQ2hDLGNBQW1DO1FBRW5DLE1BQU0sRUFBRSxnQkFBZ0IsRUFBRSxjQUFjLEVBQUUsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDO1FBQ2xFLHVGQUF1RjtRQUN2RixNQUFNLEtBQUssR0FBVSxFQUFFLEdBQUcsRUFBRSxJQUFJLElBQUksRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzFFLE1BQU0sU0FBUyxHQUFHLElBQUksR0FBRyxFQUFVLENBQUM7UUFFcEMsSUFBSSxhQUFpQyxDQUFDO1FBQ3RDLE1BQU0sV0FBVyxHQUFHLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFO1lBQzlFLGlGQUFpRjtZQUNqRixJQUFJLGFBQWEsS0FBSyxTQUFTLElBQUksU0FBUyxDQUFDLElBQUksR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDdEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFnQyxDQUFDO1lBQzVFLENBQUM7WUFFRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsRUFBRSxjQUFjLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFFNUYsMEZBQTBGO1lBQzFGLG9CQUFvQjtZQUNwQixJQUFJLEtBQUssQ0FBQyxPQUFPLEtBQUssSUFBSTtnQkFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztZQUV6RixNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxLQUFLLElBQUksQ0FBQztZQUN2QyxJQUFJLE9BQU87Z0JBQUUsYUFBYSxHQUFHLE1BQU0sQ0FBQztZQUVwQyxPQUFPO2dCQUNMLE1BQU07Z0JBQ04sT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxhQUFhO2dCQUM1QyxVQUFVLEVBQUUsS0FBSyxDQUFDLFVBQVU7YUFDQyxDQUFDO1FBQ2xDLENBQUMsQ0FBQyxDQUFDO1FBRUgsMEZBQTBGO1FBQzFGLDREQUE0RDtRQUM1RCxJQUFJLFNBQVMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDdkIsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRTtnQkFDaEUsSUFBSSxFQUFFLFdBQVc7Z0JBQ2pCLFNBQVMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVM7Z0JBQ2pDLGVBQWUsRUFBRTtvQkFDZixXQUFXO29CQUNYLFdBQVcsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRTtvQkFDcEMsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRO29CQUN4QixTQUFTLEVBQUUsQ0FBQyxHQUFHLFNBQVMsQ0FBQztpQkFDMUI7YUFDRixDQUFDLENBQUM7WUFFSCxPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLE1BQU0sRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7UUFDL0QsQ0FBQztRQUVELE1BQU0sWUFBWSxHQUFHLGFBQWEsS0FBSyxTQUFTLENBQUM7UUFDakQsTUFBTSxjQUFjLEdBQUcsYUFBYSxJQUFJLGNBQWMsQ0FBQztRQUV2RCw4RkFBOEY7UUFDOUYsK0ZBQStGO1FBQy9GLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDO1lBQzNDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3hDLE1BQU0sSUFBSSxtQ0FBMEIsQ0FDbEMseUJBQXlCLGNBQWMsNkNBQTZDLE9BQU8sR0FBRyxDQUMvRixDQUFDO1FBQ0osQ0FBQztRQUVELE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUU7WUFDaEUsSUFBSSxFQUFFLFdBQVc7WUFDakIsU0FBUyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUztZQUNqQyxlQUFlLEVBQUU7Z0JBQ2YsV0FBVztnQkFDWCxjQUFjO2dCQUNkLFlBQVk7Z0JBQ1osV0FBVyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFO2dCQUNwQyxRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVE7YUFDekI7WUFDRCxlQUFlLEVBQUUsRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFFO1NBQzVDLENBQUMsQ0FBQztRQUVILE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFFRCxnR0FBZ0c7SUFDaEcsbUZBQW1GO0lBQzNFLGFBQWEsQ0FDbkIsTUFBYyxFQUNkLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBK0IsRUFDdkQsY0FBbUMsRUFDbkMsS0FBWTtRQUVaLE1BQU0sU0FBUyxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDL0MsSUFBSSxJQUFBLCtDQUE2QixFQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQ3hDLE1BQU0sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FDMUQsTUFBTSxFQUNOLElBQUksRUFDSixjQUFjLEVBQ2QsS0FBSyxDQUNOLENBQUM7Z0JBRUYsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEVBQUUsS0FBSyxFQUFFLEdBQUcsTUFBTSxFQUFxQixFQUFFLENBQUM7WUFDakYsQ0FBQztZQUVELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLGNBQWMsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUUzRSxPQUFPO2dCQUNMLE9BQU8sRUFBRSxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEtBQUssSUFBSTtnQkFDdEQsU0FBUyxFQUFFLE1BQU0sQ0FBQyxTQUFTLElBQUksRUFBRTtnQkFDakMsTUFBTSxFQUFFO29CQUNOLEtBQUs7b0JBQ0wsR0FBRyxFQUFFLE1BQU0sQ0FBQyxHQUFHO29CQUNmLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxJQUFJLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztvQkFDL0MsR0FBRyxDQUFDLE1BQU0sQ0FBQyxPQUFPLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO2lCQUNoQzthQUNyQixDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7UUFDSCxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQ3JCLFVBQVUsRUFDVixTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUN0QyxDQUFDO1FBRUYsT0FBTztZQUNMLE9BQU87WUFDUCxTQUFTLEVBQUUsT0FBTyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUM5RSxHQUFHLEVBQUUsT0FBTyxLQUFLLElBQUk7WUFDckIsVUFBVSxFQUFFLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO1NBQ2pELENBQUM7SUFDSixDQUFDO0lBRU8saUJBQWlCLENBQ3ZCLE1BQWMsRUFDZCxTQUFpQyxFQUNqQyxjQUFtQyxFQUNuQyxLQUFZO1FBRVosTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFNBQVMsRUFBRSxjQUFjLENBQUMsQ0FBQztRQUV2RSxJQUFJLFFBQVEsQ0FBQyxLQUFLLEtBQUssWUFBWSxFQUFFLENBQUM7WUFDcEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDMUIsTUFBTSxJQUFJLHdDQUErQixDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDekUsQ0FBQztZQUVELE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3JFLENBQUM7UUFFRCxnR0FBZ0c7UUFDaEcsMEZBQTBGO1FBQzFGLHlFQUF5RTtRQUN6RSxJQUFJLFFBQVEsQ0FBQyxLQUFLLEtBQUssS0FBSyxFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLCtEQUErRCxFQUFFO2dCQUMzRixHQUFHLElBQUksQ0FBQyxNQUFNO2dCQUNkLFlBQVksRUFBRSxTQUFTLENBQUMsWUFBWTtnQkFDcEMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxTQUFTO2dCQUM5QixNQUFNLEVBQUUsUUFBUSxDQUFDLE1BQU07YUFDeEIsQ0FBQyxDQUFDO1lBRUgsT0FBTyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNoRCxDQUFDO1FBRUQsTUFBTSxHQUFHLEdBQUcsSUFBQSwyQ0FBZ0IsRUFBQyxTQUFTLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN6RixJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVU7WUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFFMUMsTUFBTSxPQUFPLEdBQUcsRUFBRSxPQUFPLEVBQUUsR0FBRyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxFQUFFLEdBQUcsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFFbkYsdUZBQXVGO1FBQ3ZGLE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxDQUFDLFVBQVUsS0FBSyxNQUFNLElBQUksR0FBRyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsQ0FBQztJQUN4RixDQUFDO0lBRUQsZ0dBQWdHO0lBQ3hGLG1CQUFtQixDQUN6QixTQUFpQyxFQUNqQyxNQUFvRSxFQUNwRSxLQUFZO1FBRVosTUFBTSxTQUFTLEdBQWEsRUFBRSxDQUFDO1FBQy9CLElBQUksT0FBTyxHQUFHLENBQUMsQ0FBQztRQUNoQixJQUFJLFNBQVMsR0FBRyxDQUFDLENBQUM7UUFFbEIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFO1lBQzVDLE1BQU0sR0FBRyxHQUFHLEtBQUs7Z0JBQ2YsQ0FBQyxDQUFDLElBQUEsMkNBQWdCLEVBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsU0FBUyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUM7Z0JBQ3JFLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFFVCxJQUFJLEdBQUcsS0FBSyxJQUFJLEVBQUUsQ0FBQztnQkFDakIsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUMzQixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sU0FBUyxJQUFJLENBQUMsQ0FBQztnQkFDZixJQUFJLEdBQUc7b0JBQUUsT0FBTyxJQUFJLENBQUMsQ0FBQztZQUN4QixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxNQUFNLE9BQU8sR0FBRyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQ25GLE1BQU0sVUFBVSxHQUFHLFNBQVMsQ0FBQyxVQUErRCxDQUFDO1FBQzdGLCtGQUErRjtRQUMvRiw0Q0FBNEM7UUFDNUMsTUFBTSxPQUFPLEdBQUc7WUFDZCxHQUFHLEVBQUUsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTO1lBQ25DLEtBQUssRUFBRSxPQUFPLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVM7WUFDOUMsSUFBSSxFQUFFLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUztTQUN0QyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRWQsSUFBSSxPQUFPLEtBQUssU0FBUztZQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxDQUFDO1FBQzVELElBQUksU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDO1lBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxDQUFDO1FBQ25FLHVGQUF1RjtRQUN2RixJQUFJLFNBQVMsS0FBSyxDQUFDO1lBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLENBQUM7UUFFcEQsT0FBTyxFQUFFLEdBQUcsRUFBRSxVQUFVLEtBQUssS0FBSyxFQUFFLE9BQU8sRUFBRSxDQUFDO0lBQ2hELENBQUM7SUFFRCw4RkFBOEY7SUFDOUYsbUZBQW1GO0lBQzNFLHFCQUFxQixDQUMzQixTQUFpQyxFQUNqQyxjQUFtQztRQUtuQyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQy9DLElBQUksQ0FBQyxFQUFFLENBQ0wsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEtBQUssMEJBQVEsQ0FBQyxVQUFVO1lBQ2hELElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxLQUFLLFNBQVMsQ0FBQyxZQUFZLENBQ3JELENBQUM7UUFDRixNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsVUFBVTtZQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSx5QkFBeUIsRUFBRSxDQUFDO1FBRTVFLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFFeEUsSUFBSSxJQUFBLDBDQUFvQixFQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7WUFDcEMsT0FBTztnQkFDTCxLQUFLLEVBQUUsWUFBWTtnQkFDbkIsTUFBTSxFQUFFLFNBQVMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFO29CQUMzQyxNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsZUFFeEIsQ0FBQztvQkFDRixNQUFNLEtBQUssR0FBRyxNQUFNLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO29CQUN4RSxNQUFNLFFBQVEsR0FBRyxJQUFBLDZCQUFpQixFQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLENBQUM7b0JBRXZFLE9BQU8sS0FBSyxJQUFJLE9BQU8sSUFBSSxLQUFLO3dCQUM5QixDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUssRUFBRTt3QkFDL0MsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQztnQkFDakMsQ0FBQyxDQUFDO2FBQ0gsQ0FBQztRQUNKLENBQUM7UUFFRCxJQUFJLFNBQVMsRUFBRSxJQUFJLEtBQUssYUFBYTtZQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxrQkFBa0IsRUFBRSxDQUFDO1FBRTNGLE1BQU0sS0FBSyxHQUFHLFNBQVMsQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3pGLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLE9BQU8sSUFBSSxLQUFLLENBQUM7WUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQztRQUV2RixPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzdDLENBQUM7SUFFTyxjQUFjLENBQ3BCLElBQTZCLEVBQzdCLG1CQUE0QjtRQUU1QixNQUFNLE1BQU0sR0FBRyxpQ0FBZ0IsQ0FBQyxTQUFVLENBQUMsU0FBUyxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFFMUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNwQixNQUFNLElBQUksdUJBQWMsQ0FDdEIsNEJBQTRCLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FDakYsQ0FBQztRQUNKLENBQUM7UUFFRCxNQUFNLEVBQUUsY0FBYyxFQUFFLEdBQUcsTUFBTSxDQUFDLElBQWtDLENBQUM7UUFFckUsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUM7WUFDM0MsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDeEMsTUFBTSxJQUFJLHVCQUFjLENBQ3RCLFdBQVcsY0FBYyw2Q0FBNkMsT0FBTyxHQUFHLENBQ2pGLENBQUM7UUFDSixDQUFDO1FBRUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQztJQUMzRCxDQUFDO0lBRU8sS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUE2QjtRQUMvQyxNQUFNLElBQUksR0FBRyxJQUFJLGdDQUFxQixDQUFDO1lBQ3JDLElBQUksRUFBRSx1QkFBdUI7WUFDN0IsV0FBVyxFQUNULCtDQUErQztnQkFDL0Msc0RBQXNEO2dCQUN0RCx5QkFBeUI7WUFDM0IsTUFBTSxFQUFFLE9BQUMsQ0FBQyxNQUFNLENBQUM7Z0JBQ2YsU0FBUyxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsaUNBQWlDLENBQUM7Z0JBQ2pFLFFBQVEsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLDhDQUE4QyxDQUFDO2dCQUM3RSxNQUFNLEVBQUUsT0FBQztxQkFDTixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztxQkFDbEIsUUFBUSxFQUFFO3FCQUNWLFFBQVEsQ0FBQyx1RUFBdUUsQ0FBQzthQUNyRixDQUFDO1lBQ0YsSUFBSSxFQUFFLFNBQVM7U0FDaEIsQ0FBQyxDQUFDO1FBRUgsTUFBTSxRQUFRLEdBQUc7WUFDZixJQUFJLENBQUMsbUJBQW1CLEVBQUU7WUFDMUIsR0FBRyxDQUFDLE1BQU0sSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7WUFDNUMsSUFBSSx3QkFBYSxDQUFDLHFCQUFxQixDQUFDO1lBQ3hDLElBQUksdUJBQVksQ0FBQyxpQkFBaUIsSUFBSSxDQUFDLE1BQU0sSUFBSSxxQ0FBcUMsRUFBRSxDQUFDO1NBQzFGLENBQUM7UUFFRixNQUFNLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQWtCLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUV4RSxzRkFBc0Y7UUFDdEYsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQ2hFLE1BQU0sSUFBSSwrQkFBc0IsQ0FDOUIsSUFBSSxDQUFDLElBQUksRUFDVCxVQUFVLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxtQ0FBbUMsQ0FDekUsQ0FBQztRQUNKLENBQUM7UUFFRCxPQUFPLEVBQUUsY0FBYyxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNwRSxDQUFDO0NBQ0Y7QUFoYkQsd0NBZ2JDIn0=
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { RunStore } from '../ports/run-store';
|
|
2
|
+
import type { StepExecutionData, StepIteration } from '../types/step-execution-data';
|
|
3
|
+
import type { RecordRef } from '../types/validated/collection';
|
|
4
|
+
export declare function isSameRecord(a: RecordRef, b: RecordRef): boolean;
|
|
5
|
+
export interface IterationHandle {
|
|
6
|
+
get(): StepIteration;
|
|
7
|
+
set(iteration: StepIteration): Promise<void>;
|
|
8
|
+
}
|
|
9
|
+
export default class IterationRunStore implements RunStore {
|
|
10
|
+
private readonly base;
|
|
11
|
+
private readonly stepIndex;
|
|
12
|
+
private readonly sourceRecordRef;
|
|
13
|
+
private readonly handle;
|
|
14
|
+
private abandoned;
|
|
15
|
+
constructor(base: RunStore, stepIndex: number, sourceRecordRef: RecordRef, handle: IterationHandle);
|
|
16
|
+
abandon(): void;
|
|
17
|
+
init(): Promise<void>;
|
|
18
|
+
close(): Promise<void>;
|
|
19
|
+
getStepExecutions(runId: string): Promise<StepExecutionData[]>;
|
|
20
|
+
saveStepExecution(runId: string, stepExecution: StepExecutionData): Promise<void>;
|
|
21
|
+
deleteStepExecution(runId: string, stepIndex: number): Promise<void>;
|
|
22
|
+
private project;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=iteration-run-store.d.ts.map
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isSameRecord = isSameRecord;
|
|
4
|
+
const errors_1 = require("../errors");
|
|
5
|
+
const record_id_1 = require("../record-id");
|
|
6
|
+
const step_execution_data_1 = require("../types/step-execution-data");
|
|
7
|
+
// The fields a single-record execution and an iteration share.
|
|
8
|
+
const ITERATION_FIELDS = [
|
|
9
|
+
'selectedRecordRef',
|
|
10
|
+
'executionParams',
|
|
11
|
+
'pendingData',
|
|
12
|
+
'userConfirmation',
|
|
13
|
+
'executionResult',
|
|
14
|
+
'idempotencyPhase',
|
|
15
|
+
];
|
|
16
|
+
function isSameRecord(a, b) {
|
|
17
|
+
return (a.collectionName === b.collectionName &&
|
|
18
|
+
(0, record_id_1.serializeRecordId)(a.recordId) === (0, record_id_1.serializeRecordId)(b.recordId));
|
|
19
|
+
}
|
|
20
|
+
function asExecution(row, iteration) {
|
|
21
|
+
const execution = { type: row.type, stepIndex: row.stepIndex };
|
|
22
|
+
ITERATION_FIELDS.forEach(field => {
|
|
23
|
+
if (iteration[field] !== undefined)
|
|
24
|
+
execution[field] = iteration[field];
|
|
25
|
+
});
|
|
26
|
+
return execution;
|
|
27
|
+
}
|
|
28
|
+
// What one record's run of a step running once per record sees of the run: its own iteration as
|
|
29
|
+
// the step's execution, and every earlier per-record step narrowed to the same record, so the
|
|
30
|
+
// single-record executor runs unchanged and never reads another record's results.
|
|
31
|
+
class IterationRunStore {
|
|
32
|
+
constructor(base, stepIndex, sourceRecordRef, handle) {
|
|
33
|
+
this.abandoned = false;
|
|
34
|
+
this.base = base;
|
|
35
|
+
this.stepIndex = stepIndex;
|
|
36
|
+
this.sourceRecordRef = sourceRecordRef;
|
|
37
|
+
this.handle = handle;
|
|
38
|
+
}
|
|
39
|
+
// A run past its timeout keeps going, since nothing aborts it. Its saves are refused, which also
|
|
40
|
+
// stops it at the write-ahead marker a mutating step saves before its side effect.
|
|
41
|
+
abandon() {
|
|
42
|
+
this.abandoned = true;
|
|
43
|
+
}
|
|
44
|
+
init() {
|
|
45
|
+
return Promise.resolve();
|
|
46
|
+
}
|
|
47
|
+
close() {
|
|
48
|
+
return Promise.resolve();
|
|
49
|
+
}
|
|
50
|
+
async getStepExecutions(runId) {
|
|
51
|
+
const rows = await this.base.getStepExecutions(runId);
|
|
52
|
+
return rows.flatMap(row => this.project(row));
|
|
53
|
+
}
|
|
54
|
+
async saveStepExecution(runId, stepExecution) {
|
|
55
|
+
if (this.abandoned) {
|
|
56
|
+
throw new errors_1.StepStateError(`Run of step ${this.stepIndex} for a record was abandoned at its timeout`);
|
|
57
|
+
}
|
|
58
|
+
if (stepExecution.stepIndex !== this.stepIndex) {
|
|
59
|
+
await this.base.saveStepExecution(runId, stepExecution);
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
const iteration = { ...this.handle.get() };
|
|
63
|
+
ITERATION_FIELDS.forEach(field => {
|
|
64
|
+
const value = stepExecution[field];
|
|
65
|
+
if (value === undefined)
|
|
66
|
+
delete iteration[field];
|
|
67
|
+
else
|
|
68
|
+
iteration[field] = value;
|
|
69
|
+
});
|
|
70
|
+
await this.handle.set(iteration);
|
|
71
|
+
}
|
|
72
|
+
deleteStepExecution(runId, stepIndex) {
|
|
73
|
+
return this.base.deleteStepExecution(runId, stepIndex);
|
|
74
|
+
}
|
|
75
|
+
project(row) {
|
|
76
|
+
if (row.stepIndex === this.stepIndex) {
|
|
77
|
+
const own = this.handle.get();
|
|
78
|
+
return ITERATION_FIELDS.some(field => own[field] !== undefined)
|
|
79
|
+
? [asExecution(row, own)]
|
|
80
|
+
: [];
|
|
81
|
+
}
|
|
82
|
+
if ((0, step_execution_data_1.isPerRecordExecution)(row)) {
|
|
83
|
+
const match = row.iterations.find(it => isSameRecord(it.sourceRecordRef, this.sourceRecordRef));
|
|
84
|
+
return match ? [asExecution(row, match)] : [];
|
|
85
|
+
}
|
|
86
|
+
if (row.type === 'load-related-record' &&
|
|
87
|
+
row.executionResult !== undefined &&
|
|
88
|
+
'records' in row.executionResult) {
|
|
89
|
+
const record = row.executionResult.records.find(r => isSameRecord(r, this.sourceRecordRef));
|
|
90
|
+
if (!record)
|
|
91
|
+
return [];
|
|
92
|
+
return [{ ...row, executionResult: { relation: row.executionResult.relation, record } }];
|
|
93
|
+
}
|
|
94
|
+
return [row];
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
exports.default = IterationRunStore;
|
|
98
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXRlcmF0aW9uLXJ1bi1zdG9yZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9leGVjdXRvcnMvaXRlcmF0aW9uLXJ1bi1zdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWtCQSxvQ0FLQztBQW5CRCxzQ0FBMkM7QUFDM0MsNENBQWlEO0FBQ2pELHNFQUFvRTtBQUVwRSwrREFBK0Q7QUFDL0QsTUFBTSxnQkFBZ0IsR0FBRztJQUN2QixtQkFBbUI7SUFDbkIsaUJBQWlCO0lBQ2pCLGFBQWE7SUFDYixrQkFBa0I7SUFDbEIsaUJBQWlCO0lBQ2pCLGtCQUFrQjtDQUNWLENBQUM7QUFFWCxTQUFnQixZQUFZLENBQUMsQ0FBWSxFQUFFLENBQVk7SUFDckQsT0FBTyxDQUNMLENBQUMsQ0FBQyxjQUFjLEtBQUssQ0FBQyxDQUFDLGNBQWM7UUFDckMsSUFBQSw2QkFBaUIsRUFBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssSUFBQSw2QkFBaUIsRUFBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQ2hFLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBUyxXQUFXLENBQUMsR0FBc0IsRUFBRSxTQUF3QjtJQUNuRSxNQUFNLFNBQVMsR0FBNEIsRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsR0FBRyxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBRXhGLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUMvQixJQUFJLFNBQVMsQ0FBQyxLQUFLLENBQUMsS0FBSyxTQUFTO1lBQUUsU0FBUyxDQUFDLEtBQUssQ0FBQyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxRSxDQUFDLENBQUMsQ0FBQztJQUVILE9BQU8sU0FBeUMsQ0FBQztBQUNuRCxDQUFDO0FBT0QsZ0dBQWdHO0FBQ2hHLDhGQUE4RjtBQUM5RixrRkFBa0Y7QUFDbEYsTUFBcUIsaUJBQWlCO0lBT3BDLFlBQ0UsSUFB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
|
|
@@ -17,16 +17,20 @@ export default class LoadRelatedRecordStepExecutor extends RecordStepExecutor<Lo
|
|
|
17
17
|
private collectCandidateIds;
|
|
18
18
|
private extractReferenceFieldValue;
|
|
19
19
|
private resolveAndLoadAutomatic;
|
|
20
|
+
private get isMultiple();
|
|
21
|
+
private refuseRelationSwitch;
|
|
22
|
+
private multiplePendingFields;
|
|
23
|
+
private collectMultipleCandidates;
|
|
24
|
+
private resolveAndLoadRecordsAutomatic;
|
|
25
|
+
private resolveRecordsFromSelection;
|
|
20
26
|
private fetchXToOneCandidate;
|
|
21
27
|
private resolveFromSelection;
|
|
22
28
|
private selectBestFromRelatedData;
|
|
23
29
|
private fetchRelatedData;
|
|
24
30
|
private persistSkip;
|
|
25
31
|
private persistAndReturn;
|
|
32
|
+
private get pickerAi();
|
|
26
33
|
private relationOptionLabel;
|
|
27
34
|
private selectRelationToFollow;
|
|
28
|
-
/** AI call 1 for HasMany: selects the most relevant fields to compare candidates. */
|
|
29
|
-
private selectRelevantFields;
|
|
30
|
-
private selectBestRecordIndex;
|
|
31
35
|
}
|
|
32
36
|
//# sourceMappingURL=load-related-record-step-executor.d.ts.map
|