@scenemesh/entity-engine-aimodule 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +854 -0
- package/dist/ai-core-LBGYFGOK.mjs +17 -0
- package/dist/ai-core-LBGYFGOK.mjs.map +1 -0
- package/dist/ai-core-UGJWSCQN.js +17 -0
- package/dist/ai-core-UGJWSCQN.js.map +1 -0
- package/dist/ai-core-manager-B3Z34RHA.mjs +9 -0
- package/dist/ai-core-manager-B3Z34RHA.mjs.map +1 -0
- package/dist/ai-core-manager-W7SSDCG5.js +9 -0
- package/dist/ai-core-manager-W7SSDCG5.js.map +1 -0
- package/dist/ai-embeddings-5ED5LDXX.mjs +17 -0
- package/dist/ai-embeddings-5ED5LDXX.mjs.map +1 -0
- package/dist/ai-embeddings-WCXZMMTZ.js +17 -0
- package/dist/ai-embeddings-WCXZMMTZ.js.map +1 -0
- package/dist/ai-form-renderer-24IWNMX5.js +233 -0
- package/dist/ai-form-renderer-24IWNMX5.js.map +1 -0
- package/dist/ai-form-renderer-BORQABF2.mjs +233 -0
- package/dist/ai-form-renderer-BORQABF2.mjs.map +1 -0
- package/dist/ai-provider-3PSCVEEN.mjs +17 -0
- package/dist/ai-provider-3PSCVEEN.mjs.map +1 -0
- package/dist/ai-provider-WMPMVZFL.js +17 -0
- package/dist/ai-provider-WMPMVZFL.js.map +1 -0
- package/dist/ai-renderer-7WGGWH5D.mjs +134 -0
- package/dist/ai-renderer-7WGGWH5D.mjs.map +1 -0
- package/dist/ai-renderer-OILYWAJV.js +134 -0
- package/dist/ai-renderer-OILYWAJV.js.map +1 -0
- package/dist/ai-settings-DGCFPK3U.js +15 -0
- package/dist/ai-settings-DGCFPK3U.js.map +1 -0
- package/dist/ai-settings-DTXEAB64.mjs +15 -0
- package/dist/ai-settings-DTXEAB64.mjs.map +1 -0
- package/dist/ai-structured-EGZ26ZS4.mjs +13 -0
- package/dist/ai-structured-EGZ26ZS4.mjs.map +1 -0
- package/dist/ai-structured-N2FZLO4A.js +13 -0
- package/dist/ai-structured-N2FZLO4A.js.map +1 -0
- package/dist/ai-tools-B3R77HZ3.js +19 -0
- package/dist/ai-tools-B3R77HZ3.js.map +1 -0
- package/dist/ai-tools-JAPVYQGE.mjs +19 -0
- package/dist/ai-tools-JAPVYQGE.mjs.map +1 -0
- package/dist/ai.module-GAHVCBTP.js +7 -0
- package/dist/ai.module-GAHVCBTP.js.map +1 -0
- package/dist/ai.module-TTPMTPB3.mjs +7 -0
- package/dist/ai.module-TTPMTPB3.mjs.map +1 -0
- package/dist/chunk-25C2NRSD.mjs +611 -0
- package/dist/chunk-25C2NRSD.mjs.map +1 -0
- package/dist/chunk-4JQ7UOXH.js +427 -0
- package/dist/chunk-4JQ7UOXH.js.map +1 -0
- package/dist/chunk-6IUKES2L.js +290 -0
- package/dist/chunk-6IUKES2L.js.map +1 -0
- package/dist/chunk-COWPK7XN.mjs +834 -0
- package/dist/chunk-COWPK7XN.mjs.map +1 -0
- package/dist/chunk-CTEXPMVZ.js +512 -0
- package/dist/chunk-CTEXPMVZ.js.map +1 -0
- package/dist/chunk-DXQTHA75.js +573 -0
- package/dist/chunk-DXQTHA75.js.map +1 -0
- package/dist/chunk-DZFQ6I23.js +72 -0
- package/dist/chunk-DZFQ6I23.js.map +1 -0
- package/dist/chunk-J323UTPE.mjs +650 -0
- package/dist/chunk-J323UTPE.mjs.map +1 -0
- package/dist/chunk-LHNNALVF.js +834 -0
- package/dist/chunk-LHNNALVF.js.map +1 -0
- package/dist/chunk-O7SZSMXV.js +1621 -0
- package/dist/chunk-O7SZSMXV.js.map +1 -0
- package/dist/chunk-OTNOFOVW.js +650 -0
- package/dist/chunk-OTNOFOVW.js.map +1 -0
- package/dist/chunk-PRIGZEI4.mjs +72 -0
- package/dist/chunk-PRIGZEI4.mjs.map +1 -0
- package/dist/chunk-SBSZ3IPB.mjs +573 -0
- package/dist/chunk-SBSZ3IPB.mjs.map +1 -0
- package/dist/chunk-SXPA6SSD.mjs +1621 -0
- package/dist/chunk-SXPA6SSD.mjs.map +1 -0
- package/dist/chunk-T5A4KAVS.mjs +512 -0
- package/dist/chunk-T5A4KAVS.mjs.map +1 -0
- package/dist/chunk-TDRKKUNT.mjs +357 -0
- package/dist/chunk-TDRKKUNT.mjs.map +1 -0
- package/dist/chunk-TJFNODPE.js +357 -0
- package/dist/chunk-TJFNODPE.js.map +1 -0
- package/dist/chunk-V2SSI3SL.mjs +427 -0
- package/dist/chunk-V2SSI3SL.mjs.map +1 -0
- package/dist/chunk-X42L6MTY.mjs +290 -0
- package/dist/chunk-X42L6MTY.mjs.map +1 -0
- package/dist/chunk-YSVMY77H.js +611 -0
- package/dist/chunk-YSVMY77H.js.map +1 -0
- package/dist/core-ANYRS6EF.mjs +73 -0
- package/dist/core-ANYRS6EF.mjs.map +1 -0
- package/dist/core-K5K34DCS.js +73 -0
- package/dist/core-K5K34DCS.js.map +1 -0
- package/dist/core-index.d.mts +1668 -0
- package/dist/core-index.d.ts +1668 -0
- package/dist/core-index.js +101 -0
- package/dist/core-index.js.map +1 -0
- package/dist/core-index.mjs +101 -0
- package/dist/core-index.mjs.map +1 -0
- package/dist/index.d.mts +2911 -0
- package/dist/index.d.ts +2911 -0
- package/dist/index.js +1177 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +1177 -0
- package/dist/index.mjs.map +1 -0
- package/dist/tools-352X7A6X.mjs +366 -0
- package/dist/tools-352X7A6X.mjs.map +1 -0
- package/dist/tools-YLEX6GNO.js +366 -0
- package/dist/tools-YLEX6GNO.js.map +1 -0
- package/dist/ui-index.d.mts +627 -0
- package/dist/ui-index.d.ts +627 -0
- package/dist/ui-index.js +2354 -0
- package/dist/ui-index.js.map +1 -0
- package/dist/ui-index.mjs +2353 -0
- package/dist/ui-index.mjs.map +1 -0
- package/package.json +105 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/Users/shixin/dev/workspaces/scenemesh-projects/scenemesh-platform-workbench5/packages/entity-engine-aimodule/dist/chunk-CTEXPMVZ.js","../src/core/ai-core-manager.ts"],"names":[],"mappings":"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","file":"/Users/shixin/dev/workspaces/scenemesh-projects/scenemesh-platform-workbench5/packages/entity-engine-aimodule/dist/chunk-CTEXPMVZ.js","sourcesContent":[null,"/**\n * AI Core Manager - Unified Core Management\n * \n * 协调所有AI功能组件,提供统一的管理接口\n * 这是所有AI功能的中央协调器和主要入口点\n */\n\nimport type { AISDKIntegration } from './ai-core';\nimport type { AIToolsIntegration } from './ai-tools';\nimport type { AIProviderManagement } from './ai-provider';\nimport type { AISettingsManagement } from './ai-settings';\nimport type { AIEmbeddingsIntegration } from './ai-embeddings';\nimport type { AIStructuredDataIntegration } from './ai-structured';\n\nimport { EventEmitter } from 'events';\n\n// ================================\n// Type definitions\n// ================================\n\n/**\n * AI Core配置\n */\nexport interface AICoreConfig {\n // 组件启用配置\n components?: {\n aiSDK?: boolean;\n providerManagement?: boolean;\n toolsIntegration?: boolean;\n embeddingsIntegration?: boolean;\n settingsManagement?: boolean;\n structuredData?: boolean;\n };\n\n // AI SDK配置\n aiSDK?: {\n defaultSettings?: {\n temperature?: number;\n maxOutputTokens?: number;\n topP?: number;\n topK?: number;\n };\n };\n\n // Provider配置\n providers?: {\n autoHealthCheck?: boolean;\n healthCheckInterval?: number;\n fallbackEnabled?: boolean;\n };\n\n // 工具配置\n tools?: {\n enableMCP?: boolean;\n enableDynamic?: boolean;\n maxSteps?: number;\n timeout?: number;\n };\n\n // 嵌入配置\n embeddings?: {\n defaultModel?: string;\n batchSize?: number;\n maxParallelCalls?: number;\n };\n\n // 设置配置\n settings?: {\n enablePresets?: boolean;\n enableValidation?: boolean;\n enableDynamic?: boolean;\n };\n\n // 监控配置\n monitoring?: {\n enabled?: boolean;\n collectMetrics?: boolean;\n enableEvents?: boolean;\n logLevel?: 'error' | 'warn' | 'info' | 'debug';\n };\n\n // Entity Engine配置\n entity?: {\n enabled?: boolean;\n autoToolGeneration?: boolean;\n contextExtraction?: boolean;\n permissionChecking?: boolean;\n };\n}\n\n/**\n * AI Core统计信息\n */\nexport interface AICoreStats {\n // 初始化状态\n isInitialized: boolean;\n initializationTime: number;\n uptime: number;\n\n // 组件状态\n components: {\n aiSDK: boolean;\n providerManagement: boolean;\n toolsIntegration: boolean;\n embeddingsIntegration: boolean;\n settingsManagement: boolean;\n structuredData: boolean;\n };\n\n // 使用统计\n usage: {\n totalRequests: number;\n successfulRequests: number;\n failedRequests: number;\n averageLatency: number;\n totalTokens: number;\n errorRate: number;\n };\n\n // Provider统计\n providers: {\n totalProviders: number;\n healthyProviders: number;\n unhealthyProviders: number;\n totalModels: number;\n };\n\n // 性能指标\n performance: {\n memoryUsage: NodeJS.MemoryUsage;\n cpuUsage: NodeJS.CpuUsage;\n gcStats?: any;\n };\n}\n\n/**\n * 组件健康状态\n */\nexport interface ComponentHealth {\n name: string;\n status: 'healthy' | 'degraded' | 'unhealthy';\n lastCheck: Date;\n error?: string;\n details?: Record<string, any>;\n}\n\n// ================================\n// AI Core Manager class\n// ================================\n\n/**\n * AI Core Manager - 统一的AI功能管理器\n */\nexport class AICoreManager extends EventEmitter {\n private initialized: boolean = false;\n private config: Required<AICoreConfig>;\n private startTime: number = 0;\n private initializationTime: number = 0;\n private stats: AICoreStats;\n\n // 核心组件实例\n public aiSDK!: AISDKIntegration;\n public providerManagement!: AIProviderManagement;\n public toolsIntegration!: AIToolsIntegration;\n public embeddingsIntegration!: AIEmbeddingsIntegration;\n public settingsManagement!: AISettingsManagement;\n public structuredData!: AIStructuredDataIntegration;\n\n // 组件健康状态\n private componentHealth: Map<string, ComponentHealth> = new Map();\n private healthCheckInterval?: NodeJS.Timeout;\n\n constructor(config?: AICoreConfig) {\n super();\n\n // 设置默认配置\n this.config = {\n components: {\n aiSDK: true,\n providerManagement: true,\n toolsIntegration: true,\n embeddingsIntegration: true,\n settingsManagement: true,\n structuredData: true,\n ...config?.components\n },\n // AI SDK配置 - 默认设置现在从 settings management 获取\n aiSDK: {\n ...config?.aiSDK\n },\n providers: {\n autoHealthCheck: true,\n healthCheckInterval: 60000, // 1分钟\n fallbackEnabled: true,\n ...config?.providers\n },\n tools: {\n enableMCP: true,\n enableDynamic: true,\n maxSteps: 10,\n timeout: 30000,\n ...config?.tools\n },\n embeddings: {\n defaultModel: 'text-embedding-3-small',\n batchSize: 100,\n maxParallelCalls: 5,\n ...config?.embeddings\n },\n settings: {\n enablePresets: true,\n enableValidation: true,\n enableDynamic: true,\n ...config?.settings\n },\n monitoring: {\n enabled: true,\n collectMetrics: true,\n enableEvents: true,\n logLevel: 'info',\n ...config?.monitoring\n },\n entity: {\n enabled: false,\n autoToolGeneration: false,\n contextExtraction: false,\n permissionChecking: false,\n ...config?.entity\n }\n };\n\n // 初始化统计信息\n this.stats = {\n isInitialized: false,\n initializationTime: 0,\n uptime: 0,\n components: {\n aiSDK: false,\n providerManagement: false,\n toolsIntegration: false,\n embeddingsIntegration: false,\n settingsManagement: false,\n structuredData: false\n },\n usage: {\n totalRequests: 0,\n successfulRequests: 0,\n failedRequests: 0,\n averageLatency: 0,\n totalTokens: 0,\n errorRate: 0\n },\n providers: {\n totalProviders: 0,\n healthyProviders: 0,\n unhealthyProviders: 0,\n totalModels: 0\n },\n performance: {\n memoryUsage: typeof process !== 'undefined' && process.memoryUsage ? process.memoryUsage() : { rss: 0, heapUsed: 0, heapTotal: 0, external: 0, arrayBuffers: 0 },\n cpuUsage: typeof process !== 'undefined' && process.cpuUsage ? process.cpuUsage() : { user: 0, system: 0 }\n }\n };\n }\n\n /**\n * 初始化AI Core Manager\n */\n async initialize(): Promise<void> {\n if (this.initialized) {\n return;\n }\n\n const initStartTime = Date.now();\n\n try {\n this.emit('ai_core:initializing', { timestamp: new Date() });\n\n // 1. 创建所有组件实例\n await this.createComponents();\n\n // 2. 初始化所有组件\n await this.initializeComponents();\n\n // 3. 设置组件间的依赖关系\n await this.setupComponentRelationships();\n\n // 4. 启动监控和健康检查\n if (this.config.monitoring.enabled) {\n await this.startMonitoring();\n }\n\n // 5. 更新状态\n this.startTime = Date.now();\n this.initializationTime = this.startTime - initStartTime;\n this.initialized = true;\n this.stats.isInitialized = true;\n this.stats.initializationTime = this.initializationTime;\n\n this.emit('ai_core:initialized', {\n timestamp: new Date(),\n duration: this.initializationTime,\n components: Object.keys(this.stats.components)\n });\n\n } catch (error: any) {\n this.emit('ai_core:initialization_failed', {\n timestamp: new Date(),\n error: error.message,\n duration: Date.now() - initStartTime\n });\n\n throw error;\n }\n }\n\n // ================================\n // Component management\n // ================================\n\n /**\n * 创建所有组件实例\n */\n private async createComponents(): Promise<void> {\n this.emit('ai_core:creating_components');\n\n // 动态导入以避免循环依赖\n if (this.config.components.aiSDK) {\n const { AISDKIntegration } = await import('./ai-core');\n this.aiSDK = new AISDKIntegration();\n }\n\n if (this.config.components.providerManagement) {\n const { AIProviderManagement } = await import('./ai-provider');\n this.providerManagement = new AIProviderManagement();\n }\n\n if (this.config.components.toolsIntegration) {\n const { AIToolsIntegration } = await import('./ai-tools');\n this.toolsIntegration = new AIToolsIntegration();\n }\n\n if (this.config.components.embeddingsIntegration) {\n const { AIEmbeddingsIntegration } = await import('./ai-embeddings');\n this.embeddingsIntegration = new AIEmbeddingsIntegration();\n }\n\n if (this.config.components.settingsManagement) {\n const { AISettingsManagement } = await import('./ai-settings');\n this.settingsManagement = new AISettingsManagement();\n }\n\n if (this.config.components.structuredData) {\n const { AIStructuredDataIntegration } = await import('./ai-structured');\n this.structuredData = new AIStructuredDataIntegration();\n }\n\n this.emit('ai_core:components_created');\n }\n\n /**\n * 初始化所有组件\n */\n private async initializeComponents(): Promise<void> {\n this.emit('ai_core:initializing_components');\n\n const initPromises: Promise<void>[] = [];\n\n // 按依赖顺序初始化组件\n if (this.settingsManagement) {\n initPromises.push(\n this.settingsManagement.initialize().then(() => {\n this.stats.components.settingsManagement = true;\n this.updateComponentHealth('settingsManagement', 'healthy');\n })\n );\n }\n\n if (this.providerManagement) {\n initPromises.push(\n this.providerManagement.initialize().then(() => {\n this.stats.components.providerManagement = true;\n this.updateComponentHealth('providerManagement', 'healthy');\n })\n );\n }\n\n if (this.embeddingsIntegration) {\n initPromises.push(\n this.embeddingsIntegration.initialize().then(() => {\n this.stats.components.embeddingsIntegration = true;\n this.updateComponentHealth('embeddingsIntegration', 'healthy');\n })\n );\n }\n\n if (this.toolsIntegration) {\n initPromises.push(\n this.toolsIntegration.initialize().then(() => {\n this.stats.components.toolsIntegration = true;\n this.updateComponentHealth('toolsIntegration', 'healthy');\n })\n );\n }\n\n if (this.structuredData) {\n initPromises.push(\n this.structuredData.initialize().then(() => {\n this.stats.components.structuredData = true;\n this.updateComponentHealth('structuredData', 'healthy');\n })\n );\n }\n\n if (this.aiSDK) {\n initPromises.push(\n this.aiSDK.initialize().then(() => {\n this.stats.components.aiSDK = true;\n this.updateComponentHealth('aiSDK', 'healthy');\n })\n );\n }\n\n // 等待所有组件初始化完成\n await Promise.all(initPromises);\n\n this.emit('ai_core:components_initialized');\n }\n\n /**\n * 设置组件间的依赖关系\n */\n private async setupComponentRelationships(): Promise<void> {\n this.emit('ai_core:setting_up_relationships');\n\n // 设置事件监听,用于跨组件通信\n if (this.aiSDK && this.config.monitoring.enableEvents) {\n this.aiSDK.on('ai_sdk:stream_started', (data) => {\n this.stats.usage.totalRequests++;\n this.emit('ai_core:request_started', data);\n });\n\n this.aiSDK.on('ai_sdk:stream_finished', (data) => {\n this.stats.usage.successfulRequests++;\n if (data.usage?.totalTokens) {\n this.stats.usage.totalTokens += data.usage.totalTokens;\n }\n this.updateAverageLatency(data.latency);\n this.emit('ai_core:request_completed', data);\n });\n\n this.aiSDK.on('ai_sdk:stream_error', (data) => {\n this.stats.usage.failedRequests++;\n this.updateErrorRate();\n this.emit('ai_core:request_failed', data);\n });\n }\n\n if (this.providerManagement && this.config.monitoring.enableEvents) {\n this.providerManagement.on('ai_provider:health_check_completed', (data) => {\n this.updateProviderStats();\n this.emit('ai_core:provider_health_updated', data);\n });\n }\n\n this.emit('ai_core:relationships_setup');\n }\n\n // ================================\n // Monitoring and health checks\n // ================================\n\n /**\n * 启动监控系统\n */\n private async startMonitoring(): Promise<void> {\n this.emit('ai_core:starting_monitoring');\n\n // 启动性能监控\n if (this.config.monitoring.collectMetrics) {\n setInterval(() => {\n this.updatePerformanceStats();\n }, 5000); // 每5秒更新一次性能数据\n }\n\n // 启动健康检查\n if (this.config.providers.autoHealthCheck) {\n this.healthCheckInterval = setInterval(async () => {\n await this.performHealthCheck();\n }, this.config.providers.healthCheckInterval);\n }\n\n this.emit('ai_core:monitoring_started');\n }\n\n /**\n * 执行健康检查\n */\n private async performHealthCheck(): Promise<void> {\n try {\n const components = [\n 'aiSDK',\n 'providerManagement', \n 'toolsIntegration',\n 'embeddingsIntegration',\n 'settingsManagement',\n 'structuredData'\n ];\n\n for (const componentName of components) {\n const component = (this as any)[componentName];\n if (component) {\n try {\n const isHealthy = component.isInitialized?.() ?? true;\n this.updateComponentHealth(\n componentName,\n isHealthy ? 'healthy' : 'unhealthy'\n );\n } catch (error: any) {\n this.updateComponentHealth(componentName, 'unhealthy', error.message);\n }\n }\n }\n\n // 检查Provider健康状态\n if (this.providerManagement) {\n await this.providerManagement.checkAllProvidersHealth();\n }\n\n } catch (error: any) {\n this.emit('ai_core:health_check_error', { error: error.message });\n }\n }\n\n /**\n * 更新组件健康状态\n */\n private updateComponentHealth(\n componentName: string,\n status: 'healthy' | 'degraded' | 'unhealthy',\n error?: string\n ): void {\n this.componentHealth.set(componentName, {\n name: componentName,\n status,\n lastCheck: new Date(),\n error\n });\n }\n\n /**\n * 更新性能统计\n */\n private updatePerformanceStats(): void {\n this.stats.uptime = Date.now() - this.startTime;\n \n // 只在 Node.js 环境中更新性能统计\n if (typeof process !== 'undefined') {\n if (process.memoryUsage) {\n this.stats.performance.memoryUsage = process.memoryUsage();\n }\n if (process.cpuUsage) {\n this.stats.performance.cpuUsage = process.cpuUsage(this.stats.performance.cpuUsage);\n }\n }\n }\n\n /**\n * 更新平均延迟\n */\n private updateAverageLatency(latency: number): void {\n const total = this.stats.usage.totalRequests;\n this.stats.usage.averageLatency = \n (this.stats.usage.averageLatency * (total - 1) + latency) / total;\n }\n\n /**\n * 更新错误率\n */\n private updateErrorRate(): void {\n this.stats.usage.errorRate = \n this.stats.usage.failedRequests / this.stats.usage.totalRequests;\n }\n\n /**\n * 更新Provider统计\n */\n private updateProviderStats(): void {\n if (this.providerManagement) {\n const healthReport = this.providerManagement.getHealthReport();\n this.stats.providers = {\n totalProviders: healthReport.totalProviders,\n healthyProviders: healthReport.healthyProviders,\n unhealthyProviders: healthReport.unhealthyProviders,\n totalModels: this.providerManagement.getRegisteredProviders().length\n };\n }\n }\n\n // ================================\n // Public API methods\n // ================================\n\n /**\n * 获取完整的统计信息\n */\n getStats(): AICoreStats {\n this.updatePerformanceStats();\n return { ...this.stats };\n }\n\n /**\n * 获取组件健康状态\n */\n getComponentHealth(): ComponentHealth[] {\n return Array.from(this.componentHealth.values());\n }\n\n /**\n * 获取整体健康状态\n */\n getOverallHealth(): {\n status: 'healthy' | 'degraded' | 'unhealthy';\n components: ComponentHealth[];\n summary: string;\n } {\n const components = this.getComponentHealth();\n const healthyCount = components.filter(c => c.status === 'healthy').length;\n const totalCount = components.length;\n\n let status: 'healthy' | 'degraded' | 'unhealthy';\n let summary: string;\n\n if (healthyCount === totalCount) {\n status = 'healthy';\n summary = 'All components are healthy';\n } else if (healthyCount >= totalCount * 0.5) {\n status = 'degraded';\n summary = `${healthyCount}/${totalCount} components are healthy`;\n } else {\n status = 'unhealthy';\n summary = `Only ${healthyCount}/${totalCount} components are healthy`;\n }\n\n return { status, components, summary };\n }\n\n /**\n * 获取AI默认设置 - 从设置管理器统一获取\n */\n getDefaultSettings() {\n if (!this.settingsManagement?.isInitialized()) {\n // 如果设置管理器未初始化,返回基本默认值\n return {\n temperature: 0.7,\n maxOutputTokens: 2048,\n topP: 0.95,\n topK: 50\n };\n }\n return this.settingsManagement.getDefaultSettings();\n }\n\n /**\n * 获取配置信息\n */\n getConfig(): AICoreConfig {\n return { ...this.config };\n }\n\n /**\n * 热重载配置\n */\n async updateConfig(newConfig: Partial<AICoreConfig>): Promise<void> {\n this.emit('ai_core:config_updating', { newConfig });\n\n // 深度合并配置\n this.config = this.deepMerge(this.config, newConfig) as Required<AICoreConfig>;\n\n // 应用新配置到各组件(如果需要)\n // 注意:某些配置可能需要重启组件才能生效\n\n this.emit('ai_core:config_updated', { config: this.config });\n }\n\n /**\n * 重启指定组件\n */\n async restartComponent(componentName: string): Promise<void> {\n const component = (this as any)[componentName];\n if (!component) {\n throw new Error(`Component '${componentName}' not found`);\n }\n\n this.emit('ai_core:component_restarting', { componentName });\n\n try {\n // 销毁组件\n if (component.destroy) {\n await component.destroy();\n }\n\n // 重新初始化\n await component.initialize();\n\n this.updateComponentHealth(componentName, 'healthy');\n this.emit('ai_core:component_restarted', { componentName });\n\n } catch (error: any) {\n this.updateComponentHealth(componentName, 'unhealthy', error.message);\n this.emit('ai_core:component_restart_failed', { \n componentName, \n error: error.message \n });\n throw error;\n }\n }\n\n /**\n * 优雅关闭\n */\n async gracefulShutdown(): Promise<void> {\n this.emit('ai_core:shutting_down');\n\n // 停止健康检查\n if (this.healthCheckInterval) {\n clearInterval(this.healthCheckInterval);\n }\n\n // 销毁所有组件\n const destroyPromises: Promise<void>[] = [];\n\n if (this.aiSDK?.destroy) {\n destroyPromises.push(Promise.resolve(this.aiSDK.destroy()));\n }\n if (this.providerManagement?.destroy) {\n destroyPromises.push(Promise.resolve(this.providerManagement.destroy()));\n }\n if (this.toolsIntegration?.destroy) {\n destroyPromises.push(Promise.resolve(this.toolsIntegration.destroy()));\n }\n if (this.embeddingsIntegration?.destroy) {\n destroyPromises.push(Promise.resolve(this.embeddingsIntegration.destroy()));\n }\n if (this.settingsManagement?.destroy) {\n destroyPromises.push(Promise.resolve(this.settingsManagement.destroy()));\n }\n if (this.structuredData?.destroy) {\n destroyPromises.push(Promise.resolve(this.structuredData.destroy()));\n }\n\n await Promise.all(destroyPromises);\n\n // 清理状态\n this.removeAllListeners();\n this.initialized = false;\n this.componentHealth.clear();\n\n this.emit('ai_core:shutdown_complete');\n }\n\n /**\n * 深度合并对象\n */\n private deepMerge<T>(target: T, source: Partial<T>): T {\n const result = { ...target };\n\n for (const key in source) {\n if (source[key] && typeof source[key] === 'object' && !Array.isArray(source[key])) {\n (result as any)[key] = this.deepMerge((target as any)[key] || {}, source[key] as any);\n } else {\n (result as any)[key] = source[key];\n }\n }\n\n return result;\n }\n\n /**\n * 检查初始化状态\n */\n isInitialized(): boolean {\n return this.initialized;\n }\n}\n\n// 默认导出\nexport default AICoreManager;"]}
|
|
@@ -0,0 +1,573 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }// src/entity-module/ai.module.ts
|
|
2
|
+
var _dotenv = require('dotenv');
|
|
3
|
+
|
|
4
|
+
// src/entity-module/module.json
|
|
5
|
+
var module_default = {
|
|
6
|
+
name: "entity-engine-ai-module",
|
|
7
|
+
description: "Complete AI Module with Chat, Completion and Object Generation",
|
|
8
|
+
provider: "@scenemesh/entity-engine-aimodule",
|
|
9
|
+
version: "1.0.0",
|
|
10
|
+
url: "https://github.com/scenemesh/entity-engine-aimodule",
|
|
11
|
+
dependencies: ["@ai-sdk/react", "@ai-sdk/openai"]
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
// src/entity-module/views/ai-view.ts
|
|
15
|
+
var aiSettingsView = {
|
|
16
|
+
name: "ai-settings-view",
|
|
17
|
+
title: "AI Settings",
|
|
18
|
+
description: "AI Module Settings Management",
|
|
19
|
+
modelName: "ai-settings",
|
|
20
|
+
viewType: "form",
|
|
21
|
+
items: [
|
|
22
|
+
{
|
|
23
|
+
name: "defaultProvider",
|
|
24
|
+
title: "Default Provider"
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
name: "defaultModel",
|
|
28
|
+
title: "Default Model"
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
name: "temperature",
|
|
32
|
+
title: "Temperature"
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
name: "maxTokens",
|
|
36
|
+
title: "Max Tokens"
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
name: "enableTools",
|
|
40
|
+
title: "Enable Tools"
|
|
41
|
+
}
|
|
42
|
+
],
|
|
43
|
+
canEdit: true,
|
|
44
|
+
canNew: true,
|
|
45
|
+
canDelete: true
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
// src/entity-module/views/index.ts
|
|
49
|
+
var aiViews = [
|
|
50
|
+
aiSettingsView
|
|
51
|
+
];
|
|
52
|
+
|
|
53
|
+
// src/entity-module/models/ai-model.ts
|
|
54
|
+
var aiProviderModel = {
|
|
55
|
+
name: "ai-provider",
|
|
56
|
+
title: "AI Provider",
|
|
57
|
+
description: "AI Provider Configuration",
|
|
58
|
+
fields: [
|
|
59
|
+
{
|
|
60
|
+
name: "providerId",
|
|
61
|
+
title: "Provider ID",
|
|
62
|
+
type: "string",
|
|
63
|
+
isRequired: true
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
name: "providerName",
|
|
67
|
+
title: "Provider Name",
|
|
68
|
+
type: "string",
|
|
69
|
+
isRequired: true
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
name: "baseURL",
|
|
73
|
+
title: "Base URL",
|
|
74
|
+
type: "string",
|
|
75
|
+
isRequired: true
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
name: "apiKey",
|
|
79
|
+
title: "API Key",
|
|
80
|
+
type: "string",
|
|
81
|
+
isRequired: true
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
name: "models",
|
|
85
|
+
title: "Available Models",
|
|
86
|
+
type: "json",
|
|
87
|
+
defaultValue: []
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
name: "isActive",
|
|
91
|
+
title: "Is Active",
|
|
92
|
+
type: "boolean",
|
|
93
|
+
defaultValue: true
|
|
94
|
+
}
|
|
95
|
+
]
|
|
96
|
+
};
|
|
97
|
+
|
|
98
|
+
// src/entity-module/models/index.ts
|
|
99
|
+
var aiModels = [
|
|
100
|
+
aiProviderModel
|
|
101
|
+
];
|
|
102
|
+
|
|
103
|
+
// src/entity-module/servlets/ai-servlet.ts
|
|
104
|
+
var _ai = require('ai');
|
|
105
|
+
var CORS_HEADERS = {
|
|
106
|
+
"Access-Control-Allow-Origin": "*",
|
|
107
|
+
"Access-Control-Allow-Methods": "GET, POST, PUT, DELETE, OPTIONS",
|
|
108
|
+
"Access-Control-Allow-Headers": "Content-Type, Authorization, X-Requested-With",
|
|
109
|
+
"Access-Control-Max-Age": "86400"
|
|
110
|
+
};
|
|
111
|
+
async function getCoreManager() {
|
|
112
|
+
const { EntityAIModule: EntityAIModule2 } = await Promise.resolve().then(() => _interopRequireWildcard(require("./ai.module-GAHVCBTP.js")));
|
|
113
|
+
const moduleInstance = EntityAIModule2.getInstance();
|
|
114
|
+
if (!_optionalChain([moduleInstance, 'optionalAccess', _ => _.coreManager])) {
|
|
115
|
+
throw new Error("AICoreManager not initialized. Please ensure EntityAIModule is properly setup.");
|
|
116
|
+
}
|
|
117
|
+
return moduleInstance.coreManager;
|
|
118
|
+
}
|
|
119
|
+
async function handleChatRequest(req, res) {
|
|
120
|
+
let body;
|
|
121
|
+
let systemDefaults;
|
|
122
|
+
try {
|
|
123
|
+
const request = req.req;
|
|
124
|
+
body = await request.json();
|
|
125
|
+
} catch (error) {
|
|
126
|
+
const coreManager2 = await getCoreManager();
|
|
127
|
+
systemDefaults = coreManager2.settingsManagement.getSystemDefaults();
|
|
128
|
+
const errorResponse = new Response(
|
|
129
|
+
JSON.stringify({ error: "Failed to parse request body", details: error.message }),
|
|
130
|
+
{ status: 400, headers: { ...CORS_HEADERS, "Content-Type": "application/json" } }
|
|
131
|
+
);
|
|
132
|
+
res.write(errorResponse);
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
const coreManager = await getCoreManager();
|
|
136
|
+
systemDefaults = coreManager.settingsManagement.getSystemDefaults();
|
|
137
|
+
if (!body.messages || !Array.isArray(body.messages)) {
|
|
138
|
+
const response = new Response(
|
|
139
|
+
JSON.stringify({ error: "Invalid request: messages array is required" }),
|
|
140
|
+
{ status: 400, headers: { ...CORS_HEADERS, "Content-Type": "application/json" } }
|
|
141
|
+
);
|
|
142
|
+
res.write(response);
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
const modelId = body.model || `${systemDefaults.defaultProvider}:${systemDefaults.defaultModel}`;
|
|
146
|
+
const resolvedModel = await coreManager.providerManagement.getLanguageModel(modelId);
|
|
147
|
+
if (!resolvedModel) {
|
|
148
|
+
const errorResponse = new Response(
|
|
149
|
+
JSON.stringify({
|
|
150
|
+
error: "Model not available",
|
|
151
|
+
details: `Failed to resolve model: ${modelId}`,
|
|
152
|
+
modelId
|
|
153
|
+
}),
|
|
154
|
+
{ status: 500, headers: { ...CORS_HEADERS, "Content-Type": "application/json" } }
|
|
155
|
+
);
|
|
156
|
+
res.write(errorResponse);
|
|
157
|
+
return;
|
|
158
|
+
}
|
|
159
|
+
const messagesWithId = body.messages.map((msg, index) => {
|
|
160
|
+
let content = msg.content;
|
|
161
|
+
if (!content && msg.parts && Array.isArray(msg.parts)) {
|
|
162
|
+
const textParts = msg.parts.filter((part) => part.type === "text");
|
|
163
|
+
content = textParts.map((part) => part.text).join(" ");
|
|
164
|
+
}
|
|
165
|
+
return {
|
|
166
|
+
...msg,
|
|
167
|
+
content,
|
|
168
|
+
id: msg.id || `msg-${Date.now()}-${index}`
|
|
169
|
+
};
|
|
170
|
+
});
|
|
171
|
+
try {
|
|
172
|
+
const finalMessages = messagesWithId.map((msg) => ({
|
|
173
|
+
role: msg.role,
|
|
174
|
+
content: msg.content
|
|
175
|
+
}));
|
|
176
|
+
const systemPromptToUse = body.system || systemDefaults.systemPrompt;
|
|
177
|
+
const streamTextOptions = {
|
|
178
|
+
model: resolvedModel,
|
|
179
|
+
messages: finalMessages,
|
|
180
|
+
system: systemPromptToUse,
|
|
181
|
+
maxOutputTokens: body.maxTokens || systemDefaults.maxOutputTokens,
|
|
182
|
+
temperature: _nullishCoalesce(body.temperature, () => ( systemDefaults.temperature)),
|
|
183
|
+
topP: _nullishCoalesce(body.topP, () => ( systemDefaults.topP)),
|
|
184
|
+
topK: _nullishCoalesce(body.topK, () => ( systemDefaults.topK)),
|
|
185
|
+
presencePenalty: _nullishCoalesce(body.presencePenalty, () => ( systemDefaults.presencePenalty)),
|
|
186
|
+
frequencyPenalty: _nullishCoalesce(body.frequencyPenalty, () => ( systemDefaults.frequencyPenalty)),
|
|
187
|
+
seed: body.seed,
|
|
188
|
+
onError: ({ error }) => {
|
|
189
|
+
console.error("AI Chat Stream Error:", error);
|
|
190
|
+
}
|
|
191
|
+
};
|
|
192
|
+
if (body.tools !== false && systemDefaults.enableTools) {
|
|
193
|
+
try {
|
|
194
|
+
const { tool } = await Promise.resolve().then(() => _interopRequireWildcard(require("ai")));
|
|
195
|
+
const { z } = await Promise.resolve().then(() => _interopRequireWildcard(require("zod")));
|
|
196
|
+
const {
|
|
197
|
+
weatherTool,
|
|
198
|
+
locationTool,
|
|
199
|
+
entityQueryTool,
|
|
200
|
+
recordGetValuesTool,
|
|
201
|
+
recordSetValuesTool,
|
|
202
|
+
recordResetFormTool,
|
|
203
|
+
recordValidateFormTool,
|
|
204
|
+
recordGetFieldInfoTool
|
|
205
|
+
} = await Promise.resolve().then(() => _interopRequireWildcard(require("./tools-YLEX6GNO.js")));
|
|
206
|
+
const tools = {
|
|
207
|
+
// Static tools - server-side execution
|
|
208
|
+
getWeather: weatherTool,
|
|
209
|
+
getLocation: locationTool,
|
|
210
|
+
// Dynamic tools - server-side execution
|
|
211
|
+
entityQuery: entityQueryTool,
|
|
212
|
+
// Frontend proxy tools - registered via standard AI SDK, proxied to frontend during execution
|
|
213
|
+
recordGetValues: recordGetValuesTool,
|
|
214
|
+
recordSetValues: recordSetValuesTool,
|
|
215
|
+
recordResetForm: recordResetFormTool,
|
|
216
|
+
recordValidateForm: recordValidateFormTool,
|
|
217
|
+
recordGetFieldInfo: recordGetFieldInfoTool
|
|
218
|
+
};
|
|
219
|
+
streamTextOptions.tools = tools;
|
|
220
|
+
streamTextOptions.stopWhen = _ai.stepCountIs.call(void 0, 5);
|
|
221
|
+
} catch (error) {
|
|
222
|
+
console.error("Failed to load tools:", error);
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
const result = coreManager.aiSDK.streamText(streamTextOptions);
|
|
226
|
+
const response = result.toUIMessageStreamResponse({
|
|
227
|
+
headers: CORS_HEADERS,
|
|
228
|
+
onToolResult: ({ toolResult }) => {
|
|
229
|
+
}
|
|
230
|
+
});
|
|
231
|
+
res.write(response);
|
|
232
|
+
} catch (error) {
|
|
233
|
+
const errorResponse = new Response(
|
|
234
|
+
JSON.stringify({
|
|
235
|
+
error: "AI service error",
|
|
236
|
+
details: error.message,
|
|
237
|
+
type: error.constructor.name
|
|
238
|
+
}),
|
|
239
|
+
{ status: 500, headers: { ...CORS_HEADERS, "Content-Type": "application/json" } }
|
|
240
|
+
);
|
|
241
|
+
res.write(errorResponse);
|
|
242
|
+
return;
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
async function handleCompletionRequest(req, res) {
|
|
246
|
+
const request = req.req;
|
|
247
|
+
const body = await request.json();
|
|
248
|
+
if (!body.prompt || typeof body.prompt !== "string") {
|
|
249
|
+
const response2 = new Response(
|
|
250
|
+
JSON.stringify({ error: "Invalid request: prompt string is required" }),
|
|
251
|
+
{ status: 400, headers: { ...CORS_HEADERS, "Content-Type": "application/json" } }
|
|
252
|
+
);
|
|
253
|
+
res.write(response2);
|
|
254
|
+
return;
|
|
255
|
+
}
|
|
256
|
+
const coreManager = await getCoreManager();
|
|
257
|
+
const modelId = body.model || "qwen:qwen-plus-2025-01-25";
|
|
258
|
+
const resolvedModel = await coreManager.providerManagement.getLanguageModel(modelId);
|
|
259
|
+
const generateTextOptions = {
|
|
260
|
+
model: resolvedModel,
|
|
261
|
+
prompt: body.prompt,
|
|
262
|
+
maxOutputTokens: body.maxTokens || 4e3,
|
|
263
|
+
temperature: _nullishCoalesce(body.temperature, () => ( 0.7))
|
|
264
|
+
};
|
|
265
|
+
const result = coreManager.aiSDK.streamText(generateTextOptions);
|
|
266
|
+
const response = result.toTextStreamResponse({ headers: CORS_HEADERS });
|
|
267
|
+
res.write(response);
|
|
268
|
+
}
|
|
269
|
+
async function handleObjectRequest(req, res) {
|
|
270
|
+
const request = req.req;
|
|
271
|
+
const body = await request.json();
|
|
272
|
+
if (!body.prompt && !body.schema) {
|
|
273
|
+
const response2 = new Response(
|
|
274
|
+
JSON.stringify({ error: "Invalid request: prompt or schema is required" }),
|
|
275
|
+
{ status: 400, headers: { ...CORS_HEADERS, "Content-Type": "application/json" } }
|
|
276
|
+
);
|
|
277
|
+
res.write(response2);
|
|
278
|
+
return;
|
|
279
|
+
}
|
|
280
|
+
const coreManager = await getCoreManager();
|
|
281
|
+
const modelId = body.model || "qwen:qwen-plus-2025-01-25";
|
|
282
|
+
const resolvedModel = await coreManager.providerManagement.getLanguageModel(modelId);
|
|
283
|
+
const streamObjectOptions = {
|
|
284
|
+
model: resolvedModel,
|
|
285
|
+
prompt: body.prompt || "Generate structured data according to the schema",
|
|
286
|
+
schema: body.schema,
|
|
287
|
+
maxOutputTokens: body.maxTokens || 4e3,
|
|
288
|
+
temperature: _nullishCoalesce(body.temperature, () => ( 0.7))
|
|
289
|
+
};
|
|
290
|
+
const result = coreManager.aiSDK.streamObject(streamObjectOptions);
|
|
291
|
+
const response = result.toTextStreamResponse({ headers: CORS_HEADERS });
|
|
292
|
+
res.write(response);
|
|
293
|
+
}
|
|
294
|
+
async function handleFrontendToolResultRequest(req, res) {
|
|
295
|
+
const request = req.req;
|
|
296
|
+
try {
|
|
297
|
+
const body = await request.json();
|
|
298
|
+
const { waitId, result, error } = body;
|
|
299
|
+
if (result) {
|
|
300
|
+
if (typeof global.resolveFrontendTool === "function") {
|
|
301
|
+
global.resolveFrontendTool(waitId, result);
|
|
302
|
+
}
|
|
303
|
+
} else if (error) {
|
|
304
|
+
if (typeof global.rejectFrontendTool === "function") {
|
|
305
|
+
global.rejectFrontendTool(waitId, error);
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
const successResponse = new Response(
|
|
309
|
+
JSON.stringify({
|
|
310
|
+
success: true,
|
|
311
|
+
waitId,
|
|
312
|
+
timestamp: Date.now()
|
|
313
|
+
}),
|
|
314
|
+
{
|
|
315
|
+
status: 200,
|
|
316
|
+
headers: { ...CORS_HEADERS, "Content-Type": "application/json" }
|
|
317
|
+
}
|
|
318
|
+
);
|
|
319
|
+
res.write(successResponse);
|
|
320
|
+
} catch (parseError) {
|
|
321
|
+
const errorResponse = new Response(
|
|
322
|
+
JSON.stringify({
|
|
323
|
+
error: "Failed to parse frontend tool result request",
|
|
324
|
+
details: parseError.message
|
|
325
|
+
}),
|
|
326
|
+
{
|
|
327
|
+
status: 400,
|
|
328
|
+
headers: { ...CORS_HEADERS, "Content-Type": "application/json" }
|
|
329
|
+
}
|
|
330
|
+
);
|
|
331
|
+
res.write(errorResponse);
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
async function handleEmbeddingsRequest(req, res) {
|
|
335
|
+
const request = req.req;
|
|
336
|
+
const body = await request.json();
|
|
337
|
+
if (!body.input) {
|
|
338
|
+
const response2 = new Response(
|
|
339
|
+
JSON.stringify({ error: "Invalid request: input is required" }),
|
|
340
|
+
{ status: 400, headers: { ...CORS_HEADERS, "Content-Type": "application/json" } }
|
|
341
|
+
);
|
|
342
|
+
res.write(response2);
|
|
343
|
+
return;
|
|
344
|
+
}
|
|
345
|
+
const coreManager = await getCoreManager();
|
|
346
|
+
const modelId = body.model || "text-embedding-v1";
|
|
347
|
+
const resolvedModel = await coreManager.providerManagement.getLanguageModel(modelId);
|
|
348
|
+
const embedOptions = {
|
|
349
|
+
model: resolvedModel,
|
|
350
|
+
value: body.input,
|
|
351
|
+
dimensions: body.dimensions
|
|
352
|
+
};
|
|
353
|
+
let result;
|
|
354
|
+
let embeddings;
|
|
355
|
+
if (Array.isArray(body.input)) {
|
|
356
|
+
result = await coreManager.aiSDK.embedMany(embedOptions);
|
|
357
|
+
embeddings = result.embeddings;
|
|
358
|
+
} else {
|
|
359
|
+
result = await coreManager.aiSDK.embed(embedOptions);
|
|
360
|
+
embeddings = [result.embedding];
|
|
361
|
+
}
|
|
362
|
+
const responseData = {
|
|
363
|
+
object: "list",
|
|
364
|
+
data: embeddings.map((embedding, index) => ({
|
|
365
|
+
object: "embedding",
|
|
366
|
+
embedding,
|
|
367
|
+
index
|
|
368
|
+
})),
|
|
369
|
+
model: modelId,
|
|
370
|
+
usage: {
|
|
371
|
+
prompt_tokens: Array.isArray(body.input) ? body.input.reduce((acc, text) => acc + text.length, 0) : body.input.length,
|
|
372
|
+
total_tokens: Array.isArray(body.input) ? body.input.reduce((acc, text) => acc + text.length, 0) : body.input.length
|
|
373
|
+
}
|
|
374
|
+
};
|
|
375
|
+
const response = new Response(JSON.stringify(responseData), {
|
|
376
|
+
status: 200,
|
|
377
|
+
headers: { ...CORS_HEADERS, "Content-Type": "application/json" }
|
|
378
|
+
});
|
|
379
|
+
res.write(response);
|
|
380
|
+
}
|
|
381
|
+
var aiUnifiedServlet = {
|
|
382
|
+
path: "/ai",
|
|
383
|
+
methods: ["POST", "GET"],
|
|
384
|
+
async handle(req, res) {
|
|
385
|
+
const request = req.req;
|
|
386
|
+
const coreManager = await getCoreManager();
|
|
387
|
+
const systemDefaults = coreManager.settingsManagement.getSystemDefaults();
|
|
388
|
+
if (request.method === "OPTIONS") {
|
|
389
|
+
const response = new Response(null, {
|
|
390
|
+
status: 200,
|
|
391
|
+
headers: CORS_HEADERS
|
|
392
|
+
});
|
|
393
|
+
res.write(response);
|
|
394
|
+
return;
|
|
395
|
+
}
|
|
396
|
+
const endpoint = req.endpoint;
|
|
397
|
+
try {
|
|
398
|
+
if (request.method === "GET") {
|
|
399
|
+
const response = new Response(
|
|
400
|
+
new ReadableStream({
|
|
401
|
+
start(controller) {
|
|
402
|
+
controller.enqueue(new TextEncoder().encode('data: {"type":"error","error":"Please use POST method to start a conversation"}\n\n'));
|
|
403
|
+
controller.close();
|
|
404
|
+
}
|
|
405
|
+
}),
|
|
406
|
+
{
|
|
407
|
+
status: 200,
|
|
408
|
+
headers: {
|
|
409
|
+
...CORS_HEADERS,
|
|
410
|
+
"Content-Type": "text/plain; charset=utf-8",
|
|
411
|
+
"Cache-Control": "no-cache",
|
|
412
|
+
"Connection": "keep-alive"
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
);
|
|
416
|
+
res.write(response);
|
|
417
|
+
return;
|
|
418
|
+
}
|
|
419
|
+
switch (endpoint) {
|
|
420
|
+
case "/chat":
|
|
421
|
+
await handleChatRequest(req, res);
|
|
422
|
+
return;
|
|
423
|
+
case "/completion":
|
|
424
|
+
await handleCompletionRequest(req, res);
|
|
425
|
+
return;
|
|
426
|
+
case "/object":
|
|
427
|
+
await handleObjectRequest(req, res);
|
|
428
|
+
return;
|
|
429
|
+
case "/embeddings":
|
|
430
|
+
await handleEmbeddingsRequest(req, res);
|
|
431
|
+
return;
|
|
432
|
+
case "/frontend-tool-result":
|
|
433
|
+
await handleFrontendToolResultRequest(req, res);
|
|
434
|
+
return;
|
|
435
|
+
default: {
|
|
436
|
+
const errorResponse = new Response(
|
|
437
|
+
JSON.stringify({
|
|
438
|
+
error: "Unsupported endpoint",
|
|
439
|
+
endpoint,
|
|
440
|
+
supportedEndpoints: ["/chat", "/completion", "/object", "/embeddings", "/frontend-tool-result"]
|
|
441
|
+
}),
|
|
442
|
+
{
|
|
443
|
+
status: 404,
|
|
444
|
+
headers: { ...CORS_HEADERS, "Content-Type": "application/json" }
|
|
445
|
+
}
|
|
446
|
+
);
|
|
447
|
+
res.write(errorResponse);
|
|
448
|
+
}
|
|
449
|
+
}
|
|
450
|
+
} catch (error) {
|
|
451
|
+
const errorResponse = new Response(
|
|
452
|
+
JSON.stringify({
|
|
453
|
+
error: error.message || "Internal server error",
|
|
454
|
+
type: error.constructor.name,
|
|
455
|
+
details: process.env.NODE_ENV === "development" ? error.stack : void 0
|
|
456
|
+
}),
|
|
457
|
+
{
|
|
458
|
+
status: 500,
|
|
459
|
+
headers: { ...systemDefaults.corsHeaders, "Content-Type": "application/json" }
|
|
460
|
+
}
|
|
461
|
+
);
|
|
462
|
+
res.write(errorResponse);
|
|
463
|
+
}
|
|
464
|
+
}
|
|
465
|
+
};
|
|
466
|
+
|
|
467
|
+
// src/entity-module/servlets/index.ts
|
|
468
|
+
var aiServlets = [
|
|
469
|
+
aiUnifiedServlet
|
|
470
|
+
];
|
|
471
|
+
|
|
472
|
+
// src/entity-module/ai.module.ts
|
|
473
|
+
var _EntityAIModule = class _EntityAIModule {
|
|
474
|
+
constructor() {
|
|
475
|
+
this.info = module_default;
|
|
476
|
+
this.coreManager = null;
|
|
477
|
+
this.streamManager = null;
|
|
478
|
+
this.apiHandlers = null;
|
|
479
|
+
_EntityAIModule.instance = this;
|
|
480
|
+
this.loadEnvironmentVariables();
|
|
481
|
+
}
|
|
482
|
+
/**
|
|
483
|
+
* 获取单例实例 - 用于servlet依赖注入
|
|
484
|
+
*/
|
|
485
|
+
static getInstance() {
|
|
486
|
+
return _EntityAIModule.instance;
|
|
487
|
+
}
|
|
488
|
+
async setupConfig(args) {
|
|
489
|
+
await this.initializeAICore();
|
|
490
|
+
args.models.push(...aiModels);
|
|
491
|
+
args.views.push(...aiViews);
|
|
492
|
+
args.servlets.push(...aiServlets);
|
|
493
|
+
}
|
|
494
|
+
async setupComponents(args) {
|
|
495
|
+
if (typeof window !== "undefined") {
|
|
496
|
+
try {
|
|
497
|
+
const { EntityEngineAIModalRenderer } = await Promise.resolve().then(() => _interopRequireWildcard(require("./ai-renderer-OILYWAJV.js")));
|
|
498
|
+
const { EntityEngineAIFormRenderer } = await Promise.resolve().then(() => _interopRequireWildcard(require("./ai-form-renderer-24IWNMX5.js")));
|
|
499
|
+
args.renderers.push(EntityEngineAIModalRenderer);
|
|
500
|
+
args.renderers.push(EntityEngineAIFormRenderer);
|
|
501
|
+
} catch (e) {
|
|
502
|
+
}
|
|
503
|
+
}
|
|
504
|
+
}
|
|
505
|
+
async setupData(args) {
|
|
506
|
+
}
|
|
507
|
+
// 核心适配器方法
|
|
508
|
+
async initializeAICore() {
|
|
509
|
+
const { AICoreManager } = await Promise.resolve().then(() => _interopRequireWildcard(require("./ai-core-manager-W7SSDCG5.js")));
|
|
510
|
+
this.coreManager = new AICoreManager({
|
|
511
|
+
providers: { autoHealthCheck: true, fallbackEnabled: true },
|
|
512
|
+
tools: { enableMCP: true, enableDynamic: true },
|
|
513
|
+
embeddings: { defaultModel: "text-embedding-v1" }
|
|
514
|
+
// 使用通用嵌入模型名称
|
|
515
|
+
});
|
|
516
|
+
await this.coreManager.initialize();
|
|
517
|
+
}
|
|
518
|
+
/**
|
|
519
|
+
* 加载环境变量 - 在模块构造时立即执行
|
|
520
|
+
* 确保在所有AI服务初始化之前环境变量就已经可用
|
|
521
|
+
*/
|
|
522
|
+
loadEnvironmentVariables() {
|
|
523
|
+
try {
|
|
524
|
+
_dotenv.config.call(void 0, { path: "./apps/workbench/.env", override: false });
|
|
525
|
+
} catch (error) {
|
|
526
|
+
console.error("\u274C Failed to load environment variables:", error);
|
|
527
|
+
}
|
|
528
|
+
}
|
|
529
|
+
adaptEntityRequestToAI(req) {
|
|
530
|
+
const url = new URL(req.endpoint, "http://localhost");
|
|
531
|
+
return new Request(url.toString(), {
|
|
532
|
+
method: req.req.method,
|
|
533
|
+
headers: req.req.headers,
|
|
534
|
+
body: req.req.body
|
|
535
|
+
});
|
|
536
|
+
}
|
|
537
|
+
/**
|
|
538
|
+
* 将Web API Response适配到Entity Engine响应格式
|
|
539
|
+
*/
|
|
540
|
+
async adaptWebResponseToEntity(webResponse, entityRes) {
|
|
541
|
+
webResponse.headers.forEach((value, key) => {
|
|
542
|
+
entityRes.setHeader(key, value);
|
|
543
|
+
});
|
|
544
|
+
entityRes.statusCode = webResponse.status;
|
|
545
|
+
if (webResponse.body && webResponse.body.getReader) {
|
|
546
|
+
const reader = webResponse.body.getReader();
|
|
547
|
+
try {
|
|
548
|
+
while (true) {
|
|
549
|
+
const { done, value } = await reader.read();
|
|
550
|
+
if (done) break;
|
|
551
|
+
entityRes.write(value);
|
|
552
|
+
}
|
|
553
|
+
} finally {
|
|
554
|
+
reader.releaseLock();
|
|
555
|
+
}
|
|
556
|
+
entityRes.end();
|
|
557
|
+
} else {
|
|
558
|
+
const text = await webResponse.text();
|
|
559
|
+
entityRes.end(text);
|
|
560
|
+
}
|
|
561
|
+
}
|
|
562
|
+
adaptAIResponseToEntity(response) {
|
|
563
|
+
return response;
|
|
564
|
+
}
|
|
565
|
+
};
|
|
566
|
+
// 单例模式支持 - 用于servlet访问
|
|
567
|
+
_EntityAIModule.instance = null;
|
|
568
|
+
var EntityAIModule = _EntityAIModule;
|
|
569
|
+
|
|
570
|
+
|
|
571
|
+
|
|
572
|
+
exports.EntityAIModule = EntityAIModule;
|
|
573
|
+
//# sourceMappingURL=chunk-DXQTHA75.js.map
|