@gethmy/agent 1.6.1 → 1.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.
package/README.md CHANGED
@@ -36,11 +36,12 @@ npx @gethmy/mcp setup
36
36
  ```jsonc
37
37
  {
38
38
  "agent": {
39
- "poolSize": 1,
39
+ "poolSize": 3,
40
40
  "pickupColumns": ["To Do"],
41
41
  "claude": { "model": "opus", "reviewModel": "sonnet" },
42
42
  "review": {
43
43
  "enabled": true,
44
+ "poolSize": 2,
44
45
  "pickupColumns": ["Review"],
45
46
  "moveToColumn": "Done",
46
47
  "failColumn": "To Do"
package/dist/index.js CHANGED
@@ -267,7 +267,9 @@ export async function main() {
267
267
  }
268
268
  // Banner check lines for service intervals + pool. Compose into one
269
269
  // line each so the banner stays compact.
270
- const reviewCount = config.agent.review.enabled ? 1 : 0;
270
+ const reviewCount = config.agent.review.enabled
271
+ ? config.agent.review.poolSize
272
+ : 0;
271
273
  banner.check(`Pool: ${config.agent.poolSize} impl${reviewCount > 0 ? ` + ${reviewCount} review` : ""}`);
272
274
  const services = [
273
275
  `Heartbeat ${config.agent.timing.reconcileIntervalMs / 1000}s`,
package/dist/pool.js CHANGED
@@ -23,12 +23,16 @@ export class Pool {
23
23
  this.tryDispatchFor(this.implWorkers, this.implQueue, "impl");
24
24
  }, workspaceId, projectId, stateStore));
25
25
  }
26
- // Create review worker(s) 1 review worker per pool
26
+ // Create review workers. IDs offset by `config.poolSize` so impl and
27
+ // review worker IDs never collide (verification + review ports both
28
+ // derive from the worker ID, so collision would mean port collision).
27
29
  if (config.review.enabled) {
28
- const reviewWorkerId = config.poolSize; // offset to avoid ID collision
29
- this.reviewWorkers.push(new ReviewWorker(reviewWorkerId, config, client, userEmail, () => {
30
- this.tryDispatchFor(this.reviewWorkers, this.reviewQueue, "review");
31
- }, stateStore, workspaceId, projectId));
30
+ for (let i = 0; i < config.review.poolSize; i++) {
31
+ const reviewWorkerId = config.poolSize + i;
32
+ this.reviewWorkers.push(new ReviewWorker(reviewWorkerId, config, client, userEmail, () => {
33
+ this.tryDispatchFor(this.reviewWorkers, this.reviewQueue, "review");
34
+ }, stateStore, workspaceId, projectId));
35
+ }
32
36
  }
33
37
  }
34
38
  /**
@@ -104,7 +104,7 @@ function configRows(config, projectName, gitProvider) {
104
104
  rows.push({ label: "User", value: config.userEmail });
105
105
  const reviewEnabled = config.agent.review.enabled;
106
106
  const poolDesc = reviewEnabled
107
- ? `Pool ${config.agent.poolSize} impl + 1 review`
107
+ ? `Pool ${config.agent.poolSize} impl + ${config.agent.review.poolSize} review`
108
108
  : `Pool ${config.agent.poolSize} impl`;
109
109
  const flowDesc = reviewEnabled
110
110
  ? `Pickup ${config.agent.pickupColumns[0]} → ${config.agent.completion.moveToColumn} → ${config.agent.review.moveToColumn}`
package/dist/types.d.ts CHANGED
@@ -40,6 +40,8 @@ export interface AgentConfig {
40
40
  };
41
41
  review: {
42
42
  enabled: boolean;
43
+ /** Concurrent review workers. Each gets its own dev-server port slot. */
44
+ poolSize: number;
43
45
  pickupColumns: string[];
44
46
  moveToColumn: string;
45
47
  failColumn: string;
package/dist/types.js CHANGED
@@ -1,5 +1,5 @@
1
1
  export const DEFAULT_AGENT_CONFIG = {
2
- poolSize: 1,
2
+ poolSize: 3,
3
3
  maxTimeout: 1_800_000, // 30 minutes
4
4
  pickupColumns: ["To Do"],
5
5
  priorityLabels: { urgent: 100, critical: 90, bug: 50 },
@@ -35,6 +35,7 @@ export const DEFAULT_AGENT_CONFIG = {
35
35
  },
36
36
  review: {
37
37
  enabled: true,
38
+ poolSize: 2,
38
39
  pickupColumns: ["Review"],
39
40
  moveToColumn: "Done",
40
41
  failColumn: "To Do",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gethmy/agent",
3
- "version": "1.6.1",
3
+ "version": "1.7.0",
4
4
  "description": "Push-based agent daemon for Harmony — watches board assignments and spawns Claude CLI workers",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",