feat: allow Chat AI to use unregistered (register=false) tools
Some checks failed
Deploy to OCIWP / deploy (push) Failing after 13m58s

This commit is contained in:
jade
2026-07-23 23:46:04 +09:00
parent 18959b5128
commit ad2ab985d8

View File

@@ -41,6 +41,7 @@ public class ChatController {
private final ObjectMapper objectMapper; private final ObjectMapper objectMapper;
private final RedisRegistryService registryService; private final RedisRegistryService registryService;
private final ChatClient.Builder chatClientBuilder; private final ChatClient.Builder chatClientBuilder;
private final McpRouterController mcpRouterController;
@PostMapping(produces = MediaType.TEXT_EVENT_STREAM_VALUE) @PostMapping(produces = MediaType.TEXT_EVENT_STREAM_VALUE)
public SseEmitter chatStream(@RequestBody Map<String, String> request, public SseEmitter chatStream(@RequestBody Map<String, String> request,
@@ -54,9 +55,16 @@ public class ChatController {
try { try {
List<ToolCallback> callbacks = new ArrayList<>(); List<ToolCallback> callbacks = new ArrayList<>();
for (ToolMetadata meta : registryService.getAllTools()) { io.shinhanlife.dap.common.adapter.dto.JsonRpcResponse toolsResponse = mcpRouterController.listTools(null).getBody();
if (Boolean.TRUE.equals(meta.getVisible())) { if (toolsResponse != null && toolsResponse.getResult() instanceof Map) {
callbacks.add(new DynamicMcpToolCallback(meta, executeService, objectMapper, effectiveTenantId)); Map<String, Object> resultMap = (Map<String, Object>) toolsResponse.getResult();
if (resultMap.containsKey("tools")) {
List<ToolMetadata> allTools = (List<ToolMetadata>) resultMap.get("tools");
for (ToolMetadata meta : allTools) {
if (Boolean.TRUE.equals(meta.getVisible())) {
callbacks.add(new DynamicMcpToolCallback(meta, executeService, objectMapper, effectiveTenantId));
}
}
} }
} }