@gengage/assistant-fe 0.6.27 → 0.6.28

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 (41) hide show
  1. package/dist/agent-ui-steps-Dc4ByfZo.js +3161 -0
  2. package/dist/agentic/context/context-store.d.ts +25 -0
  3. package/dist/agentic/index.d.ts +15 -1
  4. package/dist/agentic/index.js +164 -150
  5. package/dist/agentic/types.d.ts +31 -3
  6. package/dist/agentic/worker/agent-ui-steps.d.ts +43 -0
  7. package/dist/agentic/worker/agent-ui.d.ts +44 -0
  8. package/dist/agentic/worker/be-client.d.ts +16 -4
  9. package/dist/agentic/worker/coalesce.d.ts +25 -0
  10. package/dist/agentic/worker/compaction.d.ts +12 -0
  11. package/dist/agentic/worker/pdp-hydrate.d.ts +30 -0
  12. package/dist/agentic/worker/tool-schema.d.ts +19 -0
  13. package/dist/agentic/worker.d.ts +15 -1
  14. package/dist/agentic/worker.js +292 -264
  15. package/dist/agentic.iife.js +9 -9
  16. package/dist/{api-paths-C9NwnH29.js → api-paths-PFiXYIey.js} +1 -1
  17. package/dist/chat-runtime.js +1 -1
  18. package/dist/chat.iife.js +1 -1
  19. package/dist/chat.js +1 -1
  20. package/dist/{common-Bhl1mzk2.js → common-DyAcz33-.js} +1 -1
  21. package/dist/common.js +5 -5
  22. package/dist/{connection-warning-D-0Mxk-A.js → connection-warning-nWEUv5bp.js} +1 -1
  23. package/dist/{fastIntent-bAlwVoje.js → fastIntent-BiHAWBIa.js} +1 -1
  24. package/dist/index.js +10 -10
  25. package/dist/native.iife.js +1 -1
  26. package/dist/qna-runtime.js +1 -1
  27. package/dist/qna.iife.js +1 -1
  28. package/dist/qna.js +1 -1
  29. package/dist/{runtime-BAFZ7iOP.js → runtime-BIA5sGno.js} +3 -3
  30. package/dist/{runtime-oEtmgT4U.js → runtime-BuzZUB0i.js} +3 -3
  31. package/dist/{runtime-CUNLK1KR.js → runtime-PHarcyNZ.js} +3 -3
  32. package/dist/{simbut-Dt8e5uSk.js → simbut-CiPq-niE.js} +1 -1
  33. package/dist/simbut.iife.js +1 -1
  34. package/dist/simbut.js +1 -1
  35. package/dist/{simrel-txr23_xG.js → simrel-XWtKe-OG.js} +1 -1
  36. package/dist/simrel-runtime.js +1 -1
  37. package/dist/simrel.iife.js +1 -1
  38. package/dist/simrel.js +2 -2
  39. package/dist/{widget-base-56tkaZZB.js → widget-base-DSl6thOx.js} +1 -1
  40. package/package.json +1 -1
  41. package/dist/route-params-5K4Du1Xa.js +0 -2476
@@ -1,11 +1,11 @@
1
- (function(d){Object.defineProperty(d,Symbol.toStringTag,{value:"Module"});var fo=120*1e3,po="gengage-agentic-ref";function ir({namespace:e=po,ttlMs:t=fo,maxEntries:r=100}={}){const n=new Map;async function o(u,l={}){c();const f=mo(),g=l.kind||"pageRef",p={kind:g,value:u,expiresAt:Date.now()+(l.ttlMs||t)};for(n.set(f,p);n.size>r;)n.delete(n.keys().next().value);return await go(e,f,p),{kind:g,id:f}}async function i(u){const l=typeof u=="string"?u:u?.id;if(!l)return;const f=n.get(l)||await yo(e,l);if(f){if(f.expiresAt<=Date.now()){n.delete(l),await sr(e,l);return}return n.set(l,f),f.value}}async function a(u){const l=typeof u=="string"?u:u?.id;l&&(n.delete(l),await sr(e,l))}async function s(u){if(ar(u))return i(u);if(Array.isArray(u))return Promise.all(u.map(f=>s(f)));if(!u||typeof u!="object")return u;const l=await Promise.all(Object.entries(u).map(async([f,g])=>[f,await s(g)]));return Object.fromEntries(l)}function c(){const u=Date.now();for(const[l,f]of n.entries())f.expiresAt<=u&&n.delete(l)}return{put:o,get:i,delete:a,materialize:s,cleanup:c}}function ar(e){return!!(e&&typeof e=="object"&&typeof e.kind=="string"&&typeof e.id=="string")}function mo(){return globalThis.crypto?.randomUUID?globalThis.crypto.randomUUID():`${Date.now().toString(36)}-${Math.random().toString(36).slice(2,10)}`}async function go(e,t,r){const n=await Qe(e);n&&(await Ce(n.transaction("refs","readwrite").objectStore("refs").put(r,t)),n.close())}async function yo(e,t){const r=await Qe(e);if(!r)return;const n=await Ce(r.transaction("refs","readonly").objectStore("refs").get(t));return r.close(),n}async function sr(e,t){const r=await Qe(e);r&&(await Ce(r.transaction("refs","readwrite").objectStore("refs").delete(t)),r.close())}async function Qe(e){if(!globalThis.indexedDB)return null;try{const t=globalThis.indexedDB.open(e,1);return t.onupgradeneeded=()=>{t.result.createObjectStore("refs")},await Ce(t)}catch{return null}}function Ce(e){return new Promise((t,r)=>{e.onsuccess=()=>t(e.result),e.onerror=()=>r(e.error)})}function ho(e){return!!e&&typeof e=="object"&&e.type==="rpc.req"}function bo({worker:e,tools:t={},beacon:r,confirmation:n,memory:o=et(),refStore:i}){e.addEventListener("message",a=>{const s=a.data;ho(s)&&wo(e,s,{tools:t,beacon:r,confirmation:n,memory:o,refStore:i})})}async function wo(e,t,r){try{const n=await ur(t.method,t.payload,r);e.postMessage({type:"rpc.result",rpcId:t.rpcId,ok:!0,value:n})}catch(n){e.postMessage({type:"rpc.result",rpcId:t.rpcId,ok:!1,error:{message:n instanceof Error?n.message:String(n)}})}}var Xe=new Map,cr=null;function et(){try{if(typeof sessionStorage<"u")return sessionStorage}catch{}return{getItem:e=>Xe.get(e)??null,setItem:(e,t)=>{Xe.set(e,t)},removeItem:e=>{Xe.delete(e)}}}function ko(){return cr||=ir(),cr}function So(e){if(e&&typeof e=="object"&&typeof e.name=="string")return e;throw new Error("tool.invoke requires { name, input }")}function _o(e){if(e&&typeof e=="object"&&e.key!==void 0)return e;throw new Error("memory.get requires { key }")}function vo(e){if(e&&typeof e=="object"&&e.key!==void 0)return e;throw new Error("memory.set requires { key }")}function Ao(e){if(e&&typeof e=="object"&&e.key!==void 0)return e;throw new Error("memory.remove requires { key }")}function xo(e){return!e||typeof e!="object"?{value:e}:e}function Eo(e){const t=typeof e.kind=="string"&&e.kind.trim()?e.kind.trim():void 0,r=typeof e.ttlMs=="number"&&Number.isFinite(e.ttlMs)&&e.ttlMs>0?e.ttlMs:void 0;return t||r?{...t?{kind:t}:{},...r?{ttlMs:r}:{}}:void 0}function tt(e){if(e==null)return"session";if(e==="volatile"||e==="session"||e==="local"||e==="indexedDb")return e;if(typeof e=="string"){const t=e.toLowerCase();if(t==="indexeddb"||t==="idb")return"indexedDb"}throw new Error(`Unsupported memory tier: ${String(e)}`)}function rt(e){return typeof e.getItem=="function"&&typeof e.setItem=="function"}function nt(e){return typeof e.get=="function"&&typeof e.set=="function"}function ot(e){return typeof e.accountId=="string"&&!!e.session&&!!e.indexedDb}function To(e){const t=e.options?.ttlMs??e.ttlMs;return typeof t=="number"&&Number.isFinite(t)&&t>0?{ttlMs:t}:void 0}async function Co(e,t,r){if(rt(e)){const n=e.getItem(r);if(!n)return null;try{return JSON.parse(n)}catch{return e.removeItem?.(r),null}}return nt(e)&&!ot(e)?await e.get(t,r)??null:await e[t].get(r)??null}async function Po(e,t,r,n,o){return rt(e)?(e.setItem(r,JSON.stringify(n??null)),!0):nt(e)&&!ot(e)?await e.set(t,r,n??null,o)!==!1:await e[t].set(r,n??null,o)!==!1}async function jo(e,t,r){return rt(e)?(e.removeItem?.(r),!0):nt(e)&&!ot(e)?e.remove?(await e.remove(t,r),!0):!1:(await e[t].remove(r),!0)}async function ur(e,t,{tools:r,beacon:n,confirmation:o,memory:i,refStore:a}){if(e==="tool.invoke"){const{name:s,input:c}=So(t),u=r[s];if(typeof u!="function")throw new Error(`Unknown tool: ${s}`);return u(c)}if(e==="beacon.send")return n?.(t),{sent:!0};if(e==="confirmation.request"){if(typeof o!="function")throw new Error("No confirmation handler is configured.");const s=await o(t);return typeof s=="boolean"?{confirmed:s}:s}if(e==="memory.get"){const{key:s,tier:c}=_o(t);return Co(i,tt(c),String(s))}if(e==="memory.set"){const s=vo(t);return{ok:await Po(i,tt(s.tier),String(s.key),s.value,To(s))}}if(e==="memory.remove"){const{key:s,tier:c}=Ao(t);return{ok:await jo(i,tt(c),String(s))}}if(e==="ref.put"){const s=Pe({tools:r,beacon:n,confirmation:o,memory:i,refStore:a}),c=xo(t);return s.put(c.value,Eo(c))}if(e==="ref.get")return Pe({tools:r,beacon:n,confirmation:o,memory:i,refStore:a}).get(t);if(e==="ref.materialize")return Pe({tools:r,beacon:n,confirmation:o,memory:i,refStore:a}).materialize(t);if(e==="ref.remove")return await Pe({tools:r,beacon:n,confirmation:o,memory:i,refStore:a}).delete(t),{ok:!0};throw new Error(`Unknown RPC method: ${e}`)}function Pe(e){const t=e.refStore||ko();if(!t||typeof t.put!="function"||typeof t.get!="function")throw new Error("No ref store is configured.");return t}function lr(){return new Date().toISOString()}function q(e){return Math.max(0,Math.round(performance.now()-e))}function he(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Ro(e){const{accountId:t,locale:r="en-GB",parentUrl:n="",threadId:o,incomingContext:i,messageLimit:a}=e,s=he(i)?i:{},c=he(s.thread)?s.thread:{},u=he(s.panel)?s.panel:{},l=he(s.meta)?s.meta:{},f=dr(s.messages,a),g={id:String(o||c.id||self.crypto.randomUUID()),started_at:String(c.started_at||lr()),extensions:he(c.extensions)?{...c.extensions}:{}},p=String(l.locale||r),y=String(l.parentUrl||n||typeof self<"u"&&self.location?.href||"");return{panel:{...u},messages:f,thread:g,meta:{locale:p,parentUrl:y,accountId:t}}}function Io(e,t,r){const n=dr([t],r)[0];return n?{...e,messages:je([...e.messages,n],r)}:e}function je(e,t){const r=Lo(t);return r===1/0?[...e]:e.slice(-r)}function dr(e,t){return Array.isArray(e)?je(e.map(r=>{const n=r?.role;return{role:n==="model"?"assistant":typeof n=="string"?n:"",content:String(r?.content||"")}}).filter(r=>(r.role==="user"||r.role==="assistant")&&!!r.content),t):[]}function Lo(e){if(e===void 0)return 50;if(!Number.isFinite(e))return 1/0;const t=Math.floor(e);return t>0?t:50}var Oo="gengage:agent:context:";async function Bo({accountId:e,threadId:t,rpc:r}){const n=await r("memory.get",{tier:"session",key:it(e,t)});return n&&typeof n=="object"&&!Array.isArray(n)?n:{}}async function Mo({accountId:e,threadId:t,extensions:r,panel:n,rpc:o}){await o("memory.set",{tier:"session",key:it(e,t),value:{thread:{extensions:r},...n&&Object.keys(n).length>0?{panel:n}:{}}})}function it(e,t){return`${Oo}${e}:${t}`}function T(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var fr=class{#e=new Map;#r=new Map;#o;#c;#u;#i;#l;#d;#n;#a;#s;constructor({accountId:e,locale:t,parentUrl:r,rpc:n,persistentPanelKeys:o=[],panelKeyLimits:i={},messageLimit:a,maxThreads:s,threadTtlMs:c}){this.#o=e,this.#c=t,this.#u=r,this.#i=n,this.#l=[...new Set(o.filter(Boolean))],this.#d=$o(i),this.#n=at(a),this.#a=at(s),this.#s=at(c)}get size(){return this.pruneExpired(),this.#e.size}get(e="default"){this.pruneExpired();const t=String(e||"default"),r=this.#e.get(t);return r?(this.#t(t,r),r):null}getPanel(e="default"){return this.get(e)?.panel??null}getRecentProducts(e="default",t="last_search_products"){const r=this.getPanel(e)?.[t];return Array.isArray(r)?r:[]}async load(e){this.pruneExpired();const t=e?.session_id||e?.meta?.threadId||e?.sessionId,r=String(t||"default"),n=this.#e.get(r);if(n){const a=Fo(n,e?.context,this.#n);return this.#t(r,a),a}const o=await Bo({accountId:this.#o,threadId:r,rpc:this.#i}),i=Ro({accountId:this.#o,locale:e?.locale||this.#c,parentUrl:this.#u,threadId:r,incomingContext:Uo(o,e?.context),messageLimit:this.#n});return this.#t(r,i),this.#f(),i}patch(e,t){this.pruneExpired();const r=String(e||"default"),n=this.#e.get(r);if(!n)return null;const o=st(n,typeof t=="function"?t(n):t,this.#n);return this.#t(r,o),o}appendUserMessage(e,t){this.pruneExpired();const r=String(e||"default");if(!t)return this.#e.get(r)??null;const n=this.#e.get(r);if(!n)return null;const o=Io(n,{role:"user",content:t},this.#n);return this.#t(r,o),o}async commit(e){this.pruneExpired();const t=String(e||"default"),r=this.#e.get(t);return r?(this.#t(t,r),await Mo({accountId:this.#o,threadId:t,extensions:r.thread.extensions,panel:No(r.panel,this.#l,this.#d),rpc:this.#i}),r):null}delete(e){const t=String(e||"default");return this.#r.delete(t),this.#e.delete(t)}clear(){this.#e.clear(),this.#r.clear()}pruneExpired(e=Date.now()){if(!this.#s)return 0;let t=0;for(const[r,n]of this.#r)e-n<=this.#s||(this.#r.delete(r),this.#e.delete(r)&&(t+=1));return t}#t(e,t){this.#e.delete(e),this.#e.set(e,t),this.#r.set(e,Date.now())}#f(){if(this.#a)for(;this.#e.size>this.#a;){const e=this.#e.keys().next().value;if(!e)return;this.delete(e)}}};function No(e,t,r){if(!t.length||!T(e))return;const n={};for(const o of t)Object.prototype.hasOwnProperty.call(e,o)&&(n[o]=qo(e[o],r[o]));return n}function $o(e){const t={};for(const[r,n]of Object.entries(e||{})){const o=Math.floor(Number(n));r&&Number.isFinite(o)&&o>0&&(t[r]=o)}return t}function at(e){if(e===void 0)return;const t=Math.floor(Number(e));return Number.isFinite(t)&&t>0?t:void 0}function qo(e,t){return!t||!Array.isArray(e)?e:e.slice(-t)}function Uo(e,t){if(!T(e)&&!T(t))return{};const r=T(e)?e:{},n=st(r,T(t)?t:{});return T(r.panel)&&(n.panel=r.panel),n}function Fo(e,t,r){if(!T(t))return e;const n=st(e,t,r);return{...n,panel:e.panel,thread:{...n.thread,id:e.thread.id,started_at:e.thread.started_at},meta:{...n.meta,accountId:e.meta.accountId}}}function st(e,t,r){if(!T(t))return e;const n=e,o=t,i=T(n.panel)?n.panel:{},a=T(o.panel)?o.panel:{},s=T(n.thread)?n.thread:{},c=T(o.thread)?o.thread:{},u=T(s.extensions)?s.extensions:{},l=T(c.extensions)?c.extensions:{},f=T(n.meta)?n.meta:{},g=T(o.meta)?o.meta:{};return{...e,...t,panel:{...i,...a},thread:{...s,...c,extensions:{...u,...l}},meta:{...f,...g},messages:Array.isArray(o.messages)?je(o.messages,r):e.messages??[]}}function pr(e){const t=String.fromCharCode(...e);return btoa(t).replace(/\+/gu,"-").replace(/\//gu,"_").replace(/=+$/u,"")}function mr(e){return pr(new TextEncoder().encode(JSON.stringify(e)))}async function Do({accountId:e,devJwtSecret:t,ttlS:r=300}){if(!t)throw new Error("devJwtSecret is required for local agent mode.");const n=Math.floor(Date.now()/1e3),o=`${mr({alg:"HS256",typ:"JWT"})}.${mr({sub:e,iat:n,exp:n+r,scope:"invoke",jti:crypto.randomUUID?.()||`${n}-${Math.random()}`})}`,i=await crypto.subtle.importKey("raw",new TextEncoder().encode(t),{name:"HMAC",hash:"SHA-256"},!1,["sign"]),a=await crypto.subtle.sign("HMAC",i,new TextEncoder().encode(o));return`${o}.${pr(new Uint8Array(a))}`}function ct({accountId:e,devJwtSecret:t,tokenBrokerUrl:r,tokenBrokerAudience:n,refreshSkewS:o=30,fetchImpl:i=fetch}){let a=null;return async({signal:s,parentUrl:c}={})=>{if(t)return Do({accountId:e,devJwtSecret:t});if(!r)throw new Error("tokenBrokerUrl is required for production agent mode.");const u=Math.floor(Date.now()/1e3);return a?.token&&a.expiresAtS-o>u||(a=await zo({accountId:e,tokenBrokerUrl:r,tokenBrokerAudience:n,parentUrl:c,signal:s,fetchImpl:i})),a.token}}async function zo({accountId:e,tokenBrokerUrl:t,tokenBrokerAudience:r,parentUrl:n,signal:o,fetchImpl:i}){const a=await i(t,{method:"POST",credentials:"include",headers:{accept:"application/json","content-type":"application/json"},body:JSON.stringify({accountId:e,scope:"invoke",audience:r||void 0,parentUrl:n||void 0}),...o?{signal:o}:{}});if(!a.ok)throw new Error(`Token broker request failed (${a.status}).`);const s=await a.json(),c=s?.token||s?.jwt||s?.access_token;if(!c||typeof c!="string")throw new Error("Token broker response did not include a JWT.");return{token:c,expiresAtS:Go(s)||Vo(c)||Math.floor(Date.now()/1e3)+300}}function Go(e){const t=e?.expiresAtS??e?.expires_at_s??e?.expiresInS??e?.expires_in_s;if(Number.isFinite(t))return Number(t);const r=e?.expiresIn??e?.expires_in;if(Number.isFinite(r))return Math.floor(Date.now()/1e3)+Number(r);const n=e?.expiresAt??e?.expires_at;if(typeof n=="string"){const o=Date.parse(n);if(Number.isFinite(o))return Math.floor(o/1e3)}return null}function Vo(e){try{const[,t]=e.split(".");if(!t)return null;const r=t.replace(/-/gu,"+").replace(/_/gu,"/"),n=atob(r.padEnd(Math.ceil(r.length/4)*4,"=")),o=JSON.parse(n);return Number.isFinite(o?.exp)?Number(o.exp):null}catch{return null}}var gr={unauthorized:{code:"auth",message:"Assistant authentication failed. Please retry."},forbidden:{code:"auth",message:"Assistant authentication failed. Please retry."},unknown_op:{code:"op_unavailable",message:"This assistant action is not available yet."},invalid_input:{code:"invalid_request",message:"The assistant request was not valid."},account_config:{code:"account_config",message:"Assistant configuration is unavailable."},upstream_llm:{code:"op_failed",message:"The assistant could not complete that request."},upstream_timeout:{code:"op_timeout",message:"The assistant took too long to respond."},schema_mismatch:{code:"op_failed",message:"The assistant could not complete that request."},rate_limited:{code:"rate_limited",message:"The assistant is receiving too many requests. Please retry shortly."},internal:{code:"op_failed",message:"The assistant could not complete that request."},payload_too_large:{code:"invalid_request",message:"The assistant request was too large."}},z=class extends Error{constructor(e,t,r={}){super(t),this.name="AgentError",this.code=e,this.source=r.source||"agent",r.sourceCode&&(this.sourceCode=r.sourceCode),r.detail!==void 0&&(this.detail=r.detail)}};function ut(e){const t=String(e?.code||"upstream_llm"),r=gr[t]||gr.upstream_llm;return new z(r.code,r.message,{source:"be",sourceCode:t,detail:e?.detail})}function yr(e,t){const r=t?.error&&typeof t.error=="object"?t.error:{};return ut({code:String(r.code||Ko(e)),detail:r.detail})}function hr(e){return e instanceof z?{type:"error",code:e.code,message:e.message}:{type:"error",code:"agent_invoke_failed",message:"The assistant could not complete that request."}}function Ko(e){return e===401?"unauthorized":e===403?"forbidden":e===413?"payload_too_large":e===429?"rate_limited":"internal"}var Ho=7200*1e3,br=200,Wo=5*1024*1024,Jo="gengage_request_response_cache",Zo=1,U="responses",Yo=new Set(["addToCart","like"]),F=new Map,wr=null;async function Qo(e,t={},r={}){const n=Xo(e,t);if(!n)return fetch(e,t);const o=Date.now(),i=await ti(n,o);if(i)return oi(i);const a=await fetch(e,t);return a.ok&&ri(n,a.clone(),o,{ttlMs:r.ttlMs??Ho,maxEntries:r.maxEntries??br,maxBodyBytes:r.maxBodyBytes??Wo}),a}function Xo(e,t={}){if(typeof Request<"u"&&e instanceof Request)return null;const r=String(t.method||"GET").toUpperCase();return r!=="POST"||typeof t.body!="string"||ei(t.body)?null:`rr:${di(li({url:String(e),method:r,headers:ii(t.headers),body:t.body}))}`}function ei(e){try{const t=JSON.parse(e);if(!t||typeof t!="object"||Array.isArray(t))return!1;const r=t.type;return typeof r=="string"&&Yo.has(r)}catch{return!1}}async function ti(e,t){const r=F.get(e);if(r)if(r.expiresAt<=t)F.delete(e);else return r.lastAccessedAt=t,F.delete(e),F.set(e,r),lt(r),r;const n=await si(e);return n?n.expiresAt<=t?(F.delete(e),ci(e),null):(n.lastAccessedAt=t,F.set(e,n),lt(n),kr(br),n):null}async function ri(e,t,r,n){try{const o=await t.text();if(fi(o)>n.maxBodyBytes||ni(o))return;const i={key:e,status:t.status,statusText:t.statusText,headers:ai(t.headers),body:o,createdAt:r,expiresAt:r+n.ttlMs,lastAccessedAt:r};F.set(e,i),kr(n.maxEntries),await lt(i),await ui(n.maxEntries,r)}catch{}}function ni(e){return/"_error"\s*:/u.test(e)||/"type"\s*:\s*"error"/u.test(e)}function oi(e){return new Response(e.body,{status:e.status,statusText:e.statusText,headers:new Headers(e.headers)})}function ii(e){const t=new Headers(e),r=[];return t.forEach((n,o)=>{const i=o.toLowerCase();i!=="authorization"&&i!=="cookie"&&r.push([i,n])}),r.sort(([n],[o])=>n.localeCompare(o))}function ai(e){const t=[];return e.forEach((r,n)=>{const o=n.toLowerCase();o!=="set-cookie"&&t.push([o,r])}),t.sort(([r],[n])=>r.localeCompare(n))}function kr(e){for(;F.size>e;){const t=[...F.values()].sort((r,n)=>r.lastAccessedAt-n.lastAccessedAt)[0];if(!t)break;F.delete(t.key)}}async function Re(){return typeof indexedDB>"u"?null:(wr??=new Promise(e=>{const t=indexedDB.open(Jo,Zo);t.onupgradeneeded=()=>{const r=t.result;r.objectStoreNames.contains(U)||r.createObjectStore(U,{keyPath:"key"}).createIndex("lastAccessedAt","lastAccessedAt",{unique:!1})},t.onsuccess=()=>e(t.result),t.onerror=()=>e(null),t.onblocked=()=>e(null)}),wr)}async function si(e){const t=await Re();return t?new Promise(r=>{const n=t.transaction(U,"readonly"),o=n.objectStore(U).get(e);o.onsuccess=()=>r(o.result??null),o.onerror=()=>r(null),n.onerror=()=>r(null)}):null}async function lt(e){const t=await Re();t&&await new Promise(r=>{const n=t.transaction(U,"readwrite");n.objectStore(U).put(e),n.oncomplete=()=>r(),n.onerror=()=>r(),n.onabort=()=>r()})}async function ci(e){const t=await Re();t&&await new Promise(r=>{const n=t.transaction(U,"readwrite");n.objectStore(U).delete(e),n.oncomplete=()=>r(),n.onerror=()=>r(),n.onabort=()=>r()})}async function ui(e,t){const r=await Re();r&&await new Promise(n=>{const o=r.transaction(U,"readwrite"),i=o.objectStore(U),a=[],s=i.openCursor();s.onsuccess=()=>{const c=s.result;if(!c){const u=a.filter(f=>f.expiresAt<=t),l=a.filter(f=>f.expiresAt>t).sort((f,g)=>f.lastAccessedAt-g.lastAccessedAt).slice(0,Math.max(0,a.length-u.length-e));for(const f of[...u,...l])i.delete(f.key);return}a.push(c.value),c.continue()},s.onerror=()=>n(),o.oncomplete=()=>n(),o.onerror=()=>n(),o.onabort=()=>n()})}function li(e){return JSON.stringify(dt(e))}function dt(e){return Array.isArray(e)?e.map(dt):!e||typeof e!="object"?e:Object.fromEntries(Object.entries(e).sort(([t],[r])=>t.localeCompare(r)).map(([t,r])=>[t,dt(r)]))}function di(e){let t=14695981039346656037n;const r=1099511628211n;for(let n=0;n<e.length;n+=1)t^=BigInt(e.charCodeAt(n)),t=BigInt.asUintN(64,t*r);return t.toString(16).padStart(16,"0")}function fi(e){return typeof TextEncoder<"u"?new TextEncoder().encode(e).byteLength:e.length}async function pi({beUrl:e,accountId:t,devJwtSecret:r,tokenBrokerUrl:n,tokenBrokerAudience:o,jwtProvider:i,parentUrl:a,op:s,input:c,cacheTtlS:u,cacheKey:l,browserCache:f,signal:g}){const p=await(i||ct({accountId:t,devJwtSecret:r,tokenBrokerUrl:n,tokenBrokerAudience:o}))({...g?{signal:g}:{},...a?{parentUrl:a}:{}}),{opDomain:y,opName:h}=mi(s,t),m={method:"POST",headers:{authorization:`Bearer ${p}`,"content-type":"application/json",accept:"application/x-ndjson"},body:JSON.stringify({op_domain:y,op_name:h,op_payload:c,...u!==void 0?{cache_ttl_s:u}:{},...l!==void 0?{cache_key:l}:{}}),...g?{signal:g}:{}},b=`${String(e).replace(/\/+$/u,"")}/v1/execute`,w=f===!1?await fetch(b,m):await Qo(b,m,typeof f=="object"?f:{});if(!w.ok)throw yr(w.status,await yi(w));return hi(w)}function mi(e,t){if(!e||e.startsWith("-")||e.endsWith("-"))throw new Error(`Invalid BE op name: ${e}`);return{opDomain:gi(t),opName:e}}function gi(e){return e.replace(/-agentic$/u,"")}async function yi(e){try{return await e.json()}catch{return{error:{code:e.statusText||"internal"}}}}async function hi(e){const t=e.body?.getReader();if(!t)throw new Error("BE response body is not readable.");const r=new TextDecoder;let n="";const o={};for(;;){const{value:a,done:s}=await t.read();if(s)break;n+=r.decode(a,{stream:!0});let c=n.indexOf(`
2
- `);for(;c>=0;){const u=n.slice(0,c).trim();n=n.slice(c+1),u&&Sr(JSON.parse(u),o),c=n.indexOf(`
3
- `)}}const i=n.trim();return i&&Sr(JSON.parse(i),o),o}function Sr(e,t){if(e._error)throw ut(e._error);if(!e._end)for(const[r,n]of Object.entries(e)){if(Object.prototype.hasOwnProperty.call(t,r))throw new z("op_failed",`BE streamed duplicate field "${r}".`,{source:"be",sourceCode:"schema_mismatch"});t[r]=n}}function bi(e={}){return{type:"metadata",...e}}function _r(e,t=!1,r={}){return{type:"text_chunk",content:e,final:t,...r}}function wi(e){return{type:"ui_spec",...e}}function ki(e){return{type:"action",action:e}}function vr(e,t){return{type:"error",code:e,message:t}}function ft(){return{type:"done"}}function Ar(e,t){return e[t?.type||t?.action?.type||"inputText"]||e.inputText}function xr(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:null}function Ie(e,t={}){const r=xr(e);if(!r)return null;const n=t.catalogMapper?.(r);if(n)return n;const o=ne(r.sku,r.SKU);if(!o)return null;const i={sku:o,name:ne(r.name,r.title,r.short_name,o)||o,url:ne(r.url)||""},a=Array.isArray(r.images)?r.images:void 0,s=ne(r.imageUrl,r.image_url,r.image,a?.[0]);s&&(i.imageUrl=s),a&&a.length>1&&(i.images=a.filter(b=>!!b).map(String));const c=be(r.price_discounted),u=be(r.price),l=c||u;l>0&&(i.price=String(l));const f=c>0?u:0;f>0&&(i.originalPrice=String(f));const g=ne(r.brand);g&&(i.brand=g);const p=be(r.rating);p>0&&(i.rating=p);const y=be(r.review_count)||be(r.reviewCount);y>0&&(i.reviewCount=y);const h=ne(r.cart_code,r.cartCode);h&&(i.cartCode=h),typeof r.in_stock=="boolean"&&(i.inStock=r.in_stock),typeof r.inStock=="boolean"&&(i.inStock=r.inStock);const m=r.category_names;return Array.isArray(m)&&(i.categoryNames=m.map(String)),i}function Le(e){const t=xr(e);if(!t)return e;const r=t.category_names,n=Array.isArray(r)?r:void 0,o=t.images,i=Array.isArray(o)?o:void 0,a={sku:t.sku,name:t.name||t.title,url:t.url,price:t.price,currency:t.price_currency||t.currency,category:n?.[n.length-1]??void 0,category_names:n?n.slice(0,4):void 0,image:i?i[0]:t.image,in_stock:t.in_stock,rating:t.rating,review_count:t.review_count};for(const s of Object.keys(a))a[s]===void 0&&delete a[s];return a}function Si(e){return Array.isArray(e)?e.map(Le).filter(t=>!!t):[]}function ne(...e){for(const t of e)if(typeof t=="string"&&t.trim())return t.trim();return""}function be(e){const t=Number(e);return Number.isFinite(t)?t:0}function Er(e){return Array.isArray(e)?e.map(String).filter(Boolean):typeof e=="string"&&e?[e]:[]}function pt(e,t,r={}){return`${e}:${r.version||"v2"}:${oe(t)}`}function _i(e,t={}){return Tr(e).map(r=>Cr(typeof r=="string"?r:r.sku,t.locale)).filter(Boolean).filter((r,n,o)=>o.indexOf(r)===n).sort((r,n)=>mt(r,n,t.locale)).slice(0,t.limit||16).join(",")}function vi(e,t={}){return oe(Tr(e).map(r=>xi(r,t)).filter(r=>!!r).sort((r,n)=>mt(String(r.sku||r.name||""),String(n.sku||n.name||""),t.locale)).slice(0,t.limit||16))}function Ai(e,t){return Y(e,t)}function oe(e){let t=2166136261;const r=Ei(e);for(let n=0;n<r.length;n+=1)t^=r.charCodeAt(n),t=Math.imul(t,16777619);return(t>>>0).toString(36)}function xi(e,t){if(!e||typeof e!="object"||Array.isArray(e))return null;const r=e,n=t.mapProduct?.(r);if(n)return we(n);const o=Le(r);return o&&typeof o=="object"&&!Array.isArray(o)?we(Ti(o,t)):null}function Tr(e){return Array.isArray(e)?e.filter(t=>typeof t=="string"||!!(t&&typeof t=="object"&&!Array.isArray(t))):[]}function Ei(e){return JSON.stringify(we(e))}function we(e){return Array.isArray(e)?e.map(we):!e||typeof e!="object"?e:Object.fromEntries(Object.entries(e).filter(([,t])=>t!==void 0).sort(([t],[r])=>t.localeCompare(r)).map(([t,r])=>[t,we(r)]))}function Ti(e,t){return{sku:Cr(e.sku,t.locale),name:Y(e.name,t.locale),url:Y(e.url,t.locale),price:e.price,currency:Y(e.currency,t.locale),category:Y(e.category,t.locale),category_names:Ci(e.category_names,t.locale,16),image:Y(e.image,t.locale),in_stock:e.in_stock,rating:e.rating,review_count:e.review_count}}function Cr(e,t){return Y(e,t).toUpperCase()}function Y(e,t){return typeof e=="string"?e.trim().replace(/\s+/gu," ").toLocaleLowerCase(t||void 0):""}function mt(e,t,r){return e.localeCompare(t,r,{numeric:!0})}function Ci(e,t,r){return Array.isArray(e)?e.map(n=>Y(n,t)).filter(Boolean).sort((n,o)=>mt(n,o,t)).slice(0,r):void 0}async function Pi({request:e,accountModule:t,contextStore:r,beClient:n,toolBridge:o,emit:i,rpc:a,signal:s}){const c=performance.now(),u=await r.load(e),l=u.thread.id,f=Qi(e);zi(u,f)&&r.appendUserMessage(l,f);const g=Ar(t.flows,e);if(!g)return i(vr("unknown_action",`No agent flow for request type ${e?.type||"inputText"}`)),i(ft()),{steps:0,productSkusEmitted:[]};const p={request:e,context:r.patch(l,{})||u,bag:{},accountConfig:t.accountConfig||{},threadId:l,steps:0,productSkusEmitted:new Set,committed:!1,messageLimit:Yi(t.contextPersistence?.messageLimit),catalogMapper:t.catalogMapper,similarityMapper:t.similarityMapper},y={contextStore:r,beClient:n,toolBridge:o,emit:i,rpc:a,adapters:t.adapters||{},...s?{signal:s}:{},...t.trace?{trace:t.trace}:{}};await G(y,Se("turn:start",p));try{await ie(g,p,y),p.committed||await gt(p,y)}catch(h){throw await G(y,{...Se("turn:error",p),latencyMs:q(c),errorCode:kt(h)}),h}return await a("beacon.send",{type:"turnSummary",threadId:l,sessionId:e?.session_id||e?.sessionId||l,accountId:t.accountId||p.context.meta.accountId,steps:p.steps,totalLatencyMs:q(c),productSkusEmitted:[...p.productSkusEmitted]}),await G(y,{...Se("turn:end",p),latencyMs:q(c)}),{steps:p.steps,productSkusEmitted:[...p.productSkusEmitted]}}async function ie(e,t,r){for(const n of e){if(r.signal?.aborted||t.committed)return;t.steps+=1;const o=t.steps,i=performance.now();await G(r,bt("step:start",t,n,o));try{await ji(n,t,r),await G(r,{...bt("step:end",t,n,o),latencyMs:q(i)})}catch(a){throw await G(r,{...bt("step:error",t,n,o),latencyMs:q(i),errorCode:kt(a)}),a}t.context=r.contextStore.patch(t.threadId,{})||t.context}}async function ji(e,t,r){const n=ae(t,r);if(e.kind==="be_op"){await Ri(e,t,r,n);return}if(e.kind==="tool"){await Oi(e,t,r,n);return}if(e.kind==="adapter"){await Bi(e,t,r,n);return}if(e.kind==="emit"){await Mi(e,t,r);return}if(e.kind==="patch"){await Ni(e,t,r);return}if(e.kind==="branch"){await $i(e,t,r,n);return}if(e.kind==="agent_loop"){await qi(e,t,r,n);return}if(e.kind==="parallel"){await Ui(e,t,r);return}if(e.kind==="refusal"){await Fi(e,t,r,n);return}e.kind==="commit"&&await Di(e,t,r)}async function Ri(e,t,r,n){const o=performance.now();let i;try{const s=await P(e.input,n),c=Ii(e,t,s,await P(e.cache,n)),u=await P(e.cacheTtlS,n)??c.cacheTtlS,l=await P(e.cacheKey,n)??c.cacheKey,f=await P(e.browserCache,n),g=ke(await P(e.timeoutMs,n));await ht(e,t,r,n);const p=g?new AbortController:null,y=Rr(r.signal,p?.signal);i=await Me(r.beClient.invoke({op:e.op,input:s,...u!==void 0?{cacheTtlS:u}:{},...l!==void 0?{cacheKey:l}:{},...f!==void 0?{browserCache:f}:{},...y?{signal:y}:{}}),g,()=>new z("op_timeout","The assistant took too long to respond.",{source:"be",sourceCode:"timeout"}),()=>p?.abort())}catch(s){const c=s,u=String(c?.sourceCode||c?.code||"unknown"),l={type:"agentOp",threadId:t.threadId,sessionId:t.request?.session_id||t.request?.sessionId||t.threadId,accountId:t.context.meta.accountId,op:e.op,status:"error",latencyMs:q(o),errorCode:u};if(await r.rpc("beacon.send",l),e.onError){e.errorOut&&(t.bag[e.errorOut]=s),await ie(e.onError,t,r);return}throw s}e.out&&(t.bag[e.out]=i),await Oe(e,i,t,r.contextStore);const a={type:"agentOp",threadId:t.threadId,sessionId:t.request?.session_id||t.request?.sessionId||t.threadId,accountId:t.context.meta.accountId,op:e.op,status:"ok",latencyMs:q(o)};await r.rpc("beacon.send",a)}function Ii(e,t,r,n){if(!n||n.strategy!=="input-hash")return{};const o=ke(n.ttlS);if(!o)return{};const i=t.context.meta.locale,a=n.promptVersion||Li(r)||"current";return{cacheTtlS:o,cacheKey:pt(e.op,{account:t.context.meta.accountId,locale:i,promptVersion:a,payload:r},{version:"input-hash"})}}function Li(e){if(!e||typeof e!="object"||Array.isArray(e))return;const t=e,r=t.prompt_version||t.promptVersion;return typeof r=="string"&&r.trim()?r.trim():void 0}async function Oi(e,t,r,n){const o=performance.now();try{await ht(e,t,r,n);const i=ke(await P(e.timeoutMs,n)),a=await Me(r.toolBridge.invoke(e.name,await P(e.input,n)),i,()=>new z("tool_timeout","The assistant tool took too long to respond.",{source:"tool",sourceCode:"timeout"}));e.out&&(t.bag[e.out]=a),await Oe(e,a,t,r.contextStore),await r.rpc("beacon.send",{type:"agentTool",threadId:t.threadId,sessionId:Be(t),accountId:t.context.meta.accountId,tool:e.name,status:"ok",latencyMs:q(o)})}catch(i){const a=i;if(await r.rpc("beacon.send",{type:"agentTool",threadId:t.threadId,sessionId:Be(t),accountId:t.context.meta.accountId,tool:e.name,status:"error",latencyMs:q(o),errorCode:String(a?.code||a?.name||"unknown")}),e.onError){e.errorOut&&(t.bag[e.errorOut]=i),await ie(e.onError,t,r);return}throw i}}async function Bi(e,t,r,n){const o=r.adapters?.[e.name];if(typeof o!="function")throw new Error(`Unknown flow adapter: ${e.name}`);await ht(e,t,r,n);const i=ke(await P(e.timeoutMs,n)),a=await Me(o(await P(e.input,n),n),i,()=>new z("adapter_timeout","The assistant adapter took too long to respond.",{source:"adapter",sourceCode:"timeout"}));e.out&&(t.bag[e.out]=a),await Oe(e,a,t,r.contextStore)}async function Mi(e,t,r){const n=await e.build(ae(t,r));Xi(n,t.productSkusEmitted),r.emit(n)}async function Ni(e,t,r){await Oe(e,void 0,t,r.contextStore)}async function $i(e,t,r,n){const o=String(await P(e.on,n)||"default");await ie(e.cases[o]||e.cases.default||[],t,r)}async function qi(e,t,r,n){if(!await e.shouldContinue(t.bag,n))return;const o=Math.max(0,Math.floor(Number(e.maxIterations)||0));let i=0;for(;!r.signal?.aborted&&!t.committed;){if(await ie(e.body,t,r),r.signal?.aborted||t.committed||!await e.shouldContinue(t.bag,ae(t,r))||i>=o)return;const a=await e.onIterate?.(t.bag,ae(t,r));a&&typeof a=="object"&&Object.assign(t.bag,a),i+=1}}async function Ui(e,t,r){const n=ke(await P(e.timeoutMs,ae(t,r))),o=n?new AbortController:null,i=Rr(r.signal,o?.signal),a=e.steps.map(u=>{const l={...t,context:Gi(t.context),bag:yt(t.bag),productSkusEmitted:new Set(t.productSkusEmitted),committed:!1},f=[];return ie(u,l,{...r,emit:g=>{!i?.aborted&&g.type!=="done"&&f.push(g)},contextStore:Vi(l),...i?{signal:i}:{}}).then(()=>({state:l,events:f}))}),s=await Me(Promise.all(a),n,()=>new z("parallel_timeout","The assistant parallel step took too long to respond.",{source:"agent",sourceCode:"timeout"}),()=>o?.abort()),c=e.merge||{};for(const{state:u,events:l}of s){for(const f of l)r.emit(f);for(const f of u.productSkusEmitted)t.productSkusEmitted.add(f);for(const f of c.bag||[])Object.prototype.hasOwnProperty.call(u.bag,f)&&(t.bag[f]=u.bag[f]);if(c.panel?.length){const f=Pr(u.context.panel,c.panel);Object.keys(f).length&&(t.context=r.contextStore.patch(t.threadId,{panel:f})||t.context)}if(c.threadExtensions?.length){const f=Pr(u.context.thread.extensions,c.threadExtensions);Object.keys(f).length&&(t.context=r.contextStore.patch(t.threadId,{thread:{...t.context.thread,extensions:f}})||t.context)}}}async function Fi(e,t,r,n){r.emit(_r(await P(e.message,n),!0)),await gt(t,r)}async function Di(e,t,r){await gt(t,r)}async function gt(e,{contextStore:t,emit:r}){e.committed||(e.context=await t.commit(e.threadId)||e.context,e.committed=!0,r(ft()))}async function Oe(e,t,r,n){if(typeof e.patch!="function")return;const o=await e.patch(r.context,t,ae(r));o&&(r.context=n.patch(r.threadId,o)||r.context)}function ae(e,t){return{request:e.request,context:e.context,bag:e.bag,accountConfig:e.accountConfig,catalogMapper:e.catalogMapper,similarityMapper:e.similarityMapper,...t?{beClient:t.beClient,toolBridge:t.toolBridge}:{},...t?.signal?{signal:t.signal}:{}}}function Be(e){return e.request?.session_id||e.request?.sessionId||e.threadId}function zi(e,t){if(!t)return!1;const r=e.messages[e.messages.length-1];return r?.role!=="user"||r.content!==t}function Pr(e,t){const r={};for(const n of t)Object.prototype.hasOwnProperty.call(e,n)&&(r[n]=e[n]);return r}function Gi(e){return{...e,panel:yt(e.panel||{}),thread:{...e.thread,extensions:yt(e.thread?.extensions||{})},meta:e.meta,messages:e.messages}}function Vi(e){return{async load(){return e.context},patch(t,r){return e.context=Ki(e.context,r,e.messageLimit),e.context},appendUserMessage(){return e.context},async commit(){return e.context}}}function Ki(e,t,r){if(!t||typeof t!="object")return e;const n=jr(e.panel,t.panel),o=jr(e.thread?.extensions||{},t.thread?.extensions);return{...e,...t,panel:n,thread:{...e.thread||{},...t.thread||{},extensions:o},meta:{...e.meta||{},...t.meta||{}},messages:Array.isArray(t.messages)?je(t.messages,r):e.messages}}function jr(e,t){if(!t||typeof t!="object"||Array.isArray(t))return e;const r={};for(const n of Object.keys(e))r[n]=e[n];for(const[n,o]of Object.entries(t))r[n]=o;return r}function yt(e){return new Proxy({},{get(t,r,n){if(typeof r!="string")return Reflect.get(t,r,n);if(Object.prototype.hasOwnProperty.call(t,r))return t[r];const o=e[r];if(Hi(o)){const i=Wi(o);return t[r]=i,i}return o},has(t,r){return Reflect.has(t,r)||Reflect.has(e,r)},ownKeys(t){return Reflect.ownKeys(t)},getOwnPropertyDescriptor(t,r){return Object.getOwnPropertyDescriptor(t,r)}})}function Hi(e){return!!(e&&typeof e=="object")}function Wi(e){if(typeof structuredClone=="function")try{return structuredClone(e)}catch{}try{return JSON.parse(JSON.stringify(e))}catch{return e}}async function P(e,t){return typeof e=="function"?await e(t):e}function ke(e){if(e===void 0)return;const t=Math.floor(Number(e));return Number.isFinite(t)&&t>0?t:void 0}async function Me(e,t,r,n){if(!t)return e;let o,i=!1;return new Promise((a,s)=>{o=setTimeout(()=>{i||(i=!0,n?.(),s(r()))},t),Promise.resolve(e).then(c=>{i||(i=!0,o&&clearTimeout(o),a(c))},c=>{i||(i=!0,o&&clearTimeout(o),s(c))})})}function Rr(e,t){if(!e)return t;if(!t||e.aborted)return e;if(t.aborted)return t;const r=new AbortController,n=()=>r.abort();return e.addEventListener("abort",n,{once:!0}),t.addEventListener("abort",n,{once:!0}),r.signal}async function ht(e,t,r,n){if(!e.confirm)return;const o=await P(e.confirm,n);if(!o)return;const i=Ji(o,e,t);await G(r,wt("confirmation:start",t,e));try{const a=await r.rpc("confirmation.request",i),s=typeof a=="boolean"?a:a?.confirmed===!0;if(await G(r,wt("confirmation:end",t,e)),s)return;throw new z("confirmation_declined","The requested action was not confirmed.",{source:e.kind==="be_op"?"be":e.kind,sourceCode:"confirmation_declined",detail:a})}catch(a){throw await G(r,{...wt("confirmation:error",t,e),errorCode:kt(a)}),a}}function Ji(e,t,r){return{...Zi(e),accountId:r.context.meta.accountId,threadId:r.threadId,sessionId:Be(r),stepKind:t.kind,...t.kind==="be_op"?{stepName:t.op}:{stepName:t.name}}}function Zi(e){return typeof e=="string"?{message:e}:e===!0?{}:e&&typeof e=="object"?{...typeof e.title=="string"?{title:e.title}:{},...typeof e.message=="string"?{message:e.message}:{},...typeof e.action=="string"?{action:e.action}:{},...Object.prototype.hasOwnProperty.call(e,"payload")?{payload:e.payload}:{}}:{}}async function G(e,t){try{await e.trace?.(t)}catch{}}function Se(e,t){return{type:e,accountId:t.context.meta.accountId,threadId:t.threadId,sessionId:Be(t)}}function bt(e,t,r,n){const o=Ir(r);return{...Se(e,t),stepIndex:n,stepKind:r.kind,...o?{stepName:o}:{}}}function wt(e,t,r){const n=Ir(r);return{...Se(e,t),stepKind:r.kind,...n?{stepName:n}:{}}}function Ir(e){if(e.kind==="be_op")return e.op;if(e.kind==="tool"||e.kind==="adapter")return e.name}function kt(e){if(e&&typeof e=="object"){const t=e;return String(t.sourceCode||t.code||t.name||"unknown")}return"unknown"}function Yi(e){if(e===void 0)return;const t=Math.floor(Number(e));return Number.isFinite(t)&&t>0?t:void 0}function Qi(e){const t=e?.payload;if(typeof t=="string")return t;if(t&&typeof t=="object"&&"text"in t){const r=t.text;if(typeof r=="string")return r}return typeof e?.action?.payload=="string"?e.action.payload:typeof e?.action?.title=="string"?e.action.title:""}function Xi(e,t){const r=e,n=r.spec,o=Array.isArray(n?.items)?n.items:void 0,i=Array.isArray(r.items)?r.items:void 0,a=o||i;if(Array.isArray(a)){for(const s of a)if(s&&typeof s=="object"){const c=s.sku;typeof c=="string"&&t.add(c)}}}function ea(e){return{invoke(t,r){return e("tool.invoke",{name:t,input:r})}}}var ta=512,ra=.74;function Lr({accountId:e,worker:t,beUrl:r,devJwtSecret:n,tokenBrokerUrl:o,tokenBrokerAudience:i,defaultLocale:a,tools:s={},beacon:c,confirmation:u,memory:l=et()}){let f=1;const g=new Map;return bo({worker:t,tools:s,beacon:p=>c?.({...p,accountId:p.accountId||e}),...u?{confirmation:u}:{},memory:l}),t.addEventListener("message",p=>{const y=p.data||{};if(y.type==="activity"&&y.entry){Or(y.entry);return}const h=typeof y.id=="number"?y.id:null;if(h==null)return;const m=g.get(h);if(m){if(y.type==="event"&&y.event){St(m,y.event);return}if(y.type==="error"){m.onError(new Error(y.message||"Agent worker failed")),g.delete(h);return}y.type==="end"&&g.delete(h)}}),(p,y,h,m)=>{const b=f++;g.set(b,y);const w=()=>{g.delete(b),t.postMessage({id:b,type:"abort"})},A=_=>{if(h.aborted){w();return}t.postMessage({id:b,type:"invoke",accountId:e,beUrl:r,devJwtSecret:n,tokenBrokerUrl:o,tokenBrokerAudience:i,defaultLocale:a,request:_,parentUrl:window.location.href,debugActivity:na()})};if(h.aborted){w();return}if(h.addEventListener("abort",w,{once:!0}),m){Mr(p,m).then(A).catch(_=>{g.delete(b),y.onError(_ instanceof Error?_:new Error("Failed to read image attachment"))});return}A(p)}}function Or(e){const t=window;(t.__GENGAGE_AGENTIC_DEBUG_RECORD__||t.__GENGAGE_AGENTIC_DEBUG_RECORD_BE__)?.(e)}function na(){const e=window;return typeof(e.__GENGAGE_AGENTIC_DEBUG_RECORD__||e.__GENGAGE_AGENTIC_DEBUG_RECORD_BE__)=="function"}function Br({accountId:e,accountModule:t,beUrl:r,devJwtSecret:n,tokenBrokerUrl:o,tokenBrokerAudience:i,defaultLocale:a,tools:s={},beacon:c,confirmation:u,memory:l}){let f=null;const g=oa({accountId:e,tools:s,beacon:c,confirmation:u,memory:l??et()}),p=ea(g),y=ct({accountId:e,...n?{devJwtSecret:n}:{},...o?{tokenBrokerUrl:o}:{},...i?{tokenBrokerAudience:i}:{}});return async(h,m,b,w)=>{const A=await Mr(h||{},w);f||=new fr({accountId:e,locale:A?.locale||a,parentUrl:window.location.href,rpc:g,persistentPanelKeys:t.contextPersistence?.panelKeys,panelKeyLimits:t.contextPersistence?.panelKeyLimits,messageLimit:t.contextPersistence?.messageLimit,maxThreads:t.contextPersistence?.maxThreads,threadTtlMs:t.contextPersistence?.threadTtlMs});try{await Pi({request:A,accountModule:{...t,accountId:e,trace:async _=>{Or({kind:"flow/trace",event:_}),await t.trace?.(_)}},contextStore:f,beClient:{invoke({op:_,input:O,signal:v,cacheTtlS:M,cacheKey:J,browserCache:Ye}){return pi({beUrl:r,accountId:e,jwtProvider:y,parentUrl:window.location.href,op:_,input:O,cacheTtlS:M,cacheKey:J,browserCache:Ye,...v?{signal:v}:{}})}},toolBridge:p,emit:_=>St(m,_),rpc:g,signal:b})}catch(_){b?.aborted||(St(m,hr(_)),m.onDone())}}}function oa({accountId:e,tools:t,beacon:r,confirmation:n,memory:o}){const i=a=>r?.({...a,accountId:a.accountId||e});return((a,s)=>ur(a,s,{tools:t,beacon:i,confirmation:n,memory:o}))}async function Mr(e,t){if(!t||!t.type?.startsWith("image/"))return e;const r=await sa(t),n={...ia(e.payload??e.action?.payload),image_data_url:r.dataUrl,image_mime:r.mime};return{...e,payload:n,...e.action?{action:{...e.action,payload:n}}:{}}}function ia(e){return aa(e)?{...e}:typeof e=="string"?{text:e}:{}}function aa(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}async function sa(e){const t=await ca(e);return t||{dataUrl:await Nr(e),mime:e.type}}async function ca(e){if(typeof createImageBitmap!="function"||typeof document>"u")return null;let t=null;try{t=await createImageBitmap(e);const r=Math.min(1,ta/Math.max(t.width,t.height)),n=Math.max(1,Math.round(t.width*r)),o=Math.max(1,Math.round(t.height*r)),i=document.createElement("canvas");i.width=n,i.height=o;const a=i.getContext("2d");if(!a)return null;a.drawImage(t,0,0,n,o);const s=await new Promise(c=>i.toBlob(c,"image/jpeg",ra));return s?{dataUrl:await Nr(s),mime:s.type||"image/jpeg"}:null}catch{return null}finally{t?.close()}}async function Nr(e){const t=new Uint8Array(await e.arrayBuffer());let r="";const n=32768;for(let o=0;o<t.length;o+=n)r+=String.fromCharCode(...t.subarray(o,o+n));return`data:${e.type};base64,${btoa(r)}`}function St(e,t){switch(t?.type){case"text_chunk":{const r=t;e.onTextChunk(r.content||"",r.final===!0,r);break}case"ui_spec":{const r=t;e.onUISpec(r.spec,r.widget,r.panelHint,r.clearPanel===!0);break}case"action":e.onAction(t);break;case"metadata":e.onMetadata(t);break;case"error":e.onError(ua(t));break;case"done":e.onDone();break;default:break}}function ua(e){const t=new Error(e.message||e.code||"Agent error");return e.code&&(t.code=e.code),t}var la="entries",da=1,fa={volatile:"Hot per-page state and sensitive request context.",session:"Current-visit tool context without raw tokens or PII-heavy payloads.",local:"Small, non-sensitive capability facts or user preferences.",indexedDb:"Larger product/search payload caches with short TTLs."},$r=new Map;function _t(){return Date.now()}function se(e){return e?.expiresAt!=null&&e.expiresAt<=_t()}function vt(e,t){return{value:e,createdAt:_t(),expiresAt:t?_t()+t:null}}function pa(e,t,r){try{const n=e.getItem(`${t}${r}`);if(!n)return null;const o=JSON.parse(n);return se(o)?(e.removeItem(`${t}${r}`),null):o.value}catch{return null}}function ma(e,t,r,n,o){try{return e.setItem(`${t}${r}`,JSON.stringify(vt(n,o))),!0}catch{return!1}}function ga(e,t,r){try{e.removeItem(`${t}${r}`)}catch{}}function qr(e,t){if(!e)return 0;let r=0;try{const n=[];for(let o=0;o<e.length;o+=1){const i=e.key(o);i?.startsWith(t)&&n.push(i)}for(const o of n)try{const i=JSON.parse(e.getItem(o)||"null");(!i||se(i))&&(e.removeItem(o),r+=1)}catch{e.removeItem(o),r+=1}}catch{return r}return r}function Ur(e){try{return window[e]}catch{return null}}function Fr(e,t){return e?{get:r=>pa(e,t,r),set:(r,n,o={})=>ma(e,t,r,n,o.ttlMs),remove:r=>ga(e,t,r)}:{get:()=>null,set:()=>!1,remove:()=>{}}}function ya(e,t){const r=t.dbName||`gengage-${e}`,n=t.dbStore||la,o=t.dbVersion||da,i=new Map;let a=null;const s=()=>"indexedDB"in window?a||(a=new Promise(g=>{const p=indexedDB.open(r,o);p.onupgradeneeded=()=>{p.result.createObjectStore(n,{keyPath:"key"})},p.onsuccess=()=>g(p.result),p.onerror=()=>g(null),p.onblocked=()=>g(null)}),a):Promise.resolve(null);return{volatileEntries:i,idbGet:async g=>{const p=await s();return p?new Promise(y=>{const h=p.transaction(n,"readwrite").objectStore(n),m=h.get(g);m.onsuccess=()=>{const b=m.result;if(!b||se(b)){b&&h.delete(g),y(null);return}y(b.value)},m.onerror=()=>y(null)}):null},idbSet:async(g,p,y={})=>{const h=await s();return h?new Promise(m=>{const b=h.transaction(n,"readwrite");b.oncomplete=()=>m(!0),b.onerror=()=>m(!1),b.objectStore(n).put({key:g,...vt(p,y.ttlMs)})}):!1},idbRemove:async g=>{const p=await s();p&&p.transaction(n,"readwrite").objectStore(n).delete(g)},idbGc:async()=>{const g=await s();return g?new Promise(p=>{let y=0;const h=g.transaction(n,"readwrite"),m=h.objectStore(n).openCursor();m.onsuccess=()=>{const b=m.result;if(!b)return;const w=b.value;(!w||se(w))&&(b.delete(),y+=1),b.continue()},h.oncomplete=()=>p(y),h.onerror=()=>p(y),m.onerror=()=>p(y)}):0}}}function At(e,t={}){const r=window,n=r.gengage||(r.gengage={}),o=n.memory||(n.memory={}),i=o[e];if(i)return i;const a=$r.get(e)||ya(e,t);$r.set(e,a);const s=t.sessionPrefix||`gengage:${e}:session:`,c=t.localPrefix||`gengage:${e}:local:`,u=Ur("sessionStorage"),l=Ur("localStorage"),g={get:m=>{const b=a.volatileEntries.get(m);return b?se(b)?(a.volatileEntries.delete(m),null):b.value:null},set:(m,b,w={})=>(a.volatileEntries.set(m,vt(b,w.ttlMs)),!0),remove:m=>{a.volatileEntries.delete(m)},clear:()=>a.volatileEntries.clear()},p={get:a.idbGet,set:a.idbSet,remove:a.idbRemove},y=async()=>{let m=0;for(const[_,O]of a.volatileEntries)se(O)&&(a.volatileEntries.delete(_),m+=1);const b=qr(u,s),w=qr(l,c),A=await a.idbGc();return{volatile:m,session:b,local:w,indexedDb:A}},h={accountId:e,volatile:g,session:Fr(u,s),local:Fr(l,c),indexedDb:p,gc:y,stableKey:oe,policy:{...fa,...t.policy||{}}};o[e]=h;for(const m of t.aliases||[])o[m]=h;return ha(h),h}function ha(e){const t=window,r=()=>{e.gc().catch(()=>{})};if(typeof t.requestIdleCallback=="function"){t.requestIdleCallback(r);return}setTimeout(r,5e3)}var Ne="__gengageAgentFetchBridge",ba=1e3*60*60*24*14;function wa({accountId:e,streamTransport:t,endpoints:r={},endpointCache:n}){if(!e)throw new Error("accountId is required.");if(typeof t!="function")throw new Error("streamTransport is required.");const o=ka(),i=`https://gengage-injector.invalid/${encodeURIComponent(e)}`,a=new Set,s=n?Ea({accountId:e,endpointCache:n,fetchImpl:o.originalFetch}):void 0,c=u=>{const l=`${i}/chat/${u}`;a.add(l);const f=r[u],g={streamTransport:t,endpoint:u};f&&(g.endpointHandler=f),s&&(g.endpointCache=s),o.routes.set(l,g)};c("process_action");for(const u of Object.keys(r))u!=="process_action"&&c(u);return{middlewareUrl:i,stop(){for(const u of a)o.routes.delete(u);Sa(o)}}}function ka(){const e=window,t=e[Ne];if(t)return t;const r=e.fetch.bind(e),n={routes:new Map,originalFetch:r,installedFetch:r};return n.installedFetch=(o,i)=>{const a=Dr(o),s=n.routes.get(a);return s?va(s,o,i):r(o,i)},e.fetch=n.installedFetch,e[Ne]=n,n}function Sa(e){if(e.routes.size>0)return;const t=window;t.fetch===e.installedFetch&&(t.fetch=e.originalFetch),t[Ne]===e&&delete t[Ne]}function Dr(e){return typeof e=="string"?e:e instanceof URL?e.href:e?.url||""}function zr(e,t){if(t?.signal)return t.signal;if(typeof Request<"u"&&e instanceof Request)return e.signal}function Gr(e,t){return t?.body!==void 0&&t?.body!==null?t.body:typeof Request<"u"&&e instanceof Request?e.clone().text():null}async function _a(e,t){const r=Gr(e,t);if(r instanceof FormData){const o=r.get("request"),i=r.get("attachment");return{request:JSON.parse(String(o||"{}")),...i instanceof File?{attachment:i}:{}}}const n=await Promise.resolve(r);return typeof n=="string"?{request:JSON.parse(n||"{}")}:{request:{}}}async function va(e,t,r){if(e.endpoint&&e.endpoint!=="process_action"&&e.endpointHandler){const u=new AbortController,l=zr(t,r);let f=null;if(l){const g=()=>u.abort();l.aborted&&g(),l.addEventListener("abort",g,{once:!0}),f=()=>l.removeEventListener("abort",g)}try{const g=await Aa(t,r),p={accountId:xa(t),endpoint:e.endpoint,signal:u.signal},y=Ta(e.endpointCache,e.endpoint,g,p.accountId);if(y){const m=await Ca(e.endpointCache,y,u.signal);if(m)return Oa(m)}const h=await e.endpointHandler(g,p);return y&&h.ok&&await Pa(e.endpointCache,y,h.clone(),u.signal),h}finally{f?.()}}const n=new TextEncoder,o=new AbortController,i=zr(t,r);let a=!1,s=null;const c=new ReadableStream({async start(u){const l=p=>{a||u.enqueue(n.encode(`${JSON.stringify(p)}
4
- `))},f=()=>{a||(a=!0,s?.(),u.close())},g=p=>{l({type:"error",code:p?.code||"agent_bridge_error",message:p instanceof Error?p.message:String(p)}),l({type:"done"}),f()};if(i){const p=()=>{o.abort(),a||(a=!0,s?.(),u.error(new DOMException("Aborted","AbortError")))};if(i.aborted){p();return}i.addEventListener("abort",p,{once:!0}),s=()=>i.removeEventListener("abort",p)}try{const{request:p,attachment:y}=await _a(t,r),h=e.streamTransport(p,{onTextChunk:(m,b,w={})=>l({type:"text_chunk",content:m,final:b===!0,...w}),onUISpec:(m,b,w,A)=>l({type:"ui_spec",spec:m,widget:b,...w?{panelHint:w}:{},...A?{clearPanel:!0}:{}}),onAction:m=>{l(m?.type==="action"?m:{type:"action",action:m})},onMetadata:m=>{l(m?.type==="metadata"?m:{type:"metadata",...m})},onError:g,onDone:()=>{l({type:"done"}),f()}},o.signal,y);$a(h)&&(await h,o.signal.aborted||(l({type:"done"}),f()))}catch(p){o.signal.aborted||g(p)}},cancel(){o.abort(),s?.(),a=!0}});return new Response(c,{status:200,headers:{"Content-Type":"application/x-ndjson"}})}async function Aa(e,t){const r=await Promise.resolve(Gr(e,t));return typeof r!="string"||r.trim()===""?{}:JSON.parse(r)}function xa(e){try{const[t]=new URL(Dr(e)).pathname.split("/").filter(Boolean);return decodeURIComponent(t||"")}catch{return""}}function Ea({accountId:e,endpointCache:t,fetchImpl:r}){return{accountId:e,beUrl:t.beUrl,...t.parentUrl?{parentUrl:t.parentUrl}:{},ttlMs:t.ttlMs??ba,policies:t.policies,fetchImpl:r,jwtProvider:ct({accountId:e,...t.devJwtSecret?{devJwtSecret:t.devJwtSecret}:{},...t.tokenBrokerUrl?{tokenBrokerUrl:t.tokenBrokerUrl}:{},...t.tokenBrokerAudience?{tokenBrokerAudience:t.tokenBrokerAudience}:{},fetchImpl:r})}}function Ta(e,t,r,n){if(!e)return null;const o=e.policies[t];if(!o)return null;const i=o(r,{accountId:n,endpoint:t});return!i?.partition||!i?.key?null:{partition:i.partition,key:i.key,ttlMs:i.ttlMs??e.ttlMs}}async function Ca(e,t,r){const n=Wr(e.accountId,t),o=await Ba(e.accountId,n);if(Hr(o))return o;const i=await ja(e,t,r);return i?(await Jr(e.accountId,n,i,t.ttlMs),i):null}async function Pa(e,t,r,n){try{const o=await La(r);if(Na(o.body))return;const i=Wr(e.accountId,t);await Jr(e.accountId,i,o,t.ttlMs),Ra(e,t,o,n)}catch{}}async function ja(e,t,r){try{const n=await e.fetchImpl(Kr(e.beUrl),{method:"POST",headers:await Vr(e,r),body:JSON.stringify({partition:t.partition,key:t.key}),signal:r});if(!n.ok)return null;const o=await n.json();return o.hit===!0&&Hr(o.payload)?o.payload:null}catch{return null}}async function Ra(e,t,r,n){try{await e.fetchImpl(Kr(e.beUrl),{method:"POST",headers:await Vr(e,n),body:JSON.stringify({partition:t.partition,key:t.key,ttl_s:Math.max(1,Math.ceil(t.ttlMs/1e3)),payload:r}),signal:n})}catch{}}async function Vr(e,t){return{authorization:`Bearer ${await e.jwtProvider({signal:t,parentUrl:e.parentUrl||Ia()})}`,"content-type":"application/json",accept:"application/json"}}function Ia(){try{return window.location?.href||""}catch{return""}}function Kr(e){return`${String(e).replace(/\/+$/u,"")}/v1/cache`}async function La(e){return{status:e.status,statusText:e.statusText,headers:[...e.headers.entries()].filter(([t])=>Ma(t)),body:await e.text()}}function Oa(e){return new Response(e.body,{status:e.status,statusText:e.statusText,headers:new Headers(e.headers)})}function Hr(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;const t=e;return typeof t.status=="number"&&typeof t.statusText=="string"&&typeof t.body=="string"&&Array.isArray(t.headers)}function Wr(e,t){return`endpoint-response:${oe({accountId:e,partition:t.partition,key:t.key})}`}async function Ba(e,t){const r=At(e);return r.volatile.get(t)||await r.indexedDb.get(t)||r.local.get(t)}async function Jr(e,t,r,n){const o=At(e);o.volatile.set(t,r,{ttlMs:n}),await o.indexedDb.set(t,r,{ttlMs:n})||o.local.set(t,r,{ttlMs:n})}function Ma(e){return["content-type","cache-control"].includes(e.toLowerCase())}function Na(e){return/"_error"\s*:/u.test(e)||/"type"\s*:\s*"error"/u.test(e)}function $a(e){return e!==null&&(typeof e=="object"||typeof e=="function")&&typeof e.then=="function"}function qa({accountId:e,beUrl:t,devJwtSecret:r,tokenBrokerUrl:n,tokenBrokerAudience:o,workerUrl:i,defaultLocale:a="en-GB",accountModule:s,tools:c={},beacon:u,confirmation:l,memory:f,allowBlobWorker:g=!1,signal:p}){if(!e)throw new Error("accountId is required.");if(!t)throw new Error("beUrl is required. The injector owns backend URLs; the SDK has no default.");if(!i)throw new Error("workerUrl is required.");const y=window,h=y.GengageAssistantInjector||(y.GengageAssistantInjector={}),m=h[e]||(h[e]={});if(m.agentController)return m.agentController;const b=xt(i)||g?Zr(i,`gengage-${e}-agent`,{allowBlobWorker:g}):null;b||u?.({type:"agentRuntime",accountId:e,transport:"main-thread",reason:"cross-origin-worker-url",workerUrl:i}),m.streamTransport=b?Lr({accountId:e,worker:b.worker,beUrl:t,...r?{devJwtSecret:r}:{},...n?{tokenBrokerUrl:n}:{},...o?{tokenBrokerAudience:o}:{},defaultLocale:a,tools:c,...u?{beacon:u}:{},...l?{confirmation:l}:{},...f?{memory:f}:{}}):Br({accountId:e,accountModule:s,beUrl:t,...r?{devJwtSecret:r}:{},...n?{tokenBrokerUrl:n}:{},...o?{tokenBrokerAudience:o}:{},defaultLocale:a,tools:c,...u?{beacon:u}:{},...l?{confirmation:l}:{},...f?{memory:f}:{}});const w=new AbortController,A=[],_=()=>{for(;A.length;){const M=A.pop();try{M?.()}catch{}}},O=()=>{w.signal.aborted||(w.abort(),p?.removeEventListener("abort",O),delete m.streamTransport,b?.worker.terminate(),b?.cleanup(),_(),delete m.agentController)};p?.addEventListener("abort",O,{once:!0});const v={type:"agent",signal:w.signal,addCleanup(M){if(typeof M=="function"){if(w.signal.aborted){M();return}A.push(M)}},stop:O,diagnostics(){return{accountId:e,beUrl:t,workerUrl:i,mounted:!0,transport:b?"worker":"main-thread",transportReason:b?"module-worker":"cross-origin-worker-url",flows:Object.keys(s?.flows||{})}}};return m.agentController=v,v}function xt(e){const t=new URL(e,window.location.href);return t.origin===window.location.origin||t.protocol==="blob:"}function Zr(e,t,r={}){const n=new URL(e,window.location.href);if(xt(e))return{worker:new Worker(n.href,{type:"module",name:t}),cleanup(){}};if(!r.allowBlobWorker)throw new Error("Cross-origin agent workers require allowBlobWorker=true or a same-origin workerUrl.");const o=new Blob([`import ${JSON.stringify(n.href)};
5
- `],{type:"text/javascript"}),i=URL.createObjectURL(o);try{return{worker:new Worker(i,{type:"module",name:t}),cleanup(){URL.revokeObjectURL(i)}}}catch(a){throw URL.revokeObjectURL(i),a}}function Ua(e,t={}){if(!Array.isArray(e))return[];const r=t.maxItems??8,n=t.maxFeatures??8;return e.map(o=>Fa(o,t.defaultBrand,n)).filter(o=>!!o).slice(0,r)}function Fa(e,t,r){if(!e||typeof e!="object"||Array.isArray(e))return null;const n=e,o=Le(n);return o?Ga({sku:o.sku,name:o.name,url:o.url,image:o.image,price:o.price,currency:o.currency,category:o.category,category_names:o.category_names,brand:n.brand||t,features:Da(n.features,r),specs:za(n.specs,r),in_stock:o.in_stock}):null}function Da(e,t){return Array.isArray(e)?e.filter(Boolean).slice(0,t):void 0}function za(e,t){if(!(!e||typeof e!="object"||Array.isArray(e)))return Object.fromEntries(Object.entries(e).filter(([,r])=>r!=null).slice(0,t))}function Ga(e){return Object.fromEntries(Object.entries(e).filter(([,t])=>t!=null))}function Et(e){if(!e||typeof e!="object"||Array.isArray(e))return{};const t=e,r=Array.isArray(t.rows)?t.rows:[];return{...t,rows:r.map(Ka).filter(Boolean)}}function Yr(e,t){const r=Array.isArray(e)?e.filter(s=>!!(s&&typeof s=="object"&&!Array.isArray(s))):[],n=Et(t),o=Array.isArray(n.columns)?n.columns.map(String):[];if(!o.length)return r;const i=new Map(r.map(s=>[String(s.sku||s.id||""),s])),a=o.map(s=>i.get(s)).filter(s=>!!s);return a.length?a:r}function Va(e,t){const r=Et(e?.table),n=Yr(t,r);return{...e||{},table:r,products:n,multiple_product_details:n}}function Ka(e){return!e||typeof e!="object"||Array.isArray(e)?null:Object.fromEntries(Object.entries(e).filter(([,t])=>t!==void 0))}function Ha(e=[],t={}){const r={},n=[];return(Array.isArray(e)?e.map(o=>Ie(o,t)).filter(o=>!!o):[]).forEach((o,i)=>{const a=`product-${i.toString()}`;n.push(a);const s={sku:o.sku,product:o};r[a]={type:"ProductCard",props:{product:o,index:i,action:{title:o.name,type:"launchSingleProduct",payload:s}}}}),r.root={type:"ProductGrid",props:{layout:"grid"},children:n},{widget:"chat",panelHint:"panel",spec:{root:"root",elements:r}}}function Wa(e,t={}){return{widget:"chat",panelHint:"panel",spec:{root:"root",elements:{root:{type:"ProductDetailsPanel",props:{product:Ie(e,t)||e||{}}}}}}}function Ja(e={},t={}){const r=(e.multiple_product_details||e.products||[]).map(o=>Ie(o,t)).filter(o=>!!o),n=e.table||Za(e.comparison_table);return{widget:"chat",panelHint:"panel",spec:{root:"root",elements:{root:{type:"ComparisonTable",props:{products:r,recommended:r.find(o=>o.sku===e.recommended_choice_sku)||r[0],attributes:Object.entries(n).map(([o,i])=>({label:o,values:Array.isArray(i)?i.map(String):[String(i??"")]})),highlights:Er(e.key_differences),specialCases:Er(e.special_considerations),recommendedText:e.recommended_choice,productActions:Object.fromEntries(r.map(o=>[o.sku,{title:o.name,type:"launchSingleProduct",payload:{sku:o.sku,product:o}}]))}}}}}}function Za(e){return Array.isArray(e)?Object.fromEntries(e.map(t=>{const r=typeof t?.label=="string"?t.label.trim():"";return r?[r,t.values]:null}).filter(t=>!!t)):{}}function Ya(e=[]){return{widget:"chat",panelHint:"inline",spec:{root:"root",elements:{root:{type:"ActionButtons",props:{buttons:(Array.isArray(e)?e:[]).map(t=>{const r=t.label||t.title||t.shortName||"",n=t.action||t.requestDetails||t.request_details;return!r||!n?.type?null:{label:r,action:{title:r,type:n.type,...n.payload!==void 0?{payload:n.payload}:{}}}}).filter(t=>!!t)}}}}}}function Qa(e){return Object.freeze([...e])}function Qr(e,t,r="v1"){return`endpoint:${r}:${oe({endpoint:e,request:t})}`}function Xa(e){const t=e.version||"v1",r=n=>o=>({partition:`${e.partitionPrefix}/${n}`,key:Qr(n,o,t),...e.ttlMs?{ttlMs:e.ttlMs}:{}});return{launcher_action:r("launcher_action"),similar_products:r("similar_products"),product_groupings:r("product_groupings")}}function es(e){return{...e}}function ts(e,t={}){return new Response(e.map(r=>JSON.stringify(r)).join(`
1
+ (function(d){Object.defineProperty(d,Symbol.toStringTag,{value:"Module"});var Eo=120*1e3,Co="gengage-agentic-ref";function fr({namespace:e=Co,ttlMs:t=Eo,maxEntries:r=100}={}){const n=new Map;async function o(u,l={}){c();const f=Po(),m=l.kind||"pageRef",p={kind:m,value:u,expiresAt:Date.now()+(l.ttlMs||t)};for(n.set(f,p);n.size>r;)n.delete(n.keys().next().value);return await Ro(e,f,p),{kind:m,id:f}}async function i(u){const l=typeof u=="string"?u:u?.id;if(!l)return;const f=n.get(l)||await jo(e,l);if(f){if(f.expiresAt<=Date.now()){n.delete(l),await mr(e,l);return}return n.set(l,f),f.value}}async function a(u){const l=typeof u=="string"?u:u?.id;l&&(n.delete(l),await mr(e,l))}async function s(u){if(pr(u))return i(u);if(Array.isArray(u))return Promise.all(u.map(f=>s(f)));if(!u||typeof u!="object")return u;const l=await Promise.all(Object.entries(u).map(async([f,m])=>[f,await s(m)]));return Object.fromEntries(l)}function c(){const u=Date.now();for(const[l,f]of n.entries())f.expiresAt<=u&&n.delete(l)}return{put:o,get:i,delete:a,materialize:s,cleanup:c}}function pr(e){return!!(e&&typeof e=="object"&&typeof e.kind=="string"&&typeof e.id=="string")}function Po(){return globalThis.crypto?.randomUUID?globalThis.crypto.randomUUID():`${Date.now().toString(36)}-${Math.random().toString(36).slice(2,10)}`}async function Ro(e,t,r){const n=await tt(e);n&&(await Re(n.transaction("refs","readwrite").objectStore("refs").put(r,t)),n.close())}async function jo(e,t){const r=await tt(e);if(!r)return;const n=await Re(r.transaction("refs","readonly").objectStore("refs").get(t));return r.close(),n}async function mr(e,t){const r=await tt(e);r&&(await Re(r.transaction("refs","readwrite").objectStore("refs").delete(t)),r.close())}async function tt(e){if(!globalThis.indexedDB)return null;try{const t=globalThis.indexedDB.open(e,1);return t.onupgradeneeded=()=>{t.result.createObjectStore("refs")},await Re(t)}catch{return null}}function Re(e){return new Promise((t,r)=>{e.onsuccess=()=>t(e.result),e.onerror=()=>r(e.error)})}function Io(e){return!!e&&typeof e=="object"&&e.type==="rpc.req"}function Lo({worker:e,tools:t={},beacon:r,confirmation:n,memory:o=nt(),refStore:i}){e.addEventListener("message",a=>{const s=a.data;Io(s)&&Oo(e,s,{tools:t,beacon:r,confirmation:n,memory:o,refStore:i})})}async function Oo(e,t,r){try{const n=await yr(t.method,t.payload,r);e.postMessage({type:"rpc.result",rpcId:t.rpcId,ok:!0,value:n})}catch(n){e.postMessage({type:"rpc.result",rpcId:t.rpcId,ok:!1,error:{message:n instanceof Error?n.message:String(n)}})}}var rt=new Map,gr=null;function nt(){try{if(typeof sessionStorage<"u")return sessionStorage}catch{}return{getItem:e=>rt.get(e)??null,setItem:(e,t)=>{rt.set(e,t)},removeItem:e=>{rt.delete(e)}}}function Bo(){return gr||=fr(),gr}function Mo(e){if(e&&typeof e=="object"&&typeof e.name=="string")return e;throw new Error("tool.invoke requires { name, input }")}function No(e){if(e&&typeof e=="object"&&e.key!==void 0)return e;throw new Error("memory.get requires { key }")}function $o(e){if(e&&typeof e=="object"&&e.key!==void 0)return e;throw new Error("memory.set requires { key }")}function Fo(e){if(e&&typeof e=="object"&&e.key!==void 0)return e;throw new Error("memory.remove requires { key }")}function qo(e){return!e||typeof e!="object"?{value:e}:e}function Uo(e){const t=typeof e.kind=="string"&&e.kind.trim()?e.kind.trim():void 0,r=typeof e.ttlMs=="number"&&Number.isFinite(e.ttlMs)&&e.ttlMs>0?e.ttlMs:void 0;return t||r?{...t?{kind:t}:{},...r?{ttlMs:r}:{}}:void 0}function ot(e){if(e==null)return"session";if(e==="volatile"||e==="session"||e==="local"||e==="indexedDb")return e;if(typeof e=="string"){const t=e.toLowerCase();if(t==="indexeddb"||t==="idb")return"indexedDb"}throw new Error(`Unsupported memory tier: ${String(e)}`)}function it(e){return typeof e.getItem=="function"&&typeof e.setItem=="function"}function at(e){return typeof e.get=="function"&&typeof e.set=="function"}function st(e){return typeof e.accountId=="string"&&!!e.session&&!!e.indexedDb}function Do(e){const t=e.options?.ttlMs??e.ttlMs;return typeof t=="number"&&Number.isFinite(t)&&t>0?{ttlMs:t}:void 0}async function zo(e,t,r){if(it(e)){const n=e.getItem(r);if(!n)return null;try{return JSON.parse(n)}catch{return e.removeItem?.(r),null}}return at(e)&&!st(e)?await e.get(t,r)??null:await e[t].get(r)??null}async function Go(e,t,r,n,o){return it(e)?(e.setItem(r,JSON.stringify(n??null)),!0):at(e)&&!st(e)?await e.set(t,r,n??null,o)!==!1:await e[t].set(r,n??null,o)!==!1}async function Ho(e,t,r){return it(e)?(e.removeItem?.(r),!0):at(e)&&!st(e)?e.remove?(await e.remove(t,r),!0):!1:(await e[t].remove(r),!0)}async function yr(e,t,{tools:r,beacon:n,confirmation:o,memory:i,refStore:a}){if(e==="tool.invoke"){const{name:s,input:c}=Mo(t),u=r[s];if(typeof u!="function")throw new Error(`Unknown tool: ${s}`);return u(c)}if(e==="beacon.send")return n?.(t),{sent:!0};if(e==="confirmation.request"){if(typeof o!="function")throw new Error("No confirmation handler is configured.");const s=await o(t);return typeof s=="boolean"?{confirmed:s}:s}if(e==="memory.get"){const{key:s,tier:c}=No(t);return zo(i,ot(c),String(s))}if(e==="memory.set"){const s=$o(t);return{ok:await Go(i,ot(s.tier),String(s.key),s.value,Do(s))}}if(e==="memory.remove"){const{key:s,tier:c}=Fo(t);return{ok:await Ho(i,ot(c),String(s))}}if(e==="ref.put"){const s=je({tools:r,beacon:n,confirmation:o,memory:i,refStore:a}),c=qo(t);return s.put(c.value,Uo(c))}if(e==="ref.get")return je({tools:r,beacon:n,confirmation:o,memory:i,refStore:a}).get(t);if(e==="ref.materialize")return je({tools:r,beacon:n,confirmation:o,memory:i,refStore:a}).materialize(t);if(e==="ref.remove")return await je({tools:r,beacon:n,confirmation:o,memory:i,refStore:a}).delete(t),{ok:!0};throw new Error(`Unknown RPC method: ${e}`)}function je(e){const t=e.refStore||Bo();if(!t||typeof t.put!="function"||typeof t.get!="function")throw new Error("No ref store is configured.");return t}function hr(){return new Date().toISOString()}function q(e){return Math.max(0,Math.round(performance.now()-e))}function be(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Vo(e){const{accountId:t,locale:r="en-GB",parentUrl:n="",threadId:o,incomingContext:i,messageLimit:a}=e,s=be(i)?i:{},c=be(s.thread)?s.thread:{},u=be(s.panel)?s.panel:{},l=be(s.meta)?s.meta:{},f=wr(s.messages,a),m={id:String(o||c.id||self.crypto.randomUUID()),started_at:String(c.started_at||hr()),extensions:be(c.extensions)?{...c.extensions}:{}},p=String(l.locale||r),g=String(l.parentUrl||n||typeof self<"u"&&self.location?.href||"");return{panel:{...u},messages:f,thread:m,meta:{locale:p,parentUrl:g,accountId:t}}}function br(e,t,r){const n=wr([t],r)[0];return n?{...e,messages:Ie([...e.messages,n],r)}:e}function Ie(e,t){const r=Ko(t);return r===1/0?[...e]:e.slice(-r)}function wr(e,t){return Array.isArray(e)?Ie(e.map(r=>{const n=r?.role;return{role:n==="model"?"assistant":typeof n=="string"?n:"",content:String(r?.content||"")}}).filter(r=>(r.role==="user"||r.role==="assistant"||r.role==="tool_result")&&(r.role==="tool_result"||!!r.content)),t):[]}function Ko(e){if(e===void 0)return 50;if(!Number.isFinite(e))return 1/0;const t=Math.floor(e);return t>0?t:50}var Wo="gengage:agent:context:";async function Jo({accountId:e,threadId:t,rpc:r}){const n=await r("memory.get",{tier:"session",key:ct(e,t)});return n&&typeof n=="object"&&!Array.isArray(n)?n:{}}async function Zo({accountId:e,threadId:t,extensions:r,panel:n,rpc:o}){await o("memory.set",{tier:"session",key:ct(e,t),value:{thread:{extensions:r},...n&&Object.keys(n).length>0?{panel:n}:{}}})}function ct(e,t){return`${Wo}${e}:${t}`}function C(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Yo="gengage_agentic_savepoints",Le="savepoints",kr=3600*1e3,Qo=1,_r=class{#e=new Map;#i=new Map;#t;#u;#l;#a;#d;#f;#o;#s;#c;#r=new Map;constructor({accountId:e,locale:t,parentUrl:r,rpc:n,persistentPanelKeys:o=[],panelKeyLimits:i={},messageLimit:a,maxThreads:s,threadTtlMs:c}){this.#t=e,this.#u=t,this.#l=r,this.#a=n,this.#d=[...new Set(o.filter(Boolean))],this.#f=ti(i),this.#o=dt(a),this.#s=dt(s),this.#c=dt(c)}get size(){return this.pruneExpired(),this.#e.size}get(e="default"){this.pruneExpired();const t=String(e||"default"),r=this.#e.get(t);return r?(this.#n(t,r),r):null}getPanel(e="default"){return this.get(e)?.panel??null}getRecentProducts(e="default",t="last_search_products"){const r=this.getPanel(e)?.[t];return Array.isArray(r)?r:[]}async load(e){this.pruneExpired();const t=e?.session_id||e?.meta?.threadId||e?.sessionId,r=String(t||"default"),n=this.#e.get(r);if(n){const a=oi(n,e?.context,this.#o);return this.#n(r,a),a}const o=await Jo({accountId:this.#t,threadId:r,rpc:this.#a}),i=Vo({accountId:this.#t,locale:e?.locale||this.#u,parentUrl:this.#l,threadId:r,incomingContext:ni(o,e?.context),messageLimit:this.#o});return this.#n(r,i),this.#m(),i}patch(e,t){this.pruneExpired();const r=String(e||"default"),n=this.#e.get(r);if(!n)return null;const o=ft(n,typeof t=="function"?t(n):t,this.#o);return this.#n(r,o),o}appendUserMessage(e,t){this.pruneExpired();const r=String(e||"default");if(!t)return this.#e.get(r)??null;const n=this.#e.get(r);if(!n)return null;const o=br(n,{role:"user",content:t},this.#o);return this.#n(r,o),o}appendToolResult(e,t){this.pruneExpired();const r=String(e||"default"),n=this.#e.get(r);if(!n)return null;const o=br(n,{role:"tool_result",content:String(t?.content||""),...t?.name?{name:String(t.name)}:{},...t?.details!==void 0?{details:t.details}:{}},this.#o);return this.#n(r,o),o}async commit(e){this.pruneExpired();const t=String(e||"default"),r=this.#e.get(t);return r?(this.#n(t,r),await Zo({accountId:this.#t,threadId:t,extensions:r.thread.extensions,panel:ei(r.panel,this.#d,this.#f),rpc:this.#a}),r):null}delete(e){const t=String(e||"default");return this.#i.delete(t),this.#r.delete(t),this.#e.delete(t)}clear(){this.#e.clear(),this.#i.clear(),this.#r.clear()}enqueueSteer(e,t,r="all"){this.#p(e,"steer",t,r)}enqueueFollowUp(e,t,r="all"){this.#p(e,"follow_up",t,r)}drainPending(e,t){const r=String(e||"default"),n=this.#r.get(r);if(!n||!n.length)return null;const o=n.findIndex(a=>a.kind===t);if(o<0)return null;const[i]=n.splice(o,1);return n.length||this.#r.delete(r),i||null}peekPending(e="default"){const t=String(e||"default"),r=this.#r.get(t);return r?[...r]:[]}#p(e,t,r,n){const o=String(r||"").trim();if(!o)return;const i=String(e||"default"),a=this.#r.get(i)||[];if(n==="one-at-a-time")for(let s=a.length-1;s>=0;s-=1)a[s].kind===t&&a.splice(s,1);a.push({kind:t,text:o,enqueuedAt:Date.now()}),this.#r.set(i,a)}async savepoint(e,t,r){if(!e||typeof t!="number"||!Number.isFinite(t))return;const n={threadId:e,turnIndex:t,payload:r,createdAt:Date.now()};try{await lt(this.#t,"readwrite",o=>{o.put(n,ut(e,t))})}catch{}}async restoreSavepoint(e,t){if(!e)return null;try{let r=null;return await lt(this.#t,"readonly",n=>{const o=typeof t=="number"?ut(e,t):null;if(o!==null){const i=n.get(o);i.onsuccess=()=>{const a=i.result;a&&Date.now()-a.createdAt<kr&&(r=a)}}else{const i=n.openCursor(null,"prev");i.onsuccess=()=>{const a=i.result;if(!a||r)return;const s=a.value;if(s.threadId!==e){a.continue();return}Date.now()-s.createdAt<kr&&(r=s)}}}),r}catch{return null}}async clearSavepoint(e,t){if(e)try{await lt(this.#t,"readwrite",r=>{if(typeof t=="number"){r.delete(ut(e,t));return}const n=r.openCursor();n.onsuccess=()=>{const o=n.result;o&&(o.value.threadId===e&&o.delete(),o.continue())}})}catch{}}pruneExpired(e=Date.now()){if(!this.#c)return 0;let t=0;for(const[r,n]of this.#i)e-n<=this.#c||(this.#i.delete(r),this.#e.delete(r)&&(t+=1));return t}#n(e,t){this.#e.delete(e),this.#e.set(e,t),this.#i.set(e,Date.now())}#m(){if(this.#s)for(;this.#e.size>this.#s;){const e=this.#e.keys().next().value;if(!e)return;this.delete(e)}}};function ut(e,t){return`${e}|${t}`}function Xo(){return(typeof self<"u"?self:globalThis)?.indexedDB||null}async function lt(e,t,r){const n=Xo();if(!n)return;const o=`${Yo}_${e}`;await new Promise((i,a)=>{const s=n.open(o,Qo);s.onupgradeneeded=()=>{const c=s.result;c.objectStoreNames.contains(Le)||c.createObjectStore(Le)},s.onerror=()=>a(s.error||new Error("savepoint:open_failed")),s.onsuccess=()=>{const c=s.result;try{const u=c.transaction(Le,t);r(u.objectStore(Le)),u.oncomplete=()=>{c.close(),i()},u.onerror=()=>{c.close(),a(u.error||new Error("savepoint:tx_failed"))},u.onabort=()=>{c.close(),a(u.error||new Error("savepoint:tx_aborted"))}}catch(u){c.close(),a(u instanceof Error?u:new Error(String(u)))}}})}function ei(e,t,r){if(!t.length||!C(e))return;const n={};for(const o of t)Object.prototype.hasOwnProperty.call(e,o)&&(n[o]=ri(e[o],r[o]));return n}function ti(e){const t={};for(const[r,n]of Object.entries(e||{})){const o=Math.floor(Number(n));r&&Number.isFinite(o)&&o>0&&(t[r]=o)}return t}function dt(e){if(e===void 0)return;const t=Math.floor(Number(e));return Number.isFinite(t)&&t>0?t:void 0}function ri(e,t){return!t||!Array.isArray(e)?e:e.slice(-t)}function ni(e,t){if(!C(e)&&!C(t))return{};const r=C(e)?e:{},n=ft(r,C(t)?t:{});return C(r.panel)&&(n.panel=r.panel),n}function oi(e,t,r){if(!C(t))return e;const n=ft(e,t,r);return{...n,panel:e.panel,thread:{...n.thread,id:e.thread.id,started_at:e.thread.started_at},meta:{...n.meta,accountId:e.meta.accountId}}}function ft(e,t,r){if(!C(t))return e;const n=e,o=t,i=C(n.panel)?n.panel:{},a=C(o.panel)?o.panel:{},s=C(n.thread)?n.thread:{},c=C(o.thread)?o.thread:{},u=C(s.extensions)?s.extensions:{},l=C(c.extensions)?c.extensions:{},f=C(n.meta)?n.meta:{},m=C(o.meta)?o.meta:{};return{...e,...t,panel:{...i,...a},thread:{...s,...c,extensions:{...u,...l}},meta:{...f,...m},messages:Array.isArray(o.messages)?Ie(o.messages,r):e.messages??[]}}function Sr(e){const t=String.fromCharCode(...e);return btoa(t).replace(/\+/gu,"-").replace(/\//gu,"_").replace(/=+$/u,"")}function vr(e){return Sr(new TextEncoder().encode(JSON.stringify(e)))}async function ii({accountId:e,devJwtSecret:t,ttlS:r=300}){if(!t)throw new Error("devJwtSecret is required for local agent mode.");const n=Math.floor(Date.now()/1e3),o=`${vr({alg:"HS256",typ:"JWT"})}.${vr({sub:e,iat:n,exp:n+r,scope:"invoke",jti:crypto.randomUUID?.()||`${n}-${Math.random()}`})}`,i=await crypto.subtle.importKey("raw",new TextEncoder().encode(t),{name:"HMAC",hash:"SHA-256"},!1,["sign"]),a=await crypto.subtle.sign("HMAC",i,new TextEncoder().encode(o));return`${o}.${Sr(new Uint8Array(a))}`}function pt({accountId:e,devJwtSecret:t,tokenBrokerUrl:r,tokenBrokerAudience:n,refreshSkewS:o=30,fetchImpl:i=fetch}){let a=null;return async({signal:s,parentUrl:c}={})=>{if(t)return ii({accountId:e,devJwtSecret:t});if(!r)throw new Error("tokenBrokerUrl is required for production agent mode.");const u=Math.floor(Date.now()/1e3);return a?.token&&a.expiresAtS-o>u||(a=await ai({accountId:e,tokenBrokerUrl:r,tokenBrokerAudience:n,parentUrl:c,signal:s,fetchImpl:i})),a.token}}async function ai({accountId:e,tokenBrokerUrl:t,tokenBrokerAudience:r,parentUrl:n,signal:o,fetchImpl:i}){const a=await i(t,{method:"POST",credentials:"include",headers:{accept:"application/json","content-type":"application/json"},body:JSON.stringify({accountId:e,scope:"invoke",audience:r||void 0,parentUrl:n||void 0}),...o?{signal:o}:{}});if(!a.ok)throw new Error(`Token broker request failed (${a.status}).`);const s=await a.json(),c=s?.token||s?.jwt||s?.access_token;if(!c||typeof c!="string")throw new Error("Token broker response did not include a JWT.");return{token:c,expiresAtS:si(s)||ci(c)||Math.floor(Date.now()/1e3)+300}}function si(e){const t=e?.expiresAtS??e?.expires_at_s??e?.expiresInS??e?.expires_in_s;if(Number.isFinite(t))return Number(t);const r=e?.expiresIn??e?.expires_in;if(Number.isFinite(r))return Math.floor(Date.now()/1e3)+Number(r);const n=e?.expiresAt??e?.expires_at;if(typeof n=="string"){const o=Date.parse(n);if(Number.isFinite(o))return Math.floor(o/1e3)}return null}function ci(e){try{const[,t]=e.split(".");if(!t)return null;const r=t.replace(/-/gu,"+").replace(/_/gu,"/"),n=atob(r.padEnd(Math.ceil(r.length/4)*4,"=")),o=JSON.parse(n);return Number.isFinite(o?.exp)?Number(o.exp):null}catch{return null}}var Ar={unauthorized:{code:"auth",message:"Assistant authentication failed. Please retry."},forbidden:{code:"auth",message:"Assistant authentication failed. Please retry."},unknown_op:{code:"op_unavailable",message:"This assistant action is not available yet."},invalid_input:{code:"invalid_request",message:"The assistant request was not valid."},account_config:{code:"account_config",message:"Assistant configuration is unavailable."},upstream_llm:{code:"op_failed",message:"The assistant could not complete that request."},upstream_timeout:{code:"op_timeout",message:"The assistant took too long to respond."},schema_mismatch:{code:"op_failed",message:"The assistant could not complete that request."},rate_limited:{code:"rate_limited",message:"The assistant is receiving too many requests. Please retry shortly."},internal:{code:"op_failed",message:"The assistant could not complete that request."},payload_too_large:{code:"invalid_request",message:"The assistant request was too large."}},N=class extends Error{constructor(e,t,r={}){super(t),this.name="AgentError",this.code=e,this.source=r.source||"agent",r.sourceCode&&(this.sourceCode=r.sourceCode),r.detail!==void 0&&(this.detail=r.detail)}};function mt(e){const t=String(e?.code||"upstream_llm"),r=Ar[t]||Ar.upstream_llm;return new N(r.code,r.message,{source:"be",sourceCode:t,detail:e?.detail})}function Tr(e,t){const r=t?.error&&typeof t.error=="object"?t.error:{};return mt({code:String(r.code||ui(e)),detail:r.detail})}function xr(e){return e instanceof N?{type:"error",code:e.code,message:e.message}:{type:"error",code:"agent_invoke_failed",message:"The assistant could not complete that request."}}function ui(e){return e===401?"unauthorized":e===403?"forbidden":e===413?"payload_too_large":e===429?"rate_limited":"internal"}var li=7200*1e3,Er=200,di=5*1024*1024,fi="gengage_request_response_cache",pi=1,U="responses",mi=new Set(["addToCart","like"]),D=new Map,Cr=null;async function gi(e,t={},r={}){const n=yi(e,t);if(!n)return fetch(e,t);const o=Date.now(),i=await bi(n,o);if(i)return _i(i);const a=await fetch(e,t);return a.ok&&wi(n,a.clone(),o,{ttlMs:r.ttlMs??li,maxEntries:r.maxEntries??Er,maxBodyBytes:r.maxBodyBytes??di}),a}function yi(e,t={}){if(typeof Request<"u"&&e instanceof Request)return null;const r=String(t.method||"GET").toUpperCase();return r!=="POST"||typeof t.body!="string"||hi(t.body)?null:`rr:${Ci(Ei({url:String(e),method:r,headers:Si(t.headers),body:t.body}))}`}function hi(e){try{const t=JSON.parse(e);if(!t||typeof t!="object"||Array.isArray(t))return!1;const r=t.type;return typeof r=="string"&&mi.has(r)}catch{return!1}}async function bi(e,t){const r=D.get(e);if(r)if(r.expiresAt<=t)D.delete(e);else return r.lastAccessedAt=t,D.delete(e),D.set(e,r),gt(r),r;const n=await Ai(e);return n?n.expiresAt<=t?(D.delete(e),Ti(e),null):(n.lastAccessedAt=t,D.set(e,n),gt(n),Pr(Er),n):null}async function wi(e,t,r,n){try{const o=await t.text();if(Pi(o)>n.maxBodyBytes||ki(o))return;const i={key:e,status:t.status,statusText:t.statusText,headers:vi(t.headers),body:o,createdAt:r,expiresAt:r+n.ttlMs,lastAccessedAt:r};D.set(e,i),Pr(n.maxEntries),await gt(i),await xi(n.maxEntries,r)}catch{}}function ki(e){return/"_error"\s*:/u.test(e)||/"type"\s*:\s*"error"/u.test(e)}function _i(e){return new Response(e.body,{status:e.status,statusText:e.statusText,headers:new Headers(e.headers)})}function Si(e){const t=new Headers(e),r=[];return t.forEach((n,o)=>{const i=o.toLowerCase();i!=="authorization"&&i!=="cookie"&&r.push([i,n])}),r.sort(([n],[o])=>n.localeCompare(o))}function vi(e){const t=[];return e.forEach((r,n)=>{const o=n.toLowerCase();o!=="set-cookie"&&t.push([o,r])}),t.sort(([r],[n])=>r.localeCompare(n))}function Pr(e){for(;D.size>e;){const t=[...D.values()].sort((r,n)=>r.lastAccessedAt-n.lastAccessedAt)[0];if(!t)break;D.delete(t.key)}}async function Oe(){return typeof indexedDB>"u"?null:(Cr??=new Promise(e=>{const t=indexedDB.open(fi,pi);t.onupgradeneeded=()=>{const r=t.result;r.objectStoreNames.contains(U)||r.createObjectStore(U,{keyPath:"key"}).createIndex("lastAccessedAt","lastAccessedAt",{unique:!1})},t.onsuccess=()=>e(t.result),t.onerror=()=>e(null),t.onblocked=()=>e(null)}),Cr)}async function Ai(e){const t=await Oe();return t?new Promise(r=>{const n=t.transaction(U,"readonly"),o=n.objectStore(U).get(e);o.onsuccess=()=>r(o.result??null),o.onerror=()=>r(null),n.onerror=()=>r(null)}):null}async function gt(e){const t=await Oe();t&&await new Promise(r=>{const n=t.transaction(U,"readwrite");n.objectStore(U).put(e),n.oncomplete=()=>r(),n.onerror=()=>r(),n.onabort=()=>r()})}async function Ti(e){const t=await Oe();t&&await new Promise(r=>{const n=t.transaction(U,"readwrite");n.objectStore(U).delete(e),n.oncomplete=()=>r(),n.onerror=()=>r(),n.onabort=()=>r()})}async function xi(e,t){const r=await Oe();r&&await new Promise(n=>{const o=r.transaction(U,"readwrite"),i=o.objectStore(U),a=[],s=i.openCursor();s.onsuccess=()=>{const c=s.result;if(!c){const u=a.filter(f=>f.expiresAt<=t),l=a.filter(f=>f.expiresAt>t).sort((f,m)=>f.lastAccessedAt-m.lastAccessedAt).slice(0,Math.max(0,a.length-u.length-e));for(const f of[...u,...l])i.delete(f.key);return}a.push(c.value),c.continue()},s.onerror=()=>n(),o.oncomplete=()=>n(),o.onerror=()=>n(),o.onabort=()=>n()})}function Ei(e){return JSON.stringify(yt(e))}function yt(e){return Array.isArray(e)?e.map(yt):!e||typeof e!="object"?e:Object.fromEntries(Object.entries(e).sort(([t],[r])=>t.localeCompare(r)).map(([t,r])=>[t,yt(r)]))}function Ci(e){let t=14695981039346656037n;const r=1099511628211n;for(let n=0;n<e.length;n+=1)t^=BigInt(e.charCodeAt(n)),t=BigInt.asUintN(64,t*r);return t.toString(16).padStart(16,"0")}function Pi(e){return typeof TextEncoder<"u"?new TextEncoder().encode(e).byteLength:e.length}async function Ri(e){const{beUrl:t,accountId:r,devJwtSecret:n,tokenBrokerUrl:o,tokenBrokerAudience:i,jwtProvider:a,parentUrl:s,op:c,input:u,cacheTtlS:l,cacheKey:f,browserCache:m,signal:p,interceptors:g}=e,h=await(a||pt({accountId:r,devJwtSecret:n,tokenBrokerUrl:o,tokenBrokerAudience:i}))({...p?{signal:p}:{},...s?{parentUrl:s}:{}}),{opDomain:y,opName:b}=ji(c,r);let w={method:"POST",headers:{authorization:`Bearer ${h}`,"content-type":"application/json",accept:"application/x-ndjson"},body:JSON.stringify({op_domain:y,op_name:b,op_payload:u,...l!==void 0?{cache_ttl_s:l}:{},...f!==void 0?{cache_key:f}:{}}),...p?{signal:p}:{}};const A=`${String(t).replace(/\/+$/u,"")}/v1/execute`;if(g?.beforeRequest){const k=await g.beforeRequest(e,{url:A,init:w});if(k&&"cached"in k&&k.cached!==void 0)return k.cached;k?.init&&(w=k.init)}const S=m===!1?await fetch(A,w):await gi(A,w,typeof m=="object"?m:{});if(!S.ok)throw Tr(S.status,await Li(S));let E=await Oi(S);if(g?.afterResponse){const k=await g.afterResponse(e,E);k&&"result"in k&&k.result!==void 0&&(E=k.result)}return E}function ji(e,t){if(!e||e.startsWith("-")||e.endsWith("-"))throw new Error(`Invalid BE op name: ${e}`);return{opDomain:Ii(t),opName:e}}function Ii(e){return e.replace(/-agentic$/u,"")}async function Li(e){try{return await e.json()}catch{return{error:{code:e.statusText||"internal"}}}}async function Oi(e){const t=e.body?.getReader();if(!t)throw new Error("BE response body is not readable.");const r=new TextDecoder;let n="";const o={};for(;;){const{value:a,done:s}=await t.read();if(s)break;n+=r.decode(a,{stream:!0});let c=n.indexOf(`
2
+ `);for(;c>=0;){const u=n.slice(0,c).trim();n=n.slice(c+1),u&&Rr(JSON.parse(u),o),c=n.indexOf(`
3
+ `)}}const i=n.trim();return i&&Rr(JSON.parse(i),o),o}function Rr(e,t){if(e._error)throw mt(e._error);if(!e._end)for(const[r,n]of Object.entries(e)){if(Object.prototype.hasOwnProperty.call(t,r))throw new N("op_failed",`BE streamed duplicate field "${r}".`,{source:"be",sourceCode:"schema_mismatch"});t[r]=n}}function Bi(e={}){return{type:"metadata",...e}}function jr(e,t=!1,r={}){return{type:"text_chunk",content:e,final:t,...r}}function Mi(e){return{type:"ui_spec",...e}}function Ni(e){return{type:"action",action:e}}function Ir(e,t){return{type:"error",code:e,message:t}}function ht(){return{type:"done"}}function Lr(e,t){return e[t?.type||t?.action?.type||"inputText"]||e.inputText}function Or(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:null}function Be(e,t={}){const r=Or(e);if(!r)return null;const n=t.catalogMapper?.(r);if(n)return n;const o=oe(r.sku,r.SKU);if(!o)return null;const i={sku:o,name:oe(r.name,r.title,r.short_name,o)||o,url:oe(r.url)||""},a=Array.isArray(r.images)?r.images:void 0,s=oe(r.imageUrl,r.image_url,r.image,a?.[0]);s&&(i.imageUrl=s),a&&a.length>1&&(i.images=a.filter(b=>!!b).map(String));const c=we(r.price_discounted),u=we(r.price),l=c||u;l>0&&(i.price=String(l));const f=c>0?u:0;f>0&&(i.originalPrice=String(f));const m=oe(r.brand);m&&(i.brand=m);const p=we(r.rating);p>0&&(i.rating=p);const g=we(r.review_count)||we(r.reviewCount);g>0&&(i.reviewCount=g);const h=oe(r.cart_code,r.cartCode);h&&(i.cartCode=h),typeof r.in_stock=="boolean"&&(i.inStock=r.in_stock),typeof r.inStock=="boolean"&&(i.inStock=r.inStock);const y=r.category_names;return Array.isArray(y)&&(i.categoryNames=y.map(String)),i}function Me(e){const t=Or(e);if(!t)return e;const r=t.category_names,n=Array.isArray(r)?r:void 0,o=t.images,i=Array.isArray(o)?o:void 0,a={sku:t.sku,name:t.name||t.title,url:t.url,price:t.price,currency:t.price_currency||t.currency,category:n?.[n.length-1]??void 0,category_names:n?n.slice(0,4):void 0,image:i?i[0]:t.image,in_stock:t.in_stock,rating:t.rating,review_count:t.review_count};for(const s of Object.keys(a))a[s]===void 0&&delete a[s];return a}function $i(e){return Array.isArray(e)?e.map(Me).filter(t=>!!t):[]}function oe(...e){for(const t of e)if(typeof t=="string"&&t.trim())return t.trim();return""}function we(e){const t=Number(e);return Number.isFinite(t)?t:0}function Br(e){return Array.isArray(e)?e.map(String).filter(Boolean):typeof e=="string"&&e?[e]:[]}function bt(e,t,r={}){return`${e}:${r.version||"v2"}:${ie(t)}`}function Fi(e,t={}){return Mr(e).map(r=>Nr(typeof r=="string"?r:r.sku,t.locale)).filter(Boolean).filter((r,n,o)=>o.indexOf(r)===n).sort((r,n)=>wt(r,n,t.locale)).slice(0,t.limit||16).join(",")}function qi(e,t={}){return ie(Mr(e).map(r=>Di(r,t)).filter(r=>!!r).sort((r,n)=>wt(String(r.sku||r.name||""),String(n.sku||n.name||""),t.locale)).slice(0,t.limit||16))}function Ui(e,t){return Q(e,t)}function ie(e){let t=2166136261;const r=zi(e);for(let n=0;n<r.length;n+=1)t^=r.charCodeAt(n),t=Math.imul(t,16777619);return(t>>>0).toString(36)}function Di(e,t){if(!e||typeof e!="object"||Array.isArray(e))return null;const r=e,n=t.mapProduct?.(r);if(n)return ke(n);const o=Me(r);return o&&typeof o=="object"&&!Array.isArray(o)?ke(Gi(o,t)):null}function Mr(e){return Array.isArray(e)?e.filter(t=>typeof t=="string"||!!(t&&typeof t=="object"&&!Array.isArray(t))):[]}function zi(e){return JSON.stringify(ke(e))}function ke(e){return Array.isArray(e)?e.map(ke):!e||typeof e!="object"?e:Object.fromEntries(Object.entries(e).filter(([,t])=>t!==void 0).sort(([t],[r])=>t.localeCompare(r)).map(([t,r])=>[t,ke(r)]))}function Gi(e,t){return{sku:Nr(e.sku,t.locale),name:Q(e.name,t.locale),url:Q(e.url,t.locale),price:e.price,currency:Q(e.currency,t.locale),category:Q(e.category,t.locale),category_names:Hi(e.category_names,t.locale,16),image:Q(e.image,t.locale),in_stock:e.in_stock,rating:e.rating,review_count:e.review_count}}function Nr(e,t){return Q(e,t).toUpperCase()}function Q(e,t){return typeof e=="string"?e.trim().replace(/\s+/gu," ").toLocaleLowerCase(t||void 0):""}function wt(e,t,r){return e.localeCompare(t,r,{numeric:!0})}function Hi(e,t,r){return Array.isArray(e)?e.map(n=>Q(n,t)).filter(Boolean).sort((n,o)=>wt(n,o,t)).slice(0,r):void 0}function $r(e,t){if(!e)return{ok:!0};const r=[];return kt(e,t,"",r),r.length?{ok:!1,error:r[0]||"invalid"}:{ok:!0}}function kt(e,t,r,n){if(e){if(Array.isArray(e.enum)&&!e.enum.includes(t)){n.push(`${r||"value"} must be one of [${e.enum.join(", ")}]`);return}switch(e.type){case"string":if(typeof t!="string"){n.push(`${r||"value"} must be a string`);return}e.minLength&&t.length<e.minLength&&n.push(`${r||"value"} must be at least ${e.minLength} chars`);return;case"number":if(typeof t!="number"||!Number.isFinite(t)){n.push(`${r||"value"} must be a number`);return}e.minimum!=null&&t<e.minimum&&n.push(`${r||"value"} must be >= ${e.minimum}`),e.maximum!=null&&t>e.maximum&&n.push(`${r||"value"} must be <= ${e.maximum}`);return;case"boolean":typeof t!="boolean"&&n.push(`${r||"value"} must be a boolean`);return;case"array":if(!Array.isArray(t)){n.push(`${r||"value"} must be an array`);return}if(e.minItems!=null&&t.length<e.minItems&&n.push(`${r||"value"} must have >= ${e.minItems} items`),e.maxItems!=null&&t.length>e.maxItems&&n.push(`${r||"value"} must have <= ${e.maxItems} items`),e.items){for(let o=0;o<t.length;o+=1)if(kt(e.items,t[o],`${r}[${o}]`,n),n.length)return}return;case"object":if(!t||typeof t!="object"||Array.isArray(t)){n.push(`${r||"value"} must be an object`);return}if(Array.isArray(e.required))for(const o of e.required){const i=t[o];if(i==null||i===""){n.push(`${r?`${r}.`:""}${o} is required`);return}}if(e.properties)for(const[o,i]of Object.entries(e.properties)){const a=t[o];if(a!==void 0&&(kt(i,a,r?`${r}.${o}`:o,n),n.length))return}return;default:return}}}async function Vi({request:e,accountModule:t,contextStore:r,beClient:n,toolBridge:o,emit:i,rpc:a,signal:s}){const c=performance.now(),u=await r.load(e),l=u.thread.id,f=ga(e);aa(u,f)&&r.appendUserMessage(l,f);const m=Lr(t.flows,e);if(!m)return i(Ir("unknown_action",`No agent flow for request type ${e?.type||"inputText"}`)),i(ht()),{steps:0,productSkusEmitted:[]};const p={request:e,context:r.patch(l,{})||u,bag:{},accountConfig:t.accountConfig||{},threadId:l,steps:0,productSkusEmitted:new Set,committed:!1,messageLimit:ma(t.contextPersistence?.messageLimit),catalogMapper:t.catalogMapper,similarityMapper:t.similarityMapper},g={contextStore:r,beClient:n,toolBridge:o,emit:i,rpc:a,adapters:t.adapters||{},...s?{signal:s}:{},...t.trace?{trace:t.trace}:{},...t.hooks?{hooks:t.hooks}:{}};await G(g,Se("turn:start",p));try{await ae(m,p,g),p.committed||await _t(p,g)}catch(h){throw await G(g,{...Se("turn:error",p),latencyMs:q(c),errorCode:xt(h)}),h}return await a("beacon.send",{type:"turnSummary",threadId:l,sessionId:e?.session_id||e?.sessionId||l,accountId:t.accountId||p.context.meta.accountId,steps:p.steps,totalLatencyMs:q(c),productSkusEmitted:[...p.productSkusEmitted]}),await G(g,{...Se("turn:end",p),latencyMs:q(c)}),{steps:p.steps,productSkusEmitted:[...p.productSkusEmitted]}}async function ae(e,t,r){for(const n of e){if(r.signal?.aborted||t.committed)return;t.steps+=1;const o=t.steps,i=performance.now();await G(r,At("step:start",t,n,o));try{await Ki(n,t,r),await G(r,{...At("step:end",t,n,o),latencyMs:q(i)})}catch(a){throw await G(r,{...At("step:error",t,n,o),latencyMs:q(i),errorCode:xt(a)}),a}t.context=r.contextStore.patch(t.threadId,{})||t.context}}async function Ki(e,t,r){if(r.hooks?.transformContext){const o=await r.hooks.transformContext(t.context);o&&(t.context=o)}const n=se(t,r);if(e.kind==="be_op"){await Wi(e,t,r,n);return}if(e.kind==="tool"){await Yi(e,t,r,n);return}if(e.kind==="adapter"){await Qi(e,t,r,n);return}if(e.kind==="emit"){await Xi(e,t,r);return}if(e.kind==="patch"){await ea(e,t,r);return}if(e.kind==="branch"){await ta(e,t,r,n);return}if(e.kind==="agent_loop"){await ra(e,t,r,n);return}if(e.kind==="parallel"){await na(e,t,r);return}if(e.kind==="refusal"){await oa(e,t,r,n);return}e.kind==="commit"&&await ia(e,t,r)}async function Wi(e,t,r,n){const o=performance.now();let i;try{let s=await R(e.input,n);if(r.hooks?.beforeBeOp){const c=await r.hooks.beforeBeOp(e.op,s,n);c&&"cached"in c&&c.cached!==void 0?i=c.cached:c&&"input"in c&&c.input!==void 0&&(s=c.input)}if(i===void 0){const c=await R(e.cache,n),u=Ji(e,t,s,c),l=await R(e.cacheTtlS,n)??u.cacheTtlS,f=await R(e.cacheKey,n)??u.cacheKey,m=await R(e.browserCache,n),p=_e(await R(e.timeoutMs,n));await vt(e,t,r,n);const g=p?new AbortController:null,h=Ur(r.signal,g?.signal);i=await Fe(r.beClient.invoke({op:e.op,input:s,...l!==void 0?{cacheTtlS:l}:{},...f!==void 0?{cacheKey:f}:{},...m!==void 0?{browserCache:m}:{},...h?{signal:h}:{}}),p,()=>new N("op_timeout","The assistant took too long to respond.",{source:"be",sourceCode:"timeout"}),()=>g?.abort())}if(r.hooks?.afterBeOp){const c=await r.hooks.afterBeOp(e.op,i,n);c&&"result"in c&&c.result!==void 0&&(i=c.result)}}catch(s){const c=s,u=String(c?.sourceCode||c?.code||"unknown"),l={type:"agentOp",threadId:t.threadId,sessionId:t.request?.session_id||t.request?.sessionId||t.threadId,accountId:t.context.meta.accountId,op:e.op,status:"error",latencyMs:q(o),errorCode:u};if(await r.rpc("beacon.send",l),e.onError){e.errorOut&&(t.bag[e.errorOut]=s),await ae(e.onError,t,r);return}throw s}e.out&&(t.bag[e.out]=i),await Ne(e,i,t,r.contextStore);const a={type:"agentOp",threadId:t.threadId,sessionId:t.request?.session_id||t.request?.sessionId||t.threadId,accountId:t.context.meta.accountId,op:e.op,status:"ok",latencyMs:q(o)};await r.rpc("beacon.send",a)}function Ji(e,t,r,n){if(!n||n.strategy!=="input-hash")return{};const o=_e(n.ttlS);if(!o)return{};const i=t.context.meta.locale,a=n.promptVersion||Zi(r)||"current";return{cacheTtlS:o,cacheKey:bt(e.op,{account:t.context.meta.accountId,locale:i,promptVersion:a,payload:r},{version:"input-hash"})}}function Zi(e){if(!e||typeof e!="object"||Array.isArray(e))return;const t=e,r=t.prompt_version||t.promptVersion;return typeof r=="string"&&r.trim()?r.trim():void 0}async function Yi(e,t,r,n){const o=performance.now();try{await vt(e,t,r,n);const i=_e(await R(e.timeoutMs,n));let a=await R(e.input,n);if(r.hooks?.beforeToolCall){const c=await r.hooks.beforeToolCall(e.name,a,n);if(c?.block)throw new N("tool_blocked",c.reason||`Tool '${e.name}' blocked by hook.`,{source:"tool",sourceCode:"blocked"});c&&"args"in c&&c.args!==void 0&&(a=c.args)}if(e.parameters){const c=$r(e.parameters,a);if(!c.ok)throw new N("tool_invalid_args",`Invalid args for tool '${e.name}': ${c.error}`,{source:"tool",sourceCode:"invalid_args"})}let s=await Fe(r.toolBridge.invoke(e.name,a),i,()=>new N("tool_timeout","The assistant tool took too long to respond.",{source:"tool",sourceCode:"timeout"}));if(r.hooks?.afterToolCall){const c=await r.hooks.afterToolCall(e.name,s,n);c&&"result"in c&&c.result!==void 0&&(s=c.result),c?.terminate&&(t.committed=!0)}e.out&&(t.bag[e.out]=s),await Ne(e,s,t,r.contextStore),await r.rpc("beacon.send",{type:"agentTool",threadId:t.threadId,sessionId:$e(t),accountId:t.context.meta.accountId,tool:e.name,status:"ok",latencyMs:q(o)})}catch(i){const a=i;if(await r.rpc("beacon.send",{type:"agentTool",threadId:t.threadId,sessionId:$e(t),accountId:t.context.meta.accountId,tool:e.name,status:"error",latencyMs:q(o),errorCode:String(a?.code||a?.name||"unknown")}),e.onError){e.errorOut&&(t.bag[e.errorOut]=i),await ae(e.onError,t,r);return}throw i}}async function Qi(e,t,r,n){const o=r.adapters?.[e.name];if(typeof o!="function")throw new Error(`Unknown flow adapter: ${e.name}`);await vt(e,t,r,n);const i=_e(await R(e.timeoutMs,n)),a=await Fe(o(await R(e.input,n),n),i,()=>new N("adapter_timeout","The assistant adapter took too long to respond.",{source:"adapter",sourceCode:"timeout"}));e.out&&(t.bag[e.out]=a),await Ne(e,a,t,r.contextStore)}async function Xi(e,t,r){const n=await e.build(se(t,r));ya(n,t.productSkusEmitted),r.emit(n)}async function ea(e,t,r){await Ne(e,void 0,t,r.contextStore)}async function ta(e,t,r,n){const o=String(await R(e.on,n)||"default");await ae(e.cases[o]||e.cases.default||[],t,r)}async function ra(e,t,r,n){if(!await e.shouldContinue(t.bag,n))return;const o=Math.max(0,Math.floor(Number(e.maxIterations)||0));let i=0;for(;!r.signal?.aborted&&!t.committed;){if(await ae(e.body,t,r),r.signal?.aborted||t.committed||!await e.shouldContinue(t.bag,se(t,r))||i>=o)return;const a=await e.onIterate?.(t.bag,se(t,r));a&&typeof a=="object"&&Object.assign(t.bag,a),i+=1}}async function na(e,t,r){const n=_e(await R(e.timeoutMs,se(t,r))),o=n?new AbortController:null,i=Ur(r.signal,o?.signal),a=e.steps.map(u=>{const l={...t,context:sa(t.context),bag:St(t.bag),productSkusEmitted:new Set(t.productSkusEmitted),committed:!1},f=[];return ae(u,l,{...r,emit:m=>{!i?.aborted&&m.type!=="done"&&f.push(m)},contextStore:ca(l),...i?{signal:i}:{}}).then(()=>({state:l,events:f}))}),s=await Fe(Promise.all(a),n,()=>new N("parallel_timeout","The assistant parallel step took too long to respond.",{source:"agent",sourceCode:"timeout"}),()=>o?.abort()),c=e.merge||{};for(const{state:u,events:l}of s){for(const f of l)r.emit(f);for(const f of u.productSkusEmitted)t.productSkusEmitted.add(f);for(const f of c.bag||[])Object.prototype.hasOwnProperty.call(u.bag,f)&&(t.bag[f]=u.bag[f]);if(c.panel?.length){const f=Fr(u.context.panel,c.panel);Object.keys(f).length&&(t.context=r.contextStore.patch(t.threadId,{panel:f})||t.context)}if(c.threadExtensions?.length){const f=Fr(u.context.thread.extensions,c.threadExtensions);Object.keys(f).length&&(t.context=r.contextStore.patch(t.threadId,{thread:{...t.context.thread,extensions:f}})||t.context)}}}async function oa(e,t,r,n){r.emit(jr(await R(e.message,n),!0)),await _t(t,r)}async function ia(e,t,r){await _t(t,r)}async function _t(e,{contextStore:t,emit:r}){e.committed||(e.context=await t.commit(e.threadId)||e.context,e.committed=!0,r(ht()))}async function Ne(e,t,r,n){if(typeof e.patch!="function")return;const o=await e.patch(r.context,t,se(r));o&&(r.context=n.patch(r.threadId,o)||r.context)}function se(e,t){return{request:e.request,context:e.context,bag:e.bag,accountConfig:e.accountConfig,catalogMapper:e.catalogMapper,similarityMapper:e.similarityMapper,...t?{beClient:t.beClient,toolBridge:t.toolBridge}:{},...t?.signal?{signal:t.signal}:{}}}function $e(e){return e.request?.session_id||e.request?.sessionId||e.threadId}function aa(e,t){if(!t)return!1;const r=e.messages[e.messages.length-1];return r?.role!=="user"||r.content!==t}function Fr(e,t){const r={};for(const n of t)Object.prototype.hasOwnProperty.call(e,n)&&(r[n]=e[n]);return r}function sa(e){return{...e,panel:St(e.panel||{}),thread:{...e.thread,extensions:St(e.thread?.extensions||{})},meta:e.meta,messages:e.messages}}function ca(e){return{async load(){return e.context},patch(t,r){return e.context=ua(e.context,r,e.messageLimit),e.context},appendUserMessage(){return e.context},async commit(){return e.context}}}function ua(e,t,r){if(!t||typeof t!="object")return e;const n=qr(e.panel,t.panel),o=qr(e.thread?.extensions||{},t.thread?.extensions);return{...e,...t,panel:n,thread:{...e.thread||{},...t.thread||{},extensions:o},meta:{...e.meta||{},...t.meta||{}},messages:Array.isArray(t.messages)?Ie(t.messages,r):e.messages}}function qr(e,t){if(!t||typeof t!="object"||Array.isArray(t))return e;const r={};for(const n of Object.keys(e))r[n]=e[n];for(const[n,o]of Object.entries(t))r[n]=o;return r}function St(e){return new Proxy({},{get(t,r,n){if(typeof r!="string")return Reflect.get(t,r,n);if(Object.prototype.hasOwnProperty.call(t,r))return t[r];const o=e[r];if(la(o)){const i=da(o);return t[r]=i,i}return o},has(t,r){return Reflect.has(t,r)||Reflect.has(e,r)},ownKeys(t){return Reflect.ownKeys(t)},getOwnPropertyDescriptor(t,r){return Object.getOwnPropertyDescriptor(t,r)}})}function la(e){return!!(e&&typeof e=="object")}function da(e){if(typeof structuredClone=="function")try{return structuredClone(e)}catch{}try{return JSON.parse(JSON.stringify(e))}catch{return e}}async function R(e,t){return typeof e=="function"?await e(t):e}function _e(e){if(e===void 0)return;const t=Math.floor(Number(e));return Number.isFinite(t)&&t>0?t:void 0}async function Fe(e,t,r,n){if(!t)return e;let o,i=!1;return new Promise((a,s)=>{o=setTimeout(()=>{i||(i=!0,n?.(),s(r()))},t),Promise.resolve(e).then(c=>{i||(i=!0,o&&clearTimeout(o),a(c))},c=>{i||(i=!0,o&&clearTimeout(o),s(c))})})}function Ur(e,t){if(!e)return t;if(!t||e.aborted)return e;if(t.aborted)return t;const r=new AbortController,n=()=>r.abort();return e.addEventListener("abort",n,{once:!0}),t.addEventListener("abort",n,{once:!0}),r.signal}async function vt(e,t,r,n){if(!e.confirm)return;const o=await R(e.confirm,n);if(!o)return;const i=fa(o,e,t);await G(r,Tt("confirmation:start",t,e));try{const a=await r.rpc("confirmation.request",i),s=typeof a=="boolean"?a:a?.confirmed===!0;if(await G(r,Tt("confirmation:end",t,e)),s)return;throw new N("confirmation_declined","The requested action was not confirmed.",{source:e.kind==="be_op"?"be":e.kind,sourceCode:"confirmation_declined",detail:a})}catch(a){throw await G(r,{...Tt("confirmation:error",t,e),errorCode:xt(a)}),a}}function fa(e,t,r){return{...pa(e),accountId:r.context.meta.accountId,threadId:r.threadId,sessionId:$e(r),stepKind:t.kind,...t.kind==="be_op"?{stepName:t.op}:{stepName:t.name}}}function pa(e){return typeof e=="string"?{message:e}:e===!0?{}:e&&typeof e=="object"?{...typeof e.title=="string"?{title:e.title}:{},...typeof e.message=="string"?{message:e.message}:{},...typeof e.action=="string"?{action:e.action}:{},...Object.prototype.hasOwnProperty.call(e,"payload")?{payload:e.payload}:{}}:{}}async function G(e,t){try{await e.trace?.(t)}catch{}}function Se(e,t){return{type:e,accountId:t.context.meta.accountId,threadId:t.threadId,sessionId:$e(t)}}function At(e,t,r,n){const o=Dr(r);return{...Se(e,t),stepIndex:n,stepKind:r.kind,...o?{stepName:o}:{}}}function Tt(e,t,r){const n=Dr(r);return{...Se(e,t),stepKind:r.kind,...n?{stepName:n}:{}}}function Dr(e){if(e.kind==="be_op")return e.op;if(e.kind==="tool"||e.kind==="adapter")return e.name}function xt(e){if(e&&typeof e=="object"){const t=e;return String(t.sourceCode||t.code||t.name||"unknown")}return"unknown"}function ma(e){if(e===void 0)return;const t=Math.floor(Number(e));return Number.isFinite(t)&&t>0?t:void 0}function ga(e){const t=e?.payload;if(typeof t=="string")return t;if(t&&typeof t=="object"&&"text"in t){const r=t.text;if(typeof r=="string")return r}return typeof e?.action?.payload=="string"?e.action.payload:typeof e?.action?.title=="string"?e.action.title:""}function ya(e,t){const r=e,n=r.spec,o=Array.isArray(n?.items)?n.items:void 0,i=Array.isArray(r.items)?r.items:void 0,a=o||i;if(Array.isArray(a)){for(const s of a)if(s&&typeof s=="object"){const c=s.sku;typeof c=="string"&&t.add(c)}}}function ha(e){return{invoke(t,r){return e("tool.invoke",{name:t,input:r})}}}var ba=512,wa=.74;function zr({accountId:e,worker:t,beUrl:r,devJwtSecret:n,tokenBrokerUrl:o,tokenBrokerAudience:i,defaultLocale:a,tools:s={},beacon:c,confirmation:u,memory:l=nt()}){let f=1;const m=new Map;return Lo({worker:t,tools:s,beacon:p=>c?.({...p,accountId:p.accountId||e}),...u?{confirmation:u}:{},memory:l}),t.addEventListener("message",p=>{const g=p.data||{};if(g.type==="activity"&&g.entry){Gr(g.entry);return}const h=typeof g.id=="number"?g.id:null;if(h==null)return;const y=m.get(h);if(y){if(g.type==="event"&&g.event){Et(y,g.event);return}if(g.type==="error"){y.onError(new Error(g.message||"Agent worker failed")),m.delete(h);return}g.type==="end"&&m.delete(h)}}),(p,g,h,y)=>{const b=f++;m.set(b,g);const w=()=>{m.delete(b),t.postMessage({id:b,type:"abort"})},A=S=>{if(h.aborted){w();return}t.postMessage({id:b,type:"invoke",accountId:e,beUrl:r,devJwtSecret:n,tokenBrokerUrl:o,tokenBrokerAudience:i,defaultLocale:a,request:S,parentUrl:window.location.href,debugActivity:ka()})};if(h.aborted){w();return}if(h.addEventListener("abort",w,{once:!0}),y){Vr(p,y).then(A).catch(S=>{m.delete(b),g.onError(S instanceof Error?S:new Error("Failed to read image attachment"))});return}A(p)}}function Gr(e){const t=window;(t.__GENGAGE_AGENTIC_DEBUG_RECORD__||t.__GENGAGE_AGENTIC_DEBUG_RECORD_BE__)?.(e)}function ka(){const e=window;return typeof(e.__GENGAGE_AGENTIC_DEBUG_RECORD__||e.__GENGAGE_AGENTIC_DEBUG_RECORD_BE__)=="function"}function Hr({accountId:e,accountModule:t,beUrl:r,devJwtSecret:n,tokenBrokerUrl:o,tokenBrokerAudience:i,defaultLocale:a,tools:s={},beacon:c,confirmation:u,memory:l}){let f=null;const m=_a({accountId:e,tools:s,beacon:c,confirmation:u,memory:l??nt()}),p=ha(m),g=pt({accountId:e,...n?{devJwtSecret:n}:{},...o?{tokenBrokerUrl:o}:{},...i?{tokenBrokerAudience:i}:{}});return async(h,y,b,w)=>{const A=await Vr(h||{},w);f||=new _r({accountId:e,locale:A?.locale||a,parentUrl:window.location.href,rpc:m,persistentPanelKeys:t.contextPersistence?.panelKeys,panelKeyLimits:t.contextPersistence?.panelKeyLimits,messageLimit:t.contextPersistence?.messageLimit,maxThreads:t.contextPersistence?.maxThreads,threadTtlMs:t.contextPersistence?.threadTtlMs});try{await Vi({request:A,accountModule:{...t,accountId:e,trace:async S=>{Gr({kind:"flow/trace",event:S}),await t.trace?.(S)}},contextStore:f,beClient:{invoke({op:S,input:E,signal:k,cacheTtlS:M,cacheKey:Z,browserCache:et}){return Ri({beUrl:r,accountId:e,jwtProvider:g,parentUrl:window.location.href,op:S,input:E,cacheTtlS:M,cacheKey:Z,browserCache:et,...k?{signal:k}:{}})}},toolBridge:p,emit:S=>Et(y,S),rpc:m,signal:b})}catch(S){b?.aborted||(Et(y,xr(S)),y.onDone())}}}function _a({accountId:e,tools:t,beacon:r,confirmation:n,memory:o}){const i=a=>r?.({...a,accountId:a.accountId||e});return((a,s)=>yr(a,s,{tools:t,beacon:i,confirmation:n,memory:o}))}async function Vr(e,t){if(!t||!t.type?.startsWith("image/"))return e;const r=await Aa(t),n={...Sa(e.payload??e.action?.payload),image_data_url:r.dataUrl,image_mime:r.mime};return{...e,payload:n,...e.action?{action:{...e.action,payload:n}}:{}}}function Sa(e){return va(e)?{...e}:typeof e=="string"?{text:e}:{}}function va(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}async function Aa(e){const t=await Ta(e);return t||{dataUrl:await Kr(e),mime:e.type}}async function Ta(e){if(typeof createImageBitmap!="function"||typeof document>"u")return null;let t=null;try{t=await createImageBitmap(e);const r=Math.min(1,ba/Math.max(t.width,t.height)),n=Math.max(1,Math.round(t.width*r)),o=Math.max(1,Math.round(t.height*r)),i=document.createElement("canvas");i.width=n,i.height=o;const a=i.getContext("2d");if(!a)return null;a.drawImage(t,0,0,n,o);const s=await new Promise(c=>i.toBlob(c,"image/jpeg",wa));return s?{dataUrl:await Kr(s),mime:s.type||"image/jpeg"}:null}catch{return null}finally{t?.close()}}async function Kr(e){const t=new Uint8Array(await e.arrayBuffer());let r="";const n=32768;for(let o=0;o<t.length;o+=n)r+=String.fromCharCode(...t.subarray(o,o+n));return`data:${e.type};base64,${btoa(r)}`}function Et(e,t){switch(t?.type){case"text_chunk":{const r=t;e.onTextChunk(r.content||"",r.final===!0,r);break}case"ui_spec":{const r=t;e.onUISpec(r.spec,r.widget,r.panelHint,r.clearPanel===!0);break}case"action":e.onAction(t);break;case"metadata":e.onMetadata(t);break;case"error":e.onError(xa(t));break;case"done":e.onDone();break;default:break}}function xa(e){const t=new Error(e.message||e.code||"Agent error");return e.code&&(t.code=e.code),t}var Ea="entries",Ca=1,Pa={volatile:"Hot per-page state and sensitive request context.",session:"Current-visit tool context without raw tokens or PII-heavy payloads.",local:"Small, non-sensitive capability facts or user preferences.",indexedDb:"Larger product/search payload caches with short TTLs."},Wr=new Map;function Ct(){return Date.now()}function ce(e){return e?.expiresAt!=null&&e.expiresAt<=Ct()}function Pt(e,t){return{value:e,createdAt:Ct(),expiresAt:t?Ct()+t:null}}function Ra(e,t,r){try{const n=e.getItem(`${t}${r}`);if(!n)return null;const o=JSON.parse(n);return ce(o)?(e.removeItem(`${t}${r}`),null):o.value}catch{return null}}function ja(e,t,r,n,o){try{return e.setItem(`${t}${r}`,JSON.stringify(Pt(n,o))),!0}catch{return!1}}function Ia(e,t,r){try{e.removeItem(`${t}${r}`)}catch{}}function Jr(e,t){if(!e)return 0;let r=0;try{const n=[];for(let o=0;o<e.length;o+=1){const i=e.key(o);i?.startsWith(t)&&n.push(i)}for(const o of n)try{const i=JSON.parse(e.getItem(o)||"null");(!i||ce(i))&&(e.removeItem(o),r+=1)}catch{e.removeItem(o),r+=1}}catch{return r}return r}function Zr(e){try{return window[e]}catch{return null}}function Yr(e,t){return e?{get:r=>Ra(e,t,r),set:(r,n,o={})=>ja(e,t,r,n,o.ttlMs),remove:r=>Ia(e,t,r)}:{get:()=>null,set:()=>!1,remove:()=>{}}}function La(e,t){const r=t.dbName||`gengage-${e}`,n=t.dbStore||Ea,o=t.dbVersion||Ca,i=new Map;let a=null;const s=()=>"indexedDB"in window?a||(a=new Promise(m=>{const p=indexedDB.open(r,o);p.onupgradeneeded=()=>{p.result.createObjectStore(n,{keyPath:"key"})},p.onsuccess=()=>m(p.result),p.onerror=()=>m(null),p.onblocked=()=>m(null)}),a):Promise.resolve(null);return{volatileEntries:i,idbGet:async m=>{const p=await s();return p?new Promise(g=>{const h=p.transaction(n,"readwrite").objectStore(n),y=h.get(m);y.onsuccess=()=>{const b=y.result;if(!b||ce(b)){b&&h.delete(m),g(null);return}g(b.value)},y.onerror=()=>g(null)}):null},idbSet:async(m,p,g={})=>{const h=await s();return h?new Promise(y=>{const b=h.transaction(n,"readwrite");b.oncomplete=()=>y(!0),b.onerror=()=>y(!1),b.objectStore(n).put({key:m,...Pt(p,g.ttlMs)})}):!1},idbRemove:async m=>{const p=await s();p&&p.transaction(n,"readwrite").objectStore(n).delete(m)},idbGc:async()=>{const m=await s();return m?new Promise(p=>{let g=0;const h=m.transaction(n,"readwrite"),y=h.objectStore(n).openCursor();y.onsuccess=()=>{const b=y.result;if(!b)return;const w=b.value;(!w||ce(w))&&(b.delete(),g+=1),b.continue()},h.oncomplete=()=>p(g),h.onerror=()=>p(g),y.onerror=()=>p(g)}):0}}}function Rt(e,t={}){const r=window,n=r.gengage||(r.gengage={}),o=n.memory||(n.memory={}),i=o[e];if(i)return i;const a=Wr.get(e)||La(e,t);Wr.set(e,a);const s=t.sessionPrefix||`gengage:${e}:session:`,c=t.localPrefix||`gengage:${e}:local:`,u=Zr("sessionStorage"),l=Zr("localStorage"),m={get:y=>{const b=a.volatileEntries.get(y);return b?ce(b)?(a.volatileEntries.delete(y),null):b.value:null},set:(y,b,w={})=>(a.volatileEntries.set(y,Pt(b,w.ttlMs)),!0),remove:y=>{a.volatileEntries.delete(y)},clear:()=>a.volatileEntries.clear()},p={get:a.idbGet,set:a.idbSet,remove:a.idbRemove},g=async()=>{let y=0;for(const[S,E]of a.volatileEntries)ce(E)&&(a.volatileEntries.delete(S),y+=1);const b=Jr(u,s),w=Jr(l,c),A=await a.idbGc();return{volatile:y,session:b,local:w,indexedDb:A}},h={accountId:e,volatile:m,session:Yr(u,s),local:Yr(l,c),indexedDb:p,gc:g,stableKey:ie,policy:{...Pa,...t.policy||{}}};o[e]=h;for(const y of t.aliases||[])o[y]=h;return Oa(h),h}function Oa(e){const t=window,r=()=>{e.gc().catch(()=>{})};if(typeof t.requestIdleCallback=="function"){t.requestIdleCallback(r);return}setTimeout(r,5e3)}var qe="__gengageAgentFetchBridge",Ba=1e3*60*60*24*14;function Ma({accountId:e,streamTransport:t,endpoints:r={},endpointCache:n}){if(!e)throw new Error("accountId is required.");if(typeof t!="function")throw new Error("streamTransport is required.");const o=Na(),i=`https://gengage-injector.invalid/${encodeURIComponent(e)}`,a=new Set,s=n?za({accountId:e,endpointCache:n,fetchImpl:o.originalFetch}):void 0,c=u=>{const l=`${i}/chat/${u}`;a.add(l);const f=r[u],m={streamTransport:t,endpoint:u};f&&(m.endpointHandler=f),s&&(m.endpointCache=s),o.routes.set(l,m)};c("process_action");for(const u of Object.keys(r))u!=="process_action"&&c(u);return{middlewareUrl:i,stop(){for(const u of a)o.routes.delete(u);$a(o)}}}function Na(){const e=window,t=e[qe];if(t)return t;const r=e.fetch.bind(e),n={routes:new Map,originalFetch:r,installedFetch:r};return n.installedFetch=(o,i)=>{const a=Qr(o),s=n.routes.get(a);return s?qa(s,o,i):r(o,i)},e.fetch=n.installedFetch,e[qe]=n,n}function $a(e){if(e.routes.size>0)return;const t=window;t.fetch===e.installedFetch&&(t.fetch=e.originalFetch),t[qe]===e&&delete t[qe]}function Qr(e){return typeof e=="string"?e:e instanceof URL?e.href:e?.url||""}function Xr(e,t){if(t?.signal)return t.signal;if(typeof Request<"u"&&e instanceof Request)return e.signal}function en(e,t){return t?.body!==void 0&&t?.body!==null?t.body:typeof Request<"u"&&e instanceof Request?e.clone().text():null}async function Fa(e,t){const r=en(e,t);if(r instanceof FormData){const o=r.get("request"),i=r.get("attachment");return{request:JSON.parse(String(o||"{}")),...i instanceof File?{attachment:i}:{}}}const n=await Promise.resolve(r);return typeof n=="string"?{request:JSON.parse(n||"{}")}:{request:{}}}async function qa(e,t,r){if(e.endpoint&&e.endpoint!=="process_action"&&e.endpointHandler){const u=new AbortController,l=Xr(t,r);let f=null;if(l){const m=()=>u.abort();l.aborted&&m(),l.addEventListener("abort",m,{once:!0}),f=()=>l.removeEventListener("abort",m)}try{const m=await Ua(t,r),p={accountId:Da(t),endpoint:e.endpoint,signal:u.signal},g=Ga(e.endpointCache,e.endpoint,m,p.accountId);if(g){const y=await Ha(e.endpointCache,g,u.signal);if(y)return Ya(y)}const h=await e.endpointHandler(m,p);return g&&h.ok&&await Va(e.endpointCache,g,h.clone(),u.signal),h}finally{f?.()}}const n=new TextEncoder,o=new AbortController,i=Xr(t,r);let a=!1,s=null;const c=new ReadableStream({async start(u){const l=p=>{a||u.enqueue(n.encode(`${JSON.stringify(p)}
4
+ `))},f=()=>{a||(a=!0,s?.(),u.close())},m=p=>{l({type:"error",code:p?.code||"agent_bridge_error",message:p instanceof Error?p.message:String(p)}),l({type:"done"}),f()};if(i){const p=()=>{o.abort(),a||(a=!0,s?.(),u.error(new DOMException("Aborted","AbortError")))};if(i.aborted){p();return}i.addEventListener("abort",p,{once:!0}),s=()=>i.removeEventListener("abort",p)}try{const{request:p,attachment:g}=await Fa(t,r),h=e.streamTransport(p,{onTextChunk:(y,b,w={})=>l({type:"text_chunk",content:y,final:b===!0,...w}),onUISpec:(y,b,w,A)=>l({type:"ui_spec",spec:y,widget:b,...w?{panelHint:w}:{},...A?{clearPanel:!0}:{}}),onAction:y=>{l(y?.type==="action"?y:{type:"action",action:y})},onMetadata:y=>{l(y?.type==="metadata"?y:{type:"metadata",...y})},onError:m,onDone:()=>{l({type:"done"}),f()}},o.signal,g);ts(h)&&(await h,o.signal.aborted||(l({type:"done"}),f()))}catch(p){o.signal.aborted||m(p)}},cancel(){o.abort(),s?.(),a=!0}});return new Response(c,{status:200,headers:{"Content-Type":"application/x-ndjson"}})}async function Ua(e,t){const r=await Promise.resolve(en(e,t));return typeof r!="string"||r.trim()===""?{}:JSON.parse(r)}function Da(e){try{const[t]=new URL(Qr(e)).pathname.split("/").filter(Boolean);return decodeURIComponent(t||"")}catch{return""}}function za({accountId:e,endpointCache:t,fetchImpl:r}){return{accountId:e,beUrl:t.beUrl,...t.parentUrl?{parentUrl:t.parentUrl}:{},ttlMs:t.ttlMs??Ba,policies:t.policies,fetchImpl:r,jwtProvider:pt({accountId:e,...t.devJwtSecret?{devJwtSecret:t.devJwtSecret}:{},...t.tokenBrokerUrl?{tokenBrokerUrl:t.tokenBrokerUrl}:{},...t.tokenBrokerAudience?{tokenBrokerAudience:t.tokenBrokerAudience}:{},fetchImpl:r})}}function Ga(e,t,r,n){if(!e)return null;const o=e.policies[t];if(!o)return null;const i=o(r,{accountId:n,endpoint:t});return!i?.partition||!i?.key?null:{partition:i.partition,key:i.key,ttlMs:i.ttlMs??e.ttlMs}}async function Ha(e,t,r){const n=on(e.accountId,t),o=await Qa(e.accountId,n);if(nn(o))return o;const i=await Ka(e,t,r);return i?(await an(e.accountId,n,i,t.ttlMs),i):null}async function Va(e,t,r,n){try{const o=await Za(r);if(es(o.body))return;const i=on(e.accountId,t);await an(e.accountId,i,o,t.ttlMs),Wa(e,t,o,n)}catch{}}async function Ka(e,t,r){try{const n=await e.fetchImpl(rn(e.beUrl),{method:"POST",headers:await tn(e,r),body:JSON.stringify({partition:t.partition,key:t.key}),signal:r});if(!n.ok)return null;const o=await n.json();return o.hit===!0&&nn(o.payload)?o.payload:null}catch{return null}}async function Wa(e,t,r,n){try{await e.fetchImpl(rn(e.beUrl),{method:"POST",headers:await tn(e,n),body:JSON.stringify({partition:t.partition,key:t.key,ttl_s:Math.max(1,Math.ceil(t.ttlMs/1e3)),payload:r}),signal:n})}catch{}}async function tn(e,t){return{authorization:`Bearer ${await e.jwtProvider({signal:t,parentUrl:e.parentUrl||Ja()})}`,"content-type":"application/json",accept:"application/json"}}function Ja(){try{return window.location?.href||""}catch{return""}}function rn(e){return`${String(e).replace(/\/+$/u,"")}/v1/cache`}async function Za(e){return{status:e.status,statusText:e.statusText,headers:[...e.headers.entries()].filter(([t])=>Xa(t)),body:await e.text()}}function Ya(e){return new Response(e.body,{status:e.status,statusText:e.statusText,headers:new Headers(e.headers)})}function nn(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;const t=e;return typeof t.status=="number"&&typeof t.statusText=="string"&&typeof t.body=="string"&&Array.isArray(t.headers)}function on(e,t){return`endpoint-response:${ie({accountId:e,partition:t.partition,key:t.key})}`}async function Qa(e,t){const r=Rt(e);return r.volatile.get(t)||await r.indexedDb.get(t)||r.local.get(t)}async function an(e,t,r,n){const o=Rt(e);o.volatile.set(t,r,{ttlMs:n}),await o.indexedDb.set(t,r,{ttlMs:n})||o.local.set(t,r,{ttlMs:n})}function Xa(e){return["content-type","cache-control"].includes(e.toLowerCase())}function es(e){return/"_error"\s*:/u.test(e)||/"type"\s*:\s*"error"/u.test(e)}function ts(e){return e!==null&&(typeof e=="object"||typeof e=="function")&&typeof e.then=="function"}function rs({accountId:e,beUrl:t,devJwtSecret:r,tokenBrokerUrl:n,tokenBrokerAudience:o,workerUrl:i,defaultLocale:a="en-GB",accountModule:s,tools:c={},beacon:u,confirmation:l,memory:f,allowBlobWorker:m=!1,signal:p}){if(!e)throw new Error("accountId is required.");if(!t)throw new Error("beUrl is required. The injector owns backend URLs; the SDK has no default.");if(!i)throw new Error("workerUrl is required.");const g=window,h=g.GengageAssistantInjector||(g.GengageAssistantInjector={}),y=h[e]||(h[e]={});if(y.agentController)return y.agentController;const b=jt(i)||m?sn(i,`gengage-${e}-agent`,{allowBlobWorker:m}):null;b||u?.({type:"agentRuntime",accountId:e,transport:"main-thread",reason:"cross-origin-worker-url",workerUrl:i}),y.streamTransport=b?zr({accountId:e,worker:b.worker,beUrl:t,...r?{devJwtSecret:r}:{},...n?{tokenBrokerUrl:n}:{},...o?{tokenBrokerAudience:o}:{},defaultLocale:a,tools:c,...u?{beacon:u}:{},...l?{confirmation:l}:{},...f?{memory:f}:{}}):Hr({accountId:e,accountModule:s,beUrl:t,...r?{devJwtSecret:r}:{},...n?{tokenBrokerUrl:n}:{},...o?{tokenBrokerAudience:o}:{},defaultLocale:a,tools:c,...u?{beacon:u}:{},...l?{confirmation:l}:{},...f?{memory:f}:{}});const w=new AbortController,A=[],S=()=>{for(;A.length;){const M=A.pop();try{M?.()}catch{}}},E=()=>{w.signal.aborted||(w.abort(),p?.removeEventListener("abort",E),delete y.streamTransport,b?.worker.terminate(),b?.cleanup(),S(),delete y.agentController)};p?.addEventListener("abort",E,{once:!0});const k={type:"agent",signal:w.signal,addCleanup(M){if(typeof M=="function"){if(w.signal.aborted){M();return}A.push(M)}},stop:E,diagnostics(){return{accountId:e,beUrl:t,workerUrl:i,mounted:!0,transport:b?"worker":"main-thread",transportReason:b?"module-worker":"cross-origin-worker-url",flows:Object.keys(s?.flows||{})}}};return y.agentController=k,k}function jt(e){const t=new URL(e,window.location.href);return t.origin===window.location.origin||t.protocol==="blob:"}function sn(e,t,r={}){const n=new URL(e,window.location.href);if(jt(e))return{worker:new Worker(n.href,{type:"module",name:t}),cleanup(){}};if(!r.allowBlobWorker)throw new Error("Cross-origin agent workers require allowBlobWorker=true or a same-origin workerUrl.");const o=new Blob([`import ${JSON.stringify(n.href)};
5
+ `],{type:"text/javascript"}),i=URL.createObjectURL(o);try{return{worker:new Worker(i,{type:"module",name:t}),cleanup(){URL.revokeObjectURL(i)}}}catch(a){throw URL.revokeObjectURL(i),a}}function ns(e,t={}){if(!Array.isArray(e))return[];const r=t.maxItems??8,n=t.maxFeatures??8;return e.map(o=>os(o,t.defaultBrand,n)).filter(o=>!!o).slice(0,r)}function os(e,t,r){if(!e||typeof e!="object"||Array.isArray(e))return null;const n=e,o=Me(n);return o?ss({sku:o.sku,name:o.name,url:o.url,image:o.image,price:o.price,currency:o.currency,category:o.category,category_names:o.category_names,brand:n.brand||t,features:is(n.features,r),specs:as(n.specs,r),in_stock:o.in_stock}):null}function is(e,t){return Array.isArray(e)?e.filter(Boolean).slice(0,t):void 0}function as(e,t){if(!(!e||typeof e!="object"||Array.isArray(e)))return Object.fromEntries(Object.entries(e).filter(([,r])=>r!=null).slice(0,t))}function ss(e){return Object.fromEntries(Object.entries(e).filter(([,t])=>t!=null))}function It(e){if(!e||typeof e!="object"||Array.isArray(e))return{};const t=e,r=Array.isArray(t.rows)?t.rows:[];return{...t,rows:r.map(us).filter(Boolean)}}function cn(e,t){const r=Array.isArray(e)?e.filter(s=>!!(s&&typeof s=="object"&&!Array.isArray(s))):[],n=It(t),o=Array.isArray(n.columns)?n.columns.map(String):[];if(!o.length)return r;const i=new Map(r.map(s=>[String(s.sku||s.id||""),s])),a=o.map(s=>i.get(s)).filter(s=>!!s);return a.length?a:r}function cs(e,t){const r=It(e?.table),n=cn(t,r);return{...e||{},table:r,products:n,multiple_product_details:n}}function us(e){return!e||typeof e!="object"||Array.isArray(e)?null:Object.fromEntries(Object.entries(e).filter(([,t])=>t!==void 0))}function ls(e=[],t={}){const r={},n=[];return(Array.isArray(e)?e.map(o=>Be(o,t)).filter(o=>!!o):[]).forEach((o,i)=>{const a=`product-${i.toString()}`;n.push(a);const s={sku:o.sku,product:o};r[a]={type:"ProductCard",props:{product:o,index:i,action:{title:o.name,type:"launchSingleProduct",payload:s}}}}),r.root={type:"ProductGrid",props:{layout:"grid"},children:n},{widget:"chat",panelHint:"panel",spec:{root:"root",elements:r}}}function ds(e,t={}){return{widget:"chat",panelHint:"panel",spec:{root:"root",elements:{root:{type:"ProductDetailsPanel",props:{product:Be(e,t)||e||{}}}}}}}function fs(e={},t={}){const r=(e.multiple_product_details||e.products||[]).map(o=>Be(o,t)).filter(o=>!!o),n=e.table||ps(e.comparison_table);return{widget:"chat",panelHint:"panel",spec:{root:"root",elements:{root:{type:"ComparisonTable",props:{products:r,recommended:r.find(o=>o.sku===e.recommended_choice_sku)||r[0],attributes:Object.entries(n).map(([o,i])=>({label:o,values:Array.isArray(i)?i.map(String):[String(i??"")]})),highlights:Br(e.key_differences),specialCases:Br(e.special_considerations),recommendedText:e.recommended_choice,productActions:Object.fromEntries(r.map(o=>[o.sku,{title:o.name,type:"launchSingleProduct",payload:{sku:o.sku,product:o}}]))}}}}}}function ps(e){return Array.isArray(e)?Object.fromEntries(e.map(t=>{const r=typeof t?.label=="string"?t.label.trim():"";return r?[r,t.values]:null}).filter(t=>!!t)):{}}function ms(e=[]){return{widget:"chat",panelHint:"inline",spec:{root:"root",elements:{root:{type:"ActionButtons",props:{buttons:(Array.isArray(e)?e:[]).map(t=>{const r=t.label||t.title||t.shortName||"",n=t.action||t.requestDetails||t.request_details;return!r||!n?.type?null:{label:r,action:{title:r,type:n.type,...n.payload!==void 0?{payload:n.payload}:{}}}}).filter(t=>!!t)}}}}}}function gs(e){return Object.freeze([...e])}function un(e,t,r="v1"){return`endpoint:${r}:${ie({endpoint:e,request:t})}`}function ys(e){const t=e.version||"v1",r=n=>o=>({partition:`${e.partitionPrefix}/${n}`,key:un(n,o,t),...e.ttlMs?{ttlMs:e.ttlMs}:{}});return{launcher_action:r("launcher_action"),similar_products:r("similar_products"),product_groupings:r("product_groupings")}}function hs(e){return{...e}}function bs(e,t={}){return new Response(e.map(r=>JSON.stringify(r)).join(`
6
6
  `)+`
7
- `,{...t,headers:{"content-type":"application/x-ndjson",...t.headers||{}}})}function rs(e,t={}){return new Response(JSON.stringify(e),{...t,headers:{"content-type":"application/json",...t.headers||{}}})}var _e=new Set(["and","are","for","from","the","with"]),ns={token:.26,keyword:.22,category:.18,facet:.16,color:.08,attribute:.06,price:.08,retrieval:.08},os=["amber","beige","black","blue","blush","bronze","brown","cream","gold","green","grey","ivory","lilac","mixed","orange","pastel","pink","purple","red","silver","white","yellow"];function V(e,t){return String(e??"").toLocaleLowerCase(t||void 0).normalize("NFKD").replace(new RegExp("\\p{Diacritic}","gu"),"").replace(/[^\p{L}\p{N}]+/gu," ").replace(/\s+/gu," ").trim()}function N(e,t=_e,r){const n=t instanceof Set?t:new Set([..._e,...t]),o=new Set,i=[];for(const a of V(e,r).split(/\s+/u))a.length<3||n.has(a)||o.has(a)||(o.add(a),i.push(a));return i}function ce(e,t={}){if(ls(e))return e;const r=t.similarityMapper?.(e);if(r)return r;const n=t.facetKeys,o=j(e.category_names??e.category),i=j(e.category_ids),a=ds(e.facet_hits),s=Object.entries(a).filter(([m])=>!n||n.some(b=>V(b,t.locale)===V(m,t.locale))).map(([,m])=>m),c=$(e.name,e.title),u=$(e.brand),l=t.sourceKeywords??[],f=[c,u,...o,...s,...j(e.promotions),$(e.description),...l].join(" "),g=N(f,t.stopWords,t.locale),p=$(t.sourceProductType,ms(o,c,g,t.locale),g[0]),y=K([...ps(f,os,t.locale),...Object.entries(a).filter(([m])=>/colou?r/iu.test(m)).flatMap(([,m])=>N(m,t.stopWords,t.locale))],t.locale),h=K([...s.flatMap(m=>N(m,t.stopWords,t.locale)),...j(e.promotions).flatMap(m=>N(m,t.stopWords,t.locale))],t.locale).slice(0,24);return{sku:$(e.sku),title:c,brand:u,productType:p,categoryNames:o,categoryIds:i,facets:a,keywords:K([...l.flatMap(m=>N(m,t.stopWords,t.locale)),...g],t.locale).slice(0,12),tokens:g,colors:y,attributes:h,price:fs(e)}}function is(e,t={}){const r=$(e.product_type,e.productType),n=$(e.title,r,j(e.keywords).join(" ")),o=K([...j(e.keywords),...j(e.colors),...j(e.materials),...j(e.styles),...j(e.attributes)]);return ce({sku:"__photo__",name:n,category_names:r?[r]:[],facet_hits:{colors:j(e.colors).join(", "),materials:j(e.materials).join(", "),styles:j(e.styles).join(", "),attributes:j(e.attributes).join(", ")},promotions:o},{...t,sourceProductType:r,sourceKeywords:o})}function as(e,t={}){const r=ce(e,t);return K([...t.sourceQueries??[],$e([r.productType,...r.colors.slice(0,1),...r.attributes.slice(0,2)]),$e([r.productType,...r.keywords.slice(0,3)]),$e([r.categoryNames[r.categoryNames.length-1],...r.keywords.slice(0,2)]),$e(r.title.split(/\s+/u).slice(0,6)),r.productType].map(n=>n.trim()).filter(Boolean)).slice(0,t.queryLimit??6)}function Tt(e,t,r={}){const n={...ns,...r.weights},o=ce(t,r),i=[],a=ue(e.tokens,o.tokens,r.locale),s=ue(e.keywords,o.tokens,r.locale),c=gs(e.categoryNames,o.categoryNames,r.locale)||ue(tn(e.categoryNames,r.locale),tn(o.categoryNames,r.locale),r.locale),u=ue(e.attributes,o.attributes,r.locale),l=ue(e.colors,o.colors,r.locale),f=ue(e.attributes,o.tokens,r.locale),g=ys(e.price,o.price),p=hs(o.sku,r.hitCounts)>0?1:0,y=bs(e,o),h=a*n.token+s*n.keyword+c*n.category+u*n.facet+l*n.color+f*n.attribute+g*n.price+p*n.retrieval,m=ws(y?h:h*.35);return y&&e.productType&&e.productType===o.productType&&i.push("same product type"),c>.4&&i.push("similar category"),u>.2&&i.push("matching product attributes"),l>0&&i.push("matching colour"),g>.8&&i.push("similar price"),y||i.push("weaker product-type match"),{score:Number(m.toFixed(4)),reasons:i}}function ss(e,t,r={}){const n=ce(e,r),o=new Set([n.sku,...r.ignoreSkus??[]].filter(Boolean));return Xr(t.filter(i=>{const a=$(i.sku);return a&&!o.has(a)}),r.maxCandidates).map(i=>{const a=Tt(n,i,r);return{...i,similarity_score:a.score,similarity_reasons:a.reasons}}).sort((i,a)=>a.similarity_score-i.similarity_score).slice(0,Math.max(1,Math.min(r.limit??12,100)))}async function cs(e,t,r={}){const n=ce(e,r),o=new Set([n.sku,...r.ignoreSkus??[]].filter(Boolean)),i=Xr(t.filter(c=>{const u=$(c.sku);return u&&!o.has(u)}),r.maxCandidates),a=Math.max(1,Math.floor(r.batchSize??50)),s=[];for(let c=0;c<i.length;c+=1){en(r.signal);const u=i[c],l=Tt(n,u,r);s.push({...u,similarity_score:l.score,similarity_reasons:l.reasons}),(c+1)%a===0&&await us(r.yield)}return en(r.signal),s.sort((c,u)=>u.similarity_score-c.similarity_score).slice(0,Math.max(1,Math.min(r.limit??12,100)))}function Xr(e,t){if(t===void 0)return e;const r=Math.floor(Number(t));return Number.isFinite(r)&&r>0?e.slice(0,r):e}async function us(e){if(e){await e();return}await new Promise(t=>{const r=globalThis;if(typeof r.scheduler?.yield=="function"){r.scheduler.yield().then(t,t);return}if(typeof setTimeout=="function"){setTimeout(t,0);return}t()})}function en(e){if(e?.aborted)throw new DOMException("Similarity ranking aborted.","AbortError")}function ls(e){return!!(e&&typeof e=="object"&&Array.isArray(e.tokens))}function $(...e){for(const t of e)if(typeof t=="string"&&t.trim())return t.trim();return""}function j(e){return Array.isArray(e)?e.map(t=>$(t)).filter(Boolean):typeof e=="string"&&e.trim()?e.split(/[,;/|]+/u).map(t=>t.trim()).filter(Boolean):[]}function ds(e){return!e||typeof e!="object"||Array.isArray(e)?{}:Object.fromEntries(Object.entries(e).map(([t,r])=>[t,$(r)]).filter(([,t])=>t))}function fs(e){const t=Number(e.price_discounted);if(Number.isFinite(t)&&t>0)return t;const r=Number(e.price);return Number.isFinite(r)&&r>0?r:0}function K(e,t){const r=new Set,n=[];for(const o of e){const i=V(o,t);!i||r.has(i)||(r.add(i),n.push(i))}return n}function ps(e,t,r){const n=` ${V(e,r)} `;return t.filter(o=>n.includes(` ${V(o,r)} `))}function ms(e,t,r,n){const o=V(e[e.length-1]??e[0]??"",n);if(o){const i=N(o,_e,n),a=new Set(N(t,_e,n));return i.find(s=>a.has(s))??i[0]??o}return r[0]??""}function $e(e){return e.map(t=>V(t)).filter(Boolean).join(" ").replace(/\s+/gu," ").trim().slice(0,120)}function tn(e,t){return e.flatMap(r=>N(r,_e,t))}function ue(e,t,r){const n=K(e,r),o=new Set(K(t,r));return n.length===0||o.size===0?0:n.filter(i=>o.has(i)).length/n.length}function gs(e,t,r){const n=K(e,r),o=new Set(K(t,r));return n.length===0||o.size===0?0:n.filter(i=>o.has(i)).length/n.length}function ys(e,t){return e<=0||t<=0?0:Math.min(e,t)/Math.max(e,t)}function hs(e,t){return!e||!t?0:typeof t.get=="function"?t.get(e)??0:t[e]??0}function bs(e,t){if(!e.productType||!t.productType||e.productType===t.productType)return!0;const r=new Set(N(e.productType)),n=new Set([...N(t.productType),...t.tokens]);return[...r].some(o=>n.has(o))}function ws(e){return Math.max(0,Math.min(1,e))}function ks(e){const t=(e?.chat||e?._chat)?.root||e?._chat?.root;return t?t.getRootNode?.()?.host||t:Array.from(document.querySelectorAll("*")).find(r=>r.shadowRoot?.querySelector?.(".gengage-chat-root, .gengage-chat-launcher-container"))}function Ss(e,t){const r=ks(e);r?.style&&(t?r.style.removeProperty("display"):r.style.setProperty("display","none","important")),t||(e?.chat||e?._chat)?.close?.()}var _s="nd_be_url";function vs(e,t){const r=As()||e.beUrl||t;if(!r)throw new Error("resolveBeUrl: backend URL is required. The injector must supply a fallback URL; the SDK has no default.");return r}function As(){try{const e=new URLSearchParams(window.location.search).get(_s)?.trim();if(!e)return null;const t=new URL(e);return t.protocol!=="https:"&&t.protocol!=="http:"?null:t.toString().replace(/\/+$/u,"")}catch{return null}}function rn(e){const t=e?.payload;if(typeof t=="string")return t;if(t&&typeof t=="object"&&"text"in t){const n=t.text;if(typeof n=="string")return n}const r=e?.action;return r&&typeof r.payload=="string"?r.payload:r&&typeof r.title=="string"?r.title:""}var Ct=[{pattern:/\bhttps?:\/\/[^\s?#]+(?:\?[^\s#]*)?/giu,replacement:xs},{pattern:/\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}\b/giu,replacement:"[email]"},{pattern:/\b(?:\+?\d[\d\s().-]{7,}\d)\b/gu,replacement:"[phone]"},{pattern:/\b(?:token|secret|csrf|cookie|bearer|session|sid|cart(?:[_-]?id)?)\s*[:=]\s*[^\s,;&]+/giu,replacement:"[secret]"},{pattern:/\b(?:order|cart|session)[_-]?(?:id|no|number)?\s*[:#=]?\s*[A-Z0-9-]{6,}\b/giu,replacement:"[secret]"}],Pt={patterns:Ct};function jt(e,t=Pt){let r=typeof e=="string"?e:e==null?"":String(e);for(const n of t.patterns||[]){const o=n.replacement;r=typeof o=="function"?r.replace(n.pattern,i=>o(i)):r.replace(n.pattern,o)}return r}function nn(e,t=Pt){return jt(rn(e),t)}function xs(e){try{const t=new URL(e);return`${t.origin}${t.pathname}${t.search?"?[query]":""}`}catch{return"[url]"}}var Es=["assistantName","homeDomain","categories","policyTopics"],Ts={intent:["searchContract","competitorBrands"]};function Cs(e,t,r,n={}){const o=on(t,r,n);return Object.keys(o).length?{...e,account_config:o}:e}function on(e,t,r={}){if(!e)return{};const n={},o=r.baseKeys||Es;for(const s of o)an(n,e,s);const i=e[t];i&&typeof i=="object"&&!Array.isArray(i)&&Object.assign(n,Ps(i));const a=r.opAllowlist||Ts;for(const s of a[t]||[])an(n,e,s);return n}function an(e,t,r){t[r]!==void 0&&(e[r]=t[r])}function Ps(e){return Object.fromEntries(Object.entries(e).filter(([,t])=>t!==void 0))}var js=["addToCart","search","searchKeyword","facetedSearch","searchGiftOptions","similaritySearch"];function Rs(e,t,r={}){const n=window,o=n.gengage||(n.gengage={}),i=o.tools||(o.tools={});i[e]=t;for(const a of r.accountAliases||[])i[a]=t;if(r.exposeStandardAliases!==!1)for(const a of r.standardAliases||js){const s=t[a];typeof s=="function"&&(i[a]=i[a]||s)}return t}function Is({getPageType:e,getProduct:t}){return()=>({url:window.location.href,title:document.title,pageType:e(),product:t()})}function Ls({accountId:e,getPageType:t,getProduct:r,getToolNames:n,getSearchCapabilities:o,getMemory:i}){return async()=>({accountId:e,url:window.location.href,pageType:t(),productSku:r()?.sku??null,toolNames:n(),...o?{searchCapabilities:o()}:{},...i?{memoryPolicy:i().policy}:{},timestamp:new Date().toISOString()})}function Os({accountId:e,runtimeFile:t="runtime.js",startExport:r="start",globalBaseUrlKey:n,errorLabel:o,trustedRuntimeOrigins:i}={}){if(!e)throw new Error("accountId is required.");const a=o||e,s=window,c=()=>{const p=s.GengageInjectorConfig||{},y=p[e]||{};return{...p,...y}},u=()=>{const p=c();if(p.runtimeUrl)return p.runtimeUrl;const y=p.assetBaseUrl||p.baseUrl||document.currentScript?.getAttribute("src")||(n?s[n]:null);if(!y)throw new Error(`${a} runtime URL cannot be resolved.`);return new URL(t,y).href},l=p=>{if(i===!0)return p;const y=new URL(p,window.location.href).origin,h=new Set([window.location.origin]),m=c();ve(h,document.currentScript?.getAttribute("src")),ve(h,m.assetBaseUrl),ve(h,m.baseUrl),ve(h,n?s[n]:void 0);for(const b of i||[])ve(h,b);if(!h.has(y))throw new Error(`${a} runtime origin ${y} is not trusted.`);return p},f=s.GengageAssistantInjector||(s.GengageAssistantInjector={}),g=f[e]||(f[e]={});return g.loaderPromise||(g.loaderPromise=import(l(u())).then(p=>{const y=p[r];if(typeof y!="function")throw new Error(`${a} runtime export ${r} is unavailable.`);return y()}).catch(p=>{throw delete g.loaderPromise,console.error(`[Gengage][${e}] runtime load failed`,p),p})),g.loaderPromise}function ve(e,t){if(t)try{const r=new URL(t,window.location.href);e.add(r.origin)}catch{e.add(t)}}var Bs=500,sn="__GENGAGE_AGENTIC_ACTIVITY__";function cn({accountId:e,clock:t=()=>Date.now()}={}){const r=new Set;let n=1;const o={accountId:e,entries:[]};function i(a){const s=ln({id:n++,at:t(),accountId:e,...a});o.entries.push(s),o.entries.length>Bs&&(o.entries=o.entries.slice(-500));for(const c of r)c(s,o.entries);return s}return{accountId:e,get entries(){return o.entries.slice()},clear(){o.entries=[];for(const a of r)a(null,o.entries)},record:i,subscribe(a){return typeof a!="function"?()=>{}:(r.add(a),a(null,o.entries),()=>r.delete(a))}}}function un(e){const t=window[sn];if(t?.accountId===e&&typeof t.record=="function")return t;const r=cn({accountId:e});return window[sn]=r,r}function ln(e){const t=String(e.kind||e.type||"activity"),r=dn(t),n=e.severity||fn({...e,kind:t});return{...e,kind:t,section:r,severity:n,group:e.group||pn({...e,kind:t,section:r}),noise:e.noise===!0||n==="info"&&Ms({...e,kind:t})}}function Ms(e){const t=String(e?.kind||"");if(t==="flow/trace"){const r=String(e?.event?.type||"");if(r==="step:start"||r==="step:end")return!0}if(t==="flow/metadata"){const r=String(e?.event?.phase||e?.event?.type||e?.event?.name||"").toLowerCase();if(r==="panelloading"||r==="heartbeat"||r==="tick")return!0}return!!t.startsWith("runtime/")}function dn(e){return e.startsWith("flow/")?"Flow":e.startsWith("intent/")?"Intent":e.startsWith("be/")?"Backend":e.startsWith("tool/")?"Tools":e==="beacon"?"Telemetry":"Runtime"}function fn(e){const t=String(e?.kind||"");return/\/(?:error|rejected|thrown)$/u.test(t)||e?.error||t==="be/response"&&Number(e?.status)>=400?"error":t==="flow/metadata"&&/fallback|retry|missing|empty/iu.test(String(e?.event?.phase||e?.event?.type||""))||t==="be/response"&&Number(e?.status)>=300?"warn":"info"}function pn(e){const t=String(e?.kind||"");if(t.startsWith("tool/"))return e?.tool?`Tool: ${e.tool}`:"Tools";if(t.startsWith("be/"))return e?.op?`BE: ${e.op}`:"Backend";if(t==="flow/request"){const r=e?.request?.type||e?.request?.action?.type;return r?`Flow: ${r}`:"Flow request"}if(t==="flow/action"){const r=e?.event?.name||e?.event?.action||e?.event?.type;return r?`Action: ${r}`:"Flow action"}return t==="flow/ui"?e?.widget?`UI: ${e.widget}`:"UI":t.startsWith("flow/")?"Flow lifecycle":t.startsWith("intent/")?e?.intent?.kind?`Intent: ${e.intent.kind}`:"Intent":t==="beacon"?e?.payload?.type?`Beacon: ${e.payload.type}`:"Beacon":e?.section||"Runtime"}var Ns=8,Rt=120;function mn(e=[]){const t=Array.isArray(e)?e:[],r={status:"idle",sessionId:"",requestType:"",actionType:"",model:"",current:"Waiting for activity",errors:0,warnings:0,startedAt:null,lastAt:null,tools:[],beOps:[],uiSurfaces:[],timeline:[]},n={intent:null,route:null,panel:null,threadExtensions:{},pageProduct:null,products:null,ui:null,lastText:""};for(const o of t)$s(r,n,o);return r.tools=Ot(r.tools).slice(-8),r.beOps=Ot(r.beOps).slice(-8),r.uiSurfaces=Ot(r.uiSurfaces).slice(-8),r.timeline=r.timeline.slice(-36),!r.lastAt&&t.length&&(r.lastAt=t.at(-1)?.at||null),{flow:r,context:n}}function Ae(e,t=""){if(!e||typeof e!="object")return null;const r=I({source:t,panel:qe(e.panel||e.panel_state),threadExtensions:Hs(e.thread?.extensions||e.threadExtensions||e.extensions),pageProduct:Qs(e.product||e.page?.product),products:le(e.products||e.last_search_products||e.items),ui:It(e.spec),intent:Lt(e.intent),route:Fe({searchParams:e.searchParams||e.search_params,flowParams:e.flowParams||e.flow_params})});return Object.keys(r).some(n=>n!=="source")?r:null}function qe(e){if(!e||typeof e!="object")return null;const t=le(e.last_search_products||e.current_panel_products),r=de(e.screen_sku_list||e.search_suggestions_skus);return I({source:e.list_source||e.source,screenType:k(e.screen_type||e.screen),screenSummary:k(e.screen_summary||e.ai_plist_summary),screenSkus:r,chatMentionedSkus:de(e.chat_mentioned_skus),lastSearch:Ws(e.last_search),productCount:t?.count??Bt(e.current_panel_product_count),productSkus:t?.skus})}function It(e,t="",r=""){if(!e||typeof e!="object")return null;const n=Xs(e);if(!n)return null;const o=n.props||{},i=Js(e,n,o),a=Array.isArray(o.buttons)?o.buttons:Array.isArray(o.actions)?o.actions:[],s=Array.isArray(o.rows)?o.rows.length:Array.isArray(o.comparison_table)?o.comparison_table.length:void 0;return I({widget:t,panelHint:r,rootType:n.type,productCount:i?.count,productSkus:i?.skus,buttonCount:a.length||void 0,buttonLabels:a.length?de(a.map(c=>c.label||c.title)):void 0,comparisonRows:s})}function $s(e,t,r={}){if(!(!r||typeof r!="object"))switch(e.lastAt=r.at||e.lastAt,r.severity==="error"&&(e.errors+=1),r.severity==="warn"&&(e.warnings+=1),r.state&&Ue(t,r.state),r.kind){case"flow/request":qs(e,t,r);break;case"flow/metadata":Us(e,t,r);break;case"flow/trace":Ds(e,r);break;case"flow/ui":Fs(e,t,r);break;case"flow/text-final":t.lastText=k(r.content,Rt),R(e,r,"Text",t.lastText,"done");break;case"flow/done":e.status=e.status==="error"?"error":"done",e.current="Done",R(e,r,"Done","Flow completed","done");break;case"flow/error":case"flow/rejected":case"flow/thrown":e.status="error",e.current="Flow error",R(e,r,"Error",k(r.error||r.kind),"error");break;case"tool/start":e.status=e.status==="idle"?"running":e.status,e.current=`Tool: ${r.tool||"tool"}`,e.tools.push(r.tool||"tool"),R(e,r,"Tool",r.tool||"tool","running");break;case"tool/done":e.tools.push(r.tool||"tool"),R(e,r,"Tool",r.tool||"tool","done");break;case"tool/error":e.status="error",e.current=`Tool error: ${r.tool||"tool"}`,e.tools.push(r.tool||"tool"),R(e,r,"Tool",r.tool||"tool","error");break;case"be/request":e.status=e.status==="idle"?"running":e.status,e.current=`BE: ${r.op||"request"}`,e.beOps.push(r.op||"unknown"),zs(t,r),R(e,r,"BE",r.op||"request","running");break;case"be/response":e.beOps.push(r.op||r.result?.op||"unknown"),Gs(t,r.result),R(e,r,"BE",r.op||r.result?.intent?.kind||"response",r.severity||"done");break;case"intent/selected":t.intent=Lt(r.intent),t.route=Fe({searchParams:r.searchParams,flowParams:r.flowParams}),e.current=`Intent: ${t.intent?.kind||"selected"}`,R(e,r,"Intent",t.intent?.kind||"selected","done");break;default:r.kind?.startsWith?.("runtime/")&&R(e,r,"Runtime",r.title||r.kind,"done");break}}function qs(e,t,r){const n=r.request||{};e.status="running",e.startedAt=r.at||e.startedAt,e.sessionId=k(n.session_id||n.sessionId||e.sessionId),e.requestType=k(n.type||e.requestType),e.actionType=k(n.action?.type||n.payload?.type||e.actionType),e.current=e.actionType||e.requestType||"Flow request",Ue(t,Ae(n.context||{},"request.context")),R(e,r,"Request",[e.requestType,e.actionType].filter(Boolean).join(" / ")||"request","running")}function Us(e,t,r){const n=r.event||{};e.sessionId=k(n.sessionId||n.session_id||e.sessionId),e.model=k(n.model||e.model),n.panelLoading===!0&&(e.current="Panel loading"),Ue(t,Ae(n,"flow.metadata")),R(e,r,"Metadata",k(n.name||n.phase||n.type||"metadata"),r.severity)}function Fs(e,t,r){const n=It(r.spec,r.widget,r.panelHint);n&&(t.ui=n,typeof n.productCount=="number"&&(t.products={count:n.productCount,skus:n.productSkus||[]}),e.uiSurfaces.push(n.rootType),e.current=`UI: ${n.rootType}`,R(e,r,"UI",n.rootType||"ui","done"))}function Ds(e,t){const r=t.event||{},n=k(r.type||"trace"),o=k(r.stepName||r.stepKind||"");e.sessionId=k(r.sessionId||e.sessionId),e.current=o?`${n}: ${o}`:n,R(e,t,"Trace",[n,o].filter(Boolean).join(" / ")||"trace",ec(n))}function zs(e,t){const r=t.params||{};Ue(e,Ae(r,"be.params")),r.panel_state&&(e.panel=qe(r.panel_state)),r.structured_context&&(e.panel=gn(e.panel,qe(r.structured_context)));const n=Fe({searchParams:r.search_params,flowParams:r.flow_params});n&&(e.route=n)}function Gs(e,t){if(!t||typeof t!="object")return;t.intent&&(e.intent=Lt(t.intent));const r=Fe({searchParams:t.search_params,flowParams:t.flow_params});r&&(e.route=r)}function Ue(e,t){!t||typeof t!="object"||(t.panel&&(e.panel=gn(e.panel,t.panel)),t.threadExtensions&&(e.threadExtensions={...e.threadExtensions,...t.threadExtensions}),t.pageProduct&&(e.pageProduct=t.pageProduct),t.products&&(e.products=t.products),t.ui&&(e.ui=t.ui),t.intent&&(e.intent=t.intent),t.route&&(e.route=t.route))}function gn(e,t){return e?t?I({...e,...t}):e:t||null}function R(e,t,r,n,o="done"){e.timeline.push(I({id:t.id,at:t.at,label:r,detail:k(n,Rt),status:o==="info"?"done":o,kind:t.kind}))}function Lt(e){return!e||typeof e!="object"?null:I({kind:k(e.kind||e.intent||e.type),target:k(e.target),confidence:typeof e.confidence=="number"?Math.round(e.confidence*100)/100:void 0})}function Fe({searchParams:e,flowParams:t}={}){const r=I({search:Vs(e),flow:Ks(t)});return Object.keys(r).length?r:null}function Vs(e){return!e||typeof e!="object"?null:I({query:k(e.query||e.search_query),category:k(e.category||e.category_name||e.categoryName),categoryId:k(e.categoryId||e.category_id),limit:Bt(e.limit),facets:Array.isArray(e.facets)?e.facets.length:void 0})}function Ks(e){return!e||typeof e!="object"?null:I({target:k(e.target),sku:k(e.sku||e.product_sku),skus:de(e.skus||e.sku_list),action:k(e.action||e.action_type)})}function Hs(e){if(!e||typeof e!="object")return{};const t={};for(const[r,n]of Object.entries(e))n!=null&&(t[r]=n&&typeof n=="object"?I({keys:Object.keys(n).slice(0,8),summary:k(n.summary||n.occasion||n.target_date_iso||n.type)}):k(n));return t}function Ws(e){return!e||typeof e!="object"?null:I({query:k(e.query),source:k(e.source),category:k(e.category||e.category_name),count:Bt(e.count)})}function le(e){if(!Array.isArray(e))return null;const t=e.filter(Boolean);return I({count:t.length,skus:de(t.map(r=>r?.sku||r?.code||r?.id)),names:de(t.map(r=>r?.name||r?.title),4)})}function Js(e,t,r){if(t.type==="ProductDetailsPanel")return le([r.product||r.item].filter(Boolean));if(t.type==="ProductGrid"){const n=Zs(r.products,r.items,r.cards);return le(n||Ys(e,t))}return le(r.products||r.items||r.cards)}function Zs(...e){return e.find(t=>Array.isArray(t))||null}function Ys(e,t){const r=e.elements||{};return(Array.isArray(t.children)?t.children:[]).map(n=>r[n]).filter(n=>n?.type==="ProductCard").map(n=>n.props?.product||n.props?.item||n.props).filter(Boolean)}function Qs(e){return!e||typeof e!="object"?null:I({sku:k(e.sku||e.code||e.id),name:k(e.name||e.title),category:k(e.category),url:k(e.url)})}function Xs(e){const t=e.elements||{};return t[e.root||"root"]||t.root||e.rootElement||null}function de(e,t=Ns){if(!Array.isArray(e))return;const r=e.map(n=>k(n)).filter(Boolean);return r.length?r.slice(0,t):void 0}function Ot(e){return[...new Set(e.map(t=>k(t)).filter(Boolean))]}function Bt(e){return Number.isFinite(Number(e))?Number(e):void 0}function ec(e){return/error$/u.test(e)?"error":/start$/u.test(e)?"running":"done"}function k(e,t=Rt){const r=String(e??"").replace(/\s+/gu," ").trim();return r.length>t?`${r.slice(0,t-1)}...`:r}function I(e){return Object.fromEntries(Object.entries(e||{}).filter(([,t])=>t==null||t===""?!1:Array.isArray(t)?t.length>0:typeof t=="object"?Object.keys(t).length>0:!0))}function yn(e,t){if(!e||typeof e!="object"||!t)return e;const r={...e};for(const[n,o]of Object.entries(e))typeof o!="function"||o.__gengageActivityWrapped||(r[n]=async function(a,...s){t.record({kind:"tool/start",tool:n,params:a});try{const c=await o.call(this,a,...s);return t.record({kind:"tool/done",tool:n,params:a,result:lc(c),state:Ae(c,`tool:${n}`)}),c}catch(c){throw t.record({kind:"tool/error",tool:n,params:a,error:fe(c)}),c}},Object.defineProperty(r[n],"__gengageActivityWrapped",{value:!0}));return r}function hn(e,t){return t?r=>(t.record({kind:"beacon",payload:r}),e?.(r)):e}function bn(e,t){if(!t)return!1;const r=window.GengageAssistantInjector?.[e],n=r?.streamTransport;if(typeof n!="function"||n.__gengageActivityWrapped)return!1;const o=function(a,s,c,u){t.record({kind:"flow/request",request:a});try{const l=n.call(this,a,tc(s,t),c,u);return l&&typeof l.then=="function"?l.catch(f=>{throw t.record({kind:"flow/rejected",requestType:a?.type,error:fe(f)}),f}):l}catch(l){throw t.record({kind:"flow/thrown",requestType:a?.type,error:fe(l)}),l}};return Object.defineProperty(o,"__gengageActivityWrapped",{value:!0}),r.streamTransport=o,t.record({kind:"runtime/transport-wrapped",title:"streamTransport wrapped"}),!0}function wn({accountId:e,collector:t,promptBaseUrl:r}={}){if(!t||window.__GENGAGE_ACTIVITY_FETCH_PATCHED__)return;window.__GENGAGE_ACTIVITY_FETCH_PATCHED__=!0;const n=window.fetch?.bind(window);typeof n=="function"&&(window.fetch=async(o,i)=>{const a=ac(o,i),s=cc(a.url);let c="";s&&(c=a.body?.op_name||a.body?.op||"unknown",t.record({kind:"be/request",source:"main-thread-fetch",url:a.url,op:c,opDomain:a.body?.op_domain||"",prompt:await rc({accountId:e,opName:c,promptBaseUrl:r}),params:a.body?.op_payload||{},rawBody:a.body}));const u=await n(o,i);return s&&u.clone().text().then(l=>{const f=uc(l);t.record({kind:"be/response",source:"main-thread-fetch",url:a.url,status:u.status,op:c,result:f,rawText:l}),kn(t,f)}).catch(l=>{t.record({kind:"be/response",source:"main-thread-fetch",url:a.url,status:u.status,op:c,error:fe(l)})}),u})}function tc(e,t){if(!e||e.__gengageActivityWrapped)return e;const r={...e};Object.defineProperty(r,"__gengageActivityWrapped",{value:!0});for(const n of["onAction","onMetadata","onUISpec","onTextChunk","onError","onDone"])typeof e[n]=="function"&&(r[n]=(...o)=>(n==="onAction"?t.record({kind:"flow/action",event:o[0]}):n==="onMetadata"?t.record({kind:"flow/metadata",event:o[0]}):n==="onUISpec"?t.record({kind:"flow/ui",widget:o[1],panelHint:o[2],clearPanel:o[3]===!0,spec:o[0]}):n==="onTextChunk"&&o[1]===!0?t.record({kind:"flow/text-final",content:o[0],extra:o[2]}):n==="onError"?t.record({kind:"flow/error",error:fe(o[0])}):n==="onDone"&&t.record({kind:"flow/done"}),e[n](...o)));return r}function Mt(e,t){!e||!t||(e.record(t),t.kind==="be/response"&&kn(e,t.result))}async function rc({accountId:e,opName:t,promptBaseUrl:r}){if(!e||!t)return null;const n=nc({accountId:e,baseId:String(e).replace(/-agentic$/u,""),promptBaseUrl:r});if(!n)return{error:"Configure agenticActivityPromptBaseUrl to inspect prompt source in this build."};try{const o=new URL(`${t}.yaml`,n).href,i=await fetch(o,{cache:"no-store"});return i.ok?{url:o,yaml:await i.text()}:{url:o,error:`HTTP ${i.status}`}}catch(o){return{error:fe(o)}}}function nc({accountId:e,baseId:t,promptBaseUrl:r}){if(typeof r=="string"&&r.trim())return r;const n=oc(e,t);return n||ic(t)}function oc(e,t){const r=window.__GENGAGE_AGENTIC_PROMPT_BASE_URL__;if(typeof r=="string"&&r.trim())return r;if(r&&typeof r=="object"){const o=r[e]||r[t];if(typeof o=="string"&&o.trim())return o}const n=(window.GengageInjectorConfig?.[e]||window.GengageInjectorConfig?.[t])?.agenticActivityPromptBaseUrl;return typeof n=="string"&&n.trim()?n:null}function ic(e){const t=Array.from(document.scripts||[]);for(const r of t){const n=r?.src||"";if(n.includes("/agentic/index.js"))return new URL(`../prompts/${e}/`,n).href;if(n.includes("/agentic.iife.js"))return new URL(`prompts/${e}/`,n).href}return null}function kn(e,t){const r=t?.intent;r&&e.record({kind:"intent/selected",intent:r,searchParams:t?.search_params,flowParams:t?.flow_params})}function ac(e,t){const r=typeof e=="string"?e:e?.url||"",n=t?.body||(typeof e!="string"?e?.body:null);return{url:String(r||""),body:sc(n)}}function sc(e){if(!e||typeof e!="string")return{};try{return JSON.parse(e)}catch{return{raw:e}}}function cc(e){try{const t=new URL(e,window.location.href);return t.pathname==="/v1/execute"&&/agentic\.gengage\.ai$/u.test(t.hostname)}catch{return!1}}function uc(e){const t={};for(const r of String(e||"").split(/\r?\n/u)){const n=r.trim();if(n)try{Object.assign(t,JSON.parse(n))}catch{t._raw=[t._raw,n].filter(Boolean).join(`
8
- `)}}return t}function lc(e){if(Array.isArray(e))return{type:"array",length:e.length,preview:e.slice(0,5)};if(!e||typeof e!="object")return e;const t={};for(const[r,n]of Object.entries(e))Array.isArray(n)?t[r]={type:"array",length:n.length,preview:n.slice(0,5)}:n&&typeof n=="object"?t[r]={type:"object",keys:Object.keys(n).slice(0,20)}:t[r]=n;return t}function fe(e){return e?.message||String(e)}var Sn="gengage-agentic-activity-overlay",xe="all",Nt="all",_n=["Flow","Tools","Backend","Intent","Telemetry","Runtime"],vn=["info","warn","error"];function An(e){if(!e||typeof e.subscribe!="function")return null;const t=document.getElementById(Sn);if(t?.shadowRoot)return t;const r=document.createElement("div");r.id=Sn,r.style.cssText="position:fixed;left:10px;top:10px;z-index:2147483647;";const n=r.attachShadow({mode:"open"});n.innerHTML=Lc(e.accountId),document.documentElement.appendChild(r);const o={entries:[],section:xe,severity:Nt,search:"",grouped:!0,follow:!0,stateVisible:!0,verbose:!1},i={stateView:n.querySelector('[data-role="state-view"]'),list:n.querySelector('[data-role="list"]'),count:n.querySelector('[data-role="count"]'),visibleCount:n.querySelector('[data-role="visible-count"]'),panel:n.querySelector('[data-role="panel"]'),search:n.querySelector('[data-role="search"]'),sections:n.querySelector('[data-role="section-filters"]'),severities:n.querySelector('[data-role="severity-filters"]'),groupToggle:n.querySelector('[data-action="group"]'),followToggle:n.querySelector('[data-action="follow"]'),stateToggle:n.querySelector('[data-action="state"]'),verboseToggle:n.querySelector('[data-action="verbose"]')};dc(r,i.list);const a=()=>pc(i,o);return n.querySelector('[data-action="clear"]')?.addEventListener("click",()=>e.clear()),n.querySelector('[data-action="toggle"]')?.addEventListener("click",s=>{i.panel.classList.toggle("is-minimized"),s.currentTarget.textContent=i.panel.classList.contains("is-minimized")?"Open":"Min"}),i.search?.addEventListener("input",()=>{o.search=i.search.value||"",a()}),i.sections?.addEventListener("click",s=>{const c=s.target?.closest?.("[data-section-filter]")?.dataset?.sectionFilter;c&&(o.section=c,a())}),i.severities?.addEventListener("click",s=>{const c=s.target?.closest?.("[data-severity-filter]")?.dataset?.severityFilter;c&&(o.severity=c,a())}),i.groupToggle?.addEventListener("click",()=>{o.grouped=!o.grouped,i.groupToggle.setAttribute("aria-pressed",String(o.grouped)),i.groupToggle.textContent=o.grouped?"Grouped":"Flat",a()}),i.followToggle?.addEventListener("click",()=>{o.follow=!o.follow,i.followToggle.setAttribute("aria-pressed",String(o.follow)),i.followToggle.textContent=o.follow?"Follow":"Paused"}),i.stateToggle?.addEventListener("click",()=>{o.stateVisible=!o.stateVisible,i.stateToggle.setAttribute("aria-pressed",String(o.stateVisible)),i.stateToggle.textContent=o.stateVisible?"State":"State off",a()}),i.verboseToggle?.addEventListener("click",()=>{o.verbose=!o.verbose,i.verboseToggle.setAttribute("aria-pressed",String(o.verbose)),i.verboseToggle.textContent=o.verbose?"Verbose":"Concise",a()}),n.querySelector('[data-action="expand-all"]')?.addEventListener("click",()=>{i.list?.querySelectorAll("details").forEach(s=>{s.open=!0})}),n.querySelector('[data-action="collapse-all"]')?.addEventListener("click",()=>{i.list?.querySelectorAll("details").forEach(s=>{s.open=!1})}),i.list?.addEventListener("click",s=>{const c=s.target?.closest?.('[data-action="copy-json"]');if(!c)return;const u=Number(c.dataset.entryId||0);jc(o.entries.find(l=>l.id===u),c)}),e.subscribe((s,c)=>{o.entries=c.slice(),a()}),r}function dc(e,t){e.addEventListener("wheel",r=>{const n=fc(r.composedPath?.()||[],t);n&&(n.scrollTop+=r.deltaY,n.scrollLeft+=r.deltaX,r.preventDefault(),r.stopPropagation())},{passive:!1,capture:!0})}function fc(e,t){for(const r of e)if(!(!r||r.nodeType!==1)&&xn(r))return r;return xn(t)?t:null}function xn(e){return!!(e&&(e.scrollHeight>e.clientHeight+1||e.scrollWidth>e.clientWidth+1)&&getComputedStyle(e).overflow!=="hidden")}function pc(e,t){const r=En(t.entries,t),n=r.slice(-260);Tn(e.sections,t.entries,t.section,"section"),Tn(e.severities,t.entries,t.severity,"severity"),e.count&&(e.count.textContent=String(t.entries.length)),e.visibleCount&&(e.visibleCount.textContent=String(r.length)),hc(e.stateView,mn(t.entries),t.stateVisible),yc(e.list,n,t)}function En(e,t={}){const r=t.section||xe,n=t.severity||Nt,o=In(t.search),i=t.verbose===!0;return(Array.isArray(e)?e:[]).filter(a=>!i&&a.noise===!0||r!==xe&&a.section!==r||n!==Nt&&a.severity!==n?!1:o?Ic(a).includes(o):!0)}function Tn(e,t,r,n){if(!e)return;e.textContent="";const o=n==="section"?mc(t):gc(t),i=document.createElement("button");i.type="button",i.dataset[`${n}Filter`]=xe,i.className=r===xe?"chip is-active":"chip",i.textContent=`All ${t.length}`,e.appendChild(i);for(const a of o){const s=t.filter(u=>u[n]===a).length,c=document.createElement("button");c.type="button",c.dataset[`${n}Filter`]=a,c.className=r===a?`chip is-active ${n}-${pe(a)}`:`chip ${n}-${pe(a)}`,c.textContent=`${Bn(a)} ${s}`,e.appendChild(c)}}function mc(e){const t=new Set(e.map(r=>r.section).filter(Boolean));return _n.filter(r=>t.has(r)).concat([...t].filter(r=>!_n.includes(r)).sort())}function gc(e){const t=new Set(e.map(r=>r.severity).filter(Boolean));return vn.filter(r=>t.has(r)).concat([...t].filter(r=>!vn.includes(r)).sort())}function yc(e,t,r){if(!e)return;if(e.textContent="",!t.length){const o=document.createElement("div");o.className="empty",o.textContent=r.entries.length?"No activity matches the current filters.":"Waiting for agentic activity...",e.appendChild(o);return}const n=document.createDocumentFragment();if(r.grouped)for(const o of Cc(t))n.appendChild(Pc(o));else for(const o of t)n.appendChild(Pn(o));e.appendChild(n),r.follow&&requestAnimationFrame(()=>e.scrollTop=e.scrollHeight)}function hc(e,t,r){if(!e||(e.textContent="",e.classList.toggle("is-hidden",!r),!r))return;const{flow:n,context:o}=t,i=document.createDocumentFragment();i.appendChild(bc(n)),i.appendChild(wc(o)),i.appendChild(kc(n.timeline)),e.appendChild(i)}function bc(e){const t=document.createElement("section");return t.className=`viz-card flow-card status-${pe(e.status)}`,t.appendChild($t("Flow State",e.status)),Cn(t,[["Current",e.current],["Session",e.sessionId],["Request",[e.requestType,e.actionType].filter(Boolean).join(" / ")],["Model",e.model],["Tools",e.tools?.join(", ")],["BE ops",e.beOps?.join(", ")],["UI",e.uiSurfaces?.join(", ")],["Health",Sc(e)]]),t}function wc(e){const t=document.createElement("section");return t.className="viz-card context-card",t.appendChild($t("Context State",e.panel?.screenType||e.ui?.rootType||"empty")),Cn(t,[["Intent",_c(e.intent)],["Route",vc(e.route)],["Screen",Ac(e)],["Last search",xc(e.panel?.lastSearch)],["Products",Ec(e.panel,e.products)],["Page product",Tc(e.pageProduct)],["Extensions",Object.keys(e.threadExtensions||{}).join(", ")],["Last text",e.lastText]]),t}function kc(e){const t=document.createElement("section");t.className="viz-card timeline-card",t.appendChild($t("Flow Timeline",`${e.length} steps`));const r=document.createElement("ol");if(r.className="timeline",e.length)for(const n of e){const o=document.createElement("li");o.className=`timeline-step step-${pe(n.status||"done")}`;const i=document.createElement("span");i.className="timeline-time",i.textContent=On(n.at);const a=document.createElement("span");a.className="timeline-label",a.textContent=n.label||n.kind||"Step";const s=document.createElement("span");s.className="timeline-detail",s.textContent=n.detail||n.kind||"",o.append(i,a,s),r.appendChild(o)}else{const n=document.createElement("li");n.className="timeline-empty",n.textContent="No flow events yet.",r.appendChild(n)}return t.appendChild(r),t}function $t(e,t){const r=document.createElement("div");r.className="viz-title";const n=document.createElement("span");n.textContent=e;const o=document.createElement("span");return o.className="viz-badge",o.textContent=t||"idle",r.append(n,o),r}function Cn(e,t){for(const[r,n]of t){if(n==null||n==="")continue;const o=document.createElement("div");o.className="viz-row";const i=document.createElement("span");i.className="viz-key",i.textContent=r;const a=document.createElement("span");a.className="viz-value",a.textContent=String(n),o.append(i,a),e.appendChild(o)}}function Sc(e){return!e.errors&&!e.warnings?"clean":`${e.errors||0} errors, ${e.warnings||0} warnings`}function _c(e){return e?[e.kind,e.target,e.confidence!=null?`conf ${e.confidence}`:""].filter(Boolean).join(" / "):""}function vc(e){return e?[e.search?[e.search.query,e.search.category,e.search.categoryId,e.search.facets?`${e.search.facets} facets`:""].filter(Boolean).join(" / "):"",e.flow?[e.flow.target,e.flow.sku,e.flow.skus?.join(", "),e.flow.action].filter(Boolean).join(" / "):""].filter(Boolean).join(" -> "):""}function Ac(e){const t=e.panel||{},r=e.ui||{};return[t.screenType,r.rootType,r.widget,r.panelHint].filter(Boolean).join(" / ")}function xc(e){return e?[e.query,e.source,e.category,e.count!=null?`${e.count} results`:""].filter(Boolean).join(" / "):""}function Ec(e,t){const r=e?.productSkus||e?.screenSkus||t?.skus||[],n=e?.productCount??t?.count;return n==null&&!r.length?"":[`${n??r.length} products`,r.join(", ")].filter(Boolean).join(" / ")}function Tc(e){return e?[e.sku,e.name,e.category].filter(Boolean).join(" / "):""}function Cc(e){const t=new Map;for(const r of e){const n=`${r.section||"Runtime"}:${r.group||r.kind}`,o=t.get(n)||{key:n,section:r.section||"Runtime",severity:r.severity||"info",title:r.group||r.kind,entries:[]};o.entries.push(r),o.severity=Rc(o.severity,r.severity),t.set(n,o)}return[...t.values()]}function Pc(e){const t=document.createElement("section");t.className=`group group-${pe(e.severity)}`,t.dataset.section=e.section;const r=document.createElement("div");r.className="group-head";const n=document.createElement("span");n.className="section",n.textContent=e.section;const o=document.createElement("span");o.className="group-title",o.textContent=e.title;const i=document.createElement("span");i.className="group-count",i.textContent=String(e.entries.length),r.append(n,o,i),t.appendChild(r);for(const a of e.entries)t.appendChild(Pn(a));return t}function Pn(e){const t=document.createElement("details");t.dataset.entryId=String(e.id||""),t.dataset.section=e.section||"Runtime",t.dataset.severity=e.severity||"info",t.className=`entry entry-${pe(e.severity||"info")}`,t.open=e.severity==="error";const r=document.createElement("summary"),n=document.createElement("span");n.className="time",n.textContent=On(e.at);const o=document.createElement("span");o.className="section",o.textContent=e.section||"Runtime";const i=document.createElement("span");i.className="severity",i.textContent=Bn(e.severity||"info");const a=document.createElement("span");a.className="title",a.textContent=Ln(e),r.append(n,o,i,a);const s=document.createElement("div");s.className="entry-body";const c=document.createElement("div");c.className="entry-toolbar";const u=document.createElement("span");u.className="kind",u.textContent=e.kind;const l=document.createElement("span");l.className="kind",l.textContent=e.group||"";const f=document.createElement("button");f.type="button",f.dataset.action="copy-json",f.dataset.entryId=String(e.id||""),f.textContent="Copy JSON",c.append(u,l,f);const g=document.createElement("pre"),p=document.createElement("code");return p.innerHTML=jn(e),g.appendChild(p),s.append(c,g),t.append(r,s),t}function jn(e){const t=qt(e),r=/("(?:\\u[\da-fA-F]{4}|\\[^u]|[^\\"])*"(?:\s*:)?|\btrue\b|\bfalse\b|\bnull\b|-?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?)/gu;let n="",o=0;for(const i of t.matchAll(r)){const a=i[0];n+=De(t.slice(o,i.index));let s="json-number";a.startsWith('"')?s=a.endsWith(":")?"json-key":"json-string":a==="true"||a==="false"?s="json-boolean":a==="null"&&(s="json-null"),n+=`<span class="${s}">${De(a)}</span>`,o=i.index+a.length}return n+De(t.slice(o))}function jc(e,t){if(!e)return;const r=qt(e),n=()=>{const o=t.textContent;t.textContent="Copied",setTimeout(()=>{t.textContent=o},900)};if(navigator.clipboard?.writeText){navigator.clipboard.writeText(r).then(n).catch(()=>Rn(r,n));return}Rn(r,n)}function Rn(e,t){const r=document.createElement("textarea");r.value=e,r.style.cssText="position:fixed;left:-9999px;top:-9999px;",document.body.appendChild(r),r.select();try{document.execCommand("copy"),t()}finally{r.remove()}}function Rc(e,t){const r={info:0,warn:1,error:2};return(r[t]||0)>(r[e]||0)?t:e}function Ic(e){return In([e.kind,e.section,e.severity,e.group,Ln(e),e.tool,e.op,e.request?.type,e.request?.action?.type,e.event?.name,e.event?.action,e.event?.type,qt(e)].join(" "))}function In(e){return String(e||"").toLocaleLowerCase("tr-TR").trim()}function Ln(e){if(e.kind==="flow/request")return e.request?.type||e.request?.action?.type||"request";if(e.kind==="flow/action")return e.event?.name||e.event?.action||e.event?.type||"action";if(e.kind==="flow/metadata")return e.event?.name||e.event?.phase||e.event?.type||"metadata";if(e.kind==="flow/ui")return e.widget||e.panelHint||"ui";if(e.kind==="flow/text-final")return Oc(e.content||"final text",90);if(e.kind==="be/request")return e.op||"BE request";if(e.kind==="be/response"){const t=e.result?.intent?.kind||e.result?.intent_kind||e.result?.kind;return t?`intent selected: ${t}`:e.op||"BE response"}return e.kind==="intent/selected"?e.intent?.kind||e.kind:e.kind.startsWith("tool/")?e.tool||"tool":e.kind==="beacon"?e.payload?.type||"beacon":e.title||e.kind}function Lc(e){return`
7
+ `,{...t,headers:{"content-type":"application/x-ndjson",...t.headers||{}}})}function ws(e,t={}){return new Response(JSON.stringify(e),{...t,headers:{"content-type":"application/json",...t.headers||{}}})}var ve=new Set(["and","are","for","from","the","with"]),ks={token:.26,keyword:.22,category:.18,facet:.16,color:.08,attribute:.06,price:.08,retrieval:.08},_s=["amber","beige","black","blue","blush","bronze","brown","cream","gold","green","grey","ivory","lilac","mixed","orange","pastel","pink","purple","red","silver","white","yellow"];function H(e,t){return String(e??"").toLocaleLowerCase(t||void 0).normalize("NFKD").replace(new RegExp("\\p{Diacritic}","gu"),"").replace(/[^\p{L}\p{N}]+/gu," ").replace(/\s+/gu," ").trim()}function $(e,t=ve,r){const n=t instanceof Set?t:new Set([...ve,...t]),o=new Set,i=[];for(const a of H(e,r).split(/\s+/u))a.length<3||n.has(a)||o.has(a)||(o.add(a),i.push(a));return i}function ue(e,t={}){if(Es(e))return e;const r=t.similarityMapper?.(e);if(r)return r;const n=t.facetKeys,o=j(e.category_names??e.category),i=j(e.category_ids),a=Cs(e.facet_hits),s=Object.entries(a).filter(([y])=>!n||n.some(b=>H(b,t.locale)===H(y,t.locale))).map(([,y])=>y),c=F(e.name,e.title),u=F(e.brand),l=t.sourceKeywords??[],f=[c,u,...o,...s,...j(e.promotions),F(e.description),...l].join(" "),m=$(f,t.stopWords,t.locale),p=F(t.sourceProductType,js(o,c,m,t.locale),m[0]),g=V([...Rs(f,_s,t.locale),...Object.entries(a).filter(([y])=>/colou?r/iu.test(y)).flatMap(([,y])=>$(y,t.stopWords,t.locale))],t.locale),h=V([...s.flatMap(y=>$(y,t.stopWords,t.locale)),...j(e.promotions).flatMap(y=>$(y,t.stopWords,t.locale))],t.locale).slice(0,24);return{sku:F(e.sku),title:c,brand:u,productType:p,categoryNames:o,categoryIds:i,facets:a,keywords:V([...l.flatMap(y=>$(y,t.stopWords,t.locale)),...m],t.locale).slice(0,12),tokens:m,colors:g,attributes:h,price:Ps(e)}}function Ss(e,t={}){const r=F(e.product_type,e.productType),n=F(e.title,r,j(e.keywords).join(" ")),o=V([...j(e.keywords),...j(e.colors),...j(e.materials),...j(e.styles),...j(e.attributes)]);return ue({sku:"__photo__",name:n,category_names:r?[r]:[],facet_hits:{colors:j(e.colors).join(", "),materials:j(e.materials).join(", "),styles:j(e.styles).join(", "),attributes:j(e.attributes).join(", ")},promotions:o},{...t,sourceProductType:r,sourceKeywords:o})}function vs(e,t={}){const r=ue(e,t);return V([...t.sourceQueries??[],Ue([r.productType,...r.colors.slice(0,1),...r.attributes.slice(0,2)]),Ue([r.productType,...r.keywords.slice(0,3)]),Ue([r.categoryNames[r.categoryNames.length-1],...r.keywords.slice(0,2)]),Ue(r.title.split(/\s+/u).slice(0,6)),r.productType].map(n=>n.trim()).filter(Boolean)).slice(0,t.queryLimit??6)}function Lt(e,t,r={}){const n={...ks,...r.weights},o=ue(t,r),i=[],a=le(e.tokens,o.tokens,r.locale),s=le(e.keywords,o.tokens,r.locale),c=Is(e.categoryNames,o.categoryNames,r.locale)||le(fn(e.categoryNames,r.locale),fn(o.categoryNames,r.locale),r.locale),u=le(e.attributes,o.attributes,r.locale),l=le(e.colors,o.colors,r.locale),f=le(e.attributes,o.tokens,r.locale),m=Ls(e.price,o.price),p=Os(o.sku,r.hitCounts)>0?1:0,g=Bs(e,o),h=a*n.token+s*n.keyword+c*n.category+u*n.facet+l*n.color+f*n.attribute+m*n.price+p*n.retrieval,y=Ms(g?h:h*.35);return g&&e.productType&&e.productType===o.productType&&i.push("same product type"),c>.4&&i.push("similar category"),u>.2&&i.push("matching product attributes"),l>0&&i.push("matching colour"),m>.8&&i.push("similar price"),g||i.push("weaker product-type match"),{score:Number(y.toFixed(4)),reasons:i}}function As(e,t,r={}){const n=ue(e,r),o=new Set([n.sku,...r.ignoreSkus??[]].filter(Boolean));return ln(t.filter(i=>{const a=F(i.sku);return a&&!o.has(a)}),r.maxCandidates).map(i=>{const a=Lt(n,i,r);return{...i,similarity_score:a.score,similarity_reasons:a.reasons}}).sort((i,a)=>a.similarity_score-i.similarity_score).slice(0,Math.max(1,Math.min(r.limit??12,100)))}async function Ts(e,t,r={}){const n=ue(e,r),o=new Set([n.sku,...r.ignoreSkus??[]].filter(Boolean)),i=ln(t.filter(c=>{const u=F(c.sku);return u&&!o.has(u)}),r.maxCandidates),a=Math.max(1,Math.floor(r.batchSize??50)),s=[];for(let c=0;c<i.length;c+=1){dn(r.signal);const u=i[c],l=Lt(n,u,r);s.push({...u,similarity_score:l.score,similarity_reasons:l.reasons}),(c+1)%a===0&&await xs(r.yield)}return dn(r.signal),s.sort((c,u)=>u.similarity_score-c.similarity_score).slice(0,Math.max(1,Math.min(r.limit??12,100)))}function ln(e,t){if(t===void 0)return e;const r=Math.floor(Number(t));return Number.isFinite(r)&&r>0?e.slice(0,r):e}async function xs(e){if(e){await e();return}await new Promise(t=>{const r=globalThis;if(typeof r.scheduler?.yield=="function"){r.scheduler.yield().then(t,t);return}if(typeof setTimeout=="function"){setTimeout(t,0);return}t()})}function dn(e){if(e?.aborted)throw new DOMException("Similarity ranking aborted.","AbortError")}function Es(e){return!!(e&&typeof e=="object"&&Array.isArray(e.tokens))}function F(...e){for(const t of e)if(typeof t=="string"&&t.trim())return t.trim();return""}function j(e){return Array.isArray(e)?e.map(t=>F(t)).filter(Boolean):typeof e=="string"&&e.trim()?e.split(/[,;/|]+/u).map(t=>t.trim()).filter(Boolean):[]}function Cs(e){return!e||typeof e!="object"||Array.isArray(e)?{}:Object.fromEntries(Object.entries(e).map(([t,r])=>[t,F(r)]).filter(([,t])=>t))}function Ps(e){const t=Number(e.price_discounted);if(Number.isFinite(t)&&t>0)return t;const r=Number(e.price);return Number.isFinite(r)&&r>0?r:0}function V(e,t){const r=new Set,n=[];for(const o of e){const i=H(o,t);!i||r.has(i)||(r.add(i),n.push(i))}return n}function Rs(e,t,r){const n=` ${H(e,r)} `;return t.filter(o=>n.includes(` ${H(o,r)} `))}function js(e,t,r,n){const o=H(e[e.length-1]??e[0]??"",n);if(o){const i=$(o,ve,n),a=new Set($(t,ve,n));return i.find(s=>a.has(s))??i[0]??o}return r[0]??""}function Ue(e){return e.map(t=>H(t)).filter(Boolean).join(" ").replace(/\s+/gu," ").trim().slice(0,120)}function fn(e,t){return e.flatMap(r=>$(r,ve,t))}function le(e,t,r){const n=V(e,r),o=new Set(V(t,r));return n.length===0||o.size===0?0:n.filter(i=>o.has(i)).length/n.length}function Is(e,t,r){const n=V(e,r),o=new Set(V(t,r));return n.length===0||o.size===0?0:n.filter(i=>o.has(i)).length/n.length}function Ls(e,t){return e<=0||t<=0?0:Math.min(e,t)/Math.max(e,t)}function Os(e,t){return!e||!t?0:typeof t.get=="function"?t.get(e)??0:t[e]??0}function Bs(e,t){if(!e.productType||!t.productType||e.productType===t.productType)return!0;const r=new Set($(e.productType)),n=new Set([...$(t.productType),...t.tokens]);return[...r].some(o=>n.has(o))}function Ms(e){return Math.max(0,Math.min(1,e))}function Ns(e){const t=(e?.chat||e?._chat)?.root||e?._chat?.root;return t?t.getRootNode?.()?.host||t:Array.from(document.querySelectorAll("*")).find(r=>r.shadowRoot?.querySelector?.(".gengage-chat-root, .gengage-chat-launcher-container"))}function $s(e,t){const r=Ns(e);r?.style&&(t?r.style.removeProperty("display"):r.style.setProperty("display","none","important")),t||(e?.chat||e?._chat)?.close?.()}var Fs="nd_be_url";function qs(e,t){const r=Us()||e.beUrl||t;if(!r)throw new Error("resolveBeUrl: backend URL is required. The injector must supply a fallback URL; the SDK has no default.");return r}function Us(){try{const e=new URLSearchParams(window.location.search).get(Fs)?.trim();if(!e)return null;const t=new URL(e);return t.protocol!=="https:"&&t.protocol!=="http:"?null:t.toString().replace(/\/+$/u,"")}catch{return null}}function pn(e){const t=e?.payload;if(typeof t=="string")return t;if(t&&typeof t=="object"&&"text"in t){const n=t.text;if(typeof n=="string")return n}const r=e?.action;return r&&typeof r.payload=="string"?r.payload:r&&typeof r.title=="string"?r.title:""}var Ot=[{pattern:/\bhttps?:\/\/[^\s?#]+(?:\?[^\s#]*)?/giu,replacement:Ds},{pattern:/\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}\b/giu,replacement:"[email]"},{pattern:/\b(?:\+?\d[\d\s().-]{7,}\d)\b/gu,replacement:"[phone]"},{pattern:/\b(?:token|secret|csrf|cookie|bearer|session|sid|cart(?:[_-]?id)?)\s*[:=]\s*[^\s,;&]+/giu,replacement:"[secret]"},{pattern:/\b(?:order|cart|session)[_-]?(?:id|no|number)?\s*[:#=]?\s*[A-Z0-9-]{6,}\b/giu,replacement:"[secret]"}],Bt={patterns:Ot};function Mt(e,t=Bt){let r=typeof e=="string"?e:e==null?"":String(e);for(const n of t.patterns||[]){const o=n.replacement;r=typeof o=="function"?r.replace(n.pattern,i=>o(i)):r.replace(n.pattern,o)}return r}function mn(e,t=Bt){return Mt(pn(e),t)}function Ds(e){try{const t=new URL(e);return`${t.origin}${t.pathname}${t.search?"?[query]":""}`}catch{return"[url]"}}var zs=["assistantName","homeDomain","categories","policyTopics"],Gs={intent:["searchContract","competitorBrands"]};function Hs(e,t,r,n={}){const o=gn(t,r,n);return Object.keys(o).length?{...e,account_config:o}:e}function gn(e,t,r={}){if(!e)return{};const n={},o=r.baseKeys||zs;for(const s of o)yn(n,e,s);const i=e[t];i&&typeof i=="object"&&!Array.isArray(i)&&Object.assign(n,Vs(i));const a=r.opAllowlist||Gs;for(const s of a[t]||[])yn(n,e,s);return n}function yn(e,t,r){t[r]!==void 0&&(e[r]=t[r])}function Vs(e){return Object.fromEntries(Object.entries(e).filter(([,t])=>t!==void 0))}var Ks=["addToCart","search","searchKeyword","facetedSearch","searchGiftOptions","similaritySearch"];function Ws(e,t,r={}){const n=window,o=n.gengage||(n.gengage={}),i=o.tools||(o.tools={});i[e]=t;for(const a of r.accountAliases||[])i[a]=t;if(r.exposeStandardAliases!==!1)for(const a of r.standardAliases||Ks){const s=t[a];typeof s=="function"&&(i[a]=i[a]||s)}return t}function Js({getPageType:e,getProduct:t}){return()=>({url:window.location.href,title:document.title,pageType:e(),product:t()})}function Zs({accountId:e,getPageType:t,getProduct:r,getToolNames:n,getSearchCapabilities:o,getMemory:i}){return async()=>({accountId:e,url:window.location.href,pageType:t(),productSku:r()?.sku??null,toolNames:n(),...o?{searchCapabilities:o()}:{},...i?{memoryPolicy:i().policy}:{},timestamp:new Date().toISOString()})}function Ys({accountId:e,runtimeFile:t="runtime.js",startExport:r="start",globalBaseUrlKey:n,errorLabel:o,trustedRuntimeOrigins:i}={}){if(!e)throw new Error("accountId is required.");const a=o||e,s=window,c=()=>{const p=s.GengageInjectorConfig||{},g=p[e]||{};return{...p,...g}},u=()=>{const p=c();if(p.runtimeUrl)return p.runtimeUrl;const g=p.assetBaseUrl||p.baseUrl||document.currentScript?.getAttribute("src")||(n?s[n]:null);if(!g)throw new Error(`${a} runtime URL cannot be resolved.`);return new URL(t,g).href},l=p=>{if(i===!0)return p;const g=new URL(p,window.location.href).origin,h=new Set([window.location.origin]),y=c();Ae(h,document.currentScript?.getAttribute("src")),Ae(h,y.assetBaseUrl),Ae(h,y.baseUrl),Ae(h,n?s[n]:void 0);for(const b of i||[])Ae(h,b);if(!h.has(g))throw new Error(`${a} runtime origin ${g} is not trusted.`);return p},f=s.GengageAssistantInjector||(s.GengageAssistantInjector={}),m=f[e]||(f[e]={});return m.loaderPromise||(m.loaderPromise=import(l(u())).then(p=>{const g=p[r];if(typeof g!="function")throw new Error(`${a} runtime export ${r} is unavailable.`);return g()}).catch(p=>{throw delete m.loaderPromise,console.error(`[Gengage][${e}] runtime load failed`,p),p})),m.loaderPromise}function Ae(e,t){if(t)try{const r=new URL(t,window.location.href);e.add(r.origin)}catch{e.add(t)}}var Qs=500,hn="__GENGAGE_AGENTIC_ACTIVITY__";function bn({accountId:e,clock:t=()=>Date.now()}={}){const r=new Set;let n=1;const o={accountId:e,entries:[]};function i(a){const s=kn({id:n++,at:t(),accountId:e,...a});o.entries.push(s),o.entries.length>Qs&&(o.entries=o.entries.slice(-500));for(const c of r)c(s,o.entries);return s}return{accountId:e,get entries(){return o.entries.slice()},clear(){o.entries=[];for(const a of r)a(null,o.entries)},record:i,subscribe(a){return typeof a!="function"?()=>{}:(r.add(a),a(null,o.entries),()=>r.delete(a))}}}function wn(e){const t=window[hn];if(t?.accountId===e&&typeof t.record=="function")return t;const r=bn({accountId:e});return window[hn]=r,r}function kn(e){const t=String(e.kind||e.type||"activity"),r=_n(t),n=e.severity||Sn({...e,kind:t});return{...e,kind:t,section:r,severity:n,group:e.group||vn({...e,kind:t,section:r}),noise:e.noise===!0||n==="info"&&Xs({...e,kind:t})}}function Xs(e){const t=String(e?.kind||"");if(t==="flow/trace"){const r=String(e?.event?.type||"");if(r==="step:start"||r==="step:end")return!0}if(t==="flow/metadata"){const r=String(e?.event?.phase||e?.event?.type||e?.event?.name||"").toLowerCase();if(r==="panelloading"||r==="heartbeat"||r==="tick")return!0}return!!t.startsWith("runtime/")}function _n(e){return e.startsWith("flow/")?"Flow":e.startsWith("intent/")?"Intent":e.startsWith("be/")?"Backend":e.startsWith("tool/")?"Tools":e==="beacon"?"Telemetry":"Runtime"}function Sn(e){const t=String(e?.kind||"");return/\/(?:error|rejected|thrown)$/u.test(t)||e?.error||t==="be/response"&&Number(e?.status)>=400?"error":t==="flow/metadata"&&/fallback|retry|missing|empty/iu.test(String(e?.event?.phase||e?.event?.type||""))||t==="be/response"&&Number(e?.status)>=300?"warn":"info"}function vn(e){const t=String(e?.kind||"");if(t.startsWith("tool/"))return e?.tool?`Tool: ${e.tool}`:"Tools";if(t.startsWith("be/"))return e?.op?`BE: ${e.op}`:"Backend";if(t==="flow/request"){const r=e?.request?.type||e?.request?.action?.type;return r?`Flow: ${r}`:"Flow request"}if(t==="flow/action"){const r=e?.event?.name||e?.event?.action||e?.event?.type;return r?`Action: ${r}`:"Flow action"}return t==="flow/ui"?e?.widget?`UI: ${e.widget}`:"UI":t.startsWith("flow/")?"Flow lifecycle":t.startsWith("intent/")?e?.intent?.kind?`Intent: ${e.intent.kind}`:"Intent":t==="beacon"?e?.payload?.type?`Beacon: ${e.payload.type}`:"Beacon":e?.section||"Runtime"}var ec=8,Nt=120;function An(e=[]){const t=Array.isArray(e)?e:[],r={status:"idle",sessionId:"",requestType:"",actionType:"",model:"",current:"Waiting for activity",errors:0,warnings:0,startedAt:null,lastAt:null,tools:[],beOps:[],uiSurfaces:[],timeline:[]},n={intent:null,route:null,panel:null,threadExtensions:{},pageProduct:null,products:null,ui:null,lastText:""};for(const o of t)tc(r,n,o);return r.tools=qt(r.tools).slice(-8),r.beOps=qt(r.beOps).slice(-8),r.uiSurfaces=qt(r.uiSurfaces).slice(-8),r.timeline=r.timeline.slice(-36),!r.lastAt&&t.length&&(r.lastAt=t.at(-1)?.at||null),{flow:r,context:n}}function Te(e,t=""){if(!e||typeof e!="object")return null;const r=L({source:t,panel:De(e.panel||e.panel_state),threadExtensions:lc(e.thread?.extensions||e.threadExtensions||e.extensions),pageProduct:gc(e.product||e.page?.product),products:de(e.products||e.last_search_products||e.items),ui:$t(e.spec),intent:Ft(e.intent),route:Ge({searchParams:e.searchParams||e.search_params,flowParams:e.flowParams||e.flow_params})});return Object.keys(r).some(n=>n!=="source")?r:null}function De(e){if(!e||typeof e!="object")return null;const t=de(e.last_search_products||e.current_panel_products),r=fe(e.screen_sku_list||e.search_suggestions_skus);return L({source:e.list_source||e.source,screenType:_(e.screen_type||e.screen),screenSummary:_(e.screen_summary||e.ai_plist_summary),screenSkus:r,chatMentionedSkus:fe(e.chat_mentioned_skus),lastSearch:dc(e.last_search),productCount:t?.count??Ut(e.current_panel_product_count),productSkus:t?.skus})}function $t(e,t="",r=""){if(!e||typeof e!="object")return null;const n=yc(e);if(!n)return null;const o=n.props||{},i=fc(e,n,o),a=Array.isArray(o.buttons)?o.buttons:Array.isArray(o.actions)?o.actions:[],s=Array.isArray(o.rows)?o.rows.length:Array.isArray(o.comparison_table)?o.comparison_table.length:void 0;return L({widget:t,panelHint:r,rootType:n.type,productCount:i?.count,productSkus:i?.skus,buttonCount:a.length||void 0,buttonLabels:a.length?fe(a.map(c=>c.label||c.title)):void 0,comparisonRows:s})}function tc(e,t,r={}){if(!(!r||typeof r!="object"))switch(e.lastAt=r.at||e.lastAt,r.severity==="error"&&(e.errors+=1),r.severity==="warn"&&(e.warnings+=1),r.state&&ze(t,r.state),r.kind){case"flow/request":rc(e,t,r);break;case"flow/metadata":nc(e,t,r);break;case"flow/trace":ic(e,r);break;case"flow/ui":oc(e,t,r);break;case"flow/text-final":t.lastText=_(r.content,Nt),I(e,r,"Text",t.lastText,"done");break;case"flow/done":e.status=e.status==="error"?"error":"done",e.current="Done",I(e,r,"Done","Flow completed","done");break;case"flow/error":case"flow/rejected":case"flow/thrown":e.status="error",e.current="Flow error",I(e,r,"Error",_(r.error||r.kind),"error");break;case"tool/start":e.status=e.status==="idle"?"running":e.status,e.current=`Tool: ${r.tool||"tool"}`,e.tools.push(r.tool||"tool"),I(e,r,"Tool",r.tool||"tool","running");break;case"tool/done":e.tools.push(r.tool||"tool"),I(e,r,"Tool",r.tool||"tool","done");break;case"tool/error":e.status="error",e.current=`Tool error: ${r.tool||"tool"}`,e.tools.push(r.tool||"tool"),I(e,r,"Tool",r.tool||"tool","error");break;case"be/request":e.status=e.status==="idle"?"running":e.status,e.current=`BE: ${r.op||"request"}`,e.beOps.push(r.op||"unknown"),ac(t,r),I(e,r,"BE",r.op||"request","running");break;case"be/response":e.beOps.push(r.op||r.result?.op||"unknown"),sc(t,r.result),I(e,r,"BE",r.op||r.result?.intent?.kind||"response",r.severity||"done");break;case"intent/selected":t.intent=Ft(r.intent),t.route=Ge({searchParams:r.searchParams,flowParams:r.flowParams}),e.current=`Intent: ${t.intent?.kind||"selected"}`,I(e,r,"Intent",t.intent?.kind||"selected","done");break;default:r.kind?.startsWith?.("runtime/")&&I(e,r,"Runtime",r.title||r.kind,"done");break}}function rc(e,t,r){const n=r.request||{};e.status="running",e.startedAt=r.at||e.startedAt,e.sessionId=_(n.session_id||n.sessionId||e.sessionId),e.requestType=_(n.type||e.requestType),e.actionType=_(n.action?.type||n.payload?.type||e.actionType),e.current=e.actionType||e.requestType||"Flow request",ze(t,Te(n.context||{},"request.context")),I(e,r,"Request",[e.requestType,e.actionType].filter(Boolean).join(" / ")||"request","running")}function nc(e,t,r){const n=r.event||{};e.sessionId=_(n.sessionId||n.session_id||e.sessionId),e.model=_(n.model||e.model),n.panelLoading===!0&&(e.current="Panel loading"),ze(t,Te(n,"flow.metadata")),I(e,r,"Metadata",_(n.name||n.phase||n.type||"metadata"),r.severity)}function oc(e,t,r){const n=$t(r.spec,r.widget,r.panelHint);n&&(t.ui=n,typeof n.productCount=="number"&&(t.products={count:n.productCount,skus:n.productSkus||[]}),e.uiSurfaces.push(n.rootType),e.current=`UI: ${n.rootType}`,I(e,r,"UI",n.rootType||"ui","done"))}function ic(e,t){const r=t.event||{},n=_(r.type||"trace"),o=_(r.stepName||r.stepKind||"");e.sessionId=_(r.sessionId||e.sessionId),e.current=o?`${n}: ${o}`:n,I(e,t,"Trace",[n,o].filter(Boolean).join(" / ")||"trace",hc(n))}function ac(e,t){const r=t.params||{};ze(e,Te(r,"be.params")),r.panel_state&&(e.panel=De(r.panel_state)),r.structured_context&&(e.panel=Tn(e.panel,De(r.structured_context)));const n=Ge({searchParams:r.search_params,flowParams:r.flow_params});n&&(e.route=n)}function sc(e,t){if(!t||typeof t!="object")return;t.intent&&(e.intent=Ft(t.intent));const r=Ge({searchParams:t.search_params,flowParams:t.flow_params});r&&(e.route=r)}function ze(e,t){!t||typeof t!="object"||(t.panel&&(e.panel=Tn(e.panel,t.panel)),t.threadExtensions&&(e.threadExtensions={...e.threadExtensions,...t.threadExtensions}),t.pageProduct&&(e.pageProduct=t.pageProduct),t.products&&(e.products=t.products),t.ui&&(e.ui=t.ui),t.intent&&(e.intent=t.intent),t.route&&(e.route=t.route))}function Tn(e,t){return e?t?L({...e,...t}):e:t||null}function I(e,t,r,n,o="done"){e.timeline.push(L({id:t.id,at:t.at,label:r,detail:_(n,Nt),status:o==="info"?"done":o,kind:t.kind}))}function Ft(e){return!e||typeof e!="object"?null:L({kind:_(e.kind||e.intent||e.type),target:_(e.target),confidence:typeof e.confidence=="number"?Math.round(e.confidence*100)/100:void 0})}function Ge({searchParams:e,flowParams:t}={}){const r=L({search:cc(e),flow:uc(t)});return Object.keys(r).length?r:null}function cc(e){return!e||typeof e!="object"?null:L({query:_(e.query||e.search_query),category:_(e.category||e.category_name||e.categoryName),categoryId:_(e.categoryId||e.category_id),limit:Ut(e.limit),facets:Array.isArray(e.facets)?e.facets.length:void 0})}function uc(e){return!e||typeof e!="object"?null:L({target:_(e.target),sku:_(e.sku||e.product_sku),skus:fe(e.skus||e.sku_list),action:_(e.action||e.action_type)})}function lc(e){if(!e||typeof e!="object")return{};const t={};for(const[r,n]of Object.entries(e))n!=null&&(t[r]=n&&typeof n=="object"?L({keys:Object.keys(n).slice(0,8),summary:_(n.summary||n.occasion||n.target_date_iso||n.type)}):_(n));return t}function dc(e){return!e||typeof e!="object"?null:L({query:_(e.query),source:_(e.source),category:_(e.category||e.category_name),count:Ut(e.count)})}function de(e){if(!Array.isArray(e))return null;const t=e.filter(Boolean);return L({count:t.length,skus:fe(t.map(r=>r?.sku||r?.code||r?.id)),names:fe(t.map(r=>r?.name||r?.title),4)})}function fc(e,t,r){if(t.type==="ProductDetailsPanel")return de([r.product||r.item].filter(Boolean));if(t.type==="ProductGrid"){const n=pc(r.products,r.items,r.cards);return de(n||mc(e,t))}return de(r.products||r.items||r.cards)}function pc(...e){return e.find(t=>Array.isArray(t))||null}function mc(e,t){const r=e.elements||{};return(Array.isArray(t.children)?t.children:[]).map(n=>r[n]).filter(n=>n?.type==="ProductCard").map(n=>n.props?.product||n.props?.item||n.props).filter(Boolean)}function gc(e){return!e||typeof e!="object"?null:L({sku:_(e.sku||e.code||e.id),name:_(e.name||e.title),category:_(e.category),url:_(e.url)})}function yc(e){const t=e.elements||{};return t[e.root||"root"]||t.root||e.rootElement||null}function fe(e,t=ec){if(!Array.isArray(e))return;const r=e.map(n=>_(n)).filter(Boolean);return r.length?r.slice(0,t):void 0}function qt(e){return[...new Set(e.map(t=>_(t)).filter(Boolean))]}function Ut(e){return Number.isFinite(Number(e))?Number(e):void 0}function hc(e){return/error$/u.test(e)?"error":/start$/u.test(e)?"running":"done"}function _(e,t=Nt){const r=String(e??"").replace(/\s+/gu," ").trim();return r.length>t?`${r.slice(0,t-1)}...`:r}function L(e){return Object.fromEntries(Object.entries(e||{}).filter(([,t])=>t==null||t===""?!1:Array.isArray(t)?t.length>0:typeof t=="object"?Object.keys(t).length>0:!0))}function xn(e,t){if(!e||typeof e!="object"||!t)return e;const r={...e};for(const[n,o]of Object.entries(e))typeof o!="function"||o.__gengageActivityWrapped||(r[n]=async function(a,...s){t.record({kind:"tool/start",tool:n,params:a});try{const c=await o.call(this,a,...s);return t.record({kind:"tool/done",tool:n,params:a,result:Ec(c),state:Te(c,`tool:${n}`)}),c}catch(c){throw t.record({kind:"tool/error",tool:n,params:a,error:pe(c)}),c}},Object.defineProperty(r[n],"__gengageActivityWrapped",{value:!0}));return r}function En(e,t){return t?r=>(t.record({kind:"beacon",payload:r}),e?.(r)):e}function Cn(e,t){if(!t)return!1;const r=window.GengageAssistantInjector?.[e],n=r?.streamTransport;if(typeof n!="function"||n.__gengageActivityWrapped)return!1;const o=function(a,s,c,u){t.record({kind:"flow/request",request:a});try{const l=n.call(this,a,bc(s,t),c,u);return l&&typeof l.then=="function"?l.catch(f=>{throw t.record({kind:"flow/rejected",requestType:a?.type,error:pe(f)}),f}):l}catch(l){throw t.record({kind:"flow/thrown",requestType:a?.type,error:pe(l)}),l}};return Object.defineProperty(o,"__gengageActivityWrapped",{value:!0}),r.streamTransport=o,t.record({kind:"runtime/transport-wrapped",title:"streamTransport wrapped"}),!0}function Pn({accountId:e,collector:t,promptBaseUrl:r}={}){if(!t||window.__GENGAGE_ACTIVITY_FETCH_PATCHED__)return;window.__GENGAGE_ACTIVITY_FETCH_PATCHED__=!0;const n=window.fetch?.bind(window);typeof n=="function"&&(window.fetch=async(o,i)=>{const a=vc(o,i),s=Tc(a.url);let c="";s&&(c=a.body?.op_name||a.body?.op||"unknown",t.record({kind:"be/request",source:"main-thread-fetch",url:a.url,op:c,opDomain:a.body?.op_domain||"",prompt:await wc({accountId:e,opName:c,promptBaseUrl:r}),params:a.body?.op_payload||{},rawBody:a.body}));const u=await n(o,i);return s&&u.clone().text().then(l=>{const f=xc(l);t.record({kind:"be/response",source:"main-thread-fetch",url:a.url,status:u.status,op:c,result:f,rawText:l}),Rn(t,f)}).catch(l=>{t.record({kind:"be/response",source:"main-thread-fetch",url:a.url,status:u.status,op:c,error:pe(l)})}),u})}function bc(e,t){if(!e||e.__gengageActivityWrapped)return e;const r={...e};Object.defineProperty(r,"__gengageActivityWrapped",{value:!0});for(const n of["onAction","onMetadata","onUISpec","onTextChunk","onError","onDone"])typeof e[n]=="function"&&(r[n]=(...o)=>(n==="onAction"?t.record({kind:"flow/action",event:o[0]}):n==="onMetadata"?t.record({kind:"flow/metadata",event:o[0]}):n==="onUISpec"?t.record({kind:"flow/ui",widget:o[1],panelHint:o[2],clearPanel:o[3]===!0,spec:o[0]}):n==="onTextChunk"&&o[1]===!0?t.record({kind:"flow/text-final",content:o[0],extra:o[2]}):n==="onError"?t.record({kind:"flow/error",error:pe(o[0])}):n==="onDone"&&t.record({kind:"flow/done"}),e[n](...o)));return r}function Dt(e,t){!e||!t||(e.record(t),t.kind==="be/response"&&Rn(e,t.result))}async function wc({accountId:e,opName:t,promptBaseUrl:r}){if(!e||!t)return null;const n=kc({accountId:e,baseId:String(e).replace(/-agentic$/u,""),promptBaseUrl:r});if(!n)return{error:"Configure agenticActivityPromptBaseUrl to inspect prompt source in this build."};try{const o=new URL(`${t}.yaml`,n).href,i=await fetch(o,{cache:"no-store"});return i.ok?{url:o,yaml:await i.text()}:{url:o,error:`HTTP ${i.status}`}}catch(o){return{error:pe(o)}}}function kc({accountId:e,baseId:t,promptBaseUrl:r}){if(typeof r=="string"&&r.trim())return r;const n=_c(e,t);return n||Sc(t)}function _c(e,t){const r=window.__GENGAGE_AGENTIC_PROMPT_BASE_URL__;if(typeof r=="string"&&r.trim())return r;if(r&&typeof r=="object"){const o=r[e]||r[t];if(typeof o=="string"&&o.trim())return o}const n=(window.GengageInjectorConfig?.[e]||window.GengageInjectorConfig?.[t])?.agenticActivityPromptBaseUrl;return typeof n=="string"&&n.trim()?n:null}function Sc(e){const t=Array.from(document.scripts||[]);for(const r of t){const n=r?.src||"";if(n.includes("/agentic/index.js"))return new URL(`../prompts/${e}/`,n).href;if(n.includes("/agentic.iife.js"))return new URL(`prompts/${e}/`,n).href}return null}function Rn(e,t){const r=t?.intent;r&&e.record({kind:"intent/selected",intent:r,searchParams:t?.search_params,flowParams:t?.flow_params})}function vc(e,t){const r=typeof e=="string"?e:e?.url||"",n=t?.body||(typeof e!="string"?e?.body:null);return{url:String(r||""),body:Ac(n)}}function Ac(e){if(!e||typeof e!="string")return{};try{return JSON.parse(e)}catch{return{raw:e}}}function Tc(e){try{const t=new URL(e,window.location.href);return t.pathname==="/v1/execute"&&/agentic\.gengage\.ai$/u.test(t.hostname)}catch{return!1}}function xc(e){const t={};for(const r of String(e||"").split(/\r?\n/u)){const n=r.trim();if(n)try{Object.assign(t,JSON.parse(n))}catch{t._raw=[t._raw,n].filter(Boolean).join(`
8
+ `)}}return t}function Ec(e){if(Array.isArray(e))return{type:"array",length:e.length,preview:e.slice(0,5)};if(!e||typeof e!="object")return e;const t={};for(const[r,n]of Object.entries(e))Array.isArray(n)?t[r]={type:"array",length:n.length,preview:n.slice(0,5)}:n&&typeof n=="object"?t[r]={type:"object",keys:Object.keys(n).slice(0,20)}:t[r]=n;return t}function pe(e){return e?.message||String(e)}var jn="gengage-agentic-activity-overlay",xe="all",zt="all",In=["Flow","Tools","Backend","Intent","Telemetry","Runtime"],Ln=["info","warn","error"];function On(e){if(!e||typeof e.subscribe!="function")return null;const t=document.getElementById(jn);if(t?.shadowRoot)return t;const r=document.createElement("div");r.id=jn,r.style.cssText="position:fixed;left:10px;top:10px;z-index:2147483647;";const n=r.attachShadow({mode:"open"});n.innerHTML=Zc(e.accountId),document.documentElement.appendChild(r);const o={entries:[],section:xe,severity:zt,search:"",grouped:!0,follow:!0,stateVisible:!0,verbose:!1},i={stateView:n.querySelector('[data-role="state-view"]'),list:n.querySelector('[data-role="list"]'),count:n.querySelector('[data-role="count"]'),visibleCount:n.querySelector('[data-role="visible-count"]'),panel:n.querySelector('[data-role="panel"]'),search:n.querySelector('[data-role="search"]'),sections:n.querySelector('[data-role="section-filters"]'),severities:n.querySelector('[data-role="severity-filters"]'),groupToggle:n.querySelector('[data-action="group"]'),followToggle:n.querySelector('[data-action="follow"]'),stateToggle:n.querySelector('[data-action="state"]'),verboseToggle:n.querySelector('[data-action="verbose"]')};Cc(r,i.list);const a=()=>Rc(i,o);return n.querySelector('[data-action="clear"]')?.addEventListener("click",()=>e.clear()),n.querySelector('[data-action="toggle"]')?.addEventListener("click",s=>{i.panel.classList.toggle("is-minimized"),s.currentTarget.textContent=i.panel.classList.contains("is-minimized")?"Open":"Min"}),i.search?.addEventListener("input",()=>{o.search=i.search.value||"",a()}),i.sections?.addEventListener("click",s=>{const c=s.target?.closest?.("[data-section-filter]")?.dataset?.sectionFilter;c&&(o.section=c,a())}),i.severities?.addEventListener("click",s=>{const c=s.target?.closest?.("[data-severity-filter]")?.dataset?.severityFilter;c&&(o.severity=c,a())}),i.groupToggle?.addEventListener("click",()=>{o.grouped=!o.grouped,i.groupToggle.setAttribute("aria-pressed",String(o.grouped)),i.groupToggle.textContent=o.grouped?"Grouped":"Flat",a()}),i.followToggle?.addEventListener("click",()=>{o.follow=!o.follow,i.followToggle.setAttribute("aria-pressed",String(o.follow)),i.followToggle.textContent=o.follow?"Follow":"Paused"}),i.stateToggle?.addEventListener("click",()=>{o.stateVisible=!o.stateVisible,i.stateToggle.setAttribute("aria-pressed",String(o.stateVisible)),i.stateToggle.textContent=o.stateVisible?"State":"State off",a()}),i.verboseToggle?.addEventListener("click",()=>{o.verbose=!o.verbose,i.verboseToggle.setAttribute("aria-pressed",String(o.verbose)),i.verboseToggle.textContent=o.verbose?"Verbose":"Concise",a()}),n.querySelector('[data-action="expand-all"]')?.addEventListener("click",()=>{i.list?.querySelectorAll("details").forEach(s=>{s.open=!0})}),n.querySelector('[data-action="collapse-all"]')?.addEventListener("click",()=>{i.list?.querySelectorAll("details").forEach(s=>{s.open=!1})}),i.list?.addEventListener("click",s=>{const c=s.target?.closest?.('[data-action="copy-json"]');if(!c)return;const u=Number(c.dataset.entryId||0);Kc(o.entries.find(l=>l.id===u),c)}),e.subscribe((s,c)=>{o.entries=c.slice(),a()}),r}function Cc(e,t){e.addEventListener("wheel",r=>{const n=Pc(r.composedPath?.()||[],t);n&&(n.scrollTop+=r.deltaY,n.scrollLeft+=r.deltaX,r.preventDefault(),r.stopPropagation())},{passive:!1,capture:!0})}function Pc(e,t){for(const r of e)if(!(!r||r.nodeType!==1)&&Bn(r))return r;return Bn(t)?t:null}function Bn(e){return!!(e&&(e.scrollHeight>e.clientHeight+1||e.scrollWidth>e.clientWidth+1)&&getComputedStyle(e).overflow!=="hidden")}function Rc(e,t){const r=Mn(t.entries,t),n=r.slice(-260);Nn(e.sections,t.entries,t.section,"section"),Nn(e.severities,t.entries,t.severity,"severity"),e.count&&(e.count.textContent=String(t.entries.length)),e.visibleCount&&(e.visibleCount.textContent=String(r.length)),Oc(e.stateView,An(t.entries),t.stateVisible),Lc(e.list,n,t)}function Mn(e,t={}){const r=t.section||xe,n=t.severity||zt,o=Dn(t.search),i=t.verbose===!0;return(Array.isArray(e)?e:[]).filter(a=>!i&&a.noise===!0||r!==xe&&a.section!==r||n!==zt&&a.severity!==n?!1:o?Jc(a).includes(o):!0)}function Nn(e,t,r,n){if(!e)return;e.textContent="";const o=n==="section"?jc(t):Ic(t),i=document.createElement("button");i.type="button",i.dataset[`${n}Filter`]=xe,i.className=r===xe?"chip is-active":"chip",i.textContent=`All ${t.length}`,e.appendChild(i);for(const a of o){const s=t.filter(u=>u[n]===a).length,c=document.createElement("button");c.type="button",c.dataset[`${n}Filter`]=a,c.className=r===a?`chip is-active ${n}-${me(a)}`:`chip ${n}-${me(a)}`,c.textContent=`${Hn(a)} ${s}`,e.appendChild(c)}}function jc(e){const t=new Set(e.map(r=>r.section).filter(Boolean));return In.filter(r=>t.has(r)).concat([...t].filter(r=>!In.includes(r)).sort())}function Ic(e){const t=new Set(e.map(r=>r.severity).filter(Boolean));return Ln.filter(r=>t.has(r)).concat([...t].filter(r=>!Ln.includes(r)).sort())}function Lc(e,t,r){if(!e)return;if(e.textContent="",!t.length){const o=document.createElement("div");o.className="empty",o.textContent=r.entries.length?"No activity matches the current filters.":"Waiting for agentic activity...",e.appendChild(o);return}const n=document.createDocumentFragment();if(r.grouped)for(const o of Hc(t))n.appendChild(Vc(o));else for(const o of t)n.appendChild(Fn(o));e.appendChild(n),r.follow&&requestAnimationFrame(()=>e.scrollTop=e.scrollHeight)}function Oc(e,t,r){if(!e||(e.textContent="",e.classList.toggle("is-hidden",!r),!r))return;const{flow:n,context:o}=t,i=document.createDocumentFragment();i.appendChild(Bc(n)),i.appendChild(Mc(o)),i.appendChild(Nc(n.timeline)),e.appendChild(i)}function Bc(e){const t=document.createElement("section");return t.className=`viz-card flow-card status-${me(e.status)}`,t.appendChild(Gt("Flow State",e.status)),$n(t,[["Current",e.current],["Session",e.sessionId],["Request",[e.requestType,e.actionType].filter(Boolean).join(" / ")],["Model",e.model],["Tools",e.tools?.join(", ")],["BE ops",e.beOps?.join(", ")],["UI",e.uiSurfaces?.join(", ")],["Health",$c(e)]]),t}function Mc(e){const t=document.createElement("section");return t.className="viz-card context-card",t.appendChild(Gt("Context State",e.panel?.screenType||e.ui?.rootType||"empty")),$n(t,[["Intent",Fc(e.intent)],["Route",qc(e.route)],["Screen",Uc(e)],["Last search",Dc(e.panel?.lastSearch)],["Products",zc(e.panel,e.products)],["Page product",Gc(e.pageProduct)],["Extensions",Object.keys(e.threadExtensions||{}).join(", ")],["Last text",e.lastText]]),t}function Nc(e){const t=document.createElement("section");t.className="viz-card timeline-card",t.appendChild(Gt("Flow Timeline",`${e.length} steps`));const r=document.createElement("ol");if(r.className="timeline",e.length)for(const n of e){const o=document.createElement("li");o.className=`timeline-step step-${me(n.status||"done")}`;const i=document.createElement("span");i.className="timeline-time",i.textContent=Gn(n.at);const a=document.createElement("span");a.className="timeline-label",a.textContent=n.label||n.kind||"Step";const s=document.createElement("span");s.className="timeline-detail",s.textContent=n.detail||n.kind||"",o.append(i,a,s),r.appendChild(o)}else{const n=document.createElement("li");n.className="timeline-empty",n.textContent="No flow events yet.",r.appendChild(n)}return t.appendChild(r),t}function Gt(e,t){const r=document.createElement("div");r.className="viz-title";const n=document.createElement("span");n.textContent=e;const o=document.createElement("span");return o.className="viz-badge",o.textContent=t||"idle",r.append(n,o),r}function $n(e,t){for(const[r,n]of t){if(n==null||n==="")continue;const o=document.createElement("div");o.className="viz-row";const i=document.createElement("span");i.className="viz-key",i.textContent=r;const a=document.createElement("span");a.className="viz-value",a.textContent=String(n),o.append(i,a),e.appendChild(o)}}function $c(e){return!e.errors&&!e.warnings?"clean":`${e.errors||0} errors, ${e.warnings||0} warnings`}function Fc(e){return e?[e.kind,e.target,e.confidence!=null?`conf ${e.confidence}`:""].filter(Boolean).join(" / "):""}function qc(e){return e?[e.search?[e.search.query,e.search.category,e.search.categoryId,e.search.facets?`${e.search.facets} facets`:""].filter(Boolean).join(" / "):"",e.flow?[e.flow.target,e.flow.sku,e.flow.skus?.join(", "),e.flow.action].filter(Boolean).join(" / "):""].filter(Boolean).join(" -> "):""}function Uc(e){const t=e.panel||{},r=e.ui||{};return[t.screenType,r.rootType,r.widget,r.panelHint].filter(Boolean).join(" / ")}function Dc(e){return e?[e.query,e.source,e.category,e.count!=null?`${e.count} results`:""].filter(Boolean).join(" / "):""}function zc(e,t){const r=e?.productSkus||e?.screenSkus||t?.skus||[],n=e?.productCount??t?.count;return n==null&&!r.length?"":[`${n??r.length} products`,r.join(", ")].filter(Boolean).join(" / ")}function Gc(e){return e?[e.sku,e.name,e.category].filter(Boolean).join(" / "):""}function Hc(e){const t=new Map;for(const r of e){const n=`${r.section||"Runtime"}:${r.group||r.kind}`,o=t.get(n)||{key:n,section:r.section||"Runtime",severity:r.severity||"info",title:r.group||r.kind,entries:[]};o.entries.push(r),o.severity=Wc(o.severity,r.severity),t.set(n,o)}return[...t.values()]}function Vc(e){const t=document.createElement("section");t.className=`group group-${me(e.severity)}`,t.dataset.section=e.section;const r=document.createElement("div");r.className="group-head";const n=document.createElement("span");n.className="section",n.textContent=e.section;const o=document.createElement("span");o.className="group-title",o.textContent=e.title;const i=document.createElement("span");i.className="group-count",i.textContent=String(e.entries.length),r.append(n,o,i),t.appendChild(r);for(const a of e.entries)t.appendChild(Fn(a));return t}function Fn(e){const t=document.createElement("details");t.dataset.entryId=String(e.id||""),t.dataset.section=e.section||"Runtime",t.dataset.severity=e.severity||"info",t.className=`entry entry-${me(e.severity||"info")}`,t.open=e.severity==="error";const r=document.createElement("summary"),n=document.createElement("span");n.className="time",n.textContent=Gn(e.at);const o=document.createElement("span");o.className="section",o.textContent=e.section||"Runtime";const i=document.createElement("span");i.className="severity",i.textContent=Hn(e.severity||"info");const a=document.createElement("span");a.className="title",a.textContent=zn(e),r.append(n,o,i,a);const s=document.createElement("div");s.className="entry-body";const c=document.createElement("div");c.className="entry-toolbar";const u=document.createElement("span");u.className="kind",u.textContent=e.kind;const l=document.createElement("span");l.className="kind",l.textContent=e.group||"";const f=document.createElement("button");f.type="button",f.dataset.action="copy-json",f.dataset.entryId=String(e.id||""),f.textContent="Copy JSON",c.append(u,l,f);const m=document.createElement("pre"),p=document.createElement("code");return p.innerHTML=qn(e),m.appendChild(p),s.append(c,m),t.append(r,s),t}function qn(e){const t=Ht(e),r=/("(?:\\u[\da-fA-F]{4}|\\[^u]|[^\\"])*"(?:\s*:)?|\btrue\b|\bfalse\b|\bnull\b|-?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?)/gu;let n="",o=0;for(const i of t.matchAll(r)){const a=i[0];n+=He(t.slice(o,i.index));let s="json-number";a.startsWith('"')?s=a.endsWith(":")?"json-key":"json-string":a==="true"||a==="false"?s="json-boolean":a==="null"&&(s="json-null"),n+=`<span class="${s}">${He(a)}</span>`,o=i.index+a.length}return n+He(t.slice(o))}function Kc(e,t){if(!e)return;const r=Ht(e),n=()=>{const o=t.textContent;t.textContent="Copied",setTimeout(()=>{t.textContent=o},900)};if(navigator.clipboard?.writeText){navigator.clipboard.writeText(r).then(n).catch(()=>Un(r,n));return}Un(r,n)}function Un(e,t){const r=document.createElement("textarea");r.value=e,r.style.cssText="position:fixed;left:-9999px;top:-9999px;",document.body.appendChild(r),r.select();try{document.execCommand("copy"),t()}finally{r.remove()}}function Wc(e,t){const r={info:0,warn:1,error:2};return(r[t]||0)>(r[e]||0)?t:e}function Jc(e){return Dn([e.kind,e.section,e.severity,e.group,zn(e),e.tool,e.op,e.request?.type,e.request?.action?.type,e.event?.name,e.event?.action,e.event?.type,Ht(e)].join(" "))}function Dn(e){return String(e||"").toLocaleLowerCase("tr-TR").trim()}function zn(e){if(e.kind==="flow/request")return e.request?.type||e.request?.action?.type||"request";if(e.kind==="flow/action")return e.event?.name||e.event?.action||e.event?.type||"action";if(e.kind==="flow/metadata")return e.event?.name||e.event?.phase||e.event?.type||"metadata";if(e.kind==="flow/ui")return e.widget||e.panelHint||"ui";if(e.kind==="flow/text-final")return Yc(e.content||"final text",90);if(e.kind==="be/request")return e.op||"BE request";if(e.kind==="be/response"){const t=e.result?.intent?.kind||e.result?.intent_kind||e.result?.kind;return t?`intent selected: ${t}`:e.op||"BE response"}return e.kind==="intent/selected"?e.intent?.kind||e.kind:e.kind.startsWith("tool/")?e.tool||"tool":e.kind==="beacon"?e.payload?.type||"beacon":e.title||e.kind}function Zc(e){return`
9
9
  <style>
10
10
  :host { all: initial; }
11
11
  .panel {
@@ -327,7 +327,7 @@
327
327
  <div class="panel" data-role="panel">
328
328
  <div class="head">
329
329
  <div class="meta">
330
- <span class="name">Agentic Activity - ${De(e)}</span>
330
+ <span class="name">Agentic Activity - ${He(e)}</span>
331
331
  <span class="count"><span data-role="visible-count">0</span>/<span data-role="count">0</span></span>
332
332
  </div>
333
333
  <div class="actions">
@@ -351,4 +351,4 @@
351
351
  <div class="state-view" data-role="state-view"></div>
352
352
  <div class="list" data-role="list"></div>
353
353
  </div>
354
- `}function qt(e){try{return JSON.stringify(e,null,2)}catch{return String(e)}}function On(e){try{return new Date(e||Date.now()).toLocaleTimeString()}catch{return""}}function Oc(e,t){const r=String(e||"");return r.length>t?`${r.slice(0,t-1)}...`:r}function Bn(e){const t=String(e||"");return t?`${t.slice(0,1).toLocaleUpperCase("en-US")}${t.slice(1)}`:""}function pe(e){return String(e||"").toLocaleLowerCase("en-US").replace(/[^a-z0-9]+/gu,"-").replace(/^-|-$/gu,"")}function De(e){return String(e).replace(/[&<>"']/gu,t=>t==="&"?"&amp;":t==="<"?"&lt;":t===">"?"&gt;":t==='"'?"&quot;":"&#39;")}function Bc({accountId:e,config:t={},tools:r,beacon:n}={}){if(!Mn(e,t))return{enabled:!1,tools:r,beacon:n,record(){},wrapTransport(){}};const o=un(e);return window.__GENGAGE_AGENTIC_DEBUG_RECORD__=i=>Mt(o,i),window.__GENGAGE_AGENTIC_DEBUG_RECORD_BE__=i=>Mt(o,i),An(o),wn({accountId:e,collector:o,promptBaseUrl:t.agenticActivityPromptBaseUrl}),o.record({kind:"runtime/debug-enabled",title:"Agentic activity debug enabled"}),{enabled:!0,collector:o,tools:yn(r,o),beacon:hn(n,o),record:i=>o.record(i),wrapTransport:()=>bn(e,o)}}function Mn(e,t={}){return t.agenticActivityDebug===!1?!1:t.agenticActivityDebug===!0||window.__GENGAGE_PWTEST_ACCOUNT__===e||window.__GENGAGE_AGENTIC_ACTIVITY_DEBUG__===!0?!0:!!(t.debug===!0&&Mc(e))}function Mc(e){return Array.from(document.scripts||[]).some(t=>{const r=t?.src||"";return r.includes(`/${e}/glov.js`)&&/[?&]pwtest=/u.test(r)})}var Nc="input-hash";function Nn({ttlS:e,promptVersion:t="current"}={}){if(!Number.isFinite(e)||e<=0)throw new Error("inputHashCachePolicy requires a positive ttlS");return{strategy:Nc,ttlS:e,promptVersion:t}}function $n({accountId:e="",op:t,ttlS:r,promptVersion:n="current",input:o,keyParts:i,locale:a}={}){if(!t)throw new Error("declarativeBeOpCache requires an op");return{cache:Nn({ttlS:r,promptVersion:n}),cacheTtlS:r,cacheKey:(s={})=>pt(t,{account:e,locale:Ut(a,s)||s.context?.meta?.locale||s.locale||"",promptVersion:n,payload:Ft(Ut(o,s)),...qc(Ut(i,s))})}}function $c(e,t={}){return!e||e.kind!=="be_op"?e:{...e,...$n({op:e.op,ttlS:e.cacheTtlS,input:e.input,...t})}}function Ut(e,t){return typeof e=="function"?e(t):e}function Ft(e){return Array.isArray(e)?e.map(Ft):!e||typeof e!="object"?e:Object.fromEntries(Object.entries(e).filter(([,t])=>t!==void 0).sort(([t],[r])=>t.localeCompare(r)).map(([t,r])=>[t,Ft(r)]))}function qc(e){return!e||typeof e!="object"||Array.isArray(e)?{}:Object.fromEntries(Object.entries(e).filter(([,t])=>t!=null))}var Uc=Object.freeze({FALLBACK_RESULTS:"fallback_results",FALLBACK_NO_RESULTS:"fallback_no_results",FALLBACK_PARTIAL:"fallback_partial",OP_UNAVAILABLE:"op_unavailable"});function Fc(e,t={}){return{status:e,...t}}function Dc(e){return!!(e&&typeof e=="object"&&typeof e.status=="string")}function zc(e){return function(){return[{kind:"tool",name:"readPage",input:()=>({}),out:"page",patch:(r,n)=>n?.product&&typeof e=="function"?e(r,n.product):null,onError:[]}]}}var Gc=["sku","group_id","name","brand","rating","review_count","cart_code","images","price_currency","price","price_discounted","discount_reason","url","category_ids","category_names","facet_hits","in_stock","promotions","variants"],Vc=["description","description_html","features","service","sellers","reviews","qna","documents","delivery","payment"],Kc=["accountId","query","products","pendingProducts","rankedSkus","facets","facetsUsed","available_facets","logs","meta"],Hc=["source","sourceType","sourceProfile","products","queries","logs"],Wc=["items","kind","label","href","count","privacy"];function Jc({accountId:e,search:t,facetedSearch:r,similaritySearch:n,searchGiftOptions:o,filters:i={},resultContract:a={},limitations:s=[],extraTools:c=[]}={}){return{searchKeyword:async(l={},f={})=>t(Zc(l,f)),facetedSearch:typeof r=="function"?(l={},f={})=>r(Un(l,f)):async(l={},f={})=>t(Un(l,f)),getSearchCapabilities:()=>qn({accountId:e,hasSimilarity:typeof n=="function",hasGiftSearch:typeof o=="function",filters:i,resultContract:a,limitations:s,extraTools:c})}}function qn({accountId:e,hasSimilarity:t=!0,hasGiftSearch:r=!1,filters:n={},resultContract:o={},limitations:i=[],extraTools:a=[]}={}){return{accountId:e,tools:Yc(["search","searchKeyword","facetedSearch",r?"searchGiftOptions":"",t?"similaritySearch":"","scanSite","siteGrep","discoverSiteContent","runSiteCommand","describeVisualContext","inspectProductSurface","openProductPage",...a].filter(Boolean)),filters:{query:"LLM-selected merchant search phrase or empty string when structured metadata is enough.",categoryId:"Optional native merchant category id selected from account metadata or visible page state.",categoryName:"Optional shopper-facing category label selected by the LLM/router.",categoryHints:"Optional category hints supplied by the LLM/router.",brandHints:"Optional brand hints supplied by the LLM/router.",featureHints:"Optional feature, material, style, size, compatibility, or project hints supplied by the LLM/router.",facets:"Optional structured facet array of { key, value } selected from route payloads or merchant metadata.",facetParams:"Optional native account facet map selected from account metadata.",priceMin:"Optional numeric lower price bound.",priceMax:"Optional numeric upper price bound.",...n},resultContract:{productItemFields:Gc,productDetailFields:Vc,searchResultFields:Kc,similarityResultFields:Hc,siteContentFields:Wc,...o},privacy:["Runs in the shopper browser with merchant-origin state.","Does not expose raw HTML, cookies, storage, cart/session tokens, CSRF values, or form values.","Returns compact product, content, and visible-page facts only.","Free-text intent and search planning stay LLM-owned; runtime wrappers only forward structured inputs."],limitations:i}}function Zc(e,t){return Dt(typeof e=="string"?{...t,query:e}:{...t,...e||{}})}function Un(e,t){const r=typeof e=="string"?{query:e}:e||{},n=r.query??t.query??"",o=Dt({...t,...r,query:n,categoryId:r.categoryId??r.category_id??t.categoryId??t.category_id,categoryName:r.categoryName??r.category_name??t.categoryName??t.category_name,facets:r.facets??t.facets,facetParams:r.facetParams??r.facet_params??t.facetParams??t.facet_params,priceMin:r.priceMin??r.price_min??r.budgetMin??r.min_budget??t.priceMin,priceMax:r.priceMax??r.price_max??r.budgetMax??r.max_budget??t.priceMax,limit:r.limit??r.pageSize??t.limit??t.pageSize});return n===""&&(o.query=""),o}function Yc(e){const t=new Set;return e.filter(r=>{const n=String(r||"");return!n||t.has(n)?!1:(t.add(n),!0)})}function Dt(e){return Object.fromEntries(Object.entries(e||{}).filter(([,t])=>t!=null&&t!==""&&(!Array.isArray(t)||t.length)))}var Qc=15e3,Xc="glov_agentic_iframe",eu="position:absolute;width:1px;height:1px;left:-9999px;top:-9999px;opacity:0;pointer-events:none;";function tu({markerParam:e=Xc,markerValue:t="agentic-scraper",frameName:r=t,sandbox:n="allow-same-origin",timeoutMs:o=Qc,hiddenStyle:i=eu,messageType:a,parser:s,isBlockedDocument:c}={}){const u=a||`gengage:agentic-iframe-scraper:${t}`;function l(y,h={}){const m=new URL(String(y),zt());for(const[b,w]of Object.entries(h||{}))w!=null&&w!==""&&m.searchParams.set(b,String(w));return m.searchParams.set(e,t),m.href}function f(y=globalThis.window?.location,h=globalThis.window?.name||""){if(h===r||h===t)return!0;try{return new URL(y?.href||String(y||""),zt()).searchParams.get(e)===t}catch{return!1}}async function g(y,h={},m={}){const b=m.parser||s,w=m.isBlockedDocument||c,A=globalThis.document,_=globalThis.window;if(!A?.body||typeof A.createElement!="function"||typeof A.body.appendChild!="function")return{attempted:!1,doc:null,result:null,blocked:!1,timedOut:!1,via:"unavailable"};const O=l(y),v=A.createElement("iframe");v.name=r;try{v.sandbox=n}catch{}return v.style&&(v.style.cssText=i),new Promise(M=>{let J=!1;const Ye=typeof _?.addEventListener=="function"&&typeof _?.removeEventListener=="function",hl=_.setTimeout(()=>{or({attempted:!0,doc:null,result:null,blocked:!1,timedOut:!0,via:"timeout"})},o);function bl(){_.clearTimeout(hl),Ye&&_.removeEventListener("message",lo),typeof v.remove=="function"&&v.remove()}function or(Z){J||(J=!0,bl(),M(Z))}function lo(Z){if(Z.source&&v.contentWindow&&Z.source!==v.contentWindow)return;const re=Z.data;!re||re.type!==u||re.marker!==t||or({attempted:!0,doc:null,result:re.payload||null,blocked:!!re.blocked,timedOut:!1,via:"postMessage"})}v.addEventListener("load",()=>{if(v.contentWindow?.location?.href!=="about:blank")try{const Z=v.contentDocument||v.contentWindow?.document||null,re=!!w?.(Z);or({attempted:!0,doc:Z,result:typeof b=="function"?b(Z,{url:O,input:h}):null,blocked:re,timedOut:!1,via:"contentDocument"})}catch{}}),Ye&&_.addEventListener("message",lo),A.body.appendChild(v),v.src=O})}function p(y=s,{targetOrigin:h=zt()}={}){const m=globalThis.window;if(!m?.parent||!f(m.location,m.name))return!1;const b=typeof y=="function"?y(globalThis.document,{url:m.location?.href||"",input:{}}):y;return m.parent.postMessage({type:u,marker:t,payload:b},h||"*"),!0}return{markerParam:e,markerValue:t,frameName:r,messageType:u,decorateUrl:l,isScraperFrame:f,load:g,postCurrentDocument:p}}function ru(e,{accountId:t,type:r="agenticSearchFrame"}={}){return e?.isScraperFrame?.()?(t&&globalThis.window&&(globalThis.window.GengageAssistantInjector||={},globalThis.window.GengageAssistantInjector[t]||={type:r}),!0):!1}function zt(){return globalThis.window?.location?.origin||globalThis.location?.origin||"https://example.invalid"}function nu(e){return!e||typeof e!="object"||Array.isArray(e)?{}:Object.fromEntries(Object.entries(e).filter(([,t])=>t!=null&&t!==""&&(!Array.isArray(t)||t.length>0)))}function ou({rootUrl:e,successMessage:t,alreadyCurrentPageMessage:r=t,missingUrlMessage:n="Ürün sayfasını açmak için ürün bağlantısı gerekiyor."}={}){const o=new URL(e).origin;return async function(a={}){const s=a.product||{},c=Fn(a.url||a.productUrl||s.url,e,o),u=a.sku||s.sku||null;return c?iu(c)?{ok:!0,sku:u,url:c,method:"already-current-page",alreadyCurrentPage:!0,message:r||t}:(Dn(c),{ok:!0,sku:u,url:c,method:"browser-navigation",message:t}):{ok:!1,sku:u,reason:"missing-url",message:n}}}function Fn(e,t,r=new URL(t).origin){if(!e)return"";try{const n=new URL(e,t);return n.protocol!=="https:"||n.origin!==r?"":(n.hash="",n.href)}catch{return""}}function Dn(e){if(typeof document>"u"){window.location.href=e;return}const t=document.createElement("a");t.href=e,t.target="_self",t.rel="noreferrer",t.style.display="none",document.body.appendChild(t),t.click(),t.remove(),setTimeout(()=>{window.location.href!==e&&window.location.assign(e)},0)}function iu(e){try{const t=new URL(globalThis.window?.location?.href||"",e),r=new URL(e,t.href);return t.hash="",r.hash="",t.href===r.href}catch{return!1}}function au(e,{screenSummary:t}={}){return{panel:{...e?.panel||{},screen_type:"homepage",screen_sku_list:[],screen_summary:t||null,last_search_products:[],last_search:null,chat_mentioned_skus:[],reviews_summary_skus:[],ai_plist_summary:null,search_suggestions_skus:[],list_source:null,active_product_panel:!1,assistant_mode:"shopping",redirected_agent_state:null,ui_hints:null}}}function zn({patterns:e,messageFilter:t,messageNormalizer:r=o=>o,messageLimit:n=10}={}){const o={patterns:[...Ct,...Array.isArray(e)?e:[]]};function i(c){return jt(c,o)}function a(c){return nn(c,o)}function s(c=[]){const u=(Array.isArray(c)?c:[]).filter(l=>typeof t=="function"?t(l):l&&typeof l=="object").filter(Boolean);return(Number.isFinite(n)&&n>0?u.slice(-n):u).map(l=>({role:l.role,content:i(r(l.content)).slice(0,1e3)}))}return{redactPii:i,anonymousRequestText:a,anonymizeMessages:s}}function su(e){return String(e||"").replace(/<script\b[\s\S]*?<\/script>/giu," ").replace(/<style\b[\s\S]*?<\/style>/giu," ").replace(/<[^>]+>/gu," ").replace(/&nbsp;/giu," ").replace(/&amp;/giu,"&").replace(/&lt;|&gt;/giu," ").replace(/\s+/gu," ").trim()}function Gn({accountId:e,supplied:t=[],pageProduct:r=null,listingProducts:n=[],skus:o=[],limit:i=4,storedProducts:a=[],getStoredPanelProducts:s}={}){const c=Kn(o),u=Array.isArray(n)?n:[],l=typeof s=="function"?s({accountId:e,visibleProducts:u}):a;return Vn([...Ge(t),...Ge(l),r,...u],{skus:c,limit:i})}function cu({accountId:e,rootUrl:t,getProduct:r,getProducts:n,getStoredPanelProducts:o,limit:i=4}={}){return async function(s={}){return{accountId:e,products:Gn({accountId:e,supplied:Array.isArray(s.products)?s.products:[],pageProduct:r?.(),listingProducts:n?.(),getStoredPanelProducts:o,skus:s.skus||s.sku_list||[],limit:i}),rootUrl:t}}}function Vn(e,{skus:t=[],limit:r=4}={}){const n=new Set(Kn(t)),o=new Set,i=[];for(const a of Ge(e)){if(!a)continue;const s=ze(a?.sku);if(n.size&&!n.has(s))continue;const c=s||ze(a?.url)||ze(a?.name||a?.title);if(!(c&&o.has(c))&&(c&&o.add(c),i.push(a),i.length>=r))break}return i}function Kn(e){return Ge(e).map(ze).filter(Boolean)}function ze(e){return String(e||"").trim()}function Ge(e){return Array.isArray(e)?e.filter(Boolean):e?[e]:[]}var L={features:18,reviews:4,qna:4,sellers:4,variants:12,documents:6,textBlocks:6,relatedProducts:8,textChars:220},Gt={description:/\b(?:description|details|product information|urun bilgisi|urun aciklamasi|açıklama|aciklama)\b/iu,seller:/\b(?:seller|merchant|store|satici|satıcı|magaza|mağaza)\b/iu,review:/\b(?:review|reviews|rating|ratings|yorum|degerlendirme|değerlendirme|puan)\b/iu,qna:/\b(?:questions?|answers?|qna|q&a|soru|cevap)\b/iu,payment:/\b(?:installment|instalment|payment|pay in|taksit|odeme|ödeme|vade)\b/iu,delivery:/\b(?:delivery|shipping|cargo|stock|availability|teslimat|kargo|stok|gonderim|gönderim)\b/iu,promotion:/\b(?:campaign|promotion|discount|coupon|deal|kampanya|indirim|kupon|firsat|fırsat)\b/iu,variant:/\b(?:variant|size|colour|color|beden|olcu|ölçü|renk|numara)\b/iu},uu=/[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}|\+?\d[\d\s().-]{8,}\d|\b[A-Z]{1,2}\d[A-Z\d]?\s*\d[A-Z]{2}\b|\b(?:token|session|csrf|secret)\s*[:=]\s*[\w.-]+/giu,lu=/(?:token|session|sid|auth|code|csrf|secret|key|password|passwd|phone|email|address|postcode|zip|jwt|bearer)/iu,du=/[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}|\+?\d[\d\s().-]{8,}\d|[A-Z]{1,2}\d[A-Z\d]?\s*\d[A-Z]{2}|[A-Za-z0-9_-]{24,}/iu;function Hn({accountId:e,getPageType:t,getProduct:r,getProducts:n,normalizeProduct:o=i=>i}){return(i={})=>Wn({accountId:e,getPageType:t,getProduct:r,getProducts:n,normalizeProduct:o,input:i})}function Wn({accountId:e,getPageType:t,getProduct:r,getProducts:n,normalizeProduct:o=a=>a,input:i={}}){const a=$u(i),s=o(i.product||Zt(r)),c=(Zt(n)||[]).map(o).filter(Boolean),u=C(i.sku||s?.sku||i.product?.sku),l=u?c.find(J=>C(J?.sku)===u)||s:s||c[0]||null,f=gu(u||l?.sku),g=ro({...f.product,...l}),p=Jt(Ke(l?.features),Ke(l?.specs),Tu(l?.facet_hits),Ke(f.product?.features),hu(),bu(),wu()).slice(0,a.features),y=Yn(He(l?.reviews),f.reviews,ku()).slice(0,a.reviews),h=Qn(Kt(l?.qna),Su()).slice(0,a.qna),m=Xn(Ht(l?.sellers),_u()).slice(0,a.sellers),b=ee([...l?.payment||[],...Ve("payment",a)]),w=ee([...l?.delivery||[],...Ve("delivery",a)]),A=ee([...l?.promotions||[],...Ve("promotion",a)]),_=eo(Wt(l?.variants),vu()).slice(0,a.variants),O=Au(a.documents),v=no(l?.description,f.product?.description,xu("description"),Ve("description",{...a,textBlocks:2})[0]),M=c.filter(J=>!u||C(J?.sku)!==u).map(ro).filter(Boolean).slice(0,a.relatedProducts);return me({accountId:e,pageType:Zt(t)||"other",url:Nu(),product:g,description:v,features:p,sellers:m,reviews:y,qna:h,rating:B(l?.rating??f.rating),review_count:B(l?.review_count??f.review_count),payment:b,delivery:w,promotions:A,variants:_,documents:O,related_products:M,capabilities:Lu({description:v,features:p,sellers:m,reviews:y,qna:h,payment:b,delivery:w,promotions:A,variants:_,documents:O,relatedProducts:M}),privacy:{browserLocal:!0,rawHtml:!1,formValues:!1,cookies:!1,storage:!1,redacted:!0}})}function fu(e,t){const r=Array.isArray(e)?e.filter(Boolean):[];if(!t||typeof t!="object"||!r.length)return r;const n=C(t.product?.sku);return r.map((o,i)=>{const a=C(o?.sku);return r.length===1||n&&a&&n===a||i===0?mu(o,t):o})}function Jn(e){return!e||typeof e!="object"?null:me({product:e.product,description:x(e.description,500),features:Cu(e.features,14),sellers:Ru(e.sellers,4),reviews:Pu(e.reviews,4),qna:ju(e.qna,4),rating:e.rating,review_count:e.review_count,payment:Q(e.payment,5,160),delivery:Q(e.delivery,5,160),promotions:Q(e.promotions,5,160),variants:Iu(e.variants,10),documents:Q(e.documents,5,220),capabilities:Array.isArray(e.capabilities)?e.capabilities.slice(0,12):void 0})}function pu(e,t,r={}){const n=Jn(e);if(!n)return t;const o=String(r.locale||"").toLowerCase().startsWith("en"),i=[],a=[n.rating?`${n.rating}/5`:"",n.review_count?`${n.review_count} ${o?"reviews":"yorum"}`:""].filter(Boolean).join(", ");return a&&i.push(o?`Visible rating: ${a}.`:`Görünür puan bilgisi: ${a}.`),n.reviews?.length&&i.push(`${o?"Visible review highlights":"Görünür yorumlardan öne çıkanlar"}: ${n.reviews.map(s=>[s.star?`${s.star}/5`:"",s.content].filter(Boolean).join(" ")).filter(Boolean).slice(0,3).join(" | ")}.`),i.length?(i.push(o?"This summary only uses product review and rating fields visible in the browser.":"Bu özet yalnızca tarayıcıda görünen ürün yorumu ve puan alanlarından hazırlandı."),i.join(" ")):t}function mu(e,t){return me({...e,description:no(e.description,t.description),features:Jt(Ke(e.features),t.features).slice(0,24),specs:e.specs||(t.features?.length?Object.fromEntries(t.features.map(Ou)):void 0),sellers:Xn(Ht(e.sellers),t.sellers),reviews:Yn(He(e.reviews),t.reviews),qna:Qn(Kt(e.qna),t.qna),rating:e.rating??t.rating,review_count:e.review_count??t.review_count,payment:ee([...e.payment||[],...t.payment||[]]),delivery:ee([...e.delivery||[],...t.delivery||[]]),promotions:ee([...e.promotions||[],...t.promotions||[]]),variants:eo(Wt(e.variants),t.variants),documents:ee([...e.documents||[],...t.documents||[]])})}function gu(e){const t=[];for(const o of D('script[type="application/ld+json"]')){const i=yu(o.textContent);for(const a of Vt(i))String(a?.["@type"]||"").toLowerCase()==="product"&&t.push(a)}const r=t.find(o=>C(o.sku||o.productID||o.mpn)===C(e))||t[0];if(!r)return{};const n=r.aggregateRating||{};return{product:me({sku:C(r.sku||r.productID||r.mpn),name:S(r.name),brand:S(r.brand?.name||r.brand),description:S(r.description),images:Q(r.image,8,280),url:Ee(r.url),rating:B(n.ratingValue),review_count:B(n.reviewCount||n.ratingCount)}),reviews:He(r.review),rating:B(n.ratingValue),review_count:B(n.reviewCount||n.ratingCount)}}function Vt(e){return Array.isArray(e)?e.flatMap(Vt):!e||typeof e!="object"?[]:[e,...Vt(e["@graph"])]}function yu(e){try{return JSON.parse(String(e||""))}catch{return null}}function hu(){const e=[];for(const t of D("table tr")){const r=[...t.querySelectorAll?.("th,td")||[]].map(n=>S(n.textContent));r.length>=2&&r[0]&&r[1]&&e.push({key:r[0],value:r.slice(1).join(" ")})}return e}function bu(){const e=[];for(const t of D("dt")){const r=S(t.textContent),n=S(t.nextElementSibling?.matches?.("dd")?t.nextElementSibling.textContent:"");r&&n&&e.push({key:r,value:n})}return e}function wu(){return D('[class*="spec" i], [class*="feature" i], [class*="attribute" i], li').map(e=>Zn(S(e.textContent))).filter(Boolean).slice(0,L.features)}function ku(){return D('[class*="review" i], [data-review], [itemprop="review"]').map(e=>{const t=S(e.textContent);return!t||t.length<8||Gt.qna.test(t)?null:{content:x(t,260),star:B(e.getAttribute?.("data-rating"))}}).filter(Boolean)}function Su(){const e=D('[class*="question" i], [class*="answer" i], [data-question], [data-answer]'),t=[];for(const r of e){const n=S(r.textContent);if(!n||!Gt.qna.test(n))continue;const o=S(r.getAttribute?.("data-question")||n),i=S(r.getAttribute?.("data-answer")||r.nextElementSibling?.textContent||"");t.push({question:x(o,220),answer:x(i,260)})}return t}function _u(){return D('[class*="seller" i], [class*="merchant" i], [data-seller], [data-merchant]').map(e=>S(e.getAttribute?.("data-seller")||e.getAttribute?.("data-merchant")||e.textContent)).filter(Boolean).map(e=>({merchant:x(e,120)}))}function vu(){return D('[class*="variant" i] a,[class*="variant" i] button,[class*="size" i] button,[class*="color" i] button,[data-variant],[data-size],[data-color]').map(e=>me({name:x(oo(e),120),value:x(e.getAttribute?.("data-value")||e.getAttribute?.("data-size")||e.getAttribute?.("data-color"),120),sku:C(e.getAttribute?.("data-sku")||e.getAttribute?.("data-product-id")),url:Ee(e.getAttribute?.("href")),in_stock:e.getAttribute?.("disabled")==null&&e.getAttribute?.("aria-disabled")!=="true"})).filter(e=>e.name||e.value||e.sku)}function Au(e){return D("a[href]").filter(t=>/\.pdf(?:$|[?#])/iu.test(t.getAttribute?.("href")||"")).map(t=>{const r=oo(t)||"PDF",n=Ee(t.getAttribute?.("href"));return n?`${r}: ${n}`:""}).filter(Boolean).slice(0,e)}function Ve(e,t){const r=Gt[e];return r?D("section,article,div,li,p,span,button,a").map(n=>S(n.textContent)).filter(n=>n&&r.test(n)&&n.length<=900).map(n=>x(n,t.textChars||L.textChars)).filter(to()).slice(0,t.textBlocks||L.textBlocks):[]}function xu(e){return S(document.querySelector?.(`meta[name="${e}"]`)?.getAttribute?.("content")||document.querySelector?.(`meta[property="og:${e}"]`)?.getAttribute?.("content"))}function D(e){try{return[...document.querySelectorAll?.(e)||[]].filter(Eu)}catch{return[]}}function Eu(e){if(!e)return!1;if(!e.getBoundingClientRect)return!0;const t=e.getBoundingClientRect();if(t.width<=0||t.height<=0)return!1;const r=window.getComputedStyle?.(e);return!r||r.visibility!=="hidden"&&r.display!=="none"&&Number(r.opacity||1)>0}function Ke(e){return e?(Array.isArray(e)?e:Object.entries(e).map(([t,r])=>({key:t,value:r}))).map(t=>typeof t=="string"?Zn(t)||{key:"",value:S(t)}:{key:S(t.key||t.name||t.label),value:S(t.value||t.text||"")}).filter(t=>t.key||t.value):[]}function Tu(e){return!e||typeof e!="object"?[]:Object.entries(e).map(([t,r])=>({key:S(t),value:S(r)}))}function Zn(e){const t=/^(.{2,80}?)\s*[::]\s*(.{1,220})$/u.exec(S(e));return t?{key:t[1],value:t[2]}:null}function He(e){return(Array.isArray(e)?e:e?[e]:[]).map(t=>typeof t=="string"?{content:x(t,260)}:{content:x(t.content||t.reviewBody||t.description||t.text,260),star:B(t.star||t.rating||t.reviewRating?.ratingValue)}).filter(t=>t.content||t.star)}function Kt(e){return(Array.isArray(e)?e:e?[e]:[]).map(t=>({question:x(t.question||t.name||"",220),answer:x(t.answer||t.acceptedAnswer?.text||t.text||"",260)})).filter(t=>t.question||t.answer)}function Ht(e){return(Array.isArray(e)?e:e?[e]:[]).map(t=>typeof t=="string"?{merchant:x(t,120)}:{merchant:x(t.merchant||t.name||t.seller||"",120),merchant_id:C(t.merchant_id||t.id||""),merchant_rating:B(t.merchant_rating||t.rating),price_offer:B(t.price_offer||t.price)}).filter(t=>t.merchant||t.merchant_id)}function Wt(e){return(Array.isArray(e)?e:e?[e]:[]).map(t=>({name:x(t.name||t.label||t.title||"",120),value:x(t.value||t.size||t.color||"",120),sku:C(t.sku||t.code||""),url:Ee(t.url),in_stock:t.in_stock})).filter(t=>t.name||t.value||t.sku||t.url)}function Jt(...e){const t=new Set,r=[];for(const n of e.flat().filter(Boolean)){const o={key:x(n.key||n.name||"",90),value:x(n.value||n.text||"",180)},i=`${o.key}:${o.value}`.toLocaleLowerCase("tr-TR");!o.key&&!o.value||t.has(i)||(t.add(i),r.push(o))}return r}function Yn(...e){return We(e.flat().filter(Boolean),t=>`${t.star||""}:${t.content||""}`)}function Qn(...e){return We(e.flat().filter(Boolean),t=>`${t.question||""}:${t.answer||""}`)}function Xn(...e){return We(e.flat().filter(Boolean),t=>`${t.merchant||""}:${t.merchant_id||""}`)}function eo(...e){return We(e.flat().filter(Boolean),t=>`${t.sku||""}:${t.name||""}:${t.value||""}`)}function We(e,t){const r=new Set;return e.filter(n=>{const o=t(n).toLocaleLowerCase("tr-TR");return!o.trim()||r.has(o)?!1:(r.add(o),!0)})}function ee(e){return Q(e,20,L.textChars)}function Q(e,t,r){return(Array.isArray(e)?e:e?[e]:[]).map(n=>x(n,r)).filter(Boolean).filter(to()).slice(0,t)}function to(){const e=new Set;return t=>{const r=S(t).toLocaleLowerCase("tr-TR");return!r||e.has(r)?!1:(e.add(r),!0)}}function Cu(e,t){return Jt(e).slice(0,t)}function Pu(e,t){return He(e).slice(0,t)}function ju(e,t){return Kt(e).slice(0,t)}function Ru(e,t){return Ht(e).slice(0,t)}function Iu(e,t){return Wt(e).slice(0,t)}function ro(e){return!e||typeof e!="object"?null:me({sku:C(e.sku||e.id||""),group_id:C(e.group_id||e.groupId||""),name:S(e.name||e.title||""),brand:S(e.brand||""),url:Ee(e.url),images:Q(e.images||e.image,8,280),price:B(e.price),price_discounted:B(e.price_discounted||e.discountedPrice),price_text:S(e.price_text||e.priceText||""),price_currency:S(e.price_currency||e.currency||""),category_ids:Bu(e.category_ids||e.categoryIds,8,90),category_names:Q(e.category_names||e.categoryNames||e.category,8,140),in_stock:e.in_stock})}function Lu(e){return[e.description?"description":"",e.features?.length?"features":"",e.sellers?.length?"seller":"",e.reviews?.length||e.rating||e.review_count?"reviews_ratings":"",e.qna?.length?"qna":"",e.payment?.length?"installment_payment":"",e.delivery?.length?"shipping_delivery_stock":"",e.promotions?.length?"campaigns_promotions":"",e.variants?.length?"variants":"",e.documents?.length?"documents":"",e.relatedProducts?.length?"related_products":""].filter(Boolean)}function Ou(e){return[S(e.key||e.name),S(e.value||e.text)]}function no(...e){return e.map(t=>x(t,700)).find(Boolean)||""}function x(e,t){return S(e).slice(0,t)}function oo(e){return S(e.getAttribute?.("aria-label")||e.getAttribute?.("title")||e.getAttribute?.("alt")||e.textContent)}function S(e){return String(e??"").replace(/<script\b[\s\S]*?<\/script>/giu," ").replace(/<style\b[\s\S]*?<\/style>/giu," ").replace(/<[^>]+>/gu," ").replace(uu,"[redacted]").replace(/\s+/gu," ").trim()}function C(e){const t=String(e??"").replace(/<script\b[\s\S]*?<\/script>/giu," ").replace(/<style\b[\s\S]*?<\/style>/giu," ").replace(/<[^>]+>/gu," ").replace(/\s+/gu," ").trim();return!t||/[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}/iu.test(t)||/\b(?:token|session|csrf|secret|password|passwd|jwt|bearer)\s*[:=]\s*[\w.-]+/iu.test(t)?"":t.slice(0,120)}function Bu(e,t,r){return(Array.isArray(e)?e:e?[e]:[]).map(n=>C(n).slice(0,r)).filter(Boolean).filter(Mu()).slice(0,t)}function Mu(){const e=new Set;return t=>{const r=C(t).toLocaleLowerCase("tr-TR");return!r||e.has(r)?!1:(e.add(r),!0)}}function B(e){const t=Number(String(e??"").replace(",","."));return Number.isFinite(t)&&t>0?t:void 0}function Ee(e){if(!e)return"";try{const t=new URL(e,window.location.href);return/^https?:$/u.test(t.protocol)?(t.hash="",io(t),t.href):""}catch{return""}}function Nu(){try{const e=new URL(window.location.href);return e.hash="",io(e),`${e.origin}${e.pathname}${e.search}`}catch{return""}}function io(e){for(const[t,r]of[...e.searchParams.entries()]){const n=String(r||"");(lu.test(t)||du.test(n))&&e.searchParams.set(t,"redacted")}return e}function $u(e={}){return{features:H(e.maxFeatures,L.features,40),reviews:H(e.maxReviews,L.reviews,12),qna:H(e.maxQna,L.qna,12),sellers:H(e.maxSellers,L.sellers,12),variants:H(e.maxVariants,L.variants,30),documents:H(e.maxDocuments,L.documents,12),textBlocks:H(e.maxTextBlocks,L.textBlocks,16),relatedProducts:H(e.maxRelatedProducts,L.relatedProducts,20),textChars:H(e.textChars,L.textChars,420)}}function H(e,t,r){const n=Number(e);return!Number.isFinite(n)||n<=0?t:Math.min(Math.floor(n),r)}function Zt(e){try{return typeof e=="function"?e():null}catch{return null}}function me(e){return Object.fromEntries(Object.entries(e||{}).filter(([,t])=>t!=null&&t!==""&&(!Array.isArray(t)||t.length)))}var{redactPii:qu,anonymousRequestText:Uu,anonymizeMessages:Fu}=zn({patterns:[{pattern:/\b\d{5}\b/gu,replacement:"[postcode]"},{pattern:/\b(?:adresim|adres|mahalle|sokak|cadde)\b[^,.!?\n]{8,160}/giu,replacement:"[address]"}]});function ao(e){return(e?.route?.flow_params&&typeof e.route.flow_params=="object"?e.route.flow_params:null)||(e?.route?.flowParams&&typeof e.route.flowParams=="object"?e.route.flowParams:null)||{}}function Du(e){return Array.isArray(e)?e.find(t=>String(t||"").trim()):void 0}function zu(e){const t=ao(e);return[...t.sku?[t.sku]:[],...Array.isArray(t.sku_list)?t.sku_list:[],...Array.isArray(t.skus)?t.skus:[],...Array.isArray(t.target_skus)?t.target_skus:[]].map(r=>String(r||"").trim()).filter(Boolean).filter((r,n,o)=>o.indexOf(r)===n)}var ge={headings:8,products:8,controls:12,textMatches:8,snippetChars:180},Je=/\b(?:checkout|payment|pay now|place order|delete|remove|confirm|submit|ödeme|odeme|siparişi tamamla|siparisi tamamla|satın al|satin al|sil|kaldır|kaldir|onayla|gönder|gonder)\b/iu,Gu=/(?:token|session|sid|auth|code|csrf|secret|key|password|passwd|phone|email|address|postcode|zip|jwt|bearer)/iu,Vu=/[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}|\+?\d[\d\s().-]{8,}\d|[A-Z]{1,2}\d[A-Z\d]?\s*\d[A-Z]{2}|[A-Za-z0-9_-]{24,}/iu,Ku={campaign:/\b(?:campaign|promotion|discount|deal|coupon|kampanya|indirim|firsat|fırsat|kupon)\b/iu,blog:/\b(?:blog|journal|guide|article|editorial|inspiration|rehber|makale|ilham|icerik|içerik)\b/iu,category:/\b(?:category|collection|department|kategori|koleksiyon|reyon)\b/iu};function Hu({accountId:e,getPageType:t,getProduct:r,getProducts:n,normalizeProduct:o=i=>i}){return{scanSite:(i={})=>Wu({accountId:e,getPageType:t,getProduct:r,getProducts:n,normalizeProduct:o,input:i}),siteGrep:(i={})=>Ju(i),discoverSiteContent:(i={})=>so(i,e),runSiteCommand:(i={})=>Zu(i),describeVisualContext:(i={})=>Yu(i,e),inspectProductSurface:Hn({accountId:e,getPageType:t,getProduct:r,getProducts:n,normalizeProduct:o}),getSiteCapabilities:()=>el(e)}}function Wu({accountId:e,getPageType:t,getProduct:r,getProducts:n,normalizeProduct:o,input:i}){const a=E(i.query||i.text||""),s=tr(i),c=nr(r),u=nr(n)||[];return rr({accountId:e,url:ml(),title:X(document.title||""),pageType:nr(t)||"other",viewport:gl(),product:co(o(c)),products:u.map(o).map(co).filter(Boolean).slice(0,s.products),content:i.includeContent===!1?void 0:so(i,e).items,headings:tl(s.headings),controls:i.includeControls===!1?void 0:rl(s.controls),textMatches:a?Yt(a,s):[],privacy:{rawHtml:!1,formValues:!1,redacted:!0,browserLocal:!0}})}function so(e={},t=""){const r=tr(e),n=new Set(il(e.kinds||e.kind)),o=nl(r.controls).filter(i=>!n.size||n.has(i.kind)).slice(0,r.controls);return{accountId:t,items:o,count:o.length,privacy:W()}}function Ju(e={}){const t=E(e.query||e.text||e.pattern||"");if(!t)return{ok:!1,matches:[],message:"Provide a query to scan visible page text.",privacy:W()};const r=Yt(t,tr(e));return{ok:r.length>0,query:t,matches:r,count:r.length,privacy:W()}}function Zu(e={}){const t=E(e.command||e.action||"").toLowerCase();return t==="scroll_to_text"||t==="scrolltotext"?Qu(e):t==="click_visible_text"||t==="clickvisibletext"?Xu(e):t==="scroll_top"||t==="scrolltotop"?(window.scrollTo({top:0,behavior:"smooth"}),{ok:!0,command:"scroll_top",message:"Scrolled to the top of the page.",privacy:W()}):{ok:!1,command:t,message:"Supported commands are scroll_to_text, click_visible_text, and scroll_top.",privacy:W()}}function Yu(e={},t){const r=e.visual_consent===!0||e.visualConsent===!0||e.consent===!0,n=r?sl(e.visual_observations||e.visualObservations):[],o=al(Number(e.maxImages||8));return{accountId:t,ok:r||o.length>0,consentedObservations:n,visibleImages:o,message:cl({consented:r,observations:n,visibleImages:o}),privacy:{rawHtml:!1,formValues:!1,screenshotPixels:!1,redacted:!0,browserLocal:!0,requiresConsentForExternalVisualFacts:!0}}}function Qu(e){const t=E(e.query||e.text||e.label||""),r=t?dl(t):null;return r?(r.scrollIntoView({block:"center",inline:"nearest",behavior:"smooth"}),{ok:!0,command:"scroll_to_text",label:ye(r),message:"Scrolled to the matching page area.",privacy:W()}):{ok:!1,command:"scroll_to_text",message:"No visible matching text found."}}function Xu(e){const t=E(e.label||e.query||e.text||"");if(!t)return{ok:!1,command:"click_visible_text",message:"Provide a visible label to click."};if(Je.test(t))return{ok:!1,blocked:!0,command:"click_visible_text",message:"This looks like a checkout, payment, destructive, or final confirmation action, so it was not clicked.",privacy:W()};const r=ll(t);if(!r)return{ok:!1,command:"click_visible_text",message:"No safe visible clickable control found."};const n=ye(r);return Je.test(n)?{ok:!1,blocked:!0,command:"click_visible_text",label:n,message:"The matched control is blocked by the safe-click policy.",privacy:W()}:(r.click(),{ok:!0,command:"click_visible_text",label:n,message:"Clicked the safe visible control.",privacy:W()})}function el(e){return{accountId:e,tools:["scanSite","siteGrep","discoverSiteContent","runSiteCommand","describeVisualContext","inspectProductSurface"],commands:{scanSite:"Returns a compact browser-local summary of page type, title, headings, products, controls, and matching visible text.",siteGrep:"Finds capped visible text snippets by plain query, like grep for the rendered page.",discoverSiteContent:"Returns visible campaign, blog/editorial, and category/content links as compact browser-local metadata.",runSiteCommand:"Runs guarded browser-local page commands: scroll_to_text, click_visible_text, scroll_top. Checkout, payment, destructive, and final-confirm controls are blocked.",describeVisualContext:"Summarizes visible image metadata and explicit shopper-consented redacted visual observations without capturing screenshots or pixels.",inspectProductSurface:"Returns compact GSS-style product detail evidence visible in the browser: description, specs, seller, QNA, reviews/ratings, installment/payment, shipping/stock, campaigns, variants, documents, and related visible products."},privacy:["Runs in the shopper browser.","Does not return raw HTML, cookies, storage, hidden text, or form values.","Redacts emails, phone numbers, tokens, and address-like postal snippets before returning text.","Returns compact capped snippets only.","Does not send screenshots or pixels implicitly; external visual observations must be explicitly consented."]}}function tl(e){return[...document.querySelectorAll('h1,h2,h3,[role="heading"]')].filter(te).map(t=>X(E(t.textContent))).filter(Boolean).slice(0,e)}function rl(e){return[...document.querySelectorAll('button,a,[role="button"],summary,input[type="button"],input[type="submit"]')].filter(te).map(t=>({label:ye(t),tag:t.tagName?.toLowerCase(),role:t.getAttribute?.("role")||null,href:uo(t),safeClick:!Je.test(ye(t))})).filter(t=>t.label).filter(Ze(t=>`${t.tag}:${t.label}:${t.href||""}`)).slice(0,e)}function nl(e){return[...document.querySelectorAll('a[href],button,[role="button"],summary')].filter(te).map(t=>{const r=ye(t),n=uo(t),o=ol([r,n,Qt(t)].join(" "));return o?rr({kind:o,label:r,href:n,heading:Qt(t),safeClick:!Je.test(r)}):null}).filter(Boolean).filter(Ze(t=>`${t.kind}:${t.label}:${t.href||""}`)).slice(0,Math.max(1,Math.min(e,30)))}function ol(e){for(const[t,r]of Object.entries(Ku))if(r.test(e))return t;return""}function il(e){return(Array.isArray(e)?e:String(e||"").split(/[,|]/u)).map(t=>E(t).toLowerCase()).filter(Boolean)}function Yt(e,t){const r=e.toLocaleLowerCase("tr-TR");return ul(document.body).map(n=>({node:n,text:E(n.nodeValue||"")})).filter(({text:n})=>n&&n.toLocaleLowerCase("tr-TR").includes(r)).map(({node:n,text:o})=>({snippet:fl(o,e,t.snippetChars),tag:n.parentElement?.tagName?.toLowerCase()||"",heading:Qt(n.parentElement)})).filter(n=>n.snippet).filter(Ze(n=>n.snippet)).slice(0,t.textMatches)}function al(e){return[...document.querySelectorAll("img")].filter(te).map(t=>({alt:X(E(t.getAttribute("alt")||t.getAttribute("aria-label")||"")),title:X(E(t.getAttribute("title")||"")),src:Xt(t.currentSrc||t.getAttribute("src")),width:Math.round(t.getBoundingClientRect().width),height:Math.round(t.getBoundingClientRect().height)})).filter(t=>t.alt||t.title||t.src).filter(Ze(t=>`${t.alt}:${t.title}:${t.src}`)).slice(0,Math.max(1,Math.min(Number.isFinite(e)&&e>0?Math.floor(e):8,20)))}function sl(e){return(Array.isArray(e)?e:String(e||"").split(/\n|;|\|/u)).map(t=>X(t).slice(0,180)).filter(Boolean).slice(0,8)}function cl({consented:e,observations:t,visibleImages:r}){const n=[];if(t.length&&n.push(`Consented visual observations: ${t.slice(0,3).join(" | ")}.`),r.length){const o=r.map(i=>i.alt||i.title).filter(Boolean).slice(0,3);n.push(o.length?`Visible image labels: ${o.join(", ")}.`:`${r.length} visible images found.`)}return!n.length&&!e&&n.push("I can use visible image labels, but external visual observations need explicit shopper consent."),n.push("No screenshots or pixels were captured or sent."),n.join(" ")}function ul(e){if(!e)return[];const t=document.createTreeWalker(e,NodeFilter.SHOW_TEXT,{acceptNode(n){const o=n.parentElement;return!o||!te(o)||/^(script|style|noscript|template|svg)$/iu.test(o.tagName||"")||pl(o)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT}}),r=[];for(;r.length<500;){const n=t.nextNode();if(!n)break;r.push(n)}return r}function ll(e){return[...document.querySelectorAll('button,a,[role="button"],summary,input[type="button"],input[type="submit"]')].filter(te).find(t=>ye(t).toLocaleLowerCase("tr-TR").includes(e.toLocaleLowerCase("tr-TR")))}function dl(e){const t=Yt(e,{...ge,textMatches:1})[0];return t?[...document.querySelectorAll("body *")].filter(te).find(r=>E(r.textContent).includes(t.snippet.slice(0,24))):null}function ye(e){return e?X(E(e.getAttribute?.("aria-label")||e.getAttribute?.("title")||e.getAttribute?.("alt")||e.value||e.textContent||"")).slice(0,90):""}function Qt(e){let t=e;for(let r=0;t&&r<5;r+=1){const n=E((t.matches?.('h1,h2,h3,[role="heading"]')?t:t.querySelector?.('h1,h2,h3,[role="heading"]'))?.textContent||"");if(n)return X(n).slice(0,90);t=t.parentElement}return""}function co(e){return e?rr({sku:E(e.sku||e.id||""),name:E(e.name||e.title||""),url:Xt(e.url),price_text:E(e.price_text||e.priceText||""),price:e.price,currency:e.price_currency||e.currency,in_stock:e.in_stock,category:E(e.category||"")}):null}function fl(e,t,r){const n=X(e),o=n.toLocaleLowerCase("tr-TR").indexOf(t.toLocaleLowerCase("tr-TR")),i=Math.max(0,o-Math.floor(r/3));return n.slice(i,i+r).trim()}function te(e){if(!e||!e.getBoundingClientRect)return!1;const t=e.getBoundingClientRect();if(t.width<=0||t.height<=0)return!1;const r=window.getComputedStyle(e);return r.visibility!=="hidden"&&r.display!=="none"&&Number(r.opacity||1)>0}function pl(e){return!!e.closest?.('input,textarea,select,[contenteditable="true"]')}function uo(e){return e.tagName?.toLowerCase()!=="a"?null:Xt(e.getAttribute("href"))}function Xt(e){if(!e)return"";try{const t=new URL(e,window.location.href);return/^https?:$/u.test(t.protocol)?(t.hash="",er(t),t.href):""}catch{return""}}function ml(){const e=new URL(window.location.href);return er(e),`${e.origin}${e.pathname}${e.search}`}function gl(){return{width:window.innerWidth,height:window.innerHeight,scrollY:Math.round(window.scrollY||0),documentHeight:Math.round(document.documentElement?.scrollHeight||0)}}function X(e){return E(e).replace(/https?:\/\/[^\s?#]+(?:\?[^#\s]*)?/giu,yl).replace(/[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}/giu,"<email>").replace(/\b(?:\+?\d[\d\s().-]{8,}\d)\b/gu,"<phone>").replace(/\b[A-Z]{1,2}\d[A-Z\d]?\s*\d[A-Z]{2}\b/giu,"<postcode>").replace(/\btoken\s*=\s*[\w.-]+/giu,"token=<redacted>").replace(/\b(?:api[_-]?key|session|csrf|secret)\s*[:=]\s*[\w.-]+/giu,"<secret>")}function yl(e){try{const t=new URL(e);return t.hash="",er(t),t.href}catch{return String(e||"").replace(/\?[^#\s]*/u,"?redacted")}}function er(e){for(const[t,r]of[...e.searchParams.entries()]){const n=String(r||"");(Gu.test(t)||Vu.test(n))&&e.searchParams.set(t,"redacted")}return e}function E(e){return String(e||"").replace(/\s+/gu," ").trim()}function tr(e){return{headings:Te(e.maxHeadings,ge.headings,20),products:Te(e.maxProducts,ge.products,20),controls:Te(e.maxControls,ge.controls,30),textMatches:Te(e.maxMatches||e.limit,ge.textMatches,20),snippetChars:Te(e.snippetChars,ge.snippetChars,320)}}function Te(e,t,r){const n=Number(e);return!Number.isFinite(n)||n<=0?t:Math.min(Math.floor(n),r)}function W(){return{rawHtml:!1,formValues:!1,redacted:!0,browserLocal:!0}}function rr(e){return Object.fromEntries(Object.entries(e).filter(([,t])=>t!=null))}function nr(e){try{return typeof e=="function"?e():null}catch{return null}}function Ze(e){const t=new Set;return r=>{const n=e(r);return!n||t.has(n)?!1:(t.add(n),!0)}}d.AgentError=z,d.ContextStore=fr,d.FALLBACK_STATUS=Uc,d.action=ki,d.actionButtonsUiSpec=Ya,d.alignProductsToTable=Yr,d.anonymousRequestText=nn,d.beErrorToAgentError=ut,d.buildActivityVisualization=mn,d.buildPhotoSimilarityProfile=is,d.buildProductSimilarityProfile=ce,d.buildSimilarityQueries=as,d.canUseModuleWorker=xt,d.caughtToStreamError=hr,d.compactAccountConfig=on,d.compactContextProducts=Ua,d.compactObject=nu,d.compactProductSurfaceForLlm=Jn,d.comparisonResultForUi=Va,d.comparisonUiSpec=Ja,d.createActivityCollector=cn,d.createBrowserMemory=At,d.createDiagnosticsTool=Ls,d.createEndpointCachePolicies=Xa,d.createEndpointHandlers=es,d.createFlow=Qa,d.createGssToolAliases=Jc,d.createIframeScraper=tu,d.createInjectorAdapter=Lr,d.createLocalRefStore=ir,d.createMainThreadInjectorAdapter=Br,d.createModuleWorker=Zr,d.createOpenProductPageTool=ou,d.createPrivacyHelpers=zn,d.createProductSurfaceInspector=Hn,d.createReadPageStep=zc,d.createReadPageTool=Is,d.createResolveProductsTool=cu,d.createSiteAwarenessTools=Hu,d.declarativeBeOpCache=$n,d.defaultPiiPatternPack=Pt,d.defaultPiiPatterns=Ct,d.done=ft,d.elapsedMs=q,d.endpointStableKey=Qr,d.error=vr,d.fallbackStatus=Fc,d.filterActivityEntries=En,d.firstArrayValue=Du,d.formatJsonHtml=jn,d.getOrCreateActivityCollector=un,d.groupForEntry=pn,d.gssSearchCapabilities=qn,d.homePanelReset=au,d.httpErrorToAgentError=yr,d.inputHashCachePolicy=Nn,d.inspectProductSurface=Wn,d.installActivityFetchPatch=wn,d.installBrowserTools=Rs,d.installFetchTransportBridge=wa,d.installIframeScraperBypass=ru,d.installLocalAgenticActivityDebug=Bc,d.isFallbackStatus=Dc,d.isRef=ar,d.jsonResponse=rs,d.llmCacheKey=pt,d.mergeProductSurfaceEvidence=fu,d.metadata=bi,d.mountAccount=qa,d.mountActivityOverlay=An,d.navigateSameTab=Dn,d.ndjsonResponse=ts,d.normalizeComparisonTable=Et,d.normalizeEntry=ln,d.normalizeProduct=Ie,d.normalizeSameOriginUrl=Fn,d.normalizeSimilarityText=V,d.nowIso=lr,d.plainMessageContent=su,d.productDetailsUiSpec=Wa,d.productFactsKey=vi,d.productSkuKey=_i,d.productSurfaceReviewText=pu,d.productsUiSpec=Ha,d.rankSimilarProducts=ss,d.rankSimilarProductsAsync=cs,d.recordBeDebugPayload=Mt,d.redactPii=jt,d.requestText=rn,d.resolveBeUrl=vs,d.resolveFlow=Ar,d.resolveProductCandidates=Gn,d.retailAnonymizeMessages=Fu,d.retailAnonymousRequestText=Uu,d.retailRedactPii=qu,d.routeFlowParams=ao,d.routeSkuList=zu,d.scoreSimilarityCandidate=Tt,d.sectionForKind=dn,d.setAssistantHostVisible=Ss,d.severityForEntry=fn,d.shouldInstallActivityDebug=Mn,d.stableKey=oe,d.startLazyRuntimeLoader=Os,d.stickyContextKey=it,d.summarizeDebugState=Ae,d.summarizePanelState=qe,d.summarizeUiSpec=It,d.textChunk=_r,d.textKey=Ai,d.tokenizeSimilarityText=N,d.trimProductFactsCore=Le,d.trimProductFactsListCore=Si,d.uiSpec=wi,d.uniqueProductsBySku=Vn,d.withAccountConfig=Cs,d.withDeclarativeBeOpCache=$c,d.wrapActivityBeacon=hn,d.wrapActivityTools=yn,d.wrapActivityTransport=bn})(this.Gengage=this.Gengage||{});
354
+ `}function Ht(e){try{return JSON.stringify(e,null,2)}catch{return String(e)}}function Gn(e){try{return new Date(e||Date.now()).toLocaleTimeString()}catch{return""}}function Yc(e,t){const r=String(e||"");return r.length>t?`${r.slice(0,t-1)}...`:r}function Hn(e){const t=String(e||"");return t?`${t.slice(0,1).toLocaleUpperCase("en-US")}${t.slice(1)}`:""}function me(e){return String(e||"").toLocaleLowerCase("en-US").replace(/[^a-z0-9]+/gu,"-").replace(/^-|-$/gu,"")}function He(e){return String(e).replace(/[&<>"']/gu,t=>t==="&"?"&amp;":t==="<"?"&lt;":t===">"?"&gt;":t==='"'?"&quot;":"&#39;")}function Qc({accountId:e,config:t={},tools:r,beacon:n}={}){if(!Vn(e,t))return{enabled:!1,tools:r,beacon:n,record(){},wrapTransport(){}};const o=wn(e);return window.__GENGAGE_AGENTIC_DEBUG_RECORD__=i=>Dt(o,i),window.__GENGAGE_AGENTIC_DEBUG_RECORD_BE__=i=>Dt(o,i),On(o),Pn({accountId:e,collector:o,promptBaseUrl:t.agenticActivityPromptBaseUrl}),o.record({kind:"runtime/debug-enabled",title:"Agentic activity debug enabled"}),{enabled:!0,collector:o,tools:xn(r,o),beacon:En(n,o),record:i=>o.record(i),wrapTransport:()=>Cn(e,o)}}function Vn(e,t={}){return t.agenticActivityDebug===!1?!1:t.agenticActivityDebug===!0||window.__GENGAGE_PWTEST_ACCOUNT__===e||window.__GENGAGE_AGENTIC_ACTIVITY_DEBUG__===!0?!0:!!(t.debug===!0&&Xc(e))}function Xc(e){return Array.from(document.scripts||[]).some(t=>{const r=t?.src||"";return r.includes(`/${e}/glov.js`)&&/[?&]pwtest=/u.test(r)})}var eu="input-hash";function Kn({ttlS:e,promptVersion:t="current"}={}){if(!Number.isFinite(e)||e<=0)throw new Error("inputHashCachePolicy requires a positive ttlS");return{strategy:eu,ttlS:e,promptVersion:t}}function Wn({accountId:e="",op:t,ttlS:r,promptVersion:n="current",input:o,keyParts:i,locale:a}={}){if(!t)throw new Error("declarativeBeOpCache requires an op");return{cache:Kn({ttlS:r,promptVersion:n}),cacheTtlS:r,cacheKey:(s={})=>bt(t,{account:e,locale:Vt(a,s)||s.context?.meta?.locale||s.locale||"",promptVersion:n,payload:Kt(Vt(o,s)),...ru(Vt(i,s))})}}function tu(e,t={}){return!e||e.kind!=="be_op"?e:{...e,...Wn({op:e.op,ttlS:e.cacheTtlS,input:e.input,...t})}}function Vt(e,t){return typeof e=="function"?e(t):e}function Kt(e){return Array.isArray(e)?e.map(Kt):!e||typeof e!="object"?e:Object.fromEntries(Object.entries(e).filter(([,t])=>t!==void 0).sort(([t],[r])=>t.localeCompare(r)).map(([t,r])=>[t,Kt(r)]))}function ru(e){return!e||typeof e!="object"||Array.isArray(e)?{}:Object.fromEntries(Object.entries(e).filter(([,t])=>t!=null))}var nu=Object.freeze({FALLBACK_RESULTS:"fallback_results",FALLBACK_NO_RESULTS:"fallback_no_results",FALLBACK_PARTIAL:"fallback_partial",OP_UNAVAILABLE:"op_unavailable"});function ou(e,t={}){return{status:e,...t}}function iu(e){return!!(e&&typeof e=="object"&&typeof e.status=="string")}function au(e){return function(){return[{kind:"tool",name:"readPage",input:()=>({}),out:"page",patch:(r,n)=>n?.product&&typeof e=="function"?e(r,n.product):null,onError:[]}]}}var su=["sku","group_id","name","brand","rating","review_count","cart_code","images","price_currency","price","price_discounted","discount_reason","url","category_ids","category_names","facet_hits","in_stock","promotions","variants"],cu=["description","description_html","features","service","sellers","reviews","qna","documents","delivery","payment"],uu=["accountId","query","products","pendingProducts","rankedSkus","facets","facetsUsed","available_facets","logs","meta"],lu=["source","sourceType","sourceProfile","products","queries","logs"],du=["items","kind","label","href","count","privacy"];function fu({accountId:e,search:t,facetedSearch:r,similaritySearch:n,searchGiftOptions:o,filters:i={},resultContract:a={},limitations:s=[],extraTools:c=[]}={}){return{searchKeyword:async(l={},f={})=>t(pu(l,f)),facetedSearch:typeof r=="function"?(l={},f={})=>r(Zn(l,f)):async(l={},f={})=>t(Zn(l,f)),getSearchCapabilities:()=>Jn({accountId:e,hasSimilarity:typeof n=="function",hasGiftSearch:typeof o=="function",filters:i,resultContract:a,limitations:s,extraTools:c})}}function Jn({accountId:e,hasSimilarity:t=!0,hasGiftSearch:r=!1,filters:n={},resultContract:o={},limitations:i=[],extraTools:a=[]}={}){return{accountId:e,tools:mu(["search","searchKeyword","facetedSearch",r?"searchGiftOptions":"",t?"similaritySearch":"","scanSite","siteGrep","discoverSiteContent","runSiteCommand","describeVisualContext","inspectProductSurface","openProductPage",...a].filter(Boolean)),filters:{query:"LLM-selected merchant search phrase or empty string when structured metadata is enough.",categoryId:"Optional native merchant category id selected from account metadata or visible page state.",categoryName:"Optional shopper-facing category label selected by the LLM/router.",categoryHints:"Optional category hints supplied by the LLM/router.",brandHints:"Optional brand hints supplied by the LLM/router.",featureHints:"Optional feature, material, style, size, compatibility, or project hints supplied by the LLM/router.",facets:"Optional structured facet array of { key, value } selected from route payloads or merchant metadata.",facetParams:"Optional native account facet map selected from account metadata.",priceMin:"Optional numeric lower price bound.",priceMax:"Optional numeric upper price bound.",...n},resultContract:{productItemFields:su,productDetailFields:cu,searchResultFields:uu,similarityResultFields:lu,siteContentFields:du,...o},privacy:["Runs in the shopper browser with merchant-origin state.","Does not expose raw HTML, cookies, storage, cart/session tokens, CSRF values, or form values.","Returns compact product, content, and visible-page facts only.","Free-text intent and search planning stay LLM-owned; runtime wrappers only forward structured inputs."],limitations:i}}function pu(e,t){return Wt(typeof e=="string"?{...t,query:e}:{...t,...e||{}})}function Zn(e,t){const r=typeof e=="string"?{query:e}:e||{},n=r.query??t.query??"",o=Wt({...t,...r,query:n,categoryId:r.categoryId??r.category_id??t.categoryId??t.category_id,categoryName:r.categoryName??r.category_name??t.categoryName??t.category_name,facets:r.facets??t.facets,facetParams:r.facetParams??r.facet_params??t.facetParams??t.facet_params,priceMin:r.priceMin??r.price_min??r.budgetMin??r.min_budget??t.priceMin,priceMax:r.priceMax??r.price_max??r.budgetMax??r.max_budget??t.priceMax,limit:r.limit??r.pageSize??t.limit??t.pageSize});return n===""&&(o.query=""),o}function mu(e){const t=new Set;return e.filter(r=>{const n=String(r||"");return!n||t.has(n)?!1:(t.add(n),!0)})}function Wt(e){return Object.fromEntries(Object.entries(e||{}).filter(([,t])=>t!=null&&t!==""&&(!Array.isArray(t)||t.length)))}var gu=15e3,yu="glov_agentic_iframe",hu="position:absolute;width:1px;height:1px;left:-9999px;top:-9999px;opacity:0;pointer-events:none;";function bu({markerParam:e=yu,markerValue:t="agentic-scraper",frameName:r=t,sandbox:n="allow-same-origin",timeoutMs:o=gu,hiddenStyle:i=hu,messageType:a,parser:s,isBlockedDocument:c}={}){const u=a||`gengage:agentic-iframe-scraper:${t}`;function l(g,h={}){const y=new URL(String(g),Jt());for(const[b,w]of Object.entries(h||{}))w!=null&&w!==""&&y.searchParams.set(b,String(w));return y.searchParams.set(e,t),y.href}function f(g=globalThis.window?.location,h=globalThis.window?.name||""){if(h===r||h===t)return!0;try{return new URL(g?.href||String(g||""),Jt()).searchParams.get(e)===t}catch{return!1}}async function m(g,h={},y={}){const b=y.parser||s,w=y.isBlockedDocument||c,A=globalThis.document,S=globalThis.window;if(!A?.body||typeof A.createElement!="function"||typeof A.body.appendChild!="function")return{attempted:!1,doc:null,result:null,blocked:!1,timedOut:!1,via:"unavailable"};const E=l(g),k=A.createElement("iframe");k.name=r;try{k.sandbox=n}catch{}return k.style&&(k.style.cssText=i),new Promise(M=>{let Z=!1;const et=typeof S?.addEventListener=="function"&&typeof S?.removeEventListener=="function",id=S.setTimeout(()=>{dr({attempted:!0,doc:null,result:null,blocked:!1,timedOut:!0,via:"timeout"})},o);function ad(){S.clearTimeout(id),et&&S.removeEventListener("message",xo),typeof k.remove=="function"&&k.remove()}function dr(Y){Z||(Z=!0,ad(),M(Y))}function xo(Y){if(Y.source&&k.contentWindow&&Y.source!==k.contentWindow)return;const ne=Y.data;!ne||ne.type!==u||ne.marker!==t||dr({attempted:!0,doc:null,result:ne.payload||null,blocked:!!ne.blocked,timedOut:!1,via:"postMessage"})}k.addEventListener("load",()=>{if(k.contentWindow?.location?.href!=="about:blank")try{const Y=k.contentDocument||k.contentWindow?.document||null,ne=!!w?.(Y);dr({attempted:!0,doc:Y,result:typeof b=="function"?b(Y,{url:E,input:h}):null,blocked:ne,timedOut:!1,via:"contentDocument"})}catch{}}),et&&S.addEventListener("message",xo),A.body.appendChild(k),k.src=E})}function p(g=s,{targetOrigin:h=Jt()}={}){const y=globalThis.window;if(!y?.parent||!f(y.location,y.name))return!1;const b=typeof g=="function"?g(globalThis.document,{url:y.location?.href||"",input:{}}):g;return y.parent.postMessage({type:u,marker:t,payload:b},h||"*"),!0}return{markerParam:e,markerValue:t,frameName:r,messageType:u,decorateUrl:l,isScraperFrame:f,load:m,postCurrentDocument:p}}function wu(e,{accountId:t,type:r="agenticSearchFrame"}={}){return e?.isScraperFrame?.()?(t&&globalThis.window&&(globalThis.window.GengageAssistantInjector||={},globalThis.window.GengageAssistantInjector[t]||={type:r}),!0):!1}function Jt(){return globalThis.window?.location?.origin||globalThis.location?.origin||"https://example.invalid"}function ku(e){return!e||typeof e!="object"||Array.isArray(e)?{}:Object.fromEntries(Object.entries(e).filter(([,t])=>t!=null&&t!==""&&(!Array.isArray(t)||t.length>0)))}function _u({rootUrl:e,successMessage:t,alreadyCurrentPageMessage:r=t,missingUrlMessage:n="Ürün sayfasını açmak için ürün bağlantısı gerekiyor."}={}){const o=new URL(e).origin;return async function(a={}){const s=a.product||{},c=Yn(a.url||a.productUrl||s.url,e,o),u=a.sku||s.sku||null;return c?Su(c)?{ok:!0,sku:u,url:c,method:"already-current-page",alreadyCurrentPage:!0,message:r||t}:(Qn(c),{ok:!0,sku:u,url:c,method:"browser-navigation",message:t}):{ok:!1,sku:u,reason:"missing-url",message:n}}}function Yn(e,t,r=new URL(t).origin){if(!e)return"";try{const n=new URL(e,t);return n.protocol!=="https:"||n.origin!==r?"":(n.hash="",n.href)}catch{return""}}function Qn(e){if(typeof document>"u"){window.location.href=e;return}const t=document.createElement("a");t.href=e,t.target="_self",t.rel="noreferrer",t.style.display="none",document.body.appendChild(t),t.click(),t.remove(),setTimeout(()=>{window.location.href!==e&&window.location.assign(e)},0)}function Su(e){try{const t=new URL(globalThis.window?.location?.href||"",e),r=new URL(e,t.href);return t.hash="",r.hash="",t.href===r.href}catch{return!1}}function vu(e,{screenSummary:t}={}){return{panel:{...e?.panel||{},screen_type:"homepage",screen_sku_list:[],screen_summary:t||null,last_search_products:[],last_search:null,chat_mentioned_skus:[],reviews_summary_skus:[],ai_plist_summary:null,search_suggestions_skus:[],list_source:null,active_product_panel:!1,assistant_mode:"shopping",redirected_agent_state:null,ui_hints:null}}}function Xn({patterns:e,messageFilter:t,messageNormalizer:r=o=>o,messageLimit:n=10}={}){const o={patterns:[...Ot,...Array.isArray(e)?e:[]]};function i(c){return Mt(c,o)}function a(c){return mn(c,o)}function s(c=[]){const u=(Array.isArray(c)?c:[]).filter(l=>typeof t=="function"?t(l):l&&typeof l=="object").filter(Boolean);return(Number.isFinite(n)&&n>0?u.slice(-n):u).map(l=>({role:l.role,content:i(r(l.content)).slice(0,1e3)}))}return{redactPii:i,anonymousRequestText:a,anonymizeMessages:s}}function Au(e){return String(e||"").replace(/<script\b[\s\S]*?<\/script>/giu," ").replace(/<style\b[\s\S]*?<\/style>/giu," ").replace(/<[^>]+>/gu," ").replace(/&nbsp;/giu," ").replace(/&amp;/giu,"&").replace(/&lt;|&gt;/giu," ").replace(/\s+/gu," ").trim()}function eo({accountId:e,supplied:t=[],pageProduct:r=null,listingProducts:n=[],skus:o=[],limit:i=4,storedProducts:a=[],getStoredPanelProducts:s}={}){const c=ro(o),u=Array.isArray(n)?n:[],l=typeof s=="function"?s({accountId:e,visibleProducts:u}):a;return to([...Ke(t),...Ke(l),r,...u],{skus:c,limit:i})}function Tu({accountId:e,rootUrl:t,getProduct:r,getProducts:n,getStoredPanelProducts:o,limit:i=4}={}){return async function(s={}){return{accountId:e,products:eo({accountId:e,supplied:Array.isArray(s.products)?s.products:[],pageProduct:r?.(),listingProducts:n?.(),getStoredPanelProducts:o,skus:s.skus||s.sku_list||[],limit:i}),rootUrl:t}}}function to(e,{skus:t=[],limit:r=4}={}){const n=new Set(ro(t)),o=new Set,i=[];for(const a of Ke(e)){if(!a)continue;const s=Ve(a?.sku);if(n.size&&!n.has(s))continue;const c=s||Ve(a?.url)||Ve(a?.name||a?.title);if(!(c&&o.has(c))&&(c&&o.add(c),i.push(a),i.length>=r))break}return i}function ro(e){return Ke(e).map(Ve).filter(Boolean)}function Ve(e){return String(e||"").trim()}function Ke(e){return Array.isArray(e)?e.filter(Boolean):e?[e]:[]}var O={features:18,reviews:4,qna:4,sellers:4,variants:12,documents:6,textBlocks:6,relatedProducts:8,textChars:220},Zt={description:/\b(?:description|details|product information|urun bilgisi|urun aciklamasi|açıklama|aciklama)\b/iu,seller:/\b(?:seller|merchant|store|satici|satıcı|magaza|mağaza)\b/iu,review:/\b(?:review|reviews|rating|ratings|yorum|degerlendirme|değerlendirme|puan)\b/iu,qna:/\b(?:questions?|answers?|qna|q&a|soru|cevap)\b/iu,payment:/\b(?:installment|instalment|payment|pay in|taksit|odeme|ödeme|vade)\b/iu,delivery:/\b(?:delivery|shipping|cargo|stock|availability|teslimat|kargo|stok|gonderim|gönderim)\b/iu,promotion:/\b(?:campaign|promotion|discount|coupon|deal|kampanya|indirim|kupon|firsat|fırsat)\b/iu,variant:/\b(?:variant|size|colour|color|beden|olcu|ölçü|renk|numara)\b/iu},xu=/[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}|\+?\d[\d\s().-]{8,}\d|\b[A-Z]{1,2}\d[A-Z\d]?\s*\d[A-Z]{2}\b|\b(?:token|session|csrf|secret)\s*[:=]\s*[\w.-]+/giu,Eu=/(?:token|session|sid|auth|code|csrf|secret|key|password|passwd|phone|email|address|postcode|zip|jwt|bearer)/iu,Cu=/[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}|\+?\d[\d\s().-]{8,}\d|[A-Z]{1,2}\d[A-Z\d]?\s*\d[A-Z]{2}|[A-Za-z0-9_-]{24,}/iu;function no({accountId:e,getPageType:t,getProduct:r,getProducts:n,normalizeProduct:o=i=>i}){return(i={})=>oo({accountId:e,getPageType:t,getProduct:r,getProducts:n,normalizeProduct:o,input:i})}function oo({accountId:e,getPageType:t,getProduct:r,getProducts:n,normalizeProduct:o=a=>a,input:i={}}){const a=tl(i),s=o(i.product||rr(r)),c=(rr(n)||[]).map(o).filter(Boolean),u=P(i.sku||s?.sku||i.product?.sku),l=u?c.find(Z=>P(Z?.sku)===u)||s:s||c[0]||null,f=Iu(u||l?.sku),m=po({...f.product,...l}),p=tr(Je(l?.features),Je(l?.specs),Gu(l?.facet_hits),Je(f.product?.features),Ou(),Bu(),Mu()).slice(0,a.features),g=so(Ze(l?.reviews),f.reviews,Nu()).slice(0,a.reviews),h=co(Qt(l?.qna),$u()).slice(0,a.qna),y=uo(Xt(l?.sellers),Fu()).slice(0,a.sellers),b=te([...l?.payment||[],...We("payment",a)]),w=te([...l?.delivery||[],...We("delivery",a)]),A=te([...l?.promotions||[],...We("promotion",a)]),S=lo(er(l?.variants),qu()).slice(0,a.variants),E=Uu(a.documents),k=mo(l?.description,f.product?.description,Du("description"),We("description",{...a,textBlocks:2})[0]),M=c.filter(Z=>!u||P(Z?.sku)!==u).map(po).filter(Boolean).slice(0,a.relatedProducts);return ge({accountId:e,pageType:rr(t)||"other",url:el(),product:m,description:k,features:p,sellers:y,reviews:g,qna:h,rating:B(l?.rating??f.rating),review_count:B(l?.review_count??f.review_count),payment:b,delivery:w,promotions:A,variants:S,documents:E,related_products:M,capabilities:Zu({description:k,features:p,sellers:y,reviews:g,qna:h,payment:b,delivery:w,promotions:A,variants:S,documents:E,relatedProducts:M}),privacy:{browserLocal:!0,rawHtml:!1,formValues:!1,cookies:!1,storage:!1,redacted:!0}})}function Pu(e,t){const r=Array.isArray(e)?e.filter(Boolean):[];if(!t||typeof t!="object"||!r.length)return r;const n=P(t.product?.sku);return r.map((o,i)=>{const a=P(o?.sku);return r.length===1||n&&a&&n===a||i===0?ju(o,t):o})}function io(e){return!e||typeof e!="object"?null:ge({product:e.product,description:T(e.description,500),features:Hu(e.features,14),sellers:Wu(e.sellers,4),reviews:Vu(e.reviews,4),qna:Ku(e.qna,4),rating:e.rating,review_count:e.review_count,payment:X(e.payment,5,160),delivery:X(e.delivery,5,160),promotions:X(e.promotions,5,160),variants:Ju(e.variants,10),documents:X(e.documents,5,220),capabilities:Array.isArray(e.capabilities)?e.capabilities.slice(0,12):void 0})}function Ru(e,t,r={}){const n=io(e);if(!n)return t;const o=String(r.locale||"").toLowerCase().startsWith("en"),i=[],a=[n.rating?`${n.rating}/5`:"",n.review_count?`${n.review_count} ${o?"reviews":"yorum"}`:""].filter(Boolean).join(", ");return a&&i.push(o?`Visible rating: ${a}.`:`Görünür puan bilgisi: ${a}.`),n.reviews?.length&&i.push(`${o?"Visible review highlights":"Görünür yorumlardan öne çıkanlar"}: ${n.reviews.map(s=>[s.star?`${s.star}/5`:"",s.content].filter(Boolean).join(" ")).filter(Boolean).slice(0,3).join(" | ")}.`),i.length?(i.push(o?"This summary only uses product review and rating fields visible in the browser.":"Bu özet yalnızca tarayıcıda görünen ürün yorumu ve puan alanlarından hazırlandı."),i.join(" ")):t}function ju(e,t){return ge({...e,description:mo(e.description,t.description),features:tr(Je(e.features),t.features).slice(0,24),specs:e.specs||(t.features?.length?Object.fromEntries(t.features.map(Yu)):void 0),sellers:uo(Xt(e.sellers),t.sellers),reviews:so(Ze(e.reviews),t.reviews),qna:co(Qt(e.qna),t.qna),rating:e.rating??t.rating,review_count:e.review_count??t.review_count,payment:te([...e.payment||[],...t.payment||[]]),delivery:te([...e.delivery||[],...t.delivery||[]]),promotions:te([...e.promotions||[],...t.promotions||[]]),variants:lo(er(e.variants),t.variants),documents:te([...e.documents||[],...t.documents||[]])})}function Iu(e){const t=[];for(const o of z('script[type="application/ld+json"]')){const i=Lu(o.textContent);for(const a of Yt(i))String(a?.["@type"]||"").toLowerCase()==="product"&&t.push(a)}const r=t.find(o=>P(o.sku||o.productID||o.mpn)===P(e))||t[0];if(!r)return{};const n=r.aggregateRating||{};return{product:ge({sku:P(r.sku||r.productID||r.mpn),name:v(r.name),brand:v(r.brand?.name||r.brand),description:v(r.description),images:X(r.image,8,280),url:Ee(r.url),rating:B(n.ratingValue),review_count:B(n.reviewCount||n.ratingCount)}),reviews:Ze(r.review),rating:B(n.ratingValue),review_count:B(n.reviewCount||n.ratingCount)}}function Yt(e){return Array.isArray(e)?e.flatMap(Yt):!e||typeof e!="object"?[]:[e,...Yt(e["@graph"])]}function Lu(e){try{return JSON.parse(String(e||""))}catch{return null}}function Ou(){const e=[];for(const t of z("table tr")){const r=[...t.querySelectorAll?.("th,td")||[]].map(n=>v(n.textContent));r.length>=2&&r[0]&&r[1]&&e.push({key:r[0],value:r.slice(1).join(" ")})}return e}function Bu(){const e=[];for(const t of z("dt")){const r=v(t.textContent),n=v(t.nextElementSibling?.matches?.("dd")?t.nextElementSibling.textContent:"");r&&n&&e.push({key:r,value:n})}return e}function Mu(){return z('[class*="spec" i], [class*="feature" i], [class*="attribute" i], li').map(e=>ao(v(e.textContent))).filter(Boolean).slice(0,O.features)}function Nu(){return z('[class*="review" i], [data-review], [itemprop="review"]').map(e=>{const t=v(e.textContent);return!t||t.length<8||Zt.qna.test(t)?null:{content:T(t,260),star:B(e.getAttribute?.("data-rating"))}}).filter(Boolean)}function $u(){const e=z('[class*="question" i], [class*="answer" i], [data-question], [data-answer]'),t=[];for(const r of e){const n=v(r.textContent);if(!n||!Zt.qna.test(n))continue;const o=v(r.getAttribute?.("data-question")||n),i=v(r.getAttribute?.("data-answer")||r.nextElementSibling?.textContent||"");t.push({question:T(o,220),answer:T(i,260)})}return t}function Fu(){return z('[class*="seller" i], [class*="merchant" i], [data-seller], [data-merchant]').map(e=>v(e.getAttribute?.("data-seller")||e.getAttribute?.("data-merchant")||e.textContent)).filter(Boolean).map(e=>({merchant:T(e,120)}))}function qu(){return z('[class*="variant" i] a,[class*="variant" i] button,[class*="size" i] button,[class*="color" i] button,[data-variant],[data-size],[data-color]').map(e=>ge({name:T(go(e),120),value:T(e.getAttribute?.("data-value")||e.getAttribute?.("data-size")||e.getAttribute?.("data-color"),120),sku:P(e.getAttribute?.("data-sku")||e.getAttribute?.("data-product-id")),url:Ee(e.getAttribute?.("href")),in_stock:e.getAttribute?.("disabled")==null&&e.getAttribute?.("aria-disabled")!=="true"})).filter(e=>e.name||e.value||e.sku)}function Uu(e){return z("a[href]").filter(t=>/\.pdf(?:$|[?#])/iu.test(t.getAttribute?.("href")||"")).map(t=>{const r=go(t)||"PDF",n=Ee(t.getAttribute?.("href"));return n?`${r}: ${n}`:""}).filter(Boolean).slice(0,e)}function We(e,t){const r=Zt[e];return r?z("section,article,div,li,p,span,button,a").map(n=>v(n.textContent)).filter(n=>n&&r.test(n)&&n.length<=900).map(n=>T(n,t.textChars||O.textChars)).filter(fo()).slice(0,t.textBlocks||O.textBlocks):[]}function Du(e){return v(document.querySelector?.(`meta[name="${e}"]`)?.getAttribute?.("content")||document.querySelector?.(`meta[property="og:${e}"]`)?.getAttribute?.("content"))}function z(e){try{return[...document.querySelectorAll?.(e)||[]].filter(zu)}catch{return[]}}function zu(e){if(!e)return!1;if(!e.getBoundingClientRect)return!0;const t=e.getBoundingClientRect();if(t.width<=0||t.height<=0)return!1;const r=window.getComputedStyle?.(e);return!r||r.visibility!=="hidden"&&r.display!=="none"&&Number(r.opacity||1)>0}function Je(e){return e?(Array.isArray(e)?e:Object.entries(e).map(([t,r])=>({key:t,value:r}))).map(t=>typeof t=="string"?ao(t)||{key:"",value:v(t)}:{key:v(t.key||t.name||t.label),value:v(t.value||t.text||"")}).filter(t=>t.key||t.value):[]}function Gu(e){return!e||typeof e!="object"?[]:Object.entries(e).map(([t,r])=>({key:v(t),value:v(r)}))}function ao(e){const t=/^(.{2,80}?)\s*[::]\s*(.{1,220})$/u.exec(v(e));return t?{key:t[1],value:t[2]}:null}function Ze(e){return(Array.isArray(e)?e:e?[e]:[]).map(t=>typeof t=="string"?{content:T(t,260)}:{content:T(t.content||t.reviewBody||t.description||t.text,260),star:B(t.star||t.rating||t.reviewRating?.ratingValue)}).filter(t=>t.content||t.star)}function Qt(e){return(Array.isArray(e)?e:e?[e]:[]).map(t=>({question:T(t.question||t.name||"",220),answer:T(t.answer||t.acceptedAnswer?.text||t.text||"",260)})).filter(t=>t.question||t.answer)}function Xt(e){return(Array.isArray(e)?e:e?[e]:[]).map(t=>typeof t=="string"?{merchant:T(t,120)}:{merchant:T(t.merchant||t.name||t.seller||"",120),merchant_id:P(t.merchant_id||t.id||""),merchant_rating:B(t.merchant_rating||t.rating),price_offer:B(t.price_offer||t.price)}).filter(t=>t.merchant||t.merchant_id)}function er(e){return(Array.isArray(e)?e:e?[e]:[]).map(t=>({name:T(t.name||t.label||t.title||"",120),value:T(t.value||t.size||t.color||"",120),sku:P(t.sku||t.code||""),url:Ee(t.url),in_stock:t.in_stock})).filter(t=>t.name||t.value||t.sku||t.url)}function tr(...e){const t=new Set,r=[];for(const n of e.flat().filter(Boolean)){const o={key:T(n.key||n.name||"",90),value:T(n.value||n.text||"",180)},i=`${o.key}:${o.value}`.toLocaleLowerCase("tr-TR");!o.key&&!o.value||t.has(i)||(t.add(i),r.push(o))}return r}function so(...e){return Ye(e.flat().filter(Boolean),t=>`${t.star||""}:${t.content||""}`)}function co(...e){return Ye(e.flat().filter(Boolean),t=>`${t.question||""}:${t.answer||""}`)}function uo(...e){return Ye(e.flat().filter(Boolean),t=>`${t.merchant||""}:${t.merchant_id||""}`)}function lo(...e){return Ye(e.flat().filter(Boolean),t=>`${t.sku||""}:${t.name||""}:${t.value||""}`)}function Ye(e,t){const r=new Set;return e.filter(n=>{const o=t(n).toLocaleLowerCase("tr-TR");return!o.trim()||r.has(o)?!1:(r.add(o),!0)})}function te(e){return X(e,20,O.textChars)}function X(e,t,r){return(Array.isArray(e)?e:e?[e]:[]).map(n=>T(n,r)).filter(Boolean).filter(fo()).slice(0,t)}function fo(){const e=new Set;return t=>{const r=v(t).toLocaleLowerCase("tr-TR");return!r||e.has(r)?!1:(e.add(r),!0)}}function Hu(e,t){return tr(e).slice(0,t)}function Vu(e,t){return Ze(e).slice(0,t)}function Ku(e,t){return Qt(e).slice(0,t)}function Wu(e,t){return Xt(e).slice(0,t)}function Ju(e,t){return er(e).slice(0,t)}function po(e){return!e||typeof e!="object"?null:ge({sku:P(e.sku||e.id||""),group_id:P(e.group_id||e.groupId||""),name:v(e.name||e.title||""),brand:v(e.brand||""),url:Ee(e.url),images:X(e.images||e.image,8,280),price:B(e.price),price_discounted:B(e.price_discounted||e.discountedPrice),price_text:v(e.price_text||e.priceText||""),price_currency:v(e.price_currency||e.currency||""),category_ids:Qu(e.category_ids||e.categoryIds,8,90),category_names:X(e.category_names||e.categoryNames||e.category,8,140),in_stock:e.in_stock})}function Zu(e){return[e.description?"description":"",e.features?.length?"features":"",e.sellers?.length?"seller":"",e.reviews?.length||e.rating||e.review_count?"reviews_ratings":"",e.qna?.length?"qna":"",e.payment?.length?"installment_payment":"",e.delivery?.length?"shipping_delivery_stock":"",e.promotions?.length?"campaigns_promotions":"",e.variants?.length?"variants":"",e.documents?.length?"documents":"",e.relatedProducts?.length?"related_products":""].filter(Boolean)}function Yu(e){return[v(e.key||e.name),v(e.value||e.text)]}function mo(...e){return e.map(t=>T(t,700)).find(Boolean)||""}function T(e,t){return v(e).slice(0,t)}function go(e){return v(e.getAttribute?.("aria-label")||e.getAttribute?.("title")||e.getAttribute?.("alt")||e.textContent)}function v(e){return String(e??"").replace(/<script\b[\s\S]*?<\/script>/giu," ").replace(/<style\b[\s\S]*?<\/style>/giu," ").replace(/<[^>]+>/gu," ").replace(xu,"[redacted]").replace(/\s+/gu," ").trim()}function P(e){const t=String(e??"").replace(/<script\b[\s\S]*?<\/script>/giu," ").replace(/<style\b[\s\S]*?<\/style>/giu," ").replace(/<[^>]+>/gu," ").replace(/\s+/gu," ").trim();return!t||/[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}/iu.test(t)||/\b(?:token|session|csrf|secret|password|passwd|jwt|bearer)\s*[:=]\s*[\w.-]+/iu.test(t)?"":t.slice(0,120)}function Qu(e,t,r){return(Array.isArray(e)?e:e?[e]:[]).map(n=>P(n).slice(0,r)).filter(Boolean).filter(Xu()).slice(0,t)}function Xu(){const e=new Set;return t=>{const r=P(t).toLocaleLowerCase("tr-TR");return!r||e.has(r)?!1:(e.add(r),!0)}}function B(e){const t=Number(String(e??"").replace(",","."));return Number.isFinite(t)&&t>0?t:void 0}function Ee(e){if(!e)return"";try{const t=new URL(e,window.location.href);return/^https?:$/u.test(t.protocol)?(t.hash="",yo(t),t.href):""}catch{return""}}function el(){try{const e=new URL(window.location.href);return e.hash="",yo(e),`${e.origin}${e.pathname}${e.search}`}catch{return""}}function yo(e){for(const[t,r]of[...e.searchParams.entries()]){const n=String(r||"");(Eu.test(t)||Cu.test(n))&&e.searchParams.set(t,"redacted")}return e}function tl(e={}){return{features:K(e.maxFeatures,O.features,40),reviews:K(e.maxReviews,O.reviews,12),qna:K(e.maxQna,O.qna,12),sellers:K(e.maxSellers,O.sellers,12),variants:K(e.maxVariants,O.variants,30),documents:K(e.maxDocuments,O.documents,12),textBlocks:K(e.maxTextBlocks,O.textBlocks,16),relatedProducts:K(e.maxRelatedProducts,O.relatedProducts,20),textChars:K(e.textChars,O.textChars,420)}}function K(e,t,r){const n=Number(e);return!Number.isFinite(n)||n<=0?t:Math.min(Math.floor(n),r)}function rr(e){try{return typeof e=="function"?e():null}catch{return null}}function ge(e){return Object.fromEntries(Object.entries(e||{}).filter(([,t])=>t!=null&&t!==""&&(!Array.isArray(t)||t.length)))}var{redactPii:rl,anonymousRequestText:nl,anonymizeMessages:ol}=Xn({patterns:[{pattern:/\b\d{5}\b/gu,replacement:"[postcode]"},{pattern:/\b(?:adresim|adres|mahalle|sokak|cadde)\b[^,.!?\n]{8,160}/giu,replacement:"[address]"}]});function ho(e){return(e?.route?.flow_params&&typeof e.route.flow_params=="object"?e.route.flow_params:null)||(e?.route?.flowParams&&typeof e.route.flowParams=="object"?e.route.flowParams:null)||{}}function il(e){return Array.isArray(e)?e.find(t=>String(t||"").trim()):void 0}function al(e){const t=ho(e);return[...t.sku?[t.sku]:[],...Array.isArray(t.sku_list)?t.sku_list:[],...Array.isArray(t.skus)?t.skus:[],...Array.isArray(t.target_skus)?t.target_skus:[]].map(r=>String(r||"").trim()).filter(Boolean).filter((r,n,o)=>o.indexOf(r)===n)}var ye={headings:8,products:8,controls:12,textMatches:8,snippetChars:180},Qe=/\b(?:checkout|payment|pay now|place order|delete|remove|confirm|submit|ödeme|odeme|siparişi tamamla|siparisi tamamla|satın al|satin al|sil|kaldır|kaldir|onayla|gönder|gonder)\b/iu,sl=/(?:token|session|sid|auth|code|csrf|secret|key|password|passwd|phone|email|address|postcode|zip|jwt|bearer)/iu,cl=/[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}|\+?\d[\d\s().-]{8,}\d|[A-Z]{1,2}\d[A-Z\d]?\s*\d[A-Z]{2}|[A-Za-z0-9_-]{24,}/iu,ul={campaign:/\b(?:campaign|promotion|discount|deal|coupon|kampanya|indirim|firsat|fırsat|kupon)\b/iu,blog:/\b(?:blog|journal|guide|article|editorial|inspiration|rehber|makale|ilham|icerik|içerik)\b/iu,category:/\b(?:category|collection|department|kategori|koleksiyon|reyon)\b/iu};function ll({accountId:e,getPageType:t,getProduct:r,getProducts:n,normalizeProduct:o=i=>i}){return{scanSite:(i={})=>dl({accountId:e,getPageType:t,getProduct:r,getProducts:n,normalizeProduct:o,input:i}),siteGrep:(i={})=>fl(i),discoverSiteContent:(i={})=>bo(i,e),runSiteCommand:(i={})=>pl(i),describeVisualContext:(i={})=>ml(i,e),inspectProductSurface:no({accountId:e,getPageType:t,getProduct:r,getProducts:n,normalizeProduct:o}),getSiteCapabilities:()=>hl(e)}}function dl({accountId:e,getPageType:t,getProduct:r,getProducts:n,normalizeProduct:o,input:i}){const a=x(i.query||i.text||""),s=sr(i),c=ur(r),u=ur(n)||[];return cr({accountId:e,url:jl(),title:ee(document.title||""),pageType:ur(t)||"other",viewport:Il(),product:wo(o(c)),products:u.map(o).map(wo).filter(Boolean).slice(0,s.products),content:i.includeContent===!1?void 0:bo(i,e).items,headings:bl(s.headings),controls:i.includeControls===!1?void 0:wl(s.controls),textMatches:a?nr(a,s):[],privacy:{rawHtml:!1,formValues:!1,redacted:!0,browserLocal:!0}})}function bo(e={},t=""){const r=sr(e),n=new Set(Sl(e.kinds||e.kind)),o=kl(r.controls).filter(i=>!n.size||n.has(i.kind)).slice(0,r.controls);return{accountId:t,items:o,count:o.length,privacy:W()}}function fl(e={}){const t=x(e.query||e.text||e.pattern||"");if(!t)return{ok:!1,matches:[],message:"Provide a query to scan visible page text.",privacy:W()};const r=nr(t,sr(e));return{ok:r.length>0,query:t,matches:r,count:r.length,privacy:W()}}function pl(e={}){const t=x(e.command||e.action||"").toLowerCase();return t==="scroll_to_text"||t==="scrolltotext"?gl(e):t==="click_visible_text"||t==="clickvisibletext"?yl(e):t==="scroll_top"||t==="scrolltotop"?(window.scrollTo({top:0,behavior:"smooth"}),{ok:!0,command:"scroll_top",message:"Scrolled to the top of the page.",privacy:W()}):{ok:!1,command:t,message:"Supported commands are scroll_to_text, click_visible_text, and scroll_top.",privacy:W()}}function ml(e={},t){const r=e.visual_consent===!0||e.visualConsent===!0||e.consent===!0,n=r?Al(e.visual_observations||e.visualObservations):[],o=vl(Number(e.maxImages||8));return{accountId:t,ok:r||o.length>0,consentedObservations:n,visibleImages:o,message:Tl({consented:r,observations:n,visibleImages:o}),privacy:{rawHtml:!1,formValues:!1,screenshotPixels:!1,redacted:!0,browserLocal:!0,requiresConsentForExternalVisualFacts:!0}}}function gl(e){const t=x(e.query||e.text||e.label||""),r=t?Cl(t):null;return r?(r.scrollIntoView({block:"center",inline:"nearest",behavior:"smooth"}),{ok:!0,command:"scroll_to_text",label:he(r),message:"Scrolled to the matching page area.",privacy:W()}):{ok:!1,command:"scroll_to_text",message:"No visible matching text found."}}function yl(e){const t=x(e.label||e.query||e.text||"");if(!t)return{ok:!1,command:"click_visible_text",message:"Provide a visible label to click."};if(Qe.test(t))return{ok:!1,blocked:!0,command:"click_visible_text",message:"This looks like a checkout, payment, destructive, or final confirmation action, so it was not clicked.",privacy:W()};const r=El(t);if(!r)return{ok:!1,command:"click_visible_text",message:"No safe visible clickable control found."};const n=he(r);return Qe.test(n)?{ok:!1,blocked:!0,command:"click_visible_text",label:n,message:"The matched control is blocked by the safe-click policy.",privacy:W()}:(r.click(),{ok:!0,command:"click_visible_text",label:n,message:"Clicked the safe visible control.",privacy:W()})}function hl(e){return{accountId:e,tools:["scanSite","siteGrep","discoverSiteContent","runSiteCommand","describeVisualContext","inspectProductSurface"],commands:{scanSite:"Returns a compact browser-local summary of page type, title, headings, products, controls, and matching visible text.",siteGrep:"Finds capped visible text snippets by plain query, like grep for the rendered page.",discoverSiteContent:"Returns visible campaign, blog/editorial, and category/content links as compact browser-local metadata.",runSiteCommand:"Runs guarded browser-local page commands: scroll_to_text, click_visible_text, scroll_top. Checkout, payment, destructive, and final-confirm controls are blocked.",describeVisualContext:"Summarizes visible image metadata and explicit shopper-consented redacted visual observations without capturing screenshots or pixels.",inspectProductSurface:"Returns compact GSS-style product detail evidence visible in the browser: description, specs, seller, QNA, reviews/ratings, installment/payment, shipping/stock, campaigns, variants, documents, and related visible products."},privacy:["Runs in the shopper browser.","Does not return raw HTML, cookies, storage, hidden text, or form values.","Redacts emails, phone numbers, tokens, and address-like postal snippets before returning text.","Returns compact capped snippets only.","Does not send screenshots or pixels implicitly; external visual observations must be explicitly consented."]}}function bl(e){return[...document.querySelectorAll('h1,h2,h3,[role="heading"]')].filter(re).map(t=>ee(x(t.textContent))).filter(Boolean).slice(0,e)}function wl(e){return[...document.querySelectorAll('button,a,[role="button"],summary,input[type="button"],input[type="submit"]')].filter(re).map(t=>({label:he(t),tag:t.tagName?.toLowerCase(),role:t.getAttribute?.("role")||null,href:ko(t),safeClick:!Qe.test(he(t))})).filter(t=>t.label).filter(Xe(t=>`${t.tag}:${t.label}:${t.href||""}`)).slice(0,e)}function kl(e){return[...document.querySelectorAll('a[href],button,[role="button"],summary')].filter(re).map(t=>{const r=he(t),n=ko(t),o=_l([r,n,or(t)].join(" "));return o?cr({kind:o,label:r,href:n,heading:or(t),safeClick:!Qe.test(r)}):null}).filter(Boolean).filter(Xe(t=>`${t.kind}:${t.label}:${t.href||""}`)).slice(0,Math.max(1,Math.min(e,30)))}function _l(e){for(const[t,r]of Object.entries(ul))if(r.test(e))return t;return""}function Sl(e){return(Array.isArray(e)?e:String(e||"").split(/[,|]/u)).map(t=>x(t).toLowerCase()).filter(Boolean)}function nr(e,t){const r=e.toLocaleLowerCase("tr-TR");return xl(document.body).map(n=>({node:n,text:x(n.nodeValue||"")})).filter(({text:n})=>n&&n.toLocaleLowerCase("tr-TR").includes(r)).map(({node:n,text:o})=>({snippet:Pl(o,e,t.snippetChars),tag:n.parentElement?.tagName?.toLowerCase()||"",heading:or(n.parentElement)})).filter(n=>n.snippet).filter(Xe(n=>n.snippet)).slice(0,t.textMatches)}function vl(e){return[...document.querySelectorAll("img")].filter(re).map(t=>({alt:ee(x(t.getAttribute("alt")||t.getAttribute("aria-label")||"")),title:ee(x(t.getAttribute("title")||"")),src:ir(t.currentSrc||t.getAttribute("src")),width:Math.round(t.getBoundingClientRect().width),height:Math.round(t.getBoundingClientRect().height)})).filter(t=>t.alt||t.title||t.src).filter(Xe(t=>`${t.alt}:${t.title}:${t.src}`)).slice(0,Math.max(1,Math.min(Number.isFinite(e)&&e>0?Math.floor(e):8,20)))}function Al(e){return(Array.isArray(e)?e:String(e||"").split(/\n|;|\|/u)).map(t=>ee(t).slice(0,180)).filter(Boolean).slice(0,8)}function Tl({consented:e,observations:t,visibleImages:r}){const n=[];if(t.length&&n.push(`Consented visual observations: ${t.slice(0,3).join(" | ")}.`),r.length){const o=r.map(i=>i.alt||i.title).filter(Boolean).slice(0,3);n.push(o.length?`Visible image labels: ${o.join(", ")}.`:`${r.length} visible images found.`)}return!n.length&&!e&&n.push("I can use visible image labels, but external visual observations need explicit shopper consent."),n.push("No screenshots or pixels were captured or sent."),n.join(" ")}function xl(e){if(!e)return[];const t=document.createTreeWalker(e,NodeFilter.SHOW_TEXT,{acceptNode(n){const o=n.parentElement;return!o||!re(o)||/^(script|style|noscript|template|svg)$/iu.test(o.tagName||"")||Rl(o)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT}}),r=[];for(;r.length<500;){const n=t.nextNode();if(!n)break;r.push(n)}return r}function El(e){return[...document.querySelectorAll('button,a,[role="button"],summary,input[type="button"],input[type="submit"]')].filter(re).find(t=>he(t).toLocaleLowerCase("tr-TR").includes(e.toLocaleLowerCase("tr-TR")))}function Cl(e){const t=nr(e,{...ye,textMatches:1})[0];return t?[...document.querySelectorAll("body *")].filter(re).find(r=>x(r.textContent).includes(t.snippet.slice(0,24))):null}function he(e){return e?ee(x(e.getAttribute?.("aria-label")||e.getAttribute?.("title")||e.getAttribute?.("alt")||e.value||e.textContent||"")).slice(0,90):""}function or(e){let t=e;for(let r=0;t&&r<5;r+=1){const n=x((t.matches?.('h1,h2,h3,[role="heading"]')?t:t.querySelector?.('h1,h2,h3,[role="heading"]'))?.textContent||"");if(n)return ee(n).slice(0,90);t=t.parentElement}return""}function wo(e){return e?cr({sku:x(e.sku||e.id||""),name:x(e.name||e.title||""),url:ir(e.url),price_text:x(e.price_text||e.priceText||""),price:e.price,currency:e.price_currency||e.currency,in_stock:e.in_stock,category:x(e.category||"")}):null}function Pl(e,t,r){const n=ee(e),o=n.toLocaleLowerCase("tr-TR").indexOf(t.toLocaleLowerCase("tr-TR")),i=Math.max(0,o-Math.floor(r/3));return n.slice(i,i+r).trim()}function re(e){if(!e||!e.getBoundingClientRect)return!1;const t=e.getBoundingClientRect();if(t.width<=0||t.height<=0)return!1;const r=window.getComputedStyle(e);return r.visibility!=="hidden"&&r.display!=="none"&&Number(r.opacity||1)>0}function Rl(e){return!!e.closest?.('input,textarea,select,[contenteditable="true"]')}function ko(e){return e.tagName?.toLowerCase()!=="a"?null:ir(e.getAttribute("href"))}function ir(e){if(!e)return"";try{const t=new URL(e,window.location.href);return/^https?:$/u.test(t.protocol)?(t.hash="",ar(t),t.href):""}catch{return""}}function jl(){const e=new URL(window.location.href);return ar(e),`${e.origin}${e.pathname}${e.search}`}function Il(){return{width:window.innerWidth,height:window.innerHeight,scrollY:Math.round(window.scrollY||0),documentHeight:Math.round(document.documentElement?.scrollHeight||0)}}function ee(e){return x(e).replace(/https?:\/\/[^\s?#]+(?:\?[^#\s]*)?/giu,Ll).replace(/[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}/giu,"<email>").replace(/\b(?:\+?\d[\d\s().-]{8,}\d)\b/gu,"<phone>").replace(/\b[A-Z]{1,2}\d[A-Z\d]?\s*\d[A-Z]{2}\b/giu,"<postcode>").replace(/\btoken\s*=\s*[\w.-]+/giu,"token=<redacted>").replace(/\b(?:api[_-]?key|session|csrf|secret)\s*[:=]\s*[\w.-]+/giu,"<secret>")}function Ll(e){try{const t=new URL(e);return t.hash="",ar(t),t.href}catch{return String(e||"").replace(/\?[^#\s]*/u,"?redacted")}}function ar(e){for(const[t,r]of[...e.searchParams.entries()]){const n=String(r||"");(sl.test(t)||cl.test(n))&&e.searchParams.set(t,"redacted")}return e}function x(e){return String(e||"").replace(/\s+/gu," ").trim()}function sr(e){return{headings:Ce(e.maxHeadings,ye.headings,20),products:Ce(e.maxProducts,ye.products,20),controls:Ce(e.maxControls,ye.controls,30),textMatches:Ce(e.maxMatches||e.limit,ye.textMatches,20),snippetChars:Ce(e.snippetChars,ye.snippetChars,320)}}function Ce(e,t,r){const n=Number(e);return!Number.isFinite(n)||n<=0?t:Math.min(Math.floor(n),r)}function W(){return{rawHtml:!1,formValues:!1,redacted:!0,browserLocal:!0}}function cr(e){return Object.fromEntries(Object.entries(e).filter(([,t])=>t!=null))}function ur(e){try{return typeof e=="function"?e():null}catch{return null}}function Xe(e){const t=new Set;return r=>{const n=e(r);return!n||t.has(n)?!1:(t.add(n),!0)}}var Ol=3e4;function _o(e,t,r={}){const n=r.ttlMs??Ol,o=r.clock??Date.now,i=new Map,a=new Map;return async function(c){const u=String(t(c)??"");if(!u)return e(c);const l=o();Bl(a,l,n);const f=i.get(u);if(f)return f;const m=a.get(u);if(m&&l-m.at<n)return Ml(m.observation,u);const p=(async()=>{try{const g=await e(c);return a.set(u,{at:o(),observation:g}),g}finally{i.delete(u)}})();return i.set(u,p),p}}function Bl(e,t,r){for(const[n,o]of e)t-o.at>=r&&e.delete(n)}function Ml(e,t){return!e||typeof e!="object"?e:{...e,deduped:!0,dedupe_key:t}}var Nl=3e4,So=new Set;function $l(e){const t=()=>_o(async o=>e(o||{}),o=>{const i=ql(o),a=Number(o?.quantity||o?.qty||1)||1,s=Ul(o);return i?`${i}|${a}|${s}`:""},{ttlMs:Nl});let r=t();const n=async function(i={}){return r(i)};return n.__resetForTesting=()=>{r=t()},So.add(n),n}function Fl(){for(const e of So)typeof e.__resetForTesting=="function"&&e.__resetForTesting()}function ql(e){const t=e?.cartCode??e?.sku??e?.productCode??e?.product?.sku??e?.product?.cart_code;return t==null?"":String(t).trim()}function Ul(e){const t=e?.variantId??e?.variantCode??e?.product?.variantId??"";return t==null?"":String(t).trim()}var Dl=32,vo=new Set;function zl(e,t){const{accountId:r,allowedHostnames:n,productFromPage:o,mergeProduct:i=Vl,needsHydration:a=Hl,fetchOptions:s={credentials:"include"},maxConcurrency:c=4}=t;if(!r)throw new Error("wrapResolveProductsWithPdpHydration: accountId is required");if(typeof o!="function")throw new Error("wrapResolveProductsWithPdpHydration: productFromPage(doc, url) is required");if(!Array.isArray(n)||!n.length)throw new Error("wrapResolveProductsWithPdpHydration: allowedHostnames must be a non-empty array");const u=new Map,l=Jl({productFromPage:o,fetchOptions:s,isAllowed:Kl(n)}),f=async function(p={}){const g=await e(p||{});if(p?.hydrateFromPdp===!1)return g;const h=Array.isArray(g?.products)?g.products:[];if(!h.length)return g;const y=await Zl(h,l,u,c,i,a);return{...g,products:y}};return f.__resetCacheForTesting=()=>u.clear(),f.__cacheSizeForTesting=()=>u.size,vo.add(f),f}function Gl(){for(const e of vo)typeof e.__resetCacheForTesting=="function"&&e.__resetCacheForTesting()}function Hl(e){if(!e||!e.url)return!1;const t=e,r=t.features,n=t.specs,o=t.category_names,i=Array.isArray(r)&&r.length>0,a=!!n&&typeof n=="object"&&Object.keys(n).length>0,s=Array.isArray(o)&&o.length>0;return!i&&!a&&!s}function Vl(e,t){return e?t?{...e,...t}:e:t}function Kl(e){const t=e.map(r=>String(r||"").toLowerCase().trim()).filter(Boolean);return r=>{const n=String(r||"").toLowerCase();if(!n)return!1;for(const o of t)if(n===o||n.endsWith(`.${o}`))return!0;return!1}}function Wl(e,t){if(!e)return null;try{const r=new URL(String(e));return r.protocol!=="https:"||!t(r.hostname)?null:r.href}catch{return null}}function Jl(e){const{productFromPage:t,fetchOptions:r,isAllowed:n}=e;return async function(i){const a=Wl(i?.url,n);if(!a||typeof fetch!="function")return null;let s;try{const u=await fetch(a,r);if(!u?.ok)return null;s=await u.text()}catch{return null}if(!s||typeof DOMParser>"u")return null;let c;try{c=new DOMParser().parseFromString(s,"text/html")}catch{return null}if(!c)return null;try{return t(c,a)||null}catch{return null}}}async function Zl(e,t,r,n,o,i){const a=new Array(e.length);let s=0;const c=Math.max(1,Math.min(n,e.length)),u=new Array(c).fill(null).map(()=>l());return await Promise.all(u),a;async function l(){for(;;){const m=s++;if(m>=e.length)return;a[m]=await f(e[m])}}async function f(m){if(!m||!i(m))return m;const p=m?.sku==null?"":String(m.sku).trim();if(p&&r.has(p)){const h=r.get(p);return h?o(m,h):m}const g=await t(m);return p&&(r.set(p,g||null),Yl(r)),g?o(m,g):m}}function Yl(e){for(;e.size>Dl;){const t=e.keys().next().value;if(t===void 0)break;e.delete(t)}}var Ql=20;function Ao(e,t={}){const{context:r,accountConfig:n}=t,o=Array.isArray(e)?e.filter(Boolean):[];if(!o.length)return[];const i=String(r?.meta?.locale||n?.locale||n?.defaultLocale||"tr-TR").toLowerCase().startsWith("en"),a=i?"Compare the first two":"İlk ikisini karşılaştır",s=i?"Open product page":"Ürün sayfasını aç",c=i?"Tell me the comfort details":"Konfor özelliklerini anlat",u=i?"Show similar":"Benzerlerini göster",l=[];o.length>=2&&l.push({label:a,action:{type:"getComparisonTable",payload:{skus:o.slice(0,2).map(m=>m.sku).filter(Boolean),limit:2}}});const f=o[0]?.sku;return f&&!i&&(l.push({label:s,action:{type:"openProductPage",payload:{sku:f,url:o[0]?.url}}}),l.push({label:c,action:{type:"productQuestion",payload:{sku_list:[f]}}})),l.push({label:u,action:{type:"findSimilar",payload:{sku:f}}}),l}function lr(e,t=Ql){const r=[];if(!Array.isArray(e))return[];for(const a of e){const s=Array.isArray(a?.observation?.products)?a.observation.products:[];s.length&&r.push([...s])}if(r.length<=1)return(r[0]||[]).slice(0,t);const n=[],o=new Set;let i=0;for(;n.length<t;){let a=!1;for(const s of r){const c=s[i];if(!c)continue;const u=String(c.sku||c.url||c.name||"");if(u&&o.has(u)){a=!0;continue}if(u&&o.add(u),n.push(c),a=!0,n.length>=t)break}if(!a)break;i+=1}return n}function Xl(e){if(!e?.spec?.elements)return e;const t=e.spec.root;if(!t)return e;const r=e.spec.elements[t];return!r||r.type!=="ProductGrid"?(typeof console<"u"&&console.warn&&console.warn("[agentic] withSimilarsAppend: products envelope root is not ProductGrid",r?.type),e):{...e,spec:{...e.spec,elements:{...e.spec.elements,[t]:{...r,props:{...r.props||{},similarsAppend:!0}}}}}}function ed(e,t={}){const r=t.threshold??0;return!r||r<=0||!Array.isArray(e)?!1:e.length>r}function td(e,t={}){const r=Math.max(0,t.retainTail??4);if(!Array.isArray(e)||e.length===0||e.length<=r)return null;const n=e.slice(e.length-r),o=e.slice(0,e.length-r);return o.length?{messagesToSummarize:o,retainedTail:n}:null}function rd(e,t,r={}){const n=String(t||"").trim();if(!n)return e;const o=Math.max(0,r.retainTail??4),i=Array.isArray(e.messages)?e.messages:[],a=i.slice(Math.max(0,i.length-o));return{...e,messages:[{role:"assistant",content:n,name:"compaction"},...a],panel:{...e.panel||{},compaction_summary:{summary:n,replacedCount:i.length-a.length,retainedTailCount:a.length,compactedAt:new Date().toISOString()}}}}function J(e,t){const r=e?.[t];return Array.isArray(r)?r:[]}function Pe(e,t,r=!1){return[...e].reverse().find(n=>n?.name===t&&(!r||n?.observation?.status==="ok"))}function nd(e){return{kind:"patch",patch:(t,r,n)=>{const o=Pe(J(n.bag,e),"search_catalog"),i=Array.isArray(o?.observation?.products)?o.observation.products:null;return i?.length?{panel:{...t.panel,screen_type:"product_list",list_source:"agent",last_search_products:i,last_search:{query:o.observation.query,source:o.observation.source,count:o.observation.count},screen_sku_list:i.map(a=>a?.sku).filter(Boolean).slice(0,24)}}:null}}}function od(e){const t=e.obsKey||"roundObservations",r=e.gridLimit??20,n=e.similarsFollowupSteps?e.similarsFollowupSteps():[];return[nd(t),{kind:"branch",on:({bag:o})=>J(o,t).some(i=>Array.isArray(i?.observation?.products)&&i.observation.products.length)?"has_products":"no_products",cases:{has_products:[{kind:"emit",build:({bag:o})=>{const i=lr(J(o,t),r);return e.uiSpec(e.productsUiSpec(i))}},{kind:"emit",build:({bag:o,context:i,accountConfig:a})=>{const s=lr(J(o,t),r);return e.uiSpec(e.actionButtonsUiSpec(Ao(s,{context:i,accountConfig:a})))}}],no_products:[]}},{kind:"branch",on:({bag:o})=>Pe(J(o,t),"compare_products",!0)?"has_compare":"no_compare",cases:{has_compare:[{kind:"emit",build:({context:o,bag:i})=>{const a=Pe(J(i,t),"compare_products"),s=a?.observation||{},c=a?.arguments||{},u=Array.isArray(c.target_skus)?c.target_skus.map(String):[],l=Array.isArray(o?.panel?.last_search_products)?o.panel.last_search_products:[],f=u.length?u.map(m=>l.find(p=>String(p?.sku)===m)).filter(Boolean):l.slice(0,4);return e.uiSpec(e.comparisonUiSpec({products:f,comparison_table:s.comparison_table,key_differences:s.key_differences,recommended_choice_sku:s.recommendation?.sku,recommended_choice:s.recommendation?.reason}))}}],no_compare:[]}},{kind:"branch",on:({bag:o})=>Pe(J(o,t),"get_product_details",!0)?"has_details":"no_details",cases:{has_details:[{kind:"emit",build:({context:o,bag:i})=>{const a=Pe(J(i,t),"get_product_details"),s=a?.observation?.surface||{},c=a?.arguments||{},u=Array.isArray(o?.panel?.last_search_products)?o.panel.last_search_products:[],l=c.sku?u.find(m=>String(m?.sku)===String(c.sku)):null,f=s.product||l||s||{};return e.uiSpec(e.productDetailsUiSpec(f))}},...n],no_details:[]}},...To({...e,obsKey:t})]}function To(e){const t=e.obsKey||"roundObservations",r=e.pdpFollowupProduct;return r?[{kind:"branch",on:({bag:n,context:o})=>n.pdpFollowupRendered||J(n,t).some(i=>{const a=i?.name;return a==="search_catalog"||a==="compare_products"||a==="get_product_details"||Array.isArray(i?.observation?.products)&&i.observation.products.length})?"skip":r(n,o)?"render":"skip",cases:{render:[{kind:"emit",build:({bag:n,context:o})=>e.uiSpec(e.productDetailsUiSpec(r(n,o)))},{kind:"patch",patch:(n,o,i)=>(i.bag.pdpFollowupRendered=!0,null)},...e.similarsFollowupSteps?e.similarsFollowupSteps():[]],skip:[]}}]:[]}d.AgentError=N,d.ContextStore=_r,d.FALLBACK_STATUS=nu,d.__resetAllCartCoalescersForTesting=Fl,d.__resetAllPdpHydratorsForTesting=Gl,d.action=Ni,d.actionButtonsUiSpec=ms,d.alignProductsToTable=cn,d.anonymousRequestText=mn,d.applyCompactionResult=rd,d.beErrorToAgentError=mt,d.buildActivityVisualization=An,d.buildCompactionRequest=td,d.buildPdpFollowupSteps=To,d.buildPhotoSimilarityProfile=Ss,d.buildProductSimilarityProfile=ue,d.buildSimilarityQueries=vs,d.buildToolUiSteps=od,d.canUseModuleWorker=jt,d.caughtToStreamError=xr,d.coalesceAddToCart=$l,d.compactAccountConfig=gn,d.compactContextProducts=ns,d.compactObject=ku,d.compactProductSurfaceForLlm=io,d.comparisonResultForUi=cs,d.comparisonUiSpec=fs,d.createActivityCollector=bn,d.createBrowserMemory=Rt,d.createDiagnosticsTool=Zs,d.createEndpointCachePolicies=ys,d.createEndpointHandlers=hs,d.createFlow=gs,d.createGssToolAliases=fu,d.createIframeScraper=bu,d.createInjectorAdapter=zr,d.createLocalRefStore=fr,d.createMainThreadInjectorAdapter=Hr,d.createModuleWorker=sn,d.createOpenProductPageTool=_u,d.createPrivacyHelpers=Xn,d.createProductSurfaceInspector=no,d.createReadPageStep=au,d.createReadPageTool=Js,d.createResolveProductsTool=Tu,d.createSiteAwarenessTools=ll,d.declarativeBeOpCache=Wn,d.defaultPiiPatternPack=Bt,d.defaultPiiPatterns=Ot,d.done=ht,d.elapsedMs=q,d.endpointStableKey=un,d.error=Ir,d.fallbackStatus=ou,d.filterActivityEntries=Mn,d.firstArrayValue=il,d.formatJsonHtml=qn,d.getOrCreateActivityCollector=wn,d.groupForEntry=vn,d.gssSearchCapabilities=Jn,d.homePanelReset=vu,d.httpErrorToAgentError=Tr,d.inputHashCachePolicy=Kn,d.inspectProductSurface=oo,d.installActivityFetchPatch=Pn,d.installBrowserTools=Ws,d.installFetchTransportBridge=Ma,d.installIframeScraperBypass=wu,d.installLocalAgenticActivityDebug=Qc,d.isFallbackStatus=iu,d.isRef=pr,d.jsonResponse=ws,d.llmCacheKey=bt,d.mergeProductSurfaceEvidence=Pu,d.mergeRoundProducts=lr,d.metadata=Bi,d.mountAccount=rs,d.mountActivityOverlay=On,d.navigateSameTab=Qn,d.ndjsonResponse=bs,d.normalizeComparisonTable=It,d.normalizeEntry=kn,d.normalizeProduct=Be,d.normalizeSameOriginUrl=Yn,d.normalizeSimilarityText=H,d.nowIso=hr,d.plainMessageContent=Au,d.productDetailsUiSpec=ds,d.productFactsKey=qi,d.productSkuKey=Fi,d.productSurfaceReviewText=Ru,d.productsUiSpec=ls,d.rankSimilarProducts=As,d.rankSimilarProductsAsync=Ts,d.recordBeDebugPayload=Dt,d.redactPii=Mt,d.requestText=pn,d.resolveBeUrl=qs,d.resolveFlow=Lr,d.resolveProductCandidates=eo,d.retailAnonymizeMessages=ol,d.retailAnonymousRequestText=nl,d.retailRedactPii=rl,d.routeFlowParams=ho,d.routeSkuList=al,d.scoreSimilarityCandidate=Lt,d.searchFollowUpPills=Ao,d.sectionForKind=_n,d.setAssistantHostVisible=$s,d.severityForEntry=Sn,d.shouldCompact=ed,d.shouldInstallActivityDebug=Vn,d.singleFlight=_o,d.stableKey=ie,d.startLazyRuntimeLoader=Ys,d.stickyContextKey=ct,d.summarizeDebugState=Te,d.summarizePanelState=De,d.summarizeUiSpec=$t,d.textChunk=jr,d.textKey=Ui,d.tokenizeSimilarityText=$,d.trimProductFactsCore=Me,d.trimProductFactsListCore=$i,d.uiSpec=Mi,d.uniqueProductsBySku=to,d.validateToolArgs=$r,d.withAccountConfig=Hs,d.withDeclarativeBeOpCache=tu,d.withSimilarsAppend=Xl,d.wrapActivityBeacon=En,d.wrapActivityTools=xn,d.wrapActivityTransport=Cn,d.wrapResolveProductsWithPdpHydration=zl})(this.Gengage=this.Gengage||{});