@sentientui/core 0.18.0 → 0.19.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunk-RQXFTO7P.mjs +2 -0
- package/dist/chunk-RQXFTO7P.mjs.map +1 -0
- package/dist/{index-uWA8sgOV.d.ts → index-C-VCLqSk.d.ts} +9 -1
- package/dist/{index-FG0YuEFa.d.cts → index-DeTm1xvY.d.cts} +9 -1
- package/dist/index-engagement.js +1 -1
- package/dist/index-engagement.js.map +1 -1
- package/dist/index-engagement.mjs +1 -1
- package/dist/index-graph.d.cts +2 -2
- package/dist/index-graph.d.ts +2 -2
- package/dist/index-graph.js +1 -1
- package/dist/index-graph.js.map +1 -1
- package/dist/index-graph.mjs +1 -1
- package/dist/index-local.d.cts +1 -1
- package/dist/index-local.d.ts +1 -1
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -1
- package/package.json +2 -2
- package/dist/chunk-5OZS6A64.mjs +0 -2
- package/dist/chunk-5OZS6A64.mjs.map +0 -1
package/dist/index-graph.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as b,d as v}from"./chunk-CD2A55US.mjs";import{a as T,i as N,k as A}from"./chunk-
|
|
1
|
+
import{a as b,d as v}from"./chunk-CD2A55US.mjs";import{a as T,i as N,k as A}from"./chunk-RQXFTO7P.mjs";import{g as $,h as k,i as U,j as L,k as j}from"./chunk-MYT7OJBV.mjs";import{a as y,b as I}from"./chunk-TMCGHANO.mjs";var x="_snt_graph_edges",K={pricing:["features","faq"],features:["pricing"],faq:["pricing"],social_proof:["cta"],cta:["social_proof","hero","trust"],hero:["cta"],comparison:["pricing"],trust:["cta"]};function z(e){var t;return(t=K[e])!=null?t:[]}function F(e,t){try{let n=localStorage.getItem(e);return n?JSON.parse(n):t}catch(n){return t}}function q(e,t){try{localStorage.setItem(e,JSON.stringify(t))}catch(n){}}var B=new Set(["pricing","hero","social_proof","cta","features","faq","comparison","trust","navigation","generic"]);function H(e){return B.has(e)?e:"generic"}function _(e){try{let t=new URL(e);return`${t.origin}${t.pathname}`}catch(t){return"/"}}function J(e,t,n){let d=`${e}:${t}:${n.join(",")}`,p=5381;for(let m=0;m<d.length;m++)p=(p<<5)+p+d.charCodeAt(m)&4294967295;return(p>>>0).toString(16).padStart(8,"0")}function M(e){let t=new Map,n=new Map,d=`_snt_graph_nodes${T(e==null?void 0:e.apiKey)}`,p=()=>{typeof window!="undefined"&&q(d,[...t.values()])},m=o=>{var a;try{let i=JSON.parse(o);t.clear();for(let c of(a=i.pageNodes)!=null?a:[])t.set(c.componentId,c)}catch(i){}};if(typeof window!="undefined"){let o=F(d,[]);for(let a of o)t.set(a.componentId,a);try{localStorage.removeItem(x)}catch(a){}}return{addPageNode(o){t.set(o.componentId,o),p()},addStructuralEdge(o){let a=`${o.fromComponentId}->${o.toComponentId}`;n.set(a,o)},syncOnce(){var a,i;if(!(e!=null&&e.syncUrl)||typeof window=="undefined")return;let o=[...t.values()];if(o.length!==0)try{let c=new Map;for(let s of o){let f=(a=c.get(s.semanticType))!=null?a:[];f.push(s),c.set(s.semanticType,f)}let u=[],l=new Set;for(let s of o)for(let f of z(s.semanticType)){let S=(i=c.get(f))!=null?i:[];for(let h of S){if(h.componentId===s.componentId)continue;let w=`semantic:${s.componentId}->${h.componentId}`;l.has(w)||(l.add(w),u.push({fromComponentId:s.componentId,toComponentId:h.componentId,type:"semantic",weight:.4,confidence:.9}))}}let g=new Set(o.map(s=>s.componentId));for(let s of n.values()){if(!g.has(s.fromComponentId)||!g.has(s.toComponentId))continue;let f=`structural:${s.fromComponentId}->${s.toComponentId}`;l.has(f)||(l.add(f),u.push({fromComponentId:s.fromComponentId,toComponentId:s.toComponentId,type:"structural",weight:s.weight,confidence:1}))}let r=I(y(y({pageUrl:_(window.location.href)},e.sessionId?{sessionId:e.sessionId}:{}),e.projectId?{projectId:e.projectId}:{}),{nodes:o.map(s=>{let f=H(s.semanticType);return{componentId:s.componentId,semanticType:f,answers:s.answers,contentHash:J(s.componentId,f,s.answers),prominenceScore:s.prominenceScore,depthInPage:s.depth}}),edges:u});fetch(e.syncUrl,{method:"POST",keepalive:!0,headers:y({"Content-Type":"application/json"},e.apiKey?{Authorization:`Bearer ${e.apiKey}`}:{}),body:JSON.stringify(r)}).catch(()=>{})}catch(c){}},snapshot(){return{pageNodes:[...t.values()],capturedAt:Date.now()}},serialize(){return JSON.stringify({pageNodes:[...t.values()]})},restore:m,destroy(){if(typeof window!="undefined")try{localStorage.removeItem(d),localStorage.removeItem(x)}catch(o){}}}}var V=new Set(["SECTION","ARTICLE","MAIN","DIV"]),W="h1, h2, h3",O=30,Y=1500,Q={scan:async()=>({nodes:[],edges:[],scannedAt:0}),observe:()=>{},getProminenceScore:()=>0,destroy:()=>{}};function R(e,t,n){return n<=t?0:Math.max(0,Math.min(1,(e-t)/(n-t)))}function X(e){var t,n,d;try{let p=e;for(let m of Object.keys(p)){if(!m.startsWith("__reactFiber")&&!m.startsWith("__reactInternalInstance"))continue;let o=p[m],a=(d=(t=o==null?void 0:o.type)==null?void 0:t.displayName)!=null?d:(n=o==null?void 0:o.type)==null?void 0:n.name;if(a&&a.length>1)return a}}catch(p){}}function Z(e){let t={};for(let n of Array.from(e.attributes))n.name.startsWith("data-")&&(t[n.name]=n.value);return t}var P=new Set(b);function ee(e){let t=e.getAttribute("data-sentient-type");if(t&&P.has(t))return t;let n=e.getAttribute("role");return n&&P.has(n)?n:v(e)}function te(e){let t=5381;for(let n=0;n<e.length;n++)t=(t<<5)+t+e.charCodeAt(n)&4294967295;return(t>>>0).toString(16).padStart(8,"0")}function ne(e){let t=[],n=e;for(;n;){let d=n.parentElement;if(!d){t.push(n.tagName.toLowerCase());break}let p=Array.prototype.indexOf.call(d.children,n);t.push(`${n.tagName.toLowerCase()}[${p}]`),n=d}return t.reverse().join("/")}function oe(e){var n;let t=(n=e.getAttribute("data-sentient-id"))!=null?n:e.getAttribute("id");return t||`${e.tagName.toLowerCase()}-${te(ne(e))}`}function re(e){let t=0,n=e.parentElement;for(;n;)t++,n=n.parentElement;return t}function C(e,t){var d,p,m;let n=e.querySelector(W);return{componentId:oe(e),semanticType:ee(e),ariaLabel:(d=e.getAttribute("aria-label"))!=null?d:void 0,headingText:(m=(p=n==null?void 0:n.textContent)==null?void 0:p.trim())!=null?m:void 0,isAboveFold:e.getBoundingClientRect().top<window.innerHeight,prominenceScore:t(e),depth:re(e),reactComponentName:X(e),dataAttributes:Z(e)}}function D(e){var m;let t=[],n=new Set,d="__root__",p=new Map;for(let[o,a]of e){let i=o.parentElement,c=d;for(;i;){if(e.has(i)){c=e.get(i);let l=e.get(o),g=`${c}->${l}`;!n.has(g)&&c!==l&&(n.add(g),t.push({fromComponentId:c,toComponentId:l,weight:.6}));break}i=i.parentElement}let u=(m=p.get(c))!=null?m:[];u.push(o),p.set(c,u)}for(let o of p.values()){if(o.length<2)continue;let a=o.length>O?o.slice(0,O):o;for(let i=0;i<a.length;i++)for(let c=i+1;c<a.length;c++){if(t.length>=Y)return t;let u=e.get(a[i]),l=e.get(a[c]);if(u===l)continue;let g=`${u}->${l}::sib`,r=`${l}->${u}::sib`;n.has(g)||(n.add(g),t.push({fromComponentId:u,toComponentId:l,weight:.3})),n.has(r)||(n.add(r),t.push({fromComponentId:l,toComponentId:u,weight:.3}))}}return t}function se(e){let t=[],n=new Set,d=new Map;return document.querySelectorAll("[data-sentient-id]").forEach(o=>{if(o instanceof Element&&!n.has(o)){n.add(o);let a=C(o,e);t.push(a),d.set(o,a.componentId)}}),document.querySelectorAll("section, article, main, aside").forEach(o=>{if(!(o instanceof Element)||n.has(o))return;let a=o.hasAttribute("aria-label"),i=o.hasAttribute("data-sentient-id");if(!a&&!i)return;n.add(o);let c=C(o,e);t.push(c),d.set(o,c.componentId)}),{nodes:t,edges:D(d),elementToId:d}}function G(){if(typeof window=="undefined")return Q;let e=null,t=0,n=null,d=new Map,p=i=>{try{let c=window.getComputedStyle(i),u=parseFloat(c.fontSize)||12,l=parseFloat(c.zIndex)||0,g=i.getBoundingClientRect(),r=Math.max(g.top,0),s=window.innerHeight||1,f=1/(r/s+1),S=R(u,12,48)*.4+f*.4+R(l,0,100)*.2;return Math.max(0,Math.min(1,S))}catch(c){return .5}};return{scan:()=>new Promise(i=>{let c=()=>{let{nodes:u,edges:l,elementToId:g}=se(p);d.clear();for(let[r,s]of g)d.set(r,s);i({nodes:u,edges:l,scannedAt:Date.now()})};try{typeof requestIdleCallback=="function"?t=requestIdleCallback(c,{timeout:100}):c()}catch(u){c()}}),observe:i=>{n=i;try{e=new MutationObserver(c=>{let u=[],l=new Set;for(let r of c)r.type==="childList"&&r.addedNodes.forEach(s=>{if(!(s instanceof Element)||!V.has(s.tagName))return;let f=s.hasAttribute("data-sentient-id"),S=s.hasAttribute("aria-label");if(!f&&!S)return;let h=C(s,p);u.push(h),l.add(h.componentId),d.set(s,h.componentId)});if(u.length===0||!n)return;for(let r of[...d.keys()])r.isConnected||d.delete(r);let g=D(d).filter(r=>l.has(r.fromComponentId)||l.has(r.toComponentId));n({nodes:u,edges:g,addedAt:Date.now()})}),e.observe(document.body,{childList:!0,subtree:!0})}catch(c){}},getProminenceScore:p,destroy:()=>{if(e&&(e.disconnect(),e=null),t&&typeof cancelIdleCallback=="function")try{cancelIdleCallback(t)}catch(i){}t=0,n=null,d.clear()}}}var ae="https://api.sentient-ui.com/v1/events";function ie(){try{let e=document.cookie.match(/(?:^|; )_snt_uid=([^;]*)/);return e?decodeURIComponent(e[1]):void 0}catch(e){return}}var E=new Map;function he(e){var l;let t=A(e),n=e.respectDoNotTrack!==!1&&N(),d=e.consent===!1||n;if(!e.graph||!e.apiKey||d||typeof window=="undefined")return t;let p=E.get(e.apiKey);if(p)try{p()}catch(g){}let m=G(),o=(l=e.ingestUrl)!=null?l:ae,a=M({syncUrl:o.replace(/\/events\/?$/,"/graph/sync"),apiKey:e.apiKey,projectId:e.apiKey,sessionId:ie()});m.scan().then(g=>{for(let r of g.nodes)a.addPageNode({id:r.componentId,componentId:r.componentId,semanticType:r.semanticType,answers:e.captureDomText&&r.headingText?[r.headingText]:[],prominenceScore:r.prominenceScore,depth:r.depth});for(let r of g.edges)a.addStructuralEdge(r);a.syncOnce()});let i=null,c=()=>{i!==null&&clearTimeout(i),i=setTimeout(()=>{i=null,a.syncOnce()},500)};m.observe(g=>{for(let r of g.nodes)a.addPageNode({id:r.componentId,componentId:r.componentId,semanticType:r.semanticType,answers:e.captureDomText&&r.headingText?[r.headingText]:[],prominenceScore:r.prominenceScore,depth:r.depth});for(let r of g.edges)a.addStructuralEdge(r);c()});let u=()=>{i!==null&&(clearTimeout(i),i=null),m.destroy(),a.destroy(),E.get(e.apiKey)===u&&E.delete(e.apiKey)};return E.set(e.apiKey,u),I(y({},t),{getGraph:()=>a.snapshot(),dispose:()=>{u(),t.dispose()},destroy:()=>{u(),t.destroy()}})}export{j as deriveSessionSegment,$ as detectDeviceClass,L as detectTimeOfDay,k as detectTrafficSource,he as init,U as referrerDomainFromReferer,_ as sanitizePageUrl};
|
|
2
2
|
//# sourceMappingURL=index-graph.mjs.map
|
package/dist/index-local.d.cts
CHANGED
package/dist/index-local.d.ts
CHANGED
package/dist/index.d.cts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { A as AssignResult, a as Assignment, C as ComponentGoalOptions, c as ComponentWeightEntry, d as CompoundLocator, D as DecideInput, e as DecideOutcome, f as DecisionSnapshot, g as EventType, G as GoalDefinition, h as GoalOptions, j as GraphConfig, k as GraphSnapshot, L as LOCAL_MODE_BANNER, M as MicroSignalEmitter, l as MicroSignalType, P as PROD_KEYLESS_ERROR, Q as QueueConfig, S as SNAPSHOT_STORAGE_KEY_PREFIX, n as SectionMapEntry, o as SentientClient, p as SentientConfig, q as SentientEvent, r as SessionConfig, s as SessionManager, t as SlotConfigEntry, u as SlotOps, W as WeightEntry, v as attachMicroSignalDetectors, w as grantConsent, x as init, y as isDoNotTrackEnabled, z as readSnapshot, B as renderPrePaintScript, H as writeSnapshot } from './index-
|
|
1
|
+
export { A as AssignResult, a as Assignment, C as ComponentGoalOptions, c as ComponentWeightEntry, d as CompoundLocator, D as DecideInput, e as DecideOutcome, f as DecisionSnapshot, g as EventType, G as GoalDefinition, h as GoalOptions, j as GraphConfig, k as GraphSnapshot, L as LOCAL_MODE_BANNER, M as MicroSignalEmitter, l as MicroSignalType, P as PROD_KEYLESS_ERROR, Q as QueueConfig, S as SNAPSHOT_STORAGE_KEY_PREFIX, n as SectionMapEntry, o as SentientClient, p as SentientConfig, q as SentientEvent, r as SessionConfig, s as SessionManager, t as SlotConfigEntry, u as SlotOps, W as WeightEntry, v as attachMicroSignalDetectors, w as grantConsent, x as init, y as isDoNotTrackEnabled, z as readSnapshot, B as renderPrePaintScript, H as writeSnapshot } from './index-DeTm1xvY.cjs';
|
|
2
2
|
export { A as AGENT_INTENTS, a as AgentIntent, b as SlotDeclInput, c as agentIntent, d as agentUaList, e as armOfResult, f as baselineResultFor, g as baselineSlots, i as classifiedAgents, j as deriveSessionSegment, k as detectDeviceClass, l as detectTimeOfDay, m as detectTrafficSource, n as matchedAgentToken, r as referrerDomainFromReferer, t as toWireSlot, u as uaTokenMatch } from './session-meta-BVvq5RBB.cjs';
|
|
3
3
|
export { SlotResult } from '@sentientui/policy';
|
package/dist/index.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { A as AssignResult, a as Assignment, C as ComponentGoalOptions, c as ComponentWeightEntry, d as CompoundLocator, D as DecideInput, e as DecideOutcome, f as DecisionSnapshot, g as EventType, G as GoalDefinition, h as GoalOptions, j as GraphConfig, k as GraphSnapshot, L as LOCAL_MODE_BANNER, M as MicroSignalEmitter, l as MicroSignalType, P as PROD_KEYLESS_ERROR, Q as QueueConfig, S as SNAPSHOT_STORAGE_KEY_PREFIX, n as SectionMapEntry, o as SentientClient, p as SentientConfig, q as SentientEvent, r as SessionConfig, s as SessionManager, t as SlotConfigEntry, u as SlotOps, W as WeightEntry, v as attachMicroSignalDetectors, w as grantConsent, x as init, y as isDoNotTrackEnabled, z as readSnapshot, B as renderPrePaintScript, H as writeSnapshot } from './index-
|
|
1
|
+
export { A as AssignResult, a as Assignment, C as ComponentGoalOptions, c as ComponentWeightEntry, d as CompoundLocator, D as DecideInput, e as DecideOutcome, f as DecisionSnapshot, g as EventType, G as GoalDefinition, h as GoalOptions, j as GraphConfig, k as GraphSnapshot, L as LOCAL_MODE_BANNER, M as MicroSignalEmitter, l as MicroSignalType, P as PROD_KEYLESS_ERROR, Q as QueueConfig, S as SNAPSHOT_STORAGE_KEY_PREFIX, n as SectionMapEntry, o as SentientClient, p as SentientConfig, q as SentientEvent, r as SessionConfig, s as SessionManager, t as SlotConfigEntry, u as SlotOps, W as WeightEntry, v as attachMicroSignalDetectors, w as grantConsent, x as init, y as isDoNotTrackEnabled, z as readSnapshot, B as renderPrePaintScript, H as writeSnapshot } from './index-C-VCLqSk.js';
|
|
2
2
|
export { A as AGENT_INTENTS, a as AgentIntent, b as SlotDeclInput, c as agentIntent, d as agentUaList, e as armOfResult, f as baselineResultFor, g as baselineSlots, i as classifiedAgents, j as deriveSessionSegment, k as detectDeviceClass, l as detectTimeOfDay, m as detectTrafficSource, n as matchedAgentToken, r as referrerDomainFromReferer, t as toWireSlot, u as uaTokenMatch } from './session-meta-BVvq5RBB.js';
|
|
3
3
|
export { SlotResult } from '@sentientui/policy';
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var Ye=Object.create;var ne=Object.defineProperty,qe=Object.defineProperties,Xe=Object.getOwnPropertyDescriptor,Ze=Object.getOwnPropertyDescriptors,et=Object.getOwnPropertyNames,Oe=Object.getOwnPropertySymbols,tt=Object.getPrototypeOf,Pe=Object.prototype.hasOwnProperty,nt=Object.prototype.propertyIsEnumerable;var Te=(e,t,n)=>t in e?ne(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,w=(e,t)=>{for(var n in t||(t={}))Pe.call(t,n)&&Te(e,n,t[n]);if(Oe)for(var n of Oe(t))nt.call(t,n)&&Te(e,n,t[n]);return e},Q=(e,t)=>qe(e,Ze(t));var ot=(e,t)=>{for(var n in t)ne(e,n,{get:t[n],enumerable:!0})},Le=(e,t,n,c)=>{if(t&&typeof t=="object"||typeof t=="function")for(let u of et(t))!Pe.call(e,u)&&u!==n&&ne(e,u,{get:()=>t[u],enumerable:!(c=Xe(t,u))||c.enumerable});return e};var rt=(e,t,n)=>(n=e!=null?Ye(tt(e)):{},Le(t||!e||!e.__esModule?ne(n,"default",{value:e,enumerable:!0}):n,e)),st=e=>Le(ne({},"__esModule",{value:!0}),e);var Tt={};ot(Tt,{AGENT_INTENTS:()=>ye,LOCAL_MODE_BANNER:()=>Ce,PROD_KEYLESS_ERROR:()=>be,SNAPSHOT_STORAGE_KEY_PREFIX:()=>J,agentIntent:()=>Ue,agentUaList:()=>oe,armOfResult:()=>he,attachMicroSignalDetectors:()=>Fe,baselineResultFor:()=>z,baselineSlots:()=>Be,classifiedAgents:()=>Ke,deriveSessionSegment:()=>Ge,detectDeviceClass:()=>se,detectTimeOfDay:()=>le,detectTrafficSource:()=>ie,grantConsent:()=>Dt,init:()=>ze,isDoNotTrackEnabled:()=>ke,matchedAgentToken:()=>Ie,readSnapshot:()=>Se,referrerDomainFromReferer:()=>ae,renderPrePaintScript:()=>$e,toWireSlot:()=>ce,uaTokenMatch:()=>re,writeSnapshot:()=>H});module.exports=st(Tt);function ge(){try{if(typeof crypto!="undefined"&&typeof crypto.randomUUID=="function")return crypto.randomUUID()}catch(e){}try{if(typeof crypto!="undefined"&&typeof crypto.getRandomValues=="function"){let e=new Uint8Array(16);crypto.getRandomValues(e),e[6]=e[6]&15|64,e[8]=e[8]&63|128;let t="";for(let n=0;n<16;n++)t+=e[n].toString(16).padStart(2,"0"),(n===3||n===5||n===7||n===9)&&(t+="-");return t}}catch(e){}return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{let t=Math.random()*16|0;return(e==="x"?t:t&3|8).toString(16)})}function pe(e){return e?`_${e.slice(0,12)}`:""}var it="_snt_uid",at=365,lt="_snt_uid";function ct(){return ge()}function dt(e){try{let t=document.cookie.match(new RegExp(`(?:^|; )${e}=([^;]*)`));return t?decodeURIComponent(t[1]):null}catch(t){return null}}function ut(e,t,n){try{document.cookie=`${e}=${encodeURIComponent(t)}; max-age=${n}; SameSite=strict; path=/`}catch(c){}}function gt(e){try{return localStorage.getItem(e)}catch(t){return null}}function pt(e,t){try{return localStorage.setItem(e,t),!0}catch(n){return!1}}function ft(e){try{return sessionStorage.getItem(e)}catch(t){return null}}function mt(e,t){try{return sessionStorage.setItem(e,t),!0}catch(n){return!1}}function yt(e){try{sessionStorage.removeItem(e)}catch(t){}}function ht(e){try{return document.cookie=`${e}_probe=1; max-age=1; SameSite=strict; path=/`,document.cookie.indexOf(`${e}_probe=1`)!==-1}catch(t){return!1}}function St(e){try{localStorage.removeItem(e)}catch(t){}}function vt(e){try{document.cookie=`${e}=; max-age=0; SameSite=strict; path=/`}catch(t){}}var wt={getSessionId:()=>null,isEphemeral:()=>!1,destroy:()=>{}};function fe(e){var m,E,O,x,A,R;if(typeof window=="undefined")return wt;let t=pe(e==null?void 0:e.apiKey),n=(m=e==null?void 0:e.cookieName)!=null?m:`${it}${t}`,c=`${lt}${t}`,d=((E=e==null?void 0:e.cookieTTLDays)!=null?E:at)*24*60*60,g=S=>S&&S.length>0?S:null,l=(R=(A=(x=(O=g(dt(n)))!=null?O:g(gt(c)))!=null?x:g(ft(c)))!=null?A:g(e==null?void 0:e.ssrSessionId))!=null?R:ct();ut(n,l,d);let r=pt(c,l),o=ht(n),i=r?!1:mt(c,l),a=!r&&!o&&!i;return{getSessionId:()=>l,isEphemeral:()=>a,destroy:()=>{l=null,vt(n),St(c),yt(c)}}}function Ee(e){return`_snt_retry_${e.slice(0,12)}`}var bt={push:()=>{},flush:()=>{},destroy:()=>{}};function xt(e,t){try{let n=localStorage.getItem(t);if(!n)return[];let c=JSON.parse(n);return Array.isArray(c)?(localStorage.removeItem(t),c.slice(-e)):[]}catch(n){return[]}}function xe(e,t,n){try{let c=(()=>{try{let g=localStorage.getItem(n);if(!g)return[];let l=JSON.parse(g);return Array.isArray(l)?l:[]}catch(g){return[]}})(),u=new Map;for(let g of c)u.set(g.id,g);for(let g of e)u.set(g.id,g);let d=[...u.values()].slice(-t);localStorage.setItem(n,JSON.stringify(d))}catch(c){}}function Et(e,t){try{let n=localStorage.getItem(t);if(!n)return;let c=JSON.parse(n);if(!Array.isArray(c))return;let u=new Set(e),d=c.filter(g=>!u.has(g.id));if(d.length===c.length)return;d.length===0?localStorage.removeItem(t):localStorage.setItem(t,JSON.stringify(d))}catch(n){}}function Me(e){var q,X,Z;if(typeof window=="undefined")return bt;let t=(q=e.flushIntervalMs)!=null?q:5e3,n=(X=e.maxBatchSize)!=null?X:20,c=(Z=e.maxRetrySize)!=null?Z:100,u=e.ingestUrl,d=e.apiKey,g=Ee(d),l=[],r=new Set,o=[],i=f=>{for(let h of f)a.delete(h),!r.has(h)&&(r.add(h),o.push(h));for(;o.length>500;){let h=o.shift();h&&r.delete(h)}Et(f,g)},a=new Set,m=f=>{r.has(f.id)||a.has(f.id)||(a.add(f.id),l.push(f))},E=f=>{for(let h of f)r.has(h.id)||(a.add(h.id),l.push(h))},O=xt(c,g);for(let f of O)m(f);let x=0,A=0,R=f=>{if(f.length===0)return;let h=JSON.stringify(f),K=f.map(s=>s.id),L;try{L=fetch(u,{method:"POST",keepalive:!0,body:h,headers:{"Content-Type":"application/json",Authorization:`Bearer ${d}`}})}catch(s){xe(f,c,g),E(f),A++,x=Date.now()+Math.min(6e4,1e3*2**Math.min(A,6));return}let $=s=>{if(s.ok||s.status>=400&&s.status<500&&s.status!==429){i(K),A=0,x=0;return}xe(f,c,g),E(f),A++,x=Date.now()+Math.min(6e4,1e3*2**Math.min(A,6))};L instanceof Promise?L.then($).catch(()=>{xe(f,c,g),E(f),A++,x=Date.now()+Math.min(6e4,1e3*2**Math.min(A,6))}):$(L)},S=typeof TextEncoder!="undefined"?new TextEncoder:null,ue=f=>S?S.encode(f).length:f.length,W=f=>{let h=[],K=2;for(let L of f){let $=ue(JSON.stringify(L))+1;if(h.length>0&&K+$>57344||h.length>=n)break;h.push(L),K+=$}return h},U=()=>{try{if(Date.now()<x)return;for(;l.length>0&&!(Date.now()<x);){let f=l.filter(K=>!r.has(K.id));if(l.length=0,f.length===0)break;let h=W(f);if(h.length===0)break;h.length<f.length&&l.push(...f.slice(h.length)),R(h)}}catch(f){}},P=!0,j=null;j=setInterval(()=>{P&&U()},t);let B=()=>{document.visibilityState==="hidden"&&U()},Y=()=>{U()};return document.addEventListener("visibilitychange",B),window.addEventListener("pagehide",Y),{push(f){m(f),l.length>=n&&U()},flush:U,destroy(){P=!1,j!==null&&(clearInterval(j),j=null),document.removeEventListener("visibilitychange",B),window.removeEventListener("pagehide",Y),U()}}}var It=1800*1e3;function me(e,t){return`${encodeURIComponent(e)}:${encodeURIComponent(t)}`}function Ne(e=It,t){let n=new Map,c=`_snt_asgn${pe(t)}_`,u=(o,i)=>`${c}${encodeURIComponent(o)}:${encodeURIComponent(i)}`,d=o=>{let i=o.slice(c.length),a=i.indexOf(":");if(a<0)return null;try{return{componentId:decodeURIComponent(i.slice(0,a)),segment:decodeURIComponent(i.slice(a+1))}}catch(m){return null}},g=()=>{try{let o=[];for(let i=0;i<localStorage.length;i++){let a=localStorage.key(i);a!=null&&a.startsWith(c)&&o.push(a)}return o}catch(o){return[]}},l=o=>o.assignedAt+(o.ttlMs&&o.ttlMs>0?o.ttlMs:e)<Date.now();return typeof window!="undefined"&&(()=>{for(let o of g())try{let i=localStorage.getItem(o);if(!i)continue;let a=JSON.parse(i);if(l(a)){localStorage.removeItem(o);continue}let m=d(o);if(!m)continue;n.set(me(m.componentId,m.segment),a)}catch(i){}})(),{get(o,i){let a=n.get(me(o,i));return a?l(a)?(n.delete(me(o,i)),null):a:null},set(o,i,a){let m=me(o,i);n.set(m,a);try{localStorage.setItem(u(o,i),JSON.stringify(a))}catch(E){}},invalidate(o){let i=`${encodeURIComponent(o)}:`;for(let a of[...n.keys()])a.startsWith(i)&&n.delete(a);for(let a of g()){let m=d(a);if((m==null?void 0:m.componentId)===o)try{localStorage.removeItem(a)}catch(E){}}},clear(){n.clear();for(let o of g())try{localStorage.removeItem(o)}catch(i){}}}}var oe=["GPTBot","ChatGPT-User","OAI-SearchBot","ClaudeBot","Claude-User","Claude-SearchBot","PerplexityBot","Perplexity-User","Google-Extended","Applebot-Extended","Meta-ExternalAgent","Bytespider","CCBot","Amazonbot","cohere-ai","Diffbot"];function re(e){return Ie(e)!==null}function Ie(e){var n;if(!e)return null;let t=e.toLowerCase();return(n=oe.find(c=>t.includes(c.toLowerCase())))!=null?n:null}var ye={GPTBot:"training","ChatGPT-User":"user","OAI-SearchBot":"search",ClaudeBot:"training","Claude-User":"user","Claude-SearchBot":"search",PerplexityBot:"search","Perplexity-User":"user","Google-Extended":"training","Applebot-Extended":"training","Meta-ExternalAgent":"training",Bytespider:"training",CCBot:"training",Amazonbot:"other","cohere-ai":"training",Diffbot:"other"};function Ue(e){if(!e)return"other";let t=oe.find(n=>n.toLowerCase()===e.toLowerCase());return t&&ye[t]||"other"}function Ke(){var t;let e={user:[],search:[],training:[],other:[]};for(let n of oe)e[(t=ye[n])!=null?t:"other"].push(n);return e}function se(e){let t=e.toLowerCase();return/ipad|tablet|playbook|kindle|silk/.test(t)?"tablet":/mobi|iphone|ipod|android.*mobile|phone/.test(t)?"mobile":"desktop"}function ie(e,t){if(!e)return"direct";try{let n=new URL(e);if(t)try{if(new URL(t).host===n.host)return"direct"}catch(u){}let c=n.hostname.toLowerCase();return/(^|\.)(google|bing|duckduckgo|yahoo)\./.test(c)?"search":/(^|\.)(twitter\.com|x\.com|facebook\.com|linkedin\.com|reddit\.com|t\.co)$/.test(c)?"social":"referral"}catch(n){return"direct"}}function ae(e){if(!e)return null;try{return new URL(e).hostname}catch(t){return null}}function le(e){let t=e.getHours();return t<6?"night":t<12?"morning":t<18?"afternoon":"evening"}function Ge(e){let t=Ct("__segment__",e);return`${t.deviceClass}:${t.trafficSource}`}function Ct(e,t){var d,g,l,r,o,i,a;let n=(g=(d=t==null?void 0:t.userAgent)==null?void 0:d.trim())!=null?g:"",c=(r=(l=t==null?void 0:t.referer)==null?void 0:l.trim())!=null?r:"",u=(o=t==null?void 0:t.now)!=null?o:new Date;return{sessionId:e,ephemeral:!1,utmParams:(i=t==null?void 0:t.utmParams)!=null?i:{},deviceClass:n?se(n):"desktop",trafficSource:c?ie(c,t==null?void 0:t.appOrigin):"direct",referrerDomain:ae(c),timeOfDay:le(u),dayOfWeek:(a=["sun","mon","tue","wed","thu","fri","sat"][u.getDay()])!=null?a:"sun",automation:(t==null?void 0:t.webdriver)===!0||re(n)}}var V=require("@sentientui/policy");function ce(e){return w(w(w({id:e.id},e.arms?{arms:[...e.arms]}:{}),e.dims?{dims:Object.fromEntries(Object.entries(e.dims).map(([t,n])=>[t,[...n]]))}:{}),e.baseline!==void 0?{baseline:e.baseline}:{})}function z(e){let t=ce(e);return(0,V.slotResultFor)(t,(0,V.slotBaselineArm)(t))}function Be(e){let t={};for(let n of e)t[n.id]=z(n);return t}function he(e){return typeof e=="string"?e:(0,V.canonicalArm)(e)}var J="_snt_snap:",At=["low","medium","high"];function Se(e){try{let t=localStorage.getItem(J+e);if(!t)return null;let n=JSON.parse(t);return!n||typeof n!="object"||n.v!==1||typeof n.persona!="string"||typeof n.band!="string"||!At.includes(n.band)||typeof n.slots!="object"||n.slots===null||Array.isArray(n.slots)||!(n.layoutOrder===null||Array.isArray(n.layoutOrder))||typeof n.savedAt!="number"||!(n.slotConfig===void 0||typeof n.slotConfig=="object"&&n.slotConfig!==null&&!Array.isArray(n.slotConfig))?null:n}catch(t){return null}}function H(e,t){try{localStorage.setItem(J+e,JSON.stringify(t))}catch(n){}}function $e(e){return"(function(){try{var r=localStorage.getItem("+JSON.stringify(J+e).replace(/</g,"\\u003c")+');if(!r)return;var s=JSON.parse(r);if(!s||s.v!==1||typeof s.persona!=="string"||typeof s.band!=="string")return;var d=document.documentElement;if(d.hasAttribute("data-sentient-persona"))return;d.setAttribute("data-sentient-persona",s.persona);d.setAttribute("data-sentient-confidence",s.band);}catch(e){}})();'}var Re=require("@sentientui/policy");var we=require("@sentientui/policy");var be="[sentient] No API key configured \u2014 nothing is being learned. Set NEXT_PUBLIC_SENTIENT_API_KEY or pass localMode: true for local development.",Ce="[sentient] Local mode \u2014 decisions are simulated on-device and nothing is sent over the network. Add an API key to learn from real traffic.",We=!1,ve=!1;function Rt(){var e;try{return(e=new URLSearchParams(window.location.search).get("sentient_persona"))!=null?e:void 0}catch(t){return}}function je(e){var l;let t=fe({ssrSessionId:e.ssrSessionId,apiKey:e.apiKey}),n=(l=t.getSessionId())!=null?l:"local",c=Rt(),u=import("@sentientui/core/local").then(r=>{let o=r;return o.LOCAL_ENGINE_AVAILABLE?(We||(We=!0,console.info(Ce)),o):(ve||(ve=!0,console.error(be)),null)}).catch(()=>(ve||(ve=!0,console.error(be)),null)),d=null;function g(r){let o=document.documentElement;o.dataset.sentientPersona===void 0&&(o.dataset.sentientPersona=r.persona,o.dataset.sentientConfidence=(0,we.confidenceBand)(r.confidence))}return{isLocal:!0,async decide(r){var a,m,E;let o=await u;if(!o)return null;let i=o.createLocalEngine({sessionId:n,forcedPersona:c}).decide(r);return d=Q(w({},i),{layoutOrder:(m=(a=i.layoutOrder)!=null?a:d==null?void 0:d.layoutOrder)!=null?m:null,slots:w(w({},(E=d==null?void 0:d.slots)!=null?E:{}),i.slots)}),H(e.apiKey||"local",{v:1,persona:d.persona,band:(0,we.confidenceBand)(d.confidence),slots:d.slots,layoutOrder:d.layoutOrder,savedAt:Date.now()}),g(i),i},getSlotResult(r){var o,i,a;return(a=(i=d==null?void 0:d.slots[r])!=null?i:(o=e.initialSlots)==null?void 0:o[r])!=null?a:null},getPersona(){return d?{persona:d.persona,confidence:d.confidence,band:(0,we.confidenceBand)(d.confidence)}:null},async assign(r,o){var m;let i=await u;return!i||!o||o.length===0?o!=null&&o[0]?{variantId:o[0],assignmentTtlMs:0}:null:{variantId:(m=i.createLocalEngine({sessionId:n,forcedPersona:c}).decide({components:[{id:r,variantIds:o}]}).assignments[r])!=null?m:o[0],assignmentTtlMs:0}},track:()=>{},goal:()=>{},componentGoal:()=>{},identify:()=>{},getAssignment:()=>null,fetchWeights:()=>Promise.resolve([]),getGraph:()=>({pageNodes:[],capturedAt:0}),dispose:()=>{},destroy:()=>t.destroy()}}function Fe(e,t,n,c){let u=[];{let l=!1,r=[],o=()=>{if(l)return;let i=Date.now();for(r.push(i);r.length>0&&i-r[0]>500;)r.shift();r.length>=3&&(l=!0,e("rage_click"))};t.addEventListener("click",o),u.push(()=>t.removeEventListener("click",o))}{let d=!1,g=l=>{if(d||!(l.target instanceof Node)||!t.contains(l.target)&&t!==l.target)return;d=!0;let r=typeof window!="undefined"?window.getSelection():null,o=r?r.toString().length:0;e("text_copy",{selectionLength:o})};document.addEventListener("copy",g),u.push(()=>document.removeEventListener("copy",g))}{let d=!1,g=!1,l=null,r=()=>{l!==null&&(clearTimeout(l),l=null)},o=()=>{d||!g||(r(),l=setTimeout(()=>{!d&&g&&(d=!0,e("scroll_hesitation"))},3e3))},i=()=>{r(),o()},a=E=>{for(let O of E)g=O.intersectionRatio>.3,g?o():r()},m=new IntersectionObserver(a,{threshold:[.3]});m.observe(t),window.addEventListener("scroll",i,{passive:!0}),u.push(()=>{m.disconnect(),window.removeEventListener("scroll",i),r()})}if((c==null?void 0:c.tabLoss)!==!1){let d=!1,g=n!=null?n:Date.now(),l=()=>{if(d||document.visibilityState!=="hidden")return;let r=Date.now()-g;r<15e3&&(d=!0,e("tab_loss",{timeOnPage:r}))};document.addEventListener("visibilitychange",l),u.push(()=>document.removeEventListener("visibilitychange",l))}return()=>{for(let d of u)d()}}var Je="https://api.sentient-ui.com/v1/events",_=new Map,Qe=null;function kt(e){return"value"in e||"currency"in e||"externalId"in e||"metadata"in e||"weight"in e||"stepIndex"in e}function Ae(){return ge()}var de={track:()=>{},goal:()=>{},componentGoal:()=>{},identify:()=>{},getAssignment:()=>null,assign:()=>Promise.resolve(null),decide:()=>Promise.resolve(null),getSlotResult:()=>null,getPersona:()=>null,fetchWeights:()=>Promise.resolve([]),getGraph:()=>({pageNodes:[],capturedAt:0}),dispose:()=>{},destroy:()=>{}};function _t(){try{let e={},t=new URLSearchParams(window.location.search);for(let[n,c]of t)n.startsWith("utm_")&&(e[n]=c);return e}catch(e){return{}}}function Ve(e){return e.replace(/\/events\/?$/,"")}function ke(){return typeof navigator!="undefined"&&navigator.globalPrivacyControl===!0?!0:[typeof navigator!="undefined"?navigator.doNotTrack:void 0,typeof window!="undefined"?window.doNotTrack:void 0,typeof navigator!="undefined"?navigator.msDoNotTrack:void 0].some(t=>t==="1"||t==="yes")}function Dt(e){var l;if(typeof window=="undefined")return;let t=e!=null?e:Qe;if(!t){console.warn("[sentient] grantConsent() called before init()");return}let n=_.get(t);if(!n){console.warn("[sentient] grantConsent() called before init()");return}let{config:c,upgrade:u}=n;if(!u||c.respectDoNotTrack!==!1&&ke())return;let d=ze(Q(w({},c),{consent:!0}));u(d);let g=(l=_.get(t))==null?void 0:l.dispose;_.set(t,{config:Q(w({},c),{consent:!0}),upgrade:null,dispose:g})}function Ot(e){var l;let t=e.preConsentBehavior==="statistical_winner",n=Ve((l=e.ingestUrl)!=null?l:Je),c={"Content-Type":"application/json",Authorization:`Bearer ${e.apiKey}`},u={track:()=>{},goal:()=>{},componentGoal:()=>{},identify:()=>{},getAssignment:()=>null,fetchWeights:()=>Promise.resolve([]),async assign(r,o,i){if(!t)return null;try{let a=new URLSearchParams({componentId:r});for(let O of o!=null?o:[])a.append("variantIds[]",O);let m=await fetch(`${n}/winner?${a.toString()}`,{headers:c});return m.ok?{variantId:(await m.json()).variantId,assignmentTtlMs:0}:o!=null&&o[0]?{variantId:o[0],assignmentTtlMs:0}:null}catch(a){return o!=null&&o[0]?{variantId:o[0],assignmentTtlMs:0}:null}},decide:()=>Promise.resolve(null),getSlotResult:()=>null,getPersona:()=>null,getGraph:()=>({pageNodes:[],capturedAt:0}),dispose:()=>{},destroy:()=>{}},d={track:r=>u.track(r),goal:((r,o,i,a)=>u.goal(r,o,i,a)),componentGoal:(r,o,i)=>u.componentGoal(r,o,i),identify:r=>u.identify(r),getAssignment:(r,o)=>u.getAssignment(r,o),assign:(r,o,i,a)=>u.assign(r,o,i,a),decide:r=>u.decide(r),getSlotResult:r=>u.getSlotResult(r),getPersona:()=>u.getPersona(),fetchWeights:()=>u.fetchWeights(),getGraph:()=>u.getGraph(),dispose:()=>u.dispose(),destroy:()=>u.destroy()};function g(r){u=r}return{proxy:d,setInner:g}}function ze(e){var Y,q,X,Z,f,h,K,L,$;if(typeof window=="undefined")return de;Qe=e.apiKey;let t=_.get(e.apiKey||"local");if(t!=null&&t.dispose)try{t.dispose()}catch(s){}let n=e.respectDoNotTrack!==!1&&ke(),c=e.consent===!1||n,u=typeof e.apiKey=="string"&&e.apiKey.startsWith("pk_");if(e.localMode===!0||!u&&e.localMode!==!1)return c?(_.set(e.apiKey||"local",{config:e,upgrade:null}),de):(_.set(e.apiKey||"local",{config:e,upgrade:null}),je(e));if(c){if(!e.apiKey||!e.apiKey.startsWith("pk_"))return e.preConsentBehavior==="statistical_winner"&&console.warn("[sentient] init() called with an invalid apiKey \u2014 expected a pk_ public key. SDK disabled."),_.set(e.apiKey,{config:e,upgrade:null}),de;let{proxy:s,setInner:p}=Ot(e);return _.set(e.apiKey,{config:e,upgrade:n?null:p}),s}if(!e.apiKey||!e.apiKey.startsWith("pk_"))return console.warn("[sentient] init() called with an invalid apiKey \u2014 expected a pk_ public key. SDK disabled."),de;if(e.ingestUrl==="")return console.warn("[sentient] init() called with an empty ingestUrl. SDK disabled."),de;let d=(Y=e.ingestUrl)!=null?Y:Je,g=Date.now(),l=fe({ssrSessionId:e.ssrSessionId,apiKey:e.apiKey}),r=Ne(void 0,e.apiKey),o=Me({ingestUrl:d,apiKey:e.apiKey}),i=Ve(d),a={"Content-Type":"application/json",Authorization:`Bearer ${e.apiKey}`},m=se((q=navigator.userAgent)!=null?q:""),E=typeof window!="undefined"?window.location.origin:void 0,O=ie((X=document.referrer)!=null?X:"",E),x=(Z=e.sessionSegment)!=null?Z:`${m}:${O}`,A=new Map,R=new Map,S=null,ue=s=>{for(let p of s)R.has(p.id)||R.set(p.id,z(p))};if(e.initialSlots)for(let[s,p]of Object.entries(e.initialSlots))R.set(s,p);let W=Se(e.apiKey);if(W)for(let[s,p]of Object.entries(W.slots))R.has(s)||R.set(s,p);let U={low:.15,medium:.5,high:.85};if(e.initialPersona)S=w({},e.initialPersona);else{let s=document.documentElement.dataset;s.sentientPersona?S={persona:s.sentientPersona,confidence:(h=U[(f=s.sentientConfidence)!=null?f:"low"])!=null?h:.15}:W&&(S={persona:W.persona,confidence:(K=U[W.band])!=null?K:.15})}if(e.initialAssignments)for(let[s,p]of Object.entries(e.initialAssignments))r.set(s,x,{variantId:p,assignedAt:Date.now(),segment:x,confidence:1});let P=Promise.resolve(),j=l.getSessionId();if(j){let s=ae((L=document.referrer)!=null?L:""),p=w(w({sessionId:j,deviceClass:m,trafficSource:O,referrerDomain:s,utmParams:_t(),timeOfDay:le(new Date),dayOfWeek:["sun","mon","tue","wed","thu","fri","sat"][new Date().getDay()],ephemeral:l.isEphemeral(),automation:typeof navigator!="undefined"&&navigator.webdriver===!0||re(($=navigator.userAgent)!=null?$:"")},e.userId?{userId:e.userId}:{}),e.country?{country:e.country}:{});try{P=fetch(`${i}/sessions`,{method:"POST",keepalive:!0,body:JSON.stringify(p),headers:a}).then(y=>{y.status===402&&console.warn("[SentientUI] Session limit exceeded for this project. The bandit will stop learning until the limit resets. Upgrade at sentient-ui.com/pricing")}).catch(()=>{})}catch(y){}}e.debug&&(console.log("[sentient] initialized",{context:e.context}),window.__sentient={client:null,queue:o});let B={goal(s,p={},y=1,M=0){var I,T,C;let k=l.getSessionId();if(!k)return;let v=kt(p)?p:{metadata:p},G=Ae(),N={sessionId:k,name:s,metadata:(I=v.metadata)!=null?I:{},weight:(T=v.weight)!=null?T:y,stepIndex:(C=v.stepIndex)!=null?C:M,goalId:G,value:v.value,currency:v.currency,externalId:v.externalId};P.then(()=>{fetch(`${i}/goals`,{method:"POST",keepalive:!0,body:JSON.stringify(N),headers:a}).catch(()=>{})})},componentGoal(s,p,y){var I,T,C;let M=l.getSessionId();if(!M)return;let k=r.get(s,x),v=k?null:(I=R.get(s))!=null?I:null;if(!k&&v===null){e.debug&&console.warn(`[sentient] componentGoal("${s}"): no assignment or slot decision yet \u2014 render its <Adaptive>/adaptive hook or call assign()/decide() before recording a goal.`);return}let G=k?k.variantId:he(v),N={id:Ae(),sessionId:M,projectId:e.apiKey,componentId:s,variantId:G,eventType:"goal_achieved",goalType:p,payload:w({reward:(T=y==null?void 0:y.reward)!=null?T:1,goalValue:y==null?void 0:y.value,currency:y==null?void 0:y.currency},(C=y==null?void 0:y.metadata)!=null?C:{}),timestamp:Date.now(),timeInSession:Date.now()-g};e.debug&&console.log("[sentient] componentGoal",N),P.then(()=>o.push(N))},identify(s){let p=l.getSessionId();p&&P.then(()=>{fetch(`${i}/sessions`,{method:"POST",keepalive:!0,body:JSON.stringify({sessionId:p,userId:s,ephemeral:l.isEphemeral()}),headers:a}).catch(()=>{})})},track(s){let p=l.getSessionId();if(!p)return;let y=Q(w({},s),{id:Ae(),sessionId:p,timestamp:Date.now(),timeInSession:Date.now()-g});e.debug&&console.log("[sentient] track",y),P.then(()=>o.push(y))},getAssignment(s,p){return r.get(s,p)},async assign(s,p,y,M){let k=l.getSessionId();if(!k)return null;let v=r.get(s,x);if(v&&(p!=null&&p.length||v.content!==void 0)){let I=v.ttlMs&&v.ttlMs>0?Math.max(0,v.assignedAt+v.ttlMs-Date.now()):0;return{variantId:v.variantId,assignmentTtlMs:I,content:v.content}}let G=A.get(s);if(G)return G;let N=(async()=>{await P;try{let I={sessionId:k,componentId:s,variantIds:p};M!==void 0?I.agentDataByVariant=M:y!==void 0&&(I.agentData=y);let T=await fetch(`${i}/assign`,{method:"POST",body:JSON.stringify(I),headers:a});if(!T.ok)return null;let C=await T.json();return r.set(s,x,w({variantId:C.variantId,assignedAt:Date.now(),segment:x,confidence:1,content:C.content},C.assignmentTtlMs&&C.assignmentTtlMs>0?{ttlMs:C.assignmentTtlMs}:{})),C}catch(I){return null}finally{A.delete(s)}})();return A.set(s,N),N},async decide(s){var M,k,v,G,N,I,T,C,_e;let p=l.getSessionId();if(!p)return null;let y=(M=s.slots)!=null?M:[];await P;try{let F={sessionId:p};s.sections&&s.sections.length>0&&(F.sections=s.sections.map(D=>({id:D}))),F.components=(k=s.components)!=null?k:[],y.length>0&&(F.slots=y.map(ce)),s.slotsFrom==="registry"&&(F.slotsFrom="registry"),s.v&&(F.v=s.v);let De=await fetch(`${i}/decide`,{method:"POST",body:JSON.stringify(F),headers:a});if(!De.ok)return ue(y),null;let b=await De.json(),ee={};for(let D of y)ee[D.id]=(G=(v=b.slots)==null?void 0:v[D.id])!=null?G:z(D);if(b.slots)for(let[D,te]of Object.entries(b.slots))D in ee||(ee[D]=te);for(let[D,te]of Object.entries(ee))R.set(D,te);let He=S!=null&&S.persona!=="unknown";b.persona&&!(b.persona==="unknown"&&He)?S={persona:b.persona,confidence:(N=b.confidence)!=null?N:0}:S||(S={persona:"unknown",confidence:0});for(let[D,te]of Object.entries((I=b.assignments)!=null?I:{}))r.set(D,x,{variantId:te,assignedAt:Date.now(),segment:x,confidence:1});return H(e.apiKey,w({v:1,persona:S.persona,band:(0,Re.confidenceBand)(S.confidence),slots:Object.fromEntries(R),layoutOrder:(T=b.layoutOrder)!=null?T:null,savedAt:Date.now()},b.slotConfig?{slotConfig:b.slotConfig}:{})),w(w(w({layoutOrder:(C=b.layoutOrder)!=null?C:null,assignments:(_e=b.assignments)!=null?_e:{},slots:ee,persona:S.persona,confidence:S.confidence},b.slotConfig?{slotConfig:b.slotConfig}:{}),b.goals?{goals:b.goals}:{}),b.sectionMap?{sectionMap:b.sectionMap}:{})}catch(F){return ue(y),null}},getSlotResult(s){var p;return(p=R.get(s))!=null?p:null},getPersona(){return S?{persona:S.persona,confidence:S.confidence,band:(0,Re.confidenceBand)(S.confidence)}:null},async fetchWeights(){var s;try{let p=await fetch(`${i}/weights`,{headers:a});return p.ok?(s=(await p.json()).components)!=null?s:[]:[]}catch(p){return[]}},getGraph(){return{pageNodes:[],capturedAt:0}},dispose(){var s;o.destroy(),((s=_.get(e.apiKey))==null?void 0:s.dispose)===B.dispose&&_.delete(e.apiKey),e.debug&&console.log("[sentient] disposed")},destroy(){var s;o.destroy(),l.destroy(),((s=_.get(e.apiKey))==null?void 0:s.dispose)===B.dispose&&_.delete(e.apiKey);try{localStorage.removeItem(J+e.apiKey),localStorage.removeItem(Ee(e.apiKey))}catch(p){}e.debug&&console.log("[sentient] destroyed")}};if(_.set(e.apiKey,{config:e,upgrade:null,dispose:B.dispose}),e.debug){let s=window;s.__sentient&&(s.__sentient.client=B)}return B}0&&(module.exports={AGENT_INTENTS,LOCAL_MODE_BANNER,PROD_KEYLESS_ERROR,SNAPSHOT_STORAGE_KEY_PREFIX,agentIntent,agentUaList,armOfResult,attachMicroSignalDetectors,baselineResultFor,baselineSlots,classifiedAgents,deriveSessionSegment,detectDeviceClass,detectTimeOfDay,detectTrafficSource,grantConsent,init,isDoNotTrackEnabled,matchedAgentToken,readSnapshot,referrerDomainFromReferer,renderPrePaintScript,toWireSlot,uaTokenMatch,writeSnapshot});
|
|
1
|
+
"use strict";var st=Object.create;var le=Object.defineProperty,it=Object.defineProperties,at=Object.getOwnPropertyDescriptor,lt=Object.getOwnPropertyDescriptors,ct=Object.getOwnPropertyNames,Ue=Object.getOwnPropertySymbols,dt=Object.getPrototypeOf,$e=Object.prototype.hasOwnProperty,ut=Object.prototype.propertyIsEnumerable;var Be=(e,t,n)=>t in e?le(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,E=(e,t)=>{for(var n in t||(t={}))$e.call(t,n)&&Be(e,n,t[n]);if(Ue)for(var n of Ue(t))ut.call(t,n)&&Be(e,n,t[n]);return e},X=(e,t)=>it(e,lt(t));var gt=(e,t)=>{for(var n in t)le(e,n,{get:t[n],enumerable:!0})},Fe=(e,t,n,d)=>{if(t&&typeof t=="object"||typeof t=="function")for(let u of ct(t))!$e.call(e,u)&&u!==n&&le(e,u,{get:()=>t[u],enumerable:!(d=at(t,u))||d.enumerable});return e};var pt=(e,t,n)=>(n=e!=null?st(dt(e)):{},Fe(t||!e||!e.__esModule?le(n,"default",{value:e,enumerable:!0}):n,e)),ft=e=>Fe(le({},"__esModule",{value:!0}),e);var jt={};gt(jt,{AGENT_INTENTS:()=>Ee,LOCAL_MODE_BANNER:()=>Pe,PROD_KEYLESS_ERROR:()=>_e,SNAPSHOT_STORAGE_KEY_PREFIX:()=>Y,agentIntent:()=>Je,agentUaList:()=>ce,armOfResult:()=>ke,attachMicroSignalDetectors:()=>Ze,baselineResultFor:()=>te,baselineSlots:()=>Ve,classifiedAgents:()=>ze,deriveSessionSegment:()=>He,detectDeviceClass:()=>ue,detectTimeOfDay:()=>fe,detectTrafficSource:()=>ge,grantConsent:()=>Ft,init:()=>rt,isDoNotTrackEnabled:()=>Ge,matchedAgentToken:()=>Oe,readSnapshot:()=>Ce,referrerDomainFromReferer:()=>pe,renderPrePaintScript:()=>Ye,toWireSlot:()=>me,uaTokenMatch:()=>de,writeSnapshot:()=>ne});module.exports=ft(jt);function he(){try{if(typeof crypto!="undefined"&&typeof crypto.randomUUID=="function")return crypto.randomUUID()}catch(e){}try{if(typeof crypto!="undefined"&&typeof crypto.getRandomValues=="function"){let e=new Uint8Array(16);crypto.getRandomValues(e),e[6]=e[6]&15|64,e[8]=e[8]&63|128;let t="";for(let n=0;n<16;n++)t+=e[n].toString(16).padStart(2,"0"),(n===3||n===5||n===7||n===9)&&(t+="-");return t}}catch(e){}return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{let t=Math.random()*16|0;return(e==="x"?t:t&3|8).toString(16)})}function Se(e){return e?`_${e.slice(0,12)}`:""}var mt="_snt_uid",yt=365,ht="_snt_uid";function St(){return he()}function vt(e){try{let t=document.cookie.match(new RegExp(`(?:^|; )${e}=([^;]*)`));return t?decodeURIComponent(t[1]):null}catch(t){return null}}function wt(e,t,n){try{document.cookie=`${e}=${encodeURIComponent(t)}; max-age=${n}; SameSite=strict; path=/`}catch(d){}}function bt(e){try{return localStorage.getItem(e)}catch(t){return null}}function xt(e,t){try{return localStorage.setItem(e,t),!0}catch(n){return!1}}function It(e){try{return sessionStorage.getItem(e)}catch(t){return null}}function Et(e,t){try{return sessionStorage.setItem(e,t),!0}catch(n){return!1}}function kt(e){try{sessionStorage.removeItem(e)}catch(t){}}function Ct(e){try{return document.cookie=`${e}_probe=1; max-age=1; SameSite=strict; path=/`,document.cookie.indexOf(`${e}_probe=1`)!==-1}catch(t){return!1}}function Rt(e){try{localStorage.removeItem(e)}catch(t){}}function At(e){try{document.cookie=`${e}=; max-age=0; SameSite=strict; path=/`}catch(t){}}var _t={getSessionId:()=>null,isEphemeral:()=>!1,destroy:()=>{}};function ve(e){var y,b,D,R,x,N;if(typeof window=="undefined")return _t;let t=Se(e==null?void 0:e.apiKey),n=(y=e==null?void 0:e.cookieName)!=null?y:`${mt}${t}`,d=`${ht}${t}`,o=((b=e==null?void 0:e.cookieTTLDays)!=null?b:yt)*24*60*60,g=k=>k&&k.length>0?k:null,l=(N=(x=(R=(D=g(vt(n)))!=null?D:g(bt(d)))!=null?R:g(It(d)))!=null?x:g(e==null?void 0:e.ssrSessionId))!=null?N:St();wt(n,l,o);let s=xt(d,l),r=Ct(n),i=s?!1:Et(d,l),c=!s&&!r&&!i;return{getSessionId:()=>l,isEphemeral:()=>c,destroy:()=>{l=null,At(n),Rt(d),kt(d)}}}function q(e){return Math.min(6e4,1e3*2**Math.min(e,6))}function we(e){if(e.ok===!0)return"delivered";let{status:t}=e;return typeof t!="number"?"retry":t>=200&&t<300?"delivered":t>=400&&t<500&&t!==429?"dropped":"retry"}function be(e,t){try{let n=localStorage.getItem(e);if(!n)return[];let d=JSON.parse(n);return Array.isArray(d)?(localStorage.removeItem(e),d.slice(-t)):[]}catch(n){return[]}}function Z(e,t,n){try{let d=(()=>{try{let o=localStorage.getItem(n);if(!o)return[];let g=JSON.parse(o);return Array.isArray(g)?g:[]}catch(o){return[]}})(),u=new Map;for(let o of d)u.set(o.id,o);for(let o of e)u.set(o.id,o);localStorage.setItem(n,JSON.stringify([...u.values()].slice(-t)))}catch(d){}}function xe(e,t){try{let n=localStorage.getItem(t);if(!n)return;let d=JSON.parse(n);if(!Array.isArray(d))return;let u=new Set(e),o=d.filter(g=>!u.has(g.id));if(o.length===d.length)return;o.length===0?localStorage.removeItem(t):localStorage.setItem(t,JSON.stringify(o))}catch(n){}}var Tt=500,Dt=56*1024;function Te(e){return`_snt_retry_${e.slice(0,12)}`}var Ot={push:()=>{},flush:()=>{},destroy:()=>{}};function We(e){var L,J,re;if(typeof window=="undefined")return Ot;let t=(L=e.flushIntervalMs)!=null?L:5e3,n=(J=e.maxBatchSize)!=null?J:20,d=(re=e.maxRetrySize)!=null?re:100,u=e.ingestUrl,o=e.apiKey,g=Te(o),l=[],s=new Set,r=[],i=m=>{for(let S of m)c.delete(S),!s.has(S)&&(s.add(S),r.push(S));for(;r.length>Tt;){let S=r.shift();S&&s.delete(S)}xe(m,g)},c=new Set,y=m=>{s.has(m.id)||c.has(m.id)||(c.add(m.id),l.push(m))},b=m=>{for(let S of m)s.has(S.id)||(c.add(S.id),l.push(S))},D=be(g,d);for(let m of D)y(m);let R=0,x=0,N=m=>{if(m.length===0)return;let S=JSON.stringify(m),j=m.map(V=>V.id),U;try{U=fetch(u,{method:"POST",keepalive:!0,body:S,headers:{"Content-Type":"application/json",Authorization:`Bearer ${o}`}})}catch(V){Z(m,d,g),b(m),x++,R=Date.now()+q(x);return}let z=V=>{if(we(V)!=="retry"){i(j),x=0,R=0;return}Z(m,d,g),b(m),x++,R=Date.now()+q(x)};U instanceof Promise?U.then(z).catch(()=>{Z(m,d,g),b(m),x++,R=Date.now()+q(x)}):z(U)},k=typeof TextEncoder!="undefined"?new TextEncoder:null,I=m=>k?k.encode(m).length:m.length,H=m=>{let S=[],j=2;for(let U of m){let z=I(JSON.stringify(U))+1;if(S.length>0&&j+z>Dt||S.length>=n)break;S.push(U),j+=z}return S},A=()=>{try{if(Date.now()<R)return;for(;l.length>0&&!(Date.now()<R);){let m=l.filter(j=>!s.has(j.id));if(l.length=0,m.length===0)break;let S=H(m);if(S.length===0)break;S.length<m.length&&l.push(...m.slice(S.length)),N(S)}}catch(m){}},f=!0,v=null;v=setInterval(()=>{f&&A()},t);let Q=()=>{document.visibilityState==="hidden"&&A()},G=()=>{A()};return document.addEventListener("visibilitychange",Q),window.addEventListener("pagehide",G),{push(m){y(m),l.length>=n&&A()},flush:A,destroy(){f=!1,v!==null&&(clearInterval(v),v=null),document.removeEventListener("visibilitychange",Q),window.removeEventListener("pagehide",G),A()}}}var Pt=200;function De(e){return`_snt_goal_retry_${e.slice(0,12)}`}var Lt={send:()=>{},flush:()=>{},destroy:()=>{}};function je(e){var I,H,A;if(typeof window=="undefined")return Lt;let t=(I=e.flushIntervalMs)!=null?I:5e3,n=(H=e.maxRetrySize)!=null?H:100,d=(A=e.maxPerFlush)!=null?A:5,u=De(e.apiKey),o=[],g=new Set,l=new Set,s=[],r=0,i=0,c=!1,y=f=>{for(g.delete(f.id),l.has(f.id)||(l.add(f.id),s.push(f.id));s.length>Pt;){let v=s.shift();v&&l.delete(v)}xe([f.id],u)},b=f=>{Z([f],n,u),!l.has(f.id)&&!g.has(f.id)&&(g.add(f.id),o.push(f)),i++,r=Date.now()+q(i)},D=f=>{let v;try{v=fetch(e.url,{method:"POST",keepalive:!0,body:f.body,headers:e.headers})}catch(G){b(f);return}let Q=G=>{var J;let L=we(G);if(L==="retry"){b(f);return}L==="dropped"&&((J=e.onDrop)==null||J.call(e,f,G.status)),y(f),i=0,r=0};v instanceof Promise?v.then(Q).catch(()=>b(f)):Q(v)},R=()=>{try{if(c||Date.now()<r)return;let f=0;for(;o.length>0&&f<d&&!(Date.now()<r);){let v=o.shift();g.delete(v.id),!l.has(v.id)&&(f++,D(v))}}catch(f){}};for(let f of be(u,n))g.has(f.id)||(g.add(f.id),o.push(f));let x=setInterval(R,t),N=()=>{document.visibilityState==="hidden"&&R()},k=()=>R();return document.addEventListener("visibilitychange",N),window.addEventListener("pagehide",k),{send(f){if(!c&&!(l.has(f.id)||g.has(f.id))){if(Date.now()<r){g.add(f.id),o.push(f);return}D(f)}},flush:R,destroy(){clearInterval(x),document.removeEventListener("visibilitychange",N),window.removeEventListener("pagehide",k),R(),c=!0}}}var Mt=1800*1e3;function Ie(e,t){return`${encodeURIComponent(e)}:${encodeURIComponent(t)}`}function Qe(e=Mt,t){let n=new Map,d=`_snt_asgn${Se(t)}_`,u=(r,i)=>`${d}${encodeURIComponent(r)}:${encodeURIComponent(i)}`,o=r=>{let i=r.slice(d.length),c=i.indexOf(":");if(c<0)return null;try{return{componentId:decodeURIComponent(i.slice(0,c)),segment:decodeURIComponent(i.slice(c+1))}}catch(y){return null}},g=()=>{try{let r=[];for(let i=0;i<localStorage.length;i++){let c=localStorage.key(i);c!=null&&c.startsWith(d)&&r.push(c)}return r}catch(r){return[]}},l=r=>r.assignedAt+(r.ttlMs&&r.ttlMs>0?r.ttlMs:e)<Date.now();return typeof window!="undefined"&&(()=>{for(let r of g())try{let i=localStorage.getItem(r);if(!i)continue;let c=JSON.parse(i);if(l(c)){localStorage.removeItem(r);continue}let y=o(r);if(!y)continue;n.set(Ie(y.componentId,y.segment),c)}catch(i){}})(),{get(r,i){let c=n.get(Ie(r,i));return c?l(c)?(n.delete(Ie(r,i)),null):c:null},set(r,i,c){let y=Ie(r,i);n.set(y,c);try{localStorage.setItem(u(r,i),JSON.stringify(c))}catch(b){}},invalidate(r){let i=`${encodeURIComponent(r)}:`;for(let c of[...n.keys()])c.startsWith(i)&&n.delete(c);for(let c of g()){let y=o(c);if((y==null?void 0:y.componentId)===r)try{localStorage.removeItem(c)}catch(b){}}},clear(){n.clear();for(let r of g())try{localStorage.removeItem(r)}catch(i){}}}}var ce=["GPTBot","ChatGPT-User","OAI-SearchBot","ClaudeBot","Claude-User","Claude-SearchBot","PerplexityBot","Perplexity-User","Google-Extended","Applebot-Extended","Meta-ExternalAgent","Bytespider","CCBot","Amazonbot","cohere-ai","Diffbot"];function de(e){return Oe(e)!==null}function Oe(e){var n;if(!e)return null;let t=e.toLowerCase();return(n=ce.find(d=>t.includes(d.toLowerCase())))!=null?n:null}var Ee={GPTBot:"training","ChatGPT-User":"user","OAI-SearchBot":"search",ClaudeBot:"training","Claude-User":"user","Claude-SearchBot":"search",PerplexityBot:"search","Perplexity-User":"user","Google-Extended":"training","Applebot-Extended":"training","Meta-ExternalAgent":"training",Bytespider:"training",CCBot:"training",Amazonbot:"other","cohere-ai":"training",Diffbot:"other"};function Je(e){if(!e)return"other";let t=ce.find(n=>n.toLowerCase()===e.toLowerCase());return t&&Ee[t]||"other"}function ze(){var t;let e={user:[],search:[],training:[],other:[]};for(let n of ce)e[(t=Ee[n])!=null?t:"other"].push(n);return e}function ue(e){let t=e.toLowerCase();return/ipad|tablet|playbook|kindle|silk/.test(t)?"tablet":/mobi|iphone|ipod|android.*mobile|phone/.test(t)?"mobile":"desktop"}function ge(e,t){if(!e)return"direct";try{let n=new URL(e);if(t)try{if(new URL(t).host===n.host)return"direct"}catch(u){}let d=n.hostname.toLowerCase();return/(^|\.)(google|bing|duckduckgo|yahoo)\./.test(d)?"search":/(^|\.)(twitter\.com|x\.com|facebook\.com|linkedin\.com|reddit\.com|t\.co)$/.test(d)?"social":"referral"}catch(n){return"direct"}}function pe(e){if(!e)return null;try{return new URL(e).hostname}catch(t){return null}}function fe(e){let t=e.getHours();return t<6?"night":t<12?"morning":t<18?"afternoon":"evening"}function He(e){let t=Nt("__segment__",e);return`${t.deviceClass}:${t.trafficSource}`}function Nt(e,t){var o,g,l,s,r,i,c;let n=(g=(o=t==null?void 0:t.userAgent)==null?void 0:o.trim())!=null?g:"",d=(s=(l=t==null?void 0:t.referer)==null?void 0:l.trim())!=null?s:"",u=(r=t==null?void 0:t.now)!=null?r:new Date;return{sessionId:e,ephemeral:!1,utmParams:(i=t==null?void 0:t.utmParams)!=null?i:{},deviceClass:n?ue(n):"desktop",trafficSource:d?ge(d,t==null?void 0:t.appOrigin):"direct",referrerDomain:pe(d),timeOfDay:fe(u),dayOfWeek:(c=["sun","mon","tue","wed","thu","fri","sat"][u.getDay()])!=null?c:"sun",automation:(t==null?void 0:t.webdriver)===!0||de(n)}}var ee=require("@sentientui/policy");function me(e){return E(E(E({id:e.id},e.arms?{arms:[...e.arms]}:{}),e.dims?{dims:Object.fromEntries(Object.entries(e.dims).map(([t,n])=>[t,[...n]]))}:{}),e.baseline!==void 0?{baseline:e.baseline}:{})}function te(e){let t=me(e);return(0,ee.slotResultFor)(t,(0,ee.slotBaselineArm)(t))}function Ve(e){let t={};for(let n of e)t[n.id]=te(n);return t}function ke(e){return typeof e=="string"?e:(0,ee.canonicalArm)(e)}var Y="_snt_snap:",Gt=["low","medium","high"];function Ce(e){try{let t=localStorage.getItem(Y+e);if(!t)return null;let n=JSON.parse(t);return!n||typeof n!="object"||n.v!==1||typeof n.persona!="string"||typeof n.band!="string"||!Gt.includes(n.band)||typeof n.slots!="object"||n.slots===null||Array.isArray(n.slots)||!(n.layoutOrder===null||Array.isArray(n.layoutOrder))||typeof n.savedAt!="number"||!(n.slotConfig===void 0||typeof n.slotConfig=="object"&&n.slotConfig!==null&&!Array.isArray(n.slotConfig))?null:n}catch(t){return null}}function ne(e,t){try{localStorage.setItem(Y+e,JSON.stringify(t))}catch(n){}}function Ye(e){return"(function(){try{var r=localStorage.getItem("+JSON.stringify(Y+e).replace(/</g,"\\u003c")+');if(!r)return;var s=JSON.parse(r);if(!s||s.v!==1||typeof s.persona!=="string"||typeof s.band!=="string")return;var d=document.documentElement;if(d.hasAttribute("data-sentient-persona"))return;d.setAttribute("data-sentient-persona",s.persona);d.setAttribute("data-sentient-confidence",s.band);}catch(e){}})();'}var Me=require("@sentientui/policy");var Ae=require("@sentientui/policy");var _e="[sentient] No API key configured \u2014 nothing is being learned. Set NEXT_PUBLIC_SENTIENT_API_KEY or pass localMode: true for local development.",Pe="[sentient] Local mode \u2014 decisions are simulated on-device and nothing is sent over the network. Add an API key to learn from real traffic.",Xe=!1,Re=!1;function Kt(){var e;try{return(e=new URLSearchParams(window.location.search).get("sentient_persona"))!=null?e:void 0}catch(t){return}}function qe(e){var l;let t=ve({ssrSessionId:e.ssrSessionId,apiKey:e.apiKey}),n=(l=t.getSessionId())!=null?l:"local",d=Kt(),u=import("@sentientui/core/local").then(s=>{let r=s;return r.LOCAL_ENGINE_AVAILABLE?(Xe||(Xe=!0,console.info(Pe)),r):(Re||(Re=!0,console.error(_e)),null)}).catch(()=>(Re||(Re=!0,console.error(_e)),null)),o=null;function g(s){let r=document.documentElement;r.dataset.sentientPersona===void 0&&(r.dataset.sentientPersona=s.persona,r.dataset.sentientConfidence=(0,Ae.confidenceBand)(s.confidence))}return{isLocal:!0,async decide(s){var c,y,b;let r=await u;if(!r)return null;let i=r.createLocalEngine({sessionId:n,forcedPersona:d}).decide(s);return o=X(E({},i),{layoutOrder:(y=(c=i.layoutOrder)!=null?c:o==null?void 0:o.layoutOrder)!=null?y:null,slots:E(E({},(b=o==null?void 0:o.slots)!=null?b:{}),i.slots)}),ne(e.apiKey||"local",{v:1,persona:o.persona,band:(0,Ae.confidenceBand)(o.confidence),slots:o.slots,layoutOrder:o.layoutOrder,savedAt:Date.now()}),g(i),i},getSlotResult(s){var r,i,c;return(c=(i=o==null?void 0:o.slots[s])!=null?i:(r=e.initialSlots)==null?void 0:r[s])!=null?c:null},getPersona(){return o?{persona:o.persona,confidence:o.confidence,band:(0,Ae.confidenceBand)(o.confidence)}:null},async assign(s,r){var y;let i=await u;return!i||!r||r.length===0?r!=null&&r[0]?{variantId:r[0],assignmentTtlMs:0}:null:{variantId:(y=i.createLocalEngine({sessionId:n,forcedPersona:d}).decide({components:[{id:s,variantIds:r}]}).assignments[s])!=null?y:r[0],assignmentTtlMs:0}},track:()=>{},goal:()=>{},componentGoal:()=>{},identify:()=>{},getAssignment:()=>null,fetchWeights:()=>Promise.resolve([]),getGraph:()=>({pageNodes:[],capturedAt:0}),dispose:()=>{},destroy:()=>t.destroy()}}function Ze(e,t,n,d){let u=[];{let l=!1,s=[],r=()=>{if(l)return;let i=Date.now();for(s.push(i);s.length>0&&i-s[0]>500;)s.shift();s.length>=3&&(l=!0,e("rage_click"))};t.addEventListener("click",r),u.push(()=>t.removeEventListener("click",r))}{let o=!1,g=l=>{if(o||!(l.target instanceof Node)||!t.contains(l.target)&&t!==l.target)return;o=!0;let s=typeof window!="undefined"?window.getSelection():null,r=s?s.toString().length:0;e("text_copy",{selectionLength:r})};document.addEventListener("copy",g),u.push(()=>document.removeEventListener("copy",g))}{let o=!1,g=!1,l=null,s=()=>{l!==null&&(clearTimeout(l),l=null)},r=()=>{o||!g||(s(),l=setTimeout(()=>{!o&&g&&(o=!0,e("scroll_hesitation"))},3e3))},i=()=>{s(),r()},c=b=>{for(let D of b)g=D.intersectionRatio>.3,g?r():s()},y=new IntersectionObserver(c,{threshold:[.3]});y.observe(t),window.addEventListener("scroll",i,{passive:!0}),u.push(()=>{y.disconnect(),window.removeEventListener("scroll",i),s()})}if((d==null?void 0:d.tabLoss)!==!1){let o=!1,g=n!=null?n:Date.now(),l=()=>{if(o||document.visibilityState!=="hidden")return;let s=Date.now()-g;s<15e3&&(o=!0,e("tab_loss",{timeOnPage:s}))};document.addEventListener("visibilitychange",l),u.push(()=>document.removeEventListener("visibilitychange",l))}return()=>{for(let o of u)o()}}var et="https://api.sentient-ui.com/v1/events",P=new Map,tt=null;function Ut(e){return"value"in e||"currency"in e||"externalId"in e||"metadata"in e||"weight"in e||"stepIndex"in e}function Le(){return he()}function Ne(){var e;if(typeof window!="undefined")return((e=window.location)==null?void 0:e.pathname)||void 0}function Bt(e,t){let n=typeof window=="undefined"?null:window.history;if(!n)return;let d,u=()=>{let o=Ne();!o||o===d||(d=o,e.track({projectId:t,componentId:"__page__",eventType:"pageview",payload:{}}))};for(let o of["pushState","replaceState"]){let g=n[o];n[o]=function(...l){let s=g.apply(this,l);return u(),s}}window.addEventListener("popstate",u),u()}var ye={track:()=>{},goal:()=>{},componentGoal:()=>{},identify:()=>{},getAssignment:()=>null,assign:()=>Promise.resolve(null),decide:()=>Promise.resolve(null),getSlotResult:()=>null,getPersona:()=>null,fetchWeights:()=>Promise.resolve([]),getGraph:()=>({pageNodes:[],capturedAt:0}),dispose:()=>{},destroy:()=>{}};function $t(){try{let e={},t=new URLSearchParams(window.location.search);for(let[n,d]of t)n.startsWith("utm_")&&(e[n]=d);return e}catch(e){return{}}}function nt(e){return e.replace(/\/events\/?$/,"")}function Ge(){return typeof navigator!="undefined"&&navigator.globalPrivacyControl===!0?!0:[typeof navigator!="undefined"?navigator.doNotTrack:void 0,typeof window!="undefined"?window.doNotTrack:void 0,typeof navigator!="undefined"?navigator.msDoNotTrack:void 0].some(t=>t==="1"||t==="yes")}function Ft(e){var l;if(typeof window=="undefined")return;let t=e!=null?e:tt;if(!t){console.warn("[sentient] grantConsent() called before init()");return}let n=P.get(t);if(!n){console.warn("[sentient] grantConsent() called before init()");return}let{config:d,upgrade:u}=n;if(!u||d.respectDoNotTrack!==!1&&Ge())return;let o=rt(X(E({},d),{consent:!0}));u(o);let g=(l=P.get(t))==null?void 0:l.dispose;P.set(t,{config:X(E({},d),{consent:!0}),upgrade:null,dispose:g})}function Wt(e){var l;let t=e.preConsentBehavior==="statistical_winner",n=nt((l=e.ingestUrl)!=null?l:et),d={"Content-Type":"application/json",Authorization:`Bearer ${e.apiKey}`},u={track:()=>{},goal:()=>{},componentGoal:()=>{},identify:()=>{},getAssignment:()=>null,fetchWeights:()=>Promise.resolve([]),async assign(s,r,i){if(!t)return null;try{let c=new URLSearchParams({componentId:s});for(let D of r!=null?r:[])c.append("variantIds[]",D);let y=await fetch(`${n}/winner?${c.toString()}`,{headers:d});return y.ok?{variantId:(await y.json()).variantId,assignmentTtlMs:0}:r!=null&&r[0]?{variantId:r[0],assignmentTtlMs:0}:null}catch(c){return r!=null&&r[0]?{variantId:r[0],assignmentTtlMs:0}:null}},decide:()=>Promise.resolve(null),getSlotResult:()=>null,getPersona:()=>null,getGraph:()=>({pageNodes:[],capturedAt:0}),dispose:()=>{},destroy:()=>{}},o={track:s=>u.track(s),goal:((s,r,i,c)=>u.goal(s,r,i,c)),componentGoal:(s,r,i)=>u.componentGoal(s,r,i),identify:s=>u.identify(s),getAssignment:(s,r)=>u.getAssignment(s,r),assign:(s,r,i,c)=>u.assign(s,r,i,c),decide:s=>u.decide(s),getSlotResult:s=>u.getSlotResult(s),getPersona:()=>u.getPersona(),fetchWeights:()=>u.fetchWeights(),getGraph:()=>u.getGraph(),dispose:()=>u.dispose(),destroy:()=>u.destroy()};function g(s){u=s}return{proxy:o,setInner:g}}function rt(e){var J,re,m,S,j,U,z,V,Ke;if(typeof window=="undefined")return ye;tt=e.apiKey;let t=P.get(e.apiKey||"local");if(t!=null&&t.dispose)try{t.dispose()}catch(a){}let n=e.respectDoNotTrack!==!1&&Ge(),d=e.consent===!1||n,u=typeof e.apiKey=="string"&&e.apiKey.startsWith("pk_");if(e.localMode===!0||!u&&e.localMode!==!1)return d?(P.set(e.apiKey||"local",{config:e,upgrade:null}),ye):(P.set(e.apiKey||"local",{config:e,upgrade:null}),qe(e));if(d){if(!e.apiKey||!e.apiKey.startsWith("pk_"))return e.preConsentBehavior==="statistical_winner"&&console.warn("[sentient] init() called with an invalid apiKey \u2014 expected a pk_ public key. SDK disabled."),P.set(e.apiKey,{config:e,upgrade:null}),ye;let{proxy:a,setInner:p}=Wt(e);return P.set(e.apiKey,{config:e,upgrade:n?null:p}),a}if(!e.apiKey||!e.apiKey.startsWith("pk_"))return console.warn("[sentient] init() called with an invalid apiKey \u2014 expected a pk_ public key. SDK disabled."),ye;if(e.ingestUrl==="")return console.warn("[sentient] init() called with an empty ingestUrl. SDK disabled."),ye;let o=(J=e.ingestUrl)!=null?J:et,g=Date.now(),l=ve({ssrSessionId:e.ssrSessionId,apiKey:e.apiKey}),s=Qe(void 0,e.apiKey),r=We({ingestUrl:o,apiKey:e.apiKey}),i=nt(o),c={"Content-Type":"application/json",Authorization:`Bearer ${e.apiKey}`},y=je({url:`${i}/goals`,apiKey:e.apiKey,headers:c,onDrop:(a,p)=>{e.debug&&console.warn(`[sentient] goal dropped (HTTP ${p}) \u2014 this will not be retried. `+(p===400?"The session was not found: call init() and let the session upsert complete before firing goals.":p===401||p===403?"Check the API key and that this origin is on the project allowlist.":"See the response status for the cause."),a)}}),b=ue((re=navigator.userAgent)!=null?re:""),D=typeof window!="undefined"?window.location.origin:void 0,R=ge((m=document.referrer)!=null?m:"",D),x=(S=e.sessionSegment)!=null?S:`${b}:${R}`,N=new Map,k=new Map,I=null,H=a=>{for(let p of a)k.has(p.id)||k.set(p.id,te(p))};if(e.initialSlots)for(let[a,p]of Object.entries(e.initialSlots))k.set(a,p);let A=Ce(e.apiKey);if(A)for(let[a,p]of Object.entries(A.slots))k.has(a)||k.set(a,p);let f={low:.15,medium:.5,high:.85};if(e.initialPersona)I=E({},e.initialPersona);else{let a=document.documentElement.dataset;a.sentientPersona?I={persona:a.sentientPersona,confidence:(U=f[(j=a.sentientConfidence)!=null?j:"low"])!=null?U:.15}:A&&(I={persona:A.persona,confidence:(z=f[A.band])!=null?z:.15})}if(e.initialAssignments)for(let[a,p]of Object.entries(e.initialAssignments))s.set(a,x,{variantId:p,assignedAt:Date.now(),segment:x,confidence:1});let v=Promise.resolve(),Q=l.getSessionId();if(Q){let a=pe((V=document.referrer)!=null?V:""),p=E(E({sessionId:Q,deviceClass:b,trafficSource:R,referrerDomain:a,utmParams:$t(),timeOfDay:fe(new Date),dayOfWeek:["sun","mon","tue","wed","thu","fri","sat"][new Date().getDay()],ephemeral:l.isEphemeral(),automation:typeof navigator!="undefined"&&navigator.webdriver===!0||de((Ke=navigator.userAgent)!=null?Ke:"")},e.userId?{userId:e.userId}:{}),e.country?{country:e.country}:{});try{v=fetch(`${i}/sessions`,{method:"POST",keepalive:!0,body:JSON.stringify(p),headers:c}).then(h=>{h.status===402&&console.warn("[SentientUI] Session limit exceeded for this project. The bandit will stop learning until the limit resets. Upgrade at sentient-ui.com/pricing")}).catch(()=>{})}catch(h){}}e.debug&&(console.log("[sentient] initialized",{context:e.context}),window.__sentient={client:null,queue:r});let G=new Set,L={goal(a,p={},h=1,B=0){var T,oe,W,se;let O=l.getSessionId();if(!O)return;let w=Ut(p)?p:{metadata:p},$=`${a}\0${(T=w.externalId)!=null?T:""}`;if(G.has($)){e.debug&&console.log(`[sentient] goal("${a}") already recorded for this action \u2014 not sent twice`);return}G.add($),G.size===1&&setTimeout(()=>G.clear(),0);let K=Le(),_={sessionId:O,name:a,metadata:(oe=w.metadata)!=null?oe:{},weight:(W=w.weight)!=null?W:h,stepIndex:(se=w.stepIndex)!=null?se:B,goalId:K,value:w.value,currency:w.currency,externalId:w.externalId};e.debug&&console.log("[sentient] goal",_);let F={id:K,body:JSON.stringify(_)};v.then(()=>y.send(F))},componentGoal(a,p,h){var _,F,T;let B=l.getSessionId();if(!B)return;let O=s.get(a,x),w=O?null:(_=k.get(a))!=null?_:null;if(!O&&w===null){e.debug&&console.warn(`[sentient] componentGoal("${a}"): no assignment or slot decision yet \u2014 render its <Adaptive>/adaptive hook or call assign()/decide() before recording a goal.`);return}let $=O?O.variantId:ke(w),K={id:Le(),sessionId:B,projectId:e.apiKey,componentId:a,variantId:$,eventType:"goal_achieved",goalType:p,payload:E({reward:(F=h==null?void 0:h.reward)!=null?F:1,goalValue:h==null?void 0:h.value,currency:h==null?void 0:h.currency},(T=h==null?void 0:h.metadata)!=null?T:{}),timestamp:Date.now(),timeInSession:Date.now()-g,path:Ne()};e.debug&&console.log("[sentient] componentGoal",K),v.then(()=>r.push(K))},identify(a){let p=l.getSessionId();p&&v.then(()=>{fetch(`${i}/sessions`,{method:"POST",keepalive:!0,body:JSON.stringify({sessionId:p,userId:a,ephemeral:l.isEphemeral()}),headers:c}).catch(()=>{})})},track(a){let p=l.getSessionId();if(!p)return;let h=X(E({path:Ne()},a),{id:Le(),sessionId:p,timestamp:Date.now(),timeInSession:Date.now()-g});e.debug&&console.log("[sentient] track",h),v.then(()=>r.push(h))},getAssignment(a,p){return s.get(a,p)},async assign(a,p,h,B){let O=l.getSessionId();if(!O)return null;let w=s.get(a,x);if(w&&(p!=null&&p.length||w.content!==void 0)){let _=w.ttlMs&&w.ttlMs>0?Math.max(0,w.assignedAt+w.ttlMs-Date.now()):0;return{variantId:w.variantId,assignmentTtlMs:_,content:w.content}}let $=N.get(a);if($)return $;let K=(async()=>{await v;try{let _={sessionId:O,componentId:a,variantIds:p};B!==void 0?_.agentDataByVariant=B:h!==void 0&&(_.agentData=h);let F=await fetch(`${i}/assign`,{method:"POST",body:JSON.stringify(_),headers:c});if(!F.ok)return null;let T=await F.json();return s.set(a,x,E({variantId:T.variantId,assignedAt:Date.now(),segment:x,confidence:1,content:T.content},T.assignmentTtlMs&&T.assignmentTtlMs>0?{ttlMs:T.assignmentTtlMs}:{})),T}catch(_){return null}finally{N.delete(a)}})();return N.set(a,K),K},async decide(a){var B,O,w,$,K,_,F,T,oe;let p=l.getSessionId();if(!p)return null;let h=(B=a.slots)!=null?B:[];await v;try{let W={sessionId:p};a.sections&&a.sections.length>0&&(W.sections=a.sections.map(M=>({id:M}))),W.components=(O=a.components)!=null?O:[],h.length>0&&(W.slots=h.map(me)),a.slotsFrom==="registry"&&(W.slotsFrom="registry"),a.v&&(W.v=a.v);let se=await fetch(`${i}/decide`,{method:"POST",body:JSON.stringify(W),headers:c});if(!se.ok)return H(h),null;let C=await se.json(),ie={};for(let M of h)ie[M.id]=($=(w=C.slots)==null?void 0:w[M.id])!=null?$:te(M);if(C.slots)for(let[M,ae]of Object.entries(C.slots))M in ie||(ie[M]=ae);for(let[M,ae]of Object.entries(ie))k.set(M,ae);let ot=I!=null&&I.persona!=="unknown";C.persona&&!(C.persona==="unknown"&&ot)?I={persona:C.persona,confidence:(K=C.confidence)!=null?K:0}:I||(I={persona:"unknown",confidence:0});for(let[M,ae]of Object.entries((_=C.assignments)!=null?_:{}))s.set(M,x,{variantId:ae,assignedAt:Date.now(),segment:x,confidence:1});return ne(e.apiKey,E({v:1,persona:I.persona,band:(0,Me.confidenceBand)(I.confidence),slots:Object.fromEntries(k),layoutOrder:(F=C.layoutOrder)!=null?F:null,savedAt:Date.now()},C.slotConfig?{slotConfig:C.slotConfig}:{})),E(E(E({layoutOrder:(T=C.layoutOrder)!=null?T:null,assignments:(oe=C.assignments)!=null?oe:{},slots:ie,persona:I.persona,confidence:I.confidence},C.slotConfig?{slotConfig:C.slotConfig}:{}),C.goals?{goals:C.goals}:{}),C.sectionMap?{sectionMap:C.sectionMap}:{})}catch(W){return H(h),null}},getSlotResult(a){var p;return(p=k.get(a))!=null?p:null},getPersona(){return I?{persona:I.persona,confidence:I.confidence,band:(0,Me.confidenceBand)(I.confidence)}:null},async fetchWeights(){var a;try{let p=await fetch(`${i}/weights`,{headers:c});return p.ok?(a=(await p.json()).components)!=null?a:[]:[]}catch(p){return[]}},getGraph(){return{pageNodes:[],capturedAt:0}},dispose(){var a;r.destroy(),y.destroy(),((a=P.get(e.apiKey))==null?void 0:a.dispose)===L.dispose&&P.delete(e.apiKey),e.debug&&console.log("[sentient] disposed")},destroy(){var a;r.destroy(),y.destroy(),l.destroy(),((a=P.get(e.apiKey))==null?void 0:a.dispose)===L.dispose&&P.delete(e.apiKey);try{localStorage.removeItem(Y+e.apiKey),localStorage.removeItem(Te(e.apiKey)),localStorage.removeItem(De(e.apiKey))}catch(p){}e.debug&&console.log("[sentient] destroyed")}};if(P.set(e.apiKey,{config:e,upgrade:null,dispose:L.dispose}),Bt(L,e.apiKey),e.debug){let a=window;a.__sentient&&(a.__sentient.client=L)}return L}0&&(module.exports={AGENT_INTENTS,LOCAL_MODE_BANNER,PROD_KEYLESS_ERROR,SNAPSHOT_STORAGE_KEY_PREFIX,agentIntent,agentUaList,armOfResult,attachMicroSignalDetectors,baselineResultFor,baselineSlots,classifiedAgents,deriveSessionSegment,detectDeviceClass,detectTimeOfDay,detectTrafficSource,grantConsent,init,isDoNotTrackEnabled,matchedAgentToken,readSnapshot,referrerDomainFromReferer,renderPrePaintScript,toWireSlot,uaTokenMatch,writeSnapshot});
|
|
2
2
|
//# sourceMappingURL=index.js.map
|