# Module: `workers` **Path:** `verae-zapier-middleware/src/workers/` **Phases:** 6 (in-process), 8–9 (NATS) ## Files | File | Phase | Purpose | |------|-------|---------| | `inProcessJobPoller.js` | 6 | Fallback poller when `NATS_ENABLED=false` | | `jobPollerWorker.js` | 8 | JetStream job watch consumer | | `webhookWorker.js` | 8 | JetStream webhook deliver consumer | ## `startJobPollerWorker()` | | | |--|--| | **For** | Poll Verae until job terminal; publish events | | **Input** | none (uses NATS + config) | | **Output** | `Promise<{ stop: () => Promise }>` | | **Debug** | `jobs`, `http`, `nats` | ## `startWebhookWorker()` | | | |--|--| | **For** | POST completion payloads to Zapier hook URLs | | **Output** | `Promise<{ stop: () => Promise }>` | | **Debug** | `webhooks`, `nats` | ## Rules - Only one of in-process poller **or** NATS job worker should run. - Never log raw JWTs or full webhook secrets. - Queue groups allow horizontal scale without double delivery.