@hardlydifficult/worker-server 1.0.2 → 1.0.4
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/README.md +246 -0
- package/dist/ConnectionHandler.d.ts.map +1 -1
- package/dist/ConnectionHandler.js +3 -0
- package/dist/ConnectionHandler.js.map +1 -1
- package/dist/WorkerPool.d.ts +8 -2
- package/dist/WorkerPool.d.ts.map +1 -1
- package/dist/WorkerPool.js +31 -2
- package/dist/WorkerPool.js.map +1 -1
- package/dist/WorkerServer.d.ts +2 -2
- package/dist/WorkerServer.d.ts.map +1 -1
- package/dist/WorkerServer.js +4 -4
- package/dist/WorkerServer.js.map +1 -1
- package/dist/types.d.ts +8 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
package/README.md
ADDED
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
# @hardlydifficult/worker-server
|
|
2
|
+
|
|
3
|
+
A WebSocket-based worker server that manages remote worker connections, health monitoring, request routing, and load balancing through a clean TypeScript interface.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install @hardlydifficult/worker-server
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Quick Start
|
|
12
|
+
|
|
13
|
+
```typescript
|
|
14
|
+
import { WorkerServer } from "@hardlydifficult/worker-server";
|
|
15
|
+
|
|
16
|
+
const server = new WorkerServer({
|
|
17
|
+
port: 8080,
|
|
18
|
+
heartbeatTimeoutMs: 60000, // 60 seconds
|
|
19
|
+
healthCheckIntervalMs: 10000, // 10 seconds
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
server.onWorkerConnected((worker) => {
|
|
23
|
+
console.log(`Worker connected: ${worker.name} (${worker.id})`);
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
server.onWorkerDisconnected((worker, pendingRequests) => {
|
|
27
|
+
console.log(`Worker disconnected: ${worker.name} (${worker.id})`);
|
|
28
|
+
if (pendingRequests.size > 0) {
|
|
29
|
+
console.log(`Rescheduling ${pendingRequests.size} pending requests`);
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
server.onWorkerMessage("work_complete", (worker, message) => {
|
|
34
|
+
console.log(`Work complete: ${message.requestId}`);
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
server.addHttpHandler(async (req, res) => {
|
|
38
|
+
if (req.url === "/health") {
|
|
39
|
+
res.writeHead(200, { "Content-Type": "application/json" });
|
|
40
|
+
res.end(JSON.stringify({ status: "ok" }));
|
|
41
|
+
return true;
|
|
42
|
+
}
|
|
43
|
+
return false;
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
await server.start();
|
|
47
|
+
console.log("Worker server running on port 8080");
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## Core Concepts
|
|
51
|
+
|
|
52
|
+
### Worker Management
|
|
53
|
+
|
|
54
|
+
Workers connect via WebSocket, register with capabilities (supported models, concurrency limits), and send periodic heartbeats. The server tracks their status (available, busy, draining, unhealthy) and makes routing decisions based on load and model compatibility.
|
|
55
|
+
|
|
56
|
+
### Request Tracking
|
|
57
|
+
|
|
58
|
+
Requests are tracked per-worker and can be released when complete. Optional categories enable per-category concurrency limits when workers declare `concurrencyLimits` in their capabilities.
|
|
59
|
+
|
|
60
|
+
### Load Balancing
|
|
61
|
+
|
|
62
|
+
Workers are selected based on:
|
|
63
|
+
- Model support (exact or substring match)
|
|
64
|
+
- Current load (least-loaded algorithm)
|
|
65
|
+
- Category-specific limits (when `category` is provided)
|
|
66
|
+
|
|
67
|
+
## API Reference
|
|
68
|
+
|
|
69
|
+
### WorkerServer
|
|
70
|
+
|
|
71
|
+
Main entry point for managing worker connections.
|
|
72
|
+
|
|
73
|
+
#### Constructor
|
|
74
|
+
|
|
75
|
+
```typescript
|
|
76
|
+
constructor(options: WorkerServerOptions)
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
| Option | Type | Default | Description |
|
|
80
|
+
|--------|------|---------|-------------|
|
|
81
|
+
| `port` | `number` | — | HTTP + WebSocket server port |
|
|
82
|
+
| `authToken` | `string` | `undefined` | Optional token required for worker registration |
|
|
83
|
+
| `heartbeatTimeoutMs` | `number` | `60000` | Milliseconds before a missed heartbeat marks a worker unhealthy |
|
|
84
|
+
| `healthCheckIntervalMs` | `number` | `10000` | Interval (ms) for health checks |
|
|
85
|
+
| `heartbeatIntervalMs` | `number` | `15000` | Heartbeat interval communicated to workers |
|
|
86
|
+
| `logger` | `WorkerServerLogger` | `undefined` | Logger instance (defaults to no-op) |
|
|
87
|
+
|
|
88
|
+
#### Lifecycle Events
|
|
89
|
+
|
|
90
|
+
```typescript
|
|
91
|
+
// Called when a worker successfully registers
|
|
92
|
+
onWorkerConnected(handler: WorkerConnectedHandler): () => void;
|
|
93
|
+
|
|
94
|
+
// Called when a worker disconnects with pending request IDs
|
|
95
|
+
onWorkerDisconnected(handler: WorkerDisconnectedHandler): () => void;
|
|
96
|
+
|
|
97
|
+
// Register a handler for a specific message type (dispatched by 'type' field)
|
|
98
|
+
onWorkerMessage<T = Record<string, unknown>>(
|
|
99
|
+
type: string,
|
|
100
|
+
handler: WorkerMessageHandler<T>
|
|
101
|
+
): () => void;
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
#### Message Operations
|
|
105
|
+
|
|
106
|
+
```typescript
|
|
107
|
+
// Send a JSON message to a specific worker (false if failed)
|
|
108
|
+
send(workerId: string, message: Record<string, unknown>): boolean;
|
|
109
|
+
|
|
110
|
+
// Broadcast to all connected workers
|
|
111
|
+
broadcast(message: Record<string, unknown>): void;
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
#### Pool Queries
|
|
115
|
+
|
|
116
|
+
```typescript
|
|
117
|
+
// Get least-loaded worker supporting the given model
|
|
118
|
+
getAvailableWorker(model: string, category?: string): WorkerInfo | null;
|
|
119
|
+
|
|
120
|
+
// Get any available worker (model-agnostic)
|
|
121
|
+
getAnyAvailableWorker(): WorkerInfo | null;
|
|
122
|
+
|
|
123
|
+
// Total connected worker count
|
|
124
|
+
getWorkerCount(): number;
|
|
125
|
+
|
|
126
|
+
// Available worker count
|
|
127
|
+
getAvailableWorkerCount(): number;
|
|
128
|
+
|
|
129
|
+
// Get info about all connected workers
|
|
130
|
+
getWorkerInfo(): WorkerInfo[];
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
#### Request Tracking
|
|
134
|
+
|
|
135
|
+
```typescript
|
|
136
|
+
// Track a request assigned to a worker (optional category)
|
|
137
|
+
trackRequest(workerId: string, requestId: string, category?: string): void;
|
|
138
|
+
|
|
139
|
+
// Release a tracked request (optionally increment completed count)
|
|
140
|
+
releaseRequest(
|
|
141
|
+
requestId: string,
|
|
142
|
+
options?: { incrementCompleted?: boolean }
|
|
143
|
+
): void;
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
#### HTTP & WebSocket Extensibility
|
|
147
|
+
|
|
148
|
+
```typescript
|
|
149
|
+
// Add an HTTP handler (called in order until one returns true)
|
|
150
|
+
addHttpHandler(handler: HttpRequestHandler): void;
|
|
151
|
+
|
|
152
|
+
// Add an additional WebSocket endpoint at a path
|
|
153
|
+
addWebSocketEndpoint(
|
|
154
|
+
path: string,
|
|
155
|
+
handler: WebSocketConnectionHandler
|
|
156
|
+
): void;
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
#### Server Lifecycle
|
|
160
|
+
|
|
161
|
+
```typescript
|
|
162
|
+
// Start the HTTP + WebSocket server
|
|
163
|
+
start(): Promise<void>;
|
|
164
|
+
|
|
165
|
+
// Stop the server and close all connections
|
|
166
|
+
stop(): Promise<void>;
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
### WorkerInfo
|
|
170
|
+
|
|
171
|
+
Public interface representing a connected worker:
|
|
172
|
+
|
|
173
|
+
```typescript
|
|
174
|
+
interface WorkerInfo {
|
|
175
|
+
readonly id: string;
|
|
176
|
+
readonly name: string;
|
|
177
|
+
readonly status: WorkerStatus; // "available" | "busy" | "draining" | "unhealthy"
|
|
178
|
+
readonly capabilities: WorkerCapabilities;
|
|
179
|
+
readonly sessionId: string;
|
|
180
|
+
readonly connectedAt: Date;
|
|
181
|
+
readonly lastHeartbeat: Date;
|
|
182
|
+
readonly activeRequests: number;
|
|
183
|
+
readonly completedRequests: number;
|
|
184
|
+
readonly pendingRequestIds: ReadonlySet<string>;
|
|
185
|
+
readonly categoryActiveRequests: ReadonlyMap<string, number>;
|
|
186
|
+
}
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
### WorkerCapabilities
|
|
190
|
+
|
|
191
|
+
Describes a worker's capabilities:
|
|
192
|
+
|
|
193
|
+
```typescript
|
|
194
|
+
interface WorkerCapabilities {
|
|
195
|
+
models: ModelInfo[];
|
|
196
|
+
maxConcurrentRequests: number;
|
|
197
|
+
metadata?: Record<string, unknown>;
|
|
198
|
+
concurrencyLimits?: Record<string, number>;
|
|
199
|
+
}
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
### ModelInfo
|
|
203
|
+
|
|
204
|
+
Describes a supported model:
|
|
205
|
+
|
|
206
|
+
```typescript
|
|
207
|
+
interface ModelInfo {
|
|
208
|
+
modelId: string;
|
|
209
|
+
displayName: string;
|
|
210
|
+
maxContextTokens: number;
|
|
211
|
+
maxOutputTokens: number;
|
|
212
|
+
supportsStreaming: boolean;
|
|
213
|
+
supportsVision?: boolean;
|
|
214
|
+
supportsTools?: boolean;
|
|
215
|
+
}
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
### WorkerStatus
|
|
219
|
+
|
|
220
|
+
Worker state enumeration:
|
|
221
|
+
|
|
222
|
+
| Status | Description |
|
|
223
|
+
|--------|-------------|
|
|
224
|
+
| `available` | Worker is idle and can accept new requests |
|
|
225
|
+
| `busy` | Worker is at max concurrent requests but may accept model-agnostic tasks |
|
|
226
|
+
| `draining` | Worker is being gracefully decommissioned |
|
|
227
|
+
| `unhealthy` | Worker has missed heartbeats and is presumed degraded |
|
|
228
|
+
|
|
229
|
+
## Worker Protocol
|
|
230
|
+
|
|
231
|
+
Workers communicate using JSON messages with a `type` field:
|
|
232
|
+
|
|
233
|
+
| Message | Direction | Description |
|
|
234
|
+
|---------|-----------|-------------|
|
|
235
|
+
| `worker_registration` | Worker → Server | Register with capabilities |
|
|
236
|
+
| `worker_registration_ack` | Server → Worker | Acknowledgment with session ID |
|
|
237
|
+
| `heartbeat` | Worker → Server | Periodic health check |
|
|
238
|
+
| `heartbeat_ack` | Server → Worker | Acknowledgment with next deadline |
|
|
239
|
+
|
|
240
|
+
All other message types are routed to registered handlers via `onWorkerMessage()`.
|
|
241
|
+
|
|
242
|
+
## Health Monitoring
|
|
243
|
+
|
|
244
|
+
- Workers missing heartbeats for `heartbeatTimeoutMs` are marked `unhealthy`
|
|
245
|
+
- Workers missing heartbeats for `3 × heartbeatTimeoutMs` are disconnected
|
|
246
|
+
- Health checks run every `healthCheckIntervalMs`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConnectionHandler.d.ts","sourceRoot":"","sources":["../src/ConnectionHandler.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,SAAS,MAAM,IAAI,CAAC;AAGhC,OAAO,EAML,KAAK,sBAAsB,EAC3B,KAAK,yBAAyB,EAE9B,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EAExB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAgB,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAahE,MAAM,WAAW,uBAAuB;IACtC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;GAKG;AACH,qBAAa,iBAAiB;IAU1B,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAVzB,OAAO,CAAC,QAAQ,CAAC,eAAe,CAG5B;IACJ,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAqC;IACvE,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAwC;IAC7E,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;gBAGzB,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,uBAAuB,EAChD,MAAM,CAAC,EAAE,kBAAkB;IAK7B;;;OAGG;IACH,SAAS,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACnC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAC/B,MAAM,IAAI;IAab,iBAAiB,CAAC,OAAO,EAAE,sBAAsB,GAAG,MAAM,IAAI;IAO9D,oBAAoB,CAAC,OAAO,EAAE,yBAAyB,GAAG,MAAM,IAAI;IAOpE,4DAA4D;IAC5D,gBAAgB,CAAC,EAAE,EAAE,SAAS,GAAG,IAAI;IAkBrC,OAAO,CAAC,aAAa;IAmDrB,OAAO,CAAC,kBAAkB;
|
|
1
|
+
{"version":3,"file":"ConnectionHandler.d.ts","sourceRoot":"","sources":["../src/ConnectionHandler.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,SAAS,MAAM,IAAI,CAAC;AAGhC,OAAO,EAML,KAAK,sBAAsB,EAC3B,KAAK,yBAAyB,EAE9B,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EAExB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAgB,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAahE,MAAM,WAAW,uBAAuB;IACtC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;GAKG;AACH,qBAAa,iBAAiB;IAU1B,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAVzB,OAAO,CAAC,QAAQ,CAAC,eAAe,CAG5B;IACJ,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAqC;IACvE,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAwC;IAC7E,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;gBAGzB,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,uBAAuB,EAChD,MAAM,CAAC,EAAE,kBAAkB;IAK7B;;;OAGG;IACH,SAAS,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACnC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAC/B,MAAM,IAAI;IAab,iBAAiB,CAAC,OAAO,EAAE,sBAAsB,GAAG,MAAM,IAAI;IAO9D,oBAAoB,CAAC,OAAO,EAAE,yBAAyB,GAAG,MAAM,IAAI;IAOpE,4DAA4D;IAC5D,gBAAgB,CAAC,EAAE,EAAE,SAAS,GAAG,IAAI;IAkBrC,OAAO,CAAC,aAAa;IAmDrB,OAAO,CAAC,kBAAkB;IA6G1B,OAAO,CAAC,eAAe;IA2BvB,OAAO,CAAC,gBAAgB;IAqCxB,OAAO,CAAC,iBAAiB;CAe1B"}
|
|
@@ -186,6 +186,8 @@ class ConnectionHandler {
|
|
|
186
186
|
activeRequests: 0,
|
|
187
187
|
pendingRequests: new Set(),
|
|
188
188
|
completedRequests: 0,
|
|
189
|
+
requestCategories: new Map(),
|
|
190
|
+
categoryActiveRequests: new Map(),
|
|
189
191
|
};
|
|
190
192
|
this.pool.add(worker);
|
|
191
193
|
ws.workerId = message.workerId;
|
|
@@ -283,6 +285,7 @@ class ConnectionHandler {
|
|
|
283
285
|
activeRequests: 0,
|
|
284
286
|
completedRequests: 0,
|
|
285
287
|
pendingRequestIds: new Set(),
|
|
288
|
+
categoryActiveRequests: new Map(),
|
|
286
289
|
};
|
|
287
290
|
}
|
|
288
291
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConnectionHandler.js","sourceRoot":"","sources":["../src/ConnectionHandler.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ConnectionHandler.js","sourceRoot":"","sources":["../src/ConnectionHandler.ts"],"names":[],"mappings":"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"}
|
package/dist/WorkerPool.d.ts
CHANGED
|
@@ -15,18 +15,24 @@ export declare class WorkerPool {
|
|
|
15
15
|
values(): IterableIterator<ConnectedWorker>;
|
|
16
16
|
/**
|
|
17
17
|
* Get the least-loaded available worker supporting the given model.
|
|
18
|
+
* If category is provided and the worker has a concurrencyLimits entry for
|
|
19
|
+
* that category, the category slot count is checked in addition to the
|
|
20
|
+
* overall maxConcurrentRequests limit.
|
|
18
21
|
*/
|
|
19
|
-
getAvailableWorker(model: string): ConnectedWorker | null;
|
|
22
|
+
getAvailableWorker(model: string, category?: string): ConnectedWorker | null;
|
|
20
23
|
/**
|
|
21
24
|
* Get any available worker (for tasks that don't need a specific model).
|
|
22
25
|
*/
|
|
23
26
|
getAnyAvailableWorker(): ConnectedWorker | null;
|
|
24
27
|
/**
|
|
25
28
|
* Track a request as sent to a worker.
|
|
29
|
+
* If category is provided it is stored for automatic lookup on release and
|
|
30
|
+
* the per-category active count is incremented.
|
|
26
31
|
*/
|
|
27
|
-
trackRequest(workerId: string, requestId: string): void;
|
|
32
|
+
trackRequest(workerId: string, requestId: string, category?: string): void;
|
|
28
33
|
/**
|
|
29
34
|
* Release a request from whichever worker is handling it.
|
|
35
|
+
* Category is looked up automatically from the stored requestCategories map.
|
|
30
36
|
*/
|
|
31
37
|
releaseRequest(requestId: string, options?: {
|
|
32
38
|
incrementCompleted?: boolean;
|
package/dist/WorkerPool.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkerPool.d.ts","sourceRoot":"","sources":["../src/WorkerPool.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,UAAU,EACf,KAAK,kBAAkB,EAExB,MAAM,YAAY,CAAC;AAapB,gFAAgF;AAChF,wBAAgB,YAAY,CAAC,CAAC,EAAE,eAAe,GAAG,UAAU,
|
|
1
|
+
{"version":3,"file":"WorkerPool.d.ts","sourceRoot":"","sources":["../src/WorkerPool.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,UAAU,EACf,KAAK,kBAAkB,EAExB,MAAM,YAAY,CAAC;AAapB,gFAAgF;AAChF,wBAAgB,YAAY,CAAC,CAAC,EAAE,eAAe,GAAG,UAAU,CAc3D;AAED;;GAEG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAsC;IAC9D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;gBAEhC,MAAM,CAAC,EAAE,kBAAkB;IAIvC,GAAG,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI;IAIlC,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAQ/C,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAI5C,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAIxB,MAAM,IAAI,gBAAgB,CAAC,eAAe,CAAC;IAI3C;;;;;OAKG;IACH,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI;IAiD5E;;OAEG;IACH,qBAAqB,IAAI,eAAe,GAAG,IAAI;IAY/C;;;;OAIG;IACH,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI;IAsB1E;;;OAGG;IACH,cAAc,CACZ,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE;QAAE,kBAAkB,CAAC,EAAE,OAAO,CAAA;KAAE,GACzC,IAAI;IA6BP,QAAQ,IAAI,MAAM;IAIlB,iBAAiB,IAAI,MAAM;IAU3B,mDAAmD;IACnD,iBAAiB,IAAI,UAAU,EAAE;IAIjC;;;OAGG;IACH,WAAW,CAAC,kBAAkB,EAAE,MAAM,GAAG,MAAM,EAAE;IA0BjD,gDAAgD;IAChD,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO;IAiBjE,2EAA2E;IAC3E,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAajD,oCAAoC;IACpC,QAAQ,IAAI,IAAI;CAUjB"}
|
package/dist/WorkerPool.js
CHANGED
|
@@ -29,6 +29,7 @@ function toWorkerInfo(w) {
|
|
|
29
29
|
activeRequests: w.activeRequests,
|
|
30
30
|
completedRequests: w.completedRequests,
|
|
31
31
|
pendingRequestIds: w.pendingRequests,
|
|
32
|
+
categoryActiveRequests: w.categoryActiveRequests,
|
|
32
33
|
};
|
|
33
34
|
}
|
|
34
35
|
/**
|
|
@@ -61,8 +62,11 @@ class WorkerPool {
|
|
|
61
62
|
}
|
|
62
63
|
/**
|
|
63
64
|
* Get the least-loaded available worker supporting the given model.
|
|
65
|
+
* If category is provided and the worker has a concurrencyLimits entry for
|
|
66
|
+
* that category, the category slot count is checked in addition to the
|
|
67
|
+
* overall maxConcurrentRequests limit.
|
|
64
68
|
*/
|
|
65
|
-
getAvailableWorker(model) {
|
|
69
|
+
getAvailableWorker(model, category) {
|
|
66
70
|
let bestWorker = null;
|
|
67
71
|
let lowestLoad = Infinity;
|
|
68
72
|
for (const worker of this.workers.values()) {
|
|
@@ -78,6 +82,17 @@ class WorkerPool {
|
|
|
78
82
|
if (worker.activeRequests >= worker.capabilities.maxConcurrentRequests) {
|
|
79
83
|
continue;
|
|
80
84
|
}
|
|
85
|
+
// Check per-category limit when applicable
|
|
86
|
+
if (category !== undefined &&
|
|
87
|
+
worker.capabilities.concurrencyLimits !== undefined) {
|
|
88
|
+
if (category in worker.capabilities.concurrencyLimits) {
|
|
89
|
+
const categoryLimit = worker.capabilities.concurrencyLimits[category];
|
|
90
|
+
const categoryCount = worker.categoryActiveRequests.get(category) ?? 0;
|
|
91
|
+
if (categoryCount >= categoryLimit) {
|
|
92
|
+
continue;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
81
96
|
const load = worker.activeRequests / worker.capabilities.maxConcurrentRequests;
|
|
82
97
|
if (load < lowestLoad) {
|
|
83
98
|
lowestLoad = load;
|
|
@@ -100,26 +115,40 @@ class WorkerPool {
|
|
|
100
115
|
}
|
|
101
116
|
/**
|
|
102
117
|
* Track a request as sent to a worker.
|
|
118
|
+
* If category is provided it is stored for automatic lookup on release and
|
|
119
|
+
* the per-category active count is incremented.
|
|
103
120
|
*/
|
|
104
|
-
trackRequest(workerId, requestId) {
|
|
121
|
+
trackRequest(workerId, requestId, category) {
|
|
105
122
|
const worker = this.workers.get(workerId);
|
|
106
123
|
if (worker === undefined) {
|
|
107
124
|
return;
|
|
108
125
|
}
|
|
109
126
|
worker.activeRequests++;
|
|
110
127
|
worker.pendingRequests.add(requestId);
|
|
128
|
+
if (category !== undefined) {
|
|
129
|
+
worker.requestCategories.set(requestId, category);
|
|
130
|
+
worker.categoryActiveRequests.set(category, (worker.categoryActiveRequests.get(category) ?? 0) + 1);
|
|
131
|
+
}
|
|
111
132
|
if (worker.activeRequests >= worker.capabilities.maxConcurrentRequests) {
|
|
112
133
|
worker.status = types_js_1.WorkerStatus.Busy;
|
|
113
134
|
}
|
|
114
135
|
}
|
|
115
136
|
/**
|
|
116
137
|
* Release a request from whichever worker is handling it.
|
|
138
|
+
* Category is looked up automatically from the stored requestCategories map.
|
|
117
139
|
*/
|
|
118
140
|
releaseRequest(requestId, options) {
|
|
119
141
|
for (const worker of this.workers.values()) {
|
|
120
142
|
if (worker.pendingRequests.has(requestId)) {
|
|
121
143
|
worker.pendingRequests.delete(requestId);
|
|
122
144
|
worker.activeRequests = Math.max(0, worker.activeRequests - 1);
|
|
145
|
+
// Decrement per-category count if this request had a category
|
|
146
|
+
const category = worker.requestCategories.get(requestId);
|
|
147
|
+
if (category !== undefined) {
|
|
148
|
+
worker.requestCategories.delete(requestId);
|
|
149
|
+
const prev = worker.categoryActiveRequests.get(category) ?? 0;
|
|
150
|
+
worker.categoryActiveRequests.set(category, Math.max(0, prev - 1));
|
|
151
|
+
}
|
|
123
152
|
if (options?.incrementCompleted === true) {
|
|
124
153
|
worker.completedRequests++;
|
|
125
154
|
}
|
package/dist/WorkerPool.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkerPool.js","sourceRoot":"","sources":["../src/WorkerPool.ts"],"names":[],"mappings":";;;;;;AAqBA,
|
|
1
|
+
{"version":3,"file":"WorkerPool.js","sourceRoot":"","sources":["../src/WorkerPool.ts"],"names":[],"mappings":"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"}
|
package/dist/WorkerServer.d.ts
CHANGED
|
@@ -40,7 +40,7 @@ export declare class WorkerServer {
|
|
|
40
40
|
/** Broadcast a JSON message to all connected workers. */
|
|
41
41
|
broadcast(message: Record<string, unknown>): void;
|
|
42
42
|
/** Get the least-loaded available worker supporting the given model. */
|
|
43
|
-
getAvailableWorker(model: string): WorkerInfo | null;
|
|
43
|
+
getAvailableWorker(model: string, category?: string): WorkerInfo | null;
|
|
44
44
|
/** Get any available worker (model-agnostic). */
|
|
45
45
|
getAnyAvailableWorker(): WorkerInfo | null;
|
|
46
46
|
/** Total connected worker count. */
|
|
@@ -50,7 +50,7 @@ export declare class WorkerServer {
|
|
|
50
50
|
/** Get public info about all connected workers. */
|
|
51
51
|
getWorkerInfo(): WorkerInfo[];
|
|
52
52
|
/** Track a request as assigned to a worker. */
|
|
53
|
-
trackRequest(workerId: string, requestId: string): void;
|
|
53
|
+
trackRequest(workerId: string, requestId: string, category?: string): void;
|
|
54
54
|
/** Release a tracked request. */
|
|
55
55
|
releaseRequest(requestId: string, options?: {
|
|
56
56
|
incrementCompleted?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkerServer.d.ts","sourceRoot":"","sources":["../src/WorkerServer.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EACV,kBAAkB,EAClB,0BAA0B,EAC1B,sBAAsB,EACtB,yBAAyB,EACzB,UAAU,EACV,oBAAoB,EAEpB,mBAAmB,EACpB,MAAM,YAAY,CAAC;AAoBpB;;;;;;;;;;;;GAYG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAS;IAC5C,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAS;IAC/C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;IAE5C,OAAO,CAAC,UAAU,CAA2B;IAC7C,OAAO,CAAC,SAAS,CAAgC;IACjD,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAGhC;IACJ,OAAO,CAAC,mBAAmB,CAA+C;IAC1E,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA4B;IAEzD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAa;IAClC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAoB;gBAE1C,OAAO,EAAE,mBAAmB;IAuBxC,wEAAwE;IACxE,iBAAiB,CAAC,OAAO,EAAE,sBAAsB,GAAG,MAAM,IAAI;IAI9D,6DAA6D;IAC7D,oBAAoB,CAAC,OAAO,EAAE,yBAAyB,GAAG,MAAM,IAAI;IAIpE;;;;OAIG;IACH,eAAe,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACzC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAC/B,MAAM,IAAI;IAMb,yEAAyE;IACzE,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO;IAIjE,yDAAyD;IACzD,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAMjD,wEAAwE;IACxE,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"WorkerServer.d.ts","sourceRoot":"","sources":["../src/WorkerServer.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EACV,kBAAkB,EAClB,0BAA0B,EAC1B,sBAAsB,EACtB,yBAAyB,EACzB,UAAU,EACV,oBAAoB,EAEpB,mBAAmB,EACpB,MAAM,YAAY,CAAC;AAoBpB;;;;;;;;;;;;GAYG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAS;IAC5C,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAS;IAC/C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;IAE5C,OAAO,CAAC,UAAU,CAA2B;IAC7C,OAAO,CAAC,SAAS,CAAgC;IACjD,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAGhC;IACJ,OAAO,CAAC,mBAAmB,CAA+C;IAC1E,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA4B;IAEzD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAa;IAClC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAoB;gBAE1C,OAAO,EAAE,mBAAmB;IAuBxC,wEAAwE;IACxE,iBAAiB,CAAC,OAAO,EAAE,sBAAsB,GAAG,MAAM,IAAI;IAI9D,6DAA6D;IAC7D,oBAAoB,CAAC,OAAO,EAAE,yBAAyB,GAAG,MAAM,IAAI;IAIpE;;;;OAIG;IACH,eAAe,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACzC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAC/B,MAAM,IAAI;IAMb,yEAAyE;IACzE,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO;IAIjE,yDAAyD;IACzD,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAMjD,wEAAwE;IACxE,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;IAKvE,iDAAiD;IACjD,qBAAqB,IAAI,UAAU,GAAG,IAAI;IAK1C,oCAAoC;IACpC,cAAc,IAAI,MAAM;IAIxB,8BAA8B;IAC9B,uBAAuB,IAAI,MAAM;IAIjC,mDAAmD;IACnD,aAAa,IAAI,UAAU,EAAE;IAM7B,+CAA+C;IAC/C,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI;IAI1E,iCAAiC;IACjC,cAAc,CACZ,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE;QAAE,kBAAkB,CAAC,EAAE,OAAO,CAAA;KAAE,GACzC,IAAI;IAMP,gFAAgF;IAChF,cAAc,CAAC,OAAO,EAAE,kBAAkB,GAAG,IAAI;IAIjD,+DAA+D;IAC/D,oBAAoB,CAClB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,0BAA0B,GAClC,IAAI;IAgBP,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAmEhB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAkC3B,OAAO,CAAC,cAAc;YAkBR,iBAAiB;CAqBhC"}
|
package/dist/WorkerServer.js
CHANGED
|
@@ -86,8 +86,8 @@ class WorkerServer {
|
|
|
86
86
|
}
|
|
87
87
|
// ========== Pool Queries ==========
|
|
88
88
|
/** Get the least-loaded available worker supporting the given model. */
|
|
89
|
-
getAvailableWorker(model) {
|
|
90
|
-
const worker = this.pool.getAvailableWorker(model);
|
|
89
|
+
getAvailableWorker(model, category) {
|
|
90
|
+
const worker = this.pool.getAvailableWorker(model, category);
|
|
91
91
|
return worker !== null ? (0, WorkerPool_js_1.toWorkerInfo)(worker) : null;
|
|
92
92
|
}
|
|
93
93
|
/** Get any available worker (model-agnostic). */
|
|
@@ -109,8 +109,8 @@ class WorkerServer {
|
|
|
109
109
|
}
|
|
110
110
|
// ========== Request Tracking ==========
|
|
111
111
|
/** Track a request as assigned to a worker. */
|
|
112
|
-
trackRequest(workerId, requestId) {
|
|
113
|
-
this.pool.trackRequest(workerId, requestId);
|
|
112
|
+
trackRequest(workerId, requestId, category) {
|
|
113
|
+
this.pool.trackRequest(workerId, requestId, category);
|
|
114
114
|
}
|
|
115
115
|
/** Release a tracked request. */
|
|
116
116
|
releaseRequest(requestId, options) {
|
package/dist/WorkerServer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkerServer.js","sourceRoot":"","sources":["../src/WorkerServer.ts"],"names":[],"mappings":";;;AAAA,+BAKc;AAGd,2BAAqD;AAErD,iEAA2D;AAW3D,mDAA2D;AAE3D,MAAM,QAAQ,GAAG;IACf,kBAAkB,EAAE,MAAM;IAC1B,qBAAqB,EAAE,MAAM;IAC7B,mBAAmB,EAAE,MAAM;CACnB,CAAC;AAEX,SAAS,IAAI;IACX,oBAAoB;AACtB,CAAC;AAED,MAAM,YAAY,GAAuB;IACvC,KAAK,EAAE,IAAI;IACX,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,KAAK,EAAE,IAAI;CACZ,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,MAAa,YAAY;IACN,IAAI,CAAS;IACb,kBAAkB,CAAS;IAC3B,qBAAqB,CAAS;IAC9B,MAAM,CAAqB;IAEpC,UAAU,GAAsB,IAAI,CAAC;IACrC,SAAS,GAA2B,IAAI,CAAC;IAChC,mBAAmB,GAAG,IAAI,GAAG,EAG3C,CAAC;IACI,mBAAmB,GAA0C,IAAI,CAAC;IACzD,YAAY,GAAyB,EAAE,CAAC;IAExC,IAAI,CAAa;IACjB,iBAAiB,CAAoB;IAEtD,YAAY,OAA4B;QACtC,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,kBAAkB;YACrB,OAAO,CAAC,kBAAkB,IAAI,QAAQ,CAAC,kBAAkB,CAAC;QAC5D,IAAI,CAAC,qBAAqB;YACxB,OAAO,CAAC,qBAAqB,IAAI,QAAQ,CAAC,qBAAqB,CAAC;QAClE,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,YAAY,CAAC;QAE7C,IAAI,CAAC,IAAI,GAAG,IAAI,0BAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACxC,IAAI,CAAC,iBAAiB,GAAG,IAAI,wCAAiB,CAC5C,IAAI,CAAC,IAAI,EACT;YACE,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;YAC3C,mBAAmB,EACjB,OAAO,CAAC,mBAAmB,IAAI,QAAQ,CAAC,mBAAmB;SAC9D,EACD,IAAI,CAAC,MAAM,CACZ,CAAC;IACJ,CAAC;IAED,yCAAyC;IAEzC,wEAAwE;IACxE,iBAAiB,CAAC,OAA+B;QAC/C,OAAO,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAC3D,CAAC;IAED,6DAA6D;IAC7D,oBAAoB,CAAC,OAAkC;QACrD,OAAO,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAC9D,CAAC;IAED;;;;OAIG;IACH,eAAe,CACb,IAAY,EACZ,OAAgC;QAEhC,OAAO,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACzD,CAAC;IAED,sCAAsC;IAEtC,yEAAyE;IACzE,IAAI,CAAC,QAAgB,EAAE,OAAgC;QACrD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED,yDAAyD;IACzD,SAAS,CAAC,OAAgC;QACxC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC;IAED,qCAAqC;IAErC,wEAAwE;IACxE,kBAAkB,CAAC,KAAa;
|
|
1
|
+
{"version":3,"file":"WorkerServer.js","sourceRoot":"","sources":["../src/WorkerServer.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -29,6 +29,8 @@ export interface WorkerCapabilities {
|
|
|
29
29
|
models: ModelInfo[];
|
|
30
30
|
maxConcurrentRequests: number;
|
|
31
31
|
metadata?: Record<string, unknown>;
|
|
32
|
+
/** Per-category concurrency limits (category → max concurrent). Optional. */
|
|
33
|
+
concurrencyLimits?: Record<string, number>;
|
|
32
34
|
}
|
|
33
35
|
/**
|
|
34
36
|
* Public worker info exposed to consumers.
|
|
@@ -45,6 +47,8 @@ export interface WorkerInfo {
|
|
|
45
47
|
readonly activeRequests: number;
|
|
46
48
|
readonly completedRequests: number;
|
|
47
49
|
readonly pendingRequestIds: ReadonlySet<string>;
|
|
50
|
+
/** Active request count per category (category → count). */
|
|
51
|
+
readonly categoryActiveRequests: ReadonlyMap<string, number>;
|
|
48
52
|
}
|
|
49
53
|
/**
|
|
50
54
|
* Internal connected worker state (includes WebSocket).
|
|
@@ -61,6 +65,10 @@ export interface ConnectedWorker {
|
|
|
61
65
|
activeRequests: number;
|
|
62
66
|
readonly pendingRequests: Set<string>;
|
|
63
67
|
completedRequests: number;
|
|
68
|
+
/** Maps requestId → category for category-aware release. */
|
|
69
|
+
readonly requestCategories: Map<string, string>;
|
|
70
|
+
/** Active request count per category (category → count). */
|
|
71
|
+
readonly categoryActiveRequests: Map<string, number>;
|
|
64
72
|
}
|
|
65
73
|
/** Configuration for the WorkerServer. */
|
|
66
74
|
export interface WorkerServerOptions {
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,MAAM,CAAC;AAE5D,OAAO,KAAK,SAAS,MAAM,IAAI,CAAC;AAEhC;;;GAGG;AACH,oBAAY,YAAY;IACtB,SAAS,cAAc;IACvB,IAAI,SAAS;IACb,QAAQ,aAAa;IACrB,SAAS,cAAc;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|