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 +12 -12
- package/dist/index.js +0 -21
- package/package.json +12 -12
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.
|
|
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.
|
|
9021
|
-
"oh-my-opencode-darwin-x64": "3.12.
|
|
9022
|
-
"oh-my-opencode-darwin-x64-baseline": "3.12.
|
|
9023
|
-
"oh-my-opencode-linux-arm64": "3.12.
|
|
9024
|
-
"oh-my-opencode-linux-arm64-musl": "3.12.
|
|
9025
|
-
"oh-my-opencode-linux-x64": "3.12.
|
|
9026
|
-
"oh-my-opencode-linux-x64-baseline": "3.12.
|
|
9027
|
-
"oh-my-opencode-linux-x64-musl": "3.12.
|
|
9028
|
-
"oh-my-opencode-linux-x64-musl-baseline": "3.12.
|
|
9029
|
-
"oh-my-opencode-windows-x64": "3.12.
|
|
9030
|
-
"oh-my-opencode-windows-x64-baseline": "3.12.
|
|
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.
|
|
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.
|
|
80
|
-
"oh-my-opencode-darwin-x64": "3.12.
|
|
81
|
-
"oh-my-opencode-darwin-x64-baseline": "3.12.
|
|
82
|
-
"oh-my-opencode-linux-arm64": "3.12.
|
|
83
|
-
"oh-my-opencode-linux-arm64-musl": "3.12.
|
|
84
|
-
"oh-my-opencode-linux-x64": "3.12.
|
|
85
|
-
"oh-my-opencode-linux-x64-baseline": "3.12.
|
|
86
|
-
"oh-my-opencode-linux-x64-musl": "3.12.
|
|
87
|
-
"oh-my-opencode-linux-x64-musl-baseline": "3.12.
|
|
88
|
-
"oh-my-opencode-windows-x64": "3.12.
|
|
89
|
-
"oh-my-opencode-windows-x64-baseline": "3.12.
|
|
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"
|