instantsearch.js 4.86.1 → 4.87.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. package/cjs/connectors/autocomplete/connectAutocomplete.js +13 -5
  2. package/cjs/connectors/chat/connectChat.js +92 -20
  3. package/cjs/connectors/filter-suggestions/connectFilterSuggestions.js +255 -0
  4. package/cjs/connectors/index.js +7 -0
  5. package/cjs/connectors/index.umd.js +7 -0
  6. package/cjs/index.js +2 -2
  7. package/cjs/lib/ai-lite/abstract-chat.js +823 -0
  8. package/cjs/lib/ai-lite/index.js +57 -0
  9. package/cjs/lib/ai-lite/stream-parser.js +138 -0
  10. package/cjs/lib/ai-lite/transport.js +218 -0
  11. package/cjs/lib/ai-lite/types.js +1 -0
  12. package/cjs/lib/ai-lite/utils.js +85 -0
  13. package/cjs/lib/chat/chat.js +6 -6
  14. package/cjs/lib/chat/index.js +5 -2
  15. package/cjs/lib/version.js +1 -1
  16. package/cjs/widgets/autocomplete/autocomplete.js +15 -6
  17. package/cjs/widgets/chat/chat.js +32 -3
  18. package/cjs/widgets/filter-suggestions/filter-suggestions.js +131 -0
  19. package/cjs/widgets/index.js +7 -0
  20. package/cjs/widgets/index.umd.js +7 -0
  21. package/dist/instantsearch.development.d.ts +2551 -346
  22. package/dist/instantsearch.development.js +9408 -4314
  23. package/dist/instantsearch.development.js.map +1 -1
  24. package/dist/instantsearch.production.d.ts +2551 -346
  25. package/dist/instantsearch.production.min.d.ts +2551 -346
  26. package/dist/instantsearch.production.min.js +2 -2
  27. package/dist/instantsearch.production.min.js.map +1 -1
  28. package/es/connectors/autocomplete/connectAutocomplete.d.ts +10 -0
  29. package/es/connectors/autocomplete/connectAutocomplete.js +13 -5
  30. package/es/connectors/chat/connectChat.d.ts +24 -14
  31. package/es/connectors/chat/connectChat.js +90 -18
  32. package/es/connectors/filter-suggestions/connectFilterSuggestions.d.ts +95 -0
  33. package/es/connectors/filter-suggestions/connectFilterSuggestions.js +249 -0
  34. package/es/connectors/frequently-bought-together/connectFrequentlyBoughtTogether.d.ts +2 -2
  35. package/es/connectors/geo-search/connectGeoSearch.d.ts +1 -1
  36. package/es/connectors/hits/connectHits.d.ts +1 -1
  37. package/es/connectors/hits/connectHitsWithInsights.d.ts +1 -1
  38. package/es/connectors/index.d.ts +1 -0
  39. package/es/connectors/index.js +2 -1
  40. package/es/connectors/index.umd.d.ts +1 -0
  41. package/es/connectors/index.umd.js +2 -1
  42. package/es/connectors/infinite-hits/connectInfiniteHits.d.ts +1 -1
  43. package/es/connectors/infinite-hits/connectInfiniteHitsWithInsights.d.ts +1 -1
  44. package/es/connectors/looking-similar/connectLookingSimilar.d.ts +2 -2
  45. package/es/connectors/related-products/connectRelatedProducts.d.ts +2 -2
  46. package/es/connectors/trending-items/connectTrendingItems.d.ts +2 -2
  47. package/es/lib/ai-lite/abstract-chat.d.ts +89 -0
  48. package/es/lib/ai-lite/abstract-chat.js +818 -0
  49. package/es/lib/ai-lite/index.d.ts +11 -0
  50. package/es/lib/ai-lite/index.js +18 -0
  51. package/es/lib/ai-lite/stream-parser.d.ts +18 -0
  52. package/es/lib/ai-lite/stream-parser.js +131 -0
  53. package/es/lib/ai-lite/transport.d.ts +24 -0
  54. package/es/lib/ai-lite/transport.js +214 -0
  55. package/es/lib/ai-lite/types.d.ts +362 -0
  56. package/es/lib/ai-lite/types.js +1 -0
  57. package/es/lib/ai-lite/utils.d.ts +12 -0
  58. package/es/lib/ai-lite/utils.js +76 -0
  59. package/es/lib/chat/chat.d.ts +3 -3
  60. package/es/lib/chat/chat.js +4 -4
  61. package/es/lib/chat/index.d.ts +3 -0
  62. package/es/lib/chat/index.js +4 -1
  63. package/es/lib/version.d.ts +1 -1
  64. package/es/lib/version.js +1 -1
  65. package/es/widgets/autocomplete/autocomplete.d.ts +2 -1
  66. package/es/widgets/autocomplete/autocomplete.js +15 -6
  67. package/es/widgets/chat/chat.d.ts +22 -14
  68. package/es/widgets/chat/chat.js +33 -4
  69. package/es/widgets/filter-suggestions/filter-suggestions.d.ts +689 -0
  70. package/es/widgets/filter-suggestions/filter-suggestions.js +124 -0
  71. package/es/widgets/frequently-bought-together/frequently-bought-together.d.ts +3 -3
  72. package/es/widgets/geo-search/geo-search.d.ts +1 -1
  73. package/es/widgets/hits/hits.d.ts +1 -1
  74. package/es/widgets/index.d.ts +1 -0
  75. package/es/widgets/index.js +2 -1
  76. package/es/widgets/index.umd.d.ts +1 -0
  77. package/es/widgets/index.umd.js +2 -1
  78. package/es/widgets/infinite-hits/infinite-hits.d.ts +1 -1
  79. package/es/widgets/looking-similar/looking-similar.d.ts +3 -3
  80. package/es/widgets/related-products/related-products.d.ts +3 -3
  81. package/es/widgets/trending-items/trending-items.d.ts +3 -3
  82. package/package.json +6 -7
@@ -0,0 +1,249 @@
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 _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
3
+ 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."); }
4
+ 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; } }
5
+ 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; }
6
+ 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; } }
7
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return 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
+ import { checkRendering, createDocumentationMessageGenerator, getAlgoliaAgent, getAppIdAndApiKey, getRefinements, noop } from "../../lib/utils/index.js";
14
+ var withUsage = createDocumentationMessageGenerator({
15
+ name: 'filter-suggestions',
16
+ connector: true
17
+ });
18
+ var connectFilterSuggestions = function connectFilterSuggestions(renderFn) {
19
+ var unmountFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;
20
+ checkRendering(renderFn, withUsage());
21
+ return function (widgetParams) {
22
+ var agentId = widgetParams.agentId,
23
+ attributes = widgetParams.attributes,
24
+ _widgetParams$maxSugg = widgetParams.maxSuggestions,
25
+ maxSuggestions = _widgetParams$maxSugg === void 0 ? 3 : _widgetParams$maxSugg,
26
+ _widgetParams$debounc = widgetParams.debounceMs,
27
+ debounceMs = _widgetParams$debounc === void 0 ? 300 : _widgetParams$debounc,
28
+ _widgetParams$hitsToS = widgetParams.hitsToSample,
29
+ hitsToSample = _widgetParams$hitsToS === void 0 ? 5 : _widgetParams$hitsToS,
30
+ _widgetParams$transfo = widgetParams.transformItems,
31
+ transformItems = _widgetParams$transfo === void 0 ? function (items) {
32
+ return items;
33
+ } : _widgetParams$transfo,
34
+ transport = widgetParams.transport;
35
+ if (!agentId && !transport) {
36
+ throw new Error(withUsage('The `agentId` option is required unless a custom `transport` is provided.'));
37
+ }
38
+ var endpoint;
39
+ var headers;
40
+ var suggestions = [];
41
+ var isLoading = false;
42
+ var debounceTimer;
43
+ var lastStateSignature = null; // null means never fetched
44
+ var refine;
45
+ var searchHelper = null;
46
+ var latestRenderOptions = null;
47
+
48
+ // Create a signature of the current search state (query + refinements)
49
+ var getStateSignature = function getStateSignature(results) {
50
+ var query = results.query || '';
51
+ var refinements = searchHelper ? JSON.stringify(searchHelper.state.facetsRefinements) + JSON.stringify(searchHelper.state.disjunctiveFacetsRefinements) + JSON.stringify(searchHelper.state.hierarchicalFacetsRefinements) : '';
52
+ return "".concat(query, "|").concat(refinements);
53
+ };
54
+ var _getWidgetRenderState = function getWidgetRenderState(renderOptions) {
55
+ var results = 'results' in renderOptions ? renderOptions.results : undefined;
56
+ var transformedSuggestions = transformItems(suggestions, {
57
+ results: results
58
+ });
59
+ return {
60
+ suggestions: transformedSuggestions,
61
+ isLoading: isLoading,
62
+ refine: refine,
63
+ widgetParams: widgetParams
64
+ };
65
+ };
66
+
67
+ // Minimum duration to show skeleton to avoid flash when results are cached
68
+ var MIN_SKELETON_DURATION_MS = 300;
69
+ var fetchSuggestions = function fetchSuggestions(results, renderOptions) {
70
+ var _results$hits, _rawResults$;
71
+ if (!(results !== null && results !== void 0 && (_results$hits = results.hits) !== null && _results$hits !== void 0 && _results$hits.length)) {
72
+ suggestions = [];
73
+ isLoading = false;
74
+ renderFn(_objectSpread(_objectSpread({}, _getWidgetRenderState(renderOptions)), {}, {
75
+ instantSearchInstance: renderOptions.instantSearchInstance
76
+ }), false);
77
+ return;
78
+ }
79
+ var loadingStartTime = Date.now();
80
+ isLoading = true;
81
+ renderFn(_objectSpread(_objectSpread({}, _getWidgetRenderState(renderOptions)), {}, {
82
+ instantSearchInstance: renderOptions.instantSearchInstance
83
+ }), false);
84
+
85
+ // Get facets from raw results (results.facets is processed differently)
86
+ var rawResults = results._rawResults;
87
+ var rawFacets = (rawResults === null || rawResults === void 0 ? void 0 : (_rawResults$ = rawResults[0]) === null || _rawResults$ === void 0 ? void 0 : _rawResults$.facets) || {};
88
+ var facetsToSend = attributes ? Object.fromEntries(Object.entries(rawFacets).filter(function (_ref) {
89
+ var _ref2 = _slicedToArray(_ref, 1),
90
+ key = _ref2[0];
91
+ return attributes.includes(key);
92
+ })) : rawFacets;
93
+
94
+ // Collect current refinements to exclude from suggestions
95
+ var currentRefinements = searchHelper ? getRefinements(results, searchHelper.state).map(function (refinement) {
96
+ return {
97
+ attribute: refinement.attribute,
98
+ value: refinement.name
99
+ };
100
+ }) : [];
101
+ var messageText = JSON.stringify({
102
+ query: results.query,
103
+ facets: facetsToSend,
104
+ hitsSample: results.hits.slice(0, hitsToSample),
105
+ currentRefinements: currentRefinements,
106
+ maxSuggestions: maxSuggestions
107
+ });
108
+ var payload = {
109
+ messages: [{
110
+ id: "sr-".concat(Date.now()),
111
+ createdAt: new Date().toISOString(),
112
+ role: 'user',
113
+ parts: [{
114
+ type: 'text',
115
+ text: messageText
116
+ }]
117
+ }]
118
+ };
119
+
120
+ // Apply custom body transformation if provided
121
+ var finalPayload = transport !== null && transport !== void 0 && transport.prepareSendMessagesRequest ? transport.prepareSendMessagesRequest(payload).body : payload;
122
+ fetch(endpoint, {
123
+ method: 'POST',
124
+ headers: _objectSpread(_objectSpread({}, headers), {}, {
125
+ 'Content-Type': 'application/json'
126
+ }),
127
+ body: JSON.stringify(finalPayload)
128
+ }).then(function (response) {
129
+ if (!response.ok) {
130
+ throw new Error("HTTP error ".concat(response.status));
131
+ }
132
+ return response.json();
133
+ }).then(function (data) {
134
+ var parsedSuggestions = JSON.parse(data.parts[1].text);
135
+ var validSuggestions = (Array.isArray(parsedSuggestions) ? parsedSuggestions : []).filter(function (suggestion) {
136
+ if (!(suggestion !== null && suggestion !== void 0 && suggestion.attribute) || !(suggestion !== null && suggestion !== void 0 && suggestion.value) || !(suggestion !== null && suggestion !== void 0 && suggestion.label)) {
137
+ return false;
138
+ }
139
+ // If attributes filter is specified, only allow suggestions for those attributes
140
+ if (attributes && !attributes.includes(suggestion.attribute)) {
141
+ return false;
142
+ }
143
+ return true;
144
+ }).slice(0, maxSuggestions);
145
+ suggestions = validSuggestions;
146
+ }).catch(function () {
147
+ suggestions = [];
148
+ }).finally(function () {
149
+ var elapsed = Date.now() - loadingStartTime;
150
+ var remainingDelay = Math.max(0, MIN_SKELETON_DURATION_MS - elapsed);
151
+ var finishLoading = function finishLoading() {
152
+ isLoading = false;
153
+ renderFn(_objectSpread(_objectSpread({}, _getWidgetRenderState(renderOptions)), {}, {
154
+ instantSearchInstance: renderOptions.instantSearchInstance
155
+ }), false);
156
+ };
157
+ if (remainingDelay > 0) {
158
+ setTimeout(finishLoading, remainingDelay);
159
+ } else {
160
+ finishLoading();
161
+ }
162
+ });
163
+ };
164
+ return {
165
+ $$type: 'ais.filterSuggestions',
166
+ init: function init(initOptions) {
167
+ var instantSearchInstance = initOptions.instantSearchInstance,
168
+ helper = initOptions.helper;
169
+ searchHelper = helper;
170
+ if (transport) {
171
+ // Use custom transport configuration
172
+ endpoint = transport.api;
173
+ headers = transport.headers || {};
174
+ } else {
175
+ // Use default Algolia agent endpoint
176
+ var _getAppIdAndApiKey = getAppIdAndApiKey(instantSearchInstance.client),
177
+ _getAppIdAndApiKey2 = _slicedToArray(_getAppIdAndApiKey, 2),
178
+ appId = _getAppIdAndApiKey2[0],
179
+ apiKey = _getAppIdAndApiKey2[1];
180
+ if (!appId || !apiKey) {
181
+ throw new Error(withUsage('Could not extract Algolia credentials from the search client.'));
182
+ }
183
+ endpoint = "https://".concat(appId, ".algolia.net/agent-studio/1/agents/").concat(agentId, "/completions?compatibilityMode=ai-sdk-5&stream=false");
184
+ headers = {
185
+ 'x-algolia-application-id': appId,
186
+ 'x-algolia-api-key': apiKey,
187
+ 'x-algolia-agent': getAlgoliaAgent(instantSearchInstance.client)
188
+ };
189
+ }
190
+ refine = function refine(attribute, value) {
191
+ var _helper$state$hierarc;
192
+ // Check if the attribute belongs to a hierarchical facet
193
+ // by finding a hierarchical facet that includes this attribute
194
+ var attr = ((_helper$state$hierarc = helper.state.hierarchicalFacets.find(function (facet) {
195
+ return facet.attributes.includes(attribute);
196
+ })) === null || _helper$state$hierarc === void 0 ? void 0 : _helper$state$hierarc.name) || attribute;
197
+ helper.toggleFacetRefinement(attr, value);
198
+ helper.search();
199
+ };
200
+ renderFn(_objectSpread(_objectSpread({}, _getWidgetRenderState(initOptions)), {}, {
201
+ instantSearchInstance: instantSearchInstance
202
+ }), true);
203
+ },
204
+ render: function render(renderOptions) {
205
+ var results = renderOptions.results,
206
+ instantSearchInstance = renderOptions.instantSearchInstance;
207
+
208
+ // Always store the latest render options
209
+ latestRenderOptions = renderOptions;
210
+ if (!results) {
211
+ renderFn(_objectSpread(_objectSpread({}, _getWidgetRenderState(renderOptions)), {}, {
212
+ instantSearchInstance: instantSearchInstance
213
+ }), false);
214
+ return;
215
+ }
216
+
217
+ // Debounce: only fetch if search state changed (query or refinements) and after delay
218
+ var stateSignature = getStateSignature(results);
219
+ if (stateSignature !== lastStateSignature) {
220
+ lastStateSignature = stateSignature;
221
+ clearTimeout(debounceTimer);
222
+ debounceTimer = setTimeout(function () {
223
+ var _latestRenderOptions;
224
+ // Use the latest render options when the timeout fires
225
+ if ((_latestRenderOptions = latestRenderOptions) !== null && _latestRenderOptions !== void 0 && _latestRenderOptions.results) {
226
+ fetchSuggestions(latestRenderOptions.results, latestRenderOptions);
227
+ }
228
+ }, debounceMs);
229
+ }
230
+ renderFn(_objectSpread(_objectSpread({}, _getWidgetRenderState(renderOptions)), {}, {
231
+ instantSearchInstance: instantSearchInstance
232
+ }), false);
233
+ },
234
+ dispose: function dispose() {
235
+ clearTimeout(debounceTimer);
236
+ unmountFn();
237
+ },
238
+ getRenderState: function getRenderState(renderState, renderOptions) {
239
+ return _objectSpread(_objectSpread({}, renderState), {}, {
240
+ filterSuggestions: this.getWidgetRenderState(renderOptions)
241
+ });
242
+ },
243
+ getWidgetRenderState: function getWidgetRenderState(renderOptions) {
244
+ return _getWidgetRenderState(renderOptions);
245
+ }
246
+ };
247
+ };
248
+ };
249
+ export default connectFilterSuggestions;
@@ -61,7 +61,7 @@ declare const _default: <TWidgetParams extends UnknownWidgetParams>(renderFn: Re
61
61
  breadcrumb?: {
62
62
  [rootAttribute: string]: import("../../types").WidgetRenderState<import("../breadcrumb/connectBreadcrumb").BreadcrumbRenderState, import("../breadcrumb/connectBreadcrumb").BreadcrumbConnectorParams>;
63
63
  } | undefined;
64
- chat?: import("../../types").WidgetRenderState<import("../chat/connectChat").ChatRenderState<import("ai").UIMessage<unknown, import("ai").UIDataTypes, import("ai").UITools>>, import("../chat/connectChat").ChatConnectorParams<import("ai").UIMessage<unknown, import("ai").UIDataTypes, import("ai").UITools>>> | undefined;
64
+ chat?: import("../../types").WidgetRenderState<import("../chat/connectChat").ChatRenderState<import("../../lib/ai-lite").UIMessage<unknown, import("../../lib/ai-lite").UIDataTypes, import("../../lib/ai-lite").UITools>>, import("../chat/connectChat").ChatConnectorParams<import("../../lib/ai-lite").UIMessage<unknown, import("../../lib/ai-lite").UIDataTypes, import("../../lib/ai-lite").UITools>>> | undefined;
65
65
  clearRefinements?: import("../../types").WidgetRenderState<import("../clear-refinements/connectClearRefinements").ClearRefinementsRenderState, import("../clear-refinements/connectClearRefinements").ClearRefinementsConnectorParams> | undefined;
66
66
  configure?: import("../../types").WidgetRenderState<import("../configure/connectConfigure").ConfigureRenderState, import("../configure/connectConfigure").ConfigureConnectorParams> | undefined;
67
67
  currentRefinements?: import("../../types").WidgetRenderState<import("../current-refinements/connectCurrentRefinements").CurrentRefinementsRenderState, import("../current-refinements/connectCurrentRefinements").CurrentRefinementsConnectorParams> | undefined;
@@ -106,7 +106,7 @@ declare const _default: <TWidgetParams extends UnknownWidgetParams>(renderFn: Re
106
106
  breadcrumb?: {
107
107
  [rootAttribute: string]: import("../../types").WidgetRenderState<import("../breadcrumb/connectBreadcrumb").BreadcrumbRenderState, import("../breadcrumb/connectBreadcrumb").BreadcrumbConnectorParams>;
108
108
  } | undefined;
109
- chat?: import("../../types").WidgetRenderState<import("../chat/connectChat").ChatRenderState<import("ai").UIMessage<unknown, import("ai").UIDataTypes, import("ai").UITools>>, import("../chat/connectChat").ChatConnectorParams<import("ai").UIMessage<unknown, import("ai").UIDataTypes, import("ai").UITools>>> | undefined;
109
+ chat?: import("../../types").WidgetRenderState<import("../chat/connectChat").ChatRenderState<import("../../lib/ai-lite").UIMessage<unknown, import("../../lib/ai-lite").UIDataTypes, import("../../lib/ai-lite").UITools>>, import("../chat/connectChat").ChatConnectorParams<import("../../lib/ai-lite").UIMessage<unknown, import("../../lib/ai-lite").UIDataTypes, import("../../lib/ai-lite").UITools>>> | undefined;
110
110
  clearRefinements?: import("../../types").WidgetRenderState<import("../clear-refinements/connectClearRefinements").ClearRefinementsRenderState, import("../clear-refinements/connectClearRefinements").ClearRefinementsConnectorParams> | undefined;
111
111
  configure?: import("../../types").WidgetRenderState<import("../configure/connectConfigure").ConfigureRenderState, import("../configure/connectConfigure").ConfigureConnectorParams> | undefined;
112
112
  currentRefinements?: import("../../types").WidgetRenderState<import("../current-refinements/connectCurrentRefinements").CurrentRefinementsRenderState, import("../current-refinements/connectCurrentRefinements").CurrentRefinementsConnectorParams> | undefined;
@@ -137,7 +137,7 @@ declare const _default: <TWidgetParams extends UnknownWidgetParams>(renderFn: Re
137
137
  breadcrumb?: {
138
138
  [rootAttribute: string]: WidgetRenderState<import("../breadcrumb/connectBreadcrumb").BreadcrumbRenderState, import("../breadcrumb/connectBreadcrumb").BreadcrumbConnectorParams>;
139
139
  } | undefined;
140
- chat?: WidgetRenderState<import("../chat/connectChat").ChatRenderState<import("ai").UIMessage<unknown, import("ai").UIDataTypes, import("ai").UITools>>, import("../chat/connectChat").ChatConnectorParams<import("ai").UIMessage<unknown, import("ai").UIDataTypes, import("ai").UITools>>> | undefined;
140
+ chat?: WidgetRenderState<import("../chat/connectChat").ChatRenderState<import("../../lib/ai-lite").UIMessage<unknown, import("../../lib/ai-lite").UIDataTypes, import("../../lib/ai-lite").UITools>>, import("../chat/connectChat").ChatConnectorParams<import("../../lib/ai-lite").UIMessage<unknown, import("../../lib/ai-lite").UIDataTypes, import("../../lib/ai-lite").UITools>>> | undefined;
141
141
  clearRefinements?: WidgetRenderState<import("../clear-refinements/connectClearRefinements").ClearRefinementsRenderState, import("../clear-refinements/connectClearRefinements").ClearRefinementsConnectorParams> | undefined;
142
142
  configure?: WidgetRenderState<import("../configure/connectConfigure").ConfigureRenderState, import("../configure/connectConfigure").ConfigureConnectorParams> | undefined;
143
143
  currentRefinements?: WidgetRenderState<import("../current-refinements/connectCurrentRefinements").CurrentRefinementsRenderState, import("../current-refinements/connectCurrentRefinements").CurrentRefinementsConnectorParams> | undefined;
@@ -58,7 +58,7 @@ declare const _default: <TWidgetParams>(renderFn: Renderer<HitsRenderState, TWid
58
58
  breadcrumb?: {
59
59
  [rootAttribute: string]: WidgetRenderState<import("../breadcrumb/connectBreadcrumb").BreadcrumbRenderState, import("../breadcrumb/connectBreadcrumb").BreadcrumbConnectorParams>;
60
60
  } | undefined;
61
- chat?: WidgetRenderState<import("../chat/connectChat").ChatRenderState<import("ai").UIMessage<unknown, import("ai").UIDataTypes, import("ai").UITools>>, import("../chat/connectChat").ChatConnectorParams<import("ai").UIMessage<unknown, import("ai").UIDataTypes, import("ai").UITools>>> | undefined;
61
+ chat?: WidgetRenderState<import("../chat/connectChat").ChatRenderState<import("../../lib/ai-lite").UIMessage<unknown, import("../../lib/ai-lite").UIDataTypes, import("../../lib/ai-lite").UITools>>, import("../chat/connectChat").ChatConnectorParams<import("../../lib/ai-lite").UIMessage<unknown, import("../../lib/ai-lite").UIDataTypes, import("../../lib/ai-lite").UITools>>> | undefined;
62
62
  clearRefinements?: WidgetRenderState<import("../clear-refinements/connectClearRefinements").ClearRefinementsRenderState, import("../clear-refinements/connectClearRefinements").ClearRefinementsConnectorParams> | undefined;
63
63
  configure?: WidgetRenderState<import("../configure/connectConfigure").ConfigureRenderState, import("../configure/connectConfigure").ConfigureConnectorParams> | undefined;
64
64
  currentRefinements?: WidgetRenderState<import("../current-refinements/connectCurrentRefinements").CurrentRefinementsRenderState, import("../current-refinements/connectCurrentRefinements").CurrentRefinementsConnectorParams> | undefined;
@@ -9,7 +9,7 @@ declare const connectHitsWithInsights: <TWidgetParams>(renderFn: import("../../t
9
9
  breadcrumb?: {
10
10
  [rootAttribute: string]: import("../../types").WidgetRenderState<import("../breadcrumb/connectBreadcrumb").BreadcrumbRenderState, import("../breadcrumb/connectBreadcrumb").BreadcrumbConnectorParams>;
11
11
  } | undefined;
12
- chat?: import("../../types").WidgetRenderState<import("../chat/connectChat").ChatRenderState<import("ai").UIMessage<unknown, import("ai").UIDataTypes, import("ai").UITools>>, import("../chat/connectChat").ChatConnectorParams<import("ai").UIMessage<unknown, import("ai").UIDataTypes, import("ai").UITools>>> | undefined;
12
+ chat?: import("../../types").WidgetRenderState<import("../chat/connectChat").ChatRenderState<import("../../lib/ai-lite").UIMessage<unknown, import("../../lib/ai-lite").UIDataTypes, import("../../lib/ai-lite").UITools>>, import("../chat/connectChat").ChatConnectorParams<import("../../lib/ai-lite").UIMessage<unknown, import("../../lib/ai-lite").UIDataTypes, import("../../lib/ai-lite").UITools>>> | undefined;
13
13
  clearRefinements?: import("../../types").WidgetRenderState<import("../clear-refinements/connectClearRefinements").ClearRefinementsRenderState, import("../clear-refinements/connectClearRefinements").ClearRefinementsConnectorParams> | undefined;
14
14
  configure?: import("../../types").WidgetRenderState<import("../configure/connectConfigure").ConfigureRenderState, import("../configure/connectConfigure").ConfigureConnectorParams> | undefined;
15
15
  currentRefinements?: import("../../types").WidgetRenderState<import("../current-refinements/connectCurrentRefinements").CurrentRefinementsRenderState, import("../current-refinements/connectCurrentRefinements").CurrentRefinementsConnectorParams> | undefined;
@@ -37,3 +37,4 @@ export { default as connectRelevantSort } from './relevant-sort/connectRelevantS
37
37
  export { default as connectFrequentlyBoughtTogether } from './frequently-bought-together/connectFrequentlyBoughtTogether';
38
38
  export { default as connectLookingSimilar } from './looking-similar/connectLookingSimilar';
39
39
  export { default as connectChat } from './chat/connectChat';
40
+ export { default as connectFilterSuggestions } from './filter-suggestions/connectFilterSuggestions';
@@ -42,4 +42,5 @@ export { default as connectVoiceSearch } from "./voice-search/connectVoiceSearch
42
42
  export { default as connectRelevantSort } from "./relevant-sort/connectRelevantSort.js";
43
43
  export { default as connectFrequentlyBoughtTogether } from "./frequently-bought-together/connectFrequentlyBoughtTogether.js";
44
44
  export { default as connectLookingSimilar } from "./looking-similar/connectLookingSimilar.js";
45
- export { default as connectChat } from "./chat/connectChat.js";
45
+ export { default as connectChat } from "./chat/connectChat.js";
46
+ export { default as connectFilterSuggestions } from "./filter-suggestions/connectFilterSuggestions.js";
@@ -37,3 +37,4 @@ export { default as connectRelevantSort } from './relevant-sort/connectRelevantS
37
37
  export { default as connectFrequentlyBoughtTogether } from './frequently-bought-together/connectFrequentlyBoughtTogether';
38
38
  export { default as connectLookingSimilar } from './looking-similar/connectLookingSimilar';
39
39
  export declare const connectChat: () => never;
40
+ export { default as connectFilterSuggestions } from './filter-suggestions/connectFilterSuggestions';
@@ -44,4 +44,5 @@ export { default as connectFrequentlyBoughtTogether } from "./frequently-bought-
44
44
  export { default as connectLookingSimilar } from "./looking-similar/connectLookingSimilar.js";
45
45
  export var connectChat = function connectChat() {
46
46
  throw new Error("\"connectChat\" is not available from the UMD build.\n\nPlease use InstantSearch.js with a packaging system:\nhttps://www.algolia.com/doc/guides/building-search-ui/installation/js/#with-a-packaging-system");
47
- };
47
+ };
48
+ export { default as connectFilterSuggestions } from "./filter-suggestions/connectFilterSuggestions.js";
@@ -108,7 +108,7 @@ declare const _default: <TWidgetParams extends UnknownWidgetParams>(renderFn: Re
108
108
  breadcrumb?: {
109
109
  [rootAttribute: string]: WidgetRenderState<import("../breadcrumb/connectBreadcrumb").BreadcrumbRenderState, import("../breadcrumb/connectBreadcrumb").BreadcrumbConnectorParams>;
110
110
  } | undefined;
111
- chat?: WidgetRenderState<import("../chat/connectChat").ChatRenderState<import("ai").UIMessage<unknown, import("ai").UIDataTypes, import("ai").UITools>>, import("../chat/connectChat").ChatConnectorParams<import("ai").UIMessage<unknown, import("ai").UIDataTypes, import("ai").UITools>>> | undefined;
111
+ chat?: WidgetRenderState<import("../chat/connectChat").ChatRenderState<import("../../lib/ai-lite").UIMessage<unknown, import("../../lib/ai-lite").UIDataTypes, import("../../lib/ai-lite").UITools>>, import("../chat/connectChat").ChatConnectorParams<import("../../lib/ai-lite").UIMessage<unknown, import("../../lib/ai-lite").UIDataTypes, import("../../lib/ai-lite").UITools>>> | undefined;
112
112
  clearRefinements?: WidgetRenderState<import("../clear-refinements/connectClearRefinements").ClearRefinementsRenderState, import("../clear-refinements/connectClearRefinements").ClearRefinementsConnectorParams> | undefined;
113
113
  configure?: WidgetRenderState<import("../configure/connectConfigure").ConfigureRenderState, import("../configure/connectConfigure").ConfigureConnectorParams> | undefined;
114
114
  currentRefinements?: WidgetRenderState<import("../current-refinements/connectCurrentRefinements").CurrentRefinementsRenderState, import("../current-refinements/connectCurrentRefinements").CurrentRefinementsConnectorParams> | undefined;
@@ -9,7 +9,7 @@ declare const connectInfiniteHitsWithInsights: <TWidgetParams extends import("..
9
9
  breadcrumb?: {
10
10
  [rootAttribute: string]: import("../../types").WidgetRenderState<import("../breadcrumb/connectBreadcrumb").BreadcrumbRenderState, import("../breadcrumb/connectBreadcrumb").BreadcrumbConnectorParams>;
11
11
  } | undefined;
12
- chat?: import("../../types").WidgetRenderState<import("../chat/connectChat").ChatRenderState<import("ai").UIMessage<unknown, import("ai").UIDataTypes, import("ai").UITools>>, import("../chat/connectChat").ChatConnectorParams<import("ai").UIMessage<unknown, import("ai").UIDataTypes, import("ai").UITools>>> | undefined;
12
+ chat?: import("../../types").WidgetRenderState<import("../chat/connectChat").ChatRenderState<import("../../lib/ai-lite").UIMessage<unknown, import("../../lib/ai-lite").UIDataTypes, import("../../lib/ai-lite").UITools>>, import("../chat/connectChat").ChatConnectorParams<import("../../lib/ai-lite").UIMessage<unknown, import("../../lib/ai-lite").UIDataTypes, import("../../lib/ai-lite").UITools>>> | undefined;
13
13
  clearRefinements?: import("../../types").WidgetRenderState<import("../clear-refinements/connectClearRefinements").ClearRefinementsRenderState, import("../clear-refinements/connectClearRefinements").ClearRefinementsConnectorParams> | undefined;
14
14
  configure?: import("../../types").WidgetRenderState<import("../configure/connectConfigure").ConfigureRenderState, import("../configure/connectConfigure").ConfigureConnectorParams> | undefined;
15
15
  currentRefinements?: import("../../types").WidgetRenderState<import("../current-refinements/connectCurrentRefinements").CurrentRefinementsRenderState, import("../current-refinements/connectCurrentRefinements").CurrentRefinementsConnectorParams> | undefined;
@@ -61,7 +61,7 @@ declare const _default: <TWidgetParams extends UnknownWidgetParams>(renderFn: Re
61
61
  breadcrumb?: {
62
62
  [rootAttribute: string]: import("../../types").WidgetRenderState<import("../breadcrumb/connectBreadcrumb").BreadcrumbRenderState, import("../breadcrumb/connectBreadcrumb").BreadcrumbConnectorParams>;
63
63
  } | undefined;
64
- chat?: import("../../types").WidgetRenderState<import("../chat/connectChat").ChatRenderState<import("ai").UIMessage<unknown, import("ai").UIDataTypes, import("ai").UITools>>, import("../chat/connectChat").ChatConnectorParams<import("ai").UIMessage<unknown, import("ai").UIDataTypes, import("ai").UITools>>> | undefined;
64
+ chat?: import("../../types").WidgetRenderState<import("../chat/connectChat").ChatRenderState<import("../../lib/ai-lite").UIMessage<unknown, import("../../lib/ai-lite").UIDataTypes, import("../../lib/ai-lite").UITools>>, import("../chat/connectChat").ChatConnectorParams<import("../../lib/ai-lite").UIMessage<unknown, import("../../lib/ai-lite").UIDataTypes, import("../../lib/ai-lite").UITools>>> | undefined;
65
65
  clearRefinements?: import("../../types").WidgetRenderState<import("../clear-refinements/connectClearRefinements").ClearRefinementsRenderState, import("../clear-refinements/connectClearRefinements").ClearRefinementsConnectorParams> | undefined;
66
66
  configure?: import("../../types").WidgetRenderState<import("../configure/connectConfigure").ConfigureRenderState, import("../configure/connectConfigure").ConfigureConnectorParams> | undefined;
67
67
  currentRefinements?: import("../../types").WidgetRenderState<import("../current-refinements/connectCurrentRefinements").CurrentRefinementsRenderState, import("../current-refinements/connectCurrentRefinements").CurrentRefinementsConnectorParams> | undefined;
@@ -106,7 +106,7 @@ declare const _default: <TWidgetParams extends UnknownWidgetParams>(renderFn: Re
106
106
  breadcrumb?: {
107
107
  [rootAttribute: string]: import("../../types").WidgetRenderState<import("../breadcrumb/connectBreadcrumb").BreadcrumbRenderState, import("../breadcrumb/connectBreadcrumb").BreadcrumbConnectorParams>;
108
108
  } | undefined;
109
- chat?: import("../../types").WidgetRenderState<import("../chat/connectChat").ChatRenderState<import("ai").UIMessage<unknown, import("ai").UIDataTypes, import("ai").UITools>>, import("../chat/connectChat").ChatConnectorParams<import("ai").UIMessage<unknown, import("ai").UIDataTypes, import("ai").UITools>>> | undefined;
109
+ chat?: import("../../types").WidgetRenderState<import("../chat/connectChat").ChatRenderState<import("../../lib/ai-lite").UIMessage<unknown, import("../../lib/ai-lite").UIDataTypes, import("../../lib/ai-lite").UITools>>, import("../chat/connectChat").ChatConnectorParams<import("../../lib/ai-lite").UIMessage<unknown, import("../../lib/ai-lite").UIDataTypes, import("../../lib/ai-lite").UITools>>> | undefined;
110
110
  clearRefinements?: import("../../types").WidgetRenderState<import("../clear-refinements/connectClearRefinements").ClearRefinementsRenderState, import("../clear-refinements/connectClearRefinements").ClearRefinementsConnectorParams> | undefined;
111
111
  configure?: import("../../types").WidgetRenderState<import("../configure/connectConfigure").ConfigureRenderState, import("../configure/connectConfigure").ConfigureConnectorParams> | undefined;
112
112
  currentRefinements?: import("../../types").WidgetRenderState<import("../current-refinements/connectCurrentRefinements").CurrentRefinementsRenderState, import("../current-refinements/connectCurrentRefinements").CurrentRefinementsConnectorParams> | undefined;
@@ -61,7 +61,7 @@ declare const _default: <TWidgetParams extends UnknownWidgetParams>(renderFn: Re
61
61
  breadcrumb?: {
62
62
  [rootAttribute: string]: import("../../types").WidgetRenderState<import("../breadcrumb/connectBreadcrumb").BreadcrumbRenderState, import("../breadcrumb/connectBreadcrumb").BreadcrumbConnectorParams>;
63
63
  } | undefined;
64
- chat?: import("../../types").WidgetRenderState<import("../chat/connectChat").ChatRenderState<import("ai").UIMessage<unknown, import("ai").UIDataTypes, import("ai").UITools>>, import("../chat/connectChat").ChatConnectorParams<import("ai").UIMessage<unknown, import("ai").UIDataTypes, import("ai").UITools>>> | undefined;
64
+ chat?: import("../../types").WidgetRenderState<import("../chat/connectChat").ChatRenderState<import("../../lib/ai-lite").UIMessage<unknown, import("../../lib/ai-lite").UIDataTypes, import("../../lib/ai-lite").UITools>>, import("../chat/connectChat").ChatConnectorParams<import("../../lib/ai-lite").UIMessage<unknown, import("../../lib/ai-lite").UIDataTypes, import("../../lib/ai-lite").UITools>>> | undefined;
65
65
  clearRefinements?: import("../../types").WidgetRenderState<import("../clear-refinements/connectClearRefinements").ClearRefinementsRenderState, import("../clear-refinements/connectClearRefinements").ClearRefinementsConnectorParams> | undefined;
66
66
  configure?: import("../../types").WidgetRenderState<import("../configure/connectConfigure").ConfigureRenderState, import("../configure/connectConfigure").ConfigureConnectorParams> | undefined;
67
67
  currentRefinements?: import("../../types").WidgetRenderState<import("../current-refinements/connectCurrentRefinements").CurrentRefinementsRenderState, import("../current-refinements/connectCurrentRefinements").CurrentRefinementsConnectorParams> | undefined;
@@ -106,7 +106,7 @@ declare const _default: <TWidgetParams extends UnknownWidgetParams>(renderFn: Re
106
106
  breadcrumb?: {
107
107
  [rootAttribute: string]: import("../../types").WidgetRenderState<import("../breadcrumb/connectBreadcrumb").BreadcrumbRenderState, import("../breadcrumb/connectBreadcrumb").BreadcrumbConnectorParams>;
108
108
  } | undefined;
109
- chat?: import("../../types").WidgetRenderState<import("../chat/connectChat").ChatRenderState<import("ai").UIMessage<unknown, import("ai").UIDataTypes, import("ai").UITools>>, import("../chat/connectChat").ChatConnectorParams<import("ai").UIMessage<unknown, import("ai").UIDataTypes, import("ai").UITools>>> | undefined;
109
+ chat?: import("../../types").WidgetRenderState<import("../chat/connectChat").ChatRenderState<import("../../lib/ai-lite").UIMessage<unknown, import("../../lib/ai-lite").UIDataTypes, import("../../lib/ai-lite").UITools>>, import("../chat/connectChat").ChatConnectorParams<import("../../lib/ai-lite").UIMessage<unknown, import("../../lib/ai-lite").UIDataTypes, import("../../lib/ai-lite").UITools>>> | undefined;
110
110
  clearRefinements?: import("../../types").WidgetRenderState<import("../clear-refinements/connectClearRefinements").ClearRefinementsRenderState, import("../clear-refinements/connectClearRefinements").ClearRefinementsConnectorParams> | undefined;
111
111
  configure?: import("../../types").WidgetRenderState<import("../configure/connectConfigure").ConfigureRenderState, import("../configure/connectConfigure").ConfigureConnectorParams> | undefined;
112
112
  currentRefinements?: import("../../types").WidgetRenderState<import("../current-refinements/connectCurrentRefinements").CurrentRefinementsRenderState, import("../current-refinements/connectCurrentRefinements").CurrentRefinementsConnectorParams> | undefined;
@@ -69,7 +69,7 @@ declare const _default: <TWidgetParams extends UnknownWidgetParams>(renderFn: Re
69
69
  breadcrumb?: {
70
70
  [rootAttribute: string]: import("../../types").WidgetRenderState<import("../breadcrumb/connectBreadcrumb").BreadcrumbRenderState, import("../breadcrumb/connectBreadcrumb").BreadcrumbConnectorParams>;
71
71
  } | undefined;
72
- chat?: import("../../types").WidgetRenderState<import("../chat/connectChat").ChatRenderState<import("ai").UIMessage<unknown, import("ai").UIDataTypes, import("ai").UITools>>, import("../chat/connectChat").ChatConnectorParams<import("ai").UIMessage<unknown, import("ai").UIDataTypes, import("ai").UITools>>> | undefined;
72
+ chat?: import("../../types").WidgetRenderState<import("../chat/connectChat").ChatRenderState<import("../../lib/ai-lite").UIMessage<unknown, import("../../lib/ai-lite").UIDataTypes, import("../../lib/ai-lite").UITools>>, import("../chat/connectChat").ChatConnectorParams<import("../../lib/ai-lite").UIMessage<unknown, import("../../lib/ai-lite").UIDataTypes, import("../../lib/ai-lite").UITools>>> | undefined;
73
73
  clearRefinements?: import("../../types").WidgetRenderState<import("../clear-refinements/connectClearRefinements").ClearRefinementsRenderState, import("../clear-refinements/connectClearRefinements").ClearRefinementsConnectorParams> | undefined;
74
74
  configure?: import("../../types").WidgetRenderState<import("../configure/connectConfigure").ConfigureRenderState, import("../configure/connectConfigure").ConfigureConnectorParams> | undefined;
75
75
  currentRefinements?: import("../../types").WidgetRenderState<import("../current-refinements/connectCurrentRefinements").CurrentRefinementsRenderState, import("../current-refinements/connectCurrentRefinements").CurrentRefinementsConnectorParams> | undefined;
@@ -114,7 +114,7 @@ declare const _default: <TWidgetParams extends UnknownWidgetParams>(renderFn: Re
114
114
  breadcrumb?: {
115
115
  [rootAttribute: string]: import("../../types").WidgetRenderState<import("../breadcrumb/connectBreadcrumb").BreadcrumbRenderState, import("../breadcrumb/connectBreadcrumb").BreadcrumbConnectorParams>;
116
116
  } | undefined;
117
- chat?: import("../../types").WidgetRenderState<import("../chat/connectChat").ChatRenderState<import("ai").UIMessage<unknown, import("ai").UIDataTypes, import("ai").UITools>>, import("../chat/connectChat").ChatConnectorParams<import("ai").UIMessage<unknown, import("ai").UIDataTypes, import("ai").UITools>>> | undefined;
117
+ chat?: import("../../types").WidgetRenderState<import("../chat/connectChat").ChatRenderState<import("../../lib/ai-lite").UIMessage<unknown, import("../../lib/ai-lite").UIDataTypes, import("../../lib/ai-lite").UITools>>, import("../chat/connectChat").ChatConnectorParams<import("../../lib/ai-lite").UIMessage<unknown, import("../../lib/ai-lite").UIDataTypes, import("../../lib/ai-lite").UITools>>> | undefined;
118
118
  clearRefinements?: import("../../types").WidgetRenderState<import("../clear-refinements/connectClearRefinements").ClearRefinementsRenderState, import("../clear-refinements/connectClearRefinements").ClearRefinementsConnectorParams> | undefined;
119
119
  configure?: import("../../types").WidgetRenderState<import("../configure/connectConfigure").ConfigureRenderState, import("../configure/connectConfigure").ConfigureConnectorParams> | undefined;
120
120
  currentRefinements?: import("../../types").WidgetRenderState<import("../current-refinements/connectCurrentRefinements").CurrentRefinementsRenderState, import("../current-refinements/connectCurrentRefinements").CurrentRefinementsConnectorParams> | undefined;
@@ -0,0 +1,89 @@
1
+ import type { ChatInit, ChatRequestOptions, ChatState, ChatStatus, CreateUIMessage, FileUIPart, IdGenerator, InferUIMessageMetadata, InferUIMessageTools, UIMessage } from './types';
2
+ /**
3
+ * Abstract base class for chat implementations.
4
+ */
5
+ export declare abstract class AbstractChat<TUIMessage extends UIMessage> {
6
+ readonly id: string;
7
+ readonly generateId: IdGenerator;
8
+ protected state: ChatState<TUIMessage>;
9
+ private readonly transport?;
10
+ private onError?;
11
+ private onToolCall?;
12
+ private onFinish?;
13
+ private onData?;
14
+ private sendAutomaticallyWhen?;
15
+ private activeResponse;
16
+ private jobExecutor;
17
+ constructor({ generateId, id, transport, state, onError, onToolCall, onFinish, onData, sendAutomaticallyWhen, }: Omit<ChatInit<TUIMessage>, 'messages'> & {
18
+ state: ChatState<TUIMessage>;
19
+ });
20
+ /**
21
+ * Hook status:
22
+ *
23
+ * - `submitted`: The message has been sent to the API and we're awaiting the start of the response stream.
24
+ * - `streaming`: The response is actively streaming in from the API, receiving chunks of data.
25
+ * - `ready`: The full response has been received and processed; a new user message can be submitted.
26
+ * - `error`: An error occurred during the API request, preventing successful completion.
27
+ */
28
+ get status(): ChatStatus;
29
+ protected setStatus({ status, error, }: {
30
+ status: ChatStatus;
31
+ error?: Error;
32
+ }): void;
33
+ get error(): Error | undefined;
34
+ get messages(): TUIMessage[];
35
+ set messages(messages: TUIMessage[]);
36
+ get lastMessage(): TUIMessage | undefined;
37
+ /**
38
+ * Appends or replaces a user message to the chat list. This triggers the API call to fetch
39
+ * the assistant's response.
40
+ */
41
+ sendMessage: (message?: (CreateUIMessage<TUIMessage> & {
42
+ text?: never;
43
+ files?: never;
44
+ messageId?: string;
45
+ }) | {
46
+ text: string;
47
+ files?: FileList | FileUIPart[];
48
+ metadata?: InferUIMessageMetadata<TUIMessage>;
49
+ parts?: never;
50
+ messageId?: string;
51
+ } | {
52
+ files: FileList | FileUIPart[];
53
+ metadata?: InferUIMessageMetadata<TUIMessage>;
54
+ parts?: never;
55
+ messageId?: string;
56
+ }, options?: ChatRequestOptions) => Promise<void>;
57
+ /**
58
+ * Regenerate the assistant message with the provided message id.
59
+ * If no message id is provided, the last assistant message will be regenerated.
60
+ */
61
+ regenerate: ({ messageId, ...options }?: {
62
+ messageId?: string;
63
+ } & ChatRequestOptions) => Promise<void>;
64
+ /**
65
+ * Attempt to resume an ongoing streaming response.
66
+ */
67
+ resumeStream: (options?: ChatRequestOptions) => Promise<void>;
68
+ /**
69
+ * Clear the error state and set the status to ready if the chat is in an error state.
70
+ */
71
+ clearError: () => void;
72
+ /**
73
+ * Add a tool result for a tool call.
74
+ */
75
+ addToolResult: <TTool extends keyof InferUIMessageTools<TUIMessage>>({ tool, toolCallId, output, }: {
76
+ tool: TTool;
77
+ toolCallId: string;
78
+ output: InferUIMessageTools<TUIMessage>[TTool]["output"];
79
+ }) => Promise<void>;
80
+ /**
81
+ * Abort the current request immediately, keep the generated tokens if any.
82
+ */
83
+ stop: () => Promise<void>;
84
+ private makeRequest;
85
+ private processStreamWithCallbacks;
86
+ private handleError;
87
+ private convertFilesToParts;
88
+ private fileToDataUrl;
89
+ }