From b7ea9bf4d645f10a26dd5ca0df44e430624c98be Mon Sep 17 00:00:00 2001 From: Ajax Davis Date: Wed, 17 Dec 2025 14:56:56 +1000 Subject: [PATCH] fix(types): support both 'name' and 'exportName' for backward compatibility The TpmjsToolDefinitionSchema now accepts either 'name' (new) or 'exportName' (legacy) to ensure existing published packages continue to work. Co-Authored-By: Claude --- packages/types/src/tpmjs.ts | 33 ++++++++++++++++++++++----------- 1 file changed, 22 insertions(+), 11 deletions(-) diff --git a/packages/types/src/tpmjs.ts b/packages/types/src/tpmjs.ts index e74820a..148ca17 100644 --- a/packages/types/src/tpmjs.ts +++ b/packages/types/src/tpmjs.ts @@ -90,17 +90,28 @@ export type TpmjsAiAgent = z.infer; * - returns: Tool return type - auto-extracted from tool * - aiAgent: AI agent guidance - auto-extracted from tool */ -export const TpmjsToolDefinitionSchema = z.object({ - name: z.string().min(1, 'Tool name is required'), - // Optional - auto-extracted from tool if not provided - description: z.string().min(20, 'Description must be at least 20 characters').max(500).optional(), - // @deprecated - now auto-extracted from tool's inputSchema - parameters: z.array(TpmjsParameterSchema).optional(), - // @deprecated - now auto-extracted from tool - returns: TpmjsReturnsSchema.optional(), - // @deprecated - now auto-extracted from tool - aiAgent: TpmjsAiAgentSchema.optional(), -}); +export const TpmjsToolDefinitionSchema = z + .object({ + // New field name (preferred) + name: z.string().min(1).optional(), + // @deprecated - use 'name' instead. Kept for backward compatibility. + exportName: z.string().min(1).optional(), + // Optional - auto-extracted from tool if not provided + description: z + .string() + .min(20, 'Description must be at least 20 characters') + .max(500) + .optional(), + // @deprecated - now auto-extracted from tool's inputSchema + parameters: z.array(TpmjsParameterSchema).optional(), + // @deprecated - now auto-extracted from tool + returns: TpmjsReturnsSchema.optional(), + // @deprecated - now auto-extracted from tool + aiAgent: TpmjsAiAgentSchema.optional(), + }) + .refine((data) => data.name || data.exportName, { + message: 'Either name or exportName is required', + }); export type TpmjsToolDefinition = z.infer;