package com.vincent.rsf.server.ai.service.impl.chat; import com.vincent.rsf.server.ai.dto.AiChatMemoryDto; import com.vincent.rsf.server.ai.dto.AiChatModelOptionDto; import com.vincent.rsf.server.ai.dto.AiChatRuntimeDto; import com.vincent.rsf.server.ai.dto.AiResolvedConfig; import org.springframework.stereotype.Component; import java.util.List; @Component public class AiChatRuntimeAssembler { public AiChatRuntimeDto buildRuntimeSnapshot(String requestId, Long sessionId, AiResolvedConfig config, List modelOptions, Integer mountedMcpCount, List mountedMcpNames, List mountErrors, AiChatMemoryDto memory) { return AiChatRuntimeDto.builder() .requestId(requestId) .sessionId(sessionId) .aiParamId(config.getAiParam().getId()) .promptCode(config.getPromptCode()) .promptName(config.getPrompt().getName()) .model(config.getAiParam().getModel()) .modelOptions(modelOptions) .configuredMcpCount(config.getMcpMounts().size()) .mountedMcpCount(mountedMcpCount) .mountedMcpNames(mountedMcpNames) .mountErrors(mountErrors) .memorySummary(memory.getMemorySummary()) .memoryFacts(memory.getMemoryFacts()) .recentMessageCount(memory.getRecentMessageCount()) .persistedMessages(memory.getPersistedMessages()) .build(); } }