@snf/qa-bot-core 0.2.11 → 0.2.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,23 +2,32 @@ import type { Settings, Flow } from 'react-chatbotify';
2
2
  /**
3
3
  * Analytics event types fired by qa-bot-core
4
4
  */
5
- export type QABotAnalyticsEventType = 'qa_bot_opened' | 'qa_bot_closed' | 'qa_new_chat_started' | 'qa_question_asked' | 'qa_response_received' | 'qa_response_error' | 'qa_response_rated' | 'qa_login_prompt_shown';
5
+ export type QABotAnalyticsEventType = 'chatbot_open' | 'chatbot_close' | 'chatbot_new_chat' | 'chatbot_question_sent' | 'chatbot_answer_received' | 'chatbot_answer_error' | 'chatbot_rating_sent' | 'chatbot_login_prompt_shown';
6
6
  /**
7
7
  * Analytics event payload
8
- * Fields are populated based on event type:
9
- * - qa_bot_opened: sessionId
10
- * - qa_bot_closed: sessionId, messageCount, durationMs
11
- * - qa_new_chat_started: sessionId, previousMessageCount
12
- * - qa_question_asked: sessionId, queryId, questionLength
13
- * - qa_response_received: sessionId, queryId, responseTimeMs, success, responseLength, hasMetadata
14
- * - qa_response_error: sessionId, queryId, errorType
15
- * - qa_response_rated: sessionId, queryId, rating
16
- * - qa_login_prompt_shown: sessionId
8
+ *
9
+ * Common fields (auto-populated for all events):
10
+ * - timestamp: When the event occurred
11
+ * - sessionId: Current chat session ID
12
+ * - pageUrl: URL where the bot is displayed
13
+ * - isEmbedded: Whether bot is in embedded mode (true) or floating/widget mode (false)
14
+ *
15
+ * Event-specific fields:
16
+ * - chatbot_open: (common fields only)
17
+ * - chatbot_close: messageCount, durationMs
18
+ * - chatbot_new_chat: previousMessageCount
19
+ * - chatbot_question_sent: queryId, questionLength
20
+ * - chatbot_answer_received: queryId, responseTimeMs, success, responseLength, hasMetadata
21
+ * - chatbot_answer_error: queryId, errorType
22
+ * - chatbot_rating_sent: queryId, rating
23
+ * - chatbot_login_prompt_shown: (common fields only)
17
24
  */
18
25
  export interface QABotAnalyticsEvent {
19
26
  type: QABotAnalyticsEventType;
20
27
  timestamp: number;
21
28
  sessionId?: string;
29
+ pageUrl?: string;
30
+ isEmbedded?: boolean;
22
31
  queryId?: string;
23
32
  questionLength?: number;
24
33
  responseTimeMs?: number;
@@ -1,11 +1,19 @@
1
1
  import React from 'react';
2
2
  import type { QABotAnalyticsEvent } from '../config';
3
+ /**
4
+ * Event type without auto-populated fields.
5
+ * Call sites provide event-specific data; common fields are added by the enriched tracker.
6
+ */
7
+ export type AnalyticsEventInput = Omit<QABotAnalyticsEvent, 'timestamp' | 'sessionId' | 'pageUrl' | 'isEmbedded'>;
3
8
  interface AnalyticsContextValue {
4
- trackEvent: (event: Omit<QABotAnalyticsEvent, 'timestamp'>) => void;
9
+ trackEvent: (event: AnalyticsEventInput) => void;
5
10
  }
6
11
  interface AnalyticsProviderProps {
7
- onAnalyticsEvent?: (event: QABotAnalyticsEvent) => void;
8
- getSessionId: () => string | null;
12
+ /**
13
+ * Pre-enriched track function that adds common fields (timestamp, sessionId, pageUrl, isEmbedded).
14
+ * Created by QABot and passed down to ensure consistent enrichment across all call sites.
15
+ */
16
+ trackEvent: (event: AnalyticsEventInput) => void;
9
17
  children: React.ReactNode;
10
18
  }
11
19
  export declare const AnalyticsProvider: React.FC<AnalyticsProviderProps>;
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import type { QABotAnalyticsEvent } from '../../config';
2
+ import type { AnalyticsEventInput } from '../../contexts/AnalyticsContext';
3
3
  /**
4
4
  * Configuration for creating a Q&A flow
5
5
  */
@@ -22,14 +22,14 @@ export interface CreateQAFlowParams {
22
22
  loginUrl?: string;
23
23
  /** The acting user's identifier (optional) */
24
24
  actingUser?: string;
25
- /** Callback for analytics events (optional) */
26
- onAnalyticsEvent?: (event: QABotAnalyticsEvent) => void;
25
+ /** Enriched analytics tracker (adds common fields automatically) */
26
+ trackEvent?: (event: AnalyticsEventInput) => void;
27
27
  }
28
28
  /**
29
29
  * Creates the basic Q&A conversation flow
30
30
  * Handles questions, responses, and optional ratings
31
31
  */
32
- export declare const createQAFlow: ({ endpoint, ratingEndpoint, apiKey, sessionId: getSessionId, isResetting, isLoggedIn, allowAnonAccess, loginUrl, actingUser, onAnalyticsEvent }: CreateQAFlowParams) => {
32
+ export declare const createQAFlow: ({ endpoint, ratingEndpoint, apiKey, sessionId: getSessionId, isResetting, isLoggedIn, allowAnonAccess, loginUrl, actingUser, trackEvent }: CreateQAFlowParams) => {
33
33
  qa_loop: {
34
34
  message: string;
35
35
  component: React.JSX.Element;
@@ -7,7 +7,7 @@
7
7
  * Usage for consumers:
8
8
  * localStorage.setItem('QA_BOT_DEBUG', 'true'); // Enable debug logs + version
9
9
  */
10
- export declare const LIB_VERSION = "0.2.11";
10
+ export declare const LIB_VERSION = "0.2.13";
11
11
  export declare const logger: {
12
12
  version: () => void;
13
13
  session: (action: string, ...args: unknown[]) => void;
@@ -43,12 +43,12 @@ export declare const getAllSessions: () => Array<{
43
43
  export declare const getSessionMessages: (sessionId: string) => StoredMessage[];
44
44
  /**
45
45
  * Get the message count for a session.
46
- * Used for analytics (qa_bot_closed, qa_new_chat_started events).
46
+ * Used for analytics (chatbot_close, chatbot_new_chat events).
47
47
  */
48
48
  export declare const getSessionMessageCount: (sessionId: string) => number;
49
49
  /**
50
50
  * Compute how long a session has been active (in milliseconds).
51
51
  * Calculates the difference between now and the session's startedAt timestamp.
52
- * Used for analytics (qa_bot_closed event).
52
+ * Used for analytics (chatbot_close event).
53
53
  */
54
54
  export declare const computeSessionDurationMs: (sessionId: string) => number;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@snf/qa-bot-core",
3
- "version": "0.2.11",
3
+ "version": "0.2.13",
4
4
  "description": "A configurable chatbot setup for quick integration of RAG-powered Q&A and rating system",
5
5
  "main": "./dist/qa-bot-core.umd.cjs",
6
6
  "module": "./dist/qa-bot-core.js",