@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.
Files changed (109) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +854 -0
  3. package/dist/ai-core-LBGYFGOK.mjs +17 -0
  4. package/dist/ai-core-LBGYFGOK.mjs.map +1 -0
  5. package/dist/ai-core-UGJWSCQN.js +17 -0
  6. package/dist/ai-core-UGJWSCQN.js.map +1 -0
  7. package/dist/ai-core-manager-B3Z34RHA.mjs +9 -0
  8. package/dist/ai-core-manager-B3Z34RHA.mjs.map +1 -0
  9. package/dist/ai-core-manager-W7SSDCG5.js +9 -0
  10. package/dist/ai-core-manager-W7SSDCG5.js.map +1 -0
  11. package/dist/ai-embeddings-5ED5LDXX.mjs +17 -0
  12. package/dist/ai-embeddings-5ED5LDXX.mjs.map +1 -0
  13. package/dist/ai-embeddings-WCXZMMTZ.js +17 -0
  14. package/dist/ai-embeddings-WCXZMMTZ.js.map +1 -0
  15. package/dist/ai-form-renderer-24IWNMX5.js +233 -0
  16. package/dist/ai-form-renderer-24IWNMX5.js.map +1 -0
  17. package/dist/ai-form-renderer-BORQABF2.mjs +233 -0
  18. package/dist/ai-form-renderer-BORQABF2.mjs.map +1 -0
  19. package/dist/ai-provider-3PSCVEEN.mjs +17 -0
  20. package/dist/ai-provider-3PSCVEEN.mjs.map +1 -0
  21. package/dist/ai-provider-WMPMVZFL.js +17 -0
  22. package/dist/ai-provider-WMPMVZFL.js.map +1 -0
  23. package/dist/ai-renderer-7WGGWH5D.mjs +134 -0
  24. package/dist/ai-renderer-7WGGWH5D.mjs.map +1 -0
  25. package/dist/ai-renderer-OILYWAJV.js +134 -0
  26. package/dist/ai-renderer-OILYWAJV.js.map +1 -0
  27. package/dist/ai-settings-DGCFPK3U.js +15 -0
  28. package/dist/ai-settings-DGCFPK3U.js.map +1 -0
  29. package/dist/ai-settings-DTXEAB64.mjs +15 -0
  30. package/dist/ai-settings-DTXEAB64.mjs.map +1 -0
  31. package/dist/ai-structured-EGZ26ZS4.mjs +13 -0
  32. package/dist/ai-structured-EGZ26ZS4.mjs.map +1 -0
  33. package/dist/ai-structured-N2FZLO4A.js +13 -0
  34. package/dist/ai-structured-N2FZLO4A.js.map +1 -0
  35. package/dist/ai-tools-B3R77HZ3.js +19 -0
  36. package/dist/ai-tools-B3R77HZ3.js.map +1 -0
  37. package/dist/ai-tools-JAPVYQGE.mjs +19 -0
  38. package/dist/ai-tools-JAPVYQGE.mjs.map +1 -0
  39. package/dist/ai.module-GAHVCBTP.js +7 -0
  40. package/dist/ai.module-GAHVCBTP.js.map +1 -0
  41. package/dist/ai.module-TTPMTPB3.mjs +7 -0
  42. package/dist/ai.module-TTPMTPB3.mjs.map +1 -0
  43. package/dist/chunk-25C2NRSD.mjs +611 -0
  44. package/dist/chunk-25C2NRSD.mjs.map +1 -0
  45. package/dist/chunk-4JQ7UOXH.js +427 -0
  46. package/dist/chunk-4JQ7UOXH.js.map +1 -0
  47. package/dist/chunk-6IUKES2L.js +290 -0
  48. package/dist/chunk-6IUKES2L.js.map +1 -0
  49. package/dist/chunk-COWPK7XN.mjs +834 -0
  50. package/dist/chunk-COWPK7XN.mjs.map +1 -0
  51. package/dist/chunk-CTEXPMVZ.js +512 -0
  52. package/dist/chunk-CTEXPMVZ.js.map +1 -0
  53. package/dist/chunk-DXQTHA75.js +573 -0
  54. package/dist/chunk-DXQTHA75.js.map +1 -0
  55. package/dist/chunk-DZFQ6I23.js +72 -0
  56. package/dist/chunk-DZFQ6I23.js.map +1 -0
  57. package/dist/chunk-J323UTPE.mjs +650 -0
  58. package/dist/chunk-J323UTPE.mjs.map +1 -0
  59. package/dist/chunk-LHNNALVF.js +834 -0
  60. package/dist/chunk-LHNNALVF.js.map +1 -0
  61. package/dist/chunk-O7SZSMXV.js +1621 -0
  62. package/dist/chunk-O7SZSMXV.js.map +1 -0
  63. package/dist/chunk-OTNOFOVW.js +650 -0
  64. package/dist/chunk-OTNOFOVW.js.map +1 -0
  65. package/dist/chunk-PRIGZEI4.mjs +72 -0
  66. package/dist/chunk-PRIGZEI4.mjs.map +1 -0
  67. package/dist/chunk-SBSZ3IPB.mjs +573 -0
  68. package/dist/chunk-SBSZ3IPB.mjs.map +1 -0
  69. package/dist/chunk-SXPA6SSD.mjs +1621 -0
  70. package/dist/chunk-SXPA6SSD.mjs.map +1 -0
  71. package/dist/chunk-T5A4KAVS.mjs +512 -0
  72. package/dist/chunk-T5A4KAVS.mjs.map +1 -0
  73. package/dist/chunk-TDRKKUNT.mjs +357 -0
  74. package/dist/chunk-TDRKKUNT.mjs.map +1 -0
  75. package/dist/chunk-TJFNODPE.js +357 -0
  76. package/dist/chunk-TJFNODPE.js.map +1 -0
  77. package/dist/chunk-V2SSI3SL.mjs +427 -0
  78. package/dist/chunk-V2SSI3SL.mjs.map +1 -0
  79. package/dist/chunk-X42L6MTY.mjs +290 -0
  80. package/dist/chunk-X42L6MTY.mjs.map +1 -0
  81. package/dist/chunk-YSVMY77H.js +611 -0
  82. package/dist/chunk-YSVMY77H.js.map +1 -0
  83. package/dist/core-ANYRS6EF.mjs +73 -0
  84. package/dist/core-ANYRS6EF.mjs.map +1 -0
  85. package/dist/core-K5K34DCS.js +73 -0
  86. package/dist/core-K5K34DCS.js.map +1 -0
  87. package/dist/core-index.d.mts +1668 -0
  88. package/dist/core-index.d.ts +1668 -0
  89. package/dist/core-index.js +101 -0
  90. package/dist/core-index.js.map +1 -0
  91. package/dist/core-index.mjs +101 -0
  92. package/dist/core-index.mjs.map +1 -0
  93. package/dist/index.d.mts +2911 -0
  94. package/dist/index.d.ts +2911 -0
  95. package/dist/index.js +1177 -0
  96. package/dist/index.js.map +1 -0
  97. package/dist/index.mjs +1177 -0
  98. package/dist/index.mjs.map +1 -0
  99. package/dist/tools-352X7A6X.mjs +366 -0
  100. package/dist/tools-352X7A6X.mjs.map +1 -0
  101. package/dist/tools-YLEX6GNO.js +366 -0
  102. package/dist/tools-YLEX6GNO.js.map +1 -0
  103. package/dist/ui-index.d.mts +627 -0
  104. package/dist/ui-index.d.ts +627 -0
  105. package/dist/ui-index.js +2354 -0
  106. package/dist/ui-index.js.map +1 -0
  107. package/dist/ui-index.mjs +2353 -0
  108. package/dist/ui-index.mjs.map +1 -0
  109. 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/index.js","../src/utils/warnings.ts","../src/utils/streaming.ts","../src/utils/persistence.ts","../src/utils/index.ts","../src/types/index.ts","../src/index.ts"],"names":["EntityAIModule","createAICore"],"mappings":"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;AACb,EAAA;AACL,IAAA;AACkB,IAAA;AACL,IAAA;AACd,EAAA;AACH;AAOa;AAAuB;AAE1B,EAAA;AACK,EAAA;AAAA;AAGb,EAAA;AACA,EAAA;AACA,EAAA;AAAA;AAGM,EAAA;AACJ,IAAA;AACkB,IAAA;AAClB,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACF,EAAA;AACF;ANm7BuB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"/Users/shixin/dev/workspaces/scenemesh-projects/scenemesh-platform-workbench5/packages/entity-engine-aimodule/dist/index.js","sourcesContent":[null,"/**\n * Entity Engine AI - Warning System\n * \n * Global warning handling system compliant with AI SDK standards\n */\n\n// Warning type definitions\n\n/**\n * Warning type\n */\nexport type WarningType = \n | 'unsupported-setting'\n | 'unsupported-tool'\n | 'deprecated-feature'\n | 'validation-error'\n | 'performance-warning'\n | 'unknown';\n\n/**\n * Warning object\n */\nexport interface Warning {\n type: WarningType;\n message: string;\n details?: Record<string, any>;\n timestamp: number;\n source?: string;\n}\n\n/**\n * Warning handler function type\n */\nexport type WarningHandler = (warnings: Warning[]) => void;\n\n// Global warning manager\n\n/**\n * Global warning manager\n */\nclass WarningManager {\n private warnings: Warning[] = [];\n private handler: WarningHandler | boolean | null = null;\n private maxWarnings = 100; // Maximum warnings to prevent memory leaks\n\n /**\n * Initialize warning system\n */\n initialize(): void {\n // Check global configuration\n if (typeof globalThis !== 'undefined') {\n // Support AI SDK global configuration format\n const globalHandler = (globalThis as any).AI_SDK_LOG_WARNINGS;\n if (globalHandler !== undefined) {\n this.handler = globalHandler;\n } else {\n // Enable warnings by default\n this.handler = true;\n }\n } else {\n this.handler = true;\n }\n }\n\n /**\n * Set warning handler\n */\n setHandler(handler: WarningHandler | boolean): void {\n this.handler = handler;\n }\n\n /**\n * Add warning\n */\n warn(type: WarningType, message: string, details?: Record<string, any>, source?: string): void {\n const warning: Warning = {\n type,\n message,\n details,\n timestamp: Date.now(),\n source,\n };\n\n // Add to warning list\n this.warnings.push(warning);\n \n // Limit warning count\n if (this.warnings.length > this.maxWarnings) {\n this.warnings = this.warnings.slice(-this.maxWarnings);\n }\n\n // Process warning\n this.processWarning(warning);\n }\n\n /**\n * Process warning\n */\n private processWarning(warning: Warning): void {\n if (this.handler === false) {\n // Warnings are disabled\n return;\n }\n\n if (typeof this.handler === 'function') {\n // Use custom handler\n try {\n this.handler([warning]);\n } catch (error) {\n // Fallback to default handling\n this.defaultHandler([warning]);\n }\n } else {\n // Use default handler\n this.defaultHandler([warning]);\n }\n }\n\n /**\n * Default warning handler\n */\n private defaultHandler(warnings: Warning[]): void {\n warnings.forEach(warning => {\n const prefix = 'AI SDK Warning:';\n const message = `${prefix} ${warning.message}`;\n \n });\n }\n\n /**\n * Get all warnings\n */\n getWarnings(): Warning[] {\n return [...this.warnings];\n }\n\n /**\n * Clear warnings\n */\n clearWarnings(): void {\n this.warnings = [];\n }\n\n /**\n * Get warnings by type\n */\n getWarningsByType(type: WarningType): Warning[] {\n return this.warnings.filter(w => w.type === type);\n }\n\n /**\n * Get warning statistics\n */\n getWarningStats(): Record<WarningType, number> {\n const stats: Record<string, number> = {};\n \n this.warnings.forEach(warning => {\n stats[warning.type] = (stats[warning.type] || 0) + 1;\n });\n\n return stats as Record<WarningType, number>;\n }\n}\n\n// Create global instance\nconst warningManager = new WarningManager();\n\n// Initialize\nif (typeof globalThis !== 'undefined') {\n warningManager.initialize();\n}\n\n// Exported warning functions\n\n/**\n * Warn about unsupported setting\n */\nexport function warnUnsupportedSetting(setting: string, model?: string): void {\n warningManager.warn(\n 'unsupported-setting',\n `The \"${setting}\" setting is not supported${model ? ` by the ${model} model` : ''}`,\n { setting, model },\n 'entity-engine-aiui'\n );\n}\n\n/**\n * Warn about unsupported tool\n */\nexport function warnUnsupportedTool(toolName: string, model?: string): void {\n warningManager.warn(\n 'unsupported-tool',\n `The tool \"${toolName}\" is not supported${model ? ` by the ${model} model` : ''}`,\n { toolName, model },\n 'entity-engine-aiui'\n );\n}\n\n/**\n * Warn about deprecated feature\n */\nexport function warnDeprecatedFeature(feature: string, replacement?: string): void {\n const message = `The \"${feature}\" feature is deprecated${replacement ? ` and will be replaced with \"${replacement}\"` : ''}`;\n warningManager.warn(\n 'deprecated-feature',\n message,\n { feature, replacement },\n 'entity-engine-aiui'\n );\n}\n\n/**\n * Warn about validation error\n */\nexport function warnValidationError(message: string, details?: Record<string, any>): void {\n warningManager.warn(\n 'validation-error',\n message,\n details,\n 'entity-engine-aiui'\n );\n}\n\n/**\n * Warn about performance issue\n */\nexport function warnPerformance(message: string, details?: Record<string, any>): void {\n warningManager.warn(\n 'performance-warning',\n message,\n details,\n 'entity-engine-aiui'\n );\n}\n\n/**\n * Emit general warning\n */\nexport function warn(message: string, details?: Record<string, any>): void {\n warningManager.warn(\n 'unknown',\n message,\n details,\n 'entity-engine-aiui'\n );\n}\n\n/**\n * Set warning handler\n */\nexport function setWarningHandler(handler: WarningHandler | boolean): void {\n warningManager.setHandler(handler);\n}\n\n/**\n * Get all warnings\n */\nexport function getWarnings(): Warning[] {\n return warningManager.getWarnings();\n}\n\n/**\n * Clear warnings\n */\nexport function clearWarnings(): void {\n warningManager.clearWarnings();\n}\n\n/**\n * Get warning statistics\n */\nexport function getWarningStats(): Record<WarningType, number> {\n return warningManager.getWarningStats();\n}\n\n// Development environment enhancements\n\n// Provide additional functionality in development environment\nif (process.env.NODE_ENV === 'development') {\n // Add warning manager to global object for debugging\n if (typeof globalThis !== 'undefined') {\n (globalThis as any).__ENTITY_ENGINE_AIUI_WARNINGS__ = {\n manager: warningManager,\n getWarnings,\n clearWarnings,\n getWarningStats,\n setWarningHandler,\n };\n }\n\n // Add more detailed stack tracing\n const originalWarn = warningManager.warn.bind(warningManager);\n (warningManager as any).warn = (\n type: WarningType,\n message: string,\n details?: Record<string, any>,\n source?: string\n ) => {\n const stack = new Error().stack;\n const enhancedDetails = {\n ...details,\n stack: stack?.split('\\n').slice(2, 5).join('\\n'), // Keep only first 3 stack levels\n };\n \n originalWarn(type, message, enhancedDetails, source);\n };\n}\n\n// Default export\n\nexport default {\n warn,\n warnUnsupportedSetting,\n warnUnsupportedTool,\n warnDeprecatedFeature,\n warnValidationError,\n warnPerformance,\n setWarningHandler,\n getWarnings,\n clearWarnings,\n getWarningStats,\n};","/**\n * Entity Engine AI - Streaming Utils\n * \n * Stream processing utilities for message stream reading and processing\n */\n\nimport type { UIMessage } from 'ai';\n\n// Message stream reader\n\n/**\n * Read UI message stream options\n */\nexport interface ReadUIMessageStreamOptions {\n stream: ReadableStream;\n message?: UIMessage;\n onMessage?: (message: UIMessage) => void;\n onError?: (error: Error) => void;\n onComplete?: (finalMessage: UIMessage) => void;\n}\n\n/**\n * UI message stream reader\n */\nexport class UIMessageStreamReader {\n private reader: ReadableStreamDefaultReader | null = null;\n private currentMessage: UIMessage | null = null;\n private isReading = false;\n\n constructor(private options: ReadUIMessageStreamOptions) {\n this.currentMessage = options.message || null;\n }\n\n /**\n * Start reading stream\n */\n async *read(): AsyncIterableIterator<UIMessage> {\n if (this.isReading) {\n throw new Error('Stream is already being read');\n }\n\n this.isReading = true;\n this.reader = this.options.stream.getReader();\n\n try {\n let done = false;\n \n while (!done) {\n const { value, done: streamDone } = await this.reader.read();\n done = streamDone;\n\n if (value) {\n const message = this.processChunk(value);\n if (message) {\n this.options.onMessage?.(message);\n yield message;\n }\n }\n }\n\n if (this.currentMessage) {\n this.options.onComplete?.(this.currentMessage);\n }\n } catch (error) {\n const err = error instanceof Error ? error : new Error(String(error));\n this.options.onError?.(err);\n throw err;\n } finally {\n this.cleanup();\n }\n }\n\n /**\n * Process stream chunk\n */\n private processChunk(chunk: any): UIMessage | null {\n try {\n // If chunk is string, try to parse JSON\n if (typeof chunk === 'string') {\n chunk = JSON.parse(chunk);\n }\n\n // If chunk is Uint8Array, convert to string then parse\n if (chunk instanceof Uint8Array) {\n const decoder = new TextDecoder();\n chunk = JSON.parse(decoder.decode(chunk));\n }\n\n // Handle different types of stream data\n if (chunk.type) {\n return this.handleStreamData(chunk);\n }\n\n return null;\n } catch (error) {\n return null;\n }\n }\n\n /**\n * Handle stream data\n */\n private handleStreamData(data: any): UIMessage | null {\n switch (data.type) {\n case 'message-start':\n return this.handleMessageStart(data);\n \n case 'message-delta':\n return this.handleMessageDelta(data);\n \n case 'message-stop':\n return this.handleMessageStop(data);\n \n case 'text-delta':\n return this.handleTextDelta(data);\n \n case 'tool-call':\n return this.handleToolCall(data);\n \n case 'tool-result':\n return this.handleToolResult(data);\n \n default:\n return null;\n }\n }\n\n /**\n * Handle message start\n */\n private handleMessageStart(data: any): UIMessage {\n this.currentMessage = {\n id: data.messageId || this.generateId(),\n role: data.role || 'assistant',\n parts: [],\n metadata: data.metadata || {},\n ...data,\n } as UIMessage;\n\n return { ...this.currentMessage };\n }\n\n /**\n * Handle message delta\n */\n private handleMessageDelta(data: any): UIMessage | null {\n if (!this.currentMessage) {\n return null;\n }\n\n // Update message content\n if (data.content) {\n // Find or create text part\n let textPart = this.currentMessage.parts.find(p => p.type === 'text') as any;\n if (!textPart) {\n textPart = { type: 'text', text: '' };\n this.currentMessage.parts.push(textPart);\n }\n \n textPart.text += data.content;\n }\n\n return { ...this.currentMessage };\n }\n\n /**\n * Handle message stop\n */\n private handleMessageStop(data: any): UIMessage | null {\n if (!this.currentMessage) {\n return null;\n }\n\n // Update final state\n if (data.finishReason) {\n this.currentMessage.metadata = {\n ...(this.currentMessage.metadata || {}),\n finishReason: data.finishReason,\n };\n }\n\n return { ...this.currentMessage };\n }\n\n /**\n * Handle text delta\n */\n private handleTextDelta(data: any): UIMessage | null {\n if (!this.currentMessage) {\n // Create new message\n this.currentMessage = {\n id: this.generateId(),\n role: 'assistant',\n parts: [{ type: 'text', text: data.text || '' }],\n };\n } else {\n // Update existing message\n let textPart = this.currentMessage.parts.find(p => p.type === 'text') as any;\n if (!textPart) {\n textPart = { type: 'text', text: '' };\n this.currentMessage.parts.push(textPart);\n }\n \n textPart.text += data.text || '';\n }\n\n return { ...this.currentMessage };\n }\n\n /**\n * Handle tool call\n */\n private handleToolCall(data: any): UIMessage | null {\n if (!this.currentMessage) {\n this.currentMessage = {\n id: this.generateId(),\n role: 'assistant',\n parts: [],\n };\n }\n\n // Add tool call part\n const toolPart = {\n type: 'dynamic-tool' as const,\n toolCallId: data.toolCallId,\n toolName: data.toolName,\n input: data.input,\n state: 'input-available' as const,\n } as any;\n\n this.currentMessage.parts.push(toolPart);\n return { ...this.currentMessage };\n }\n\n /**\n * Handle tool result\n */\n private handleToolResult(data: any): UIMessage | null {\n if (!this.currentMessage) {\n return null;\n }\n\n // Find corresponding tool call part and update\n const toolPart = this.currentMessage.parts.find(\n p => p.type.startsWith('tool-') && (p as any).toolCallId === data.toolCallId\n ) as any;\n\n if (toolPart) {\n toolPart.output = data.result;\n toolPart.state = data.error ? 'output-error' : 'output-available';\n if (data.error) {\n toolPart.errorText = data.error;\n }\n }\n\n return { ...this.currentMessage };\n }\n\n /**\n * Generate ID\n */\n private generateId(): string {\n return Math.random().toString(36).substr(2, 9);\n }\n\n /**\n * Stop reading\n */\n async stop(): Promise<void> {\n if (this.reader) {\n await this.reader.cancel();\n }\n this.cleanup();\n }\n\n /**\n * Cleanup resources\n */\n private cleanup(): void {\n this.isReading = false;\n if (this.reader) {\n this.reader.releaseLock();\n this.reader = null;\n }\n }\n}\n\n/**\n * Read UI message stream\n */\nexport async function* readUIMessageStream(\n options: ReadUIMessageStreamOptions\n): AsyncIterableIterator<UIMessage> {\n const reader = new UIMessageStreamReader(options);\n yield* reader.read();\n}\n\n// Stream resume utilities\n\n/**\n * Stream resume options\n */\nexport interface StreamResumeOptions {\n chatId: string;\n messageId?: string;\n endpoint?: string;\n headers?: Record<string, string>;\n}\n\n/**\n * Resume stream\n */\nexport async function resumeStream({\n chatId,\n messageId,\n endpoint = '/api/chat/resume',\n headers = {},\n}: StreamResumeOptions): Promise<ReadableStream> {\n const response = await fetch(endpoint, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n ...headers,\n },\n body: JSON.stringify({\n chatId,\n messageId,\n }),\n });\n\n if (!response.ok) {\n throw new Error(`Resume request failed: ${response.status}`);\n }\n\n if (!response.body) {\n throw new Error('No response body received');\n }\n\n return response.body;\n}\n\n// Stream state management\n\n/**\n * Stream state\n */\nexport type StreamState = 'idle' | 'connecting' | 'streaming' | 'complete' | 'error' | 'aborted';\n\n/**\n * Stream state manager\n */\nexport class StreamStateManager {\n private state: StreamState = 'idle';\n private listeners = new Set<(state: StreamState) => void>();\n private abortController: AbortController | null = null;\n\n /**\n * Get current state\n */\n getState(): StreamState {\n return this.state;\n }\n\n /**\n * Set state\n */\n setState(newState: StreamState): void {\n if (this.state !== newState) {\n this.state = newState;\n this.notifyListeners();\n }\n }\n\n /**\n * Listen to state changes\n */\n onStateChange(listener: (state: StreamState) => void): () => void {\n this.listeners.add(listener);\n \n // Return function to cancel listening\n return () => {\n this.listeners.delete(listener);\n };\n }\n\n /**\n * Start stream\n */\n startStream(): AbortController {\n this.abortController = new AbortController();\n this.setState('connecting');\n return this.abortController;\n }\n\n /**\n * Abort stream\n */\n abortStream(): void {\n if (this.abortController) {\n this.abortController.abort();\n this.abortController = null;\n }\n this.setState('aborted');\n }\n\n /**\n * Complete stream\n */\n completeStream(): void {\n this.abortController = null;\n this.setState('complete');\n }\n\n /**\n * Stream error\n */\n errorStream(): void {\n this.abortController = null;\n this.setState('error');\n }\n\n /**\n * Reset state\n */\n reset(): void {\n this.abortController = null;\n this.setState('idle');\n }\n\n /**\n * Notify listeners\n */\n private notifyListeners(): void {\n this.listeners.forEach(listener => {\n try {\n listener(this.state);\n } catch (error) {\n // Ignore listener errors\n }\n });\n }\n\n /**\n * Dispose\n */\n dispose(): void {\n this.abortController = null;\n this.listeners.clear();\n this.setState('idle');\n }\n}","/**\n * 🎯 Entity Engine AIUI - Message Persistence Utils\n * \n * 消息持久化工具,支持消息验证、ID生成和存储管理\n */\n\nimport type { z } from 'zod';\nimport type { UIMessage } from 'ai';\n\n// ================================\n// 🎯 ID生成器\n// ================================\n\n/**\n * ID生成器选项\n */\nexport interface IdGeneratorOptions {\n prefix?: string;\n size?: number;\n}\n\n/**\n * 创建ID生成器\n */\nexport function createIdGenerator(options: IdGeneratorOptions = {}) {\n const { prefix = '', size = 12 } = options;\n \n return (): string => {\n const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n let result = '';\n \n for (let i = 0; i < size; i++) {\n result += chars.charAt(Math.floor(Math.random() * chars.length));\n }\n \n return prefix ? `${prefix}-${result}` : result;\n };\n}\n\n/**\n * 生成唯一ID\n */\nexport function generateId(): string {\n return createIdGenerator()();\n}\n\n// ================================\n// 🎯 消息验证\n// ================================\n\n/**\n * 消息验证选项\n */\nexport interface ValidateUIMessagesOptions<T extends Record<string, any> = any> {\n messages: UIMessage[];\n tools?: T;\n dataPartsSchema?: z.ZodSchema;\n metadataSchema?: z.ZodSchema;\n}\n\n/**\n * 验证UI消息\n */\nexport async function validateUIMessages<T extends Record<string, any>>({\n messages,\n tools,\n dataPartsSchema,\n metadataSchema,\n}: ValidateUIMessagesOptions<T>): Promise<UIMessage[]> {\n const validatedMessages: UIMessage[] = [];\n\n for (const message of messages) {\n try {\n const validatedMessage = await validateSingleMessage(message, {\n tools,\n dataPartsSchema,\n metadataSchema,\n });\n validatedMessages.push(validatedMessage);\n } catch (error) {\n // 如果验证失败,记录错误但继续处理\n // 可以选择跳过无效消息或使用默认值\n validatedMessages.push(sanitizeMessage(message));\n }\n }\n\n return validatedMessages;\n}\n\n/**\n * 验证单个消息\n */\nasync function validateSingleMessage<T extends Record<string, any>>(\n message: UIMessage,\n options: Omit<ValidateUIMessagesOptions<T>, 'messages'>\n): Promise<UIMessage> {\n const { tools, dataPartsSchema, metadataSchema } = options;\n\n // 验证消息结构\n if (!message.id || !message.role || !Array.isArray(message.parts)) {\n throw new Error('Invalid message structure');\n }\n\n // 验证消息部分\n const validatedParts = [];\n for (const part of message.parts) {\n const validatedPart = await validateMessagePart(part, tools);\n validatedParts.push(validatedPart);\n }\n\n // 验证元数据\n let validatedMetadata = message.metadata;\n if (metadataSchema && message.metadata) {\n try {\n validatedMetadata = metadataSchema.parse(message.metadata);\n } catch (error) {\n validatedMetadata = undefined;\n }\n }\n\n return {\n ...message,\n parts: validatedParts,\n metadata: validatedMetadata,\n };\n}\n\n/**\n * 验证消息部分\n */\nasync function validateMessagePart(part: any, tools?: Record<string, any>): Promise<any> {\n // 验证文本部分\n if (part.type === 'text') {\n if (typeof part.text !== 'string') {\n throw new Error('Text part must have a string text property');\n }\n return part;\n }\n\n // 验证文件部分\n if (part.type === 'file') {\n if (!part.filename || !part.url) {\n throw new Error('File part must have filename and url properties');\n }\n return part;\n }\n\n // 验证工具调用部分\n if (part.type.startsWith('tool-') || part.type === 'dynamic-tool') {\n const toolName = part.type === 'dynamic-tool' ? part.toolName : part.type.replace('tool-', '');\n \n // 如果提供了工具定义,验证工具是否存在\n if (tools && toolName && !tools[toolName]) {\n console.warn(`Tool ${toolName} not found in provided tools`);\n }\n \n return part;\n }\n\n // 验证数据部分\n if (part.type.startsWith('data-')) {\n if (!part.data) {\n throw new Error('Data part must have a data property');\n }\n return part;\n }\n\n return part;\n}\n\n/**\n * 清理消息(移除无效部分)\n */\nfunction sanitizeMessage(message: UIMessage): UIMessage {\n const sanitizedParts = message.parts.filter(part => \n // 保留有效的部分类型\n part && typeof part === 'object' && part.type\n );\n\n return {\n ...message,\n parts: sanitizedParts.length > 0 ? sanitizedParts : [\n { type: 'text', text: '[Message content could not be validated]' }\n ],\n };\n}\n\n// ================================\n// 🎯 类型验证错误\n// ================================\n\n/**\n * 类型验证错误类\n */\nexport class TypeValidationError extends Error {\n constructor(message: string, public readonly details?: any) {\n super(message);\n this.name = 'TypeValidationError';\n }\n}\n\n// ================================\n// 🎯 消息存储接口\n// ================================\n\n/**\n * 消息存储接口\n */\nexport interface MessageStore {\n createChat(): Promise<string>;\n loadChat(id: string): Promise<UIMessage[]>;\n saveChat(options: { chatId: string; messages: UIMessage[] }): Promise<void>;\n deleteChat(id: string): Promise<void>;\n listChats(): Promise<Array<{ id: string; title?: string; updatedAt: Date }>>;\n}\n\n/**\n * 内存消息存储(用于开发和测试)\n */\nexport class InMemoryMessageStore implements MessageStore {\n private chats = new Map<string, UIMessage[]>();\n private metadata = new Map<string, { title?: string; updatedAt: Date }>();\n\n async createChat(): Promise<string> {\n const id = generateId();\n this.chats.set(id, []);\n this.metadata.set(id, { updatedAt: new Date() });\n return id;\n }\n\n async loadChat(id: string): Promise<UIMessage[]> {\n const messages = this.chats.get(id);\n if (!messages) {\n throw new Error(`Chat ${id} not found`);\n }\n return [...messages];\n }\n\n async saveChat({ chatId, messages }: { chatId: string; messages: UIMessage[] }): Promise<void> {\n this.chats.set(chatId, [...messages]);\n \n // 更新元数据\n const existing = this.metadata.get(chatId) || {};\n this.metadata.set(chatId, {\n ...existing,\n updatedAt: new Date(),\n title: (existing as any).title || this.extractTitle(messages),\n });\n }\n\n async deleteChat(id: string): Promise<void> {\n this.chats.delete(id);\n this.metadata.delete(id);\n }\n\n async listChats(): Promise<Array<{ id: string; title?: string; updatedAt: Date }>> {\n return Array.from(this.metadata.entries()).map(([id, meta]) => ({\n id,\n ...meta,\n }));\n }\n\n private extractTitle(messages: UIMessage[]): string {\n // 提取第一个用户消息作为标题\n const firstUserMessage = messages.find(m => m.role === 'user');\n if (firstUserMessage) {\n const textPart = firstUserMessage.parts.find(p => p.type === 'text') as any;\n if (textPart?.text) {\n return textPart.text.slice(0, 50) + (textPart.text.length > 50 ? '...' : '');\n }\n }\n return 'Untitled Chat';\n }\n}\n\n/**\n * 本地存储消息存储\n */\nexport class LocalStorageMessageStore implements MessageStore {\n private readonly keyPrefix = 'entity-engine-aiui-chat-';\n\n async createChat(): Promise<string> {\n const id = generateId();\n const key = this.keyPrefix + id;\n \n const chatData = {\n id,\n messages: [],\n createdAt: new Date().toISOString(),\n updatedAt: new Date().toISOString(),\n };\n\n localStorage.setItem(key, JSON.stringify(chatData));\n return id;\n }\n\n async loadChat(id: string): Promise<UIMessage[]> {\n const key = this.keyPrefix + id;\n const data = localStorage.getItem(key);\n \n if (!data) {\n throw new Error(`Chat ${id} not found`);\n }\n\n try {\n const chatData = JSON.parse(data);\n return chatData.messages || [];\n } catch (error) {\n throw new Error(`Failed to parse chat data: ${error}`);\n }\n }\n\n async saveChat({ chatId, messages }: { chatId: string; messages: UIMessage[] }): Promise<void> {\n const key = this.keyPrefix + chatId;\n const existing = localStorage.getItem(key);\n \n const chatData: any = {\n id: chatId,\n messages,\n createdAt: new Date().toISOString(),\n updatedAt: new Date().toISOString(),\n };\n\n if (existing) {\n try {\n const parsedExisting = JSON.parse(existing);\n chatData.createdAt = parsedExisting.createdAt || chatData.createdAt;\n } catch {\n // Ignore validation errors\n }\n }\n\n localStorage.setItem(key, JSON.stringify(chatData));\n }\n\n async deleteChat(id: string): Promise<void> {\n const key = this.keyPrefix + id;\n localStorage.removeItem(key);\n }\n\n async listChats(): Promise<Array<{ id: string; title?: string; updatedAt: Date }>> {\n const chats: Array<{ id: string; title?: string; updatedAt: Date }> = [];\n \n for (let i = 0; i < localStorage.length; i++) {\n const key = localStorage.key(i);\n if (key?.startsWith(this.keyPrefix)) {\n try {\n const data = localStorage.getItem(key);\n if (data) {\n const chatData = JSON.parse(data);\n chats.push({\n id: chatData.id,\n title: this.extractTitle(chatData.messages || []),\n updatedAt: new Date(chatData.updatedAt || chatData.createdAt),\n });\n }\n } catch {\n // Ignore part validation errors\n }\n }\n }\n\n return chats.sort((a, b) => b.updatedAt.getTime() - a.updatedAt.getTime());\n }\n\n private extractTitle(messages: UIMessage[]): string {\n const firstUserMessage = messages.find(m => m.role === 'user');\n if (firstUserMessage) {\n const textPart = firstUserMessage.parts.find(p => p.type === 'text') as any;\n if (textPart?.text) {\n return textPart.text.slice(0, 50) + (textPart.text.length > 50 ? '...' : '');\n }\n }\n return 'Untitled Chat';\n }\n}","/**\n * Entity Engine AI - Utility Functions\n * \n * Collection of utility functions for common operations\n */\n\nimport type { ExtendedUIMessage } from '../types/ui-types';\n\n// Export other utility modules\n\nexport * from './warnings';\nexport * from './streaming';\nexport * from './persistence';\n\n// Message processing utilities\n\n/**\n * Extract text content from message\n */\nexport function extractMessageText(message: ExtendedUIMessage): string {\n return message.parts\n .filter(part => part.type === 'text')\n .map(part => (part as any).text)\n .join('\\n');\n}\n\n/**\n * Check if message contains tool calls\n */\nexport function hasToolCalls(message: ExtendedUIMessage): boolean {\n return message.parts.some(part => \n part.type.startsWith('tool-') || part.type === 'dynamic-tool'\n );\n}\n\n/**\n * Get tool calls list from message\n */\nexport function getToolCalls(message: ExtendedUIMessage): Array<{\n toolName: string;\n state: string;\n input?: any;\n output?: any;\n}> {\n return message.parts\n .filter(part => part.type.startsWith('tool-') || part.type === 'dynamic-tool')\n .map(part => ({\n toolName: part.type === 'dynamic-tool' \n ? (part as any).toolName \n : part.type.replace('tool-', ''),\n state: (part as any).state || 'unknown',\n input: (part as any).input,\n output: (part as any).output,\n }));\n}\n\n/**\n * Check if message contains file attachments\n */\nexport function hasFileAttachments(message: ExtendedUIMessage): boolean {\n return message.parts.some(part => part.type === 'file');\n}\n\n/**\n * Get file attachments list from message\n */\nexport function getFileAttachments(message: ExtendedUIMessage) {\n return message.parts\n .filter(part => part.type === 'file')\n .map(part => part as any);\n}\n\n// Time formatting utilities\n\n/**\n * Format timestamp\n */\nexport function formatTimestamp(timestamp?: number, options?: {\n format?: 'short' | 'long' | 'relative';\n includeDate?: boolean;\n}): string {\n if (!timestamp) return '';\n \n const date = new Date(timestamp);\n const { format = 'short', includeDate = false } = options || {};\n\n switch (format) {\n case 'short':\n return date.toLocaleTimeString([], { \n hour: '2-digit', \n minute: '2-digit',\n ...(includeDate && { \n month: 'short', \n day: 'numeric' \n })\n });\n \n case 'long':\n return date.toLocaleString();\n \n case 'relative':\n return formatRelativeTime(timestamp);\n \n default:\n return date.toLocaleTimeString();\n }\n}\n\n/**\n * Format relative time\n */\nexport function formatRelativeTime(timestamp: number): string {\n const now = Date.now();\n const diff = now - timestamp;\n \n const minute = 60 * 1000;\n const hour = minute * 60;\n const day = hour * 24;\n const week = day * 7;\n const month = day * 30;\n const year = day * 365;\n\n if (diff < minute) {\n return 'Just now';\n } else if (diff < hour) {\n const minutes = Math.floor(diff / minute);\n return `${minutes}m ago`;\n } else if (diff < day) {\n const hours = Math.floor(diff / hour);\n return `${hours}h ago`;\n } else if (diff < week) {\n const days = Math.floor(diff / day);\n return `${days}d ago`;\n } else if (diff < month) {\n const weeks = Math.floor(diff / week);\n return `${weeks}w ago`;\n } else if (diff < year) {\n const months = Math.floor(diff / month);\n return `${months}mo ago`;\n } else {\n const years = Math.floor(diff / year);\n return `${years}y ago`;\n }\n}\n\n// File processing utilities\n\n/**\n * Format file size\n */\nexport function formatFileSize(bytes: number): string {\n if (bytes === 0) return '0 B';\n \n const k = 1024;\n const sizes = ['B', 'KB', 'MB', 'GB', 'TB'];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n \n return parseFloat((bytes / Math.pow(k, i)).toFixed(1)) + ' ' + sizes[i];\n}\n\n/**\n * Get file extension\n */\nexport function getFileExtension(filename: string): string {\n return filename.split('.').pop()?.toLowerCase() || '';\n}\n\n/**\n * Check if file type is accepted\n */\nexport function isFileTypeAccepted(\n file: File, \n acceptedTypes: string[]\n): boolean {\n return acceptedTypes.some(type => {\n if (type.endsWith('/*')) {\n return file.type.startsWith(type.slice(0, -1));\n }\n return file.type === type;\n });\n}\n\n/**\n * Create file URL\n */\nexport function createFileUrl(file: File): string {\n return URL.createObjectURL(file);\n}\n\n/**\n * Revoke file URL\n */\nexport function revokeFileUrl(url: string): void {\n URL.revokeObjectURL(url);\n}\n\n// String processing utilities\n\n/**\n * Truncate text\n */\nexport function truncateText(text: string, maxLength: number): string {\n if (text.length <= maxLength) return text;\n return text.slice(0, maxLength - 3) + '...';\n}\n\n/**\n * Highlight search terms\n */\nexport function highlightSearchTerms(text: string, searchTerms: string[]): string {\n if (!searchTerms.length) return text;\n \n let highlightedText = text;\n searchTerms.forEach(term => {\n const regex = new RegExp(`(${term})`, 'gi');\n highlightedText = highlightedText.replace(regex, '<mark>$1</mark>');\n });\n \n return highlightedText;\n}\n\n/**\n * Convert camelCase to space-separated\n */\nexport function camelToSpaced(str: string): string {\n return str.replace(/([A-Z])/g, ' $1').trim();\n}\n\n// Data validation utilities\n\n/**\n * Check if string is valid URL\n */\nexport function isValidUrl(string: string): boolean {\n try {\n new URL(string);\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * Check if string is valid JSON\n */\nexport function isValidJson(string: string): boolean {\n try {\n JSON.parse(string);\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * Safe JSON parse\n */\nexport function safeJsonParse<T>(string: string, fallback: T): T {\n try {\n return JSON.parse(string);\n } catch {\n return fallback;\n }\n}\n\n// CSS class name utilities\n\n/**\n * Combine CSS class names (simplified clsx)\n */\nexport function cn(...classes: (string | undefined | null | false)[]): string {\n return classes.filter(Boolean).join(' ');\n}\n\n// Error handling utilities\n\n/**\n * Safely execute async function\n */\nexport async function safeAsync<T>(\n fn: () => Promise<T>,\n fallback?: T\n): Promise<{ data?: T; error?: Error }> {\n try {\n const data = await fn();\n return { data };\n } catch (error) {\n return { \n error: error instanceof Error ? error : new Error(String(error)),\n ...(fallback !== undefined && { data: fallback })\n };\n }\n}\n\n/**\n * Create error message\n */\nexport function createErrorMessage(error: unknown): string {\n if (error instanceof Error) {\n return error.message;\n }\n if (typeof error === 'string') {\n return error;\n }\n return 'An unknown error occurred';\n}\n\n// Performance utilities\n\n/**\n * Debounce function\n */\nexport function debounce<T extends (...args: any[]) => any>(\n func: T,\n delay: number\n): (...args: Parameters<T>) => void {\n let timeoutId: NodeJS.Timeout;\n \n return function debouncedFunction(this: any, ...args: Parameters<T>) {\n clearTimeout(timeoutId);\n timeoutId = setTimeout(() => func.apply(this, args), delay);\n };\n}\n\n/**\n * Throttle function\n */\nexport function throttle<T extends (...args: any[]) => any>(\n func: T,\n delay: number\n): (...args: Parameters<T>) => void {\n let inThrottle: boolean;\n \n return function throttledFunction(this: any, ...args: Parameters<T>) {\n if (!inThrottle) {\n func.apply(this, args);\n inThrottle = true;\n setTimeout(() => inThrottle = false, delay);\n }\n };\n}\n\n// Local storage utilities\n\n/**\n * Safe localStorage operations\n */\nexport const storage = {\n get<T>(key: string, fallback?: T): T | null {\n if (typeof window === 'undefined') return fallback || null;\n \n try {\n const item = localStorage.getItem(key);\n return item ? JSON.parse(item) : (fallback || null);\n } catch {\n return fallback || null;\n }\n },\n\n set<T>(key: string, value: T): boolean {\n if (typeof window === 'undefined') return false;\n \n try {\n localStorage.setItem(key, JSON.stringify(value));\n return true;\n } catch {\n return false;\n }\n },\n\n remove(key: string): boolean {\n if (typeof window === 'undefined') return false;\n \n try {\n localStorage.removeItem(key);\n return true;\n } catch {\n return false;\n }\n },\n\n clear(): boolean {\n if (typeof window === 'undefined') return false;\n \n try {\n localStorage.clear();\n return true;\n } catch {\n return false;\n }\n }\n};","/**\n * Entity Engine AI Module - Type Definitions\n * \n * Consolidates all type definitions from Core and UI modules, providing unified type interface\n */\n\n// Core module types\n\n// Export all core types\nexport * from './core-types';\n\n// Event types\nexport type {\n ChatEvents\n} from './ui-types';\n\n// Data types - removed non-standard types\nexport type {\n CustomDataParts\n} from './ui-types';\n\n// Transport types\nexport type {\n CustomTransportOptions\n} from './ui-types';\n\n// Theme types\nexport type {\n ThemeConfig,\n StyleVariants\n} from './ui-types';\n\n// Component types\nexport type {\n ChatDialogProps,\n FileViewerProps,\n MessageBubbleProps\n} from './ui-types';\n\n// Integration types\nexport type {\n StreamResult,\n GenerateResult,\n StreamTextOptions,\n GenerateTextOptions\n} from '../core/ai-core';\n\n// UI module types\n\n// Tool related types\nexport type {\n ToolCallState,\n ToolDefinition,\n ToolExecutionResult,\n UserInteractionToolOptions\n} from './ui-types';\n\n// Basic message types\nexport type {\n MessageRole,\n MessageStatus,\n CustomUIMessage,\n StandardUIMessage,\n ExtendedUIMessage\n} from './ui-types';\n\n// Structured Data types\nexport type {\n StreamObjectOptions,\n GenerateObjectOptions,\n StreamObjectResultType,\n GenerateObjectResultType\n} from '../core/ai-structured';\n\n// Tools Integration types\nexport type {\n ToolChoice,\n StepResult,\n DynamicTool,\n AdvancedTool,\n StopCondition,\n ToolCallOptions,\n MCPClientConfig,\n ToolExecutionOptions\n} from '../core/ai-tools';\n\n// Provider Management types\nexport type {\n ModelUsageStats,\n ModelAliasConfig,\n CustomProviderConfig,\n GlobalProviderConfig,\n ProviderHealthStatus,\n ProviderRegistryConfig\n} from '../core/ai-provider';\n\n// Settings Management types\nexport type {\n ModelSettings,\n SettingsPreset,\n CommonModelSettings,\n DynamicSettingsConfig,\n ProviderSpecificSettings,\n SettingsValidationResult\n} from '../core/ai-settings';\n\n// Embeddings Integration types\nexport type {\n EmbedResult,\n EmbedOptions,\n EmbedManyConfig,\n EmbedManyResult,\n EmbedManyOptions,\n SimilarityResult,\n EmbeddingModelConfig,\n EmbeddingProviderInfo\n} from '../core/ai-embeddings';\n\n// Hook types\nexport type {\n UseChatHelpers as ChatReturn,\n UseChatOptions as ChatOptions,\n UseCompletionHelpers as CompletionReturn,\n UseCompletionOptions as CompletionOptions,\n Experimental_UseObjectHelpers as ObjectReturn,\n Experimental_UseObjectOptions as ObjectOptions\n} from '@ai-sdk/react';\n\n// Core types re-export\n\n// Core types export\nexport type {\n Tool,\n ToolSet,\n Provider,\n UIMessage,\n ImageModel,\n DataUIPart,\n FileUIPart,\n TextUIPart,\n CoreMessage,\n FinishReason,\n LanguageModel,\n UIMessagePart,\n EmbeddingModel,\n TextStreamPart,\n ToolResultPart,\n StreamTextResult,\n GenerateTextResult,\n StreamObjectResult,\n LanguageModelUsage,\n GenerateObjectResult,\n LanguageModelRequestMetadata,\n LanguageModelResponseMetadata\n} from 'ai';\n\n// Interface types\n\n// Error types\n\n/**\n * AI Module error type\n */\nexport class aimoduleError extends Error {\n constructor(\n message: string,\n public code: string,\n public details?: any\n ) {\n super(message);\n this.name = 'aimoduleError';\n }\n}\n\n/**\n * Runtime error\n */\nexport class aimoduleRuntimeError extends aimoduleError {\n constructor(message: string, details?: any) {\n super(message, 'RUNTIME_ERROR', details);\n this.name = 'aimoduleRuntimeError';\n }\n}\n\n// Utility types\n\n/**\n * Deep partial type\n */\nexport type DeepPartial<T> = {\n [P in keyof T]?: T[P] extends object ? DeepPartial<T[P]> : T[P];\n};\n\n/**\n * Required fields type\n */\nexport type RequiredFields<T, K extends keyof T> = T & Required<Pick<T, K>>;\n\n/**\n * Optional fields type\n */\nexport type OptionalFields<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>;","/**\n * Entity Engine AI Module - Main Entry Point\n * \n * Complete AI integration with core services and UI components.\n */\n\n// Core Module Exports\n\n// UI components and hooks - commented out to avoid server-side React imports\n// export * from './ui';\n\n// 导出所有核心AI功能\nexport * from './core';\n\n// UI Module Exports (conditional)\n\nexport * from './utils';\n\n// Utility Exports\n\nexport * from './types';\n\n\n// ================================\n// 🎯 插件集成导出 - Plugin Integration Exports\n// ================================\n\n// 新增Entity Module导出\nexport { EntityAIModule } from './entity-module/ai.module';\n\n// Entity Module Integration\n\n// Renderers are dynamically loaded in ai.module.ts to avoid server-side React imports\n\n// Convenience creation function\nexport async function createEntityAIModule() {\n const { EntityAIModule } = await import('./entity-module/ai.module');\n return new EntityAIModule();\n}\n\n// Note: AIEngineProvider removed, use ChatDialog component directly\n\n// Version Information\n\nexport const VERSION = '1.0.0';\nexport const PACKAGE_NAME = '@scenemesh/entity-engine-aimodule';\nexport const AI_SDK_COMPATIBLE_VERSION = '^5.0.10';\n\n// Main Factory Function\n\n/**\n * Create a complete AI core instance with optional configuration\n */\nexport async function createaimodule(config?: {\n // 核心配置\n providers?: import('./core/ai-provider').CustomProviderConfig[];\n settings?: Partial<import('./core/ai-settings').ModelSettings>;\n enableEmbeddings?: boolean;\n enableTools?: boolean;\n}): Promise<{\n // 核心功能\n core: {\n aiSDK: import('./core/ai-core').AISDKIntegration;\n providerManagement: import('./core/ai-provider').AIProviderManagement;\n toolsIntegration: import('./core/ai-tools').AIToolsIntegration;\n embeddingsIntegration: import('./core/ai-embeddings').AIEmbeddingsIntegration;\n settingsManagement: import('./core/ai-settings').AISettingsManagement;\n structuredData: import('./core/ai-structured').AIStructuredDataIntegration;\n };\n \n // 便捷API\n api: {\n generateText: (options: import('./core/ai-core').GenerateTextOptions) => Promise<import('./core/ai-core').GenerateResult>;\n streamText: (options: import('./core/ai-core').StreamTextOptions) => import('./core/ai-core').StreamResult;\n generateObject: (options: import('./core/ai-structured').GenerateObjectOptions<any>) => Promise<import('./core/ai-structured').GenerateObjectResultType<any>>;\n streamObject: (options: import('./core/ai-structured').StreamObjectOptions<any>) => import('./core/ai-structured').StreamObjectResultType<any>;\n };\n}> {\n // 导入核心模块\n const { createAICore } = await import('./core');\n \n // 创建核心实例\n const core = await createAICore({\n providers: config?.providers,\n settings: config?.settings,\n enableEmbeddings: config?.enableEmbeddings,\n enableTools: config?.enableTools\n });\n \n // 创建便捷API\n const api = {\n generateText: (options: any) => \n core.aiSDK.generateText(options),\n streamText: (options: any) => \n core.aiSDK.streamText(options),\n generateObject: (options: any) => \n core.structuredData.generateObject(options),\n streamObject: (options: any) => \n core.structuredData.streamObject(options),\n };\n \n return {\n core,\n api\n };\n}\n\n// ================================\n// 🎯 快速启动函数 - Quick Start Functions\n// ================================\n\n/**\n * 快速创建AI实例(仅核心功能)\n * Quick create AI instance (core only)\n */\nexport async function createQuickAI(providers?: import('./core/ai-provider').CustomProviderConfig[]) {\n return createaimodule({\n providers,\n enableEmbeddings: true,\n enableTools: true\n });\n}\n\n\n/**\n * 向后兼容的默认导出包含所有主要功能\n * Backward compatible default export with all main functionality\n */\nexport const EntityEngineAIModule = {\n // 工厂函数\n create: createaimodule,\n createQuick: createQuickAI,\n \n // 版本信息\n VERSION,\n PACKAGE_NAME,\n AI_SDK_COMPATIBLE_VERSION,\n \n // 核心类导出(用于高级使用)\n Core: {\n AIProviderManagement: import('./core/ai-provider').then(m => m.AIProviderManagement),\n AISDKIntegration: import('./core/ai-core').then(m => m.AISDKIntegration),\n AIToolsIntegration: import('./core/ai-tools').then(m => m.AIToolsIntegration),\n AIEmbeddingsIntegration: import('./core/ai-embeddings').then(m => m.AIEmbeddingsIntegration),\n AISettingsManagement: import('./core/ai-settings').then(m => m.AISettingsManagement),\n AIStructuredDataIntegration: import('./core/ai-structured').then(m => m.AIStructuredDataIntegration),\n }\n};"]}