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.82 kB
JavaScript
import { parseAndIntern } from './loader.js';
import { logger } from './logger.js';
import { isReservedName } from './util.js';
let OpenApiModules = undefined;
export async function registerOpenApiModule(moduleName, handle) {
if (OpenApiModules === undefined) {
OpenApiModules = new Map();
}
const m = new Map(Object.entries(handle.client));
const events = new Array();
m.forEach((v, k) => {
if (v instanceof Function) {
if (isReservedName(k)) {
k = `_${k}`;
}
logger.debug(`OpenAPI event: ${moduleName}/${k}`);
events.push(`event ${k} {parameters Any @optional, data Any @optional, config Any @optional}`);
}
});
await parseAndIntern(`module ${moduleName}\n${events.join('\n')}`);
OpenApiModules.set(moduleName, handle);
return moduleName;
}
export function isOpenApiModule(moduleName) {
return OpenApiModules !== undefined && OpenApiModules.has(moduleName);
}
export async function invokeOpenApiEvent(moduleName, eventName, params) {
if (OpenApiModules) {
const handle = OpenApiModules.get(moduleName);
if (handle) {
const f = handle.client[eventName];
if (!f) {
throw new Error(`No event ${eventName} found in ${moduleName}`);
}
else {
const r = await f(params.parameters, params.data, params.config);
return r.data;
}
}
else {
throw new Error(`No OpenAPI module found - ${moduleName}`);
}
}
else {
throw new Error(`OpenAPI module ${moduleName} not initialized`);
}
}
export function isOpenApiEventInstance(eventInst) {
return isOpenApiModule(eventInst.moduleName);
}
//# sourceMappingURL=openapi.js.map