@bikdotai/bik-component-library 0.0.718-beta.17 → 0.0.718-beta.2

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 (145) hide show
  1. package/dist/cjs/components/SearchFilter/components/DatePickerButton.js +1 -1
  2. package/dist/cjs/components/SearchFilter/components/DateRangeOnlyButton.js +1 -1
  3. package/dist/cjs/components/analytics-chips-and-dropdowns/AnalyticsDropdown.d.ts +3 -1
  4. package/dist/cjs/components/analytics-chips-and-dropdowns/AnalyticsDropdown.js +1 -1
  5. package/dist/cjs/components/analytics-chips-and-dropdowns/AnalyticsTrend.d.ts +0 -1
  6. package/dist/cjs/components/analytics-chips-and-dropdowns/AnalyticsTrend.js +1 -1
  7. package/dist/cjs/components/analytics-chips-and-dropdowns/CommonStyles.js +1 -1
  8. package/dist/cjs/components/analytics-chips-and-dropdowns/chart/StackedBarChart/StackedBarChart.js +1 -1
  9. package/dist/cjs/components/analytics-chips-and-dropdowns/chart/StackedBarChart/StackedBarChart.model.d.ts +1 -4
  10. package/dist/cjs/components/analytics-chips-and-dropdowns/chart/VerticalBarAndLinearGraph/VerticalBarAndLinearGraph.js +1 -1
  11. package/dist/cjs/components/analytics-chips-and-dropdowns/chart/VerticalBarAndLinearGraph/VerticalBarAndLinearGraphModel.d.ts +0 -10
  12. package/dist/cjs/components/analytics-chips-and-dropdowns/chart/heatmap/HeatMap.d.ts +0 -1
  13. package/dist/cjs/components/analytics-chips-and-dropdowns/chart/heatmap/HeatMap.js +1 -1
  14. package/dist/cjs/components/analytics-chips-and-dropdowns/chart/heatmap/HeatMapStyled.d.ts +0 -26
  15. package/dist/cjs/components/analytics-chips-and-dropdowns/chart/heatmap/HeatMapStyled.js +1 -1
  16. package/dist/cjs/components/analytics-chips-and-dropdowns/chart/heatmap/HeatMapVertical.js +1 -1
  17. package/dist/cjs/components/custom-date-time/DateSelector/DateSelector.js +1 -1
  18. package/dist/cjs/components/datePicker/DatePicker.d.ts +2 -0
  19. package/dist/cjs/components/datePicker/DatePicker.js +1 -1
  20. package/dist/cjs/components/datePicker/DatePicker.styled.d.ts +12 -0
  21. package/dist/cjs/components/datePicker/DatePicker.styled.js +1 -1
  22. package/dist/cjs/components/datePicker/TimePicker.d.ts +9 -0
  23. package/dist/cjs/components/datePicker/TimePicker.js +1 -0
  24. package/dist/cjs/components/datePicker/index.d.ts +1 -0
  25. package/dist/cjs/components/dropdown/ChipDropdown.d.ts +0 -1
  26. package/dist/cjs/components/dropdown/ChipDropdown.js +3 -4
  27. package/dist/cjs/components/dropdown/Dropdown.d.ts +0 -1
  28. package/dist/cjs/components/floating-action-button/FloatingActionButton.styles.js +1 -1
  29. package/dist/cjs/components/tabs/Tabs.js +1 -1
  30. package/dist/cjs/components/tabs/Tabs.model.d.ts +0 -2
  31. package/dist/cjs/index.d.ts +0 -1
  32. package/dist/cjs/index.js +1 -1
  33. package/dist/esm/components/SearchFilter/components/DatePickerButton.js +1 -1
  34. package/dist/esm/components/SearchFilter/components/DateRangeOnlyButton.js +1 -1
  35. package/dist/esm/components/analytics-chips-and-dropdowns/AnalyticsDropdown.d.ts +3 -1
  36. package/dist/esm/components/analytics-chips-and-dropdowns/AnalyticsDropdown.js +1 -1
  37. package/dist/esm/components/analytics-chips-and-dropdowns/AnalyticsTrend.d.ts +0 -1
  38. package/dist/esm/components/analytics-chips-and-dropdowns/AnalyticsTrend.js +1 -1
  39. package/dist/esm/components/analytics-chips-and-dropdowns/CommonStyles.js +1 -1
  40. package/dist/esm/components/analytics-chips-and-dropdowns/chart/StackedBarChart/StackedBarChart.js +1 -1
  41. package/dist/esm/components/analytics-chips-and-dropdowns/chart/StackedBarChart/StackedBarChart.model.d.ts +1 -4
  42. package/dist/esm/components/analytics-chips-and-dropdowns/chart/VerticalBarAndLinearGraph/VerticalBarAndLinearGraph.js +1 -1
  43. package/dist/esm/components/analytics-chips-and-dropdowns/chart/VerticalBarAndLinearGraph/VerticalBarAndLinearGraphModel.d.ts +0 -10
  44. package/dist/esm/components/analytics-chips-and-dropdowns/chart/heatmap/HeatMap.d.ts +0 -1
  45. package/dist/esm/components/analytics-chips-and-dropdowns/chart/heatmap/HeatMap.js +1 -1
  46. package/dist/esm/components/analytics-chips-and-dropdowns/chart/heatmap/HeatMapStyled.d.ts +0 -26
  47. package/dist/esm/components/analytics-chips-and-dropdowns/chart/heatmap/HeatMapStyled.js +1 -1
  48. package/dist/esm/components/analytics-chips-and-dropdowns/chart/heatmap/HeatMapVertical.js +1 -1
  49. package/dist/esm/components/custom-date-time/DateSelector/DateSelector.js +1 -1
  50. package/dist/esm/components/datePicker/DatePicker.d.ts +2 -0
  51. package/dist/esm/components/datePicker/DatePicker.js +1 -1
  52. package/dist/esm/components/datePicker/DatePicker.styled.d.ts +12 -0
  53. package/dist/esm/components/datePicker/DatePicker.styled.js +1 -1
  54. package/dist/esm/components/datePicker/TimePicker.d.ts +9 -0
  55. package/dist/esm/components/datePicker/TimePicker.js +1 -0
  56. package/dist/esm/components/datePicker/index.d.ts +1 -0
  57. package/dist/esm/components/dropdown/ChipDropdown.d.ts +0 -1
  58. package/dist/esm/components/dropdown/ChipDropdown.js +5 -6
  59. package/dist/esm/components/dropdown/Dropdown.d.ts +0 -1
  60. package/dist/esm/components/floating-action-button/FloatingActionButton.styles.js +17 -17
  61. package/dist/esm/components/tabs/Tabs.js +1 -1
  62. package/dist/esm/components/tabs/Tabs.model.d.ts +0 -2
  63. package/dist/esm/index.d.ts +0 -1
  64. package/dist/esm/index.js +1 -1
  65. package/package.json +1 -2
  66. package/dist/cjs/assets/icons/Ai_event_generating.svg.js +0 -1
  67. package/dist/cjs/components/analytics-chips-and-dropdowns/chart/VerticalBarAndLinearGraph/VerticalBarAndLinearGraphModel.js +0 -1
  68. package/dist/cjs/components/bik-chatbot/components/AIChat.d.ts +0 -5
  69. package/dist/cjs/components/bik-chatbot/components/AIChat.js +0 -1
  70. package/dist/cjs/components/bik-chatbot/components/BIKChatbot.d.ts +0 -36
  71. package/dist/cjs/components/bik-chatbot/components/BIKChatbot.js +0 -1
  72. package/dist/cjs/components/bik-chatbot/components/ChatLoadingState.d.ts +0 -7
  73. package/dist/cjs/components/bik-chatbot/components/ChatLoadingState.js +0 -177
  74. package/dist/cjs/components/bik-chatbot/components/ChatWindow.d.ts +0 -12
  75. package/dist/cjs/components/bik-chatbot/components/ChatWindow.js +0 -252
  76. package/dist/cjs/components/bik-chatbot/components/ThinkingIndicator.d.ts +0 -3
  77. package/dist/cjs/components/bik-chatbot/components/ThinkingIndicator.js +0 -188
  78. package/dist/cjs/components/bik-chatbot/contexts/AIContext.d.ts +0 -4
  79. package/dist/cjs/components/bik-chatbot/contexts/AIContext.js +0 -1
  80. package/dist/cjs/components/bik-chatbot/index.d.ts +0 -137
  81. package/dist/cjs/components/bik-chatbot/services/aiService.d.ts +0 -30
  82. package/dist/cjs/components/bik-chatbot/services/aiService.js +0 -1
  83. package/dist/cjs/components/bik-chatbot/services/callToChatbot.d.ts +0 -6
  84. package/dist/cjs/components/bik-chatbot/services/callToChatbot.js +0 -1
  85. package/dist/cjs/components/bik-chatbot/services/db.d.ts +0 -6
  86. package/dist/cjs/components/bik-chatbot/services/db.js +0 -1
  87. package/dist/cjs/components/bik-chatbot/services/useAIChat.d.ts +0 -7
  88. package/dist/cjs/components/bik-chatbot/services/useAIChat.js +0 -1
  89. package/dist/cjs/components/bik-chatbot/types/ai.d.ts +0 -158
  90. package/dist/cjs/components/bik-chatbot/types/ai.js +0 -1
  91. package/dist/cjs/components/bik-chatbot/types/chat.d.ts +0 -34
  92. package/dist/cjs/components/bik-chatbot/types/chat.js +0 -1
  93. package/dist/cjs/components/bik-chatbot/types/components.d.ts +0 -130
  94. package/dist/cjs/components/bik-chatbot/types/index.d.ts +0 -6
  95. package/dist/cjs/components/bik-chatbot/utils/guardrails.d.ts +0 -6
  96. package/dist/cjs/components/bik-chatbot/utils/guardrails.js +0 -1
  97. package/dist/cjs/components/bik-chatbot/utils/markdown.d.ts +0 -1
  98. package/dist/cjs/components/bik-chatbot/utils/markdown.js +0 -1
  99. package/dist/cjs/components/bik-chatbot-examples/AnalyticsAdvisor.d.ts +0 -8
  100. package/dist/cjs/components/bik-chatbot-examples/ContentIdeasDemo.d.ts +0 -12
  101. package/dist/cjs/components/bik-chatbot-examples/SilentModeDemo.d.ts +0 -17
  102. package/dist/cjs/components/bik-chatbot-examples/SimpleChatbotDemo.d.ts +0 -17
  103. package/dist/cjs/components/bik-chatbot-examples/SimpleJsonChatDemo.d.ts +0 -16
  104. package/dist/cjs/components/bik-chatbot-examples/services/MockRequestExecutor.d.ts +0 -17
  105. package/dist/cjs/components/bik-chatbot-examples/types.ts/examples.d.ts +0 -61
  106. package/dist/esm/assets/icons/Ai_event_generating.svg.js +0 -1
  107. package/dist/esm/components/analytics-chips-and-dropdowns/chart/VerticalBarAndLinearGraph/VerticalBarAndLinearGraphModel.js +0 -1
  108. package/dist/esm/components/bik-chatbot/components/AIChat.d.ts +0 -5
  109. package/dist/esm/components/bik-chatbot/components/AIChat.js +0 -1
  110. package/dist/esm/components/bik-chatbot/components/BIKChatbot.d.ts +0 -36
  111. package/dist/esm/components/bik-chatbot/components/BIKChatbot.js +0 -1
  112. package/dist/esm/components/bik-chatbot/components/ChatLoadingState.d.ts +0 -7
  113. package/dist/esm/components/bik-chatbot/components/ChatLoadingState.js +0 -177
  114. package/dist/esm/components/bik-chatbot/components/ChatWindow.d.ts +0 -12
  115. package/dist/esm/components/bik-chatbot/components/ChatWindow.js +0 -252
  116. package/dist/esm/components/bik-chatbot/components/ThinkingIndicator.d.ts +0 -3
  117. package/dist/esm/components/bik-chatbot/components/ThinkingIndicator.js +0 -188
  118. package/dist/esm/components/bik-chatbot/contexts/AIContext.d.ts +0 -4
  119. package/dist/esm/components/bik-chatbot/contexts/AIContext.js +0 -1
  120. package/dist/esm/components/bik-chatbot/index.d.ts +0 -137
  121. package/dist/esm/components/bik-chatbot/services/aiService.d.ts +0 -30
  122. package/dist/esm/components/bik-chatbot/services/aiService.js +0 -1
  123. package/dist/esm/components/bik-chatbot/services/callToChatbot.d.ts +0 -6
  124. package/dist/esm/components/bik-chatbot/services/callToChatbot.js +0 -1
  125. package/dist/esm/components/bik-chatbot/services/db.d.ts +0 -6
  126. package/dist/esm/components/bik-chatbot/services/db.js +0 -1
  127. package/dist/esm/components/bik-chatbot/services/useAIChat.d.ts +0 -7
  128. package/dist/esm/components/bik-chatbot/services/useAIChat.js +0 -1
  129. package/dist/esm/components/bik-chatbot/types/ai.d.ts +0 -158
  130. package/dist/esm/components/bik-chatbot/types/ai.js +0 -1
  131. package/dist/esm/components/bik-chatbot/types/chat.d.ts +0 -34
  132. package/dist/esm/components/bik-chatbot/types/chat.js +0 -1
  133. package/dist/esm/components/bik-chatbot/types/components.d.ts +0 -130
  134. package/dist/esm/components/bik-chatbot/types/index.d.ts +0 -6
  135. package/dist/esm/components/bik-chatbot/utils/guardrails.d.ts +0 -6
  136. package/dist/esm/components/bik-chatbot/utils/guardrails.js +0 -1
  137. package/dist/esm/components/bik-chatbot/utils/markdown.d.ts +0 -1
  138. package/dist/esm/components/bik-chatbot/utils/markdown.js +0 -1
  139. package/dist/esm/components/bik-chatbot-examples/AnalyticsAdvisor.d.ts +0 -8
  140. package/dist/esm/components/bik-chatbot-examples/ContentIdeasDemo.d.ts +0 -12
  141. package/dist/esm/components/bik-chatbot-examples/SilentModeDemo.d.ts +0 -17
  142. package/dist/esm/components/bik-chatbot-examples/SimpleChatbotDemo.d.ts +0 -17
  143. package/dist/esm/components/bik-chatbot-examples/SimpleJsonChatDemo.d.ts +0 -16
  144. package/dist/esm/components/bik-chatbot-examples/services/MockRequestExecutor.d.ts +0 -17
  145. package/dist/esm/components/bik-chatbot-examples/types.ts/examples.d.ts +0 -61
@@ -1,252 +0,0 @@
1
- import{j as e}from"../../../node_modules/react/jsx-runtime.js";import t from"../../../assets/icons/Ai_event_generating.svg.js";import{useState as i,useRef as r,useEffect as n}from"react";import a from"styled-components";import{BodySecondary as o,BodyCaption as s}from"../../TypographyStyle.js";import{renderMarkdownLite as d}from"../utils/markdown.js";import l from"./ThinkingIndicator.js";const c=a.div`
2
- display: flex;
3
- flex-direction: column;
4
- width: 100%;
5
- min-width: 0;
6
- min-height: 0;
7
- height: 100%;
8
- max-height: 100%;
9
- background: white;
10
- border-left: 1px solid #e5e7eb;
11
- position: relative;
12
-
13
- /* State-based styling */
14
- ${e=>{switch(e.chatState){case"conversation-starter":return"\n background: linear-gradient(180deg, #FFF6F9 0%, #FFFFFF 100%);\n ";case"thinking":return"\n background: linear-gradient(180deg, #F8F9FA 0%, #FFFFFF 100%);\n ";default:return"\n background: white;\n "}}}
15
- `,x=a.div`
16
- padding: 16px;
17
- border-bottom: 1px solid #e5e7eb;
18
- display: flex;
19
- align-items: center;
20
- gap: 8px;
21
- background: white;
22
- flex-shrink: 0;
23
-
24
- .header-text {
25
- font-size: 14px;
26
- font-weight: 500;
27
- color: #374151;
28
- }
29
- `,h=a.div`
30
- flex: 1;
31
- display: flex;
32
- flex-direction: column;
33
- overflow: hidden;
34
- min-height: 0;
35
- `,g=a.div`
36
- flex: 1;
37
- overflow-y: auto;
38
- padding: 16px;
39
- display: flex;
40
- flex-direction: column;
41
- gap: 16px;
42
- background: #fafafa;
43
- scroll-behavior: smooth;
44
- min-height: 0;
45
-
46
- /* Custom scrollbar */
47
- &::-webkit-scrollbar {
48
- width: 6px;
49
- }
50
-
51
- &::-webkit-scrollbar-track {
52
- background: #f1f1f1;
53
- border-radius: 3px;
54
- }
55
-
56
- &::-webkit-scrollbar-thumb {
57
- background: #c1c1c1;
58
- border-radius: 3px;
59
- }
60
-
61
- &::-webkit-scrollbar-thumb:hover {
62
- background: #a8a8a8;
63
- }
64
- `,p=a.div`
65
- background: white;
66
- border-radius: 12px;
67
- padding: 16px;
68
- box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
69
- border: 1px solid #e5e7eb;
70
- `,b=a.div`
71
- width: 100%;
72
- height: 180px;
73
- background: #f3f4f6;
74
- border-radius: 8px;
75
- display: flex;
76
- align-items: center;
77
- justify-content: center;
78
- position: relative;
79
- margin-bottom: 12px;
80
- `,f=a.div`
81
- width: 48px;
82
- height: 48px;
83
- background: rgba(0, 0, 0, 0.7);
84
- border-radius: 50%;
85
- display: flex;
86
- align-items: center;
87
- justify-content: center;
88
- cursor: pointer;
89
- transition: all 0.2s ease;
90
-
91
- &:hover {
92
- background: rgba(0, 0, 0, 0.8);
93
- transform: scale(1.05);
94
- }
95
-
96
- svg {
97
- width: 16px;
98
- height: 16px;
99
- fill: white;
100
- margin-left: 2px;
101
- }
102
- `,u=a.div`
103
- font-size: 14px;
104
- color: #374151;
105
- line-height: 1.5;
106
- `,m=a.div`
107
- padding: 12px 16px;
108
- border-radius: 16px;
109
- font-size: 14px;
110
- max-width: 80%;
111
- white-space: pre-line;
112
- word-wrap: break-word;
113
-
114
- ${e=>"user"===e.role?"\n background: linear-gradient(92.69deg, rgba(255, 230, 238, 0.5) 0.37%, rgba(255, 240, 231, 0.5) 100%);\n margin-left: auto;\n border-bottom-right-radius: 4px;\n \n & > div {\n background: linear-gradient(92.69deg, #FF166A 0.37%, #FB5F08 100%);\n -webkit-background-clip: text;\n -webkit-text-fill-color: transparent;\n background-clip: text;\n display: inline-block;\n }\n ":"system"===e.role?"\n background: #f3f4f6;\n color: #6b7280;\n font-size: 12px;\n font-style: italic;\n text-align: center;\n margin: 0 auto;\n max-width: 90%;\n ":"\n background: white;\n color: #111827;\n border: 1px solid #e5e7eb;\n margin-right: auto;\n border-bottom-left-radius: 4px;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\n "}
115
- `,k=a.div`
116
- padding: 16px;
117
- flex-shrink: 0;
118
- `,v=a.div`
119
- display: flex;
120
- flex-direction: column;
121
- gap: 8px;
122
- align-items: flex-end;
123
- `,w=a.button`
124
- border: 1px dotted #febad2;
125
- background: linear-gradient(
126
- 92.69deg,
127
- rgba(255, 230, 238, 0.5) 0.37%,
128
- rgba(255, 240, 231, 0.5) 100%
129
- );
130
- padding: 8px 16px;
131
- border-radius: 8px;
132
- font-size: 13px;
133
- cursor: pointer;
134
- transition: all 0.2s ease;
135
- text-align: left;
136
- max-width: 280px;
137
- align-self: flex-end;
138
-
139
- &:hover {
140
- background: linear-gradient(
141
- 92.69deg,
142
- rgba(255, 230, 238, 0.7) 0.37%,
143
- rgba(255, 240, 231, 0.7) 100%
144
- );
145
- border-color: #f472b6;
146
- }
147
-
148
- &:active {
149
- transform: scale(0.98);
150
- }
151
- `,j=a.div`
152
- padding: 16px;
153
- background: white;
154
- `,y=a.div`
155
- display: flex;
156
- flex-direction: column;
157
- gap: 8px;
158
- `,F=a.button`
159
- background: #fef2f2;
160
- color: #dc2626;
161
- padding: 12px 16px;
162
- border-radius: 8px;
163
- font-size: 13px;
164
- border: 1px solid #fecaca;
165
- cursor: pointer;
166
- transition: all 0.2s ease;
167
- text-align: left;
168
-
169
- &:hover {
170
- background: #fee2e2;
171
- border-color: #fca5a5;
172
- }
173
-
174
- &:active {
175
- transform: scale(0.98);
176
- }
177
- `,T=a.div`
178
- padding: 16px;
179
- flex-shrink: 0;
180
- `,O=a.div`
181
- position: relative;
182
- display: flex;
183
- width: 100%;
184
- `,S=a.textarea`
185
- flex: 1;
186
- border: 1px solid ${e=>e.hasText?"#3b82f6":"#d1d5db"};
187
- border-radius: 12px;
188
- padding: 12px;
189
- padding-right: 48px;
190
- font-size: 14px;
191
- outline: none;
192
- color: #374151;
193
- background: white;
194
- box-shadow: 0px 2px 8px 0px #0000001f;
195
- transition: all 0.2s ease;
196
- resize: none;
197
- min-height: 44px;
198
- max-height: 120px;
199
- font-family: inherit;
200
- width: 100%;
201
-
202
- &:focus {
203
- border-color: #3b82f6;
204
- background: white;
205
- box-shadow: 0px 2px 8px 0px #0000001f, 0 0 0 3px rgba(59, 130, 246, 0.1);
206
- }
207
-
208
- &::placeholder {
209
- color: #9ca3af;
210
- }
211
- `,z=a.button`
212
- position: absolute;
213
- bottom: 10px;
214
- right: 10px;
215
- width: 36px;
216
- height: 36px;
217
- border-radius: 50%;
218
- background: ${e=>e.hasText?"linear-gradient(135deg, #FF166A 0%, #FB5F08 100%)":"#e5e7eb"};
219
- border: none;
220
- display: flex;
221
- align-items: center;
222
- justify-content: center;
223
- cursor: ${e=>e.disabled?"not-allowed":"pointer"};
224
- transition: all 0.2s ease;
225
- box-shadow: 0 2px 8px 0px #fa709a1c;
226
- z-index: 2;
227
-
228
- &:hover:not(:disabled) {
229
- background: ${e=>e.hasText&&!e.disabled?"linear-gradient(135deg, #F857A6 0%, #FF5858 100%)":"#e5e7eb"};
230
- transform: scale(1.05);
231
- }
232
-
233
- &:active:not(:disabled) {
234
- transform: scale(0.95);
235
- }
236
-
237
- svg {
238
- width: 16px;
239
- height: 16px;
240
- fill: white;
241
- font-weight: bold;
242
- }
243
- `,C=a.span`
244
- background: linear-gradient(
245
- ${e=>e.angle||92.69}deg,
246
- ${e=>e.colors||"#ff166a 0.37%, #fb5f08 100%"}
247
- );
248
- -webkit-background-clip: text;
249
- -webkit-text-fill-color: transparent;
250
- background-clip: text;
251
- display: inline-block;
252
- `,$=a=>{let{messages:$,onSend:A,header:B="Create with AI",placeholder:I="Discover the right event & launch campaigns for better conversions...",suggestions:M=["Top festivals for marketing","Top events this week?","Top August festivals near you"],iceBreakers:_,videoStarter:D,disabled:H=!1,isThinking:L=!1,onIceBreakerClick:W,chatState:K,chatWindowHeight:E,inputDisabled:N=!1}=a;const[P,V]=i(""),[q,G]=i(!1),[J,Q]=i(!1),R=r(null),U=r(null),X=q||L,Y=H||N,Z=K||(q||L?"thinking":J&&P.trim().length>0?"typing":0===$.length?"conversation-starter":$.length>0?"conversation":"default"),ee=()=>{!P.trim()||Y||X||(A(P),V(""),G(!0),setTimeout((()=>G(!1)),1500))},te=P.trim().length>0,ie=Y||X||!te;n((()=>{var e;null===(e=R.current)||void 0===e||e.scrollIntoView({behavior:"smooth"})}),[$,q,L]);const re=E||"100%";return e.jsxs(c,Object.assign({chatState:Z,style:{height:re}},{children:[e.jsxs(x,{children:[e.jsx(t,{height:24,width:24}),e.jsx("div",Object.assign({className:"header-text"},{children:B}))]}),e.jsxs(h,{children:[e.jsxs(g,{children:["conversation-starter"===Z&&D&&e.jsxs(p,{children:[e.jsx(b,{children:e.jsx(f,Object.assign({onClick:D.onPlay},{children:e.jsx("svg",Object.assign({viewBox:"0 0 24 24",fill:"currentColor"},{children:e.jsx("path",{d:"M8 5v14l11-7z"})}))}))}),e.jsxs(u,{children:[e.jsx(o,Object.assign({style:{fontWeight:500,marginBottom:"4px"}},{children:D.title})),e.jsx(s,{children:D.description})]})]}),$.map((t=>e.jsx(m,Object.assign({role:t.role},{children:"assistant"===t.role?e.jsx("div",{dangerouslySetInnerHTML:{__html:d(t.content)}}):e.jsx("div",Object.assign({style:{whiteSpace:"pre-wrap"}},{children:t.content}))}),t.id))),(q||L)&&e.jsx(l,{}),e.jsx("div",{ref:R})]}),_&&"conversation-starter"===Z&&e.jsx(k,{children:e.jsx(v,{children:_.map((t=>e.jsx(w,Object.assign({onClick:()=>{H||(null==W||W(t),A(t.text))}},{children:e.jsx(C,{children:t.text})}),t.id)))})}),!_&&M.length>0&&"default"===Z&&e.jsx(j,{children:e.jsx(y,{children:M.map((t=>e.jsx(F,Object.assign({onClick:()=>!H&&A(t)},{children:t}),t)))})}),e.jsx(T,{children:e.jsxs(O,{children:[e.jsx(S,{ref:U,value:P,onChange:e=>{if(Y)return;const t=e.target.value;V(t),Q(t.trim().length>0);const i=U.current;i&&(i.style.height="auto",i.style.height=`${Math.min(i.scrollHeight,117)}px`)},placeholder:I,onKeyDown:e=>{Y||"Enter"!==e.key||e.shiftKey||(e.preventDefault(),!X&&P.trim()&&ee())},disabled:Y,hasText:te,chatState:Z}),e.jsx(z,Object.assign({onClick:ee,disabled:ie,hasText:te,"aria-label":"Send"},{children:e.jsxs("svg",Object.assign({viewBox:"0 0 24 24",width:"20",height:"20",stroke:"white",strokeWidth:"2",fill:"none",strokeLinecap:"round",strokeLinejoin:"round"},{children:[e.jsx("path",{d:"M6 12h12"}),e.jsx("path",{d:"M12 6l6 6-6 6"})]}))}))]})})]})]}))};export{C as CustomGradientText,$ as default};
@@ -1,3 +0,0 @@
1
- import React from 'react';
2
- declare const ThinkingIndicator: React.FC;
3
- export default ThinkingIndicator;
@@ -1,188 +0,0 @@
1
- import{j as e}from"../../../node_modules/react/jsx-runtime.js";import{useState as t,useEffect as a}from"react";import i from"styled-components";const r=i.div`
2
- background: #ffffff;
3
- border: 1px solid ${e=>`${e.accent}33`};
4
- padding: 16px 18px 20px;
5
- border-radius: 16px;
6
- border-bottom-left-radius: 6px;
7
- width: clamp(260px, 70vw, 340px);
8
- min-height: 140px;
9
- margin-right: auto;
10
- font-size: 14px;
11
- color: #1f2937;
12
- box-shadow: 0 10px 30px rgba(15, 23, 42, 0.08);
13
- display: flex;
14
- align-items: flex-start;
15
- gap: 14px;
16
- position: relative;
17
- overflow: hidden;
18
- flex-shrink: 0;
19
-
20
- &::after {
21
- content: '';
22
- position: absolute;
23
- left: 18px;
24
- right: 18px;
25
- bottom: 10px;
26
- height: 4px;
27
- border-radius: 999px;
28
- background: ${e=>e.gradient};
29
- opacity: 0.35;
30
- animation: glowPulse 2.4s ease-in-out infinite;
31
- pointer-events: none;
32
- }
33
-
34
- .icon-wrapper {
35
- position: relative;
36
- width: 44px;
37
- height: 44px;
38
- border-radius: 12px;
39
- background: ${e=>e.gradient};
40
- display: flex;
41
- align-items: center;
42
- justify-content: center;
43
- box-shadow: 0 10px 25px ${e=>`${e.accent}26`};
44
- animation: iconPulse 2.4s ease-in-out infinite;
45
- flex-shrink: 0;
46
- overflow: hidden;
47
- }
48
-
49
- .icon-wrapper::after {
50
- content: '';
51
- position: absolute;
52
- inset: 0;
53
- border-radius: 12px;
54
- background: radial-gradient(
55
- circle at top left,
56
- rgba(255, 255, 255, 0.7),
57
- transparent 65%
58
- );
59
- mix-blend-mode: screen;
60
- }
61
-
62
- .icon-letter {
63
- font-size: 18px;
64
- font-weight: 700;
65
- color: #ffffff;
66
- letter-spacing: 0.02em;
67
- }
68
-
69
- .bubble-content {
70
- display: flex;
71
- flex-direction: column;
72
- gap: 12px;
73
- width: 100%;
74
- }
75
-
76
- .status-text {
77
- font-weight: 500;
78
- color: #1f2937;
79
- line-height: 1.45;
80
- animation: textFade 0.35s ease forwards;
81
- min-height: 20px;
82
- }
83
-
84
- .dots {
85
- display: flex;
86
- gap: 6px;
87
- }
88
-
89
- .dot {
90
- width: 6px;
91
- height: 6px;
92
- border-radius: 50%;
93
- background: ${e=>e.accent};
94
- box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.25);
95
- animation: dotBounce 1.3s ease-in-out infinite;
96
- }
97
-
98
- .shimmer-group {
99
- display: flex;
100
- flex-direction: column;
101
- gap: 6px;
102
- }
103
-
104
- .shimmer-line {
105
- height: 6px;
106
- border-radius: 999px;
107
- background: rgba(148, 163, 184, 0.18);
108
- position: relative;
109
- overflow: hidden;
110
- animation: shimmerAppear 0.4s ease forwards;
111
- }
112
-
113
- .shimmer-highlight {
114
- position: absolute;
115
- inset: 0;
116
- background: linear-gradient(
117
- 90deg,
118
- rgba(255, 255, 255, 0) 0%,
119
- rgba(255, 255, 255, 0.75) 50%,
120
- rgba(255, 255, 255, 0) 100%
121
- );
122
- transform: translateX(-100%);
123
- animation: shimmerMove 1.8s linear infinite;
124
- }
125
-
126
- @keyframes iconPulse {
127
- 0%,
128
- 100% {
129
- transform: scale(0.95) rotate(-3deg);
130
- }
131
- 50% {
132
- transform: scale(1.05) rotate(3deg);
133
- }
134
- }
135
-
136
- @keyframes dotBounce {
137
- 0%,
138
- 100% {
139
- transform: translateY(0) scale(1);
140
- opacity: 0.35;
141
- }
142
- 50% {
143
- transform: translateY(-6px) scale(1.2);
144
- opacity: 1;
145
- }
146
- }
147
-
148
- @keyframes shimmerMove {
149
- 0% {
150
- transform: translateX(-120%);
151
- }
152
- 100% {
153
- transform: translateX(140%);
154
- }
155
- }
156
-
157
- @keyframes shimmerAppear {
158
- from {
159
- opacity: 0;
160
- transform: translateY(2px);
161
- }
162
- to {
163
- opacity: 1;
164
- transform: translateY(0);
165
- }
166
- }
167
-
168
- @keyframes glowPulse {
169
- 0%,
170
- 100% {
171
- opacity: 0.2;
172
- }
173
- 50% {
174
- opacity: 0.55;
175
- }
176
- }
177
-
178
- @keyframes textFade {
179
- from {
180
- opacity: 0;
181
- transform: translateY(4px);
182
- }
183
- to {
184
- opacity: 1;
185
- transform: translateY(0);
186
- }
187
- }
188
- `,n=[{label:"A",text:"Analyzing your question...",gradient:"linear-gradient(135deg, #a855f7 0%, #7c3aed 100%)",accent:"#7c3aed"},{label:"C",text:"Crafting the perfect response...",gradient:"linear-gradient(135deg, #f97316 0%, #fb5f08 100%)",accent:"#fb5f08"},{label:"G",text:"Gathering insights...",gradient:"linear-gradient(135deg, #3b82f6 0%, #2563eb 100%)",accent:"#2563eb"}],s=()=>{const[i,s]=t(0);a((()=>{const e=window.setInterval((()=>{s((e=>(e+1)%n.length))}),1800);return()=>window.clearInterval(e)}),[]);const o=n[i];return e.jsxs(r,Object.assign({gradient:o.gradient,accent:o.accent,role:"status","aria-live":"polite"},{children:[e.jsx("div",Object.assign({className:"icon-wrapper"},{children:e.jsx("span",Object.assign({className:"icon-letter"},{children:o.label}))})),e.jsxs("div",Object.assign({className:"bubble-content"},{children:[e.jsx("div",Object.assign({className:"status-text"},{children:o.text})),e.jsx("div",Object.assign({className:"dots"},{children:[0,1,2,3,4].map((t=>e.jsx("span",{className:"dot",style:{animationDelay:.15*t+"s"}},t)))})),e.jsx("div",Object.assign({className:"shimmer-group"},{children:[60,80,45].map(((t,a)=>e.jsx("div",Object.assign({className:"shimmer-line",style:{width:`${t}%`,animationDelay:.25+.12*a+"s"}},{children:e.jsx("span",{className:"shimmer-highlight"})}),t)))}))]}))]}))};export{s as default};
@@ -1,4 +0,0 @@
1
- import React from 'react';
2
- import { AIContextState, AIProviderProps } from '../types';
3
- export declare const AIProvider: React.FC<AIProviderProps>;
4
- export declare const useAIContext: () => AIContextState;
@@ -1 +0,0 @@
1
- import{__awaiter as e}from"../../../_virtual/_tslib.js";import{j as o}from"../../../node_modules/react/jsx-runtime.js";import{useState as s,useRef as t,useEffect as n,useCallback as r,useContext as i,createContext as a}from"react";import{useAIChat as l}from"../services/useAIChat.js";import{DEFAULT_MODEL as d,ALLOWED_MODELS as c}from"../types/ai.js";import{createExecutorApiAdapter as u}from"../services/callToChatbot.js";const m=a(null),p=i=>{let{children:a,systemPrompt:p,systemId:f,functions:v,tools:g,functionHandler:y,onMessageReceived:I,displayInUI:h,maxToolCalls:x,maxTokens:j,requestExecutor:A,baseUrl:C,endpointPath:P,responseFormat:b,conversationId:w="default-session",customModel:q,onSystemReady:E}=i;const[R,M]=s(null),[T,U]=s(!0),[F,k]=s(null),L=t(null);n((()=>p?A&&C?void k(null):(k("Chatbot authentication not configured: RequestExecutor and baseUrl are required"),void U(!1)):(k("systemPrompt is required for generic mode"),void U(!1))),[p,A,C]);const $=r((()=>e(void 0,void 0,void 0,(function*(){try{U(!0),k(null);const e=q||d;if(!c.includes(e))throw new Error(`Unsupported model: ${q||"default"}. Allowed models are: ${c.join(", ")}`);M({id:f||"generic",name:f?`${f} `:"Generic AI Assistant",model:e,systemPrompt:p,functions:v,tools:g})}catch(e){const o=(null==e?void 0:e.message)||"Failed to create AI system";k(o)}finally{U(!1)}}))),[q,p,f,v]);n((()=>{p&&$()}),[$]),n((()=>{R&&E&&R.id!==L.current&&(L.current=R.id,E(R)),R||(L.current=null)}),[R]);const{messages:_,conversation:H,sendMessage:z,isApiCallInProgress:G}=l({system:R||{id:"loading",name:"Loading...",model:d,systemPrompt:"Loading...",functions:[]},conversationId:w,skipInitialization:!R,customFunctions:v,functionHandler:y,responseFormat:b,onMessageReceived:I,displayInUI:h,maxToolCalls:x,maxTokens:j,apiAdapter:A&&C?u(A,C,P||void 0):()=>{throw new Error("Chatbot authentication not configured: RequestExecutor is required")}}),O={isReady:!!R&&!T,isLoading:T,isApiCallInProgress:G,system:R,messages:_,conversation:H,sendMessage:z,error:F};return o.jsx(m.Provider,Object.assign({value:O},{children:a}))},f=()=>{const e=i(m);if(!e)throw new Error("useAIContext must be used within an AIProvider");return e};export{p as AIProvider,f as useAIContext};
@@ -1,137 +0,0 @@
1
- export { BIKChatbot, default as default } from './components/BIKChatbot';
2
- export { AIChat } from './components/AIChat';
3
- export { AIProvider, useAIContext } from './contexts/AIContext';
4
- export { useAIChat } from './services/useAIChat';
5
- export type { ChatMessage, ChatState, IceBreaker, VideoStarter, SessionRecord, FunctionDefinition, ToolCall, GenericAIResponse, CallbackPayload, SystemConfig, PromptConfig, ToolPrompt, ApiRequestExecutor, GenericChatbotProps, BIKChatbotProps, AIChatProps, ChatWindowProps, AIProviderProps, AIContextState, UseAIChatProps, AIServiceConstructorProps, ErrorWithMessage, } from './types';
6
- export { createSessionRecord, DEFAULT_RESPONSE_FORMAT, DEFAULT_MAX_TOOL_CALLS, DEFAULT_CONVERSATION_ID, CHAT_MESSAGE_ROLES, RESPONSE_FORMATS, } from './types';
7
- /**
8
- * BIKChatbot - Generic AI Chatbot Component
9
- *
10
- * This component provides a flexible, generic chatbot interface that can be configured
11
- * for any use case through custom prompts, functions, and response handling.
12
- *
13
- * ## Generic Mode (Custom Functions & Built-in Tools)
14
- *
15
- * ### Simple Text Chatbot (responseFormat: 'text')
16
- *
17
- * ```typescript
18
- * <BIKChatbot
19
- * systemPrompt="You are a helpful assistant"
20
- * responseFormat="text"
21
- * requestExecutor={myRequestExecutor}
22
- * baseUrl={myBaseUrl}
23
- * onMessageReceived={(text) => handleText(text)}
24
- * />
25
- * ```
26
- *
27
- * ### Analytics Advisor with Functions (and built-in tools)
28
- *
29
- * ```typescript
30
- * <BIKChatbot
31
- * systemPrompt="You analyze delivery metrics and suggest improvements. Call getAnalytics() to fetch data, then summarize for the user."
32
- * responseFormat="json"
33
- * tools={["web_search_preview"]}
34
- * requestExecutor={myRequestExecutor}
35
- * baseUrl={myBaseUrl}
36
- * functions={[
37
- * {
38
- * name: "getAnalytics",
39
- * description: "Fetch delivery rate and engagement metrics",
40
- * parameters: { type: "object", properties: {}, required: [] }
41
- * }
42
- * ]}
43
- * functionHandler={async (name, args) => {
44
- * if (name === "getAnalytics") {
45
- * return { deliveryRate: 0.75, engagementRate: 0.12 };
46
- * }
47
- * }}
48
- * onMessageReceived={(payload) => {
49
- * // In json mode, payload is parsed JSON when AI returns JSON text
50
- * // Or TOOL_CALL/TOOL_RESULT when tools are used
51
- * }}
52
- * />
53
- * ```
54
- *
55
- * ### Content Idea Generator (Multi-step Tool Calls)
56
- *
57
- * ```typescript
58
- * <BIKChatbot
59
- * systemPrompt="Call getTrends() to fetch social media trends. Generate 5 content ideas. Call updateIdeas() to save them. Then summarize for the user."
60
- * responseFormat="json"
61
- * functions={[
62
- * { name: "getTrends", description: "Get latest social media trends", parameters: { type: "object", properties: {}, required: [] } },
63
- * { name: "updateIdeas", description: "Save content ideas", parameters: { type: "object", properties: { ideas: { type: "array", items: { type: "string" } } }, required: ["ideas"] } }
64
- * ]}
65
- * functionHandler={async (name, args) => {
66
- * if (name === "getTrends") return "AI, short-form video, nostalgia marketing";
67
- * if (name === "updateIdeas") { saveToDatabase(args.ideas); return { success: true }; }
68
- * }}
69
- * onMessageReceived={(payload) => {
70
- * // Handle TOOL_CALL/TOOL_RESULT events or parsed JSON, depending on flow
71
- * }}
72
- * />
73
- * ```
74
- *
75
- * ### Silent Background Generation
76
- *
77
- * ```typescript
78
- * <BIKChatbot
79
- * systemPrompt="Generate email templates for the campaign"
80
- * responseFormat="json"
81
- * displayInUI={false} // Silent mode - no chat bubbles
82
- * onMessageReceived={(payload) => {
83
- * // Receives data (parsed JSON or tool events) without UI display
84
- * }}
85
- * />
86
- * ```
87
- *
88
- * ### Built-in Tools & Campaign Flow (Optional)
89
- *
90
- * ```typescript
91
- * <BIKChatbot
92
- * systemPrompt={campaignSystemPrompt}
93
- * tools={["web_search_preview"]}
94
- * requestExecutor={myRequestExecutor}
95
- * baseUrl={myBaseUrl}
96
- * functions={[submitCampaignsFunction]}
97
- * functionHandler={async (name, args) => name === 'submitCampaigns' ? 'submitted' : 'ok'}
98
- * onMessageReceived={(event) => {
99
- * if (event && typeof event === 'object' && 'type' in event && (event as any).type === 'TOOL_CALL') {
100
- * const d = (event as any).data;
101
- * if (d?.name === 'submitCampaigns' && Array.isArray(d?.args?.campaigns)) {
102
- * setCampaigns(d.args.campaigns);
103
- * }
104
- * }
105
- * }}
106
- * />
107
- * ```
108
- *
109
- * ## Universal Pattern for ANY Use Case
110
- *
111
- * 1. Define your custom functions (tools AI can call) and built-in tools (e.g., web_search_preview)
112
- * 2. Set `responseFormat`:
113
- * - 'text' for normal chat
114
- * - 'json' to parse assistant JSON and show parsed.response
115
- * 3. Implement `functionHandler` for your tools
116
- * 4. Handle final output in `onMessageReceived`:
117
- * - text string (when responseFormat='text')
118
- * - parsed JSON object (when responseFormat='json')
119
- * - TOOL_CALL / TOOL_RESULT events (when tools are used)
120
- *
121
- * **The Universal Flow:**
122
- * ```
123
- * User input → AI thinking
124
- * ↓
125
- * AI calls custom function (getTrends, getAnalytics, etc.)
126
- * ↓
127
- * Your functionHandler executes it
128
- * ↓
129
- * Result returned to AI
130
- * ↓
131
- * AI calls another function (optional, repeat) or returns final reply
132
- * ↓
133
- * Component displays response in chat bubble (or stays silent if displayInUI=false)
134
- * ↓
135
- * onMessageReceived receives text, parsed JSON, or tool events
136
- * ```
137
- */
@@ -1,30 +0,0 @@
1
- import { AIServiceConstructorProps, ChatMessage, FunctionDefinition, SystemConfig } from '../types';
2
- import { APIAdapter } from '../types/ai';
3
- import type { ResponseFormat } from '../types/ai';
4
- export declare class AIService {
5
- system: SystemConfig;
6
- dispatchMessage: (m: ChatMessage) => void;
7
- customFunctions?: FunctionDefinition[];
8
- functionHandler?: (name: string, args: unknown) => Promise<unknown>;
9
- onMessageReceived?: (message: string | object) => void;
10
- displayInUI?: boolean;
11
- maxToolCalls?: number;
12
- maxTokens?: number;
13
- apiAdapter: APIAdapter;
14
- responseFormat?: ResponseFormat;
15
- constructor(opts: AIServiceConstructorProps);
16
- private sanitizeToolOutput;
17
- private tryParseAssistantJson;
18
- private dispatchParsedResponses;
19
- private makeSystemMessage;
20
- generate(messages: {
21
- role: string;
22
- content: string;
23
- }[], conversationId: string, intent?: string, lastResponseId?: string): Promise<{
24
- responseId?: string;
25
- }>;
26
- /**
27
- * Recursive tool call engine for all AI interactions
28
- */
29
- private generateWithRecursiveToolCalls;
30
- }
@@ -1 +0,0 @@
1
- import{__rest as e,__awaiter as t}from"../../../_virtual/_tslib.js";import{injectSafetyPrompt as s,sanitizeUserInput as i}from"../utils/guardrails.js";import{callToChatbot as a}from"./callToChatbot.js";class n{constructor(e){if(Object.defineProperty(this,"system",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"dispatchMessage",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"customFunctions",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"functionHandler",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"onMessageReceived",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"displayInUI",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"maxToolCalls",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"maxTokens",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"apiAdapter",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"responseFormat",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.system=e.system,this.dispatchMessage=e.dispatchMessage,this.customFunctions=e.customFunctions,this.functionHandler=e.functionHandler,this.onMessageReceived=e.onMessageReceived,this.displayInUI=!1!==e.displayInUI,this.maxToolCalls=e.maxToolCalls||10,this.maxTokens=e.maxTokens,this.apiAdapter=e.apiAdapter,this.responseFormat=e.responseFormat,!this.apiAdapter)throw new Error("Chatbot authentication not configured: RequestExecutor is required")}sanitizeToolOutput(t,s){try{if(null!==s&&"object"==typeof s){const t=s,{success:i}=t,a=e(t,["success"]);return JSON.stringify(a)}return"string"==typeof s?s:String(s)}catch(e){return"string"==typeof s?s:String(s)}}tryParseAssistantJson(e){if(!e)return null;let t=e.trim();t=t.replace(/^```json\s*/i,"").replace(/^```\s*/i,"").replace(/\s*```$/g,"").trim();try{return JSON.parse(t)}catch(s){try{const e=`[${t.replace(/}\s*{/g,"},{")}]`;return JSON.parse(e)}catch(t){return e}}}dispatchParsedResponses(e){if(!this.displayInUI)return;const t=Date.now();e.forEach(((e,s)=>{let i="",a="assistant";if(e&&"object"==typeof e){const t=e;"string"==typeof t.response?i=t.response:"string"==typeof t.content&&(i=t.content),"system"===t.role&&(a="system")}else"string"==typeof e&&(i=e);i&&this.dispatchMessage({id:`m-${t}-${s}`,role:a,content:i,timestamp:t+s})}))}makeSystemMessage(){return{role:"system",content:s(this.system.systemPrompt)}}generate(e,s){let a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"default",n=arguments.length>3?arguments[3]:void 0;return t(this,void 0,void 0,(function*(){const t=e.map((e=>({role:e.role,text:i(e.content)}))),o=[{role:"system",text:this.makeSystemMessage().content},...t];return this.generateWithRecursiveToolCalls(o,s,a,n)}))}generateWithRecursiveToolCalls(e,s,i,n){var o,r,l,c,d,h,p,u,m,y;return t(this,void 0,void 0,(function*(){const t=e.map((e=>({role:e.role,text:e.text})));let f,g=n,v=0;for(;v<this.maxToolCalls;){let e;v++;try{if(f)e=f,f=void 0;else{let n;if(1===v&&g){const e=[...t].reverse().find((e=>"user"===e.role));e&&(n=[{role:"user",content:e.text}])}e=yield a(t,i,s,this.system.id,this.apiAdapter,g,this.system.functions,this.system.model,n,this.system.tools,this.maxTokens)}}catch(e){return this.displayInUI&&this.dispatchMessage({id:`m-${Date.now()}`,role:"system",content:`AI error: ${String((null==e?void 0:e.message)||e)}`,timestamp:Date.now()}),{}}if(g=e.responseId,!e.toolCall){if(e.assistantText)if("json"===this.responseFormat){const t=null!==(o=e.parsed)&&void 0!==o?o:this.tryParseAssistantJson(e.assistantText);if(null!=t){const e=Array.isArray(t)?t:[t];this.displayInUI&&this.dispatchParsedResponses(e),null===(r=this.onMessageReceived)||void 0===r||r.call(this,t)}else{const t=e.assistantText.trim();this.displayInUI&&t&&this.dispatchMessage({id:`m-${Date.now()}`,role:"assistant",content:t,timestamp:Date.now()}),null===(l=this.onMessageReceived)||void 0===l||l.call(this,e.assistantText)}}else this.displayInUI&&this.dispatchMessage({id:`m-${Date.now()}`,role:"assistant",content:e.assistantText,timestamp:Date.now()}),null===(c=this.onMessageReceived)||void 0===c||c.call(this,e.assistantText);return{responseId:g}}const{name:n,args:b,toolCallId:I,callId:x}=e.toolCall;I&&t.push({role:"assistant",text:"",toolCallId:I,toolName:n,toolArgs:JSON.stringify(b)});try{const e="string"==typeof b?(()=>{try{return JSON.parse(b)}catch(e){return b}})():b;null===(d=this.onMessageReceived)||void 0===d||d.call(this,{type:"TOOL_CALL",data:{name:n,args:e}});const o=yield this.functionHandler(n,e);if(I?t.push({role:"tool",text:JSON.stringify(o),toolCallId:I}):t.push({role:"tool",text:JSON.stringify(o)}),x){const e="object"==typeof o&&null!==o?o:String(o),r=this.sanitizeToolOutput(n,e);try{const t="string"==typeof e?e:JSON.stringify(e);null===(h=this.onMessageReceived)||void 0===h||h.call(this,{type:"TOOL_RESULT",data:{name:n,preview:t.slice(0,1e3)}})}catch(e){}const l=[{type:"function_call_output",call_id:x,output:r}],c=yield a(t,i,s,this.system.id,this.apiAdapter,g,this.system.functions,this.system.model,l,this.system.tools,this.maxTokens);if(g=c.responseId,!c.toolCall){if(c.assistantText)if("json"===this.responseFormat){const e=null!==(p=c.parsed)&&void 0!==p?p:this.tryParseAssistantJson(c.assistantText);if(null!=e){const t=Array.isArray(e)?e:[e];this.displayInUI&&this.dispatchParsedResponses(t),null===(u=this.onMessageReceived)||void 0===u||u.call(this,e)}else this.displayInUI&&this.dispatchMessage({id:`m-${Date.now()}`,role:"assistant",content:c.assistantText,timestamp:Date.now()}),null===(m=this.onMessageReceived)||void 0===m||m.call(this,c.assistantText)}else this.displayInUI&&this.dispatchMessage({id:`m-${Date.now()}`,role:"assistant",content:c.assistantText,timestamp:Date.now()}),null===(y=this.onMessageReceived)||void 0===y||y.call(this,c.assistantText);return{responseId:g}}f=c}else;}catch(e){return this.displayInUI&&this.dispatchMessage({id:`m-${Date.now()}`,role:"system",content:`Tool error: ${String((null==e?void 0:e.message)||e)}`,timestamp:Date.now()}),{responseId:g}}}return this.displayInUI&&this.dispatchMessage({id:`m-${Date.now()}`,role:"system",content:`Maximum tool call iterations (${this.maxToolCalls}) reached.`,timestamp:Date.now()}),{responseId:g}}))}}export{n as AIService};
@@ -1,6 +0,0 @@
1
- import { FunctionDefinition, GenericAIResponse, ApiRequestExecutor, ChatMessageItem, FunctionCallOutputItem, APIAdapter } from '../types';
2
- export declare function createExecutorApiAdapter(executor: ApiRequestExecutor, baseUrl: string, endpointPath?: string): APIAdapter;
3
- export declare function callToChatbot(history: {
4
- role: string;
5
- text: string;
6
- }[], intent: string | undefined, conversationId: string | undefined, systemId: string | undefined, apiAdapter: APIAdapter, previousResponseId?: string, customFunctions?: FunctionDefinition[], model?: string, nextInput?: Array<ChatMessageItem | FunctionCallOutputItem>, builtinTools?: string[], maxTokens?: number): Promise<GenericAIResponse>;
@@ -1 +0,0 @@
1
- import{__awaiter as t}from"../../../_virtual/_tslib.js";import{DEFAULT_MODEL as o}from"../types/ai.js";function e(o,e){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"/openaiApiFunctions-callChatbot";return i=>t(this,void 0,void 0,(function*(){var t,s;const{input:l,model:r,maxTokens:a=4e3,previousResponseId:d,customFunctions:u,builtinTools:p}=i,c={input:l,tools:[...(p||[]).map((t=>({type:t}))),...(v=u,v&&0!==v.length?v.map((t=>({type:"function",name:t.name,description:t.description,parameters:t.parameters}))):[])],model:r,max_output_tokens:a,previous_response_id:d};var v;const m=`${e.replace(/\/$/,"")}${n}`,{status:h,data:g,error:f}=yield o.sendData({apiPath:m,apiMethod:"POST",requestBody:c});if(200!==h||!(null==g?void 0:g.success)){const o=(null===(s=null===(t=null==g?void 0:g.errors)||void 0===t?void 0:t[0])||void 0===s?void 0:s.message)||f;throw new Error("Backend error: "+(o?` - ${String(o)}`:""))}return function(t){const o={assistantText:t.assistantText,parsed:t.parsed,lastResponseId:t.lastResponseId,responseId:t.responseId};return t.toolCall&&(o.toolCall={name:t.toolCall.name,args:t.toolCall.args,toolCallId:t.toolCall.id,callId:t.toolCall.call_id}),o}(g.data)}))}function n(e){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"default",i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"default-session",s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"generic",l=arguments.length>4?arguments[4]:void 0,r=arguments.length>5?arguments[5]:void 0,a=arguments.length>6?arguments[6]:void 0,d=arguments.length>7&&void 0!==arguments[7]?arguments[7]:o,u=arguments.length>8?arguments[8]:void 0,p=arguments.length>9?arguments[9]:void 0,c=arguments.length>10?arguments[10]:void 0;return t(this,void 0,void 0,(function*(){if(!l)throw new Error("Chatbot authentication not configured: RequestExecutor is required");const t=u&&u.length>0?u:function(t){return t.map((t=>{let{role:o,text:e}=t;return{role:o,content:e}}))}(e),o={input:t,intent:n,conversationId:i,systemId:s,previousResponseId:r,customFunctions:a,builtinTools:p,model:d,maxTokens:null!=c?c:4e3};return yield l(o)}))}export{n as callToChatbot,e as createExecutorApiAdapter};
@@ -1,6 +0,0 @@
1
- import { SessionRecord } from '../types';
2
- /** Save session record to IndexedDB */
3
- export declare function saveSession(sessionId: string, record: SessionRecord): Promise<void>;
4
- export declare function loadSession(sessionId: string): Promise<SessionRecord | null>;
5
- export declare function deleteSession(sessionId: string): Promise<void>;
6
- export declare function listSessions(): Promise<string[]>;
@@ -1 +0,0 @@
1
- import{__awaiter as i}from"../../../_virtual/_tslib.js";import{set as o,get as t}from"idb-keyval";const n="ai-session:";function r(t,r){return i(this,void 0,void 0,(function*(){yield o(`${n}${t}`,r)}))}function u(o){return i(this,void 0,void 0,(function*(){return(yield t(`${n}${o}`))||null}))}export{u as loadSession,r as saveSession};
@@ -1,7 +0,0 @@
1
- import { ChatMessage, SessionRecord, UseAIChatProps } from '../types';
2
- export declare function useAIChat({ system, conversationId, skipInitialization, customFunctions, functionHandler, responseFormat, onMessageReceived, displayInUI, maxToolCalls, maxTokens, apiAdapter, }: Omit<UseAIChatProps, 'updateUI'>): {
3
- messages: ChatMessage[];
4
- conversation: SessionRecord;
5
- sendMessage: (content: string, intent?: string) => Promise<void>;
6
- isApiCallInProgress: boolean;
7
- };