feat: Anweisungen-Feld für Agents mit EasyMDE-Editor
- AgentRecord: TaskInstruction (string, nullable) - DB-Migration: task_instruction TEXT Spalte - AgentEndpoint: Create/Update lesen taskInstruction - SystemPromptBuilder: '## Anweisungen' Block nach Soul, nur wenn nicht leer - HTML: Textarea #agentTaskInstruction nach Rückfragen-Checkbox - agent-page.js: EasyMDE-Editor mit Init, Laden, Speichern, Destroy
This commit is contained in:
1 parent
14e721f95b
commit
4f027360fd
6 files changed
+39
-5
No files matched your search
@@ -1,6 +1,7 @@
|
||||
// ── Agent Page ──
|
||||
|
||||
let _agentAvatarEditor = null;
|
||||
let _agentTaskMde = null;
|
||||
|
||||
registerPage('agent', {
|
||||
async init(params) {
|
||||
@@ -44,6 +45,21 @@ registerPage('agent', {
|
||||
initialOffsetY: (agent && agent.avatarOffsetY) || 0
|
||||
});
|
||||
|
||||
// EasyMDE für Task-Instruction
|
||||
const taskEl = document.getElementById('agentTaskInstruction');
|
||||
_agentTaskMde = new EasyMDE({
|
||||
element: taskEl,
|
||||
toolbar: ['bold', 'italic', 'heading', '|', 'quote', 'unordered-list', 'ordered-list', '|', 'link', 'code', '|', 'preview', 'guide'],
|
||||
status: false,
|
||||
autofocus: false,
|
||||
spellChecker: false,
|
||||
autoDownloadFontAwesome: false,
|
||||
placeholder: 'Spezifische Anweisungen für diesen Agent (Markdown, optional)',
|
||||
minHeight: '120px'
|
||||
});
|
||||
_agentTaskMde.codemirror.setOption('theme', 'default');
|
||||
_agentTaskMde.codemirror.getWrapperElement().closest('.EasyMDEContainer').classList.add('fe-mde-wrap');
|
||||
|
||||
if (agent) {
|
||||
title.textContent = agent.name;
|
||||
nameEl.value = agent.name || '';
|
||||
@@ -51,6 +67,7 @@ registerPage('agent', {
|
||||
modelEl.value = agent.model || 'sonnet';
|
||||
toolChoiceEl.checked = (agent.toolChoice || 'any') === 'any';
|
||||
allowUserChoiceEl.checked = agent.allowUserChoice !== false;
|
||||
_agentTaskMde.value(agent.taskInstruction || '');
|
||||
autoCommitEl.value = agent.autoCommit || '';
|
||||
useSoulEl.checked = agent.useSoul !== false;
|
||||
useIdentityEl.checked = agent.useIdentity !== false;
|
||||
@@ -107,7 +124,8 @@ registerPage('agent', {
|
||||
avatarScale: _agentAvatarEditor.getScale(),
|
||||
avatarOffsetX: _agentAvatarEditor.getOffsetX(),
|
||||
avatarOffsetY: _agentAvatarEditor.getOffsetY(),
|
||||
customCommands: getCommandsFromUI(commandsList)
|
||||
customCommands: getCommandsFromUI(commandsList),
|
||||
taskInstruction: _agentTaskMde ? _agentTaskMde.value().trim() || null : null
|
||||
};
|
||||
|
||||
if (isNew) {
|
||||
@@ -137,6 +155,10 @@ registerPage('agent', {
|
||||
});
|
||||
},
|
||||
destroy() {
|
||||
if (_agentTaskMde) {
|
||||
try { _agentTaskMde.toTextArea(); } catch (_) {}
|
||||
_agentTaskMde = null;
|
||||
}
|
||||
if (_agentAvatarEditor) {
|
||||
_agentAvatarEditor.destroy();
|
||||
_agentAvatarEditor = null;
|
||||
|
||||
Reference in new issue
Block a user