vdb-ai-chat 1.0.0 → 1.0.1

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.
Files changed (85) hide show
  1. package/dist/248.chat-widget.js +1 -0
  2. package/dist/538.chat-widget.js +1 -0
  3. package/dist/751.chat-widget.js +1 -0
  4. package/dist/chat-widget.js +1 -1
  5. package/dist/chat-widget.js.LICENSE.txt +2 -0
  6. package/lib/commonjs/api.js +2 -5
  7. package/lib/commonjs/api.js.map +1 -1
  8. package/lib/commonjs/components/ChatHeader.js +15 -2
  9. package/lib/commonjs/components/ChatHeader.js.map +1 -1
  10. package/lib/commonjs/components/ChatWidget.js +49 -24
  11. package/lib/commonjs/components/ChatWidget.js.map +1 -1
  12. package/lib/commonjs/components/MessageBubble.js +33 -9
  13. package/lib/commonjs/components/MessageBubble.js.map +1 -1
  14. package/lib/commonjs/components/ProductsList.js +2 -2
  15. package/lib/commonjs/components/ProductsList.js.map +1 -1
  16. package/lib/commonjs/components/utils.js +46 -1
  17. package/lib/commonjs/components/utils.js.map +1 -1
  18. package/lib/commonjs/contexts/AnalyticsClientContext.js +19 -0
  19. package/lib/commonjs/contexts/AnalyticsClientContext.js.map +1 -0
  20. package/lib/commonjs/contexts/SegmentClientContext.js +19 -0
  21. package/lib/commonjs/contexts/SegmentClientContext.js.map +1 -0
  22. package/lib/commonjs/hooks/useAnalytics.js +158 -0
  23. package/lib/commonjs/hooks/useAnalytics.js.map +1 -0
  24. package/lib/commonjs/index.web.js +29 -3
  25. package/lib/commonjs/index.web.js.map +1 -1
  26. package/lib/commonjs/storage.js +5 -5
  27. package/lib/commonjs/storage.js.map +1 -1
  28. package/lib/module/api.js +2 -5
  29. package/lib/module/api.js.map +1 -1
  30. package/lib/module/components/ChatHeader.js +15 -2
  31. package/lib/module/components/ChatHeader.js.map +1 -1
  32. package/lib/module/components/ChatWidget.js +50 -25
  33. package/lib/module/components/ChatWidget.js.map +1 -1
  34. package/lib/module/components/MessageBubble.js +34 -10
  35. package/lib/module/components/MessageBubble.js.map +1 -1
  36. package/lib/module/components/ProductsList.js +2 -2
  37. package/lib/module/components/ProductsList.js.map +1 -1
  38. package/lib/module/components/utils.js +42 -0
  39. package/lib/module/components/utils.js.map +1 -1
  40. package/lib/module/contexts/AnalyticsClientContext.js +10 -0
  41. package/lib/module/contexts/AnalyticsClientContext.js.map +1 -0
  42. package/lib/module/contexts/SegmentClientContext.js +10 -0
  43. package/lib/module/contexts/SegmentClientContext.js.map +1 -0
  44. package/lib/module/hooks/useAnalytics.js +146 -0
  45. package/lib/module/hooks/useAnalytics.js.map +1 -0
  46. package/lib/module/index.native.js +5 -5
  47. package/lib/module/index.web.js +30 -4
  48. package/lib/module/index.web.js.map +1 -1
  49. package/lib/module/storage.js +6 -6
  50. package/lib/module/storage.js.map +1 -1
  51. package/lib/typescript/api.d.ts +1 -1
  52. package/lib/typescript/api.d.ts.map +1 -1
  53. package/lib/typescript/components/ChatHeader.d.ts.map +1 -1
  54. package/lib/typescript/components/ChatWidget.d.ts.map +1 -1
  55. package/lib/typescript/components/MessageBubble.d.ts +2 -0
  56. package/lib/typescript/components/MessageBubble.d.ts.map +1 -1
  57. package/lib/typescript/components/ProductsList.d.ts.map +1 -1
  58. package/lib/typescript/components/utils.d.ts +23 -0
  59. package/lib/typescript/components/utils.d.ts.map +1 -1
  60. package/lib/typescript/contexts/AnalyticsClientContext.d.ts +9 -0
  61. package/lib/typescript/contexts/AnalyticsClientContext.d.ts.map +1 -0
  62. package/lib/typescript/contexts/SegmentClientContext.d.ts +9 -0
  63. package/lib/typescript/contexts/SegmentClientContext.d.ts.map +1 -0
  64. package/lib/typescript/hooks/useAnalytics.d.ts +36 -0
  65. package/lib/typescript/hooks/useAnalytics.d.ts.map +1 -0
  66. package/lib/typescript/index.native.d.ts +5 -5
  67. package/lib/typescript/index.web.d.ts +1 -1
  68. package/lib/typescript/index.web.d.ts.map +1 -1
  69. package/lib/typescript/storage.d.ts.map +1 -1
  70. package/lib/typescript/types.d.ts +1 -1
  71. package/lib/typescript/types.d.ts.map +1 -1
  72. package/package.json +13 -3
  73. package/src/api.ts +22 -11
  74. package/src/components/ChatHeader.tsx +13 -2
  75. package/src/components/ChatWidget.tsx +53 -28
  76. package/src/components/MessageBubble.tsx +52 -10
  77. package/src/components/ProductsList.tsx +8 -6
  78. package/src/components/utils.ts +60 -1
  79. package/src/contexts/AnalyticsClientContext.tsx +20 -0
  80. package/src/contexts/SegmentClientContext.tsx +20 -0
  81. package/src/hooks/useAnalytics.tsx +176 -0
  82. package/src/index.native.tsx +5 -5
  83. package/src/index.web.tsx +36 -3
  84. package/src/storage.ts +16 -13
  85. package/src/types.ts +1 -1
@@ -0,0 +1,146 @@
1
+ import { Platform } from "react-native";
2
+ import { getDeviceType, getUserDetails } from "../components/utils";
3
+ import { useAnalyticsClient } from "../contexts/AnalyticsClientContext";
4
+ const getSystemTypeEnum = deviceType => {
5
+ let type = "web";
6
+ if (deviceType) {
7
+ switch (deviceType) {
8
+ case "Linux":
9
+ type = "android";
10
+ break;
11
+ case "iPhone":
12
+ type = "ios";
13
+ break;
14
+ default:
15
+ type = "web";
16
+ break;
17
+ }
18
+ } else {
19
+ type = String(Platform.OS);
20
+ }
21
+ return getDeviceType(type).toString();
22
+ };
23
+ export const formatOSName = rawOsName => {
24
+ if (!rawOsName) return "";
25
+ const osName = rawOsName.toLowerCase();
26
+ const osMap = {
27
+ android: "Android",
28
+ ios: "iOS",
29
+ ipad: "iPadOS",
30
+ ipados: "iPadOS",
31
+ windows: "Windows",
32
+ macos: "macOS",
33
+ mac: "macOS",
34
+ linux: "Linux",
35
+ web: "Web",
36
+ tizen: "Tizen",
37
+ harmonyos: "HarmonyOS",
38
+ fireos: "Fire OS"
39
+ };
40
+ for (const key of Object.keys(osMap)) {
41
+ if (osName.includes(key)) {
42
+ return osMap[key];
43
+ }
44
+ }
45
+ return rawOsName.charAt(0).toUpperCase() + rawOsName.slice(1);
46
+ };
47
+ export const getUserAnalyticsPayload = async () => {
48
+ const user = await getUserDetails();
49
+ const deviceDetails = Platform.OS === "web" ? {
50
+ system_type_enum: getSystemTypeEnum(null),
51
+ platform_action_enum: "0"
52
+ } : {};
53
+ return {
54
+ user_company_id: user?.company_id?.toString(),
55
+ user_company_name: user?.company,
56
+ user_email: user?.email,
57
+ user_id: user?.id?.toString(),
58
+ user_name: user?.first_name ? `${user?.first_name} ${user?.last_name}` : undefined,
59
+ user_price_mode: user?.price_mode?.toString(),
60
+ price_mode: user?.price_mode?.toString(),
61
+ has_plan_details: user?.plan_details ? true : false,
62
+ userAgent: Platform.OS === "web" ? navigator.userAgent : "",
63
+ ...deviceDetails
64
+ };
65
+ };
66
+ export const isSegmentUserAgent = userAgent => {
67
+ if (!userAgent) return false;
68
+
69
+ // Regex to match Segment's specific Safari-like pattern
70
+ const segmentPattern = /^Mozilla\/5\.0 \([^;]+; CPU [^)]+ like Mac OS X\) AppleWebKit\/600\.1\.4 \(KHTML, like Gecko\) Version\/\d\.0 Mobile\/10B329 Safari\/8536\.25$/;
71
+ return segmentPattern.test(userAgent);
72
+ };
73
+ export function isBot(userAgent = "") {
74
+ if (!userAgent && Platform.OS === "web") return true;
75
+ const botPatterns = [/bot/i,
76
+ // "Googlebot", "Bingbot"
77
+ /crawl/i,
78
+ // "crawler"
79
+ /spider/i,
80
+ // "spider"
81
+ /HeadlessChrome/i,
82
+ // Puppeteer/Headless
83
+ /PhantomJS/i,
84
+ // Old automation
85
+ /slurp/i,
86
+ // Yahoo Slurp bot
87
+ /curl/i,
88
+ // CLI traffic
89
+ /wget/i,
90
+ // CLI downloads
91
+ /httpclient/i // Generic clients
92
+ ];
93
+ return botPatterns.some(pattern => pattern.test(userAgent));
94
+ }
95
+ export const useUserAnalytics = () => {
96
+ // This will return undefined if not wrapped in provider, which is fine
97
+ const analyticsClient = useAnalyticsClient();
98
+ const _track = async (eventName, options) => {
99
+ const userAnalyticsPayload = await getUserAnalyticsPayload();
100
+ if (isSegmentUserAgent(userAnalyticsPayload?.userAgent)) {
101
+ console.warn("Skipping tracking for Segment user agent:", userAnalyticsPayload.userAgent);
102
+ return;
103
+ }
104
+ if (isBot(userAnalyticsPayload?.userAgent)) {
105
+ console.warn("Skipping tracking for bot user agent:", userAnalyticsPayload.userAgent);
106
+ return;
107
+ }
108
+ const client = analyticsClient || window.analytics;
109
+ if (!client) return;
110
+ const user = await getUserDetails();
111
+ if (!user?.id) {
112
+ console.error("Track Event tracked without user:", eventName, JSON.stringify(options));
113
+ console.error("Can't identify as user is not logged in", JSON.stringify(user));
114
+ } else {
115
+ await client.identify(`${user.id}`, {
116
+ name: `${user.first_name} ${user.last_name}`,
117
+ email: user.email,
118
+ country: user.country
119
+ });
120
+ }
121
+ await client.track(eventName, {
122
+ ...userAnalyticsPayload,
123
+ ...options
124
+ });
125
+ };
126
+ const _identify = async (userId, userTraits) => {
127
+ const client = analyticsClient || window.analytics;
128
+ if (!client) return;
129
+ await client.identify(userId, userTraits);
130
+ };
131
+ const trackEvent = async (eventName, options) => {
132
+ const userAnalyticsPayload = await getUserAnalyticsPayload();
133
+ const client = analyticsClient || window.analytics;
134
+ if (!client) return;
135
+ await client.track(eventName, {
136
+ ...userAnalyticsPayload,
137
+ ...options
138
+ });
139
+ };
140
+ return {
141
+ trackEvent,
142
+ _identify,
143
+ _track
144
+ };
145
+ };
146
+ //# sourceMappingURL=useAnalytics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Platform","getDeviceType","getUserDetails","useAnalyticsClient","getSystemTypeEnum","deviceType","type","String","OS","toString","formatOSName","rawOsName","osName","toLowerCase","osMap","android","ios","ipad","ipados","windows","macos","mac","linux","web","tizen","harmonyos","fireos","key","Object","keys","includes","charAt","toUpperCase","slice","getUserAnalyticsPayload","user","deviceDetails","system_type_enum","platform_action_enum","user_company_id","company_id","user_company_name","company","user_email","email","user_id","id","user_name","first_name","last_name","undefined","user_price_mode","price_mode","has_plan_details","plan_details","userAgent","navigator","isSegmentUserAgent","segmentPattern","test","isBot","botPatterns","some","pattern","useUserAnalytics","analyticsClient","_track","eventName","options","userAnalyticsPayload","console","warn","client","window","analytics","error","JSON","stringify","identify","name","country","track","_identify","userId","userTraits","trackEvent"],"sourceRoot":"../../../src","sources":["hooks/useAnalytics.tsx"],"mappings":"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","ignoreList":[]}
@@ -1,7 +1,7 @@
1
1
  // React Native entry point - re-export everything from main index
2
- export { ChatWidget } from './components/ChatWidget';
3
- export * from './types';
4
- export * from './theme';
5
- export { normaliseMessages } from './api';
6
- export { initStorage, isStorageInitialized, Storage } from './storage';
2
+ export { ChatWidget } from "./components/ChatWidget";
3
+ export * from "./types";
4
+ export * from "./theme";
5
+ export { normaliseMessages } from "./api";
6
+ export { initStorage, isStorageInitialized, Storage } from "./storage";
7
7
  //# sourceMappingURL=index.native.js.map
@@ -1,17 +1,43 @@
1
1
  import * as React from "react";
2
2
  import { createRoot } from "react-dom/client";
3
- import { View, StyleSheet } from "react-native";
3
+ import { View, StyleSheet, Platform } from "react-native";
4
4
  import { ChatWidget } from "./components/ChatWidget";
5
- export function renderChatApp(domElement, apiUrl, theme, onClose, onClearChat) {
5
+ import { Analytics } from "@segment/analytics-next";
6
+ import { AnalyticsClientProvider } from "./contexts/AnalyticsClientContext";
7
+ export function renderChatApp(domElement, apiUrl, theme, onClose, onClearChat, segmentWriteKey) {
6
8
  const root = createRoot(domElement);
7
- root.render(/*#__PURE__*/React.createElement(View, {
9
+ let analyticsClient;
10
+ if (Platform.OS === "web" && segmentWriteKey) {
11
+ try {
12
+ const client = new Analytics({
13
+ writeKey: segmentWriteKey
14
+ });
15
+ analyticsClient = client;
16
+ window.analytics = client;
17
+ client.track("AI Chat: Widget Loaded", {
18
+ userAgent: typeof navigator !== "undefined" ? navigator.userAgent : ""
19
+ }).then?.(() => {
20
+ // eslint-disable-next-line no-console
21
+ console.log("Segment: Widget Loaded event sent");
22
+ }).catch(e => {
23
+ console.warn("Segment track failed", e);
24
+ });
25
+ } catch (e) {
26
+ console.warn("Segment analytics load failed", e);
27
+ }
28
+ }
29
+ const content = /*#__PURE__*/React.createElement(View, {
8
30
  style: styles.root
9
31
  }, /*#__PURE__*/React.createElement(ChatWidget, {
10
32
  apiUrl: apiUrl,
11
33
  theme: theme,
12
34
  onClose: onClose,
13
35
  onClearChat: onClearChat
14
- })));
36
+ }));
37
+ const contentWithAnalytics = analyticsClient ? /*#__PURE__*/React.createElement(AnalyticsClientProvider, {
38
+ client: analyticsClient
39
+ }, content) : content;
40
+ root.render(contentWithAnalytics);
15
41
  }
16
42
  const styles = StyleSheet.create({
17
43
  root: {
@@ -1 +1 @@
1
- {"version":3,"names":["React","createRoot","View","StyleSheet","ChatWidget","renderChatApp","domElement","apiUrl","theme","onClose","onClearChat","root","render","createElement","style","styles","create","flex","height","width"],"sourceRoot":"../../src","sources":["index.web.tsx"],"mappings":"AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SAASC,UAAU,QAAQ,kBAAkB;AAC7C,SAASC,IAAI,EAAEC,UAAU,QAAQ,cAAc;AAC/C,SAASC,UAAU,QAAQ,yBAAyB;AAGpD,OAAO,SAASC,aAAaA,CAC3BC,UAAuB,EACvBC,MAAc,EACdC,KAA0B,EAC1BC,OAAoB,EACpBC,WAAwB,EACxB;EACA,MAAMC,IAAI,GAAGV,UAAU,CAACK,UAAU,CAAC;EACnCK,IAAI,CAACC,MAAM,cACTZ,KAAA,CAAAa,aAAA,CAACX,IAAI;IAACY,KAAK,EAAEC,MAAM,CAACJ;EAAK,gBACvBX,KAAA,CAAAa,aAAA,CAACT,UAAU;IACTG,MAAM,EAAEA,MAAO;IACfC,KAAK,EAAEA,KAAM;IACbC,OAAO,EAAEA,OAAQ;IACjBC,WAAW,EAAEA;EAAY,CAC1B,CACG,CACR,CAAC;AACH;AAEA,MAAMK,MAAM,GAAGZ,UAAU,CAACa,MAAM,CAAC;EAC/BL,IAAI,EAAE;IACJM,IAAI,EAAE,CAAC;IACPC,MAAM,EAAE,MAAM;IACdC,KAAK,EAAE;EACT;AACF,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["React","createRoot","View","StyleSheet","Platform","ChatWidget","Analytics","AnalyticsClientProvider","renderChatApp","domElement","apiUrl","theme","onClose","onClearChat","segmentWriteKey","root","analyticsClient","OS","client","writeKey","window","analytics","track","userAgent","navigator","then","console","log","catch","e","warn","content","createElement","style","styles","contentWithAnalytics","render","create","flex","height","width"],"sourceRoot":"../../src","sources":["index.web.tsx"],"mappings":"AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SAASC,UAAU,QAAQ,kBAAkB;AAC7C,SAASC,IAAI,EAAEC,UAAU,EAAEC,QAAQ,QAAQ,cAAc;AACzD,SAASC,UAAU,QAAQ,yBAAyB;AAEpD,SAASC,SAAS,QAAQ,yBAAyB;AACnD,SAASC,uBAAuB,QAAQ,mCAAmC;AAE3E,OAAO,SAASC,aAAaA,CAC3BC,UAAuB,EACvBC,MAAc,EACdC,KAA0B,EAC1BC,OAAoB,EACpBC,WAAwB,EACxBC,eAAwB,EACxB;EACA,MAAMC,IAAI,GAAGd,UAAU,CAACQ,UAAU,CAAC;EACnC,IAAIO,eAAsC;EAC1C,IAAIZ,QAAQ,CAACa,EAAE,KAAK,KAAK,IAAIH,eAAe,EAAE;IAC5C,IAAI;MACF,MAAMI,MAAM,GAAG,IAAIZ,SAAS,CAAC;QAAEa,QAAQ,EAAEL;MAAgB,CAAC,CAAC;MAE3DE,eAAe,GAAGE,MAAM;MACvBE,MAAM,CAASC,SAAS,GAAGH,MAAM;MAClCA,MAAM,CACHI,KAAK,CAAC,wBAAwB,EAAE;QAC/BC,SAAS,EACP,OAAOC,SAAS,KAAK,WAAW,GAAGA,SAAS,CAACD,SAAS,GAAG;MAC7D,CAAC,CAAC,CACDE,IAAI,GAAG,MAAM;QACZ;QACAC,OAAO,CAACC,GAAG,CAAC,mCAAmC,CAAC;MAClD,CAAC,CAAC,CACDC,KAAK,CAAEC,CAAU,IAAK;QACrBH,OAAO,CAACI,IAAI,CAAC,sBAAsB,EAAED,CAAC,CAAC;MACzC,CAAC,CAAC;IACN,CAAC,CAAC,OAAOA,CAAC,EAAE;MACVH,OAAO,CAACI,IAAI,CAAC,+BAA+B,EAAED,CAAC,CAAC;IAClD;EACF;EACA,MAAME,OAAO,gBACX/B,KAAA,CAAAgC,aAAA,CAAC9B,IAAI;IAAC+B,KAAK,EAAEC,MAAM,CAACnB;EAAK,gBACvBf,KAAA,CAAAgC,aAAA,CAAC3B,UAAU;IACTK,MAAM,EAAEA,MAAO;IACfC,KAAK,EAAEA,KAAM;IACbC,OAAO,EAAEA,OAAQ;IACjBC,WAAW,EAAEA;EAAY,CAC1B,CACG,CACP;EACD,MAAMsB,oBAAoB,GAAGnB,eAAe,gBAC1ChB,KAAA,CAAAgC,aAAA,CAACzB,uBAAuB;IAACW,MAAM,EAAEF;EAAgB,GAAEe,OAAiC,CAAC,GAErFA,OACD;EAEDhB,IAAI,CAACqB,MAAM,CAACD,oBAAoB,CAAC;AACnC;AAEA,MAAMD,MAAM,GAAG/B,UAAU,CAACkC,MAAM,CAAC;EAC/BtB,IAAI,EAAE;IACJuB,IAAI,EAAE,CAAC;IACPC,MAAM,EAAE,MAAM;IACdC,KAAK,EAAE;EACT;AACF,CAAC,CAAC","ignoreList":[]}
@@ -1,10 +1,10 @@
1
- import { Platform } from 'react-native';
1
+ import { Platform } from "react-native";
2
2
 
3
3
  // Storage interface that works across platforms
4
4
 
5
5
  // Helper to safely get localStorage (only available on web)
6
6
  function getLocalStorage() {
7
- if (typeof window !== 'undefined' && window.localStorage) {
7
+ if (typeof window !== "undefined" && window.localStorage) {
8
8
  return window.localStorage;
9
9
  }
10
10
  return null;
@@ -49,7 +49,7 @@ let hasWarnedAboutStorage = false;
49
49
  /**
50
50
  * Initialize storage with AsyncStorage for React Native.
51
51
  * Call this once at app startup before using ChatWidget.
52
- *
52
+ *
53
53
  * @example
54
54
  * import AsyncStorage from '@react-native-async-storage/async-storage';
55
55
  * import { initStorage } from 'vdb-ai-chat';
@@ -64,7 +64,7 @@ export function initStorage(asyncStorage) {
64
64
  * Check if storage is properly initialized for the current platform
65
65
  */
66
66
  export function isStorageInitialized() {
67
- if (Platform.OS === 'web') {
67
+ if (Platform.OS === "web") {
68
68
  return getLocalStorage() !== null;
69
69
  }
70
70
  return nativeStorage !== null;
@@ -79,13 +79,13 @@ const noopStorage = {
79
79
 
80
80
  // Get the appropriate storage based on platform
81
81
  function getStorage() {
82
- if (Platform.OS === 'web') {
82
+ if (Platform.OS === "web") {
83
83
  return webStorage;
84
84
  }
85
85
  if (!nativeStorage) {
86
86
  // Only warn once to avoid console spam
87
87
  if (!hasWarnedAboutStorage) {
88
- console.warn('[vdb-ai-chat] AsyncStorage not initialized. Call initStorage(AsyncStorage) at app startup.');
88
+ console.warn("[vdb-ai-chat] AsyncStorage not initialized. Call initStorage(AsyncStorage) at app startup.");
89
89
  hasWarnedAboutStorage = true;
90
90
  }
91
91
  return noopStorage;
@@ -1 +1 @@
1
- {"version":3,"names":["Platform","getLocalStorage","window","localStorage","webStorage","getItem","key","storage","setItem","value","removeItem","nativeStorage","hasWarnedAboutStorage","initStorage","asyncStorage","isStorageInitialized","OS","noopStorage","getStorage","console","warn","Storage","getJSON","defaultValue","JSON","parse","setJSON","stringify"],"sourceRoot":"../../src","sources":["storage.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["Platform","getLocalStorage","window","localStorage","webStorage","getItem","key","storage","setItem","value","removeItem","nativeStorage","hasWarnedAboutStorage","initStorage","asyncStorage","isStorageInitialized","OS","noopStorage","getStorage","console","warn","Storage","getJSON","defaultValue","JSON","parse","setJSON","stringify"],"sourceRoot":"../../src","sources":["storage.ts"],"mappings":"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","ignoreList":[]}
@@ -2,7 +2,7 @@ import { FeedbackAction } from "./components/utils";
2
2
  import type { ChatMessage } from "./types";
3
3
  export type ChatApiParams = Record<string, any>;
4
4
  export declare function normaliseMessages(raw: any): ChatMessage[];
5
- export declare function fetchInitialMessages(apiUrl: string, _params?: ChatApiParams, priceMode?: any): Promise<any>;
5
+ export declare function fetchInitialMessages(apiUrl: string, _params?: ChatApiParams, priceMode?: string | null): Promise<any>;
6
6
  export declare function sendUserMessage(apiUrl: string, userMessage: string, _params: ChatApiParams, _history: ChatMessage[], priceMode: any): Promise<any>;
7
7
  export declare function clearChatHistory(apiUrl: string, priceMode: any): Promise<void>;
8
8
  export declare function getProducts(params: ChatApiParams): Promise<any>;
@@ -1 +1 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAG3C,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAwBhD,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,GAAG,GAAG,WAAW,EAAE,CAkBzD;AAED,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,aAAa,EACvB,SAAS,CAAC,EAAE,GAAG,GACd,OAAO,CAAC,GAAG,CAAC,CAkCd;AAED,wBAAsB,eAAe,CACnC,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,aAAa,EACtB,QAAQ,EAAE,WAAW,EAAE,EACvB,SAAS,EAAE,GAAG,GACb,OAAO,CAAC,GAAG,CAAC,CAsCd;AAED,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAqBpF;AAED,wBAAsB,WAAW,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,CAuBrE;AAED,eAAO,MAAM,uBAAuB,GAClC,QAAQ,cAAc,EACtB,iBAAiB,MAAM,EACvB,YAAY,MAAM,sBAanB,CAAC"}
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAG3C,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAwBhD,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,GAAG,GAAG,WAAW,EAAE,CAiBzD;AAED,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,aAAa,EACvB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,GACxB,OAAO,CAAC,GAAG,CAAC,CAqCd;AAED,wBAAsB,eAAe,CACnC,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,aAAa,EACtB,QAAQ,EAAE,WAAW,EAAE,EACvB,SAAS,EAAE,GAAG,GACb,OAAO,CAAC,GAAG,CAAC,CAyCd;AAED,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,GAAG,GACb,OAAO,CAAC,IAAI,CAAC,CAwBf;AAED,wBAAsB,WAAW,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,CAuBrE;AAED,eAAO,MAAM,uBAAuB,GAClC,QAAQ,cAAc,EACtB,iBAAiB,MAAM,EACvB,YAAY,MAAM,sBAanB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ChatHeader.d.ts","sourceRoot":"","sources":["../../../src/components/ChatHeader.tsx"],"names":[],"mappings":"AAiCA,QAAA,MAAM,UAAU,GAAI,2BAGjB;IACD,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;CAC1B,4CAwBA,CAAC;AAkDF,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"ChatHeader.d.ts","sourceRoot":"","sources":["../../../src/components/ChatHeader.tsx"],"names":[],"mappings":"AAmCA,QAAA,MAAM,UAAU,GAAI,2BAGjB;IACD,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;CAC1B,4CAiCA,CAAC;AAkDF,eAAe,UAAU,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ChatWidget.d.ts","sourceRoot":"","sources":["../../../src/components/ChatWidget.tsx"],"names":[],"mappings":"AAAA,OAAO,KAQN,MAAM,OAAO,CAAC;AAYf,OAAO,KAAK,EAAe,eAAe,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAgB5E,eAAO,MAAM,UAAU,uFAqmBtB,CAAC"}
1
+ {"version":3,"file":"ChatWidget.d.ts","sourceRoot":"","sources":["../../../src/components/ChatWidget.tsx"],"names":[],"mappings":"AAAA,OAAO,KAQN,MAAM,OAAO,CAAC;AAYf,OAAO,KAAK,EAAe,eAAe,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAiB5E,eAAO,MAAM,UAAU,uFA6nBtB,CAAC"}
@@ -7,6 +7,8 @@ interface Props {
7
7
  conversationId: string | null;
8
8
  handleFeedbackAction: (action: FeedbackAction, conversation_id: string, message_id: string) => void;
9
9
  onReloadResults?: (message: ChatMessage) => void;
10
+ reloading?: boolean;
11
+ hasResults?: boolean;
10
12
  }
11
13
  export declare const MessageBubble: React.NamedExoticComponent<Props>;
12
14
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"MessageBubble.d.ts","sourceRoot":"","sources":["../../../src/components/MessageBubble.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAe,MAAM,OAAO,CAAC;AAEpC,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACvD,OAAO,EAAE,cAAc,EAAgB,MAAM,SAAS,CAAC;AAavD,UAAU,KAAK;IACb,OAAO,EAAE,WAAW,CAAC;IACrB,KAAK,EAAE,SAAS,CAAC;IACjB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,oBAAoB,EAAE,CACpB,MAAM,EAAE,cAAc,EACtB,eAAe,EAAE,MAAM,EACvB,UAAU,EAAE,MAAM,KACf,IAAI,CAAC;IACV,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,CAAC;CAClD;AAkHD,eAAO,MAAM,aAAa,mCAA+B,CAAC"}
1
+ {"version":3,"file":"MessageBubble.d.ts","sourceRoot":"","sources":["../../../src/components/MessageBubble.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAe,MAAM,OAAO,CAAC;AAUpC,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACvD,OAAO,EAAE,cAAc,EAAgB,MAAM,SAAS,CAAC;AAavD,UAAU,KAAK;IACb,OAAO,EAAE,WAAW,CAAC;IACrB,KAAK,EAAE,SAAS,CAAC;IACjB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,oBAAoB,EAAE,CACpB,MAAM,EAAE,cAAc,EACtB,eAAe,EAAE,MAAM,EACvB,UAAU,EAAE,MAAM,KACf,IAAI,CAAC;IACV,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,CAAC;IACjD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAkJD,eAAO,MAAM,aAAa,mCAA+B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ProductsList.d.ts","sourceRoot":"","sources":["../../../src/components/ProductsList.tsx"],"names":[],"mappings":"AASA,OAAO,KAAe,MAAM,OAAO,CAAC;AAapC,UAAU,iBAAiB;IACzB,IAAI,EAAE,GAAG,CAAC;IACV,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;CACnC;AAoID,QAAA,MAAM,YAAY,+CAA8B,CAAC;AACjD,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"ProductsList.d.ts","sourceRoot":"","sources":["../../../src/components/ProductsList.tsx"],"names":[],"mappings":"AASA,OAAO,KAAe,MAAM,OAAO,CAAC;AAapC,UAAU,iBAAiB;IACzB,IAAI,EAAE,GAAG,CAAC;IACV,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;CACnC;AAsID,QAAA,MAAM,YAAY,+CAA8B,CAAC;AACjD,eAAe,YAAY,CAAC"}
@@ -5,4 +5,27 @@ export declare enum FeedbackAction {
5
5
  UNSET = "0"
6
6
  }
7
7
  export declare const fetchConversationId: (_priceMode: string) => Promise<string | null>;
8
+ export interface UserDetails {
9
+ id?: string | number;
10
+ email?: string;
11
+ first_name?: string;
12
+ last_name?: string;
13
+ company?: string;
14
+ company_id?: string | number;
15
+ country?: string;
16
+ price_mode?: string | number;
17
+ plan_details?: any;
18
+ }
19
+ export declare const getUserDetails: () => Promise<UserDetails | null>;
20
+ export declare enum DeviceType {
21
+ WEB = "web",
22
+ IOS = "ios",
23
+ ANDROID = "android"
24
+ }
25
+ export declare const getDeviceType: (platform?: string) => 0 | 1 | 2;
26
+ export declare enum AnalyticsEventNames {
27
+ WIDGET_OPENED = "ai_chat_widget_opened",
28
+ WIDGET_CLOSED = "ai_chat_widget_closed",
29
+ CHAT_CLEARED = "ai_chat_cleared"
30
+ }
8
31
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/components/utils.ts"],"names":[],"mappings":"AAEA,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAatD;AAED,oBAAY,cAAc;IACxB,IAAI,MAAM;IACV,OAAO,MAAM;IACb,KAAK,MAAM;CACZ;AAED,eAAO,MAAM,mBAAmB,GAC9B,YAAY,MAAM,KACjB,OAAO,CAAC,MAAM,GAAG,IAAI,CAiBvB,CAAC"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/components/utils.ts"],"names":[],"mappings":"AAEA,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAatD;AAED,oBAAY,cAAc;IACxB,IAAI,MAAM;IACV,OAAO,MAAM;IACb,KAAK,MAAM;CACZ;AAED,eAAO,MAAM,mBAAmB,GAC9B,YAAY,MAAM,KACjB,OAAO,CAAC,MAAM,GAAG,IAAI,CAgBvB,CAAC;AAEF,MAAM,WAAW,WAAW;IAC1B,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B,YAAY,CAAC,EAAE,GAAG,CAAC;CACpB;AAED,eAAO,MAAM,cAAc,QAAa,OAAO,CAAC,WAAW,GAAG,IAAI,CAqBjE,CAAC;AAEF,oBAAY,UAAU;IACpB,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,OAAO,YAAY;CACpB;AAED,eAAO,MAAM,aAAa,GAAI,WAAW,MAAM,cAW9C,CAAC;AAEF,oBAAY,mBAAmB;IAC7B,aAAa,0BAA0B;IACvC,aAAa,0BAA0B;IACvC,YAAY,oBAAoB;CACjC"}
@@ -0,0 +1,9 @@
1
+ import React from "react";
2
+ import type { Analytics } from "@segment/analytics-next";
3
+ export declare const AnalyticsClientContext: React.Context<Analytics | undefined>;
4
+ export declare const useAnalyticsClient: () => Analytics | undefined;
5
+ export declare const AnalyticsClientProvider: ({ client, children, }: {
6
+ client: Analytics;
7
+ children: React.ReactNode;
8
+ }) => import("react/jsx-runtime").JSX.Element;
9
+ //# sourceMappingURL=AnalyticsClientContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AnalyticsClientContext.d.ts","sourceRoot":"","sources":["../../../src/contexts/AnalyticsClientContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoC,MAAM,OAAO,CAAC;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEzD,eAAO,MAAM,sBAAsB,sCAElC,CAAC;AAEF,eAAO,MAAM,kBAAkB,6BAA2C,CAAC;AAE3E,eAAO,MAAM,uBAAuB,GAAI,uBAGrC;IACD,MAAM,EAAE,SAAS,CAAC;IAClB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,4CAIA,CAAC"}
@@ -0,0 +1,9 @@
1
+ import React from "react";
2
+ import { SegmentClient } from "@segment/analytics-react-native";
3
+ export declare const SegmentClientContext: React.Context<SegmentClient | undefined>;
4
+ export declare const useSegmentClient: () => SegmentClient | undefined;
5
+ export declare const SegmentClientProvider: ({ client, children, }: {
6
+ client: SegmentClient;
7
+ children: React.ReactNode;
8
+ }) => import("react/jsx-runtime").JSX.Element;
9
+ //# sourceMappingURL=SegmentClientContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SegmentClientContext.d.ts","sourceRoot":"","sources":["../../../src/contexts/SegmentClientContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoC,MAAM,OAAO,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAEhE,eAAO,MAAM,oBAAoB,0CAEhC,CAAC;AAEF,eAAO,MAAM,gBAAgB,iCAAyC,CAAC;AAEvE,eAAO,MAAM,qBAAqB,GAAI,uBAGnC;IACD,MAAM,EAAE,aAAa,CAAC;IACtB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,4CAIA,CAAC"}
@@ -0,0 +1,36 @@
1
+ type JsonMap = Record<string, unknown>;
2
+ export declare const formatOSName: (rawOsName: string) => string;
3
+ export declare const getUserAnalyticsPayload: () => Promise<{
4
+ system_type_enum: string;
5
+ platform_action_enum: string;
6
+ user_company_id: string | undefined;
7
+ user_company_name: string | undefined;
8
+ user_email: string | undefined;
9
+ user_id: string | undefined;
10
+ user_name: string | undefined;
11
+ user_price_mode: string | undefined;
12
+ price_mode: string | undefined;
13
+ has_plan_details: boolean;
14
+ userAgent: string;
15
+ } | {
16
+ system_type_enum?: undefined;
17
+ platform_action_enum?: undefined;
18
+ user_company_id: string | undefined;
19
+ user_company_name: string | undefined;
20
+ user_email: string | undefined;
21
+ user_id: string | undefined;
22
+ user_name: string | undefined;
23
+ user_price_mode: string | undefined;
24
+ price_mode: string | undefined;
25
+ has_plan_details: boolean;
26
+ userAgent: string;
27
+ }>;
28
+ export declare const isSegmentUserAgent: (userAgent: string) => boolean;
29
+ export declare function isBot(userAgent?: string): boolean;
30
+ export declare const useUserAnalytics: () => {
31
+ trackEvent: (eventName: string, options: any) => Promise<void>;
32
+ _identify: (userId?: string, userTraits?: JsonMap) => Promise<void>;
33
+ _track: (eventName: string, options: any) => Promise<void>;
34
+ };
35
+ export {};
36
+ //# sourceMappingURL=useAnalytics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAnalytics.d.ts","sourceRoot":"","sources":["../../../src/hooks/useAnalytics.tsx"],"names":[],"mappings":"AAAA,KAAK,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAyBvC,eAAO,MAAM,YAAY,GAAI,WAAW,MAAM,WA2B7C,CAAC;AAEF,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;EAuBnC,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAI,WAAW,MAAM,YAQnD,CAAC;AAEF,wBAAgB,KAAK,CAAC,SAAS,SAAK,WAgBnC;AAED,eAAO,MAAM,gBAAgB;4BAqDU,MAAM,WAAW,GAAG;yBANvB,MAAM,eAAe,OAAO;wBA3C7B,MAAM,WAAW,GAAG;CAgEtD,CAAC"}
@@ -1,6 +1,6 @@
1
- export { ChatWidget } from './components/ChatWidget';
2
- export * from './types';
3
- export * from './theme';
4
- export { normaliseMessages } from './api';
5
- export { initStorage, isStorageInitialized, Storage } from './storage';
1
+ export { ChatWidget } from "./components/ChatWidget";
2
+ export * from "./types";
3
+ export * from "./theme";
4
+ export { normaliseMessages } from "./api";
5
+ export { initStorage, isStorageInitialized, Storage } from "./storage";
6
6
  //# sourceMappingURL=index.native.d.ts.map
@@ -1,3 +1,3 @@
1
1
  import type { ChatTheme } from "./types";
2
- export declare function renderChatApp(domElement: HTMLElement, apiUrl: string, theme?: Partial<ChatTheme>, onClose?: () => void, onClearChat?: () => void): void;
2
+ export declare function renderChatApp(domElement: HTMLElement, apiUrl: string, theme?: Partial<ChatTheme>, onClose?: () => void, onClearChat?: () => void, segmentWriteKey?: string): void;
3
3
  //# sourceMappingURL=index.web.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.web.d.ts","sourceRoot":"","sources":["../../src/index.web.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEzC,wBAAgB,aAAa,CAC3B,UAAU,EAAE,WAAW,EACvB,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,EAC1B,OAAO,CAAC,EAAE,MAAM,IAAI,EACpB,WAAW,CAAC,EAAE,MAAM,IAAI,QAazB"}
1
+ {"version":3,"file":"index.web.d.ts","sourceRoot":"","sources":["../../src/index.web.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAIzC,wBAAgB,aAAa,CAC3B,UAAU,EAAE,WAAW,EACvB,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,EAC1B,OAAO,CAAC,EAAE,MAAM,IAAI,EACpB,WAAW,CAAC,EAAE,MAAM,IAAI,EACxB,eAAe,CAAC,EAAE,MAAM,QA2CzB"}
@@ -1 +1 @@
1
- {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../src/storage.ts"],"names":[],"mappings":"AAGA,UAAU,gBAAgB;IACxB,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACjD,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACvD,UAAU,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5C;AA8CD;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,YAAY,EAAE,gBAAgB,GAAG,IAAI,CAGhE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,OAAO,CAK9C;AA8BD,eAAO,MAAM,OAAO;mBACG,MAAM,KAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;mBAI/B,MAAM,SAAS,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC;sBAIlC,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC;cAK9B,CAAC,aAAa,MAAM,iBAAgB,CAAC,GAAG,IAAI,KAAU,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;mBAalE,MAAM,SAAS,GAAG,KAAG,OAAO,CAAC,IAAI,CAAC;CAOxD,CAAC;AAEF,eAAe,OAAO,CAAC"}
1
+ {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../src/storage.ts"],"names":[],"mappings":"AAGA,UAAU,gBAAgB;IACxB,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACjD,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACvD,UAAU,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5C;AA8CD;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,YAAY,EAAE,gBAAgB,GAAG,IAAI,CAGhE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,OAAO,CAK9C;AA8BD,eAAO,MAAM,OAAO;mBACG,MAAM,KAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;mBAI/B,MAAM,SAAS,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC;sBAIlC,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC;cAK9B,CAAC,aACV,MAAM,iBACG,CAAC,GAAG,IAAI,KACrB,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;mBAaC,MAAM,SAAS,GAAG,KAAG,OAAO,CAAC,IAAI,CAAC;CAOxD,CAAC;AAEF,eAAe,OAAO,CAAC"}
@@ -1,6 +1,5 @@
1
1
  export type Role = "user" | "assistant";
2
2
  export interface ChatMessage {
3
- agent_response?: any;
4
3
  id: string;
5
4
  role: Role;
6
5
  text: string;
@@ -8,6 +7,7 @@ export interface ChatMessage {
8
7
  isLoading?: boolean;
9
8
  suggestions?: string[];
10
9
  reaction?: "0" | "1" | "2";
10
+ search_payload?: Record<string, any>;
11
11
  }
12
12
  export interface ChatTheme {
13
13
  primaryColor: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,IAAI,GAAG,MAAM,GAAG,WAAW,CAAC;AAExC,MAAM,WAAW,WAAW;IAC1B,cAAc,CAAC,EAAE,GAAG,CAAC;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,IAAI,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IAEvB,QAAQ,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;CAC5B;AAED,MAAM,WAAW,SAAS;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,0BAA0B,CAAC,EAAE,MAAM,CAAC;CACrC;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAC3B,eAAe,CAAC,EAAE,WAAW,EAAE,CAAC;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,iFAAiF;IACjF,cAAc,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,IAAI,CAAC;IAC7D,uFAAuF;IACvF,WAAW,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;CACxD;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,kBAAkB;IACjC,cAAc,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,IAAI,CAAC;IAC7D,WAAW,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;CACxD"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,IAAI,GAAG,MAAM,GAAG,WAAW,CAAC;AAExC,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,IAAI,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IAEvB,QAAQ,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,SAAS;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,0BAA0B,CAAC,EAAE,MAAM,CAAC;CACrC;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAC3B,eAAe,CAAC,EAAE,WAAW,EAAE,CAAC;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,iFAAiF;IACjF,cAAc,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,IAAI,CAAC;IAC7D,uFAAuF;IACvF,WAAW,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;CACxD;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,kBAAkB;IACjC,cAAc,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,IAAI,CAAC;IAC7D,WAAW,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;CACxD"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vdb-ai-chat",
3
- "version": "1.0.0",
3
+ "version": "1.0.1",
4
4
  "description": "Cross-platform AI chat widget for React Native and Web",
5
5
  "main": "lib/commonjs/index.js",
6
6
  "module": "lib/module/index.js",
@@ -42,7 +42,9 @@
42
42
  "peerDependencies": {
43
43
  "react": ">=17.0.0",
44
44
  "react-native": ">=0.64.0",
45
- "expo-image": ">=1.0.0"
45
+ "expo-image": ">=1.0.0",
46
+ "@segment/analytics-next": ">=1.0.0",
47
+ "@segment/analytics-react-native": ">=2.0.0"
46
48
  },
47
49
  "peerDependenciesMeta": {
48
50
  "react-native": {
@@ -50,6 +52,12 @@
50
52
  },
51
53
  "expo-image": {
52
54
  "optional": true
55
+ },
56
+ "@segment/analytics-next": {
57
+ "optional": true
58
+ },
59
+ "@segment/analytics-react-native": {
60
+ "optional": true
53
61
  }
54
62
  },
55
63
  "dependencies": {
@@ -60,8 +68,10 @@
60
68
  "@babel/preset-env": "^7.26.0",
61
69
  "@babel/preset-react": "^7.26.0",
62
70
  "@babel/preset-typescript": "^7.26.0",
71
+ "@segment/analytics-next": "^1.81.1",
72
+ "@segment/analytics-react-native": "^2.21.4",
63
73
  "@types/react": "^18.3.27",
64
- "@types/react-dom": "^18.3.1",
74
+ "@types/react-dom": "^18.2.15",
65
75
  "axios": "^1.13.2",
66
76
  "babel-loader": "^9.2.1",
67
77
  "react": "^18.3.1",
package/src/api.ts CHANGED
@@ -11,8 +11,8 @@ async function buildHeaders() {
11
11
  let installationId = "";
12
12
  try {
13
13
  const parsed = JSON.parse(iid);
14
- installationId = parsed?.installationIdentifier
15
- ? JSON.parse(parsed.installationIdentifier)
14
+ installationId = parsed?.installationIdentifier
15
+ ? JSON.parse(parsed.installationIdentifier)
16
16
  : "";
17
17
  } catch {
18
18
  installationId = "";
@@ -41,8 +41,7 @@ export function normaliseMessages(raw: any): ChatMessage[] {
41
41
  : typeof m.createdAt === "number"
42
42
  ? m.createdAt
43
43
  : Date.now(),
44
- ...( m.role === "assistant" ? { agent_response: raw?.agent_response ? raw?.agent_response : undefined } : {}),
45
- // agent_response: m.agent_response,
44
+ search_payload: m.search_payload,
46
45
  suggestions: Array.isArray(m.suggestions) ? m.suggestions : undefined,
47
46
  }));
48
47
  }
@@ -50,10 +49,13 @@ export function normaliseMessages(raw: any): ChatMessage[] {
50
49
  export async function fetchInitialMessages(
51
50
  apiUrl: string,
52
51
  _params?: ChatApiParams,
53
- priceMode?: any
52
+ priceMode?: string | null
54
53
  ): Promise<any> {
55
- const conversations = await Storage.getJSON<Record<string, any>>("vdbchat_conversations", {});
56
- const storedId = conversations?.[priceMode]?.conversation_id ?? null;
54
+ const conversations = await Storage.getJSON<Record<string, any>>(
55
+ "vdbchat_conversations",
56
+ {}
57
+ );
58
+ const storedId = conversations?.[priceMode ?? ""]?.conversation_id ?? null;
57
59
  if (!priceMode) return;
58
60
 
59
61
  const body: any = {};
@@ -94,9 +96,12 @@ export async function sendUserMessage(
94
96
  _history: ChatMessage[],
95
97
  priceMode: any
96
98
  ): Promise<any> {
97
- const conversations = await Storage.getJSON<Record<string, any>>("vdbchat_conversations", {});
99
+ const conversations = await Storage.getJSON<Record<string, any>>(
100
+ "vdbchat_conversations",
101
+ {}
102
+ );
98
103
  const storedId = conversations?.[priceMode]?.conversation_id ?? null;
99
-
104
+
100
105
  if (!priceMode) {
101
106
  return null;
102
107
  }
@@ -133,8 +138,14 @@ export async function sendUserMessage(
133
138
  return data;
134
139
  }
135
140
 
136
- export async function clearChatHistory(apiUrl: string, priceMode: any): Promise<void> {
137
- const conversations = await Storage.getJSON<Record<string, any>>("vdbchat_conversations", {});
141
+ export async function clearChatHistory(
142
+ apiUrl: string,
143
+ priceMode: any
144
+ ): Promise<void> {
145
+ const conversations = await Storage.getJSON<Record<string, any>>(
146
+ "vdbchat_conversations",
147
+ {}
148
+ );
138
149
  const storedId = conversations?.[priceMode]?.conversation_id ?? null;
139
150
  if (!storedId || !priceMode) return;
140
151