@warlock.js/queue 5.34.0 → 5.34.2
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/CHANGELOG.md +6 -0
- package/llms-full.txt +41 -31
- package/llms.txt +1 -1
- package/package.json +3 -3
- package/skills/index.md +12 -1
- package/skills/overview/SKILL.md +0 -27
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,12 @@ All notable changes to `@warlock.js/queue` are documented in this file.
|
|
|
4
4
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). `@warlock.js/*` packages are released in lockstep — every package shares the same version number, so a version below may list only the changes that affected this package.
|
|
6
6
|
|
|
7
|
+
## 5.34.2 - 2026-10-19
|
|
8
|
+
|
|
9
|
+
### Fixed
|
|
10
|
+
|
|
11
|
+
- Merge package orientation into the grouped skill index and remove the duplicate overview topic; preserve that orientation in generated LLM projections.
|
|
12
|
+
|
|
7
13
|
## 5.34.0 - 2026-10-19
|
|
8
14
|
|
|
9
15
|
### Added
|
package/llms-full.txt
CHANGED
|
@@ -4,6 +4,47 @@
|
|
|
4
4
|
|
|
5
5
|
> Generated artifact. Concatenates every SKILL.md and reference file under `@warlock.js/queue/skills/`. Re-run `node scripts/generate-llms.mjs` after any change.
|
|
6
6
|
|
|
7
|
+
## Package orientation
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
description: 'Background jobs on BullMQ + Redis, local SQLite, or memory: retries, delays, priorities, workers, failed-job recovery. Exports `defineJob`, `queueConnector`, `startWorkers`, `closeQueue`, `getQueue`, `failedJobs`, `retryFailedJob`, `mountQueueDashboard`, `QueueConfig`, `QueueJob`. Use for: "run this in the background", "retry a failed job", "delay a job", "survive restarts", "job dashboard". Not this package: cron or recurring schedules → @warlock.js/scheduler; broker pub/sub messaging → @warlock.js/herald; core `Queue` is an in-memory batcher.'
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# @warlock.js/queue
|
|
14
|
+
|
|
15
|
+
Jobs are stored in Redis (default; not bundled), local SQLite without Redis, or memory for tests, retried on failure, and run by workers, in the app process by default. `defineJob({ name, handle })` registers a handler and returns a typed job; `job.dispatch(payload, options)` enqueues it. Any process with the same definition and a worker can run it. Server-only.
|
|
16
|
+
|
|
17
|
+
## The 80% path
|
|
18
|
+
|
|
19
|
+
1. Use this index for orientation and choose a task below.
|
|
20
|
+
2. Configure `src/config/queue.ts` and register `queueConnector()`: `configure-queue.md`.
|
|
21
|
+
3. Define and dispatch jobs (attempts, backoff, delay, priority, progress): `define-jobs.md`.
|
|
22
|
+
4. Inspect and recover failures, optionally the bull-board dashboard: `manage-failed-jobs.md`.
|
|
23
|
+
5. Back `@warlock.js/notifications` `.queue()` with BullMQ: `queue-notifications.md`.
|
|
24
|
+
|
|
25
|
+
## Conventions and pitfalls
|
|
26
|
+
|
|
27
|
+
- Job names are the routing key; a job with no matching `defineJob` in the worker process cannot run.
|
|
28
|
+
- Handlers must be idempotent: retries re-run them.
|
|
29
|
+
- Shutdown lets active jobs finish up to `workers.shutdownTimeout`, then closes connections.
|
|
30
|
+
- Guard the dashboard with middleware; an unguarded one is refused on purpose.
|
|
31
|
+
- Core `Queue` is an in-memory batcher, lost on exit; use this package when work must survive.
|
|
32
|
+
- Do not value-import from client code.
|
|
33
|
+
|
|
34
|
+
Use the `local-queues` topic for `driver: "local"` / `"memory"`, Node requirements, leases, crash recovery, and cancellation.
|
|
35
|
+
|
|
36
|
+
## Mental model
|
|
37
|
+
|
|
38
|
+
- **Job definition** — `defineJob({ name, handle })` registers a handler by name and returns a typed job.
|
|
39
|
+
- **Dispatch** — `job.dispatch(payload, options)` stores the job in the configured backend. Any process with the same definition and a worker can run it.
|
|
40
|
+
- **Worker** — one per queue name, started by `queueConnector()` (or `startWorkers()`); routes each job to the handler with its name.
|
|
41
|
+
- **Shutdown** — workers stop taking jobs, active jobs finish (up to `workers.shutdownTimeout`), then connections close.
|
|
42
|
+
|
|
43
|
+
## Not core's `Queue`
|
|
44
|
+
|
|
45
|
+
`@warlock.js/core` exports `Queue` — an in-memory batcher that flushes items by size or interval inside one process. No storage, no retries, lost on exit. Use `@warlock.js/queue` when work must survive a restart or be retried.
|
|
46
|
+
|
|
47
|
+
|
|
7
48
|
## configure-queue `@warlock.js/queue/configure-queue/SKILL.md`
|
|
8
49
|
|
|
9
50
|
---
|
|
@@ -365,37 +406,6 @@ await queueDashboard(getHttpServer(), {
|
|
|
365
406
|
- It has no authentication of its own — pass `middleware` yourself; this path does not enforce the production guard that the `dashboard` config does.
|
|
366
407
|
|
|
367
408
|
|
|
368
|
-
## overview `@warlock.js/queue/overview/SKILL.md`
|
|
369
|
-
|
|
370
|
-
---
|
|
371
|
-
name: overview
|
|
372
|
-
description: "@warlock.js/queue overview for orientation and choosing the focused skill for the task."
|
|
373
|
-
---
|
|
374
|
-
|
|
375
|
-
# `@warlock.js/queue` — overview
|
|
376
|
-
|
|
377
|
-
Durable background jobs. Jobs are stored in **Redis** (default), local SQLite without Redis, or memory for tests, retried on failure, and processed by workers — inside the app process by default.
|
|
378
|
-
|
|
379
|
-
## Mental model
|
|
380
|
-
|
|
381
|
-
- **Job definition** — `defineJob({ name, handle })` registers a handler by name and returns a typed job.
|
|
382
|
-
- **Dispatch** — `job.dispatch(payload, options)` stores the job in the configured backend. Any process with the same definition and a worker can run it.
|
|
383
|
-
- **Worker** — one per queue name, started by `queueConnector()` (or `startWorkers()`); routes each job to the handler with its name.
|
|
384
|
-
- **Shutdown** — workers stop taking jobs, active jobs finish (up to `workers.shutdownTimeout`), then connections close.
|
|
385
|
-
|
|
386
|
-
## Not core's `Queue`
|
|
387
|
-
|
|
388
|
-
`@warlock.js/core` exports `Queue` — an in-memory batcher that flushes items by size or interval inside one process. No storage, no retries, lost on exit. Use `@warlock.js/queue` when work must survive a restart or be retried.
|
|
389
|
-
|
|
390
|
-
## Skills index
|
|
391
|
-
|
|
392
|
-
- `local-queues` — SQLite/memory configuration, leases, crash recovery, cancellation.
|
|
393
|
-
- `configure-queue` — `src/config/queue.ts`, `queueConnector()`, workers on/off, shutdown.
|
|
394
|
-
- `define-jobs` — `defineJob`, `dispatch` options, retries, progress, `find`.
|
|
395
|
-
- `manage-failed-jobs` — `failedJobs`, `retryFailedJob`, the bull-board dashboard.
|
|
396
|
-
- `queue-notifications` — `bullmqQueue()` for notifications `.queue()`.
|
|
397
|
-
|
|
398
|
-
|
|
399
409
|
## queue-notifications `@warlock.js/queue/queue-notifications/SKILL.md`
|
|
400
410
|
|
|
401
411
|
---
|
package/llms.txt
CHANGED
|
@@ -6,9 +6,9 @@
|
|
|
6
6
|
|
|
7
7
|
## Skills
|
|
8
8
|
|
|
9
|
+
- [Package orientation](@warlock.js/queue/skills/index.md): Background jobs on BullMQ + Redis, local SQLite, or memory: retries, delays, priorities, workers, failed-job recovery. Exports `defineJob`, `queueConnector`, `startWorkers`, `closeQueue`, `getQueue`, `failedJobs`, `retryFailedJob`, `mountQueueDashboard`, `QueueConfig`, `QueueJob`. Use for: "run this in the background", "retry a failed job", "delay a job", "survive restarts", "job dashboard". Not this package: cron or recurring schedules → @warlock.js/scheduler; broker pub/sub messaging → @warlock.js/herald; core `Queue` is an in-memory batcher.
|
|
9
10
|
- [configure-queue](@warlock.js/queue/configure-queue/SKILL.md): Configure `@warlock.js/queue`: the declarative `src/config/queue.ts` (`QueueConfig` — `connection`, `prefix`, `defaultQueue`, `defaultJobOptions`, `workers: { enabled, concurrency, shutdownTimeout }`), registering `queueConnector()` in `warlock.config.ts > connectors`, running a dispatch-only process, and graceful shutdown. Programmatic `setQueueConfig` / `startWorkers` / `closeQueue` for scripts and tests. Triggers: `QueueConfig`, `queueConnector`, `setQueueConfig`, `startWorkers`, `closeQueue`, `workers.enabled`, `shutdownTimeout`; "configure the queue", "connect BullMQ to Redis", "disable workers in the web process", "graceful shutdown of jobs". Skip: writing jobs — the `define-jobs` topic.
|
|
10
11
|
- [define-jobs](@warlock.js/queue/define-jobs/SKILL.md): Define and dispatch background jobs with `@warlock.js/queue`: `defineJob({ name, queue?, attempts?, backoff?, removeOnComplete?, removeOnFail?, handle(payload, ctx) })` returns a typed job; `job.dispatch(payload, { delay, priority, jobId, attempts, backoff })`; the handler context (`id`, `attempt`, `maxAttempts`, `progress()`, `log()`); reading a job with `job.find(id)`. Triggers: `setDispatchInterceptor`, `queueFake`, `defineJob`, `.dispatch(`, `ctx.progress`, `JobContext`, `DispatchOptions`, `backoff`, `attempts`, `priority`, `jobId`; "run this in the background", "retry with backoff", "delay a job", "job progress", "idempotent dispatch". Skip: config and workers — the `configure-queue` topic; failed jobs — the `manage-failed-jobs` topic.
|
|
11
12
|
- [local-queues](@warlock.js/queue/local-queues/SKILL.md): Run @warlock.js/queue without Redis: driver: "local" for durable single-host SQLite jobs using node:sqlite on Node >= 22.15, or driver: "memory" for real handler execution in tests. Covers local.path, leases, crash recovery, polling, concurrency, cancellation, graceful shutdown, and at-least-once delivery. Use for local/desktop background jobs, testing workers without Redis, or configuring SQLite queues.
|
|
12
13
|
- [manage-failed-jobs](@warlock.js/queue/manage-failed-jobs/SKILL.md): Inspect and retry failed `@warlock.js/queue` jobs: `failedJobs({ queue, start, end })` returns `FailedJob[]` (`id`, `name`, `payload`, `attemptsMade`, `failedReason`, `stacktrace`, `failedAt`, `retry()`), `retryFailedJob(id, { queue })` (throws `FailedJobNotFoundError`), and the bull-board UI — `warlock add bull-board` (requires: ["queue"], so it installs queue first when missing) writes a `dashboard: { enabled, path, middleware }` block to `src/config/queue.ts`; a guard middleware is required in production or boot throws `QueueDashboardUnguardedError`. Manual `queueDashboard(server, { basePath, queues, middleware })` also available — needs `@bull-board/api` + `@bull-board/fastify`, loaded only on call, missing ones throw `QueueDashboardDependencyError`. Triggers: `failedJobs`, `retryFailedJob`, `queueDashboard`, `bull-board`, `dashboard.enabled`, `QueueDashboardUnguardedError`; "list failed jobs", "retry a failed job", "queue dashboard", "job admin UI". Skip: defining retries — the `define-jobs` topic.
|
|
13
|
-
- [overview](@warlock.js/queue/overview/SKILL.md): @warlock.js/queue overview for orientation and choosing the focused skill for the task.
|
|
14
14
|
- [queue-notifications](@warlock.js/queue/queue-notifications/SKILL.md): Send `@warlock.js/notifications` `.queue()` deliveries through BullMQ with `bullmqQueue({ queue?, attempts?, backoff? })` from `@warlock.js/notifications` — put it in the `queue` slot of `src/config/notifications.ts`; the queue workers deliver. Honours `SendOptions.delay` (number = seconds, or "10m"), retries a failing `channel.send`, and fails at once for a channel missing from the worker config. Triggers: `bullmqQueue`, `NotificationConfig.queue`, `QueuePackageNotInstalledError`; "queue notifications with BullMQ", "retry notification delivery", "delayed notification". Skip: the herald backend — the `queue-notifications` topic of the `warlock-js-notifications` skill.
|
package/package.json
CHANGED
|
@@ -11,8 +11,8 @@
|
|
|
11
11
|
"peerDependencies": {
|
|
12
12
|
"@bull-board/api": "^9.0.0",
|
|
13
13
|
"@bull-board/fastify": "^9.0.0",
|
|
14
|
-
"@warlock.js/core": "5.34.
|
|
15
|
-
"@warlock.js/logger": "5.34.
|
|
14
|
+
"@warlock.js/core": "5.34.2",
|
|
15
|
+
"@warlock.js/logger": "5.34.2"
|
|
16
16
|
},
|
|
17
17
|
"peerDependenciesMeta": {
|
|
18
18
|
"@bull-board/api": {
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
],
|
|
39
39
|
"author": "hassanzohdy",
|
|
40
40
|
"license": "MIT",
|
|
41
|
-
"version": "5.34.
|
|
41
|
+
"version": "5.34.2",
|
|
42
42
|
"main": "./cjs/index.cjs",
|
|
43
43
|
"module": "./esm/index.mjs",
|
|
44
44
|
"types": "./esm/index.d.mts",
|
package/skills/index.md
CHANGED
|
@@ -8,7 +8,7 @@ Jobs are stored in Redis (default; not bundled), local SQLite without Redis, or
|
|
|
8
8
|
|
|
9
9
|
## The 80% path
|
|
10
10
|
|
|
11
|
-
1.
|
|
11
|
+
1. Use this index for orientation and choose a task below.
|
|
12
12
|
2. Configure `src/config/queue.ts` and register `queueConnector()`: `configure-queue.md`.
|
|
13
13
|
3. Define and dispatch jobs (attempts, backoff, delay, priority, progress): `define-jobs.md`.
|
|
14
14
|
4. Inspect and recover failures, optionally the bull-board dashboard: `manage-failed-jobs.md`.
|
|
@@ -24,3 +24,14 @@ Jobs are stored in Redis (default; not bundled), local SQLite without Redis, or
|
|
|
24
24
|
- Do not value-import from client code.
|
|
25
25
|
|
|
26
26
|
Use the `local-queues` topic for `driver: "local"` / `"memory"`, Node requirements, leases, crash recovery, and cancellation.
|
|
27
|
+
|
|
28
|
+
## Mental model
|
|
29
|
+
|
|
30
|
+
- **Job definition** — `defineJob({ name, handle })` registers a handler by name and returns a typed job.
|
|
31
|
+
- **Dispatch** — `job.dispatch(payload, options)` stores the job in the configured backend. Any process with the same definition and a worker can run it.
|
|
32
|
+
- **Worker** — one per queue name, started by `queueConnector()` (or `startWorkers()`); routes each job to the handler with its name.
|
|
33
|
+
- **Shutdown** — workers stop taking jobs, active jobs finish (up to `workers.shutdownTimeout`), then connections close.
|
|
34
|
+
|
|
35
|
+
## Not core's `Queue`
|
|
36
|
+
|
|
37
|
+
`@warlock.js/core` exports `Queue` — an in-memory batcher that flushes items by size or interval inside one process. No storage, no retries, lost on exit. Use `@warlock.js/queue` when work must survive a restart or be retried.
|
package/skills/overview/SKILL.md
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: overview
|
|
3
|
-
description: "@warlock.js/queue overview for orientation and choosing the focused skill for the task."
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# `@warlock.js/queue` — overview
|
|
7
|
-
|
|
8
|
-
Durable background jobs. Jobs are stored in **Redis** (default), local SQLite without Redis, or memory for tests, retried on failure, and processed by workers — inside the app process by default.
|
|
9
|
-
|
|
10
|
-
## Mental model
|
|
11
|
-
|
|
12
|
-
- **Job definition** — `defineJob({ name, handle })` registers a handler by name and returns a typed job.
|
|
13
|
-
- **Dispatch** — `job.dispatch(payload, options)` stores the job in the configured backend. Any process with the same definition and a worker can run it.
|
|
14
|
-
- **Worker** — one per queue name, started by `queueConnector()` (or `startWorkers()`); routes each job to the handler with its name.
|
|
15
|
-
- **Shutdown** — workers stop taking jobs, active jobs finish (up to `workers.shutdownTimeout`), then connections close.
|
|
16
|
-
|
|
17
|
-
## Not core's `Queue`
|
|
18
|
-
|
|
19
|
-
`@warlock.js/core` exports `Queue` — an in-memory batcher that flushes items by size or interval inside one process. No storage, no retries, lost on exit. Use `@warlock.js/queue` when work must survive a restart or be retried.
|
|
20
|
-
|
|
21
|
-
## Skills index
|
|
22
|
-
|
|
23
|
-
- `local-queues` — SQLite/memory configuration, leases, crash recovery, cancellation.
|
|
24
|
-
- `configure-queue` — `src/config/queue.ts`, `queueConnector()`, workers on/off, shutdown.
|
|
25
|
-
- `define-jobs` — `defineJob`, `dispatch` options, retries, progress, `find`.
|
|
26
|
-
- `manage-failed-jobs` — `failedJobs`, `retryFailedJob`, the bull-board dashboard.
|
|
27
|
-
- `queue-notifications` — `bullmqQueue()` for notifications `.queue()`.
|