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>
21 lines
705 B
TypeScript
21 lines
705 B
TypeScript
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);
|
|
}
|
|
);
|
|
}
|