'use client';
import { useMemo } from 'react';
import type { EpicBucket, Incursion } from '../../lib/agent-sessions';
import { SessionFeedCard } from './session-feed-card';
interface SessionTaskFeedProps {
feed: EpicBucket[];
incursions?: Incursion[];
selectedEpicId: string | null;
onSelectTask: (id: string) => void;
highlightTaskId?: string | null;
highlightingAgentId?: string | null;
}
export function IncursionTicker({ incursions }: { incursions: Incursion[] }) {
return (
{incursions.map((inc, i) => (
Conflict Detected:
{inc.agents.join(' & ')}
overlapping in
{inc.scope}
))}
);
}
export function SessionTaskFeed({ feed, incursions = [], selectedEpicId, onSelectTask, highlightTaskId, highlightingAgentId }: SessionTaskFeedProps) {
const filteredFeed = useMemo(() => {
if (!selectedEpicId) return feed;
return feed.filter(b => b.epic.id === selectedEpicId);
}, [feed, selectedEpicId]);
if (filteredFeed.length === 0) {
return (
No sessions found
Try selecting a different epic bucket or check if any tasks are active.
);
}
return (
{incursions.length > 0 && (
)}
{filteredFeed.map(bucket => (
{bucket.tasks.map(task => {
const taskIncursion = incursions.find(inc =>
task.owner && inc.agents.includes(task.owner)
);
const isAgentMission = highlightingAgentId ? task.owner === highlightingAgentId : false;
return (
);
})}
))}
);
}