@frontmcp/adapters 1.9.1 → 1.9.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm/index.mjs +136 -30
- package/esm/openapi/index.mjs +136 -30
- package/esm/package.json +6 -6
- package/esm/skills/index.mjs +5 -1
- package/index.js +131 -28
- package/openapi/index.js +131 -28
- package/openapi/openapi.adapter.d.ts +6 -0
- package/openapi/openapi.adapter.d.ts.map +1 -1
- package/openapi/openapi.frontmcp-schema.d.ts.map +1 -1
- package/openapi/openapi.tool.d.ts.map +1 -1
- package/openapi/openapi.types.d.ts +9 -2
- package/openapi/openapi.types.d.ts.map +1 -1
- package/openapi/openapi.utils.d.ts.map +1 -1
- package/package.json +6 -6
- package/skills/index.js +5 -1
- package/skills/sources/saas-pull.source.d.ts +2 -0
- package/skills/sources/saas-pull.source.d.ts.map +1 -1
package/index.js
CHANGED
|
@@ -683,7 +683,9 @@ var KNOWN_EXTENSION_FIELDS = /* @__PURE__ */ new Set([
|
|
|
683
683
|
"codecall",
|
|
684
684
|
"tags",
|
|
685
685
|
"hideFromDiscovery",
|
|
686
|
-
"examples"
|
|
686
|
+
"examples",
|
|
687
|
+
"meta",
|
|
688
|
+
"icons"
|
|
687
689
|
]);
|
|
688
690
|
var KNOWN_ANNOTATION_FIELDS = /* @__PURE__ */ new Set([
|
|
689
691
|
"title",
|
|
@@ -907,6 +909,10 @@ function appendCookie(headers, name, value) {
|
|
|
907
909
|
const combined = existing ? `${existing}; ${cookiePair}` : cookiePair;
|
|
908
910
|
headers.set("Cookie", combined);
|
|
909
911
|
}
|
|
912
|
+
function specDefault(tool2, inputKey) {
|
|
913
|
+
const property = tool2.inputSchema.properties?.[inputKey];
|
|
914
|
+
return typeof property === "object" ? property.default : void 0;
|
|
915
|
+
}
|
|
910
916
|
function buildRequest(tool2, input, security, baseUrl) {
|
|
911
917
|
const rawBaseUrl = tool2.metadata.servers?.[0]?.url || baseUrl;
|
|
912
918
|
(0, import_utils2.validateBaseUrl)(rawBaseUrl);
|
|
@@ -920,7 +926,7 @@ function buildRequest(tool2, input, security, baseUrl) {
|
|
|
920
926
|
let body;
|
|
921
927
|
for (const mapper of tool2.mapper) {
|
|
922
928
|
if (mapper.security) continue;
|
|
923
|
-
const value = input[mapper.inputKey];
|
|
929
|
+
const value = input[mapper.inputKey] ?? (mapper.required ? specDefault(tool2, mapper.inputKey) : void 0);
|
|
924
930
|
if (value === void 0 || value === null) {
|
|
925
931
|
if (mapper.required) {
|
|
926
932
|
throw new Error(
|
|
@@ -1034,9 +1040,11 @@ function createOpenApiTool(openapiTool, options, logger) {
|
|
|
1034
1040
|
const inputTransforms = metadata.adapter?.inputTransforms ?? [];
|
|
1035
1041
|
const toolTransform = metadata.adapter?.toolTransform ?? {};
|
|
1036
1042
|
const postToolTransform = metadata.adapter?.postToolTransform;
|
|
1043
|
+
const serverFilledKeys = new Set(inputTransforms.map((transform) => transform.inputKey));
|
|
1037
1044
|
const frontmcpValidation = validateFrontMcpExtension(metadata.frontmcp, openapiTool.name, logger);
|
|
1038
1045
|
const frontmcpExt = frontmcpValidation.data;
|
|
1039
1046
|
const schemaResult = getZodSchemaFromJsonSchema(openapiTool.inputSchema, openapiTool.name, logger);
|
|
1047
|
+
const argumentCheck = schemaResult.conversionFailed ? void 0 : getZodSchemaFromJsonSchema(toArgumentJsonSchema(openapiTool), openapiTool.name, logger);
|
|
1040
1048
|
let wrappedOutputSchema;
|
|
1041
1049
|
if (openapiTool.outputSchema !== void 0) {
|
|
1042
1050
|
const baseOutputSchema = openapiTool.outputSchema ?? { type: "string" };
|
|
@@ -1054,11 +1062,15 @@ function createOpenApiTool(openapiTool, options, logger) {
|
|
|
1054
1062
|
const toolMetadata = {
|
|
1055
1063
|
id: openapiTool.name,
|
|
1056
1064
|
name: openapiTool.name,
|
|
1065
|
+
...openapiTool.title && { title: openapiTool.title },
|
|
1057
1066
|
description: openapiTool.description,
|
|
1058
1067
|
inputSchema: schemaResult.schema.shape || {},
|
|
1059
1068
|
rawInputSchema: openapiTool.inputSchema,
|
|
1060
1069
|
// Add output schema for tool/list to expose (only if not moved to description)
|
|
1061
|
-
...wrappedOutputSchema && { rawOutputSchema: wrappedOutputSchema }
|
|
1070
|
+
...wrappedOutputSchema && { rawOutputSchema: wrappedOutputSchema },
|
|
1071
|
+
...openapiTool.annotations && { annotations: { ...openapiTool.annotations } },
|
|
1072
|
+
...openapiTool.icons?.length && { icons: openapiTool.icons.map((icon) => ({ ...icon })) },
|
|
1073
|
+
...openapiTool._meta && { _meta: { ...openapiTool._meta } }
|
|
1062
1074
|
};
|
|
1063
1075
|
if (schemaResult.conversionFailed) {
|
|
1064
1076
|
toolMetadata["_schemaConversionFailed"] = true;
|
|
@@ -1066,7 +1078,10 @@ function createOpenApiTool(openapiTool, options, logger) {
|
|
|
1066
1078
|
}
|
|
1067
1079
|
if (frontmcpExt) {
|
|
1068
1080
|
if (frontmcpExt.annotations) {
|
|
1069
|
-
toolMetadata["annotations"] = {
|
|
1081
|
+
toolMetadata["annotations"] = {
|
|
1082
|
+
...toolMetadata["annotations"] || {},
|
|
1083
|
+
...frontmcpExt.annotations
|
|
1084
|
+
};
|
|
1070
1085
|
}
|
|
1071
1086
|
if (frontmcpExt.tags) {
|
|
1072
1087
|
toolMetadata["tags"] = [...frontmcpExt.tags];
|
|
@@ -1106,16 +1121,20 @@ function createOpenApiTool(openapiTool, options, logger) {
|
|
|
1106
1121
|
}
|
|
1107
1122
|
return (0, import_sdk4.tool)(toolMetadata)(async (input, toolCtx) => {
|
|
1108
1123
|
const ctx = toolCtx.context;
|
|
1124
|
+
const modelInput = omitKeys(input, serverFilledKeys);
|
|
1125
|
+
if (argumentCheck && !argumentCheck.conversionFailed) {
|
|
1126
|
+
const validation = argumentCheck.schema.safeParse(modelInput);
|
|
1127
|
+
if (!validation.success) {
|
|
1128
|
+
const problems = validation.error.issues.map((issue) => `${issue.path.join(".") || "input"}: ${issue.message}`);
|
|
1129
|
+
throw new import_sdk4.InvalidInputError(`Invalid arguments for tool '${openapiTool.name}': ${problems.join("; ")}`);
|
|
1130
|
+
}
|
|
1131
|
+
}
|
|
1109
1132
|
const transformContext = {
|
|
1110
1133
|
ctx,
|
|
1111
1134
|
env: process.env,
|
|
1112
1135
|
tool: openapiTool
|
|
1113
1136
|
};
|
|
1114
|
-
const injectedInput = await injectTransformedValues(
|
|
1115
|
-
input,
|
|
1116
|
-
inputTransforms,
|
|
1117
|
-
transformContext
|
|
1118
|
-
);
|
|
1137
|
+
const injectedInput = await injectTransformedValues(modelInput, inputTransforms, transformContext);
|
|
1119
1138
|
const security = await resolveToolSecurity(openapiTool, ctx, options, {
|
|
1120
1139
|
input: injectedInput,
|
|
1121
1140
|
deferCredentialCheck: true
|
|
@@ -1300,6 +1319,10 @@ async function safeInject(transform, ctx, timeoutMs = DEFAULT_TRANSFORM_TIMEOUT_
|
|
|
1300
1319
|
function isPlainObject(value) {
|
|
1301
1320
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
1302
1321
|
}
|
|
1322
|
+
function omitKeys(input, keys) {
|
|
1323
|
+
if (keys.size === 0 || !isPlainObject(input)) return input;
|
|
1324
|
+
return Object.fromEntries(Object.entries(input).filter(([key]) => !keys.has(key)));
|
|
1325
|
+
}
|
|
1303
1326
|
async function injectTransformedValues(input, transforms, ctx) {
|
|
1304
1327
|
if (!isPlainObject(input)) {
|
|
1305
1328
|
throw new Error(`Invalid input type: expected object, got ${input === null ? "null" : typeof input}`);
|
|
@@ -1319,6 +1342,64 @@ async function injectTransformedValues(input, transforms, ctx) {
|
|
|
1319
1342
|
}
|
|
1320
1343
|
return result;
|
|
1321
1344
|
}
|
|
1345
|
+
var SUBSCHEMA_KEYWORDS = [
|
|
1346
|
+
"items",
|
|
1347
|
+
"additionalProperties",
|
|
1348
|
+
"not",
|
|
1349
|
+
"if",
|
|
1350
|
+
"then",
|
|
1351
|
+
"else",
|
|
1352
|
+
"contains",
|
|
1353
|
+
"propertyNames",
|
|
1354
|
+
"unevaluatedItems",
|
|
1355
|
+
"unevaluatedProperties"
|
|
1356
|
+
];
|
|
1357
|
+
var SUBSCHEMA_LIST_KEYWORDS = ["allOf", "anyOf", "prefixItems"];
|
|
1358
|
+
var SUBSCHEMA_MAP_KEYWORDS = ["properties", "patternProperties", "dependentSchemas", "$defs", "definitions"];
|
|
1359
|
+
function toArgumentJsonSchema(openapiTool) {
|
|
1360
|
+
const argumentSchema = relaxSchema(openapiTool.inputSchema);
|
|
1361
|
+
const credentialKeys = new Set(
|
|
1362
|
+
openapiTool.mapper.filter((mapper) => mapper.security).map((mapper) => mapper.inputKey)
|
|
1363
|
+
);
|
|
1364
|
+
const required = argumentSchema["required"];
|
|
1365
|
+
if (Array.isArray(required)) {
|
|
1366
|
+
argumentSchema["required"] = required.filter((key) => !credentialKeys.has(key));
|
|
1367
|
+
}
|
|
1368
|
+
return argumentSchema;
|
|
1369
|
+
}
|
|
1370
|
+
function relaxSchema(schema) {
|
|
1371
|
+
if (Array.isArray(schema)) return schema.map(relaxSchema);
|
|
1372
|
+
if (typeof schema !== "object" || schema === null) return schema;
|
|
1373
|
+
const relaxed = { ...schema };
|
|
1374
|
+
delete relaxed["format"];
|
|
1375
|
+
for (const keyword of SUBSCHEMA_KEYWORDS) {
|
|
1376
|
+
if (keyword in relaxed) relaxed[keyword] = relaxSchema(relaxed[keyword]);
|
|
1377
|
+
}
|
|
1378
|
+
for (const keyword of SUBSCHEMA_LIST_KEYWORDS) {
|
|
1379
|
+
const subschemas = relaxed[keyword];
|
|
1380
|
+
if (Array.isArray(subschemas)) relaxed[keyword] = subschemas.map(relaxSchema);
|
|
1381
|
+
}
|
|
1382
|
+
for (const keyword of SUBSCHEMA_MAP_KEYWORDS) {
|
|
1383
|
+
const subschemasByName = relaxed[keyword];
|
|
1384
|
+
if (typeof subschemasByName === "object" && subschemasByName !== null) {
|
|
1385
|
+
relaxed[keyword] = Object.fromEntries(
|
|
1386
|
+
Object.entries(subschemasByName).map(([name, subschema]) => [name, relaxSchema(subschema)])
|
|
1387
|
+
);
|
|
1388
|
+
}
|
|
1389
|
+
}
|
|
1390
|
+
const exclusiveBranches = relaxed["oneOf"];
|
|
1391
|
+
if (Array.isArray(exclusiveBranches)) {
|
|
1392
|
+
delete relaxed["oneOf"];
|
|
1393
|
+
const branches = exclusiveBranches.map(relaxSchema);
|
|
1394
|
+
if (Array.isArray(relaxed["anyOf"])) {
|
|
1395
|
+
const allOf = Array.isArray(relaxed["allOf"]) ? relaxed["allOf"] : [];
|
|
1396
|
+
relaxed["allOf"] = [...allOf, { anyOf: branches }];
|
|
1397
|
+
} else {
|
|
1398
|
+
relaxed["anyOf"] = branches;
|
|
1399
|
+
}
|
|
1400
|
+
}
|
|
1401
|
+
return relaxed;
|
|
1402
|
+
}
|
|
1322
1403
|
function getZodSchemaFromJsonSchema(jsonSchema, toolName, logger) {
|
|
1323
1404
|
if (typeof jsonSchema !== "object" || jsonSchema === null) {
|
|
1324
1405
|
logger.warn(`[${toolName}] No valid JSON schema provided, using permissive schema`);
|
|
@@ -1346,6 +1427,18 @@ function getZodSchemaFromJsonSchema(jsonSchema, toolName, logger) {
|
|
|
1346
1427
|
|
|
1347
1428
|
// libs/adapters/src/openapi/openapi.adapter.ts
|
|
1348
1429
|
var RESERVED_KEYS2 = ["__proto__", "constructor", "prototype"];
|
|
1430
|
+
var HTTP_METHODS = ["get", "post", "put", "patch", "delete", "head", "options", "trace"];
|
|
1431
|
+
function normalizeMethods(adapterName, optionName, methods) {
|
|
1432
|
+
return methods?.map((method) => {
|
|
1433
|
+
const lowerMethod = method.toLowerCase();
|
|
1434
|
+
if (!HTTP_METHODS.includes(lowerMethod)) {
|
|
1435
|
+
throw new Error(
|
|
1436
|
+
`[OpenAPI Adapter: ${adapterName}] generateOptions.${optionName} lists "${method}", which is not an HTTP method; use one of ${HTTP_METHODS.join(", ")}.`
|
|
1437
|
+
);
|
|
1438
|
+
}
|
|
1439
|
+
return lowerMethod;
|
|
1440
|
+
});
|
|
1441
|
+
}
|
|
1349
1442
|
function createConsoleLogger(prefix) {
|
|
1350
1443
|
const formatMessage = (level, msg) => `[${prefix}] ${level}: ${msg}`;
|
|
1351
1444
|
return {
|
|
@@ -1364,9 +1457,14 @@ var OpenapiAdapter = class extends import_sdk5.DynamicAdapter {
|
|
|
1364
1457
|
poller = null;
|
|
1365
1458
|
updateCallbacks = /* @__PURE__ */ new Set();
|
|
1366
1459
|
rebuildChain = Promise.resolve();
|
|
1460
|
+
methodFilters;
|
|
1367
1461
|
constructor(options) {
|
|
1368
1462
|
super();
|
|
1369
1463
|
this.options = options;
|
|
1464
|
+
this.methodFilters = {
|
|
1465
|
+
includeMethods: normalizeMethods(options.name, "includeMethods", options.generateOptions?.includeMethods),
|
|
1466
|
+
excludeMethods: normalizeMethods(options.name, "excludeMethods", options.generateOptions?.excludeMethods)
|
|
1467
|
+
};
|
|
1370
1468
|
this.logger = options.logger ?? createConsoleLogger(`openapi:${options.name}`);
|
|
1371
1469
|
if (options.polling?.enabled && !("url" in options)) {
|
|
1372
1470
|
throw new Error(
|
|
@@ -1390,6 +1488,8 @@ var OpenapiAdapter = class extends import_sdk5.DynamicAdapter {
|
|
|
1390
1488
|
const generateOptions = this.options.generateOptions;
|
|
1391
1489
|
let openapiTools = await this.generator.generateTools({
|
|
1392
1490
|
...generateOptions,
|
|
1491
|
+
...this.methodFilters,
|
|
1492
|
+
filterFn: this.operationFilter(),
|
|
1393
1493
|
preferredStatusCodes: generateOptions?.preferredStatusCodes ?? [200, 201, 202, 204],
|
|
1394
1494
|
includeDeprecated: generateOptions?.includeDeprecated ?? false,
|
|
1395
1495
|
includeAllResponses: generateOptions?.includeAllResponses ?? true,
|
|
@@ -1475,28 +1575,31 @@ var OpenapiAdapter = class extends import_sdk5.DynamicAdapter {
|
|
|
1475
1575
|
resolveRefResolution() {
|
|
1476
1576
|
return this.options.loadOptions?.refResolution ?? { allowedProtocols: [] };
|
|
1477
1577
|
}
|
|
1578
|
+
/**
|
|
1579
|
+
* `generateOptions.filterFn`, and with `includeOperations` set, only the operations it names: the
|
|
1580
|
+
* generator lets an operation with no `operationId` through that list.
|
|
1581
|
+
*/
|
|
1582
|
+
operationFilter() {
|
|
1583
|
+
const { includeOperations, filterFn } = this.options.generateOptions ?? {};
|
|
1584
|
+
if (!includeOperations) return filterFn;
|
|
1585
|
+
return (operation) => operation.operationId !== void 0 && includeOperations.includes(operation.operationId) && (filterFn?.(operation) ?? true);
|
|
1586
|
+
}
|
|
1478
1587
|
async initializeGenerator() {
|
|
1479
|
-
const
|
|
1588
|
+
const loadOptions = {
|
|
1589
|
+
...this.options.loadOptions,
|
|
1590
|
+
baseUrl: this.options.baseUrl,
|
|
1591
|
+
validate: this.options.loadOptions?.validate ?? true,
|
|
1592
|
+
dereference: this.options.loadOptions?.dereference ?? true,
|
|
1593
|
+
// SECURITY: do not follow spec-URL redirects by default — a 3xx to an
|
|
1594
|
+
// internal target would otherwise be fetched. With mcp-from-openapi
|
|
1595
|
+
// ≥ 2.5.0 each hop is re-validated; opt in with loadOptions.followRedirects.
|
|
1596
|
+
followRedirects: this.options.loadOptions?.followRedirects ?? false,
|
|
1597
|
+
refResolution: this.resolveRefResolution()
|
|
1598
|
+
};
|
|
1480
1599
|
if ("url" in this.options) {
|
|
1481
|
-
return await import_mcp_from_openapi3.OpenAPIToolGenerator.fromURL(this.options.url,
|
|
1482
|
-
baseUrl: this.options.baseUrl,
|
|
1483
|
-
validate: this.options.loadOptions?.validate ?? true,
|
|
1484
|
-
dereference: this.options.loadOptions?.dereference ?? true,
|
|
1485
|
-
headers: this.options.loadOptions?.headers,
|
|
1486
|
-
timeout: this.options.loadOptions?.timeout,
|
|
1487
|
-
// SECURITY: do not follow spec-URL redirects by default — a 3xx to an
|
|
1488
|
-
// internal target would otherwise be fetched. With mcp-from-openapi
|
|
1489
|
-
// ≥ 2.5.0 each hop is re-validated; opt in with loadOptions.followRedirects.
|
|
1490
|
-
followRedirects: this.options.loadOptions?.followRedirects ?? false,
|
|
1491
|
-
refResolution
|
|
1492
|
-
});
|
|
1600
|
+
return await import_mcp_from_openapi3.OpenAPIToolGenerator.fromURL(this.options.url, loadOptions);
|
|
1493
1601
|
} else if ("spec" in this.options) {
|
|
1494
|
-
return await import_mcp_from_openapi3.OpenAPIToolGenerator.fromJSON(this.options.spec,
|
|
1495
|
-
baseUrl: this.options.baseUrl,
|
|
1496
|
-
validate: this.options.loadOptions?.validate ?? true,
|
|
1497
|
-
dereference: this.options.loadOptions?.dereference ?? true,
|
|
1498
|
-
refResolution
|
|
1499
|
-
});
|
|
1602
|
+
return await import_mcp_from_openapi3.OpenAPIToolGenerator.fromJSON(this.options.spec, loadOptions);
|
|
1500
1603
|
} else {
|
|
1501
1604
|
throw new Error("Either url or spec must be provided in OpenApiAdapterOptions");
|
|
1502
1605
|
}
|
package/openapi/index.js
CHANGED
|
@@ -683,7 +683,9 @@ var KNOWN_EXTENSION_FIELDS = /* @__PURE__ */ new Set([
|
|
|
683
683
|
"codecall",
|
|
684
684
|
"tags",
|
|
685
685
|
"hideFromDiscovery",
|
|
686
|
-
"examples"
|
|
686
|
+
"examples",
|
|
687
|
+
"meta",
|
|
688
|
+
"icons"
|
|
687
689
|
]);
|
|
688
690
|
var KNOWN_ANNOTATION_FIELDS = /* @__PURE__ */ new Set([
|
|
689
691
|
"title",
|
|
@@ -907,6 +909,10 @@ function appendCookie(headers, name, value) {
|
|
|
907
909
|
const combined = existing ? `${existing}; ${cookiePair}` : cookiePair;
|
|
908
910
|
headers.set("Cookie", combined);
|
|
909
911
|
}
|
|
912
|
+
function specDefault(tool2, inputKey) {
|
|
913
|
+
const property = tool2.inputSchema.properties?.[inputKey];
|
|
914
|
+
return typeof property === "object" ? property.default : void 0;
|
|
915
|
+
}
|
|
910
916
|
function buildRequest(tool2, input, security, baseUrl) {
|
|
911
917
|
const rawBaseUrl = tool2.metadata.servers?.[0]?.url || baseUrl;
|
|
912
918
|
(0, import_utils2.validateBaseUrl)(rawBaseUrl);
|
|
@@ -920,7 +926,7 @@ function buildRequest(tool2, input, security, baseUrl) {
|
|
|
920
926
|
let body;
|
|
921
927
|
for (const mapper of tool2.mapper) {
|
|
922
928
|
if (mapper.security) continue;
|
|
923
|
-
const value = input[mapper.inputKey];
|
|
929
|
+
const value = input[mapper.inputKey] ?? (mapper.required ? specDefault(tool2, mapper.inputKey) : void 0);
|
|
924
930
|
if (value === void 0 || value === null) {
|
|
925
931
|
if (mapper.required) {
|
|
926
932
|
throw new Error(
|
|
@@ -1034,9 +1040,11 @@ function createOpenApiTool(openapiTool, options, logger) {
|
|
|
1034
1040
|
const inputTransforms = metadata.adapter?.inputTransforms ?? [];
|
|
1035
1041
|
const toolTransform = metadata.adapter?.toolTransform ?? {};
|
|
1036
1042
|
const postToolTransform = metadata.adapter?.postToolTransform;
|
|
1043
|
+
const serverFilledKeys = new Set(inputTransforms.map((transform) => transform.inputKey));
|
|
1037
1044
|
const frontmcpValidation = validateFrontMcpExtension(metadata.frontmcp, openapiTool.name, logger);
|
|
1038
1045
|
const frontmcpExt = frontmcpValidation.data;
|
|
1039
1046
|
const schemaResult = getZodSchemaFromJsonSchema(openapiTool.inputSchema, openapiTool.name, logger);
|
|
1047
|
+
const argumentCheck = schemaResult.conversionFailed ? void 0 : getZodSchemaFromJsonSchema(toArgumentJsonSchema(openapiTool), openapiTool.name, logger);
|
|
1040
1048
|
let wrappedOutputSchema;
|
|
1041
1049
|
if (openapiTool.outputSchema !== void 0) {
|
|
1042
1050
|
const baseOutputSchema = openapiTool.outputSchema ?? { type: "string" };
|
|
@@ -1054,11 +1062,15 @@ function createOpenApiTool(openapiTool, options, logger) {
|
|
|
1054
1062
|
const toolMetadata = {
|
|
1055
1063
|
id: openapiTool.name,
|
|
1056
1064
|
name: openapiTool.name,
|
|
1065
|
+
...openapiTool.title && { title: openapiTool.title },
|
|
1057
1066
|
description: openapiTool.description,
|
|
1058
1067
|
inputSchema: schemaResult.schema.shape || {},
|
|
1059
1068
|
rawInputSchema: openapiTool.inputSchema,
|
|
1060
1069
|
// Add output schema for tool/list to expose (only if not moved to description)
|
|
1061
|
-
...wrappedOutputSchema && { rawOutputSchema: wrappedOutputSchema }
|
|
1070
|
+
...wrappedOutputSchema && { rawOutputSchema: wrappedOutputSchema },
|
|
1071
|
+
...openapiTool.annotations && { annotations: { ...openapiTool.annotations } },
|
|
1072
|
+
...openapiTool.icons?.length && { icons: openapiTool.icons.map((icon) => ({ ...icon })) },
|
|
1073
|
+
...openapiTool._meta && { _meta: { ...openapiTool._meta } }
|
|
1062
1074
|
};
|
|
1063
1075
|
if (schemaResult.conversionFailed) {
|
|
1064
1076
|
toolMetadata["_schemaConversionFailed"] = true;
|
|
@@ -1066,7 +1078,10 @@ function createOpenApiTool(openapiTool, options, logger) {
|
|
|
1066
1078
|
}
|
|
1067
1079
|
if (frontmcpExt) {
|
|
1068
1080
|
if (frontmcpExt.annotations) {
|
|
1069
|
-
toolMetadata["annotations"] = {
|
|
1081
|
+
toolMetadata["annotations"] = {
|
|
1082
|
+
...toolMetadata["annotations"] || {},
|
|
1083
|
+
...frontmcpExt.annotations
|
|
1084
|
+
};
|
|
1070
1085
|
}
|
|
1071
1086
|
if (frontmcpExt.tags) {
|
|
1072
1087
|
toolMetadata["tags"] = [...frontmcpExt.tags];
|
|
@@ -1106,16 +1121,20 @@ function createOpenApiTool(openapiTool, options, logger) {
|
|
|
1106
1121
|
}
|
|
1107
1122
|
return (0, import_sdk4.tool)(toolMetadata)(async (input, toolCtx) => {
|
|
1108
1123
|
const ctx = toolCtx.context;
|
|
1124
|
+
const modelInput = omitKeys(input, serverFilledKeys);
|
|
1125
|
+
if (argumentCheck && !argumentCheck.conversionFailed) {
|
|
1126
|
+
const validation = argumentCheck.schema.safeParse(modelInput);
|
|
1127
|
+
if (!validation.success) {
|
|
1128
|
+
const problems = validation.error.issues.map((issue) => `${issue.path.join(".") || "input"}: ${issue.message}`);
|
|
1129
|
+
throw new import_sdk4.InvalidInputError(`Invalid arguments for tool '${openapiTool.name}': ${problems.join("; ")}`);
|
|
1130
|
+
}
|
|
1131
|
+
}
|
|
1109
1132
|
const transformContext = {
|
|
1110
1133
|
ctx,
|
|
1111
1134
|
env: process.env,
|
|
1112
1135
|
tool: openapiTool
|
|
1113
1136
|
};
|
|
1114
|
-
const injectedInput = await injectTransformedValues(
|
|
1115
|
-
input,
|
|
1116
|
-
inputTransforms,
|
|
1117
|
-
transformContext
|
|
1118
|
-
);
|
|
1137
|
+
const injectedInput = await injectTransformedValues(modelInput, inputTransforms, transformContext);
|
|
1119
1138
|
const security = await resolveToolSecurity(openapiTool, ctx, options, {
|
|
1120
1139
|
input: injectedInput,
|
|
1121
1140
|
deferCredentialCheck: true
|
|
@@ -1300,6 +1319,10 @@ async function safeInject(transform, ctx, timeoutMs = DEFAULT_TRANSFORM_TIMEOUT_
|
|
|
1300
1319
|
function isPlainObject(value) {
|
|
1301
1320
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
1302
1321
|
}
|
|
1322
|
+
function omitKeys(input, keys) {
|
|
1323
|
+
if (keys.size === 0 || !isPlainObject(input)) return input;
|
|
1324
|
+
return Object.fromEntries(Object.entries(input).filter(([key]) => !keys.has(key)));
|
|
1325
|
+
}
|
|
1303
1326
|
async function injectTransformedValues(input, transforms, ctx) {
|
|
1304
1327
|
if (!isPlainObject(input)) {
|
|
1305
1328
|
throw new Error(`Invalid input type: expected object, got ${input === null ? "null" : typeof input}`);
|
|
@@ -1319,6 +1342,64 @@ async function injectTransformedValues(input, transforms, ctx) {
|
|
|
1319
1342
|
}
|
|
1320
1343
|
return result;
|
|
1321
1344
|
}
|
|
1345
|
+
var SUBSCHEMA_KEYWORDS = [
|
|
1346
|
+
"items",
|
|
1347
|
+
"additionalProperties",
|
|
1348
|
+
"not",
|
|
1349
|
+
"if",
|
|
1350
|
+
"then",
|
|
1351
|
+
"else",
|
|
1352
|
+
"contains",
|
|
1353
|
+
"propertyNames",
|
|
1354
|
+
"unevaluatedItems",
|
|
1355
|
+
"unevaluatedProperties"
|
|
1356
|
+
];
|
|
1357
|
+
var SUBSCHEMA_LIST_KEYWORDS = ["allOf", "anyOf", "prefixItems"];
|
|
1358
|
+
var SUBSCHEMA_MAP_KEYWORDS = ["properties", "patternProperties", "dependentSchemas", "$defs", "definitions"];
|
|
1359
|
+
function toArgumentJsonSchema(openapiTool) {
|
|
1360
|
+
const argumentSchema = relaxSchema(openapiTool.inputSchema);
|
|
1361
|
+
const credentialKeys = new Set(
|
|
1362
|
+
openapiTool.mapper.filter((mapper) => mapper.security).map((mapper) => mapper.inputKey)
|
|
1363
|
+
);
|
|
1364
|
+
const required = argumentSchema["required"];
|
|
1365
|
+
if (Array.isArray(required)) {
|
|
1366
|
+
argumentSchema["required"] = required.filter((key) => !credentialKeys.has(key));
|
|
1367
|
+
}
|
|
1368
|
+
return argumentSchema;
|
|
1369
|
+
}
|
|
1370
|
+
function relaxSchema(schema) {
|
|
1371
|
+
if (Array.isArray(schema)) return schema.map(relaxSchema);
|
|
1372
|
+
if (typeof schema !== "object" || schema === null) return schema;
|
|
1373
|
+
const relaxed = { ...schema };
|
|
1374
|
+
delete relaxed["format"];
|
|
1375
|
+
for (const keyword of SUBSCHEMA_KEYWORDS) {
|
|
1376
|
+
if (keyword in relaxed) relaxed[keyword] = relaxSchema(relaxed[keyword]);
|
|
1377
|
+
}
|
|
1378
|
+
for (const keyword of SUBSCHEMA_LIST_KEYWORDS) {
|
|
1379
|
+
const subschemas = relaxed[keyword];
|
|
1380
|
+
if (Array.isArray(subschemas)) relaxed[keyword] = subschemas.map(relaxSchema);
|
|
1381
|
+
}
|
|
1382
|
+
for (const keyword of SUBSCHEMA_MAP_KEYWORDS) {
|
|
1383
|
+
const subschemasByName = relaxed[keyword];
|
|
1384
|
+
if (typeof subschemasByName === "object" && subschemasByName !== null) {
|
|
1385
|
+
relaxed[keyword] = Object.fromEntries(
|
|
1386
|
+
Object.entries(subschemasByName).map(([name, subschema]) => [name, relaxSchema(subschema)])
|
|
1387
|
+
);
|
|
1388
|
+
}
|
|
1389
|
+
}
|
|
1390
|
+
const exclusiveBranches = relaxed["oneOf"];
|
|
1391
|
+
if (Array.isArray(exclusiveBranches)) {
|
|
1392
|
+
delete relaxed["oneOf"];
|
|
1393
|
+
const branches = exclusiveBranches.map(relaxSchema);
|
|
1394
|
+
if (Array.isArray(relaxed["anyOf"])) {
|
|
1395
|
+
const allOf = Array.isArray(relaxed["allOf"]) ? relaxed["allOf"] : [];
|
|
1396
|
+
relaxed["allOf"] = [...allOf, { anyOf: branches }];
|
|
1397
|
+
} else {
|
|
1398
|
+
relaxed["anyOf"] = branches;
|
|
1399
|
+
}
|
|
1400
|
+
}
|
|
1401
|
+
return relaxed;
|
|
1402
|
+
}
|
|
1322
1403
|
function getZodSchemaFromJsonSchema(jsonSchema, toolName, logger) {
|
|
1323
1404
|
if (typeof jsonSchema !== "object" || jsonSchema === null) {
|
|
1324
1405
|
logger.warn(`[${toolName}] No valid JSON schema provided, using permissive schema`);
|
|
@@ -1346,6 +1427,18 @@ function getZodSchemaFromJsonSchema(jsonSchema, toolName, logger) {
|
|
|
1346
1427
|
|
|
1347
1428
|
// libs/adapters/src/openapi/openapi.adapter.ts
|
|
1348
1429
|
var RESERVED_KEYS2 = ["__proto__", "constructor", "prototype"];
|
|
1430
|
+
var HTTP_METHODS = ["get", "post", "put", "patch", "delete", "head", "options", "trace"];
|
|
1431
|
+
function normalizeMethods(adapterName, optionName, methods) {
|
|
1432
|
+
return methods?.map((method) => {
|
|
1433
|
+
const lowerMethod = method.toLowerCase();
|
|
1434
|
+
if (!HTTP_METHODS.includes(lowerMethod)) {
|
|
1435
|
+
throw new Error(
|
|
1436
|
+
`[OpenAPI Adapter: ${adapterName}] generateOptions.${optionName} lists "${method}", which is not an HTTP method; use one of ${HTTP_METHODS.join(", ")}.`
|
|
1437
|
+
);
|
|
1438
|
+
}
|
|
1439
|
+
return lowerMethod;
|
|
1440
|
+
});
|
|
1441
|
+
}
|
|
1349
1442
|
function createConsoleLogger(prefix) {
|
|
1350
1443
|
const formatMessage = (level, msg) => `[${prefix}] ${level}: ${msg}`;
|
|
1351
1444
|
return {
|
|
@@ -1364,9 +1457,14 @@ var OpenapiAdapter = class extends import_sdk5.DynamicAdapter {
|
|
|
1364
1457
|
poller = null;
|
|
1365
1458
|
updateCallbacks = /* @__PURE__ */ new Set();
|
|
1366
1459
|
rebuildChain = Promise.resolve();
|
|
1460
|
+
methodFilters;
|
|
1367
1461
|
constructor(options) {
|
|
1368
1462
|
super();
|
|
1369
1463
|
this.options = options;
|
|
1464
|
+
this.methodFilters = {
|
|
1465
|
+
includeMethods: normalizeMethods(options.name, "includeMethods", options.generateOptions?.includeMethods),
|
|
1466
|
+
excludeMethods: normalizeMethods(options.name, "excludeMethods", options.generateOptions?.excludeMethods)
|
|
1467
|
+
};
|
|
1370
1468
|
this.logger = options.logger ?? createConsoleLogger(`openapi:${options.name}`);
|
|
1371
1469
|
if (options.polling?.enabled && !("url" in options)) {
|
|
1372
1470
|
throw new Error(
|
|
@@ -1390,6 +1488,8 @@ var OpenapiAdapter = class extends import_sdk5.DynamicAdapter {
|
|
|
1390
1488
|
const generateOptions = this.options.generateOptions;
|
|
1391
1489
|
let openapiTools = await this.generator.generateTools({
|
|
1392
1490
|
...generateOptions,
|
|
1491
|
+
...this.methodFilters,
|
|
1492
|
+
filterFn: this.operationFilter(),
|
|
1393
1493
|
preferredStatusCodes: generateOptions?.preferredStatusCodes ?? [200, 201, 202, 204],
|
|
1394
1494
|
includeDeprecated: generateOptions?.includeDeprecated ?? false,
|
|
1395
1495
|
includeAllResponses: generateOptions?.includeAllResponses ?? true,
|
|
@@ -1475,28 +1575,31 @@ var OpenapiAdapter = class extends import_sdk5.DynamicAdapter {
|
|
|
1475
1575
|
resolveRefResolution() {
|
|
1476
1576
|
return this.options.loadOptions?.refResolution ?? { allowedProtocols: [] };
|
|
1477
1577
|
}
|
|
1578
|
+
/**
|
|
1579
|
+
* `generateOptions.filterFn`, and with `includeOperations` set, only the operations it names: the
|
|
1580
|
+
* generator lets an operation with no `operationId` through that list.
|
|
1581
|
+
*/
|
|
1582
|
+
operationFilter() {
|
|
1583
|
+
const { includeOperations, filterFn } = this.options.generateOptions ?? {};
|
|
1584
|
+
if (!includeOperations) return filterFn;
|
|
1585
|
+
return (operation) => operation.operationId !== void 0 && includeOperations.includes(operation.operationId) && (filterFn?.(operation) ?? true);
|
|
1586
|
+
}
|
|
1478
1587
|
async initializeGenerator() {
|
|
1479
|
-
const
|
|
1588
|
+
const loadOptions = {
|
|
1589
|
+
...this.options.loadOptions,
|
|
1590
|
+
baseUrl: this.options.baseUrl,
|
|
1591
|
+
validate: this.options.loadOptions?.validate ?? true,
|
|
1592
|
+
dereference: this.options.loadOptions?.dereference ?? true,
|
|
1593
|
+
// SECURITY: do not follow spec-URL redirects by default — a 3xx to an
|
|
1594
|
+
// internal target would otherwise be fetched. With mcp-from-openapi
|
|
1595
|
+
// ≥ 2.5.0 each hop is re-validated; opt in with loadOptions.followRedirects.
|
|
1596
|
+
followRedirects: this.options.loadOptions?.followRedirects ?? false,
|
|
1597
|
+
refResolution: this.resolveRefResolution()
|
|
1598
|
+
};
|
|
1480
1599
|
if ("url" in this.options) {
|
|
1481
|
-
return await import_mcp_from_openapi3.OpenAPIToolGenerator.fromURL(this.options.url,
|
|
1482
|
-
baseUrl: this.options.baseUrl,
|
|
1483
|
-
validate: this.options.loadOptions?.validate ?? true,
|
|
1484
|
-
dereference: this.options.loadOptions?.dereference ?? true,
|
|
1485
|
-
headers: this.options.loadOptions?.headers,
|
|
1486
|
-
timeout: this.options.loadOptions?.timeout,
|
|
1487
|
-
// SECURITY: do not follow spec-URL redirects by default — a 3xx to an
|
|
1488
|
-
// internal target would otherwise be fetched. With mcp-from-openapi
|
|
1489
|
-
// ≥ 2.5.0 each hop is re-validated; opt in with loadOptions.followRedirects.
|
|
1490
|
-
followRedirects: this.options.loadOptions?.followRedirects ?? false,
|
|
1491
|
-
refResolution
|
|
1492
|
-
});
|
|
1600
|
+
return await import_mcp_from_openapi3.OpenAPIToolGenerator.fromURL(this.options.url, loadOptions);
|
|
1493
1601
|
} else if ("spec" in this.options) {
|
|
1494
|
-
return await import_mcp_from_openapi3.OpenAPIToolGenerator.fromJSON(this.options.spec,
|
|
1495
|
-
baseUrl: this.options.baseUrl,
|
|
1496
|
-
validate: this.options.loadOptions?.validate ?? true,
|
|
1497
|
-
dereference: this.options.loadOptions?.dereference ?? true,
|
|
1498
|
-
refResolution
|
|
1499
|
-
});
|
|
1602
|
+
return await import_mcp_from_openapi3.OpenAPIToolGenerator.fromJSON(this.options.spec, loadOptions);
|
|
1500
1603
|
} else {
|
|
1501
1604
|
throw new Error("Either url or spec must be provided in OpenApiAdapterOptions");
|
|
1502
1605
|
}
|
|
@@ -7,6 +7,7 @@ export default class OpenapiAdapter extends DynamicAdapter<OpenApiAdapterOptions
|
|
|
7
7
|
private poller;
|
|
8
8
|
private updateCallbacks;
|
|
9
9
|
private rebuildChain;
|
|
10
|
+
private readonly methodFilters;
|
|
10
11
|
constructor(options: OpenApiAdapterOptions);
|
|
11
12
|
/**
|
|
12
13
|
* Receive the SDK logger. Called by the SDK before fetch().
|
|
@@ -29,6 +30,11 @@ export default class OpenapiAdapter extends DynamicAdapter<OpenApiAdapterOptions
|
|
|
29
30
|
* @private
|
|
30
31
|
*/
|
|
31
32
|
private resolveRefResolution;
|
|
33
|
+
/**
|
|
34
|
+
* `generateOptions.filterFn`, and with `includeOperations` set, only the operations it names: the
|
|
35
|
+
* generator lets an operation with no `operationId` through that list.
|
|
36
|
+
*/
|
|
37
|
+
private operationFilter;
|
|
32
38
|
private initializeGenerator;
|
|
33
39
|
/**
|
|
34
40
|
* Apply description mode to generate description from summary/description
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openapi.adapter.d.ts","sourceRoot":"","sources":["../../src/openapi/openapi.adapter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"openapi.adapter.d.ts","sourceRoot":"","sources":["../../src/openapi/openapi.adapter.ts"],"names":[],"mappings":"AAOA,OAAO,EAAW,cAAc,EAAE,KAAK,uBAAuB,EAAE,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AAS3G,OAAO,EAIL,KAAK,qBAAqB,EAQ3B,MAAM,iBAAiB,CAAC;AA6CzB,MAAM,CAAC,OAAO,OAAO,cAAe,SAAQ,cAAc,CAAC,qBAAqB,CAAC;IAC/E,OAAO,CAAC,SAAS,CAAC,CAAuB;IACzC,OAAO,CAAC,MAAM,CAAiB;IACxB,OAAO,EAAE,qBAAqB,CAAC;IACtC,OAAO,CAAC,MAAM,CAAkC;IAChD,OAAO,CAAC,eAAe,CAA0D;IACjF,OAAO,CAAC,YAAY,CAAoC;IACxD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAG5B;gBAEU,OAAO,EAAE,qBAAqB;IAkB1C;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI;IAIjC,KAAK,IAAI,OAAO,CAAC,uBAAuB,CAAC;IAsH/C;;;OAGG;IACH;;;;;;;;;;OAUG;IACH,OAAO,CAAC,oBAAoB;IAI5B;;;OAGG;IACH,OAAO,CAAC,eAAe;YAST,mBAAmB;IAuBjC;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IA0C5B;;;OAGG;IACH,OAAO,CAAC,cAAc;IAMtB;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IA6D7B;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAsC3B;;;OAGG;IACH,OAAO,CAAC,wBAAwB;IAwBhC;;;;;OAKG;IACH,OAAO,CAAC,oBAAoB;IAoD5B;;;;;OAKG;IACH,OAAO,CAAC,qBAAqB;IA0D7B;;;;OAIG;IACH,OAAO,CAAC,qBAAqB;IA0C7B;;;OAGG;IACH,OAAO,CAAC,2BAA2B;IAkBnC;;;OAGG;IACH,OAAO,CAAC,4BAA4B;IAoBpC;;;;OAIG;YACW,wBAAwB;IAiFtC;;;OAGG;IACH,OAAO,CAAC,0BAA0B;IAgBlC;;;OAGG;IACH,OAAO,CAAC,0CAA0C;IA+BlD;;;OAGG;IACH,OAAO,CAAC,2CAA2C;IAyCnD;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAuB7B;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAiB3B;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,uBAAuB,KAAK,IAAI,GAAG,MAAM,IAAI;IAO3E;;;;OAIG;IACH,YAAY,IAAI,IAAI;IA6CpB;;OAEG;IACH,WAAW,IAAI,IAAI;CAOpB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openapi.frontmcp-schema.d.ts","sourceRoot":"","sources":["../../src/openapi/openapi.frontmcp-schema.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,oBAAoB,CAAC;AACvC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpD;;;GAGG;AACH,eAAO,MAAM,uBAAuB,EAAG,KAAc,CAAC;AAEtD;;GAEG;AACH,eAAO,MAAM,kBAAkB,kBAAmB,CAAC;AACnD,MAAM,MAAM,qBAAqB,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC;AAMxE;;GAEG;AACH,eAAO,MAAM,yBAAyB;;;;;;gCAWpC,CAAC;AAEH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAM5E;;GAEG;AACH,eAAO,MAAM,mBAAmB;;;gCAK9B,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAMhE;;GAEG;AACH,eAAO,MAAM,sBAAsB;;;gCAKjC,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAMtE;;GAEG;AACH,eAAO,MAAM,qBAAqB;;;;gCAOhC,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"openapi.frontmcp-schema.d.ts","sourceRoot":"","sources":["../../src/openapi/openapi.frontmcp-schema.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,oBAAoB,CAAC;AACvC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpD;;;GAGG;AACH,eAAO,MAAM,uBAAuB,EAAG,KAAc,CAAC;AAEtD;;GAEG;AACH,eAAO,MAAM,kBAAkB,kBAAmB,CAAC;AACnD,MAAM,MAAM,qBAAqB,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC;AAMxE;;GAEG;AACH,eAAO,MAAM,yBAAyB;;;;;;gCAWpC,CAAC;AAEH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAM5E;;GAEG;AACH,eAAO,MAAM,mBAAmB;;;gCAK9B,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAMhE;;GAEG;AACH,eAAO,MAAM,sBAAsB;;;gCAKjC,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAMtE;;GAEG;AACH,eAAO,MAAM,qBAAqB;;;;gCAOhC,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAkCpE;;;GAGG;AACH,MAAM,WAAW,0BAA0B;IACzC,OAAO,EAAE,qBAAqB,CAAC;IAC/B,WAAW,CAAC,EAAE,mBAAmB,CAAC;IAClC,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,EAAE,eAAe,EAAE,CAAC;CAC9B;AAMD,MAAM,WAAW,wBAAwB;IACvC,6DAA6D;IAC7D,OAAO,EAAE,OAAO,CAAC;IACjB,yCAAyC;IACzC,IAAI,EAAE,0BAA0B,GAAG,IAAI,CAAC;IACxC,6DAA6D;IAC7D,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAMD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,cAAc,GACrB,wBAAwB,CAwC1B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openapi.tool.d.ts","sourceRoot":"","sources":["../../src/openapi/openapi.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAGvD,OAAO,
|
|
1
|
+
{"version":3,"file":"openapi.tool.d.ts","sourceRoot":"","sources":["../../src/openapi/openapi.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAGvD,OAAO,EAA2B,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AAK7E,OAAO,KAAK,EAIV,qBAAqB,EAEtB,MAAM,iBAAiB,CAAC;AAMzB;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,cAAc,EAAE,OAAO,EAAE,qBAAqB,EAAE,MAAM,EAAE,cAAc,cA2UpH"}
|
|
@@ -1,7 +1,14 @@
|
|
|
1
|
-
import type { GenerateOptions, LoadOptions, McpOpenAPITool, SecurityContext, ToolMetadata } from 'mcp-from-openapi';
|
|
1
|
+
import type { GenerateOptions, HTTPMethod, LoadOptions, McpOpenAPITool, SecurityContext, ToolMetadata } from 'mcp-from-openapi';
|
|
2
2
|
import { type OpenAPIV3, type OpenAPIV3_1 } from 'openapi-types';
|
|
3
3
|
import type { FrontMcpContext, FrontMcpLogger, ToolAnnotations, ToolExample, ToolUIConfig } from '@frontmcp/sdk';
|
|
4
4
|
import type { SpecPollerOptions } from './openapi-spec-poller.types';
|
|
5
|
+
/** An HTTP method in any of its usual cases; `includeMethods` and `excludeMethods` ignore the case. */
|
|
6
|
+
export type OpenApiHttpMethod = HTTPMethod | Uppercase<HTTPMethod> | Capitalize<HTTPMethod>;
|
|
7
|
+
/** `GenerateOptions` from mcp-from-openapi, with method filters that take any case. */
|
|
8
|
+
export type OpenApiGenerateOptions = Omit<GenerateOptions, 'includeMethods' | 'excludeMethods'> & {
|
|
9
|
+
includeMethods?: OpenApiHttpMethod[];
|
|
10
|
+
excludeMethods?: OpenApiHttpMethod[];
|
|
11
|
+
};
|
|
5
12
|
/**
|
|
6
13
|
* Context available when injecting values at request time
|
|
7
14
|
*/
|
|
@@ -682,7 +689,7 @@ interface BaseOptions {
|
|
|
682
689
|
* Options for generating tools from the OpenAPI specification
|
|
683
690
|
* @see GenerateOptions from mcp-from-openapi
|
|
684
691
|
*/
|
|
685
|
-
generateOptions?:
|
|
692
|
+
generateOptions?: OpenApiGenerateOptions;
|
|
686
693
|
/**
|
|
687
694
|
* Specify which security schemes should be included in the tool's input schema.
|
|
688
695
|
* Use this for per-scheme control over authentication handling.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openapi.types.d.ts","sourceRoot":"","sources":["../../src/openapi/openapi.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"openapi.types.d.ts","sourceRoot":"","sources":["../../src/openapi/openapi.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,UAAU,EACV,WAAW,EACX,cAAc,EACd,eAAe,EACf,YAAY,EACb,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjE,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,eAAe,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAEjH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAErE,uGAAuG;AACvG,MAAM,MAAM,iBAAiB,GAAG,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;AAE5F,uFAAuF;AACvF,MAAM,MAAM,sBAAsB,GAAG,IAAI,CAAC,eAAe,EAAE,gBAAgB,GAAG,gBAAgB,CAAC,GAAG;IAChG,cAAc,CAAC,EAAE,iBAAiB,EAAE,CAAC;IACrC,cAAc,CAAC,EAAE,iBAAiB,EAAE,CAAC;CACtC,CAAC;AAMF;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,uEAAuE;IACvE,GAAG,EAAE,eAAe,CAAC;IACrB,4BAA4B;IAC5B,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IACvB,sCAAsC;IACtC,IAAI,EAAE,cAAc,CAAC;CACtB;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B;;;OAGG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,MAAM,EAAE,CAAC,GAAG,EAAE,qBAAqB,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACpE;AAED;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC;;;OAGG;IACH,MAAM,CAAC,EAAE,cAAc,EAAE,CAAC;IAE1B;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC,CAAC;IAE3C;;;;OAIG;IACH,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,cAAc,EAAE,CAAC;CACxD;AAMD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,sBAAsB,eAAe,CAAC;AAEnD;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC;;;OAGG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAE5B;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;;;;OAKG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,WAAW,CAAC,EAAE,mBAAmB,CAAC;IAElC;;OAEG;IACH,KAAK,CAAC,EAAE,mBAAmB,CAAC;IAE5B;;OAEG;IACH,QAAQ,CAAC,EAAE,sBAAsB,CAAC;IAElC;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAEhB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAE5B;;OAEG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC;QACf,WAAW,EAAE,MAAM,CAAC;QACpB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC/B,MAAM,CAAC,EAAE,OAAO,CAAC;KAClB,CAAC,CAAC;CACJ;AAMD;;;;;;GAMG;AACH,MAAM,MAAM,eAAe,GAAG,aAAa,GAAG,iBAAiB,GAAG,UAAU,GAAG,MAAM,CAAC;AAEtF;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,KAAK,MAAM,CAAC,CAAC;IAEzE;;;;;;;;;;;;;;OAcG;IACH,WAAW,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,mBAAmB,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,KAAK,MAAM,CAAC,CAAC;IAEvF;;;;;;;;;;;;;OAaG;IACH,WAAW,CAAC,EAAE,eAAe,CAAC;IAE9B;;OAEG;IACH,EAAE,CAAC,EAAE,YAAY,CAAC;IAElB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAE5B;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAEhB;;OAEG;IACH,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAC;CAC1B;AAED;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,MAAM,CAAC,EAAE,aAAa,CAAC;IAEvB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAExC;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,aAAa,GAAG,SAAS,CAAC;CACjE;AAMD;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAC5C,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,gBAAgB,GAAG,YAAY,GAAG,aAAa,GAAG,MAAM,CAAC;AAErE;;;;GAIG;AACH,MAAM,MAAM,qBAAqB,GAAG,YAAY,GAAG,SAAS,CAAC;AAE7D;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,yCAAyC;IACzC,IAAI,EAAE,cAAc,CAAC;IACrB,oCAAoC;IACpC,cAAc,EAAE,qBAAqB,CAAC;CACvC;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,uBAAuB;IACvB,IAAI,EAAE,cAAc,CAAC;IACrB,oCAAoC;IACpC,cAAc,EAAE,qBAAqB,CAAC;IACtC,oCAAoC;IACpC,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED;;;GAGG;AACH,MAAM,MAAM,0BAA0B,GAAG,CACvC,MAAM,EAAE,cAAc,EACtB,GAAG,EAAE,wBAAwB,KAC1B,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;AAE9B;;GAEG;AACH,MAAM,MAAM,iBAAiB,CAAC,CAAC,GAAG,cAAc,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,sBAAsB,KAAK,CAAC,CAAC;AAElG;;;GAGG;AACH,MAAM,WAAW,2BAA2B;IAC1C,4CAA4C;IAC5C,MAAM,CAAC,EAAE,iBAAiB,CAAC,cAAc,CAAC,CAAC;IAC3C,6CAA6C;IAC7C,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,cAAc,CAAC,CAAC,CAAC;IAC5D,kCAAkC;IAClC,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,iBAAiB,CAAC,cAAc,CAAC,GAAG,SAAS,CAAC;CACrF;AAED;;;GAGG;AACH,MAAM,WAAW,4BAA4B;IAC3C,4CAA4C;IAC5C,MAAM,CAAC,EAAE,iBAAiB,CAAC,cAAc,GAAG,SAAS,CAAC,CAAC;IACvD,6CAA6C;IAC7C,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,cAAc,GAAG,SAAS,CAAC,CAAC,CAAC;IACxE,kCAAkC;IAClC,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,iBAAiB,CAAC,cAAc,GAAG,SAAS,CAAC,GAAG,SAAS,CAAC;CACjG;AAED;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACrC;;;OAGG;IACH,KAAK,CAAC,EAAE,2BAA2B,CAAC;IAEpC;;;OAGG;IACH,MAAM,CAAC,EAAE,4BAA4B,CAAC;CACvC;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,gBAAgB,CAAC;IAExB;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,qBAAqB,CAAC;IAE1C;;;;OAIG;IACH,oBAAoB,CAAC,EAAE,0BAA0B,CAAC;CACnD;AAMD;;;GAGG;AACH,MAAM,WAAW,uBAAuB;IACtC,yCAAyC;IACzC,IAAI,EAAE,cAAc,CAAC;IACrB,oCAAoC;IACpC,cAAc,EAAE,qBAAqB,CAAC;CACvC;AAED;;;GAGG;AACH,MAAM,WAAW,wBAAwB;IACvC,+BAA+B;IAC/B,GAAG,EAAE,eAAe,CAAC;IACrB,yCAAyC;IACzC,IAAI,EAAE,cAAc,CAAC;IACrB,uBAAuB;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,sCAAsC;IACtC,EAAE,EAAE,OAAO,CAAC;IACZ,oCAAoC;IACpC,cAAc,EAAE,qBAAqB,CAAC;CACvC;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,eAAe,CAAC,EAAE,CAChB,YAAY,EAAE,cAAc,GAAG,SAAS,EACxC,GAAG,EAAE,uBAAuB,KACzB,cAAc,GAAG,SAAS,CAAC;IAEhC;;;OAGG;IACH,oBAAoB,CAAC,EAAE,CACrB,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,cAAc,GAAG,SAAS,EACxC,GAAG,EAAE,uBAAuB,KACzB,MAAM,CAAC;CACb;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;;;;;OAOG;IACH,SAAS,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,wBAAwB,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAExF;;;OAGG;IACH,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,wBAAwB,KAAK,OAAO,CAAC;CACrD;AAED;;;;;;GAMG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;;OAIG;IACH,iBAAiB,CAAC,EAAE;QAClB,4CAA4C;QAC5C,MAAM,CAAC,EAAE,gBAAgB,CAAC;QAC1B,6CAA6C;QAC7C,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;QAC3C,kCAAkC;QAClC,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,gBAAgB,GAAG,SAAS,CAAC;KACpE,CAAC;IAEF;;;OAGG;IACH,kBAAkB,CAAC,EAAE;QACnB,gDAAgD;QAChD,MAAM,CAAC,EAAE,iBAAiB,CAAC;QAC3B,6CAA6C;QAC7C,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;QAC5C,kCAAkC;QAClC,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,iBAAiB,GAAG,SAAS,CAAC;KACrE,CAAC;CACH;AAMD;;;;GAIG;AACH,MAAM,WAAW,oBAAqB,SAAQ,YAAY;IACxD;;;OAGG;IACH,OAAO,CAAC,EAAE;QACR,gDAAgD;QAChD,eAAe,CAAC,EAAE,cAAc,EAAE,CAAC;QACnC,mCAAmC;QACnC,aAAa,CAAC,EAAE,aAAa,CAAC;QAC9B,uEAAuE;QACvE,sBAAsB,CAAC,EAAE,MAAM,EAAE,CAAC;QAClC,wEAAwE;QACxE,0BAA0B,CAAC,EAAE,MAAM,EAAE,CAAC;QACtC,8CAA8C;QAC9C,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;QACpC,qDAAqD;QACrD,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;KACvC,CAAC;CACH;AAED;;;GAGG;AACH,MAAM,WAAW,sBAAuB,SAAQ,IAAI,CAAC,cAAc,EAAE,UAAU,CAAC;IAC9E,QAAQ,EAAE,oBAAoB,CAAC;CAChC;AAED,UAAU,WAAW;IACnB;;;;OAIG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;;;;;OAMG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAE3C;;;;;;;;OAQG;IACH,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,eAAe,EAAE,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC;IAEpE;;;;;;;;;OASG;IACH,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAE9F;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,cAAc,EAAE,GAAG,EAAE,eAAe,KAAK,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IAE9G;;;;;;;;;;;;;;;;;;OAkBG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,eAAe,KAAK,MAAM,GAAG,SAAS,CAAC,CAAC;IAElF;;;;;;;;;;;;;;OAcG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;IAEtC;;;;;;;;;;;;;;OAcG;IACH,sBAAsB,CAAC,EAAE,OAAO,CAAC;IAEjC;;;;;;;;;;OAUG;IACH,WAAW,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IAE3C;;;OAGG;IACH,eAAe,CAAC,EAAE,sBAAsB,CAAC;IAEzC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACH,sBAAsB,CAAC,EAAE,MAAM,EAAE,CAAC;IAElC;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACH,eAAe,CAAC,EAAE,qBAAqB,CAAC;IAExC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgCG;IACH,cAAc,CAAC,EAAE,oBAAoB,CAAC;IAEtC;;;;;;;;OAQG;IACH,eAAe,CAAC,EAAE,eAAe,CAAC;IAElC;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,gBAAgB,CAAC,EAAE,sBAAsB,CAAC;IAE1C;;;;;;;;;;;;;;;;;;OAkBG;IACH,YAAY,CAAC,EAAE,mBAAmB,CAAC;IAEnC;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,cAAc,CAAC,EAAE,oBAAoB,CAAC;IAEtC;;;OAGG;IACH,MAAM,CAAC,EAAE,cAAc,CAAC;IAExB;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,OAAO,CAAC,EAAE,iBAAiB,GAAG;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;CACpD;AAED,UAAU,WAAY,SAAQ,WAAW;IACvC;;;;;;;;;;;;;;;;;;;OAmBG;IACH,IAAI,EAAE,SAAS,CAAC,QAAQ,GAAG,WAAW,CAAC,QAAQ,GAAG,MAAM,CAAC;CAC1D;AAED,UAAU,UAAW,SAAQ,WAAW;IACtC;;;OAGG;IACH,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,MAAM,qBAAqB,GAAG,WAAW,GAAG,UAAU,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openapi.utils.d.ts","sourceRoot":"","sources":["../../src/openapi/openapi.utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAKzE;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;
|
|
1
|
+
{"version":3,"file":"openapi.utils.d.ts","sourceRoot":"","sources":["../../src/openapi/openapi.utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAKzE;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAsDD;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,cAAc,EACpB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,EAC1D,OAAO,EAAE,MAAM,GACd,aAAa,CA8Gf;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,EAAE,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAMzG;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,qDAAqD;IACrD,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAKD;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,uBAAuB;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,uDAAuD;IACvD,EAAE,EAAE,OAAO,CAAC;IACZ,0CAA0C;IAC1C,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,yCAAyC;IACzC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;GAOG;AACH,wBAAsB,aAAa,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,eAAe,CAAC,CAgEhH"}
|