'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 => (
EPIC

{bucket.epic.title}

{bucket.epic.id}
{bucket.tasks.length} MISSION{bucket.tasks.length === 1 ? '' : 'S'}
{bucket.tasks.map(task => { const taskIncursion = incursions.find(inc => task.owner && inc.agents.includes(task.owner) ); const isAgentMission = highlightingAgentId ? task.owner === highlightingAgentId : false; return ( ); })}
))}
); }