From 7c7c5fd967691f8471a3ed95f77bd03fabc80e3b Mon Sep 17 00:00:00 2001 From: Darley Date: Mon, 26 Jan 2026 08:27:53 +0800 Subject: [PATCH 1/2] Fix Kiro tool schema defaults --- internal/translator/kiro/openai/kiro_openai.go | 4 ++-- .../kiro/openai/kiro_openai_request.go | 17 ++++++++++++++++- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/internal/translator/kiro/openai/kiro_openai.go b/internal/translator/kiro/openai/kiro_openai.go index cec17e070..03962b9f5 100644 --- a/internal/translator/kiro/openai/kiro_openai.go +++ b/internal/translator/kiro/openai/kiro_openai.go @@ -314,7 +314,7 @@ func ConvertOpenAIToolsToKiroFormat(tools []map[string]interface{}) []KiroToolWr name := kirocommon.GetString(fn, "name") description := kirocommon.GetString(fn, "description") - parameters := fn["parameters"] + parameters := ensureKiroInputSchema(fn["parameters"]) if name == "" { continue @@ -368,4 +368,4 @@ func ConvertClaudeToolUseToOpenAI(toolUseID, toolName string, input map[string]i // LogStreamEvent logs a streaming event for debugging func LogStreamEvent(eventType, data string) { log.Debugf("kiro-openai: stream event type=%s, data_len=%d", eventType, len(data)) -} \ No newline at end of file +} diff --git a/internal/translator/kiro/openai/kiro_openai_request.go b/internal/translator/kiro/openai/kiro_openai_request.go index e33b68cca..93914c6dc 100644 --- a/internal/translator/kiro/openai/kiro_openai_request.go +++ b/internal/translator/kiro/openai/kiro_openai_request.go @@ -381,6 +381,16 @@ func shortenToolNameIfNeeded(name string) string { return name[:limit] } +func ensureKiroInputSchema(parameters interface{}) interface{} { + if parameters != nil { + return parameters + } + return map[string]interface{}{ + "type": "object", + "properties": map[string]interface{}{}, + } +} + // convertOpenAIToolsToKiro converts OpenAI tools to Kiro format func convertOpenAIToolsToKiro(tools gjson.Result) []KiroToolWrapper { var kiroTools []KiroToolWrapper @@ -401,7 +411,12 @@ func convertOpenAIToolsToKiro(tools gjson.Result) []KiroToolWrapper { name := fn.Get("name").String() description := fn.Get("description").String() - parameters := fn.Get("parameters").Value() + parametersResult := fn.Get("parameters") + var parameters interface{} + if parametersResult.Exists() && parametersResult.Type != gjson.Null { + parameters = parametersResult.Value() + } + parameters = ensureKiroInputSchema(parameters) // Shorten tool name if it exceeds 64 characters (common with MCP tools) originalName := name From e3e741d0be8bdf8dd0dba7e61deecd391310b12f Mon Sep 17 00:00:00 2001 From: Darley Date: Mon, 26 Jan 2026 09:15:38 +0800 Subject: [PATCH 2/2] Default Claude tool input schema --- .../kiro/claude/kiro_claude_request.go | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/internal/translator/kiro/claude/kiro_claude_request.go b/internal/translator/kiro/claude/kiro_claude_request.go index bcd39af4b..f92be9d50 100644 --- a/internal/translator/kiro/claude/kiro_claude_request.go +++ b/internal/translator/kiro/claude/kiro_claude_request.go @@ -499,6 +499,16 @@ func shortenToolNameIfNeeded(name string) string { return name[:limit] } +func ensureKiroInputSchema(parameters interface{}) interface{} { + if parameters != nil { + return parameters + } + return map[string]interface{}{ + "type": "object", + "properties": map[string]interface{}{}, + } +} + // convertClaudeToolsToKiro converts Claude tools to Kiro format func convertClaudeToolsToKiro(tools gjson.Result) []KiroToolWrapper { var kiroTools []KiroToolWrapper @@ -509,7 +519,12 @@ func convertClaudeToolsToKiro(tools gjson.Result) []KiroToolWrapper { for _, tool := range tools.Array() { name := tool.Get("name").String() description := tool.Get("description").String() - inputSchema := tool.Get("input_schema").Value() + inputSchemaResult := tool.Get("input_schema") + var inputSchema interface{} + if inputSchemaResult.Exists() && inputSchemaResult.Type != gjson.Null { + inputSchema = inputSchemaResult.Value() + } + inputSchema = ensureKiroInputSchema(inputSchema) // Shorten tool name if it exceeds 64 characters (common with MCP tools) originalName := name