aov-agent 1.0.0 → 1.0.6

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 (39) hide show
  1. package/README.md +313 -1
  2. package/dist/agent-ui/components/Assistant/AgentButton/AgentButton.js +28 -0
  3. package/dist/agent-ui/components/Assistant/AgentButton/AgentButton.scss +40 -0
  4. package/dist/agent-ui/components/Assistant/Assistant.js +68 -0
  5. package/dist/agent-ui/components/Assistant/Assistant.scss +3 -0
  6. package/dist/agent-ui/components/Assistant/AssistantWidget/AssistantWidget.js +193 -0
  7. package/dist/agent-ui/components/Assistant/AssistantWidget/AssistantWidget.scss +205 -0
  8. package/dist/agent-ui/components/Assistant/AssistantWidget/components/CampaignRendered.js +30 -0
  9. package/dist/agent-ui/components/Assistant/AssistantWidget/components/ListChat.js +129 -0
  10. package/dist/agent-ui/components/Assistant/Markdown/MarkdownText.js +228 -0
  11. package/dist/agent-ui/components/Assistant/Markdown/MarkdownText.scss +222 -0
  12. package/dist/agent-ui/components/Assistant/Markdown/MathRenderer.js +52 -0
  13. package/dist/agent-ui/components/Assistant/Suggestions/Suggestions.js +62 -0
  14. package/dist/agent-ui/components/Assistant/Suggestions/Suggestions.scss +22 -0
  15. package/dist/agent-ui/components/Assistant/ThreadProvider.js +481 -0
  16. package/dist/agent-ui/components/Assistant/ToolResult/CardTool.js +98 -0
  17. package/dist/agent-ui/components/Assistant/ToolResult/CardTool.scss +12 -0
  18. package/dist/agent-ui/components/Assistant/ToolResult/ToolResult.js +44 -0
  19. package/dist/agent-ui/components/CopyToClipboard/CopyToClipboard.js +43 -0
  20. package/dist/agent-ui/components/CopyToClipboard/index.js +2 -0
  21. package/dist/agent-ui/components/ResizableModal/ResizableModal.js +262 -0
  22. package/dist/agent-ui/components/ResizableModal/ResizableModal.scss +117 -0
  23. package/dist/agent-ui/const/appName.js +6 -0
  24. package/dist/agent-ui/const/option.js +9 -0
  25. package/dist/agent-ui/const/toolName.js +6 -0
  26. package/dist/agent-ui/contexts/AgentContext.js +54 -0
  27. package/dist/agent-ui/contexts/SuggestionsContext.js +64 -0
  28. package/dist/agent-ui/contexts/ThreadContext.js +60 -0
  29. package/dist/agent-ui/helpers/copyToClipboard.js +33 -0
  30. package/dist/agent-ui/helpers/formatQuery.js +15 -0
  31. package/dist/agent-ui/hooks/useFetchApi.js +238 -0
  32. package/dist/agent-ui/hooks/useStreamApi.js +127 -0
  33. package/dist/agent-ui/index.js +1 -0
  34. package/dist/agent-ui/resources/assistant-avatar.svg +51 -0
  35. package/dist/agent-ui/services/errorService.js +39 -0
  36. package/dist/agent-ui/utils/api.js +164 -0
  37. package/package.json +44 -9
  38. package/dist/index.js +0 -7
  39. package/types/index.d.ts +0 -5
@@ -0,0 +1,15 @@
1
+ export var formatQuery = function formatQuery(query) {
2
+ if (!query || typeof query !== "string") return query;
3
+ var keywords = ["FROM", "SHOW", "GROUP BY", "ORDER BY", "LIMIT", "WHERE", "HAVING"];
4
+ var formatted = query;
5
+ keywords.forEach(function (keyword) {
6
+ var regex = new RegExp("\\s+".concat(keyword, "\\s+"), "gi");
7
+ formatted = formatted.replace(regex, "\n".concat(keyword, " "));
8
+ });
9
+ var lines = formatted.trim().split("\n");
10
+ var formattedLines = lines.map(function (line, index) {
11
+ if (index === 0) return line;
12
+ return " ".concat(line);
13
+ });
14
+ return formattedLines.join("\n");
15
+ };
@@ -0,0 +1,238 @@
1
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
2
+ function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }
3
+ function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, t); }
4
+ function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
5
+ function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
6
+ function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
7
+ function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
8
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
9
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
10
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
11
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
12
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
13
+ function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
14
+ function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
15
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
16
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
17
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
18
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
19
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
20
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
21
+ import { useEffect, useState } from "react";
22
+ import { fetchAuthenticateApi } from "../utils/api.js";
23
+ import queryString from "query-string";
24
+ import { handleApiError } from "../services/errorService.js";
25
+
26
+ /**
27
+ * Custom hook for fetching data from API endpoints
28
+ *
29
+ * @param {Object} config - Configuration object
30
+ * @param {string} config.url - API endpoint URL
31
+ * @param {Array|Object} config.defaultData - Default data structure
32
+ * @param {boolean} config.initLoad - Whether to load data on mount
33
+ * @param {Function} config.presentData - Data transformation function
34
+ * @param {boolean} config.keepPreviousData - Keep previous data when fetching more
35
+ * @param {Object} config.initQueries - Initial query parameters
36
+ * @param {Function} config.successCallback - Callback on successful fetch
37
+ * @param {string} config.method - HTTP method (GET, POST, etc.)
38
+ * @param {Object} config.postData - Data to send in POST requests
39
+ * @returns {Object} Hook return object with data, loading state, and fetch functions
40
+ */
41
+ export default function useFetchApi(_ref) {
42
+ var url = _ref.url,
43
+ _ref$defaultData = _ref.defaultData,
44
+ defaultData = _ref$defaultData === void 0 ? [] : _ref$defaultData,
45
+ _ref$initLoad = _ref.initLoad,
46
+ initLoad = _ref$initLoad === void 0 ? true : _ref$initLoad,
47
+ _ref$presentData = _ref.presentData,
48
+ presentData = _ref$presentData === void 0 ? function (data) {
49
+ return data;
50
+ } : _ref$presentData,
51
+ _ref$keepPreviousData = _ref.keepPreviousData,
52
+ keepPreviousData = _ref$keepPreviousData === void 0 ? false : _ref$keepPreviousData,
53
+ _ref$initQueries = _ref.initQueries,
54
+ initQueries = _ref$initQueries === void 0 ? {} : _ref$initQueries,
55
+ _ref$successCallback = _ref.successCallback,
56
+ successCallback = _ref$successCallback === void 0 ? function () {} : _ref$successCallback,
57
+ _ref$method = _ref.method,
58
+ method = _ref$method === void 0 ? "GET" : _ref$method,
59
+ _ref$postData = _ref.postData,
60
+ postData = _ref$postData === void 0 ? {} : _ref$postData;
61
+ var _useState = useState(initLoad),
62
+ _useState2 = _slicedToArray(_useState, 2),
63
+ loading = _useState2[0],
64
+ setLoading = _useState2[1];
65
+ var _useState3 = useState(false),
66
+ _useState4 = _slicedToArray(_useState3, 2),
67
+ fetched = _useState4[0],
68
+ setFetched = _useState4[1];
69
+ var _useState5 = useState(defaultData),
70
+ _useState6 = _slicedToArray(_useState5, 2),
71
+ data = _useState6[0],
72
+ setData = _useState6[1];
73
+ var _useState7 = useState({}),
74
+ _useState8 = _slicedToArray(_useState7, 2),
75
+ pagination = _useState8[0],
76
+ setPagination = _useState8[1];
77
+ var _useState9 = useState({}),
78
+ _useState0 = _slicedToArray(_useState9, 2),
79
+ pageInfo = _useState0[0],
80
+ setPageInfo = _useState0[1];
81
+ var _useState1 = useState(0),
82
+ _useState10 = _slicedToArray(_useState1, 2),
83
+ total = _useState10[0],
84
+ setTotal = _useState10[1];
85
+ var _useState11 = useState(null),
86
+ _useState12 = _slicedToArray(_useState11, 2),
87
+ endCursor = _useState12[0],
88
+ setEndCursor = _useState12[1];
89
+ var _useState13 = useState(0),
90
+ _useState14 = _slicedToArray(_useState13, 2),
91
+ count = _useState14[0],
92
+ setCount = _useState14[1];
93
+ var _useState15 = useState(null),
94
+ _useState16 = _slicedToArray(_useState15, 2),
95
+ error = _useState16[0],
96
+ setError = _useState16[1];
97
+ function fetchApi() {
98
+ return _fetchApi.apply(this, arguments);
99
+ }
100
+ function _fetchApi() {
101
+ _fetchApi = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
102
+ var apiUrl,
103
+ _ref2,
104
+ _ref2$params,
105
+ params,
106
+ _ref2$keepPreviousDat,
107
+ keepPreviousData,
108
+ path,
109
+ separateChar,
110
+ query,
111
+ options,
112
+ resp,
113
+ newData,
114
+ _pagination,
115
+ hasPre,
116
+ hasNext,
117
+ _args = arguments,
118
+ _t;
119
+ return _regenerator().w(function (_context) {
120
+ while (1) switch (_context.p = _context.n) {
121
+ case 0:
122
+ apiUrl = _args.length > 0 && _args[0] !== undefined ? _args[0] : url;
123
+ _ref2 = _args.length > 1 && _args[1] !== undefined ? _args[1] : {}, _ref2$params = _ref2.params, params = _ref2$params === void 0 ? null : _ref2$params, _ref2$keepPreviousDat = _ref2.keepPreviousData, keepPreviousData = _ref2$keepPreviousDat === void 0 ? false : _ref2$keepPreviousDat;
124
+ _context.p = 1;
125
+ setLoading(true);
126
+ path = apiUrl;
127
+ separateChar = path.includes("?") ? "&" : "?";
128
+ query = params ? separateChar + queryString.stringify(params) : "";
129
+ options = {};
130
+ if (method !== "GET") {
131
+ options = {
132
+ body: postData,
133
+ method: method
134
+ };
135
+ }
136
+ _context.n = 2;
137
+ return fetchAuthenticateApi({
138
+ uri: path + query,
139
+ options: options,
140
+ clientConfig: {
141
+ baseURL: "/api"
142
+ }
143
+ });
144
+ case 2:
145
+ resp = _context.v;
146
+ if (!resp.error) {
147
+ _context.n = 3;
148
+ break;
149
+ }
150
+ throw new Error(resp.error);
151
+ case 3:
152
+ if (Object.hasOwn(resp, "endCursor")) setEndCursor(resp.endCursor);
153
+ if (Object.hasOwn(resp, "pageInfo")) setPageInfo(resp.pageInfo);
154
+ if (Object.hasOwn(resp, "count")) setCount(resp.count);
155
+ if (Object.hasOwn(resp, "data")) {
156
+ newData = presentData(resp.data);
157
+ if (!Array.isArray(newData)) {
158
+ newData = _objectSpread(_objectSpread({}, defaultData), newData);
159
+ }
160
+ setData(function (prev) {
161
+ if (!keepPreviousData) {
162
+ return newData;
163
+ }
164
+ return Array.isArray(newData) ? [].concat(_toConsumableArray(prev), _toConsumableArray(newData)) : _objectSpread(_objectSpread({}, prev), newData);
165
+ });
166
+ successCallback(newData);
167
+ }
168
+ if (resp.pagination) {
169
+ _pagination = resp.pagination;
170
+ setPagination(_pagination);
171
+ if (Object.hasOwn(_pagination, "total")) setTotal(_pagination.total);
172
+ } else if (Object.hasOwn(resp, "hasPre") || Object.hasOwn(resp, "hasNext")) {
173
+ hasPre = resp.hasPre, hasNext = resp.hasNext;
174
+ setPagination({
175
+ hasPre: hasPre,
176
+ hasNext: hasNext
177
+ });
178
+ }
179
+ _context.n = 5;
180
+ break;
181
+ case 4:
182
+ _context.p = 4;
183
+ _t = _context.v;
184
+ handleApiError(_t);
185
+ setError((_t === null || _t === void 0 ? void 0 : _t.message) || "Something went wrong");
186
+ case 5:
187
+ _context.p = 5;
188
+ setLoading(false);
189
+ setFetched(true);
190
+ return _context.f(5);
191
+ case 6:
192
+ return _context.a(2);
193
+ }
194
+ }, _callee, null, [[1, 4, 5, 6]]);
195
+ }));
196
+ return _fetchApi.apply(this, arguments);
197
+ }
198
+ useEffect(function () {
199
+ if (initLoad && !fetched) {
200
+ fetchApi(url, {
201
+ params: initQueries,
202
+ keepPreviousData: keepPreviousData
203
+ }).then(function () {});
204
+ }
205
+ }, []);
206
+ var handleChangeInput = function handleChangeInput(key, value) {
207
+ return setData(function (prev) {
208
+ return _objectSpread(_objectSpread({}, prev), {}, _defineProperty({}, key, value));
209
+ });
210
+ };
211
+ var handleRowChange = function handleRowChange(index, key, value) {
212
+ setData(function (prev) {
213
+ var row = _objectSpread(_objectSpread({}, prev[index]), {}, _defineProperty({}, key, value));
214
+ return [].concat(_toConsumableArray(prev.slice(0, index)), [row], _toConsumableArray(prev.slice(index + 1)));
215
+ });
216
+ };
217
+ return {
218
+ fetchApi: fetchApi,
219
+ data: data,
220
+ endCursor: endCursor,
221
+ setData: setData,
222
+ pageInfo: pageInfo,
223
+ total: total,
224
+ setTotal: setTotal,
225
+ loading: loading,
226
+ setLoading: setLoading,
227
+ fetched: fetched,
228
+ setFetched: setFetched,
229
+ pagination: pagination,
230
+ setPagination: setPagination,
231
+ count: count,
232
+ setCount: setCount,
233
+ handleChangeInput: handleChangeInput,
234
+ handleRowChange: handleRowChange,
235
+ reFetch: fetchApi,
236
+ error: error
237
+ };
238
+ }
@@ -0,0 +1,127 @@
1
+ function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }
2
+ function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, t); }
3
+ function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
4
+ function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
5
+ function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
6
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
7
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
8
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
9
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
10
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
11
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
12
+ import { useState, useCallback } from "react";
13
+ import { streamApi } from "../utils/api.js";
14
+
15
+ /**
16
+ * Custom hook for Server-Sent Events (SSE) streaming API calls
17
+ *
18
+ * @param {string} apiUrl - API endpoint URL for streaming
19
+ * @returns {Object} Object containing stream function and streaming state
20
+ */
21
+ export var useStreamApi = function useStreamApi(apiUrl) {
22
+ var _useState = useState(false),
23
+ _useState2 = _slicedToArray(_useState, 2),
24
+ isStreaming = _useState2[0],
25
+ setIsStreaming = _useState2[1];
26
+ var stream = useCallback(/*#__PURE__*/function () {
27
+ var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(_ref) {
28
+ var _ref$method, method, _ref$data, data, onStart, onContent, onSuggestions, onTool, abortSignal, pendingChunks, lastIndex, _t;
29
+ return _regenerator().w(function (_context) {
30
+ while (1) switch (_context.p = _context.n) {
31
+ case 0:
32
+ _ref$method = _ref.method, method = _ref$method === void 0 ? "POST" : _ref$method, _ref$data = _ref.data, data = _ref$data === void 0 ? {} : _ref$data, onStart = _ref.onStart, onContent = _ref.onContent, onSuggestions = _ref.onSuggestions, onTool = _ref.onTool, abortSignal = _ref.abortSignal;
33
+ setIsStreaming(true);
34
+ _context.p = 1;
35
+ pendingChunks = "";
36
+ lastIndex = 0;
37
+ _context.n = 2;
38
+ return streamApi({
39
+ apiUrl: apiUrl,
40
+ method: method,
41
+ data: data,
42
+ signal: abortSignal,
43
+ onChunk: function onChunk(progressEvent) {
44
+ var fullResp = progressEvent.currentTarget.response;
45
+ if (!fullResp) return;
46
+ var chunk = fullResp.slice(lastIndex);
47
+ lastIndex = fullResp.length;
48
+ if (!chunk) return;
49
+ pendingChunks += chunk;
50
+ var events = pendingChunks.split("\n\n");
51
+ pendingChunks = events.pop() || "";
52
+ var _iterator = _createForOfIteratorHelper(events),
53
+ _step;
54
+ try {
55
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
56
+ var evt = _step.value;
57
+ var lines = evt.split("\n");
58
+ var dataLines = [];
59
+ var _iterator2 = _createForOfIteratorHelper(lines),
60
+ _step2;
61
+ try {
62
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
63
+ var line = _step2.value;
64
+ if (line.startsWith("data:")) {
65
+ dataLines.push(line.slice(5).trimStart());
66
+ }
67
+ }
68
+ } catch (err) {
69
+ _iterator2.e(err);
70
+ } finally {
71
+ _iterator2.f();
72
+ }
73
+ var payload = dataLines.join("\n").trim();
74
+ if (!payload) continue;
75
+ try {
76
+ var resp = JSON.parse(payload);
77
+ var _data = resp.data;
78
+ switch (resp.type) {
79
+ case "chat-created":
80
+ if (onStart) onStart(_data);
81
+ break;
82
+ case "text-content":
83
+ if (onContent) onContent(_data);
84
+ break;
85
+ case "tool-call":
86
+ if (onTool) onTool(_data);
87
+ break;
88
+ case "suggestions":
89
+ var listSuggestions = _data.split("\n");
90
+ if (onSuggestions) onSuggestions(listSuggestions);
91
+ break;
92
+ }
93
+ } catch (e) {
94
+ console.error("Error parsing SSE data:", e);
95
+ }
96
+ }
97
+ } catch (err) {
98
+ _iterator.e(err);
99
+ } finally {
100
+ _iterator.f();
101
+ }
102
+ }
103
+ });
104
+ case 2:
105
+ return _context.a(2, Promise.resolve());
106
+ case 3:
107
+ _context.p = 3;
108
+ _t = _context.v;
109
+ console.error("Stream API error:", _t);
110
+ case 4:
111
+ _context.p = 4;
112
+ setIsStreaming(false);
113
+ return _context.f(4);
114
+ case 5:
115
+ return _context.a(2);
116
+ }
117
+ }, _callee, null, [[1, 3, 4, 5]]);
118
+ }));
119
+ return function (_x) {
120
+ return _ref2.apply(this, arguments);
121
+ };
122
+ }(), []);
123
+ return {
124
+ stream: stream,
125
+ isStreaming: isStreaming
126
+ };
127
+ };
@@ -0,0 +1 @@
1
+ export { default as Assistant } from "./components/Assistant/Assistant.js";
@@ -0,0 +1,51 @@
1
+ <svg width="44" height="44" viewBox="0 0 44 44" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <g clip-path="url(#clip0_22375_4714)">
3
+ <rect x="0.000854492" y="-0.000289917" width="44" height="43.9999" rx="8.8" fill="#070D27"/>
4
+ <g filter="url(#filter0_f_22375_4714)">
5
+ <path d="M22.4147 13.0996C21.3679 10.6382 19.9844 12.9722 18.9804 12.0078C17.1899 7.68397 20.8618 9.31342 21.9976 10.0092L22.0205 10.0231C23.1386 10.708 23.5213 10.9424 24.5894 12.6832C25.6647 14.4359 25.5129 13.6124 26.5977 15.938C27.6824 18.2636 26.5907 21.3248 26.2609 23.2224C26.0071 24.6826 23.4615 15.561 22.4147 13.0996Z" fill="#2575F0"/>
6
+ </g>
7
+ <g filter="url(#filter1_f_22375_4714)">
8
+ <path d="M-1.59012 19.5487C-4.38187 19.5404 -1.21926 23.4442 -2.26605 22.7121C-6.50379 22.0582 -6.04672 29.199 -0.714508 31.0387C4.61771 32.8785 7.63319 29.511 10.7186 27.4841C13.8041 25.4572 15.4133 21.7249 19.3512 21.6374C23.2891 21.5498 28.2484 28.2385 31.6374 30.3194C35.0264 32.4004 33.0406 27.8019 30.433 24.8895C27.8254 21.977 26.4141 15.4075 20.9631 11.8982C15.512 8.38886 11.356 19.6588 10.0484 21.8442C8.74089 24.0296 1.89956 19.5592 -1.59012 19.5487Z" fill="#00CDAE"/>
9
+ </g>
10
+ <g filter="url(#filter2_f_22375_4714)">
11
+ <path d="M6.88339 24.817C3.95388 26.0649 -2.80014 21.8313 -4.47906 21.54C-7.79851 22.5099 -4.32659 31.9255 -1.12628 32.5195C2.07403 33.1135 7.1615 28.7915 9.67364 26.7363C12.1858 24.6811 14.5046 20.5149 13.2021 20.7915C11.8997 21.0681 10.5453 23.2571 6.88339 24.817Z" fill="#FFAD01"/>
12
+ </g>
13
+ <g filter="url(#filter3_f_22375_4714)">
14
+ <path d="M33.4662 17.1726C29.6443 17.697 26.4904 13.4818 25.3911 11.3087C25.0185 11.8263 24.1036 13.1669 24.1668 14.5161C24.3626 18.6944 27.6259 21.2796 29.9518 23.6452C32.2778 26.0109 35.1785 28.042 42.8721 27.8006C49.027 27.6075 55.7696 24.8601 58.3716 23.5105L58.9452 14.5979C59.0491 14.1308 58.6261 12.8865 56.1039 11.6454C52.951 10.0941 48.3434 10.5191 44.3482 12.0853C40.3531 13.6515 38.2436 16.5171 33.4662 17.1726Z" fill="#2575F0"/>
15
+ </g>
16
+ <g filter="url(#filter4_f_22375_4714)">
17
+ <path d="M30.0553 19.4007C25.3829 15.8836 21.7514 16.6981 20.7096 17.9715C20.5581 18.3587 20.5318 19.3063 21.6389 19.9991C23.0228 20.8652 25.051 20.729 28.2944 24.3917C31.5378 28.0544 33.8762 33.3522 42.925 35.9767C50.164 38.0762 56.7468 31.5469 59.1333 28.0198L59.9536 15.2748C57.7425 14.7306 52.6142 14.1751 49.7896 16.3069C46.2589 18.9718 44.7329 23.1105 40.6326 24.0622C36.5324 25.0139 34.7277 22.9178 30.0553 19.4007Z" fill="#00CDAE"/>
18
+ </g>
19
+ <path d="M33.4781 18.951C33.8761 18.8079 34.2233 19.26 33.9821 19.6072L28.5289 27.451L34.0016 35.5476C34.2379 35.8972 33.8876 36.3442 33.4918 36.198L13.191 28.6892C12.0511 28.2676 12.0581 26.6532 13.2018 26.242L18.066 24.492C18.9016 25.9662 20.4838 26.9617 22.2994 26.9617C24.9858 26.9617 27.1637 24.7838 27.1637 22.0974C27.1637 21.8076 27.1371 21.5238 27.0885 21.2478L33.4781 18.951ZM10.0201 8.45193C9.77872 8.10469 10.1251 7.65258 10.5231 7.79568L30.7994 15.0867C31.943 15.4979 31.9508 17.1122 30.8112 17.534L26.2262 19.2293C25.3413 18.02 23.9127 17.2332 22.2994 17.2332C19.6132 17.2332 17.4353 19.4112 17.4352 22.0974C17.4352 22.2242 17.4413 22.35 17.4508 22.4744L10.5104 25.0428C10.1146 25.1891 9.76353 24.742 9.99963 24.3924L15.4723 16.2947L10.0201 8.45193Z" fill="white"/>
20
+ </g>
21
+ <defs>
22
+ <filter id="filter0_f_22375_4714" x="12.3744" y="3.00137" width="20.8145" height="26.5005" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
23
+ <feFlood flood-opacity="0" result="BackgroundImageFix"/>
24
+ <feBlend mode="normal" in="SourceGraphic" in2="BackgroundImageFix" result="shape"/>
25
+ <feGaussianBlur stdDeviation="3.06109" result="effect1_foregroundBlur_22375_4714"/>
26
+ </filter>
27
+ <filter id="filter1_f_22375_4714" x="-19.8118" y="-3.46712" width="67.9383" height="49.7305" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
28
+ <feFlood flood-opacity="0" result="BackgroundImageFix"/>
29
+ <feBlend mode="normal" in="SourceGraphic" in2="BackgroundImageFix" result="shape"/>
30
+ <feGaussianBlur stdDeviation="7.34661" result="effect1_foregroundBlur_22375_4714"/>
31
+ </filter>
32
+ <filter id="filter2_f_22375_4714" x="-20.5191" y="6.08516" width="48.7889" height="41.1831" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
33
+ <feFlood flood-opacity="0" result="BackgroundImageFix"/>
34
+ <feBlend mode="normal" in="SourceGraphic" in2="BackgroundImageFix" result="shape"/>
35
+ <feGaussianBlur stdDeviation="7.34661" result="effect1_foregroundBlur_22375_4714"/>
36
+ </filter>
37
+ <filter id="filter3_f_22375_4714" x="9.47047" y="-4.01915" width="64.1821" height="46.5325" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
38
+ <feFlood flood-opacity="0" result="BackgroundImageFix"/>
39
+ <feBlend mode="normal" in="SourceGraphic" in2="BackgroundImageFix" result="shape"/>
40
+ <feGaussianBlur stdDeviation="7.34661" result="effect1_foregroundBlur_22375_4714"/>
41
+ </filter>
42
+ <filter id="filter4_f_22375_4714" x="5.94069" y="0.0858917" width="68.7061" height="50.9912" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
43
+ <feFlood flood-opacity="0" result="BackgroundImageFix"/>
44
+ <feBlend mode="normal" in="SourceGraphic" in2="BackgroundImageFix" result="shape"/>
45
+ <feGaussianBlur stdDeviation="7.34661" result="effect1_foregroundBlur_22375_4714"/>
46
+ </filter>
47
+ <clipPath id="clip0_22375_4714">
48
+ <rect width="44" height="43.9999" fill="white"/>
49
+ </clipPath>
50
+ </defs>
51
+ </svg>
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Handle API errors with structured logging
3
+ *
4
+ * @param {Error|Object} error - Error object from API call
5
+ * @param {Object} context - Additional context for debugging
6
+ * @returns {string} User-friendly error message
7
+ */
8
+ export function handleApiError(error) {
9
+ var _error$toJSON;
10
+ var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
11
+ var errorData = error.response || ((_error$toJSON = error.toJSON) === null || _error$toJSON === void 0 ? void 0 : _error$toJSON.call(error)) || error;
12
+ var errorMessage = error.message || 'An unexpected error occurred';
13
+
14
+ // Log detailed error for debugging
15
+ console.error('API Error:', {
16
+ message: errorMessage,
17
+ error: errorData,
18
+ context: context,
19
+ timestamp: new Date().toISOString()
20
+ });
21
+ return errorMessage;
22
+ }
23
+
24
+ /**
25
+ * Get user-friendly error message from error object
26
+ *
27
+ * @param {Error|Object} error - Error object
28
+ * @returns {string} User-friendly error message
29
+ */
30
+ export function getUserErrorMessage(error) {
31
+ var _error$response;
32
+ if ((_error$response = error.response) !== null && _error$response !== void 0 && (_error$response = _error$response.data) !== null && _error$response !== void 0 && _error$response.error) {
33
+ return error.response.data.error;
34
+ }
35
+ if (error.message) {
36
+ return error.message;
37
+ }
38
+ return 'Something went wrong. Please try again.';
39
+ }