@bikdotai/bik-component-library 0.0.718-beta.18 → 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 -5
  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 -11
  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 -5
  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 -11
  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
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../../../node_modules/react/jsx-runtime.js"),t=require("../../../assets/icons/Ai_event_generating.svg.js"),i=require("react"),r=require("styled-components"),n=require("../../TypographyStyle.js"),s=require("../utils/markdown.js"),a=require("./ThinkingIndicator.js");function o(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var d=o(r);const l=d.default.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=d.default.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
- `,c=d.default.div`
30
- flex: 1;
31
- display: flex;
32
- flex-direction: column;
33
- overflow: hidden;
34
- min-height: 0;
35
- `,p=d.default.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
- `,u=d.default.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
- `,h=d.default.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
- `,g=d.default.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
- `,b=d.default.div`
103
- font-size: 14px;
104
- color: #374151;
105
- line-height: 1.5;
106
- `,f=d.default.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
- `,m=d.default.div`
116
- padding: 16px;
117
- flex-shrink: 0;
118
- `,j=d.default.div`
119
- display: flex;
120
- flex-direction: column;
121
- gap: 8px;
122
- align-items: flex-end;
123
- `,k=d.default.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
- `,v=d.default.div`
152
- padding: 16px;
153
- background: white;
154
- `,w=d.default.div`
155
- display: flex;
156
- flex-direction: column;
157
- gap: 8px;
158
- `,y=d.default.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
- `,E=d.default.div`
178
- padding: 16px;
179
- flex-shrink: 0;
180
- `,R=d.default.div`
181
- position: relative;
182
- display: flex;
183
- width: 100%;
184
- `,F=d.default.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
- `,S=d.default.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
- `,T=d.default.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
- `;exports.CustomGradientText=T,exports.default=r=>{let{messages:o,onSend:d,header:O="Create with AI",placeholder:C="Discover the right event & launch campaigns for better conversions...",suggestions:z=["Top festivals for marketing","Top events this week?","Top August festivals near you"],iceBreakers:B,videoStarter:$,disabled:q=!1,isThinking:A=!1,onIceBreakerClick:M,chatState:_,chatWindowHeight:I,inputDisabled:D=!1}=r;const[L,H]=i.useState(""),[W,K]=i.useState(!1),[P,G]=i.useState(!1),N=i.useRef(null),V=i.useRef(null),J=W||A,Q=q||D,U=_||(W||A?"thinking":P&&L.trim().length>0?"typing":0===o.length?"conversation-starter":o.length>0?"conversation":"default"),X=()=>{!L.trim()||Q||J||(d(L),H(""),K(!0),setTimeout((()=>K(!1)),1500))},Y=L.trim().length>0,Z=Q||J||!Y;i.useEffect((()=>{var e;null===(e=N.current)||void 0===e||e.scrollIntoView({behavior:"smooth"})}),[o,W,A]);const ee=I||"100%";return e.jsxRuntimeExports.jsxs(l,Object.assign({chatState:U,style:{height:ee}},{children:[e.jsxRuntimeExports.jsxs(x,{children:[e.jsxRuntimeExports.jsx(t.default,{height:24,width:24}),e.jsxRuntimeExports.jsx("div",Object.assign({className:"header-text"},{children:O}))]}),e.jsxRuntimeExports.jsxs(c,{children:[e.jsxRuntimeExports.jsxs(p,{children:["conversation-starter"===U&&$&&e.jsxRuntimeExports.jsxs(u,{children:[e.jsxRuntimeExports.jsx(h,{children:e.jsxRuntimeExports.jsx(g,Object.assign({onClick:$.onPlay},{children:e.jsxRuntimeExports.jsx("svg",Object.assign({viewBox:"0 0 24 24",fill:"currentColor"},{children:e.jsxRuntimeExports.jsx("path",{d:"M8 5v14l11-7z"})}))}))}),e.jsxRuntimeExports.jsxs(b,{children:[e.jsxRuntimeExports.jsx(n.BodySecondary,Object.assign({style:{fontWeight:500,marginBottom:"4px"}},{children:$.title})),e.jsxRuntimeExports.jsx(n.BodyCaption,{children:$.description})]})]}),o.map((t=>e.jsxRuntimeExports.jsx(f,Object.assign({role:t.role},{children:"assistant"===t.role?e.jsxRuntimeExports.jsx("div",{dangerouslySetInnerHTML:{__html:s.renderMarkdownLite(t.content)}}):e.jsxRuntimeExports.jsx("div",Object.assign({style:{whiteSpace:"pre-wrap"}},{children:t.content}))}),t.id))),(W||A)&&e.jsxRuntimeExports.jsx(a.default,{}),e.jsxRuntimeExports.jsx("div",{ref:N})]}),B&&"conversation-starter"===U&&e.jsxRuntimeExports.jsx(m,{children:e.jsxRuntimeExports.jsx(j,{children:B.map((t=>e.jsxRuntimeExports.jsx(k,Object.assign({onClick:()=>{q||(null==M||M(t),d(t.text))}},{children:e.jsxRuntimeExports.jsx(T,{children:t.text})}),t.id)))})}),!B&&z.length>0&&"default"===U&&e.jsxRuntimeExports.jsx(v,{children:e.jsxRuntimeExports.jsx(w,{children:z.map((t=>e.jsxRuntimeExports.jsx(y,Object.assign({onClick:()=>!q&&d(t)},{children:t}),t)))})}),e.jsxRuntimeExports.jsx(E,{children:e.jsxRuntimeExports.jsxs(R,{children:[e.jsxRuntimeExports.jsx(F,{ref:V,value:L,onChange:e=>{if(Q)return;const t=e.target.value;H(t),G(t.trim().length>0);const i=V.current;i&&(i.style.height="auto",i.style.height=`${Math.min(i.scrollHeight,117)}px`)},placeholder:C,onKeyDown:e=>{Q||"Enter"!==e.key||e.shiftKey||(e.preventDefault(),!J&&L.trim()&&X())},disabled:Q,hasText:Y,chatState:U}),e.jsxRuntimeExports.jsx(S,Object.assign({onClick:X,disabled:Z,hasText:Y,"aria-label":"Send"},{children:e.jsxRuntimeExports.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.jsxRuntimeExports.jsx("path",{d:"M6 12h12"}),e.jsxRuntimeExports.jsx("path",{d:"M12 6l6 6-6 6"})]}))}))]})})]})]}))};
@@ -1,3 +0,0 @@
1
- import React from 'react';
2
- declare const ThinkingIndicator: React.FC;
3
- export default ThinkingIndicator;
@@ -1,188 +0,0 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../../../node_modules/react/jsx-runtime.js"),t=require("react");function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}const i=a(require("styled-components")).default.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
- `,s=[{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"}];exports.default=()=>{const[a,r]=t.useState(0);t.useEffect((()=>{const e=window.setInterval((()=>{r((e=>(e+1)%s.length))}),1800);return()=>window.clearInterval(e)}),[]);const n=s[a];return e.jsxRuntimeExports.jsxs(i,Object.assign({gradient:n.gradient,accent:n.accent,role:"status","aria-live":"polite"},{children:[e.jsxRuntimeExports.jsx("div",Object.assign({className:"icon-wrapper"},{children:e.jsxRuntimeExports.jsx("span",Object.assign({className:"icon-letter"},{children:n.label}))})),e.jsxRuntimeExports.jsxs("div",Object.assign({className:"bubble-content"},{children:[e.jsxRuntimeExports.jsx("div",Object.assign({className:"status-text"},{children:n.text})),e.jsxRuntimeExports.jsx("div",Object.assign({className:"dots"},{children:[0,1,2,3,4].map((t=>e.jsxRuntimeExports.jsx("span",{className:"dot",style:{animationDelay:.15*t+"s"}},t)))})),e.jsxRuntimeExports.jsx("div",Object.assign({className:"shimmer-group"},{children:[60,80,45].map(((t,a)=>e.jsxRuntimeExports.jsx("div",Object.assign({className:"shimmer-line",style:{width:`${t}%`,animationDelay:.25+.12*a+"s"}},{children:e.jsxRuntimeExports.jsx("span",{className:"shimmer-highlight"})}),t)))}))]}))]}))};
@@ -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
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../../../_virtual/_tslib.js"),s=require("../../../node_modules/react/jsx-runtime.js"),t=require("react"),o=require("../services/useAIChat.js"),r=require("../types/ai.js"),n=require("../services/callToChatbot.js");const i=t.createContext(null);exports.AIProvider=a=>{let{children:u,systemPrompt:l,systemId:d,functions:c,tools:m,functionHandler:p,onMessageReceived:v,displayInUI:f,maxToolCalls:x,maxTokens:A,requestExecutor:E,baseUrl:g,endpointPath:I,responseFormat:y,conversationId:h="default-session",customModel:C,onSystemReady:L}=a;const[q,j]=t.useState(null),[P,_]=t.useState(!0),[b,M]=t.useState(null),w=t.useRef(null);t.useEffect((()=>l?E&&g?void M(null):(M("Chatbot authentication not configured: RequestExecutor and baseUrl are required"),void _(!1)):(M("systemPrompt is required for generic mode"),void _(!1))),[l,E,g]);const D=t.useCallback((()=>e.__awaiter(void 0,void 0,void 0,(function*(){try{_(!0),M(null);const e=C||r.DEFAULT_MODEL;if(!r.ALLOWED_MODELS.includes(e))throw new Error(`Unsupported model: ${C||"default"}. Allowed models are: ${r.ALLOWED_MODELS.join(", ")}`);j({id:d||"generic",name:d?`${d} `:"Generic AI Assistant",model:e,systemPrompt:l,functions:c,tools:m})}catch(e){const s=(null==e?void 0:e.message)||"Failed to create AI system";M(s)}finally{_(!1)}}))),[C,l,d,c]);t.useEffect((()=>{l&&D()}),[D]),t.useEffect((()=>{q&&L&&q.id!==w.current&&(w.current=q.id,L(q)),q||(w.current=null)}),[q]);const{messages:O,conversation:R,sendMessage:T,isApiCallInProgress:U}=o.useAIChat({system:q||{id:"loading",name:"Loading...",model:r.DEFAULT_MODEL,systemPrompt:"Loading...",functions:[]},conversationId:h,skipInitialization:!q,customFunctions:c,functionHandler:p,responseFormat:y,onMessageReceived:v,displayInUI:f,maxToolCalls:x,maxTokens:A,apiAdapter:E&&g?n.createExecutorApiAdapter(E,g,I||void 0):()=>{throw new Error("Chatbot authentication not configured: RequestExecutor is required")}}),F={isReady:!!q&&!P,isLoading:P,isApiCallInProgress:U,system:q,messages:O,conversation:R,sendMessage:T,error:b};return s.jsxRuntimeExports.jsx(i.Provider,Object.assign({value:F},{children:u}))},exports.useAIContext=()=>{const e=t.useContext(i);if(!e)throw new Error("useAIContext must be used within an AIProvider");return e};
@@ -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
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../../../_virtual/_tslib.js"),t=require("../utils/guardrails.js"),s=require("./callToChatbot.js");exports.AIService=class{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.__rest(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:t.injectSafetyPrompt(this.system.systemPrompt)}}generate(s,i){let a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"default",n=arguments.length>3?arguments[3]:void 0;return e.__awaiter(this,void 0,void 0,(function*(){const e=s.map((e=>({role:e.role,text:t.sanitizeUserInput(e.content)}))),o=[{role:"system",text:this.makeSystemMessage().content},...e];return this.generateWithRecursiveToolCalls(o,i,a,n)}))}generateWithRecursiveToolCalls(t,i,a,n){var o,r,l,c,d,h,u,p,m,y;return e.__awaiter(this,void 0,void 0,(function*(){const e=t.map((e=>({role:e.role,text:e.text})));let f,g=n,v=0;for(;v<this.maxToolCalls;){let t;v++;try{if(f)t=f,f=void 0;else{let n;if(1===v&&g){const t=[...e].reverse().find((e=>"user"===e.role));t&&(n=[{role:"user",content:t.text}])}t=yield s.callToChatbot(e,a,i,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=t.responseId,!t.toolCall){if(t.assistantText)if("json"===this.responseFormat){const e=null!==(o=t.parsed)&&void 0!==o?o:this.tryParseAssistantJson(t.assistantText);if(null!=e){const t=Array.isArray(e)?e:[e];this.displayInUI&&this.dispatchParsedResponses(t),null===(r=this.onMessageReceived)||void 0===r||r.call(this,e)}else{const e=t.assistantText.trim();this.displayInUI&&e&&this.dispatchMessage({id:`m-${Date.now()}`,role:"assistant",content:e,timestamp:Date.now()}),null===(l=this.onMessageReceived)||void 0===l||l.call(this,t.assistantText)}}else this.displayInUI&&this.dispatchMessage({id:`m-${Date.now()}`,role:"assistant",content:t.assistantText,timestamp:Date.now()}),null===(c=this.onMessageReceived)||void 0===c||c.call(this,t.assistantText);return{responseId:g}}const{name:n,args:b,toolCallId:I,callId:x}=t.toolCall;I&&e.push({role:"assistant",text:"",toolCallId:I,toolName:n,toolArgs:JSON.stringify(b)});try{const t="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:t}});const o=yield this.functionHandler(n,t);if(I?e.push({role:"tool",text:JSON.stringify(o),toolCallId:I}):e.push({role:"tool",text:JSON.stringify(o)}),x){const t="object"==typeof o&&null!==o?o:String(o),r=this.sanitizeToolOutput(n,t);try{const e="string"==typeof t?t:JSON.stringify(t);null===(h=this.onMessageReceived)||void 0===h||h.call(this,{type:"TOOL_RESULT",data:{name:n,preview:e.slice(0,1e3)}})}catch(e){}const l=[{type:"function_call_output",call_id:x,output:r}],c=yield s.callToChatbot(e,a,i,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!==(u=c.parsed)&&void 0!==u?u:this.tryParseAssistantJson(c.assistantText);if(null!=e){const t=Array.isArray(e)?e:[e];this.displayInUI&&this.dispatchParsedResponses(t),null===(p=this.onMessageReceived)||void 0===p||p.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}}))}};
@@ -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
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../../../_virtual/_tslib.js"),t=require("../types/ai.js");exports.callToChatbot=function(o){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",r=arguments.length>4?arguments[4]:void 0,l=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]:t.DEFAULT_MODEL,u=arguments.length>8?arguments[8]:void 0,c=arguments.length>9?arguments[9]:void 0,p=arguments.length>10?arguments[10]:void 0;return e.__awaiter(this,void 0,void 0,(function*(){if(!r)throw new Error("Chatbot authentication not configured: RequestExecutor is required");const e=u&&u.length>0?u:function(e){return e.map((e=>{let{role:t,text:o}=e;return{role:t,content:o}}))}(o),t={input:e,intent:n,conversationId:i,systemId:s,previousResponseId:l,customFunctions:a,builtinTools:c,model:d,maxTokens:null!=p?p:4e3};return yield r(t)}))},exports.createExecutorApiAdapter=function(t,o){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"/openaiApiFunctions-callChatbot";return i=>e.__awaiter(this,void 0,void 0,(function*(){var e,s;const{input:r,model:l,maxTokens:a=4e3,previousResponseId:d,customFunctions:u,builtinTools:c}=i,p={input:r,tools:[...(c||[]).map((e=>({type:e}))),...(v=u,v&&0!==v.length?v.map((e=>({type:"function",name:e.name,description:e.description,parameters:e.parameters}))):[])],model:l,max_output_tokens:a,previous_response_id:d};var v;const h=`${o.replace(/\/$/,"")}${n}`,{status:g,data:m,error:_}=yield t.sendData({apiPath:h,apiMethod:"POST",requestBody:p});if(200!==g||!(null==m?void 0:m.success)){const t=(null===(s=null===(e=null==m?void 0:m.errors)||void 0===e?void 0:e[0])||void 0===s?void 0:s.message)||_;throw new Error("Backend error: "+(t?` - ${String(t)}`:""))}return function(e){const t={assistantText:e.assistantText,parsed:e.parsed,lastResponseId:e.lastResponseId,responseId:e.responseId};return e.toolCall&&(t.toolCall={name:e.toolCall.name,args:e.toolCall.args,toolCallId:e.toolCall.id,callId:e.toolCall.call_id}),t}(m.data)}))};
@@ -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
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../../../_virtual/_tslib.js"),i=require("idb-keyval");const t="ai-session:";exports.loadSession=function(r){return e.__awaiter(this,void 0,void 0,(function*(){return(yield i.get(`${t}${r}`))||null}))},exports.saveSession=function(r,s){return e.__awaiter(this,void 0,void 0,(function*(){yield i.set(`${t}${r}`,s)}))};