(function() { // DOM-Elemente let addAgentBtn, agentsListContainer; // Initialisierungsfunktion für das Agenten-Modul function initAgentsModule(globalState) { // DOM-Elemente referenzieren addAgentBtn = document.getElementById('add-agent-btn'); agentsListContainer = document.getElementById('agents-list-container'); // Event-Listener hinzufügen setupEventListeners(globalState); // Initialdaten rendern renderMyAgents(globalState); } // Event-Listener einrichten function setupEventListeners(globalState) { // Neuen Agenten hinzufügen addAgentBtn.addEventListener('click', () => { openAgentCreationModal(globalState); }); } // Modal zum Erstellen eines neuen Agenten öffnen function openAgentCreationModal(globalState) { // Einfaches Prompt als Platzhalter - in einer realen Anwendung würde dies // durch ein ansprechendes Modal oder Formular ersetzt const agentName = prompt('Name des neuen Agenten:'); const agentType = prompt('Typ des Agenten (z.B. Analyse, Transformation):'); const agentDescription = prompt('Beschreibung des Agenten:'); if (agentName && agentType) { const newAgent = { id: `agent_${Date.now()}`, name: agentName, type: agentType, description: agentDescription || '', workspace_id: globalState.currentWorkspace?.id, capabilities: [] }; // Agent zur globalen Liste hinzufügen globalState.availableAgents.push(newAgent); // UI aktualisieren renderMyAgents(globalState); // Optional: Agent speichern saveAgent(newAgent, globalState); } } // Meine Agenten rendern function renderMyAgents(globalState) { console.info() if (!agentsListContainer) { console.error("No agents container") return; } agentsListContainer.innerHTML = ''; // Agenten für den aktuellen Workspace filtern const workspaceAgents = globalState.availableAgents.filter( agent => agent.workspace_id === globalState.currentWorkspace.id ); // console.info("debug: agentid-wsid: "+ (globalState.availableAgents[0].workspace_id) + " - " + globalState.currentWorkspace.id + ", wsAgents: " + workspaceAgents.length) if (workspaceAgents.length === 0) { agentsListContainer.innerHTML = '
Keine Agenten vorhanden.
'; return; } workspaceAgents.forEach(agent => { const agentItem = document.createElement('div'); agentItem.className = 'agent-list-item'; agentItem.innerHTML = `

${agent.name}

${agent.type}
${agent.description || ''}
${agent.capabilities ? agent.capabilities.map(cap => `${cap}` ).join('') : ''}
`; agentsListContainer.appendChild(agentItem); }); // Event-Listener für Agenten-Aktionen einrichten setupAgentActionListeners(globalState); } // Event-Listener für Agenten-Aktionen function setupAgentActionListeners(globalState) { // Bearbeiten-Button document.querySelectorAll('.edit-agent-btn').forEach(btn => { btn.addEventListener('click', () => { const agentId = btn.getAttribute('data-id'); const agent = globalState.availableAgents.find(a => a.id === agentId); if (agent) { editAgent(agent, globalState); } }); }); // Löschen-Button document.querySelectorAll('.delete-agent-btn').forEach(btn => { btn.addEventListener('click', () => { const agentId = btn.getAttribute('data-id'); if (confirm('Möchten Sie diesen Agenten wirklich löschen?')) { deleteAgent(agentId, globalState); } }); }); } // Agent bearbeiten function editAgent(agent, globalState) { // Einfaches Prompt als Platzhalter - in einer realen Anwendung würde dies // durch ein ansprechendes Modal oder Formular ersetzt const newName = prompt('Name des Agenten:', agent.name); const newType = prompt('Typ des Agenten:', agent.type); const newDescription = prompt('Beschreibung des Agenten:', agent.description); if (newName) { // Agent aktualisieren agent.name = newName; agent.type = newType || agent.type; agent.description = newDescription || agent.description; // UI aktualisieren renderMyAgents(globalState); // Optional: Aktualisierung auf dem Server updateAgent(agent); } } // Agent speichern async function saveAgent(agentData, globalState) { try { // Agent auf dem Server speichern const response = await window.globalUtils.postData('/api/agents/save', agentData); // Rückmeldung vom Server verarbeiten if (response && response.id) { // Wenn der Server eine ID zurückgibt, diese aktualisieren const index = globalState.availableAgents.findIndex(a => a.id === agentData.id); if (index !== -1) { globalState.availableAgents[index].id = response.id; } // UI aktualisieren renderMyAgents(globalState); } } catch (error) { console.error("Fehler beim Speichern des Agenten:", error); } } // Agent aktualisieren async function updateAgent(agent) { try { // Agent auf dem Server aktualisieren await window.globalUtils.postData('/api/agents/update', agent); } catch (error) { console.error("Fehler beim Aktualisieren des Agenten:", error); } } // Agent löschen async function deleteAgent(agentId, globalState) { try { // Aus dem globalen State entfernen globalState.availableAgents = globalState.availableAgents.filter(a => a.id !== agentId); // UI aktualisieren renderMyAgents(globalState); // Agent vom Server löschen await window.globalUtils.postData('/api/agents/delete', { id: agentId }); } catch (error) { console.error("Fehler beim Löschen des Agenten:", error); } } // Modul-Initialisierung exportieren window.initAgentsModule = initAgentsModule; })();