UNPKG

@stackone/ai

Version:

Tools for agents to perform actions on your SaaS

72 lines (70 loc) 2.91 kB
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