// showcase's tools — its operator-facing surface, served over the broker. // // Two of them, because one tool proves a tool can exist and two prove a module can have a surface. import { registerModuleTools, type ToolDefinition } from "@novox/mesh-sdk/tools"; export function getShowcaseTools(env: NodeJS.ProcessEnv = process.env): ToolDefinition[] { return [ { name: "showcase_greet", description: "Greet somebody, and say which machine did it.", input: { type: "object", properties: { who: { type: "string" } } }, async run(args: Readonly>) { const who = typeof args.who === "string" && args.who !== "" ? args.who : "world"; return { greeting: `hello ${who}`, from: env.MESH_NODE ?? "somewhere" }; }, }, { name: "showcase_state", description: "What this module was configured with, so a test can read it back.", input: { type: "object", properties: {} }, async run() { return { greeting: env.SHOWCASE_GREETING ?? "", database: env.SHOWCASE_DATABASE ?? "", }; }, }, ]; } registerModuleTools("showcase", (env) => getShowcaseTools(env));