Spaces:
Running
Running
| document.addEventListener('DOMContentLoaded', () => { | |
| // Toggle Sidebar on Mobile | |
| const toggleBtn = document.getElementById('sidebar-toggle'); | |
| const sidebar = document.getElementById('sidebar'); | |
| if(toggleBtn && sidebar) { | |
| toggleBtn.addEventListener('click', () => { | |
| sidebar.classList.toggle('-translate-x-full'); | |
| }); | |
| } | |
| // Simulate Global Event Bus for Components | |
| window.appEvents = new EventTarget(); | |
| // Mock API Keys (In real app, these would be env vars) | |
| window.API_KEYS = { | |
| TAVILY: 'tvly-XXXXXXXXX', | |
| HUGGINGFACE: 'hf_XXXXXXXXX' | |
| }; | |
| // Mock Memory (LocalStorage) | |
| const MEMORY_KEY = 'synapse_memory_db'; | |
| window.MemoryDB = { | |
| save: (role, content) => { | |
| const history = JSON.parse(localStorage.getItem(MEMORY_KEY) || '[]'); | |
| history.push({ role, content, timestamp: new Date().toISOString() }); | |
| localStorage.setItem(MEMORY_KEY, JSON.stringify(history)); | |
| }, | |
| load: () => { | |
| return JSON.parse(localStorage.getItem(MEMORY_KEY) || '[]'); | |
| }, | |
| clear: () => { | |
| localStorage.removeItem(MEMORY_KEY); | |
| const event = new Event('memory-cleared'); | |
| window.appEvents.dispatchEvent(event); | |
| } | |
| }; | |
| // AI Simulation Logic | |
| window.Agent = { | |
| respond: async (message, context = {}) => { | |
| return new Promise((resolve) => { | |
| // Determine if it needs tools (mock) | |
| const lowerMsg = message.toLowerCase(); | |
| let response = ""; | |
| let toolUsed = null; | |
| if (lowerMsg.includes('search') || lowerMsg.includes('find')) { | |
| toolUsed = 'web_search'; | |
| response = `I've searched the web for "${message}".\n\n**Found:**\n- *Latest AI Trends 2024* - The rise of multimodal agents is reshaping interfaces...\n- *Quantum Computing* - Breakthrough in error correction...\n\nSource: https://tech-news.daily/ai-trends`; | |
| } else if (lowerMsg.includes('code') || lowerMsg.includes('function') || lowerMsg.includes('python')) { | |
| toolUsed = 'code_editor'; | |
| response = `I've generated the Python code you requested. Check the code editor panel.\n\nHere is a summary of the logic:\n1. Initialize the class.\n2. Define the main loop.\n3. Handle exceptions gracefully.`; | |
| // Trigger code injection event | |
| setTimeout(() => { | |
| const codeEvent = new CustomEvent('update-code', { | |
| detail: { | |
| code: `import os\n\nclass Agent:\n def __init__(self, name):\n self.name = name\n print(f"Agent {name} initialized")\n\n def run(self):\n print("Running logic...")\n\nif __name__ == "__main__":\n agent = Agent("Synapse")\n agent.run()` | |
| } | |
| }); | |
| window.appEvents.dispatchEvent(codeEvent); | |
| // Trigger tab switch | |
| const switchTabEvent = new CustomEvent('switch-tab', { detail: { index: 1 } }); | |
| window.appEvents.dispatchEvent(switchTabEvent); | |
| }, 1000); | |
| } else if (lowerMsg.includes('doc') || lowerMsg.includes('file')) { | |
| response = "I've analyzed the uploaded documents. It appears to be a specification sheet for the API integration. Key points include the endpoint structure and authentication method."; | |
| } else { | |
| response = `I understand. You said: "${message}".\n\nAs an AI Agent, I can help you search the web, analyze documents, or write code. How would you like to proceed?`; | |
| } | |
| // Simulate Network Delay | |
| setTimeout(() => { | |
| resolve(response); | |
| }, 1500); | |
| }); | |
| } | |
| }; | |
| }); |