Skip to content

Commit e683acc

Browse files
authored
Merge pull request #1045 from dongtran16092006/fix-mcp-system-prompt
fix: system prompt and identity handling, and config form hydration
2 parents 5396889 + 93b57bd commit e683acc

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
@@ -1509,11 +1509,15 @@ pub async fn get_agent(
15091509
"network": entry.manifest.capabilities.network,
15101510
},
15111511
"description": entry.manifest.description,
1512+
"system_prompt": entry.manifest.model.system_prompt,
15121513
"tags": entry.manifest.tags,
15131514
"identity": {
15141515
"emoji": entry.identity.emoji,
15151516
"avatar_url": entry.identity.avatar_url,
15161517
"color": entry.identity.color,
1518+
"archetype": entry.identity.archetype,
1519+
"vibe": entry.identity.vibe,
1520+
"greeting_style": entry.identity.greeting_style,
15171521
},
15181522
"skills": entry.manifest.skills,
15191523
"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)