import { Agent, openai, defineTool } from "@radaros/core";
import type { RunContext } from "@radaros/core";
import { z } from "zod";
const readTool = defineTool({
name: "read_record",
description: "Read a record",
parameters: z.object({ id: z.string() }),
execute: async ({ id }) => `Record ${id}: { status: "active" }`,
});
const writeTool = defineTool({
name: "write_record",
description: "Write a record",
parameters: z.object({ id: z.string(), data: z.string() }),
execute: async ({ id, data }) => `Updated ${id}: ${data}`,
});
const deleteTool = defineTool({
name: "delete_record",
description: "Delete a record (admin only)",
parameters: z.object({ id: z.string() }),
execute: async ({ id }) => `Deleted ${id}`,
});
const agent = new Agent({
name: "role-aware-agent",
model: openai("gpt-4o"),
instructions: "You manage database records.",
toolResolver: async (ctx: RunContext) => {
const role = ctx.metadata?.role ?? "viewer";
if (role === "admin") return [readTool, writeTool, deleteTool];
if (role === "editor") return [readTool, writeTool];
return [readTool];
},
});
await agent.run("Delete record r-42", { metadata: { role: "admin" } });
await agent.run("Show record r-42", { metadata: { role: "viewer" } });