把昨日 Tool Schema 接入固定注册表,完成一个可中止、可分类、可观测的服务端执行器。
const registry = new Map();
registry.set("create_reminder_v1", handler);
async function executeTool(call, timeoutMs = 200) {
const fn = registry.get(call.name);
if (!fn) return fail("UNKNOWN_TOOL");
const controller = new AbortController();
const timer = setTimeout(() => controller.abort(), timeoutMs);
try { return await fn(call.arguments, { signal: controller.signal }); }
catch { return fail(controller.signal.aborted ? "TIMEOUT" : "INTERNAL_ERROR"); }
finally { clearTimeout(timer); }
}完整可复制代码、输入和预期输出见 Markdown 版;把 timeoutMs 改为 10 应得到 TIMEOUT。
工具执行放在服务端固定注册表中,执行前做 Schema、身份和业务校验,执行时把统一 deadline 和 AbortSignal 传到底层,最后返回稳定的成功或错误结构。