Implement Skills feature: filesystem-based skills with agent assignment
- Add SkillService: scans data/skills/ directory, parses _meta.json and SKILL.md frontmatter - Add SkillEndpoint: REST API for listing skills and managing agent-skill assignments - Add agent_skills DB table for agent-to-skill mapping (only relation in DB, skills live on filesystem) - Extend SystemPromptBuilder: inject assigned skills' SKILL.md content into system prompt - Extend ChatEndpoint + SessionEndpoint: load agent skills and pass to prompt builder - Frontend: skill checkboxes in agent form, API functions for skill management - Add form.css styling for skill list items
This commit is contained in:
1 parent
b18dc78651
commit
cf6caea2dc
11 files changed
+454
-6
No files matched your search
@@ -144,6 +144,35 @@ async function apiGitStatus(sessionId) {
|
||||
return resp.json();
|
||||
}
|
||||
|
||||
// ── Skills API ──
|
||||
|
||||
async function apiGetSkills() {
|
||||
const resp = await fetch('/api/skills');
|
||||
return resp.json();
|
||||
}
|
||||
|
||||
async function apiGetAgentSkills(agentId) {
|
||||
const resp = await fetch(`/api/agents/${agentId}/skills`);
|
||||
return resp.json();
|
||||
}
|
||||
|
||||
async function apiSetAgentSkills(agentId, skills) {
|
||||
const resp = await fetch(`/api/agents/${agentId}/skills`, {
|
||||
method: 'PUT',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify({ skills })
|
||||
});
|
||||
return resp.json();
|
||||
}
|
||||
|
||||
async function apiAddAgentSkill(agentId, slug) {
|
||||
return fetch(`/api/agents/${agentId}/skills/${slug}`, { method: 'POST' });
|
||||
}
|
||||
|
||||
async function apiRemoveAgentSkill(agentId, slug) {
|
||||
return fetch(`/api/agents/${agentId}/skills/${slug}`, { method: 'DELETE' });
|
||||
}
|
||||
|
||||
async function apiBackupDb() {
|
||||
const resp = await fetch('/api/backup', { method: 'POST' });
|
||||
if (!resp.ok) throw new Error('Backup fehlgeschlagen');
|
||||
|
||||
Reference in new issue
Block a user