Skip to main content
Glama
block.ts3.34 kB
import { ComponentDesignRequest, DesignToolResult, ComponentDesign, } from '@/types/mcp-types.js'; import { processSmartBlockDesign, integrateDesign, } from '@/core/design/index.js'; import { formatBlockDesignResult } from '@/utils/index.js'; import { getRecommendedModel } from '@/config/model-manager.js'; import { ModelPurpose } from '@/config/types.js'; /** * Smart block design tool implementation * Handles detailed design for a specific design block using smart strategy * This is the second-stage tool in the smart design strategy */ export async function designBlockTool(args: any): Promise<{ content: any[] }> { const startTime = Date.now(); try { // Validate input parameters if (!args || typeof args.blockId !== 'string' || !args.blockId.trim()) { throw new Error('Missing required parameter: blockId is required'); } if (!Array.isArray(args.prompt)) { throw new Error('Missing required parameter: prompt is required'); } // Build request object const request: ComponentDesignRequest = { prompt: args.prompt, rules: Array.isArray(args.rules) ? args.rules : [], aiModel: getRecommendedModel(ModelPurpose.DESIGN), // 使用内置的推荐模型 component: args.component, }; // Process smart block design const blockDesign: ComponentDesign = await processSmartBlockDesign( request, args.blockId, args.blockInfo, args.integratedContext ); // 构建完整的返回结果 const result: DesignToolResult = { success: true, data: blockDesign, metadata: { processingTime: Date.now() - startTime, model: request.aiModel, timestamp: new Date().toISOString(), blockId: args.blockId, }, }; // 如果有集成上下文,尝试集成设计 let integrated = null; if ( args.integratedContext?.strategy && args.integratedContext?.blockDesigns ) { try { integrated = integrateDesign(args.integratedContext.strategy, [ ...args.integratedContext.blockDesigns, blockDesign, ]); } catch (e) { console.warn('[BlockTool] integrateDesign error:', e); } } return { content: [ { type: 'text', text: formatBlockDesignResult(blockDesign, args.blockId), }, { type: 'text', text: JSON.stringify({ result, integrated, nextAction: integrated ? { tool: 'integrate_design', arguments: { strategy: args.integratedContext?.strategy, blockDesigns: [ ...(args.integratedContext?.blockDesigns || []), blockDesign, ], }, reason: 'Block design completed, ready for integration', } : null, }), }, ], }; } catch (error) { console.error('Design block tool error:', error); const message = error instanceof Error ? error.message : 'Unknown error occurred'; return { content: [ { type: 'text', text: `❌ Block design failed: ${message}`, }, ], }; } }

Implementation Reference

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/lyw405/mcp-garendesign'

If you have feedback or need assistance with the MCP directory API, please join our Discord server