// ── Session Card Helper ── // Erzeugt ein .card-Element für eine Session (wiederverwendbar für Dashboard + Picker). function buildSessionCard(session, agent) { const card = document.createElement('div'); card.className = 'card'; const transformParts = []; if (session.avatarScale && session.avatarScale !== 1) transformParts.push(`scale(${session.avatarScale})`); if (session.avatarOffsetX || session.avatarOffsetY) transformParts.push(`translate(${session.avatarOffsetX || 0}%, ${session.avatarOffsetY || 0}%)`); const transformStyle = transformParts.length ? ` style="transform: ${transformParts.join(' ')}"` : ''; const imageHtml = session.image ? `` : ''; // Badges const badges = []; if (agent) badges.push(`${esc(agent.name)}`); if (session.reviewAgentId) badges.push(``); if (session.finalizerAgentId) badges.push(``); if (session.context) badges.push(``); if (session.telegramConfigured) badges.push(``); // Meta const metaParts = []; if (session.messageCount) metaParts.push(` ${esc(session.messageCount + ' Nachrichten')}`); if (session.archiveMessageCount) metaParts.push(` ${esc(session.archiveMessageCount + ' Nachrichten archiviert')}`); if (session.workspace) metaParts.push(` ${esc(session.workspace)}`); card.innerHTML = `
${imageHtml}
${esc(session.name || 'Unbenannt')} ${badges.join('')}
${metaParts.length ? `
${metaParts.join('')}
` : ''}
`; return card; } // ── Agent Card Helper ── // Erzeugt ein .card-Element für einen Agent (wiederverwendbar für Dashboard + Picker). function buildAgentCard(agent, skills) { const card = document.createElement('div'); card.className = 'card'; const agentTransformParts = []; if (agent.avatarScale && agent.avatarScale !== 1) agentTransformParts.push(`scale(${agent.avatarScale})`); if (agent.avatarOffsetX || agent.avatarOffsetY) agentTransformParts.push(`translate(${agent.avatarOffsetX || 0}%, ${agent.avatarOffsetY || 0}%)`); const agentTransformStyle = agentTransformParts.length ? ` style="transform: ${agentTransformParts.join(' ')}"` : ''; const imageHtml = agent.avatar ? `` : ''; // Badges const badges = []; if (agent.toolChoice === 'any') badges.push(' Erzwungen'); if (agent.allowUserChoice) badges.push(' Rückfragen'); if (agent.autoCommit === 'mention') badges.push(' Anmerken'); if (agent.autoCommit === 'enforce') badges.push(' Erzwungen'); if (agent.autoCommit === 'forbid') badges.push(' Verboten'); if (agent.useSoul) badges.push(' Seele'); if (agent.useIdentity) badges.push(' Ich'); if (agent.useUserInfo) badges.push(' Du'); if (agent.useMemory) badges.push(' Erinnerungen'); if (agent.webSearchVersion) { const wsYear = agent.webSearchVersion.includes('2025') ? 'Version 2025' : 'v2026'; badges.push(` Web-Suche`); } if (skills) { for (const skill of skills) { badges.push(` ${esc(skill.name)}`); } } card.innerHTML = `
${imageHtml}
${esc(agent.name)} ${prettyModelName(agent.model)}
${badges.length ? `
${badges.join('')}
` : ''}
`; return card; }