mirror of
https://github.com/open-webui/open-webui.git
synced 2026-01-03 23:25:21 +00:00
fix: prevent crash when invalid OpenAPI spec is loaded for tool servers (#20257)
* enh * fix
This commit is contained in:
parent
935808f5ea
commit
697e94e935
2 changed files with 20 additions and 8 deletions
|
|
@ -379,6 +379,13 @@ export const getToolServersData = async (servers: object[]) => {
|
|||
}
|
||||
|
||||
if (res) {
|
||||
if (!res.paths) {
|
||||
return {
|
||||
error: 'Invalid OpenAPI spec',
|
||||
url: server?.url
|
||||
};
|
||||
}
|
||||
|
||||
const { openapi, info, specs } = {
|
||||
openapi: res,
|
||||
info: res.info,
|
||||
|
|
|
|||
|
|
@ -1249,6 +1249,11 @@ function resolveSchema(schemaRef, components, resolvedSchemas = new Set()) {
|
|||
export const convertOpenApiToToolPayload = (openApiSpec) => {
|
||||
const toolPayload = [];
|
||||
|
||||
// Guard against invalid or non-OpenAPI specs (e.g., MCP-style configs)
|
||||
if (!openApiSpec || !openApiSpec.paths) {
|
||||
return toolPayload;
|
||||
}
|
||||
|
||||
for (const [path, methods] of Object.entries(openApiSpec.paths)) {
|
||||
for (const [method, operation] of Object.entries(methods)) {
|
||||
if (operation?.operationId) {
|
||||
|
|
|
|||
Loading…
Reference in a new issue