Skip to content

Commit b8b5099

Browse files
remove per message agent selections
Signed-off-by: Michael Clifford <mcliffor@redhat.com>
1 parent 77841b8 commit b8b5099

File tree

3 files changed

+19
-136
lines changed

3 files changed

+19
-136
lines changed

components/frontend/src/app/projects/[name]/sessions/[sessionName]/components/accordions/workflows-accordion.tsx

Lines changed: 4 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,12 @@
11
"use client";
22

33
import { useState } from "react";
4-
import { Play, Loader2, Workflow, ChevronDown, ChevronRight, Sparkles, Info, AlertCircle } from "lucide-react";
4+
import { Play, Loader2, Workflow, ChevronDown, ChevronRight, Info, AlertCircle } from "lucide-react";
55
import { AccordionItem, AccordionTrigger, AccordionContent } from "@/components/ui/accordion";
66
import { Badge } from "@/components/ui/badge";
77
import { Button } from "@/components/ui/button";
88
import { Select, SelectContent, SelectItem, SelectSeparator, SelectTrigger, SelectValue } from "@/components/ui/select";
99
import { Alert, AlertDescription, AlertTitle } from "@/components/ui/alert";
10-
import { Checkbox } from "@/components/ui/checkbox";
11-
import { Label } from "@/components/ui/label";
1210
import { Popover, PopoverContent, PopoverTrigger } from "@/components/ui/popover";
1311
import type { WorkflowConfig } from "../../lib/types";
1412

@@ -25,14 +23,10 @@ type WorkflowsAccordionProps = {
2523
workflowActivating: boolean;
2624
workflowMetadata?: WorkflowMetadata;
2725
ootbWorkflows: WorkflowConfig[];
28-
selectedAgents: string[];
29-
autoSelectAgents: boolean;
3026
isExpanded: boolean;
3127
onWorkflowChange: (value: string) => void;
3228
onActivateWorkflow: () => void;
3329
onCommandClick: (slashCommand: string) => void;
34-
onSetSelectedAgents: (agents: string[]) => void;
35-
onSetAutoSelectAgents: (auto: boolean) => void;
3630
onResume?: () => void;
3731
};
3832

@@ -44,14 +38,10 @@ export function WorkflowsAccordion({
4438
workflowActivating,
4539
workflowMetadata,
4640
ootbWorkflows,
47-
selectedAgents,
48-
autoSelectAgents,
4941
isExpanded,
5042
onWorkflowChange,
5143
onActivateWorkflow,
5244
onCommandClick,
53-
onSetSelectedAgents,
54-
onSetAutoSelectAgents,
5545
onResume,
5646
}: WorkflowsAccordionProps) {
5747
const [showCommandsList, setShowCommandsList] = useState(false);
@@ -282,28 +272,12 @@ export function WorkflowsAccordion({
282272

283273
{showAgentsList && (
284274
<div className="mt-2 pt-2 mx-3 space-y-2">
285-
{/* Auto-select checkbox */}
286-
<div className="flex items-center space-x-2 pb-2">
287-
<Checkbox
288-
id="auto-select-agents"
289-
checked={autoSelectAgents}
290-
onCheckedChange={(checked) => {
291-
onSetAutoSelectAgents(!!checked);
292-
if (checked) onSetSelectedAgents([]);
293-
}}
294-
/>
295-
<Sparkles className="h-3 w-3 text-purple-500" />
296-
<Label htmlFor="auto-select-agents" className="text-sm font-normal cursor-pointer">
297-
Automatically select recommended agents for each task
298-
</Label>
299-
</div>
300-
301275
{/* Scrollable agents list */}
302276
<div className="relative">
303277
{agentsScrollTop && (
304278
<div className="absolute top-0 left-0 right-0 h-8 bg-gradient-to-b from-white to-transparent pointer-events-none z-10" />
305279
)}
306-
<div
280+
<div
307281
className="max-h-48 overflow-y-auto space-y-1 pr-1"
308282
onScroll={(e) => {
309283
const target = e.currentTarget;
@@ -316,24 +290,9 @@ export function WorkflowsAccordion({
316290
<div className="space-y-1 space-x-6">
317291
{workflowMetadata.agents.map((agent) => (
318292
<div key={agent.id} className="flex items-center gap-2 group">
319-
<Checkbox
320-
id={`agent-${agent.id}`}
321-
checked={selectedAgents.includes(agent.id)}
322-
disabled={autoSelectAgents}
323-
onCheckedChange={(checked) => {
324-
if (checked) {
325-
onSetSelectedAgents([...selectedAgents, agent.id]);
326-
} else {
327-
onSetSelectedAgents(selectedAgents.filter(id => id !== agent.id));
328-
}
329-
}}
330-
/>
331-
<Label
332-
htmlFor={`agent-${agent.id}`}
333-
className="text-sm font-normal cursor-pointer"
334-
>
293+
<span className="text-sm font-normal">
335294
{agent.name}
336-
</Label>
295+
</span>
337296
<Popover>
338297
<PopoverTrigger asChild>
339298
<button

components/frontend/src/app/projects/[name]/sessions/[sessionName]/page.tsx

Lines changed: 3 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -68,8 +68,6 @@ export default function ProjectSessionDetailPage({
6868
const [contentPodSpawning, setContentPodSpawning] = useState(false);
6969
const [contentPodReady, setContentPodReady] = useState(false);
7070
const [contentPodError, setContentPodError] = useState<string | null>(null);
71-
const [selectedAgents, setSelectedAgents] = useState<string[]>([]);
72-
const [autoSelectAgents, setAutoSelectAgents] = useState(true);
7371
const [openAccordionItems, setOpenAccordionItems] = useState<string[]>(["workflows"]);
7472
const [contextModalOpen, setContextModalOpen] = useState(false);
7573
const [repoChanging, setRepoChanging] = useState(false);
@@ -389,55 +387,29 @@ export default function ProjectSessionDetailPage({
389387
};
390388

391389
const sendChat = () => {
392-
if (!chatInput.trim() && !selectedAgents.length && !autoSelectAgents) return;
390+
if (!chatInput.trim()) return;
393391

394-
let finalMessage = chatInput.trim();
395-
396-
if (autoSelectAgents) {
397-
finalMessage = "You MUST use relevant sub-agents when needed based on the task at hand. " + finalMessage;
398-
} else if (selectedAgents.length > 0) {
399-
const agentNames = selectedAgents
400-
.map(id => workflowMetadata?.agents?.find(a => a.id === id))
401-
.filter(Boolean)
402-
.map(agent => agent!.name)
403-
.join(', ');
404-
405-
finalMessage = `You MUST collaborate with these agents: ${agentNames}. ` + finalMessage;
406-
}
392+
const finalMessage = chatInput.trim();
407393

408394
sendChatMutation.mutate(
409395
{ projectName, sessionName, content: finalMessage },
410396
{
411397
onSuccess: () => {
412398
setChatInput("");
413-
setSelectedAgents([]);
414399
},
415400
onError: (err) => errorToast(err instanceof Error ? err.message : "Failed to send message"),
416401
}
417402
);
418403
};
419404

420405
const handleCommandClick = (slashCommand: string) => {
421-
let finalMessage = slashCommand;
422-
423-
if (autoSelectAgents) {
424-
finalMessage = "You MUST use relevant sub-agents when needed based on the task at hand. " + finalMessage;
425-
} else if (selectedAgents.length > 0) {
426-
const agentNamesStr = selectedAgents
427-
.map(id => workflowMetadata?.agents?.find(a => a.id === id))
428-
.filter(Boolean)
429-
.map(agent => agent!.name)
430-
.join(', ');
431-
432-
finalMessage = `You MUST collaborate with these agents: ${agentNamesStr}. ` + finalMessage;
433-
}
406+
const finalMessage = slashCommand;
434407

435408
sendChatMutation.mutate(
436409
{ projectName, sessionName, content: finalMessage },
437410
{
438411
onSuccess: () => {
439412
successToast(`Command ${slashCommand} sent`);
440-
setSelectedAgents([]);
441413
},
442414
onError: (err) => errorToast(err instanceof Error ? err.message : "Failed to send command"),
443415
}
@@ -651,14 +623,10 @@ export default function ProjectSessionDetailPage({
651623
workflowActivating={workflowManagement.workflowActivating}
652624
workflowMetadata={workflowMetadata}
653625
ootbWorkflows={ootbWorkflows}
654-
selectedAgents={selectedAgents}
655-
autoSelectAgents={autoSelectAgents}
656626
isExpanded={openAccordionItems.includes("workflows")}
657627
onWorkflowChange={handleWorkflowChange}
658628
onActivateWorkflow={workflowManagement.activateWorkflow}
659629
onCommandClick={handleCommandClick}
660-
onSetSelectedAgents={setSelectedAgents}
661-
onSetAutoSelectAgents={setAutoSelectAgents}
662630
onResume={handleContinue}
663631
/>
664632

@@ -1019,11 +987,7 @@ export default function ProjectSessionDetailPage({
1019987
onEndSession={() => Promise.resolve(handleEndSession())}
1020988
onGoToResults={() => {}}
1021989
onContinue={handleContinue}
1022-
selectedAgents={selectedAgents}
1023-
autoSelectAgents={autoSelectAgents}
1024990
workflowMetadata={workflowMetadata}
1025-
onSetSelectedAgents={setSelectedAgents}
1026-
onSetAutoSelectAgents={setAutoSelectAgents}
1027991
onCommandClick={handleCommandClick}
1028992
/>
1029993
</div>

components/frontend/src/components/session/MessagesTab.tsx

Lines changed: 12 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import React, { useState, useRef, useEffect } from "react";
44
import { Button } from "@/components/ui/button";
55
import { Badge } from "@/components/ui/badge";
6-
import { MessageSquare, Loader2, Settings, Sparkles, Users, Terminal } from "lucide-react";
6+
import { MessageSquare, Loader2, Settings, Terminal, Users } from "lucide-react";
77
import { StreamMessage } from "@/components/ui/stream-message";
88
import {
99
DropdownMenu,
@@ -12,8 +12,6 @@ import {
1212
DropdownMenuTrigger,
1313
} from "@/components/ui/dropdown-menu";
1414
import { Popover, PopoverContent, PopoverTrigger } from "@/components/ui/popover";
15-
import { Checkbox } from "@/components/ui/checkbox";
16-
import { Label } from "@/components/ui/label";
1715
import type { AgenticSession, MessageObject, ToolUseMessages } from "@/types/agentic-session";
1816
import type { WorkflowMetadata } from "@/app/projects/[name]/sessions/[sessionName]/lib/types";
1917

@@ -27,16 +25,12 @@ export type MessagesTabProps = {
2725
onEndSession: () => Promise<void>;
2826
onGoToResults?: () => void;
2927
onContinue: () => void;
30-
selectedAgents?: string[];
31-
autoSelectAgents?: boolean;
3228
workflowMetadata?: WorkflowMetadata;
33-
onSetSelectedAgents?: (agents: string[]) => void;
34-
onSetAutoSelectAgents?: (auto: boolean) => void;
3529
onCommandClick?: (slashCommand: string) => void;
3630
};
3731

3832

39-
const MessagesTab: React.FC<MessagesTabProps> = ({ session, streamMessages, chatInput, setChatInput, onSendChat, onInterrupt, onEndSession, onGoToResults, onContinue, selectedAgents = [], autoSelectAgents = false, workflowMetadata, onSetSelectedAgents, onSetAutoSelectAgents, onCommandClick }) => {
33+
const MessagesTab: React.FC<MessagesTabProps> = ({ session, streamMessages, chatInput, setChatInput, onSendChat, onInterrupt, onEndSession, onGoToResults, onContinue, workflowMetadata, onCommandClick }) => {
4034
const [sendingChat, setSendingChat] = useState(false);
4135
const [interrupting, setInterrupting] = useState(false);
4236
const [ending, setEnding] = useState(false);
@@ -460,7 +454,7 @@ const MessagesTab: React.FC<MessagesTabProps> = ({ session, streamMessages, chat
460454
</DropdownMenuCheckboxItem>
461455
</DropdownMenuContent>
462456
</DropdownMenu>
463-
457+
464458
{/* Agents Button with Popover */}
465459
{workflowMetadata?.agents && workflowMetadata.agents.length > 0 && (
466460
<Popover open={agentsPopoverOpen} onOpenChange={setAgentsPopoverOpen}>
@@ -469,68 +463,34 @@ const MessagesTab: React.FC<MessagesTabProps> = ({ session, streamMessages, chat
469463
<Users className="h-3.5 w-3.5" />
470464
Agents
471465
<Badge variant="secondary" className="ml-0.5 h-4 px-1.5 text-[10px] font-medium">
472-
{autoSelectAgents ? "auto" : selectedAgents.length}
466+
{workflowMetadata.agents.length}
473467
</Badge>
474468
</Button>
475469
</PopoverTrigger>
476-
<PopoverContent
477-
align="start"
478-
side="top"
470+
<PopoverContent
471+
align="start"
472+
side="top"
479473
className="w-[500px]"
480474
>
481475
<div className="space-y-3">
482476
<div className="space-y-2">
483-
<h4 className="font-medium text-sm">Agent Selection</h4>
477+
<h4 className="font-medium text-sm">Available Agents</h4>
484478
<p className="text-xs text-muted-foreground">
485-
Select agents to collaborate with or enable automatic selection
479+
Mention agents in your message to collaborate with them
486480
</p>
487481
</div>
488482

489-
{/* Auto-select checkbox */}
490-
<div className="flex items-center space-x-2 pb-2 border-b">
491-
<Checkbox
492-
id="popover-auto-select-agents"
493-
checked={autoSelectAgents}
494-
onCheckedChange={(checked) => {
495-
if (onSetAutoSelectAgents) {
496-
onSetAutoSelectAgents(!!checked);
497-
if (checked && onSetSelectedAgents) {
498-
onSetSelectedAgents([]);
499-
}
500-
}
501-
}}
502-
/>
503-
<Sparkles className="h-3.5 w-3.5 text-purple-500" />
504-
<Label htmlFor="popover-auto-select-agents" className="text-sm font-normal cursor-pointer">
505-
Automatically select agents
506-
</Label>
507-
</div>
508-
509483
{/* Agents list */}
510-
<div
484+
<div
511485
className="max-h-[400px] overflow-y-scroll space-y-2 pr-2 scrollbar-thin"
512486
>
513487
{workflowMetadata.agents.map((agent) => {
514488
const agentNameShort = agent.name.split(' - ')[0];
515-
const isSelected = selectedAgents.includes(agent.id);
516-
489+
517490
return (
518491
<div
519492
key={agent.id}
520-
className={`p-3 rounded-md border cursor-pointer transition-colors ${
521-
isSelected
522-
? 'bg-blue-50 border-blue-300 hover:bg-blue-100'
523-
: 'bg-muted/30 hover:bg-muted/50'
524-
} ${autoSelectAgents ? 'opacity-50 cursor-not-allowed' : ''}`}
525-
onClick={() => {
526-
if (!autoSelectAgents && onSetSelectedAgents) {
527-
if (isSelected) {
528-
onSetSelectedAgents(selectedAgents.filter(id => id !== agent.id));
529-
} else {
530-
onSetSelectedAgents([...selectedAgents, agent.id]);
531-
}
532-
}
533-
}}
493+
className="p-3 rounded-md border bg-muted/30"
534494
>
535495
<div className="flex items-center justify-between mb-1">
536496
<h3 className="text-sm font-bold">

0 commit comments

Comments
 (0)