@stackone/ai
Version:
Tools for agents to perform actions on your SaaS
72 lines (70 loc) • 2.91 kB
JavaScript
import { __export } from "../_virtual/rolldown_runtime.js";
import { ToolSetLoadError } from "../toolsets/base.js";
import { readJsonFile } from "../utils/file.js";
import { OpenAPIParser } from "./parser.js";
import { generated_exports } from "./generated/index.js";
//#region src/openapi/loader.ts
var loader_exports = {};
__export(loader_exports, {
loadFromFile: () => loadFromFile,
loadFromUrl: () => loadFromUrl,
loadStackOneSpecs: () => loadStackOneSpecs
});
/**
* Load all OpenAPI specs from the oas directory
* @param baseUrl Optional base URL to use for all operations
* @param removedParams Optional array of parameter names to remove from all tools
* @returns Dict mapping vertical names to their tool definitions
*/
const loadStackOneSpecs = (baseUrl, removedParams = []) => {
const tools = {};
for (const [key, value] of Object.entries(generated_exports)) {
const vertical = key.replace("Spec", "");
const spec = value;
const parser = new OpenAPIParser(spec, baseUrl, removedParams);
tools[vertical] = parser.parseTools();
}
return tools;
};
/**
* Load OpenAPI spec from a file
* @param filePath Path to the OpenAPI spec file
* @param baseUrl Optional base URL to use for all operations
* @param removedParams Optional array of parameter names to remove from all tools
* @returns Tool definitions parsed from the spec
* @throws ToolSetLoadError If there is an error loading the spec
*/
const loadFromFile = (filePath, baseUrl, removedParams = []) => {
try {
const spec = readJsonFile(filePath);
const parser = new OpenAPIParser(spec, baseUrl, removedParams);
return parser.parseTools();
} catch (error) {
if (error instanceof ToolSetLoadError) throw error;
throw new ToolSetLoadError(`Error loading spec from file: ${error instanceof Error ? error.message : String(error)}`);
}
};
/**
* Load OpenAPI spec from a URL
* @param url URL of the OpenAPI spec
* @param baseUrl Optional base URL to use for all operations
* @param removedParams Optional array of parameter names to remove from all tools
* @returns Promise resolving to tool definitions parsed from the spec
* @throws ToolSetLoadError If there is an error loading the spec
*/
const loadFromUrl = async (url, baseUrl, removedParams = []) => {
try {
const response = await fetch(url);
if (!response.ok) throw new ToolSetLoadError(`Failed to fetch OpenAPI spec from URL: ${url}, status: ${response.status}`);
const specContent = await response.text();
const spec = JSON.parse(specContent);
const parser = new OpenAPIParser(spec, baseUrl, removedParams);
return parser.parseTools();
} catch (error) {
if (error instanceof ToolSetLoadError) throw error;
throw new ToolSetLoadError(`Error loading spec from URL: ${error instanceof Error ? error.message : String(error)}`);
}
};
//#endregion
export { loadFromFile, loadFromUrl, loadStackOneSpecs, loader_exports };
//# sourceMappingURL=loader.js.map