diff --git a/src/main/services/agents/BaseService.ts b/src/main/services/agents/BaseService.ts index cadf45b43..86d4aef52 100644 --- a/src/main/services/agents/BaseService.ts +++ b/src/main/services/agents/BaseService.ts @@ -59,16 +59,23 @@ export abstract class BaseService { } if (ids && ids.length > 0) { for (const id of ids) { - const server = await mcpApiService.getServerInfo(id) - if (server) { - server.tools.forEach((tool: MCPTool) => { - tools.push({ - id: `mcp_${id}_${tool.name}`, - name: tool.name, - type: 'mcp', - description: tool.description || '', - requirePermissions: true + try { + const server = await mcpApiService.getServerInfo(id) + if (server) { + server.tools.forEach((tool: MCPTool) => { + tools.push({ + id: `mcp_${id}_${tool.name}`, + name: tool.name, + type: 'mcp', + description: tool.description || '', + requirePermissions: true + }) }) + } + } catch (error) { + logger.warn('Failed to list MCP tools', { + id, + error: error as Error }) } } diff --git a/src/main/services/agents/services/SessionMessageService.ts b/src/main/services/agents/services/SessionMessageService.ts index 0aa17425f..f7d44e161 100644 --- a/src/main/services/agents/services/SessionMessageService.ts +++ b/src/main/services/agents/services/SessionMessageService.ts @@ -6,7 +6,7 @@ import type { ListOptions } from '@types' import { TextStreamPart } from 'ai' -import { and, desc, eq } from 'drizzle-orm' +import { and, desc, eq, not } from 'drizzle-orm' import { BaseService } from '../BaseService' import { sessionMessagesTable } from '../database/schema' @@ -276,7 +276,7 @@ export class SessionMessageService extends BaseService { const result = await this.database .select({ agent_session_id: sessionMessagesTable.agent_session_id }) .from(sessionMessagesTable) - .where(eq(sessionMessagesTable.session_id, sessionId)) + .where(and(eq(sessionMessagesTable.session_id, sessionId), not(eq(sessionMessagesTable.agent_session_id, '')))) .orderBy(desc(sessionMessagesTable.created_at)) .limit(1) diff --git a/src/main/services/agents/services/claudecode/index.ts b/src/main/services/agents/services/claudecode/index.ts index 63523b828..8752dd891 100644 --- a/src/main/services/agents/services/claudecode/index.ts +++ b/src/main/services/agents/services/claudecode/index.ts @@ -211,6 +211,11 @@ class ClaudeCodeService implements AgentServiceInterface { message, event: JSON.stringify(message.event) }) + } else { + logger.silly('Claude response', { + message, + event: JSON.stringify(message) + }) } // Transform SDKMessage to UIMessageChunks diff --git a/src/main/services/agents/services/claudecode/transform.ts b/src/main/services/agents/services/claudecode/transform.ts index 9badef411..12dc4de29 100644 --- a/src/main/services/agents/services/claudecode/transform.ts +++ b/src/main/services/agents/services/claudecode/transform.ts @@ -591,6 +591,15 @@ function handleSystemMessage(message: Extract): raw: message } }) + } else if (message.subtype === 'compact_boundary') { + chunks.push({ + type: 'raw', + rawValue: { + type: 'compact', + session_id: message.session_id, + raw: message + } + }) } return chunks }