MCPcopy Create free account
hub / github.com/tiann/hapi / formatClaudeMessageForInk

Function formatClaudeMessageForInk

cli/src/ui/messageFormatterInk.ts:10–138  ·  view source on GitHub ↗
(
    message: SDKMessage,
    messageBuffer: MessageBuffer,
    onAssistantResult?: OnAssistantResultInkCallback
)

Source from the content-addressed store, hash-verified

8 * Formats Claude SDK messages for Ink display
9 */
10export function formatClaudeMessageForInk(
11 message: SDKMessage,
12 messageBuffer: MessageBuffer,
13 onAssistantResult?: OnAssistantResultInkCallback
14): void {
15 logger.debugLargeJson('[CLAUDE INK] Message from remote mode:', message)
16
17 switch (message.type) {
18 case 'system': {
19 const sysMsg = message as SDKSystemMessage
20 if (sysMsg.subtype === 'init') {
21 messageBuffer.addMessage('─'.repeat(40), 'status')
22 messageBuffer.addMessage(`🚀 Session initialized: ${sysMsg.session_id}`, 'system')
23 messageBuffer.addMessage(` Model: ${sysMsg.model}`, 'status')
24 messageBuffer.addMessage(` CWD: ${sysMsg.cwd}`, 'status')
25 if (sysMsg.tools && sysMsg.tools.length > 0) {
26 messageBuffer.addMessage(` Tools: ${sysMsg.tools.join(', ')}`, 'status')
27 }
28 messageBuffer.addMessage('─'.repeat(40), 'status')
29 }
30 break
31 }
32
33 case 'user': {
34 const userMsg = message as SDKUserMessage
35 if (userMsg.message && typeof userMsg.message === 'object' && 'content' in userMsg.message) {
36 const content = userMsg.message.content
37
38 if (typeof content === 'string') {
39 messageBuffer.addMessage(`👤 User: ${content}`, 'user')
40 }
41 else if (Array.isArray(content)) {
42 for (const block of content) {
43 if (block.type === 'text') {
44 messageBuffer.addMessage(`👤 User: ${block.text}`, 'user')
45 } else if (block.type === 'tool_result') {
46 messageBuffer.addMessage(`✅ Tool Result (ID: ${block.tool_use_id})`, 'result')
47 if (block.content) {
48 const outputStr = typeof block.content === 'string'
49 ? block.content
50 : JSON.stringify(block.content, null, 2)
51 const maxLength = 200
52 if (outputStr.length > maxLength) {
53 messageBuffer.addMessage(outputStr.substring(0, maxLength) + '... (truncated)', 'result')
54 } else {
55 messageBuffer.addMessage(outputStr, 'result')
56 }
57 }
58 }
59 }
60 }
61 else {
62 messageBuffer.addMessage(`👤 User: ${JSON.stringify(content, null, 2)}`, 'user')
63 }
64 }
65 break
66 }
67

Callers 1

onMessageMethod · 0.90

Calls 4

debugLargeJsonMethod · 0.80
resolveMethod · 0.80
debugMethod · 0.80
addMessageMethod · 0.45

Tested by

no test coverage detected