MCPcopy Index your code
hub / github.com/codeaashu/claude-code / getTodoReminderTurnCounts

Function getTodoReminderTurnCounts

src/utils/attachments.ts:3212–3264  ·  view source on GitHub ↗
(messages: Message[])

Source from the content-addressed store, hash-verified

3210}
3211
3212function getTodoReminderTurnCounts(messages: Message[]): {
3213 turnsSinceLastTodoWrite: number
3214 turnsSinceLastReminder: number
3215} {
3216 let lastTodoWriteIndex = -1
3217 let lastReminderIndex = -1
3218 let assistantTurnsSinceWrite = 0
3219 let assistantTurnsSinceReminder = 0
3220
3221 // Iterate backwards to find most recent events
3222 for (let i = messages.length - 1; i >= 0; i--) {
3223 const message = messages[i]
3224
3225 if (message?.type === 'assistant') {
3226 if (isThinkingMessage(message)) {
3227 // Skip thinking messages
3228 continue
3229 }
3230
3231 // Check for TodoWrite usage BEFORE incrementing counter
3232 // (we don't want to count the TodoWrite message itself as "1 turn since write")
3233 if (
3234 lastTodoWriteIndex === -1 &&
3235 'message' in message &&
3236 Array.isArray(message.message?.content) &&
3237 message.message.content.some(
3238 block => block.type === 'tool_use' && block.name === 'TodoWrite',
3239 )
3240 ) {
3241 lastTodoWriteIndex = i
3242 }
3243
3244 // Count assistant turns before finding events
3245 if (lastTodoWriteIndex === -1) assistantTurnsSinceWrite++
3246 if (lastReminderIndex === -1) assistantTurnsSinceReminder++
3247 } else if (
3248 lastReminderIndex === -1 &&
3249 message?.type === 'attachment' &&
3250 message.attachment.type === 'todo_reminder'
3251 ) {
3252 lastReminderIndex = i
3253 }
3254
3255 if (lastTodoWriteIndex !== -1 && lastReminderIndex !== -1) {
3256 break
3257 }
3258 }
3259
3260 return {
3261 turnsSinceLastTodoWrite: assistantTurnsSinceWrite,
3262 turnsSinceLastReminder: assistantTurnsSinceReminder,
3263 }
3264}
3265
3266async function getTodoReminderAttachments(
3267 messages: Message[] | undefined,

Callers 1

Calls 1

isThinkingMessageFunction · 0.85

Tested by

no test coverage detected