Skip to content

Commit 1006cb3

Browse files
committed
fix: resolve MCP and system prompt saving issues
RightNow-AI#1007
1 parent a3fa9c7 commit 1006cb3

2 files changed

Lines changed: 28 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
@@ -1526,11 +1526,15 @@ pub async fn get_agent(
15261526
"network": entry.manifest.capabilities.network,
15271527
},
15281528
"description": entry.manifest.description,
1529+
"system_prompt": entry.manifest.model.system_prompt,
15291530
"tags": entry.manifest.tags,
15301531
"identity": {
15311532
"emoji": entry.identity.emoji,
15321533
"avatar_url": entry.identity.avatar_url,
15331534
"color": entry.identity.color,
1535+
"archetype": entry.identity.archetype,
1536+
"vibe": entry.identity.vibe,
1537+
"greeting_style": entry.identity.greeting_style,
15341538
},
15351539
"skills": entry.manifest.skills,
15361540
"skills_mode": if entry.manifest.skills.is_empty() { "all" } else { "allowlist" },

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

Lines changed: 24 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -372,29 +372,39 @@ function agentsPage() {
372372
OpenFangAPI.wsDisconnect();
373373
},
374374

375+
buildConfigForm(agent) {
376+
var identity = (agent && agent.identity) || {};
377+
return {
378+
name: (agent && agent.name) || '',
379+
system_prompt: (agent && agent.system_prompt) || '',
380+
emoji: identity.emoji || '',
381+
color: identity.color || '#FF5C00',
382+
archetype: identity.archetype || '',
383+
vibe: identity.vibe || ''
384+
};
385+
},
386+
375387
async showDetail(agent) {
376-
this.detailAgent = agent;
377-
this.detailAgent._fallbacks = [];
378388
this.detailTab = 'info';
379389
this.agentFiles = [];
380390
this.editingFile = null;
381391
this.fileContent = '';
382392
this.editingFallback = false;
383393
this.newFallbackValue = '';
384-
this.configForm = {
385-
name: agent.name || '',
386-
system_prompt: agent.system_prompt || '',
387-
emoji: (agent.identity && agent.identity.emoji) || '',
388-
color: (agent.identity && agent.identity.color) || '#FF5C00',
389-
archetype: (agent.identity && agent.identity.archetype) || '',
390-
vibe: (agent.identity && agent.identity.vibe) || ''
391-
};
392-
this.showDetailModal = true;
393-
// Fetch full agent detail to get fallback_models
394+
// Load the full detail payload before opening the modal so editable
395+
// fields such as system_prompt and identity metadata are hydrated.
396+
var detail = agent;
394397
try {
395398
var full = await OpenFangAPI.get('/api/agents/' + agent.id);
396-
this.detailAgent._fallbacks = full.fallback_models || [];
397-
} catch(e) { /* ignore */ }
399+
400+
detail = Object.assign({}, agent, full, {
401+
identity: Object.assign({}, (agent && agent.identity) || {}, (full && full.identity) || {})
402+
});
403+
} catch(e) { /* fall back to list payload */ }
404+
this.detailAgent = detail;
405+
this.detailAgent._fallbacks = detail.fallback_models || [];
406+
this.configForm = this.buildConfigForm(detail);
407+
this.showDetailModal = true;
398408
},
399409

400410
killAgent(agent) {

0 commit comments

Comments
 (0)