@forestadmin/workflow-executor 1.26.2 → 1.27.1
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.js +12 -11
- package/dist/adapters/server-types.d.ts +13 -0
- package/dist/adapters/server-types.js +1 -1
- package/dist/adapters/step-definition-mapper.js +2 -1
- package/dist/errors.d.ts +3 -0
- package/dist/errors.js +8 -2
- package/dist/executors/condition-step-executor.d.ts +3 -0
- package/dist/executors/condition-step-executor.js +81 -1
- package/dist/executors/deterministic-condition-evaluator.d.ts +9 -0
- package/dist/executors/deterministic-condition-evaluator.js +153 -0
- package/dist/types/step-execution-data.d.ts +21 -1
- package/dist/types/validated/execution.d.ts +87 -0
- package/dist/types/validated/step-definition.d.ts +110 -0
- package/dist/types/validated/step-definition.js +57 -5
- package/package.json +2 -2
|
@@ -41,15 +41,15 @@ class ForestServerWorkflowPort {
|
|
|
41
41
|
pending.push(dispatch);
|
|
42
42
|
}
|
|
43
43
|
catch (error) {
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
44
|
+
// Reported whatever it is: an unreported failure leaves the run pending, so every poll
|
|
45
|
+
// returns it and fails again.
|
|
46
|
+
this.logger('Error', 'Failed to hydrate pending run', {
|
|
47
|
+
runId: run.id,
|
|
48
|
+
error: (0, errors_1.extractErrorMessage)(error),
|
|
49
|
+
});
|
|
50
|
+
malformed.push(this.toMalformedInfo(run, error instanceof errors_1.WorkflowExecutorError
|
|
51
|
+
? error
|
|
52
|
+
: new errors_1.HydrationFailedError((0, errors_1.extractErrorMessage)(error))));
|
|
53
53
|
}
|
|
54
54
|
}
|
|
55
55
|
return { pending, malformed };
|
|
@@ -87,7 +87,8 @@ class ForestServerWorkflowPort {
|
|
|
87
87
|
return { step, auth: { forestServerToken: token } };
|
|
88
88
|
}
|
|
89
89
|
toMalformedInfo(run, err) {
|
|
90
|
-
const
|
|
90
|
+
const history = Array.isArray(run.workflowHistory) ? run.workflowHistory : [];
|
|
91
|
+
const pending = history.at(-1) ?? null;
|
|
91
92
|
return {
|
|
92
93
|
runId: String(run.id),
|
|
93
94
|
stepId: pending?.stepName ?? null,
|
|
@@ -164,4 +165,4 @@ class ForestServerWorkflowPort {
|
|
|
164
165
|
}
|
|
165
166
|
}
|
|
166
167
|
exports.default = ForestServerWorkflowPort;
|
|
167
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
168
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yZXN0LXNlcnZlci13b3JrZmxvdy1wb3J0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FkYXB0ZXJzL2ZvcmVzdC1zZXJ2ZXItd29ya2Zsb3ctcG9ydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQWFBLHdFQUE4RDtBQUM5RCw2QkFBd0I7QUFFeEIsc0VBQW1EO0FBQ25ELGtHQUFzRTtBQUN0RSw4R0FBdUU7QUFDdkUsOERBQXFDO0FBQ3JDLHNDQVFtQjtBQUNuQiw4REFBdUU7QUFFdkUsTUFBTSxNQUFNLEdBQUc7SUFDYixXQUFXLEVBQUUsd0NBQXdDO0lBQ3JELFlBQVksRUFBRSxDQUFDLEtBQWEsRUFBRSxFQUFFLENBQzlCLDRDQUE0QyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsRUFBRTtJQUN6RSxVQUFVLEVBQUUsd0NBQXdDO0lBQ3BELGdCQUFnQixFQUFFLDhDQUE4QztJQUNoRSxnQkFBZ0IsRUFBRSxDQUFDLGNBQXNCLEVBQUUsS0FBYSxFQUFFLEVBQUUsQ0FDMUQsZ0RBQWdELGtCQUFrQixDQUNoRSxjQUFjLENBQ2YsVUFBVSxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsRUFBRTtJQUN4QyxXQUFXLEVBQUUsQ0FBQyxLQUFhLEVBQUUsTUFBYyxFQUFFLEVBQUUsQ0FDN0Msa0NBQWtDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyx3QkFBd0IsTUFBTSxFQUFFO0lBQzdGLGdCQUFnQixFQUFFLHdDQUF3QztDQUMzRCxDQUFDO0FBRUYsOEZBQThGO0FBQzlGLHFHQUFxRztBQUNyRyxTQUFTLGlCQUFpQixDQUFDLElBQXdCO0lBQ2pELE9BQU8sSUFBSSxFQUFFLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDM0UsQ0FBQztBQUVELE1B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
|
|
@@ -104,6 +104,19 @@ export interface ServerWorkflowCondition extends ServerWorkflowStepBase {
|
|
|
104
104
|
executionType: ServerStepExecutionTypeEnum.Manual | ServerStepExecutionTypeEnum.FullyAutomated;
|
|
105
105
|
prompt: string | null;
|
|
106
106
|
automaticCompletion: false;
|
|
107
|
+
preRecordedArgs?: {
|
|
108
|
+
optionConditions: Array<{
|
|
109
|
+
option: string;
|
|
110
|
+
aggregator: 'and' | 'or';
|
|
111
|
+
conditions: Array<{
|
|
112
|
+
sourceStepId: string;
|
|
113
|
+
fieldName: string;
|
|
114
|
+
operator: string;
|
|
115
|
+
value?: unknown;
|
|
116
|
+
}>;
|
|
117
|
+
}>;
|
|
118
|
+
fallbackOption: string;
|
|
119
|
+
};
|
|
107
120
|
}
|
|
108
121
|
export interface ServerWorkflowEscalation extends ServerWorkflowStepBase {
|
|
109
122
|
type: ServerStepTypeEnum.Escalation;
|
|
@@ -38,4 +38,4 @@ var ServerWorkflowTriggerType;
|
|
|
38
38
|
ServerWorkflowTriggerType["webhook"] = "webhook";
|
|
39
39
|
ServerWorkflowTriggerType["mcp"] = "mcp";
|
|
40
40
|
})(ServerWorkflowTriggerType || (exports.ServerWorkflowTriggerType = ServerWorkflowTriggerType = {}));
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmVyLXR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FkYXB0ZXJzL3NlcnZlci10eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7OztHQU1HOzs7QUFTSCxJQUFZLGtCQU9YO0FBUEQsV0FBWSxrQkFBa0I7SUFDNUIsbUNBQWEsQ0FBQTtJQUNiLDZDQUF1QixDQUFBO0lBQ3ZCLGlDQUFXLENBQUE7SUFDWCwrQ0FBeUIsQ0FBQTtJQUN6Qiw2REFBdUMsQ0FBQTtJQUN2Qyw2REFBdUMsQ0FBQTtBQUN6QyxDQUFDLEVBUFcsa0JBQWtCLGtDQUFsQixrQkFBa0IsUUFPN0I7QUFFRCxJQUFZLGtCQU9YO0FBUEQsV0FBWSxrQkFBa0I7SUFDNUIsNkNBQXVCLENBQUE7SUFDdkIsc0RBQWdDLENBQUE7SUFDaEMsMENBQW9CLENBQUE7SUFDcEIsZ0RBQTBCLENBQUE7SUFDMUIsK0RBQXlDLENBQUE7SUFDekMsOENBQXdCLENBQUE7QUFDMUIsQ0FBQyxFQVBXLGtCQUFrQixrQ0FBbEIsa0JBQWtCLFFBTzdCO0FBRUQsSUFBWSwyQkFJWDtBQUpELFdBQVksMkJBQTJCO0lBQ3JDLGdEQUFpQixDQUFBO0lBQ2pCLHdGQUF5RCxDQUFBO0lBQ3pELGlFQUFrQyxDQUFBO0FBQ3BDLENBQUMsRUFKVywyQkFBMkIsMkNBQTNCLDJCQUEyQixRQUl0QztBQXdLRCxJQUFZLHlCQUlYO0FBSkQsV0FBWSx5QkFBeUI7SUFDbkMsOENBQWlCLENBQUE7SUFDakIsZ0RBQW1CLENBQUE7SUFDbkIsd0NBQVcsQ0FBQTtBQUNiLENBQUMsRUFKVyx5QkFBeUIseUNBQXpCLHlCQUF5QixRQUlwQyJ9
|
|
@@ -75,6 +75,7 @@ function mapCondition(condition) {
|
|
|
75
75
|
executionType: condition.executionType,
|
|
76
76
|
title: condition.title,
|
|
77
77
|
options,
|
|
78
|
+
preRecordedArgs: condition.preRecordedArgs,
|
|
78
79
|
});
|
|
79
80
|
}
|
|
80
81
|
// Server uses `type:'task' + taskType` for non-condition steps and `outgoing[]` for conditions;
|
|
@@ -95,4 +96,4 @@ function toStepDefinition(serverStep) {
|
|
|
95
96
|
throw new errors_1.InvalidStepDefinitionError(`Unknown server step type: "${serverStep.type}"`);
|
|
96
97
|
}
|
|
97
98
|
}
|
|
98
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
99
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcC1kZWZpbml0aW9uLW1hcHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hZGFwdGVycy9zdGVwLWRlZmluaXRpb24tbWFwcGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBZ0hBLG1DQWdCQztBQXhIRCxpREFBb0Q7QUFDcEQsc0NBQWlGO0FBQ2pGLHdFQVM0QztBQUU1Qyw0RkFBNEY7QUFDNUYsNkZBQTZGO0FBQzdGLDZGQUE2RjtBQUM3RixTQUFTLG1CQUFtQixDQUMxQixNQUFjLEVBQ2QsS0FBYztJQUVkLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkMsSUFBSSxNQUFNLENBQUMsT0FBTztRQUFFLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQztJQUV2QyxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU07U0FDL0IsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxRQUFRLEtBQUssS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO1NBQ3JFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUVkLE1BQU0sSUFBSSxtQ0FBMEIsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUMvQyxDQUFDO0FBRUQsU0FBUyxPQUFPLENBQUMsSUFBd0I7SUFDdkMsZ0dBQWdHO0lBQ2hHLDZGQUE2RjtJQUM3Rix5RkFBeUY7SUFDekYsaUJBQWlCO0lBQ2pCLE1BQU0sSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUUzRixRQUFRLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN0QixLQUFLLGlDQUFrQixDQUFDLFNB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
|
package/dist/errors.d.ts
CHANGED
|
@@ -194,6 +194,9 @@ export declare class RecordIdSerializationError extends WorkflowExecutorError {
|
|
|
194
194
|
export declare class InvalidStepDefinitionError extends WorkflowExecutorError {
|
|
195
195
|
constructor(detail: string);
|
|
196
196
|
}
|
|
197
|
+
export declare class HydrationFailedError extends WorkflowExecutorError {
|
|
198
|
+
constructor(detail: string);
|
|
199
|
+
}
|
|
197
200
|
export declare class DomainValidationError extends WorkflowExecutorError {
|
|
198
201
|
readonly issues: ReadonlyArray<{
|
|
199
202
|
path: string;
|
package/dist/errors.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.PendingDataNotFoundError = exports.RunAlreadyInFlightError = exports.UserMismatchError = exports.RunNotFoundError = exports.ExecutorEncryptionKeyMissingError = exports.InvalidTokenEndpointError = exports.OAuthInvalidGrantError = exports.OAuthRefreshError = exports.OAuthReauthRequiredError = exports.ConfigurationError = exports.McpToolInvocationError = exports.AiModelPortError = exports.WorkflowPortError = exports.SchemaNotCachedError = exports.AgentPortError = exports.McpToolNotFoundError = exports.NoMcpToolsError = exports.AiAssistUnavailableError = exports.AiInvokeTimeoutError = exports.StepTimeoutError = exports.ActivityLogCreationError = exports.StepStateError = exports.ActionNotFoundError = exports.FieldTypeMissingError = exports.PinnedArgNotFoundError = exports.FieldNotFoundError = exports.RelationNotFoundError = exports.InvalidAiRequestError = exports.InvalidAIResponseError = exports.RelatedRecordNotFoundError = exports.NoRelationshipFieldsError = exports.RunStorePortError = exports.ApprovalRequestCreationError = exports.ActionRequiresApprovalError = exports.ActionFormValidationError = exports.UnsupportedActionFormError = exports.NoActionsError = exports.NoWritableFieldsError = exports.NoResolvedFieldsError = exports.NoReadableFieldsError = exports.NoRecordsError = exports.RecordNotFoundError = exports.MalformedToolCallError = exports.MissingToolCallError = exports.WorkflowOperatorError = exports.WorkflowConfigurationError = exports.UnavailableError = exports.AccessDeniedError = exports.NotFoundError = exports.WorkflowExecutorError = void 0;
|
|
4
|
-
exports.MalformedRunError = exports.DomainValidationError = exports.InvalidStepDefinitionError = exports.RecordIdSerializationError = exports.UnsupportedStepTypeError = exports.AgentProbeError = exports.SourceRecordMissingError = exports.InvalidPreRecordedArgsError = exports.InvalidPendingDataError = void 0;
|
|
4
|
+
exports.MalformedRunError = exports.DomainValidationError = exports.HydrationFailedError = exports.InvalidStepDefinitionError = exports.RecordIdSerializationError = exports.UnsupportedStepTypeError = exports.AgentProbeError = exports.SourceRecordMissingError = exports.InvalidPreRecordedArgsError = exports.InvalidPendingDataError = void 0;
|
|
5
5
|
exports.causeMessage = causeMessage;
|
|
6
6
|
exports.extractErrorMessage = extractErrorMessage;
|
|
7
7
|
function causeMessage(error) {
|
|
@@ -441,6 +441,12 @@ class InvalidStepDefinitionError extends WorkflowExecutorError {
|
|
|
441
441
|
}
|
|
442
442
|
}
|
|
443
443
|
exports.InvalidStepDefinitionError = InvalidStepDefinitionError;
|
|
444
|
+
class HydrationFailedError extends WorkflowExecutorError {
|
|
445
|
+
constructor(detail) {
|
|
446
|
+
super(`Failed to hydrate run: ${detail}`, 'This workflow run could not be prepared for execution. Please contact support.');
|
|
447
|
+
}
|
|
448
|
+
}
|
|
449
|
+
exports.HydrationFailedError = HydrationFailedError;
|
|
444
450
|
// Thrown when zod validation fails on a domain object produced internally (e.g. by the
|
|
445
451
|
// run-to-pending-step mapper). Distinct from InvalidStepDefinitionError (which flags wire-format
|
|
446
452
|
// bugs coming from the orchestrator) so the two can be triaged separately in Sentry.
|
|
@@ -467,4 +473,4 @@ class MalformedRunError extends WorkflowExecutorError {
|
|
|
467
473
|
}
|
|
468
474
|
}
|
|
469
475
|
exports.MalformedRunError = MalformedRunError;
|
|
470
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2Vycm9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBTUEsb0NBSUM7QUFJRCxrREFZQztBQXBCRCxTQUFnQixZQUFZLENBQUMsS0FBYztJQUN6QyxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUF3QixDQUFDO0lBRXZELE9BQU8sS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0FBQzVELENBQUM7QUFFRCxnR0FBZ0c7QUFDaEcsc0dBQXNHO0FBQ3RHLFNBQWdCLG1CQUFtQixDQUFDLEdBQWE7SUFDL0MsSUFBSSxHQUFHLEtBQUssU0FBUztRQUFFLE9BQU8sU0FBUyxDQUFDO0lBQ3hDLElBQUksQ0FBQyxDQUFDLEdBQUcsWUFBWSxLQUFLLENBQUM7UUFBRSxPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNoRCxJQUFJLEdBQUcsQ0FBQyxPQUFPO1FBQUUsT0FBTyxHQUFHLENBQUMsT0FBTyxDQUFDO0lBRXBDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxHQUEyQixDQUFDO0lBQy9DLElBQUksTUFBTSxZQUFZLEtBQUssSUFBSSxNQUFNLENBQUMsT0FBTztRQUFFLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQztJQUVyRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsR0FBMEIsQ0FBQztJQUM3QyxJQUFJLEtBQUssWUFBWSxLQUFLLElBQUksS0FBSyxDQUFDLE9BQU87UUFBRSxPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUM7SUFFbEUsT0FBTyxHQUFHLENBQUMsSUFBSSxJQUFJLGVBQWUsQ0FBQztBQUNyQyxDQUFDO0FBRUQsTUFBc0IscUJBQXNCLFNBQVEsS0FBSztJQVl2RCxZQUFZLE9BQWUsRUFBRSxXQUFvQjtRQUMvQyxLQUFLLENBQUMs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
|
|
476
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2Vycm9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBTUEsb0NBSUM7QUFJRCxrREFZQztBQXBCRCxTQUFnQixZQUFZLENBQUMsS0FBYztJQUN6QyxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUF3QixDQUFDO0lBRXZELE9BQU8sS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0FBQzVELENBQUM7QUFFRCxnR0FBZ0c7QUFDaEcsc0dBQXNHO0FBQ3RHLFNBQWdCLG1CQUFtQixDQUFDLEdBQWE7SUFDL0MsSUFBSSxHQUFHLEtBQUssU0FBUztRQUFFLE9BQU8sU0FBUyxDQUFDO0lBQ3hDLElBQUksQ0FBQyxDQUFDLEdBQUcsWUFBWSxLQUFLLENBQUM7UUFBRSxPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNoRCxJQUFJLEdBQUcsQ0FBQyxPQUFPO1FBQUUsT0FBTyxHQUFHLENBQUMsT0FBTyxDQUFDO0lBRXBDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxHQUEyQixDQUFDO0lBQy9DLElBQUksTUFBTSxZQUFZLEtBQUssSUFBSSxNQUFNLENBQUMsT0FBTztRQUFFLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQztJQUVyRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsR0FBMEIsQ0FBQztJQUM3QyxJQUFJLEtBQUssWUFBWSxLQUFLLElBQUksS0FBSyxDQUFDLE9BQU87UUFBRSxPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUM7SUFFbEUsT0FBTyxHQUFHLENBQUMsSUFBSSxJQUFJLGVBQWUsQ0FBQztBQUNyQyxDQUFDO0FBRUQsTUFBc0IscUJBQXNCLFNBQVEsS0FBSztJQVl2RCxZQUFZLE9BQWUsRUFBRSxXQUFvQjtRQUMvQyxLQUFLLENBQUMs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
|
|
@@ -11,6 +11,9 @@ export default class ConditionStepExecutor extends BaseStepExecutor<ConditionSte
|
|
|
11
11
|
selectedOption?: string;
|
|
12
12
|
}): StepExecutionResult;
|
|
13
13
|
protected doExecute(): Promise<StepExecutionResult>;
|
|
14
|
+
private evaluateDeterministically;
|
|
15
|
+
private evaluateCondition;
|
|
16
|
+
private resolveConditionValue;
|
|
14
17
|
private readUserChoice;
|
|
15
18
|
private askAi;
|
|
16
19
|
}
|
|
@@ -7,6 +7,7 @@ const ai_proxy_1 = require("@forestadmin/ai-proxy");
|
|
|
7
7
|
const zod_1 = require("zod");
|
|
8
8
|
const errors_1 = require("../errors");
|
|
9
9
|
const base_step_executor_1 = __importDefault(require("./base-step-executor"));
|
|
10
|
+
const deterministic_condition_evaluator_1 = __importDefault(require("./deterministic-condition-evaluator"));
|
|
10
11
|
const pending_data_validators_1 = __importDefault(require("../http/pending-data-validators"));
|
|
11
12
|
const step_definition_1 = require("../types/validated/step-definition");
|
|
12
13
|
const GATEWAY_SYSTEM_PROMPT = `You are an AI agent selecting the correct option for a workflow gateway decision.
|
|
@@ -43,6 +44,14 @@ class ConditionStepExecutor extends base_step_executor_1.default {
|
|
|
43
44
|
}
|
|
44
45
|
async doExecute() {
|
|
45
46
|
const { stepDefinition: step, incomingPendingData } = this.context;
|
|
47
|
+
if ((0, step_definition_1.isDeterministicConditionStep)(step)) {
|
|
48
|
+
// The config wins over an explicit human action, so say so: a mixed-version fleet can pause
|
|
49
|
+
// the step on an args-blind instance, and the user's click would otherwise vanish untraced.
|
|
50
|
+
if (incomingPendingData !== undefined) {
|
|
51
|
+
this.context.logger('Warn', 'Ignoring a submitted option: this decision is evaluated from its conditions', this.logCtx);
|
|
52
|
+
}
|
|
53
|
+
return this.evaluateDeterministically(step);
|
|
54
|
+
}
|
|
46
55
|
// Manual mode: the user picks the option from the frontend. Wait for their input
|
|
47
56
|
// without ever calling the AI.
|
|
48
57
|
const isManual = step.executionType === step_definition_1.StepExecutionMode.Manual;
|
|
@@ -66,6 +75,77 @@ class ConditionStepExecutor extends base_step_executor_1.default {
|
|
|
66
75
|
}
|
|
67
76
|
return this.buildOutcomeResult({ status: 'success', selectedOption });
|
|
68
77
|
}
|
|
78
|
+
async evaluateDeterministically(step) {
|
|
79
|
+
const { optionConditions, fallbackOption } = step.preRecordedArgs;
|
|
80
|
+
const stepExecutions = await this.context.runStore.getStepExecutions(this.context.runId);
|
|
81
|
+
let matchedOption;
|
|
82
|
+
const evaluations = optionConditions.map(({ option, aggregator, conditions }) => {
|
|
83
|
+
if (matchedOption !== undefined) {
|
|
84
|
+
return { option, outcome: 'not-evaluated' };
|
|
85
|
+
}
|
|
86
|
+
const results = conditions.map((condition, index) => {
|
|
87
|
+
const { met, reason } = this.evaluateCondition(condition, stepExecutions);
|
|
88
|
+
return { index, met, ...(reason && { reason }) };
|
|
89
|
+
});
|
|
90
|
+
const matched = aggregator === 'or'
|
|
91
|
+
? results.some(result => result.met === true)
|
|
92
|
+
: results.every(result => result.met === true);
|
|
93
|
+
if (matched)
|
|
94
|
+
matchedOption = option;
|
|
95
|
+
return {
|
|
96
|
+
option,
|
|
97
|
+
outcome: matched ? 'matched' : 'not-matched',
|
|
98
|
+
conditions: results,
|
|
99
|
+
};
|
|
100
|
+
});
|
|
101
|
+
const usedFallback = matchedOption === undefined;
|
|
102
|
+
const selectedOption = matchedOption ?? fallbackOption;
|
|
103
|
+
// optionConditions and options come from two different server-side derivations; an option the
|
|
104
|
+
// orchestrator cannot route must fail here, not silently succeed and break the run downstream.
|
|
105
|
+
if (!step.options.includes(selectedOption)) {
|
|
106
|
+
const allowed = step.options.join(', ');
|
|
107
|
+
throw new errors_1.InvalidStepDefinitionError(`deterministic option "${selectedOption}" is not a valid choice (expected one of: ${allowed})`);
|
|
108
|
+
}
|
|
109
|
+
await this.context.runStore.saveStepExecution(this.context.runId, {
|
|
110
|
+
type: 'condition',
|
|
111
|
+
stepIndex: this.context.stepIndex,
|
|
112
|
+
executionParams: { evaluations, selectedOption, usedFallback },
|
|
113
|
+
executionResult: { answer: selectedOption },
|
|
114
|
+
});
|
|
115
|
+
return this.buildOutcomeResult({ status: 'success', selectedOption });
|
|
116
|
+
}
|
|
117
|
+
evaluateCondition(condition, stepExecutions) {
|
|
118
|
+
const resolved = this.resolveConditionValue(condition, stepExecutions);
|
|
119
|
+
// The reason is what keeps the fallback from passing for a decision the data took: the run view
|
|
120
|
+
// words it instead of showing a bare cross. Returning here also means "never read" is not
|
|
121
|
+
// "read and empty", so present and blank get no answer out of it either.
|
|
122
|
+
if (resolved.found === false) {
|
|
123
|
+
this.context.logger('Warn', 'Condition value could not be resolved, counting it as not met', {
|
|
124
|
+
...this.logCtx,
|
|
125
|
+
sourceStepId: condition.sourceStepId,
|
|
126
|
+
fieldName: condition.fieldName,
|
|
127
|
+
reason: resolved.reason,
|
|
128
|
+
});
|
|
129
|
+
return { met: null, reason: resolved.reason };
|
|
130
|
+
}
|
|
131
|
+
return { met: (0, deterministic_condition_evaluator_1.default)(condition.operator, resolved.value, condition.value) };
|
|
132
|
+
}
|
|
133
|
+
// Same live-path + most-recent-occurrence resolution as resolveSourceRecordRef: previousSteps
|
|
134
|
+
// are already restricted to the live path, and in a loop the same step id repeats.
|
|
135
|
+
resolveConditionValue(condition, stepExecutions) {
|
|
136
|
+
const matches = this.context.previousSteps.filter(step => step.stepDefinition.type === step_definition_1.StepType.ReadRecord &&
|
|
137
|
+
step.stepOutcome.stepId === condition.sourceStepId);
|
|
138
|
+
const sourceStep = matches[matches.length - 1];
|
|
139
|
+
if (!sourceStep)
|
|
140
|
+
return { found: false, reason: 'source-step-not-reached' };
|
|
141
|
+
const execution = this.resolveStepExecution(sourceStep, stepExecutions);
|
|
142
|
+
if (execution?.type !== 'read-record')
|
|
143
|
+
return { found: false, reason: 'field-not-loaded' };
|
|
144
|
+
const field = execution.executionResult.fields.find(f => f.name === condition.fieldName);
|
|
145
|
+
if (!field || !('value' in field))
|
|
146
|
+
return { found: false, reason: 'field-not-loaded' };
|
|
147
|
+
return { found: true, value: field.value };
|
|
148
|
+
}
|
|
69
149
|
readUserChoice(step, incomingPendingData) {
|
|
70
150
|
const parsed = pending_data_validators_1.default.condition.safeParse(incomingPendingData);
|
|
71
151
|
if (!parsed.success) {
|
|
@@ -105,4 +185,4 @@ class ConditionStepExecutor extends base_step_executor_1.default {
|
|
|
105
185
|
}
|
|
106
186
|
}
|
|
107
187
|
exports.default = ConditionStepExecutor;
|
|
108
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
188
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZGl0aW9uLXN0ZXAtZXhlY3V0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZXhlY3V0b3JzL2NvbmRpdGlvbi1zdGVwLWV4ZWN1dG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBYUEsb0RBQTJGO0FBQzNGLDZCQUF3QjtBQUV4QixzQ0FBdUU7QUFDdkUsOEVBQW9EO0FBQ3BELDRHQUFtRTtBQUNuRSw4RkFBK0Q7QUFDL0Qsd0VBSTRDO0FBYTVDLE1BQU0scUJBQXFCLEdBQUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3NGQW9Cd0QsQ0FBQztBQUV2RixNQUFxQixxQkFBc0IsU0FBUSw0QkFBeUM7SUFDaEYsa0JBQWtCLENBQUMsT0FNNUI7UUFDQyxPQUFPO1lBQ0wsV0FBVyxFQUFFO2dCQUNYLElBQUksRUFBRSxXQUFXO2dCQUNqQixNQUFNLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNO2dCQUMzQixTQUFTLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTO2dCQUNqQyxHQUFHLE9BQU87YUFDWDtTQUNGLENBQUM7SUFDSixDQUFDO0lBRVMsS0FBSyxDQUFDLFNBQVM7UUFDdkIsTUFBTSxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsbUJBQW1CLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBRW5FLElBQUksSUFBQSw4Q0FBNEIsRUFBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3ZDLDRGQUE0RjtZQUM1Riw0RkFBNEY7WUFDNUYsSUFBSSxtQkFBbUIsS0FBSyxTQUFTLEVBQUUsQ0FBQztnQkFDdEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQ2pCLE1BQU0sRUFDTiw2RUFBNkUsRUFDN0UsSUFBSSxDQUFDLE1BQU0sQ0FDWixDQUFDO1lBQ0osQ0FBQztZQUVELE9BQU8sSUFBSSxDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzlDLENBQUM7UUFFRCxpRkFBaUY7UUFD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
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ConditionOperator } from '../types/validated/step-definition';
|
|
2
|
+
/**
|
|
3
|
+
* Pure evaluation of one deterministic condition. Never throws for data reasons:
|
|
4
|
+
* - `null` = not evaluable (the resolved value is null/missing) — treated as "not met";
|
|
5
|
+
* - a type-mismatched comparison (including for negated operators) is "not met" (`false`),
|
|
6
|
+
* so a broken config can never accidentally satisfy a condition.
|
|
7
|
+
*/
|
|
8
|
+
export default function evaluateOperator(operator: ConditionOperator, actual: unknown, expected: unknown): boolean | null;
|
|
9
|
+
//# sourceMappingURL=deterministic-condition-evaluator.d.ts.map
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.default = evaluateOperator;
|
|
4
|
+
// Guard against Date.parse's laxity ("5" parses as a year in some engines): only strings that
|
|
5
|
+
// start like an ISO date are treated as dates.
|
|
6
|
+
const ISO_DATE_PREFIX = /^\d{4}-\d{2}-\d{2}/;
|
|
7
|
+
const TIMEZONE_SUFFIX = /(Z|[+-]\d{2}:?\d{2})$/i;
|
|
8
|
+
// Sequelize hands back numeric/decimal/bigint columns as strings although datasource-sequelize
|
|
9
|
+
// maps them to the Number primitive, so the builder's JSON number meets a string at runtime.
|
|
10
|
+
const NUMERIC_STRING = /^-?\d+(\.\d+)?$/;
|
|
11
|
+
const INTEGER_STRING = /^-?\d+$/;
|
|
12
|
+
// Date.parse rolls an out-of-range day over ("2026-02-30" becomes 2026-03-02), which would make a
|
|
13
|
+
// nonsensical config compare equal to a real date instead of being inert.
|
|
14
|
+
function isRealCalendarDate(datePart) {
|
|
15
|
+
const parsed = new Date(`${datePart}T00:00:00.000Z`);
|
|
16
|
+
return !Number.isNaN(parsed.getTime()) && parsed.toISOString().startsWith(datePart);
|
|
17
|
+
}
|
|
18
|
+
function toTimestamp(value) {
|
|
19
|
+
if (typeof value !== 'string' || !ISO_DATE_PREFIX.test(value))
|
|
20
|
+
return null;
|
|
21
|
+
if (!isRealCalendarDate(value.slice(0, 10)))
|
|
22
|
+
return null;
|
|
23
|
+
// Date.parse reads an offset-less datetime as host-local (date-only as UTC), which would route
|
|
24
|
+
// the same run differently per machine — pin every offset-less datetime to UTC.
|
|
25
|
+
const absolute = value.includes('T') && !TIMEZONE_SUFFIX.test(value) ? `${value}Z` : value;
|
|
26
|
+
const parsed = Date.parse(absolute);
|
|
27
|
+
return Number.isNaN(parsed) ? null : parsed;
|
|
28
|
+
}
|
|
29
|
+
function toNumber(value) {
|
|
30
|
+
if (typeof value === 'number')
|
|
31
|
+
return Number.isNaN(value) ? null : value;
|
|
32
|
+
return typeof value === 'string' && NUMERIC_STRING.test(value) ? Number(value) : null;
|
|
33
|
+
}
|
|
34
|
+
// Coercion only kicks in against a real number (always the build-time side): two numeric-looking
|
|
35
|
+
// strings stay strings, since the contract exposes ordering operators for Number/Date fields only.
|
|
36
|
+
function toNumberPair(actual, expected) {
|
|
37
|
+
if (typeof actual !== 'number' && typeof expected !== 'number')
|
|
38
|
+
return null;
|
|
39
|
+
const actualNumber = toNumber(actual);
|
|
40
|
+
const expectedNumber = toNumber(expected);
|
|
41
|
+
return actualNumber !== null && expectedNumber !== null ? [actualNumber, expectedNumber] : null;
|
|
42
|
+
}
|
|
43
|
+
function toInteger(value) {
|
|
44
|
+
if (typeof value === 'number')
|
|
45
|
+
return Number.isInteger(value) ? BigInt(value) : null;
|
|
46
|
+
return typeof value === 'string' && INTEGER_STRING.test(value) ? BigInt(value) : null;
|
|
47
|
+
}
|
|
48
|
+
// A bigint column arrives as a string (Sequelize) while its threshold arrives as a JSON number, so
|
|
49
|
+
// Number() would round the column past 2^53 and make 9007199254740993 compare equal to
|
|
50
|
+
// 9007199254740992 — silently satisfying a condition the data does not meet. Whole numbers are
|
|
51
|
+
// therefore compared exactly. Only whole ones: a decimal has no BigInt to be read as.
|
|
52
|
+
function compareIntegers(actual, expected) {
|
|
53
|
+
if (typeof actual !== 'number' && typeof expected !== 'number')
|
|
54
|
+
return null;
|
|
55
|
+
const actualInteger = toInteger(actual);
|
|
56
|
+
const expectedInteger = toInteger(expected);
|
|
57
|
+
if (actualInteger === null || expectedInteger === null)
|
|
58
|
+
return null;
|
|
59
|
+
if (actualInteger === expectedInteger)
|
|
60
|
+
return 0;
|
|
61
|
+
return actualInteger > expectedInteger ? 1 : -1;
|
|
62
|
+
}
|
|
63
|
+
function scalarEqual(actual, expected) {
|
|
64
|
+
if (actual === expected)
|
|
65
|
+
return true;
|
|
66
|
+
const integers = compareIntegers(actual, expected);
|
|
67
|
+
if (integers !== null)
|
|
68
|
+
return integers === 0;
|
|
69
|
+
const numbers = toNumberPair(actual, expected);
|
|
70
|
+
if (numbers)
|
|
71
|
+
return numbers[0] === numbers[1];
|
|
72
|
+
const actualTs = toTimestamp(actual);
|
|
73
|
+
const expectedTs = toTimestamp(expected);
|
|
74
|
+
if (actualTs !== null && expectedTs !== null)
|
|
75
|
+
return actualTs === expectedTs;
|
|
76
|
+
return typeof actual === typeof expected ? false : null;
|
|
77
|
+
}
|
|
78
|
+
function isEqual(actual, expected) {
|
|
79
|
+
if (Array.isArray(actual) && Array.isArray(expected)) {
|
|
80
|
+
return (actual.length === expected.length &&
|
|
81
|
+
actual.every((item, index) => scalarEqual(item, expected[index]) === true));
|
|
82
|
+
}
|
|
83
|
+
if (Array.isArray(actual) || Array.isArray(expected))
|
|
84
|
+
return null;
|
|
85
|
+
return scalarEqual(actual, expected);
|
|
86
|
+
}
|
|
87
|
+
function compare(actual, expected) {
|
|
88
|
+
const integers = compareIntegers(actual, expected);
|
|
89
|
+
if (integers !== null)
|
|
90
|
+
return integers;
|
|
91
|
+
const numbers = toNumberPair(actual, expected);
|
|
92
|
+
if (numbers)
|
|
93
|
+
return numbers[0] - numbers[1];
|
|
94
|
+
const actualTs = toTimestamp(actual);
|
|
95
|
+
const expectedTs = toTimestamp(expected);
|
|
96
|
+
if (actualTs !== null && expectedTs !== null)
|
|
97
|
+
return actualTs - expectedTs;
|
|
98
|
+
return null;
|
|
99
|
+
}
|
|
100
|
+
function isPresent(value) {
|
|
101
|
+
if (value === null || value === undefined)
|
|
102
|
+
return false;
|
|
103
|
+
if (typeof value === 'string')
|
|
104
|
+
return value.length > 0;
|
|
105
|
+
if (Array.isArray(value))
|
|
106
|
+
return value.length > 0;
|
|
107
|
+
return true;
|
|
108
|
+
}
|
|
109
|
+
// Tri-state like scalarEqual: null = the candidate could not be compared to any member, so a
|
|
110
|
+
// negated membership test cannot claim "not a member" about a comparison it never managed to make.
|
|
111
|
+
// An empty list compares nothing and mismatches nothing, so it stays a plain false.
|
|
112
|
+
function memberOf(list, candidate) {
|
|
113
|
+
if (!Array.isArray(list))
|
|
114
|
+
return null;
|
|
115
|
+
const results = list.map(item => scalarEqual(item, candidate));
|
|
116
|
+
if (results.includes(true))
|
|
117
|
+
return true;
|
|
118
|
+
return results.includes(null) ? null : false;
|
|
119
|
+
}
|
|
120
|
+
function ordering(satisfies) {
|
|
121
|
+
return (actual, expected) => {
|
|
122
|
+
const diff = compare(actual, expected);
|
|
123
|
+
return diff !== null && satisfies(diff);
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
const EVALUATORS = {
|
|
127
|
+
equal: (actual, expected) => isEqual(actual, expected) === true,
|
|
128
|
+
not_equal: (actual, expected) => isEqual(actual, expected) === false,
|
|
129
|
+
greater_than: ordering(diff => diff > 0),
|
|
130
|
+
less_than: ordering(diff => diff < 0),
|
|
131
|
+
greater_than_or_equal: ordering(diff => diff >= 0),
|
|
132
|
+
less_than_or_equal: ordering(diff => diff <= 0),
|
|
133
|
+
in: (actual, expected) => memberOf(expected, actual) === true,
|
|
134
|
+
not_in: (actual, expected) => memberOf(expected, actual) === false,
|
|
135
|
+
contains: (actual, expected) => typeof actual === 'string' && typeof expected === 'string' && actual.includes(expected),
|
|
136
|
+
not_contains: (actual, expected) => typeof actual === 'string' && typeof expected === 'string' && !actual.includes(expected),
|
|
137
|
+
};
|
|
138
|
+
/**
|
|
139
|
+
* Pure evaluation of one deterministic condition. Never throws for data reasons:
|
|
140
|
+
* - `null` = not evaluable (the resolved value is null/missing) — treated as "not met";
|
|
141
|
+
* - a type-mismatched comparison (including for negated operators) is "not met" (`false`),
|
|
142
|
+
* so a broken config can never accidentally satisfy a condition.
|
|
143
|
+
*/
|
|
144
|
+
function evaluateOperator(operator, actual, expected) {
|
|
145
|
+
if (operator === 'present')
|
|
146
|
+
return isPresent(actual);
|
|
147
|
+
if (operator === 'blank')
|
|
148
|
+
return !isPresent(actual);
|
|
149
|
+
if (actual === null || actual === undefined)
|
|
150
|
+
return null;
|
|
151
|
+
return EVALUATORS[operator](actual, expected);
|
|
152
|
+
}
|
|
153
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV0ZXJtaW5pc3RpYy1jb25kaXRpb24tZXZhbHVhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2V4ZWN1dG9ycy9kZXRlcm1pbmlzdGljLWNvbmRpdGlvbi1ldmFsdWF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFxS0EsbUNBVUM7QUE3S0QsOEZBQThGO0FBQzlGLCtDQUErQztBQUMvQyxNQUFNLGVBQWUsR0FBRyxvQkFBb0IsQ0FBQztBQUM3QyxNQUFNLGVBQWUsR0FBRyx3QkFBd0IsQ0FBQztBQUNqRCwrRkFBK0Y7QUFDL0YsNkZBQTZGO0FBQzdGLE1BQU0sY0FBYyxHQUFHLGlCQUFpQixDQUFDO0FBQ3pDLE1BQU0sY0FBYyxHQUFHLFNBQVMsQ0FBQztBQUVqQyxrR0FBa0c7QUFDbEcsMEVBQTBFO0FBQzFFLFNBQVMsa0JBQWtCLENBQUMsUUFBZ0I7SUFDMUMsTUFBTSxNQUFNLEdBQUcsSUFBSSxJQUFJLENBQUMsR0FBRyxRQUFRLGdCQUFnQixDQUFDLENBQUM7SUFFckQsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDLElBQUksTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUN0RixDQUFDO0FBRUQsU0FBUyxXQUFXLENBQUMsS0FBYztJQUNqQyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFDM0UsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFFekQsK0ZBQStGO0lBQy9GLGdGQUFnRjtJQUNoRixNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJ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
|
|
@@ -10,12 +10,32 @@ interface MutatingStepExecutionData extends BaseStepExecutionData {
|
|
|
10
10
|
export interface WithUserConfirmation<T extends Record<string, unknown> = Record<string, unknown>> {
|
|
11
11
|
userConfirmation?: T;
|
|
12
12
|
}
|
|
13
|
+
export type ConditionNotLoadedReason = 'source-step-not-reached' | 'field-not-loaded';
|
|
14
|
+
export interface ConditionEvaluation {
|
|
15
|
+
option: string;
|
|
16
|
+
outcome: 'matched' | 'not-matched' | 'not-evaluated';
|
|
17
|
+
/**
|
|
18
|
+
* Absent when outcome is 'not-evaluated'. `met: null` = the value could not be evaluated.
|
|
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
|
+
}>;
|
|
27
|
+
}
|
|
28
|
+
export interface DeterministicConditionExecutionParams {
|
|
29
|
+
evaluations: ConditionEvaluation[];
|
|
30
|
+
selectedOption: string;
|
|
31
|
+
usedFallback: boolean;
|
|
32
|
+
}
|
|
13
33
|
export interface ConditionStepExecutionData extends BaseStepExecutionData {
|
|
14
34
|
type: 'condition';
|
|
15
35
|
executionParams: {
|
|
16
36
|
answer: string | null;
|
|
17
37
|
reasoning?: string;
|
|
18
|
-
};
|
|
38
|
+
} | DeterministicConditionExecutionParams;
|
|
19
39
|
executionResult?: {
|
|
20
40
|
answer: string;
|
|
21
41
|
};
|
|
@@ -19,6 +19,35 @@ export declare const StepSchema: z.ZodObject<{
|
|
|
19
19
|
"fully-automated": import("./step-definition").StepExecutionMode.FullyAutomated;
|
|
20
20
|
}>>;
|
|
21
21
|
options: z.ZodArray<z.ZodString>;
|
|
22
|
+
preRecordedArgs: z.ZodOptional<z.ZodObject<{
|
|
23
|
+
optionConditions: z.ZodArray<z.ZodObject<{
|
|
24
|
+
option: z.ZodString;
|
|
25
|
+
aggregator: z.ZodEnum<{
|
|
26
|
+
and: "and";
|
|
27
|
+
or: "or";
|
|
28
|
+
}>;
|
|
29
|
+
conditions: z.ZodArray<z.ZodObject<{
|
|
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
|
+
greater_than_or_equal: "greater_than_or_equal";
|
|
41
|
+
less_than_or_equal: "less_than_or_equal";
|
|
42
|
+
not_in: "not_in";
|
|
43
|
+
contains: "contains";
|
|
44
|
+
not_contains: "not_contains";
|
|
45
|
+
}>;
|
|
46
|
+
value: z.ZodOptional<z.ZodUnknown>;
|
|
47
|
+
}, z.core.$strip>>;
|
|
48
|
+
}, z.core.$strip>>;
|
|
49
|
+
fallbackOption: z.ZodString;
|
|
50
|
+
}, z.core.$strip>>;
|
|
22
51
|
prompt: z.ZodPipe<z.ZodOptional<z.ZodNullable<z.ZodString>>, z.ZodTransform<string, string>>;
|
|
23
52
|
aiConfigName: z.ZodPipe<z.ZodOptional<z.ZodNullable<z.ZodString>>, z.ZodTransform<string, string>>;
|
|
24
53
|
title: z.ZodPipe<z.ZodOptional<z.ZodNullable<z.ZodString>>, z.ZodTransform<string, string>>;
|
|
@@ -197,6 +226,35 @@ export declare const AvailableStepExecutionSchema: z.ZodObject<{
|
|
|
197
226
|
"fully-automated": import("./step-definition").StepExecutionMode.FullyAutomated;
|
|
198
227
|
}>>;
|
|
199
228
|
options: z.ZodArray<z.ZodString>;
|
|
229
|
+
preRecordedArgs: z.ZodOptional<z.ZodObject<{
|
|
230
|
+
optionConditions: z.ZodArray<z.ZodObject<{
|
|
231
|
+
option: z.ZodString;
|
|
232
|
+
aggregator: z.ZodEnum<{
|
|
233
|
+
and: "and";
|
|
234
|
+
or: "or";
|
|
235
|
+
}>;
|
|
236
|
+
conditions: z.ZodArray<z.ZodObject<{
|
|
237
|
+
sourceStepId: z.ZodString;
|
|
238
|
+
fieldName: z.ZodString;
|
|
239
|
+
operator: z.ZodEnum<{
|
|
240
|
+
in: "in";
|
|
241
|
+
equal: "equal";
|
|
242
|
+
not_equal: "not_equal";
|
|
243
|
+
present: "present";
|
|
244
|
+
blank: "blank";
|
|
245
|
+
greater_than: "greater_than";
|
|
246
|
+
less_than: "less_than";
|
|
247
|
+
greater_than_or_equal: "greater_than_or_equal";
|
|
248
|
+
less_than_or_equal: "less_than_or_equal";
|
|
249
|
+
not_in: "not_in";
|
|
250
|
+
contains: "contains";
|
|
251
|
+
not_contains: "not_contains";
|
|
252
|
+
}>;
|
|
253
|
+
value: z.ZodOptional<z.ZodUnknown>;
|
|
254
|
+
}, z.core.$strip>>;
|
|
255
|
+
}, z.core.$strip>>;
|
|
256
|
+
fallbackOption: z.ZodString;
|
|
257
|
+
}, z.core.$strip>>;
|
|
200
258
|
prompt: z.ZodPipe<z.ZodOptional<z.ZodNullable<z.ZodString>>, z.ZodTransform<string, string>>;
|
|
201
259
|
aiConfigName: z.ZodPipe<z.ZodOptional<z.ZodNullable<z.ZodString>>, z.ZodTransform<string, string>>;
|
|
202
260
|
title: z.ZodPipe<z.ZodOptional<z.ZodNullable<z.ZodString>>, z.ZodTransform<string, string>>;
|
|
@@ -284,6 +342,35 @@ export declare const AvailableStepExecutionSchema: z.ZodObject<{
|
|
|
284
342
|
"fully-automated": import("./step-definition").StepExecutionMode.FullyAutomated;
|
|
285
343
|
}>>;
|
|
286
344
|
options: z.ZodArray<z.ZodString>;
|
|
345
|
+
preRecordedArgs: z.ZodOptional<z.ZodObject<{
|
|
346
|
+
optionConditions: z.ZodArray<z.ZodObject<{
|
|
347
|
+
option: z.ZodString;
|
|
348
|
+
aggregator: z.ZodEnum<{
|
|
349
|
+
and: "and";
|
|
350
|
+
or: "or";
|
|
351
|
+
}>;
|
|
352
|
+
conditions: z.ZodArray<z.ZodObject<{
|
|
353
|
+
sourceStepId: z.ZodString;
|
|
354
|
+
fieldName: z.ZodString;
|
|
355
|
+
operator: z.ZodEnum<{
|
|
356
|
+
in: "in";
|
|
357
|
+
equal: "equal";
|
|
358
|
+
not_equal: "not_equal";
|
|
359
|
+
present: "present";
|
|
360
|
+
blank: "blank";
|
|
361
|
+
greater_than: "greater_than";
|
|
362
|
+
less_than: "less_than";
|
|
363
|
+
greater_than_or_equal: "greater_than_or_equal";
|
|
364
|
+
less_than_or_equal: "less_than_or_equal";
|
|
365
|
+
not_in: "not_in";
|
|
366
|
+
contains: "contains";
|
|
367
|
+
not_contains: "not_contains";
|
|
368
|
+
}>;
|
|
369
|
+
value: z.ZodOptional<z.ZodUnknown>;
|
|
370
|
+
}, z.core.$strip>>;
|
|
371
|
+
}, z.core.$strip>>;
|
|
372
|
+
fallbackOption: z.ZodString;
|
|
373
|
+
}, z.core.$strip>>;
|
|
287
374
|
prompt: z.ZodPipe<z.ZodOptional<z.ZodNullable<z.ZodString>>, z.ZodTransform<string, string>>;
|
|
288
375
|
aiConfigName: z.ZodPipe<z.ZodOptional<z.ZodNullable<z.ZodString>>, z.ZodTransform<string, string>>;
|
|
289
376
|
title: z.ZodPipe<z.ZodOptional<z.ZodNullable<z.ZodString>>, z.ZodTransform<string, string>>;
|
|
@@ -17,6 +17,55 @@ export declare enum StepExecutionMode {
|
|
|
17
17
|
AutomatedWithConfirmation = "automated-with-confirmation",
|
|
18
18
|
FullyAutomated = "fully-automated"
|
|
19
19
|
}
|
|
20
|
+
export declare const CONDITION_OPERATORS: readonly ["equal", "not_equal", "present", "blank", "greater_than", "less_than", "greater_than_or_equal", "less_than_or_equal", "in", "not_in", "contains", "not_contains"];
|
|
21
|
+
export type ConditionOperator = (typeof CONDITION_OPERATORS)[number];
|
|
22
|
+
declare const DeterministicConditionSchema: z.ZodObject<{
|
|
23
|
+
sourceStepId: z.ZodString;
|
|
24
|
+
fieldName: z.ZodString;
|
|
25
|
+
operator: z.ZodEnum<{
|
|
26
|
+
in: "in";
|
|
27
|
+
equal: "equal";
|
|
28
|
+
not_equal: "not_equal";
|
|
29
|
+
present: "present";
|
|
30
|
+
blank: "blank";
|
|
31
|
+
greater_than: "greater_than";
|
|
32
|
+
less_than: "less_than";
|
|
33
|
+
greater_than_or_equal: "greater_than_or_equal";
|
|
34
|
+
less_than_or_equal: "less_than_or_equal";
|
|
35
|
+
not_in: "not_in";
|
|
36
|
+
contains: "contains";
|
|
37
|
+
not_contains: "not_contains";
|
|
38
|
+
}>;
|
|
39
|
+
value: z.ZodOptional<z.ZodUnknown>;
|
|
40
|
+
}, z.core.$strip>;
|
|
41
|
+
export type DeterministicCondition = z.infer<typeof DeterministicConditionSchema>;
|
|
42
|
+
declare const OptionConditionsSchema: z.ZodObject<{
|
|
43
|
+
option: z.ZodString;
|
|
44
|
+
aggregator: z.ZodEnum<{
|
|
45
|
+
and: "and";
|
|
46
|
+
or: "or";
|
|
47
|
+
}>;
|
|
48
|
+
conditions: z.ZodArray<z.ZodObject<{
|
|
49
|
+
sourceStepId: z.ZodString;
|
|
50
|
+
fieldName: z.ZodString;
|
|
51
|
+
operator: z.ZodEnum<{
|
|
52
|
+
in: "in";
|
|
53
|
+
equal: "equal";
|
|
54
|
+
not_equal: "not_equal";
|
|
55
|
+
present: "present";
|
|
56
|
+
blank: "blank";
|
|
57
|
+
greater_than: "greater_than";
|
|
58
|
+
less_than: "less_than";
|
|
59
|
+
greater_than_or_equal: "greater_than_or_equal";
|
|
60
|
+
less_than_or_equal: "less_than_or_equal";
|
|
61
|
+
not_in: "not_in";
|
|
62
|
+
contains: "contains";
|
|
63
|
+
not_contains: "not_contains";
|
|
64
|
+
}>;
|
|
65
|
+
value: z.ZodOptional<z.ZodUnknown>;
|
|
66
|
+
}, z.core.$strip>>;
|
|
67
|
+
}, z.core.$strip>;
|
|
68
|
+
export type OptionConditions = z.infer<typeof OptionConditionsSchema>;
|
|
20
69
|
export declare const ConditionStepDefinitionSchema: z.ZodObject<{
|
|
21
70
|
type: z.ZodLiteral<StepType.Condition>;
|
|
22
71
|
executionType: z.ZodDefault<z.ZodEnum<{
|
|
@@ -24,11 +73,42 @@ export declare const ConditionStepDefinitionSchema: z.ZodObject<{
|
|
|
24
73
|
"fully-automated": StepExecutionMode.FullyAutomated;
|
|
25
74
|
}>>;
|
|
26
75
|
options: z.ZodArray<z.ZodString>;
|
|
76
|
+
preRecordedArgs: z.ZodOptional<z.ZodObject<{
|
|
77
|
+
optionConditions: z.ZodArray<z.ZodObject<{
|
|
78
|
+
option: z.ZodString;
|
|
79
|
+
aggregator: z.ZodEnum<{
|
|
80
|
+
and: "and";
|
|
81
|
+
or: "or";
|
|
82
|
+
}>;
|
|
83
|
+
conditions: z.ZodArray<z.ZodObject<{
|
|
84
|
+
sourceStepId: z.ZodString;
|
|
85
|
+
fieldName: z.ZodString;
|
|
86
|
+
operator: z.ZodEnum<{
|
|
87
|
+
in: "in";
|
|
88
|
+
equal: "equal";
|
|
89
|
+
not_equal: "not_equal";
|
|
90
|
+
present: "present";
|
|
91
|
+
blank: "blank";
|
|
92
|
+
greater_than: "greater_than";
|
|
93
|
+
less_than: "less_than";
|
|
94
|
+
greater_than_or_equal: "greater_than_or_equal";
|
|
95
|
+
less_than_or_equal: "less_than_or_equal";
|
|
96
|
+
not_in: "not_in";
|
|
97
|
+
contains: "contains";
|
|
98
|
+
not_contains: "not_contains";
|
|
99
|
+
}>;
|
|
100
|
+
value: z.ZodOptional<z.ZodUnknown>;
|
|
101
|
+
}, z.core.$strip>>;
|
|
102
|
+
}, z.core.$strip>>;
|
|
103
|
+
fallbackOption: z.ZodString;
|
|
104
|
+
}, z.core.$strip>>;
|
|
27
105
|
prompt: z.ZodPipe<z.ZodOptional<z.ZodNullable<z.ZodString>>, z.ZodTransform<string, string>>;
|
|
28
106
|
aiConfigName: z.ZodPipe<z.ZodOptional<z.ZodNullable<z.ZodString>>, z.ZodTransform<string, string>>;
|
|
29
107
|
title: z.ZodPipe<z.ZodOptional<z.ZodNullable<z.ZodString>>, z.ZodTransform<string, string>>;
|
|
30
108
|
}, z.core.$strip>;
|
|
31
109
|
export type ConditionStepDefinition = z.infer<typeof ConditionStepDefinitionSchema>;
|
|
110
|
+
export type DeterministicConditionStep = ConditionStepDefinition & Required<Pick<ConditionStepDefinition, 'preRecordedArgs'>>;
|
|
111
|
+
export declare const isDeterministicConditionStep: (step: ConditionStepDefinition) => step is DeterministicConditionStep;
|
|
32
112
|
export declare const ReadRecordStepDefinitionSchema: z.ZodObject<{
|
|
33
113
|
type: z.ZodLiteral<StepType.ReadRecord>;
|
|
34
114
|
executionType: z.ZodCatch<z.ZodDefault<z.ZodLiteral<StepExecutionMode.FullyAutomated>>>;
|
|
@@ -182,6 +262,35 @@ export declare const StepDefinitionSchema: z.ZodDiscriminatedUnion<[z.ZodObject<
|
|
|
182
262
|
"fully-automated": StepExecutionMode.FullyAutomated;
|
|
183
263
|
}>>;
|
|
184
264
|
options: z.ZodArray<z.ZodString>;
|
|
265
|
+
preRecordedArgs: z.ZodOptional<z.ZodObject<{
|
|
266
|
+
optionConditions: z.ZodArray<z.ZodObject<{
|
|
267
|
+
option: z.ZodString;
|
|
268
|
+
aggregator: z.ZodEnum<{
|
|
269
|
+
and: "and";
|
|
270
|
+
or: "or";
|
|
271
|
+
}>;
|
|
272
|
+
conditions: z.ZodArray<z.ZodObject<{
|
|
273
|
+
sourceStepId: z.ZodString;
|
|
274
|
+
fieldName: z.ZodString;
|
|
275
|
+
operator: z.ZodEnum<{
|
|
276
|
+
in: "in";
|
|
277
|
+
equal: "equal";
|
|
278
|
+
not_equal: "not_equal";
|
|
279
|
+
present: "present";
|
|
280
|
+
blank: "blank";
|
|
281
|
+
greater_than: "greater_than";
|
|
282
|
+
less_than: "less_than";
|
|
283
|
+
greater_than_or_equal: "greater_than_or_equal";
|
|
284
|
+
less_than_or_equal: "less_than_or_equal";
|
|
285
|
+
not_in: "not_in";
|
|
286
|
+
contains: "contains";
|
|
287
|
+
not_contains: "not_contains";
|
|
288
|
+
}>;
|
|
289
|
+
value: z.ZodOptional<z.ZodUnknown>;
|
|
290
|
+
}, z.core.$strip>>;
|
|
291
|
+
}, z.core.$strip>>;
|
|
292
|
+
fallbackOption: z.ZodString;
|
|
293
|
+
}, z.core.$strip>>;
|
|
185
294
|
prompt: z.ZodPipe<z.ZodOptional<z.ZodNullable<z.ZodString>>, z.ZodTransform<string, string>>;
|
|
186
295
|
aiConfigName: z.ZodPipe<z.ZodOptional<z.ZodNullable<z.ZodString>>, z.ZodTransform<string, string>>;
|
|
187
296
|
title: z.ZodPipe<z.ZodOptional<z.ZodNullable<z.ZodString>>, z.ZodTransform<string, string>>;
|
|
@@ -262,4 +371,5 @@ export declare const StepDefinitionSchema: z.ZodDiscriminatedUnion<[z.ZodObject<
|
|
|
262
371
|
title: z.ZodPipe<z.ZodOptional<z.ZodNullable<z.ZodString>>, z.ZodTransform<string, string>>;
|
|
263
372
|
}, z.core.$strip>], "type">;
|
|
264
373
|
export type StepDefinition = z.infer<typeof StepDefinitionSchema>;
|
|
374
|
+
export {};
|
|
265
375
|
//# sourceMappingURL=step-definition.d.ts.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.StepDefinitionSchema = exports.RecordStepDefinitionSchema = exports.GuidanceStepDefinitionSchema = exports.McpStepDefinitionSchema = exports.WORKFLOW_START_STEP_ID = exports.LoadRelatedRecordStepDefinitionSchema = exports.TriggerActionStepDefinitionSchema = exports.UpdateRecordStepDefinitionSchema = exports.ReadRecordStepDefinitionSchema = exports.ConditionStepDefinitionSchema = exports.StepExecutionMode = exports.StepType = void 0;
|
|
3
|
+
exports.StepDefinitionSchema = exports.RecordStepDefinitionSchema = exports.GuidanceStepDefinitionSchema = exports.McpStepDefinitionSchema = exports.WORKFLOW_START_STEP_ID = exports.LoadRelatedRecordStepDefinitionSchema = exports.TriggerActionStepDefinitionSchema = exports.UpdateRecordStepDefinitionSchema = exports.ReadRecordStepDefinitionSchema = exports.isDeterministicConditionStep = exports.ConditionStepDefinitionSchema = exports.CONDITION_OPERATORS = exports.StepExecutionMode = exports.StepType = void 0;
|
|
4
4
|
const zod_1 = require("zod");
|
|
5
5
|
var StepType;
|
|
6
6
|
(function (StepType) {
|
|
@@ -39,15 +39,67 @@ const sharedFields = {
|
|
|
39
39
|
};
|
|
40
40
|
// Use z.enum(EnumObject), not z.nativeEnum — the latter is deprecated in zod 4.
|
|
41
41
|
const { Manual, AutomatedWithConfirmation, FullyAutomated } = StepExecutionMode;
|
|
42
|
+
// Wire-final operator names (PRD-472 cross-repo contract). An unknown operator is rejected here,
|
|
43
|
+
// at the schema boundary, so a run never reaches evaluation with a comparison it cannot honor.
|
|
44
|
+
exports.CONDITION_OPERATORS = [
|
|
45
|
+
'equal',
|
|
46
|
+
'not_equal',
|
|
47
|
+
'present',
|
|
48
|
+
'blank',
|
|
49
|
+
'greater_than',
|
|
50
|
+
'less_than',
|
|
51
|
+
'greater_than_or_equal',
|
|
52
|
+
'less_than_or_equal',
|
|
53
|
+
'in',
|
|
54
|
+
'not_in',
|
|
55
|
+
'contains',
|
|
56
|
+
'not_contains',
|
|
57
|
+
];
|
|
58
|
+
const VALUE_LESS_OPERATORS = ['present', 'blank'];
|
|
59
|
+
const DeterministicConditionSchema = zod_1.z
|
|
60
|
+
.object({
|
|
61
|
+
/** Stable BPMN id of the upstream Get Data step whose output holds the value. */
|
|
62
|
+
sourceStepId: zod_1.z.string().min(1),
|
|
63
|
+
fieldName: zod_1.z.string().min(1),
|
|
64
|
+
operator: zod_1.z.enum(exports.CONDITION_OPERATORS),
|
|
65
|
+
/** Absent for `present`/`blank`. */
|
|
66
|
+
value: zod_1.z.unknown().optional(),
|
|
67
|
+
})
|
|
68
|
+
// A value-bearing operator without its value compares against `undefined`: it can never be met,
|
|
69
|
+
// so the step would silently route to the fallback instead of reporting the broken config.
|
|
70
|
+
.superRefine((condition, ctx) => {
|
|
71
|
+
if (!VALUE_LESS_OPERATORS.includes(condition.operator) && condition.value === undefined) {
|
|
72
|
+
ctx.addIssue({
|
|
73
|
+
code: 'custom',
|
|
74
|
+
path: ['value'],
|
|
75
|
+
message: `value is required for the "${condition.operator}" operator`,
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
const OptionConditionsSchema = zod_1.z.object({
|
|
80
|
+
option: zod_1.z.string().min(1),
|
|
81
|
+
aggregator: zod_1.z.enum(['and', 'or']),
|
|
82
|
+
conditions: zod_1.z.array(DeterministicConditionSchema).min(1),
|
|
83
|
+
});
|
|
42
84
|
exports.ConditionStepDefinitionSchema = zod_1.z.object({
|
|
43
85
|
...sharedFields,
|
|
44
86
|
type: zod_1.z.literal(StepType.Condition),
|
|
45
|
-
// NO `.catch` — coercing an unknown mode
|
|
46
|
-
//
|
|
47
|
-
// the builder configured precisely because they don't trust the AI.
|
|
87
|
+
// NO `.catch` — coercing an unknown mode to FullyAutomated would turn a gateway the builder made
|
|
88
|
+
// manual into an AI decision.
|
|
48
89
|
executionType: zod_1.z.enum([Manual, FullyAutomated]).default(FullyAutomated),
|
|
49
90
|
options: zod_1.z.array(zod_1.z.string()).min(2),
|
|
91
|
+
// A malformed config is rejected here rather than dropped, so it can never degrade to a
|
|
92
|
+
// manual/AI decision.
|
|
93
|
+
preRecordedArgs: zod_1.z
|
|
94
|
+
.object({
|
|
95
|
+
optionConditions: zod_1.z.array(OptionConditionsSchema).min(1),
|
|
96
|
+
fallbackOption: zod_1.z.string().min(1),
|
|
97
|
+
})
|
|
98
|
+
.optional(),
|
|
50
99
|
});
|
|
100
|
+
// Carrying the conditions *is* the deterministic mode — no executionType says so.
|
|
101
|
+
const isDeterministicConditionStep = (step) => step.preRecordedArgs !== undefined;
|
|
102
|
+
exports.isDeterministicConditionStep = isDeterministicConditionStep;
|
|
51
103
|
exports.ReadRecordStepDefinitionSchema = zod_1.z.object({
|
|
52
104
|
...sharedFields,
|
|
53
105
|
type: zod_1.z.literal(StepType.ReadRecord),
|
|
@@ -168,4 +220,4 @@ exports.StepDefinitionSchema = zod_1.z.discriminatedUnion('type', [
|
|
|
168
220
|
exports.McpStepDefinitionSchema,
|
|
169
221
|
exports.GuidanceStepDefinitionSchema,
|
|
170
222
|
]);
|
|
171
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
223
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcC1kZWZpbml0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3R5cGVzL3ZhbGlkYXRlZC9zdGVwLWRlZmluaXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkJBQXdCO0FBRXhCLElBQVksUUFRWDtBQVJELFdBQVksUUFBUTtJQUNsQixtQ0FBdUIsQ0FBQTtJQUN2QixzQ0FBMEIsQ0FBQTtJQUMxQiwwQ0FBOEIsQ0FBQTtJQUM5Qiw0Q0FBZ0MsQ0FBQTtJQUNoQyxxREFBeUMsQ0FBQTtJQUN6Qyx1QkFBVyxDQUFBO0lBQ1gsaUNBQXFCLENBQUE7QUFDdkIsQ0FBQyxFQVJXLFFBQVEsd0JBQVIsUUFBUSxRQVFuQjtBQUVEOzs7R0FHRztBQUNILElBQVksaUJBSVg7QUFKRCxXQUFZLGlCQUFpQjtJQUMzQixzQ0FBaUIsQ0FBQTtJQUNqQiw4RUFBeUQsQ0FBQTtJQUN6RCx1REFBa0MsQ0FBQTtBQUNwQyxDQUFDLEVBSlcsaUJBQWlCLGlDQUFqQixpQkFBaUIsUUFJNUI7QUFFRCxpRkFBaUY7QUFDakYsK0ZBQStGO0FBQy9GLCtGQUErRjtBQUMvRiw0QkFBNEI7QUFDNUIsOEZBQThGO0FBQzlGLHdEQUF3RDtBQUN4RCxNQUFNLGNBQWMsR0FBRyxPQUFDO0tBQ3JCLE1BQU0sRUFBRTtLQUNSLE9BQU8sRUFBRTtLQUNULFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssSUFBSSxTQUFTLENBQUMsQ0FBQztBQUUxQyxNQUFNLFlBQVksR0FBRztJQUNuQixNQUFNLEVBQUUsY0FBYztJQUN0QixZQUFZLEVBQUUsY0FBYztJQUM1QixLQUFLLEVBQUUsY0FBYztDQUN0QixDQUFDO0FBRUYsZ0ZBQWdGO0FBQ2hGLE1BQU0sRUFBRSxNQUFNLEVBQUUseUJBQXlCLEVBQUUsY0FBYyxFQUFFLEdBQUcsaUJBQWlCLENBQUM7QUFFaEYsaUdBQWlHO0FBQ2pHLCtGQUErRjtBQUNsRixRQUFBLG1CQUFt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
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@forestadmin/workflow-executor",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.27.1",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"bin": {
|
|
6
6
|
"forest-workflow-executor": "dist/cli.js"
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
},
|
|
31
31
|
"dependencies": {
|
|
32
32
|
"@forestadmin/agent-client": "1.15.2",
|
|
33
|
-
"@forestadmin/ai-proxy": "1.12.
|
|
33
|
+
"@forestadmin/ai-proxy": "1.12.9",
|
|
34
34
|
"@forestadmin/forestadmin-client": "1.43.3",
|
|
35
35
|
"@koa/bodyparser": "^6.1.0",
|
|
36
36
|
"@koa/router": "^15.6.0",
|