// A tools bundle written against the protocol: the module's own tool, a seat's verb, one that fails, and one that says // who called it as the runtime proved it and refuses a caller its verb's list does not name. import { serveStdio } from "../../dist/stdio/index.js"; import { callerOf, callIdOf, refusal } from "../../dist/callers/index.js"; const verbs = { "node-lamp.on": ["mesh-delivery-forge-bridge"] }; await serveStdio("lamp", [ { name: "brightness", description: "set it", input: { level: { type: "number", description: "0 to 10" } }, run: async (a) => ({ level: a.level }) }, { name: "node-lamp.on", description: "the seat's verb", input: {}, run: async (a) => { const no = refusal(verbs, "node-lamp.on", callerOf(a)); if (no) throw no; return { on: true }; } }, { name: "fail", description: "it throws", input: {}, run: async () => { throw new Error("the bulb is gone"); } }, { name: "who", description: "who called", input: {}, run: async (a) => ({ caller: callerOf(a), call: callIdOf(a) }) }, ]);