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

Function countUserPromptsInMessages

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

Source from the content-addressed store, hash-verified

103 * Callers should pass messages already filtered to exclude sidechain messages.
104 */
105export function countUserPromptsInMessages(
106 messages: ReadonlyArray<{ type: string; message?: { content?: unknown } }>,
107): number {
108 let count = 0
109
110 for (const message of messages) {
111 if (message.type !== 'user') {
112 continue
113 }
114
115 const content = message.message?.content
116 if (!content) {
117 continue
118 }
119
120 let hasUserText = false
121
122 if (typeof content === 'string') {
123 if (isTerminalOutput(content)) {
124 continue
125 }
126 hasUserText = content.trim().length > 0
127 } else if (Array.isArray(content)) {
128 hasUserText = content.some(block => {
129 if (!block || typeof block !== 'object' || !('type' in block)) {
130 return false
131 }
132 return (
133 (block.type === 'text' &&
134 typeof block.text === 'string' &&
135 !isTerminalOutput(block.text)) ||
136 block.type === 'image' ||
137 block.type === 'document'
138 )
139 })
140 }
141
142 if (hasUserText) {
143 count++
144 }
145 }
146
147 return count
148}
149
150/**
151 * Count non-sidechain user messages in transcript entries.

Callers 1

Calls 1

isTerminalOutputFunction · 0.85

Tested by

no test coverage detected