Fix todo-continuation-enforcer mock isolation
- idle-event.ts: improve import patterns
- non-idle-events.ts: update for test compatibility
- resolve-message-info.ts: prevent cross-test contamination
- todo-continuation-enforcer.test.ts: narrow mock scope
- types.ts: update type definitions
🤖 GENERATED WITH ASSISTANCE OF OhMyOpenCode
This commit is contained in:
@@ -10,7 +10,7 @@ import { isLastAssistantMessageAborted } from "./abort-detection"
|
||||
import { hasUnansweredQuestion } from "./pending-question-detection"
|
||||
import { shouldStopForStagnation } from "./stagnation-detection"
|
||||
import { getIncompleteCount } from "./todo"
|
||||
import type { MessageInfo, ResolvedMessageInfo, Todo } from "./types"
|
||||
import type { MessageInfo, MessageWithInfo, ResolvedMessageInfo, Todo } from "./types"
|
||||
import { resolveLatestMessageInfo } from "./resolve-message-info"
|
||||
import { acknowledgeCompactionGuard, isCompactionGuardActive } from "./compaction-guard"
|
||||
import type { SessionStateStore } from "./session-state"
|
||||
@@ -61,17 +61,18 @@ export async function handleSessionIdle(args: {
|
||||
return
|
||||
}
|
||||
|
||||
let prefetchedMessages: MessageWithInfo[] | undefined
|
||||
try {
|
||||
const messagesResp = await ctx.client.session.messages({
|
||||
path: { id: sessionID },
|
||||
query: { directory: ctx.directory },
|
||||
})
|
||||
const messages = normalizeSDKResponse(messagesResp, [] as Array<{ info?: MessageInfo }>)
|
||||
if (isLastAssistantMessageAborted(messages)) {
|
||||
prefetchedMessages = normalizeSDKResponse(messagesResp, [] as MessageWithInfo[])
|
||||
if (isLastAssistantMessageAborted(prefetchedMessages)) {
|
||||
log(`[${HOOK_NAME}] Skipped: last assistant message was aborted (API fallback)`, { sessionID })
|
||||
return
|
||||
}
|
||||
if (hasUnansweredQuestion(messages)) {
|
||||
if (hasUnansweredQuestion(prefetchedMessages)) {
|
||||
log(`[${HOOK_NAME}] Skipped: pending question awaiting user response`, { sessionID })
|
||||
return
|
||||
}
|
||||
@@ -132,7 +133,7 @@ export async function handleSessionIdle(args: {
|
||||
let resolvedInfo: ResolvedMessageInfo | undefined
|
||||
let encounteredCompaction = false
|
||||
try {
|
||||
const messageInfoResult = await resolveLatestMessageInfo(ctx, sessionID)
|
||||
const messageInfoResult = await resolveLatestMessageInfo(ctx, sessionID, prefetchedMessages)
|
||||
resolvedInfo = messageInfoResult.resolvedInfo
|
||||
encounteredCompaction = messageInfoResult.encounteredCompaction
|
||||
} catch (error) {
|
||||
|
||||
Reference in New Issue
Block a user