@forestadmin/workflow-executor 1.14.0 → 1.15.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/README.md +14 -0
- package/dist/errors.d.ts +4 -0
- package/dist/errors.js +12 -3
- package/dist/executors/load-related-record-step-executor.d.ts +4 -9
- package/dist/executors/load-related-record-step-executor.js +164 -97
- package/dist/http/step-serializer.js +5 -2
- package/dist/types/step-execution-data.d.ts +2 -1
- package/dist/types/validated/execution.d.ts +9 -6
- package/dist/types/validated/step-definition.d.ts +9 -6
- package/dist/types/validated/step-definition.js +4 -4
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -128,6 +128,20 @@ npx @forestadmin/workflow-executor
|
|
|
128
128
|
|
|
129
129
|
---
|
|
130
130
|
|
|
131
|
+
## OAuth-protected MCP connectors
|
|
132
|
+
|
|
133
|
+
When your workflows use OAuth-protected MCP connectors, the executor stores each user's OAuth credentials in its database, encrypted at rest. Provide the encryption key the same way as the other secrets (in `.env`, or with `-e` on `docker run`):
|
|
134
|
+
|
|
135
|
+
| Variable | Description |
|
|
136
|
+
| --- | --- |
|
|
137
|
+
| `FOREST_EXECUTOR_ENCRYPTION_KEY` | At-rest encryption key (AES-256-GCM) for the OAuth credentials the executor stores. Generate with `openssl rand -hex 32`. Use a **separate** secret from `FOREST_AUTH_SECRET`. The value isn't validated, so use a genuinely random secret. |
|
|
138
|
+
|
|
139
|
+
- **Required only for OAuth-protected MCP connectors**, and read lazily — an executor that stores no such credentials boots and runs fine without it.
|
|
140
|
+
- **Use the same value on every instance that shares a database.** Otherwise an instance cannot decrypt credentials stored by another.
|
|
141
|
+
- **Treat it as permanent: there is no managed rotation.** Changing it forces every affected user to reconnect their OAuth-protected MCP connectors.
|
|
142
|
+
|
|
143
|
+
---
|
|
144
|
+
|
|
131
145
|
## Testing only
|
|
132
146
|
|
|
133
147
|
The following modes skip the database requirement but are **not suitable for production** — state is lost on restart.
|
package/dist/errors.d.ts
CHANGED
|
@@ -92,6 +92,10 @@ export declare class StepTimeoutError extends WorkflowExecutorError {
|
|
|
92
92
|
export declare class AiInvokeTimeoutError extends WorkflowExecutorError {
|
|
93
93
|
constructor(timeoutS: number);
|
|
94
94
|
}
|
|
95
|
+
export declare class AiAssistUnavailableError extends WorkflowExecutorError {
|
|
96
|
+
readonly reason: unknown;
|
|
97
|
+
constructor(reason: unknown);
|
|
98
|
+
}
|
|
95
99
|
export declare class NoMcpToolsError extends WorkflowExecutorError {
|
|
96
100
|
constructor(requestedMcpServerId: string);
|
|
97
101
|
}
|
package/dist/errors.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
exports.MalformedRunError = exports.DomainValidationError = exports.InvalidStepDefinitionError = exports.RecordIdSerializationError = exports.UnsupportedStepTypeError = void 0;
|
|
3
|
+
exports.SourceRecordMissingError = exports.InvalidPreRecordedArgsError = exports.InvalidPendingDataError = 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.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.UnavailableError = exports.AccessDeniedError = exports.NotFoundError = exports.WorkflowExecutorError = void 0;
|
|
4
|
+
exports.MalformedRunError = exports.DomainValidationError = exports.InvalidStepDefinitionError = exports.RecordIdSerializationError = exports.UnsupportedStepTypeError = exports.AgentProbeError = void 0;
|
|
5
5
|
exports.causeMessage = causeMessage;
|
|
6
6
|
exports.extractErrorMessage = extractErrorMessage;
|
|
7
7
|
function causeMessage(error) {
|
|
@@ -216,6 +216,15 @@ class AiInvokeTimeoutError extends WorkflowExecutorError {
|
|
|
216
216
|
}
|
|
217
217
|
}
|
|
218
218
|
exports.AiInvokeTimeoutError = AiInvokeTimeoutError;
|
|
219
|
+
// Wraps any AI-call failure (timeout, outage, malformed/missing tool call, out-of-range pick) so
|
|
220
|
+
// handlers degrade to the Manual path. Caught internally — never HTTP-mapped; not exported from index.
|
|
221
|
+
class AiAssistUnavailableError extends WorkflowExecutorError {
|
|
222
|
+
constructor(reason) {
|
|
223
|
+
super('AI assistance unavailable');
|
|
224
|
+
this.reason = reason;
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
exports.AiAssistUnavailableError = AiAssistUnavailableError;
|
|
219
228
|
class NoMcpToolsError extends WorkflowExecutorError {
|
|
220
229
|
constructor(requestedMcpServerId) {
|
|
221
230
|
super(`No MCP tools available for mcpServerId="${requestedMcpServerId}"`, 'Tools could not be loaded for the targeted server. Please try again, or contact your administrator if the problem persists.');
|
|
@@ -428,4 +437,4 @@ class MalformedRunError extends WorkflowExecutorError {
|
|
|
428
437
|
}
|
|
429
438
|
}
|
|
430
439
|
exports.MalformedRunError = MalformedRunError;
|
|
431
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2Vycm9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBTUEsb0NBSUM7QUFJRCxrREFZQztBQXBCRCxTQUFnQixZQUFZLENBQUMsS0FBYztJQUN6QyxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsS0FBNEIsQ0FBQztJQUUvQyxPQUFPLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztBQUM1RCxDQUFDO0FBRUQsZ0dBQWdHO0FBQ2hHLHNHQUFzRztBQUN0RyxTQUFnQixtQkFBbUIsQ0FBQyxHQUFhO0lBQy9DLElBQUksR0FBRyxLQUFLLFNBQVM7UUFBRSxPQUFPLFNBQVMsQ0FBQztJQUN4QyxJQUFJLENBQUMsQ0FBQyxHQUFHLFlBQVksS0FBSyxDQUFDO1FBQUUsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDaEQsSUFBSSxHQUFHLENBQUMsT0FBTztRQUFFLE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQztJQUVwQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsR0FBMkIsQ0FBQztJQUMvQyxJQUFJLE1BQU0sWUFBWSxLQUFLLElBQUksTUFBTSxDQUFDLE9BQU87UUFBRSxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUM7SUFFckUsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLEdBQTBCLENBQUM7SUFDN0MsSUFBSSxLQUFLLFlBQVksS0FBSyxJQUFJLEtBQUssQ0FBQyxPQUFPO1FBQUUsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDO0lBRWxFLE9BQU8sR0FBRyxDQUFDLElBQUksSUFBSSxlQUFlLENBQUM7QUFDckMsQ0FBQztBQUVELE1BQXNCLHFCQUFzQixTQUFRLEtBQUs7SUFJdkQsWUFBWSxPQUFlLEVBQUUsV0FBb0I7UUFDL0MsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2Ys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
|
|
440
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2Vycm9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBTUEsb0NBSUM7QUFJRCxrREFZQztBQXBCRCxTQUFnQixZQUFZLENBQUMsS0FBYztJQUN6QyxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsS0FBNEIsQ0FBQztJQUUvQyxPQUFPLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztBQUM1RCxDQUFDO0FBRUQsZ0dBQWdHO0FBQ2hHLHNHQUFzRztBQUN0RyxTQUFnQixtQkFBbUIsQ0FBQyxHQUFhO0lBQy9DLElBQUksR0FBRyxLQUFLLFNBQVM7UUFBRSxPQUFPLFNBQVMsQ0FBQztJQUN4QyxJQUFJLENBQUMsQ0FBQyxHQUFHLFlBQVksS0FBSyxDQUFDO1FBQUUsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDaEQsSUFBSSxHQUFHLENBQUMsT0FBTztRQUFFLE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQztJQUVwQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsR0FBMkIsQ0FBQztJQUMvQyxJQUFJLE1BQU0sWUFBWSxLQUFLLElBQUksTUFBTSxDQUFDLE9BQU87UUFBRSxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUM7SUFFckUsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLEdBQTBCLENBQUM7SUFDN0MsSUFBSSxLQUFLLFlBQVksS0FBSyxJQUFJLEtBQUssQ0FBQyxPQUFPO1FBQUUsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDO0lBRWxFLE9BQU8sR0FBRyxDQUFDLElBQUksSUFBSSxlQUFlLENBQUM7QUFDckMsQ0FBQztBQUVELE1BQXNCLHFCQUFzQixTQUFRLEtBQUs7SUFJdkQsWUFBWSxPQUFlLEVBQUUsV0FBb0I7UUFDL0MsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2YsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztRQUNsQyxJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsSUFBSSxPQUFPLENBQUM7SUFDNUMsQ0FBQztDQUNGO0FBVEQsc0RBU0M7QUFFRCxtR0FBbUc7QUFDbkcsaUdBQWlHO0FBQ2pHLGdHQUFnRztBQUNoRyxpR0FBaUc7QUFDakcseUZBQXlGO0FBQ3pGLE1BQXNCLGFBQWMsU0FBUSxxQkFBcUI7Q0FBRztBQUFwRSxzQ0FBb0U7QUFDcEUsTUFBc0IsaUJBQWtCLFNBQVEscUJBQXFCO0NBQUc7QUFBeEUsOENBQXdFO0FBQ3hFLE1BQXNCLGdCQUFpQixTQUFRLHFCQUFxQjtDQUFHO0FBQXZFLDRDQUF1RTtBQUV2RSxNQUFhLG9CQUFxQixTQUFRLHFCQUFxQjtJQUM3RDtRQUNFLEtBQUssQ0FDSCwrQkFBK0IsRUFDL0Isc0VBQXNFLENBQ3ZFLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUFQRCxvREFPQztBQUVELE1BQWEsc0JBQXVCLFNBQVEscUJBQXFCO0lBRy9ELFlBQVksUUFBZ0IsRUFBRSxPQUFlO1FBQzNDLEtBQUssQ0FDSCwwQ0FBMEMsUUFBUSxNQUFNLE9BQU8sRUFBRSxFQUNqRSwyRUFBMkUsQ0FDNUUsQ0FBQztRQUNGLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0lBQzNCLENBQUM7Q0FDRjtBQVZELHdEQVVDO0FBRUQsTUFBYSxtQkFBb0IsU0FBUSxxQkFBcUI7SUFDNUQsWUFBWSxjQUFzQixFQUFFLFFBQWtCO1FBQ3BELEtBQUssQ0FDSCxpQ0FBaUMsY0FBYyxVQUFVLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFDOUUsd0RBQXdELENBQ3pELENBQUM7SUFDSixDQUFDO0NBQ0Y7QUFQRCxrREFPQztBQUVELE1BQWEsY0FBZSxTQUFRLHFCQUFxQjtJQUN2RDtRQUNFLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7Q0FDRjtBQUpELHdDQUlDO0FBRUQsTUFBYSxxQkFBc0IsU0FBUSxxQkFBcUI7SUFDOUQsWUFBWSxjQUFzQjtRQUNoQyxLQUFLLENBQ0gsaURBQWlELGNBQWMsR0FBRyxFQUNsRSxxRUFBcUUsQ0FDdEUsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQVBELHNEQU9DO0FBRUQsTUFBYSxxQkFBc0IsU0FBUSxxQkFBcUI7SUFDOUQsWUFBWSxVQUFvQjtRQUM5QixLQUFLLENBQ0gsbURBQW1ELFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFDMUUsMkZBQTJGLENBQzVGLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUFQRCxzREFPQztBQUVELE1BQWEscUJBQXNCLFNBQVEscUJBQXFCO0lBQzlELFlBQVksY0FBc0I7UUFDaEMsS0FBSyxDQUNILGlEQUFpRCxjQUFjLEdBQUcsRUFDbEUscUVBQXFFLENBQ3RFLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUFQRCxzREFPQztBQUVELE1BQWEsY0FBZSxTQUFRLHFCQUFxQjtJQUN2RCxZQUFZLGNBQXNCO1FBQ2hDLEtBQUssQ0FDSCx1Q0FBdUMsY0FBYyxHQUFHLEVBQ3hELDBDQUEwQyxDQUMzQyxDQUFDO0lBQ0osQ0FBQztDQUNGO0FBUEQsd0NBT0M7QUFFRCxNQUFhLDBCQUEyQixTQUFRLHFCQUFxQjtJQUNuRSxZQUFZLGlCQUF5QjtRQUNuQyxLQUFLLENBQ0gsV0FBVyxpQkFBaUIsMERBQTBELEVBQ3RGLHNGQUFzRixDQUN2RixDQUFDO0lBQ0osQ0FBQztDQUNGO0FBUEQsZ0VBT0M7QUFFRCxpR0FBaUc7QUFDakcsZ0ZBQWdGO0FBQ2hGLDhDQUE4QztBQUM5QyxNQUFhLHlCQUEwQixTQUFRLHFCQUFxQjtJQUNsRSxZQUFZLFVBQWtCLEVBQUUsS0FBZTtRQUM3QyxLQUFLLENBQ0gsV0FBVyxVQUFVLHNDQUFzQyxFQUMzRCxnRkFBZ0YsQ0FDakYsQ0FBQztRQUNGLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ3JCLENBQUM7Q0FDRjtBQVJELDhEQVFDO0FBRUQsaUdBQWlHO0FBQ2pHLG9GQUFvRjtBQUNwRix3RkFBd0Y7QUFDeEYsMENBQTBDO0FBQzFDLE1BQWEsMkJBQTRCLFNBQVEscUJBQXFCO0lBR3BFLFlBQVksVUFBa0IsRUFBRSx1QkFBa0M7UUFDaEUsS0FBSyxDQUNILFdBQVcsVUFBVSxpRUFBaUUsRUFDdEYseUVBQXlFLENBQzFFLENBQUM7UUFDRixJQUFJLENBQUMsdUJBQXVCLEdBQUcsdUJBQXVCLENBQUM7SUFDekQsQ0FBQztDQUNGO0FBVkQsa0VBVUM7QUFFRCxrR0FBa0c7QUFDbEcsTUFBYSw0QkFBNkIsU0FBUSxxQkFBcUI7SUFDckUsWUFBWSxVQUFrQixFQUFFLEtBQWU7UUFDN0MsS0FBSyxDQUNILFdBQVcsVUFBVSx1RUFBdUUsRUFDNUYsZ0dBQWdHLENBQ2pHLENBQUM7UUFDRixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUNyQixDQUFDO0NBQ0Y7QUFSRCxvRUFRQztBQUVELE1BQWEsaUJBQWtCLFNBQVEsZ0JBQWdCO0lBQ3JELFlBQVksU0FBaUIsRUFBRSxLQUFjO1FBQzNDLEtBQUssQ0FDSCxjQUFjLFNBQVMsYUFBYSxLQUFLLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFDNUYscURBQXFELENBQ3RELENBQUM7UUFDRixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUNyQixDQUFDO0NBQ0Y7QUFSRCw4Q0FRQztBQUVELE1BQWEseUJBQTBCLFNBQVEscUJBQXFCO0lBQ2xFLFlBQVksY0FBc0I7UUFDaEMsS0FBSyxDQUNILHFEQUFxRCxjQUFjLEdBQUcsRUFDdEUsK0RBQStELENBQ2hFLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUFQRCw4REFPQztBQUVELE1BQWEsMEJBQTJCLFNBQVEscUJBQXFCO0lBQ25FLFlBQVksY0FBc0IsRUFBRSxZQUFvQjtRQUN0RCxLQUFLLENBQ0gseUNBQXlDLFlBQVksb0JBQW9CLGNBQWMsR0FBRyxFQUMxRixrRUFBa0UsQ0FDbkUsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQVBELGdFQU9DO0FBRUQsTUFBYSxzQkFBdUIsU0FBUSxxQkFBcUI7SUFDL0QsWUFBWSxPQUFlO1FBQ3pCLEtBQUssQ0FBQyxPQUFPLEVBQUUscUVBQXFFLENBQUMsQ0FBQztJQUN4RixDQUFDO0NBQ0Y7QUFKRCx3REFJQztBQUVELE1BQWEscUJBQXNCLFNBQVEscUJBQXFCO0lBQzlELFlBQVksT0FBZTtRQUN6QixLQUFLLENBQUMsT0FBTyxFQUFFLCtEQUErRCxDQUFDLENBQUM7SUFDbEYsQ0FBQztDQUNGO0FBSkQsc0RBSUM7QUFFRCxNQUFhLHFCQUFzQixTQUFRLHFCQUFxQjtJQUM5RCxZQUFZLElBQVksRUFBRSxjQUFzQjtRQUM5QyxLQUFLLENBQ0gsYUFBYSxJQUFJLDhCQUE4QixjQUFjLEdBQUcsRUFDaEUsaUdBQWlHLENBQ2xHLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUFQRCxzREFPQztBQUVELE1BQWEsa0JBQW1CLFNBQVEscUJBQXFCO0lBQzNELFlBQVksSUFBWSxFQUFFLGNBQXNCO1FBQzlDLEtBQUssQ0FDSCxVQUFVLElBQUksOEJBQThCLGNBQWMsR0FBRyxFQUM3RCw4RkFBOEYsQ0FDL0YsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQVBELGdEQU9DO0FBRUQsTUFBYSxxQkFBc0IsU0FBUSxxQkFBcUI7SUFDOUQsWUFBWSxJQUFZLEVBQUUsY0FBc0I7UUFDOUMsS0FBSyxDQUNILFVBQVUsSUFBSSxvQkFBb0IsY0FBYyxzQkFBc0IsRUFDdEUsMkVBQTJFO1lBQ3pFLHFEQUFxRCxDQUN4RCxDQUFDO0lBQ0osQ0FBQztDQUNGO0FBUkQsc0RBUUM7QUFFRCxNQUFhLG1CQUFvQixTQUFRLHFCQUFxQjtJQUM1RCxZQUFZLElBQVksRUFBRSxjQUFzQjtRQUM5QyxLQUFLLENBQ0gsV0FBVyxJQUFJLDhCQUE4QixjQUFjLEdBQUcsRUFDOUQsZ0dBQWdHLENBQ2pHLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUFQRCxrREFPQztBQUVELE1BQWEsY0FBZSxTQUFRLHFCQUFxQjtJQUN2RCxZQUFZLE9BQWU7UUFDekIsS0FBSyxDQUFDLE9BQU8sRUFBRSwwREFBMEQsQ0FBQyxDQUFDO0lBQzdFLENBQUM7Q0FDRjtBQUpELHdDQUlDO0FBRUQsMEdBQTBHO0FBQzFHLE1BQWEsd0JBQXlCLFNBQVEscUJBQXFCO0lBQ2pFLFlBQVksS0FBYztRQUN4QixLQUFLLENBQ0gsK0JBQStCLEVBQy9CLHVIQUF1SCxDQUN4SCxDQUFDO1FBQ0YsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDckIsQ0FBQztDQUNGO0FBUkQsNERBUUM7QUFFRCxNQUFhLGdCQUFpQixTQUFRLHFCQUFxQjtJQUN6RCxZQUFZLFFBQWdCO1FBQzFCLEtBQUssQ0FDSCxzQ0FBc0MsUUFBUSxHQUFHLEVBQ2pELDhHQUE4RyxDQUMvRyxDQUFDO0lBQ0osQ0FBQztDQUNGO0FBUEQsNENBT0M7QUFFRCw2RkFBNkY7QUFDN0YseUZBQXlGO0FBQ3pGLG1GQUFtRjtBQUNuRixNQUFhLG9CQUFxQixTQUFRLHFCQUFxQjtJQUM3RCxZQUFZLFFBQWdCO1FBQzFCLEtBQUssQ0FDSCxzQ0FBc0MsUUFBUSxHQUFHLEVBQ2pELG1IQUFtSCxDQUNwSCxDQUFDO0lBQ0osQ0FBQztDQUNGO0FBUEQsb0RBT0M7QUFFRCxpR0FBaUc7QUFDakcsdUdBQXVHO0FBQ3ZHLE1BQWEsd0JBQXlCLFNBQVEscUJBQXFCO0lBR2pFLFlBQVksTUFBZTtRQUN6QixLQUFLLENBQUMsMkJBQTJCLENBQUMsQ0FBQztRQUNuQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUN2QixDQUFDO0NBQ0Y7QUFQRCw0REFPQztBQUVELE1BQWEsZUFBZ0IsU0FBUSxxQkFBcUI7SUFDeEQsWUFBWSxvQkFBNEI7UUFDdEMsS0FBSyxDQUNILDJDQUEyQyxvQkFBb0IsR0FBRyxFQUNsRSw2SEFBNkgsQ0FDOUgsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQVBELDBDQU9DO0FBRUQsTUFBYSxvQkFBcUIsU0FBUSxxQkFBcUI7SUFDN0QsWUFBWSxJQUFZO1FBQ3RCLEtBQUssQ0FDSCxhQUFhLElBQUksYUFBYSxFQUM5Qiw4RUFBOEUsQ0FDL0UsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQVBELG9EQU9DO0FBRUQsTUFBYSxjQUFlLFNBQVEscUJBQXFCO0lBQ3ZELFlBQVksU0FBaUIsRUFBRSxLQUFjO1FBQzNDLEtBQUssQ0FDSCxlQUFlLFNBQVMsYUFBYSxLQUFLLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFDN0YsZ0VBQWdFLENBQ2pFLENBQUM7UUFDRixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUNyQixDQUFDO0NBQ0Y7QUFSRCx3Q0FRQztBQUVELDhGQUE4RjtBQUM5Riw0RkFBNEY7QUFDNUYsTUFBYSxvQkFBcUIsU0FBUSxxQkFBcUI7SUFDN0QsWUFBWSxjQUFzQjtRQUNoQyxLQUFLLENBQ0gsMEJBQTBCLGNBQWMsaUVBQWlFLEVBQ3pHLGdFQUFnRSxDQUNqRSxDQUFDO0lBQ0osQ0FBQztDQUNGO0FBUEQsb0RBT0M7QUFFRCxNQUFhLGlCQUFrQixTQUFRLGdCQUFnQjtJQUNyRCxZQUFZLFNBQWlCLEVBQUUsS0FBYztRQUMzQyxLQUFLLENBQ0gsa0JBQWtCLFNBQVMsYUFDekIsS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FDdkQsRUFBRSxFQUNGLDZHQUE2RyxDQUM5RyxDQUFDO1FBQ0YsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDckIsQ0FBQztDQUNGO0FBVkQsOENBVUM7QUFFRCxNQUFhLGdCQUFpQixTQUFRLHFCQUFxQjtJQUN6RCxZQUFZLFNBQWlCLEVBQUUsS0FBYztRQUMzQyxLQUFLLENBQ0gsYUFBYSxTQUFTLGFBQWEsS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQzNGLGdGQUFnRixDQUNqRixDQUFDO1FBQ0YsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDckIsQ0FBQztDQUNGO0FBUkQsNENBUUM7QUFFRCxNQUFhLHNCQUF1QixTQUFRLHFCQUFxQjtJQUMvRCxZQUFZLFFBQWdCLEVBQUUsS0FBYztRQUMxQyxLQUFLLENBQ0gsYUFBYSxRQUFRLHdCQUNuQixLQUFLLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUN2RCxFQUFFLEVBQ0YsNkVBQTZFLENBQzlFLENBQUM7UUFDRixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUNyQixDQUFDO0NBQ0Y7QUFWRCx3REFVQztBQUVELE1BQWEsa0JBQW1CLFNBQVEsS0FBSztJQUMzQyxZQUFZLE9BQWU7UUFDekIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2YsSUFBSSxDQUFDLElBQUksR0FBRyxvQkFBb0IsQ0FBQztJQUNuQyxDQUFDO0NBQ0Y7QUFMRCxnREFLQztBQUVELGtHQUFrRztBQUNsRyxtRkFBbUY7QUFDbkYsTUFBYSx3QkFBeUIsU0FBUSxxQkFBcUI7SUFHakUsWUFDRSxXQUFtQixFQUNuQixzQkFBMkMsb0JBQW9CO1FBRS9ELEtBQUssQ0FDSCxxREFBcUQsV0FBVyxHQUFHLEVBQ25FLDRGQUE0RixDQUM3RixDQUFDO1FBQ0YsSUFBSSxDQUFDLG1CQUFtQixHQUFHLG1CQUFtQixDQUFDO0lBQ2pELENBQUM7Q0FDRjtBQWJELDREQWFDO0FBRUQsbUdBQW1HO0FBQ25HLDBHQUEwRztBQUMxRyxNQUFhLGlCQUFrQixTQUFRLHFCQUFxQjtJQUMxRCxZQUFZLE9BQWUsRUFBRSxLQUFlO1FBQzFDLEtBQUssQ0FDSCwrQkFBK0IsT0FBTyxFQUFFLEVBQ3hDLGtFQUFrRSxDQUNuRSxDQUFDO1FBQ0YsSUFBSSxLQUFLLEtBQUssU0FBUztZQUFFLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQzlDLENBQUM7Q0FDRjtBQVJELDhDQVFDO0FBRUQsZ0dBQWdHO0FBQ2hHLG9HQUFvRztBQUNwRyx5Q0FBeUM7QUFDekMsTUFBYSxzQkFBdUIsU0FBUSxxQkFBcUI7SUFDL0QsWUFBWSxNQUFlO1FBQ3pCLEtBQUssQ0FBQywrQkFBK0IsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7Q0FDRjtBQUpELHdEQUlDO0FBRUQsb0dBQW9HO0FBQ3BHLG1HQUFtRztBQUNuRyw2RkFBNkY7QUFDN0YsTUFBYSx5QkFBMEIsU0FBUSxxQkFBcUI7SUFDbEUsWUFBWSxNQUFjO1FBQ3hCLEtBQUssQ0FDSCxpQ0FBaUMsTUFBTSxFQUFFLEVBQ3pDLGtGQUFrRixDQUNuRixDQUFDO0lBQ0osQ0FBQztDQUNGO0FBUEQsOERBT0M7QUFFRCxrR0FBa0c7QUFDbEcseUVBQXlFO0FBQ3pFLE1BQWEsaUNBQWtDLFNBQVEsS0FBSztJQUcxRDtRQUNFLEtBQUssQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDO1FBSDVDLFNBQUksR0FBRyxpQ0FBaUMsQ0FBQztRQUloRCxJQUFJLENBQUMsSUFBSSxHQUFHLG1DQUFtQyxDQUFDO0lBQ2xELENBQUM7Q0FDRjtBQVBELDhFQU9DO0FBRUQsbUdBQW1HO0FBQ25HLG1FQUFtRTtBQUNuRSxNQUFhLGdCQUFpQixTQUFRLGFBQWE7SUFDakQsWUFBWSxLQUFhLEVBQUUsS0FBZTtRQUN4QyxLQUFLLENBQUMsUUFBUSxLQUFLLDRCQUE0QixFQUFFLDhCQUE4QixDQUFDLENBQUM7UUFDakYsSUFBSSxLQUFLLEtBQUssU0FBUztZQUFFLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQzlDLENBQUM7Q0FDRjtBQUxELDRDQUtDO0FBRUQsTUFBYSxpQkFBa0IsU0FBUSxpQkFBaUI7SUFDdEQsNkZBQTZGO0lBQzdGLDhEQUE4RDtJQUM5RCxZQUFZLEtBQWEsRUFBRSxZQUFvQixFQUFFLFdBQW1CO1FBQ2xFLEtBQUssQ0FDSCxRQUFRLFlBQVksNEJBQTRCLEtBQUssb0JBQW9CLFdBQVcsR0FBRyxFQUN2Riw0Q0FBNEMsQ0FDN0MsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQVRELDhDQVNDO0FBRUQsaUdBQWlHO0FBQ2pHLG1HQUFtRztBQUNuRyxNQUFhLHVCQUF3QixTQUFRLHFCQUFxQjtJQUNoRSxZQUFZLEtBQWE7UUFDdkIsS0FBSyxDQUFDLFFBQVEsS0FBSyw4QkFBOEIsQ0FBQyxDQUFDO0lBQ3JELENBQUM7Q0FDRjtBQUpELDBEQUlDO0FBRUQsTUFBYSx3QkFBeUIsU0FBUSxLQUFLO0lBQ2pELFlBQVksS0FBYSxFQUFFLFNBQWlCO1FBQzFDLEtBQUssQ0FBQyxRQUFRLFNBQVMsWUFBWSxLQUFLLG9DQUFvQyxDQUFDLENBQUM7UUFDOUUsSUFBSSxDQUFDLElBQUksR0FBRywwQkFBMEIsQ0FBQztJQUN6QyxDQUFDO0NBQ0Y7QUFMRCw0REFLQztBQVNELE1BQWEsdUJBQXdCLFNBQVEscUJBQXFCO0lBR2hFLFlBQVksTUFBeUI7UUFDbkMsS0FBSyxDQUFDLHNCQUFzQixFQUFFLDhCQUE4QixDQUFDLENBQUM7UUFDOUQsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7SUFDdkIsQ0FBQztDQUNGO0FBUEQsMERBT0M7QUFFRCxNQUFhLDJCQUE0QixTQUFRLHFCQUFxQjtJQUNwRSxZQUFZLE1BQWM7UUFDeEIsS0FBSyxDQUFDLDhCQUE4QixNQUFNLEVBQUUsRUFBRSxnREFBZ0QsQ0FBQyxDQUFDO0lBQ2xHLENBQUM7Q0FDRjtBQUpELGtFQUlDO0FBRUQsa0dBQWtHO0FBQ2xHLDZFQUE2RTtBQUM3RSx1R0FBdUc7QUFDdkcsTUFBYSx3QkFBeUIsU0FBUSxxQkFBcUI7SUFDakUsWUFBWSxXQUFvQjtRQUM5QixNQUFNLElBQUksR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksV0FBVyxHQUFHLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDO1FBQ2xFLEtBQUssQ0FDSCxlQUFlLElBQUksbUJBQW1CLEVBQ3RDLGtCQUFrQixJQUFJLHVEQUF1RCxDQUM5RSxDQUFDO0lBQ0osQ0FBQztDQUNGO0FBUkQsNERBUUM7QUFFRCw0R0FBNEc7QUFDNUcsTUFBYSxlQUFnQixTQUFRLEtBQUs7SUFJeEMsWUFBWSxPQUFlLEVBQUUsT0FBNkI7UUFDeEQsS0FBSyxDQUFDLHVCQUF1QixPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxJQUFJLEdBQUcsaUJBQWlCLENBQUM7UUFDOUIsSUFBSSxPQUFPLEVBQUUsS0FBSyxLQUFLLFNBQVM7WUFBRSxJQUFJLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUM7SUFDL0QsQ0FBQztDQUNGO0FBVEQsMENBU0M7QUFFRCxNQUFhLHdCQUF5QixTQUFRLHFCQUFxQjtJQUNqRSxZQUFZLFFBQWdCO1FBQzFCLEtBQUssQ0FDSCxjQUFjLFFBQVEsb0NBQW9DLEVBQzFELHNDQUFzQyxDQUN2QyxDQUFDO0lBQ0osQ0FBQztDQUNGO0FBUEQsNERBT0M7QUFFRCxNQUFhLDBCQUEyQixTQUFRLHFCQUFxQjtJQUNuRSxZQUFZLElBQVk7UUFDdEIsS0FBSyxDQUNILDZCQUE2QixJQUFJLG9DQUFvQyxFQUNyRSxnRkFBZ0YsQ0FDakYsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQVBELGdFQU9DO0FBRUQsTUFBYSwwQkFBMkIsU0FBUSxxQkFBcUI7SUFDbkUsWUFBWSxNQUFjO1FBQ3hCLEtBQUssQ0FDSCw0QkFBNEIsTUFBTSxFQUFFLEVBQ3BDLGlGQUFpRixDQUNsRixDQUFDO0lBQ0osQ0FBQztDQUNGO0FBUEQsZ0VBT0M7QUFFRCx1RkFBdUY7QUFDdkYsaUdBQWlHO0FBQ2pHLHFGQUFxRjtBQUNyRixNQUFhLHFCQUFzQixTQUFRLHFCQUFxQjtJQUc5RCxZQUFZLEtBQWEsRUFBRSxRQUFvQjtRQUM3QyxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDdkMsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLFFBQVE7WUFDbEMsT0FBTyxFQUFFLENBQUMsQ0FBQyxPQUFPO1NBQ25CLENBQUMsQ0FBQyxDQUFDO1FBQ0osTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLE1BQU07WUFDM0IsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztZQUN2RCxDQUFDLENBQUMsc0RBQXNELENBQUM7UUFFM0QsS0FBSyxDQUNILE9BQU8sS0FBSyxxREFBcUQsT0FBTyxFQUFFLEVBQzFFLHNGQUFzRixDQUN2RixDQUFDO1FBQ0YsSUFBSSxDQUFDLEtBQUssR0FBRyxRQUFRLENBQUM7UUFDdEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7SUFDdkIsQ0FBQztDQUNGO0FBbkJELHNEQW1CQztBQUVELDRGQUE0RjtBQUM1RixNQUFhLGlCQUFrQixTQUFRLHFCQUFxQjtJQUcxRCxZQUFZLElBQXNCO1FBQ2hDLEtBQUssQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQy9DLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBQ25CLENBQUM7Q0FDRjtBQVBELDhDQU9DIn0=
|
|
@@ -5,25 +5,22 @@ export default class LoadRelatedRecordStepExecutor extends RecordStepExecutor<Lo
|
|
|
5
5
|
protected doExecute(): Promise<StepExecutionResult>;
|
|
6
6
|
private refreshCandidatesForField;
|
|
7
7
|
private handleFirstCall;
|
|
8
|
+
private logAiDegrade;
|
|
9
|
+
private degradeToManualAwaitInput;
|
|
8
10
|
private resolveTarget;
|
|
9
11
|
private targetFromCandidate;
|
|
10
12
|
private buildRelationCandidates;
|
|
11
13
|
private resolveTargetCollection;
|
|
12
14
|
private buildTarget;
|
|
13
15
|
private saveAndAwaitInput;
|
|
16
|
+
private persistAwaitInput;
|
|
14
17
|
private collectCandidateIds;
|
|
15
18
|
private extractReferenceFieldValue;
|
|
16
|
-
/** Branch B: fully automated. xToOne loads the linked record; HasMany ranks candidates via AI; BelongsToMany takes the first. */
|
|
17
19
|
private resolveAndLoadAutomatic;
|
|
18
|
-
private fetchRecordForRelation;
|
|
19
|
-
private fetchXToOneRecordRef;
|
|
20
20
|
private fetchXToOneCandidate;
|
|
21
21
|
private resolveFromSelection;
|
|
22
22
|
private selectBestFromRelatedData;
|
|
23
|
-
|
|
24
|
-
private selectBestRelatedRecord;
|
|
25
|
-
private fetchFirstCandidate;
|
|
26
|
-
private fetchCandidates;
|
|
23
|
+
private withAiAssist;
|
|
27
24
|
private fetchRelatedData;
|
|
28
25
|
/** Persists the loaded record ref and returns a success outcome. */
|
|
29
26
|
private persistAndReturn;
|
|
@@ -31,8 +28,6 @@ export default class LoadRelatedRecordStepExecutor extends RecordStepExecutor<Lo
|
|
|
31
28
|
private selectRelationToFollow;
|
|
32
29
|
/** AI call 1 for HasMany: selects the most relevant fields to compare candidates. */
|
|
33
30
|
private selectRelevantFields;
|
|
34
|
-
/** AI call 2 for HasMany: selects the best record by index from the candidate list. */
|
|
35
31
|
private selectBestRecordIndex;
|
|
36
|
-
private toRecordRef;
|
|
37
32
|
}
|
|
38
33
|
//# sourceMappingURL=load-related-record-step-executor.d.ts.map
|
|
@@ -21,6 +21,9 @@ const SELECT_FIELDS_SYSTEM_PROMPT = `You are an AI agent selecting the most rele
|
|
|
21
21
|
Choose the fields that are most useful for determining which record best matches the user request.`;
|
|
22
22
|
const SELECT_RECORD_SYSTEM_PROMPT = `You are an AI agent selecting the most relevant related record from a list of candidates.
|
|
23
23
|
Choose the record that best matches the user request based on the provided field values.`;
|
|
24
|
+
// Only appended when -1 is a valid answer. The base prompt tells the AI to always pick, so without
|
|
25
|
+
// this it forces a weak match on an impossible request instead of declining.
|
|
26
|
+
const SELECT_RECORD_NONE_ALLOWED_PROMPT = `If the request states a specific requirement that NO candidate satisfies, return -1 instead of forcing an arbitrary or loosely-related match. Do NOT return -1 merely because a match is imperfect — only when no candidate genuinely fits the request.`;
|
|
24
27
|
// Bound only what is sent to the AI in selectBestRecordIndex — the full candidate list is
|
|
25
28
|
// always returned to the front via availableRecordIds. These cap the prompt size, not the data.
|
|
26
29
|
const MAX_RELEVANT_FIELDS = 6;
|
|
@@ -52,39 +55,74 @@ class LoadRelatedRecordStepExecutor extends record_step_executor_1.default {
|
|
|
52
55
|
return this.handleFirstCall();
|
|
53
56
|
}
|
|
54
57
|
async refreshCandidatesForField(execution, fieldName) {
|
|
55
|
-
if (!execution.pendingData) {
|
|
58
|
+
if (!execution.pendingData || !execution.selectedRecordRef) {
|
|
56
59
|
throw new errors_1.StepStateError(`Step at index ${this.context.stepIndex} has no pending data`);
|
|
57
60
|
}
|
|
61
|
+
const useAi = this.context.stepDefinition.executionType !== step_definition_1.StepExecutionMode.Manual;
|
|
58
62
|
const schema = await this.getCollectionSchema(execution.selectedRecordRef.collectionName);
|
|
59
63
|
const target = await this.buildTarget(schema, fieldName, execution.selectedRecordRef);
|
|
60
|
-
|
|
64
|
+
// AI failure while re-listing → degrade to the no-AI list, not a run error (see AiAssistUnavailableError).
|
|
65
|
+
let aiSuggested = useAi;
|
|
66
|
+
let candidates;
|
|
67
|
+
try {
|
|
68
|
+
candidates = await this.collectCandidateIds(target, useAi);
|
|
69
|
+
}
|
|
70
|
+
catch (error) {
|
|
71
|
+
if (!(useAi && error instanceof errors_1.AiAssistUnavailableError))
|
|
72
|
+
throw error;
|
|
73
|
+
this.logAiDegrade(error.reason);
|
|
74
|
+
aiSuggested = false;
|
|
75
|
+
candidates = await this.collectCandidateIds(target, false);
|
|
76
|
+
}
|
|
77
|
+
const { availableRecordIds, suggestedRecord } = candidates;
|
|
61
78
|
await this.context.runStore.saveStepExecution(this.context.runId, {
|
|
62
79
|
...execution,
|
|
63
80
|
userConfirmation: undefined,
|
|
81
|
+
// Rebuild pendingData for the new relation from scratch (retain only the immutable field list)
|
|
82
|
+
// so no stale suggestion state — suggestedRecord or suggestNoRecord — survives the field switch.
|
|
64
83
|
pendingData: {
|
|
65
|
-
|
|
84
|
+
availableFields: execution.pendingData.availableFields,
|
|
66
85
|
suggestedField: { name: target.name, displayName: target.displayName },
|
|
67
86
|
availableRecordIds,
|
|
68
87
|
suggestedRecord,
|
|
88
|
+
...(aiSuggested && !suggestedRecord && { suggestNoRecord: true }),
|
|
69
89
|
},
|
|
70
90
|
});
|
|
71
91
|
return this.buildOutcomeResult({ status: 'awaiting-input' });
|
|
72
92
|
}
|
|
73
93
|
async handleFirstCall() {
|
|
74
94
|
const { stepDefinition: step } = this.context;
|
|
75
|
-
const
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
95
|
+
const useAi = step.executionType !== step_definition_1.StepExecutionMode.Manual;
|
|
96
|
+
try {
|
|
97
|
+
if (step.executionType === step_definition_1.StepExecutionMode.FullyAutomated) {
|
|
98
|
+
return await this.resolveAndLoadAutomatic();
|
|
99
|
+
}
|
|
100
|
+
const target = await this.resolveTarget(useAi);
|
|
101
|
+
const sourceSchema = await this.getCollectionSchema(target.selectedRecordRef.collectionName);
|
|
102
|
+
return await this.saveAndAwaitInput(target, sourceSchema, useAi);
|
|
79
103
|
}
|
|
80
|
-
|
|
104
|
+
catch (error) {
|
|
105
|
+
// AI failure in any AI mode → degrade to Manual (see AiAssistUnavailableError).
|
|
106
|
+
if (useAi && error instanceof errors_1.AiAssistUnavailableError) {
|
|
107
|
+
this.logAiDegrade(error.reason);
|
|
108
|
+
return this.degradeToManualAwaitInput();
|
|
109
|
+
}
|
|
110
|
+
throw error;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
logAiDegrade(reason) {
|
|
114
|
+
this.context.logger('Warn', 'load-related-record: AI unavailable, degrading to manual selection', { ...this.logCtx, error: (0, errors_1.extractErrorMessage)(reason) });
|
|
115
|
+
}
|
|
116
|
+
// The re-run is AI-free (first eligible relation, no-AI list), so it can't re-trigger the failure.
|
|
117
|
+
async degradeToManualAwaitInput() {
|
|
118
|
+
const target = await this.resolveTarget(false);
|
|
81
119
|
const sourceSchema = await this.getCollectionSchema(target.selectedRecordRef.collectionName);
|
|
82
|
-
return this.saveAndAwaitInput(target, sourceSchema);
|
|
120
|
+
return this.saveAndAwaitInput(target, sourceSchema, false);
|
|
83
121
|
}
|
|
84
122
|
// Picks the (record, relation) pair to follow. Unlike a separate record-then-relation choice,
|
|
85
123
|
// this lets the AI decide by what each relation LEADS TO — so "load the dvd" follows
|
|
86
124
|
// store→dvds rather than latching onto a previously-loaded dvd whose collection just matches.
|
|
87
|
-
async resolveTarget() {
|
|
125
|
+
async resolveTarget(useAi) {
|
|
88
126
|
const { preRecordedArgs } = this.context.stepDefinition;
|
|
89
127
|
const sourceRecords = preRecordedArgs?.selectedRecordStepId !== undefined
|
|
90
128
|
? [await this.resolveSourceRecordRef(preRecordedArgs.selectedRecordStepId)]
|
|
@@ -100,7 +138,9 @@ class LoadRelatedRecordStepExecutor extends record_step_executor_1.default {
|
|
|
100
138
|
// Relations exist, but the pre-recorded one doesn't match any of them.
|
|
101
139
|
throw new errors_1.InvalidPreRecordedArgsError(`No relation matching "${pinned}" on the selected record`);
|
|
102
140
|
}
|
|
103
|
-
|
|
141
|
+
// No-AI path picks eligible[0] — the base record's first relation (getAvailableRecordRefs lists
|
|
142
|
+
// it first). The user switches relation at runtime; a non-base source needs selectedRecordStepId pinning.
|
|
143
|
+
const chosen = eligible.length > 1 && useAi ? await this.selectRelationToFollow(eligible) : eligible[0];
|
|
104
144
|
return this.targetFromCandidate(chosen);
|
|
105
145
|
}
|
|
106
146
|
targetFromCandidate(candidate) {
|
|
@@ -170,11 +210,19 @@ class LoadRelatedRecordStepExecutor extends record_step_executor_1.default {
|
|
|
170
210
|
relatedCollectionName,
|
|
171
211
|
};
|
|
172
212
|
}
|
|
173
|
-
//
|
|
174
|
-
|
|
175
|
-
|
|
213
|
+
// Save errors propagate directly — the relation-load hasn't run yet, so the step can be retried.
|
|
214
|
+
async saveAndAwaitInput(target, sourceSchema, suggestViaAi) {
|
|
215
|
+
const { availableRecordIds, suggestedRecord } = await this.collectCandidateIds(target, suggestViaAi);
|
|
216
|
+
return this.persistAwaitInput(target, sourceSchema, {
|
|
217
|
+
availableRecordIds,
|
|
218
|
+
suggestedRecord,
|
|
219
|
+
// An AI pass that yields no record is a deliberate "nothing relevant" → pre-check "No X to load".
|
|
220
|
+
// A Manual pass with no suggestion just means the user picks, so no pre-check.
|
|
221
|
+
suggestNoRecord: suggestViaAi && !suggestedRecord,
|
|
222
|
+
});
|
|
223
|
+
}
|
|
224
|
+
async persistAwaitInput(target, sourceSchema, pending) {
|
|
176
225
|
const { selectedRecordRef, name, displayName } = target;
|
|
177
|
-
const { availableRecordIds, suggestedRecord } = await this.collectCandidateIds(target);
|
|
178
226
|
const availableFields = sourceSchema.fields
|
|
179
227
|
.filter(isFollowableRelation)
|
|
180
228
|
.map(f => ({ name: f.fieldName, displayName: f.displayName }));
|
|
@@ -184,23 +232,27 @@ class LoadRelatedRecordStepExecutor extends record_step_executor_1.default {
|
|
|
184
232
|
pendingData: {
|
|
185
233
|
availableFields,
|
|
186
234
|
suggestedField: { name, displayName },
|
|
187
|
-
availableRecordIds,
|
|
188
|
-
suggestedRecord,
|
|
235
|
+
availableRecordIds: pending.availableRecordIds,
|
|
236
|
+
suggestedRecord: pending.suggestedRecord,
|
|
237
|
+
...(pending.suggestNoRecord && { suggestNoRecord: true }),
|
|
189
238
|
},
|
|
190
239
|
selectedRecordRef,
|
|
191
240
|
});
|
|
192
241
|
return this.buildOutcomeResult({ status: 'awaiting-input' });
|
|
193
242
|
}
|
|
194
|
-
async collectCandidateIds(target) {
|
|
243
|
+
async collectCandidateIds(target, suggestViaAi) {
|
|
195
244
|
if (target.relationType === 'BelongsTo' || target.relationType === 'HasOne') {
|
|
196
245
|
const candidate = await this.fetchXToOneCandidate(target);
|
|
197
246
|
return candidate
|
|
198
|
-
? { availableRecordIds: [candidate], suggestedRecord: candidate }
|
|
199
|
-
: { availableRecordIds: [] };
|
|
247
|
+
? { availableRecordIds: [candidate], suggestedRecord: candidate, ambiguous: false }
|
|
248
|
+
: { availableRecordIds: [], ambiguous: false };
|
|
200
249
|
}
|
|
201
|
-
const { relatedData, bestIndex, relatedSchema } = await this.selectBestFromRelatedData(target, 50
|
|
250
|
+
const { relatedData, bestIndex, confident, relatedSchema } = await this.selectBestFromRelatedData(target, 50,
|
|
251
|
+
// allowNone: the AI may judge no candidate relevant (→ "No X to load"); only meaningful when
|
|
252
|
+
// ranking (Manual passes rank=false and never calls the AI).
|
|
253
|
+
suggestViaAi ? { rank: true, allowNone: true } : { rank: false });
|
|
202
254
|
if (relatedData.length === 0) {
|
|
203
|
-
return { availableRecordIds: [] };
|
|
255
|
+
return { availableRecordIds: [], ambiguous: false };
|
|
204
256
|
}
|
|
205
257
|
const referenceField = relatedSchema.referenceField ?? null;
|
|
206
258
|
const toCandidate = (r) => ({
|
|
@@ -211,37 +263,35 @@ class LoadRelatedRecordStepExecutor extends record_step_executor_1.default {
|
|
|
211
263
|
});
|
|
212
264
|
return {
|
|
213
265
|
availableRecordIds: relatedData.map(toCandidate),
|
|
214
|
-
suggestedRecord: toCandidate(relatedData[bestIndex]),
|
|
266
|
+
suggestedRecord: bestIndex >= 0 ? toCandidate(relatedData[bestIndex]) : undefined,
|
|
267
|
+
// -1 (none relevant) is not ambiguity; only a low-confidence positive pick is.
|
|
268
|
+
ambiguous: bestIndex >= 0 && !confident,
|
|
215
269
|
};
|
|
216
270
|
}
|
|
217
271
|
extractReferenceFieldValue(values, referenceField) {
|
|
218
272
|
const v = values[referenceField];
|
|
219
273
|
return v === undefined || v === null ? null : String(v);
|
|
220
274
|
}
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
const
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
if (
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
}
|
|
235
|
-
async fetchXToOneRecordRef(target) {
|
|
236
|
-
const candidate = await this.fetchXToOneCandidate(target);
|
|
237
|
-
if (!candidate) {
|
|
238
|
-
throw new errors_1.RelatedRecordNotFoundError(target.selectedRecordRef.collectionName, target.name);
|
|
275
|
+
async resolveAndLoadAutomatic() {
|
|
276
|
+
// No source record throws (like Manual/AI-assisted) → the front offers "continue without".
|
|
277
|
+
const target = await this.resolveTarget(true);
|
|
278
|
+
const { availableRecordIds, suggestedRecord, ambiguous } = await this.collectCandidateIds(target, true);
|
|
279
|
+
// Full AI auto-loads only a confident single pick; otherwise it degrades to an AI-assisted
|
|
280
|
+
// confirmation — "No X to load" pre-checked when nothing fits, else its best guess pre-selected.
|
|
281
|
+
if (!suggestedRecord || ambiguous) {
|
|
282
|
+
const sourceSchema = await this.getCollectionSchema(target.selectedRecordRef.collectionName);
|
|
283
|
+
return this.persistAwaitInput(target, sourceSchema, {
|
|
284
|
+
availableRecordIds,
|
|
285
|
+
suggestedRecord,
|
|
286
|
+
suggestNoRecord: !suggestedRecord,
|
|
287
|
+
});
|
|
239
288
|
}
|
|
240
|
-
|
|
289
|
+
const record = {
|
|
241
290
|
collectionName: target.relatedCollectionName,
|
|
242
|
-
recordId:
|
|
291
|
+
recordId: suggestedRecord.recordId,
|
|
243
292
|
stepIndex: this.context.stepIndex,
|
|
244
293
|
};
|
|
294
|
+
return this.persistAndReturn(record, target, undefined);
|
|
245
295
|
}
|
|
246
296
|
async fetchXToOneCandidate(target) {
|
|
247
297
|
const relatedSchema = await this.getCollectionSchema(target.relatedCollectionName);
|
|
@@ -265,7 +315,7 @@ class LoadRelatedRecordStepExecutor extends record_step_executor_1.default {
|
|
|
265
315
|
// Branch A: builds RecordRef from the user-confirmed selection without a new getRelatedData call.
|
|
266
316
|
async resolveFromSelection(execution) {
|
|
267
317
|
const { selectedRecordRef, pendingData, userConfirmation } = execution;
|
|
268
|
-
if (!pendingData) {
|
|
318
|
+
if (!pendingData || !selectedRecordRef) {
|
|
269
319
|
throw new errors_1.StepStateError(`Step at index ${this.context.stepIndex} has no pending data`);
|
|
270
320
|
}
|
|
271
321
|
const relationRef = userConfirmation?.fieldName
|
|
@@ -294,39 +344,45 @@ class LoadRelatedRecordStepExecutor extends record_step_executor_1.default {
|
|
|
294
344
|
};
|
|
295
345
|
return this.persistAndReturn(record, { selectedRecordRef, name, displayName }, execution);
|
|
296
346
|
}
|
|
297
|
-
async selectBestFromRelatedData(target, limit
|
|
347
|
+
async selectBestFromRelatedData(target, limit,
|
|
348
|
+
// allowNone is meaningful only when ranking, so it's absent from the rank:false variant.
|
|
349
|
+
opts = { rank: true, allowNone: false }) {
|
|
298
350
|
const relatedSchema = await this.getCollectionSchema(target.relatedCollectionName);
|
|
299
351
|
const relatedData = await this.fetchRelatedData(target, relatedSchema, limit);
|
|
300
|
-
// Empty
|
|
301
|
-
if (relatedData.length <= 1) {
|
|
302
|
-
return { relatedData, bestIndex: 0, suggestedFields: [], relatedSchema };
|
|
303
|
-
}
|
|
304
|
-
// The final record stays AI-suggested + user-confirmed — only the source + relation are
|
|
305
|
-
// pinned deterministically. Index-based record pinning was removed (not revise-safe).
|
|
306
|
-
const suggestedFields = await this.selectRelevantFields(relatedSchema, this.context.stepDefinition.prompt);
|
|
307
|
-
const bestIndex = await this.selectBestRecordIndex(relatedData, suggestedFields, this.context.stepDefinition.prompt);
|
|
308
|
-
return { relatedData, bestIndex, suggestedFields, relatedSchema };
|
|
309
|
-
}
|
|
310
|
-
/** HasMany + fully automated execution: fetch top 50, then AI calls to select the best record. */
|
|
311
|
-
async selectBestRelatedRecord(target) {
|
|
312
|
-
const { relatedData, bestIndex } = await this.selectBestFromRelatedData(target, 50);
|
|
352
|
+
// Empty lists have nothing to rank or pre-select.
|
|
313
353
|
if (relatedData.length === 0) {
|
|
314
|
-
|
|
354
|
+
return { relatedData, bestIndex: -1, confident: true, suggestedFields: [], relatedSchema };
|
|
315
355
|
}
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
356
|
+
// Manual: no AI. A sole candidate is pre-selected (the only possible choice, as for an xToOne
|
|
357
|
+
// relation); with several, the user picks from the list.
|
|
358
|
+
if (!opts.rank) {
|
|
359
|
+
return {
|
|
360
|
+
relatedData,
|
|
361
|
+
bestIndex: relatedData.length === 1 ? 0 : -1,
|
|
362
|
+
confident: true,
|
|
363
|
+
suggestedFields: [],
|
|
364
|
+
relatedSchema,
|
|
365
|
+
};
|
|
366
|
+
}
|
|
367
|
+
// Ranking (AI-assisted / Full AI): even a lone candidate goes through the AI so Full AI can
|
|
368
|
+
// decline it (-1 → "No X to load") rather than auto-loading a possibly-irrelevant sole record.
|
|
369
|
+
// The final record stays AI-suggested + user-confirmed (or AI-decided in Full AI): only the
|
|
370
|
+
// source and relation are pinned deterministically, not the record index (not revise-safe).
|
|
371
|
+
const suggestedFields = await this.withAiAssist(() => this.selectRelevantFields(relatedSchema, this.context.stepDefinition.prompt));
|
|
372
|
+
const { index: bestIndex, confident } = await this.withAiAssist(() => this.selectBestRecordIndex(relatedData, suggestedFields, this.context.stepDefinition.prompt, opts.allowNone));
|
|
373
|
+
return { relatedData, bestIndex, confident, suggestedFields, relatedSchema };
|
|
321
374
|
}
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
375
|
+
// Tags failures raised in an AI call as AiAssistUnavailableError; passing an already-tagged error
|
|
376
|
+
// through avoids double-wrapping when calls nest.
|
|
377
|
+
async withAiAssist(call) {
|
|
378
|
+
try {
|
|
379
|
+
return await call();
|
|
380
|
+
}
|
|
381
|
+
catch (error) {
|
|
382
|
+
if (error instanceof errors_1.AiAssistUnavailableError)
|
|
383
|
+
throw error;
|
|
384
|
+
throw new errors_1.AiAssistUnavailableError(error);
|
|
328
385
|
}
|
|
329
|
-
return relatedData.map(r => this.toRecordRef(r));
|
|
330
386
|
}
|
|
331
387
|
async fetchRelatedData(target, relatedSchema, limit) {
|
|
332
388
|
return this.context.agent.getRelatedData({
|
|
@@ -375,12 +431,16 @@ class LoadRelatedRecordStepExecutor extends record_step_executor_1.default {
|
|
|
375
431
|
new ai_proxy_1.SystemMessage(SELECT_RELATION_SYSTEM_PROMPT),
|
|
376
432
|
new ai_proxy_1.HumanMessage(`**Request**: ${this.context.stepDefinition.prompt ?? 'Load the relevant related record.'}`),
|
|
377
433
|
];
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
434
|
+
// Wrap only the AI call + response validation: buildPreviousStepsMessages above reads the run
|
|
435
|
+
// store, and a store failure must surface, not be mistagged as an AI failure and degraded.
|
|
436
|
+
return this.withAiAssist(async () => {
|
|
437
|
+
const { relation } = await this.invokeWithTool(messages, tool);
|
|
438
|
+
const index = labels.indexOf(relation);
|
|
439
|
+
if (index === -1) {
|
|
440
|
+
throw new errors_1.InvalidAIResponseError(`AI selected relation "${relation}" which does not match any available option`);
|
|
441
|
+
}
|
|
442
|
+
return candidates[index];
|
|
443
|
+
});
|
|
384
444
|
}
|
|
385
445
|
/** AI call 1 for HasMany: selects the most relevant fields to compare candidates. */
|
|
386
446
|
async selectRelevantFields(schema, prompt) {
|
|
@@ -421,8 +481,7 @@ class LoadRelatedRecordStepExecutor extends record_step_executor_1.default {
|
|
|
421
481
|
.slice(0, MAX_RELEVANT_FIELDS)
|
|
422
482
|
.map(dn => nonRelationFields.find(f => f.displayName === dn)?.fieldName ?? dn);
|
|
423
483
|
}
|
|
424
|
-
|
|
425
|
-
async selectBestRecordIndex(candidates, fieldNames, prompt) {
|
|
484
|
+
async selectBestRecordIndex(candidates, fieldNames, prompt, allowNone = false) {
|
|
426
485
|
const filteredCandidates = candidates.map((c, i) => {
|
|
427
486
|
const entries = Object.entries(c.values).filter(([k]) => fieldNames.length === 0 || fieldNames.includes(k));
|
|
428
487
|
return {
|
|
@@ -442,14 +501,19 @@ class LoadRelatedRecordStepExecutor extends record_step_executor_1.default {
|
|
|
442
501
|
usedChars += line.length + 1;
|
|
443
502
|
}
|
|
444
503
|
const shown = lines.length;
|
|
445
|
-
|
|
504
|
+
const truncated = shown < candidates.length;
|
|
505
|
+
if (truncated) {
|
|
446
506
|
this.context.logger('Warn', 'load-related-record: candidate list truncated for AI prompt', {
|
|
447
507
|
...this.logCtx,
|
|
448
508
|
shown,
|
|
449
509
|
total: candidates.length,
|
|
450
510
|
});
|
|
451
511
|
}
|
|
512
|
+
// "None relevant" (-1) is only trustworthy when the AI saw the whole list. If it was truncated,
|
|
513
|
+
// force a pick from what was shown — otherwise a match in the unseen tail would be silently skipped.
|
|
514
|
+
const noneAllowed = allowNone && !truncated;
|
|
452
515
|
const maxIndex = shown - 1;
|
|
516
|
+
const minIndex = noneAllowed ? -1 : 0;
|
|
453
517
|
const tool = new ai_proxy_1.DynamicStructuredTool({
|
|
454
518
|
name: 'select-record-by-content',
|
|
455
519
|
description: 'Select the most relevant related record by its index.',
|
|
@@ -457,34 +521,37 @@ class LoadRelatedRecordStepExecutor extends record_step_executor_1.default {
|
|
|
457
521
|
recordIndex: zod_1.z
|
|
458
522
|
.number()
|
|
459
523
|
.int()
|
|
460
|
-
.min(
|
|
524
|
+
.min(minIndex)
|
|
461
525
|
.max(maxIndex)
|
|
462
|
-
.describe(
|
|
463
|
-
|
|
526
|
+
.describe(noneAllowed
|
|
527
|
+
? `0-based index of the most relevant record (0 to ${maxIndex}), or -1 if none of the candidates is relevant`
|
|
528
|
+
: `0-based index of the most relevant record (0 to ${maxIndex})`),
|
|
529
|
+
confident: zod_1.z
|
|
530
|
+
.boolean()
|
|
531
|
+
.describe('true when one candidate clearly best matches the request; false when several ' +
|
|
532
|
+
'candidates fit similarly well and you cannot confidently single one out'),
|
|
533
|
+
reasoning: zod_1.z.string().describe('Why this record was chosen (or why none is relevant)'),
|
|
464
534
|
}),
|
|
465
535
|
func: undefined,
|
|
466
536
|
});
|
|
467
537
|
const messages = [
|
|
468
538
|
this.buildContextMessage(),
|
|
469
539
|
new ai_proxy_1.SystemMessage(SELECT_RECORD_SYSTEM_PROMPT),
|
|
540
|
+
...(noneAllowed ? [new ai_proxy_1.SystemMessage(SELECT_RECORD_NONE_ALLOWED_PROMPT)] : []),
|
|
470
541
|
new ai_proxy_1.SystemMessage(`Candidates:\n${lines.join('\n')}`),
|
|
471
542
|
new ai_proxy_1.HumanMessage(`**Request**: ${prompt ?? 'Select the most relevant record.'}`),
|
|
472
543
|
];
|
|
473
|
-
const { recordIndex } = await this.invokeWithTool(messages, tool);
|
|
474
|
-
//
|
|
475
|
-
//
|
|
476
|
-
if (!Number.isInteger(recordIndex) || recordIndex <
|
|
477
|
-
throw new errors_1.InvalidAIResponseError(`AI selected record index ${recordIndex} which is out of range (
|
|
544
|
+
const { recordIndex, confident: rawConfident } = await this.invokeWithTool(messages, tool);
|
|
545
|
+
// The Zod .min().max() shapes the tool prompt only — NOT validated against the AI response; this
|
|
546
|
+
// guard is the sole runtime enforcement. -1 is accepted only when noneAllowed (allowNone && !truncated).
|
|
547
|
+
if (!Number.isInteger(recordIndex) || recordIndex < minIndex || recordIndex > maxIndex) {
|
|
548
|
+
throw new errors_1.InvalidAIResponseError(`AI selected record index ${recordIndex} which is out of range (${minIndex}-${maxIndex}) or not an integer`);
|
|
478
549
|
}
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
return {
|
|
483
|
-
collectionName: data.collectionName,
|
|
484
|
-
recordId: data.recordId,
|
|
485
|
-
stepIndex: this.context.stepIndex,
|
|
486
|
-
};
|
|
550
|
+
// A definitive -1 ("none relevant") is not ambiguity. For a positive pick, honour the AI's
|
|
551
|
+
// confidence flag, defaulting to confident when omitted so a missing flag still auto-loads.
|
|
552
|
+
const confident = recordIndex < 0 ? true : rawConfident !== false;
|
|
553
|
+
return { index: recordIndex, confident };
|
|
487
554
|
}
|
|
488
555
|
}
|
|
489
556
|
exports.default = LoadRelatedRecordStepExecutor;
|
|
490
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZC1yZWxhdGVkLXJlY29yZC1zdGVwLWV4ZWN1dG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2V4ZWN1dG9ycy9sb2FkLXJlbGF0ZWQtcmVjb3JkLXN0ZXAtZXhlY3V0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFjQSxvREFBMkY7QUFDM0YsNkJBQXdCO0FBRXhCLHNDQU9tQjtBQUNuQixrRkFBd0Q7QUFDeEQsd0VBQXVFO0FBRXZFLE1BQU0sNkJBQTZCLEdBQUc7Ozs7Ozs7O3NGQVFnRCxDQUFDO0FBRXZGLE1BQU0sMkJBQTJCLEdBQUc7bUdBQytELENBQUM7QUFFcEcsTUFBTSwyQkFBMkIsR0FBRzt5RkFDcUQsQ0FBQztBQUUxRiwwRkFBMEY7QUFDMUYsZ0dBQWdHO0FBQ2hHLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxDQUFDO0FBQzlCLE1BQU0sc0JBQXNCLEdBQUcsRUFBRSxDQUFDLENBQUMsZ0RBQWdEO0FBQ25GLE1BQU0sdUJBQXVCLEdBQUcsS0FBTSxDQUFDLENBQUMseURBQXlEO0FBRWpHLFNBQVMsZUFBZSxDQUFDLEtBQWM7SUFDckMsTUFBTSxVQUFVLEdBQUcsT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ25GLElBQUksVUFBVSxDQUFDLE1BQU0sSUFBSSxzQkFBc0I7UUFBRSxPQUFPLEtBQUssQ0FBQztJQUU5RCxPQUFPLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsc0JBQXNCLENBQUMsZUFBZSxDQUFDO0FBQ3ZFLENBQUM7QUFpQkQsbUdBQW1HO0FBQ25HLG9HQUFvRztBQUNwRyxTQUFTLG9CQUFvQixDQUFDLEtBQWtCO0lBQzlDLE9BQU8sS0FBSyxDQUFDLGNBQWMsSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLHFCQUFxQixJQUFJLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0FBQ3BHLENBQUM7QUFFRCxNQUFxQiw2QkFBOEIsU0FBUSw4QkFBbUQ7SUFDbEcsS0FBSyxDQUFDLFNBQVM7UUFDdkIsaUVBQWlFO1FBQ2pFLE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLHlCQUF5QixDQUNsRCxJQUFJLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUNqQyxDQUFDO1FBRUYsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNaLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQztZQUV0QyxJQUFJLElBQUksRUFBRSxhQUFhLEtBQUssU0FBUyxJQUFJLElBQUksRUFBRSxTQUFTLEtBQUssU0FBUyxFQUFFLENBQUM7Z0JBQ3ZFLE9BQU8sSUFBSSxDQUFDLHlCQUF5QixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDakUsQ0FBQztZQUVELE9BQU8sSUFBSSxDQUFDLHNCQUFzQixDQUFxQyxPQUFPLEVBQUUsS0FBSyxFQUFDLElBQUksRUFBQyxFQUFFLENBQzNGLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsQ0FDaEMsQ0FBQztRQUNKLENBQUM7UUFFRCwrQkFBK0I7UUFDL0IsT0FBTyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVPLEtBQUssQ0FBQyx5QkFBeUIsQ0FDckMsU0FBNkMsRUFDN0MsU0FBaUI7UUFFakIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUMzQixNQUFNLElBQUksdUJBQWMsQ0FBQyxpQkFBaUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLHNCQUFzQixDQUFDLENBQUM7UUFDMUYsQ0FBQztRQUVELE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUMxRixNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxTQUFTLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUN0RixNQUFNLEVBQUUsa0JBQWtCLEVBQUUsZUFBZSxFQUFFLEdBQUcsTUFBTSxJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFdkYsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRTtZQUNoRSxHQUFHLFNBQVM7WUFDWixnQkFBZ0IsRUFBRSxTQUFTO1lBQzNCLFdBQVcsRUFBRTtnQkFDWCxHQUFHLFNBQVMsQ0FBQyxXQUFXO2dCQUN4QixjQUFjLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksRUFBRSxXQUFXLEVBQUUsTUFBTSxDQUFDLFdBQVcsRUFBRTtnQkFDdEUsa0JBQWtCO2dCQUNsQixlQUFlO2FBQ2hCO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsRUFBRSxNQUFNLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFTyxLQUFLLENBQUMsZUFBZTtRQUMzQixNQUFNLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDOUMsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFFMUMsd0NBQXdDO1FBQ3hDLElBQUksSUFBSSxDQUFDLGFBQWEsS0FBSyxtQ0FBaUIsQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUM1RCxPQUFPLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM5QyxDQUFDO1FBRUQsNERBQTREO1FBQzVELE1BQU0sWUFBWSxHQUFHLE1BQU0sSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUU3RixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVELDhGQUE4RjtJQUM5RixxRkFBcUY7SUFDckYsOEZBQThGO0lBQ3RGLEtBQUssQ0FBQyxhQUFhO1FBQ3pCLE1BQU0sRUFBRSxlQUFlLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQztRQUV4RCxNQUFNLGFBQWEsR0FDakIsZUFBZSxFQUFFLG9CQUFvQixLQUFLLFNBQVM7WUFDakQsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsc0JBQXNCLENBQUMsZUFBZSxDQUFDLG9CQUFvQixDQUFDLENBQUM7WUFDM0UsQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFFMUMsTUFBTSxVQUFVLEdBQUcsTUFBTSxJQUFJLENBQUMsdUJBQXVCLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFckUsSUFBSSxVQUFVLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzVCLE1BQU0sSUFBSSxrQ0FBeUIsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsY0FBYyxJQUFJLFNBQVMsQ0FBQyxDQUFDO1FBQ3JGLENBQUM7UUFFRCxxRkFBcUY7UUFDckYsTUFBTSxNQUFNLEdBQUcsZUFBZSxFQUFFLFlBQVksQ0FBQztRQUM3QyxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDO1FBRTVGLElBQUksUUFBUSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUMxQix1RUFBdUU7WUFDdkUsTUFBTSxJQUFJLG9DQUEyQixDQUNuQyx5QkFBeUIsTUFBTSwwQkFBMEIsQ0FDMUQsQ0FBQztRQUNKLENBQUM7UUFFRCxNQUFNLE1BQU0sR0FDVixRQUFRLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUVwRixPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRU8sbUJBQW1CLENBQUMsU0FBNEI7UUFDdEQsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxTQUFTLENBQUM7UUFFcEMsT0FBTztZQUNMLGlCQUFpQixFQUFFLE1BQU07WUFDekIsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXO1lBQzlCLElBQUksRUFBRSxLQUFLLENBQUMsU0FBUztZQUNyQixZQUFZLEVBQUUsS0FBSyxDQUFDLFlBQVk7WUFDaEMscUJBQXFCLEVBQUUsS0FBSyxDQUFDLHFCQUFxQjtTQUNuRCxDQUFDO0lBQ0osQ0FBQztJQUVPLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxPQUFvQjtRQUN4RCxNQUFNLFVBQVUsR0FBd0IsRUFBRSxDQUFDO1FBRTNDLEtBQUssTUFBTSxNQUFNLElBQUksT0FBTyxFQUFFLENBQUM7WUFDN0IsNENBQTRDO1lBQzVDLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUVyRSxLQUFLLE1BQU0sS0FBSyxJQUFJLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDbEMsSUFBSSxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO29CQUNoQyw0Q0FBNEM7b0JBQzVDLE1BQU0scUJBQXFCLEdBQUcsTUFBTSxJQUFJLENBQUMsdUJBQXVCLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO29CQUVoRiwyRkFBMkY7b0JBQzNGLElBQUkscUJBQXFCLEVBQUUsQ0FBQzt3QkFDMUIsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxLQUFLLEVBQUUscUJBQXFCLEVBQUUsRUFBRSxDQUFDLENBQUM7b0JBQ2xGLENBQUM7Z0JBQ0gsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQztJQUVELGdHQUFnRztJQUNoRyxrR0FBa0c7SUFDbEcsOEZBQThGO0lBQzlGLDhDQUE4QztJQUN0QyxLQUFLLENBQUMsdUJBQXVCLENBQ25DLEtBQWtCLEVBQ2xCLE1BQWlCO1FBRWpCLElBQUksS0FBSyxDQUFDLHFCQUFxQjtZQUFFLE9BQU8sS0FBSyxDQUFDLHFCQUFxQixDQUFDO1FBQ3BFLElBQUksQ0FBQyxLQUFLLENBQUMsb0JBQW9CO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFFN0MsTUFBTSxPQUFPLEdBQUcsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQztZQUM5RCxVQUFVLEVBQUUsTUFBTSxDQUFDLGNBQWM7WUFDakMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxRQUFRO1lBQ25CLFFBQVEsRUFBRSxLQUFLLENBQUMsU0FBUztTQUMxQixDQUFDLENBQUM7UUFDSCxNQUFNLGFBQWEsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxhQUFhO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFFaEMsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLDJCQUEyQixJQUFJLEVBQUUsQ0FBQztRQUV2RCxPQUFPLENBQ0wsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxhQUFhLENBQUM7WUFDckMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsS0FBSyxhQUFhLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDakUsSUFBSSxDQUNMLENBQUM7SUFDSixDQUFDO0lBRU8sS0FBSyxDQUFDLFdBQVcsQ0FDdkIsTUFBd0IsRUFDeEIsWUFBb0IsRUFDcEIsaUJBQTRCO1FBRTVCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxNQUFNLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFFbEUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ1gsTUFBTSxJQUFJLDhCQUFxQixDQUFDLFlBQVksRUFBRSxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDdkUsQ0FBQztRQUVELE1BQU0scUJBQXFCLEdBQUcsTUFBTSxJQUFJLENBQUMsdUJBQXVCLENBQUMsS0FBSyxFQUFFLGlCQUFpQixDQUFDLENBQUM7UUFFM0YsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7WUFDM0IsTUFBTSxJQUFJLHVCQUFjLENBQ3RCLGlCQUFpQixJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsMERBQTBELFlBQVksR0FBRyxDQUNqSCxDQUFDO1FBQ0osQ0FBQztRQUVELE9BQU87WUFDTCxpQkFBaUI7WUFDakIsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXO1lBQzlCLElBQUksRUFBRSxLQUFLLENBQUMsU0FBUztZQUNyQixZQUFZLEVBQUUsS0FBSyxDQUFDLFlBQVk7WUFDaEMscUJBQXFCO1NBQ3RCLENBQUM7SUFDSixDQUFDO0lBRUQsdUZBQXVGO0lBQ3ZGLDRGQUE0RjtJQUNwRixLQUFLLENBQUMsaUJBQWlCLENBQzdCLE1BQXNCLEVBQ3RCLFlBQThCO1FBRTlCLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLEdBQUcsTUFBTSxDQUFDO1FBRXhELE1BQU0sRUFBRSxrQkFBa0IsRUFBRSxlQUFlLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUV2RixNQUFNLGVBQWUsR0FBa0IsWUFBWSxDQUFDLE1BQU07YUFDdkQsTUFBTSxDQUFDLG9CQUFvQixDQUFDO2FBQzVCLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLFNBQVMsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUVqRSxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFO1lBQ2hFLElBQUksRUFBRSxxQkFBcUI7WUFDM0IsU0FBUyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUztZQUNqQyxXQUFXLEVBQUU7Z0JBQ1gsZUFBZTtnQkFDZixjQUFjLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO2dCQUNyQyxrQkFBa0I7Z0JBQ2xCLGVBQWU7YUFDaEI7WUFDRCxpQkFBaUI7U0FDbEIsQ0FBQyxDQUFDO1FBRUgsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsRUFBRSxNQUFNLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFTyxLQUFLLENBQUMsbUJBQW1CLENBQUMsTUFBc0I7UUFJdEQsSUFBSSxNQUFNLENBQUMsWUFBWSxLQUFLLFdBQVcsSUFBSSxNQUFNLENBQUMsWUFBWSxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQzVFLE1BQU0sU0FBUyxHQUFHLE1BQU0sSUFBSSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBRTFELE9BQU8sU0FBUztnQkFDZCxDQUFDLENBQUMsRUFBRSxrQkFBa0IsRUFBRSxDQUFDLFNBQVMsQ0FBQyxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUU7Z0JBQ2pFLENBQUMsQ0FBQyxFQUFFLGtCQUFrQixFQUFFLEVBQUUsRUFBRSxDQUFDO1FBQ2pDLENBQUM7UUFFRCxNQUFNLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyx5QkFBeUIsQ0FDcEYsTUFBTSxFQUNOLEVBQUUsQ0FDSCxDQUFDO1FBRUYsSUFBSSxXQUFXLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzdCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxFQUFFLEVBQUUsQ0FBQztRQUNwQyxDQUFDO1FBRUQsTUFBTSxjQUFjLEdBQUcsYUFBYSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUM7UUFDNUQsTUFBTSxXQUFXLEdBQUcsQ0FBQyxDQUFhLEVBQThCLEVBQUUsQ0FBQyxDQUFDO1lBQ2xFLFFBQVEsRUFBRSxDQUFDLENBQUMsUUFBUTtZQUNwQixtQkFBbUIsRUFBRSxjQUFjO2dCQUNqQyxDQUFDLENBQUMsSUFBSSxDQUFDLDBCQUEwQixDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsY0FBYyxDQUFDO2dCQUMzRCxDQUFDLENBQUMsSUFBSTtTQUNULENBQUMsQ0FBQztRQUVILE9BQU87WUFDTCxrQkFBa0IsRUFBRSxXQUFXLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQztZQUNoRCxlQUFlLEVBQUUsV0FBVyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUNyRCxDQUFDO0lBQ0osQ0FBQztJQUVPLDBCQUEwQixDQUNoQyxNQUErQixFQUMvQixjQUFzQjtRQUV0QixNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFFakMsT0FBTyxDQUFDLEtBQUssU0FBUyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFRCxpSUFBaUk7SUFDekgsS0FBSyxDQUFDLHVCQUF1QixDQUFDLE1BQXNCO1FBQzFELE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRXpELE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVPLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxNQUFzQjtRQUN6RCxJQUFJLE1BQU0sQ0FBQyxZQUFZLEtBQUssV0FBVyxJQUFJLE1BQU0sQ0FBQyxZQUFZLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDNUUsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDM0MsQ0FBQztRQUVELElBQUksTUFBTSxDQUFDLFlBQVksS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUN0QyxPQUFPLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM5QyxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVPLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxNQUFzQjtRQUN2RCxNQUFNLFNBQVMsR0FBRyxNQUFNLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUUxRCxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDZixNQUFNLElBQUksbUNBQTBCLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLGNBQWMsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0YsQ0FBQztRQUVELE9BQU87WUFDTCxjQUFjLEVBQUUsTUFBTSxDQUFDLHFCQUFxQjtZQUM1QyxRQUFRLEVBQUUsU0FBUyxDQUFDLFFBQVE7WUFDNUIsU0FBUyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUztTQUNsQyxDQUFDO0lBQ0osQ0FBQztJQUVPLEtBQUssQ0FBQyxvQkFBb0IsQ0FDaEMsTUFBc0I7UUFFdEIsTUFBTSxhQUFhLEdBQUcsTUFBTSxJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDbkYsTUFBTSxjQUFjLEdBQUcsYUFBYSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUM7UUFFNUQsTUFBTSxTQUFTLEdBQUcsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQztZQUM5RCxVQUFVLEVBQUUsTUFBTSxDQUFDLGlCQUFpQixDQUFDLGNBQWM7WUFDbkQsRUFBRSxFQUFFLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRO1lBQ3JDLFFBQVEsRUFBRSxNQUFNLENBQUMsSUFBSTtZQUNyQixhQUFhO1lBQ2IsR0FBRyxDQUFDLGNBQWMsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUM7U0FDcEQsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFNBQVM7WUFBRSxPQUFPLElBQUksQ0FBQztRQUU1QixPQUFPO1lBQ0wsUUFBUSxFQUFFLFNBQVMsQ0FBQyxRQUFRO1lBQzVCLG1CQUFtQixFQUFFLGNBQWM7Z0JBQ2pDLENBQUMsQ0FBQyxJQUFJLENBQUMsMEJBQTBCLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxjQUFjLENBQUM7Z0JBQ25FLENBQUMsQ0FBQyxJQUFJO1NBQ1QsQ0FBQztJQUNKLENBQUM7SUFFRCxrR0FBa0c7SUFDMUYsS0FBSyxDQUFDLG9CQUFvQixDQUNoQyxTQUE2QztRQUU3QyxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUFFLEdBQUcsU0FBUyxDQUFDO1FBRXZFLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNqQixNQUFNLElBQUksdUJBQWMsQ0FBQyxpQkFBaUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLHNCQUFzQixDQUFDLENBQUM7UUFDMUYsQ0FBQztRQUVELE1BQU0sV0FBVyxHQUFHLGdCQUFnQixFQUFFLFNBQVM7WUFDN0MsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUM7WUFDOUUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUM7UUFFL0IsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2pCLE1BQU0sSUFBSSx1QkFBYyxDQUN0QixpQkFBaUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLGdDQUFnQyxnQkFBZ0IsRUFBRSxTQUFTLHlCQUF5QixDQUM1SCxDQUFDO1FBQ0osQ0FBQztRQUVELE1BQU0sRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLEdBQUcsV0FBVyxDQUFDO1FBQzFDLE1BQU0sZ0JBQWdCLEdBQ3BCLGdCQUFnQixFQUFFLGdCQUFnQixJQUFJLFdBQVcsQ0FBQyxlQUFlLEVBQUUsUUFBUSxDQUFDO1FBRTlFLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3RCLE1BQU0sSUFBSSxtQ0FBMEIsQ0FBQyxpQkFBaUIsQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDL0UsQ0FBQztRQUVELCtGQUErRjtRQUMvRixzRkFBc0Y7UUFDdEYsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsbUJBQW1CLENBQUMsaUJBQWlCLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDaEYsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxLQUFLLElBQUksQ0FBQyxDQUFDO1FBQzVELE1BQU0scUJBQXFCLEdBQ3pCLEtBQUssSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLHVCQUF1QixDQUFDLEtBQUssRUFBRSxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7UUFFMUUsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7WUFDM0IsTUFBTSxJQUFJLHVCQUFjLENBQ3RCLGlCQUFpQixJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsMERBQTBELElBQUksR0FBRyxDQUN6RyxDQUFDO1FBQ0osQ0FBQztRQUVELE1BQU0sTUFBTSxHQUFjO1lBQ3hCLGNBQWMsRUFBRSxxQkFBcUI7WUFDckMsUUFBUSxFQUFFLGdCQUFnQjtZQUMxQixTQUFTLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTO1NBQ2xDLENBQUM7UUFFRixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDNUYsQ0FBQztJQUVPLEtBQUssQ0FBQyx5QkFBeUIsQ0FDckMsTUFBb0YsRUFDcEYsS0FBYTtRQU9iLE1BQU0sYUFBYSxHQUFHLE1BQU0sSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ25GLE1BQU0sV0FBVyxHQUFHLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxhQUFhLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFOUUsb0ZBQW9GO1FBQ3BGLElBQUksV0FBVyxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUM1QixPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsZUFBZSxFQUFFLEVBQUUsRUFBRSxhQUFhLEVBQUUsQ0FBQztRQUMzRSxDQUFDO1FBRUQsd0ZBQXdGO1FBQ3hGLHNGQUFzRjtRQUN0RixNQUFNLGVBQWUsR0FBRyxNQUFNLElBQUksQ0FBQyxvQkFBb0IsQ0FDckQsYUFBYSxFQUNiLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FDbkMsQ0FBQztRQUNGLE1BQU0sU0FBUyxHQUFHLE1BQU0sSUFBSSxDQUFDLHFCQUFxQixDQUNoRCxXQUFXLEVBQ1gsZUFBZSxFQUNmLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FDbkMsQ0FBQztRQUVGLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsQ0FBQztJQUNwRSxDQUFDO0lBRUQsa0dBQWtHO0lBQzFGLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxNQUFzQjtRQUMxRCxNQUFNLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDLHlCQUF5QixDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVwRixJQUFJLFdBQVcsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDN0IsTUFBTSxJQUFJLG1DQUEwQixDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxjQUFjLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdGLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVPLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxNQUFzQjtRQUN0RCxNQUFNLFVBQVUsR0FBRyxNQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRXpELE9BQU8sVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7SUFFTyxLQUFLLENBQUMsZUFBZSxDQUMzQixNQUFvRixFQUNwRixLQUFhO1FBRWIsTUFBTSxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sQ0FBQztRQUMzQyxNQUFNLGFBQWEsR0FBRyxNQUFNLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUNuRixNQUFNLFdBQVcsR0FBRyxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsYUFBYSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRTlFLElBQUksV0FBVyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUM3QixNQUFNLElBQUksbUNBQTBCLENBQUMsaUJBQWlCLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQy9FLENBQUM7UUFFRCxPQUFPLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVPLEtBQUssQ0FBQyxnQkFBZ0IsQ0FDNUIsTUFBMEQsRUFDMUQsYUFBK0IsRUFDL0IsS0FBYTtRQUViLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDO1lBQ3ZDLFVBQVUsRUFBRSxNQUFNLENBQUMsaUJBQWlCLENBQUMsY0FBYztZQUNuRCxFQUFFLEVBQUUsTUFBTSxDQUFDLGlCQUFpQixDQUFDLFFBQVE7WUFDckMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxJQUFJO1lBQ3JCLGFBQWE7WUFDYixLQUFLO1lBQ0wsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLGVBQWUsRUFBRSxPQUFPO1NBQzlELENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxvRUFBb0U7SUFDNUQsS0FBSyxDQUFDLGdCQUFnQixDQUM1QixNQUFpQixFQUNqQixNQUEwRSxFQUMxRSxpQkFBaUU7UUFFakUsTUFBTSxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsR0FBRyxNQUFNLENBQUM7UUFFeEQsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRTtZQUNoRSxHQUFHLGlCQUFpQjtZQUNwQixJQUFJLEVBQUUscUJBQXFCO1lBQzNCLFNBQVMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVM7WUFDakMsZUFBZSxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRTtZQUN0QyxlQUFlLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFO1lBQzVELGlCQUFpQjtTQUNsQixDQUFDLENBQUM7UUFFSCxPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFTyxtQkFBbUIsQ0FBQyxTQUE0QjtRQUN0RCxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxTQUFTLENBQUM7UUFFNUMsT0FBTyxRQUFRLE1BQU0sQ0FBQyxTQUFTLE1BQU0sTUFBTSxDQUFDLHFCQUFxQixLQUFLLE1BQU0sQ0FBQyxRQUFRLE1BQU0sS0FBSyxDQUFDLFdBQVcsT0FBTyxLQUFLLENBQUMscUJBQXFCLEdBQUcsQ0FBQztJQUNwSixDQUFDO0lBRU8sS0FBSyxDQUFDLHNCQUFzQixDQUNsQyxVQUErQjtRQUUvQixNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEUsTUFBTSxVQUFVLEdBQUcsTUFBK0IsQ0FBQztRQUVuRCxNQUFNLElBQUksR0FBRyxJQUFJLGdDQUFxQixDQUFDO1lBQ3JDLElBQUksRUFBRSwyQkFBMkI7WUFDakMsV0FBVyxFQUFFLHFFQUFxRTtZQUNsRixNQUFNLEVBQUUsT0FBQyxDQUFDLE1BQU0sQ0FBQztnQkFDZixRQUFRLEVBQUUsT0FBQztxQkFDUixJQUFJLENBQUMsVUFBVSxDQUFDO3FCQUNoQixRQUFRLENBQUMsOERBQThELENBQUM7Z0JBQzNFLFNBQVMsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLGlEQUFpRCxDQUFDO2FBQ2xGLENBQUM7WUFDRixJQUFJLEVBQUUsU0FBUztTQUNoQixDQUFDLENBQUM7UUFFSCxNQUFNLFFBQVEsR0FBRztZQUNmLElBQUksQ0FBQyxtQkFBbUIsRUFBRTtZQUMxQixHQUFHLENBQUMsTUFBTSxJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztZQUM1QyxJQUFJLHdCQUFhLENBQUMsNkJBQTZCLENBQUM7WUFDaEQsSUFBSSx1QkFBWSxDQUNkLGdCQUFnQixJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxNQUFNLElBQUksbUNBQW1DLEVBQUUsQ0FDNUY7U0FDRixDQUFDO1FBRUYsTUFBTSxFQUFFLFFBQVEsRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FDNUMsUUFBUSxFQUNSLElBQUksQ0FDTCxDQUFDO1FBRUYsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUV2QyxJQUFJLEtBQUssS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ2pCLE1BQU0sSUFBSSwrQkFBc0IsQ0FDOUIseUJBQXlCLFFBQVEsNkNBQTZDLENBQy9FLENBQUM7UUFDSixDQUFDO1FBRUQsT0FBTyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVELHFGQUFxRjtJQUM3RSxLQUFLLENBQUMsb0JBQW9CLENBQ2hDLE1BQXdCLEVBQ3hCLE1BQTBCO1FBRTFCLE1BQU0saUJBQWlCLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUV2RSxJQUFJLGlCQUFpQixDQUFDLE1BQU0sS0FBSyxDQUFDO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFFOUMsK0ZBQStGO1FBQy9GLHNGQUFzRjtRQUN0RixNQUFNLFlBQVksR0FBRyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUEwQixDQUFDO1FBRXhGLE1BQU0sSUFBSSxHQUFHLElBQUksZ0NBQXFCLENBQUM7WUFDckMsSUFBSSxFQUFFLGVBQWU7WUFDckIsV0FBVyxFQUFFLCtEQUErRDtZQUM1RSxNQUFNLEVBQUUsT0FBQyxDQUFDLE1BQU0sQ0FBQztnQkFDZixVQUFVLEVBQUUsT0FBQztxQkFDVixLQUFLLENBQUMsT0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztxQkFDM0IsR0FBRyxDQUFDLENBQUMsQ0FBQztxQkFDTixHQUFHLENBQUMsbUJBQW1CLENBQUM7cUJBQ3hCLFFBQVEsQ0FDUCxPQUFPLG1CQUFtQix5REFBeUQsQ0FDcEY7YUFDSixDQUFDO1lBQ0YsSUFBSSxFQUFFLFNBQVM7U0FDaEIsQ0FBQyxDQUFDO1FBRUgsTUFBTSxRQUFRLEdBQUc7WUFDZixJQUFJLENBQUMsbUJBQW1CLEVBQUU7WUFDMUIsSUFBSSx3QkFBYSxDQUFDLDJCQUEyQixDQUFDO1lBQzlDLElBQUksd0JBQWEsQ0FDZixxQ0FBcUMsTUFBTSxDQUFDLHFCQUFxQixnQkFBZ0I7Z0JBQy9FLHFCQUFxQixpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQy9FO1lBQ0QsSUFBSSx1QkFBWSxDQUFDLGdCQUFnQixNQUFNLElBQUksa0NBQWtDLEVBQUUsQ0FBQztTQUNqRixDQUFDO1FBRUYsTUFBTSxFQUFFLFVBQVUsRUFBRSxvQkFBb0IsRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FFbkUsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRW5CLGdGQUFnRjtRQUNoRixrRkFBa0Y7UUFDbEYsSUFBSSxvQkFBb0IsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDdEMsTUFBTSxJQUFJLCtCQUFzQixDQUM5QixpRUFBaUUsTUFBTSxDQUFDLGNBQWMsR0FBRyxDQUMxRixDQUFDO1FBQ0osQ0FBQztRQUVELGlHQUFpRztRQUNqRyx5RkFBeUY7UUFDekYsT0FBTyxvQkFBb0I7YUFDeEIsS0FBSyxDQUFDLENBQUMsRUFBRSxtQkFBbUIsQ0FBQzthQUM3QixHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxLQUFLLEVBQUUsQ0FBQyxFQUFFLFNBQVMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNuRixDQUFDO0lBRUQsdUZBQXVGO0lBQy9FLEtBQUssQ0FBQyxxQkFBcUIsQ0FDakMsVUFBd0IsRUFDeEIsVUFBb0IsRUFDcEIsTUFBMEI7UUFFMUIsTUFBTSxrQkFBa0IsR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ2pELE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FDN0MsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUMzRCxDQUFDO1lBRUYsT0FBTztnQkFDTCxLQUFLLEVBQUUsQ0FBQztnQkFDUixNQUFNLEVBQUUsTUFBTSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDN0UsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO1FBRUgseUZBQXlGO1FBQ3pGLHVGQUF1RjtRQUN2RixNQUFNLEtBQUssR0FBYSxFQUFFLENBQUM7UUFDM0IsSUFBSSxTQUFTLEdBQUcsQ0FBQyxDQUFDO1FBRWxCLEtBQUssTUFBTSxDQUFDLElBQUksa0JBQWtCLEVBQUUsQ0FBQztZQUNuQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUN4RCxJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLHVCQUF1QjtnQkFBRSxNQUFNO1lBQ2pGLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDakIsU0FBUyxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQy9CLENBQUM7UUFFRCxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO1FBRTNCLElBQUksS0FBSyxHQUFHLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUM5QixJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsNkRBQTZELEVBQUU7Z0JBQ3pGLEdBQUcsSUFBSSxDQUFDLE1BQU07Z0JBQ2QsS0FBSztnQkFDTCxLQUFLLEVBQUUsVUFBVSxDQUFDLE1BQU07YUFDekIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELE1BQU0sUUFBUSxHQUFHLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDM0IsTUFBTSxJQUFJLEdBQUcsSUFBSSxnQ0FBcUIsQ0FBQztZQUNyQyxJQUFJLEVBQUUsMEJBQTBCO1lBQ2hDLFdBQVcsRUFBRSx1REFBdUQ7WUFDcEUsTUFBTSxFQUFFLE9BQUMsQ0FBQyxNQUFNLENBQUM7Z0JBQ2YsV0FBVyxFQUFFLE9BQUM7cUJBQ1gsTUFBTSxFQUFFO3FCQUNSLEdBQUcsRUFBRTtxQkFDTCxHQUFHLENBQUMsQ0FBQyxDQUFDO3FCQUNOLEdBQUcsQ0FBQyxRQUFRLENBQUM7cUJBQ2IsUUFBUSxDQUFDLG1EQUFtRCxRQUFRLEdBQUcsQ0FBQztnQkFDM0UsU0FBUyxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsNEJBQTRCLENBQUM7YUFDN0QsQ0FBQztZQUNGLElBQUksRUFBRSxTQUFTO1NBQ2hCLENBQUMsQ0FBQztRQUVILE1BQU0sUUFBUSxHQUFHO1lBQ2YsSUFBSSxDQUFDLG1CQUFtQixFQUFFO1lBQzFCLElBQUksd0JBQWEsQ0FBQywyQkFBMkIsQ0FBQztZQUM5QyxJQUFJLHdCQUFhLENBQUMsZ0JBQWdCLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNyRCxJQUFJLHVCQUFZLENBQUMsZ0JBQWdCLE1BQU0sSUFBSSxrQ0FBa0MsRUFBRSxDQUFDO1NBQ2pGLENBQUM7UUFFRixNQUFNLEVBQUUsV0FBVyxFQUFFLEdBQUcsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUMvQyxRQUFRLEVBQ1IsSUFBSSxDQUNMLENBQUM7UUFFRix1RkFBdUY7UUFDdkYsaUZBQWlGO1FBQ2pGLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxJQUFJLFdBQVcsR0FBRyxDQUFDLElBQUksV0FBVyxHQUFHLFFBQVEsRUFBRSxDQUFDO1lBQ2hGLE1BQU0sSUFBSSwrQkFBc0IsQ0FDOUIsNEJBQTRCLFdBQVcsNkJBQTZCLFFBQVEscUJBQXFCLENBQ2xHLENBQUM7UUFDSixDQUFDO1FBRUQsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztJQUVPLFdBQVcsQ0FBQyxJQUFnQjtRQUNsQyxPQUFPO1lBQ0wsY0FBYyxFQUFFLElBQUksQ0FBQyxjQUFjO1lBQ25DLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtZQUN2QixTQUFTLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTO1NBQ2xDLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUFucEJELGdEQW1wQkMifQ==
|
|
557
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZC1yZWxhdGVkLXJlY29yZC1zdGVwLWV4ZWN1dG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2V4ZWN1dG9ycy9sb2FkLXJlbGF0ZWQtcmVjb3JkLXN0ZXAtZXhlY3V0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFjQSxvREFBMkY7QUFDM0YsNkJBQXdCO0FBRXhCLHNDQVNtQjtBQUNuQixrRkFBd0Q7QUFDeEQsd0VBQXVFO0FBRXZFLE1BQU0sNkJBQTZCLEdBQUc7Ozs7Ozs7O3NGQVFnRCxDQUFDO0FBRXZGLE1BQU0sMkJBQTJCLEdBQUc7bUdBQytELENBQUM7QUFFcEcsTUFBTSwyQkFBMkIsR0FBRzt5RkFDcUQsQ0FBQztBQUUxRixtR0FBbUc7QUFDbkcsNkVBQTZFO0FBQzdFLE1BQU0saUNBQWlDLEdBQUcseVBBQXlQLENBQUM7QUFFcFMsMEZBQTBGO0FBQzFGLGdHQUFnRztBQUNoRyxNQUFNLG1CQUFtQixHQUFHLENBQUMsQ0FBQztBQUM5QixNQUFNLHNCQUFzQixHQUFHLEVBQUUsQ0FBQyxDQUFDLGdEQUFnRDtBQUNuRixNQUFNLHVCQUF1QixHQUFHLEtBQU0sQ0FBQyxDQUFDLHlEQUF5RDtBQUVqRyxTQUFTLGVBQWUsQ0FBQyxLQUFjO0lBQ3JDLE1BQU0sVUFBVSxHQUFHLE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNuRixJQUFJLFVBQVUsQ0FBQyxNQUFNLElBQUksc0JBQXNCO1FBQUUsT0FBTyxLQUFLLENBQUM7SUFFOUQsT0FBTyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLHNCQUFzQixDQUFDLGVBQWUsQ0FBQztBQUN2RSxDQUFDO0FBaUJELG1HQUFtRztBQUNuRyxvR0FBb0c7QUFDcEcsU0FBUyxvQkFBb0IsQ0FBQyxLQUFrQjtJ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
|
|
@@ -12,9 +12,12 @@ function serializeStepForWire(step) {
|
|
|
12
12
|
case 'trigger-action':
|
|
13
13
|
return { ...step, selectedRecordRef: serializeRecordRef(step.selectedRecordRef) };
|
|
14
14
|
case 'load-related-record': {
|
|
15
|
+
// Omit selectedRecordRef when absent — serializing undefined throws.
|
|
15
16
|
const result = {
|
|
16
17
|
...step,
|
|
17
|
-
|
|
18
|
+
...(step.selectedRecordRef && {
|
|
19
|
+
selectedRecordRef: serializeRecordRef(step.selectedRecordRef),
|
|
20
|
+
}),
|
|
18
21
|
};
|
|
19
22
|
if (step.pendingData) {
|
|
20
23
|
const { availableRecordIds, suggestedRecord } = step.pendingData;
|
|
@@ -44,4 +47,4 @@ function serializeStepForWire(step) {
|
|
|
44
47
|
return step;
|
|
45
48
|
}
|
|
46
49
|
}
|
|
47
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcC1zZXJpYWxpemVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2h0dHAvc3RlcC1zZXJpYWxpemVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBU0EsdUNBK0NDO0FBckRELDJFQUFxRTtBQUVyRSxTQUFTLGtCQUFrQixDQUFDLEdBQWM7SUFDeEMsT0FBTyxFQUFFLEdBQUcsR0FBRyxFQUFFLFFBQVEsRUFBRSxJQUFBLHdDQUFpQixFQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO0FBQy9ELENBQUM7QUFFRCxTQUF3QixvQkFBb0IsQ0FBQyxJQUF1QjtJQUNsRSxRQUFRLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNsQixLQUFLLGFBQWEsQ0FBQztRQUNuQixLQUFLLGVBQWUsQ0FBQztRQUNyQixLQUFLLGdCQUFnQjtZQUNuQixPQUFPLEVBQUUsR0FBRyxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsa0JBQWtCLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQztRQUVwRixLQUFLLHFCQUFxQixDQUFDLENBQUMsQ0FBQztZQUMzQixxRUFBcUU7WUFDckUsTUFBTSxNQUFNLEdBQTRCO2dCQUN0QyxHQUFHLElBQUk7Z0JBQ1AsR0FBRyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsSUFBSTtvQkFDNUIsaUJBQWlCLEVBQUUsa0JBQWtCLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDO2lCQUM5RCxDQUFDO2FBQ0gsQ0FBQztZQUVGLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUNyQixNQUFNLEVBQUUsa0JBQWtCLEVBQUUsZUFBZSxFQUFFLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztnQkFFakUsTUFBTSxDQUFDLFdBQVcsR0FBRztvQkFDbkIsR0FBRyxJQUFJLENBQUMsV0FBVztvQkFDbkIsa0JBQWtCLEVBQUUsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQzt3QkFDL0MsR0FBRyxDQUFDO3dCQUNKLFFBQVEsRUFBRSxJQUFBLHdDQUFpQixFQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7cUJBQ3hDLENBQUMsQ0FBQztvQkFDSCxHQUFHLENBQUMsZUFBZSxJQUFJO3dCQUNyQixlQUFlLEVBQUU7NEJBQ2YsR0FBRyxlQUFlOzRCQUNsQixRQUFRLEVBQUUsSUFBQSx3Q0FBaUIsRUFBQyxlQUFlLENBQUMsUUFBUSxDQUFDO3lCQUN0RDtxQkFDRixDQUFDO2lCQUNILENBQUM7WUFDSixDQUFDO1lBRUQsSUFBSSxJQUFJLENBQUMsZUFBZSxJQUFJLFFBQVEsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7Z0JBQzdELE1BQU0sQ0FBQyxlQUFlLEdBQUc7b0JBQ3ZCLEdBQUcsSUFBSSxDQUFDLGVBQWU7b0JBQ3ZCLE1BQU0sRUFBRSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQztpQkFDeEQsQ0FBQztZQUNKLENBQUM7WUFFRCxPQUFPLE1BQU0sQ0FBQztRQUNoQixDQUFDO1FBRUQ7WUFDRSxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0FBQ0gsQ0FBQyJ9
|
|
@@ -127,11 +127,12 @@ export interface LoadRelatedRecordPendingData {
|
|
|
127
127
|
suggestedField: RelationRef;
|
|
128
128
|
availableRecordIds: LoadRelatedRecordCandidate[];
|
|
129
129
|
suggestedRecord?: LoadRelatedRecordCandidate;
|
|
130
|
+
suggestNoRecord?: boolean;
|
|
130
131
|
}
|
|
131
132
|
export interface LoadRelatedRecordStepExecutionData extends BaseStepExecutionData, WithUserConfirmation<LoadRelatedRecordConfirmation> {
|
|
132
133
|
type: 'load-related-record';
|
|
133
134
|
pendingData?: LoadRelatedRecordPendingData;
|
|
134
|
-
selectedRecordRef
|
|
135
|
+
selectedRecordRef?: RecordRef;
|
|
135
136
|
executionParams?: RelationRef;
|
|
136
137
|
executionResult?: {
|
|
137
138
|
relation: RelationRef;
|
|
@@ -62,10 +62,11 @@ export declare const StepSchema: z.ZodObject<{
|
|
|
62
62
|
title: z.ZodOptional<z.ZodString>;
|
|
63
63
|
}, z.core.$strip>, z.ZodObject<{
|
|
64
64
|
type: z.ZodLiteral<import("./step-definition").StepType.LoadRelatedRecord>;
|
|
65
|
-
executionType: z.
|
|
65
|
+
executionType: z.ZodDefault<z.ZodEnum<{
|
|
66
|
+
manual: import("./step-definition").StepExecutionMode.Manual;
|
|
66
67
|
"automated-with-confirmation": import("./step-definition").StepExecutionMode.AutomatedWithConfirmation;
|
|
67
68
|
"fully-automated": import("./step-definition").StepExecutionMode.FullyAutomated;
|
|
68
|
-
}
|
|
69
|
+
}>>;
|
|
69
70
|
preRecordedArgs: z.ZodOptional<z.ZodObject<{
|
|
70
71
|
selectedRecordStepId: z.ZodOptional<z.ZodString>;
|
|
71
72
|
relationName: z.ZodOptional<z.ZodString>;
|
|
@@ -202,10 +203,11 @@ export declare const AvailableStepExecutionSchema: z.ZodObject<{
|
|
|
202
203
|
title: z.ZodOptional<z.ZodString>;
|
|
203
204
|
}, z.core.$strip>, z.ZodObject<{
|
|
204
205
|
type: z.ZodLiteral<import("./step-definition").StepType.LoadRelatedRecord>;
|
|
205
|
-
executionType: z.
|
|
206
|
+
executionType: z.ZodDefault<z.ZodEnum<{
|
|
207
|
+
manual: import("./step-definition").StepExecutionMode.Manual;
|
|
206
208
|
"automated-with-confirmation": import("./step-definition").StepExecutionMode.AutomatedWithConfirmation;
|
|
207
209
|
"fully-automated": import("./step-definition").StepExecutionMode.FullyAutomated;
|
|
208
|
-
}
|
|
210
|
+
}>>;
|
|
209
211
|
preRecordedArgs: z.ZodOptional<z.ZodObject<{
|
|
210
212
|
selectedRecordStepId: z.ZodOptional<z.ZodString>;
|
|
211
213
|
relationName: z.ZodOptional<z.ZodString>;
|
|
@@ -282,10 +284,11 @@ export declare const AvailableStepExecutionSchema: z.ZodObject<{
|
|
|
282
284
|
title: z.ZodOptional<z.ZodString>;
|
|
283
285
|
}, z.core.$strip>, z.ZodObject<{
|
|
284
286
|
type: z.ZodLiteral<import("./step-definition").StepType.LoadRelatedRecord>;
|
|
285
|
-
executionType: z.
|
|
287
|
+
executionType: z.ZodDefault<z.ZodEnum<{
|
|
288
|
+
manual: import("./step-definition").StepExecutionMode.Manual;
|
|
286
289
|
"automated-with-confirmation": import("./step-definition").StepExecutionMode.AutomatedWithConfirmation;
|
|
287
290
|
"fully-automated": import("./step-definition").StepExecutionMode.FullyAutomated;
|
|
288
|
-
}
|
|
291
|
+
}>>;
|
|
289
292
|
preRecordedArgs: z.ZodOptional<z.ZodObject<{
|
|
290
293
|
selectedRecordStepId: z.ZodOptional<z.ZodString>;
|
|
291
294
|
relationName: z.ZodOptional<z.ZodString>;
|
|
@@ -75,10 +75,11 @@ export declare const TriggerActionStepDefinitionSchema: z.ZodObject<{
|
|
|
75
75
|
export type TriggerActionStepDefinition = z.infer<typeof TriggerActionStepDefinitionSchema>;
|
|
76
76
|
export declare const LoadRelatedRecordStepDefinitionSchema: z.ZodObject<{
|
|
77
77
|
type: z.ZodLiteral<StepType.LoadRelatedRecord>;
|
|
78
|
-
executionType: z.
|
|
78
|
+
executionType: z.ZodDefault<z.ZodEnum<{
|
|
79
|
+
manual: StepExecutionMode.Manual;
|
|
79
80
|
"automated-with-confirmation": StepExecutionMode.AutomatedWithConfirmation;
|
|
80
81
|
"fully-automated": StepExecutionMode.FullyAutomated;
|
|
81
|
-
}
|
|
82
|
+
}>>;
|
|
82
83
|
preRecordedArgs: z.ZodOptional<z.ZodObject<{
|
|
83
84
|
selectedRecordStepId: z.ZodOptional<z.ZodString>;
|
|
84
85
|
relationName: z.ZodOptional<z.ZodString>;
|
|
@@ -151,10 +152,11 @@ export declare const RecordStepDefinitionSchema: z.ZodDiscriminatedUnion<[z.ZodO
|
|
|
151
152
|
title: z.ZodOptional<z.ZodString>;
|
|
152
153
|
}, z.core.$strip>, z.ZodObject<{
|
|
153
154
|
type: z.ZodLiteral<StepType.LoadRelatedRecord>;
|
|
154
|
-
executionType: z.
|
|
155
|
+
executionType: z.ZodDefault<z.ZodEnum<{
|
|
156
|
+
manual: StepExecutionMode.Manual;
|
|
155
157
|
"automated-with-confirmation": StepExecutionMode.AutomatedWithConfirmation;
|
|
156
158
|
"fully-automated": StepExecutionMode.FullyAutomated;
|
|
157
|
-
}
|
|
159
|
+
}>>;
|
|
158
160
|
preRecordedArgs: z.ZodOptional<z.ZodObject<{
|
|
159
161
|
selectedRecordStepId: z.ZodOptional<z.ZodString>;
|
|
160
162
|
relationName: z.ZodOptional<z.ZodString>;
|
|
@@ -215,10 +217,11 @@ export declare const StepDefinitionSchema: z.ZodDiscriminatedUnion<[z.ZodObject<
|
|
|
215
217
|
title: z.ZodOptional<z.ZodString>;
|
|
216
218
|
}, z.core.$strip>, z.ZodObject<{
|
|
217
219
|
type: z.ZodLiteral<StepType.LoadRelatedRecord>;
|
|
218
|
-
executionType: z.
|
|
220
|
+
executionType: z.ZodDefault<z.ZodEnum<{
|
|
221
|
+
manual: StepExecutionMode.Manual;
|
|
219
222
|
"automated-with-confirmation": StepExecutionMode.AutomatedWithConfirmation;
|
|
220
223
|
"fully-automated": StepExecutionMode.FullyAutomated;
|
|
221
|
-
}
|
|
224
|
+
}>>;
|
|
222
225
|
preRecordedArgs: z.ZodOptional<z.ZodObject<{
|
|
223
226
|
selectedRecordStepId: z.ZodOptional<z.ZodString>;
|
|
224
227
|
relationName: z.ZodOptional<z.ZodString>;
|
|
@@ -90,10 +90,10 @@ exports.TriggerActionStepDefinitionSchema = zod_1.z.object({
|
|
|
90
90
|
exports.LoadRelatedRecordStepDefinitionSchema = zod_1.z.object({
|
|
91
91
|
...sharedFields,
|
|
92
92
|
type: zod_1.z.literal(StepType.LoadRelatedRecord),
|
|
93
|
+
// No `.catch`: it would silently coerce `manual` to AutomatedWithConfirmation (AI prefill back on).
|
|
93
94
|
executionType: zod_1.z
|
|
94
|
-
.enum([AutomatedWithConfirmation, FullyAutomated])
|
|
95
|
-
.default(AutomatedWithConfirmation)
|
|
96
|
-
.catch(AutomatedWithConfirmation),
|
|
95
|
+
.enum([Manual, AutomatedWithConfirmation, FullyAutomated])
|
|
96
|
+
.default(AutomatedWithConfirmation),
|
|
97
97
|
preRecordedArgs: zod_1.z
|
|
98
98
|
.object({
|
|
99
99
|
/**
|
|
@@ -141,4 +141,4 @@ exports.StepDefinitionSchema = zod_1.z.discriminatedUnion('type', [
|
|
|
141
141
|
exports.McpStepDefinitionSchema,
|
|
142
142
|
exports.GuidanceStepDefinitionSchema,
|
|
143
143
|
]);
|
|
144
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
144
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcC1kZWZpbml0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3R5cGVzL3ZhbGlkYXRlZC9zdGVwLWRlZmluaXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkJBQXdCO0FBRXhCLElBQVksUUFRWDtBQVJELFdBQVksUUFBUTtJQUNsQixtQ0FBdUIsQ0FBQTtJQUN2QixzQ0FBMEIsQ0FBQTtJQUMxQiwwQ0FBOEIsQ0FBQTtJQUM5Qiw0Q0FBZ0MsQ0FBQTtJQUNoQyxxREFBeUMsQ0FBQTtJQUN6Qyx1QkFBVyxDQUFBO0lBQ1gsaUNBQXFCLENBQUE7QUFDdkIsQ0FBQyxFQVJXLFFBQVEsd0JBQVIsUUFBUSxRQVFuQjtBQUVEOzs7R0FHRztBQUNILElBQVksaUJBSVg7QUFKRCxXQUFZLGlCQUFpQjtJQUMzQixzQ0FBaUIsQ0FBQTtJQUNqQiw4RUFBeUQsQ0FBQTtJQUN6RCx1REFBa0MsQ0FBQTtBQUNwQyxDQUFDLEVBSlcsaUJBQWlCLGlDQUFqQixpQkFBaUIsUUFJNUI7QUFFRCxpRkFBaUY7QUFDakYsc0ZBQXNGO0FBQ3RGLE1BQU0sWUFBWSxHQUFHO0lBQ25CLE1BQU0sRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQzdCLFlBQVksRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQ25DLEtBQUssRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0NBQzdCLENBQUM7QUFFRixnRkFBZ0Y7QUFDaEYsTUFBTSxFQUFFLE1BQU0sRUFBRSx5QkFBeUIsRUFBRSxjQUFjLEVBQUUsR0FBRyxpQkFBaUIsQ0FBQztBQUVuRSxRQUFBLDZCQUE2QixHQUFHLE9BQUMsQ0FBQyxNQUFNLENBQUM7SUFDcEQsR0FBRyxZQUFZO0lBQ2YsSUFBSSxFQUFFLE9BQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQztJQUNuQyxh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
|