mirror of
https://github.com/router-for-me/CLIProxyAPIPlus.git
synced 2026-03-09 23:33:24 +00:00
fix(kiro): handle empty content in Claude format assistant messages
Problem: - PR #181 fixed empty content for OpenAI format (kiro_openai_request.go) - But Claude format (kiro_claude_request.go) was not fixed - OpenCode uses Claude format (/v1/messages endpoint) - When assistant messages have only tool_use (no text), content becomes empty - This causes 'Improperly formed request' errors from Kiro API Example of problematic message format: { "role": "assistant", "content": [ {"type": "tool_use", "id": "...", "name": "todowrite", "input": {...}} ] } Solution: - Add empty content fallback in BuildAssistantMessageStruct (Claude format) - Same fix as PR #181 applied to kiro_openai_request.go Fixes compaction failures for OpenCode + Quotio + CLIProxyAPIPlus + Kiro stack
This commit is contained in:
@@ -883,8 +883,21 @@ func BuildAssistantMessageStruct(msg gjson.Result) KiroAssistantResponseMessage
|
||||
contentBuilder.WriteString(content.String())
|
||||
}
|
||||
|
||||
// CRITICAL FIX: Kiro API requires non-empty content for assistant messages
|
||||
// This can happen with compaction requests where assistant messages have only tool_use
|
||||
// (no text content). Without this fix, Kiro API returns "Improperly formed request" error.
|
||||
finalContent := contentBuilder.String()
|
||||
if strings.TrimSpace(finalContent) == "" {
|
||||
if len(toolUses) > 0 {
|
||||
finalContent = "I'll help you with that."
|
||||
} else {
|
||||
finalContent = "I understand."
|
||||
}
|
||||
log.Debugf("kiro: assistant content was empty, using default: %s", finalContent)
|
||||
}
|
||||
|
||||
return KiroAssistantResponseMessage{
|
||||
Content: contentBuilder.String(),
|
||||
Content: finalContent,
|
||||
ToolUses: toolUses,
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user