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

Function countUserPromptsInMessages

src/utils/attribution.ts:119–162  ·  view source on GitHub ↗
(
  messages: ReadonlyArray<{ type: string; message?: { content?: unknown } }>,
)

Source from the content-addressed store, hash-verified

117 * Callers should pass messages already filtered to exclude sidechain messages.
118 */
119export function countUserPromptsInMessages(
120 messages: ReadonlyArray<{ type: string; message?: { content?: unknown } }>,
121): number {
122 let count = 0
123
124 for (const message of messages) {
125 if (message.type !== 'user') {
126 continue
127 }
128
129 const content = message.message?.content
130 if (!content) {
131 continue
132 }
133
134 let hasUserText = false
135
136 if (typeof content === 'string') {
137 if (isTerminalOutput(content)) {
138 continue
139 }
140 hasUserText = content.trim().length > 0
141 } else if (Array.isArray(content)) {
142 hasUserText = content.some(block => {
143 if (!block || typeof block !== 'object' || !('type' in block)) {
144 return false
145 }
146 return (
147 (block.type === 'text' &&
148 typeof block.text === 'string' &&
149 !isTerminalOutput(block.text)) ||
150 block.type === 'image' ||
151 block.type === 'document'
152 )
153 })
154 }
155
156 if (hasUserText) {
157 count++
158 }
159 }
160
161 return count
162}
163
164/**
165 * Count non-sidechain user messages in transcript entries.

Callers 1

Calls 1

isTerminalOutputFunction · 0.85

Tested by

no test coverage detected