react-instantsearch 7.35.0 → 7.35.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.
@@ -16,7 +16,8 @@ var _components = require("../../../components");
16
16
  function createDisplayResultsTool(itemComponent) {
17
17
  var DisplayResultsUIComponent = (0, _instantsearchuicomponents.createDisplayResultsToolComponent)({
18
18
  createElement: _react.createElement,
19
- Fragment: _react.Fragment
19
+ Fragment: _react.Fragment,
20
+ useMemo: _react.useMemo
20
21
  });
21
22
  var Button = (0, _instantsearchuicomponents.createButtonComponent)({
22
23
  createElement: _react.createElement
@@ -70,7 +70,7 @@ function createCarouselTool(showViewAll, itemComponent, getSearchPageURL) {
70
70
  if (!input || !applyFilters) return;
71
71
  var params = applyFilters({
72
72
  query: input.query,
73
- facetFilters: input.facet_filters
73
+ facetFilters: (0, _instantsearchuicomponents.getFacetFiltersFromToolInput)(input)
74
74
  });
75
75
  if (getSearchPageURL && new URL(getSearchPageURL(params)).pathname !== window.location.pathname) {
76
76
  window.location.href = getSearchPageURL(params);
@@ -1,11 +1,12 @@
1
1
  import { createDisplayResultsToolComponent, createButtonComponent, ChevronLeftIcon, ChevronRightIcon } from 'instantsearch-ui-components';
2
- import React, { createElement, Fragment } from 'react';
2
+ import React, { createElement, Fragment, useMemo } from 'react';
3
3
  import { Carousel } from '../../../components/Carousel.js';
4
4
 
5
5
  function createDisplayResultsTool(itemComponent) {
6
6
  var DisplayResultsUIComponent = createDisplayResultsToolComponent({
7
7
  createElement: createElement,
8
- Fragment: Fragment
8
+ Fragment: Fragment,
9
+ useMemo: useMemo
9
10
  });
10
11
  var Button = createButtonComponent({
11
12
  createElement: createElement
@@ -1,5 +1,5 @@
1
1
  import { _ } from '@swc/helpers/esm/_object_spread.js';
2
- import { createButtonComponent, ArrowRightIcon, ChevronLeftIcon, ChevronRightIcon } from 'instantsearch-ui-components';
2
+ import { createButtonComponent, getFacetFiltersFromToolInput, ArrowRightIcon, ChevronLeftIcon, ChevronRightIcon } from 'instantsearch-ui-components';
3
3
  import { addAbsolutePosition, addQueryID } from 'instantsearch.js/es/lib/utils/index.js';
4
4
  import React, { createElement } from 'react';
5
5
  import { Carousel } from '../../../components/Carousel.js';
@@ -59,7 +59,7 @@ function createCarouselTool(showViewAll, itemComponent, getSearchPageURL) {
59
59
  if (!input || !applyFilters) return;
60
60
  var params = applyFilters({
61
61
  query: input.query,
62
- facetFilters: input.facet_filters
62
+ facetFilters: getFacetFiltersFromToolInput(input)
63
63
  });
64
64
  if (getSearchPageURL && new URL(getSearchPageURL(params)).pathname !== window.location.pathname) {
65
65
  window.location.href = getSearchPageURL(params);
@@ -1,4 +1,4 @@
1
- /*! React InstantSearch 7.35.0 | © Algolia, Inc. and contributors; MIT License | https://github.com/algolia/instantsearch */
1
+ /*! React InstantSearch 7.35.1 | © Algolia, Inc. and contributors; MIT License | https://github.com/algolia/instantsearch */
2
2
  (function (global, factory) {
3
3
  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('react')) :
4
4
  typeof define === 'function' && define.amd ? define(['exports', 'react'], factory) :
@@ -24,7 +24,7 @@
24
24
 
25
25
  var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
26
26
 
27
- var version$2 = '7.35.0';
27
+ var version$2 = '7.35.1';
28
28
 
29
29
  function _define_property(obj, key, value) {
30
30
  if (key in obj) {
@@ -10821,7 +10821,7 @@
10821
10821
  };
10822
10822
  }
10823
10823
 
10824
- var version = '4.101.0';
10824
+ var version = '4.101.1';
10825
10825
 
10826
10826
  var withUsage$r = createDocumentationMessageGenerator({
10827
10827
  name: 'instantsearch'
@@ -13575,7 +13575,7 @@
13575
13575
  return (chatRenderState === null || chatRenderState === void 0 ? void 0 : chatRenderState.status) === 'submitted' || (chatRenderState === null || chatRenderState === void 0 ? void 0 : chatRenderState.status) === 'streaming';
13576
13576
  }
13577
13577
 
13578
- var SearchIndexToolType$1 = 'algolia_search_index';
13578
+ var SearchIndexToolType$2 = 'algolia_search_index';
13579
13579
  var RecommendToolType = 'algolia_recommend';
13580
13580
  var MemorizeToolType = 'algolia_memorize';
13581
13581
  var MemorySearchToolType = 'algolia_memory_search';
@@ -13994,8 +13994,8 @@
13994
13994
  sendAutomaticallyWhen: lastAssistantMessageIsCompleteWithToolCalls,
13995
13995
  shouldRepairToolInput: function shouldRepairToolInput(toolName) {
13996
13996
  var tool = tools[toolName];
13997
- if (!tool && toolName.startsWith("".concat(SearchIndexToolType$1, "_"))) {
13998
- tool = tools[SearchIndexToolType$1];
13997
+ if (!tool && toolName.startsWith("".concat(SearchIndexToolType$2, "_"))) {
13998
+ tool = tools[SearchIndexToolType$2];
13999
13999
  }
14000
14000
  if (!tool) return true;
14001
14001
  return Boolean(tool.streamInput);
@@ -14004,8 +14004,8 @@
14004
14004
  var toolCall = param.toolCall;
14005
14005
  var tool = tools[toolCall.toolName];
14006
14006
  // Compatibility shim with Algolia MCP Server search tool
14007
- if (!tool && toolCall.toolName.startsWith("".concat(SearchIndexToolType$1, "_"))) {
14008
- tool = tools[SearchIndexToolType$1];
14007
+ if (!tool && toolCall.toolName.startsWith("".concat(SearchIndexToolType$2, "_"))) {
14008
+ tool = tools[SearchIndexToolType$2];
14009
14009
  }
14010
14010
  if (!tool) {
14011
14011
  return _chatInstance.addToolResult({
@@ -19868,6 +19868,8 @@
19868
19868
  return str.slice(0, prefix.length) === prefix;
19869
19869
  }
19870
19870
 
19871
+ // Keep in sync with packages/instantsearch.js/src/lib/chat/index.ts
19872
+ var SearchIndexToolType$1 = 'algolia_search_index';
19871
19873
  var getTextContent = function getTextContent(message) {
19872
19874
  return message.parts.map(function(part) {
19873
19875
  return 'text' in part ? part.text : '';
@@ -19894,6 +19896,117 @@
19894
19896
  }
19895
19897
  return tool;
19896
19898
  };
19899
+ var FACET_KEY_PREFIX = 'facet_';
19900
+ /**
19901
+ * Extracts the `facetFilters` from a search tool input.
19902
+ *
19903
+ * The default search tool provides a ready-to-use `facet_filters` array. The
19904
+ * Algolia MCP Server search tool instead expresses refinements as individual
19905
+ * `facet_<attribute>` keys (e.g. `facet_categories: ['Books', 'Toys']`), which
19906
+ * are converted here into the `[['attribute:value']]` shape `applyFilters`
19907
+ * expects.
19908
+ */ var getFacetFiltersFromToolInput = function getFacetFiltersFromToolInput(input) {
19909
+ if (!input) {
19910
+ return undefined;
19911
+ }
19912
+ if (Array.isArray(input.facet_filters)) {
19913
+ return input.facet_filters;
19914
+ }
19915
+ var facetFilters = Object.entries(input).reduce(function(acc, param) {
19916
+ var _param = _sliced_to_array(param, 2), key = _param[0], value = _param[1];
19917
+ if (!startsWith(key, FACET_KEY_PREFIX) || !Array.isArray(value)) {
19918
+ return acc;
19919
+ }
19920
+ var attribute = key.slice(FACET_KEY_PREFIX.length);
19921
+ var values = value.filter(function(item) {
19922
+ return typeof item === 'string';
19923
+ });
19924
+ if (attribute && values.length > 0) {
19925
+ acc.push(values.map(function(item) {
19926
+ return "".concat(attribute, ":").concat(item);
19927
+ }));
19928
+ }
19929
+ return acc;
19930
+ }, []);
19931
+ return facetFilters.length > 0 ? facetFilters : undefined;
19932
+ };
19933
+ var isSearchToolPart = function isSearchToolPart(part) {
19934
+ return part.type === "tool-".concat(SearchIndexToolType$1) || // Compatibility shim with Algolia MCP Server search tool
19935
+ startsWith(part.type, "tool-".concat(SearchIndexToolType$1, "_"));
19936
+ };
19937
+ var collectHitsFromPart = function collectHitsFromPart(part, hitsByObjectID) {
19938
+ var output = part.state === 'output-available' ? part.output : undefined;
19939
+ var hits = output === null || output === void 0 ? void 0 : output.hits;
19940
+ if (!Array.isArray(hits)) {
19941
+ return;
19942
+ }
19943
+ hits.forEach(function(hit) {
19944
+ if (!hit) {
19945
+ return;
19946
+ }
19947
+ if (typeof hit.objectID === 'string' && hit.objectID !== '') {
19948
+ hitsByObjectID[hit.objectID] = hit;
19949
+ }
19950
+ });
19951
+ };
19952
+ /**
19953
+ * Builds a map of `objectID` -> full record by collecting the hits from search
19954
+ * tool outputs across the conversation.
19955
+ *
19956
+ * The display results tool only receives object IDs from the backend, so it
19957
+ * relies on this map to hydrate each result with the full record that the
19958
+ * preceding search tool already fetched.
19959
+ *
19960
+ * Pass `untilToolCallId` (the display tool's own `toolCallId`) to scope
19961
+ * collection to the turn that produced it: hits are only gathered up to and
19962
+ * including the message that contains that tool call. This prevents a later
19963
+ * turn's search from overwriting an earlier display tool's records (and their
19964
+ * per-query metadata like `__queryID`).
19965
+ */ var getHitsByObjectID = function getHitsByObjectID(messages, untilToolCallId) {
19966
+ var hitsByObjectID = {};
19967
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
19968
+ try {
19969
+ var _loop = function _loop() {
19970
+ var message = _step.value;
19971
+ var reachedBoundary = false;
19972
+ message.parts.forEach(function(part) {
19973
+ if (!isPartTool(part)) {
19974
+ return;
19975
+ }
19976
+ // Note the boundary but keep processing the rest of this message's parts:
19977
+ // the search tool that fed this display tool lives in the same message,
19978
+ // so its hits must still be collected before we stop.
19979
+ if (untilToolCallId && part.toolCallId === untilToolCallId) {
19980
+ reachedBoundary = true;
19981
+ }
19982
+ if (isSearchToolPart(part)) {
19983
+ collectHitsFromPart(part, hitsByObjectID);
19984
+ }
19985
+ });
19986
+ if (reachedBoundary) {
19987
+ return "break";
19988
+ }
19989
+ };
19990
+ for(var _iterator = messages[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
19991
+ var _ret = _loop();
19992
+ if (_ret === "break") break;
19993
+ }
19994
+ } catch (err) {
19995
+ _didIteratorError = true;
19996
+ _iteratorError = err;
19997
+ } finally{
19998
+ try {
19999
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
20000
+ _iterator.return();
20001
+ }
20002
+ } finally{
20003
+ if (_didIteratorError) {
20004
+ throw _iteratorError;
20005
+ }
20006
+ }
20007
+ }
20008
+ return hitsByObjectID;
20009
+ };
19897
20010
 
19898
20011
  function n(){return n=Object.assign?Object.assign.bind():function(e){for(var n=1;n<arguments.length;n++){var r=arguments[n];for(var t in r)Object.prototype.hasOwnProperty.call(r,t)&&(e[t]=r[t]);}return e},n.apply(this,arguments)}const o=["allowFullScreen","allowTransparency","autoComplete","autoFocus","autoPlay","cellPadding","cellSpacing","charSet","classId","colSpan","contentEditable","contextMenu","crossOrigin","encType","formAction","formEncType","formMethod","formNoValidate","formTarget","frameBorder","hrefLang","inputMode","keyParams","keyType","marginHeight","marginWidth","maxLength","mediaGroup","minLength","noValidate","radioGroup","readOnly","rowSpan","spellCheck","srcDoc","srcLang","srcSet","tabIndex","useMap"].reduce((e,n)=>(e[n.toLowerCase()]=n,e),{class:"className",for:"htmlFor"}),a={amp:"&",apos:"'",gt:">",lt:"<",nbsp:" ",quot:"“"},c=["style","script","pre"],i=["src","href","data","formAction","srcDoc","action"],u=/([-A-Z0-9_:]+)(?:\s*=\s*(?:(?:"((?:\\.|[^"])*)")|(?:'((?:\\.|[^'])*)')|(?:\{((?:\\.|{[^}]*?}|[^}])*)\})))?/gi,l=/\n{2,}$/,s=/^(\s*>[\s\S]*?)(?=\n\n|$)/,f=/^ *> ?/gm,_=/^(?:\[!([^\]]*)\]\n)?([\s\S]*)/,d=/^ {2,}\n/,p=/^(?:([-*_])( *\1){2,}) *(?:\n *)+\n/,y=/^(?: {1,3})?(`{3,}|~{3,}) *(\S+)? *([^\n]*?)?\n([\s\S]*?)(?:\1\n?|$)/,h=/^(?: {4}[^\n]+\n*)+(?:\n *)+\n?/,g=/^(`+)((?:\\`|(?!\1)`|[^`])+)\1/,m=/^(?:\n *)*\n/,k=/\r\n?/g,x=/^\[\^([^\]]+)](:(.*)((\n+ {4,}.*)|(\n(?!\[\^).+))*)/,q=/^\[\^([^\]]+)]/,v=/\f/g,b=/^---[ \t]*\n(.|\n)*\n---[ \t]*\n/,$=/^\s*?\[(x|\s)\]/,S=/^ *(#{1,6}) *([^\n]+?)(?: +#*)?(?:\n *)*(?:\n|$)/,z=/^ *(#{1,6}) +([^\n]+?)(?: +#*)?(?:\n *)*(?:\n|$)/,E=/^([^\n]+)\n *(=|-)\2{2,} *\n/,A=/^ *(?!<[a-z][^ >/]* ?\/>)<([a-z][^ >/]*) ?((?:[^>]*[^/])?)>\n?(\s*(?:<\1[^>]*?>[\s\S]*?<\/\1>|(?!<\1\b)[\s\S])*?)<\/\1>(?!<\/\1>)\n*/i,R=/&([a-z0-9]+|#[0-9]{1,6}|#x[0-9a-fA-F]{1,6});/gi,B=/^<!--[\s\S]*?(?:-->)/,L=/^(data|aria|x)-[a-z_][a-z\d_.-]*$/,O=/^ *<([a-z][a-z0-9:]*)(?:\s+((?:<.*?>|[^>])*))?\/?>(?!<\/\1>)(\s*\n)?/i,j=/^\{.*\}$/,C=/^(https?:\/\/[^\s<]+[^<.,:;"')\]\s])/,I=/^<([^ >]+[:@\/][^ >]+)>/,T=/-([a-z])?/gi,M=/^(\|.*)\n(?: *(\|? *[-:]+ *\|[-| :]*)\n((?:.*\|.*\n)*))?\n?/,w=/^[^\n]+(?: \n|\n{2,})/,D=/^\[([^\]]*)\]:\s+<?([^\s>]+)>?\s*("([^"]*)")?/,F=/^!\[([^\]]*)\] ?\[([^\]]*)\]/,P=/^\[([^\]]*)\] ?\[([^\]]*)\]/,Z=/(\n|^[-*]\s|^#|^ {2,}|^-{2,}|^>\s)/,N=/\t/g,G=/(^ *\||\| *$)/g,U=/^ *:-+: *$/,V=/^ *:-+ *$/,H=/^ *-+: *$/,Q=e=>`(?=[\\s\\S]+?\\1${e?"\\1":""})`,W="((?:\\[.*?\\][([].*?[)\\]]|<.*?>(?:.*?<.*?>)?|`.*?`|\\\\\\1|[\\s\\S])+?)",J=RegExp(`^([*_])\\1${Q(1)}${W}\\1\\1(?!\\1)`),K=RegExp(`^([*_])${Q(0)}${W}\\1(?!\\1)`),X=RegExp(`^(==)${Q(0)}${W}\\1`),Y=RegExp(`^(~~)${Q(0)}${W}\\1`),ee=/^(:[a-zA-Z0-9-_]+:)/,ne=/^\\([^0-9A-Za-z\s])/,re=/\\([^0-9A-Za-z\s])/g,te=/^[\s\S](?:(?! \n|[0-9]\.|http)[^=*_~\-\n:<`\\\[!])*/,oe=/^\n+/,ae=/^([ \t]*)/,ce=/(?:^|\n)( *)$/,ie="(?:\\d+\\.)",ue="(?:[*+-])";function le(e){return "( *)("+(1===e?ie:ue)+") +"}const se=le(1),fe=le(2);function _e(e){return RegExp("^"+(1===e?se:fe))}const de=_e(1),pe=_e(2);function ye(e){return RegExp("^"+(1===e?se:fe)+"[^\\n]*(?:\\n(?!\\1"+(1===e?ie:ue)+" )[^\\n]*)*(\\n|$)","gm")}const he=ye(1),ge=ye(2);function me(e){const n=1===e?ie:ue;return RegExp("^( *)("+n+") [\\s\\S]+?(?:\\n{2,}(?! )(?!\\1"+n+" (?!"+n+" ))\\n*|\\s*\\n*$)")}const ke=me(1),xe=me(2);function qe(e,n){const r=1===n,t=r?ke:xe,o=r?he:ge,a=r?de:pe;return {t:e=>a.test(e),o:je(function(e,n){const r=ce.exec(n.prevCapture);return r&&(n.list||!n.inline&&!n.simple)?t.exec(e=r[1]+e):null}),i:1,u(e,n,t){const c=r?+e[2]:void 0,i=e[0].replace(l,"\n").match(o);let u=!1;return {items:i.map(function(e,r){const o=a.exec(e)[0].length,c=RegExp("^ {1,"+o+"}","gm"),l=e.replace(c,"").replace(a,""),s=r===i.length-1,f=-1!==l.indexOf("\n\n")||s&&u;u=f;const _=t.inline,d=t.list;let p;t.list=!0,f?(t.inline=!1,p=Se(l)+"\n\n"):(t.inline=!0,p=Se(l));const y=n(p,t);return t.inline=_,t.list=d,y}),ordered:r,start:c}},l:(n,r,t)=>e(n.ordered?"ol":"ul",{key:t.key,start:"20"===n.type?n.start:void 0},n.items.map(function(n,o){return e("li",{key:o},r(n,t))}))}}const ve=RegExp("^\\[((?:\\[[^\\[\\]]*(?:\\[[^\\[\\]]*\\][^\\[\\]]*)*\\]|[^\\[\\]])*)\\]\\(\\s*<?((?:\\([^)]*\\)|[^\\s\\\\]|\\\\.)*?)>?(?:\\s+['\"]([\\s\\S]*?)['\"])?\\s*\\)"),be=/^!\[(.*?)\]\( *((?:\([^)]*\)|[^() ])*) *"?([^)"]*)?"?\)/;function $e(e){return "string"==typeof e}function Se(e){let n=e.length;for(;n>0&&e[n-1]<=" ";)n--;return e.slice(0,n)}function ze(e,n){return e.startsWith(n)}function Ee(e,n,r){if(Array.isArray(r)){for(let n=0;n<r.length;n++)if(ze(e,r[n]))return !0;return !1}return r(e,n)}function Ae(e){return e.replace(/[ÀÁÂÃÄÅàáâãä忯]/g,"a").replace(/[çÇ]/g,"c").replace(/[ðÐ]/g,"d").replace(/[ÈÉÊËéèêë]/g,"e").replace(/[ÏïÎîÍíÌì]/g,"i").replace(/[Ññ]/g,"n").replace(/[øØœŒÕõÔôÓóÒò]/g,"o").replace(/[ÜüÛûÚúÙù]/g,"u").replace(/[ŸÿÝý]/g,"y").replace(/[^a-z0-9- ]/gi,"").replace(/ /gi,"-").toLowerCase()}function Re(e){return H.test(e)?"right":U.test(e)?"center":V.test(e)?"left":null}function Be(e,n,r,t){const o=r.inTable;r.inTable=!0;let a=[[]],c="";function i(){if(!c)return;const e=a[a.length-1];e.push.apply(e,n(c,r)),c="";}return e.trim().split(/(`[^`]*`|\\\||\|)/).filter(Boolean).forEach((e,n,r)=>{"|"===e.trim()&&(i(),t)?0!==n&&n!==r.length-1&&a.push([]):c+=e;}),i(),r.inTable=o,a}function Le(e,n,r){r.inline=!0;const t=e[2]?e[2].replace(G,"").split("|").map(Re):[],o=e[3]?function(e,n,r){return e.trim().split("\n").map(function(e){return Be(e,n,r,!0)})}(e[3],n,r):[],a=Be(e[1],n,r,!!o.length);return r.inline=!1,o.length?{align:t,cells:o,header:a,type:"25"}:{children:a,type:"21"}}function Oe(e,n){return null==e.align[n]?{}:{textAlign:e.align[n]}}function je(e){return e.inline=1,e}function Ce(e){return je(function(n,r){return r.inline?e.exec(n):null})}function Ie(e){return je(function(n,r){return r.inline||r.simple?e.exec(n):null})}function Te(e){return function(n,r){return r.inline||r.simple?null:e.exec(n)}}function Me(e){return je(function(n){return e.exec(n)})}const we=/(javascript|vbscript|data(?!:image)):/i;function De(e){try{const n=decodeURIComponent(e).replace(/[^A-Za-z0-9/:]/g,"");if(we.test(n))return null}catch(e){return null}return e}function Fe(e){return e?e.replace(re,"$1"):e}function Pe(e,n,r){const t=r.inline||!1,o=r.simple||!1;r.inline=!0,r.simple=!0;const a=e(n,r);return r.inline=t,r.simple=o,a}function Ze(e,n,r){const t=r.inline||!1,o=r.simple||!1;r.inline=!1,r.simple=!0;const a=e(n,r);return r.inline=t,r.simple=o,a}function Ne(e,n,r){const t=r.inline||!1;r.inline=!1;const o=e(n,r);return r.inline=t,o}const Ge=(e,n,r)=>({children:Pe(n,e[2],r)});function Ue(){return {}}function Ve(){return null}function He(...e){return e.filter(Boolean).join(" ")}function Qe(e,n,r){let t=e;const o=n.split(".");for(;o.length&&(t=t[o[0]],void 0!==t);)o.shift();return t||r}function We(r="",t={}){t.overrides=t.overrides||{},t.namedCodesToUnicode=t.namedCodesToUnicode?n({},a,t.namedCodesToUnicode):a;const l=t.slugify||Ae,G=t.sanitizer||De,U=t.createElement||React__namespace.createElement,V=[s,y,h,t.enforceAtxHeadings?z:S,E,M,ke,xe],H=[...V,w,A,B,O];function Q(e,n){for(let r=0;r<e.length;r++)if(e[r].test(n))return !0;return !1}function W(e,r,...o){const a=Qe(t.overrides,e+".props",{});return U(function(e,n){const r=Qe(n,e);return r?"function"==typeof r||"object"==typeof r&&"render"in r?r:Qe(n,e+".component",e):e}(e,t.overrides),n({},r,a,{className:He(null==r?void 0:r.className,a.className)||void 0}),...o)}function re(e){e=e.replace(b,"");let n=!1;t.forceInline?n=!0:t.forceBlock||(n=!1===Z.test(e));const r=fe(se(n?e:Se(e).replace(oe,"")+"\n\n",{inline:n}));for(;$e(r[r.length-1])&&!r[r.length-1].trim();)r.pop();if(null===t.wrapper)return r;const o=t.wrapper||(n?"span":"div");let a;if(r.length>1||t.forceWrapper)a=r;else {if(1===r.length)return a=r[0],"string"==typeof a?W("span",{key:"outer"},a):a;a=null;}return U(o,{key:"outer"},a)}function ce(e,n){if(!n||!n.trim())return null;const r=n.match(u);return r?r.reduce(function(n,r){const t=r.indexOf("=");if(-1!==t){const a=function(e){return -1!==e.indexOf("-")&&null===e.match(L)&&(e=e.replace(T,function(e,n){return n.toUpperCase()})),e}(r.slice(0,t)).trim(),c=function(e){const n=e[0];return ('"'===n||"'"===n)&&e.length>=2&&e[e.length-1]===n?e.slice(1,-1):e}(r.slice(t+1).trim()),u=o[a]||a;if("ref"===u)return n;const l=n[u]=function(e,n,r,t){return "style"===n?function(e){const n=[];let r="",t=!1,o=!1,a="";if(!e)return n;for(let c=0;c<e.length;c++){const i=e[c];if('"'!==i&&"'"!==i||t||(o?i===a&&(o=!1,a=""):(o=!0,a=i)),"("===i&&r.endsWith("url")?t=!0:")"===i&&t&&(t=!1),";"!==i||o||t)r+=i;else {const e=r.trim();if(e){const r=e.indexOf(":");if(r>0){const t=e.slice(0,r).trim(),o=e.slice(r+1).trim();n.push([t,o]);}}r="";}}const c=r.trim();if(c){const e=c.indexOf(":");if(e>0){const r=c.slice(0,e).trim(),t=c.slice(e+1).trim();n.push([r,t]);}}return n}(r).reduce(function(n,[r,o]){return n[r.replace(/(-[a-z])/g,e=>e[1].toUpperCase())]=t(o,e,r),n},{}):-1!==i.indexOf(n)?t(Fe(r),e,n):(r.match(j)&&(r=Fe(r.slice(1,r.length-1))),"true"===r||"false"!==r&&r)}(e,a,c,G);"string"==typeof l&&(A.test(l)||O.test(l))&&(n[u]=re(l.trim()));}else "style"!==r&&(n[o[r]||r]=!0);return n},{}):null}const ie=[],ue={},le={0:{t:[">"],o:Te(s),i:1,u(e,n,r){const[,t,o]=e[0].replace(f,"").match(_);return {alert:t,children:n(o,r)}},l(e,n,r){const t={key:r.key};return e.alert&&(t.className="markdown-alert-"+l(e.alert.toLowerCase(),Ae),e.children.unshift({attrs:{},children:[{type:"27",text:e.alert}],noInnerParse:!0,type:"11",tag:"header"})),W("blockquote",t,n(e.children,r))}},1:{t:[" "],o:Me(d),i:1,u:Ue,l:(e,n,r)=>W("br",{key:r.key})},2:{t:["--","__","**","- ","* ","_ "],o:Te(p),i:1,u:Ue,l:(e,n,r)=>W("hr",{key:r.key})},3:{t:[" "],o:Te(h),i:0,u:e=>({lang:void 0,text:Fe(Se(e[0].replace(/^ {4}/gm,"")))}),l:(e,r,t)=>W("pre",{key:t.key},W("code",n({},e.attrs,{className:e.lang?"lang-"+e.lang:""}),e.text))},4:{t:["```","~~~"],o:Te(y),i:0,u:e=>({attrs:ce("code",e[3]||""),lang:e[2]||void 0,text:e[4],type:"3"})},5:{t:["`"],o:Ie(g),i:3,u:e=>({text:Fe(e[2])}),l:(e,n,r)=>W("code",{key:r.key},e.text)},6:{t:["[^"],o:Te(x),i:0,u:e=>(ie.push({footnote:e[2],identifier:e[1]}),{}),l:Ve},7:{t:["[^"],o:Ce(q),i:1,u:e=>({target:"#"+l(e[1],Ae),text:e[1]}),l:(e,n,r)=>W("a",{key:r.key,href:G(e.target,"a","href")},W("sup",{key:r.key},e.text))},8:{t:["[ ]","[x]"],o:Ce($),i:1,u:e=>({completed:"x"===e[1].toLowerCase()}),l:(e,n,r)=>W("input",{checked:e.completed,key:r.key,readOnly:!0,type:"checkbox"})},9:{t:["#"],o:Te(t.enforceAtxHeadings?z:S),i:1,u:(e,n,r)=>({children:Pe(n,e[2],r),id:l(e[2],Ae),level:e[1].length}),l:(e,n,r)=>W("h"+e.level,{id:e.id,key:r.key},n(e.children,r))},10:{t:e=>{const n=e.indexOf("\n");return n>0&&n<e.length-1&&("="===e[n+1]||"-"===e[n+1])},o:Te(E),i:0,u:(e,n,r)=>({children:Pe(n,e[1],r),level:"="===e[2]?1:2,type:"9"})},11:{t:["<"],o:Me(A),i:1,u(e,n,r){const[,t]=e[3].match(ae),o=RegExp("^"+t,"gm"),a=e[3].replace(o,""),i=Q(H,a)?Ne:Pe,u=e[1].toLowerCase(),l=-1!==c.indexOf(u),s=(l?u:e[1]).trim(),f={attrs:ce(s,e[2]),noInnerParse:l,tag:s};if(r.inAnchor=r.inAnchor||"a"===u,l)f.text=e[3];else {const e=r.inHTML;r.inHTML=!0,f.children=i(n,a,r),r.inHTML=e;}return r.inAnchor=!1,f},l:(e,r,t)=>W(e.tag,n({key:t.key},e.attrs),e.text||(e.children?r(e.children,t):""))},13:{t:["<"],o:Me(O),i:1,u(e){const n=e[1].trim();return {attrs:ce(n,e[2]||""),tag:n}},l:(e,r,t)=>W(e.tag,n({},e.attrs,{key:t.key}))},12:{t:["\x3c!--"],o:Me(B),i:1,u:()=>({}),l:Ve},14:{t:["!["],o:Ie(be),i:1,u:e=>({alt:Fe(e[1]),target:Fe(e[2]),title:Fe(e[3])}),l:(e,n,r)=>W("img",{key:r.key,alt:e.alt||void 0,title:e.title||void 0,src:G(e.target,"img","src")})},15:{t:["["],o:Ce(ve),i:3,u:(e,n,r)=>({children:Ze(n,e[1],r),target:Fe(e[2]),title:Fe(e[3])}),l:(e,n,r)=>W("a",{key:r.key,href:G(e.target,"a","href"),title:e.title},n(e.children,r))},16:{t:["<"],o:Ce(I),i:0,u(e){let n=e[1],r=!1;return -1!==n.indexOf("@")&&-1===n.indexOf("//")&&(r=!0,n=n.replace("mailto:","")),{children:[{text:n,type:"27"}],target:r?"mailto:"+n:n,type:"15"}}},17:{t:(e,n)=>!n.inAnchor&&!t.disableAutoLink&&(ze(e,"http://")||ze(e,"https://")),o:Ce(C),i:0,u:e=>({children:[{text:e[1],type:"27"}],target:e[1],title:void 0,type:"15"})},20:qe(W,1),33:qe(W,2),19:{t:["\n"],o:Te(m),i:3,u:Ue,l:()=>"\n"},21:{o:je(function(e,n){if(n.inline||n.simple||n.inHTML&&-1===e.indexOf("\n\n")&&-1===n.prevCapture.indexOf("\n\n"))return null;let r="",t=0;for(;;){const n=e.indexOf("\n",t),o=e.slice(t,-1===n?void 0:n+1);if(Q(V,o))break;if(r+=o,-1===n||!o.trim())break;t=n+1;}const o=Se(r);return ""===o?null:[r,,o]}),i:3,u:Ge,l:(e,n,r)=>W("p",{key:r.key},n(e.children,r))},22:{t:["["],o:Ce(D),i:0,u:e=>(ue[e[1]]={target:e[2],title:e[4]},{}),l:Ve},23:{t:["!["],o:Ie(F),i:0,u:e=>({alt:e[1]?Fe(e[1]):void 0,ref:e[2]}),l:(e,n,r)=>ue[e.ref]?W("img",{key:r.key,alt:e.alt,src:G(ue[e.ref].target,"img","src"),title:ue[e.ref].title}):null},24:{t:e=>"["===e[0]&&-1===e.indexOf("]("),o:Ce(P),i:0,u:(e,n,r)=>({children:n(e[1],r),fallbackChildren:e[0],ref:e[2]}),l:(e,n,r)=>ue[e.ref]?W("a",{key:r.key,href:G(ue[e.ref].target,"a","href"),title:ue[e.ref].title},n(e.children,r)):W("span",{key:r.key},e.fallbackChildren)},25:{t:["|"],o:Te(M),i:1,u:Le,l(e,n,r){const t=e;return W("table",{key:r.key},W("thead",null,W("tr",null,t.header.map(function(e,o){return W("th",{key:o,style:Oe(t,o)},n(e,r))}))),W("tbody",null,t.cells.map(function(e,o){return W("tr",{key:o},e.map(function(e,o){return W("td",{key:o,style:Oe(t,o)},n(e,r))}))})))}},27:{o:je(function(e,n){let r;return ze(e,":")&&(r=ee.exec(e)),r||te.exec(e)}),i:4,u(e){const n=e[0];return {text:-1===n.indexOf("&")?n:n.replace(R,(e,n)=>t.namedCodesToUnicode[n]||e)}},l:e=>e.text},28:{t:["**","__"],o:Ie(J),i:2,u:(e,n,r)=>({children:n(e[2],r)}),l:(e,n,r)=>W("strong",{key:r.key},n(e.children,r))},29:{t:e=>{const n=e[0];return ("*"===n||"_"===n)&&e[1]!==n},o:Ie(K),i:3,u:(e,n,r)=>({children:n(e[2],r)}),l:(e,n,r)=>W("em",{key:r.key},n(e.children,r))},30:{t:["\\"],o:Ie(ne),i:1,u:e=>({text:e[1],type:"27"})},31:{t:["=="],o:Ie(X),i:3,u:Ge,l:(e,n,r)=>W("mark",{key:r.key},n(e.children,r))},32:{t:["~~"],o:Ie(Y),i:3,u:Ge,l:(e,n,r)=>W("del",{key:r.key},n(e.children,r))}};!0===t.disableParsingRawHTML&&(delete le[11],delete le[13]);const se=function(e){var n=Object.keys(e);function r(t,o){var a=[];if(o.prevCapture=o.prevCapture||"",t.trim())for(;t;)for(var c=0;c<n.length;){var i=n[c],u=e[i];if(!u.t||Ee(t,o,u.t)){var l=u.o(t,o);if(l&&l[0]){t=t.substring(l[0].length);var s=u.u(l,r,o);o.prevCapture+=l[0],s.type||(s.type=i),a.push(s);break}c++;}else c++;}return o.prevCapture="",a}return n.sort(function(n,r){return e[n].i-e[r].i||(n<r?-1:1)}),function(e,n){return r(function(e){return e.replace(k,"\n").replace(v,"").replace(N," ")}(e),n)}}(le),fe=function(e,n){return function r(t,o={}){if(Array.isArray(t)){const e=o.key,n=[];let a=!1;for(let e=0;e<t.length;e++){o.key=e;const c=r(t[e],o),i=$e(c);i&&a?n[n.length-1]+=c:null!==c&&n.push(c),a=i;}return o.key=e,n}return function(r,t,o){const a=e[r.type].l;return n?n(()=>a(r,t,o),r,t,o):a(r,t,o)}(t,r,o)}}(le,t.renderRule),_e=re(r);return ie.length?W("div",null,_e,W("footer",{key:"footer"},ie.map(function(e){return W("div",{id:l(e.identifier,Ae),key:e.identifier},e.identifier,fe(se(e.footnote,{inline:!0})))}))):_e}
19899
20012
 
@@ -19905,7 +20018,7 @@
19905
20018
  createElement: createElement
19906
20019
  });
19907
20020
  return function ChatMessage(userProps) {
19908
- var _userProps_classNames = userProps.classNames, classNames = _userProps_classNames === void 0 ? {} : _userProps_classNames, message = userProps.message, status = userProps.status, _userProps_side = userProps.side, side = _userProps_side === void 0 ? 'left' : _userProps_side, _userProps_variant = userProps.variant, variant = _userProps_variant === void 0 ? 'subtle' : _userProps_variant, _userProps_actions = userProps.actions, actions = _userProps_actions === void 0 ? [] : _userProps_actions, _userProps_autoHideActions = userProps.autoHideActions, autoHideActions = _userProps_autoHideActions === void 0 ? false : _userProps_autoHideActions, LeadingComponent = userProps.leadingComponent, ActionsComponent = userProps.actionsComponent, FooterComponent = userProps.footerComponent, _userProps_tools = userProps.tools, tools = _userProps_tools === void 0 ? {} : _userProps_tools, indexUiState = userProps.indexUiState, setIndexUiState = userProps.setIndexUiState, onClose = userProps.onClose, userTranslations = userProps.translations, suggestionsElement = userProps.suggestionsElement, props = _object_without_properties(userProps, [
20021
+ var _userProps_classNames = userProps.classNames, classNames = _userProps_classNames === void 0 ? {} : _userProps_classNames, message = userProps.message, status = userProps.status, _userProps_side = userProps.side, side = _userProps_side === void 0 ? 'left' : _userProps_side, _userProps_variant = userProps.variant, variant = _userProps_variant === void 0 ? 'subtle' : _userProps_variant, _userProps_actions = userProps.actions, actions = _userProps_actions === void 0 ? [] : _userProps_actions, _userProps_autoHideActions = userProps.autoHideActions, autoHideActions = _userProps_autoHideActions === void 0 ? false : _userProps_autoHideActions, LeadingComponent = userProps.leadingComponent, ActionsComponent = userProps.actionsComponent, FooterComponent = userProps.footerComponent, _userProps_tools = userProps.tools, tools = _userProps_tools === void 0 ? {} : _userProps_tools, indexUiState = userProps.indexUiState, setIndexUiState = userProps.setIndexUiState, messages = userProps.messages, onClose = userProps.onClose, userTranslations = userProps.translations, suggestionsElement = userProps.suggestionsElement, props = _object_without_properties(userProps, [
19909
20022
  "classNames",
19910
20023
  "message",
19911
20024
  "status",
@@ -19919,6 +20032,7 @@
19919
20032
  "tools",
19920
20033
  "indexUiState",
19921
20034
  "setIndexUiState",
20035
+ "messages",
19922
20036
  "onClose",
19923
20037
  "translations",
19924
20038
  "suggestionsElement"
@@ -19994,6 +20108,7 @@
19994
20108
  message: toolMessage,
19995
20109
  indexUiState: indexUiState,
19996
20110
  setIndexUiState: setIndexUiState,
20111
+ messages: messages,
19997
20112
  addToolResult: boundAddToolResult,
19998
20113
  applyFilters: tool.applyFilters,
19999
20114
  sendEvent: tool.sendEvent || function() {},
@@ -20155,7 +20270,7 @@
20155
20270
  Fragment: Fragment
20156
20271
  });
20157
20272
  return function DefaultMessage(param) {
20158
- var message = param.message, status = param.status, userMessageProps = param.userMessageProps, assistantMessageProps = param.assistantMessageProps, tools = param.tools, indexUiState = param.indexUiState, setIndexUiState = param.setIndexUiState, onReload = param.onReload, onClose = param.onClose, onFeedback = param.onFeedback, feedbackState = param.feedbackState, actionsComponent = param.actionsComponent, classNames = param.classNames, messageTranslations = param.messageTranslations, translations = param.translations, suggestionsElement = param.suggestionsElement;
20273
+ var message = param.message, status = param.status, userMessageProps = param.userMessageProps, assistantMessageProps = param.assistantMessageProps, tools = param.tools, indexUiState = param.indexUiState, setIndexUiState = param.setIndexUiState, messages = param.messages, onReload = param.onReload, onClose = param.onClose, onFeedback = param.onFeedback, feedbackState = param.feedbackState, actionsComponent = param.actionsComponent, classNames = param.classNames, messageTranslations = param.messageTranslations, translations = param.translations, suggestionsElement = param.suggestionsElement;
20159
20274
  var defaultAssistantActions = _to_consumable_array(hasTextContent(message) ? [
20160
20275
  {
20161
20276
  title: translations.copyToClipboardLabel,
@@ -20243,6 +20358,7 @@
20243
20358
  tools: tools,
20244
20359
  indexUiState: indexUiState,
20245
20360
  setIndexUiState: setIndexUiState,
20361
+ messages: messages,
20246
20362
  onClose: onClose,
20247
20363
  actions: defaultActions,
20248
20364
  actionsComponent: actionsComponent,
@@ -20357,6 +20473,7 @@
20357
20473
  tools: tools,
20358
20474
  indexUiState: indexUiState,
20359
20475
  setIndexUiState: setIndexUiState,
20476
+ messages: messages,
20360
20477
  onReload: onReload,
20361
20478
  onFeedback: onFeedback,
20362
20479
  feedbackState: feedbackState,
@@ -20896,11 +21013,18 @@
20896
21013
  streamingLabel: 'Curating results…'
20897
21014
  };
20898
21015
  function createDisplayResultsToolComponent(param) {
20899
- var createElement = param.createElement, Fragment = param.Fragment;
21016
+ var createElement = param.createElement, Fragment = param.Fragment, useMemo = param.useMemo;
20900
21017
  return function DisplayResultsTool(userProps) {
20901
- var toolProps = userProps.toolProps, GroupCarousel = userProps.groupCarouselComponent, userTranslations = userProps.translations;
20902
- var message = toolProps.message, sendEvent = toolProps.sendEvent;
21018
+ var toolProps = userProps.toolProps, renderGroupCarousel = userProps.groupCarouselComponent, userTranslations = userProps.translations;
21019
+ var message = toolProps.message, messages = toolProps.messages, sendEvent = toolProps.sendEvent;
20903
21020
  var translations = _object_spread({}, DEFAULT_TRANSLATIONS$1, userTranslations);
21021
+ var toolCallId = message === null || message === void 0 ? void 0 : message.toolCallId;
21022
+ var hitsByObjectID = useMemo(function() {
21023
+ return messages ? getHitsByObjectID(messages, toolCallId) : undefined;
21024
+ }, [
21025
+ messages,
21026
+ toolCallId
21027
+ ]);
20904
21028
  var output = message === null || message === void 0 ? void 0 : message.output;
20905
21029
  var intro = typeof (output === null || output === void 0 ? void 0 : output.intro) === 'string' ? output.intro : undefined;
20906
21030
  var groups = Array.isArray(output === null || output === void 0 ? void 0 : output.groups) ? output.groups : [];
@@ -20918,8 +21042,11 @@
20918
21042
  }) : [];
20919
21043
  if (results.length === 0) return null;
20920
21044
  var items = results.map(function(result, idx) {
20921
- return _object_spread_props(_object_spread({}, result), {
20922
- __position: idx + 1
21045
+ var hydrated = hitsByObjectID === null || hitsByObjectID === void 0 ? void 0 : hitsByObjectID[result.objectID];
21046
+ return _object_spread_props(_object_spread({}, hydrated), {
21047
+ objectID: result.objectID,
21048
+ __position: idx + 1,
21049
+ __displayToolResult: result
20923
21050
  });
20924
21051
  });
20925
21052
  return /*#__PURE__*/ createElement("div", {
@@ -20929,7 +21056,7 @@
20929
21056
  className: "ais-ChatToolDisplayResults-groupTitle"
20930
21057
  }, group.title), group.why && /*#__PURE__*/ createElement("div", {
20931
21058
  className: "ais-ChatToolDisplayResults-groupWhy"
20932
- }, group.why), /*#__PURE__*/ createElement(GroupCarousel, {
21059
+ }, group.why), renderGroupCarousel({
20933
21060
  items: items,
20934
21061
  sendEvent: sendEvent
20935
21062
  }));
@@ -22845,7 +22972,8 @@
22845
22972
  function createDisplayResultsTool(itemComponent) {
22846
22973
  var DisplayResultsUIComponent = createDisplayResultsToolComponent({
22847
22974
  createElement: React.createElement,
22848
- Fragment: React.Fragment
22975
+ Fragment: React.Fragment,
22976
+ useMemo: React.useMemo
22849
22977
  });
22850
22978
  var Button = createButtonComponent({
22851
22979
  createElement: React.createElement
@@ -22952,7 +23080,7 @@
22952
23080
  if (!input || !applyFilters) return;
22953
23081
  var params = applyFilters({
22954
23082
  query: input.query,
22955
- facetFilters: input.facet_filters
23083
+ facetFilters: getFacetFiltersFromToolInput(input)
22956
23084
  });
22957
23085
  if (getSearchPageURL && new URL(getSearchPageURL(params)).pathname !== window.location.pathname) {
22958
23086
  window.location.href = getSearchPageURL(params);
@@ -22995,7 +23123,7 @@
22995
23123
  });
22996
23124
  function createDefaultTools(itemComponent, getSearchPageURL) {
22997
23125
  var _obj;
22998
- return _obj = {}, _define_property(_obj, SearchIndexToolType$1, createCarouselTool(true, itemComponent, getSearchPageURL)), _define_property(_obj, RecommendToolType, createCarouselTool(false, itemComponent, getSearchPageURL)), _define_property(_obj, DisplayResultsToolType, createDisplayResultsTool(itemComponent)), _define_property(_obj, MemorizeToolType, {}), _define_property(_obj, MemorySearchToolType, {}), _define_property(_obj, PonderToolType, {}), _obj;
23126
+ return _obj = {}, _define_property(_obj, SearchIndexToolType$2, createCarouselTool(true, itemComponent, getSearchPageURL)), _define_property(_obj, RecommendToolType, createCarouselTool(false, itemComponent, getSearchPageURL)), _define_property(_obj, DisplayResultsToolType, createDisplayResultsTool(itemComponent)), _define_property(_obj, MemorizeToolType, {}), _define_property(_obj, MemorySearchToolType, {}), _define_property(_obj, PonderToolType, {}), _obj;
22999
23127
  }
23000
23128
  function ChatInner(_0, _1) {
23001
23129
  var _ref = [
@@ -25029,7 +25157,7 @@
25029
25157
  exports.RelatedProducts = RelatedProducts;
25030
25158
  exports.ReverseHighlight = ReverseHighlight;
25031
25159
  exports.SearchBox = SearchBox;
25032
- exports.SearchIndexToolType = SearchIndexToolType$1;
25160
+ exports.SearchIndexToolType = SearchIndexToolType$2;
25033
25161
  exports.Snippet = Snippet;
25034
25162
  exports.SortBy = SortBy;
25035
25163
  exports.Stats = Stats;