MCPcopy Create free account
hub / github.com/Noumena-Network/code / getTaskReminderTurnCounts

Function getTaskReminderTurnCounts

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

Source from the content-addressed store, hash-verified

3324}
3325
3326function getTaskReminderTurnCounts(messages: Message[]): {
3327 turnsSinceLastTaskManagement: number
3328 turnsSinceLastReminder: number
3329} {
3330 let lastTaskManagementIndex = -1
3331 let lastReminderIndex = -1
3332 let assistantTurnsSinceTaskManagement = 0
3333 let assistantTurnsSinceReminder = 0
3334
3335 // Iterate backwards to find most recent events
3336 for (let i = messages.length - 1; i >= 0; i--) {
3337 const message = messages[i]
3338
3339 if (message?.type === 'assistant') {
3340 if (isThinkingMessage(message)) {
3341 // Skip thinking messages
3342 continue
3343 }
3344
3345 // Check for TaskCreate or TaskUpdate usage BEFORE incrementing counter
3346 if (
3347 lastTaskManagementIndex === -1 &&
3348 'message' in message &&
3349 Array.isArray(message.message?.content) &&
3350 message.message.content.some(
3351 block =>
3352 block.type === 'tool_use' &&
3353 (block.name === TASK_CREATE_TOOL_NAME ||
3354 block.name === TASK_UPDATE_TOOL_NAME),
3355 )
3356 ) {
3357 lastTaskManagementIndex = i
3358 }
3359
3360 // Count assistant turns before finding events
3361 if (lastTaskManagementIndex === -1) assistantTurnsSinceTaskManagement++
3362 if (lastReminderIndex === -1) assistantTurnsSinceReminder++
3363 } else if (
3364 lastReminderIndex === -1 &&
3365 message?.type === 'attachment' &&
3366 message.attachment.type === 'task_reminder'
3367 ) {
3368 lastReminderIndex = i
3369 }
3370
3371 if (lastTaskManagementIndex !== -1 && lastReminderIndex !== -1) {
3372 break
3373 }
3374 }
3375
3376 return {
3377 turnsSinceLastTaskManagement: assistantTurnsSinceTaskManagement,
3378 turnsSinceLastReminder: assistantTurnsSinceReminder,
3379 }
3380}
3381
3382async function getTaskReminderAttachments(
3383 messages: Message[] | undefined,

Callers 1

Calls 1

isThinkingMessageFunction · 0.85

Tested by

no test coverage detected