Skip to content

Commit 93b57bd

Browse files
fix: system prompt and identity handling, and config form hydration #1045
1 parent e6bab99 commit 93b57bd

2 files changed

Lines changed: 27 additions & 14 deletions

File tree

crates/openfang-api/src/routes.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1409,11 +1409,15 @@ pub async fn get_agent(
14091409
"network": entry.manifest.capabilities.network,
14101410
},
14111411
"description": entry.manifest.description,
1412+
"system_prompt": entry.manifest.model.system_prompt,
14121413
"tags": entry.manifest.tags,
14131414
"identity": {
14141415
"emoji": entry.identity.emoji,
14151416
"avatar_url": entry.identity.avatar_url,
14161417
"color": entry.identity.color,
1418+
"archetype": entry.identity.archetype,
1419+
"vibe": entry.identity.vibe,
1420+
"greeting_style": entry.identity.greeting_style,
14171421
},
14181422
"skills": entry.manifest.skills,
14191423
"skills_mode": if entry.manifest.skills.is_empty() { "all" } else { "allowlist" },

crates/openfang-api/static/js/pages/agents.js

Lines changed: 23 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -337,29 +337,38 @@ function agentsPage() {
337337
OpenFangAPI.wsDisconnect();
338338
},
339339

340+
buildConfigForm(agent) {
341+
var identity = (agent && agent.identity) || {};
342+
return {
343+
name: (agent && agent.name) || '',
344+
system_prompt: (agent && agent.system_prompt) || '',
345+
emoji: identity.emoji || '',
346+
color: identity.color || '#FF5C00',
347+
archetype: identity.archetype || '',
348+
vibe: identity.vibe || ''
349+
};
350+
},
351+
340352
async showDetail(agent) {
341-
this.detailAgent = agent;
342-
this.detailAgent._fallbacks = [];
343353
this.detailTab = 'info';
344354
this.agentFiles = [];
345355
this.editingFile = null;
346356
this.fileContent = '';
347357
this.editingFallback = false;
348358
this.newFallbackValue = '';
349-
this.configForm = {
350-
name: agent.name || '',
351-
system_prompt: agent.system_prompt || '',
352-
emoji: (agent.identity && agent.identity.emoji) || '',
353-
color: (agent.identity && agent.identity.color) || '#FF5C00',
354-
archetype: (agent.identity && agent.identity.archetype) || '',
355-
vibe: (agent.identity && agent.identity.vibe) || ''
356-
};
357-
this.showDetailModal = true;
358-
// Fetch full agent detail to get fallback_models
359+
// Load the full detail payload before opening the modal so editable
360+
// fields such as system_prompt and identity metadata are hydrated.
361+
var detail = agent;
359362
try {
360363
var full = await OpenFangAPI.get('/api/agents/' + agent.id);
361-
this.detailAgent._fallbacks = full.fallback_models || [];
362-
} catch(e) { /* ignore */ }
364+
detail = Object.assign({}, agent, full, {
365+
identity: Object.assign({}, (agent && agent.identity) || {}, (full && full.identity) || {})
366+
});
367+
} catch(e) { /* fall back to list payload */ }
368+
this.detailAgent = detail;
369+
this.detailAgent._fallbacks = detail.fallback_models || [];
370+
this.configForm = this.buildConfigForm(detail);
371+
this.showDetailModal = true;
363372
},
364373

365374
killAgent(agent) {

0 commit comments

Comments
 (0)