tool.ts 635 B

12345678910111213141516171819202122232425262728
  1. import { z } from "zod"
  2. export type ToolContext = {
  3. sessionID: string
  4. messageID: string
  5. agent: string
  6. abort: AbortSignal
  7. metadata(input: { title?: string; metadata?: { [key: string]: any } }): void
  8. ask(input: AskInput): Promise<void>
  9. }
  10. type AskInput = {
  11. permission: string
  12. patterns: string[]
  13. always: string[]
  14. metadata: { [key: string]: any }
  15. }
  16. export function tool<Args extends z.ZodRawShape>(input: {
  17. description: string
  18. args: Args
  19. execute(args: z.infer<z.ZodObject<Args>>, context: ToolContext): Promise<string>
  20. }) {
  21. return input
  22. }
  23. tool.schema = z
  24. export type ToolDefinition = ReturnType<typeof tool>