{"version":3,"file":"defineToolCallRenderer.cjs","names":["z"],"sources":["../../src/types/defineToolCallRenderer.ts"],"sourcesContent":["import React from \"react\";\nimport { z } from \"zod\";\nimport type {\n  StandardSchemaV1,\n  InferSchemaOutput,\n} from \"@copilotkitnext/shared\";\nimport { ReactToolCallRenderer } from \"./react-tool-call-renderer\";\nimport { ToolCallStatus } from \"@copilotkitnext/core\";\n\n/**\n * Helper to define a type-safe tool call renderer entry.\n * - Accepts a single object whose keys match ReactToolCallRenderer's fields: { name, args, render, agentId? }.\n * - Derives `args` type from the provided schema (any Standard Schema V1 compatible library).\n * - Ensures the render function param type exactly matches ReactToolCallRenderer<T>[\"render\"]'s param.\n * - For wildcard tools (name: \"*\"), args is optional and defaults to z.any()\n */\ntype RenderProps<T> =\n  | {\n      name: string;\n      args: Partial<T>;\n      status: ToolCallStatus.InProgress;\n      result: undefined;\n    }\n  | {\n      name: string;\n      args: T;\n      status: ToolCallStatus.Executing;\n      result: undefined;\n    }\n  | {\n      name: string;\n      args: T;\n      status: ToolCallStatus.Complete;\n      result: string;\n    };\n\n// Overload for wildcard tools without args\nexport function defineToolCallRenderer(def: {\n  name: \"*\";\n  render: (props: RenderProps<any>) => React.ReactElement;\n  agentId?: string;\n}): ReactToolCallRenderer<any>;\n\n// Overload for regular tools with args\nexport function defineToolCallRenderer<S extends StandardSchemaV1>(def: {\n  name: string;\n  args: S;\n  render: (props: RenderProps<InferSchemaOutput<S>>) => React.ReactElement;\n  agentId?: string;\n}): ReactToolCallRenderer<InferSchemaOutput<S>>;\n\n// Implementation\nexport function defineToolCallRenderer<S extends StandardSchemaV1>(def: {\n  name: string;\n  args?: S;\n  render: (props: any) => React.ReactElement;\n  agentId?: string;\n}): ReactToolCallRenderer<any> {\n  // For wildcard tools, default to z.any() if no args provided\n  const argsSchema = def.name === \"*\" && !def.args ? z.any() : def.args;\n\n  return {\n    name: def.name,\n    args: argsSchema,\n    render: def.render as React.ComponentType<any>,\n    ...(def.agentId ? { agentId: def.agentId } : {}),\n  };\n}\n"],"mappings":";;;;AAoDA,SAAgB,uBAAmD,KAKpC;CAE7B,MAAM,aAAa,IAAI,SAAS,OAAO,CAAC,IAAI,OAAOA,MAAE,KAAK,GAAG,IAAI;AAEjE,QAAO;EACL,MAAM,IAAI;EACV,MAAM;EACN,QAAQ,IAAI;EACZ,GAAI,IAAI,UAAU,EAAE,SAAS,IAAI,SAAS,GAAG,EAAE;EAChD"}