@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
|
@@ -20,10 +20,20 @@ export interface AvailableRunsBatch {
|
|
|
20
20
|
pending: AvailableRunDispatch[];
|
|
21
21
|
malformed: MalformedRunInfo[];
|
|
22
22
|
}
|
|
23
|
+
export type RenewRunLockResult = {
|
|
24
|
+
status: 'renewed';
|
|
25
|
+
lockedAt: string;
|
|
26
|
+
} | {
|
|
27
|
+
status: 'refused';
|
|
28
|
+
} | {
|
|
29
|
+
status: 'unavailable';
|
|
30
|
+
};
|
|
23
31
|
export interface WorkflowPort {
|
|
24
32
|
getAvailableRuns(count: number): Promise<AvailableRunsBatch>;
|
|
25
33
|
getAvailableRun(runId: string): Promise<AvailableRunDispatch | null>;
|
|
26
|
-
updateStepExecution(runId: string, stepOutcome: StepOutcome
|
|
34
|
+
updateStepExecution(runId: string, stepOutcome: StepOutcome, options?: {
|
|
35
|
+
clearsError?: boolean;
|
|
36
|
+
}): Promise<AvailableRunDispatch | null>;
|
|
27
37
|
getCollectionSchema(collectionName: string, runId: string): Promise<CollectionSchema>;
|
|
28
38
|
getMcpServerConfigs(): Promise<Record<string, ToolConfig>>;
|
|
29
39
|
reportExecutorMetadata(params: {
|
|
@@ -33,5 +43,6 @@ export interface WorkflowPort {
|
|
|
33
43
|
id: number;
|
|
34
44
|
}): Promise<boolean>;
|
|
35
45
|
releaseRun(runId: string, lockedAt: string | null): Promise<void>;
|
|
46
|
+
renewRunLock(runId: string, lockedAt: string): Promise<RenewRunLockResult>;
|
|
36
47
|
}
|
|
37
48
|
//# sourceMappingURL=workflow-port.d.ts.map
|
package/dist/runner.d.ts
CHANGED
package/dist/runner.js
CHANGED
|
@@ -122,16 +122,17 @@ class Runner {
|
|
|
122
122
|
}
|
|
123
123
|
if (!dispatch)
|
|
124
124
|
throw new errors_1.RunNotFoundError(runId);
|
|
125
|
-
const { step
|
|
125
|
+
const { step } = dispatch;
|
|
126
126
|
if (options?.bearerUserId !== undefined && step.user.id !== options.bearerUserId) {
|
|
127
127
|
throw new errors_1.UserMismatchError(runId, options.bearerUserId, step.user.id);
|
|
128
128
|
}
|
|
129
129
|
// Not awaited: the chain's outcome travels through updateStepExecution, never through this
|
|
130
130
|
// response.
|
|
131
|
-
this.dispatchDetached(
|
|
131
|
+
this.dispatchDetached(dispatch, options?.pendingData);
|
|
132
132
|
}
|
|
133
|
-
dispatchDetached(
|
|
134
|
-
|
|
133
|
+
dispatchDetached(dispatch, incomingPendingData) {
|
|
134
|
+
const { step } = dispatch;
|
|
135
|
+
void this.executeStep(dispatch, incomingPendingData).catch(error => {
|
|
135
136
|
const context = {
|
|
136
137
|
runId: step.runId,
|
|
137
138
|
stepId: step.stepId,
|
|
@@ -189,7 +190,7 @@ class Runner {
|
|
|
189
190
|
const slotsLeft = Math.max(0, defaults_1.MAX_CONCURRENT_RUNS - this.inFlightRuns.size);
|
|
190
191
|
const dispatchable = claimed.slice(0, slotsLeft);
|
|
191
192
|
const overCapacity = claimed.slice(slotsLeft);
|
|
192
|
-
dispatchable.forEach(d => this.dispatchDetached(d
|
|
193
|
+
dispatchable.forEach(d => this.dispatchDetached(d));
|
|
193
194
|
if (overCapacity.length) {
|
|
194
195
|
this.logger('Info', 'Poll answered with more runs than free slots, handing the extra back', {
|
|
195
196
|
runIds: overCapacity.map(d => d.step.runId),
|
|
@@ -254,17 +255,20 @@ class Runner {
|
|
|
254
255
|
});
|
|
255
256
|
}
|
|
256
257
|
}
|
|
257
|
-
executeStep(
|
|
258
|
+
executeStep(dispatch, incomingPendingData) {
|
|
258
259
|
// The tracked promise covers the entire auto-chain for this run plus the map cleanup —
|
|
259
260
|
// register it once, clean up once. Storing per-step entries (or Promise.resolve()) would
|
|
260
261
|
// break drain: Promise.allSettled would see already-resolved entries and stop waiting while
|
|
261
262
|
// the chain is still running.
|
|
262
|
-
return this.inFlightRuns.track(step.runId, this.doExecuteStep(
|
|
263
|
+
return this.inFlightRuns.track(dispatch.step.runId, this.doExecuteStep(dispatch, incomingPendingData));
|
|
263
264
|
}
|
|
264
|
-
async doExecuteStep(
|
|
265
|
+
async doExecuteStep(dispatch, incomingPendingData) {
|
|
266
|
+
const { step } = dispatch;
|
|
265
267
|
let currentStep = step;
|
|
266
|
-
let currentToken = forestServerToken;
|
|
268
|
+
let currentToken = dispatch.auth.forestServerToken;
|
|
267
269
|
let currentIncomingData = incomingPendingData;
|
|
270
|
+
// The lock this chain holds on the run: a step running once per record renews it per record.
|
|
271
|
+
const lock = { lockedAt: dispatch.lockedAt };
|
|
268
272
|
let chainedCount = 0; // additional steps chained after the initial one
|
|
269
273
|
const maxDepth = this.config.maxChainDepth ?? defaults_1.DEFAULT_MAX_CHAIN_DEPTH;
|
|
270
274
|
this.logger('Debug', 'Run started executing', {
|
|
@@ -279,7 +283,7 @@ class Runner {
|
|
|
279
283
|
while (true) {
|
|
280
284
|
let result;
|
|
281
285
|
try {
|
|
282
|
-
const executor = await step_executor_factory_1.default.create(currentStep, this.contextConfig, this.config.activityLogPortFactory.forRun(currentToken), (mcpServerId, userId) => this.remoteToolFetcher.fetch(mcpServerId, userId), currentIncomingData, currentToken);
|
|
286
|
+
const executor = await step_executor_factory_1.default.create(currentStep, { ...this.contextConfig, runControl: this.runControlFor(currentStep.runId, lock) }, this.config.activityLogPortFactory.forRun(currentToken), (mcpServerId, userId) => this.remoteToolFetcher.fetch(mcpServerId, userId), currentIncomingData, currentToken);
|
|
283
287
|
result = await executor.execute();
|
|
284
288
|
}
|
|
285
289
|
catch (error) {
|
|
@@ -310,9 +314,26 @@ class Runner {
|
|
|
310
314
|
}
|
|
311
315
|
return;
|
|
312
316
|
}
|
|
317
|
+
// A lost lock means another holder or an abort owns the run now: report nothing. A yield
|
|
318
|
+
// hands the run back, its records done so far saved, for whoever claims it next.
|
|
319
|
+
if (result.interrupted === 'stopped') {
|
|
320
|
+
this.logger('Info', 'Step stopped between records: the run was aborted or its lock lost', {
|
|
321
|
+
runId: currentStep.runId,
|
|
322
|
+
stepIndex: currentStep.stepIndex,
|
|
323
|
+
});
|
|
324
|
+
return;
|
|
325
|
+
}
|
|
326
|
+
if (result.interrupted === 'yielded') {
|
|
327
|
+
await this.config.workflowPort.releaseRun(currentStep.runId, lock.lockedAt);
|
|
328
|
+
return;
|
|
329
|
+
}
|
|
313
330
|
let nextDispatch;
|
|
314
331
|
try {
|
|
315
|
-
|
|
332
|
+
// Only a step dispatched with an error asks for it to be cleared, so every other report
|
|
333
|
+
// stays exactly what it was.
|
|
334
|
+
nextDispatch = currentStep.carriesError
|
|
335
|
+
? await this.config.workflowPort.updateStepExecution(currentStep.runId, result.stepOutcome, { clearsError: true })
|
|
336
|
+
: await this.config.workflowPort.updateStepExecution(currentStep.runId, result.stepOutcome);
|
|
316
337
|
}
|
|
317
338
|
catch (error) {
|
|
318
339
|
this.logger('Error', 'Failed to report step outcome', {
|
|
@@ -373,6 +394,7 @@ class Runner {
|
|
|
373
394
|
chainedCount += 1;
|
|
374
395
|
currentStep = nextDispatch.step;
|
|
375
396
|
currentToken = nextDispatch.auth.forestServerToken;
|
|
397
|
+
lock.lockedAt = nextDispatch.lockedAt;
|
|
376
398
|
currentIncomingData = undefined; // chained steps never carry pending data
|
|
377
399
|
}
|
|
378
400
|
/* eslint-enable no-await-in-loop, no-constant-condition */
|
|
@@ -380,6 +402,24 @@ class Runner {
|
|
|
380
402
|
handBack(dispatch) {
|
|
381
403
|
return this.config.workflowPort.releaseRun(dispatch.step.runId, dispatch.lockedAt);
|
|
382
404
|
}
|
|
405
|
+
// Asked before each record: yield once stopping, so a drain never waits on a long record loop.
|
|
406
|
+
// A run held under no lock has nothing to renew.
|
|
407
|
+
runControlFor(runId, lock) {
|
|
408
|
+
return {
|
|
409
|
+
beforeRecord: async () => {
|
|
410
|
+
if (this._state === 'draining' || this._state === 'stopped')
|
|
411
|
+
return 'yield';
|
|
412
|
+
if (lock.lockedAt === null)
|
|
413
|
+
return 'continue';
|
|
414
|
+
const renewal = await this.config.workflowPort.renewRunLock(runId, lock.lockedAt);
|
|
415
|
+
if (renewal.status === 'refused')
|
|
416
|
+
return 'stop';
|
|
417
|
+
if (renewal.status === 'renewed')
|
|
418
|
+
lock.lockedAt = renewal.lockedAt;
|
|
419
|
+
return 'continue';
|
|
420
|
+
},
|
|
421
|
+
};
|
|
422
|
+
}
|
|
383
423
|
get contextConfig() {
|
|
384
424
|
return {
|
|
385
425
|
aiModelPort: this.config.aiModelPort,
|
|
@@ -405,4 +445,4 @@ class Runner {
|
|
|
405
445
|
}
|
|
406
446
|
}
|
|
407
447
|
exports.default = Runner;
|
|
408
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVubmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3J1bm5lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQWFBLCtFQUE0RDtBQUM1RCx5Q0FBa0c7QUFDbEcscUNBT2tCO0FBQ2xCLDhGQUFvRTtBQUNwRSxzRkFBMkQ7QUFDM0QsZ0ZBQXNEO0FBQ3RELGlFQUF1RTtBQUN2RSwwRUFBaUQ7QUErQmpELHlHQUF5RztBQUN6RyxNQUFNLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLEdBQUcsT0FBTyxDQUFDLGlCQUFpQixDQUF3QixDQUFDO0FBRXhGLE1BQXFCLE1BQU07SUFTekIsWUFBWSxNQUFvQjtRQVB4QixpQkFBWSxHQUEwQixJQUFJLENBQUM7UUFDM0MsY0FBUyxHQUF5QixJQUFJLENBQUM7UUFDOUIsaUJBQVksR0FBRyxJQUFJLGdDQUFtQixFQUFFLENBQUM7UUFHbEQsV0FBTSxHQUFnQixNQUFNLENBQUM7UUFHbkMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxJQUFJLElBQUEsd0JBQW1CLEdBQUUsQ0FBQztRQUNyRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSw2QkFBaUIsQ0FDNUMsTUFBTSxDQUFDLFlBQVksRUFDbkIsTUFBTSxDQUFDLFdBQVcsRUFDbEIsSUFBSSxDQUFDLE1BQU0sRUFDWCxNQUFNLENBQUMsb0JBQW9CLENBQzVCLENBQUM7SUFDSixDQUFDO0lBRUQsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxLQUFLLENBQUMsS0FBSztRQUNULElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUM1RCxNQUFNLElBQUksS0FBSyxDQUFDLGlEQUFpRCxDQUFDLENBQUM7UUFDckUs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
|
|
448
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVubmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3J1bm5lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQWFBLCtFQUE0RDtBQUM1RCx5Q0FBa0c7QUFDbEcscUNBT2tCO0FBQ2xCLDhGQUFvRTtBQUNwRSxzRkFBMkQ7QUFDM0QsZ0ZBQXNEO0FBQ3RELGlFQUF1RTtBQUN2RSwwRUFBaUQ7QUErQmpELHlHQUF5RztBQUN6RyxNQUFNLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLEdBQUcsT0FBTyxDQUFDLGlCQUFpQixDQUF3QixDQUFDO0FBRXhGLE1BQXFCLE1BQU07SUFTekIsWUFBWSxNQUFvQjtRQVB4QixpQkFBWSxHQUEwQixJQUFJLENBQUM7UUFDM0MsY0FBUyxHQUF5QixJQUFJLENBQUM7UUFDOUIsaUJBQVksR0FBRyxJQUFJLGdDQUFtQixFQUFFLENBQUM7UUFHbEQsV0FBTSxHQUFnQixNQUFNLENBQUM7UUFHbkMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxJQUFJLElBQUEsd0JBQW1CLEdBQUUsQ0FBQztRQUNyRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSw2QkFBaUIsQ0FDNUMsTUFBTSxDQUFDLFlBQVksRUFDbkIsTUFBTSxDQUFDLFdBQVcsRUFDbEIsSUFBSSxDQUFDLE1BQU0sRUFDWCxNQUFNLENBQUMsb0JBQW9CLENBQzVCLENBQUM7SUFDSixDQUFDO0lBRUQsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxLQUFLLENBQUMsS0FBSztRQUNULElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUM1RCxNQUFNLElBQUksS0FBSyxDQUFDLGlEQUFpRCxDQUFDLENBQUM7UUFDckUs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
|
|
@@ -11,6 +11,10 @@ import type { BaseChatModel } from '@forestadmin/ai-proxy';
|
|
|
11
11
|
export type { AvailableStepExecution, CallScope, Step, StepUser };
|
|
12
12
|
export interface StepExecutionResult {
|
|
13
13
|
stepOutcome: StepOutcome;
|
|
14
|
+
interrupted?: 'stopped' | 'yielded';
|
|
15
|
+
}
|
|
16
|
+
export interface RunControl {
|
|
17
|
+
beforeRecord(): Promise<'continue' | 'stop' | 'yield'>;
|
|
14
18
|
}
|
|
15
19
|
export interface IStepExecutor {
|
|
16
20
|
execute(): Promise<StepExecutionResult>;
|
|
@@ -35,5 +39,7 @@ export interface ExecutionContext<TStep extends StepDefinition = StepDefinition>
|
|
|
35
39
|
readonly incomingPendingData?: unknown;
|
|
36
40
|
readonly stepTimeoutS?: number;
|
|
37
41
|
readonly aiInvokeTimeoutS?: number;
|
|
42
|
+
readonly runControl?: RunControl;
|
|
43
|
+
readonly perRecordLabel?: string;
|
|
38
44
|
}
|
|
39
45
|
//# sourceMappingURL=execution-context.d.ts.map
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { ActionFormField } from '../ports/agent-port';
|
|
2
2
|
import type { RecordId, RecordRef } from './validated/collection';
|
|
3
|
+
import type { ErrorKind } from './validated/step-outcome';
|
|
3
4
|
import type { LoadRelatedRecordConfirmation, McpConfirmation, TriggerActionConfirmation, UpdateRecordConfirmation } from '../http/pending-data-validators';
|
|
4
5
|
interface BaseStepExecutionData {
|
|
5
6
|
stepIndex: number;
|
|
@@ -11,19 +12,32 @@ export interface WithUserConfirmation<T extends Record<string, unknown> = Record
|
|
|
11
12
|
userConfirmation?: T;
|
|
12
13
|
}
|
|
13
14
|
export type ConditionNotLoadedReason = 'source-step-not-reached' | 'field-not-loaded';
|
|
15
|
+
/**
|
|
16
|
+
* `index` is the position in the definition's conditions at the same level. `met: null` = the
|
|
17
|
+
* value could not be evaluated. `reason` accompanies `met: null` only when nothing was read at all:
|
|
18
|
+
* a value read as null carries none, which is how the run view tells the two apart.
|
|
19
|
+
*/
|
|
20
|
+
interface ConditionLeafResult {
|
|
21
|
+
index: number;
|
|
22
|
+
met: boolean | null;
|
|
23
|
+
reason?: ConditionNotLoadedReason;
|
|
24
|
+
records?: {
|
|
25
|
+
matched: number;
|
|
26
|
+
evaluated: number;
|
|
27
|
+
unchecked?: string[];
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
interface ConditionGroupResult {
|
|
31
|
+
index: number;
|
|
32
|
+
met: boolean;
|
|
33
|
+
conditions: ConditionResult[];
|
|
34
|
+
}
|
|
35
|
+
export type ConditionResult = ConditionLeafResult | ConditionGroupResult;
|
|
14
36
|
export interface ConditionEvaluation {
|
|
15
37
|
option: string;
|
|
16
38
|
outcome: 'matched' | 'not-matched' | 'not-evaluated';
|
|
17
|
-
/**
|
|
18
|
-
|
|
19
|
-
* `reason` accompanies `met: null` only when nothing was read at all: a value read as null
|
|
20
|
-
* carries none, which is how the run view tells the two apart.
|
|
21
|
-
*/
|
|
22
|
-
conditions?: Array<{
|
|
23
|
-
index: number;
|
|
24
|
-
met: boolean | null;
|
|
25
|
-
reason?: ConditionNotLoadedReason;
|
|
26
|
-
}>;
|
|
39
|
+
/** Absent when outcome is 'not-evaluated'. */
|
|
40
|
+
conditions?: ConditionResult[];
|
|
27
41
|
}
|
|
28
42
|
export interface DeterministicConditionExecutionParams {
|
|
29
43
|
evaluations: ConditionEvaluation[];
|
|
@@ -31,13 +45,21 @@ export interface DeterministicConditionExecutionParams {
|
|
|
31
45
|
usedFallback: boolean;
|
|
32
46
|
evaluatedAt: string;
|
|
33
47
|
timezone: string;
|
|
48
|
+
unchecked?: string[];
|
|
49
|
+
selectedBy?: 'operator';
|
|
50
|
+
}
|
|
51
|
+
export interface PausedConditionExecutionParams {
|
|
52
|
+
evaluations: ConditionEvaluation[];
|
|
53
|
+
evaluatedAt: string;
|
|
54
|
+
timezone: string;
|
|
55
|
+
unchecked: string[];
|
|
34
56
|
}
|
|
35
57
|
export interface ConditionStepExecutionData extends BaseStepExecutionData {
|
|
36
58
|
type: 'condition';
|
|
37
59
|
executionParams: {
|
|
38
60
|
answer: string | null;
|
|
39
61
|
reasoning?: string;
|
|
40
|
-
} | DeterministicConditionExecutionParams;
|
|
62
|
+
} | DeterministicConditionExecutionParams | PausedConditionExecutionParams;
|
|
41
63
|
executionResult?: {
|
|
42
64
|
answer: string;
|
|
43
65
|
};
|
|
@@ -163,6 +185,8 @@ export interface LoadRelatedRecordPendingData {
|
|
|
163
185
|
availableRecordIds: LoadRelatedRecordCandidate[];
|
|
164
186
|
suggestedRecord?: LoadRelatedRecordCandidate;
|
|
165
187
|
suggestNoRecord?: boolean;
|
|
188
|
+
suggestedRecords?: LoadRelatedRecordCandidate[];
|
|
189
|
+
hasMoreRecords?: true;
|
|
166
190
|
}
|
|
167
191
|
export interface LoadRelatedRecordStepExecutionData extends BaseStepExecutionData, WithUserConfirmation<LoadRelatedRecordConfirmation> {
|
|
168
192
|
type: 'load-related-record';
|
|
@@ -172,6 +196,9 @@ export interface LoadRelatedRecordStepExecutionData extends BaseStepExecutionDat
|
|
|
172
196
|
executionResult?: {
|
|
173
197
|
relation: RelationRef;
|
|
174
198
|
record: RecordRef;
|
|
199
|
+
} | {
|
|
200
|
+
relation: RelationRef;
|
|
201
|
+
records: RecordRef[];
|
|
175
202
|
} | {
|
|
176
203
|
skipped: true;
|
|
177
204
|
};
|
|
@@ -187,8 +214,34 @@ export interface GuidanceStepExecutionData extends BaseStepExecutionData {
|
|
|
187
214
|
generatedByAi?: boolean;
|
|
188
215
|
};
|
|
189
216
|
}
|
|
217
|
+
type PerRecordExecution = ReadRecordStepExecutionData | UpdateRecordStepExecutionData | TriggerRecordActionStepExecutionData | LoadRelatedRecordStepExecutionData;
|
|
218
|
+
type IterationField<K extends string> = PerRecordExecution extends infer E ? E extends unknown ? K extends keyof E ? E[K] : never : never : never;
|
|
219
|
+
export interface StepIteration {
|
|
220
|
+
sourceRecordRef: RecordRef;
|
|
221
|
+
selectedRecordRef?: RecordRef;
|
|
222
|
+
attempt: number;
|
|
223
|
+
executionParams?: IterationField<'executionParams'>;
|
|
224
|
+
pendingData?: IterationField<'pendingData'>;
|
|
225
|
+
userConfirmation?: IterationField<'userConfirmation'>;
|
|
226
|
+
executionResult?: IterationField<'executionResult'>;
|
|
227
|
+
error?: string;
|
|
228
|
+
errorKind?: ErrorKind;
|
|
229
|
+
idempotencyPhase?: 'executing' | 'done';
|
|
230
|
+
finishedAt?: string;
|
|
231
|
+
}
|
|
232
|
+
export interface PerRecordStepExecutionData extends BaseStepExecutionData {
|
|
233
|
+
type: PerRecordExecution['type'];
|
|
234
|
+
iterations: StepIteration[];
|
|
235
|
+
selectedRecordRef?: undefined;
|
|
236
|
+
executionParams?: undefined;
|
|
237
|
+
pendingData?: undefined;
|
|
238
|
+
userConfirmation?: undefined;
|
|
239
|
+
executionResult?: undefined;
|
|
240
|
+
idempotencyPhase?: undefined;
|
|
241
|
+
}
|
|
242
|
+
export declare function isPerRecordExecution(execution: StepExecutionData | undefined): execution is PerRecordStepExecutionData;
|
|
190
243
|
export type ConfirmableStepExecutionData = UpdateRecordStepExecutionData | TriggerRecordActionStepExecutionData | McpStepExecutionData | LoadRelatedRecordStepExecutionData;
|
|
191
|
-
export type StepExecutionData = ConditionStepExecutionData | ReadRecordStepExecutionData | UpdateRecordStepExecutionData | TriggerRecordActionStepExecutionData | RecordStepExecutionData | LoadRelatedRecordStepExecutionData | McpStepExecutionData | GuidanceStepExecutionData;
|
|
244
|
+
export type StepExecutionData = ConditionStepExecutionData | ReadRecordStepExecutionData | UpdateRecordStepExecutionData | TriggerRecordActionStepExecutionData | RecordStepExecutionData | LoadRelatedRecordStepExecutionData | McpStepExecutionData | GuidanceStepExecutionData | PerRecordStepExecutionData;
|
|
192
245
|
export type ExecutedStepExecutionData = StepExecutionData;
|
|
193
246
|
export {};
|
|
194
247
|
//# sourceMappingURL=step-execution-data.d.ts.map
|
|
@@ -1,3 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
|
|
3
|
+
exports.isPerRecordExecution = isPerRecordExecution;
|
|
4
|
+
function isPerRecordExecution(execution) {
|
|
5
|
+
return Array.isArray(execution?.iterations);
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcC1leGVjdXRpb24tZGF0YS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlcy9zdGVwLWV4ZWN1dGlvbi1kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBNFVBLG9EQUlDO0FBSkQsU0FBZ0Isb0JBQW9CLENBQ2xDLFNBQXdDO0lBRXhDLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBRSxTQUFvRCxFQUFFLFVBQVUsQ0FBQyxDQUFDO0FBQzFGLENBQUMifQ==
|
|
@@ -26,45 +26,7 @@ export declare const StepSchema: z.ZodObject<{
|
|
|
26
26
|
and: "and";
|
|
27
27
|
or: "or";
|
|
28
28
|
}>;
|
|
29
|
-
conditions: z.ZodArray<z.
|
|
30
|
-
sourceStepId: z.ZodString;
|
|
31
|
-
fieldName: z.ZodString;
|
|
32
|
-
operator: z.ZodEnum<{
|
|
33
|
-
in: "in";
|
|
34
|
-
equal: "equal";
|
|
35
|
-
not_equal: "not_equal";
|
|
36
|
-
present: "present";
|
|
37
|
-
blank: "blank";
|
|
38
|
-
greater_than: "greater_than";
|
|
39
|
-
less_than: "less_than";
|
|
40
|
-
not_in: "not_in";
|
|
41
|
-
includes_all: "includes_all";
|
|
42
|
-
contains: "contains";
|
|
43
|
-
not_contains: "not_contains";
|
|
44
|
-
starts_with: "starts_with";
|
|
45
|
-
ends_with: "ends_with";
|
|
46
|
-
i_contains: "i_contains";
|
|
47
|
-
before: "before";
|
|
48
|
-
after: "after";
|
|
49
|
-
past: "past";
|
|
50
|
-
future: "future";
|
|
51
|
-
today: "today";
|
|
52
|
-
yesterday: "yesterday";
|
|
53
|
-
previous_x_days: "previous_x_days";
|
|
54
|
-
previous_x_days_to_date: "previous_x_days_to_date";
|
|
55
|
-
before_x_hours_ago: "before_x_hours_ago";
|
|
56
|
-
after_x_hours_ago: "after_x_hours_ago";
|
|
57
|
-
previous_week: "previous_week";
|
|
58
|
-
previous_month: "previous_month";
|
|
59
|
-
previous_quarter: "previous_quarter";
|
|
60
|
-
previous_year: "previous_year";
|
|
61
|
-
previous_week_to_date: "previous_week_to_date";
|
|
62
|
-
previous_month_to_date: "previous_month_to_date";
|
|
63
|
-
previous_quarter_to_date: "previous_quarter_to_date";
|
|
64
|
-
previous_year_to_date: "previous_year_to_date";
|
|
65
|
-
}>;
|
|
66
|
-
value: z.ZodOptional<z.ZodUnknown>;
|
|
67
|
-
}, z.core.$strip>>;
|
|
29
|
+
conditions: z.ZodArray<z.ZodType<import("./step-definition").DeterministicConditionNode, unknown, z.core.$ZodTypeInternals<import("./step-definition").DeterministicConditionNode, unknown>>>;
|
|
68
30
|
}, z.core.$strip>>;
|
|
69
31
|
fallbackOption: z.ZodString;
|
|
70
32
|
}, z.core.$strip>>;
|
|
@@ -122,6 +84,7 @@ export declare const StepSchema: z.ZodObject<{
|
|
|
122
84
|
selectedRecordStepId: z.ZodOptional<z.ZodString>;
|
|
123
85
|
relationName: z.ZodOptional<z.ZodString>;
|
|
124
86
|
filters: z.ZodOptional<z.ZodUnknown>;
|
|
87
|
+
multiple: z.ZodOptional<z.ZodBoolean>;
|
|
125
88
|
}, z.core.$strip>>;
|
|
126
89
|
prompt: z.ZodPipe<z.ZodOptional<z.ZodNullable<z.ZodString>>, z.ZodTransform<string, string>>;
|
|
127
90
|
aiConfigName: z.ZodPipe<z.ZodOptional<z.ZodNullable<z.ZodString>>, z.ZodTransform<string, string>>;
|
|
@@ -271,45 +234,7 @@ export declare const AvailableStepExecutionSchema: z.ZodObject<{
|
|
|
271
234
|
and: "and";
|
|
272
235
|
or: "or";
|
|
273
236
|
}>;
|
|
274
|
-
conditions: z.ZodArray<z.
|
|
275
|
-
sourceStepId: z.ZodString;
|
|
276
|
-
fieldName: z.ZodString;
|
|
277
|
-
operator: z.ZodEnum<{
|
|
278
|
-
in: "in";
|
|
279
|
-
equal: "equal";
|
|
280
|
-
not_equal: "not_equal";
|
|
281
|
-
present: "present";
|
|
282
|
-
blank: "blank";
|
|
283
|
-
greater_than: "greater_than";
|
|
284
|
-
less_than: "less_than";
|
|
285
|
-
not_in: "not_in";
|
|
286
|
-
includes_all: "includes_all";
|
|
287
|
-
contains: "contains";
|
|
288
|
-
not_contains: "not_contains";
|
|
289
|
-
starts_with: "starts_with";
|
|
290
|
-
ends_with: "ends_with";
|
|
291
|
-
i_contains: "i_contains";
|
|
292
|
-
before: "before";
|
|
293
|
-
after: "after";
|
|
294
|
-
past: "past";
|
|
295
|
-
future: "future";
|
|
296
|
-
today: "today";
|
|
297
|
-
yesterday: "yesterday";
|
|
298
|
-
previous_x_days: "previous_x_days";
|
|
299
|
-
previous_x_days_to_date: "previous_x_days_to_date";
|
|
300
|
-
before_x_hours_ago: "before_x_hours_ago";
|
|
301
|
-
after_x_hours_ago: "after_x_hours_ago";
|
|
302
|
-
previous_week: "previous_week";
|
|
303
|
-
previous_month: "previous_month";
|
|
304
|
-
previous_quarter: "previous_quarter";
|
|
305
|
-
previous_year: "previous_year";
|
|
306
|
-
previous_week_to_date: "previous_week_to_date";
|
|
307
|
-
previous_month_to_date: "previous_month_to_date";
|
|
308
|
-
previous_quarter_to_date: "previous_quarter_to_date";
|
|
309
|
-
previous_year_to_date: "previous_year_to_date";
|
|
310
|
-
}>;
|
|
311
|
-
value: z.ZodOptional<z.ZodUnknown>;
|
|
312
|
-
}, z.core.$strip>>;
|
|
237
|
+
conditions: z.ZodArray<z.ZodType<import("./step-definition").DeterministicConditionNode, unknown, z.core.$ZodTypeInternals<import("./step-definition").DeterministicConditionNode, unknown>>>;
|
|
313
238
|
}, z.core.$strip>>;
|
|
314
239
|
fallbackOption: z.ZodString;
|
|
315
240
|
}, z.core.$strip>>;
|
|
@@ -367,6 +292,7 @@ export declare const AvailableStepExecutionSchema: z.ZodObject<{
|
|
|
367
292
|
selectedRecordStepId: z.ZodOptional<z.ZodString>;
|
|
368
293
|
relationName: z.ZodOptional<z.ZodString>;
|
|
369
294
|
filters: z.ZodOptional<z.ZodUnknown>;
|
|
295
|
+
multiple: z.ZodOptional<z.ZodBoolean>;
|
|
370
296
|
}, z.core.$strip>>;
|
|
371
297
|
prompt: z.ZodPipe<z.ZodOptional<z.ZodNullable<z.ZodString>>, z.ZodTransform<string, string>>;
|
|
372
298
|
aiConfigName: z.ZodPipe<z.ZodOptional<z.ZodNullable<z.ZodString>>, z.ZodTransform<string, string>>;
|
|
@@ -408,45 +334,7 @@ export declare const AvailableStepExecutionSchema: z.ZodObject<{
|
|
|
408
334
|
and: "and";
|
|
409
335
|
or: "or";
|
|
410
336
|
}>;
|
|
411
|
-
conditions: z.ZodArray<z.
|
|
412
|
-
sourceStepId: z.ZodString;
|
|
413
|
-
fieldName: z.ZodString;
|
|
414
|
-
operator: z.ZodEnum<{
|
|
415
|
-
in: "in";
|
|
416
|
-
equal: "equal";
|
|
417
|
-
not_equal: "not_equal";
|
|
418
|
-
present: "present";
|
|
419
|
-
blank: "blank";
|
|
420
|
-
greater_than: "greater_than";
|
|
421
|
-
less_than: "less_than";
|
|
422
|
-
not_in: "not_in";
|
|
423
|
-
includes_all: "includes_all";
|
|
424
|
-
contains: "contains";
|
|
425
|
-
not_contains: "not_contains";
|
|
426
|
-
starts_with: "starts_with";
|
|
427
|
-
ends_with: "ends_with";
|
|
428
|
-
i_contains: "i_contains";
|
|
429
|
-
before: "before";
|
|
430
|
-
after: "after";
|
|
431
|
-
past: "past";
|
|
432
|
-
future: "future";
|
|
433
|
-
today: "today";
|
|
434
|
-
yesterday: "yesterday";
|
|
435
|
-
previous_x_days: "previous_x_days";
|
|
436
|
-
previous_x_days_to_date: "previous_x_days_to_date";
|
|
437
|
-
before_x_hours_ago: "before_x_hours_ago";
|
|
438
|
-
after_x_hours_ago: "after_x_hours_ago";
|
|
439
|
-
previous_week: "previous_week";
|
|
440
|
-
previous_month: "previous_month";
|
|
441
|
-
previous_quarter: "previous_quarter";
|
|
442
|
-
previous_year: "previous_year";
|
|
443
|
-
previous_week_to_date: "previous_week_to_date";
|
|
444
|
-
previous_month_to_date: "previous_month_to_date";
|
|
445
|
-
previous_quarter_to_date: "previous_quarter_to_date";
|
|
446
|
-
previous_year_to_date: "previous_year_to_date";
|
|
447
|
-
}>;
|
|
448
|
-
value: z.ZodOptional<z.ZodUnknown>;
|
|
449
|
-
}, z.core.$strip>>;
|
|
337
|
+
conditions: z.ZodArray<z.ZodType<import("./step-definition").DeterministicConditionNode, unknown, z.core.$ZodTypeInternals<import("./step-definition").DeterministicConditionNode, unknown>>>;
|
|
450
338
|
}, z.core.$strip>>;
|
|
451
339
|
fallbackOption: z.ZodString;
|
|
452
340
|
}, z.core.$strip>>;
|
|
@@ -504,6 +392,7 @@ export declare const AvailableStepExecutionSchema: z.ZodObject<{
|
|
|
504
392
|
selectedRecordStepId: z.ZodOptional<z.ZodString>;
|
|
505
393
|
relationName: z.ZodOptional<z.ZodString>;
|
|
506
394
|
filters: z.ZodOptional<z.ZodUnknown>;
|
|
395
|
+
multiple: z.ZodOptional<z.ZodBoolean>;
|
|
507
396
|
}, z.core.$strip>>;
|
|
508
397
|
prompt: z.ZodPipe<z.ZodOptional<z.ZodNullable<z.ZodString>>, z.ZodTransform<string, string>>;
|
|
509
398
|
aiConfigName: z.ZodPipe<z.ZodOptional<z.ZodNullable<z.ZodString>>, z.ZodTransform<string, string>>;
|
|
@@ -631,6 +520,7 @@ export declare const AvailableStepExecutionSchema: z.ZodObject<{
|
|
|
631
520
|
calledWorkflowCollectionName: z.ZodOptional<z.ZodString>;
|
|
632
521
|
isPinned: z.ZodOptional<z.ZodLiteral<true>>;
|
|
633
522
|
}, z.core.$strict>>;
|
|
523
|
+
carriesError: z.ZodOptional<z.ZodLiteral<true>>;
|
|
634
524
|
}, z.core.$strict>;
|
|
635
525
|
export type AvailableStepExecution = z.infer<typeof AvailableStepExecutionSchema>;
|
|
636
526
|
//# sourceMappingURL=execution.d.ts.map
|
|
@@ -67,6 +67,8 @@ exports.AvailableStepExecutionSchema = zod_1.z
|
|
|
67
67
|
// fires on a mapper bug.
|
|
68
68
|
timezone: zod_1.z.string().refine(luxon_1.IANAZone.isValidZone),
|
|
69
69
|
callScope: exports.CallScopeSchema.optional(),
|
|
70
|
+
// The step still carries the error of its last report: a success or a pause clears it.
|
|
71
|
+
carriesError: zod_1.z.literal(true).optional(),
|
|
70
72
|
})
|
|
71
73
|
.strict();
|
|
72
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
74
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlY3V0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3R5cGVzL3ZhbGlkYXRlZC9leGVjdXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsaUNBQWlDO0FBQ2pDLDZCQUF3QjtBQUV4Qiw2Q0FBK0M7QUFDL0MsdURBQXlEO0FBQ3pELGlEQUFtRDtBQUV0QyxRQUFBLGNBQWMsR0FBRyxPQUFDO0tBQzVCLE1BQU0sQ0FBQztJQUNOLEVBQUUsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFO0lBQ2QsS0FBSyxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUU7SUFDakIsU0FBUyxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUU7SUFDckIsUUFBUSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUU7SUFDcEIsSUFBSSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUU7SUFDaEIsV0FBVyxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxXQUFXLEVBQUU7SUFDM0MsSUFBSSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUU7SUFDaEIsZUFBZSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUU7SUFDM0IsSUFBSSxFQUFFLE9BQUMsQ0FBQyxNQUFNLENBQUMsT0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztDQUN2QyxDQUFDO0tBQ0QsTUFBTSxFQUFFLENBQUM7QUFHQyxRQUFBLFVBQVUsR0FBRyxPQUFDO0tBQ3hCLE1BQU0sQ0FBQztJQUNOLGNBQWMsRUFBRSxzQ0FBb0I7SUFDcEMsV0FBVyxFQUFFLGdDQUFpQjtJQUM5QiwwRkFBMEY7SUFDMUYsdUZBQXVGO0lBQ3ZGLDRDQUE0QztJQUM1QyxpQkFBaUIsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxFQUFFO0NBQzdELENBQUM7S0FDRCxNQUFNLEVBQUUsQ0FBQztBQUdaLElBQVksV0FLWDtBQUxELFdBQVksV0FBVztJQUNyQixnQ0FBaUIsQ0FBQTtJQUNqQixrQ0FBbUIsQ0FBQTtJQUNuQiwwQkFBVyxDQUFBO0lBQ1gsd0NBQXlCLENBQUE7QUFDM0IsQ0FBQyxFQUxXLFdBQVcsMkJBQVgsV0FBVyxRQUt0QjtBQUNZLFFBQUEsaUJBQWlCLEdBQUcsT0FBQyxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUUzRCxrR0FBa0c7QUFDbEcsMEVBQTBFO0FBQzdELFFBQUEsZUFBZSxHQUFHLE9BQUM7S0FDN0IsTUFBTSxDQUFDO0lBQ04sb0JBQW9CLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUU7SUFDbEQsc0JBQXNCLEVBQUUsT0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUU7SUFDMUUsZ0dBQWdHO0lBQ2hHLHVCQUF1QixFQUFFLE9BQUMsQ0FBQyxLQUFLLENBQUMsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFO0lBQzNFLDRCQUE0QixFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFO0lBQzFELGtHQUFrRztJQUNsRywrRkFBK0Y7SUFDL0YsUUFBUSxFQUFFLE9BQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFO0NBQ3JDLENBQUM7S0FDRCxNQUFNLEVBQUUsQ0FBQztBQUdDLFFBQUEsNEJBQTRCLEdBQUcsT0FBQztLQUMxQyxNQUFNLENBQUM7SUFDTixLQUFLLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDeEIsTUFBTSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3pCLFNBQVMsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsV0FBVyxFQUFFO0lBQ3pDLFlBQVksRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUMvQixXQUFXLEVBQUUseUJBQWlCO0lBQzlCLGFBQWEsRUFBRSw0QkFBZTtJQUM5QixjQUFjLEVBQUUsc0NBQW9CO0lBQ3BDLGFBQWEsRUFBRSxPQUFDLENBQUMsS0FBSyxDQUFDLGtCQUFVLENBQUM7SUFDbEMsSUFBSSxFQUFFLHNCQUFjO0lBQ3BCLHlGQUF5RjtJQUN6RiwwRkFBMEY7SUFDMUYseUJBQXlCO0lBQ3pCLFFBQVEsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUFDLGdCQUFRLENBQUMsV0FBVyxDQUFDO0lBQ2pELFNBQVMsRUFBRSx1QkFBZSxDQUFDLFFBQVEsRUFBRTtJQUNyQyx1RkFBdUY7SUFDdkYsWUFBWSxFQUFFLE9BQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFO0NBQ3pDLENBQUM7S0FDRCxNQUFNLEVBQUUsQ0FBQyJ9
|