mastra-af-letta
Version:
Letta .af (Agent File) format support for Mastra - enables importing and exporting agents in Letta's portable format
1 lines • 38.5 kB
Source Map (JSON)
{"version":3,"sources":["../src/schema.ts","../src/parser.ts","../src/index.ts"],"names":["z"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * @fileoverview Zod schemas for validating Letta .af (Agent File) format\n * \n * These schemas provide runtime validation with detailed error messages\n * to help users understand and fix issues with their .af files.\n * \n * @module @mastra/portability-af-letta\n */\n\nimport { z } from 'zod';\nimport type {\n AfAgentSchema,\n AfLLMConfig,\n AfEmbeddingConfig,\n AfCoreMemoryBlock,\n AfMessage,\n AfTool,\n AfToolRule,\n AfToolCall,\n AfToolResult,\n AfToolParameters,\n AfParameterProperty,\n MastraToolMetadata,\n AuthReference,\n} from './types';\n\n/**\n * ISO 8601 date-time string validation\n * Ensures timestamps are in the correct format.\n */\nconst iso8601Schema = z\n .string()\n .datetime({ message: 'Timestamp must be in ISO 8601 format (e.g., 2024-01-01T00:00:00Z)' });\n\n/**\n * Message role validation\n */\nconst messageRoleSchema = z.enum(['user', 'assistant', 'system', 'tool'], {\n errorMap: () => ({ message: 'Role must be one of: user, assistant, system, tool' }),\n});\n\n/**\n * Tool type validation\n */\nconst toolTypeSchema = z.enum(['python', 'javascript', 'json_schema'], {\n errorMap: () => ({ message: 'Tool type must be one of: python, javascript, json_schema' }),\n});\n\n/**\n * Tool rule type validation - flexible string for different frameworks\n */\nconst toolRuleTypeSchema = z.string().min(1, 'Rule type is required');\n\n/**\n * LLM configuration schema\n * Validates language model settings with provider flexibility.\n */\nexport const llmConfigSchema = z\n .object({\n provider: z.string().min(1, 'Provider is required'),\n model: z.string().min(1, 'Model is required'),\n temperature: z\n .number()\n .min(0, 'Temperature must be >= 0')\n .max(2, 'Temperature must be <= 2')\n .optional(),\n max_tokens: z.number().positive('Max tokens must be positive').optional(),\n top_p: z\n .number()\n .min(0, 'Top-p must be >= 0')\n .max(1, 'Top-p must be <= 1')\n .optional(),\n frequency_penalty: z\n .number()\n .min(-2, 'Frequency penalty must be >= -2')\n .max(2, 'Frequency penalty must be <= 2')\n .optional(),\n presence_penalty: z\n .number()\n .min(-2, 'Presence penalty must be >= -2')\n .max(2, 'Presence penalty must be <= 2')\n .optional(),\n })\n .passthrough() // Allow provider-specific fields\n .describe('Language model configuration');\n\n/**\n * Embedding configuration schema\n */\nexport const embeddingConfigSchema = z\n .object({\n provider: z.string().min(1, 'Provider is required'),\n model: z.string().min(1, 'Model is required'),\n dimensions: z.number().positive('Dimensions must be positive').optional(),\n })\n .passthrough()\n .describe('Embedding model configuration');\n\n/**\n * Core memory block schema\n * Validates persistent memory segments.\n */\nexport const coreMemoryBlockSchema = z\n .object({\n label: z.string().min(1, 'Memory block label is required'),\n value: z.string(),\n character_limit: z.number().positive('Character limit must be positive').optional(),\n metadata: z.record(z.unknown()).optional(),\n })\n .describe('Core memory block');\n\n/**\n * Tool call schema\n */\nexport const toolCallSchema = z\n .object({\n id: z.string().min(1, 'Tool call ID is required'),\n name: z.string().min(1, 'Tool name is required'),\n arguments: z.record(z.unknown()),\n metadata: z.record(z.unknown()).optional(),\n })\n .describe('Tool invocation request');\n\n/**\n * Tool result schema\n */\nexport const toolResultSchema = z\n .object({\n id: z.string().min(1, 'Tool result ID is required'),\n name: z.string().min(1, 'Tool name is required'),\n result: z.unknown().optional(),\n error: z.string().optional(),\n metadata: z.record(z.unknown()).optional(),\n })\n .describe('Tool execution result');\n\n/**\n * Message schema\n * Validates conversation messages with all their components.\n */\nexport const messageSchema = z\n .object({\n id: z.string().min(1, 'Message ID is required'),\n role: messageRoleSchema,\n text: z.string(),\n timestamp: iso8601Schema,\n tool_calls: z.array(toolCallSchema).optional(),\n tool_results: z.array(toolResultSchema).optional(),\n metadata: z.record(z.unknown()).optional(),\n })\n .describe('Conversation message');\n\n/**\n * Recursive parameter property schema for JSON Schema validation\n * Supports nested object and array definitions.\n */\nconst parameterPropertySchema: z.ZodType<AfParameterProperty> = z.lazy(() =>\n z\n .object({\n type: z.string().min(1, 'Parameter type is required'),\n description: z.string().optional(),\n enum: z.array(z.unknown()).optional(),\n items: parameterPropertySchema.optional(),\n properties: z.record(parameterPropertySchema).optional(),\n })\n .passthrough()\n .describe('Parameter property definition')\n);\n\n/**\n * Tool parameters schema (JSON Schema format)\n */\nexport const toolParametersSchema = z\n .object({\n type: z.literal('object', {\n errorMap: () => ({ message: 'Tool parameters must have type \"object\"' }),\n }),\n properties: z.record(parameterPropertySchema),\n required: z.array(z.string()).optional(),\n additionalProperties: z.boolean().optional(),\n })\n .describe('Tool parameter schema');\n\n/**\n * Authentication reference schema\n * Validates secure credential references without storing actual secrets.\n */\nexport const authReferenceSchema = z\n .object({\n provider: z.enum(['env', 'vault', 'oauth2', 'keychain', 'dynamic'], {\n errorMap: () => ({ message: 'Auth provider must be one of: env, vault, oauth2, keychain, dynamic' }),\n }),\n config_id: z.string().min(1, 'Configuration ID is required'),\n metadata: z\n .object({\n auth_type: z\n .enum(['bearer', 'api_key', 'oauth2', 'basic', 'custom'])\n .optional(),\n required_scopes: z.array(z.string()).optional(),\n expires_in: z.number().positive('Expiration must be positive').optional(),\n prompt: z.string().optional(),\n cache_duration: z.number().nonnegative('Cache duration must be non-negative').optional(),\n })\n .optional(),\n })\n .describe('Authentication reference');\n\n/**\n * Mastra tool metadata schema\n * Validates MCP and external tool configurations.\n */\nexport const mastraToolMetadataSchema = z\n .object({\n type: z.enum(['mcp', 'url', 'reference'], {\n errorMap: () => ({ message: 'Mastra tool type must be one of: mcp, url, reference' }),\n }),\n server: z.string().url('Server must be a valid URL').optional(),\n tool_name: z.string().optional(),\n transport: z.enum(['stdio', 'http']).optional(),\n endpoint: z.string().url('Endpoint must be a valid URL').optional(),\n method: z.enum(['GET', 'POST']).optional(),\n auth_ref: authReferenceSchema.optional(),\n })\n .refine(\n (data) => {\n // Validate required fields based on type\n if (data.type === 'mcp') {\n return !!data.server && !!data.tool_name;\n }\n if (data.type === 'url') {\n return !!data.endpoint;\n }\n return true;\n },\n {\n message: 'MCP tools require server and tool_name, URL tools require endpoint',\n }\n )\n .describe('Mastra tool metadata');\n\n/**\n * Tool schema\n * Validates tool definitions with appropriate constraints.\n */\nexport const toolSchema = z\n .object({\n name: z.string().min(1, 'Tool name is required'),\n description: z.string().min(1, 'Tool description is required'),\n type: toolTypeSchema,\n parameters: toolParametersSchema,\n source_code: z.string().optional(),\n metadata: z\n .record(z.unknown())\n .optional()\n .refine(\n (metadata) => {\n // If _mastra_tool exists, validate it\n if (metadata && '_mastra_tool' in metadata) {\n return mastraToolMetadataSchema.safeParse(metadata._mastra_tool).success;\n }\n return true;\n },\n {\n message: 'Invalid _mastra_tool metadata structure',\n }\n ),\n })\n .refine(\n (tool) => {\n // Source code is required for python and javascript tools\n if ((tool.type === 'python' || tool.type === 'javascript') && !tool.source_code) {\n return false;\n }\n return true;\n },\n {\n message: 'Source code is required for python and javascript tool types',\n path: ['source_code'],\n }\n )\n .describe('Tool definition');\n\n/**\n * Tool rule schema\n */\nexport const toolRuleSchema = z\n .object({\n tool_name: z.string().min(1, 'Tool name is required'),\n rule_type: toolRuleTypeSchema,\n rule_content: z.string().min(1, 'Rule content is required'),\n })\n .describe('Tool usage rule');\n\n/**\n * Main agent schema\n * Validates the complete .af file structure with all components.\n */\nexport const afAgentSchema = z\n .object({\n // Core identification\n agent_type: z.string().min(1, 'Agent type is required'),\n name: z.string().min(1, 'Agent name is required'),\n description: z.string().optional(),\n\n // System configuration\n system: z.string().min(1, 'System prompt is required'),\n\n // Model configuration\n llm_config: llmConfigSchema,\n embedding_config: embeddingConfigSchema.optional(),\n\n // Memory components - object with named memory blocks\n core_memory: z.record(coreMemoryBlockSchema).refine(\n (memory) => memory.persona && memory.human,\n 'Core memory must contain at least persona and human blocks'\n ),\n messages: z.array(messageSchema),\n in_context_message_indices: z\n .array(z.number().nonnegative('Message index must be non-negative'))\n .optional(),\n\n // Tools\n tools: z.array(toolSchema),\n tool_rules: z.array(toolRuleSchema).optional(),\n tool_exec_environment_variables: z.record(z.string()).optional(),\n\n // Metadata\n tags: z.array(z.string()).optional(),\n metadata_: z.record(z.unknown()).optional(),\n\n // Versioning\n version: z.string().min(1, 'Version is required'),\n created_at: iso8601Schema,\n updated_at: iso8601Schema,\n })\n .refine(\n (agent) => {\n // Validate in_context_message_indices references\n if (agent.in_context_message_indices) {\n const maxIndex = agent.messages.length - 1;\n return agent.in_context_message_indices.every((idx) => idx <= maxIndex);\n }\n return true;\n },\n {\n message: 'in_context_message_indices contains out-of-range message references',\n path: ['in_context_message_indices'],\n }\n )\n .refine(\n (agent) => {\n // Validate tool_rules reference existing tools\n if (agent.tool_rules) {\n const toolNames = new Set(agent.tools.map((t) => t.name));\n return agent.tool_rules.every((rule) => toolNames.has(rule.tool_name));\n }\n return true;\n },\n {\n message: 'tool_rules references non-existent tools',\n path: ['tool_rules'],\n }\n )\n .describe('Complete agent file schema');\n\n/**\n * Type guard to check if a value is a valid AfAgentSchema\n */\nexport function isValidAfSchema(value: unknown): value is AfAgentSchema {\n return afAgentSchema.safeParse(value).success;\n}\n\n/**\n * Parse and validate an agent file with detailed error reporting\n * \n * @param data - The data to validate (usually from JSON.parse)\n * @returns Validated agent schema\n * @throws {ZodError} With detailed validation errors\n */\nexport function parseAfSchema(data: unknown): AfAgentSchema {\n try {\n return afAgentSchema.parse(data);\n } catch (error) {\n if (error instanceof z.ZodError) {\n // Enhance error messages for better debugging\n const enhancedError = new Error('Agent file validation failed');\n (enhancedError as any).validationErrors = error.errors.map((err) => ({\n path: err.path.join('.'),\n message: err.message,\n code: err.code,\n }));\n throw enhancedError;\n }\n throw error;\n }\n}\n\n/**\n * Safely parse and validate with a result object\n * \n * @param data - The data to validate\n * @returns Result object with either data or error\n */\nexport function safeParseAfSchema(\n data: unknown\n): { success: true; data: AfAgentSchema } | { success: false; error: z.ZodError } {\n return afAgentSchema.safeParse(data);\n}","/**\n * @fileoverview Parser for Letta .af (Agent File) format\n * \n * Provides functions to parse .af files from various sources with\n * comprehensive error handling and validation.\n * \n * @module @mastra/portability-af-letta\n */\n\nimport { z } from 'zod';\nimport { afAgentSchema, parseAfSchema, safeParseAfSchema } from './schema';\nimport type { AfAgentSchema } from './types';\n\n/**\n * Custom error class for agent file parsing errors\n */\nexport class AgentFileParseError extends Error {\n /**\n * Validation errors if the parsing failed due to schema validation\n */\n public readonly validationErrors?: Array<{\n path: string;\n message: string;\n code: string;\n }>;\n\n /**\n * Original error that caused the parsing failure\n */\n public readonly cause?: Error;\n\n constructor(message: string, options?: { cause?: Error; validationErrors?: any[] }) {\n super(message);\n this.name = 'AgentFileParseError';\n this.cause = options?.cause;\n this.validationErrors = options?.validationErrors;\n\n // Ensure proper prototype chain for instanceof checks\n Object.setPrototypeOf(this, AgentFileParseError.prototype);\n }\n}\n\n/**\n * Result type for parsing operations\n */\nexport type ParseResult<T> = \n | { success: true; data: T }\n | { success: false; error: AgentFileParseError };\n\n/**\n * Options for parsing agent files\n */\nexport interface ParseOptions {\n /**\n * Whether to validate strictly (fail on unknown fields)\n * @default false\n */\n strict?: boolean;\n\n /**\n * Whether to attempt to fix common issues\n * @default true\n */\n autoFix?: boolean;\n\n /**\n * Maximum file size in bytes (default: 50MB)\n * @default 52428800\n */\n maxSize?: number;\n}\n\n/**\n * Parse a JSON string containing an agent file\n * \n * @param jsonString - JSON string to parse\n * @param options - Parsing options\n * @returns Parsed and validated agent schema\n * @throws {AgentFileParseError} If parsing or validation fails\n * \n * @example\n * ```typescript\n * const agentData = await fs.readFile('./agent.af', 'utf-8');\n * const agent = parseAgentFile(agentData);\n * console.log(`Loaded agent: ${agent.name}`);\n * ```\n */\nexport function parseAgentFile(\n jsonString: string,\n options: ParseOptions = {}\n): AfAgentSchema {\n const { maxSize = 52428800, autoFix = true } = options;\n\n // Check file size\n const byteSize = new TextEncoder().encode(jsonString).length;\n if (byteSize > maxSize) {\n throw new AgentFileParseError(\n `Agent file too large: ${byteSize} bytes (max: ${maxSize} bytes)`\n );\n }\n\n // Parse JSON\n let data: unknown;\n try {\n data = JSON.parse(jsonString);\n } catch (error) {\n throw new AgentFileParseError('Invalid JSON format', {\n cause: error as Error,\n });\n }\n\n // Apply auto-fixes if enabled\n if (autoFix) {\n data = applyAutoFixes(data);\n }\n\n // Validate schema\n try {\n return parseAfSchema(data);\n } catch (error) {\n if (error instanceof Error && 'validationErrors' in error) {\n throw new AgentFileParseError('Schema validation failed', {\n validationErrors: (error as any).validationErrors,\n cause: error,\n });\n }\n throw new AgentFileParseError('Unexpected validation error', {\n cause: error as Error,\n });\n }\n}\n\n/**\n * Safely parse an agent file with a result object\n * \n * This function never throws, returning a result object instead.\n * \n * @param jsonString - JSON string to parse\n * @param options - Parsing options\n * @returns Result object with either parsed data or error\n * \n * @example\n * ```typescript\n * const result = safeParseAgentFile(jsonString);\n * if (result.success) {\n * console.log(`Agent: ${result.data.name}`);\n * } else {\n * console.error(`Parse failed: ${result.error.message}`);\n * }\n * ```\n */\nexport function safeParseAgentFile(\n jsonString: string,\n options: ParseOptions = {}\n): ParseResult<AfAgentSchema> {\n try {\n const data = parseAgentFile(jsonString, options);\n return { success: true, data };\n } catch (error) {\n if (error instanceof AgentFileParseError) {\n return { success: false, error };\n }\n return {\n success: false,\n error: new AgentFileParseError('Unknown parsing error', {\n cause: error as Error,\n }),\n };\n }\n}\n\n/**\n * Parse an agent file from a plain object\n * \n * Useful when the JSON has already been parsed.\n * \n * @param data - Object to validate\n * @param options - Parsing options\n * @returns Validated agent schema\n * @throws {AgentFileParseError} If validation fails\n */\nexport function parseAgentFileObject(\n data: unknown,\n options: ParseOptions = {}\n): AfAgentSchema {\n const { autoFix = true } = options;\n\n // Apply auto-fixes if enabled\n if (autoFix) {\n data = applyAutoFixes(data);\n }\n\n // Validate schema\n try {\n return parseAfSchema(data);\n } catch (error) {\n if (error instanceof Error && 'validationErrors' in error) {\n throw new AgentFileParseError('Schema validation failed', {\n validationErrors: (error as any).validationErrors,\n cause: error,\n });\n }\n throw new AgentFileParseError('Unexpected validation error', {\n cause: error as Error,\n });\n }\n}\n\n/**\n * Validate an agent file without fully parsing it\n * \n * Useful for quick validation checks.\n * \n * @param jsonString - JSON string to validate\n * @returns True if valid, false otherwise\n */\nexport function isValidAgentFile(jsonString: string): boolean {\n try {\n const data = JSON.parse(jsonString);\n return safeParseAfSchema(data).success;\n } catch {\n return false;\n }\n}\n\n/**\n * Get detailed validation errors for an agent file\n * \n * @param jsonString - JSON string to validate\n * @returns Array of validation errors, or null if valid\n */\nexport function getValidationErrors(\n jsonString: string\n): Array<{ path: string; message: string }> | null {\n try {\n const data = JSON.parse(jsonString);\n const result = safeParseAfSchema(data);\n \n if (result.success) {\n return null;\n }\n\n return result.error.errors.map((err) => ({\n path: err.path.join('.'),\n message: err.message,\n }));\n } catch (error) {\n return [\n {\n path: '',\n message: error instanceof Error ? error.message : 'Invalid JSON',\n },\n ];\n }\n}\n\n/**\n * Apply automatic fixes for common issues\n * \n * @param data - Data to fix\n * @returns Fixed data\n */\nfunction applyAutoFixes(data: unknown): unknown {\n if (!data || typeof data !== 'object') {\n return data;\n }\n\n const fixed = { ...data } as any;\n\n // Fix missing timestamps by using current time\n const now = new Date().toISOString();\n if (!fixed.created_at) {\n fixed.created_at = now;\n }\n if (!fixed.updated_at) {\n fixed.updated_at = now;\n }\n\n // Fix missing version\n if (!fixed.version) {\n fixed.version = '0.1.0';\n }\n\n // Ensure core_memory is an object (not array)\n if (!fixed.core_memory || typeof fixed.core_memory !== 'object' || Array.isArray(fixed.core_memory)) {\n fixed.core_memory = {\n persona: {\n label: 'persona',\n value: 'I am a helpful AI assistant.',\n limit: 2000\n },\n human: {\n label: 'human',\n value: 'The user needs assistance.',\n limit: 2000\n }\n };\n }\n if (!Array.isArray(fixed.messages)) {\n fixed.messages = [];\n }\n if (!Array.isArray(fixed.tools)) {\n fixed.tools = [];\n }\n\n // Fix message timestamps\n if (Array.isArray(fixed.messages)) {\n fixed.messages = fixed.messages.map((msg: any, index: number) => {\n if (!msg.timestamp) {\n // Generate timestamp based on position\n const msgTime = new Date(now);\n msgTime.setMinutes(msgTime.getMinutes() - (fixed.messages.length - index));\n return { ...msg, timestamp: msgTime.toISOString() };\n }\n return msg;\n });\n }\n\n // Ensure tool parameters have correct structure\n if (Array.isArray(fixed.tools)) {\n fixed.tools = fixed.tools.map((tool: any) => {\n if (tool.parameters && typeof tool.parameters === 'object') {\n if (!tool.parameters.type) {\n tool.parameters.type = 'object';\n }\n if (!tool.parameters.properties) {\n tool.parameters.properties = {};\n }\n }\n return tool;\n });\n }\n\n return fixed;\n}\n\n/**\n * Extract metadata from an agent file without full validation\n * \n * Useful for quick previews or listing agents.\n * \n * @param jsonString - JSON string to extract from\n * @returns Basic agent metadata\n */\nexport function extractAgentMetadata(jsonString: string): {\n name?: string;\n description?: string;\n version?: string;\n agent_type?: string;\n created_at?: string;\n tags?: string[];\n} | null {\n try {\n const data = JSON.parse(jsonString);\n if (!data || typeof data !== 'object') {\n return null;\n }\n\n return {\n name: data.name,\n description: data.description,\n version: data.version,\n agent_type: data.agent_type,\n created_at: data.created_at,\n tags: Array.isArray(data.tags) ? data.tags : undefined,\n };\n } catch {\n return null;\n }\n}","/**\n * @fileoverview Main entry point for @mastra/portability-af-letta\n * \n * This package provides support for importing and exporting agents in\n * Letta's .af (Agent File) format, enabling portability between Letta\n * and Mastra frameworks.\n * \n * @example\n * ```typescript\n * import { parseAgentFile, afAgentSchema } from '@mastra/portability-af-letta';\n * \n * // Parse an agent file\n * const agentData = await fs.readFile('./agent.af', 'utf-8');\n * const agent = parseAgentFile(agentData);\n * \n * // Validate agent data\n * const result = afAgentSchema.safeParse(someData);\n * if (result.success) {\n * console.log('Valid agent:', result.data.name);\n * }\n * ```\n * \n * @module @mastra/portability-af-letta\n */\n\n// Export all types\nexport * from './types';\n\n// Export schemas\nexport {\n afAgentSchema,\n llmConfigSchema,\n embeddingConfigSchema,\n coreMemoryBlockSchema,\n messageSchema,\n toolSchema,\n toolRuleSchema,\n toolCallSchema,\n toolResultSchema,\n toolParametersSchema,\n authReferenceSchema,\n mastraToolMetadataSchema,\n isValidAfSchema,\n parseAfSchema,\n safeParseAfSchema,\n} from './schema';\n\n// Export parser functions\nexport {\n parseAgentFile,\n safeParseAgentFile,\n parseAgentFileObject,\n isValidAgentFile,\n getValidationErrors,\n extractAgentMetadata,\n AgentFileParseError,\n type ParseResult,\n type ParseOptions,\n} from './parser';\n\n// TODO: Mastra integration will be enabled in a future version\n// when the correct Mastra.ai interfaces are available\n\n// Version of the .af format this package supports\nexport const SUPPORTED_AF_VERSION = '0.1.0';\n\n// Package metadata\nexport const PACKAGE_NAME = 'mastra-af-letta';\nexport const PACKAGE_VERSION = '0.1.0'; // This should match package.json"]}