velocious 1.0.612 → 1.0.613

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -2396,7 +2396,7 @@ VELOCIOUS_BACKGROUND_JOBS_JOB_TIMEOUT_MS=5400000
2396
2396
 
2397
2397
  `maxConcurrentInlineJobs` (default: `4`) caps how many `executionMode: "inline"` jobs a single `background-jobs-worker` process runs in parallel. Concurrency is at the JS event-loop level: every job in flight shares the worker's process and DB connection pool, so the cap should fit the pool, not the CPU count. Forking remains the right tool when you need memory isolation across long-running jobs or want to use more cores; select it with `executionMode: "forked"`.
2398
2398
 
2399
- New jobs default to `executionMode: "pooled"`: a worker runs them in warm, reusable Node child runners. `pooledRunnerCount` (default: `4`) bounds this independent per-worker pool, and `pooledRunnerConcurrency` (default: `1`) sets how many jobs each child runs at once on its own event loop, so total pooled capacity is `pooledRunnerCount × pooledRunnerConcurrency` — raise concurrency for I/O-bound jobs to get high throughput from a bounded, isolated set of processes. Workers advertise that exact free-slot count and the main consumes one slot per durable handoff, allowing one readiness notification to fill the pool. `pooledRunnerCount`, `pooledRunnerConcurrency`, and `pooledRunnerMaxJobs` must be finite positive integers; the RSS and lifetime limits must be finite positive numbers. A child is recycled after an acknowledged job when it reaches `pooledRunnerMaxJobs` (default: `100`), `pooledRunnerMaxRssBytes` (default: `536870912`, or 512 MiB), or `pooledRunnerMaxLifetimeMs` (default: `3600000`, or one hour). `execution_mode` is the single source of truth for a job's runtime — pooled rows persist as `execution_mode = "pooled"` directly. See [execution modes and pooled runners](docs/background-jobs.md#execution-modes-and-pooled-runners).
2399
+ New jobs default to `executionMode: "pooled"`: a worker runs them in warm, reusable Node child runners. `pooledRunnerCount` (default: `4`) bounds this independent per-worker pool, and `pooledRunnerConcurrency` (default: `1`) sets how many jobs each child runs at once on its own event loop, so total pooled capacity is `pooledRunnerCount × pooledRunnerConcurrency` — raise concurrency for I/O-bound jobs to get high throughput from a bounded, isolated set of processes. Workers advertise that exact free-slot count and the main consumes one slot per durable handoff, allowing one readiness notification to fill the pool. If an initialized child exits unexpectedly, the worker immediately advertises the freed capacity while failure reports retry; the replacement is spawned lazily by the next dispatch, and a pre-startup crash does not trigger a respawn loop. `pooledRunnerCount`, `pooledRunnerConcurrency`, and `pooledRunnerMaxJobs` must be finite positive integers; the RSS and lifetime limits must be finite positive numbers. A child is recycled after an acknowledged job when it reaches `pooledRunnerMaxJobs` (default: `100`), `pooledRunnerMaxRssBytes` (default: `536870912`, or 512 MiB), or `pooledRunnerMaxLifetimeMs` (default: `3600000`, or one hour). `execution_mode` is the single source of truth for a job's runtime — pooled rows persist as `execution_mode = "pooled"` directly. See [execution modes and pooled runners](docs/background-jobs.md#execution-modes-and-pooled-runners).
2400
2400
 
2401
2401
  Cold pooled jobs share one atomic model-bootstrap phase. If that phase fails, all
2402
2402
  waiting jobs receive the failure; a later job in the surviving child cannot run
@@ -141,3 +141,4 @@ function handleMessage(message) {
141
141
  process.on("message", (message) => handleMessage(message))
142
142
  process.once("disconnect", () => void shutdownRunner(0))
143
143
  for (const signal of ["SIGTERM", "SIGINT"]) process.once(signal, () => void shutdownRunner(1))
144
+ if (process.send) process.send({type: "ready"})
@@ -194,8 +194,10 @@ export default class BackgroundJobsWorker {
194
194
  this.inflightPooledJobs = new Set()
195
195
  /** @type {Set<import("node:child_process").ChildProcess>} */
196
196
  this.pooledChildren = new Set()
197
- /** @type {Map<import("node:child_process").ChildProcess, {createdAtMs: number, jobsRun: number, inflight: Map<string, {payload: import("./types.js").BackgroundJobPayload & {id: string}, resolve?: (value: void) => void, timeoutTimer?: ReturnType<typeof setTimeout> | null}>, lastDispatchSeq: number, retiring: boolean, settling?: boolean, timeoutSigkillTimer?: ReturnType<typeof setTimeout> | null}>} */
197
+ /** @type {Map<import("node:child_process").ChildProcess, {createdAtMs: number, jobsRun: number, inflight: Map<string, {payload: import("./types.js").BackgroundJobPayload & {id: string}, resolve?: (value: void) => void, pooledJob?: Promise<void>, timeoutTimer?: ReturnType<typeof setTimeout> | null}>, lastDispatchSeq: number, retiring: boolean, started?: boolean, settling?: boolean, timeoutSigkillTimer?: ReturnType<typeof setTimeout> | null}>} */
198
198
  this.pooledChildStates = new Map()
199
+ /** @type {WeakSet<Promise<void>>} */
200
+ this._pooledStartupFailureJobs = new WeakSet()
199
201
  // Monotonic dispatch counter for round-robin child selection: each dispatch stamps
200
202
  // the chosen child, and selection prefers the child dispatched least recently.
201
203
  this._pooledDispatchSeq = 0
@@ -600,16 +602,16 @@ export default class BackgroundJobsWorker {
600
602
  }
601
603
 
602
604
  /**
603
- * Tells main we're ready for the next job — but only if we haven't been
604
- * asked to drain. Once we've sent `draining` we don't want to take more
605
- * work.
605
+ * Advertises current worker capacity unless the worker is draining.
606
+ * @param {object} [options] - Advertisement options.
607
+ * @param {boolean} [options.revokePooledAdmission] - Revoke pooled credits while preserving other execution modes.
606
608
  * @returns {void}
607
609
  */
608
- _sendReadyIfRunning() {
610
+ _sendReadyIfRunning({revokePooledAdmission = false} = {}) {
609
611
  if (this.shouldStop) return
610
612
  if (!this.jsonSocket) return
611
613
 
612
- const readyMessage = this._readyMessage()
614
+ const readyMessage = this._readyMessage({revokePooledAdmission})
613
615
 
614
616
  if (!readyMessage) return
615
617
  this.jsonSocket.send(readyMessage)
@@ -617,21 +619,24 @@ export default class BackgroundJobsWorker {
617
619
 
618
620
  /**
619
621
  * Runs ready message.
622
+ * @param {object} [options] - Advertisement options.
623
+ * @param {boolean} [options.revokePooledAdmission] - Revoke pooled credits while preserving other execution modes.
620
624
  * @returns {import("./types.js").BackgroundJobSocketMessage | null} - Ready message or null when the worker has no capacity.
621
625
  */
622
- _readyMessage() {
626
+ _readyMessage({revokePooledAdmission = false} = {}) {
623
627
  const acceptsProcessJob = this.inflightProcessJobs.size < this.maxConcurrentForkedJobs
624
628
  const acceptsInline = this.inflightInlineJobs.size < this.maxConcurrentInlineJobs
625
- const acceptsPooled = this._availablePooledSlots() > 0
629
+ const availablePooledSlots = revokePooledAdmission ? 0 : this._availablePooledSlots()
630
+ const acceptsPooled = availablePooledSlots > 0
626
631
 
627
- if (!acceptsProcessJob && !acceptsInline && !acceptsPooled) return null
632
+ if (!revokePooledAdmission && !acceptsProcessJob && !acceptsInline && !acceptsPooled) return null
628
633
 
629
634
  return {
630
635
  type: "ready",
631
636
  acceptsForked: acceptsProcessJob,
632
637
  acceptsInline,
633
638
  acceptsPooled,
634
- availablePooledSlots: this._availablePooledSlots(),
639
+ availablePooledSlots,
635
640
  acceptsSpawned: acceptsProcessJob
636
641
  }
637
642
  }
@@ -646,7 +651,7 @@ export default class BackgroundJobsWorker {
646
651
  let inflight
647
652
  inflight = pooledJob.finally(() => {
648
653
  this.inflightPooledJobs.delete(inflight)
649
- if (!this.shouldStop) this._sendReadyIfRunning()
654
+ if (!this.shouldStop && !this._pooledStartupFailureJobs.has(pooledJob)) this._sendReadyIfRunning()
650
655
  })
651
656
  this.inflightPooledJobs.add(inflight)
652
657
  }
@@ -689,16 +694,22 @@ export default class BackgroundJobsWorker {
689
694
  // Stamp the round-robin cursor so the next dispatch prefers a different child.
690
695
  state.lastDispatchSeq = ++this._pooledDispatchSeq
691
696
 
692
- return new Promise((resolve) => {
693
- const timeoutTimer = this._armPooledJobTimeout({child, payload})
697
+ /**
698
+ * Resolves the pooled job promise.
699
+ * @type {(value: void) => void}
700
+ */
701
+ let resolvePooledJob = () => {}
702
+ const pooledJob = new Promise((resolve) => { resolvePooledJob = resolve })
703
+ const timeoutTimer = this._armPooledJobTimeout({child, payload})
694
704
 
695
- state.inflight.set(payload.id, {payload, resolve, timeoutTimer})
696
- try {
697
- child.send({type: "job", payload, sharedTransactionBroker: this._pooledJobSharedTransactionBrokerConfig()})
698
- } catch (error) {
699
- void this._handlePooledChildFailure({child, error})
700
- }
701
- })
705
+ state.inflight.set(payload.id, {payload, resolve: resolvePooledJob, pooledJob, timeoutTimer})
706
+ try {
707
+ child.send({type: "job", payload, sharedTransactionBroker: this._pooledJobSharedTransactionBrokerConfig()})
708
+ } catch (error) {
709
+ void this._handlePooledChildFailure({child, error})
710
+ }
711
+
712
+ return pooledJob
702
713
  }
703
714
 
704
715
  /**
@@ -769,7 +780,8 @@ export default class BackgroundJobsWorker {
769
780
  * (SIGTERM, then SIGKILL after the grace) — a hung JS job cannot be cancelled
770
781
  * any other way. The non-clean exit flows through `_handlePooledChildFailure`,
771
782
  * which reports every in-flight job on the child failed (so they requeue) and
772
- * drops it from tracking; capacity is refilled on the next dispatch.
783
+ * drops it from tracking; the failure path immediately re-advertises the
784
+ * resulting capacity once the runner has completed startup.
773
785
  * @param {object} args - Options.
774
786
  * @param {import("node:child_process").ChildProcess} args.child - Pooled child.
775
787
  * @param {string} args.jobId - Job id that overran.
@@ -810,7 +822,7 @@ export default class BackgroundJobsWorker {
810
822
  })
811
823
  this.pooledChildren.add(child)
812
824
  this.inflightProcessChildren.add(child)
813
- this.pooledChildStates.set(child, {createdAtMs: Date.now(), jobsRun: 0, inflight: new Map(), lastDispatchSeq: 0, retiring: false})
825
+ this.pooledChildStates.set(child, {createdAtMs: Date.now(), jobsRun: 0, inflight: new Map(), lastDispatchSeq: 0, retiring: false, started: false})
814
826
  child.on("message", (message) => this._handlePooledChildMessage({child, message}))
815
827
  child.once("exit", (code, signal) => this._handlePooledChildFailure({child, error: new Error(`Pooled background job runner exited: code=${code} signal=${signal || "none"}`)}))
816
828
  child.once("error", (error) => this._handlePooledChildFailure({child, error}))
@@ -829,7 +841,12 @@ export default class BackgroundJobsWorker {
829
841
  if (!message || typeof message !== "object") return
830
842
  const record = /** @type {{type?: ReturnType<typeof JSON.parse>, jobId?: ReturnType<typeof JSON.parse>, acknowledged?: ReturnType<typeof JSON.parse>, rssBytes?: ReturnType<typeof JSON.parse>, error?: ReturnType<typeof JSON.parse>}} */ (message)
831
843
  const state = this.pooledChildStates.get(child)
844
+ if (record.type === "ready") {
845
+ if (state) state.started = true
846
+ return
847
+ }
832
848
  if (record.type !== "job-outcome" || !state || state.settling || typeof record.jobId !== "string") return
849
+ state.started = true
833
850
  const entry = state.inflight.get(record.jobId)
834
851
  if (!entry) return
835
852
 
@@ -907,9 +924,11 @@ export default class BackgroundJobsWorker {
907
924
  /**
908
925
  * Removes an exited/unhealthy pooled child and reports every job that was
909
926
  * in-flight on it as failed — a process-level crash's blast radius is the
910
- * child's whole in-flight set. Capacity is refilled lazily on the next
911
- * dispatch (a spawnable slot is still advertised), avoiding a tight respawn
912
- * loop when a child crashes on startup.
927
+ * child's whole in-flight set. Once the child has completed startup, its
928
+ * freed capacity is advertised immediately; the replacement itself is still
929
+ * spawned lazily by the next dispatch. A child that exits before its startup
930
+ * handshake does not re-announce, avoiding a tight respawn loop on startup
931
+ * failure.
913
932
  * @param {object} args - Failure details.
914
933
  * @param {import("node:child_process").ChildProcess} args.child - Pooled child.
915
934
  * @param {ReturnType<typeof JSON.parse>} args.error - Failure.
@@ -934,7 +953,7 @@ export default class BackgroundJobsWorker {
934
953
  if (state) state.inflight.clear()
935
954
  this.pooledChildStates.delete(child)
936
955
 
937
- await Promise.allSettled(entries.map(async (entry) => {
956
+ const failureReports = entries.map(async (entry) => {
938
957
  await this._reportJobResult({
939
958
  jobId: entry.payload.id,
940
959
  status: "failed",
@@ -944,7 +963,26 @@ export default class BackgroundJobsWorker {
944
963
  workerId: entry.payload.workerId || this.workerId
945
964
  })
946
965
  if (entry.resolve) entry.resolve(undefined)
947
- }))
966
+ })
967
+
968
+ // Start every fallback report before announcing capacity so the main cannot
969
+ // observe a replacement slot before the failed jobs' reports are in flight.
970
+ // The report promises remain tracked below; a slow retry must not hold the
971
+ // newly freed runner capacity hostage.
972
+ if (state && state.started !== false) {
973
+ this._sendReadyIfRunning()
974
+ } else if (state) {
975
+ for (const entry of entries) {
976
+ if (entry.pooledJob) this._pooledStartupFailureJobs.add(entry.pooledJob)
977
+ }
978
+ // A previous ready message may still have unconsumed pooled credits at the
979
+ // main. Revoke them authoritatively without suppressing valid inline or
980
+ // process-runner readiness; otherwise queued jobs can trigger a startup
981
+ // crash loop using the stale credits.
982
+ this._sendReadyIfRunning({revokePooledAdmission: true})
983
+ }
984
+
985
+ await Promise.allSettled(failureReports)
948
986
  }
949
987
 
950
988
  /**
@@ -131,4 +131,6 @@ process.on("message", (message) => handleMessage(message));
131
131
  process.once("disconnect", () => void shutdownRunner(0));
132
132
  for (const signal of ["SIGTERM", "SIGINT"])
133
133
  process.once(signal, () => void shutdownRunner(1));
134
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9vbGVkLXJ1bm5lci1jaGlsZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iYWNrZ3JvdW5kLWpvYnMvcG9vbGVkLXJ1bm5lci1jaGlsZC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosT0FBTyxhQUFhLEVBQUUsRUFBRSw2QkFBNkIsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQzlFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSwwQkFBMEIsRUFBRSxNQUFNLCtCQUErQixDQUFBO0FBQ2xHLE9BQU8scUJBQXFCLE1BQU0sMkJBQTJCLENBQUE7QUFDN0QsT0FBTywwQkFBMEIsTUFBTSxvQ0FBb0MsQ0FBQTtBQUMzRSxPQUFPLEVBQUUsb0NBQW9DLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQTtBQUVwRyxNQUFNLGtCQUFrQixHQUFHLGtDQUFrQyxDQUFBO0FBRTdELHFCQUFxQixFQUFFLENBQUE7QUFFdkIsSUFBSSxZQUFZLEdBQUcsS0FBSyxDQUFBO0FBRXhCOzs7Ozs7R0FNRztBQUNILEtBQUssVUFBVSxjQUFjLENBQUMsUUFBUTtJQUNwQyxJQUFJLFlBQVk7UUFBRSxPQUFNO0lBQ3hCLFlBQVksR0FBRyxJQUFJLENBQUE7SUFFbkIsTUFBTSxzQkFBc0IsQ0FBQywwQkFBMEIsRUFBRSxDQUFDLENBQUE7SUFDMUQsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQTtBQUN4QixDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxhQUFhLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQTtBQUMvQixNQUFNLGNBQWMsR0FBRyxJQUFJLDBCQUEwQixDQUFDO0lBQ3BELGdCQUFnQixFQUFFLEtBQUssSUFBSSxFQUFFLENBQUMsTUFBTSxzQkFBc0IsQ0FBQywwQkFBMEIsRUFBRSxDQUFDO0NBQ3pGLENBQUMsQ0FBQTtBQUVGOzs7Ozs7O0dBT0c7QUFDSCxTQUFTLGtCQUFrQjtJQUN6QixNQUFNLEtBQUss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aW1wb3J0IHJ1bkpvYlBheWxvYWQsIHsgQmFja2dyb3VuZEpvYlBlcmZvcm1lZEZhaWx1cmUgfSBmcm9tIFwiLi9qb2ItcnVubmVyLmpzXCJcbmltcG9ydCB7IGNsb3NlUnVubmVyQ29ubmVjdGlvbnMsIGN1cnJlbnRDb25maWd1cmF0aW9uT3JOdWxsIH0gZnJvbSBcIi4vcnVubmVyLWdyYWNlZnVsLXNodXRkb3duLmpzXCJcbmltcG9ydCBzZXRSdW5uZXJQcm9jZXNzVGl0bGUgZnJvbSBcIi4vcnVubmVyLXByb2Nlc3MtdGl0bGUuanNcIlxuaW1wb3J0IFBvb2xlZFJ1bm5lckJyb2tlcklkZW50aXR5IGZyb20gXCIuL3Bvb2xlZC1ydW5uZXItYnJva2VyLWlkZW50aXR5LmpzXCJcbmltcG9ydCB7IHJ1bldpdGhTaGFyZWRUcmFuc2FjdGlvbkJyb2tlckNvbmZpZyB9IGZyb20gXCIuLi90ZXN0aW5nL3NoYXJlZC10cmFuc2FjdGlvbi1wcm94eS1kcml2ZXIuanNcIlxuXG5jb25zdCBCQVNFX1BST0NFU1NfVElUTEUgPSBcInZlbG9jaW91cyBiYWNrZ3JvdW5kLWpvYnMtcnVubmVyXCJcblxuc2V0UnVubmVyUHJvY2Vzc1RpdGxlKClcblxubGV0IHNodXR0aW5nRG93biA9IGZhbHNlXG5cbi8qKlxuICogQ2xvc2VzIHRoZSBydW5uZXIncyBjb25uZWN0aW9ucyDigJQgcmVsZWFzaW5nIGFueSBhZHZpc29yeSBsb2NrIGEga2lsbGVkLW1pZC1wYXNzXG4gKiBqb2Igc3RpbGwgaG9sZHMg4oCUIGJlZm9yZSBleGl0aW5nLCBpbnN0ZWFkIG9mIGxlYXZpbmcgYSBoYWxmLW9wZW4gc2Vzc2lvbiB0aGF0XG4gKiBrZWVwcyB0aGUgbG9jayB1bnRpbCB0aGUgREIgc2VydmVyJ3MgYHdhaXRfdGltZW91dGAuXG4gKiBAcGFyYW0ge251bWJlcn0gZXhpdENvZGUgLSBQcm9jZXNzIGV4aXQgY29kZS5cbiAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fVxuICovXG5hc3luYyBmdW5jdGlvbiBzaHV0ZG93blJ1bm5lcihleGl0Q29kZSkge1xuICBpZiAoc2h1dHRpbmdEb3duKSByZXR1cm5cbiAgc2h1dHRpbmdEb3duID0gdHJ1ZVxuXG4gIGF3YWl0IGNsb3NlUnVubmVyQ29ubmVjdGlvbnMoY3VycmVudENvbmZpZ3VyYXRpb25Pck51bGwoKSlcbiAgcHJvY2Vzcy5leGl0KGV4aXRDb2RlKVxufVxuXG4vKipcbiAqIElkcyBvZiBqb2JzIGN1cnJlbnRseSBydW5uaW5nIGluIHRoaXMgY2hpbGQuIEEgcG9vbGVkIGNoaWxkIHJ1bnMgdXAgdG9cbiAqIGBwb29sZWRSdW5uZXJDb25jdXJyZW5jeWAgam9icyBhdCBvbmNlICh0aGUgd29ya2VyIG9ubHkgZGlzcGF0Y2hlcyB3aXRoaW4gdGhhdFxuICogYm91bmQpOyB0aGUgc2V0IGRlZHVwZXMgYSByZWRlbGl2ZXJlZCBqb2IgaWQgYW5kIGxldHMgZWFjaCBqb2Igc2V0dGxlXG4gKiBpbmRlcGVuZGVudGx5LlxuICogQHR5cGUge1NldDxzdHJpbmc+fVxuICovXG5jb25zdCBydW5uaW5nSm9iSWRzID0gbmV3IFNldCgpXG5jb25zdCBicm9rZXJJZGVudGl0eSA9IG5ldyBQb29sZWRSdW5uZXJCcm9rZXJJZGVudGl0eSh7XG4gIGNsb3NlQ29ubmVjdGlvbnM6IGFzeW5jICgpID0+IGF3YWl0IGNsb3NlUnVubmVyQ29ubmVjdGlvbnMoY3VycmVudENvbmZpZ3VyYXRpb25Pck51bGwoKSlcbn0pXG5cbi8qKlxuICogU2V0cyBhbiBhZ2dyZWdhdGUgcHJvY2VzcyB0aXRsZSBmcm9tIHRoZSBjdXJyZW50IGluLWZsaWdodCBjb3VudC4gQSBjaGlsZCBydW5zXG4gKiBqb2JzIGNvbmN1cnJlbnRseSwgc28gYSBwZXItam9iIHRpdGxlICh3aGljaCBgcnVuSm9iUGF5bG9hZGAgd291bGQgc25hcHNob3QgYW5kXG4gKiByZXN0b3JlIGFyb3VuZCBhIHNpbmdsZSBqb2IpIGNhbm5vdCByZXByZXNlbnQgdGhlIHByb2Nlc3Mg4oCUIGludGVybGVhdmVkXG4gKiBjb21wbGV0aW9ucyB3b3VsZCBsZWF2ZSBhIHN0YWxlIGxhYmVsLiBSZWNvbXB1dGluZyBmcm9tIGBydW5uaW5nSm9iSWRzLnNpemVgIGlzXG4gKiBjb25jdXJyZW5jeS1zYWZlIGFuZCBob25lc3Q6IGBwc2AvYHRvcGAgc2hvdyBob3cgbWFueSBqb2JzIHRoZSBjaGlsZCBpcyBydW5uaW5nLlxuICogQHJldHVybnMge3ZvaWR9XG4gKi9cbmZ1bmN0aW9uIHVwZGF0ZVByb2Nlc3NUaXRsZSgpIHtcbiAgY29uc3QgY291bnQgPSBydW5uaW5nSm9iSWRzLnNpemVcblxuICBwcm9jZXNzLnRpdGxlID0gY291bnQgPiAwID8gYCR7QkFTRV9QUk9DRVNTX1RJVExFfTogJHtjb3VudH0gJHtjb3VudCA9PT0gMSA/IFwiam9iXCIgOiBcImpvYnNcIn1gIDogQkFTRV9QUk9DRVNTX1RJVExFXG59XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgYW4gSVBDIHZhbHVlIGlzIGEgcnVubmFibGUgcG9vbGVkIGpvYiBtZXNzYWdlLlxuICogQHBhcmFtIHtSZXR1cm5UeXBlPHR5cGVvZiBKU09OLnBhcnNlPn0gbWVzc2FnZSAtIElQQyBtZXNzYWdlLlxuICogQHJldHVybnMge21lc3NhZ2UgaXMge3R5cGU6IFwiam9iXCIsIHBheWxvYWQ6IGltcG9ydChcIi4vdHlwZXMuanNcIikuQmFja2dyb3VuZEpvYlBheWxvYWQgJiB7aWQ6IHN0cmluZ30sIHNoYXJlZFRyYW5zYWN0aW9uQnJva2VyPzogaW1wb3J0KFwiLi4vdGVzdGluZy9zaGFyZWQtdHJhbnNhY3Rpb24tcHJveHktZHJpdmVyLmpzXCIpLlNoYXJlZFRyYW5zYWN0aW9uQnJva2VySm9iQ29uZmlnfX0gLSBXaGV0aGVyIHRoaXMgaXMgYSB2YWxpZCBqb2IgbWVzc2FnZS5cbiAqL1xuZnVuY3Rpb24gaXNKb2JNZXNzYWdlKG1lc3NhZ2UpIHtcbiAgaWYgKCFtZXNzYWdlIHx8IHR5cGVvZiBtZXNzYWdlICE9PSBcIm9iamVjdFwiKSByZXR1cm4gZmFsc2VcbiAgY29uc3QgcmVjb3JkID0gLyoqIEB0eXBlIHt7dHlwZT86IFJldHVyblR5cGU8dHlwZW9mIEpTT04ucGFyc2U+LCBwYXlsb2FkPzogUmV0dXJuVHlwZTx0eXBlb2YgSlNPTi5wYXJzZT4sIHNoYXJlZFRyYW5zYWN0aW9uQnJva2VyPzogUmV0dXJuVHlwZTx0eXBlb2YgSlNPTi5wYXJzZT59fSAqLyAobWVzc2FnZSlcblxuICByZXR1cm4gcmVjb3JkLnR5cGUgPT09IFwiam9iXCIgJiYgISFyZWNvcmQucGF5bG9hZCAmJiB0eXBlb2YgcmVjb3JkLnBheWxvYWQgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIHJlY29yZC5wYXlsb2FkLmlkID09PSBcInN0cmluZ1wiXG59XG5cbi8qKlxuICogU2VuZHMgdGhlIHRlcm1pbmFsIG91dGNvbWUgYWZ0ZXIgdGhlIG1haW4vREIgcmVwb3J0IGhhcyBiZWVuIGFja25vd2xlZGdlZCBvciByZWplY3RlZC5cbiAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzIC0gT3V0Y29tZS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBhcmdzLmpvYklkIC0gSm9iIGlkLlxuICogQHBhcmFtIHtib29sZWFufSBhcmdzLmFja25vd2xlZGdlZCAtIFdoZXRoZXIgdGhlIHRlcm1pbmFsIHJlcG9ydCB3YXMgYWNrbm93bGVkZ2VkLlxuICogQHBhcmFtIHtcImNvbXBsZXRlZFwiIHwgXCJmYWlsZWRcIiB8IFwicmVzY2hlZHVsZWRcIn0gW2FyZ3Muc3RhdHVzXSAtIEFja25vd2xlZGdlZCBvdXRjb21lLlxuICogQHBhcmFtIHtFcnJvcn0gW2FyZ3MuZXJyb3JdIC0gUmVwb3J0aW5nIGVycm9yIHdoZW4gYWNrbm93bGVkZ2VtZW50IHdhcyBub3Qgb2J0YWluZWQuXG4gKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gLSBSZXNvbHZlcyBhZnRlciBJUEMgYWNjZXB0cyB0aGUgbWVzc2FnZS5cbiAqL1xuZnVuY3Rpb24gc2VuZE91dGNvbWUoe2pvYklkLCBhY2tub3dsZWRnZWQsIHN0YXR1cywgZXJyb3J9KSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgIGlmICghcHJvY2Vzcy5zZW5kKSB7XG4gICAgICByZXNvbHZlKHVuZGVmaW5lZClcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHByb2Nlc3Muc2VuZCh7XG4gICAgICB0eXBlOiBcImpvYi1vdXRjb21lXCIsXG4gICAgICBqb2JJZCxcbiAgICAgIGFja25vd2xlZGdlZCxcbiAgICAgIHN0YXR1cyxcbiAgICAgIHJzc0J5dGVzOiBwcm9jZXNzLm1lbW9yeVVzYWdlKCkucnNzLFxuICAgICAgZXJyb3I6IGVycm9yPy5tZXNzYWdlXG4gICAgfSwgKCkgPT4gcmVzb2x2ZSh1bmRlZmluZWQpKVxuICB9KVxufVxuXG4vKipcbiAqIFJ1bnMgb25lIGpvYiBjb25jdXJyZW50bHkgd2l0aCBhbnkgc2libGluZ3MgYW5kIHJlcG9ydHMgaXRzIG93biB0ZXJtaW5hbFxuICogb3V0Y29tZS4gQSBzaW5nbGUgam9iJ3MgdW5leHBlY3RlZCBmYWlsdXJlIHJlcG9ydHMgdGhhdCBqb2IgZm9yIHJlY2xhbWF0aW9uXG4gKiAoYGFja25vd2xlZGdlZDogZmFsc2VgKSBidXQgZG9lcyBOT1QgdGFrZSBkb3duIHRoZSBjaGlsZCDigJQgaXRzIGNvbmN1cnJlbnRcbiAqIHNpYmxpbmdzIGtlZXAgcnVubmluZy4gT25seSBhIHByb2Nlc3MtbGV2ZWwgZmF1bHQgKHdoaWNoIGVzY2FwZXMgZXZlcnlcbiAqIHBlci1qb2IgdHJ5L2NhdGNoKSBlbmRzIHRoZSBjaGlsZCwgd2hpY2ggdGhlIHdvcmtlciBzZWVzIGFzIGFuIGV4aXQgYW5kXG4gKiByZWNsYWltcyBmb3IgdGhlIHdob2xlIGluLWZsaWdodCBzZXQuXG4gKiBAcGFyYW0ge2ltcG9ydChcIi4vdHlwZXMuanNcIikuQmFja2dyb3VuZEpvYlBheWxvYWQgJiB7aWQ6IHN0cmluZ319IHBheWxvYWQgLSBKb2IgcGF5bG9hZC5cbiAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vdGVzdGluZy9zaGFyZWQtdHJhbnNhY3Rpb24tcHJveHktZHJpdmVyLmpzXCIpLlNoYXJlZFRyYW5zYWN0aW9uQnJva2VySm9iQ29uZmlnfSBzaGFyZWRUcmFuc2FjdGlvbkJyb2tlciAtIFBlci1qb2IgYnJva2VyIGNvbmZpZ3VyYXRpb24uXG4gKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gLSBSZXNvbHZlcyBhZnRlciByZXBvcnRpbmcuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHJ1bkpvYihwYXlsb2FkLCBzaGFyZWRUcmFuc2FjdGlvbkJyb2tlcikge1xuICB0cnkge1xuICAgIGNvbnN0IHN0YXR1cyA9IGF3YWl0IHJ1bldpdGhTaGFyZWRUcmFuc2FjdGlvbkJyb2tlckNvbmZpZyhzaGFyZWRUcmFuc2FjdGlvbkJyb2tlciwgYXN5bmMgKCkgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJyb2tlcklkZW50aXR5LnJ1bihzaGFyZWRUcmFuc2FjdGlvbkJyb2tlciwgYXN5bmMgKCkgPT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgcnVuSm9iUGF5bG9hZChwYXlsb2FkLCB7Y2xvc2VDb25uZWN0aW9uczogZmFsc2UsIG1hbmFnZVByb2Nlc3NUaXRsZTogZmFsc2V9KVxuICAgICAgfSlcbiAgICB9KVxuICAgIGF3YWl0IHNlbmRPdXRjb21lKHtqb2JJZDogcGF5bG9hZC5pZCwgYWNrbm93bGVkZ2VkOiB0cnVlLCBzdGF0dXN9KVxuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEJhY2tncm91bmRKb2JQZXJmb3JtZWRGYWlsdXJlKSB7XG4gICAgICBhd2FpdCBzZW5kT3V0Y29tZSh7am9iSWQ6IHBheWxvYWQuaWQsIGFja25vd2xlZGdlZDogdHJ1ZSwgc3RhdHVzOiBcImZhaWxlZFwifSlcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgcmVwb3J0RXJyb3IgPSBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IgOiBuZXcgRXJyb3IoU3RyaW5nKGVycm9yKSlcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJQb29sZWQgYmFja2dyb3VuZCBqb2IgcnVubmVyIGZhaWxlZCBiZWZvcmUgdGVybWluYWwgYWNrbm93bGVkZ2VtZW50OlwiLCByZXBvcnRFcnJvcilcbiAgICAgIGF3YWl0IHNlbmRPdXRjb21lKHtqb2JJZDogcGF5bG9hZC5pZCwgYWNrbm93bGVkZ2VkOiBmYWxzZSwgZXJyb3I6IHJlcG9ydEVycm9yfSlcbiAgICB9XG4gIH0gZmluYWxseSB7XG4gICAgcnVubmluZ0pvYklkcy5kZWxldGUocGF5bG9hZC5pZClcbiAgICB1cGRhdGVQcm9jZXNzVGl0bGUoKVxuICB9XG59XG5cbi8qKlxuICogSGFuZGxlcyBhIGpvYiBtZXNzYWdlLCBzdGFydGluZyBpdCBhbG9uZ3NpZGUgYW55IGNvbmN1cnJlbnQgc2libGluZ3MuXG4gKiBAcGFyYW0ge1JldHVyblR5cGU8dHlwZW9mIEpTT04ucGFyc2U+fSBtZXNzYWdlIC0gSVBDIG1lc3NhZ2UuXG4gKiBAcmV0dXJucyB7dm9pZH1cbiAqL1xuZnVuY3Rpb24gaGFuZGxlTWVzc2FnZShtZXNzYWdlKSB7XG4gIGlmICghaXNKb2JNZXNzYWdlKG1lc3NhZ2UpIHx8IHJ1bm5pbmdKb2JJZHMuaGFzKG1lc3NhZ2UucGF5bG9hZC5pZCkpIHJldHVyblxuXG4gIHJ1bm5pbmdKb2JJZHMuYWRkKG1lc3NhZ2UucGF5bG9hZC5pZClcbiAgdXBkYXRlUHJvY2Vzc1RpdGxlKClcbiAgdm9pZCBydW5Kb2IobWVzc2FnZS5wYXlsb2FkLCBtZXNzYWdlLnNoYXJlZFRyYW5zYWN0aW9uQnJva2VyIHx8IHtleHBlY3RlZDogZmFsc2V9KVxufVxuXG5wcm9jZXNzLm9uKFwibWVzc2FnZVwiLCAobWVzc2FnZSkgPT4gaGFuZGxlTWVzc2FnZShtZXNzYWdlKSlcbnByb2Nlc3Mub25jZShcImRpc2Nvbm5lY3RcIiwgKCkgPT4gdm9pZCBzaHV0ZG93blJ1bm5lcigwKSlcbmZvciAoY29uc3Qgc2lnbmFsIG9mIFtcIlNJR1RFUk1cIiwgXCJTSUdJTlRcIl0pIHByb2Nlc3Mub25jZShzaWduYWwsICgpID0+IHZvaWQgc2h1dGRvd25SdW5uZXIoMSkpXG4iXX0=
134
+ if (process.send)
135
+ process.send({ type: "ready" });
136
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9vbGVkLXJ1bm5lci1jaGlsZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iYWNrZ3JvdW5kLWpvYnMvcG9vbGVkLXJ1bm5lci1jaGlsZC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosT0FBTyxhQUFhLEVBQUUsRUFBRSw2QkFBNkIsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQzlFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSwwQkFBMEIsRUFBRSxNQUFNLCtCQUErQixDQUFBO0FBQ2xHLE9BQU8scUJBQXFCLE1BQU0sMkJBQTJCLENBQUE7QUFDN0QsT0FBTywwQkFBMEIsTUFBTSxvQ0FBb0MsQ0FBQTtBQUMzRSxPQUFPLEVBQUUsb0NBQW9DLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQTtBQUVwRyxNQUFNLGtCQUFrQixHQUFHLGtDQUFrQyxDQUFBO0FBRTdELHFCQUFxQixFQUFFLENBQUE7QUFFdkIsSUFBSSxZQUFZLEdBQUcsS0FBSyxDQUFBO0FBRXhCOzs7Ozs7R0FNRztBQUNILEtBQUssVUFBVSxjQUFjLENBQUMsUUFBUTtJQUNwQyxJQUFJLFlBQVk7UUFBRSxPQUFNO0lBQ3hCLFlBQVksR0FBRyxJQUFJLENBQUE7SUFFbkIsTUFBTSxzQkFBc0IsQ0FBQywwQkFBMEIsRUFBRSxDQUFDLENBQUE7SUFDMUQsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQTtBQUN4QixDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxhQUFhLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQTtBQUMvQixNQUFNLGNBQWMsR0FBRyxJQUFJLDBCQUEwQixDQUFDO0lBQ3BELGdCQUFnQixFQUFFLEtBQUssSUFBSSxFQUFFLENBQUMsTUFBTSxzQkFBc0IsQ0FBQywwQkFBMEIsRUFBRSxDQUFDO0NBQ3pGLENBQUMsQ0FBQTtBQUVGOzs7Ozs7O0dBT0c7QUFDSCxTQUFTLGtCQUFrQjtJQUN6QixNQUFNLEtBQUssR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFBO0lBRWhDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxrQkFBa0IsS0FBSyxLQUFLLElBQUksS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUE7QUFDcEgsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFTLFlBQVksQ0FBQyxPQUFPO0lBQzNCLElBQUksQ0FBQyxPQUFPLElBQUksT0FBTyxPQUFPLEtBQUssUUFBUTtRQUFFLE9BQU8sS0FBSyxDQUFBO0lBQ3pELE1BQU0sTUFBTSxHQUFHLHVKQUF1SixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUE7SUFFaEwsT0FBTyxNQUFNLENBQUMsSUFBSSxLQUFLLEtBQUssSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sSUFBSSxPQUFPLE1BQU0sQ0FBQyxPQUFPLEtBQUssUUFBUSxJQUFJLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEtBQUssUUFBUSxDQUFBO0FBQ2pJLENBQUM7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILFNBQVMsV0FBVyxDQUFDLEVBQUMsS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFDO0lBQ3ZELE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtRQUM3QixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2xCLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQTtZQUNsQixPQUFNO1FBQ1IsQ0FBQztRQUVELE9BQU8sQ0FBQyxJQUFJLENBQUM7WUFDWCxJQUFJLEVBQUUsYUFBYTtZQUNuQixLQUFLO1lBQ0wsWUFBWTtZQUNaLE1BQU07WUFDTixRQUFRLEVBQUUsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDLEdBQUc7WUFDbkMsS0FBSyxFQUFFLEtBQUssRUFBRSxPQUFPO1NBQ3RCLEVBQUUsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUE7SUFDOUIsQ0FBQyxDQUFDLENBQUE7QUFDSixDQUFDO0FBRUQ7Ozs7Ozs7Ozs7R0FVRztBQUNILEtBQUssVUFBVSxNQUFNLENBQUMsT0FBTyxFQUFFLHVCQUF1QjtJQUNwRCxJQUFJLENBQUM7UUFDSCxNQUFNLE1BQU0sR0FBRyxNQUFNLG9DQUFvQyxDQUFDLHVCQUF1QixFQUFFLEtBQUssSUFBSSxFQUFFO1lBQzVGLE9BQU8sTUFBTSxjQUFjLENBQUMsR0FBRyxDQUFDLHVCQUF1QixFQUFFLEtBQUssSUFBSSxFQUFFO2dCQUNsRSxPQUFPLE1BQU0sYUFBYSxDQUFDLE9BQU8sRUFBRSxFQUFDLGdCQUFnQixFQUFFLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxLQUFLLEVBQUMsQ0FBQyxDQUFBO1lBQzNGLENBQUMsQ0FBQyxDQUFBO1FBQ0osQ0FBQyxDQUFDLENBQUE7UUFDRixNQUFNLFdBQVcsQ0FBQyxFQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsRUFBRSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFDLENBQUMsQ0FBQTtJQUNwRSxDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLElBQUksS0FBSyxZQUFZLDZCQUE2QixFQUFFLENBQUM7WUFDbkQsTUFBTSxXQUFXLENBQUMsRUFBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLEVBQUUsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUMsQ0FBQyxDQUFBO1FBQzlFLENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxXQUFXLEdBQUcsS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQTtZQUM3RSxPQUFPLENBQUMsS0FBSyxDQUFDLHNFQUFzRSxFQUFFLFdBQVcsQ0FBQyxDQUFBO1lBQ2xHLE1BQU0sV0FBVyxDQUFDLEVBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxFQUFFLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFDLENBQUMsQ0FBQTtRQUNqRixDQUFDO0lBQ0gsQ0FBQztZQUFTLENBQUM7UUFDVCxhQUFhLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUNoQyxrQkFBa0IsRUFBRSxDQUFBO0lBQ3RCLENBQUM7QUFDSCxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQVMsYUFBYSxDQUFDLE9BQU87SUFDNUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxhQUFhLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQUUsT0FBTTtJQUUzRSxhQUFhLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUE7SUFDckMsa0JBQWtCLEVBQUUsQ0FBQTtJQUNwQixLQUFLLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyx1QkFBdUIsSUFBSSxFQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUMsQ0FBQyxDQUFBO0FBQ3BGLENBQUM7QUFFRCxPQUFPLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUE7QUFDMUQsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsR0FBRyxFQUFFLENBQUMsS0FBSyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtBQUN4RCxLQUFLLE1BQU0sTUFBTSxJQUFJLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQztJQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLEtBQUssY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFDOUYsSUFBSSxPQUFPLENBQUMsSUFBSTtJQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBQyxJQUFJLEVBQUUsT0FBTyxFQUFDLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQgcnVuSm9iUGF5bG9hZCwgeyBCYWNrZ3JvdW5kSm9iUGVyZm9ybWVkRmFpbHVyZSB9IGZyb20gXCIuL2pvYi1ydW5uZXIuanNcIlxuaW1wb3J0IHsgY2xvc2VSdW5uZXJDb25uZWN0aW9ucywgY3VycmVudENvbmZpZ3VyYXRpb25Pck51bGwgfSBmcm9tIFwiLi9ydW5uZXItZ3JhY2VmdWwtc2h1dGRvd24uanNcIlxuaW1wb3J0IHNldFJ1bm5lclByb2Nlc3NUaXRsZSBmcm9tIFwiLi9ydW5uZXItcHJvY2Vzcy10aXRsZS5qc1wiXG5pbXBvcnQgUG9vbGVkUnVubmVyQnJva2VySWRlbnRpdHkgZnJvbSBcIi4vcG9vbGVkLXJ1bm5lci1icm9rZXItaWRlbnRpdHkuanNcIlxuaW1wb3J0IHsgcnVuV2l0aFNoYXJlZFRyYW5zYWN0aW9uQnJva2VyQ29uZmlnIH0gZnJvbSBcIi4uL3Rlc3Rpbmcvc2hhcmVkLXRyYW5zYWN0aW9uLXByb3h5LWRyaXZlci5qc1wiXG5cbmNvbnN0IEJBU0VfUFJPQ0VTU19USVRMRSA9IFwidmVsb2Npb3VzIGJhY2tncm91bmQtam9icy1ydW5uZXJcIlxuXG5zZXRSdW5uZXJQcm9jZXNzVGl0bGUoKVxuXG5sZXQgc2h1dHRpbmdEb3duID0gZmFsc2VcblxuLyoqXG4gKiBDbG9zZXMgdGhlIHJ1bm5lcidzIGNvbm5lY3Rpb25zIOKAlCByZWxlYXNpbmcgYW55IGFkdmlzb3J5IGxvY2sgYSBraWxsZWQtbWlkLXBhc3NcbiAqIGpvYiBzdGlsbCBob2xkcyDigJQgYmVmb3JlIGV4aXRpbmcsIGluc3RlYWQgb2YgbGVhdmluZyBhIGhhbGYtb3BlbiBzZXNzaW9uIHRoYXRcbiAqIGtlZXBzIHRoZSBsb2NrIHVudGlsIHRoZSBEQiBzZXJ2ZXIncyBgd2FpdF90aW1lb3V0YC5cbiAqIEBwYXJhbSB7bnVtYmVyfSBleGl0Q29kZSAtIFByb2Nlc3MgZXhpdCBjb2RlLlxuICogQHJldHVybnMge1Byb21pc2U8dm9pZD59XG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHNodXRkb3duUnVubmVyKGV4aXRDb2RlKSB7XG4gIGlmIChzaHV0dGluZ0Rvd24pIHJldHVyblxuICBzaHV0dGluZ0Rvd24gPSB0cnVlXG5cbiAgYXdhaXQgY2xvc2VSdW5uZXJDb25uZWN0aW9ucyhjdXJyZW50Q29uZmlndXJhdGlvbk9yTnVsbCgpKVxuICBwcm9jZXNzLmV4aXQoZXhpdENvZGUpXG59XG5cbi8qKlxuICogSWRzIG9mIGpvYnMgY3VycmVudGx5IHJ1bm5pbmcgaW4gdGhpcyBjaGlsZC4gQSBwb29sZWQgY2hpbGQgcnVucyB1cCB0b1xuICogYHBvb2xlZFJ1bm5lckNvbmN1cnJlbmN5YCBqb2JzIGF0IG9uY2UgKHRoZSB3b3JrZXIgb25seSBkaXNwYXRjaGVzIHdpdGhpbiB0aGF0XG4gKiBib3VuZCk7IHRoZSBzZXQgZGVkdXBlcyBhIHJlZGVsaXZlcmVkIGpvYiBpZCBhbmQgbGV0cyBlYWNoIGpvYiBzZXR0bGVcbiAqIGluZGVwZW5kZW50bHkuXG4gKiBAdHlwZSB7U2V0PHN0cmluZz59XG4gKi9cbmNvbnN0IHJ1bm5pbmdKb2JJZHMgPSBuZXcgU2V0KClcbmNvbnN0IGJyb2tlcklkZW50aXR5ID0gbmV3IFBvb2xlZFJ1bm5lckJyb2tlcklkZW50aXR5KHtcbiAgY2xvc2VDb25uZWN0aW9uczogYXN5bmMgKCkgPT4gYXdhaXQgY2xvc2VSdW5uZXJDb25uZWN0aW9ucyhjdXJyZW50Q29uZmlndXJhdGlvbk9yTnVsbCgpKVxufSlcblxuLyoqXG4gKiBTZXRzIGFuIGFnZ3JlZ2F0ZSBwcm9jZXNzIHRpdGxlIGZyb20gdGhlIGN1cnJlbnQgaW4tZmxpZ2h0IGNvdW50LiBBIGNoaWxkIHJ1bnNcbiAqIGpvYnMgY29uY3VycmVudGx5LCBzbyBhIHBlci1qb2IgdGl0bGUgKHdoaWNoIGBydW5Kb2JQYXlsb2FkYCB3b3VsZCBzbmFwc2hvdCBhbmRcbiAqIHJlc3RvcmUgYXJvdW5kIGEgc2luZ2xlIGpvYikgY2Fubm90IHJlcHJlc2VudCB0aGUgcHJvY2VzcyDigJQgaW50ZXJsZWF2ZWRcbiAqIGNvbXBsZXRpb25zIHdvdWxkIGxlYXZlIGEgc3RhbGUgbGFiZWwuIFJlY29tcHV0aW5nIGZyb20gYHJ1bm5pbmdKb2JJZHMuc2l6ZWAgaXNcbiAqIGNvbmN1cnJlbmN5LXNhZmUgYW5kIGhvbmVzdDogYHBzYC9gdG9wYCBzaG93IGhvdyBtYW55IGpvYnMgdGhlIGNoaWxkIGlzIHJ1bm5pbmcuXG4gKiBAcmV0dXJucyB7dm9pZH1cbiAqL1xuZnVuY3Rpb24gdXBkYXRlUHJvY2Vzc1RpdGxlKCkge1xuICBjb25zdCBjb3VudCA9IHJ1bm5pbmdKb2JJZHMuc2l6ZVxuXG4gIHByb2Nlc3MudGl0bGUgPSBjb3VudCA+IDAgPyBgJHtCQVNFX1BST0NFU1NfVElUTEV9OiAke2NvdW50fSAke2NvdW50ID09PSAxID8gXCJqb2JcIiA6IFwiam9ic1wifWAgOiBCQVNFX1BST0NFU1NfVElUTEVcbn1cblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciBhbiBJUEMgdmFsdWUgaXMgYSBydW5uYWJsZSBwb29sZWQgam9iIG1lc3NhZ2UuXG4gKiBAcGFyYW0ge1JldHVyblR5cGU8dHlwZW9mIEpTT04ucGFyc2U+fSBtZXNzYWdlIC0gSVBDIG1lc3NhZ2UuXG4gKiBAcmV0dXJucyB7bWVzc2FnZSBpcyB7dHlwZTogXCJqb2JcIiwgcGF5bG9hZDogaW1wb3J0KFwiLi90eXBlcy5qc1wiKS5CYWNrZ3JvdW5kSm9iUGF5bG9hZCAmIHtpZDogc3RyaW5nfSwgc2hhcmVkVHJhbnNhY3Rpb25Ccm9rZXI/OiBpbXBvcnQoXCIuLi90ZXN0aW5nL3NoYXJlZC10cmFuc2FjdGlvbi1wcm94eS1kcml2ZXIuanNcIikuU2hhcmVkVHJhbnNhY3Rpb25Ccm9rZXJKb2JDb25maWd9fSAtIFdoZXRoZXIgdGhpcyBpcyBhIHZhbGlkIGpvYiBtZXNzYWdlLlxuICovXG5mdW5jdGlvbiBpc0pvYk1lc3NhZ2UobWVzc2FnZSkge1xuICBpZiAoIW1lc3NhZ2UgfHwgdHlwZW9mIG1lc3NhZ2UgIT09IFwib2JqZWN0XCIpIHJldHVybiBmYWxzZVxuICBjb25zdCByZWNvcmQgPSAvKiogQHR5cGUge3t0eXBlPzogUmV0dXJuVHlwZTx0eXBlb2YgSlNPTi5wYXJzZT4sIHBheWxvYWQ/OiBSZXR1cm5UeXBlPHR5cGVvZiBKU09OLnBhcnNlPiwgc2hhcmVkVHJhbnNhY3Rpb25Ccm9rZXI/OiBSZXR1cm5UeXBlPHR5cGVvZiBKU09OLnBhcnNlPn19ICovIChtZXNzYWdlKVxuXG4gIHJldHVybiByZWNvcmQudHlwZSA9PT0gXCJqb2JcIiAmJiAhIXJlY29yZC5wYXlsb2FkICYmIHR5cGVvZiByZWNvcmQucGF5bG9hZCA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgcmVjb3JkLnBheWxvYWQuaWQgPT09IFwic3RyaW5nXCJcbn1cblxuLyoqXG4gKiBTZW5kcyB0aGUgdGVybWluYWwgb3V0Y29tZSBhZnRlciB0aGUgbWFpbi9EQiByZXBvcnQgaGFzIGJlZW4gYWNrbm93bGVkZ2VkIG9yIHJlamVjdGVkLlxuICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBPdXRjb21lLlxuICogQHBhcmFtIHtzdHJpbmd9IGFyZ3Muam9iSWQgLSBKb2IgaWQuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IGFyZ3MuYWNrbm93bGVkZ2VkIC0gV2hldGhlciB0aGUgdGVybWluYWwgcmVwb3J0IHdhcyBhY2tub3dsZWRnZWQuXG4gKiBAcGFyYW0ge1wiY29tcGxldGVkXCIgfCBcImZhaWxlZFwiIHwgXCJyZXNjaGVkdWxlZFwifSBbYXJncy5zdGF0dXNdIC0gQWNrbm93bGVkZ2VkIG91dGNvbWUuXG4gKiBAcGFyYW0ge0Vycm9yfSBbYXJncy5lcnJvcl0gLSBSZXBvcnRpbmcgZXJyb3Igd2hlbiBhY2tub3dsZWRnZW1lbnQgd2FzIG5vdCBvYnRhaW5lZC5cbiAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSAtIFJlc29sdmVzIGFmdGVyIElQQyBhY2NlcHRzIHRoZSBtZXNzYWdlLlxuICovXG5mdW5jdGlvbiBzZW5kT3V0Y29tZSh7am9iSWQsIGFja25vd2xlZGdlZCwgc3RhdHVzLCBlcnJvcn0pIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgaWYgKCFwcm9jZXNzLnNlbmQpIHtcbiAgICAgIHJlc29sdmUodW5kZWZpbmVkKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgcHJvY2Vzcy5zZW5kKHtcbiAgICAgIHR5cGU6IFwiam9iLW91dGNvbWVcIixcbiAgICAgIGpvYklkLFxuICAgICAgYWNrbm93bGVkZ2VkLFxuICAgICAgc3RhdHVzLFxuICAgICAgcnNzQnl0ZXM6IHByb2Nlc3MubWVtb3J5VXNhZ2UoKS5yc3MsXG4gICAgICBlcnJvcjogZXJyb3I/Lm1lc3NhZ2VcbiAgICB9LCAoKSA9PiByZXNvbHZlKHVuZGVmaW5lZCkpXG4gIH0pXG59XG5cbi8qKlxuICogUnVucyBvbmUgam9iIGNvbmN1cnJlbnRseSB3aXRoIGFueSBzaWJsaW5ncyBhbmQgcmVwb3J0cyBpdHMgb3duIHRlcm1pbmFsXG4gKiBvdXRjb21lLiBBIHNpbmdsZSBqb2IncyB1bmV4cGVjdGVkIGZhaWx1cmUgcmVwb3J0cyB0aGF0IGpvYiBmb3IgcmVjbGFtYXRpb25cbiAqIChgYWNrbm93bGVkZ2VkOiBmYWxzZWApIGJ1dCBkb2VzIE5PVCB0YWtlIGRvd24gdGhlIGNoaWxkIOKAlCBpdHMgY29uY3VycmVudFxuICogc2libGluZ3Mga2VlcCBydW5uaW5nLiBPbmx5IGEgcHJvY2Vzcy1sZXZlbCBmYXVsdCAod2hpY2ggZXNjYXBlcyBldmVyeVxuICogcGVyLWpvYiB0cnkvY2F0Y2gpIGVuZHMgdGhlIGNoaWxkLCB3aGljaCB0aGUgd29ya2VyIHNlZXMgYXMgYW4gZXhpdCBhbmRcbiAqIHJlY2xhaW1zIGZvciB0aGUgd2hvbGUgaW4tZmxpZ2h0IHNldC5cbiAqIEBwYXJhbSB7aW1wb3J0KFwiLi90eXBlcy5qc1wiKS5CYWNrZ3JvdW5kSm9iUGF5bG9hZCAmIHtpZDogc3RyaW5nfX0gcGF5bG9hZCAtIEpvYiBwYXlsb2FkLlxuICogQHBhcmFtIHtpbXBvcnQoXCIuLi90ZXN0aW5nL3NoYXJlZC10cmFuc2FjdGlvbi1wcm94eS1kcml2ZXIuanNcIikuU2hhcmVkVHJhbnNhY3Rpb25Ccm9rZXJKb2JDb25maWd9IHNoYXJlZFRyYW5zYWN0aW9uQnJva2VyIC0gUGVyLWpvYiBicm9rZXIgY29uZmlndXJhdGlvbi5cbiAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSAtIFJlc29sdmVzIGFmdGVyIHJlcG9ydGluZy5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gcnVuSm9iKHBheWxvYWQsIHNoYXJlZFRyYW5zYWN0aW9uQnJva2VyKSB7XG4gIHRyeSB7XG4gICAgY29uc3Qgc3RhdHVzID0gYXdhaXQgcnVuV2l0aFNoYXJlZFRyYW5zYWN0aW9uQnJva2VyQ29uZmlnKHNoYXJlZFRyYW5zYWN0aW9uQnJva2VyLCBhc3luYyAoKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYnJva2VySWRlbnRpdHkucnVuKHNoYXJlZFRyYW5zYWN0aW9uQnJva2VyLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCBydW5Kb2JQYXlsb2FkKHBheWxvYWQsIHtjbG9zZUNvbm5lY3Rpb25zOiBmYWxzZSwgbWFuYWdlUHJvY2Vzc1RpdGxlOiBmYWxzZX0pXG4gICAgICB9KVxuICAgIH0pXG4gICAgYXdhaXQgc2VuZE91dGNvbWUoe2pvYklkOiBwYXlsb2FkLmlkLCBhY2tub3dsZWRnZWQ6IHRydWUsIHN0YXR1c30pXG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgaWYgKGVycm9yIGluc3RhbmNlb2YgQmFja2dyb3VuZEpvYlBlcmZvcm1lZEZhaWx1cmUpIHtcbiAgICAgIGF3YWl0IHNlbmRPdXRjb21lKHtqb2JJZDogcGF5bG9hZC5pZCwgYWNrbm93bGVkZ2VkOiB0cnVlLCBzdGF0dXM6IFwiZmFpbGVkXCJ9KVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCByZXBvcnRFcnJvciA9IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvciA6IG5ldyBFcnJvcihTdHJpbmcoZXJyb3IpKVxuICAgICAgY29uc29sZS5lcnJvcihcIlBvb2xlZCBiYWNrZ3JvdW5kIGpvYiBydW5uZXIgZmFpbGVkIGJlZm9yZSB0ZXJtaW5hbCBhY2tub3dsZWRnZW1lbnQ6XCIsIHJlcG9ydEVycm9yKVxuICAgICAgYXdhaXQgc2VuZE91dGNvbWUoe2pvYklkOiBwYXlsb2FkLmlkLCBhY2tub3dsZWRnZWQ6IGZhbHNlLCBlcnJvcjogcmVwb3J0RXJyb3J9KVxuICAgIH1cbiAgfSBmaW5hbGx5IHtcbiAgICBydW5uaW5nSm9iSWRzLmRlbGV0ZShwYXlsb2FkLmlkKVxuICAgIHVwZGF0ZVByb2Nlc3NUaXRsZSgpXG4gIH1cbn1cblxuLyoqXG4gKiBIYW5kbGVzIGEgam9iIG1lc3NhZ2UsIHN0YXJ0aW5nIGl0IGFsb25nc2lkZSBhbnkgY29uY3VycmVudCBzaWJsaW5ncy5cbiAqIEBwYXJhbSB7UmV0dXJuVHlwZTx0eXBlb2YgSlNPTi5wYXJzZT59IG1lc3NhZ2UgLSBJUEMgbWVzc2FnZS5cbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5mdW5jdGlvbiBoYW5kbGVNZXNzYWdlKG1lc3NhZ2UpIHtcbiAgaWYgKCFpc0pvYk1lc3NhZ2UobWVzc2FnZSkgfHwgcnVubmluZ0pvYklkcy5oYXMobWVzc2FnZS5wYXlsb2FkLmlkKSkgcmV0dXJuXG5cbiAgcnVubmluZ0pvYklkcy5hZGQobWVzc2FnZS5wYXlsb2FkLmlkKVxuICB1cGRhdGVQcm9jZXNzVGl0bGUoKVxuICB2b2lkIHJ1bkpvYihtZXNzYWdlLnBheWxvYWQsIG1lc3NhZ2Uuc2hhcmVkVHJhbnNhY3Rpb25Ccm9rZXIgfHwge2V4cGVjdGVkOiBmYWxzZX0pXG59XG5cbnByb2Nlc3Mub24oXCJtZXNzYWdlXCIsIChtZXNzYWdlKSA9PiBoYW5kbGVNZXNzYWdlKG1lc3NhZ2UpKVxucHJvY2Vzcy5vbmNlKFwiZGlzY29ubmVjdFwiLCAoKSA9PiB2b2lkIHNodXRkb3duUnVubmVyKDApKVxuZm9yIChjb25zdCBzaWduYWwgb2YgW1wiU0lHVEVSTVwiLCBcIlNJR0lOVFwiXSkgcHJvY2Vzcy5vbmNlKHNpZ25hbCwgKCkgPT4gdm9pZCBzaHV0ZG93blJ1bm5lcigxKSlcbmlmIChwcm9jZXNzLnNlbmQpIHByb2Nlc3Muc2VuZCh7dHlwZTogXCJyZWFkeVwifSlcbiJdfQ==
@@ -126,7 +126,7 @@ export default class BackgroundJobsWorker {
126
126
  inflightPooledJobs: Set<Promise<void>>;
127
127
  /** @type {Set<import("node:child_process").ChildProcess>} */
128
128
  pooledChildren: Set<import("node:child_process").ChildProcess>;
129
- /** @type {Map<import("node:child_process").ChildProcess, {createdAtMs: number, jobsRun: number, inflight: Map<string, {payload: import("./types.js").BackgroundJobPayload & {id: string}, resolve?: (value: void) => void, timeoutTimer?: ReturnType<typeof setTimeout> | null}>, lastDispatchSeq: number, retiring: boolean, settling?: boolean, timeoutSigkillTimer?: ReturnType<typeof setTimeout> | null}>} */
129
+ /** @type {Map<import("node:child_process").ChildProcess, {createdAtMs: number, jobsRun: number, inflight: Map<string, {payload: import("./types.js").BackgroundJobPayload & {id: string}, resolve?: (value: void) => void, pooledJob?: Promise<void>, timeoutTimer?: ReturnType<typeof setTimeout> | null}>, lastDispatchSeq: number, retiring: boolean, started?: boolean, settling?: boolean, timeoutSigkillTimer?: ReturnType<typeof setTimeout> | null}>} */
130
130
  pooledChildStates: Map<import("node:child_process").ChildProcess, {
131
131
  createdAtMs: number;
132
132
  jobsRun: number;
@@ -135,13 +135,17 @@ export default class BackgroundJobsWorker {
135
135
  id: string;
136
136
  };
137
137
  resolve?: (value: void) => void;
138
+ pooledJob?: Promise<void>;
138
139
  timeoutTimer?: ReturnType<typeof setTimeout> | null;
139
140
  }>;
140
141
  lastDispatchSeq: number;
141
142
  retiring: boolean;
143
+ started?: boolean;
142
144
  settling?: boolean;
143
145
  timeoutSigkillTimer?: ReturnType<typeof setTimeout> | null;
144
146
  }>;
147
+ /** @type {WeakSet<Promise<void>>} */
148
+ _pooledStartupFailureJobs: WeakSet<Promise<void>>;
145
149
  _pooledDispatchSeq: number;
146
150
  /**
147
151
  * Runs constructor.
@@ -293,17 +297,23 @@ export default class BackgroundJobsWorker {
293
297
  id: string;
294
298
  }): Promise<void>;
295
299
  /**
296
- * Tells main we're ready for the next job — but only if we haven't been
297
- * asked to drain. Once we've sent `draining` we don't want to take more
298
- * work.
300
+ * Advertises current worker capacity unless the worker is draining.
301
+ * @param {object} [options] - Advertisement options.
302
+ * @param {boolean} [options.revokePooledAdmission] - Revoke pooled credits while preserving other execution modes.
299
303
  * @returns {void}
300
304
  */
301
- _sendReadyIfRunning(): void;
305
+ _sendReadyIfRunning({ revokePooledAdmission }?: {
306
+ revokePooledAdmission?: boolean;
307
+ }): void;
302
308
  /**
303
309
  * Runs ready message.
310
+ * @param {object} [options] - Advertisement options.
311
+ * @param {boolean} [options.revokePooledAdmission] - Revoke pooled credits while preserving other execution modes.
304
312
  * @returns {import("./types.js").BackgroundJobSocketMessage | null} - Ready message or null when the worker has no capacity.
305
313
  */
306
- _readyMessage(): import("./types.js").BackgroundJobSocketMessage | null;
314
+ _readyMessage({ revokePooledAdmission }?: {
315
+ revokePooledAdmission?: boolean;
316
+ }): import("./types.js").BackgroundJobSocketMessage | null;
307
317
  /**
308
318
  * Tracks a pooled job and re-advertises capacity.
309
319
  * @param {Promise<void>} pooledJob - Pooled job promise.
@@ -369,7 +379,8 @@ export default class BackgroundJobsWorker {
369
379
  * (SIGTERM, then SIGKILL after the grace) — a hung JS job cannot be cancelled
370
380
  * any other way. The non-clean exit flows through `_handlePooledChildFailure`,
371
381
  * which reports every in-flight job on the child failed (so they requeue) and
372
- * drops it from tracking; capacity is refilled on the next dispatch.
382
+ * drops it from tracking; the failure path immediately re-advertises the
383
+ * resulting capacity once the runner has completed startup.
373
384
  * @param {object} args - Options.
374
385
  * @param {import("node:child_process").ChildProcess} args.child - Pooled child.
375
386
  * @param {string} args.jobId - Job id that overran.
@@ -421,9 +432,11 @@ export default class BackgroundJobsWorker {
421
432
  /**
422
433
  * Removes an exited/unhealthy pooled child and reports every job that was
423
434
  * in-flight on it as failed — a process-level crash's blast radius is the
424
- * child's whole in-flight set. Capacity is refilled lazily on the next
425
- * dispatch (a spawnable slot is still advertised), avoiding a tight respawn
426
- * loop when a child crashes on startup.
435
+ * child's whole in-flight set. Once the child has completed startup, its
436
+ * freed capacity is advertised immediately; the replacement itself is still
437
+ * spawned lazily by the next dispatch. A child that exits before its startup
438
+ * handshake does not re-announce, avoiding a tight respawn loop on startup
439
+ * failure.
427
440
  * @param {object} args - Failure details.
428
441
  * @param {import("node:child_process").ChildProcess} args.child - Pooled child.
429
442
  * @param {ReturnType<typeof JSON.parse>} args.error - Failure.
@@ -1 +1 @@
1
- {"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../../src/background-jobs/worker.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../../src/background-jobs/worker.js"],"names":[],"mappings":"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"}