Files
skills/plugins/document-navigator/docs/foundation/flow/queue-distribution-worker-thread/README.md
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

7.0 KiB

@suaveplan/queue-distribution-worker-thread - Web-Worker / Node worker_threads transport plugin for @suaveplan/queue-distribution: caller-injected WorkerFactory bridges to the platform-native worker, message correlation, Zod-validated reply envelope, bounded outstanding-request map.

Summary

Web-Worker / Node worker_threads transport plugin for @suaveplan/queue-distribution. Ships WorkerThreadCommunicator (a ThreadWorkerLike-based message bridge with Zod-validated envelopes, bounded outstanding-request map, AbortSignal cancellation, structured timeouts) and WorkerThreadWorker (an AbstractWorker subclass that drives the communicator and reacts to crash / exit events).

The plugin lives separately from the core distribution package so HTTP-only and in-process-only consumers don't carry worker-thread bridge code they never use.

Documentation tree

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

Install

bun add @suaveplan/queue-distribution-worker-thread

Quick start

import {
    WorkerManager,
    WorkerPool,
} from "@suaveplan/queue-distribution";
import { WorkerThreadWorker } from "@suaveplan/queue-distribution-worker-thread";

const pool = new WorkerPool();
pool.addWorker(
    new WorkerThreadWorker(
        () => new Worker(new URL("./worker.ts", import.meta.url), { type: "module" }),
        { id: "hot-1", capacity: 4 },
    ),
);
await pool.startAllWorkers();

const manager = new WorkerManager(pool, { autoHealthCheck: false });
const result = await manager.assignTask(task, input);

Modules

Design highlights

  • 100% test coverage (statements + branches + functions + lines).
  • Same class runs against browser Worker and Node worker_threads via injectable WorkerFactory.
  • Bounded Map<requestId, PendingRequest> — never leaks outstanding entries.
  • Zod-validated envelope in both directions rejects malformed traffic at the boundary.
  • Structured QueueDistributionWorkerThreadError subclasses with a frozen stable-code registry.
  • AbortSignal threaded through every request; terminate() fails all in-flight requests.

Status

Part of the rebuild — version 0.1.0 while it stabilises.