evil-omo 3.12.3 → 3.12.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/dist/cli/index.js CHANGED
@@ -8967,7 +8967,7 @@ var {
8967
8967
  // package.json
8968
8968
  var package_default = {
8969
8969
  name: "evil-omo",
8970
- version: "3.12.3",
8970
+ version: "3.12.4",
8971
8971
  description: "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
8972
8972
  main: "dist/index.js",
8973
8973
  types: "dist/index.d.ts",
@@ -9043,17 +9043,17 @@ var package_default = {
9043
9043
  typescript: "^5.7.3"
9044
9044
  },
9045
9045
  optionalDependencies: {
9046
- "evil-omo-darwin-arm64": "3.12.3",
9047
- "evil-omo-darwin-x64": "3.12.3",
9048
- "evil-omo-darwin-x64-baseline": "3.12.3",
9049
- "evil-omo-linux-x64": "3.12.3",
9050
- "evil-omo-linux-x64-baseline": "3.12.3",
9051
- "evil-omo-linux-arm64": "3.12.3",
9052
- "evil-omo-linux-x64-musl": "3.12.3",
9053
- "evil-omo-linux-x64-musl-baseline": "3.12.3",
9054
- "evil-omo-linux-arm64-musl": "3.12.3",
9055
- "evil-omo-windows-x64": "3.12.3",
9056
- "evil-omo-windows-x64-baseline": "3.12.3"
9046
+ "evil-omo-darwin-arm64": "3.12.4",
9047
+ "evil-omo-darwin-x64": "3.12.4",
9048
+ "evil-omo-darwin-x64-baseline": "3.12.4",
9049
+ "evil-omo-linux-x64": "3.12.4",
9050
+ "evil-omo-linux-x64-baseline": "3.12.4",
9051
+ "evil-omo-linux-arm64": "3.12.4",
9052
+ "evil-omo-linux-x64-musl": "3.12.4",
9053
+ "evil-omo-linux-x64-musl-baseline": "3.12.4",
9054
+ "evil-omo-linux-arm64-musl": "3.12.4",
9055
+ "evil-omo-windows-x64": "3.12.4",
9056
+ "evil-omo-windows-x64-baseline": "3.12.4"
9057
9057
  },
9058
9058
  overrides: {
9059
9059
  "@opencode-ai/sdk": "^1.2.24"
@@ -5,9 +5,9 @@ export declare const TERMINAL_TASK_TTL_MS: number;
5
5
  export declare const MIN_STABILITY_TIME_MS: number;
6
6
  export declare const DEFAULT_STALE_TIMEOUT_MS = 1200000;
7
7
  export declare const DEFAULT_MESSAGE_STALENESS_TIMEOUT_MS = 1800000;
8
- export declare const DEFAULT_MAX_TOOL_CALLS = 200;
8
+ export declare const DEFAULT_MAX_TOOL_CALLS = 4000;
9
9
  export declare const DEFAULT_CIRCUIT_BREAKER_CONSECUTIVE_THRESHOLD = 20;
10
- export declare const DEFAULT_CIRCUIT_BREAKER_ENABLED = true;
10
+ export declare const DEFAULT_CIRCUIT_BREAKER_ENABLED = false;
11
11
  export declare const MIN_RUNTIME_BEFORE_STALE_MS = 30000;
12
12
  export declare const MIN_IDLE_TIME_MS = 5000;
13
13
  export declare const POLLING_INTERVAL_MS = 3000;
package/dist/index.js CHANGED
@@ -78148,9 +78148,9 @@ var TERMINAL_TASK_TTL_MS = 30 * 60 * 1000;
78148
78148
  var MIN_STABILITY_TIME_MS2 = 10 * 1000;
78149
78149
  var DEFAULT_STALE_TIMEOUT_MS = 1200000;
78150
78150
  var DEFAULT_MESSAGE_STALENESS_TIMEOUT_MS = 1800000;
78151
- var DEFAULT_MAX_TOOL_CALLS = 200;
78151
+ var DEFAULT_MAX_TOOL_CALLS = 4000;
78152
78152
  var DEFAULT_CIRCUIT_BREAKER_CONSECUTIVE_THRESHOLD = 20;
78153
- var DEFAULT_CIRCUIT_BREAKER_ENABLED = true;
78153
+ var DEFAULT_CIRCUIT_BREAKER_ENABLED = false;
78154
78154
  var MIN_RUNTIME_BEFORE_STALE_MS = 30000;
78155
78155
  var MIN_IDLE_TIME_MS = 5000;
78156
78156
  var POLLING_INTERVAL_MS = 3000;
@@ -78617,13 +78617,15 @@ function pruneStaleTasksAndNotifications(args) {
78617
78617
  tasks.delete(taskId);
78618
78618
  continue;
78619
78619
  }
78620
+ if (task.status === "running")
78621
+ continue;
78620
78622
  const timestamp2 = task.status === "pending" ? task.queuedAt?.getTime() : task.startedAt?.getTime();
78621
78623
  if (!timestamp2)
78622
78624
  continue;
78623
78625
  const age = now - timestamp2;
78624
78626
  if (age <= TASK_TTL_MS)
78625
78627
  continue;
78626
- const errorMessage = task.status === "pending" ? "Task timed out while queued (30 minutes)" : "Task timed out after 30 minutes";
78628
+ const errorMessage = "Task timed out while queued (30 minutes)";
78627
78629
  onTaskPruned(taskId, task, errorMessage);
78628
78630
  }
78629
78631
  for (const [sessionID, queued] of notifications.entries()) {
@@ -79493,22 +79495,22 @@ class BackgroundManager {
79493
79495
  });
79494
79496
  return;
79495
79497
  }
79498
+ const maxToolCalls = circuitBreaker.maxToolCalls;
79499
+ if (task.progress.toolCalls >= maxToolCalls) {
79500
+ log("[background-agent] Circuit breaker: tool call limit reached", {
79501
+ taskId: task.id,
79502
+ toolCalls: task.progress.toolCalls,
79503
+ maxToolCalls,
79504
+ agent: task.agent,
79505
+ sessionID
79506
+ });
79507
+ this.cancelTask(task.id, {
79508
+ source: "circuit-breaker",
79509
+ reason: `Subagent exceeded maximum tool call limit (${maxToolCalls}). This usually indicates an infinite loop. The task was automatically cancelled to prevent excessive token usage.`
79510
+ });
79511
+ }
79496
79512
  }
79497
79513
  }
79498
- const maxToolCalls = circuitBreaker.maxToolCalls;
79499
- if (task.progress.toolCalls >= maxToolCalls) {
79500
- log("[background-agent] Circuit breaker: tool call limit reached", {
79501
- taskId: task.id,
79502
- toolCalls: task.progress.toolCalls,
79503
- maxToolCalls,
79504
- agent: task.agent,
79505
- sessionID
79506
- });
79507
- this.cancelTask(task.id, {
79508
- source: "circuit-breaker",
79509
- reason: `Subagent exceeded maximum tool call limit (${maxToolCalls}). This usually indicates an infinite loop. The task was automatically cancelled to prevent excessive token usage.`
79510
- });
79511
- }
79512
79514
  }
79513
79515
  }
79514
79516
  if (event.type === "session.idle") {
@@ -80123,7 +80125,10 @@ Use \`background_output(task_id="${task.id}")\` to retrieve this result when rea
80123
80125
  this.pruneStaleTasksAndNotifications();
80124
80126
  const statusResult = await this.client.session.status();
80125
80127
  const allStatuses = normalizeSDKResponse(statusResult, {});
80126
- await this.checkAndInterruptStaleTasks(allStatuses);
80128
+ const circuitBreakerForPolling = this.cachedCircuitBreakerSettings ?? resolveCircuitBreakerSettings(this.config);
80129
+ if (circuitBreakerForPolling.enabled) {
80130
+ await this.checkAndInterruptStaleTasks(allStatuses);
80131
+ }
80127
80132
  for (const task of this.tasks.values()) {
80128
80133
  if (task.status !== "running")
80129
80134
  continue;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "evil-omo",
3
- "version": "3.12.3",
3
+ "version": "3.12.4",
4
4
  "description": "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -76,17 +76,17 @@
76
76
  "typescript": "^5.7.3"
77
77
  },
78
78
  "optionalDependencies": {
79
- "evil-omo-darwin-arm64": "3.12.3",
80
- "evil-omo-darwin-x64": "3.12.3",
81
- "evil-omo-darwin-x64-baseline": "3.12.3",
82
- "evil-omo-linux-x64": "3.12.3",
83
- "evil-omo-linux-x64-baseline": "3.12.3",
84
- "evil-omo-linux-arm64": "3.12.3",
85
- "evil-omo-linux-x64-musl": "3.12.3",
86
- "evil-omo-linux-x64-musl-baseline": "3.12.3",
87
- "evil-omo-linux-arm64-musl": "3.12.3",
88
- "evil-omo-windows-x64": "3.12.3",
89
- "evil-omo-windows-x64-baseline": "3.12.3"
79
+ "evil-omo-darwin-arm64": "3.12.4",
80
+ "evil-omo-darwin-x64": "3.12.4",
81
+ "evil-omo-darwin-x64-baseline": "3.12.4",
82
+ "evil-omo-linux-x64": "3.12.4",
83
+ "evil-omo-linux-x64-baseline": "3.12.4",
84
+ "evil-omo-linux-arm64": "3.12.4",
85
+ "evil-omo-linux-x64-musl": "3.12.4",
86
+ "evil-omo-linux-x64-musl-baseline": "3.12.4",
87
+ "evil-omo-linux-arm64-musl": "3.12.4",
88
+ "evil-omo-windows-x64": "3.12.4",
89
+ "evil-omo-windows-x64-baseline": "3.12.4"
90
90
  },
91
91
  "overrides": {
92
92
  "@opencode-ai/sdk": "^1.2.24"