18 lines
623 B
JavaScript
18 lines
623 B
JavaScript
export function createRegistry() {
|
|
const tools = new Map();
|
|
return {
|
|
registerTool(def) {
|
|
if (!def?.name) throw new Error('tool def needs a name');
|
|
if (tools.has(def.name)) throw new Error(`tool "${def.name}" already registered`);
|
|
tools.set(def.name, def);
|
|
},
|
|
getTool(name) { return tools.get(name); },
|
|
listTools() { return [...tools.values()]; },
|
|
// Anthropic tool-use schema — handlers are intentionally stripped.
|
|
toAnthropicTools() {
|
|
return [...tools.values()].map(({ name, description, input_schema }) =>
|
|
({ name, description, input_schema }));
|
|
}
|
|
};
|
|
}
|