evil-omo 3.12.2 → 3.12.3

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.2",
8970
+ version: "3.12.3",
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.2",
9047
- "evil-omo-darwin-x64": "3.12.2",
9048
- "evil-omo-darwin-x64-baseline": "3.12.2",
9049
- "evil-omo-linux-x64": "3.12.2",
9050
- "evil-omo-linux-x64-baseline": "3.12.2",
9051
- "evil-omo-linux-arm64": "3.12.2",
9052
- "evil-omo-linux-x64-musl": "3.12.2",
9053
- "evil-omo-linux-x64-musl-baseline": "3.12.2",
9054
- "evil-omo-linux-arm64-musl": "3.12.2",
9055
- "evil-omo-windows-x64": "3.12.2",
9056
- "evil-omo-windows-x64-baseline": "3.12.2"
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"
9057
9057
  },
9058
9058
  overrides: {
9059
9059
  "@opencode-ai/sdk": "^1.2.24"
package/dist/index.js CHANGED
@@ -20487,18 +20487,15 @@ async function handleSessionIdle(args) {
20487
20487
  shouldSkipContinuation
20488
20488
  } = args;
20489
20489
  log(`[${HOOK_NAME}] session.idle`, { sessionID });
20490
- console.error(`[TODO-DIAG] session.idle fired for ${sessionID}`);
20491
20490
  const state2 = sessionStateStore.getState(sessionID);
20492
20491
  if (state2.isRecovering) {
20493
20492
  log(`[${HOOK_NAME}] Skipped: in recovery`, { sessionID });
20494
- console.error(`[TODO-DIAG] BLOCKED: isRecovering=true`);
20495
20493
  return;
20496
20494
  }
20497
20495
  if (state2.abortDetectedAt) {
20498
20496
  const timeSinceAbort = Date.now() - state2.abortDetectedAt;
20499
20497
  if (timeSinceAbort < ABORT_WINDOW_MS) {
20500
20498
  log(`[${HOOK_NAME}] Skipped: abort detected via event ${timeSinceAbort}ms ago`, { sessionID });
20501
- console.error(`[TODO-DIAG] BLOCKED: abort detected ${timeSinceAbort}ms ago`);
20502
20499
  state2.abortDetectedAt = undefined;
20503
20500
  return;
20504
20501
  }
@@ -20507,7 +20504,6 @@ async function handleSessionIdle(args) {
20507
20504
  const hasRunningBgTasks = backgroundManager ? backgroundManager.getTasksByParentSession(sessionID).some((task) => task.status === "running") : false;
20508
20505
  if (hasRunningBgTasks) {
20509
20506
  log(`[${HOOK_NAME}] Skipped: background tasks running`, { sessionID });
20510
- console.error(`[TODO-DIAG] BLOCKED: background tasks running`, backgroundManager?.getTasksByParentSession(sessionID).filter((t) => t.status === "running").map((t) => t.id));
20511
20507
  return;
20512
20508
  }
20513
20509
  try {
@@ -20518,12 +20514,10 @@ async function handleSessionIdle(args) {
20518
20514
  const messages = normalizeSDKResponse(messagesResp, []);
20519
20515
  if (isLastAssistantMessageAborted(messages)) {
20520
20516
  log(`[${HOOK_NAME}] Skipped: last assistant message was aborted (API fallback)`, { sessionID });
20521
- console.error(`[TODO-DIAG] BLOCKED: last assistant message aborted`);
20522
20517
  return;
20523
20518
  }
20524
20519
  if (hasUnansweredQuestion(messages)) {
20525
20520
  log(`[${HOOK_NAME}] Skipped: pending question awaiting user response`, { sessionID });
20526
- console.error(`[TODO-DIAG] BLOCKED: hasUnansweredQuestion=true`);
20527
20521
  return;
20528
20522
  }
20529
20523
  } catch (error) {
@@ -20535,14 +20529,12 @@ async function handleSessionIdle(args) {
20535
20529
  todos = normalizeSDKResponse(response, [], { preferResponseOnMissingData: true });
20536
20530
  } catch (error) {
20537
20531
  log(`[${HOOK_NAME}] Todo fetch failed`, { sessionID, error: String(error) });
20538
- console.error(`[TODO-DIAG] BLOCKED: todo fetch failed`, String(error));
20539
20532
  return;
20540
20533
  }
20541
20534
  if (!todos || todos.length === 0) {
20542
20535
  sessionStateStore.resetContinuationProgress(sessionID);
20543
20536
  sessionStateStore.resetContinuationProgress(sessionID);
20544
20537
  log(`[${HOOK_NAME}] No todos`, { sessionID });
20545
- console.error(`[TODO-DIAG] BLOCKED: no todos`);
20546
20538
  return;
20547
20539
  }
20548
20540
  const incompleteCount = getIncompleteCount(todos);
@@ -20550,12 +20542,10 @@ async function handleSessionIdle(args) {
20550
20542
  sessionStateStore.resetContinuationProgress(sessionID);
20551
20543
  sessionStateStore.resetContinuationProgress(sessionID);
20552
20544
  log(`[${HOOK_NAME}] All todos complete`, { sessionID, total: todos.length });
20553
- console.error(`[TODO-DIAG] BLOCKED: all todos complete (${todos.length})`);
20554
20545
  return;
20555
20546
  }
20556
20547
  if (state2.inFlight) {
20557
20548
  log(`[${HOOK_NAME}] Skipped: injection in flight`, { sessionID });
20558
- console.error(`[TODO-DIAG] BLOCKED: inFlight=true`);
20559
20549
  return;
20560
20550
  }
20561
20551
  if (state2.consecutiveFailures >= MAX_CONSECUTIVE_FAILURES && state2.lastInjectedAt && Date.now() - state2.lastInjectedAt >= FAILURE_RESET_WINDOW_MS) {
@@ -20564,13 +20554,11 @@ async function handleSessionIdle(args) {
20564
20554
  }
20565
20555
  if (state2.consecutiveFailures >= MAX_CONSECUTIVE_FAILURES) {
20566
20556
  log(`[${HOOK_NAME}] Skipped: max consecutive failures reached`, { sessionID, consecutiveFailures: state2.consecutiveFailures });
20567
- console.error(`[TODO-DIAG] BLOCKED: consecutiveFailures=${state2.consecutiveFailures} >= ${MAX_CONSECUTIVE_FAILURES}`);
20568
20557
  return;
20569
20558
  }
20570
20559
  const effectiveCooldown = CONTINUATION_COOLDOWN_MS * Math.pow(2, Math.min(state2.consecutiveFailures, 5));
20571
20560
  if (state2.lastInjectedAt && Date.now() - state2.lastInjectedAt < effectiveCooldown) {
20572
20561
  log(`[${HOOK_NAME}] Skipped: cooldown active`, { sessionID, effectiveCooldown, consecutiveFailures: state2.consecutiveFailures });
20573
- console.error(`[TODO-DIAG] BLOCKED: cooldown active (${effectiveCooldown}ms, failures=${state2.consecutiveFailures})`);
20574
20562
  return;
20575
20563
  }
20576
20564
  let resolvedInfo;
@@ -20591,12 +20579,10 @@ async function handleSessionIdle(args) {
20591
20579
  const resolvedAgentName = resolvedInfo?.agent;
20592
20580
  if (resolvedAgentName && skipAgents.some((s) => getAgentConfigKey(s) === getAgentConfigKey(resolvedAgentName))) {
20593
20581
  log(`[${HOOK_NAME}] Skipped: agent in skipAgents list`, { sessionID, agent: resolvedAgentName });
20594
- console.error(`[TODO-DIAG] BLOCKED: agent '${resolvedAgentName}' in skipAgents`);
20595
20582
  return;
20596
20583
  }
20597
20584
  if ((compactionGuardActive || encounteredCompaction) && !resolvedInfo?.agent) {
20598
20585
  log(`[${HOOK_NAME}] Skipped: compaction occurred but no agent info resolved`, { sessionID });
20599
- console.error(`[TODO-DIAG] BLOCKED: compaction guard + no agent`);
20600
20586
  return;
20601
20587
  }
20602
20588
  if (state2.recentCompactionAt && resolvedInfo?.agent) {
@@ -20604,20 +20590,16 @@ async function handleSessionIdle(args) {
20604
20590
  }
20605
20591
  if (isContinuationStopped?.(sessionID)) {
20606
20592
  log(`[${HOOK_NAME}] Skipped: continuation stopped for session`, { sessionID });
20607
- console.error(`[TODO-DIAG] BLOCKED: isContinuationStopped=true`);
20608
20593
  return;
20609
20594
  }
20610
20595
  if (shouldSkipContinuation?.(sessionID)) {
20611
20596
  log(`[${HOOK_NAME}] Skipped: another continuation hook already injected`, { sessionID });
20612
- console.error(`[TODO-DIAG] BLOCKED: shouldSkipContinuation=true (gptPermissionContinuation recently injected)`);
20613
20597
  return;
20614
20598
  }
20615
20599
  const progressUpdate = sessionStateStore.trackContinuationProgress(sessionID, incompleteCount, todos);
20616
20600
  if (shouldStopForStagnation({ sessionID, incompleteCount, progressUpdate })) {
20617
- console.error(`[TODO-DIAG] BLOCKED: stagnation detected (count=${progressUpdate.stagnationCount})`);
20618
20601
  return;
20619
20602
  }
20620
- console.error(`[TODO-DIAG] PASSED all gates! Starting countdown (${incompleteCount}/${todos.length} incomplete)`);
20621
20603
  startCountdown({
20622
20604
  ctx,
20623
20605
  sessionID,
@@ -20708,9 +20690,6 @@ function createTodoContinuationHandler(args) {
20708
20690
  } = args;
20709
20691
  return async ({ event }) => {
20710
20692
  const props = event.properties;
20711
- if (event.type === "session.idle") {
20712
- console.error(`[TODO-DIAG] handler received session.idle event`, { sessionID: props?.sessionID });
20713
- }
20714
20693
  if (event.type === "session.error") {
20715
20694
  const sessionID = props?.sessionID;
20716
20695
  if (!sessionID)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "evil-omo",
3
- "version": "3.12.2",
3
+ "version": "3.12.3",
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.2",
80
- "evil-omo-darwin-x64": "3.12.2",
81
- "evil-omo-darwin-x64-baseline": "3.12.2",
82
- "evil-omo-linux-x64": "3.12.2",
83
- "evil-omo-linux-x64-baseline": "3.12.2",
84
- "evil-omo-linux-arm64": "3.12.2",
85
- "evil-omo-linux-x64-musl": "3.12.2",
86
- "evil-omo-linux-x64-musl-baseline": "3.12.2",
87
- "evil-omo-linux-arm64-musl": "3.12.2",
88
- "evil-omo-windows-x64": "3.12.2",
89
- "evil-omo-windows-x64-baseline": "3.12.2"
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"
90
90
  },
91
91
  "overrides": {
92
92
  "@opencode-ai/sdk": "^1.2.24"