oh-my-opencode 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
@@ -8941,7 +8941,7 @@ var {
8941
8941
  // package.json
8942
8942
  var package_default = {
8943
8943
  name: "oh-my-opencode",
8944
- version: "3.12.2",
8944
+ version: "3.12.3",
8945
8945
  description: "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
8946
8946
  main: "dist/index.js",
8947
8947
  types: "dist/index.d.ts",
@@ -9017,17 +9017,17 @@ var package_default = {
9017
9017
  typescript: "^5.7.3"
9018
9018
  },
9019
9019
  optionalDependencies: {
9020
- "oh-my-opencode-darwin-arm64": "3.12.2",
9021
- "oh-my-opencode-darwin-x64": "3.12.2",
9022
- "oh-my-opencode-darwin-x64-baseline": "3.12.2",
9023
- "oh-my-opencode-linux-arm64": "3.12.2",
9024
- "oh-my-opencode-linux-arm64-musl": "3.12.2",
9025
- "oh-my-opencode-linux-x64": "3.12.2",
9026
- "oh-my-opencode-linux-x64-baseline": "3.12.2",
9027
- "oh-my-opencode-linux-x64-musl": "3.12.2",
9028
- "oh-my-opencode-linux-x64-musl-baseline": "3.12.2",
9029
- "oh-my-opencode-windows-x64": "3.12.2",
9030
- "oh-my-opencode-windows-x64-baseline": "3.12.2"
9020
+ "oh-my-opencode-darwin-arm64": "3.12.3",
9021
+ "oh-my-opencode-darwin-x64": "3.12.3",
9022
+ "oh-my-opencode-darwin-x64-baseline": "3.12.3",
9023
+ "oh-my-opencode-linux-arm64": "3.12.3",
9024
+ "oh-my-opencode-linux-arm64-musl": "3.12.3",
9025
+ "oh-my-opencode-linux-x64": "3.12.3",
9026
+ "oh-my-opencode-linux-x64-baseline": "3.12.3",
9027
+ "oh-my-opencode-linux-x64-musl": "3.12.3",
9028
+ "oh-my-opencode-linux-x64-musl-baseline": "3.12.3",
9029
+ "oh-my-opencode-windows-x64": "3.12.3",
9030
+ "oh-my-opencode-windows-x64-baseline": "3.12.3"
9031
9031
  },
9032
9032
  overrides: {
9033
9033
  "@opencode-ai/sdk": "^1.2.24"
package/dist/index.js CHANGED
@@ -20436,18 +20436,15 @@ async function handleSessionIdle(args) {
20436
20436
  shouldSkipContinuation
20437
20437
  } = args;
20438
20438
  log(`[${HOOK_NAME}] session.idle`, { sessionID });
20439
- console.error(`[TODO-DIAG] session.idle fired for ${sessionID}`);
20440
20439
  const state2 = sessionStateStore.getState(sessionID);
20441
20440
  if (state2.isRecovering) {
20442
20441
  log(`[${HOOK_NAME}] Skipped: in recovery`, { sessionID });
20443
- console.error(`[TODO-DIAG] BLOCKED: isRecovering=true`);
20444
20442
  return;
20445
20443
  }
20446
20444
  if (state2.abortDetectedAt) {
20447
20445
  const timeSinceAbort = Date.now() - state2.abortDetectedAt;
20448
20446
  if (timeSinceAbort < ABORT_WINDOW_MS) {
20449
20447
  log(`[${HOOK_NAME}] Skipped: abort detected via event ${timeSinceAbort}ms ago`, { sessionID });
20450
- console.error(`[TODO-DIAG] BLOCKED: abort detected ${timeSinceAbort}ms ago`);
20451
20448
  state2.abortDetectedAt = undefined;
20452
20449
  return;
20453
20450
  }
@@ -20456,7 +20453,6 @@ async function handleSessionIdle(args) {
20456
20453
  const hasRunningBgTasks = backgroundManager ? backgroundManager.getTasksByParentSession(sessionID).some((task) => task.status === "running") : false;
20457
20454
  if (hasRunningBgTasks) {
20458
20455
  log(`[${HOOK_NAME}] Skipped: background tasks running`, { sessionID });
20459
- console.error(`[TODO-DIAG] BLOCKED: background tasks running`, backgroundManager?.getTasksByParentSession(sessionID).filter((t) => t.status === "running").map((t) => t.id));
20460
20456
  return;
20461
20457
  }
20462
20458
  try {
@@ -20467,12 +20463,10 @@ async function handleSessionIdle(args) {
20467
20463
  const messages = normalizeSDKResponse(messagesResp, []);
20468
20464
  if (isLastAssistantMessageAborted(messages)) {
20469
20465
  log(`[${HOOK_NAME}] Skipped: last assistant message was aborted (API fallback)`, { sessionID });
20470
- console.error(`[TODO-DIAG] BLOCKED: last assistant message aborted`);
20471
20466
  return;
20472
20467
  }
20473
20468
  if (hasUnansweredQuestion(messages)) {
20474
20469
  log(`[${HOOK_NAME}] Skipped: pending question awaiting user response`, { sessionID });
20475
- console.error(`[TODO-DIAG] BLOCKED: hasUnansweredQuestion=true`);
20476
20470
  return;
20477
20471
  }
20478
20472
  } catch (error) {
@@ -20484,14 +20478,12 @@ async function handleSessionIdle(args) {
20484
20478
  todos = normalizeSDKResponse(response, [], { preferResponseOnMissingData: true });
20485
20479
  } catch (error) {
20486
20480
  log(`[${HOOK_NAME}] Todo fetch failed`, { sessionID, error: String(error) });
20487
- console.error(`[TODO-DIAG] BLOCKED: todo fetch failed`, String(error));
20488
20481
  return;
20489
20482
  }
20490
20483
  if (!todos || todos.length === 0) {
20491
20484
  sessionStateStore.resetContinuationProgress(sessionID);
20492
20485
  sessionStateStore.resetContinuationProgress(sessionID);
20493
20486
  log(`[${HOOK_NAME}] No todos`, { sessionID });
20494
- console.error(`[TODO-DIAG] BLOCKED: no todos`);
20495
20487
  return;
20496
20488
  }
20497
20489
  const incompleteCount = getIncompleteCount(todos);
@@ -20499,12 +20491,10 @@ async function handleSessionIdle(args) {
20499
20491
  sessionStateStore.resetContinuationProgress(sessionID);
20500
20492
  sessionStateStore.resetContinuationProgress(sessionID);
20501
20493
  log(`[${HOOK_NAME}] All todos complete`, { sessionID, total: todos.length });
20502
- console.error(`[TODO-DIAG] BLOCKED: all todos complete (${todos.length})`);
20503
20494
  return;
20504
20495
  }
20505
20496
  if (state2.inFlight) {
20506
20497
  log(`[${HOOK_NAME}] Skipped: injection in flight`, { sessionID });
20507
- console.error(`[TODO-DIAG] BLOCKED: inFlight=true`);
20508
20498
  return;
20509
20499
  }
20510
20500
  if (state2.consecutiveFailures >= MAX_CONSECUTIVE_FAILURES && state2.lastInjectedAt && Date.now() - state2.lastInjectedAt >= FAILURE_RESET_WINDOW_MS) {
@@ -20513,13 +20503,11 @@ async function handleSessionIdle(args) {
20513
20503
  }
20514
20504
  if (state2.consecutiveFailures >= MAX_CONSECUTIVE_FAILURES) {
20515
20505
  log(`[${HOOK_NAME}] Skipped: max consecutive failures reached`, { sessionID, consecutiveFailures: state2.consecutiveFailures });
20516
- console.error(`[TODO-DIAG] BLOCKED: consecutiveFailures=${state2.consecutiveFailures} >= ${MAX_CONSECUTIVE_FAILURES}`);
20517
20506
  return;
20518
20507
  }
20519
20508
  const effectiveCooldown = CONTINUATION_COOLDOWN_MS * Math.pow(2, Math.min(state2.consecutiveFailures, 5));
20520
20509
  if (state2.lastInjectedAt && Date.now() - state2.lastInjectedAt < effectiveCooldown) {
20521
20510
  log(`[${HOOK_NAME}] Skipped: cooldown active`, { sessionID, effectiveCooldown, consecutiveFailures: state2.consecutiveFailures });
20522
- console.error(`[TODO-DIAG] BLOCKED: cooldown active (${effectiveCooldown}ms, failures=${state2.consecutiveFailures})`);
20523
20511
  return;
20524
20512
  }
20525
20513
  let resolvedInfo;
@@ -20540,12 +20528,10 @@ async function handleSessionIdle(args) {
20540
20528
  const resolvedAgentName = resolvedInfo?.agent;
20541
20529
  if (resolvedAgentName && skipAgents.some((s) => getAgentConfigKey(s) === getAgentConfigKey(resolvedAgentName))) {
20542
20530
  log(`[${HOOK_NAME}] Skipped: agent in skipAgents list`, { sessionID, agent: resolvedAgentName });
20543
- console.error(`[TODO-DIAG] BLOCKED: agent '${resolvedAgentName}' in skipAgents`);
20544
20531
  return;
20545
20532
  }
20546
20533
  if ((compactionGuardActive || encounteredCompaction) && !resolvedInfo?.agent) {
20547
20534
  log(`[${HOOK_NAME}] Skipped: compaction occurred but no agent info resolved`, { sessionID });
20548
- console.error(`[TODO-DIAG] BLOCKED: compaction guard + no agent`);
20549
20535
  return;
20550
20536
  }
20551
20537
  if (state2.recentCompactionAt && resolvedInfo?.agent) {
@@ -20553,20 +20539,16 @@ async function handleSessionIdle(args) {
20553
20539
  }
20554
20540
  if (isContinuationStopped?.(sessionID)) {
20555
20541
  log(`[${HOOK_NAME}] Skipped: continuation stopped for session`, { sessionID });
20556
- console.error(`[TODO-DIAG] BLOCKED: isContinuationStopped=true`);
20557
20542
  return;
20558
20543
  }
20559
20544
  if (shouldSkipContinuation?.(sessionID)) {
20560
20545
  log(`[${HOOK_NAME}] Skipped: another continuation hook already injected`, { sessionID });
20561
- console.error(`[TODO-DIAG] BLOCKED: shouldSkipContinuation=true (gptPermissionContinuation recently injected)`);
20562
20546
  return;
20563
20547
  }
20564
20548
  const progressUpdate = sessionStateStore.trackContinuationProgress(sessionID, incompleteCount, todos);
20565
20549
  if (shouldStopForStagnation({ sessionID, incompleteCount, progressUpdate })) {
20566
- console.error(`[TODO-DIAG] BLOCKED: stagnation detected (count=${progressUpdate.stagnationCount})`);
20567
20550
  return;
20568
20551
  }
20569
- console.error(`[TODO-DIAG] PASSED all gates! Starting countdown (${incompleteCount}/${todos.length} incomplete)`);
20570
20552
  startCountdown({
20571
20553
  ctx,
20572
20554
  sessionID,
@@ -20657,9 +20639,6 @@ function createTodoContinuationHandler(args) {
20657
20639
  } = args;
20658
20640
  return async ({ event }) => {
20659
20641
  const props = event.properties;
20660
- if (event.type === "session.idle") {
20661
- console.error(`[TODO-DIAG] handler received session.idle event`, { sessionID: props?.sessionID });
20662
- }
20663
20642
  if (event.type === "session.error") {
20664
20643
  const sessionID = props?.sessionID;
20665
20644
  if (!sessionID)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "oh-my-opencode",
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
- "oh-my-opencode-darwin-arm64": "3.12.2",
80
- "oh-my-opencode-darwin-x64": "3.12.2",
81
- "oh-my-opencode-darwin-x64-baseline": "3.12.2",
82
- "oh-my-opencode-linux-arm64": "3.12.2",
83
- "oh-my-opencode-linux-arm64-musl": "3.12.2",
84
- "oh-my-opencode-linux-x64": "3.12.2",
85
- "oh-my-opencode-linux-x64-baseline": "3.12.2",
86
- "oh-my-opencode-linux-x64-musl": "3.12.2",
87
- "oh-my-opencode-linux-x64-musl-baseline": "3.12.2",
88
- "oh-my-opencode-windows-x64": "3.12.2",
89
- "oh-my-opencode-windows-x64-baseline": "3.12.2"
79
+ "oh-my-opencode-darwin-arm64": "3.12.3",
80
+ "oh-my-opencode-darwin-x64": "3.12.3",
81
+ "oh-my-opencode-darwin-x64-baseline": "3.12.3",
82
+ "oh-my-opencode-linux-arm64": "3.12.3",
83
+ "oh-my-opencode-linux-arm64-musl": "3.12.3",
84
+ "oh-my-opencode-linux-x64": "3.12.3",
85
+ "oh-my-opencode-linux-x64-baseline": "3.12.3",
86
+ "oh-my-opencode-linux-x64-musl": "3.12.3",
87
+ "oh-my-opencode-linux-x64-musl-baseline": "3.12.3",
88
+ "oh-my-opencode-windows-x64": "3.12.3",
89
+ "oh-my-opencode-windows-x64-baseline": "3.12.3"
90
90
  },
91
91
  "overrides": {
92
92
  "@opencode-ai/sdk": "^1.2.24"