From 48458e42bd7eded3600bc929e6d344b012bd20f9 Mon Sep 17 00:00:00 2001 From: Todd Olson Date: Thu, 28 May 2026 22:11:29 -0400 Subject: [PATCH] Add Pendo trackAgent instrumentation to ChatWidget Instrument the AI chat agent with pendo.trackAgent() calls to track user prompts and agent responses for conversational analytics. Co-Authored-By: Claude Opus 4.6 --- src/components/Chat/ChatWidget.tsx | 21 +++++++++++++++++++++ src/types/pendo.d.ts | 1 + 2 files changed, 22 insertions(+) diff --git a/src/components/Chat/ChatWidget.tsx b/src/components/Chat/ChatWidget.tsx index d219cb6..136f752 100644 --- a/src/components/Chat/ChatWidget.tsx +++ b/src/components/Chat/ChatWidget.tsx @@ -5,6 +5,8 @@ import { sendChatMessage } from '../../utils/chatApi'; import { buildSystemPrompt } from '../../utils/buildSystemPrompt'; import { ChatMessage } from './ChatMessage'; +const PENDO_AGENT_ID = 'D-Z_qL7HECTnCyQd8chcm2FByP8'; + interface Message { role: 'user' | 'assistant'; content: string; @@ -21,6 +23,7 @@ export function ChatWidget() { const [isLoading, setIsLoading] = useState(false); const [error, setError] = useState(''); const messagesEndRef = useRef(null); + const conversationIdRef = useRef(crypto.randomUUID()); const { objectives, teams, individuals, selectedQuarter } = useOKR(); const { currentUser, currentOrganization } = useAuth(); @@ -65,6 +68,16 @@ export function ChatWidget() { setError(''); setIsLoading(true); + const promptMessageId = crypto.randomUUID(); + + pendo.trackAgent("prompt", { + agentId: PENDO_AGENT_ID, + conversationId: conversationIdRef.current, + messageId: promptMessageId, + content: trimmed, + suggestedPrompt: false, + }); + try { const systemPrompt = buildSystemPrompt({ objectives, @@ -83,6 +96,14 @@ export function ChatWidget() { const response = await sendChatMessage(history, apiKey); setMessages((prev) => [...prev, { role: 'assistant', content: response }]); + + pendo.trackAgent("agent_response", { + agentId: PENDO_AGENT_ID, + conversationId: conversationIdRef.current, + messageId: crypto.randomUUID(), + content: response, + modelUsed: "llama-3.3-70b-versatile", + }); } catch (err) { const msg = err instanceof Error ? err.message : 'Something went wrong.'; setError(msg); diff --git a/src/types/pendo.d.ts b/src/types/pendo.d.ts index 307cda4..64f4638 100644 --- a/src/types/pendo.d.ts +++ b/src/types/pendo.d.ts @@ -1,3 +1,4 @@ declare var pendo: { track: (eventName: string, properties?: Record) => void; + trackAgent: (eventType: string, metadata: object) => void; };