fix(11): default agentSkillsDir server-side — GROUP-03/GROUP-04 gap closure

This commit is contained in:
Mikkel Georgsen 2026-04-01 03:46:58 +02:00 committed by Nexus Dev
parent 3c05d8c503
commit f39be25bd2

View file

@ -1,7 +1,14 @@
import { Router } from "express"; import { Router } from "express";
import os from "node:os";
import path from "node:path";
import { skillGroupService } from "../services/skill-registry-groups.js"; import { skillGroupService } from "../services/skill-registry-groups.js";
import { assertBoard } from "./authz.js"; import { assertBoard } from "./authz.js";
/** Default skills directory when client doesn't provide one */
function defaultSkillsDir(): string {
return path.join(os.homedir(), ".claude", "skills");
}
/** /**
* REST routes for skill groups. * REST routes for skill groups.
* *
@ -165,10 +172,11 @@ export function skillGroupRoutes(): Router {
assertBoard(req); assertBoard(req);
try { try {
const { groupId, agentSkillsDir } = req.body as { groupId?: string; agentSkillsDir?: string }; const { groupId, agentSkillsDir } = req.body as { groupId?: string; agentSkillsDir?: string };
if (!groupId || !agentSkillsDir) { if (!groupId) {
return res.status(400).json({ error: "groupId and agentSkillsDir required" }); return res.status(400).json({ error: "groupId required" });
} }
const result = await svc.assignGroup(groupId, req.params.agentId, agentSkillsDir); const resolvedDir = agentSkillsDir || defaultSkillsDir();
const result = await svc.assignGroup(groupId, req.params.agentId, resolvedDir);
res.status(201).json(result); res.status(201).json(result);
} catch (err) { } catch (err) {
handleError(res, err); handleError(res, err);
@ -179,10 +187,8 @@ export function skillGroupRoutes(): Router {
assertBoard(req); assertBoard(req);
try { try {
const { agentSkillsDir } = req.body as { agentSkillsDir?: string }; const { agentSkillsDir } = req.body as { agentSkillsDir?: string };
if (!agentSkillsDir) { const resolvedDir = agentSkillsDir || defaultSkillsDir();
return res.status(400).json({ error: "agentSkillsDir required" }); await svc.removeGroup(req.params.groupId, req.params.agentId, resolvedDir);
}
await svc.removeGroup(req.params.groupId, req.params.agentId, agentSkillsDir);
res.status(204).end(); res.status(204).end();
} catch (err) { } catch (err) {
handleError(res, err); handleError(res, err);