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
35 lines (28 loc) • 1.18 kB
text/typescript
import { setSubscriptionFn } from '../defs.js';
import { Resolver, setSubscriptionEvent } from './interface.js';
type MakeResolver = () => Resolver;
const resolverDb: Map<string, MakeResolver> = new Map<string, MakeResolver>();
const resolverPathMappings: Map<string, string> = new Map<string, string>();
export function registerResolver(name: string, r: MakeResolver): string {
resolverDb.set(name, r);
return name;
}
export function setResolver(fqEntryName: string, resolverName: string) {
if (resolverDb.has(resolverName)) {
resolverPathMappings.set(fqEntryName, resolverName);
} else {
throw new Error(`Resolver not found - ${resolverName}`);
}
}
export function getResolverNameForPath(fqEntryName: string): string | undefined {
return resolverPathMappings.get(fqEntryName);
}
export function getResolver(fqEntryName: string): Resolver {
const resName: string | undefined = resolverPathMappings.get(fqEntryName);
if (resName !== undefined) {
const f: MakeResolver | undefined = resolverDb.get(resName);
if (f) return f();
}
throw new Error(`No resolver registered for ${fqEntryName}`);
}
setSubscriptionFn(setSubscriptionEvent);