mirror of
https://github.com/Significant-Gravitas/AutoGPT.git
synced 2026-02-12 15:55:03 -05:00
fix(frontend): Add response status narrowing for generated MCP API types
The generated API functions return discriminated union types (success | error). Add status checks to narrow the type before accessing success-specific fields, and convert null to undefined for CredentialsMetaResponse compatibility.
This commit is contained in:
@@ -114,6 +114,7 @@ export function MCPToolDialog({
|
||||
server_url: url,
|
||||
auth_token: authToken || null,
|
||||
});
|
||||
if (response.status !== 200) throw response.data;
|
||||
setTools(response.data.tools);
|
||||
setServerName(response.data.server_name ?? null);
|
||||
setAuthRequired(false);
|
||||
@@ -157,6 +158,7 @@ export function MCPToolDialog({
|
||||
const loginResponse = await postV2InitiateOauthLoginForAnMcpServer({
|
||||
server_url: serverUrl.trim(),
|
||||
});
|
||||
if (loginResponse.status !== 200) throw loginResponse.data;
|
||||
const { login_url, state_token } = loginResponse.data;
|
||||
|
||||
const { promise, cleanup } = openOAuthPopup(login_url, {
|
||||
@@ -183,6 +185,7 @@ export function MCPToolDialog({
|
||||
code: result.code,
|
||||
state_token,
|
||||
});
|
||||
if (cbResponse.status !== 200) throw cbResponse.data;
|
||||
callbackResult = cbResponse.data;
|
||||
}
|
||||
|
||||
@@ -198,6 +201,7 @@ export function MCPToolDialog({
|
||||
const toolsResponse = await postV2DiscoverAvailableToolsOnAnMcpServer({
|
||||
server_url: serverUrl.trim(),
|
||||
});
|
||||
if (toolsResponse.status !== 200) throw toolsResponse.data;
|
||||
setTools(toolsResponse.data.tools);
|
||||
setServerName(toolsResponse.data.server_name ?? null);
|
||||
setStep("tool");
|
||||
@@ -422,8 +426,9 @@ function MCPToolCard({
|
||||
onSelect: () => void;
|
||||
}) {
|
||||
const [expanded, setExpanded] = useState(false);
|
||||
const properties = tool.input_schema?.properties ?? {};
|
||||
const required = new Set<string>(tool.input_schema?.required ?? []);
|
||||
const schema = tool.input_schema as Record<string, any>;
|
||||
const properties = schema?.properties ?? {};
|
||||
const required = new Set<string>(schema?.required ?? []);
|
||||
const paramNames = Object.keys(properties);
|
||||
|
||||
// Strip XML-like tags from description for cleaner display.
|
||||
|
||||
@@ -187,6 +187,7 @@ export function useCredentialsInput({
|
||||
const mcpLoginResponse = await postV2InitiateOauthLoginForAnMcpServer({
|
||||
server_url: discriminatorValue!,
|
||||
});
|
||||
if (mcpLoginResponse.status !== 200) throw mcpLoginResponse.data;
|
||||
({ login_url, state_token } = mcpLoginResponse.data);
|
||||
} else {
|
||||
({ login_url, state_token } = await api.oAuthLogin(
|
||||
|
||||
@@ -137,7 +137,14 @@ export default function CredentialsProvider({
|
||||
code,
|
||||
state_token,
|
||||
});
|
||||
const credsMeta = response.data;
|
||||
if (response.status !== 200) throw response.data;
|
||||
const credsMeta: CredentialsMetaResponse = {
|
||||
...response.data,
|
||||
title: response.data.title ?? undefined,
|
||||
scopes: response.data.scopes ?? undefined,
|
||||
username: response.data.username ?? undefined,
|
||||
host: response.data.host ?? undefined,
|
||||
};
|
||||
addCredentials("mcp", credsMeta);
|
||||
return credsMeta;
|
||||
} catch (error) {
|
||||
|
||||
Reference in New Issue
Block a user