feat: Public-Flag für Agents + verfügbare Agents/Bots Endpoints erweitert

- AgentRecord: neues IsPublic-Feld mit DB-Migration
- GET /api/agents/available: eigene + public Agents (alle Properties + isOwner)
- GET /api/telegram/bots/available: alle Properties außer Token/Secret + sessionCount
- Agent-Page: Public-Checkbox (andere User können Agent in Sessions verwenden)
- Dashboard: agentMap aus availableAgents gebaut (public Agents fremder User auflösbar)
- Session-Page + Cronjob-Page: Agent-Picker nutzt /available statt /agents
- Agent-Cards: Public- und Fremd-Badges
- Fix: Chat-Button bei Sessions mit public Agent eines anderen Users nicht mehr disabled
This commit is contained in:
Meleki committed 2026-03-08 20:25:52 +01:00
1 parent ec73ccd71e
commit b0d8bef5ea
11 files changed
+90 -10

No files matched your search

+4 -1
View File
@@ -34,6 +34,7 @@ registerPage('agent', {
const addCommandBtn = document.getElementById('agentAddCommandBtn');
const skillsSection = document.getElementById('agentSkillsSection');
const skillList = document.getElementById('agentSkillList');
const isPublicEl = document.getElementById('agentIsPublic');
const more = document.querySelector('.more');
// Avatar Editor initialisieren
@@ -66,6 +67,7 @@ registerPage('agent', {
useUserInfoEl.checked = agent.useUserInfo !== false;
useMemoryEl.checked = agent.useMemory !== false;
webSearchVersionEl.value = agent.webSearchVersion || '';
isPublicEl.checked = agent.isPublic || false;
deleteBtn.hidden = false;
// Custom Commands laden
@@ -112,7 +114,8 @@ registerPage('agent', {
avatarOffsetX: _agentAvatarEditor.getOffsetX(),
avatarOffsetY: _agentAvatarEditor.getOffsetY(),
customCommands: getCommandsFromUI(commandsList),
taskInstruction: _agentTaskMde ? _agentTaskMde.value().trim() || null : null
taskInstruction: _agentTaskMde ? _agentTaskMde.value().trim() || null : null,
isPublic: isPublicEl.checked
};
if (isNew) {
+1 -1
View File
@@ -20,7 +20,7 @@ registerPage('cronjob', {
// Sessions + Agents laden
const sessions = await apiGetSessions();
const agents = await apiGetAgents();
const agents = await apiGetAvailableAgents();
const agentMap = {};
for (const a of agents) agentMap[a.agentId] = a;
const sessionMap = {};
+3 -3
View File
@@ -35,11 +35,11 @@ registerPage('dashboard', {
// Telegram-Config parallel pro Session laden (sessions werden gleich geladen)
const [agents, sessions, cronjobs, shares, telegramBots] = await Promise.all([
apiGetAgents(), apiGetSessions(), apiGetCronjobs(), apiListShares(), apiGetTelegramBots()
const [agents, availableAgents, sessions, cronjobs, shares, telegramBots] = await Promise.all([
apiGetAgents(), apiGetAvailableAgents(), apiGetSessions(), apiGetCronjobs(), apiListShares(), apiGetTelegramBots()
]);
const agentMap = {};
for (const a of agents) agentMap[a.agentId] = a;
for (const a of availableAgents) agentMap[a.agentId] = a;
// Sessions
const grid = document.getElementById('sessionCards');
+1 -1
View File
@@ -75,7 +75,7 @@ registerPage('session', {
}
// Agents laden + Skills parallel
const agents = await apiGetAgents();
const agents = await apiGetAvailableAgents();
const agentMap = {};
for (const a of agents) agentMap[a.agentId] = a;