Implement comprehensive collaborative creative system with cross-character memory sharing

Major Features Added:
• Cross-character memory sharing with trust-based permissions (Basic 30%, Personal 50%, Intimate 70%, Full 90%)
• Complete collaborative creative projects system with MCP integration
• Database persistence for all creative project data with proper migrations
• Trust evolution system based on interaction quality and relationship development
• Memory sharing MCP server with 6 autonomous tools for character decision-making
• Creative projects MCP server with 8 tools for autonomous project management
• Enhanced character integration with all RAG and MCP capabilities
• Demo scripts showcasing memory sharing and creative collaboration workflows

System Integration:
• Main application now initializes memory sharing and creative managers
• Conversation engine upgraded to use EnhancedCharacter objects with full RAG access
• Database models added for creative projects, collaborators, contributions, and invitations
• Complete prompt construction pipeline enriched with RAG insights and trust data
• Characters can now autonomously propose projects, share memories, and collaborate creatively
This commit is contained in:
2025-07-04 23:07:08 -07:00
parent d6ec5ad29c
commit 1b586582d4
25 changed files with 6857 additions and 254 deletions

View File

@@ -10,6 +10,7 @@ import logging
from ..database.connection import get_db_session
from ..database.models import Character as CharacterModel, Conversation, Message, Memory
from ..characters.character import Character
from ..characters.enhanced_character import EnhancedCharacter
from ..llm.client import llm_client, prompt_manager
from ..llm.prompt_manager import advanced_prompt_manager
from ..utils.config import get_settings, get_character_settings
@@ -50,10 +51,16 @@ class ConversationContext:
class ConversationEngine:
"""Autonomous conversation engine that manages character interactions"""
def __init__(self):
def __init__(self, vector_store=None, memory_sharing_manager=None, creative_manager=None, mcp_servers=None):
self.settings = get_settings()
self.character_settings = get_character_settings()
# RAG and collaboration systems
self.vector_store = vector_store
self.memory_sharing_manager = memory_sharing_manager
self.creative_manager = creative_manager
self.mcp_servers = mcp_servers or []
# Engine state
self.state = ConversationState.IDLE
self.characters: Dict[str, Character] = {}
@@ -392,8 +399,41 @@ class ConversationEngine:
character_models = await session.scalars(query)
for char_model in character_models:
character = Character(char_model)
await character.initialize(llm_client)
# Use EnhancedCharacter if RAG systems are available
if self.vector_store and self.memory_sharing_manager:
# Find the appropriate MCP servers for this character
from ..mcp.self_modification_server import mcp_server
from ..mcp.file_system_server import filesystem_server
# Find creative projects MCP server
creative_projects_mcp = None
for mcp_srv in self.mcp_servers:
if hasattr(mcp_srv, 'creative_manager'):
creative_projects_mcp = mcp_srv
break
character = EnhancedCharacter(
character_data=char_model,
vector_store=self.vector_store,
mcp_server=mcp_server,
filesystem=filesystem_server,
memory_sharing_manager=self.memory_sharing_manager,
creative_projects_mcp=creative_projects_mcp
)
# Set character context for MCP servers
for mcp_srv in self.mcp_servers:
if hasattr(mcp_srv, 'set_character_context'):
await mcp_srv.set_character_context(char_model.name)
await character.initialize(llm_client)
logger.info(f"Loaded enhanced character: {character.name}")
else:
# Fallback to basic character
character = Character(char_model)
await character.initialize(llm_client)
logger.info(f"Loaded basic character: {character.name}")
self.characters[character.name] = character
self.stats['characters_active'] = len(self.characters)