feat(agents): Tier 2 — AGENTS.md + per-session picker
Six builtin defaults (Code Reviewer, Debugger, Refactorer, Architect, Security Auditor, Prompt Builder) with no model field so session.model wins. Project root AGENTS.md parsed on demand with mtime cache; when present, only its agents are shown. sessions.agent_id resolves per turn into effective system prompt, temperature, and a tool whitelist applied in inference. AgentPicker mounts in the ChatInput toolbar; SettingsDrawer agent surface deferred to Batch 7. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
20
apps/server/src/routes/agents.ts
Normal file
20
apps/server/src/routes/agents.ts
Normal file
@@ -0,0 +1,20 @@
|
||||
import type { FastifyInstance } from 'fastify';
|
||||
import type { Sql } from '../db.js';
|
||||
import { getAgentsForProject } from '../services/agents.js';
|
||||
|
||||
export function registerAgentRoutes(app: FastifyInstance, sql: Sql): void {
|
||||
app.get<{ Params: { id: string } }>(
|
||||
'/api/projects/:id/agents',
|
||||
async (req, reply) => {
|
||||
const rows = await sql<{ path: string }[]>`
|
||||
SELECT path FROM projects WHERE id = ${req.params.id}
|
||||
`;
|
||||
if (rows.length === 0) {
|
||||
reply.code(404);
|
||||
return { error: 'project not found' };
|
||||
}
|
||||
// getAgentsForProject handles AGENTS.md presence/parse/cache; never throws.
|
||||
return await getAgentsForProject(rows[0]!.path);
|
||||
}
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user