(message: Anthropic.MessageParam, apiConversationHistory: ApiMessage[])
| 107 | } |
| 108 | |
| 109 | function prepareUserMessage(message: Anthropic.MessageParam, apiConversationHistory: ApiMessage[]): ApiMessage { |
| 110 | const effectiveHistoryForValidation = getEffectiveApiHistory(apiConversationHistory) |
| 111 | const lastEffective = effectiveHistoryForValidation[effectiveHistoryForValidation.length - 1] |
| 112 | const historyForValidation = lastEffective?.role === "assistant" ? effectiveHistoryForValidation : [] |
| 113 | |
| 114 | let messageToAdd = message |
| 115 | if (lastEffective?.role !== "assistant" && Array.isArray(message.content)) { |
| 116 | messageToAdd = { |
| 117 | ...message, |
| 118 | content: message.content.map((block) => |
| 119 | block.type === "tool_result" |
| 120 | ? { |
| 121 | type: "text" as const, |
| 122 | text: `Tool result:\n${typeof block.content === "string" ? block.content : JSON.stringify(block.content)}`, |
| 123 | } |
| 124 | : block, |
| 125 | ), |
| 126 | } |
| 127 | } |
| 128 | |
| 129 | const validatedMessage = validateAndFixToolResultIds(messageToAdd, historyForValidation) |
| 130 | return { ...validatedMessage, ts: Date.now() } |
| 131 | } |
| 132 | |
| 133 | function prependContentBlock(message: any, block: any): void { |
| 134 | if (typeof message.content === "string") { |
no test coverage detected