@supaku/agentfactory-server 0.6.2 → 0.7.0
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.
|
@@ -91,9 +91,16 @@ export declare function addWorkerSession(workerId: string, sessionId: string): P
|
|
|
91
91
|
*/
|
|
92
92
|
export declare function removeWorkerSession(workerId: string, sessionId: string): Promise<boolean>;
|
|
93
93
|
/**
|
|
94
|
-
* Get total capacity across all active workers
|
|
94
|
+
* Get total capacity across all active workers.
|
|
95
|
+
*
|
|
96
|
+
* Accepts an optional pre-fetched workers list to avoid redundant Redis scans
|
|
97
|
+
* (callers like the stats handler already call listWorkers()).
|
|
98
|
+
*
|
|
99
|
+
* Uses activeSessions.length (authoritative Redis set) instead of the
|
|
100
|
+
* heartbeat-reported activeCount, which can be stale after re-registration
|
|
101
|
+
* or between heartbeat intervals.
|
|
95
102
|
*/
|
|
96
|
-
export declare function getTotalCapacity(): Promise<{
|
|
103
|
+
export declare function getTotalCapacity(prefetchedWorkers?: WorkerInfo[]): Promise<{
|
|
97
104
|
totalCapacity: number;
|
|
98
105
|
totalActive: number;
|
|
99
106
|
availableCapacity: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker-storage.d.ts","sourceRoot":"","sources":["../../src/worker-storage.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AA2CH;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAA;IACV,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,aAAa,EAAE,MAAM,CAAA;IACrB,MAAM,EAAE,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAA;IACzC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,UAAW,SAAQ,UAAU;IAC5C,cAAc,EAAE,MAAM,EAAE,CAAA;CACzB;AAED;;;;;;;GAOG;AACH,wBAAsB,cAAc,CAClC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,MAAM,EAChB,QAAQ,CAAC,EAAE,MAAM,EAAE,GAClB,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,iBAAiB,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CAyCvF;AAED;;;;;;;GAOG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,IAAI,CAAC,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACrC,OAAO,CAAC;IAAE,YAAY,EAAE,OAAO,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,gBAAgB,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CAsCzF;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAyB5E;AAED;;;;;GAKG;AACH,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC;IAAE,YAAY,EAAE,OAAO,CAAC;IAAC,iBAAiB,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CA6BjE;AAED;;GAEG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC,CAoCzD;AAED;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC,CAY7D;AAED;;;;;GAKG;AACH,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,OAAO,CAAC,CAalB;AAED;;;;;GAKG;AACH,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,OAAO,CAAC,CAalB;AAED
|
|
1
|
+
{"version":3,"file":"worker-storage.d.ts","sourceRoot":"","sources":["../../src/worker-storage.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AA2CH;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAA;IACV,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,aAAa,EAAE,MAAM,CAAA;IACrB,MAAM,EAAE,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAA;IACzC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,UAAW,SAAQ,UAAU;IAC5C,cAAc,EAAE,MAAM,EAAE,CAAA;CACzB;AAED;;;;;;;GAOG;AACH,wBAAsB,cAAc,CAClC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,MAAM,EAChB,QAAQ,CAAC,EAAE,MAAM,EAAE,GAClB,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,iBAAiB,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CAyCvF;AAED;;;;;;;GAOG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,IAAI,CAAC,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACrC,OAAO,CAAC;IAAE,YAAY,EAAE,OAAO,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,gBAAgB,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CAsCzF;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAyB5E;AAED;;;;;GAKG;AACH,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC;IAAE,YAAY,EAAE,OAAO,CAAC;IAAC,iBAAiB,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CA6BjE;AAED;;GAEG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC,CAoCzD;AAED;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC,CAY7D;AAED;;;;;GAKG;AACH,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,OAAO,CAAC,CAalB;AAED;;;;;GAKG;AACH,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,OAAO,CAAC,CAalB;AAED;;;;;;;;;GASG;AACH,wBAAsB,gBAAgB,CAAC,iBAAiB,CAAC,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;IAChF,aAAa,EAAE,MAAM,CAAA;IACrB,WAAW,EAAE,MAAM,CAAA;IACnB,iBAAiB,EAAE,MAAM,CAAA;CAC1B,CAAC,CAqBD"}
|
|
@@ -261,17 +261,24 @@ export async function removeWorkerSession(workerId, sessionId) {
|
|
|
261
261
|
}
|
|
262
262
|
}
|
|
263
263
|
/**
|
|
264
|
-
* Get total capacity across all active workers
|
|
264
|
+
* Get total capacity across all active workers.
|
|
265
|
+
*
|
|
266
|
+
* Accepts an optional pre-fetched workers list to avoid redundant Redis scans
|
|
267
|
+
* (callers like the stats handler already call listWorkers()).
|
|
268
|
+
*
|
|
269
|
+
* Uses activeSessions.length (authoritative Redis set) instead of the
|
|
270
|
+
* heartbeat-reported activeCount, which can be stale after re-registration
|
|
271
|
+
* or between heartbeat intervals.
|
|
265
272
|
*/
|
|
266
|
-
export async function getTotalCapacity() {
|
|
273
|
+
export async function getTotalCapacity(prefetchedWorkers) {
|
|
267
274
|
if (!isRedisConfigured()) {
|
|
268
275
|
return { totalCapacity: 0, totalActive: 0, availableCapacity: 0 };
|
|
269
276
|
}
|
|
270
277
|
try {
|
|
271
|
-
const workers = await listWorkers();
|
|
278
|
+
const workers = prefetchedWorkers ?? await listWorkers();
|
|
272
279
|
const activeWorkers = workers.filter((w) => w.status === 'active');
|
|
273
280
|
const totalCapacity = activeWorkers.reduce((sum, w) => sum + w.capacity, 0);
|
|
274
|
-
const totalActive = activeWorkers.reduce((sum, w) => sum + w.
|
|
281
|
+
const totalActive = activeWorkers.reduce((sum, w) => sum + w.activeSessions.length, 0);
|
|
275
282
|
return {
|
|
276
283
|
totalCapacity,
|
|
277
284
|
totalActive,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@supaku/agentfactory-server",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Webhook server and distributed worker pool for AgentFactory — Redis queues, issue locks, session management",
|
|
6
6
|
"author": "Supaku (https://supaku.com)",
|
|
@@ -44,8 +44,8 @@
|
|
|
44
44
|
],
|
|
45
45
|
"dependencies": {
|
|
46
46
|
"ioredis": "^5.4.2",
|
|
47
|
-
"@supaku/agentfactory": "0.
|
|
48
|
-
"@supaku/agentfactory-linear": "0.
|
|
47
|
+
"@supaku/agentfactory": "0.7.0",
|
|
48
|
+
"@supaku/agentfactory-linear": "0.7.0"
|
|
49
49
|
},
|
|
50
50
|
"devDependencies": {
|
|
51
51
|
"@types/node": "^22.5.4",
|