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,9 +20,12 @@ import { cn } from '@/lib/utils';
|
||||
interface Props {
|
||||
sessionId: string;
|
||||
projectId: string;
|
||||
// Batch 9: threaded down to ChatPane → ChatInput → AgentPicker.
|
||||
agentId?: string | null;
|
||||
onAgentChange?: (agentId: string | null) => void | Promise<void>;
|
||||
}
|
||||
|
||||
export function Workspace({ sessionId, projectId }: Props) {
|
||||
export function Workspace({ sessionId, projectId, agentId, onAgentChange }: Props) {
|
||||
const {
|
||||
panes,
|
||||
activePaneIdx,
|
||||
@@ -219,7 +222,14 @@ export function Workspace({ sessionId, projectId }: Props) {
|
||||
|
||||
<div className="flex-1 min-h-0 overflow-hidden">
|
||||
{pane.kind === 'chat' && pane.chatId ? (
|
||||
<ChatPane sessionId={sessionId} chatId={pane.chatId} projectId={projectId} sessionChats={chats} />
|
||||
<ChatPane
|
||||
sessionId={sessionId}
|
||||
chatId={pane.chatId}
|
||||
projectId={projectId}
|
||||
agentId={agentId}
|
||||
onAgentChange={onAgentChange}
|
||||
sessionChats={chats}
|
||||
/>
|
||||
) : (
|
||||
<SessionLandingPage
|
||||
sessionId={sessionId}
|
||||
|
||||
Reference in New Issue
Block a user