@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":["../src/core/ai-settings.ts","../src/core/system-prompt.ts"],"sourcesContent":["/**\n * AI Settings Complete Integration\n * \n * Complete settings functionality:\n * - All common setting parameters\n * - Provider-specific configurations\n * - Settings validation and presets\n * - Dynamic settings management\n */\n\nimport { z } from 'zod';\nimport { EventEmitter } from 'events';\n\nimport { ENTITY_ENGINE_SYSTEM_PROMPT } from './system-prompt';\n\n// System-level unified configuration - single data source for all AI features\n\n/**\n * AI system default configuration - manages only AI-related parameters\n * Focused on AI model and parameter configuration, excludes HTTP/network layer config\n */\nexport const AI_SYSTEM_DEFAULTS = {\n // Model configuration\n defaultProvider: 'qwen',\n defaultModel: 'qwen-plus-2025-01-25',\n defaultEmbeddingModel: 'text-embedding-v1',\n \n // AI参数默认值\n temperature: 0.7,\n maxOutputTokens: 4000,\n topP: 0.95,\n // topK: 50, // qwen模型不支持topK参数\n presencePenalty: 0,\n frequencyPenalty: 0,\n \n // 系统提示词 - 从单独文件导入\n systemPrompt: ENTITY_ENGINE_SYSTEM_PROMPT,\n \n // 功能开关\n enableTools: true,\n enableEmbeddings: true\n} as const;\n\n// ================================\n// Type Definitions\n// ================================\n\n/**\n * 通用模型设置 - 基于 Settings.md 官方规范\n */\nexport interface CommonModelSettings {\n // 生成控制参数\n maxOutputTokens?: number; // 最大输出令牌数\n temperature?: number; // 温度设置 (0-1+ 取决于提供商)\n topP?: number; // 核采样 (0-1)\n topK?: number; // Top-K 采样\n presencePenalty?: number; // 存在性惩罚\n frequencyPenalty?: number; // 频率惩罚\n stopSequences?: string[]; // 停止序列\n seed?: number; // 随机种子\n\n // 控制参数\n maxRetries?: number; // 最大重试次数,默认 2\n abortSignal?: AbortSignal; // 取消信号\n headers?: Record<string, string>; // 自定义 HTTP 头\n}\n\n/**\n * JSON值类型 - 严格按照AI SDK官方规范\n */\ntype JSONValue = string | number | boolean | null | { [key: string]: JSONValue } | JSONValue[];\n\n/**\n * 提供商特定设置 - 严格按照AI SDK官方规范\n * 必须兼容SharedV2ProviderOptions类型,格式为Record<string, Record<string, JSONValue>>\n */\nexport interface ProviderSpecificSettings {\n // 严格按照AI SDK SharedV2ProviderOptions类型定义\n [key: string]: Record<string, JSONValue>;\n}\n\n/**\n * 完整的模型设置配置\n */\nexport interface ModelSettings extends CommonModelSettings {\n providerOptions?: ProviderSpecificSettings;\n}\n\n/**\n * 设置预设定义\n */\nexport interface SettingsPreset {\n name: string;\n description: string;\n settings: ModelSettings;\n tags?: string[]; // 用于分类和搜索\n useCases?: string[]; // 适用场景\n}\n\n/**\n * 设置验证结果\n */\nexport interface SettingsValidationResult {\n isValid: boolean;\n errors: Array<{\n field: string;\n message: string;\n value: any;\n }>;\n warnings: Array<{\n field: string;\n message: string;\n value: any;\n }>;\n}\n\n/**\n * 动态设置配置\n */\nexport interface DynamicSettingsConfig {\n // 基于条件的设置调整\n conditions: Array<{\n name: string;\n condition: (context: any) => boolean;\n settings: Partial<ModelSettings>;\n }>;\n\n // 默认设置\n default: ModelSettings;\n\n // 回退设置\n fallback?: ModelSettings;\n}\n\n// ================================\n// Settings presets - best practices\n// ================================\n\n/**\n * 预定义的设置预设 - 基于官方文档建议和最佳实践\n */\nexport const BuiltinSettingsPresets: Record<string, SettingsPreset> = {\n // 确定性输出\n DETERMINISTIC: {\n name: 'Deterministic',\n description: 'Highly deterministic output with minimal randomness',\n settings: {\n temperature: 0,\n topP: 0.1,\n seed: 42,\n maxRetries: 3\n },\n tags: ['deterministic', 'consistent', 'reproducible'],\n useCases: ['data extraction', 'classification', 'structured output']\n },\n\n // 创意输出\n CREATIVE: {\n name: 'Creative',\n description: 'High creativity and randomness for creative tasks',\n settings: {\n temperature: 0.9,\n topP: 0.95,\n presencePenalty: 0.1,\n frequencyPenalty: 0.1\n },\n tags: ['creative', 'diverse', 'imaginative'],\n useCases: ['creative writing', 'brainstorming', 'story generation']\n },\n\n // 平衡模式 - 作为系统默认设置\n BALANCED: {\n name: 'Balanced',\n description: 'Balanced creativity and consistency',\n settings: {\n temperature: 0.7,\n topP: 0.95,\n topK: 50,\n maxOutputTokens: 2048\n },\n tags: ['balanced', 'general', 'versatile'],\n useCases: ['general conversation', 'content generation', 'Q&A']\n },\n\n // 精确模式\n PRECISE: {\n name: 'Precise',\n description: 'Low temperature for factual and precise responses',\n settings: {\n temperature: 0.2,\n topP: 0.5,\n topK: 10,\n maxRetries: 2\n },\n tags: ['precise', 'factual', 'focused'],\n useCases: ['technical documentation', 'factual queries', 'analysis']\n },\n\n // 快速响应\n FAST_RESPONSE: {\n name: 'Fast Response', \n description: 'Optimized for quick responses',\n settings: {\n maxOutputTokens: 500,\n temperature: 0.5,\n maxRetries: 1,\n abortSignal: AbortSignal.timeout(5000)\n },\n tags: ['fast', 'efficient', 'quick'],\n useCases: ['chat applications', 'real-time responses', 'mobile apps']\n },\n\n // 长文本生成\n LONG_FORM: {\n name: 'Long Form',\n description: 'Optimized for long-form content generation',\n settings: {\n maxOutputTokens: 4000,\n temperature: 0.8,\n presencePenalty: 0.05,\n frequencyPenalty: 0.05\n },\n tags: ['long-form', 'detailed', 'comprehensive'],\n useCases: ['articles', 'reports', 'documentation', 'essays']\n },\n\n // 推理模式(OpenAI 专用)\n REASONING: {\n name: 'Reasoning',\n description: 'Enhanced reasoning capabilities',\n settings: {\n temperature: 0.1,\n maxOutputTokens: 10000,\n providerOptions: {\n // 通用推理配置\n reasoning: {\n effort: 'high',\n stepByStep: true\n }\n }\n },\n tags: ['reasoning', 'analysis', 'problem-solving'],\n useCases: ['complex analysis', 'math problems', 'logical reasoning']\n },\n\n // 代码生成\n CODE_GENERATION: {\n name: 'Code Generation',\n description: 'Optimized for code generation tasks',\n settings: {\n temperature: 0.2,\n maxOutputTokens: 2000,\n stopSequences: ['```', 'END_CODE'],\n seed: 123\n },\n tags: ['code', 'programming', 'technical'],\n useCases: ['code generation', 'debugging', 'code review']\n }\n};\n\n// ================================\n// Settings validation mode\n// ================================\n\n/**\n * 设置验证的 Zod 模式\n */\nconst CommonSettingsSchema = z.object({\n maxOutputTokens: z.number().int().min(1).max(100000).optional(),\n temperature: z.number().min(0).max(2).optional(),\n topP: z.number().min(0).max(1).optional(),\n topK: z.number().int().min(1).max(1000).optional(),\n presencePenalty: z.number().min(-2).max(2).optional(),\n frequencyPenalty: z.number().min(-2).max(2).optional(),\n stopSequences: z.array(z.string()).max(10).optional(),\n seed: z.number().int().optional(),\n maxRetries: z.number().int().min(0).max(10).optional(),\n headers: z.record(z.string(), z.string()).optional()\n});\n\n// ================================\n// Core Settings Management Class\n// ================================\n\n/**\n * AI SDK Settings 完整集成类\n */\nexport class AISettingsManagement extends EventEmitter {\n private initialized: boolean = false;\n private customPresets: Map<string, SettingsPreset> = new Map();\n private dynamicConfigs: Map<string, DynamicSettingsConfig> = new Map();\n private settingsHistory: Array<{ timestamp: Date; settings: ModelSettings; context?: any }> = [];\n\n constructor() {\n super();\n }\n\n /**\n * 初始化\n */\n async initialize(): Promise<void> {\n if (this.initialized) {\n return;\n }\n\n try {\n this.emit('ai_settings:initializing');\n this.initialized = true;\n this.emit('ai_settings:initialized');\n } catch (error) {\n this.emit('ai_settings:initialization_failed', { error });\n throw error;\n }\n }\n\n // ================================\n // ⚙️ 设置验证\n // ================================\n\n /**\n * 验证模型设置 - 官方规范验证\n */\n validateSettings(settings: ModelSettings): SettingsValidationResult {\n const errors: Array<{ field: string; message: string; value: any }> = [];\n const warnings: Array<{ field: string; message: string; value: any }> = [];\n\n try {\n // 基础设置验证\n CommonSettingsSchema.parse(settings);\n } catch (error: any) {\n if (error.errors) {\n error.errors.forEach((err: any) => {\n errors.push({\n field: err.path.join('.'),\n message: err.message,\n value: err.received\n });\n });\n }\n }\n\n // 逻辑验证和警告\n if (settings.temperature !== undefined && settings.topP !== undefined) {\n warnings.push({\n field: 'temperature/topP',\n message: 'It is recommended to set either temperature or topP, but not both',\n value: { temperature: settings.temperature, topP: settings.topP }\n });\n }\n\n // 停止序列验证\n if (settings.stopSequences && settings.stopSequences.length > 4) {\n warnings.push({\n field: 'stopSequences',\n message: 'Some providers may limit the number of stop sequences to 4',\n value: settings.stopSequences.length\n });\n }\n\n // 输出令牌数验证\n if (settings.maxOutputTokens && settings.maxOutputTokens > 8192) {\n warnings.push({\n field: 'maxOutputTokens',\n message: 'Large token counts may not be supported by all models',\n value: settings.maxOutputTokens\n });\n }\n\n this.emit('ai_settings:validation_completed', {\n isValid: errors.length === 0,\n errorsCount: errors.length,\n warningsCount: warnings.length\n });\n\n return {\n isValid: errors.length === 0,\n errors,\n warnings\n };\n }\n\n // ================================\n // Preset management\n // ================================\n\n /**\n * 获取所有可用预设\n */\n getAllPresets(): Record<string, SettingsPreset> {\n const allPresets = { ...BuiltinSettingsPresets };\n \n this.customPresets.forEach((preset, name) => {\n allPresets[name] = preset;\n });\n\n return allPresets;\n }\n\n /**\n * 获取特定预设\n */\n getPreset(name: string): SettingsPreset | null {\n return BuiltinSettingsPresets[name] || this.customPresets.get(name) || null;\n }\n\n /**\n * 创建自定义预设\n */\n createPreset(name: string, preset: SettingsPreset): void {\n const validation = this.validateSettings(preset.settings);\n if (!validation.isValid) {\n throw new Error('Invalid preset settings: ' + validation.errors.map(e => e.message).join(', '));\n }\n\n this.customPresets.set(name, preset);\n this.emit('ai_settings:preset_created', { name, preset });\n }\n\n /**\n * 根据标签搜索预设\n */\n findPresetsByTag(tag: string): SettingsPreset[] {\n const allPresets = this.getAllPresets();\n \n return Object.values(allPresets)\n .filter(preset => preset.tags?.includes(tag));\n }\n\n /**\n * 根据使用场景搜索预设\n */\n findPresetsByUseCase(useCase: string): SettingsPreset[] {\n const allPresets = this.getAllPresets();\n \n return Object.values(allPresets)\n .filter(preset => preset.useCases?.some(uc => \n uc.toLowerCase().includes(useCase.toLowerCase())\n ));\n }\n\n // ================================\n // 🔀 动态设置管理\n // ================================\n\n /**\n * 注册动态设置配置\n */\n registerDynamicConfig(name: string, config: DynamicSettingsConfig): void {\n this.dynamicConfigs.set(name, config);\n this.emit('ai_settings:dynamic_config_registered', { name, config });\n }\n\n /**\n * 根据上下文解析动态设置\n */\n resolveDynamicSettings(configName: string, context: any): ModelSettings {\n const config = this.dynamicConfigs.get(configName);\n if (!config) {\n throw new Error('Dynamic config \"' + configName + '\" not found');\n }\n\n // 查找匹配的条件\n for (const conditionConfig of config.conditions) {\n try {\n if (conditionConfig.condition(context)) {\n const resolvedSettings = this.mergeSettings(config.default, conditionConfig.settings);\n \n this.emit('ai_settings:dynamic_settings_resolved', {\n configName,\n conditionName: conditionConfig.name,\n context,\n resolvedSettings\n });\n\n return resolvedSettings;\n }\n } catch (error) {\n this.emit('ai_settings:dynamic_condition_error', {\n configName,\n conditionName: conditionConfig.name,\n error\n });\n }\n }\n\n // 如果没有匹配的条件,使用默认设置\n return config.default;\n }\n\n // ================================\n // 🛠️ 设置工具方法\n // ================================\n\n /**\n * 合并设置对象\n */\n mergeSettings(...settingsArray: Partial<ModelSettings>[]): ModelSettings {\n const merged: ModelSettings = {};\n\n settingsArray.forEach(settings => {\n if (!settings) return;\n\n // 合并基础设置\n Object.assign(merged, settings);\n\n // 特殊处理 providerOptions\n if (settings.providerOptions) {\n merged.providerOptions = {\n ...merged.providerOptions,\n ...settings.providerOptions\n };\n }\n\n // 特殊处理数组字段\n if (settings.stopSequences) {\n merged.stopSequences = [...(merged.stopSequences || []), ...settings.stopSequences];\n }\n\n // 特殊处理 headers\n if (settings.headers) {\n merged.headers = {\n ...merged.headers,\n ...settings.headers\n };\n }\n });\n\n return merged;\n }\n\n /**\n * 创建提供商特定设置\n */\n createProviderSettings(\n providerId: string,\n settings: Record<string, any>\n ): { providerOptions: ProviderSpecificSettings } {\n return {\n providerOptions: {\n [providerId]: settings\n }\n };\n }\n\n /**\n * 创建超时设置\n */\n createTimeoutSettings(timeoutMs: number): { abortSignal: AbortSignal } {\n return {\n abortSignal: AbortSignal.timeout(timeoutMs)\n };\n }\n\n /**\n * 创建确定性设置\n */\n createDeterministicSettings(seed?: number): ModelSettings {\n return {\n temperature: 0,\n topP: 0.1,\n seed: seed || 42,\n maxRetries: 3\n };\n }\n\n /**\n * 创建创意设置\n */\n createCreativeSettings(): ModelSettings {\n return {\n temperature: 0.9,\n topP: 0.95,\n presencePenalty: 0.1,\n frequencyPenalty: 0.1\n };\n }\n\n // ================================\n // Settings analysis and history\n // ================================\n\n /**\n * 记录设置使用历史\n */\n recordSettingsUsage(settings: ModelSettings, context?: any): void {\n this.settingsHistory.push({\n timestamp: new Date(),\n settings: { ...settings },\n context\n });\n\n // 保持历史记录在合理范围内\n if (this.settingsHistory.length > 1000) {\n this.settingsHistory = this.settingsHistory.slice(-1000);\n }\n\n this.emit('ai_settings:usage_recorded', { settings, context });\n }\n\n /**\n * 分析设置使用模式\n */\n analyzeSettingsUsage(): {\n totalRecords: number;\n mostUsedSettings: Array<{ setting: string; count: number }>;\n averageValues: Partial<ModelSettings>;\n timeRange: { earliest: Date; latest: Date } | null;\n } {\n if (this.settingsHistory.length === 0) {\n return {\n totalRecords: 0,\n mostUsedSettings: [],\n averageValues: {},\n timeRange: null\n };\n }\n\n const settingCounts: Record<string, Record<any, number>> = {};\n const numericValues: Record<string, number[]> = {};\n\n // 收集统计数据\n this.settingsHistory.forEach(record => {\n Object.entries(record.settings).forEach(([key, value]) => {\n if (value !== undefined && value !== null) {\n // 计数统计\n if (!settingCounts[key]) settingCounts[key] = {};\n const valueKey = JSON.stringify(value);\n settingCounts[key][valueKey] = (settingCounts[key][valueKey] || 0) + 1;\n\n // 数值统计\n if (typeof value === 'number') {\n if (!numericValues[key]) numericValues[key] = [];\n numericValues[key].push(value);\n }\n }\n });\n });\n\n // 计算最常用设置\n const mostUsedSettings = Object.entries(settingCounts)\n .flatMap(([setting, counts]) => \n Object.entries(counts).map(([value, count]) => ({\n setting: setting + '=' + value,\n count\n }))\n )\n .sort((a, b) => b.count - a.count)\n .slice(0, 10);\n\n // 计算平均值\n const averageValues: Partial<ModelSettings> = {};\n Object.entries(numericValues).forEach(([key, values]) => {\n (averageValues as any)[key] = values.reduce((a, b) => a + b, 0) / values.length;\n });\n\n // 时间范围\n const timestamps = this.settingsHistory.map(r => r.timestamp);\n const timeRange = {\n earliest: new Date(Math.min(...timestamps.map(t => t.getTime()))),\n latest: new Date(Math.max(...timestamps.map(t => t.getTime())))\n };\n\n return {\n totalRecords: this.settingsHistory.length,\n mostUsedSettings,\n averageValues,\n timeRange\n };\n }\n\n // ================================\n // 🎛️ 实用方法\n // ================================\n\n /**\n * 获取系统默认设置 - 统一配置入口\n * 返回AI_SYSTEM_DEFAULTS作为唯一配置源\n */\n getDefaultSettings(): ModelSettings {\n return {\n temperature: AI_SYSTEM_DEFAULTS.temperature,\n maxOutputTokens: AI_SYSTEM_DEFAULTS.maxOutputTokens,\n topP: AI_SYSTEM_DEFAULTS.topP,\n // topK: AI_SYSTEM_DEFAULTS.topK, // qwen模型不支持topK参数\n presencePenalty: AI_SYSTEM_DEFAULTS.presencePenalty,\n frequencyPenalty: AI_SYSTEM_DEFAULTS.frequencyPenalty,\n };\n }\n\n /**\n * 获取系统级配置 - 包含所有配置项\n */\n getSystemDefaults() {\n return AI_SYSTEM_DEFAULTS;\n }\n\n /**\n * 检查初始化状态\n */\n isInitialized(): boolean {\n return this.initialized;\n }\n\n /**\n * 获取统计信息\n */\n getStats(): {\n isInitialized: boolean;\n builtinPresets: number;\n customPresets: number;\n dynamicConfigs: number;\n historyRecords: number;\n } {\n return {\n isInitialized: this.initialized,\n builtinPresets: Object.keys(BuiltinSettingsPresets).length,\n customPresets: this.customPresets.size,\n dynamicConfigs: this.dynamicConfigs.size,\n historyRecords: this.settingsHistory.length\n };\n }\n\n /**\n * 清理历史记录\n */\n clearHistory(): void {\n this.settingsHistory = [];\n this.emit('ai_settings:history_cleared');\n }\n\n /**\n * 导出设置配置\n */\n exportSettings(): {\n customPresets: Record<string, SettingsPreset>;\n dynamicConfigs: Record<string, DynamicSettingsConfig>;\n history: Array<{ timestamp: Date; settings: ModelSettings; context?: any }>;\n } {\n const customPresets: Record<string, SettingsPreset> = {};\n this.customPresets.forEach((preset, name) => {\n customPresets[name] = preset;\n });\n\n const dynamicConfigs: Record<string, DynamicSettingsConfig> = {};\n this.dynamicConfigs.forEach((config, name) => {\n dynamicConfigs[name] = config;\n });\n\n return {\n customPresets,\n dynamicConfigs,\n history: [...this.settingsHistory]\n };\n }\n\n /**\n * 销毁实例\n */\n destroy(): void {\n this.customPresets.clear();\n this.dynamicConfigs.clear();\n this.settingsHistory = [];\n this.removeAllListeners();\n this.initialized = false;\n }\n}\n\n// ================================\n// Exports\n// ================================\n\nexport {\n // 验证模式\n CommonSettingsSchema\n};\n\n// 默认导出\nexport default AISettingsManagement;","/**\n * Entity Engine AI System Prompts\n * 集中管理AI助手的系统提示词内容\n */\n\nexport const ENTITY_ENGINE_SYSTEM_PROMPT = `你是一个专业的SceneMesh AI实体数据助手。你在SceneMesh Entity Engine平台生态系统中运行。\n\n你是与数据管理用户协作的智能助手,帮助解决他们的实体数据管理问题和需求。每次用户发送消息时,系统可能会自动附加一些关于当前数据状态的信息,如用户正在查看的实体数据、最近的数据操作历史、当前数据查询状态、实时系统指标等。这些信息可能与数据管理任务相关,也可能无关,由你来判断其相关性。\n\n你是一个智能代理 - 请持续工作直到完全解决用户的查询,然后结束你的回合并交还给用户。只有在确信问题已得到解决时才终止你的回合。在回复用户之前,请自主地尽最大努力解决查询。\n\n你的主要目标是遵循用户在每条消息中的指示,这些指示用 <user_query> 标签表示。\n\n<tools>\n你拥有各种实体数据管理和分析工具来解决数据操作任务。在使用工具时请遵循以下规则:\n\n1. **准确使用工具**:确保提供所有必要的参数,按照下文列出的工具格式准确调用。\n\n2. **避免引用不可用的工具**:对话中可能会引用不再可用的工具,绝对不要调用未明确定义的工具。\n\n3. **使用自然的数据管理语言描述工具行为**:在与用户交流时,不要提及具体的工具名称,而是用自然的数据管理语言描述正在执行的操作。例如:\"我正在查询你的用户实体数据\"而不是\"我正在调用entity_query工具\"。\n\n4. **优先使用工具获取信息**:如果你需要的额外信息可以通过工具调用获得,请优先使用工具而不是询问用户。\n\n5. **立即执行计划**:如果你制定了一个数据分析或操作计划,请立即执行,不要等待用户确认。只有在需要用户无法通过其他方式获得的信息,或需要用户在不同选项间做出选择时,才应该停止。\n\n6. **使用标准工具调用**:按照系统提供的工具格式进行调用。当需要使用工具时,直接调用,不要解释调用过程或格式。\n\n7. **主动验证实体数据**:如果你对实体数据的内容或结构不确定,请使用工具进行验证和分析,不要猜测或编造答案。\n\n8. **全面的数据探索**:你可以自主地查询尽可能多的相关实体数据源,以完全解决用户的数据管理查询,而不仅仅是查询一个实体。\n\n9. **实体模型和数据引用**:实体模型包含有关如何改进数据结构的有价值信息。它们对于回答关于数据关系的问题也很有用。当提及实体模型时,应该使用标识符格式。例如 ee-base-user 或 ee-base-product\n</tools>\n\n<maximize_context_understanding>\n在收集信息时要**全面深入**。确保在回复之前掌握**完整的数据架构图景**。根据需要使用额外的工具调用或澄清性问题。\n\n**追溯每个实体字段**到其定义和关联方式,确保你完全理解它。\n\n超越第一个看似相关的结果。**探索**替代的数据模型、边缘情况和不同的查询角度,直到你对该实体主题有**全面的覆盖**。\n\n实体语义搜索是你的**主要探索工具**:\n- **关键**:从捕获整体数据架构意图的广泛、高层次查询开始(例如\"用户实体结构\"或\"产品数据关联\"),而不是低层次的字段名称。\n- 将多部分问题分解为专注的子查询(例如\"用户实体如何关联订单?\"或\"产品数据在哪个表格中?\")。\n- **必须**:使用不同的措辞运行多次搜索;首次结果往往会遗漏关键数据细节。\n- 持续搜索新的实体领域,直到你**确信**没有重要信息遗漏。\n\n如果你执行了可能部分满足用户查询的数据分析,但不够自信,请在结束回合前收集更多信息或使用更多工具。\n\n优先自己寻找答案,而不是向用户寻求帮助。\n</maximize_context_understanding>\n\n<making_entity_analysis>\n在进行实体数据分析时,除非用户特别要求,否则不要向用户输出原始数据。而应使用实体数据分析工具来实施分析。\n\n确保你生成的数据洞察能立即为用户所用,这一点**极其重要**。为确保这一点,请仔细遵循以下指示:\n\n1. 添加所有必要的实体背景、数据源引用、字段定义和关联依据。\n2. 如果你从头开始创建数据报告,请创建适当的实体结构文件(如实体数据字典)和有用的技术说明文档。\n3. 如果你正在构建数据视图,请提供现代化和美观的界面,融入最佳的用户体验实践。\n4. 绝不生成超长的数据哈希值或任何非实体内容的二进制数据。这些对数据管理用户无用且成本高昂。\n5. 如果你在实体分析中引入了错误,请修复明显的错误(或你能轻易确定如何修复的错误)。不要做没有根据的猜测。同一实体分析不要循环超过3次错误修复。第三次时,你应该停止并询问用户接下来该怎么做。\n6. 如果你建议的合理实体分析没有被分析引擎接受,你应该尝试重新应用该分析。\n</making_entity_analysis>\n\n使用相关的工具回答用户的请求(如果可用)。检查所有必需的参数是否已提供或可以从上下文合理推断。如果没有相关工具或缺少必需参数的值,请要求用户提供这些值;否则继续进行工具调用。如果用户为参数提供了特定值(例如在引号中提供),请确保准确使用该值。不要编造可选参数的值或询问可选参数。仔细分析请求中的描述性术语,因为它们可能指示应包含的必需参数值,即使没有明确引用。\n\n<summarization>\n如果你看到名为\"<most_important_user_query>\"的部分,你应该将该查询视为要回答的查询,并忽略之前的用户查询。如果要求你总结对话,你绝对不能使用任何工具,即使它们可用。你必须回答\"<most_important_user_query>\"查询。\n</summarization>\n\n<memories>\n你可能会获得一个实体数据记忆列表。这些记忆来自与助手的过往数据管理对话。\n\n它们可能正确也可能不正确,因此如果认为相关就遵循它们,但一旦你注意到用户纠正了你基于记忆所做的事情,或你遇到与现有记忆矛盾或补充的信息,**关键是**你必须立即使用 update_memory 工具更新/删除记忆。你绝对不能使用 update_memory 工具创建与实施计划、助手完成的数据迁移或其他特定任务相关的记忆。\n\n如果用户**曾经**与你的记忆相矛盾,那么最好删除该记忆而不是更新记忆。\n\n你可以根据工具描述中的标准创建、更新或删除记忆。\n\n<memory_citation>\n当你在生成内容、回复用户查询或执行实体数据操作时使用记忆,你必须**始终**引用记忆。为此,请使用以下格式:[[memory:MEMORY_ID]]。你应该将记忆引用自然地融入回应中,而不仅仅作为脚注。\n\n例如:\"我将使用你偏好的数据显示格式 [[memory:MEMORY_ID]] 来展示实体数据分析。\"\n\n当你因为记忆而拒绝用户的明确请求时,你必须在对话中提及如果记忆不正确,用户可以纠正你,你将更新你的记忆。\n</memory_citation>\n</memories>\n\n# 可用工具\n\n以下是你可以调用的实体数据管理工具,应该根据用户需求选择合适的工具进行调用:\n\n## recordGetFieldInfo\n获取当前表单的字段信息和结构\n//\n// ### 何时使用此工具\n//\n**何时使用**:\n- 任何数据操作前的必要步骤\n- 了解当前表单的实际字段结构\n- 获取字段名称、标题和类型信息\n- 确定可用的字段进行数据填充\n\n**何时不使用**:\n- 不涉及表单操作的纯信息查询\n- 已经确定知道字段结构的情况\n//\n// ### 示例\n//\n// <example>\n// 用户请求: \"帮我创建一个产品\"\n//\n// <reasoning>\n// 必须首先调用recordGetFieldInfo()了解当前表单是否为产品表单,以及有哪些字段可以填充。\n// </reasoning>\n// </example>\n//\n// <example>\n// 用户请求: \"填写用户信息\"\n//\n// <reasoning>\n// 先调用recordGetFieldInfo()查看当前表单类型和字段,确认是否为用户表单。\n// </reasoning>\n// </example>\n//\n**工具调用格式**:\n- **工具名称**: recordGetFieldInfo\n- **参数**: 无需参数\n\n## recordGetValues\n获取当前表单的所有字段值\n//\n// ### 何时使用此工具\n//\n**何时使用**:\n- 查看当前表单的填写状态\n- 在修改前获取现有数据\n- 向用户显示当前表单内容\n- 验证数据填充结果\n\n**何时不使用**:\n- 仅需要获取字段结构信息(使用recordGetFieldInfo)\n- 不涉及表单数据的纯信息查询\n//\n// ### 示例\n//\n// <example>\n// 用户请求: \"显示当前表单的内容\"\n//\n// <reasoning>\n// 使用recordGetValues()获取所有字段的当前值并展示给用户。\n// </reasoning>\n// </example>\n//\n**工具调用格式**:\n- **工具名称**: recordGetValues\n- **参数**: 无需参数\n\n## recordSetValues\n设置表单字段值\n//\n// ### 何时使用此工具\n//\n**何时使用**:\n- 根据用户请求填充表单字段\n- 创建新的数据记录\n- 修改现有表单内容\n- 批量设置多个字段值\n\n**何时不使用**:\n- 在不了解字段结构的情况下(应先调用recordGetFieldInfo)\n- 仅需要查看数据而不修改\n//\n// ### 示例\n//\n// <example>\n// 用户请求: \"帮我创建一个产品叫小白\"\n//\n// <reasoning>\n// 先调用recordGetFieldInfo()了解字段结构,然后使用recordSetValues()设置产品相关字段,如name字段设为\"小白\"。\n// </reasoning>\n// </example>\n//\n// <example>\n// 用户请求: \"修改用户信息,姓名改为张三,邮箱改为zhangsan@example.com\"\n//\n// <reasoning>\n// 使用recordSetValues()批量设置多个字段:name设为\"张三\",email设为\"zhangsan@example.com\"。\n// </reasoning>\n// </example>\n//\n**工具调用格式**:\n- **工具名称**: recordSetValues\n- **参数**:\n - values: 字段值对象,键必须是recordGetFieldInfo返回的确切字段名\n\n## recordResetForm\n重置表单到初始状态\n//\n// ### 何时使用此工具\n//\n**何时使用**:\n- 用户明确要求清空表单\n- 重置表单到初始状态\n- 清除所有已填写的内容\n\n**何时不使用**:\n- 仅需要修改个别字段值\n- 用户没有明确要求重置的情况\n//\n// ### 示例\n//\n// <example>\n// 用户请求: \"清空表单内容\"\n//\n// <reasoning>\n// 使用recordResetForm()将表单重置到初始状态,清除所有已填写的数据。\n// </reasoning>\n// </example>\n//\n**工具调用格式**:\n- **工具名称**: recordResetForm\n- **参数**: 无需参数\n\n## recordValidateForm\n验证表单数据的有效性\n//\n// ### 何时使用此工具\n//\n**何时使用**:\n- 在提交表单前验证数据\n- 检查必填字段是否已填写\n- 验证数据格式是否正确\n- 用户要求验证表单内容\n\n**何时不使用**:\n- 仅需要设置或获取数据\n- 不涉及数据验证的操作\n//\n// ### 示例\n//\n// <example>\n// 用户请求: \"检查表单是否填写完整\"\n//\n// <reasoning>\n// 使用recordValidateForm()验证当前表单数据的有效性,检查必填字段和格式规则。\n// </reasoning>\n// </example>\n//\n**工具调用格式**:\n- **工具名称**: recordValidateForm\n- **参数**: 无需参数\n\n## 辅助工具\n\n除了主要的表单操作工具外,还有一些辅助工具可供使用:\n\n### getWeather\n获取指定地点的天气信息\n**工具调用格式**:\n- **工具名称**: getWeather\n- **参数**:\n - location: 地点名称(如\"北京\"、\"上海\"等)\n\n### getLocation \n获取用户当前位置信息\n**工具调用格式**:\n- **工具名称**: getLocation\n- **参数**: 无需参数\n\n### entityQuery\n执行实体数据查询操作\n**工具调用格式**:\n- **工具名称**: entityQuery\n- **参数**:\n - query: 要执行的查询语句或条件\n\n## 核心工作流程\n\n当用户提出数据操作请求时,请严格按照以下三步骤流程:\n\n### 第一步:动态发现表单结构\n**必须**首先调用 recordGetFieldInfo() 来了解:\n- 当前表单的实际字段结构和字段名称\n- 字段标题和类型信息\n- 可用的操作字段\n\n### 第二步:理解上下文和用户意图\n- 分析字段标题理解当前表单类型(产品、用户、事件等)\n- 根据实际表单结构调整回复\n- 如果用户请求与当前表单不符,友好说明并提供选项\n\n### 第三步:执行相应操作\n- 使用 recordSetValues()设置字段值,**仅使用**第一步获取的确切字段名称\n- 根据需要调用其他工具如 recordGetValues()recordValidateForm()等\n- 确保操作基于真实的字段结构,不要假设字段存在\n\n## 重要原则\n\n1. **永远先调用 recordGetFieldInfo()** - 任何数据操作前的必要步骤\n2. **使用准确的字段名称** - 绝不猜测或翻译字段名\n3. **适配实际表单** - 基于真实发现的字段结构操作\n4. **智能上下文识别** - 通过字段标题理解表单业务类型`;"],"mappings":";AAUA,SAAS,SAAS;AAClB,SAAS,oBAAoB;;;ACNtB,IAAM,8BAA8B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;A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","names":[]}
|
|
@@ -0,0 +1,512 @@
|
|
|
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/core/ai-core-manager.ts
|
|
2
|
+
var _events = require('events');
|
|
3
|
+
var AICoreManager = class extends _events.EventEmitter {
|
|
4
|
+
constructor(config) {
|
|
5
|
+
super();
|
|
6
|
+
this.initialized = false;
|
|
7
|
+
this.startTime = 0;
|
|
8
|
+
this.initializationTime = 0;
|
|
9
|
+
// 组件健康状态
|
|
10
|
+
this.componentHealth = /* @__PURE__ */ new Map();
|
|
11
|
+
this.config = {
|
|
12
|
+
components: {
|
|
13
|
+
aiSDK: true,
|
|
14
|
+
providerManagement: true,
|
|
15
|
+
toolsIntegration: true,
|
|
16
|
+
embeddingsIntegration: true,
|
|
17
|
+
settingsManagement: true,
|
|
18
|
+
structuredData: true,
|
|
19
|
+
..._optionalChain([config, 'optionalAccess', _ => _.components])
|
|
20
|
+
},
|
|
21
|
+
// AI SDK配置 - 默认设置现在从 settings management 获取
|
|
22
|
+
aiSDK: {
|
|
23
|
+
..._optionalChain([config, 'optionalAccess', _2 => _2.aiSDK])
|
|
24
|
+
},
|
|
25
|
+
providers: {
|
|
26
|
+
autoHealthCheck: true,
|
|
27
|
+
healthCheckInterval: 6e4,
|
|
28
|
+
// 1分钟
|
|
29
|
+
fallbackEnabled: true,
|
|
30
|
+
..._optionalChain([config, 'optionalAccess', _3 => _3.providers])
|
|
31
|
+
},
|
|
32
|
+
tools: {
|
|
33
|
+
enableMCP: true,
|
|
34
|
+
enableDynamic: true,
|
|
35
|
+
maxSteps: 10,
|
|
36
|
+
timeout: 3e4,
|
|
37
|
+
..._optionalChain([config, 'optionalAccess', _4 => _4.tools])
|
|
38
|
+
},
|
|
39
|
+
embeddings: {
|
|
40
|
+
defaultModel: "text-embedding-3-small",
|
|
41
|
+
batchSize: 100,
|
|
42
|
+
maxParallelCalls: 5,
|
|
43
|
+
..._optionalChain([config, 'optionalAccess', _5 => _5.embeddings])
|
|
44
|
+
},
|
|
45
|
+
settings: {
|
|
46
|
+
enablePresets: true,
|
|
47
|
+
enableValidation: true,
|
|
48
|
+
enableDynamic: true,
|
|
49
|
+
..._optionalChain([config, 'optionalAccess', _6 => _6.settings])
|
|
50
|
+
},
|
|
51
|
+
monitoring: {
|
|
52
|
+
enabled: true,
|
|
53
|
+
collectMetrics: true,
|
|
54
|
+
enableEvents: true,
|
|
55
|
+
logLevel: "info",
|
|
56
|
+
..._optionalChain([config, 'optionalAccess', _7 => _7.monitoring])
|
|
57
|
+
},
|
|
58
|
+
entity: {
|
|
59
|
+
enabled: false,
|
|
60
|
+
autoToolGeneration: false,
|
|
61
|
+
contextExtraction: false,
|
|
62
|
+
permissionChecking: false,
|
|
63
|
+
..._optionalChain([config, 'optionalAccess', _8 => _8.entity])
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
this.stats = {
|
|
67
|
+
isInitialized: false,
|
|
68
|
+
initializationTime: 0,
|
|
69
|
+
uptime: 0,
|
|
70
|
+
components: {
|
|
71
|
+
aiSDK: false,
|
|
72
|
+
providerManagement: false,
|
|
73
|
+
toolsIntegration: false,
|
|
74
|
+
embeddingsIntegration: false,
|
|
75
|
+
settingsManagement: false,
|
|
76
|
+
structuredData: false
|
|
77
|
+
},
|
|
78
|
+
usage: {
|
|
79
|
+
totalRequests: 0,
|
|
80
|
+
successfulRequests: 0,
|
|
81
|
+
failedRequests: 0,
|
|
82
|
+
averageLatency: 0,
|
|
83
|
+
totalTokens: 0,
|
|
84
|
+
errorRate: 0
|
|
85
|
+
},
|
|
86
|
+
providers: {
|
|
87
|
+
totalProviders: 0,
|
|
88
|
+
healthyProviders: 0,
|
|
89
|
+
unhealthyProviders: 0,
|
|
90
|
+
totalModels: 0
|
|
91
|
+
},
|
|
92
|
+
performance: {
|
|
93
|
+
memoryUsage: typeof process !== "undefined" && process.memoryUsage ? process.memoryUsage() : { rss: 0, heapUsed: 0, heapTotal: 0, external: 0, arrayBuffers: 0 },
|
|
94
|
+
cpuUsage: typeof process !== "undefined" && process.cpuUsage ? process.cpuUsage() : { user: 0, system: 0 }
|
|
95
|
+
}
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* 初始化AI Core Manager
|
|
100
|
+
*/
|
|
101
|
+
async initialize() {
|
|
102
|
+
if (this.initialized) {
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
const initStartTime = Date.now();
|
|
106
|
+
try {
|
|
107
|
+
this.emit("ai_core:initializing", { timestamp: /* @__PURE__ */ new Date() });
|
|
108
|
+
await this.createComponents();
|
|
109
|
+
await this.initializeComponents();
|
|
110
|
+
await this.setupComponentRelationships();
|
|
111
|
+
if (this.config.monitoring.enabled) {
|
|
112
|
+
await this.startMonitoring();
|
|
113
|
+
}
|
|
114
|
+
this.startTime = Date.now();
|
|
115
|
+
this.initializationTime = this.startTime - initStartTime;
|
|
116
|
+
this.initialized = true;
|
|
117
|
+
this.stats.isInitialized = true;
|
|
118
|
+
this.stats.initializationTime = this.initializationTime;
|
|
119
|
+
this.emit("ai_core:initialized", {
|
|
120
|
+
timestamp: /* @__PURE__ */ new Date(),
|
|
121
|
+
duration: this.initializationTime,
|
|
122
|
+
components: Object.keys(this.stats.components)
|
|
123
|
+
});
|
|
124
|
+
} catch (error) {
|
|
125
|
+
this.emit("ai_core:initialization_failed", {
|
|
126
|
+
timestamp: /* @__PURE__ */ new Date(),
|
|
127
|
+
error: error.message,
|
|
128
|
+
duration: Date.now() - initStartTime
|
|
129
|
+
});
|
|
130
|
+
throw error;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
// ================================
|
|
134
|
+
// Component management
|
|
135
|
+
// ================================
|
|
136
|
+
/**
|
|
137
|
+
* 创建所有组件实例
|
|
138
|
+
*/
|
|
139
|
+
async createComponents() {
|
|
140
|
+
this.emit("ai_core:creating_components");
|
|
141
|
+
if (this.config.components.aiSDK) {
|
|
142
|
+
const { AISDKIntegration } = await Promise.resolve().then(() => _interopRequireWildcard(require("./ai-core-UGJWSCQN.js")));
|
|
143
|
+
this.aiSDK = new AISDKIntegration();
|
|
144
|
+
}
|
|
145
|
+
if (this.config.components.providerManagement) {
|
|
146
|
+
const { AIProviderManagement } = await Promise.resolve().then(() => _interopRequireWildcard(require("./ai-provider-WMPMVZFL.js")));
|
|
147
|
+
this.providerManagement = new AIProviderManagement();
|
|
148
|
+
}
|
|
149
|
+
if (this.config.components.toolsIntegration) {
|
|
150
|
+
const { AIToolsIntegration } = await Promise.resolve().then(() => _interopRequireWildcard(require("./ai-tools-B3R77HZ3.js")));
|
|
151
|
+
this.toolsIntegration = new AIToolsIntegration();
|
|
152
|
+
}
|
|
153
|
+
if (this.config.components.embeddingsIntegration) {
|
|
154
|
+
const { AIEmbeddingsIntegration } = await Promise.resolve().then(() => _interopRequireWildcard(require("./ai-embeddings-WCXZMMTZ.js")));
|
|
155
|
+
this.embeddingsIntegration = new AIEmbeddingsIntegration();
|
|
156
|
+
}
|
|
157
|
+
if (this.config.components.settingsManagement) {
|
|
158
|
+
const { AISettingsManagement } = await Promise.resolve().then(() => _interopRequireWildcard(require("./ai-settings-DGCFPK3U.js")));
|
|
159
|
+
this.settingsManagement = new AISettingsManagement();
|
|
160
|
+
}
|
|
161
|
+
if (this.config.components.structuredData) {
|
|
162
|
+
const { AIStructuredDataIntegration } = await Promise.resolve().then(() => _interopRequireWildcard(require("./ai-structured-N2FZLO4A.js")));
|
|
163
|
+
this.structuredData = new AIStructuredDataIntegration();
|
|
164
|
+
}
|
|
165
|
+
this.emit("ai_core:components_created");
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* 初始化所有组件
|
|
169
|
+
*/
|
|
170
|
+
async initializeComponents() {
|
|
171
|
+
this.emit("ai_core:initializing_components");
|
|
172
|
+
const initPromises = [];
|
|
173
|
+
if (this.settingsManagement) {
|
|
174
|
+
initPromises.push(
|
|
175
|
+
this.settingsManagement.initialize().then(() => {
|
|
176
|
+
this.stats.components.settingsManagement = true;
|
|
177
|
+
this.updateComponentHealth("settingsManagement", "healthy");
|
|
178
|
+
})
|
|
179
|
+
);
|
|
180
|
+
}
|
|
181
|
+
if (this.providerManagement) {
|
|
182
|
+
initPromises.push(
|
|
183
|
+
this.providerManagement.initialize().then(() => {
|
|
184
|
+
this.stats.components.providerManagement = true;
|
|
185
|
+
this.updateComponentHealth("providerManagement", "healthy");
|
|
186
|
+
})
|
|
187
|
+
);
|
|
188
|
+
}
|
|
189
|
+
if (this.embeddingsIntegration) {
|
|
190
|
+
initPromises.push(
|
|
191
|
+
this.embeddingsIntegration.initialize().then(() => {
|
|
192
|
+
this.stats.components.embeddingsIntegration = true;
|
|
193
|
+
this.updateComponentHealth("embeddingsIntegration", "healthy");
|
|
194
|
+
})
|
|
195
|
+
);
|
|
196
|
+
}
|
|
197
|
+
if (this.toolsIntegration) {
|
|
198
|
+
initPromises.push(
|
|
199
|
+
this.toolsIntegration.initialize().then(() => {
|
|
200
|
+
this.stats.components.toolsIntegration = true;
|
|
201
|
+
this.updateComponentHealth("toolsIntegration", "healthy");
|
|
202
|
+
})
|
|
203
|
+
);
|
|
204
|
+
}
|
|
205
|
+
if (this.structuredData) {
|
|
206
|
+
initPromises.push(
|
|
207
|
+
this.structuredData.initialize().then(() => {
|
|
208
|
+
this.stats.components.structuredData = true;
|
|
209
|
+
this.updateComponentHealth("structuredData", "healthy");
|
|
210
|
+
})
|
|
211
|
+
);
|
|
212
|
+
}
|
|
213
|
+
if (this.aiSDK) {
|
|
214
|
+
initPromises.push(
|
|
215
|
+
this.aiSDK.initialize().then(() => {
|
|
216
|
+
this.stats.components.aiSDK = true;
|
|
217
|
+
this.updateComponentHealth("aiSDK", "healthy");
|
|
218
|
+
})
|
|
219
|
+
);
|
|
220
|
+
}
|
|
221
|
+
await Promise.all(initPromises);
|
|
222
|
+
this.emit("ai_core:components_initialized");
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* 设置组件间的依赖关系
|
|
226
|
+
*/
|
|
227
|
+
async setupComponentRelationships() {
|
|
228
|
+
this.emit("ai_core:setting_up_relationships");
|
|
229
|
+
if (this.aiSDK && this.config.monitoring.enableEvents) {
|
|
230
|
+
this.aiSDK.on("ai_sdk:stream_started", (data) => {
|
|
231
|
+
this.stats.usage.totalRequests++;
|
|
232
|
+
this.emit("ai_core:request_started", data);
|
|
233
|
+
});
|
|
234
|
+
this.aiSDK.on("ai_sdk:stream_finished", (data) => {
|
|
235
|
+
this.stats.usage.successfulRequests++;
|
|
236
|
+
if (_optionalChain([data, 'access', _9 => _9.usage, 'optionalAccess', _10 => _10.totalTokens])) {
|
|
237
|
+
this.stats.usage.totalTokens += data.usage.totalTokens;
|
|
238
|
+
}
|
|
239
|
+
this.updateAverageLatency(data.latency);
|
|
240
|
+
this.emit("ai_core:request_completed", data);
|
|
241
|
+
});
|
|
242
|
+
this.aiSDK.on("ai_sdk:stream_error", (data) => {
|
|
243
|
+
this.stats.usage.failedRequests++;
|
|
244
|
+
this.updateErrorRate();
|
|
245
|
+
this.emit("ai_core:request_failed", data);
|
|
246
|
+
});
|
|
247
|
+
}
|
|
248
|
+
if (this.providerManagement && this.config.monitoring.enableEvents) {
|
|
249
|
+
this.providerManagement.on("ai_provider:health_check_completed", (data) => {
|
|
250
|
+
this.updateProviderStats();
|
|
251
|
+
this.emit("ai_core:provider_health_updated", data);
|
|
252
|
+
});
|
|
253
|
+
}
|
|
254
|
+
this.emit("ai_core:relationships_setup");
|
|
255
|
+
}
|
|
256
|
+
// ================================
|
|
257
|
+
// Monitoring and health checks
|
|
258
|
+
// ================================
|
|
259
|
+
/**
|
|
260
|
+
* 启动监控系统
|
|
261
|
+
*/
|
|
262
|
+
async startMonitoring() {
|
|
263
|
+
this.emit("ai_core:starting_monitoring");
|
|
264
|
+
if (this.config.monitoring.collectMetrics) {
|
|
265
|
+
setInterval(() => {
|
|
266
|
+
this.updatePerformanceStats();
|
|
267
|
+
}, 5e3);
|
|
268
|
+
}
|
|
269
|
+
if (this.config.providers.autoHealthCheck) {
|
|
270
|
+
this.healthCheckInterval = setInterval(async () => {
|
|
271
|
+
await this.performHealthCheck();
|
|
272
|
+
}, this.config.providers.healthCheckInterval);
|
|
273
|
+
}
|
|
274
|
+
this.emit("ai_core:monitoring_started");
|
|
275
|
+
}
|
|
276
|
+
/**
|
|
277
|
+
* 执行健康检查
|
|
278
|
+
*/
|
|
279
|
+
async performHealthCheck() {
|
|
280
|
+
try {
|
|
281
|
+
const components = [
|
|
282
|
+
"aiSDK",
|
|
283
|
+
"providerManagement",
|
|
284
|
+
"toolsIntegration",
|
|
285
|
+
"embeddingsIntegration",
|
|
286
|
+
"settingsManagement",
|
|
287
|
+
"structuredData"
|
|
288
|
+
];
|
|
289
|
+
for (const componentName of components) {
|
|
290
|
+
const component = this[componentName];
|
|
291
|
+
if (component) {
|
|
292
|
+
try {
|
|
293
|
+
const isHealthy = _nullishCoalesce(_optionalChain([component, 'access', _11 => _11.isInitialized, 'optionalCall', _12 => _12()]), () => ( true));
|
|
294
|
+
this.updateComponentHealth(
|
|
295
|
+
componentName,
|
|
296
|
+
isHealthy ? "healthy" : "unhealthy"
|
|
297
|
+
);
|
|
298
|
+
} catch (error) {
|
|
299
|
+
this.updateComponentHealth(componentName, "unhealthy", error.message);
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
if (this.providerManagement) {
|
|
304
|
+
await this.providerManagement.checkAllProvidersHealth();
|
|
305
|
+
}
|
|
306
|
+
} catch (error) {
|
|
307
|
+
this.emit("ai_core:health_check_error", { error: error.message });
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
/**
|
|
311
|
+
* 更新组件健康状态
|
|
312
|
+
*/
|
|
313
|
+
updateComponentHealth(componentName, status, error) {
|
|
314
|
+
this.componentHealth.set(componentName, {
|
|
315
|
+
name: componentName,
|
|
316
|
+
status,
|
|
317
|
+
lastCheck: /* @__PURE__ */ new Date(),
|
|
318
|
+
error
|
|
319
|
+
});
|
|
320
|
+
}
|
|
321
|
+
/**
|
|
322
|
+
* 更新性能统计
|
|
323
|
+
*/
|
|
324
|
+
updatePerformanceStats() {
|
|
325
|
+
this.stats.uptime = Date.now() - this.startTime;
|
|
326
|
+
if (typeof process !== "undefined") {
|
|
327
|
+
if (process.memoryUsage) {
|
|
328
|
+
this.stats.performance.memoryUsage = process.memoryUsage();
|
|
329
|
+
}
|
|
330
|
+
if (process.cpuUsage) {
|
|
331
|
+
this.stats.performance.cpuUsage = process.cpuUsage(this.stats.performance.cpuUsage);
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
/**
|
|
336
|
+
* 更新平均延迟
|
|
337
|
+
*/
|
|
338
|
+
updateAverageLatency(latency) {
|
|
339
|
+
const total = this.stats.usage.totalRequests;
|
|
340
|
+
this.stats.usage.averageLatency = (this.stats.usage.averageLatency * (total - 1) + latency) / total;
|
|
341
|
+
}
|
|
342
|
+
/**
|
|
343
|
+
* 更新错误率
|
|
344
|
+
*/
|
|
345
|
+
updateErrorRate() {
|
|
346
|
+
this.stats.usage.errorRate = this.stats.usage.failedRequests / this.stats.usage.totalRequests;
|
|
347
|
+
}
|
|
348
|
+
/**
|
|
349
|
+
* 更新Provider统计
|
|
350
|
+
*/
|
|
351
|
+
updateProviderStats() {
|
|
352
|
+
if (this.providerManagement) {
|
|
353
|
+
const healthReport = this.providerManagement.getHealthReport();
|
|
354
|
+
this.stats.providers = {
|
|
355
|
+
totalProviders: healthReport.totalProviders,
|
|
356
|
+
healthyProviders: healthReport.healthyProviders,
|
|
357
|
+
unhealthyProviders: healthReport.unhealthyProviders,
|
|
358
|
+
totalModels: this.providerManagement.getRegisteredProviders().length
|
|
359
|
+
};
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
// ================================
|
|
363
|
+
// Public API methods
|
|
364
|
+
// ================================
|
|
365
|
+
/**
|
|
366
|
+
* 获取完整的统计信息
|
|
367
|
+
*/
|
|
368
|
+
getStats() {
|
|
369
|
+
this.updatePerformanceStats();
|
|
370
|
+
return { ...this.stats };
|
|
371
|
+
}
|
|
372
|
+
/**
|
|
373
|
+
* 获取组件健康状态
|
|
374
|
+
*/
|
|
375
|
+
getComponentHealth() {
|
|
376
|
+
return Array.from(this.componentHealth.values());
|
|
377
|
+
}
|
|
378
|
+
/**
|
|
379
|
+
* 获取整体健康状态
|
|
380
|
+
*/
|
|
381
|
+
getOverallHealth() {
|
|
382
|
+
const components = this.getComponentHealth();
|
|
383
|
+
const healthyCount = components.filter((c) => c.status === "healthy").length;
|
|
384
|
+
const totalCount = components.length;
|
|
385
|
+
let status;
|
|
386
|
+
let summary;
|
|
387
|
+
if (healthyCount === totalCount) {
|
|
388
|
+
status = "healthy";
|
|
389
|
+
summary = "All components are healthy";
|
|
390
|
+
} else if (healthyCount >= totalCount * 0.5) {
|
|
391
|
+
status = "degraded";
|
|
392
|
+
summary = `${healthyCount}/${totalCount} components are healthy`;
|
|
393
|
+
} else {
|
|
394
|
+
status = "unhealthy";
|
|
395
|
+
summary = `Only ${healthyCount}/${totalCount} components are healthy`;
|
|
396
|
+
}
|
|
397
|
+
return { status, components, summary };
|
|
398
|
+
}
|
|
399
|
+
/**
|
|
400
|
+
* 获取AI默认设置 - 从设置管理器统一获取
|
|
401
|
+
*/
|
|
402
|
+
getDefaultSettings() {
|
|
403
|
+
if (!_optionalChain([this, 'access', _13 => _13.settingsManagement, 'optionalAccess', _14 => _14.isInitialized, 'call', _15 => _15()])) {
|
|
404
|
+
return {
|
|
405
|
+
temperature: 0.7,
|
|
406
|
+
maxOutputTokens: 2048,
|
|
407
|
+
topP: 0.95,
|
|
408
|
+
topK: 50
|
|
409
|
+
};
|
|
410
|
+
}
|
|
411
|
+
return this.settingsManagement.getDefaultSettings();
|
|
412
|
+
}
|
|
413
|
+
/**
|
|
414
|
+
* 获取配置信息
|
|
415
|
+
*/
|
|
416
|
+
getConfig() {
|
|
417
|
+
return { ...this.config };
|
|
418
|
+
}
|
|
419
|
+
/**
|
|
420
|
+
* 热重载配置
|
|
421
|
+
*/
|
|
422
|
+
async updateConfig(newConfig) {
|
|
423
|
+
this.emit("ai_core:config_updating", { newConfig });
|
|
424
|
+
this.config = this.deepMerge(this.config, newConfig);
|
|
425
|
+
this.emit("ai_core:config_updated", { config: this.config });
|
|
426
|
+
}
|
|
427
|
+
/**
|
|
428
|
+
* 重启指定组件
|
|
429
|
+
*/
|
|
430
|
+
async restartComponent(componentName) {
|
|
431
|
+
const component = this[componentName];
|
|
432
|
+
if (!component) {
|
|
433
|
+
throw new Error(`Component '${componentName}' not found`);
|
|
434
|
+
}
|
|
435
|
+
this.emit("ai_core:component_restarting", { componentName });
|
|
436
|
+
try {
|
|
437
|
+
if (component.destroy) {
|
|
438
|
+
await component.destroy();
|
|
439
|
+
}
|
|
440
|
+
await component.initialize();
|
|
441
|
+
this.updateComponentHealth(componentName, "healthy");
|
|
442
|
+
this.emit("ai_core:component_restarted", { componentName });
|
|
443
|
+
} catch (error) {
|
|
444
|
+
this.updateComponentHealth(componentName, "unhealthy", error.message);
|
|
445
|
+
this.emit("ai_core:component_restart_failed", {
|
|
446
|
+
componentName,
|
|
447
|
+
error: error.message
|
|
448
|
+
});
|
|
449
|
+
throw error;
|
|
450
|
+
}
|
|
451
|
+
}
|
|
452
|
+
/**
|
|
453
|
+
* 优雅关闭
|
|
454
|
+
*/
|
|
455
|
+
async gracefulShutdown() {
|
|
456
|
+
this.emit("ai_core:shutting_down");
|
|
457
|
+
if (this.healthCheckInterval) {
|
|
458
|
+
clearInterval(this.healthCheckInterval);
|
|
459
|
+
}
|
|
460
|
+
const destroyPromises = [];
|
|
461
|
+
if (_optionalChain([this, 'access', _16 => _16.aiSDK, 'optionalAccess', _17 => _17.destroy])) {
|
|
462
|
+
destroyPromises.push(Promise.resolve(this.aiSDK.destroy()));
|
|
463
|
+
}
|
|
464
|
+
if (_optionalChain([this, 'access', _18 => _18.providerManagement, 'optionalAccess', _19 => _19.destroy])) {
|
|
465
|
+
destroyPromises.push(Promise.resolve(this.providerManagement.destroy()));
|
|
466
|
+
}
|
|
467
|
+
if (_optionalChain([this, 'access', _20 => _20.toolsIntegration, 'optionalAccess', _21 => _21.destroy])) {
|
|
468
|
+
destroyPromises.push(Promise.resolve(this.toolsIntegration.destroy()));
|
|
469
|
+
}
|
|
470
|
+
if (_optionalChain([this, 'access', _22 => _22.embeddingsIntegration, 'optionalAccess', _23 => _23.destroy])) {
|
|
471
|
+
destroyPromises.push(Promise.resolve(this.embeddingsIntegration.destroy()));
|
|
472
|
+
}
|
|
473
|
+
if (_optionalChain([this, 'access', _24 => _24.settingsManagement, 'optionalAccess', _25 => _25.destroy])) {
|
|
474
|
+
destroyPromises.push(Promise.resolve(this.settingsManagement.destroy()));
|
|
475
|
+
}
|
|
476
|
+
if (_optionalChain([this, 'access', _26 => _26.structuredData, 'optionalAccess', _27 => _27.destroy])) {
|
|
477
|
+
destroyPromises.push(Promise.resolve(this.structuredData.destroy()));
|
|
478
|
+
}
|
|
479
|
+
await Promise.all(destroyPromises);
|
|
480
|
+
this.removeAllListeners();
|
|
481
|
+
this.initialized = false;
|
|
482
|
+
this.componentHealth.clear();
|
|
483
|
+
this.emit("ai_core:shutdown_complete");
|
|
484
|
+
}
|
|
485
|
+
/**
|
|
486
|
+
* 深度合并对象
|
|
487
|
+
*/
|
|
488
|
+
deepMerge(target, source) {
|
|
489
|
+
const result = { ...target };
|
|
490
|
+
for (const key in source) {
|
|
491
|
+
if (source[key] && typeof source[key] === "object" && !Array.isArray(source[key])) {
|
|
492
|
+
result[key] = this.deepMerge(target[key] || {}, source[key]);
|
|
493
|
+
} else {
|
|
494
|
+
result[key] = source[key];
|
|
495
|
+
}
|
|
496
|
+
}
|
|
497
|
+
return result;
|
|
498
|
+
}
|
|
499
|
+
/**
|
|
500
|
+
* 检查初始化状态
|
|
501
|
+
*/
|
|
502
|
+
isInitialized() {
|
|
503
|
+
return this.initialized;
|
|
504
|
+
}
|
|
505
|
+
};
|
|
506
|
+
var ai_core_manager_default = AICoreManager;
|
|
507
|
+
|
|
508
|
+
|
|
509
|
+
|
|
510
|
+
|
|
511
|
+
exports.AICoreManager = AICoreManager; exports.ai_core_manager_default = ai_core_manager_default;
|
|
512
|
+
//# sourceMappingURL=chunk-CTEXPMVZ.js.map
|