Files
skills/plugins/document-navigator/docs/foundation/flow/queue-distribution-http
admin 9bf56a806b Move docs/ package mirror into document-navigator plugin
Relocate the ~6k-file docs tree from the repo root into
plugins/document-navigator/docs/ so the plugin is self-contained and
portable. docs/superpowers/ (specs and plans) stays at the repo root.

Moved via cp+rm rather than git mv because directory rename() fails with
EPERM on this WSL /mnt DrvFs mount; git rename-detection pairs the
identical-content files at commit time.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-30 01:10:00 +01:00
..

@suaveplan/queue-distribution-http - HTTP transport plugin for @suaveplan/queue-distribution: HttpWorkerCommunicator (fetch-backed, Zod-validated wire envelope) and RemoteWorker (AbstractWorker subclass with @suaveplan/retry-backed connect / reconnect / health loop).

Summary

HTTP transport plugin for @suaveplan/queue-distribution. Ships HttpWorkerCommunicator (a fetch-backed WorkerCommunicator with a Zod-validated wire envelope, injectable fetch, structured timeouts, and AbortSignal threading) and RemoteWorker (an AbstractWorker subclass driving the communicator with bounded exponential-backoff connect retries via @suaveplan/retry).

The plugin lives separately from the core distribution package so browser-only and worker-thread-only consumers don't have to carry HTTP transport code they never use.

Documentation tree

- [base](./src/communicator/base/base.md) — _(no submodules)_- [http](./src/communicator/http/http-communicator.md) — _(no submodules)_- [http-communicator](./src/communicator/http/http-communicator.md) — _(no submodules)_- [errors](./src/errors/queue-distribution-http-error.md) — _(no submodules)_- [queue-distribution-http-error](./src/errors/queue-distribution-http-error.md) — _(no submodules)_- [observability](./src/observability/instruments.md) — _(no submodules)_- [instruments](./src/observability/instruments.md) — _(no submodules)_- [remote](./src/worker/remote/remote.md) — _(no submodules)_- [remote](./src/worker/remote/remote.md) — _(no submodules)_- [base](./src/communicator/base/base.md) — _(no submodules)_- [http](./src/communicator/http/http-communicator.md) — _(no submodules)_- [http-communicator](./src/communicator/http/http-communicator.md) — _(no submodules)_- [errors](./src/errors/queue-distribution-http-error.md) — _(no submodules)_- [queue-distribution-http-error](./src/errors/queue-distribution-http-error.md) — _(no submodules)_- [observability](./src/observability/instruments.md) — _(no submodules)_- [instruments](./src/observability/instruments.md) — _(no submodules)_- [remote](./src/worker/remote/remote.md) — _(no submodules)_- [remote](./src/worker/remote/remote.md) — _(no submodules)_- [base](./src/communicator/base/base.md) — _(no submodules)_- [http](./src/communicator/http/http-communicator.md) — _(no submodules)_- [http-communicator](./src/communicator/http/http-communicator.md) — _(no submodules)_- [errors](./src/errors/queue-distribution-http-error.md) — _(no submodules)_- [queue-distribution-http-error](./src/errors/queue-distribution-http-error.md) — _(no submodules)_- [observability](./src/observability/instruments.md) — _(no submodules)_- [instruments](./src/observability/instruments.md) — _(no submodules)_- [remote](./src/worker/remote/remote.md) — _(no submodules)_- [remote](./src/worker/remote/remote.md) — _(no submodules)_- [base](./src/communicator/base/base.md) — _(no submodules)_- [http](./src/communicator/http/http-communicator.md) — _(no submodules)_ - [http-communicator](./src/communicator/http/http-communicator.md) — _(no submodules)_- [errors](./src/errors/queue-distribution-http-error.md) — _(no submodules)_ - [queue-distribution-http-error](./src/errors/queue-distribution-http-error.md) — _(no submodules)_- [observability](./src/observability/instruments.md) — _(no submodules)_ - [instruments](./src/observability/instruments.md) — _(no submodules)_- [remote](./src/worker/remote/remote.md) — _(no submodules)_ - [remote](./src/worker/remote/remote.md) — _(no submodules)_

Install

bun add @suaveplan/queue-distribution-http

Quick start

import { WorkerPool, WorkerManager } from "@suaveplan/queue-distribution";
import {
    HttpWorkerCommunicator,
    RemoteWorker,
} from "@suaveplan/queue-distribution-http";

const communicator = new HttpWorkerCommunicator({
    defaultTimeoutMs: 5_000,
    headers: { Authorization: `Bearer ${token}` },
});

const pool = new WorkerPool();
pool.addWorker(new RemoteWorker("https://worker-a.example", communicator, { id: "a" }));
pool.addWorker(new RemoteWorker("https://worker-b.example", communicator, { id: "b" }));
await pool.startAllWorkers();

const manager = new WorkerManager(pool, {
    autoHealthCheck: false,
    maxTaskRetries: 3,
});

const result = await manager.assignTask(task, input);

Modules

Design highlights

  • 100% test coverage (statements + branches + functions + lines).
  • Injectable fetch and Clock — deterministic under test, swappable for auth-wrapped fetch in production.
  • Connect retries routed through @suaveplan/retry's sleep; bounded loop, no recursion.
  • Zod-validated wire envelope rejects malformed payloads at the boundary.
  • Structured QueueDistributionHttpError subclasses with a frozen stable-code registry.

Status

Part of the rebuild — version 0.1.0 while it stabilises.