utils.ts•952 B
import { z } from "zod";
export type ToolResponse = {
  content: Array<{ type: "text"; text: string }>;
};
export function createSuccessResponse(data: any): ToolResponse {
  return {
    content: [
      {
        type: "text" as const,
        text: typeof data === "string" ? data : JSON.stringify(data),
      },
    ],
  };
}
export function createErrorResponse(error: any): ToolResponse {
  const errorMessage = error?.message || String(error);
  return {
    content: [
      {
        type: "text" as const,
        text: `Error: ${errorMessage}`,
      },
    ],
  };
}
export function createToolHandler<T>(
  handler: (data: T) => Promise<any>
): (data: T) => Promise<ToolResponse> {
  return async (data: T) => {
    try {
      const result = await handler(data);
      return createSuccessResponse(result);
    } catch (error) {
      console.error("Tool execution error:", error);
      return createErrorResponse(error);
    }
  };
}