Skip to content

Commit aa3ab45

Browse files
dongtran16092006dongtran16092006
authored andcommitted
fix: resolve MCP and system prompt saving issues
1 parent 6851bba commit aa3ab45

File tree

2 files changed

+27
-14
lines changed

2 files changed

+27
-14
lines changed

crates/openfang-api/src/routes.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1410,11 +1410,15 @@ pub async fn get_agent(
14101410
"network": entry.manifest.capabilities.network,
14111411
},
14121412
"description": entry.manifest.description,
1413+
"system_prompt": entry.manifest.model.system_prompt,
14131414
"tags": entry.manifest.tags,
14141415
"identity": {
14151416
"emoji": entry.identity.emoji,
14161417
"avatar_url": entry.identity.avatar_url,
14171418
"color": entry.identity.color,
1419+
"archetype": entry.identity.archetype,
1420+
"vibe": entry.identity.vibe,
1421+
"greeting_style": entry.identity.greeting_style,
14181422
},
14191423
"skills": entry.manifest.skills,
14201424
"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)