knowhub
Version:
Synchronize AI coding–agent knowledge files (rules, templates, guidelines) across your project.
45 lines • 1.66 kB
JavaScript
import { ResourceError, formatError, handleNodeError } from "./errors.js";
import { ConsoleLogger } from "./logger.js";
import { pluginRegistry } from "./plugins/index.js";
export async function fetchResources(resources, projectRoot = process.cwd(), logger) {
const fetchedResources = [];
for (const definition of resources) {
try {
const fetched = await fetchSingleResource(definition, projectRoot, logger);
fetchedResources.push(fetched);
}
catch (error) {
if (error instanceof ResourceError) {
throw error;
}
const errorMessage = formatError(error);
throw new ResourceError(`Failed to fetch resource: ${errorMessage}`);
}
}
return fetchedResources;
}
async function fetchSingleResource(definition, projectRoot, logger) {
const plugin = pluginRegistry.resolve(definition.plugin);
const context = {
projectRoot,
logger: logger || new ConsoleLogger(),
};
try {
const result = await plugin.fetch(definition.pluginConfig, context);
return {
definition,
localPath: result.localPath,
isDirectory: result.isDirectory || false,
content: result.content,
pluginMetadata: result.metadata,
};
}
catch (error) {
if (error instanceof ResourceError) {
throw error;
}
const errorMessage = formatError(error);
throw new ResourceError(`Failed to fetch with plugin "${definition.plugin}": ${errorMessage}`, definition.plugin);
}
}
//# sourceMappingURL=resource.js.map