( serverId: string )
| 151 | } |
| 152 | |
| 153 | export async function loadPreregisteredClient( |
| 154 | serverId: string |
| 155 | ): Promise<PreregisteredClient | undefined> { |
| 156 | const [row] = await db |
| 157 | .select({ |
| 158 | clientId: mcpServers.oauthClientId, |
| 159 | clientSecret: mcpServers.oauthClientSecret, |
| 160 | }) |
| 161 | .from(mcpServers) |
| 162 | .where(eq(mcpServers.id, serverId)) |
| 163 | .limit(1) |
| 164 | if (!row?.clientId) return undefined |
| 165 | let clientSecret: string | undefined |
| 166 | if (row.clientSecret) { |
| 167 | try { |
| 168 | const { decrypted } = await decryptSecret(row.clientSecret) |
| 169 | clientSecret = decrypted |
| 170 | } catch (error) { |
| 171 | logger.error('Failed to decrypt preregistered MCP OAuth client secret', { |
| 172 | serverId, |
| 173 | error: toError(error).message, |
| 174 | }) |
| 175 | throw new Error('Failed to decrypt preregistered MCP OAuth client secret') |
| 176 | } |
| 177 | } |
| 178 | return { clientId: row.clientId, clientSecret } |
| 179 | } |
no test coverage detected