Agent Task Queue
Use this skill when a task needs queue-based orchestration for multiple agents or workers. The bundled runtime is in src/ and covers:
- Priority queue, delayed queue, and dead-letter queue behavior
- Scheduler polling with concurrency limits, retries, and timeouts
- Dependency validation, dependency gating, and result propagation
- Task logs and aggregate metrics
- Pluggable storage through in-memory, SQLite, or Redis backends
Workflow
- Import
TaskQueueandSchedulerfromsrc/index.ts. - Pick storage:
- Default
InMemoryStoragefor local execution or tests SQLiteStoragefor single-node persistenceRedisStoragefor distributed workers
- Default
- Register handlers with
scheduler.register(taskType, handler). - Enqueue tasks with
priority,runAt,dependencies,retryPolicy, andtimeoutMsas needed. - Drive execution via
scheduler.tick()orscheduler.start(). - Inspect
queue.logs(),queue.metrics(),queue.getSnapshot(), andqueue.get(taskId)for state and traceability.
Key Files
src/TaskQueue.ts: queue lifecycle, ready/dead-letter snapshots, logs, metricssrc/Scheduler.ts: polling loop, concurrency control, retries, timeout handlingsrc/DependencyManager.ts: DAG validation and dependency result propagationsrc/storage/: storage implementationstests/task-queue.test.ts: behavior coverageexamples/basic.ts: end-to-end usage
Implementation Notes
- Dependency tasks must already exist when a dependent task is enqueued.
- A task becomes runnable only after all dependencies are
completed. - Completed dependency results are stored and exposed to downstream handlers through
context.dependencies. - When retries are exhausted, the task is moved to
dead_letter. - Timeout cancellation uses
AbortSignal; long-running handlers should watchcontext.signal.
Validation
Run:
npm run check
If Redis or SQLite packages are unavailable in the environment, install dependencies first with npm install.