@bikdotai/bik-component-library 0.0.718-beta.12 → 0.0.718-beta.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/components/SearchFilter/components/DatePickerButton.js +1 -1
- package/dist/cjs/components/SearchFilter/components/DateRangeOnlyButton.js +1 -1
- package/dist/cjs/components/analytics-chips-and-dropdowns/AnalyticsDropdown.d.ts +3 -1
- package/dist/cjs/components/analytics-chips-and-dropdowns/AnalyticsDropdown.js +1 -1
- package/dist/cjs/components/analytics-chips-and-dropdowns/AnalyticsTrend.d.ts +2 -1
- package/dist/cjs/components/analytics-chips-and-dropdowns/AnalyticsTrend.js +1 -1
- package/dist/cjs/components/analytics-chips-and-dropdowns/CommonStyles.js +1 -1
- package/dist/cjs/components/analytics-chips-and-dropdowns/chart/StackedBarChart/StackedBarChart.js +1 -1
- package/dist/cjs/components/analytics-chips-and-dropdowns/chart/StackedBarChart/StackedBarChart.model.d.ts +1 -4
- package/dist/cjs/components/analytics-chips-and-dropdowns/chart/heatmap/HeatMap.d.ts +0 -1
- package/dist/cjs/components/analytics-chips-and-dropdowns/chart/heatmap/HeatMap.js +1 -1
- package/dist/cjs/components/analytics-chips-and-dropdowns/chart/heatmap/HeatMapStyled.d.ts +0 -26
- package/dist/cjs/components/analytics-chips-and-dropdowns/chart/heatmap/HeatMapStyled.js +1 -1
- package/dist/cjs/components/analytics-chips-and-dropdowns/chart/heatmap/HeatMapVertical.js +1 -1
- package/dist/cjs/components/custom-date-time/DateSelector/DateSelector.js +1 -1
- package/dist/cjs/components/datePicker/DatePicker.d.ts +2 -0
- package/dist/cjs/components/datePicker/DatePicker.js +1 -1
- package/dist/cjs/components/datePicker/DatePicker.styled.d.ts +12 -0
- package/dist/cjs/components/datePicker/DatePicker.styled.js +1 -1
- package/dist/cjs/components/datePicker/TimePicker.d.ts +9 -0
- package/dist/cjs/components/datePicker/TimePicker.js +1 -0
- package/dist/cjs/components/datePicker/index.d.ts +1 -0
- package/dist/cjs/components/dropdown/ChipDropdown.d.ts +0 -1
- package/dist/cjs/components/dropdown/ChipDropdown.js +3 -4
- package/dist/cjs/components/dropdown/Dropdown.d.ts +0 -1
- package/dist/cjs/components/floating-action-button/FloatingActionButton.styles.js +1 -1
- package/dist/cjs/components/tabs/Tabs.js +1 -1
- package/dist/cjs/components/tabs/Tabs.model.d.ts +0 -2
- package/dist/cjs/index.d.ts +0 -1
- package/dist/cjs/index.js +1 -1
- package/dist/esm/components/SearchFilter/components/DatePickerButton.js +1 -1
- package/dist/esm/components/SearchFilter/components/DateRangeOnlyButton.js +1 -1
- package/dist/esm/components/analytics-chips-and-dropdowns/AnalyticsDropdown.d.ts +3 -1
- package/dist/esm/components/analytics-chips-and-dropdowns/AnalyticsDropdown.js +1 -1
- package/dist/esm/components/analytics-chips-and-dropdowns/AnalyticsTrend.d.ts +2 -1
- package/dist/esm/components/analytics-chips-and-dropdowns/AnalyticsTrend.js +1 -1
- package/dist/esm/components/analytics-chips-and-dropdowns/CommonStyles.js +1 -1
- package/dist/esm/components/analytics-chips-and-dropdowns/chart/StackedBarChart/StackedBarChart.js +1 -1
- package/dist/esm/components/analytics-chips-and-dropdowns/chart/StackedBarChart/StackedBarChart.model.d.ts +1 -4
- package/dist/esm/components/analytics-chips-and-dropdowns/chart/heatmap/HeatMap.d.ts +0 -1
- package/dist/esm/components/analytics-chips-and-dropdowns/chart/heatmap/HeatMap.js +1 -1
- package/dist/esm/components/analytics-chips-and-dropdowns/chart/heatmap/HeatMapStyled.d.ts +0 -26
- package/dist/esm/components/analytics-chips-and-dropdowns/chart/heatmap/HeatMapStyled.js +1 -1
- package/dist/esm/components/analytics-chips-and-dropdowns/chart/heatmap/HeatMapVertical.js +1 -1
- package/dist/esm/components/custom-date-time/DateSelector/DateSelector.js +1 -1
- package/dist/esm/components/datePicker/DatePicker.d.ts +2 -0
- package/dist/esm/components/datePicker/DatePicker.js +1 -1
- package/dist/esm/components/datePicker/DatePicker.styled.d.ts +12 -0
- package/dist/esm/components/datePicker/DatePicker.styled.js +1 -1
- package/dist/esm/components/datePicker/TimePicker.d.ts +9 -0
- package/dist/esm/components/datePicker/TimePicker.js +1 -0
- package/dist/esm/components/datePicker/index.d.ts +1 -0
- package/dist/esm/components/dropdown/ChipDropdown.d.ts +0 -1
- package/dist/esm/components/dropdown/ChipDropdown.js +5 -6
- package/dist/esm/components/dropdown/Dropdown.d.ts +0 -1
- package/dist/esm/components/floating-action-button/FloatingActionButton.styles.js +17 -17
- package/dist/esm/components/tabs/Tabs.js +1 -1
- package/dist/esm/components/tabs/Tabs.model.d.ts +0 -2
- package/dist/esm/index.d.ts +0 -1
- package/dist/esm/index.js +1 -1
- package/package.json +1 -2
- package/dist/cjs/assets/icons/Ai_event_generating.svg.js +0 -1
- package/dist/cjs/components/bik-chatbot/components/AIChat.d.ts +0 -5
- package/dist/cjs/components/bik-chatbot/components/AIChat.js +0 -1
- package/dist/cjs/components/bik-chatbot/components/BIKChatbot.d.ts +0 -36
- package/dist/cjs/components/bik-chatbot/components/BIKChatbot.js +0 -1
- package/dist/cjs/components/bik-chatbot/components/ChatLoadingState.d.ts +0 -7
- package/dist/cjs/components/bik-chatbot/components/ChatLoadingState.js +0 -177
- package/dist/cjs/components/bik-chatbot/components/ChatWindow.d.ts +0 -12
- package/dist/cjs/components/bik-chatbot/components/ChatWindow.js +0 -252
- package/dist/cjs/components/bik-chatbot/components/ThinkingIndicator.d.ts +0 -3
- package/dist/cjs/components/bik-chatbot/components/ThinkingIndicator.js +0 -188
- package/dist/cjs/components/bik-chatbot/contexts/AIContext.d.ts +0 -4
- package/dist/cjs/components/bik-chatbot/contexts/AIContext.js +0 -1
- package/dist/cjs/components/bik-chatbot/index.d.ts +0 -137
- package/dist/cjs/components/bik-chatbot/services/aiService.d.ts +0 -30
- package/dist/cjs/components/bik-chatbot/services/aiService.js +0 -1
- package/dist/cjs/components/bik-chatbot/services/callToChatbot.d.ts +0 -6
- package/dist/cjs/components/bik-chatbot/services/callToChatbot.js +0 -1
- package/dist/cjs/components/bik-chatbot/services/db.d.ts +0 -6
- package/dist/cjs/components/bik-chatbot/services/db.js +0 -1
- package/dist/cjs/components/bik-chatbot/services/useAIChat.d.ts +0 -7
- package/dist/cjs/components/bik-chatbot/services/useAIChat.js +0 -1
- package/dist/cjs/components/bik-chatbot/types/ai.d.ts +0 -158
- package/dist/cjs/components/bik-chatbot/types/ai.js +0 -1
- package/dist/cjs/components/bik-chatbot/types/chat.d.ts +0 -34
- package/dist/cjs/components/bik-chatbot/types/chat.js +0 -1
- package/dist/cjs/components/bik-chatbot/types/components.d.ts +0 -130
- package/dist/cjs/components/bik-chatbot/types/index.d.ts +0 -6
- package/dist/cjs/components/bik-chatbot/utils/guardrails.d.ts +0 -6
- package/dist/cjs/components/bik-chatbot/utils/guardrails.js +0 -1
- package/dist/cjs/components/bik-chatbot/utils/markdown.d.ts +0 -1
- package/dist/cjs/components/bik-chatbot/utils/markdown.js +0 -1
- package/dist/cjs/components/bik-chatbot-examples/AnalyticsAdvisor.d.ts +0 -8
- package/dist/cjs/components/bik-chatbot-examples/ContentIdeasDemo.d.ts +0 -12
- package/dist/cjs/components/bik-chatbot-examples/SilentModeDemo.d.ts +0 -17
- package/dist/cjs/components/bik-chatbot-examples/SimpleChatbotDemo.d.ts +0 -17
- package/dist/cjs/components/bik-chatbot-examples/SimpleJsonChatDemo.d.ts +0 -16
- package/dist/cjs/components/bik-chatbot-examples/services/MockRequestExecutor.d.ts +0 -17
- package/dist/cjs/components/bik-chatbot-examples/types.ts/examples.d.ts +0 -61
- package/dist/esm/assets/icons/Ai_event_generating.svg.js +0 -1
- package/dist/esm/components/bik-chatbot/components/AIChat.d.ts +0 -5
- package/dist/esm/components/bik-chatbot/components/AIChat.js +0 -1
- package/dist/esm/components/bik-chatbot/components/BIKChatbot.d.ts +0 -36
- package/dist/esm/components/bik-chatbot/components/BIKChatbot.js +0 -1
- package/dist/esm/components/bik-chatbot/components/ChatLoadingState.d.ts +0 -7
- package/dist/esm/components/bik-chatbot/components/ChatLoadingState.js +0 -177
- package/dist/esm/components/bik-chatbot/components/ChatWindow.d.ts +0 -12
- package/dist/esm/components/bik-chatbot/components/ChatWindow.js +0 -252
- package/dist/esm/components/bik-chatbot/components/ThinkingIndicator.d.ts +0 -3
- package/dist/esm/components/bik-chatbot/components/ThinkingIndicator.js +0 -188
- package/dist/esm/components/bik-chatbot/contexts/AIContext.d.ts +0 -4
- package/dist/esm/components/bik-chatbot/contexts/AIContext.js +0 -1
- package/dist/esm/components/bik-chatbot/index.d.ts +0 -137
- package/dist/esm/components/bik-chatbot/services/aiService.d.ts +0 -30
- package/dist/esm/components/bik-chatbot/services/aiService.js +0 -1
- package/dist/esm/components/bik-chatbot/services/callToChatbot.d.ts +0 -6
- package/dist/esm/components/bik-chatbot/services/callToChatbot.js +0 -1
- package/dist/esm/components/bik-chatbot/services/db.d.ts +0 -6
- package/dist/esm/components/bik-chatbot/services/db.js +0 -1
- package/dist/esm/components/bik-chatbot/services/useAIChat.d.ts +0 -7
- package/dist/esm/components/bik-chatbot/services/useAIChat.js +0 -1
- package/dist/esm/components/bik-chatbot/types/ai.d.ts +0 -158
- package/dist/esm/components/bik-chatbot/types/ai.js +0 -1
- package/dist/esm/components/bik-chatbot/types/chat.d.ts +0 -34
- package/dist/esm/components/bik-chatbot/types/chat.js +0 -1
- package/dist/esm/components/bik-chatbot/types/components.d.ts +0 -130
- package/dist/esm/components/bik-chatbot/types/index.d.ts +0 -6
- package/dist/esm/components/bik-chatbot/utils/guardrails.d.ts +0 -6
- package/dist/esm/components/bik-chatbot/utils/guardrails.js +0 -1
- package/dist/esm/components/bik-chatbot/utils/markdown.d.ts +0 -1
- package/dist/esm/components/bik-chatbot/utils/markdown.js +0 -1
- package/dist/esm/components/bik-chatbot-examples/AnalyticsAdvisor.d.ts +0 -8
- package/dist/esm/components/bik-chatbot-examples/ContentIdeasDemo.d.ts +0 -12
- package/dist/esm/components/bik-chatbot-examples/SilentModeDemo.d.ts +0 -17
- package/dist/esm/components/bik-chatbot-examples/SimpleChatbotDemo.d.ts +0 -17
- package/dist/esm/components/bik-chatbot-examples/SimpleJsonChatDemo.d.ts +0 -16
- package/dist/esm/components/bik-chatbot-examples/services/MockRequestExecutor.d.ts +0 -17
- package/dist/esm/components/bik-chatbot-examples/types.ts/examples.d.ts +0 -61
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { ChatWindowProps } from '../types';
|
|
3
|
-
export declare const CustomGradientText: import("styled-components").StyledComponent<"span", any, {
|
|
4
|
-
colors?: string | undefined;
|
|
5
|
-
angle?: number | undefined;
|
|
6
|
-
}, never>;
|
|
7
|
-
export type { ChatState } from '../types';
|
|
8
|
-
interface ChatWindowWithHeightProps extends ChatWindowProps {
|
|
9
|
-
chatWindowHeight?: string | number;
|
|
10
|
-
}
|
|
11
|
-
declare const ChatWindow: React.FC<ChatWindowWithHeightProps>;
|
|
12
|
-
export default ChatWindow;
|
|
@@ -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,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 +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[]>;
|