diff --git a/src/claude/claude-kiro.js b/src/claude/claude-kiro.js index 3249063..e2fb5a3 100644 --- a/src/claude/claude-kiro.js +++ b/src/claude/claude-kiro.js @@ -1032,12 +1032,18 @@ async initializeAuth(forceRefresh = false) { // Kiro 返回格式: {"content":"..."} 或 {"name":"xxx","toolUseId":"xxx",...} 或 {"followupPrompt":"..."} // 搜索所有可能的 JSON payload 开头模式 + // Kiro 返回的 toolUse 可能分多个事件: + // 1. {"name":"xxx","toolUseId":"xxx"} - 开始 + // 2. {"input":"..."} - input 数据(可能多次) + // 3. {"stop":true} - 结束 const contentStart = remaining.indexOf('{"content":', searchStart); const nameStart = remaining.indexOf('{"name":', searchStart); const followupStart = remaining.indexOf('{"followupPrompt":', searchStart); + const inputStart = remaining.indexOf('{"input":', searchStart); + const stopStart = remaining.indexOf('{"stop":', searchStart); // 找到最早出现的有效 JSON 模式 - const candidates = [contentStart, nameStart, followupStart].filter(pos => pos >= 0); + const candidates = [contentStart, nameStart, followupStart, inputStart, stopStart].filter(pos => pos >= 0); if (candidates.length === 0) break; const jsonStart = Math.min(...candidates); @@ -1096,7 +1102,7 @@ async initializeAuth(forceRefresh = false) { decodedContent = decodedContent.replace(/(? 0) {