{"_id":"@cadcamfun/ai-cad-sdk","name":"@cadcamfun/ai-cad-sdk","dist-tags":{"latest":"2.2.0"},"versions":{"2.2.0":{"name":"@cadcamfun/ai-cad-sdk","version":"2.2.0","description":"AI SDK for CAD applications with AI Service Providers","main":"dist/index.js","types":"dist/index.d.ts","bin":{"ai-cad":"dist/cli/index.js"},"workspaces":["packages/*"],"scripts":{"build":"tsc","test":"vitest run","clean":"rimraf dist","prepare":"npm run clean && npm run build","start:cli":"ts-node cli/index.ts","docs":"typedoc --out docs src","prepublishOnly":" npm run build"},"keywords":["ai","cad","cam","sdk","typescript","claude","openai","mcp","ai-toolkit"],"author":"","license":"MIT","repository":{"type":"git","url":"git+https://github.com/cadcamfun/ai-cad-sdk.git"},"engines":{"node":">=16.0.0"},"devDependencies":{"@changesets/cli":"^2.29.4","@types/inquirer":"^9.0.3","@types/node":"^18.15.11","@types/uuid":"^9.0.1","@typescript-eslint/eslint-plugin":"^5.58.0","@typescript-eslint/parser":"^5.58.0","eslint":"^8.38.0","eslint-config-prettier":"^8.8.0","eslint-plugin-prettier":"^4.2.1","prettier":"^2.8.7","rimraf":"^5.0.0","ts-node":"^10.9.1","typedoc":"^0.24.5","typescript":"^5.0.4","vitest":"^0.31.0"},"dependencies":{"@types/react":"^19.1.4","axios":"^1.3.6","chalk":"^4.1.2","commander":"^11.0.0","inquirer":"^8.2.5","ora":"^5.4.1","react":"^19.1.0","uuid":"^11.1.0","zustand":"^4.3.7"},"peerDependencies":{"react":">=17.0.0","react-dom":">=17.0.0"},"_id":"@cadcamfun/ai-cad-sdk@2.2.0","bugs":{"url":"https://github.com/cadcamfun/ai-cad-sdk/issues"},"homepage":"https://github.com/cadcamfun/ai-cad-sdk#readme","_nodeVersion":"23.10.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-ch31XkLmnzXk+28180XUINAyk+oQruXWmkcVJVdt+wRqgbVDqoFH1zRrWj+vvPxoE383RDiy+me7mgotmCg1UA==","shasum":"2891865e703c2072e56bedefd1f1b47c6d96436f","tarball":"https://registry.npmjs.org/@cadcamfun/ai-cad-sdk/-/ai-cad-sdk-2.2.0.tgz","fileCount":50,"unpackedSize":233357,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCmtzs0Up7btzc96aJbhDrmM0ZM6EfzdlXGLjyJiRqR+gIhAJCwzo5mqVvnjYajKGeEWs1S8mmP/Ah2GYAQaxR3RJoH"}]},"_npmUser":{"name":"cadcamfun","email":"nicom.19@icloud.com"},"directories":{},"maintainers":[{"name":"cadcamfun","email":"nicom.19@icloud.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ai-cad-sdk_2.2.0_1747668254512_0.5154024055159836"},"_hasShrinkwrap":false}},"time":{"created":"2025-05-19T15:24:14.414Z","2.2.0":"2025-05-19T15:24:14.722Z","modified":"2025-05-19T15:24:14.991Z"},"maintainers":[{"name":"cadcamfun","email":"nicom.19@icloud.com"}],"description":"AI SDK for CAD applications with AI Service Providers","homepage":"https://github.com/cadcamfun/ai-cad-sdk#readme","keywords":["ai","cad","cam","sdk","typescript","claude","openai","mcp","ai-toolkit"],"repository":{"type":"git","url":"git+https://github.com/cadcamfun/ai-cad-sdk.git"},"bugs":{"url":"https://github.com/cadcamfun/ai-cad-sdk/issues"},"license":"MIT","readme":"# AI CAD SDK\n\nA comprehensive SDK for integrating AI functionality into CAD/CAM applications, with a focus on performance and efficiency through the Model-Completions-Protocol (MCP).\n\n## Features\n\n- **Text to CAD**: Convert natural language descriptions into CAD elements\n- **Design Analysis**: Get AI-powered feedback and suggestions for improving designs\n- **G-code Optimization**: Automatically optimize G-code for CNC machines\n- **Contextual Suggestions**: Receive real-time suggestions based on current design context\n- **Efficient Processing**: Leverage the Model-Completions-Protocol (MCP) for caching, prioritization, and smart routing\n- **Analytics**: Track AI performance metrics and optimize costs\n\n## Installation\n\n```bash\nnpm install ai-cad-sdk\n```\n\n## Quick Start\n\n```typescript\nimport aiCADSDK, { TextToCADRequest } from 'ai-cad-sdk';\n\n// Initialize the SDK\naiCADSDK.configure({\n  apiKey: 'your-api-key',\n  defaultModel: 'claude-3-7-sonnet-20250219',\n  mcpEnabled: true\n});\n\naiCADSDK.initialize();\n\n// Get the AI service\nconst aiService = aiCADSDK.getAIService();\n\n// Convert text to CAD elements\nasync function createModelFromText() {\n  const request: TextToCADRequest = {\n    description: 'A simple chair with four legs, a seat, and a backrest.',\n    style: 'precise',\n    complexity: 'moderate'\n  };\n  \n  const response = await aiService.textToCAD(request);\n  \n  if (response.success) {\n    console.log(`Generated ${response.data.length} elements`);\n    return response.data; // Use elements in your application\n  } else {\n    console.error('Error:', response.error);\n    return [];\n  }\n}\n```\n\n## Model-Completions-Protocol (MCP)\n\nThe Model-Completions-Protocol (MCP) is a core feature of the AI CAD SDK that optimizes AI interactions through smart caching, prioritization, and routing. This system provides several key benefits:\n\n### 1. Smart Caching\n\nMCP includes both exact and semantic caching capabilities:\n\n```typescript\nimport { mcpConfigManager } from 'ai-cad-sdk';\n\n// Set caching strategy\nmcpConfigManager.updateStrategyConfig('balanced', {\n  cacheStrategy: 'semantic', // 'exact', 'semantic', or 'hybrid'\n  minSimilarity: 0.8,        // Threshold for semantic matching (0.0 to 1.0)\n  cacheTTL: 43200000         // Cache lifetime in milliseconds (12 hours)\n});\n```\n\n### 2. Request Prioritization\n\nMCP prioritizes requests based on their importance:\n\n```typescript\nimport { mcpService } from 'ai-cad-sdk';\n\n// High priority (interactive user request)\nawait mcpService.enqueue(userRequest, 'high');\n\n// Normal priority (standard request)\nawait mcpService.enqueue(standardRequest, 'normal');\n\n// Low priority (background task)\nawait mcpService.enqueue(backgroundTask, 'low');\n```\n\n### 3. Multi-Provider Smart Routing\n\nMCP can now automatically select the best AI model based on task requirements:\n\n```typescript\nimport { mcpConfigManager } from 'ai-cad-sdk';\n\n// Enable multi-provider support\nmcpConfigManager.setMultiProviderEnabled(true);\n\n// Set preferred provider (optional)\nmcpConfigManager.setPreferredProvider('CLAUDE');\n\n// The MCP will now intelligently route requests between providers (Claude and OpenAI)\n// based on task complexity, required capabilities, and performance needs\n```\n\nWhen using smart routing, provide metadata about your task:\n\n```typescript\nconst response = await aiService.generateContent({\n  prompt: \"Explain how gears work in mechanical systems\",\n  metadata: {\n    type: 'technical_explanation',   // Task type\n    complexity: 'medium',            // Task complexity\n    requiresReasoning: true,         // Required capabilities\n    requiresFactual: true\n  },\n  useMCP: true\n});\n\n// MCP will automatically select the most appropriate model based on these requirements\n```\n\n### 4. Performance Monitoring\n\nMCP tracks key performance metrics:\n\n```typescript\nimport { mcpService } from 'ai-cad-sdk';\n\n// Get MCP performance stats\nconst stats = await mcpService.getStats();\nconsole.log(stats);\n```\n\n### 5. Pre-configured Strategies\n\nMCP provides three pre-configured strategies:\n\n```typescript\nimport { mcpConfigManager } from 'ai-cad-sdk';\n\n// 1. Aggressive: Prioritizes speed and cache hits\nmcpConfigManager.setStrategy('aggressive');\n\n// 2. Balanced: Good balance between speed and quality\nmcpConfigManager.setStrategy('balanced');\n\n// 3. Conservative: Prioritizes quality and accuracy\nmcpConfigManager.setStrategy('conservative');\n```\n\n## Core Services\n\n### AI Service\n\nThe unified AI service provides methods for all AI interactions:\n\n```typescript\n// Get the AI service\nconst aiService = aiCADCore.getAIService();\n\n// Text to CAD\nconst cadResponse = await aiService.textToCAD({\n  description: 'A mechanical assembly with gears and bearings',\n  complexity: 'complex'\n});\n\n// Design analysis\nconst analysisResponse = await aiService.analyzeDesign({\n  elements: myCADElements,\n  analysisType: 'manufacturability'\n});\n\n// G-code optimization\nconst gcodeResponse = await aiService.optimizeGCode({\n  gcode: myGCode,\n  machineType: 'cnc_mill',\n  material: 'aluminum'\n});\n\n// Generate suggestions\nconst suggestionsResponse = await aiService.generateSuggestions(\n  'Current user is designing a chair with uneven leg heights',\n  'cad'\n);\n```\n\n### MCP Service\n\nFor direct access to the MCP functionality:\n\n```typescript\n// Get the MCP service\nconst mcpService = aiCADCore.getMCPService();\n\n// Enqueue a request with priority\nconst result = await mcpService.enqueue(myRequest, 'high');\n\n// Configure MCP settings\nmcpService.setSemanticCacheEnabled(true);\nmcpService.setSmartRoutingEnabled(true);\nmcpService.setDefaultTTL(3600000); // 1 hour\n```\n\n### Smart Router\n\nThe new Smart Router component selects the optimal AI model for each task:\n\n```typescript\nimport { smartRouter } from 'ai-cad-sdk';\n\n// Get model recommendation\nconst recommendedModel = smartRouter.selectModel({\n  taskType: 'code',\n  complexityLevel: 'high',\n  priority: 'quality',\n  requiredCapabilities: ['reasoning', 'code'],\n  promptTokenEstimate: 1000,\n  outputTokenEstimate: 1500\n});\n\n// Get model metadata\nconst modelInfo = smartRouter.getModelMetadata(recommendedModel);\nconsole.log(`Selected model: ${recommendedModel}`);\nconsole.log(`Provider: ${modelInfo.provider}`);\nconsole.log(`Strengths: ${modelInfo.strengths.join(', ')}`);\n\n// Estimate cost\nconst estimatedCost = smartRouter.estimateCost(\n  recommendedModel,\n  1000, // input tokens\n  1500  // output tokens\n);\nconsole.log(`Estimated cost: $${estimatedCost.toFixed(4)}`);\n```\n\n### Cache Service\n\nManage the AI response cache:\n\n```typescript\n// Get the cache service\nconst cacheService = aiCADCore.getCacheService();\n\n// Configure cache\ncacheService.setMaxSize(100);\ncacheService.setTTL(3600000); // 1 hour\n\n// Get cache statistics\nconst stats = cacheService.getStats();\nconsole.log(`Cache size: ${stats.totalItems}, Memory usage: ${stats.memoryUsage} bytes`);\n```\n\n### Analytics Service\n\nTrack and analyze AI usage:\n\n```typescript\n// Get the analytics service\nconst analyticsService = aiCADCore.getAnalyticsService();\n\n// Get performance metrics\nconst metrics = analyticsService.getMetrics();\nconsole.log(`Success rate: ${metrics.successRate}%, Avg response time: ${metrics.averageResponseTime}ms`);\n\n// Track custom event\nanalyticsService.trackEvent({\n  eventType: 'custom',\n  eventName: 'user_approved_suggestion',\n  success: true,\n  metadata: { suggestionId: '123' }\n});\n```\n\n## Examples\n\nCheck out the [examples](./examples) directory for more usage examples:\n\n- [Text to CAD](./examples/textToCAD.ts)\n- [Design Analysis](./examples/designAnalysis.ts)\n- [MCP System](./examples/mcpExample.ts)\n\n## Best Practices\n\n1. **Enable MCP**: Turn on MCP for most production applications to benefit from its optimizations.\n2. **Choose Right Strategy**: Select a strategy that matches your quality/speed requirements.\n3. **Set Appropriate TTL**: Configure cache TTL based on how frequently your data or requirements change.\n4. **Monitor Performance**: Regularly check analytics to identify optimization opportunities.\n5. **Provide Metadata**: When making AI requests, include metadata about task type and complexity to allow better model selection.\n6. **Use Multi-provider**: Enable multi-provider support to leverage the strengths of different AI models for various tasks.\n\n## License\n\nMIT","readmeFilename":"README.md","_rev":"1-481ae54b7bca12b0547ee9d9534bee6d"}