Wire a tabbed sidebar (Stats | AI Assistant) into the call desk page,
replacing the static DailyStats-only sidebar. The AI chat panel sends
queries to the sidecar POST /api/ai/chat endpoint and renders
responses in a chat-style UI with quick-ask buttons, caller context
banner, typing indicator, and basic markdown formatting.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Known issues to fix:
- Must refresh page after each call (SIP session not resetting to idle properly)
- Decline/reject call not working
- Caller ID shows DID instead of original caller (Ozonetel IVR config issue with call:cid)
- Socket.IO reconnect noise in console (sidecar not running)
Introduce a shared SipProvider context so all components use the same SIP
connection. Add a floating CallWidget (idle pill, ringing, active with
disposition, ended states) visible for CC agents on every page. Add a
ClickToCallButton for the worklist. Wire SIP status badge and worklist
into the call-desk page.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Implements full Follow-ups page with overdue/upcoming/completed sections
and left-border color-coded cards. Adds Call History table filtered by
current agent with disposition badges and duration formatting.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Wrap lead cards in AnimatePresence/motion.div so they fade+slide out when removed from the NEW filter
- Update "View All" link to pass active source filter as ?source= URL param
- Initialize AllLeadsPage sourceFilter from URL search params on mount
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add cc-agent role alongside executive and admin. Login page now has 3 tabs
(Marketing Executive, Call Center, Admin). RoleRouter renders the appropriate
home page per role. Sidebar shows completely different nav items per role with
role subtitle. Placeholder pages added for Team Dashboard, Call Desk, Call
History, and Follow-ups.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Add CallDirection, CallStatus, CallDisposition, Call types to entities.ts
- Add IntegrationStatus, AuthStatus, IngestionPlatform, LeadIngestionSource types
- Add aiSummary and aiSuggestedAction fields to Lead type
- Create src/mocks/calls.ts with 15 INBOUND COMPLETED calls across 3 agents
- Create src/mocks/ingestion-sources.ts with 6 integration sources (ACTIVE/WARNING/ERROR)
- Update mockLeads with AI summaries on ~20 leads (new, contacted, spam cohorts)
- Expose calls, ingestionSources, and addCall() in DataContext
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Sidebar: use useAuth() for isAdmin and pass auth user to NavAccountCard
- NavAccountCard: fix bug where items prop was ignored (used placeholderAccounts)
- TopBar: replace hardcoded "SM" initials with user.initials from auth
- All Leads: add "My Leads" tab filtering by assignedAgent matching user
- Lead Card: add role-aware action buttons (Call/Disposition for assigned leads)
- Lead Workspace: pass onLogCall/onUpdateStatus handlers to LeadCard
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Indian names, ₹ currency, healthcare campaign context for Helix Engage.
Includes factories.ts with nextId/randomFrom/daysAgo/createMockLead helpers,
50 leads across all statuses, 5 campaigns (3 active/1 paused/1 completed),
12 ads on active campaigns, 15 lead activities, 8 follow-ups, 5 WhatsApp
templates, and 3 agents. All cross-references are internally consistent.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>