@memberjunction/scheduling-engine 5.40.2 → 5.42.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 (30) hide show
  1. package/README.md +35 -0
  2. package/dist/BaseScheduledJob.d.ts +29 -0
  3. package/dist/BaseScheduledJob.d.ts.map +1 -1
  4. package/dist/BaseScheduledJob.js.map +1 -1
  5. package/dist/ScheduledJobEngine.d.ts +63 -0
  6. package/dist/ScheduledJobEngine.d.ts.map +1 -1
  7. package/dist/ScheduledJobEngine.js +154 -18
  8. package/dist/ScheduledJobEngine.js.map +1 -1
  9. package/dist/drivers/ActionScheduledJobDriver.d.ts.map +1 -1
  10. package/dist/drivers/ActionScheduledJobDriver.js +12 -3
  11. package/dist/drivers/ActionScheduledJobDriver.js.map +1 -1
  12. package/dist/drivers/AgentScheduledJobDriver.d.ts.map +1 -1
  13. package/dist/drivers/AgentScheduledJobDriver.js +9 -2
  14. package/dist/drivers/AgentScheduledJobDriver.js.map +1 -1
  15. package/dist/drivers/IntegrationDiscoveryScheduledJobDriver.d.ts +29 -0
  16. package/dist/drivers/IntegrationDiscoveryScheduledJobDriver.d.ts.map +1 -0
  17. package/dist/drivers/IntegrationDiscoveryScheduledJobDriver.js +136 -0
  18. package/dist/drivers/IntegrationDiscoveryScheduledJobDriver.js.map +1 -0
  19. package/dist/drivers/IntegrationSyncScheduledJobDriver.d.ts.map +1 -1
  20. package/dist/drivers/IntegrationSyncScheduledJobDriver.js +5 -2
  21. package/dist/drivers/IntegrationSyncScheduledJobDriver.js.map +1 -1
  22. package/dist/drivers/RecordProcessScheduledJobDriver.d.ts +20 -0
  23. package/dist/drivers/RecordProcessScheduledJobDriver.d.ts.map +1 -0
  24. package/dist/drivers/RecordProcessScheduledJobDriver.js +81 -0
  25. package/dist/drivers/RecordProcessScheduledJobDriver.js.map +1 -0
  26. package/dist/drivers/index.d.ts +2 -0
  27. package/dist/drivers/index.d.ts.map +1 -1
  28. package/dist/drivers/index.js +2 -0
  29. package/dist/drivers/index.js.map +1 -1
  30. package/package.json +13 -12
package/README.md CHANGED
@@ -202,8 +202,43 @@ With defaults (`MaxConcurrentJobs=5`, lease=10 min), the worst-case starvation i
202
202
 
203
203
  - Raise `MaxConcurrentJobs` so healthy jobs have headroom while zombies hold slots.
204
204
  - Shorten `LeaseTimeoutMs` to accelerate reclaim (subject to the constraint above).
205
+ - **Heartbeat from your plugin** to replace the fixed lease with liveness — see the next section (GH #2749).
205
206
  - Bound `plugin.Execute()` in your job plugins — the structural cure, tracked as a follow-up.
206
207
 
208
+ ### Heartbeat-based lease renewal (#2749)
209
+
210
+ The fixed lease is a blunt instrument: it's an absolute-clock deadline set at acquire time, blind to whether a job is actually making progress. A job that hangs at minute 1 still holds its slot until the lease expires; a healthy long job that legitimately needs longer than the lease gets reclaimed mid-flight.
211
+
212
+ The cure is **liveness**. A running plugin periodically calls `context.heartbeat()` to push its lock's `ExpectedCompletionAt` forward. A job that *stops* beating becomes reclaimable by the existing sweep shortly after its last beat — regardless of absolute clock time. The sweep itself is unchanged; heartbeating simply keeps a healthy job's `ExpectedCompletionAt` ahead of `now`.
213
+
214
+ ```typescript
215
+ async Execute(context: ScheduledJobExecutionContext): Promise<ScheduledJobResult> {
216
+ for (const batch of batches) {
217
+ await this.processBatch(batch);
218
+ // Signal forward progress. Safe to call every iteration — it self-throttles.
219
+ await context.heartbeat?.();
220
+ }
221
+ return { Success: true };
222
+ }
223
+ ```
224
+
225
+ **The contract:**
226
+
227
+ - **Opt-in.** A plugin that never calls `heartbeat()` keeps today's fixed acquire-time lease behavior. Nothing breaks.
228
+ - **Self-throttling.** Call it on every loop iteration / progress tick if you like — an effective DB write happens at most once per ~5 minutes (`HEARTBEAT_INTERVAL_MS`); the rest are cheap no-ops.
229
+ - **Never throws.** It swallows and logs its own errors, so `void context.heartbeat?.()` fire-and-forget is safe. A best-effort renewal must never fault the actual job.
230
+ - **No-op in `Concurrent` mode** — there's no lock to extend.
231
+
232
+ **Why the engine does NOT auto-heartbeat.** It would be tempting to renew the lease automatically at every `await` boundary. We deliberately don't: an auto-beat would keep renewing the lease *while a plugin is wedged in `await something()`* — masking exactly the hang we want to detect. Renewal MUST be driven by the plugin's own forward progress.
233
+
234
+ **Constants & interaction with the sweep.** Each effective beat sets `ExpectedCompletionAt = now + HEARTBEAT_LEASE_MS` (6 min — one minute larger than the 5-min throttle window, so a healthy on-schedule job never lets its lease lapse). The renewal is atomic and token-checked via `spExtendScheduledJobLease`: if another holder has already reclaimed the lease, the beat no-ops (logged as a slot handoff) rather than stomping the fresh holder's lock — the same lost-mutex protection as the release sproc.
235
+
236
+ **Operator footgun.** Heartbeating deliberately *shortens* the effective reclaim window: `HEARTBEAT_LEASE_MS` (6 min) is independent of and smaller than the default 10-min acquire-time lease. That's intended — a tighter reclaim window in exchange for liveness. If you configure a long `LeaseTimeoutMinutes` *and* the job heartbeats, the effective reclaim window collapses to ~6 min. This is not a bug.
237
+
238
+ **When to reach for `MaxRuntimeMinutes` instead.** Heartbeating requires a place to beat from — a loop, a progress callback, a per-step boundary. A job whose work is a *single long-running call* (one slow synchronous action, a long external request) has no such boundary and can't beat mid-flight. For those, set the job's `MaxRuntimeMinutes` column: it bumps the acquire-time lease to `max(default, MaxRuntimeMinutes)` (it only ever *extends* the default, never shrinks it) so the sweep doesn't reclaim the slot before the call can finish.
239
+
240
+ **Built-in driver coverage.** All three shipped drivers opt in: the Agent driver beats per agent step (via `onProgress`), the Integration Sync driver beats per sync batch, and the Action driver beats per parameter prepared plus once right before `RunAction` (a single long action still needs `MaxRuntimeMinutes` — that's the documented caveat above).
241
+
207
242
  ### Leaked promise behavior
208
243
 
209
244
  When the sweep reclaims a hung job's lease:
@@ -12,6 +12,35 @@ export interface ScheduledJobExecutionContext {
12
12
  Schedule: MJScheduledJobEntity;
13
13
  Run: MJScheduledJobRunEntity;
14
14
  ContextUser: UserInfo;
15
+ /**
16
+ * Heartbeat the running job's lease (GH #2749). Calling this signals that
17
+ * the plugin is still making forward progress, pushing the lock's
18
+ * `ExpectedCompletionAt` further into the future so the scheduling engine's
19
+ * sweep does not reclaim this job's concurrency slot.
20
+ *
21
+ * Contract:
22
+ * - **OPT-IN.** A plugin that never calls `heartbeat` falls back to today's
23
+ * fixed acquire-time lease behavior — nothing breaks.
24
+ * - **SELF-THROTTLING.** Safe to call on every loop iteration / progress
25
+ * tick; an effective DB write happens at most once per ~5 minutes
26
+ * regardless of call frequency. Cheap no-op the rest of the time.
27
+ * - **NEVER THROWS.** Swallows and logs its own errors. A best-effort lease
28
+ * renewal must never fault the actual job, so callers can fire-and-forget
29
+ * it (`void context.heartbeat?.()`).
30
+ * - **NO-OP in Concurrent mode.** When the job runs under
31
+ * `ConcurrencyMode='Concurrent'` there is no lock to extend, so this does
32
+ * nothing.
33
+ *
34
+ * The engine ALWAYS supplies this when it runs a job, so inside `Execute`
35
+ * plugins may call `context.heartbeat!()` directly. The `?` only covers
36
+ * `ScheduledJobExecutionContext` literals built by hand (e.g. unit tests).
37
+ *
38
+ * IMPORTANT: renewal MUST be driven by the plugin's own forward progress —
39
+ * the engine deliberately does NOT auto-heartbeat at `await` boundaries,
40
+ * because an auto-beat would keep renewing the lease while a plugin is
41
+ * wedged in `await something()`, masking exactly the hang we want to detect.
42
+ */
43
+ heartbeat?: () => Promise<void>;
15
44
  }
16
45
  /**
17
46
  * Abstract base class for scheduled job implementations
@@ -1 +1 @@
1
- {"version":3,"file":"BaseScheduledJob.d.ts","sourceRoot":"","sources":["../src/BaseScheduledJob.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAkD,gBAAgB,EAAE,QAAQ,EAAY,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC/I,OAAO,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACxH,OAAO,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AAE3H;;GAEG;AACH,MAAM,WAAW,4BAA4B;IACzC,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,GAAG,EAAE,uBAAuB,CAAC;IAC7B,WAAW,EAAE,QAAQ,CAAC;CACzB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,8BAAsB,gBAAgB;IAClC;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,4BAA4B,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAEpF;;;;;;;;OAQG;IACH,QAAQ,CAAC,qBAAqB,CAAC,QAAQ,EAAE,oBAAoB,GAAG,gBAAgB;IAEhF;;;;;;;;;OASG;IACH,QAAQ,CAAC,kBAAkB,CACvB,OAAO,EAAE,4BAA4B,EACrC,MAAM,EAAE,kBAAkB,GAC3B,mBAAmB;IAEtB;;;;;;;;;;;OAWG;IACH,SAAS,CAAC,kBAAkB,CAAC,CAAC,SAAS,yBAAyB,EAC5D,QAAQ,EAAE,oBAAoB,GAC/B,CAAC;IAaJ;;;;;;;OAOG;cACa,UAAU,CACtB,QAAQ,EAAE,oBAAoB,EAC9B,WAAW,EAAE,QAAQ,EACrB,QAAQ,CAAC,EAAE,iBAAiB,GAC7B,OAAO,CAAC,wBAAwB,CAAC;IAOpC;;;;;;OAMG;IACH,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,GAAE,OAAe,GAAG,IAAI;IAQlE;;;;;;OAMG;IACH,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,GAAG,GAAG,IAAI;CAGzD"}
1
+ {"version":3,"file":"BaseScheduledJob.d.ts","sourceRoot":"","sources":["../src/BaseScheduledJob.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAkD,gBAAgB,EAAE,QAAQ,EAAY,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC/I,OAAO,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACxH,OAAO,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AAE3H;;GAEG;AACH,MAAM,WAAW,4BAA4B;IACzC,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,GAAG,EAAE,uBAAuB,CAAC;IAC7B,WAAW,EAAE,QAAQ,CAAC;IAEtB;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACH,SAAS,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACnC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,8BAAsB,gBAAgB;IAClC;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,4BAA4B,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAEpF;;;;;;;;OAQG;IACH,QAAQ,CAAC,qBAAqB,CAAC,QAAQ,EAAE,oBAAoB,GAAG,gBAAgB;IAEhF;;;;;;;;;OASG;IACH,QAAQ,CAAC,kBAAkB,CACvB,OAAO,EAAE,4BAA4B,EACrC,MAAM,EAAE,kBAAkB,GAC3B,mBAAmB;IAEtB;;;;;;;;;;;OAWG;IACH,SAAS,CAAC,kBAAkB,CAAC,CAAC,SAAS,yBAAyB,EAC5D,QAAQ,EAAE,oBAAoB,GAC/B,CAAC;IAaJ;;;;;;;OAOG;cACa,UAAU,CACtB,QAAQ,EAAE,oBAAoB,EAC9B,WAAW,EAAE,QAAQ,EACrB,QAAQ,CAAC,EAAE,iBAAiB,GAC7B,OAAO,CAAC,wBAAwB,CAAC;IAOpC;;;;;;OAMG;IACH,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,GAAE,OAAe,GAAG,IAAI;IAQlE;;;;;;OAMG;IACH,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,GAAG,GAAG,IAAI;CAGzD"}
@@ -1 +1 @@
1
- {"version":3,"file":"BaseScheduledJob.js","sourceRoot":"","sources":["../src/BaseScheduledJob.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,uBAAuB,EAA8B,QAAQ,EAAqB,MAAM,sBAAsB,CAAC;AAa/I;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,MAAM,OAAgB,gBAAgB;IA0ClC;;;;;;;;;;;OAWG;IACO,kBAAkB,CACxB,QAA8B;QAE9B,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;QAC9D,CAAC;QAED,IAAI,CAAC;YACD,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAM,CAAC;QACnD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;YAC9E,MAAM,IAAI,KAAK,CAAC,+BAA+B,YAAY,EAAE,CAAC,CAAC;QACnE,CAAC;IACL,CAAC;IAED;;;;;;;OAOG;IACO,KAAK,CAAC,UAAU,CACtB,QAA8B,EAC9B,WAAqB,EACrB,QAA4B;QAE5B,MAAM,EAAE,GAAG,CAAC,QAAQ,IAAI,IAAI,QAAQ,EAAE,CAAiC,CAAC;QACxE,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,eAAe,CAA2B,yBAAyB,EAAE,WAAW,CAAC,CAAC;QAC3G,MAAM,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QACvC,OAAO,OAAO,CAAC;IACnB,CAAC;IAED;;;;;;OAMG;IACO,GAAG,CAAC,OAAe,EAAE,cAAuB,KAAK;QACvD,WAAW,CAAC;YACR,OAAO,EAAE,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,KAAK,OAAO,EAAE;YAChD,WAAW;YACX,gBAAgB,EAAE,GAAG,EAAE,CAAC,uBAAuB,EAAE;SACpD,CAAC,CAAC;IACP,CAAC;IAED;;;;;;OAMG;IACO,QAAQ,CAAC,OAAe,EAAE,KAAW;QAC3C,QAAQ,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,KAAK,OAAO,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;IACxE,CAAC;CACJ"}
1
+ {"version":3,"file":"BaseScheduledJob.js","sourceRoot":"","sources":["../src/BaseScheduledJob.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,uBAAuB,EAA8B,QAAQ,EAAqB,MAAM,sBAAsB,CAAC;AA2C/I;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,MAAM,OAAgB,gBAAgB;IA0ClC;;;;;;;;;;;OAWG;IACO,kBAAkB,CACxB,QAA8B;QAE9B,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;QAC9D,CAAC;QAED,IAAI,CAAC;YACD,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAM,CAAC;QACnD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;YAC9E,MAAM,IAAI,KAAK,CAAC,+BAA+B,YAAY,EAAE,CAAC,CAAC;QACnE,CAAC;IACL,CAAC;IAED;;;;;;;OAOG;IACO,KAAK,CAAC,UAAU,CACtB,QAA8B,EAC9B,WAAqB,EACrB,QAA4B;QAE5B,MAAM,EAAE,GAAG,CAAC,QAAQ,IAAI,IAAI,QAAQ,EAAE,CAAiC,CAAC;QACxE,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,eAAe,CAA2B,yBAAyB,EAAE,WAAW,CAAC,CAAC;QAC3G,MAAM,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QACvC,OAAO,OAAO,CAAC;IACnB,CAAC;IAED;;;;;;OAMG;IACO,GAAG,CAAC,OAAe,EAAE,cAAuB,KAAK;QACvD,WAAW,CAAC;YACR,OAAO,EAAE,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,KAAK,OAAO,EAAE;YAChD,WAAW;YACX,gBAAgB,EAAE,GAAG,EAAE,CAAC,uBAAuB,EAAE;SACpD,CAAC,CAAC;IACP,CAAC;IAED;;;;;;OAMG;IACO,QAAQ,CAAC,OAAe,EAAE,KAAW;QAC3C,QAAQ,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,KAAK,OAAO,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;IACxE,CAAC;CACJ"}
@@ -44,6 +44,26 @@ export declare class SchedulingEngine extends BaseSingleton<SchedulingEngine> {
44
44
  private highFrequencyWarnedJobIds;
45
45
  /** Threshold (ms) below which a job's run frequency triggers a console warning. */
46
46
  private static readonly HIGH_FREQUENCY_WARNING_THRESHOLD_MS;
47
+ /**
48
+ * Heartbeat throttle window. A `context.heartbeat()` call is a no-op until
49
+ * this much wall-clock has elapsed since the last EFFECTIVE beat, so a
50
+ * driver can call it on every loop iteration without hammering the DB.
51
+ */
52
+ private static readonly HEARTBEAT_INTERVAL_MS;
53
+ /**
54
+ * Lease length applied on each effective beat (`now + this`). One minute
55
+ * larger than HEARTBEAT_INTERVAL_MS so a healthy on-schedule job never lets
56
+ * its lease lapse, while a job that STOPS beating is reclaimable ~1 min
57
+ * after the window it missed.
58
+ *
59
+ * Deliberately INDEPENDENT of `_leaseTimeoutMs`: heartbeating intentionally
60
+ * SHORTENS the effective reclaim window (6 min vs. the default 10 min
61
+ * acquire-time lease). That trade — a tighter reclaim window in exchange for
62
+ * plugin-driven liveness — is the entire point of #2749. Coverage is
63
+ * continuous: the 10-min initial lease comfortably outlasts the 5-min wait
64
+ * to the first effective beat, which extends the lease to ~11 min, etc.
65
+ */
66
+ private static readonly HEARTBEAT_LEASE_MS;
47
67
  /**
48
68
  * Maximum concurrent scheduled jobs on this engine instance. Default 5.
49
69
  * Configurable via MJServer's `scheduledJobs.maxConcurrentJobs` config.
@@ -329,6 +349,9 @@ export declare class SchedulingEngine extends BaseSingleton<SchedulingEngine> {
329
349
  * Operates only on lock columns; never mutates the shared entity in
330
350
  * this.ScheduledJobs. Caller passes jobId (string), not the entity object.
331
351
  *
352
+ * @param maxRuntimeMinutes - Optional per-job lease override (GH #2749). When
353
+ * set and positive, the initial lease is max(default, override) — so
354
+ * it only ever EXTENDS the acquire-time lease, never shrinks it.
332
355
  * @returns { acquired: true, token } on success; { acquired: false } otherwise.
333
356
  * @private
334
357
  */
@@ -345,6 +368,40 @@ export declare class SchedulingEngine extends BaseSingleton<SchedulingEngine> {
345
368
  * @private
346
369
  */
347
370
  private releaseLockIfTokenMatches;
371
+ /**
372
+ * Atomically extend (renew) a lock's lease via spExtendScheduledJobLease,
373
+ * IF AND ONLY IF the current DB token still matches expectedToken. This is
374
+ * the heartbeat primitive (GH #2749): a healthy job pushes its
375
+ * ExpectedCompletionAt forward so the sweep doesn't reclaim its slot.
376
+ *
377
+ * Token-checked like releaseLockIfTokenMatches — a stale holder whose lease
378
+ * was already reclaimed by a fresh holder must NOT be able to renew the
379
+ * fresh holder's lock (lost-mutex protection).
380
+ *
381
+ * @returns true if the lease was extended, false on token mismatch /
382
+ * already released.
383
+ * @private
384
+ */
385
+ private extendLeaseIfTokenMatches;
386
+ /**
387
+ * Build the per-execution heartbeat closure handed to a plugin via
388
+ * `context.heartbeat` (GH #2749). See the TSDoc on
389
+ * `ScheduledJobExecutionContext.heartbeat` for the plugin-facing contract.
390
+ *
391
+ * The returned function is:
392
+ * - **No-op in Concurrent mode** — when lockToken is null there's no lock
393
+ * to extend.
394
+ * - **Self-throttling** — an effective beat (DB write) happens at most once
395
+ * per HEARTBEAT_INTERVAL_MS regardless of call frequency. lastHeartbeatMs
396
+ * is closed over and seeded to "now" so the first effective beat waits a
397
+ * full interval (the initial acquire-time lease already covers that gap).
398
+ * - **Best-effort, never-throws** — any error (token mismatch logged as a
399
+ * handoff; a thrown ExecuteSQL) is swallowed + logged. A renewal failure
400
+ * must never fault the actual job.
401
+ *
402
+ * @private
403
+ */
404
+ private createHeartbeat;
348
405
  /**
349
406
  * Pre-flight: verify EXECUTE permission on lock sprocs. Fails LOUDLY at boot
350
407
  * if the engine's DB principal lacks grants — much better than a silent
@@ -438,6 +495,12 @@ export declare class SchedulingEngine extends BaseSingleton<SchedulingEngine> {
438
495
  * @private
439
496
  */
440
497
  private cleanupStaleLocks;
498
+ /**
499
+ * Engine chatter (polling start/stop, lock-sproc checks, config changes, lock queueing). Verbose-only
500
+ * so it stays out of the default startup/run log — it honors the GLOBAL verbose flag (set from the
501
+ * server's configured level). Actual job RUNS (▶️ start / ✅ complete) use console.log and always show;
502
+ * failures go through logError and always show.
503
+ */
441
504
  private log;
442
505
  private logError;
443
506
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ScheduledJobEngine.d.ts","sourceRoot":"","sources":["../src/ScheduledJobEngine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ScheduledJobEngine.d.ts","sourceRoot":"","sources":["../src/ScheduledJobEngine.ts"],"names":[],"mappings":"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"}
@@ -101,6 +101,30 @@ export class SchedulingEngine extends BaseSingleton {
101
101
  /** Threshold (ms) below which a job's run frequency triggers a console warning. */
102
102
  static { this.HIGH_FREQUENCY_WARNING_THRESHOLD_MS = 5 * 60 * 1000; }
103
103
  // ========================================================================
104
+ // HEARTBEAT LEASE RENEWAL (added in v5.39 — see
105
+ // plans/scheduled-job-engine-heartbeat-lease.md, GH #2749)
106
+ // ========================================================================
107
+ /**
108
+ * Heartbeat throttle window. A `context.heartbeat()` call is a no-op until
109
+ * this much wall-clock has elapsed since the last EFFECTIVE beat, so a
110
+ * driver can call it on every loop iteration without hammering the DB.
111
+ */
112
+ static { this.HEARTBEAT_INTERVAL_MS = 5 * 60 * 1000; }
113
+ /**
114
+ * Lease length applied on each effective beat (`now + this`). One minute
115
+ * larger than HEARTBEAT_INTERVAL_MS so a healthy on-schedule job never lets
116
+ * its lease lapse, while a job that STOPS beating is reclaimable ~1 min
117
+ * after the window it missed.
118
+ *
119
+ * Deliberately INDEPENDENT of `_leaseTimeoutMs`: heartbeating intentionally
120
+ * SHORTENS the effective reclaim window (6 min vs. the default 10 min
121
+ * acquire-time lease). That trade — a tighter reclaim window in exchange for
122
+ * plugin-driven liveness — is the entire point of #2749. Coverage is
123
+ * continuous: the 10-min initial lease comfortably outlasts the 5-min wait
124
+ * to the first effective beat, which extends the lease to ~11 min, etc.
125
+ */
126
+ static { this.HEARTBEAT_LEASE_MS = 6 * 60 * 1000; }
127
+ // ========================================================================
104
128
  // DELEGATED METADATA PROPERTIES AND METHODS
105
129
  // ========================================================================
106
130
  /** Gets all scheduled job types. */
@@ -132,7 +156,11 @@ export class SchedulingEngine extends BaseSingleton {
132
156
  }
133
157
  const old = this._maxConcurrentJobs;
134
158
  this._maxConcurrentJobs = value;
135
- this.log(`MaxConcurrentJobs changed from ${old} to ${value}`);
159
+ // Only log a genuine change — a no-op set (old === new, e.g. applying the
160
+ // schema default at startup) logs nothing.
161
+ if (old !== value) {
162
+ this.log(`MaxConcurrentJobs changed from ${old} to ${value}`);
163
+ }
136
164
  }
137
165
  /**
138
166
  * Lock lease duration in milliseconds. Default 600000 (10 minutes).
@@ -148,7 +176,10 @@ export class SchedulingEngine extends BaseSingleton {
148
176
  }
149
177
  const old = this._leaseTimeoutMs;
150
178
  this._leaseTimeoutMs = value;
151
- this.log(`LeaseTimeoutMs changed from ${old} to ${value}`);
179
+ // Only log a genuine change — a no-op set (old === new) logs nothing.
180
+ if (old !== value) {
181
+ this.log(`LeaseTimeoutMs changed from ${old} to ${value}`);
182
+ }
152
183
  }
153
184
  /**
154
185
  * Convenience accessor — lease duration as integer minutes. Production
@@ -249,9 +280,14 @@ export class SchedulingEngine extends BaseSingleton {
249
280
  try {
250
281
  const result = await this.DispatchScheduledJobs(contextUser);
251
282
  if (result.swept > 0 || result.dispatched > 0 || result.lockedOut > 0 || result.skippedAtCapacity > 0) {
252
- console.log(`📅 Scheduled Jobs: swept=${result.swept}, dispatched=${result.dispatched}, ` +
253
- `lockedOut=${result.lockedOut}, skippedAtCapacity=${result.skippedAtCapacity}, ` +
254
- `inflight=${this.inflightJobPromises.size}/${this.MaxConcurrentJobs}`);
283
+ // Per-tick dispatch bookkeeping — verbose-only. The actual job runs are shown by the
284
+ // always-on ▶️ Starting / ✅ Completed lines; this batch summary is just internal detail.
285
+ LogStatusEx({
286
+ message: `📅 Scheduled Jobs: swept=${result.swept}, dispatched=${result.dispatched}, ` +
287
+ `lockedOut=${result.lockedOut}, skippedAtCapacity=${result.skippedAtCapacity}, ` +
288
+ `inflight=${this.inflightJobPromises.size}/${this.MaxConcurrentJobs}`,
289
+ verboseOnly: true,
290
+ });
255
291
  }
256
292
  }
257
293
  catch (error) {
@@ -441,7 +477,7 @@ export class SchedulingEngine extends BaseSingleton {
441
477
  if (this.isJobDue(job, evalTime)) {
442
478
  console.log(` ✓ Job is due, attempting to acquire lock...`);
443
479
  try {
444
- const lockResult = await this.tryAcquireLock(job.ID);
480
+ const lockResult = await this.tryAcquireLock(job.ID, job.MaxRuntimeMinutes);
445
481
  if (!lockResult.acquired) {
446
482
  if (job.ConcurrencyMode === 'Queue') {
447
483
  this.log(`Job ${job.Name} is locked, queueing (ConcurrencyMode=Queue)`);
@@ -491,7 +527,7 @@ export class SchedulingEngine extends BaseSingleton {
491
527
  if (!job) {
492
528
  throw new Error(`Scheduled job ${jobId} not found or not active`);
493
529
  }
494
- const lockResult = await this.tryAcquireLock(job.ID);
530
+ const lockResult = await this.tryAcquireLock(job.ID, job.MaxRuntimeMinutes);
495
531
  if (!lockResult.acquired) {
496
532
  throw new Error(`Could not acquire lock for job ${jobId} — held by another holder`);
497
533
  }
@@ -549,7 +585,7 @@ export class SchedulingEngine extends BaseSingleton {
549
585
  skippedAtCapacity++;
550
586
  continue;
551
587
  }
552
- const lockResult = await this.tryAcquireLock(job.ID);
588
+ const lockResult = await this.tryAcquireLock(job.ID, job.MaxRuntimeMinutes);
553
589
  if (!lockResult.acquired) {
554
590
  if (job.ConcurrencyMode === 'Queue') {
555
591
  await this.createQueuedJobRun(job, contextUser);
@@ -645,11 +681,18 @@ export class SchedulingEngine extends BaseSingleton {
645
681
  }
646
682
  // Console log job start
647
683
  console.log(` ▶️ Starting: ${job.Name}`);
684
+ // Build the opt-in, self-throttling heartbeat closure (GH #2749).
685
+ // Captures lockToken and a per-execution lastHeartbeatMs. A plugin
686
+ // that makes forward progress calls context.heartbeat() to push its
687
+ // lease forward; a hung plugin stops beating and the existing sweep
688
+ // reclaims its slot. See plans/scheduled-job-engine-heartbeat-lease.md.
689
+ const heartbeat = this.createHeartbeat(job.ID, lockToken);
648
690
  // Build execution context
649
691
  const context = {
650
692
  Schedule: job,
651
693
  Run: run,
652
- ContextUser: contextUser
694
+ ContextUser: contextUser,
695
+ heartbeat
653
696
  };
654
697
  // Execute the job via plugin
655
698
  const result = await plugin.Execute(context);
@@ -839,16 +882,25 @@ export class SchedulingEngine extends BaseSingleton {
839
882
  * Operates only on lock columns; never mutates the shared entity in
840
883
  * this.ScheduledJobs. Caller passes jobId (string), not the entity object.
841
884
  *
885
+ * @param maxRuntimeMinutes - Optional per-job lease override (GH #2749). When
886
+ * set and positive, the initial lease is max(default, override) — so
887
+ * it only ever EXTENDS the acquire-time lease, never shrinks it.
842
888
  * @returns { acquired: true, token } on success; { acquired: false } otherwise.
843
889
  * @private
844
890
  */
845
- async tryAcquireLock(jobId) {
891
+ async tryAcquireLock(jobId, maxRuntimeMinutes) {
846
892
  // uuidv4 (cryptographic) — Math.random()-based GUIDs would risk collision
847
893
  // between concurrent engine instances and break the lost-mutex protection
848
894
  // that releaseLockIfTokenMatches relies on (token identity = execution identity).
849
895
  const token = uuidv4();
850
896
  const instance = this.getInstanceIdentifier();
851
- const expectedCompletion = new Date(Date.now() + this._leaseTimeoutMs);
897
+ // MaxRuntimeMinutes only EXTENDS the default lease, never shrinks it —
898
+ // a per-job override below the default would just weaken protection.
899
+ const overrideMs = maxRuntimeMinutes != null && maxRuntimeMinutes > 0
900
+ ? maxRuntimeMinutes * 60_000
901
+ : 0;
902
+ const leaseMs = Math.max(this._leaseTimeoutMs, overrideMs);
903
+ const expectedCompletion = new Date(Date.now() + leaseMs);
852
904
  const provider = this.Base.ProviderToUse;
853
905
  // MJ pattern: positional parameter array. The placeholder + call-wrapper
854
906
  // syntax differs per platform — SQL Server binds the sproc's params by
@@ -884,6 +936,79 @@ export class SchedulingEngine extends BaseSingleton {
884
936
  }
885
937
  return released;
886
938
  }
939
+ /**
940
+ * Atomically extend (renew) a lock's lease via spExtendScheduledJobLease,
941
+ * IF AND ONLY IF the current DB token still matches expectedToken. This is
942
+ * the heartbeat primitive (GH #2749): a healthy job pushes its
943
+ * ExpectedCompletionAt forward so the sweep doesn't reclaim its slot.
944
+ *
945
+ * Token-checked like releaseLockIfTokenMatches — a stale holder whose lease
946
+ * was already reclaimed by a fresh holder must NOT be able to renew the
947
+ * fresh holder's lock (lost-mutex protection).
948
+ *
949
+ * @returns true if the lease was extended, false on token mismatch /
950
+ * already released.
951
+ * @private
952
+ */
953
+ async extendLeaseIfTokenMatches(jobId, expectedToken, newExpectedCompletionAt) {
954
+ const provider = this.Base.ProviderToUse;
955
+ // MJ pattern: positional parameter array. buildLockSprocCall picks the
956
+ // dialect-correct call wrapper (EXEC on SQL Server, SELECT * FROM fn() on
957
+ // PostgreSQL) — the previous hardcoded `EXEC [schema].[…]` form crashed on
958
+ // PG. The SAME value array serves both. See tryAcquireLock for rationale.
959
+ const rows = await provider.ExecuteSQL(this.buildLockSprocCall(provider, 'spExtendScheduledJobLease', ['JobID', 'ExpectedToken', 'NewExpectedCompletionAt']), [jobId, expectedToken, newExpectedCompletionAt], { isMutation: true, description: 'spExtendScheduledJobLease' }, this.Base.ContextUser);
960
+ return rows?.[0]?.Extended === 1;
961
+ }
962
+ /**
963
+ * Build the per-execution heartbeat closure handed to a plugin via
964
+ * `context.heartbeat` (GH #2749). See the TSDoc on
965
+ * `ScheduledJobExecutionContext.heartbeat` for the plugin-facing contract.
966
+ *
967
+ * The returned function is:
968
+ * - **No-op in Concurrent mode** — when lockToken is null there's no lock
969
+ * to extend.
970
+ * - **Self-throttling** — an effective beat (DB write) happens at most once
971
+ * per HEARTBEAT_INTERVAL_MS regardless of call frequency. lastHeartbeatMs
972
+ * is closed over and seeded to "now" so the first effective beat waits a
973
+ * full interval (the initial acquire-time lease already covers that gap).
974
+ * - **Best-effort, never-throws** — any error (token mismatch logged as a
975
+ * handoff; a thrown ExecuteSQL) is swallowed + logged. A renewal failure
976
+ * must never fault the actual job.
977
+ *
978
+ * @private
979
+ */
980
+ createHeartbeat(jobId, lockToken) {
981
+ // Concurrent mode (no lock): hand back a cheap no-op so plugins can call
982
+ // context.heartbeat() unconditionally without special-casing.
983
+ if (!lockToken) {
984
+ return async () => { };
985
+ }
986
+ let lastHeartbeatMs = Date.now();
987
+ return async () => {
988
+ try {
989
+ const now = Date.now();
990
+ if (now - lastHeartbeatMs < SchedulingEngine.HEARTBEAT_INTERVAL_MS) {
991
+ return; // throttled — not yet time for an effective beat
992
+ }
993
+ lastHeartbeatMs = now;
994
+ const newExpected = new Date(now + SchedulingEngine.HEARTBEAT_LEASE_MS);
995
+ const extended = await this.extendLeaseIfTokenMatches(jobId, lockToken, newExpected);
996
+ if (!extended) {
997
+ // Token mismatch — our lease was reclaimed and the slot handed
998
+ // off. The plugin keeps running (we can't abort it here), but
999
+ // its concurrency slot now belongs to another holder; the
1000
+ // end-of-run release will likewise no-op. Don't throw.
1001
+ this.log(`[heartbeat] Lease for job ${jobId.substring(0, 8)} was NOT extended ` +
1002
+ `(token mismatch — slot reclaimed by another holder). Plugin continues ` +
1003
+ `but its slot has been handed off.`);
1004
+ }
1005
+ }
1006
+ catch (error) {
1007
+ // Best-effort renewal must never fault the job.
1008
+ this.logError(`[heartbeat] Lease renewal failed for job ${jobId.substring(0, 8)} (non-fatal)`, error);
1009
+ }
1010
+ };
1011
+ }
887
1012
  /**
888
1013
  * Pre-flight: verify EXECUTE permission on lock sprocs. Fails LOUDLY at boot
889
1014
  * if the engine's DB principal lacks grants — much better than a silent
@@ -963,6 +1088,10 @@ export class SchedulingEngine extends BaseSingleton {
963
1088
  ExtraFilter: `ID IN (${idList}) AND (LockToken IS NULL OR ExpectedCompletionAt IS NULL OR ExpectedCompletionAt < '${nowIso}')`,
964
1089
  Fields: ['ID', 'Name', 'ExpectedCompletionAt'],
965
1090
  ResultType: 'simple',
1091
+ // Deliberately a fresh, narrowly-filtered read of LIVE lock/lease state — the cached
1092
+ // SchedulingEngineBase copy would be stale (and possibly cross-process stale). Exempt it
1093
+ // from the "Entity Already in Engine" optimization analyzer rather than have it flagged.
1094
+ Telemetry: { Exempt: true, Reason: 'Live lock-state read for hung-job sweep; engine cache would be stale' },
966
1095
  }, contextUser);
967
1096
  if (!result.Success || result.Results.length === 0)
968
1097
  return 0;
@@ -1107,7 +1236,6 @@ export class SchedulingEngine extends BaseSingleton {
1107
1236
  */
1108
1237
  async cleanupStaleLocks(_contextUser) {
1109
1238
  const now = new Date();
1110
- console.log(` 🔍 Checking for stale locks (current time: ${now.toISOString()})...`);
1111
1239
  // Use the engine's already-loaded cache instead of round-tripping to
1112
1240
  // the DB — this method runs in StartPolling's upfront block, IMMEDIATELY
1113
1241
  // after Config() loads this.Base.ScheduledJobs, so the cached lock-column
@@ -1120,8 +1248,11 @@ export class SchedulingEngine extends BaseSingleton {
1120
1248
  // cache's lock columns are stale (atomic sprocs bypass the entity cache).
1121
1249
  const stale = this.Base.ScheduledJobs.filter(job => job.LockToken != null &&
1122
1250
  (job.ExpectedCompletionAt == null || job.ExpectedCompletionAt < now));
1251
+ // "None found" is the common, uninteresting case — stay silent (the
1252
+ // "Checking…/No stale locks found" chatter was the noise). Only stale
1253
+ // locks that are actually FOUND/cleared are genuinely actionable and
1254
+ // are logged below.
1123
1255
  if (stale.length === 0) {
1124
- console.log(` ✓ No stale locks found`);
1125
1256
  return;
1126
1257
  }
1127
1258
  let cleanedCount = 0;
@@ -1133,25 +1264,30 @@ export class SchedulingEngine extends BaseSingleton {
1133
1264
  const lockResult = await this.tryAcquireLock(job.ID);
1134
1265
  if (lockResult.acquired) {
1135
1266
  await this.releaseLockIfTokenMatches(job.ID, lockResult.token);
1136
- console.log(` 🔓 Cleared stale lock on "${job.Name}" (was held by ${job.LockedByInstance})`);
1267
+ this.log(`Cleared stale lock on "${job.Name}" (was held by ${job.LockedByInstance})`);
1137
1268
  cleanedCount++;
1138
1269
  }
1139
1270
  else {
1140
1271
  // Another instance acquired between our cache load and acquire.
1141
- console.log(` ℹ️ Stale lock on "${job.Name}" was cleared by another holder`);
1272
+ this.log(`Stale lock on "${job.Name}" was cleared by another holder`);
1142
1273
  }
1143
1274
  }
1144
1275
  catch (error) {
1145
1276
  this.logError(`Failed to clean stale lock for job ${job.Name}`, error);
1146
1277
  }
1147
1278
  }
1148
- console.log(` ✅ Cleaned ${cleanedCount} stale lock(s)`);
1279
+ this.log(`Cleaned ${cleanedCount} stale lock(s)`);
1149
1280
  }
1281
+ /**
1282
+ * Engine chatter (polling start/stop, lock-sproc checks, config changes, lock queueing). Verbose-only
1283
+ * so it stays out of the default startup/run log — it honors the GLOBAL verbose flag (set from the
1284
+ * server's configured level). Actual job RUNS (▶️ start / ✅ complete) use console.log and always show;
1285
+ * failures go through logError and always show.
1286
+ */
1150
1287
  log(message) {
1151
1288
  LogStatusEx({
1152
1289
  message: `[ScheduledJobEngine] ${message}`,
1153
- verboseOnly: false,
1154
- isVerboseEnabled: () => false
1290
+ verboseOnly: true,
1155
1291
  });
1156
1292
  }
1157
1293
  logError(message, error) {
@@ -1 +1 @@
1
- {"version":3,"file":"ScheduledJobEngine.js","sourceRoot":"","sources":["../src/ScheduledJobEngine.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,EAEH,QAAQ,EAER,QAAQ,EACR,WAAW,EAEX,iBAAiB,EACjB,OAAO,EAEV,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAE7E,OAAO,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAC9E,OAAO,EAAE,gBAAgB,EAAgC,MAAM,oBAAoB,CAAC;AACpF,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,OAAO,gBAAiB,SAAQ,aAA+B;IAArE;;QAgBY,cAAS,GAAY,KAAK,CAAC;QAC3B,mBAAc,GAAY,KAAK,CAAC;QAExC,4EAA4E;QACpE,8BAAyB,GAAgB,IAAI,GAAG,EAAE,CAAC;QAK3D,2EAA2E;QAC3E,mFAAmF;QACnF,2EAA2E;QAE3E;;;;;;;WAOG;QACK,uBAAkB,GAAW,CAAC,CAAC;QAEvC;;;;;;;;;;WAUG;QACK,oBAAe,GAAW,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;QAEjD;;;;;;;;;;;;;;WAcG;QACK,wBAAmB,GAAyD,IAAI,GAAG,EAAE,CAAC;QAE9F;;;;WAIG;QACK,wBAAmB,GAAY,IAAI,CAAC;IA2uChD,CAAC;IApzCG;;OAEG;IACI,MAAM,KAAK,QAAQ;QACtB,OAAO,KAAK,CAAC,WAAW,EAAoB,CAAC;IACjD,CAAC;IAED;;OAEG;IACH,IAAc,IAAI;QACd,OAAO,oBAAoB,CAAC,QAAQ,CAAC;IACzC,CAAC;IASD,mFAAmF;aAC3D,wCAAmC,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,AAAhB,CAAiB;IAqD5E,2EAA2E;IAC3E,4CAA4C;IAC5C,2EAA2E;IAE3E,oCAAoC;IACpC,IAAW,iBAAiB;QACxB,OAAO,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC;IACvC,CAAC;IAED,oDAAoD;IACpD,IAAW,aAAa;QACpB,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;IACnC,CAAC;IAED,sCAAsC;IACtC,IAAW,gBAAgB;QACvB,OAAO,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC;IACtC,CAAC;IAED,gEAAgE;IAChE,IAAW,qBAAqB;QAC5B,OAAO,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC;IAC3C,CAAC;IAED;;;OAGG;IACH,IAAW,iBAAiB;QACxB,OAAO,IAAI,CAAC,kBAAkB,CAAC;IACnC,CAAC;IACD,IAAW,iBAAiB,CAAC,KAAa;QACtC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CAAC,qDAAqD,KAAK,EAAE,CAAC,CAAC;QAClF,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,CAAC,kBAAkB,CAAC;QACpC,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;QAChC,IAAI,CAAC,GAAG,CAAC,kCAAkC,GAAG,OAAO,KAAK,EAAE,CAAC,CAAC;IAClE,CAAC;IAED;;;;OAIG;IACH,IAAW,cAAc;QACrB,OAAO,IAAI,CAAC,eAAe,CAAC;IAChC,CAAC;IACD,IAAW,cAAc,CAAC,KAAa;QACnC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CAAC,iDAAiD,KAAK,EAAE,CAAC,CAAC;QAC9E,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC;QACjC,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAC7B,IAAI,CAAC,GAAG,CAAC,+BAA+B,GAAG,OAAO,KAAK,EAAE,CAAC,CAAC;IAC/D,CAAC;IAED;;;;;OAKG;IACH,IAAW,mBAAmB;QAC1B,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,CAAC;IACrD,CAAC;IACD,IAAW,mBAAmB,CAAC,KAAa;QACxC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CAAC,uDAAuD,KAAK,EAAE,CAAC,CAAC;QACpF,CAAC;QACD,IAAI,CAAC,cAAc,GAAG,KAAK,GAAG,EAAE,GAAG,IAAI,CAAC;IAC5C,CAAC;IAED,+BAA+B;IACxB,gBAAgB,CAAC,IAAY;QAChC,OAAO,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC;IAED,uCAAuC;IAChC,uBAAuB,CAAC,WAAmB;QAC9C,OAAO,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC;IAC1D,CAAC;IAED,uCAAuC;IAChC,aAAa,CAAC,SAAiB;QAClC,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;IAC9C,CAAC;IAED,mCAAmC;IAC5B,aAAa,CAAC,KAAa;QAC9B,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC1C,CAAC;IAED,wDAAwD;IACjD,qBAAqB;QACxB,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC;IACtC,CAAC;IAED,2EAA2E;IAC3E,SAAS;IACT,2EAA2E;IAE3E;;;OAGG;IACI,KAAK,CAAC,MAAM,CACf,YAAsB,EACtB,WAAsB,EACtB,QAA4B,EAC5B,cAAuB,KAAK,EAC5B,iBAA0B,KAAK;QAE/B,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,cAAc,CAAC,CAAC;IAC9F,CAAC;IAED,2EAA2E;IAC3E,oBAAoB;IACpB,2EAA2E;IAE3E;;;;;;;;;;;;;OAaG;IACI,KAAK,CAAC,YAAY,CAAC,WAAqB;QAC3C,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,IAAI,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;YACpC,OAAO;QACX,CAAC;QAED,kDAAkD;QAClD,iEAAiE;QACjE,iEAAiE;QACjE,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QACtC,MAAM,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC,CAAC;QAC/C,MAAM,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;QAC1C,MAAM,IAAI,CAAC,yBAAyB,EAAE,CAAC;QAEvC,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAClC,OAAO,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAC;YAC5E,OAAO;QACX,CAAC;QAED,IAAI,CAAC,0BAA0B,EAAE,CAAC;QAElC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;QAChC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAE3B,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE;YACpB,mEAAmE;YACnE,kDAAkD;YAClD,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,MAAM,QAAQ,GAAG,IAAI,CAAC,qBAAqB,CAAC;gBAC5C,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;oBACpB,OAAO,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC;oBACrE,2DAA2D;oBAC3D,sCAAsC;oBACtC,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,0BAA0B,EAAE,GAAG,CAAC,CAAC,CAAC;oBAChF,OAAO;gBACX,CAAC;gBACD,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YACnD,CAAC;YAED,IAAI,CAAC;gBACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC,CAAC;gBAC7D,IAAI,MAAM,CAAC,KAAK,GAAG,CAAC,IAAI,MAAM,CAAC,UAAU,GAAG,CAAC,IAAI,MAAM,CAAC,SAAS,GAAG,CAAC,IAAI,MAAM,CAAC,iBAAiB,GAAG,CAAC,EAAE,CAAC;oBACpG,OAAO,CAAC,GAAG,CACP,4BAA4B,MAAM,CAAC,KAAK,gBAAgB,MAAM,CAAC,UAAU,IAAI;wBAC7E,aAAa,MAAM,CAAC,SAAS,uBAAuB,MAAM,CAAC,iBAAiB,IAAI;wBAChF,YAAY,IAAI,CAAC,mBAAmB,CAAC,IAAI,IAAI,IAAI,CAAC,iBAAiB,EAAE,CACxE,CAAC;gBACN,CAAC;YACL,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,IAAI,CAAC,QAAQ,CAAC,oCAAoC,EAAE,KAAK,CAAC,CAAC;gBAC3D,+DAA+D;gBAC/D,uDAAuD;YAC3D,CAAC;QACL,CAAC,CAAC;QAEF,sEAAsE;QACtE,+DAA+D;QAC/D,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,qBAAqB,IAAI,MAAM,CAAC,CAAC;QAC3E,IAAI,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;IAC9C,CAAC;IAED;;;;;;;;;;;;OAYG;IACI,KAAK,CAAC,WAAW,CAAC,IAAwD;QAC7E,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE,OAAO;QAE5B,oEAAoE;QACpE,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;QACjC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QAEvB,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAChC,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;QAClC,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;QAE1C,IAAI,IAAI,EAAE,eAAe,IAAI,IAAI,CAAC,mBAAmB,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YAC7D,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,CAAC,CAAC;YACxD,IAAI,CAAC,GAAG,CAAC,eAAe,QAAQ,CAAC,MAAM,gCAAgC,CAAC,CAAC;YACzE,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,MAAM,OAAO,CAAC,IAAI,CAAC;oBACf,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC;oBAC5B,IAAI,OAAO,CAAO,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;iBACpE,CAAC,CAAC;YACP,CAAC;iBAAM,CAAC;gBACJ,MAAM,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YACvC,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;QACvC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,IAAW,SAAS;QAChB,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;IAED;;;;;;;OAOG;IACI,KAAK,CAAC,YAAY,CAAC,WAAqB;QAC3C,4BAA4B;QAC5B,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QAErC,+BAA+B;QAC/B,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAE7B,kEAAkE;QAClE,sEAAsE;QACtE,mEAAmE;QACnE,wCAAwC;QACxC,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3D,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,yBAAyB,EAAE,CAAC;YAC9C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;gBACnB,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAC9C,CAAC;QACL,CAAC;QACD,IAAI,CAAC,0BAA0B,EAAE,CAAC;QAElC,yDAAyD;QACzD,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnD,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;YAClE,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;QACnC,CAAC;IACL,CAAC;IAED;;;;;;;OAOG;IACK,0BAA0B;QAC9B,MAAM,SAAS,GAAG,gBAAgB,CAAC,mCAAmC,CAAC;QACvE,MAAM,SAAS,GAA6D,EAAE,CAAC;QAE/E,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACnC,IAAI,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;gBACpE,SAAS;YACb,CAAC;YACD,MAAM,UAAU,GAAG,oBAAoB,CAAC,gBAAgB,CACpD,GAAG,CAAC,cAAc,EAClB,GAAG,CAAC,QAAQ,IAAI,KAAK,CACxB,CAAC;YACF,IAAI,UAAU,GAAG,SAAS,EAAE,CAAC;gBACzB,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC;gBACpC,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC/C,CAAC;QACL,CAAC;QAED,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO;QACX,CAAC;QAED,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC3B,MAAM,KAAK,GAAa;YACpB,EAAE;YACF,GAAG;YACH,2CAA2C;YAC3C,GAAG;YACH,EAAE;YACF,KAAK,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,MAAM,qBAAqB,qDAAqD;YAClJ,yEAAyE;YACzE,EAAE;SACL,CAAC;QACF,KAAK,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,SAAS,EAAE,CAAC;YAC1C,KAAK,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;YAChC,KAAK,CAAC,IAAI,CAAC,qBAAqB,GAAG,CAAC,cAAc,MAAM,GAAG,CAAC,QAAQ,IAAI,KAAK,GAAG,CAAC,CAAC;YAClF,KAAK,CAAC,IAAI,CAAC,sBAAsB,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;QACrF,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QACvC,KAAK,CAAC,IAAI,CAAC,gFAAgF,CAAC,CAAC;QAC7F,KAAK,CAAC,IAAI,CAAC,2EAA2E,CAAC,CAAC;QACxF,KAAK,CAAC,IAAI,CAAC,2EAA2E,CAAC,CAAC;QACxF,KAAK,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;QAC9D,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;QACzD,KAAK,CAAC,IAAI,CAAC,iFAAiF,CAAC,CAAC;QAC9F,KAAK,CAAC,IAAI,CAAC,qEAAqE,CAAC,CAAC;QAClF,KAAK,CAAC,IAAI,CAAC,sFAAsF,CAAC,CAAC;QACnG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,iFAAiF,CAAC,CAAC;QAC9F,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEf,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvB,CAAC;IACL,CAAC;IAED;;;;OAIG;IACK,cAAc,CAAC,EAAU;QAC7B,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC;YACZ,OAAO,GAAG,EAAE,KAAK,CAAC;QACtB,CAAC;QACD,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;QAC3C,IAAI,YAAY,GAAG,EAAE,EAAE,CAAC;YACpB,OAAO,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,YAAY,UAAU,CAAC;QACvE,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,EAAE,CAAC,CAAC;QAC9C,MAAM,OAAO,GAAG,YAAY,GAAG,EAAE,CAAC;QAClC,MAAM,OAAO,GAAG,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,OAAO,UAAU,CAAC;QAClE,IAAI,OAAO,KAAK,CAAC,EAAE,CAAC;YAChB,OAAO,OAAO,CAAC;QACnB,CAAC;QACD,MAAM,OAAO,GAAG,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,OAAO,UAAU,CAAC;QAClE,OAAO,GAAG,OAAO,IAAI,OAAO,EAAE,CAAC;IACnC,CAAC;IAED;;;;;;;;;OASG;IACI,KAAK,CAAC,oBAAoB,CAC7B,WAAqB,EACrB,WAAiB,IAAI,IAAI,EAAE;QAE3B,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QAEtC,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,CAAC,aAAa,CAAC,MAAM,cAAc,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QAErG,MAAM,IAAI,GAA8B,EAAE,CAAC;QAE3C,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACnC,OAAO,CAAC,GAAG,CAAC,OAAO,GAAG,CAAC,IAAI,eAAe,GAAG,CAAC,SAAS,EAAE,WAAW,EAAE,IAAI,MAAM,YAAY,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;YAE1G,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,CAAC;gBAC/B,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;gBAC/D,IAAI,CAAC;oBACD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;oBACrD,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;wBACvB,IAAI,GAAG,CAAC,eAAe,KAAK,OAAO,EAAE,CAAC;4BAClC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,CAAC,IAAI,8CAA8C,CAAC,CAAC;4BACxE,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;4BAClE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;wBACzB,CAAC;6BAAM,IAAI,GAAG,CAAC,eAAe,KAAK,MAAM,EAAE,CAAC;4BACxC,OAAO,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAC;wBACxE,CAAC;6BAAM,CAAC;4BACJ,wCAAwC;4BACxC,OAAO,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC;4BAC9D,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;4BAClE,IAAI,GAAG;gCAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;wBAC5B,CAAC;oBACL,CAAC;yBAAM,CAAC;wBACJ,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,UAAU,CAAC,KAAM,EAAE,WAAW,CAAC,CAAC;wBAC/E,IAAI,GAAG;4BAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC5B,CAAC;gBACL,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACb,IAAI,CAAC,QAAQ,CAAC,yBAAyB,GAAG,CAAC,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC;gBAC9D,CAAC;YACL,CAAC;iBAAM,CAAC;gBACJ,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;YAC5C,CAAC;QACL,CAAC;QAED,qDAAqD;QACrD,6DAA6D;QAC7D,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAE7B,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;;;;OAMG;IACI,KAAK,CAAC,mBAAmB,CAC5B,KAAa,EACb,WAAqB;QAErB,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QAEtC,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;QAClE,IAAI,CAAC,GAAG,EAAE,CAAC;YACP,MAAM,IAAI,KAAK,CAAC,iBAAiB,KAAK,0BAA0B,CAAC,CAAC;QACtE,CAAC;QAED,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACrD,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,kCAAkC,KAAK,2BAA2B,CAAC,CAAC;QACxF,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,UAAU,CAAC,KAAM,EAAE,WAAW,CAAC,CAAC;QAC/E,IAAI,CAAC,GAAG,EAAE,CAAC;YACP,MAAM,IAAI,KAAK,CAAC,mCAAmC,KAAK,EAAE,CAAC,CAAC;QAChE,CAAC;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8BG;IACI,KAAK,CAAC,qBAAqB,CAC9B,WAAqB,EACrB,WAAiB,IAAI,IAAI,EAAE;QAE3B,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC5B,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAC;QAC3E,CAAC;QAED,kEAAkE;QAClE,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC,CAAC;QAE7D,iCAAiC;QACjC,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,IAAI,iBAAiB,GAAG,CAAC,CAAC;QAE1B,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACnC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC;gBAAE,SAAS;YAE5C,IAAI,IAAI,CAAC,mBAAmB,CAAC,IAAI,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBAC1D,iBAAiB,EAAE,CAAC;gBACpB,SAAS;YACb,CAAC;YAED,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACrD,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;gBACvB,IAAI,GAAG,CAAC,eAAe,KAAK,OAAO,EAAE,CAAC;oBAClC,MAAM,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;gBACpD,CAAC;gBACD,SAAS,EAAE,CAAC;gBACZ,SAAS;YACb,CAAC;YAED,iEAAiE;YACjE,qEAAqE;YACrE,sEAAsE;YACtE,uEAAuE;YACvE,MAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,UAAU,CAAC,KAAM,EAAE,WAAW,CAAC,CAAC;YAC7E,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;YAE9C,OAAO;iBACF,KAAK,CAAC,KAAK,CAAC,EAAE;gBACX,IAAI,CAAC,QAAQ,CACT,wDAAwD,GAAG,CAAC,IAAI,GAAG;oBACnE,sDAAsD,EACtD,KAAK,CACR,CAAC;gBACF,OAAO,IAAI,CAAC;YAChB,CAAC,CAAC;iBACD,OAAO,CAAC,GAAG,EAAE;gBACV,2DAA2D;gBAC3D,6DAA6D;gBAC7D,6BAA6B;gBAC7B,IAAI,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,OAAO,EAAE,CAAC;oBACnD,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAC5C,CAAC;YACL,CAAC,CAAC,CAAC;YAEP,UAAU,EAAE,CAAC;QACjB,CAAC;QAED,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,iBAAiB,EAAE,CAAC;IAC/D,CAAC;IAED;;;;;;;OAOG;IACK,QAAQ,CAAC,GAAyB,EAAE,QAAc;QACtD,mBAAmB;QACnB,IAAI,GAAG,CAAC,OAAO,IAAI,QAAQ,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;YACxC,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,IAAI,GAAG,CAAC,KAAK,IAAI,QAAQ,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC;YACpC,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,2CAA2C;QAC3C,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;YACjB,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,0FAA0F;QAC1F,OAAO,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,QAAQ,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC;IAChE,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACK,KAAK,CAAC,kBAAkB,CAC5B,GAAyB,EACzB,SAAwB,EACxB,WAAqB;QAErB,IAAI,GAAG,GAAmC,IAAI,CAAC;QAE/C,IAAI,CAAC;YACD,GAAG,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;YAEhD,eAAe;YACf,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;YAClF,IAAI,CAAC,OAAO,EAAE,CAAC;gBACX,MAAM,IAAI,KAAK,CAAC,YAAY,GAAG,CAAC,SAAS,YAAY,CAAC,CAAC;YAC3D,CAAC;YAED,wCAAwC;YACxC,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,cAAc,CACxD,gBAAgB,EAChB,OAAO,CAAC,WAAW,CACtB,CAAC;YAEF,IAAI,CAAC,MAAM,EAAE,CAAC;gBACV,MAAM,IAAI,KAAK,CAAC,qCAAqC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;YAChF,CAAC;YAED,wBAAwB;YACxB,OAAO,CAAC,GAAG,CAAC,mBAAmB,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;YAE3C,0BAA0B;YAC1B,MAAM,OAAO,GAAiC;gBAC1C,QAAQ,EAAE,GAAG;gBACb,GAAG,EAAE,GAAG;gBACR,WAAW,EAAE,WAAW;aAC3B,CAAC;YAEF,6BAA6B;YAC7B,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAE7C,gCAAgC;YAChC,GAAG,CAAC,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC;YAC7B,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC;YACrD,GAAG,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;YAC7B,GAAG,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,IAAI,IAAI,CAAC;YAC/C,GAAG,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YACrE,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;YAClC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACZ,IAAI,CAAC,QAAQ,CACT,qCAAqC,GAAG,CAAC,IAAI,SAAS,GAAG,CAAC,EAAE,KAAK;oBACjE,GAAG,GAAG,CAAC,YAAY,EAAE,eAAe,IAAI,SAAS,EAAE,EACnD,IAAI,CACP,CAAC;gBACF,gEAAgE;gBAChE,wDAAwD;YAC5D,CAAC;YAED,wBAAwB;YACxB,MAAM,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;YAE5D,mCAAmC;YACnC,MAAM,IAAI,CAAC,yBAAyB,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;YAEnE,6BAA6B;YAC7B,MAAM,QAAQ,GAAG,GAAG,CAAC,WAAW,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;YACrE,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;YAC1C,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,eAAe,GAAG,CAAC,IAAI,KAAK,QAAQ,KAAK,CAAC,CAAC;YAElE,OAAO,GAAG,CAAC;QAEf,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,GAAG,EAAE,CAAC;gBACN,GAAG,CAAC,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC;gBAC7B,GAAG,CAAC,MAAM,GAAG,QAAQ,CAAC;gBACtB,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC;gBACpB,GAAG,CAAC,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;gBAC5E,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;gBAClC,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACZ,IAAI,CAAC,QAAQ,CACT,4CAA4C,GAAG,CAAC,IAAI,SAAS,GAAG,CAAC,EAAE,KAAK;wBACxE,GAAG,GAAG,CAAC,YAAY,EAAE,eAAe,IAAI,SAAS,EAAE,EACnD,IAAI,CACP,CAAC;oBACF,0DAA0D;gBAC9D,CAAC;gBACD,MAAM,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;YACvD,CAAC;YACD,IAAI,CAAC,QAAQ,CAAC,eAAe,GAAG,CAAC,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC;YAChD,OAAO,GAAG,CAAC;QAEf,CAAC;gBAAS,CAAC;YACP,yDAAyD;YACzD,0EAA0E;YAC1E,0DAA0D;YAC1D,IAAI,SAAS,EAAE,CAAC;gBACZ,MAAM,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;YAC5D,CAAC;QACL,CAAC;IACL,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,YAAY,CACtB,GAAyB,EACzB,WAAqB,EACrB,QAA4B;QAE5B,MAAM,EAAE,GAAG,CAAC,QAAQ,IAAI,IAAI,QAAQ,EAAE,CAAiC,CAAC;QACxE,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,eAAe,CAChC,wBAAwB,EACxB,WAAW,CACd,CAAC;QAEF,GAAG,CAAC,cAAc,GAAG,GAAG,CAAC,EAAE,CAAC;QAC5B,GAAG,CAAC,gBAAgB,GAAG,WAAW,CAAC,EAAE,CAAC;QACtC,GAAG,CAAC,MAAM,GAAG,SAAS,CAAC;QACvB,GAAG,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;QAE3B,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QACjB,OAAO,GAAG,CAAC;IACf,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,mBAAmB,CAC7B,GAAyB,EACzB,OAAgB,EAChB,MAAc;QAEd,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,OAAO,GAAG,oBAAoB,CAAC,cAAc,CAAC,GAAG,CAAC,cAAc,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;QAEtF,wEAAwE;QACxE,kEAAkE;QAClE,GAAG,CAAC,QAAQ,EAAE,CAAC;QACf,IAAI,OAAO,EAAE,CAAC;YACV,GAAG,CAAC,YAAY,EAAE,CAAC;QACvB,CAAC;aAAM,CAAC;YACJ,GAAG,CAAC,YAAY,EAAE,CAAC;QACvB,CAAC;QACD,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC;QACpB,GAAG,CAAC,SAAS,GAAG,OAAO,CAAC;QAExB,qEAAqE;QACrE,wEAAwE;QACxE,oEAAoE;QACpE,iEAAiE;QACjE,+DAA+D;QAC/D,oEAAoE;QACpE,iEAAiE;QACjE,qEAAqE;QACrE,yEAAyE;QACzE,4EAA4E;QAC5E,4BAA4B;QAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,aAAqC,CAAC;QACjE,MAAM,QAAQ,CAAC,UAAU,CACrB,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,gCAAgC,EAC9D,CAAC,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC,EACnD,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,EACvC,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,gCAAgC,EAAE,EACnE,IAAI,CAAC,IAAI,CAAC,WAAW,CACxB,CAAC;QAEF,yEAAyE;QACzE,0EAA0E;QAC1E,oEAAoE;QACpE,kEAAkE;QAClE,wDAAwD;QACxD,EAAE;QACF,4EAA4E;QAC5E,uEAAuE;QACvE,wEAAwE;QACxE,qEAAqE;QACrE,EAAE;QACF,qEAAqE;QACrE,yEAAyE;QACzE,sDAAsD;QACtD,EAAE;QACF,wEAAwE;QACxE,2EAA2E;QAC3E,wEAAwE;QACxE,wEAAwE;QACxE,4CAA4C;QAC5C,IAAI,CAAC;YACD,IAAI,iBAAiB,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC;gBAC3C,MAAM,iBAAiB,CAAC,QAAQ,CAAC,sBAAsB,CAAC,oBAAoB,CAAC,CAAC;YAClF,CAAC;QACL,CAAC;QAAC,OAAO,UAAU,EAAE,CAAC;YAClB,IAAI,CAAC,QAAQ,CAAC,0DAA0D,EAAE,UAAU,CAAC,CAAC;QAC1F,CAAC;IACL,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,yBAAyB,CACnC,GAAyB,EACzB,OAAqC,EACrC,MAA0B,EAC1B,MAAwB;QAExB,MAAM,YAAY,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,GAAG,CAAC,eAAe,CAAC;YACxD,CAAC,CAAC,MAAM,CAAC,OAAO,IAAI,GAAG,CAAC,eAAe,CAAC,CAAC;QAE7C,IAAI,CAAC,YAAY,EAAE,CAAC;YAChB,OAAO;QACX,CAAC;QAED,MAAM,eAAe,GAAG,GAAG,CAAC,YAAY,IAAI,GAAG,CAAC,WAAW,CAAC;QAC5D,IAAI,CAAC,eAAe,EAAE,CAAC;YACnB,OAAO;QACX,CAAC;QAED,MAAM,QAAQ,GAA0B,EAAE,CAAC;QAC3C,IAAI,GAAG,CAAC,cAAc;YAAE,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/C,IAAI,GAAG,CAAC,cAAc;YAAE,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAE/C,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO;QACX,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAE3D,MAAM,mBAAmB,CAAC,4BAA4B,CAClD,eAAe,EACf,OAAO,EACP,QAAQ,CACX,CAAC;IACN,CAAC;IAED;;;;;;;;;;;;;;;;;;;OAmBG;IACK,kBAAkB,CACtB,QAA8B,EAC9B,SAAiB,EACjB,eAAyB;QAEzB,MAAM,YAAY,GAAG,QAAQ,CAAC,WAAW,KAAK,YAAY;YACtD,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAChD,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC;QAC1D,OAAO,QAAQ,CAAC,OAAO,CAAC,mBAAmB,CAAC,QAAQ,CAAC,gBAAgB,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;IACpG,CAAC;IAED;;;OAGG;IACH;;;;;;;;;;OAUG;IACK,KAAK,CAAC,cAAc,CAAC,KAAa;QACtC,0EAA0E;QAC1E,0EAA0E;QAC1E,kFAAkF;QAClF,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC;QACvB,MAAM,QAAQ,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC9C,MAAM,kBAAkB,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC;QAEvE,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,aAAqC,CAAC;QACjE,yEAAyE;QACzE,uEAAuE;QACvE,yEAAyE;QACzE,2EAA2E;QAC3E,sEAAsE;QACtE,yEAAyE;QACzE,oCAAoC;QACpC,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,UAAU,CAClC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,2BAA2B,EACzD,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,sBAAsB,CAAC,CAAC,EAC3D,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,kBAAkB,CAAC,EAC5C,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,2BAA2B,EAAE,EAC9D,IAAI,CAAC,IAAI,CAAC,WAAW,CACxB,CAAC;QAEF,MAAM,QAAQ,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,KAAK,CAAC,CAAC;QAC3C,OAAO,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IACtE,CAAC;IAED;;;;;;;;;;OAUG;IACK,KAAK,CAAC,yBAAyB,CAAC,KAAa,EAAE,aAAqB;QACxE,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,aAAqC,CAAC;QACjE,yEAAyE;QACzE,+CAA+C;QAC/C,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,UAAU,CAClC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,yCAAyC,EACvE,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC,EAC/B,CAAC,KAAK,EAAE,aAAa,CAAC,EACtB,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,yCAAyC,EAAE,EAC5E,IAAI,CAAC,IAAI,CAAC,WAAW,CACxB,CAAC;QAEF,MAAM,QAAQ,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,KAAK,CAAC,CAAC;QAC3C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACZ,IAAI,CAAC,GAAG,CACJ,gBAAgB,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,oBAAoB;gBACzD,qEAAqE,CACxE,CAAC;QACN,CAAC;QACD,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED;;;;;;;;;;OAUG;IACK,KAAK,CAAC,yBAAyB;QACnC,IAAI,CAAC;YACD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,aAAqC,CAAC;YACjE,+DAA+D;YAC/D,oEAAoE;YACpE,kEAAkE;YAClE,gDAAgD;YAChD,IAAI,QAAQ,CAAC,WAAW,KAAK,WAAW,EAAE,CAAC;gBACvC,IAAI,CAAC,GAAG,CAAC,kDAAkD,QAAQ,CAAC,WAAW,GAAG,CAAC,CAAC;gBACpF,OAAO;YACX,CAAC;YACD,MAAM,MAAM,GAAG,QAAQ,CAAC,gBAAgB,CAAC;YACzC,MAAM,GAAG,GAAG,oDAAoD;gBAC5D,IAAI,MAAM,0EAA0E,CAAC;YAEzF,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,UAAU,CAClC,GAAG,EACH,EAAE,EACF,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,oCAAoC,EAAE,EACxE,IAAI,CAAC,IAAI,CAAC,WAAW,CACxB,CAAC;YAEF,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC7B,IAAI,CAAC,QAAQ,CACT,sDAAsD;oBACtD,GAAG,MAAM,sDAAsD;oBAC/D,2EAA2E,EAC3E,IAAI,CACP,CAAC;YACN,CAAC;iBAAM,CAAC;gBACJ,IAAI,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;YAC/C,CAAC;QACL,CAAC;QAAC,OAAO,UAAU,EAAE,CAAC;YAClB,sEAAsE;YACtE,sCAAsC;YACtC,IAAI,CAAC,GAAG,CACJ,8EAA8E,UAAU,EAAE,CAC7F,CAAC;QACN,CAAC;IACL,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;OAqBG;IACK,KAAK,CAAC,sBAAsB,CAAC,WAAqB;QACtD,IAAI,IAAI,CAAC,mBAAmB,CAAC,IAAI,KAAK,CAAC;YAAE,OAAO,CAAC,CAAC;QAElD,MAAM,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC,CAAC;QACxD,+DAA+D;QAC/D,2EAA2E;QAC3E,uEAAuE;QACvE,4DAA4D;QAC5D,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACzD,MAAM,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAExC,MAAM,EAAE,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QACvD,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,OAAO,CAAkE;YAC7F,UAAU,EAAE,oBAAoB;YAChC,WAAW,EAAE,UAAU,MAAM,uFAAuF,MAAM,IAAI;YAC9H,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,sBAAsB,CAAC;YAC9C,UAAU,EAAE,QAAQ;SACvB,EAAE,WAAW,CAAC,CAAC;QAEhB,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,CAAC,CAAC;QAE7D,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YAC/B,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC,GAAG,CACJ,mCAAmC,OAAO,IAAI;gBAC9C,SAAS,GAAG,CAAC,oBAAoB,EAAE,WAAW,EAAE,IAAI,MAAM,SAAS,MAAM,IAAI;gBAC7E,yEAAyE,CAC5E,CAAC;YACF,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACxC,KAAK,EAAE,CAAC;YAER,oDAAoD;YACpD,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAC5D,IAAI,CAAC,QAAQ,CAAC,+CAA+C,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAC9E,CAAC;QACN,CAAC;QAED,OAAO,KAAK,CAAC;IACjB,CAAC;IAED;;;;;;;;;;;;;;;;;OAiBG;IACK,KAAK,CAAC,yBAAyB,CAAC,KAAa,EAAE,WAAqB;QACxE,wEAAwE;QACxE,2CAA2C;QAC3C,MAAM,EAAE,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QACvD,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,OAAO,CAA0B;YACrD,UAAU,EAAE,wBAAwB;YACpC,WAAW,EAAE,mBAAmB,KAAK,wBAAwB;YAC7D,UAAU,EAAE,eAAe;SAC9B,EAAE,WAAW,CAAC,CAAC;QAEhB,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAE3D,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YAC/B,GAAG,CAAC,WAAW,GAAG,GAAG,CAAC;YACtB,GAAG,CAAC,MAAM,GAAG,QAAQ,CAAC;YACtB,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC;YACpB,GAAG,CAAC,YAAY;gBACZ,iEAAiE;oBACjE,GAAG,GAAG,CAAC,SAAS,EAAE,WAAW,EAAE,uCAAuC;oBACtE,wEAAwE;oBACxE,4DAA4D;oBAC5D,wCAAwC,CAAC;YAC7C,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;YAC/B,IAAI,CAAC,KAAK,EAAE,CAAC;gBACT,IAAI,CAAC,QAAQ,CACT,kCAAkC,GAAG,CAAC,EAAE,IAAI;oBAC5C,GAAG,GAAG,CAAC,YAAY,EAAE,eAAe,IAAI,SAAS,EAAE,EACnD,IAAI,CACP,CAAC;YACN,CAAC;iBAAM,CAAC;gBACJ,IAAI,CAAC,GAAG,CAAC,kCAAkC,GAAG,CAAC,EAAE,YAAY,KAAK,EAAE,CAAC,CAAC;YAC1E,CAAC;QACL,CAAC;IACL,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,kBAAkB,CAC5B,GAAyB,EACzB,WAAqB,EACrB,QAA4B;QAE5B,MAAM,EAAE,GAAG,CAAC,QAAQ,IAAI,IAAI,QAAQ,EAAE,CAAiC,CAAC;QACxE,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,eAAe,CAChC,wBAAwB,EACxB,WAAW,CACd,CAAC;QAEF,GAAG,CAAC,cAAc,GAAG,GAAG,CAAC,EAAE,CAAC;QAC5B,GAAG,CAAC,gBAAgB,GAAG,WAAW,CAAC,EAAE,CAAC;QACtC,GAAG,CAAC,MAAM,GAAG,SAAS,CAAC;QACvB,GAAG,CAAC,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC;QAC1B,GAAG,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;QAE3B,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QACjB,IAAI,CAAC,GAAG,CAAC,cAAc,GAAG,CAAC,IAAI,iCAAiC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;QAC3E,OAAO,GAAG,CAAC;IACf,CAAC;IAED;;;OAGG;IACK,qBAAqB;QACzB,OAAO,GAAG,EAAE,CAAC,QAAQ,EAAE,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAC7C,CAAC;IAED;;;;;;;;;;OAUG;IACK,KAAK,CAAC,sBAAsB,CAAC,WAAqB;QACtD,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACnC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;gBACjB,IAAI,GAAG,CAAC,wBAAwB,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;oBACjD,GAAG,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;oBAC3B,OAAO,CAAC,GAAG,CAAC,aAAa,GAAG,CAAC,IAAI,wEAAwE,CAAC,CAAC;gBAC/G,CAAC;qBAAM,CAAC;oBACJ,GAAG,CAAC,SAAS,GAAG,oBAAoB,CAAC,cAAc,CAAC,GAAG,CAAC,cAAc,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;gBAC1F,CAAC;gBACD,IAAI,CAAC;oBACD,+DAA+D;oBAC/D,8DAA8D;oBAC9D,8DAA8D;oBAC9D,6DAA6D;oBAC7D,4CAA4C;oBAC5C,uCAAuC;oBACvC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;oBACjB,OAAO,CAAC,GAAG,CAAC,mCAAmC,GAAG,CAAC,IAAI,OAAO,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;gBACjG,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACb,IAAI,CAAC,QAAQ,CAAC,0CAA0C,GAAG,CAAC,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC;gBAC/E,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;IAED;;;;;;;;;;;;;;;OAeG;IACK,KAAK,CAAC,iBAAiB,CAAC,YAAsB;QAClD,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,gDAAgD,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QAErF,qEAAqE;QACrE,yEAAyE;QACzE,0EAA0E;QAC1E,0EAA0E;QAC1E,oEAAoE;QACpE,qBAAqB;QACrB,EAAE;QACF,sEAAsE;QACtE,oEAAoE;QACpE,0EAA0E;QAC1E,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAC/C,GAAG,CAAC,SAAS,IAAI,IAAI;YACrB,CAAC,GAAG,CAAC,oBAAoB,IAAI,IAAI,IAAI,GAAG,CAAC,oBAAoB,GAAG,GAAG,CAAC,CACvE,CAAC;QAEF,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrB,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;YACxC,OAAO;QACX,CAAC;QAED,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;YACtB,IAAI,CAAC;gBACD,6DAA6D;gBAC7D,iEAAiE;gBACjE,6CAA6C;gBAC7C,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACrD,IAAI,UAAU,CAAC,QAAQ,EAAE,CAAC;oBACtB,MAAM,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,EAAE,EAAE,UAAU,CAAC,KAAM,CAAC,CAAC;oBAChE,OAAO,CAAC,GAAG,CAAC,iCAAiC,GAAG,CAAC,IAAI,kBAAkB,GAAG,CAAC,gBAAgB,GAAG,CAAC,CAAC;oBAChG,YAAY,EAAE,CAAC;gBACnB,CAAC;qBAAM,CAAC;oBACJ,gEAAgE;oBAChE,OAAO,CAAC,GAAG,CAAC,0BAA0B,GAAG,CAAC,IAAI,iCAAiC,CAAC,CAAC;gBACrF,CAAC;YACL,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,IAAI,CAAC,QAAQ,CAAC,sCAAsC,GAAG,CAAC,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC;YAC3E,CAAC;QACL,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,eAAe,YAAY,gBAAgB,CAAC,CAAC;IAC7D,CAAC;IAEO,GAAG,CAAC,OAAe;QACvB,WAAW,CAAC;YACR,OAAO,EAAE,wBAAwB,OAAO,EAAE;YAC1C,WAAW,EAAE,KAAK;YAClB,gBAAgB,EAAE,GAAG,EAAE,CAAC,KAAK;SAChC,CAAC,CAAC;IACP,CAAC;IAEO,QAAQ,CAAC,OAAe,EAAE,KAAe;QAC7C,QAAQ,CAAC,wBAAwB,OAAO,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;IAClE,CAAC"}
1
+ {"version":3,"file":"ScheduledJobEngine.js","sourceRoot":"","sources":["../src/ScheduledJobEngine.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ActionScheduledJobDriver.d.ts","sourceRoot":"","sources":["../../src/drivers/ActionScheduledJobDriver.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,gBAAgB,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AACrF,OAAO,EAAE,gBAAgB,EAAmF,MAAM,sBAAsB,CAAC;AAGzI,OAAO,EACH,kBAAkB,EAClB,mBAAmB,EAEtB,MAAM,uCAAuC,CAAC;AAG/C;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBACa,wBAAyB,SAAQ,gBAAgB;IAC7C,OAAO,CAAC,OAAO,EAAE,4BAA4B,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAmCjF,qBAAqB,CAAC,QAAQ,EAAE,GAAG,GAAG,gBAAgB;IA6DtD,kBAAkB,CACrB,OAAO,EAAE,4BAA4B,EACrC,MAAM,EAAE,kBAAkB,GAC3B,mBAAmB;YAyBR,aAAa;YA0Cb,UAAU;CAU3B"}
1
+ {"version":3,"file":"ActionScheduledJobDriver.d.ts","sourceRoot":"","sources":["../../src/drivers/ActionScheduledJobDriver.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,gBAAgB,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AACrF,OAAO,EAAE,gBAAgB,EAAmF,MAAM,sBAAsB,CAAC;AAGzI,OAAO,EACH,kBAAkB,EAClB,mBAAmB,EAEtB,MAAM,uCAAuC,CAAC;AAG/C;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBACa,wBAAyB,SAAQ,gBAAgB;IAC7C,OAAO,CAAC,OAAO,EAAE,4BAA4B,GAAG,OAAO,CAAC,kBAAkB,CAAC;IA0CjF,qBAAqB,CAAC,QAAQ,EAAE,GAAG,GAAG,gBAAgB;IA6DtD,kBAAkB,CACrB,OAAO,EAAE,4BAA4B,EACrC,MAAM,EAAE,kBAAkB,GAC3B,mBAAmB;YAyBR,aAAa;YA+Cb,UAAU;CAU3B"}
@@ -42,8 +42,14 @@ let ActionScheduledJobDriver = class ActionScheduledJobDriver extends BaseSchedu
42
42
  throw new Error(`Action with ID ${config.ActionID} not found`);
43
43
  }
44
44
  this.log(`Executing action: ${action.Name}`);
45
- // Process parameters (static values or SQL queries)
46
- const params = await this.processParams(config.Params || [], context.ContextUser);
45
+ // Process parameters (static values or SQL queries). Heartbeat per param
46
+ // so a config with several slow `SQL Statement` params keeps its lease
47
+ // renewed during prep (GH #2749).
48
+ const params = await this.processParams(config.Params || [], context.ContextUser, context.heartbeat);
49
+ // Beat once more right before the action runs. NOTE (documented caveat):
50
+ // a single long-running action cannot beat mid-call — that is precisely
51
+ // the ScheduledJob.MaxRuntimeMinutes use case (bump the acquire-time lease).
52
+ void context.heartbeat?.();
47
53
  // Execute the action
48
54
  const actionResult = await ActionEngineServer.Instance.RunAction({
49
55
  Action: action,
@@ -114,13 +120,16 @@ let ActionScheduledJobDriver = class ActionScheduledJobDriver extends BaseSchedu
114
120
  }
115
121
  };
116
122
  }
117
- async processParams(params, contextUser) {
123
+ async processParams(params, contextUser, heartbeat) {
118
124
  if (!params) {
119
125
  return [];
120
126
  }
121
127
  const allActionParams = ActionEngineServer.Instance.ActionParams;
122
128
  const result = [];
123
129
  for (const param of params) {
130
+ // Heartbeat per param — keeps the lease renewed while preparing a
131
+ // config with several slow `SQL Statement` params (GH #2749).
132
+ void heartbeat?.();
124
133
  const actionParam = allActionParams.find(p => UUIDsEqual(p.ID, param.ActionParamID));
125
134
  if (!actionParam) {
126
135
  this.logError(`Action param ${param.ActionParamID} not found`);
@@ -1 +1 @@
1
- {"version":3,"file":"ActionScheduledJobDriver.js","sourceRoot":"","sources":["../../src/drivers/ActionScheduledJobDriver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ActionScheduledJobDriver.js","sourceRoot":"","sources":["../../src/drivers/ActionScheduledJobDriver.ts"],"names":[],"mappings":"AAAA;;;GAGG;;;;;;;AAEH,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAClF,OAAO,EAAE,gBAAgB,EAAgC,MAAM,qBAAqB,CAAC;AACrF,OAAO,EAAE,gBAAgB,EAAY,QAAQ,EAAE,mBAAmB,EAAE,mBAAmB,EAAqB,MAAM,sBAAsB,CAAC;AACzI,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAS7D;;;;;;;;;;;;;;;;;;;GAmBG;AAEI,IAAM,wBAAwB,GAA9B,MAAM,wBAAyB,SAAQ,gBAAgB;IACnD,KAAK,CAAC,OAAO,CAAC,OAAqC;QACtD,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAyB,OAAO,CAAC,QAAQ,CAAC,CAAC;QAEjF,kBAAkB;QAClB,MAAM,kBAAkB,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;QACrE,MAAM,MAAM,GAAG,kBAAkB,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;QAEhG,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,kBAAkB,MAAM,CAAC,QAAQ,YAAY,CAAC,CAAC;QACnE,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,qBAAqB,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QAE7C,yEAAyE;QACzE,uEAAuE;QACvE,kCAAkC;QAClC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,EAAE,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;QAErG,yEAAyE;QACzE,wEAAwE;QACxE,6EAA6E;QAC7E,KAAK,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;QAE3B,qBAAqB;QACrB,MAAM,YAAY,GAAG,MAAM,kBAAkB,CAAC,QAAQ,CAAC,SAAS,CAAC;YAC7D,MAAM,EAAE,MAAM;YACd,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,OAAO,EAAE,EAAE;YACX,MAAM,EAAE,MAAM;SACjB,CAAC,CAAC;QAEH,OAAO;YACH,OAAO,EAAE,YAAY,CAAC,OAAO;YAC7B,YAAY,EAAE,YAAY,CAAC,OAAO,IAAI,SAAS;YAC/C,OAAO,EAAE;gBACL,UAAU,EAAE,YAAY,CAAC,MAAM,EAAE,UAAU;gBAC3C,SAAS,EAAE,YAAY,CAAC,OAAO;gBAC/B,YAAY,EAAE,YAAY,CAAC,MAAM;aACpC;SACJ,CAAC;IACN,CAAC;IAEM,qBAAqB,CAAC,QAAa;QACtC,MAAM,MAAM,GAAG,IAAI,gBAAgB,EAAE,CAAC;QAEtC,IAAI,CAAC;YACD,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAyB,QAAQ,CAAC,CAAC;YAEzE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACnB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,mBAAmB,CACtC,wBAAwB,EACxB,sBAAsB,EACtB,MAAM,CAAC,QAAQ,EACf,mBAAmB,CAAC,OAAO,CAC9B,CAAC,CAAC;YACP,CAAC;YAED,4BAA4B;YAC5B,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBAChB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;oBAChC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,mBAAmB,CACtC,sBAAsB,EACtB,yBAAyB,EACzB,MAAM,CAAC,MAAM,EACb,mBAAmB,CAAC,OAAO,CAC9B,CAAC,CAAC;gBACP,CAAC;qBAAM,CAAC;oBACJ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;wBAC5C,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;wBAC/B,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;4BACvB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,mBAAmB,CACtC,wBAAwB,CAAC,iBAAiB,EAC1C,2BAA2B,EAC3B,KAAK,CAAC,aAAa,EACnB,mBAAmB,CAAC,OAAO,CAC9B,CAAC,CAAC;wBACP,CAAC;wBACD,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;4BAC7E,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,mBAAmB,CACtC,wBAAwB,CAAC,aAAa,EACtC,+CAA+C,EAC/C,KAAK,CAAC,SAAS,EACf,mBAAmB,CAAC,OAAO,CAC9B,CAAC,CAAC;wBACP,CAAC;oBACL,CAAC;gBACL,CAAC;YACL,CAAC;QAEL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,uBAAuB,CAAC;YACtF,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,mBAAmB,CACtC,eAAe,EACf,YAAY,EACZ,QAAQ,CAAC,aAAa,EACtB,mBAAmB,CAAC,OAAO,CAC9B,CAAC,CAAC;QACP,CAAC;QAED,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC;QAC5C,OAAO,MAAM,CAAC;IAClB,CAAC;IAEM,kBAAkB,CACrB,OAAqC,EACrC,MAA0B;QAE1B,MAAM,OAAO,GAAG,MAAM,CAAC,OAAc,CAAC;QAEtC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO;YAC1B,CAAC,CAAC,+BAA+B,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE;YACxD,CAAC,CAAC,4BAA4B,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QAE1D,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO;YACvB,CAAC,CAAC,yBAAyB,OAAO,CAAC,QAAQ,CAAC,IAAI,+BAA+B;gBAC7E,gBAAgB,OAAO,EAAE,UAAU,IAAI,KAAK,EAAE;YAChD,CAAC,CAAC,yBAAyB,OAAO,CAAC,QAAQ,CAAC,IAAI,eAAe;gBAC7D,UAAU,MAAM,CAAC,YAAY,EAAE,CAAC;QAEtC,OAAO;YACH,OAAO,EAAE,OAAO;YAChB,IAAI,EAAE,IAAI;YACV,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM;YAC5C,QAAQ,EAAE;gBACN,UAAU,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAC/B,OAAO,EAAE,QAAQ;gBACjB,UAAU,EAAE,OAAO,EAAE,UAAU;aAClC;SACJ,CAAC;IACN,CAAC;IAEO,KAAK,CAAC,aAAa,CACvB,MAAwC,EACxC,WAAqB,EACrB,SAA+B;QAE/B,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,OAAO,EAAE,CAAC;QACd,CAAC;QAED,MAAM,eAAe,GAAG,kBAAkB,CAAC,QAAQ,CAAC,YAAY,CAAC;QACjE,MAAM,MAAM,GAAkB,EAAE,CAAC;QAEjC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YACzB,kEAAkE;YAClE,8DAA8D;YAC9D,KAAK,SAAS,EAAE,EAAE,CAAC;YAEnB,MAAM,WAAW,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC;YACrF,IAAI,CAAC,WAAW,EAAE,CAAC;gBACf,IAAI,CAAC,QAAQ,CAAC,gBAAgB,KAAK,CAAC,aAAa,YAAY,CAAC,CAAC;gBAC/D,SAAS;YACb,CAAC;YAED,IAAI,KAAK,GAAQ,IAAI,CAAC;YAEtB,QAAQ,KAAK,CAAC,SAAS,EAAE,CAAC;gBACtB,KAAK,QAAQ;oBACT,gCAAgC;oBAChC,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;oBAC7C,KAAK,GAAG,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC;oBACrD,MAAM;gBAEV,KAAK,eAAe;oBAChB,KAAK,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;oBAC3C,MAAM;YACd,CAAC;YAED,MAAM,CAAC,IAAI,CAAC;gBACR,IAAI,EAAE,WAAW,CAAC,IAAI;gBACtB,KAAK,EAAE,KAAK;gBACZ,IAAI,EAAE,WAAW,CAAC,IAAI;aACzB,CAAC,CAAC;QACP,CAAC;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;IAEO,KAAK,CAAC,UAAU,CAAC,GAAW,EAAE,QAA4B;QAC9D,IAAI,CAAC;YACD,MAAM,WAAW,GAAG,CAAC,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAA0B,CAAC;YAC7E,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YACjD,OAAO,MAAM,CAAC;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,QAAQ,CAAC,wBAAwB,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC;YACpD,OAAO,IAAI,CAAC;QAChB,CAAC;IACL,CAAC;CACJ,CAAA;AA7LY,wBAAwB;IADpC,aAAa,CAAC,gBAAgB,EAAE,0BAA0B,CAAC;GAC/C,wBAAwB,CA6LpC"}
@@ -1 +1 @@
1
- {"version":3,"file":"AgentScheduledJobDriver.d.ts","sourceRoot":"","sources":["../../src/drivers/AgentScheduledJobDriver.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,gBAAgB,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AACrF,OAAO,EAAE,gBAAgB,EAAmF,MAAM,sBAAsB,CAAC;AAGzI,OAAO,EACH,kBAAkB,EAClB,mBAAmB,EAEtB,MAAM,uCAAuC,CAAC;AAE/C;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBACa,uBAAwB,SAAQ,gBAAgB;IAC5C,OAAO,CAAC,OAAO,EAAE,4BAA4B,GAAG,OAAO,CAAC,kBAAkB,CAAC;IA4CjF,qBAAqB,CAAC,QAAQ,EAAE,GAAG,GAAG,gBAAgB;IA4CtD,kBAAkB,CACrB,OAAO,EAAE,4BAA4B,EACrC,MAAM,EAAE,kBAAkB,GAC3B,mBAAmB;YA8BR,SAAS;CAW1B"}
1
+ {"version":3,"file":"AgentScheduledJobDriver.d.ts","sourceRoot":"","sources":["../../src/drivers/AgentScheduledJobDriver.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,gBAAgB,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AACrF,OAAO,EAAE,gBAAgB,EAAmF,MAAM,sBAAsB,CAAC;AAGzI,OAAO,EACH,kBAAkB,EAClB,mBAAmB,EAEtB,MAAM,uCAAuC,CAAC;AAE/C;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBACa,uBAAwB,SAAQ,gBAAgB;IAC5C,OAAO,CAAC,OAAO,EAAE,4BAA4B,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAmDjF,qBAAqB,CAAC,QAAQ,EAAE,GAAG,GAAG,gBAAgB;IA4CtD,kBAAkB,CACrB,OAAO,EAAE,4BAA4B,EACrC,MAAM,EAAE,kBAAkB,GAC3B,mBAAmB;YA8BR,SAAS;CAW1B"}
@@ -39,7 +39,9 @@ let AgentScheduledJobDriver = class AgentScheduledJobDriver extends BaseSchedule
39
39
  const config = this.parseConfiguration(context.Schedule);
40
40
  // Load the agent entity
41
41
  const agent = await this.loadAgent(config.AgentID, context.ContextUser);
42
- this.log(`Executing agent: ${agent.Name}`);
42
+ // Verbose-only: the engine's always-on "▶️ Starting / ✅ Completed" pair already frames this
43
+ // run. This per-agent detail is redundant noise on routine (often no-op) scheduled runs.
44
+ this.log(`Executing agent: ${agent.Name}`, true);
43
45
  // Execute the agent
44
46
  const runner = new AgentRunner();
45
47
  // Build conversation messages - if initial message provided, add it as user message
@@ -50,7 +52,12 @@ let AgentScheduledJobDriver = class AgentScheduledJobDriver extends BaseSchedule
50
52
  agent: agent,
51
53
  conversationMessages: conversationMessages,
52
54
  payload: config.StartingPayload,
53
- contextUser: context.ContextUser
55
+ contextUser: context.ContextUser,
56
+ // Heartbeat the lease on every agent step (prompt / action / sub-agent /
57
+ // decision) so a healthy long-running agent keeps its concurrency slot
58
+ // (GH #2749). Fire-and-forget is safe — context.heartbeat never throws
59
+ // and self-throttles to an effective beat at most every ~5 min.
60
+ onProgress: () => { void context.heartbeat?.(); }
54
61
  });
55
62
  // Link agent run back to scheduled job run
56
63
  if (result.agentRun.ID && context.Run.ID) {
@@ -1 +1 @@
1
- {"version":3,"file":"AgentScheduledJobDriver.js","sourceRoot":"","sources":["../../src/drivers/AgentScheduledJobDriver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AgentScheduledJobDriver.js","sourceRoot":"","sources":["../../src/drivers/AgentScheduledJobDriver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * @fileoverview Driver for executing scheduled Integration DISCOVERY jobs (§13).
3
+ * @module @memberjunction/scheduling-engine
4
+ */
5
+ import { BaseScheduledJob, ScheduledJobExecutionContext } from '../BaseScheduledJob.js';
6
+ import { ValidationResult } from '@memberjunction/core';
7
+ import { ScheduledJobResult, NotificationContent } from '@memberjunction/scheduling-base-types';
8
+ /**
9
+ * Driver for executing scheduled Integration DISCOVERY jobs (§13).
10
+ *
11
+ * Unlike {@link IntegrationSyncScheduledJobDriver} (which moves DATA via RunSync), this driver ONLY
12
+ * re-discovers the connector's SCHEMA on a cron — it runs the same `IntegrationConnectorCreationPipeline`
13
+ * as the on-demand `IntegrationRefreshConnectorSchema` mutation (ConnectionTest → Introspect → Persist →
14
+ * PKClassify). Its job is to keep the `MJ: Integration Objects` / `Integration Object Fields` catalog
15
+ * evolving so the entity-map / field-map picker keeps offering newly-appeared tables/columns, and so
16
+ * objects/fields the source dropped get deactivated (reversibly) when discovery is authoritative.
17
+ *
18
+ * It NEVER materializes tables (no RSU) and NEVER syncs records — selection + create-tables remain an
19
+ * explicit operator action. Created/managed entirely over GraphQL via the `discovery` job-kind on
20
+ * `IntegrationCreateSchedule`.
21
+ */
22
+ export declare class IntegrationDiscoveryScheduledJobDriver extends BaseScheduledJob {
23
+ Execute(context: ScheduledJobExecutionContext): Promise<ScheduledJobResult>;
24
+ ValidateConfiguration(schedule: {
25
+ Configuration?: string;
26
+ }): ValidationResult;
27
+ FormatNotification(context: ScheduledJobExecutionContext, result: ScheduledJobResult): NotificationContent;
28
+ }
29
+ //# sourceMappingURL=IntegrationDiscoveryScheduledJobDriver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IntegrationDiscoveryScheduledJobDriver.d.ts","sourceRoot":"","sources":["../../src/drivers/IntegrationDiscoveryScheduledJobDriver.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,gBAAgB,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AACrF,OAAO,EAEH,gBAAgB,EAInB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AAgBhG;;;;;;;;;;;;;GAaG;AACH,qBACa,sCAAuC,SAAQ,gBAAgB;IAE3D,OAAO,CAAC,OAAO,EAAE,4BAA4B,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAgEjF,qBAAqB,CAAC,QAAQ,EAAE;QAAE,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,gBAAgB;IA8B7E,kBAAkB,CACrB,OAAO,EAAE,4BAA4B,EACrC,MAAM,EAAE,kBAAkB,GAC3B,mBAAmB;CAkCzB"}
@@ -0,0 +1,136 @@
1
+ /**
2
+ * @fileoverview Driver for executing scheduled Integration DISCOVERY jobs (§13).
3
+ * @module @memberjunction/scheduling-engine
4
+ */
5
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
6
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
7
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
8
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
9
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
10
+ };
11
+ import { RegisterClass } from '@memberjunction/global';
12
+ import { BaseScheduledJob } from '../BaseScheduledJob.js';
13
+ import { Metadata, ValidationResult, ValidationErrorInfo, ValidationErrorType, } from '@memberjunction/core';
14
+ import { IntegrationEngine, ConnectorFactory, IntegrationConnectorCreationPipeline } from '@memberjunction/integration-engine';
15
+ /**
16
+ * Driver for executing scheduled Integration DISCOVERY jobs (§13).
17
+ *
18
+ * Unlike {@link IntegrationSyncScheduledJobDriver} (which moves DATA via RunSync), this driver ONLY
19
+ * re-discovers the connector's SCHEMA on a cron — it runs the same `IntegrationConnectorCreationPipeline`
20
+ * as the on-demand `IntegrationRefreshConnectorSchema` mutation (ConnectionTest → Introspect → Persist →
21
+ * PKClassify). Its job is to keep the `MJ: Integration Objects` / `Integration Object Fields` catalog
22
+ * evolving so the entity-map / field-map picker keeps offering newly-appeared tables/columns, and so
23
+ * objects/fields the source dropped get deactivated (reversibly) when discovery is authoritative.
24
+ *
25
+ * It NEVER materializes tables (no RSU) and NEVER syncs records — selection + create-tables remain an
26
+ * explicit operator action. Created/managed entirely over GraphQL via the `discovery` job-kind on
27
+ * `IntegrationCreateSchedule`.
28
+ */
29
+ let IntegrationDiscoveryScheduledJobDriver = class IntegrationDiscoveryScheduledJobDriver extends BaseScheduledJob {
30
+ async Execute(context) {
31
+ const config = this.parseConfiguration(context.Schedule);
32
+ this.log(`Starting integration DISCOVERY refresh for CompanyIntegration: ${config.CompanyIntegrationID}`);
33
+ // Ensure the integration engine metadata is loaded (connector cache, etc.).
34
+ await IntegrationEngine.Instance.Config(false, context.ContextUser);
35
+ const provider = Metadata.Provider; // global-provider-ok: scheduled discovery job is a server-global task, not per-request/per-tenant
36
+ const ci = await provider.GetEntityObject('MJ: Company Integrations', context.ContextUser);
37
+ if (!(await ci.Load(config.CompanyIntegrationID))) {
38
+ return {
39
+ Success: false,
40
+ ErrorMessage: `CompanyIntegration "${config.CompanyIntegrationID}" not found`,
41
+ Details: { CompanyIntegrationID: config.CompanyIntegrationID },
42
+ };
43
+ }
44
+ const integration = await provider.GetEntityObject('MJ: Integrations', context.ContextUser);
45
+ if (!(await integration.Load(ci.IntegrationID))) {
46
+ return {
47
+ Success: false,
48
+ ErrorMessage: `Integration "${ci.IntegrationID}" not found`,
49
+ Details: { CompanyIntegrationID: config.CompanyIntegrationID },
50
+ };
51
+ }
52
+ const connector = ConnectorFactory.Resolve(integration);
53
+ const pipeline = new IntegrationConnectorCreationPipeline();
54
+ const result = await pipeline.Run({
55
+ Connector: connector,
56
+ CompanyIntegration: ci,
57
+ ContextUser: context.ContextUser,
58
+ Provider: provider,
59
+ UniversalPKConvention: config.UniversalPKConvention || undefined,
60
+ TriggerType: 'Scheduled',
61
+ ConsoleMirror: false,
62
+ // §13 — a scheduled discovery refresh is comprehensive by default: it evolves the IO/IOF catalog,
63
+ // deactivating absent objects/fields and reactivating reappeared ones (reversible, gated on the
64
+ // connector's authoritative-discovery getter). Caller can opt out per-job via Configuration.
65
+ DeactivateAbsent: config.DeactivateAbsent ?? true,
66
+ });
67
+ const p = result.PersistResult;
68
+ this.log(`Discovery refresh ${result.Success ? 'completed' : 'failed'}: ` +
69
+ `${p?.ObjectsCreated ?? 0} new objects, ${p?.FieldsCreated ?? 0} new fields, ` +
70
+ `${p?.ObjectsUpdated ?? 0} updated objects, ${p?.FieldsUpdated ?? 0} updated fields`);
71
+ return {
72
+ Success: result.Success,
73
+ ErrorMessage: result.FailureMessage,
74
+ Details: {
75
+ RunID: result.RunID,
76
+ CompanyIntegrationID: config.CompanyIntegrationID,
77
+ ObjectsCreated: p?.ObjectsCreated ?? 0,
78
+ ObjectsUpdated: p?.ObjectsUpdated ?? 0,
79
+ FieldsCreated: p?.FieldsCreated ?? 0,
80
+ FieldsUpdated: p?.FieldsUpdated ?? 0,
81
+ UnresolvedObjects: result.UnresolvedObjects,
82
+ },
83
+ };
84
+ }
85
+ ValidateConfiguration(schedule) {
86
+ const result = new ValidationResult();
87
+ try {
88
+ const config = this.parseConfiguration(schedule);
89
+ if (!config.CompanyIntegrationID) {
90
+ result.Errors.push(new ValidationErrorInfo('Configuration.CompanyIntegrationID', 'CompanyIntegrationID is required', config.CompanyIntegrationID, ValidationErrorType.Failure));
91
+ }
92
+ }
93
+ catch (error) {
94
+ const errorMessage = error instanceof Error ? error.message : 'Invalid configuration';
95
+ result.Errors.push(new ValidationErrorInfo('Configuration', errorMessage, schedule.Configuration, ValidationErrorType.Failure));
96
+ }
97
+ result.Success = result.Errors.length === 0;
98
+ return result;
99
+ }
100
+ FormatNotification(context, result) {
101
+ const details = result.Details;
102
+ const subject = result.Success
103
+ ? `Scheduled Integration Discovery Completed: ${context.Schedule.Name}`
104
+ : `Scheduled Integration Discovery Failed: ${context.Schedule.Name}`;
105
+ const body = result.Success
106
+ ? [
107
+ `The scheduled integration discovery "${context.Schedule.Name}" completed successfully.`,
108
+ '',
109
+ `New objects: ${details?.ObjectsCreated ?? 'N/A'}`,
110
+ `New fields: ${details?.FieldsCreated ?? 'N/A'}`,
111
+ `Updated objects: ${details?.ObjectsUpdated ?? 'N/A'}`,
112
+ `Updated fields: ${details?.FieldsUpdated ?? 'N/A'}`,
113
+ ].join('\n')
114
+ : [
115
+ `The scheduled integration discovery "${context.Schedule.Name}" failed.`,
116
+ '',
117
+ `Error: ${result.ErrorMessage ?? 'Unknown error'}`,
118
+ ].join('\n');
119
+ return {
120
+ Subject: subject,
121
+ Body: body,
122
+ Priority: result.Success ? 'Normal' : 'High',
123
+ Metadata: {
124
+ ScheduleID: context.Schedule.ID,
125
+ JobType: 'IntegrationDiscovery',
126
+ CompanyIntegrationID: details?.CompanyIntegrationID,
127
+ RunID: details?.RunID,
128
+ }
129
+ };
130
+ }
131
+ };
132
+ IntegrationDiscoveryScheduledJobDriver = __decorate([
133
+ RegisterClass(BaseScheduledJob, 'IntegrationDiscoveryScheduledJobDriver')
134
+ ], IntegrationDiscoveryScheduledJobDriver);
135
+ export { IntegrationDiscoveryScheduledJobDriver };
136
+ //# sourceMappingURL=IntegrationDiscoveryScheduledJobDriver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IntegrationDiscoveryScheduledJobDriver.js","sourceRoot":"","sources":["../../src/drivers/IntegrationDiscoveryScheduledJobDriver.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"IntegrationSyncScheduledJobDriver.d.ts","sourceRoot":"","sources":["../../src/drivers/IntegrationSyncScheduledJobDriver.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,gBAAgB,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AACrF,OAAO,EAAE,gBAAgB,EAA4C,MAAM,sBAAsB,CAAC;AAGlG,OAAO,EACH,kBAAkB,EAClB,mBAAmB,EAEtB,MAAM,uCAAuC,CAAC;AAE/C;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,qBACa,iCAAkC,SAAQ,gBAAgB;IAEtD,OAAO,CAAC,OAAO,EAAE,4BAA4B,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAiCjF,qBAAqB,CAAC,QAAQ,EAAE;QAAE,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,gBAAgB;IAqC7E,kBAAkB,CACrB,OAAO,EAAE,4BAA4B,EACrC,MAAM,EAAE,kBAAkB,GAC3B,mBAAmB;IAwBtB,OAAO,CAAC,WAAW;IAsBnB,OAAO,CAAC,gBAAgB;IAqBxB,OAAO,CAAC,gBAAgB;CAW3B"}
1
+ {"version":3,"file":"IntegrationSyncScheduledJobDriver.d.ts","sourceRoot":"","sources":["../../src/drivers/IntegrationSyncScheduledJobDriver.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,gBAAgB,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AACrF,OAAO,EAAE,gBAAgB,EAA4C,MAAM,sBAAsB,CAAC;AAGlG,OAAO,EACH,kBAAkB,EAClB,mBAAmB,EAEtB,MAAM,uCAAuC,CAAC;AAE/C;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,qBACa,iCAAkC,SAAQ,gBAAgB;IAEtD,OAAO,CAAC,OAAO,EAAE,4BAA4B,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAoCjF,qBAAqB,CAAC,QAAQ,EAAE;QAAE,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,gBAAgB;IAqC7E,kBAAkB,CACrB,OAAO,EAAE,4BAA4B,EACrC,MAAM,EAAE,kBAAkB,GAC3B,mBAAmB;IAwBtB,OAAO,CAAC,WAAW;IAsBnB,OAAO,CAAC,gBAAgB;IAqBxB,OAAO,CAAC,gBAAgB;CAW3B"}
@@ -48,8 +48,11 @@ let IntegrationSyncScheduledJobDriver = class IntegrationSyncScheduledJobDriver
48
48
  ScheduledJobRunID: context.Run.ID,
49
49
  SyncDirection: config.SyncDirection,
50
50
  };
51
- const result = await IntegrationEngine.Instance.RunSync(config.CompanyIntegrationID, context.ContextUser, 'Scheduled', undefined, // onProgress
52
- undefined, // onNotification
51
+ const result = await IntegrationEngine.Instance.RunSync(config.CompanyIntegrationID, context.ContextUser, 'Scheduled',
52
+ // Heartbeat the lease per sync batch so a healthy long-running sync
53
+ // keeps its concurrency slot (GH #2749). Fire-and-forget is safe —
54
+ // context.heartbeat never throws and self-throttles (~5 min).
55
+ () => { void context.heartbeat?.(); }, undefined, // onNotification
53
56
  options);
54
57
  this.log(`Integration sync completed: ${result.RecordsProcessed} processed, ` +
55
58
  `${result.RecordsCreated} created, ${result.RecordsUpdated} updated, ` +
@@ -1 +1 @@
1
- {"version":3,"file":"IntegrationSyncScheduledJobDriver.js","sourceRoot":"","sources":["../../src/drivers/IntegrationSyncScheduledJobDriver.ts"],"names":[],"mappings":"AAAA;;;GAGG;;;;;;;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAgC,MAAM,qBAAqB,CAAC;AACrF,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAClG,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAQvE;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEI,IAAM,iCAAiC,GAAvC,MAAM,iCAAkC,SAAQ,gBAAgB;IAE5D,KAAK,CAAC,OAAO,CAAC,OAAqC;QACtD,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAkC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAE1F,IAAI,CAAC,GAAG,CAAC,qDAAqD,MAAM,CAAC,oBAAoB,EAAE,CAAC,CAAC;QAE7F,mDAAmD;QACnD,MAAM,iBAAiB,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;QAEpE,MAAM,OAAO,GAA2B;YACpC,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,iBAAiB,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE;YACjC,aAAa,EAAE,MAAM,CAAC,aAAa;SACtC,CAAC;QAEF,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CACnD,MAAM,CAAC,oBAAoB,EAC3B,OAAO,CAAC,WAAW,EACnB,WAAW,EACX,SAAS,EAAE,aAAa;QACxB,SAAS,EAAE,iBAAiB;QAC5B,OAAO,CACV,CAAC;QAEF,IAAI,CAAC,GAAG,CACJ,+BAA+B,MAAM,CAAC,gBAAgB,cAAc;YACpE,GAAG,MAAM,CAAC,cAAc,aAAa,MAAM,CAAC,cAAc,YAAY;YACtE,GAAG,MAAM,CAAC,cAAc,SAAS,CACpC,CAAC;QAEF,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5C,CAAC;IAEM,qBAAqB,CAAC,QAAoC;QAC7D,MAAM,MAAM,GAAG,IAAI,gBAAgB,EAAE,CAAC;QAEtC,IAAI,CAAC;YACD,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAkC,QAAyD,CAAC,CAAC;YAEnI,IAAI,CAAC,MAAM,CAAC,oBAAoB,EAAE,CAAC;gBAC/B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,mBAAmB,CACtC,oCAAoC,EACpC,kCAAkC,EAClC,MAAM,CAAC,oBAAoB,EAC3B,mBAAmB,CAAC,OAAO,CAC9B,CAAC,CAAC;YACP,CAAC;YAED,IAAI,MAAM,CAAC,YAAY,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC7D,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,mBAAmB,CACtC,4BAA4B,EAC5B,0CAA0C,EAC1C,MAAM,CAAC,YAAY,EACnB,mBAAmB,CAAC,OAAO,CAC9B,CAAC,CAAC;YACP,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,uBAAuB,CAAC;YACtF,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,mBAAmB,CACtC,eAAe,EACf,YAAY,EACZ,QAAQ,CAAC,aAAa,EACtB,mBAAmB,CAAC,OAAO,CAC9B,CAAC,CAAC;QACP,CAAC;QAED,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC;QAC5C,OAAO,MAAM,CAAC;IAClB,CAAC;IAEM,kBAAkB,CACrB,OAAqC,EACrC,MAA0B;QAE1B,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAE/B,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO;YAC1B,CAAC,CAAC,yCAAyC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE;YAClE,CAAC,CAAC,sCAAsC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QAEpE,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO;YACvB,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC;YACzC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAE7C,OAAO;YACH,OAAO,EAAE,OAAO;YAChB,IAAI,EAAE,IAAI;YACV,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM;YAC5C,QAAQ,EAAE;gBACN,UAAU,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAC/B,OAAO,EAAE,iBAAiB;gBAC1B,oBAAoB,EAAE,OAAO,EAAE,oBAAoB;gBACnD,uBAAuB,EAAE,OAAO,EAAE,uBAAuB;aAC5D;SACJ,CAAC;IACN,CAAC;IAEO,WAAW,CACf,MAAuC,EACvC,UAAsB;QAEtB,OAAO;YACH,OAAO,EAAE,UAAU,CAAC,OAAO;YAC3B,YAAY,EAAE,UAAU,CAAC,YAAY;YACrC,OAAO,EAAE;gBACL,uBAAuB,EAAE,UAAU,CAAC,KAAK;gBACzC,oBAAoB,EAAE,MAAM,CAAC,oBAAoB;gBACjD,gBAAgB,EAAE,UAAU,CAAC,gBAAgB;gBAC7C,cAAc,EAAE,UAAU,CAAC,cAAc;gBACzC,cAAc,EAAE,UAAU,CAAC,cAAc;gBACzC,cAAc,EAAE,UAAU,CAAC,cAAc;gBACzC,cAAc,EAAE,UAAU,CAAC,cAAc;gBACzC,cAAc,EAAE,UAAU,CAAC,cAAc;gBACzC,gBAAgB,EAAE,UAAU,CAAC,gBAAgB;gBAC7C,QAAQ,EAAE,UAAU,CAAC,QAAQ;aAChC;SACJ,CAAC;IACN,CAAC;IAEO,gBAAgB,CACpB,OAAqC,EACrC,OAA4C;QAE5C,MAAM,UAAU,GAAG,OAAO,EAAE,QAA8B,CAAC;QAC3D,MAAM,WAAW,GAAG,UAAU,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;QAEtF,OAAO;YACH,mCAAmC,OAAO,CAAC,QAAQ,CAAC,IAAI,2BAA2B;YACnF,EAAE;YACF,sBAAsB,OAAO,EAAE,gBAAgB,IAAI,KAAK,EAAE;YAC1D,cAAc,OAAO,EAAE,cAAc,IAAI,KAAK,EAAE;YAChD,cAAc,OAAO,EAAE,cAAc,IAAI,KAAK,EAAE;YAChD,cAAc,OAAO,EAAE,cAAc,IAAI,KAAK,EAAE;YAChD,cAAc,OAAO,EAAE,cAAc,IAAI,KAAK,EAAE;YAChD,cAAc,OAAO,EAAE,cAAc,IAAI,KAAK,EAAE;YAChD,EAAE;YACF,aAAa,WAAW,EAAE;SAC7B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjB,CAAC;IAEO,gBAAgB,CACpB,OAAqC,EACrC,MAA0B;QAE1B,OAAO;YACH,mCAAmC,OAAO,CAAC,QAAQ,CAAC,IAAI,WAAW;YACnE,EAAE;YACF,UAAU,MAAM,CAAC,YAAY,IAAI,eAAe,EAAE;YAClD,oBAAoB,MAAM,CAAC,OAAO,EAAE,cAAc,IAAI,KAAK,EAAE;SAChE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjB,CAAC;CACJ,CAAA;AAzJY,iCAAiC;IAD7C,aAAa,CAAC,gBAAgB,EAAE,mCAAmC,CAAC;GACxD,iCAAiC,CAyJ7C"}
1
+ {"version":3,"file":"IntegrationSyncScheduledJobDriver.js","sourceRoot":"","sources":["../../src/drivers/IntegrationSyncScheduledJobDriver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * @fileoverview Scheduled-job driver that runs a Record Process on its cron schedule — sibling to
3
+ * AgentScheduledJobDriver / ActionScheduledJobDriver. Delegates to the RecordProcessExecutor and
4
+ * renews the job lease via the scheduler heartbeat each batch.
5
+ * @module @memberjunction/scheduling-engine
6
+ */
7
+ import { ValidationResult } from '@memberjunction/core';
8
+ import { BaseScheduledJob, ScheduledJobExecutionContext } from '../BaseScheduledJob.js';
9
+ import { ScheduledJobResult, NotificationContent } from '@memberjunction/scheduling-base-types';
10
+ /**
11
+ * Driver for executing a scheduled Record Process.
12
+ *
13
+ * Configuration schema: `{ "RecordProcessID": "<id>" }`
14
+ */
15
+ export declare class RecordProcessScheduledJobDriver extends BaseScheduledJob {
16
+ Execute(context: ScheduledJobExecutionContext): Promise<ScheduledJobResult>;
17
+ ValidateConfiguration(schedule: Parameters<RecordProcessScheduledJobDriver['parseConfiguration']>[0]): ValidationResult;
18
+ FormatNotification(context: ScheduledJobExecutionContext, result: ScheduledJobResult): NotificationContent;
19
+ }
20
+ //# sourceMappingURL=RecordProcessScheduledJobDriver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RecordProcessScheduledJobDriver.d.ts","sourceRoot":"","sources":["../../src/drivers/RecordProcessScheduledJobDriver.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,gBAAgB,EAA4C,MAAM,sBAAsB,CAAC;AAElG,OAAO,EAAE,gBAAgB,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AACrF,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAA6B,MAAM,uCAAuC,CAAC;AAO3H;;;;GAIG;AACH,qBACa,+BAAgC,SAAQ,gBAAgB;IACpD,OAAO,CAAC,OAAO,EAAE,4BAA4B,GAAG,OAAO,CAAC,kBAAkB,CAAC;IA8BjF,qBAAqB,CAAC,QAAQ,EAAE,UAAU,CAAC,+BAA+B,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,gBAAgB;IAwBvH,kBAAkB,CAAC,OAAO,EAAE,4BAA4B,EAAE,MAAM,EAAE,kBAAkB,GAAG,mBAAmB;CAYpH"}
@@ -0,0 +1,81 @@
1
+ /**
2
+ * @fileoverview Scheduled-job driver that runs a Record Process on its cron schedule — sibling to
3
+ * AgentScheduledJobDriver / ActionScheduledJobDriver. Delegates to the RecordProcessExecutor and
4
+ * renews the job lease via the scheduler heartbeat each batch.
5
+ * @module @memberjunction/scheduling-engine
6
+ */
7
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
8
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
9
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
10
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
11
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
12
+ };
13
+ import { RegisterClass } from '@memberjunction/global';
14
+ import { ValidationResult, ValidationErrorInfo, ValidationErrorType } from '@memberjunction/core';
15
+ import { RecordProcessExecutor } from '@memberjunction/record-set-processor';
16
+ import { BaseScheduledJob } from '../BaseScheduledJob.js';
17
+ /**
18
+ * Driver for executing a scheduled Record Process.
19
+ *
20
+ * Configuration schema: `{ "RecordProcessID": "<id>" }`
21
+ */
22
+ let RecordProcessScheduledJobDriver = class RecordProcessScheduledJobDriver extends BaseScheduledJob {
23
+ async Execute(context) {
24
+ const config = this.parseConfiguration(context.Schedule);
25
+ if (!config.RecordProcessID) {
26
+ throw new Error('RecordProcessID is required in the scheduled job configuration');
27
+ }
28
+ void context.heartbeat?.();
29
+ const result = await new RecordProcessExecutor().RunByID(config.RecordProcessID, {
30
+ contextUser: context.ContextUser,
31
+ triggeredBy: 'Schedule',
32
+ // Link the Process Run back to this ScheduledJobRun so the scheduling UI can join them.
33
+ scheduledJobRunID: context.Run?.ID,
34
+ // Renew the lease as each batch reports progress.
35
+ onProgress: () => { void context.heartbeat?.(); },
36
+ });
37
+ return {
38
+ Success: result.Status === 'Completed',
39
+ ErrorMessage: result.ErrorMessage,
40
+ Details: {
41
+ ProcessRunID: result.ProcessRunID,
42
+ Status: result.Status,
43
+ Processed: result.Processed,
44
+ SuccessCount: result.Success,
45
+ ErrorCount: result.Error,
46
+ SkippedCount: result.Skipped,
47
+ },
48
+ };
49
+ }
50
+ ValidateConfiguration(schedule) {
51
+ const result = new ValidationResult();
52
+ try {
53
+ const config = this.parseConfiguration(schedule);
54
+ if (!config.RecordProcessID) {
55
+ result.Errors.push(new ValidationErrorInfo('Configuration.RecordProcessID', 'RecordProcessID is required', config.RecordProcessID, ValidationErrorType.Failure));
56
+ }
57
+ }
58
+ catch (error) {
59
+ result.Errors.push(new ValidationErrorInfo('Configuration', error instanceof Error ? error.message : 'Invalid configuration', schedule.Configuration, ValidationErrorType.Failure));
60
+ }
61
+ result.Success = result.Errors.length === 0;
62
+ return result;
63
+ }
64
+ FormatNotification(context, result) {
65
+ const d = result.Details;
66
+ return {
67
+ Subject: result.Success
68
+ ? `Record Process Completed: ${context.Schedule.Name}`
69
+ : `Record Process Failed: ${context.Schedule.Name}`,
70
+ Body: result.Success
71
+ ? `Processed ${d?.Processed ?? 0} records — ${d?.SuccessCount ?? 0} succeeded, ${d?.ErrorCount ?? 0} failed, ${d?.SkippedCount ?? 0} skipped. Run ${d?.ProcessRunID ?? ''}.`
72
+ : `Failed: ${result.ErrorMessage ?? 'unknown error'}`,
73
+ Priority: result.Success ? 'Normal' : 'High',
74
+ };
75
+ }
76
+ };
77
+ RecordProcessScheduledJobDriver = __decorate([
78
+ RegisterClass(BaseScheduledJob, 'RecordProcessScheduledJobDriver')
79
+ ], RecordProcessScheduledJobDriver);
80
+ export { RecordProcessScheduledJobDriver };
81
+ //# sourceMappingURL=RecordProcessScheduledJobDriver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RecordProcessScheduledJobDriver.js","sourceRoot":"","sources":["../../src/drivers/RecordProcessScheduledJobDriver.ts"],"names":[],"mappings":"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"}
@@ -5,5 +5,7 @@
5
5
  export * from './AgentScheduledJobDriver.js';
6
6
  export * from './ActionScheduledJobDriver.js';
7
7
  export * from './IntegrationSyncScheduledJobDriver.js';
8
+ export * from './IntegrationDiscoveryScheduledJobDriver.js';
8
9
  export * from './AgentRunSweepScheduledJobDriver.js';
10
+ export * from './RecordProcessScheduledJobDriver.js';
9
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/drivers/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qCAAqC,CAAC;AACpD,cAAc,mCAAmC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/drivers/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qCAAqC,CAAC;AACpD,cAAc,0CAA0C,CAAC;AACzD,cAAc,mCAAmC,CAAC;AAClD,cAAc,mCAAmC,CAAC"}
@@ -5,5 +5,7 @@
5
5
  export * from './AgentScheduledJobDriver.js';
6
6
  export * from './ActionScheduledJobDriver.js';
7
7
  export * from './IntegrationSyncScheduledJobDriver.js';
8
+ export * from './IntegrationDiscoveryScheduledJobDriver.js';
8
9
  export * from './AgentRunSweepScheduledJobDriver.js';
10
+ export * from './RecordProcessScheduledJobDriver.js';
9
11
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/drivers/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qCAAqC,CAAC;AACpD,cAAc,mCAAmC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/drivers/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qCAAqC,CAAC;AACpD,cAAc,0CAA0C,CAAC;AACzD,cAAc,mCAAmC,CAAC;AAClD,cAAc,mCAAmC,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@memberjunction/scheduling-engine",
3
3
  "type": "module",
4
- "version": "5.40.2",
4
+ "version": "5.42.0",
5
5
  "description": "MemberJunction: Scheduling Engine - core engine for executing scheduled jobs with plugin architecture",
6
6
  "main": "dist/index.js",
7
7
  "types": "dist/index.d.ts",
@@ -17,17 +17,18 @@
17
17
  "author": "MemberJunction.com",
18
18
  "license": "ISC",
19
19
  "dependencies": {
20
- "@memberjunction/integration-engine": "5.40.2",
21
- "@memberjunction/actions": "5.40.2",
22
- "@memberjunction/actions-base": "5.40.2",
23
- "@memberjunction/ai-core-plus": "5.40.2",
24
- "@memberjunction/ai-agents": "5.40.2",
25
- "@memberjunction/core": "5.40.2",
26
- "@memberjunction/core-entities": "5.40.2",
27
- "@memberjunction/global": "5.40.2",
28
- "@memberjunction/scheduling-base-types": "5.40.2",
29
- "@memberjunction/scheduling-engine-base": "5.40.2",
30
- "@memberjunction/sqlserver-dataprovider": "5.40.2",
20
+ "@memberjunction/integration-engine": "5.42.0",
21
+ "@memberjunction/actions": "5.42.0",
22
+ "@memberjunction/actions-base": "5.42.0",
23
+ "@memberjunction/ai-core-plus": "5.42.0",
24
+ "@memberjunction/ai-agents": "5.42.0",
25
+ "@memberjunction/core": "5.42.0",
26
+ "@memberjunction/core-entities": "5.42.0",
27
+ "@memberjunction/global": "5.42.0",
28
+ "@memberjunction/scheduling-base-types": "5.42.0",
29
+ "@memberjunction/scheduling-engine-base": "5.42.0",
30
+ "@memberjunction/sqlserver-dataprovider": "5.42.0",
31
+ "@memberjunction/record-set-processor": "5.42.0",
31
32
  "cron-parser": "^4.9.0",
32
33
  "uuid": "^13.0.0"
33
34
  },