UNPKG

agentlang

Version:

The easiest way to build the most reliable AI agents - enterprise-grade teams of AI agents that collaborate with each other and humans

51 lines 1.51 kB
import { getFileSystem } from '../utils/fs-utils.js'; import { logger } from './logger.js'; const DocFetchers = new Map(); export function registerDocFetcher(scheme, fetcher) { DocFetchers.set(scheme, fetcher); return scheme; } function getDocFetcher(scheme) { const f = DocFetchers.get(scheme); if (f) { return f; } logger.warn(`No fetcher for ${scheme}`); return undefined; } export async function fetchDoc(url) { const idx = url.indexOf(':/'); const scheme = idx <= 0 ? 'file' : url.substring(0, idx); const f = getDocFetcher(scheme); if (f) return await f(url); else return undefined; } async function httpFetcher(url) { try { const response = await fetch(url, { method: 'GET', }); if (!response.ok) { logger.error(`Failed to fetch document ${url}, HTTP error! status: ${response.status} ${response.text} ${response.statusText}`); return undefined; } return await response.text(); } catch (reason) { logger.error(`Failed to fetch document ${url}: ${reason}`); } return undefined; } async function fetchFile(path) { const fs = await getFileSystem(); if (path.startsWith('.')) { path = `${process.cwd()}${path.substring(1)}`; } return fs.readFile(path); } registerDocFetcher('http', httpFetcher); registerDocFetcher('https', httpFetcher); registerDocFetcher('file', fetchFile); //# sourceMappingURL=docs.js.map