( workspaceId: string, forceRefresh = false, signal?: AbortSignal, serverId?: string )
| 97 | } |
| 98 | |
| 99 | async function fetchMcpTools( |
| 100 | workspaceId: string, |
| 101 | forceRefresh = false, |
| 102 | signal?: AbortSignal, |
| 103 | serverId?: string |
| 104 | ): Promise<McpTool[]> { |
| 105 | try { |
| 106 | const data = await requestJson(discoverMcpToolsContract, { |
| 107 | query: { |
| 108 | workspaceId, |
| 109 | refresh: forceRefresh || undefined, |
| 110 | ...(serverId ? { serverId } : {}), |
| 111 | }, |
| 112 | signal, |
| 113 | }) |
| 114 | return data.data.tools |
| 115 | } catch (error) { |
| 116 | if (error instanceof ApiClientError && error.status === 404) { |
| 117 | return [] |
| 118 | } |
| 119 | throw error |
| 120 | } |
| 121 | } |
| 122 | |
| 123 | /** |
| 124 | * Workspace aggregate derived from N parallel per-server queries via |
no test coverage detected