@forestadmin/workflow-executor 1.33.2 → 1.34.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/dist/adapters/agent-client-agent-port.js +6 -8
  2. package/dist/adapters/agent-client-segment-reader.d.ts +24 -0
  3. package/dist/adapters/agent-client-segment-reader.js +182 -0
  4. package/dist/adapters/agent-errors.d.ts +11 -0
  5. package/dist/adapters/agent-errors.js +81 -0
  6. package/dist/adapters/forest-server-automation-port.d.ts +22 -0
  7. package/dist/adapters/forest-server-automation-port.js +174 -0
  8. package/dist/adapters/forest-server-workflow-port.d.ts +3 -1
  9. package/dist/adapters/forest-server-workflow-port.js +47 -21
  10. package/dist/adapters/forestadmin-client-activity-log-port.js +3 -3
  11. package/dist/adapters/project-timezone.d.ts +2 -0
  12. package/dist/adapters/project-timezone.js +11 -0
  13. package/dist/adapters/run-to-available-step-mapper.js +7 -16
  14. package/dist/adapters/server-types.d.ts +119 -1
  15. package/dist/adapters/server-types.js +104 -2
  16. package/dist/adapters/step-user.d.ts +23 -0
  17. package/dist/adapters/step-user.js +33 -0
  18. package/dist/automation/automation-poller.d.ts +45 -0
  19. package/dist/automation/automation-poller.js +201 -0
  20. package/dist/automation/inbox-poll.d.ts +47 -0
  21. package/dist/automation/inbox-poll.js +357 -0
  22. package/dist/automation/lease-keeper.d.ts +12 -0
  23. package/dist/automation/lease-keeper.js +30 -0
  24. package/dist/automation/read-failure.d.ts +5 -0
  25. package/dist/automation/read-failure.js +40 -0
  26. package/dist/automation/reconciliation.d.ts +13 -0
  27. package/dist/automation/reconciliation.js +88 -0
  28. package/dist/build-workflow-executor.d.ts +2 -0
  29. package/dist/build-workflow-executor.js +62 -4
  30. package/dist/cli-core.js +7 -1
  31. package/dist/defaults.d.ts +2 -0
  32. package/dist/defaults.js +10 -2
  33. package/dist/errors.d.ts +30 -2
  34. package/dist/errors.js +56 -26
  35. package/dist/http/pending-data-validators.js +3 -3
  36. package/dist/http/step-serializer.js +5 -5
  37. package/dist/ports/automation-port.d.ts +19 -0
  38. package/dist/ports/automation-port.js +3 -0
  39. package/dist/ports/segment-reader-port.d.ts +43 -0
  40. package/dist/ports/segment-reader-port.js +3 -0
  41. package/dist/ports/workflow-port.d.ts +3 -1
  42. package/dist/{adapters/record-id-serializer.d.ts → record-id.d.ts} +2 -2
  43. package/dist/record-id.js +20 -0
  44. package/dist/runner.d.ts +3 -0
  45. package/dist/runner.js +59 -12
  46. package/dist/types/automation.d.ts +64 -0
  47. package/dist/types/automation.js +3 -0
  48. package/dist/types/validated/execution.d.ts +2 -1
  49. package/dist/types/validated/execution.js +2 -1
  50. package/package.json +4 -2
  51. package/dist/adapters/record-id-serializer.js +0 -20
@@ -6,14 +6,19 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.buildInMemoryExecutor = buildInMemoryExecutor;
7
7
  exports.buildDatabaseExecutor = buildDatabaseExecutor;
8
8
  const forestadmin_client_1 = require("@forestadmin/forestadmin-client");
9
+ const crypto_1 = require("crypto");
10
+ const os_1 = require("os");
9
11
  const sequelize_1 = require("sequelize");
10
12
  const agent_client_agent_port_1 = __importDefault(require("./adapters/agent-client-agent-port"));
13
+ const agent_client_segment_reader_1 = __importDefault(require("./adapters/agent-client-segment-reader"));
11
14
  const ai_client_adapter_1 = __importDefault(require("./adapters/ai-client-adapter"));
12
15
  const always_error_ai_model_port_1 = __importDefault(require("./adapters/always-error-ai-model-port"));
13
16
  const console_logger_1 = __importDefault(require("./adapters/console-logger"));
17
+ const forest_server_automation_port_1 = __importDefault(require("./adapters/forest-server-automation-port"));
14
18
  const forest_server_workflow_port_1 = __importDefault(require("./adapters/forest-server-workflow-port"));
15
19
  const forestadmin_client_activity_log_port_factory_1 = __importDefault(require("./adapters/forestadmin-client-activity-log-port-factory"));
16
20
  const server_ai_adapter_1 = __importDefault(require("./adapters/server-ai-adapter"));
21
+ const automation_poller_1 = __importDefault(require("./automation/automation-poller"));
17
22
  const credential_encryption_1 = __importDefault(require("./crypto/credential-encryption"));
18
23
  const defaults_1 = require("./defaults");
19
24
  const executor_http_server_1 = __importDefault(require("./http/executor-http-server"));
@@ -69,6 +74,15 @@ function buildCommonDependencies(options) {
69
74
  schemaCache,
70
75
  forestServerUrl,
71
76
  });
77
+ const automationPort = new forest_server_automation_port_1.default({
78
+ envSecret: options.envSecret,
79
+ forestServerUrl,
80
+ logger,
81
+ });
82
+ const segmentReaderPort = new agent_client_segment_reader_1.default({
83
+ agentUrl: options.agentUrl,
84
+ authSecret: options.authSecret,
85
+ });
72
86
  const activityLogsService = new forestadmin_client_1.ActivityLogsService(new forestadmin_client_1.ForestHttpApi(), {
73
87
  forestServerUrl,
74
88
  headers: { 'Forest-Application-Source': 'WorkflowExecutor' },
@@ -76,12 +90,18 @@ function buildCommonDependencies(options) {
76
90
  const activityLogPortFactory = new forestadmin_client_activity_log_port_factory_1.default(activityLogsService, logger);
77
91
  return {
78
92
  agentPort,
93
+ automationPort,
94
+ segmentReaderPort,
79
95
  schemaCache,
80
96
  workflowPort,
81
97
  aiModelPort,
82
98
  activityLogPortFactory,
83
99
  logger,
84
100
  pollingIntervalS: positiveOrDefault(options.pollingIntervalS, defaults_1.DEFAULT_POLLING_INTERVAL_S),
101
+ // Zero survives the default: it is how an operator turns the sweep off.
102
+ automationPollingIntervalS: options.automationPollingIntervalS === 0
103
+ ? 0
104
+ : positiveOrDefault(options.automationPollingIntervalS, defaults_1.DEFAULT_AUTOMATION_POLL_INTERVAL_S),
85
105
  envSecret: options.envSecret,
86
106
  authSecret: options.authSecret,
87
107
  stopTimeoutS: options.stopTimeoutS,
@@ -90,8 +110,12 @@ function buildCommonDependencies(options) {
90
110
  maxChainDepth: options.maxChainDepth,
91
111
  };
92
112
  }
93
- function createWorkflowExecutor(runner, server, logger, manageProcessSignals) {
113
+ function createWorkflowExecutor({ runner, automationPoller, server, logger, manageProcessSignals, }) {
94
114
  let shutdownPromise = null;
115
+ // `start()` awaits twice before it arms the sweep, and `stop()` can land in either gap. Without
116
+ // this the shutdown reports itself complete and the suspended `start()` then arms a poller
117
+ // nobody will stop, which keeps syncing and launching runs after the executor is down.
118
+ let stopped = false;
95
119
  const shutdown = async () => {
96
120
  try {
97
121
  await server.stop();
@@ -101,6 +125,8 @@ function createWorkflowExecutor(runner, server, logger, manageProcessSignals) {
101
125
  error: err instanceof Error ? err.message : String(err),
102
126
  });
103
127
  }
128
+ // Drained before the runner: its cycle only ever calls out, so it has nothing to hand over.
129
+ await automationPoller.stop();
104
130
  await runner.stop();
105
131
  };
106
132
  const onSignal = async () => {
@@ -139,6 +165,11 @@ function createWorkflowExecutor(runner, server, logger, manageProcessSignals) {
139
165
  await runner.stop().catch(() => { });
140
166
  throw err;
141
167
  }
168
+ if (stopped) {
169
+ logger('Info', 'Executor was stopped while starting, leaving the automation sweep off');
170
+ return;
171
+ }
172
+ automationPoller.start();
142
173
  // Only own the host's signals when explicitly allowed (the standalone CLI). When embedded,
143
174
  // the host process must keep control of SIGTERM/SIGINT and its own exit.
144
175
  if (manageProcessSignals) {
@@ -147,6 +178,7 @@ function createWorkflowExecutor(runner, server, logger, manageProcessSignals) {
147
178
  }
148
179
  },
149
180
  async stop() {
181
+ stopped = true;
150
182
  if (manageProcessSignals) {
151
183
  process.removeListener('SIGTERM', onSignal);
152
184
  process.removeListener('SIGINT', onSignal);
@@ -157,6 +189,18 @@ function createWorkflowExecutor(runner, server, logger, manageProcessSignals) {
157
189
  },
158
190
  };
159
191
  }
192
+ // One id per process, so the orchestrator's poller election can tell two instances apart and a
193
+ // restart never inherits the lease of the process it replaced.
194
+ function buildAutomationPoller(deps) {
195
+ return new automation_poller_1.default({
196
+ automationPort: deps.automationPort,
197
+ segmentReaderPort: deps.segmentReaderPort,
198
+ pollingIntervalS: deps.automationPollingIntervalS,
199
+ instanceId: `${(0, os_1.hostname)()}-${process.pid}-${(0, crypto_1.randomUUID)().slice(0, 8)}`,
200
+ stopTimeoutS: deps.stopTimeoutS,
201
+ logger: deps.logger,
202
+ });
203
+ }
160
204
  function buildInMemoryExecutor(options) {
161
205
  const deps = buildCommonDependencies(options);
162
206
  const mcpOAuthCredentialsStore = new in_memory_mcp_oauth_credentials_store_1.default();
@@ -175,6 +219,7 @@ function buildInMemoryExecutor(options) {
175
219
  runStore: new in_memory_store_1.default(),
176
220
  mcpOAuthTokenService,
177
221
  });
222
+ const automationPoller = buildAutomationPoller(deps);
178
223
  const server = new executor_http_server_1.default({
179
224
  port: options.httpPort,
180
225
  runner,
@@ -186,7 +231,13 @@ function buildInMemoryExecutor(options) {
186
231
  remoteToolFetcher,
187
232
  oauthTokenService: mcpOAuthTokenService,
188
233
  });
189
- return createWorkflowExecutor(runner, server, deps.logger, options.manageProcessSignals ?? true);
234
+ return createWorkflowExecutor({
235
+ runner,
236
+ automationPoller,
237
+ server,
238
+ logger: deps.logger,
239
+ manageProcessSignals: options.manageProcessSignals ?? true,
240
+ });
190
241
  }
191
242
  function buildDatabaseExecutor(options) {
192
243
  const deps = buildCommonDependencies(options);
@@ -218,6 +269,7 @@ function buildDatabaseExecutor(options) {
218
269
  runStore: new database_store_1.default({ sequelize, schema: mergedOptions.schema }),
219
270
  mcpOAuthTokenService,
220
271
  });
272
+ const automationPoller = buildAutomationPoller(deps);
221
273
  const server = new executor_http_server_1.default({
222
274
  port: options.httpPort,
223
275
  runner,
@@ -229,6 +281,12 @@ function buildDatabaseExecutor(options) {
229
281
  remoteToolFetcher,
230
282
  oauthTokenService: mcpOAuthTokenService,
231
283
  });
232
- return createWorkflowExecutor(runner, server, deps.logger, options.manageProcessSignals ?? true);
284
+ return createWorkflowExecutor({
285
+ runner,
286
+ automationPoller,
287
+ server,
288
+ logger: deps.logger,
289
+ manageProcessSignals: options.manageProcessSignals ?? true,
290
+ });
233
291
  }
234
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQtd29ya2Zsb3ctZXhlY3V0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYnVpbGQtd29ya2Zsb3ctZXhlY3V0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFtUEEsc0RBd0NDO0FBRUQsc0RBbURDO0FBM1VELHdFQUFxRjtBQUNyRix5Q0FBc0M7QUFFdEMsaUdBQXNFO0FBQ3RFLHFGQUEyRDtBQUMzRCx1R0FBMkU7QUFDM0UsK0VBQTREO0FBQzVELHlHQUE4RTtBQUM5RSwySUFBOEc7QUFDOUcscUZBQTJEO0FBQzNELDJGQUFrRTtBQUNsRSx5Q0FPb0I7QUFDcEIsdUZBQTZEO0FBQzdELDBFQUFzRDtBQUN0RCxnRkFBc0Q7QUFDdEQsc0RBQThCO0FBQzlCLGtFQUF5QztBQUN6Qyx5SEFBNkY7QUFDN0YsNkVBQW9EO0FBQ3BELDJIQUE4RjtBQUM5RiwrRUFBcUQ7QUFFckQsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLENBQUM7QUE4QzdCLDJGQUEyRjtBQUMzRiw2RkFBNkY7QUFDN0YsU0FBUyxpQkFBaUIsQ0FBQyxLQUF5QixFQUFFLFFBQWdCO0lBQ3BFLE9BQU8sT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7QUFDN0YsQ0FBQztBQUVELFNBQVMsdUJBQXVCLENBQUMsT0FBd0I7SUFDdkQsTUFBTSxlQUFlLEdBQUcsT0FBTyxDQUFDLGVBQWUsSUFBSSxvQ0FBeUIsQ0FBQztJQUM3RSxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxJQUFJLElBQUEsd0JBQW1CLEVBQUMsT0FBTyxDQUFDLFdBQVcsSUFBSSwrQkFBb0IsQ0FBQyxDQUFDO0lBRWxHLDZGQUE2RjtJQUM3Rix1RUFBdUU7SUFDdkUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxxQkFB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
292
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQtd29ya2Zsb3ctZXhlY3V0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYnVpbGQtd29ya2Zsb3ctZXhlY3V0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFpVEEsc0RBZ0RDO0FBRUQsc0RBMkRDO0FBelpELHdFQUFxRjtBQUNyRixtQ0FBb0M7QUFDcEMsMkJBQThCO0FBQzlCLHlDQUFzQztBQUV0QyxpR0FBc0U7QUFDdEUseUdBQThFO0FBQzlFLHFGQUEyRDtBQUMzRCx1R0FBMkU7QUFDM0UsK0VBQTREO0FBQzVELDZHQUFrRjtBQUNsRix5R0FBOEU7QUFDOUUsMklBQThHO0FBQzlHLHFGQUEyRDtBQUMzRCx1RkFBOEQ7QUFDOUQsMkZBQWtFO0FBQ2xFLHlDQVFvQjtBQUNwQix1RkFBNkQ7QUFDN0QsMEVBQXNEO0FBQ3RELGdGQUFzRDtBQUN0RCxzREFBOEI7QUFDOUIsa0VBQXlDO0FBQ3pDLHlIQUE2RjtBQUM3Riw2RUFBb0Q7QUFDcEQsMkhBQThGO0FBQzlGLCtFQUFxRDtBQUVyRCxNQUFNLGtCQUFrQixHQUFHLENBQUMsQ0FBQztBQWdEN0IsMkZBQTJGO0FBQzNGLDZGQUE2RjtBQUM3RixTQUFTLGlCQUFpQixDQUFDLEtBQXlCLEVBQUUsUUFBZ0I7SUFDcEUsT0FBTyxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztBQUM3RixDQUFDO0FBRUQsU0FBUyx1QkFBdUIsQ0FBQyxPQUF3QjtJQUN2RCxNQUFNLGVBQWUsR0FBRyxPQUFPLENBQUMsZUFBZSxJQUFJLG9DQUF5QixDQUFDO0lBQzdFLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLElBQUksSUFBQSx3QkFBbUIsRUFBQyxPQUFPLENBQUMsV0FBVyxJQUFJLCtCQUFvQixD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
package/dist/cli-core.js CHANGED
@@ -188,6 +188,11 @@ function readEnvConfig(env, args) {
188
188
  httpPort: parsePositiveIntEnv('HTTP_PORT', env.HTTP_PORT) ?? defaults_1.DEFAULT_HTTP_PORT,
189
189
  forestServerUrl: env.FOREST_SERVER_URL,
190
190
  pollingIntervalS: parsePositiveIntEnv('POLLING_INTERVAL_S', env.POLLING_INTERVAL_S),
191
+ // Zero accepted here alone: it is how an operator turns the sweep off, and an environment the
192
+ // orchestrator refuses would otherwise log an error on every cycle.
193
+ automationPollingIntervalS: env.AUTOMATION_POLL_INTERVAL_S?.trim() === '0'
194
+ ? 0
195
+ : parsePositiveIntEnv('AUTOMATION_POLL_INTERVAL_S', env.AUTOMATION_POLL_INTERVAL_S),
191
196
  stopTimeoutS: parsePositiveIntEnv('STOP_TIMEOUT_S', env.STOP_TIMEOUT_S),
192
197
  stepTimeoutS: parsePositiveIntEnv('STEP_TIMEOUT_S', env.STEP_TIMEOUT_S),
193
198
  aiInvokeTimeoutS: parsePositiveIntEnv('AI_INVOKE_TIMEOUT_S', env.AI_INVOKE_TIMEOUT_S),
@@ -240,6 +245,7 @@ Optional environment variables:
240
245
  HTTP_PORT Default: ${defaults_1.DEFAULT_HTTP_PORT}
241
246
  FOREST_SERVER_URL Default: ${defaults_1.DEFAULT_FOREST_SERVER_URL}
242
247
  POLLING_INTERVAL_S Default: ${defaults_1.DEFAULT_POLLING_INTERVAL_S}
248
+ AUTOMATION_POLL_INTERVAL_S How often automated inboxes are swept, in seconds (default: ${defaults_1.DEFAULT_AUTOMATION_POLL_INTERVAL_S})
243
249
  STOP_TIMEOUT_S Default: ${defaults_1.DEFAULT_STOP_TIMEOUT_S}
244
250
  STEP_TIMEOUT_S Max duration of a step in seconds (default: ${defaults_1.DEFAULT_STEP_TIMEOUT_S})
245
251
  AI_INVOKE_TIMEOUT_S Max duration of a single AI provider invocation in seconds (default: ${defaults_1.DEFAULT_AI_INVOKE_TIMEOUT_S})
@@ -331,4 +337,4 @@ async function runCli(argv, env, factories) {
331
337
  throw error;
332
338
  }
333
339
  }
334
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLWNvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY2xpLWNvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLCtCQUErQjs7Ozs7QUFxSC9CLDhCQWtDQztBQUlELGdDQVNDO0FBNEZELHNDQWdEQztBQUVELDhCQWtEQztBQUVELG9DQUVDO0FBRUQsZ0NBdUJDO0FBRUQsd0JBd0RDO0FBdGJELDZCQUF3QjtBQUV4QiwrRUFBNEQ7QUFDNUQsNkVBQTBEO0FBTTFELHlDQVVvQjtBQUNwQixxQ0FBbUU7QUFDbkUsa0VBSW9DO0FBRXBDLE1BQU0sWUFBWSxHQUFHLE9BQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUM7QUFDeEQsTUFBTSxtQkFBbUIsR0FBRyxPQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUV2RSxTQUFTLG1CQUFtQixDQUFDLElBQVksRUFBRSxHQUF1QjtJQUNoRSxJQUFJLENBQUMsR0FBRztRQUFFLE9BQU8sU0FBUyxDQUFDO0lBRTNCLE1BQU0sTUFBTSxHQUFHLFlBQVksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFM0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNwQixNQUFNLElBQUksMkJBQWtCLENBQUMsR0FBRyxJQUFJLHFDQUFxQyxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQ3BGLENBQUM7SUFFRCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUM7QUFDckIsQ0FBQztBQUVELFNBQVMsbUJBQW1CLENBQUMsR0FBdUI7SUFDbEQsSUFBSSxDQUFDLEdBQUc7UUFBRSxPQUFPLFNBQVMsQ0FBQztJQUUzQixNQUFNLFVBQVUsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxH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
340
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLWNvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY2xpLWNvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLCtCQUErQjs7Ozs7QUFzSC9CLDhCQWtDQztBQUlELGdDQVNDO0FBNEZELHNDQXNEQztBQUVELDhCQW1EQztBQUVELG9DQUVDO0FBRUQsZ0NBdUJDO0FBRUQsd0JBd0RDO0FBOWJELDZCQUF3QjtBQUV4QiwrRUFBNEQ7QUFDNUQsNkVBQTBEO0FBTTFELHlDQVdvQjtBQUNwQixxQ0FBbUU7QUFDbkUsa0VBSW9DO0FBRXBDLE1BQU0sWUFBWSxHQUFHLE9BQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUM7QUFDeEQsTUFBTSxtQkFBbUIsR0FBRyxPQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUV2RSxTQUFTLG1CQUFtQixDQUFDLElBQVksRUFBRSxHQUF1QjtJQUNoRSxJQUFJLENBQUMsR0FBRztRQUFFLE9BQU8sU0FBUyxDQUFDO0lBRTNCLE1BQU0sTUFBTSxHQUFHLFlBQVksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFM0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNwQixNQUFNLElBQUksMkJBQWtCLENBQUMsR0FBRyxJQUFJLHFDQUFxQyxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQ3BGLENBQUM7SUFFRCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUM7QUFDckIsQ0FBQztBQUVELFNBQVMsbUJBQW1CLENBQUMsR0FBdUI7SUFDbEQsSUFBSSxDQUFDLEdBQUc7UUFBRSxPQUFPLFNBQVMsQ0FBQztJQUUzQixNQUFNLFVBQVUsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDNUUsTUFBTSxNQUFNLEdBQUcsbUJBQW1CLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRXpELElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDcEIsTUFBTSxJQUFJLDJCQUFrQixDQUMxQiwyREFBMkQsR0FBRyxJQUFJLENBQ25FLENBQUM7SUFDSixDQUFDO0lBRUQsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDO0FBQ3JCLENBQUM7QUFFRCxNQUFNLE1BQU0sR0FBRyxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzFDLE1BQU0sS0FBSyxHQUFHLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFFMUMsK0ZBQStGO0FBQy9GLDhGQUE4RjtBQUM5RixTQUFTLGNBQWMsQ0FBQyxHQUF1QjtJQUM3QyxNQUFNLE1BQU0sR0FBRyxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDM0IsSUFBSSxDQUFDLE1BQU07UUFBRSxPQUFPLFNBQVMsQ0FBQztJQUU5QixJQUFJLENBQUMsSUFBQSw2Q0FBeUIsRUFBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1FBQ3ZDLE1BQU0sSUFBSSwyQkFBa0IsQ0FDMUIsc0RBQXNEO1lBQ3BELDhEQUE4RCx5Q0FBcUIsaUJBQWlCLEdBQUcsR0FBRyxDQUM3RyxDQUFDO0lBQ0osQ0FBQztJQUVELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUM7QUFFRCxTQUFTLGVBQWUsQ0FBQyxJQUFZLEVBQUUsR0FBdUIsRUFBRSxZQUFZLEdBQUcsS0FBSztJQUNsRixJQUFJLENBQUMsR0FBRztRQUFFLE9BQU8sWUFBWSxDQUFDO0lBRTlCLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN2QyxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFDeEMsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztRQUFFLE9BQU8sS0FBSyxDQUFDO0lBRXhDLE1BQU0sSUFBSSwyQkFBa0IsQ0FBQyxHQUFHLElBQUkseUNBQXlDLEdBQUcsR0FBRyxDQUFDLENBQUM7QUFDdkYsQ0FBQztBQUVELHlHQUF5RztBQUN6RyxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsT0FBTyxDQUFDLGlCQUFpQixDQUF3QixDQUFDO0FBRXRFLE1BQU0sV0FBVyxHQUFHLDBCQUEwQixDQUFDO0FBdUIvQyxTQUFnQixTQUFTLENBQUMsSUFBYztJQUN0QyxNQUFNLE1BQU0sR0FBWTtRQUN0QixJQUFJLEVBQUUsS0FBSztRQUNYLE9BQU8sRUFBRSxLQUFLO1FBQ2QsUUFBUSxFQUFFLEtBQUs7UUFDZixNQUFNLEVBQUUsS0FBSztRQUNiLElBQUksRUFBRSxLQUFLO0tBQ1osQ0FBQztJQUVGLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFDdkIsUUFBUSxHQUFHLEVBQUUsQ0FBQztZQUNaLEtBQUssUUFBUSxDQUFDO1lBQ2QsS0FBSyxJQUFJO2dCQUNQLE1BQU0sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO2dCQUNuQixNQUFNO1lBQ1IsS0FBSyxXQUFXLENBQUM7WUFDakIsS0FBSyxJQUFJO2dCQUNQLE1BQU0sQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO2dCQUN0QixNQUFNO1lBQ1IsS0FBSyxhQUFhO2dCQUNoQixNQUFNLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztnQkFDdkIsTUFBTTtZQUNSLEtBQUssVUFBVTtnQkFDYixNQUFNLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztnQkFDckIsTUFBTTtZQUNSLEtBQUssUUFBUTtnQkFDWCxNQUFNLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztnQkFDbkIsTUFBTTtZQUNSO2dCQUNFLE1BQU0sSUFBSSxLQUFLLENBQUMscUJBQXFCLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDaEQsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBRUQsbUdBQW1HO0FBQ25HLDhGQUE4RjtBQUM5RixTQUFnQixVQUFVLENBQ3hCLElBQWEsRUFDYixLQUFrQixFQUNsQixTQUE2QixPQUFPLENBQUMsTUFBTTtJQUUzQyxJQUFJLElBQUksQ0FBQyxJQUFJO1FBQUUsT0FBTyxJQUFBLHdCQUFtQixFQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pELElBQUksSUFBSSxDQUFDLE1BQU07UUFBRSxPQUFPLElBQUEsdUJBQWtCLEVBQUMsS0FBSyxDQUFDLENBQUM7SUFFbEQsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFBLHVCQUFrQixFQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFBLHdCQUFtQixFQUFDLEtBQUssQ0FBQyxDQUFDO0FBQy9FLENBQUM7QUFFRCxNQUFNLHdCQUF3QixHQUM1Qiw0RkFBNEY7SUFDNUYseUNBQXlDLENBQUM7QUFFNUMsU0FBUyxrQkFBa0IsQ0FBQyxHQUFzQixFQUFFLEtBQWE7SUFDL0QsSUFBSSxHQUFHLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDbkIsTUFBTSxJQUFJLDJCQUFrQixDQUMxQixzRkFBc0Y7WUFDcEYsZ0ZBQWdGLENBQ25GLENBQUM7SUFDSixDQUFDO0lBRUQsOEZBQThGO0lBQzlGLHdGQUF3RjtJQUN4RixNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsVUFBVSxJQUFJLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQztJQUV4RCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDWixNQUFNLElBQUksMkJBQWtCLENBQzFCLGtFQUFrRSxDQUNuRSxDQUFDO0lBQ0osQ0FBQztJQUVELE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxDQUFDO0FBQ2pFLENBQUM7QUFFRCxTQUFTLGFBQWEsQ0FBQyxHQUFzQjtJQUMzQyxNQUFNLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsR0FBRyxHQUFHLENBQUM7SUFFbEQsSUFBSSxDQUFDLFdBQVcsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLFVBQVU7UUFBRSxPQUFPLFNBQVMsQ0FBQztJQUUvRCxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDOUIsTUFBTSxJQUFJLDJCQUFrQixDQUFDLHdCQUF3QixDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVELElBQUksV0FBVyxLQUFLLFNBQVM7UUFBRSxPQUFPLENBQUMsa0JBQWtCLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFFMUUsSUFBSSxXQUFXLEtBQUssV0FBVyxJQUFJLFdBQVcsS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUM1RCxNQUFNLElBQUksMkJBQWtCLENBQzFCLGdFQUFnRSxXQUFXLEdBQUcsQ0FDL0UsQ0FBQztJQUNKLENBQUM7SUFFRCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDaEIsTUFBTSxJQUFJLDJCQUFrQixDQUMxQiwwQ0FBMEMsV0FBVyx1Q0FBdUM7WUFDMUYsZ0NBQWdDLENBQ25DLENBQUM7SUFDSixDQUFDO0lBRUQsT0FBTztRQUNMO1lBQ0UsSUFBSSxFQUFFLFNBQVM7WUFDZixRQUFRLEVBQUUsV0FBVztZQUNyQixLQUFLLEVBQUUsUUFBUTtZQUNmLE1BQU0sRUFBRSxVQUFVO1NBQ25CO0tBQ0YsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLHFCQUFxQixHQUFHLElBQUksQ0FBQztBQUNuQyxNQUFNLGNBQWMsR0FBRyxDQUFDLGVBQWUsRUFBRSxlQUFlLEVBQUUsZUFBZSxDQUFVLENBQUM7QUFFcEYsU0FBUyx5QkFBeUIsQ0FBQyxHQUFzQjtJQUN2RCxNQUFNLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixFQUFFLEdBQUcsR0FBRyxDQUFDO0lBRTlGLElBQUksY0FBYyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQUUsT0FBTyxTQUFTLENBQUM7SUFFN0QsTUFBTSxPQUFPLEdBQUcsY0FBYyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFFeEQsSUFBSSxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ3ZCLE1BQU0sSUFBSSwyQkFBa0IsQ0FDMUIsb0VBQW9FO1lBQ2xFLGFBQWEsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUNyQyxDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sSUFBSSxHQUFHLG1CQUFtQixDQUFDLGVBQWUsRUFBRSxhQUFhLENBQUMsSUFBSSxxQkFBcUIsQ0FBQztJQUMxRixNQUFNLElBQUksR0FBRyxrQkFBa0IsQ0FBQyxhQUF1QixDQUFDLENBQUM7SUFDekQsTUFBTSxJQUFJLEdBQUcsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxJQUFJLGtCQUFrQixDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQzNGLE1BQU0sT0FBTyxHQUFHLGFBQXVCLENBQUM7SUFDeEMsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztJQUMxRixNQUFNLFFBQVEsR0FBRyxrQkFBa0IsQ0FBQyxhQUF1QixDQUFDLENBQUM7SUFFN0QsT0FBTyxjQUFjLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLFFBQVEsRUFBRSxDQUFDO0FBQzFELENBQUM7QUFFRCxTQUFTLGtCQUFrQixDQUFDLEdBQXNCO0lBQ2hELE9BQU8sR0FBRyxDQUFDLFlBQVksSUFBSSx5QkFBeUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUM1RCxDQUFDO0FBRUQsU0FBZ0IsYUFBYSxDQUFDLEdBQXNCLEVBQUUsSUFBYTtJQUNqRSxNQUFNLFlBQVksR0FBRyxDQUFDLG1CQUFtQixFQUFFLG9CQUFvQixFQUFFLFdBQVcsQ0FBVSxDQUFDO0lBQ3ZGLE1BQU0sT0FBTyxHQUFhLFlBQVksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBRWhFLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFeEUsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNuQyxPQUFPLENBQUMsSUFBSSxDQUNWLDRGQUE0RixDQUM3RixDQUFDO0lBQ0osQ0FBQztJQUVELElBQUksT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUN2QixNQUFNLElBQUksS0FBSyxDQUNiLDRDQUE0QyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTTtZQUN2RixTQUFTLFdBQVcsOEJBQThCLENBQ3JELENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxnQkFBZ0IsR0FBRyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFNUMsTUFBTSxlQUFlLEdBQW9CO1FBQ3ZDLFNBQVMsRUFBRSxHQUFHLENBQUMsaUJBQTJCO1FBQzFDLFVBQVUsRUFBRSxHQUFHLENBQUMsa0JBQTRCO1FBQzVDLFFBQVEsRUFBRSxHQUFHLENBQUMsU0FBbUI7UUFDakMsUUFBUSxFQUFFLG1CQUFtQixDQUFDLFdBQVcsRUFBRSxHQUFHLENBQUMsU0FBUyxDQUFDLElBQUksNEJBQWlCO1FBQzlFLGVBQWUsRUFBRSxHQUFHLENBQUMsaUJBQWlCO1FBQ3RDLGdCQUFnQixFQUFFLG1CQUFtQixDQUFDLG9CQUFvQixFQUFFLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQztRQUNuRiw4RkFBOEY7UUFDOUYsb0VBQW9FO1FBQ3BFLDBCQUEwQixFQUN4QixHQUFHLENBQUMsMEJBQTBCLEVBQUUsSUFBSSxFQUFFLEtBQUssR0FBRztZQUM1QyxDQUFDLENBQUMsQ0FBQztZQUNILENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyw0QkFBNEIsRUFBRSxHQUFHLENBQUMsMEJBQTBCLENBQUM7UUFDdkYsWUFBWSxFQUFFLG1CQUFtQixDQUFDLGdCQUFnQixFQUFFLEdBQUcsQ0FBQyxjQUFjLENBQUM7UUFDdkUsWUFBWSxFQUFFLG1CQUFtQixDQUFDLGdCQUFnQixFQUFFLEdBQUcsQ0FBQyxjQUFjLENBQUM7UUFDdkUsZ0JBQWdCLEVBQUUsbUJBQW1CLENBQUMscUJBQXFCLEVBQUUsR0FBRyxDQUFDLG1CQUFtQixDQUFDO1FBQ3JGLGFBQWEsRUFBRSxtQkFBbUIsQ0FBQyxpQkFBaUIsRUFBRSxHQUFHLENBQUMsZUFBZSxDQUFDO1FBQzFFLGVBQWUsRUFBRSxtQkFBbUIsQ0FBQyxvQkFBb0IsRUFBRSxHQUFHLENBQUMsa0JBQWtCLENBQUM7UUFDbEYsV0FBVyxFQUFFLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsSUFBSSwrQkFBb0I7UUFDdkUscUJBQXFCLEVBQUUsR0FBRyxDQUFDLDhCQUE4QjtRQUN6RCxHQUFHLENBQUMsZ0JBQWdCLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxDQUFDO1FBQzdDLEdBQUcsQ0FBQyxHQUFHLENBQUMsY0FBYyxLQUFLLE1BQU0sSUFBSSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQztLQUM3RCxDQUFDO0lBRUYsT0FBTztRQUNMLGVBQWU7UUFDZixXQUFXO1FBQ1gsNkVBQTZFO1FBQzdFLCtEQUErRDtRQUMvRCxXQUFXLEVBQUUsZUFBZSxDQUFDLGNBQWMsRUFBRSxHQUFHLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQztRQUNwRSxjQUFjLEVBQUUsY0FBYyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUM7UUFDbkQsSUFBSSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsVUFBVTtLQUMvQyxDQUFDO0FBQ0osQ0FBQztBQUVELFNBQWdCLFNBQVM7SUFDdkIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLFdBQVc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7a0RBc0JlLHFCQUFxQjs7Ozs7O29DQU1uQyw0QkFBaUI7b0NBQ2pCLG9DQUF5QjttQ0FDMUIscUNBQTBCOzRGQUMrQiw2Q0FBa0M7bUNBQzNGLGlDQUFzQjtzRUFDYSxpQ0FBc0I7K0ZBQ0csc0NBQTJCO3FGQUNyQyxrQ0FBdUI7MkVBQ2pDLHFDQUEwQjtpRUFDcEMsK0JBQW9COzs7Ozs7Ozs7Ozs7bUVBWWxCLENBQUMsQ0FBQztBQUNyRSxDQUFDO0FBRUQsU0FBZ0IsWUFBWTtJQUMxQixPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3ZCLENBQUM7QUFFRCxTQUFnQixVQUFVLENBQUMsTUFBYyxFQUFFLE1BQWlCO0lBQzFELE1BQU0sRUFBRSxlQUFlLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFFLEdBQUcsTUFBTSxDQUFDO0lBQzVFLElBQUksT0FBZSxDQUFDO0lBRXBCLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3RCLE9BQU8sR0FBRyx5QkFBeUIsQ0FBQztJQUN0QyxDQUFDO1NBQU0sSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLENBQUM7UUFDekMsT0FBTyxHQUFHLFVBQVUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUM7SUFDL0YsQ0FBQztTQUFNLENBQUM7UUFDTixPQUFPLEdBQUcsaUJBQWlCLENBQUM7SUFDOUIsQ0FBQztJQUVELE1BQU0sQ0FBQyxNQUFNLEVBQUUsNEJBQTRCLEVBQUU7UUFDM0MsSUFBSTtRQUNKLFdBQVcsRUFBRSxJQUFJLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFNBQVM7UUFDMUQsY0FBYyxFQUFFLElBQUksS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLGNBQWMsSUFBSSxrQ0FBYyxDQUFDLENBQUMsQ0FBQyxTQUFTO1FBQ2xGLGVBQWUsRUFBRSxJQUFJLENBQUMsZUFBZSxJQUFJLG9DQUF5QjtRQUNsRSxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7UUFDdkIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO1FBQ3ZCLGdCQUFnQixFQUFFLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxxQ0FBMEI7UUFDckUsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXLElBQUksK0JBQW9CO1FBQ3JELFFBQVEsRUFBRSxPQUFPO0tBQ2xCLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFTSxLQUFLLFVBQVUsTUFBTSxDQUMxQixJQUFjLEVBQ2QsR0FBc0IsRUFDdEIsU0FBdUI7SUFFdkIsTUFBTSxJQUFJLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRTdCLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2QsU0FBUyxFQUFFLENBQUM7UUFFWixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNqQixZQUFZLEVBQUUsQ0FBQztRQUVmLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELE1BQU0sTUFBTSxHQUFHLGFBQWEsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDeEMsTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsZUFBZSxDQUFDLFdBQVcsSUFBSSwrQkFBb0IsQ0FBQyxDQUFDO0lBQzVGLE1BQU0sQ0FBQyxlQUFlLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUV2QyxVQUFVLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBRTNCLElBQUksQ0FBQztRQUNILElBQUksUUFBMEIsQ0FBQztRQUUvQixJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssV0FBVyxFQUFFLENBQUM7WUFDaEMsUUFBUSxHQUFHLFNBQVMsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzdELENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxlQUFlLEdBQTRCO2dCQUMvQyxHQUFHLE1BQU0sQ0FBQyxlQUFlO2dCQUN6QixRQUFRLEVBQUU7b0JBQ1IsR0FBRyxFQUFFLE1BQU0sQ0FBQyxXQUFxQjtvQkFDakMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxjQUFjLElBQUksRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLGNBQWMsRUFBRSxDQUFDO29CQUMvRCxHQUFHLENBQUMsTUFBTSxDQUFDLFdBQVcsSUFBSTt3QkFDeEIsY0FBYyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxrQkFBa0IsRUFBRSxLQUFLLEVBQUUsRUFBRTtxQkFDdEUsQ0FBQztpQkFDSDthQUNGLENBQUM7WUFDRixRQUFRLEdBQUcsU0FBUyxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUN0RCxDQUFDO1FBRUQsTUFBTSxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDdkIsTUFBTSxDQUFDLE1BQU0sRUFBRSx5QkFBeUIsRUFBRTtZQUN4QyxHQUFHLEVBQUUsb0JBQW9CLE1BQU0sQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFO1NBQzNELENBQUMsQ0FBQztRQUVILE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsTUFBTSxDQUFDLE9BQU8sRUFBRSxtQ0FBbUMsRUFBRTtZQUNuRCxLQUFLLEVBQUUsSUFBQSw0QkFBbUIsRUFBQyxLQUFLLENBQUM7U0FDbEMsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxLQUFLLENBQUM7SUFDZCxDQUFDO0FBQ0gsQ0FBQyJ9
@@ -2,10 +2,12 @@ import type { LoggerLevel } from './ports/logger-port';
2
2
  export declare const DEFAULT_HTTP_PORT = 3400;
3
3
  export declare const DEFAULT_FOREST_SERVER_URL = "https://api.forestadmin.com";
4
4
  export declare const DEFAULT_POLLING_INTERVAL_S = 30;
5
+ export declare const DEFAULT_AUTOMATION_POLL_INTERVAL_S = 300;
5
6
  export declare const DEFAULT_STEP_TIMEOUT_S: number;
6
7
  export declare const DEFAULT_AI_INVOKE_TIMEOUT_S = 30;
7
8
  export declare const DEFAULT_STOP_TIMEOUT_S = 30;
8
9
  export declare const DEFAULT_MAX_CHAIN_DEPTH = 50;
10
+ export declare const MAX_CONCURRENT_RUNS = 10;
9
11
  export declare const DEFAULT_SCHEMA_CACHE_TTL_S: number;
10
12
  export declare const DEFAULT_LOGGER_LEVEL: LoggerLevel;
11
13
  export declare const DEFAULT_OAUTH_EXPIRY_SKEW_S = 60;
package/dist/defaults.js CHANGED
@@ -1,16 +1,24 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DEFAULT_OAUTH_EXPIRY_SKEW_S = exports.DEFAULT_LOGGER_LEVEL = exports.DEFAULT_SCHEMA_CACHE_TTL_S = exports.DEFAULT_MAX_CHAIN_DEPTH = exports.DEFAULT_STOP_TIMEOUT_S = exports.DEFAULT_AI_INVOKE_TIMEOUT_S = exports.DEFAULT_STEP_TIMEOUT_S = exports.DEFAULT_POLLING_INTERVAL_S = exports.DEFAULT_FOREST_SERVER_URL = exports.DEFAULT_HTTP_PORT = void 0;
3
+ exports.DEFAULT_OAUTH_EXPIRY_SKEW_S = exports.DEFAULT_LOGGER_LEVEL = exports.DEFAULT_SCHEMA_CACHE_TTL_S = exports.MAX_CONCURRENT_RUNS = exports.DEFAULT_MAX_CHAIN_DEPTH = exports.DEFAULT_STOP_TIMEOUT_S = exports.DEFAULT_AI_INVOKE_TIMEOUT_S = exports.DEFAULT_STEP_TIMEOUT_S = exports.DEFAULT_AUTOMATION_POLL_INTERVAL_S = exports.DEFAULT_POLLING_INTERVAL_S = exports.DEFAULT_FOREST_SERVER_URL = exports.DEFAULT_HTTP_PORT = void 0;
4
4
  exports.DEFAULT_HTTP_PORT = 3400;
5
5
  exports.DEFAULT_FOREST_SERVER_URL = 'https://api.forestadmin.com';
6
6
  exports.DEFAULT_POLLING_INTERVAL_S = 30;
7
+ // Automated inboxes are a background sweep, not a dispatch loop: each cycle costs a segment read
8
+ // on the customer's database, so it runs an order of magnitude slower than the run poll.
9
+ exports.DEFAULT_AUTOMATION_POLL_INTERVAL_S = 300;
10
+ // The orchestrator hands a run whose step has not reported for 7 minutes to another executor, and
11
+ // that budget also covers MCP loading and update-step retries: raising this can run a step twice.
7
12
  exports.DEFAULT_STEP_TIMEOUT_S = 5 * 60;
8
13
  exports.DEFAULT_AI_INVOKE_TIMEOUT_S = 30;
9
14
  exports.DEFAULT_STOP_TIMEOUT_S = 30;
10
15
  exports.DEFAULT_MAX_CHAIN_DEPTH = 50;
16
+ // The orchestrator refuses a `count` above 10 on `pending-run`: a higher value would fail every poll
17
+ // with a 400 and stop the executor from claiming anything.
18
+ exports.MAX_CONCURRENT_RUNS = 10;
11
19
  exports.DEFAULT_SCHEMA_CACHE_TTL_S = 10 * 60;
12
20
  exports.DEFAULT_LOGGER_LEVEL = 'Info';
13
21
  // Refresh an OAuth access token this many seconds before it actually expires, so a token never
14
22
  // goes stale mid-request between the skew check and the downstream MCP call.
15
23
  exports.DEFAULT_OAUTH_EXPIRY_SKEW_S = 60;
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZGVmYXVsdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRWEsUUFBQSxpQkFBaUIsR0FBRyxJQUFJLENBQUM7QUFDekIsUUFBQSx5QkFBeUIsR0FBRyw2QkFBNkIsQ0FBQztBQUMxRCxRQUFBLDBCQUEwQixHQUFHLEVBQUUsQ0FBQztBQUNoQyxRQUFBLHNCQUFzQixHQUFHLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDaEMsUUFBQSwyQkFBMkIsR0FBRyxFQUFFLENBQUM7QUFDakMsUUFBQSxzQkFBc0IsR0FBRyxFQUFFLENBQUM7QUFDNUIsUUFBQSx1QkFBdUIsR0FBRyxFQUFFLENBQUM7QUFDN0IsUUFBQSwwQkFBMEIsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDO0FBQ3JDLFFBQUEsb0JBQW9CLEdBQWdCLE1BQU0sQ0FBQztBQUN4RCwrRkFBK0Y7QUFDL0YsNkVBQTZFO0FBQ2hFLFFBQUEsMkJBQTJCLEdBQUcsRUFBRSxDQUFDIn0=
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZGVmYXVsdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRWEsUUFBQSxpQkFBaUIsR0FBRyxJQUFJLENBQUM7QUFDekIsUUFBQSx5QkFBeUIsR0FBRyw2QkFBNkIsQ0FBQztBQUMxRCxRQUFBLDBCQUEwQixHQUFHLEVBQUUsQ0FBQztBQUM3QyxpR0FBaUc7QUFDakcseUZBQXlGO0FBQzVFLFFBQUEsa0NBQWtDLEdBQUcsR0FBRyxDQUFDO0FBQ3RELGtHQUFrRztBQUNsRyxrR0FBa0c7QUFDckYsUUFBQSxzQkFBc0IsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQ2hDLFFBQUEsMkJBQTJCLEdBQUcsRUFBRSxDQUFDO0FBQ2pDLFFBQUEsc0JBQXNCLEdBQUcsRUFBRSxDQUFDO0FBQzVCLFFBQUEsdUJBQXVCLEdBQUcsRUFBRSxDQUFDO0FBQzFDLHFHQUFxRztBQUNyRywyREFBMkQ7QUFDOUMsUUFBQSxtQkFBbUIsR0FBRyxFQUFFLENBQUM7QUFDekIsUUFBQSwwQkFBMEIsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDO0FBQ3JDLFFBQUEsb0JBQW9CLEdBQWdCLE1BQU0sQ0FBQztBQUN4RCwrRkFBK0Y7QUFDL0YsNkVBQTZFO0FBQ2hFLFFBQUEsMkJBQTJCLEdBQUcsRUFBRSxDQUFDIn0=
package/dist/errors.d.ts CHANGED
@@ -128,9 +128,21 @@ export declare class McpToolNotFoundError extends WorkflowExecutorError {
128
128
  export declare class McpToolCallLimitError extends WorkflowExecutorError {
129
129
  constructor(limit: number);
130
130
  }
131
- export declare function flattenAgentMessage(detail: string): string;
132
131
  export declare class AgentPortError extends WorkflowExecutorError {
133
- constructor(operation: string, cause: unknown);
132
+ constructor(operation: string, cause: unknown, agentMessage?: string);
133
+ }
134
+ export type SegmentReadFailureKind = 'forbidden' | 'unreachable' | 'overloaded' | 'failed';
135
+ export declare class SegmentReadError extends Error {
136
+ readonly cause: unknown;
137
+ readonly failure: SegmentReadFailureKind;
138
+ readonly httpStatus?: number;
139
+ readonly agentDetail?: string;
140
+ constructor(operation: string, cause: unknown, details: {
141
+ failure: SegmentReadFailureKind;
142
+ httpStatus?: number;
143
+ agentDetail?: string;
144
+ agentMessage?: string;
145
+ });
134
146
  }
135
147
  export declare class SchemaNotCachedError extends WorkflowExecutorError {
136
148
  constructor(collectionName: string);
@@ -206,6 +218,22 @@ export declare class AgentProbeError extends Error {
206
218
  cause?: unknown;
207
219
  });
208
220
  }
221
+ export declare class AutomatedInboxGoneError extends Error {
222
+ readonly inboxId: string;
223
+ readonly operation: string;
224
+ readonly detail?: string;
225
+ constructor(inboxId: string, operation: string, detail?: string);
226
+ }
227
+ export declare class UnreadableAutomatedInboxListingError extends Error {
228
+ readonly cause: z.ZodError;
229
+ constructor(forestServerUrl: string, zodError: z.ZodError);
230
+ }
231
+ export declare class SegmentRecordIdMissingError extends Error {
232
+ constructor(collectionName: string);
233
+ }
234
+ export declare class CompositeRecordIdMismatchError extends Error {
235
+ constructor(recordId: string, expectedParts: number);
236
+ }
209
237
  export declare class UnsupportedStepTypeError extends WorkflowExecutorError {
210
238
  constructor(stepType: string);
211
239
  }
package/dist/errors.js CHANGED
@@ -1,12 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ExecutorEncryptionKeyMissingError = exports.InvalidTokenEndpointError = exports.OAuthInvalidGrantError = exports.OAuthRefreshError = exports.OAuthReauthRequiredError = exports.ConfigurationError = exports.McpToolInvocationError = exports.AiModelPortError = exports.WorkflowPortError = exports.SchemaNotCachedError = exports.AgentPortError = exports.McpToolCallLimitError = exports.McpToolNotFoundError = exports.McpToolsNotAllowedError = exports.NoMcpToolsError = exports.AiAssistUnavailableError = exports.AiInvokeTimeoutError = exports.AiModelUnusableError = 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.WorkflowCallSiteError = exports.WorkflowOperatorError = exports.WorkflowConfigurationError = exports.UnavailableError = exports.AccessDeniedError = exports.NotFoundError = exports.WorkflowExecutorError = void 0;
4
- exports.MalformedRunError = exports.DomainValidationError = exports.HydrationFailedError = exports.InvalidStepDefinitionError = exports.RecordIdSerializationError = exports.UnsupportedStepTypeError = exports.AgentProbeError = exports.SourceRecordStepNotReachedError = exports.SourceRecordCollectionMismatchError = exports.SourceRecordMissingError = exports.InvalidPreRecordedArgsError = exports.InvalidPendingDataError = exports.PendingDataNotFoundError = exports.RunAlreadyInFlightError = exports.UserMismatchError = exports.RunNotFoundError = void 0;
3
+ exports.InvalidTokenEndpointError = exports.OAuthInvalidGrantError = exports.OAuthRefreshError = exports.OAuthReauthRequiredError = exports.ConfigurationError = exports.McpToolInvocationError = exports.AiModelPortError = exports.WorkflowPortError = exports.SchemaNotCachedError = exports.SegmentReadError = exports.AgentPortError = exports.McpToolCallLimitError = exports.McpToolNotFoundError = exports.McpToolsNotAllowedError = exports.NoMcpToolsError = exports.AiAssistUnavailableError = exports.AiInvokeTimeoutError = exports.AiModelUnusableError = 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.WorkflowCallSiteError = exports.WorkflowOperatorError = exports.WorkflowConfigurationError = exports.UnavailableError = exports.AccessDeniedError = exports.NotFoundError = exports.WorkflowExecutorError = void 0;
4
+ exports.MalformedRunError = exports.DomainValidationError = exports.HydrationFailedError = exports.InvalidStepDefinitionError = exports.RecordIdSerializationError = exports.UnsupportedStepTypeError = exports.CompositeRecordIdMismatchError = exports.SegmentRecordIdMissingError = exports.UnreadableAutomatedInboxListingError = exports.AutomatedInboxGoneError = exports.AgentProbeError = exports.SourceRecordStepNotReachedError = exports.SourceRecordCollectionMismatchError = exports.SourceRecordMissingError = exports.InvalidPreRecordedArgsError = exports.InvalidPendingDataError = exports.PendingDataNotFoundError = exports.RunAlreadyInFlightError = exports.UserMismatchError = exports.RunNotFoundError = exports.ExecutorEncryptionKeyMissingError = void 0;
5
5
  exports.causeMessage = causeMessage;
6
6
  exports.extractErrorMessage = extractErrorMessage;
7
7
  exports.isAiConfigurationError = isAiConfigurationError;
8
- exports.flattenAgentMessage = flattenAgentMessage;
9
- const agent_client_1 = require("@forestadmin/agent-client");
10
8
  function causeMessage(error) {
11
9
  const { cause } = (error ?? {});
12
10
  return cause instanceof Error ? cause.message : undefined;
@@ -326,34 +324,26 @@ class McpToolCallLimitError extends WorkflowExecutorError {
326
324
  }
327
325
  }
328
326
  exports.McpToolCallLimitError = McpToolCallLimitError;
329
- const AGENT_ERROR_MESSAGE_MAX_LENGTH = 500;
330
- function isAgentHttpResponse(cause) {
331
- return cause instanceof Error && typeof cause.status === 'number';
332
- }
333
- function flattenAgentMessage(detail) {
334
- const flat = Array.from(detail.slice(0, AGENT_ERROR_MESSAGE_MAX_LENGTH * 4), char => char < ' ' || (char >= '\u007f' && char <= '\u009f') ? ' ' : char)
335
- .join('')
336
- .replace(/\s+/g, ' ')
337
- .trim();
338
- return flat.length > AGENT_ERROR_MESSAGE_MAX_LENGTH
339
- ? `${flat.slice(0, AGENT_ERROR_MESSAGE_MAX_LENGTH)}…`
340
- : flat;
341
- }
342
- function agentErrorMessage(cause) {
343
- if (!isAgentHttpResponse(cause) || cause.status < 500)
344
- return undefined;
345
- const detail = (0, agent_client_1.extractErrorDetail)(cause);
346
- return detail ? flattenAgentMessage(detail) : undefined;
347
- }
348
327
  class AgentPortError extends WorkflowExecutorError {
349
- constructor(operation, cause) {
328
+ constructor(operation, cause, agentMessage) {
350
329
  const causeText = cause instanceof Error ? cause.message : String(cause);
351
- const agentMessage = agentErrorMessage(cause);
352
330
  super(`Agent port "${operation}" failed: ${causeText}${agentMessage ? ` | agent error: ${agentMessage}` : ''}`, 'An error occurred while accessing your data. Please try again.');
353
331
  this.cause = cause;
354
332
  }
355
333
  }
356
334
  exports.AgentPortError = AgentPortError;
335
+ class SegmentReadError extends Error {
336
+ constructor(operation, cause, details) {
337
+ const causeText = cause instanceof Error ? cause.message : String(cause);
338
+ super(`Agent port "${operation}" failed: ${causeText}${details.agentMessage ? ` | agent error: ${details.agentMessage}` : ''}`);
339
+ this.name = 'SegmentReadError';
340
+ this.cause = cause;
341
+ this.failure = details.failure;
342
+ this.httpStatus = details.httpStatus;
343
+ this.agentDetail = details.agentDetail;
344
+ }
345
+ }
346
+ exports.SegmentReadError = SegmentReadError;
357
347
  // Invariant guard: the agent port reads a collection's schema (for its primary keys) from the
358
348
  // cache, which the executor must populate via getCollectionSchema before any record access.
359
349
  class SchemaNotCachedError extends WorkflowExecutorError {
@@ -522,6 +512,46 @@ class AgentProbeError extends Error {
522
512
  }
523
513
  }
524
514
  exports.AgentProbeError = AgentProbeError;
515
+ // Boundary error — the automation poller drops the inbox for this cycle; never reaches a step
516
+ // executor. The server answers 404 both for an inbox that is gone and for one it currently refuses
517
+ // to serve (disabled, or degraded), so the poller must not treat it as permanent: the next config
518
+ // poll is what decides whether the inbox comes back.
519
+ class AutomatedInboxGoneError extends Error {
520
+ constructor(inboxId, operation, detail) {
521
+ super(`Automated inbox "${inboxId}" is no longer served by the orchestrator`);
522
+ this.name = 'AutomatedInboxGoneError';
523
+ this.inboxId = inboxId;
524
+ this.operation = operation;
525
+ this.detail = detail;
526
+ }
527
+ }
528
+ exports.AutomatedInboxGoneError = AutomatedInboxGoneError;
529
+ // Boundary error — the orchestrator broke the listing's wire contract; ends the poll cycle, never
530
+ // reaches a step executor.
531
+ class UnreadableAutomatedInboxListingError extends Error {
532
+ constructor(forestServerUrl, zodError) {
533
+ super(`Unreadable automated inbox listing from ${forestServerUrl}: ${zodError.message}`);
534
+ this.name = 'UnreadableAutomatedInboxListingError';
535
+ this.cause = zodError;
536
+ }
537
+ }
538
+ exports.UnreadableAutomatedInboxListingError = UnreadableAutomatedInboxListingError;
539
+ class SegmentRecordIdMissingError extends Error {
540
+ constructor(collectionName) {
541
+ super(`The agent returned a "${collectionName}" record with no id while reading an automated ` +
542
+ `inbox's segment`);
543
+ this.name = 'SegmentRecordIdMissingError';
544
+ }
545
+ }
546
+ exports.SegmentRecordIdMissingError = SegmentRecordIdMissingError;
547
+ class CompositeRecordIdMismatchError extends Error {
548
+ constructor(recordId, expectedParts) {
549
+ super(`Record id "${recordId}" does not split into the ${expectedParts} primary key parts the ` +
550
+ `collection declares`);
551
+ this.name = 'CompositeRecordIdMismatchError';
552
+ }
553
+ }
554
+ exports.CompositeRecordIdMismatchError = CompositeRecordIdMismatchError;
525
555
  class UnsupportedStepTypeError extends WorkflowExecutorError {
526
556
  constructor(stepType) {
527
557
  super(`Step type "${stepType}" is not supported by the executor`, 'This step type is not yet supported.');
@@ -572,4 +602,4 @@ class MalformedRunError extends WorkflowExecutorError {
572
602
  }
573
603
  }
574
604
  exports.MalformedRunError = MalformedRunError;
575
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2Vycm9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBU0Esb0NBSUM7QUFJRCxrREFZQztBQTRURCx3REFNQztBQW9GRCxrREFXQztBQXZiRCw0REFBK0Q7QUFFL0QsU0FBZ0IsWUFBWSxDQUFDLEtBQWM7SUFDekMsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBd0IsQ0FBQztJQUV2RCxPQUFPLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztBQUM1RCxDQUFDO0FBRUQsZ0dBQWdHO0FBQ2hHLHNHQUFzRztBQUN0RyxTQUFnQixtQkFBbUIsQ0FBQyxHQUFhO0lBQy9DLElBQUksR0FBRyxLQUFLLFNBQVM7UUFBRSxPQUFPLFNBQVMsQ0FBQztJQUN4QyxJQUFJLENBQUMsQ0FBQyxHQUFHLFlBQVksS0FBSyxDQUFDO1FBQUUsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDaEQsSUFBSSxHQUFHLENBQUMsT0FBTztRQUFFLE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQztJQUVwQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsR0FBMkIsQ0FBQztJQUMvQyxJQUFJLE1BQU0sWUFBWSxLQUFLLElBQUksTUFBTSxDQUFDLE9BQU87UUFBRSxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUM7SUFFckUsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLEdBQTBCLENBQUM7SUFDN0MsSUFBSSxLQUFLLFlBQVksS0FBSyxJQUFJLEtBQUssQ0FBQyxPQUFPO1FBQUUsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDO0lBRWxFLE9BQU8sR0FBRyxDQUFDLElBQUksSUFBSSxlQUFlLENBQUM7QUFDckMsQ0FBQztBQUVELE1BQXNCLHFCQUFzQixTQUFRLEtBQUs7SUFZdkQs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
605
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2Vycm9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBTUEsb0NBSUM7QUFJRCxrREFZQztBQTRURCx3REFNQztBQXRWRCxTQUFnQixZQUFZLENBQUMsS0FBYztJQUN6QyxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUF3QixDQUFDO0lBRXZELE9BQU8sS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0FBQzVELENBQUM7QUFFRCxnR0FBZ0c7QUFDaEcsc0dBQXNHO0FBQ3RHLFNBQWdCLG1CQUFtQixDQUFDLEdBQWE7SUFDL0MsSUFBSSxHQUFHLEtBQUssU0FBUztRQUFFLE9BQU8sU0FBUyxDQUFDO0lBQ3hDLElBQUksQ0FBQyxDQUFDLEdBQUcsWUFBWSxLQUFLLENBQUM7UUFBRSxPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNoRCxJQUFJLEdBQUcsQ0FBQyxPQUFPO1FBQUUsT0FBTyxHQUFHLENBQUMsT0FBTyxDQUFDO0lBRXBDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxHQUEyQixDQUFDO0lBQy9DLElBQUksTUFBTSxZQUFZLEtBQUssSUFBSSxNQUFNLENBQUMsT0FBTztRQUFFLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQztJQUVyRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsR0FBMEIsQ0FBQztJQUM3QyxJQUFJLEtBQUssWUFBWSxLQUFLLElBQUksS0FBSyxDQUFDLE9BQU87UUFBRSxPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUM7SUFFbEUsT0FBTyxHQUFHLENBQUMsSUFBSSxJQUFJLGVBQWUsQ0FBQztBQUNyQyxDQUFDO0FBRUQsTUFBc0IscUJBQXNCLFNBQVEsS0FBSztJQVl2RCxZQUFZLE9BQWUsRUFBRSxXQUFvQjtRQUMv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
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const zod_1 = require("zod");
4
- const record_id_serializer_1 = require("../adapters/record-id-serializer");
4
+ const record_id_1 = require("../record-id");
5
5
  // Per-step-type schemas for the userConfirmation payload sent by the front via
6
6
  // POST /runs/:runId/trigger. Validated into `execution.userConfirmation`; schemas
7
7
  // use .strict() to reject unknown fields.
@@ -56,7 +56,7 @@ const loadRelatedRecordPatchSchema = zod_1.z
56
56
  selectedRecordId: zod_1.z
57
57
  .string()
58
58
  .min(1)
59
- .transform(record_id_serializer_1.deserializeRecordId)
59
+ .transform(record_id_1.deserializeRecordId)
60
60
  .pipe(zod_1.z.array(zod_1.z.string().min(1)))
61
61
  .optional(),
62
62
  })
@@ -88,4 +88,4 @@ const patchBodySchemas = {
88
88
  condition: conditionPatchSchema,
89
89
  };
90
90
  exports.default = patchBodySchemas;
91
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVuZGluZy1kYXRhLXZhbGlkYXRvcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaHR0cC9wZW5kaW5nLWRhdGEtdmFsaWRhdG9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDZCQUF3QjtBQUV4QiwyRUFBdUU7QUFFdkUsK0VBQStFO0FBQy9FLGtGQUFrRjtBQUNsRiwwQ0FBMEM7QUFFMUMsTUFBTSx1QkFBdUIsR0FBRyxPQUFDO0tBQzlCLE1BQU0sQ0FBQztJQUNOLGFBQWEsRUFBRSxPQUFDLENBQUMsT0FBTyxFQUFFO0lBQzFCLEtBQUssRUFBRSxPQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxFQUFFO0NBQzlCLENBQUM7S0FDRCxNQUFNLEVBQUUsQ0FBQztBQUVaLE1BQU0sd0JBQXdCLEdBQUcsT0FBQztLQUMvQixNQUFNLENBQUM7SUFDTixhQUFhLEVBQUUsT0FBQyxDQUFDLE9BQU8sRUFBRTtJQUMxQixnRkFBZ0Y7SUFDaEYsZ0ZBQWdGO0lBQ2hGLHNFQUFzRTtJQUN0RSxZQUFZLEVBQUUsT0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUNwQyw0RUFBNEU7SUFDNUUsMkZBQTJGO0lBQzNGLGVBQWUsRUFBRSxPQUFDLENBQUMsTUFBTSxDQUFDLE9BQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxPQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUU7SUFDN0QsOEZBQThGO0lBQzlGLDRGQUE0RjtJQUM1RixpQkFBaUIsRUFBRSxPQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxFQUFFLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUU7SUFDdEUsOEZBQThGO0lBQzlGLGlGQUFpRjtJQUNqRixlQUFlLEVBQUUsT0FBQztTQUNmLE1BQU0sQ0FBQyxFQUFFLEVBQUUsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxF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
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVuZGluZy1kYXRhLXZhbGlkYXRvcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaHR0cC9wZW5kaW5nLWRhdGEtdmFsaWRhdG9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDZCQUF3QjtBQUV4Qiw0Q0FBbUQ7QUFFbkQsK0VBQStFO0FBQy9FLGtGQUFrRjtBQUNsRiwwQ0FBMEM7QUFFMUMsTUFBTSx1QkFBdUIsR0FBRyxPQUFDO0tBQzlCLE1BQU0sQ0FBQztJQUNOLGFBQWEsRUFBRSxPQUFDLENBQUMsT0FBTyxFQUFFO0lBQzFCLEtBQUssRUFBRSxPQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxFQUFFO0NBQzlCLENBQUM7S0FDRCxNQUFNLEVBQUUsQ0FBQztBQUVaLE1BQU0sd0JBQXdCLEdBQUcsT0FBQztLQUMvQixNQUFNLENBQUM7SUFDTixhQUFhLEVBQUUsT0FBQyxDQUFDLE9BQU8sRUFBRTtJQUMxQixnRkFBZ0Y7SUFDaEYsZ0ZBQWdGO0lBQ2hGLHNFQUFzRTtJQUN0RSxZQUFZLEVBQUUsT0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUNwQyw0RUFBNEU7SUFDNUUsMkZBQTJGO0lBQzNGLGVBQWUsRUFBRSxPQUFDLENBQUMsTUFBTSxDQUFDLE9BQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxPQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUU7SUFDN0QsOEZBQThGO0lBQzlGLDRGQUE0RjtJQUM1RixpQkFBaUIsRUFBRSxPQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxFQUFFLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUU7SUFDdEUsOEZBQThGO0lBQzlGLGlGQUFpRjtJQUNqRixlQUFlLEVBQUUsT0FBQztTQUNmLE1BQU0sQ0FBQyxFQUFFLEVBQUUsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxF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