1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[13262],{41421:(e,t,n)=>{n.d(t,{default:()=>o});var s=n(95155),a=n(12115);function o({name:e,email:t,image:n,size:r=32,shape:i="rounded",className:d="",title:c}){var l;let[u,g]=(0,a.useState)(!1),h=!u&&(l=n)&&/^https?:\/\//i.test(l)?l:null,m=function(e,t){let n=(e||"").trim().split(/\s+/).map(e=>e.replace(/[^\p{L}\p{N}]/gu,"")).filter(Boolean);if(1===n.length)return n[0].slice(0,1).toUpperCase();if(n.length>=2){let e=n[0][0],t=n[n.length-1][0];return`${e}${t}`.toUpperCase()}let s=(t||"").split("@")[0].replace(/[^\p{L}\p{N}]/gu,"");return s?s.slice(0,1).toUpperCase():"?"}(e,t),p=e||t||"Unknown person",f="circle"===i?"9999px":`${Math.max(4,Math.round(.22*r))}px`,y=Math.max(8,Math.round(.4*r));return(0,s.jsx)("div",{className:`flex items-center justify-center shrink-0 overflow-hidden bg-muted text-foreground font-bold ${d}`,style:{width:r,height:r,borderRadius:f,fontSize:y},title:c??p,children:h?(0,s.jsx)("img",{src:h,alt:p,width:r,height:r,className:"h-full w-full object-cover",onError:()=>g(!0),referrerPolicy:"no-referrer"}):(0,s.jsx)("span",{"aria-hidden":"true",children:m})})}},45520:(e,t,n)=>{n.d(t,{R:()=>s});let s=(0,n(1934).v)(e=>({hasUnread:!1,channels:{},total:0,lastReadAts:{},setUnreadData:(t,n,s)=>e({channels:t,lastReadAts:n,total:s,hasUnread:s>0}),pollNonce:0,triggerRefetch:()=>e(e=>({pollNonce:e.pollNonce+1}))}))},56271:(e,t,n)=>{n.d(t,{$_:()=>a,DK:()=>r,P6:()=>g,Ql:()=>i,Um:()=>o,lY:()=>s,qT:()=>l,vj:()=>c,xj:()=>d,zE:()=>u});let s=[{id:"brand",fallback:"This brand"},{id:"company",fallback:"Company"},{id:"you",fallback:"You"}];function a(e,t){let n=s.find(t=>t.id===e).fallback;return"brand"===e?t.brandName?.trim()||n:"company"===e&&t.companyName?.trim()||n}let o=[{id:"brand",label:"Brand",route:"/settings",lights:["/settings","/settings/help"],group:"brand",keywords:"brand settings"},{id:"agents",label:"Agents",route:"/settings/agents",lights:["/settings/agents"],group:"brand",keywords:"agents voice rules skills permissions limits brand kit response style cresva.md"},{id:"notifications",label:"Notifications",route:"/settings/notifications",lights:["/settings/notifications"],group:"brand",keywords:"alerts email slack push throttle recipients history"},{id:"integrations",label:"Integrations",route:"/integrations",lights:["/integrations","/integrations/*"],group:"brand",keywords:"connections platforms connect reconnect disconnect meta google tiktok shopify klaviyo"},{id:"commerce",label:"Commerce",route:"/settings/commerce",lights:["/settings/commerce"],group:"brand",commerceOnly:!0,keywords:"storefront webhooks events negotiation pricing"},{id:"measurement",label:"Measurement",route:"/settings/measurement",lights:["/settings/measurement","/settings/attribution"],group:"brand",keywords:"attribution model window"},{id:"company",label:"Company",route:"/settings/company",lights:["/settings/company","/settings/staff-access"],group:"company",keywords:"company profile"},{id:"team",label:"Team",route:"/settings/team",lights:["/settings/team","/team"],group:"company",keywords:"members invite roles people"},{id:"agency",label:"Agency",route:"/settings/agency",lights:["/settings/agency"],group:"company",multiBrandOnly:!0,keywords:"clients portal white-label"},{id:"billing",label:"Billing",route:"/billing",lights:["/billing","/billing/*"],group:"company",keywords:"plan plans usage payment invoices subscription upgrade"},{id:"account",label:"Account",route:"/settings/account",lights:["/settings/account"],group:"you",keywords:"profile you me personal"},{id:"apps",label:"Apps and extensions",route:"/settings/apps",lights:["/settings/apps"],group:"you",keywords:"apps extensions chrome extension claude chatgpt cursor mcp slack shopify install connected apps"}],r={brand:[{id:"section-brand-details",label:"Details",anchors:["section-brand-details"]},{id:"section-reporting-currency",label:"Currency",anchors:["section-reporting-currency"]},{id:"section-business-context",label:"Business context",anchors:["section-business-context"]},{id:"section-budget",label:"Targets and costs",anchors:["section-budget","section-costs"]},{id:"section-decision-data-use",label:"Data sharing",anchors:["section-decision-data-use"]}],agents:[{id:"section-brand-voice",label:"Voice and rules",anchors:["section-brand-voice","section-response-style","section-brand-kit","section-brand-instru
1ctions"]},{id:"section-skills",label:"Skills",anchors:["section-skills"]},{id:"section-agent-limits",label:"Permissions and limits",anchors:["section-agent-limits"]}],company:[{id:"section-company-profile",label:"Company profile",anchors:["section-company-profile"]},{id:"section-company-brands",label:"Brands",anchors:["section-company-brands"]},{id:"section-company-workspaces",label:"Slack and Notion",anchors:["section-company-workspaces"]},{id:"section-api-keys",label:"API keys",anchors:["section-api-keys"]},{id:"section-staff-access",label:"Staff access",anchors:["section-staff-access"]},{id:"section-company-deletion",label:"Delete the company",anchors:["section-company-deletion"],ownerOnly:!0}],account:[{id:"section-account-profile",label:"Profile",anchors:["section-account-profile","section-account-about","section-account-theme"]},{id:"section-account-email",label:"Emails",anchors:["section-account-email"]},{id:"section-security",label:"Sign-in and security",anchors:["section-security","section-signin-methods"]},{id:"section-account-danger",label:"Delete account",anchors:["section-account-danger"]}]},i=[{id:"autonomy",label:"Autonomy",path:"/autonomy",keywords:"agent permissions limits caps blocked actions pause live writes kill switch emergency spend guardrails chat mode"},{id:"report-schedules",label:"Report schedules",path:"/reports#schedule",keywords:"reports schedule delivery weekly monthly recipients"}];function d(e,t){let n=o.find(e=>e.id===t);return`/dashboard/${e}${n.route}`}function c(e,t=!1){return o.filter(n=>(!n.multiBrandOnly||e)&&(!n.commerceOnly||t))}function l(e,t){let n,s,a=(n=`/dashboard/${t}`,(s=e.split("?")[0].split("#")[0].replace(/\/+$/,""))===n||s.startsWith(`${n}/`)?s.slice(n.length):null);if(null===a)return null;for(let e of o)if(e.lights.some(e=>(function(e,t){if(e.endsWith("/*")){let n=e.slice(0,-2);return t.startsWith(`${n}/`)}return t===e})(e,a)))return e.id;return null}function u(e,t){return null!==l(e,t)?"settings":"world"}function g(e){for(let[t,n]of Object.entries(r))if(n.some(t=>t.anchors.includes(e)))return t;return null}},72630:(e,t,n)=>{n.d(t,{C:()=>o,U:()=>a});var s=n(12115);function a(){let[e,t]=(0,s.useState)("u"<typeof document||"visible"===document.visibilityState);return(0,s.useEffect)(()=>{let e=()=>t("visible"===document.visibilityState);return document.addEventListener("visibilitychange",e),()=>document.removeEventListener("visibilitychange",e)},[]),{isVisible:e}}function o({fetcher:e,baseInterval:t,maxInterval:n,enabled:r=!0}){let[i,d]=(0,s.useState)(!1),{isVisible:c}=a(),l=(0,s.useCallback)(e,[e]);return(0,s.useEffect)(()=>{if(!r)return;let e=t,s=0,a=null,o=!1,i=async()=>{if(!o){try{let a=await l();if(o)return;a?(s=0,e=t,d(!1)):(s++,e=Math.min(2*e,n),s>=3&&d(!0))}catch{if(o)return;s++,e=Math.min(2*e,n),s>=3&&d(!0)}o||(a=setTimeout(i,s>=3?n:e))}};return c&&i(),()=>{o=!0,a&&clearTimeout(a)}},[r,c,t,n,l]),{isBackedOff:i,retryNow:(0,s.useCallback)(()=>{d(!1)},[]),isVisible:c}}},74750:(e,t,n)=>{n.d(t,{Ay:()=>l,K0:()=>c});var s=n(95155),a=n(12115),o=n(91459),r=n(4474),i=n(91337);let d={sm:"h-7 w-7 p-0 rounded-md [&_svg]:size-3.5",md:"h-8 w-8 p-0 rounded-md [&_svg]:size-4"},c=a.forwardRef(function(e,t){let{label:n,icon:a,size:c="md",className:l,"data-testid":u,...g}=e;"string"==typeof n&&n.trim().length>0||console.error("IconButton needs a label: the words for its tooltip and its accessible name.");let h=function(e="md",t){return(0,i.cn)((0,r.r)({variant:"ghostIcon",size:null}),d[e],t)}(c,l),m=(0,s.jsx)("span",{"aria-hidden":"true",className:"contents",children:a});return"string"==typeof g.href?(0,s.jsx)(o.Tooltip,{label:n,children:(0,s.jsx)("a",{...g,"aria-label":n,"data-icon-button":"","data-testid":u,className:h,children:m})}):(0,s.jsx)(o.Tooltip,{label:n,children:(0,s.jsx)("button",{ref:t,type:"button",...g,"aria-label":n,"data-icon-button":"","data-testid":u,className:h,children:m})})}),l=c},77215:(e,t,n)=>{function s(e){return e.emptyFor?[]:e.suggestions}n.d(t,{Vt:()=>v,Wh:()=>A,gu:()=>s,jv:()=>k,wN:()=>$});let a=(e,t,n=`${t}s`)=>`${e.toLocaleString("en-GB")} ${1===e?t:n}`,o=e=>e.length<=1?e[0]??"":`${e.slice(0,-1).join(", ")} and ${e[e.length-1]}`,r=e=>e?`: ${e.replace(/\.$/,"")}.`:".";function i(e){if(0===e.ready.length&&0===e.syncing.length&&0===e.broken.length)return"No data sources are connected to this brand yet.";let t=[];e.ready.length&&t.push(`${o(e.ready)} ${1===e.ready.length?"is":"are"} reporting`),e.syncing.length&&t.push(`${o(e.syncing)} ${1===e.syncing.length?"is":"are"} still syncing`);let n=t.length?`${t.join("; ")}.`:"";
1if(e.broken.length){let t=e.broken[0];n+=`${n?" ":""}${a(e.broken.length,"source needs","sources need")} you: ${t.label}, ${t.message.replace(/\.$/,"")}.`}return n}let d=e=>0===e.products?"No products are in the agent catalogue yet, so agents have nothing to show.":`${a(e.products,"product")} in the agent catalogue, and ${a(e.orders,"paid agent order")} over ${e.window}.`;function c(e){let t=[e.changes?a(e.changes,"change")+" made":"",e.proposed?a(e.proposed,"proposal"):"",e.suggestions?a(e.suggestions,"suggestion"):"",e.work?a(e.work,"check or finding","checks and findings"):""].filter(Boolean);return 0===t.length?`No agent changes, proposals, suggestions or findings over ${e.window}.`:`Over ${e.window}: ${o(t)}.${e.capped?" Some tabs hold more rows than they show.":""}`}function l(e){return`${e.line.charAt(0).toUpperCase()}${e.line.slice(1)}.`}let u=e=>e.pending+e.proposed===0?"Nothing is waiting for approval.":`${a(e.pending,"change")} waiting for approval and ${a(e.proposed,"recommendation")} proposed.`,g=e=>0===e.assets?"No creatives are stored for this brand yet.":`${a(e.assets,"creative")} stored for this brand.`,h=e=>0===e.last30?`No reports were generated in the last 30 days.${e.lastDate?` The last one was on ${e.lastDate}.`:""}`:`${a(e.last30,"report")} generated in the last 30 days, the latest on ${e.lastDate}.`;function m(e){let t=e.unreadable?` ${a(e.unreadable,"tool's history","tools' histories")} could not be read just now, so this may be short.`:"";return 0===e.runs?`You have no saved tool runs for this brand yet.${t}`:`You have ${a(e.runs,"saved tool run")} for this brand, the latest ${e.lastTool?`${e.lastTool} `:""}on ${e.lastDate}.${t}`}function p(e,t,n,s,o){return{route:e,name:t,defaultAgent:s,reads:`brandId, your saved runs of ${t} for this brand`,kind:"tool",param:n,opening:e=>0===e.runs?`You have not run ${t} for this brand yet.`:`You have run ${t} ${a(e.runs,"time")} for this brand, most recently on ${e.lastDate}${null!=e.lastScore?`, ${(e.scoreLabel||"score").toLowerCase()} ${Math.round(e.lastScore)}`:""}.`,suggestions:o}}let f="brandId, the agent catalogue and paid agent orders over the last 7 complete days",y="brandId, each data source's connection and sync state",b="brandId, Activity's tabs over the page's window (last 7 complete days by default)",w="brandId, this brand's goals and their status",k=[{route:"",name:"Home",defaultAgent:"maya",reads:"brandId, Home's own tiles for the window and platform on screen",kind:"home",opening:function(e){let t=e.platform?` on ${e.platform}`:"",n=e.through?`the last window with data, ${e.window}`:e.window,s=e.spend?`Ad spend${t} was ${e.spend} over ${n}.`:`Ad spend${t} over ${n} is not shown${r(e.spendReason)}`,o="";return o=e.hasStore?e.storeRevenue?null!=e.orders?` Store revenue was ${e.storeRevenue} from ${a(e.orders,"order")}.`:` Store revenue was ${e.storeRevenue}.`:e.storeReason?` ${e.storeReason.replace(/\.?$/,".")}`:" Store revenue is not shown.":e.platform?"":" There are no store figures for this window.",`${s}${o}`},suggestions:["What changed most this week?","Is ad spend turning into store sales?","What needs my attention today?"]},{route:"/performance",name:"Performance",defaultAgent:"parker",reads:"brandId, Performance's own figures for the window and platform on screen",kind:"performance",opening:function(e){let t=e.platform?` on ${e.platform}`:"";if(0===e.platforms.length&&0===e.daysWithDelivery)return`No ad spend recorded${t} over ${e.window}.`;let n=`${e.daysWithDelivery} of ${e.days} days had delivery`;if(!e.spend)return`Ad spend${t} over ${e.window} is not shown${r(e.spendReason)} ${n}.`;let s=e.platforms.length?`, from ${o(e.platforms)}`:"";return`Ad spend${t} was ${e.spend} over ${e.window}${s}, ${n}.`},suggestions:["Which campaign wasted the most spend?","Why did ROAS move this week?","Where should I shift budget?"]},{route:"/channels",name:"Channels",defaultAgent:"maya",reads:"brandId, the Channels page's own figures for its window",kind:"channels",opening:function(e){if(!e.hasStore)return"No store is connected, so there are no store sales to read.";let t=e.lastOrderDate?` The newest counted order is from ${e.lastOrderDate}.`:"";if(!e.storeRevenue)return`Store revenue over ${e.window} is not shown${r(e.storeReason)}${t}`;if(0===e.orders)return`No store orders over ${e.window}.${t}`;let n=null!=e.orders?` from ${a(e.orders,"order")}`:"";return`Store revenue was ${e.storeRevenue}${n} over ${e.window}.${t}`},suggestions:["Which channel drove the most orders?","How does email compare with paid?","What changed since last week?"]},{route:"/profit",name:"Profit",defaultAgent:"max",reads:"brandId, the last 30 days of store revenue, ad spend and margin",kind:"profit",opening:e=>e.available?e.hasStoreRevenue?`Contribution over the last ${e.days} days was ${e.contribution??"not shown"}${null!=e.marginPct?`, a ${e.marginPct.toFixed(1)}% contribution margin`:""}.`:`No store revenue in the last ${e.days} days, so there is no profit to read.`:`Profit over the last ${e.days} days cannot be worked out yet: ${(e.reason??"a margin input is missing").replace(/\.$/,"")}.`,suggestions:["Which products actually earn?","Did the last discount pay for itself?","What ROAS do I need to break even?"]},{route:"/concepts",name:"Concepts",defaultAgent:"olivia",reads:"brandId, this brand's stored creatives",kind:"creatives",opening:g,suggestions:["What does our brand voice sound like?","Which visual style performs best?","What is missing from our DNA?"]},{route:"/measurement",name:"Measurement",defaultAgent:"parker",reads:"brandId, the last 90 complete days of ad platform rows (BrandDay), Measurement's own window",kind:"ads",defaultDays:90,opening:function(e){if(0===e.daysWithDelivery&&0===e.sources.length)return`No ad spend recorded over ${e.window}.`;let t=e.sources.length?`, from ${o(e.sources)}`:"",n=`${e.daysWithDelivery} of ${e.days} days had delivery`;if(!e.spend)return`Ad spend over ${e.window} is not shown${e.spendRefusal?`: ${e.spendRefusal}`:"."} ${n}.`;let s=e.revenue?` The platforms reported ${e.revenue} in revenue.`:"";return`Ad spend was ${e.spend} over ${e.window}${t}, ${n}.${s}`},suggestions:["Which decisions actually paid off?","How much revenue is incremental?","Where do platforms over-claim?"]},{route:"/competitors",name:"Competitors",defaultAgent:"parker",reads:"brandId, the competitors this brand watches and their latest scans",kind:"competitors",opening:e=>0===e.watched?"No competitors are being watched for this brand yet.":`${a(e.watched,"competitor")} watched${e.lastScanDate?`, last scanned on ${e.lastScanDate}`:", none scanned yet"}.`,suggestions:["What changed at my competitors this week?","Who is spending more than us?","Which of their ads should I learn from?"]}
1,{route:"/forecasts",name:"Forecasts",defaultAgent:"felix",reads:"brandId, the Forecasts page's own view model: this month's stored store revenue forecast",kind:"forecasts",opening:function(e){return e.range?`Store revenue this month is likely to land between ${e.range} by ${e.dueText}.`:`No revenue forecast for this month yet. ${e.reason??""}`.trim()},suggestions:["Forecast revenue for the next 30 days","How accurate were past forecasts?","Will we hit this month's target?"]},{route:"/calendar",name:"Calendar",defaultAgent:"felix",reads:"brandId, this brand's confirmed and planned moments (Moment)",kind:"calendar",opening:e=>e.unavailable?e.unavailable:e.next?`Next on the calendar: ${e.next.name}, ${e.next.dates}, ${0===e.next.daysToGo?"today":1===e.next.daysToGo?"tomorrow":`in ${e.next.daysToGo} days`}.`:"No sales, launches or restocks are on the calendar yet.",suggestions:["What happened in my last sale?","When should I plan the next sale?","How did last year's holidays move sales?"]},{route:"/scenarios",name:"Scenarios",defaultAgent:"sam",reads:"brandId, this brand's saved scenarios (PlanScenario)",kind:"scenarios",opening:e=>0===e.total?"No scenarios have been saved for this brand yet.":`${a(e.total,"scenario")} saved, the latest on ${e.lastDate}.`,suggestions:["What happens if I raise Meta spend by 20%?","What is the best split of my budget?","How did my last plan turn out?"]},{route:"/reports",name:"Reports",defaultAgent:"dex",reads:"brandId, reports generated for this brand",kind:"reports",o
1pening:h,suggestions:["What is waiting for approval?","What changed since the last report was sent?","Who receives the monthly report?"]},{route:"/delivery",name:"Delivery",defaultAgent:"dex",reads:"brandId, reports generated for this brand",kind:"reports",opening:h,suggestions:["What is waiting for approval?","Who receives the monthly report?","What changed since the last report was sent?"]},{route:"/briefs",name:"Briefs",defaultAgent:"olivia",reads:"brandId, this brand's stored creatives",kind:"creatives",opening:g,suggestions:["Write a brief for our best product","Which brief led to the best ad?","What angle have we not tried?"]},{route:"/library",name:"Library",defaultAgent:"olivia",reads:"brandId, this brand's stored creatives",kind:"creatives",opening:g,suggestions:["Which assets have never run?","Find our best performing video","What should I retire?"]},{route:"/produce",name:"Produce",defaultAgent:"olivia",reads:"brandId, this brand's stored creatives",kind:"creatives",opening:g,suggestions:["Which UGC style converts best?","Draft a UGC script for our bestseller","How do UGC ads compare with studio ads?"]},{route:"/divergences",name:"Divergences",defaultAgent:"felix",reads:b,kind:"activity",opening:c,suggestions:["Where are we furthest from forecast?","Why is revenue off plan?","Should the forecast be redone?"]},{route:"/recommendations",name:"Recommendations",defaultAgent:"sam",reads:"brandId, changes waiting for approval and open recommendations",kind:"approvals",opening:u,suggestions:["Which recommendation matters most?","What happens if I accept all of them?","Why was this one proposed?"],emptyFor:e=>0===e.proposed?["Which recommendation matters most?","What happens if I accept all of them?","Why was this one proposed?"]:[]},{route:"/decision-packages",name:"Decisions",defaultAgent:"sam",reads:"brandId, changes waiting for approval and open recommendations",kind:"approvals",opening:u,suggestions:["Which decision is most urgent?","What is the risk of each one?","Summarise what is waiting"],emptyFor:e=>0===e.proposed?["Which decision is most urgent?","What is the risk of each one?","Summarise what is waiting"]:[]},{route:"/approvals",name:"Approvals",defaultAgent:"sam",reads:"brandId, changes waiting for approval and open recommendations",kind:"approvals",opening:u,suggestions:["What is waiting for me?","Which change is riskiest?","What did I approve last week?"],emptyFor:e=>e.pending+e.proposed===0?["What is waiting for me?","Which change is riskiest?"]:[]},{route:"/goals",name:"Goals",defaultAgent:"maya",reads:w,kind:"goals",opening:l,suggestions:["Which goal is off track?","What is running right now?","Suggest a new goal"],emptyFor:e=>[...0===e.running?["What is running right now?"]:[],...e.running+e.needYou===0?["Which goal is off track?"]:[]]},{route:"/goals/[goalId]",name:"Goal",defaultAgent:"maya",reads:w,kind:"goals",opening:l,suggestions:["Is this goal on track?","What is blocking it?","What should happen next?"]},{route:"/workspace",name:"Workspace",defaultAgent:"maya",reads:w,kind:"goals",opening:l,suggestions:["What did the agents find this week?","Which goal needs me?","How are agent orders doing?"],emptyFor:e=>0===e.needYou?["Which goal needs me?"]:[]},{route:"/crew",name:"Crew",defaultAgent:"maya",reads:b,kind:"activity",opening:c,suggestions:["What did the agents do this week?","Which agent was busiest?","What should I look at first?"]},{route:"/agent-activity",name:"Activity",defaultAgent:"maya",reads:b,kind:"activity",opening:c,suggestions:["What did the agents do this week?","Which action had the biggest effect?","Did anything fail?"]},{route:"/activity",name:"Activity",defaultAgent:"maya",reads:b,kind:"activity",opening:c,suggestions:["What changed in my accounts this week?","Who made the last change?","Did anything fail?"]},{route:"/memory",name:"Memory",defaultAgent:"maya",reads:"brandId, what Cresva remembers about this brand",kind:"memory",opening:e=>0===e.memories?"Nothing is remembered about this brand yet.":`${a(e.memories,"thing")} remembered about this brand.`,suggestions:["What do you remember about us?","What worked last quarter?","Any recurring patterns?"]}
1,{route:"/autonomy",name:"Autonomy",defaultAgent:"felix",reads:b,kind:"activity",opening:c,suggestions:["What may agents change without me?","What limits are set on spend?","Is it safe to allow more?"]},{route:"/autonomy/decisions",name:"Autonomy decisions",defaultAgent:"felix",reads:b,kind:"activity",opening:c,suggestions:["Why was this decision made?","Which decisions were reversed?","What did they cost or save?"]},{route:"/data",name:"Data quality",defaultAgent:"dana",reads:y,kind:"sources",opening:i,suggestions:["Is my tracking healthy?","Which source is stale?","How complete is my catalogue feed?"]},{route:"/watchers",name:"Watchers",defaultAgent:"parker",reads:b,kind:"activity",opening:c,suggestions:["What are my watchers looking for?","Set up a watcher for rising CPA","Watch for failed agent checkouts"]},{route:"/guardrails",name:"Guardrails",defaultAgent:"sam",reads:b,kind:"activity",opening:c,suggestions:["What limits are set on spend?","What limits are set on agent orders?","Did any guardrail stop a change?"]},{route:"/receipts",name:"Receipts",defaultAgent:"dex",reads:b,kind:"activity",opening:c,suggestions:["Show me the last change made","What did each change do?","Export this week's receipts"]},{route:"/audit",name:"Audit log",defaultAgent:"dana",reads:b,kind:"activity",opening:c,suggestions:["Who changed what this week?","Were any changes rolled back?","Did anything fail?"]},{route:"/portfolio",name:"Portfolio",defaultAgent:"parker",reads:"companyId via brandId, the brands in this company",kind:"portfolio",opening:e=>`${a(e.brands,"brand")} in this portfolio.`,suggestions:["Which brand is performing worst?","Where should budget move between brands?","Summarise the portfolio this week"]},{route:"/clients",name:"Clients",defaultAgent:"dex",reads:"companyId via brandId, the brands in this company",kind:"portfolio",opening:e=>`${a(e.brands,"client brand")} in this account.`,suggestions:["Which client needs attention?","Draft a client update","Who has not had a report this month?"]},{route:"/portfolio/competitors",name:"Portfolio competitors",defaultAgent:"parker",reads:"companyId via brandId, the brands in this company",kind:"portfolio",opening:e=>`Competitors across ${a(e.brands,"brand")}.`,suggestions:["Which brand faces the most new competitor ads?","Where do competitors run angles we do not?","Which competitor changed its site this week?"]},{route:"/agency/receipts",name:"Receipts",defaultAgent:"dex",reads:"companyId via brandId, the brands in this company",kind:"portfolio",opening:e=>`Weekly receipts for ${a(e.brands,"brand")}.`,suggestions:["Which brand's receipt did not go out?","What changed across brands last week?","Which client has the most changes this week?"]},{route:"/settings",name:"Settings",defaultAgent:"dana",reads:y,kind:"sources",opening:i,suggestions:["What settings affect my numbers?","Is my currency set correctly?","Which source needs reconnecting?"]},{route:"/settings/attribution",name:"Attribution settings",defaultAgent:"dana",reads:y,kind:"sources",opening:i,suggestions:["Which attribution window should I use?","How does the window change ROAS?","Why do platforms disagree?"]},{route:"/settings/company",name:"Company settings",defaultAgent:"dex",reads:"companyId via brandId, the current plan",kind:"billing",opening:e=>e.plan?`This company is on the ${e.plan} plan.`:"No plan is recorded for this company.",suggestions:["Who can create API keys?","What does requiring a passkey change?","Which brands are in this company?"]},{route:"/settings/commerce",name:"Commerce settings",defaultAgent:"dana",reads:f,kind:"commerce",opening:d,suggestions:["Can agents place orders yet?","What does each switch do?","Are my webhooks delivering?"]},{route:"/settings/agency",name:"Agency settings",defaultAgent:"dex",reads:"brandId, reports generated for this brand",kind:"reports",o
1pening:h,suggestions:["What does the client portal show?","How do I revoke a portal link?","What does white-label change?"]},{route:"/settings/agents",name:"Agent settings",defaultAgent:"felix",reads:b,kind:"activity",opening:c,suggestions:["What may agents change without me?","What limits are set on spend?","What do the rules for this brand say?"]},{route:"/settings/apps",name:"Apps and extensions",defaultAgent:"dana",reads:y,kind:"sources",opening:i,suggestions:["How do I use Cresva from Claude?","Which apps are connected?","How do I install the Chrome extension?"]},{route:"/settings/account",name:"Account settings",defaultAgent:"dana",reads:y,kind:"sources",opening:i,suggestions:["How do I add a passkey?","Which sign-in methods are linked?","How do I change my name?"]},{route:"/settings/team",name:"Team",defaultAgent:"maya",reads:"brandId, the people with access to this brand",kind:"team",opening:e=>`${a(e.members,"person","people")} ${1===e.members?"has":"have"} access to this brand.`,suggestions:["Who can approve changes?","Invite a teammate","What can a viewer see?"]},{route:"/settings/measurement",name:"Measurement",defaultAgent:"dana",reads:y,kind:"sources",opening:i,suggestions:["Which attribution window should I use?","How does the window change ROAS?","Why do platforms disagree?"]},{route:"/settings/notifications",name:"Notifications",defaultAgent:"dex",reads:"brandId, reports generated for this brand",kind:"reports",o
1pening:h,suggestions:["What is scheduled to send next?","Did the last delivery go out?","Which alerts are on?"]},{route:"/how-we-calculate",name:"How we calculate",defaultAgent:"dana",reads:y,kind:"sources",opening:i,suggestions:["How is concept spend worked out?","Why is a figure Not set?","What does the floor mean?"]},{route:"/settings/help",name:"Help",defaultAgent:"dana",reads:y,kind:"sources",opening:i,suggestions:["How do I connect another source?","Why is a number missing?","What can Cresva do for me?"]},{route:"/settings/staff-access",name:"Staff access log",defaultAgent:"dana",reads:y,kind:"sources",opening:i,suggestions:["What does each entry in this log mean?","Why would Cresva staff open my data?","Who in my company can see this log?"]},{route:"/integrations",name:"Integrations",defaultAgent:"dana",reads:y,kind:"sources",opening:i,suggestions:["Which source needs reconnecting?","What should I connect next?","Is every source syncing?"]},{route:"/integrations/shopify/connect",name:"Connect Shopify",defaultAgent:"dana",reads:y,kind:"sources",opening:i,suggestions:["What does Cresva read from Shopify?","How long does the first sync take?","Can I connect more than one store?"]},{route:"/integrations/shopify/manual",name:"Connect Shopify",defaultAgent:"dana",reads:y,kind:"sources",opening:i,suggestions:["How do I connect my Shopify store?","What does Request access do?"]},{route:"/integrations/klaviyo/connect",name:"Connect Klaviyo",defaultAgent:"dana",reads:y,kind:"sources",opening:i,suggestions:["What does Cresva read from Klaviyo?","Where do I find my API key?","How is email revenue counted?"]},{route:"/integrations/recharge/connect",name:"Connect Recharge",defaultAgent:"dana",reads:y,kind:"sources",opening:i,suggestions:["What does Cresva read from Recharge?","How are subscriptions counted?","Where do I find my API token?"]},{route:"/integrations/chatgpt-ads/connect",name:"Connect ChatGPT Ads",defaultAgent:"dana",reads:y,kind:"sources",opening:i,suggestions:["What does Cresva read from ChatGPT Ads?","How is it attributed?","What do I need to connect it?"]},{route:"/team",name:"Team",defaultAgent:"maya",reads:"brandId, the people with access to this brand",kind:"team",opening:e=>`${a(e.members,"person","people")} ${1===e.members?"has":"have"} access to this brand.`,suggestions:["Who can approve changes?","Invite a teammate","What can a viewer see?"]},{route:"/billing",name:"Billing",defaultAgent:"dex",reads:"companyId via brandId, the current plan",kind:"billing",opening:e=>e.plan?`This account is on the ${e.plan} plan.`:"No plan is recorded for this account.",suggestions:["What does my plan include?","What would the next plan add?","When is my next invoice?"]},{route:"/billing/checkout",name:"Checkout",defaultAgent:"dex",reads:"companyId via brandId, the current plan",kind:"billing",opening:e=>e.plan?`This account is on the ${e.plan} plan today.`:"No plan is recorded for this account yet.",suggestions:["What does this plan add to mine?","How is this plan billed?","Can I change plans later?"]},{route:"/billing/success",name:"Billing",defaultAgent:"dex",reads:"companyId via brandId, the current plan",kind:"billing",opening:e=>e.plan?`This account is now on the ${e.plan} plan.`:"No plan is recorded for this account yet.",suggestions:["What did my plan unlock?","What should I set up first?","How do I invite my team?"]},{route:"/feedback",name:"Feedback",defaultAgent:"maya",reads:y,kind:"sources",opening:i,suggestions:["Report a number that looks wrong","Suggest a feature","Why is a source not syncing?"]},{route:"/locked",name:"Locked",defaultAgent:"dex",reads:y,kind:"sources",opening:i,suggestions:["What does this area need?","Which plan unlocks it?","What can I do on my current plan?"]},{route:"/tools",name:"Tools",defaultAgent:"dex",reads:"brandId, your saved tool runs for this brand (the History page's sources)",kind:"tools",opening:m,suggestions:["Which tool should I run first?","What did the last audit find?","Run a ROAS audit"]},{route:"/tools/[...unmatched]",name:"Tools",defaultAgent:"dex",reads:"brandId, your saved tool runs for this brand (the History page's sources)",kind:"tools",opening:m,suggestions:["Which tools are available?","What did the last audit find?","Which tool fits my question?"]},{route:"/tools/queue",name:"Tool queue",defaultAgent:"dex",reads:"brandId, your saved tool runs for this brand (the History page's sources)",kind:"tools",opening:m,suggestions:["What should I fix first?","Which findings are still open?","What did the last run change?"]},{route:"/tools/history",name:"Tool history",defaultAgent:"dex",reads:"brandId, your saved tool runs for this brand (the History page's sources)",kind:"tools",opening:m,suggestions:["What did my last runs find?","How has my score changed?","Which tool should I run again?"]},p("/tools/ad-account-audit","Ad Account Audit","ad-account-audit","dex",["What did the audit flag?","Which fix matters most?","How has my score changed?"]),p("/tools/ai-readiness","AI Readiness Scanner","ai-readiness","dex",["Can AI shopping agents read my store?","What should I fix first?","How does my score compare?"]),p("/tools/ai-visibility","AI Visibility Tracker","ai-visibility","parker",["Do AI assistants mention my brand?","Who gets mentioned instead of us?","How do I get recommended more?"]),p("/tools/compet
1itor-intel","Competitor Ad Intel","competitor-intel","parker",["What ads are competitors running?","What angles are they testing?","What should I copy or avoid?"]),p("/tools/landing-page-analyzer","Landing Page Analyzer","landing-page-analyzer","dex",["Why might this page not convert?","What should I change first?","How fast does it load?"]),p("/tools/product-feed-optimizer","Product Feed Optimizer","product-feed-optimizer","dana",["Which products have feed errors?","What titles should I rewrite?","How complete is my feed?"]),p("/tools/roas-audit","ROAS Audit","roas-audit","parker",["Is my reported ROAS real?","Where do platforms over-claim?","What is my blended ROAS?"]),p("/tools/tag-manager-audit","Tag Manager Audit","tag-manager-audit","dex",["Which tags are broken?","Are any tags firing twice?","What should I clean up?"]),p("/tools/tracking-audit","Pixel & UTM Auditor","tracking-audit","dex",["Is my pixel firing on purchase?","Which UTMs are malformed?","What is breaking attribution?"]),p("/tools/utm-linter","UTM & Naming Linter","utm-linter","dex",["Which campaign names break the convention?","Fix my UTM naming","What convention should we use?"]),{route:"/agent-commerce",name:"Home",defaultAgent:"dana",reads:f,kind:"commerce",opening:d,suggestions:["How are AI agents finding my products?","What should I fix first for agents?","Which product do agents pick most?"]},{route:"/agent-commerce/setup",name:"Commerce setup",defaultAgent:"dana",reads:f,kind:"commerce",opening:d,suggestions:["What is left to set up?","What do agents need from my store?","How long until agents can buy?"]},{route:"/agent-commerce/agent-revenue",name:"Agent revenue",defaultAgent:"parker",reads:f,kind:"commerce",opening:d,suggestions:["How much revenue came from AI agents?","Which agent sends the most orders?","Is agent revenue growing?"]},{route:"/agent-commerce/competitors",name:"AI competitors",defaultAgent:"dana",reads:f,kind:"commerce",opening:d,suggestions:["Who do agents recommend instead of us?","Why do they win?","What should I change to compete?"]},{route:"/agent-commerce/content",name:"Content",defaultAgent:"olivia",reads:f,kind:"commerce",opening:d,suggestions:["Which product descriptions need work?","Rewrite my weakest title","What do agents misread?"]},{route:"/agent-commerce/feed",name:"Feed optimizer",defaultAgent:"dana",reads:f,kind:"commerce",opening:d,suggestions:["Which products have feed gaps?","What should I fix first?","How complete is my catalogue?"]},{route:"/agent-commerce/portfolio",name:"Commerce portfolio",defaultAgent:"dex",reads:"companyId via brandId, the brands in this company",kind:"portfolio",opening:e=>`${a(e.brands,"brand")} in this commerce portfolio.`,suggestions:["Which brand sells most through agents?","Which store is least agent ready?","Summarise agent commerce across brands"]},{route:"/agent-commerce/queries",name:"Queries",defaultAgent:"dana",reads:f,kind:"commerce",opening:d,suggestions:["Which queries should we show up for?","Where do we not appear?","Add a query to track"]},{route:"/agent-commerce/shelf",name:"AI shelf",defaultAgent:"dana",reads:f,kind:"commerce",opening:d,suggestions:["Where do we sit on the AI shelf?","Who ranks above us?","How do we move up?"]},{route:"/agent-commerce/storefront",name:"Products",defaultAgent:"dana",reads:f,kind:"commerce",opening:d,suggestions:["Which products are agents shown?","Which are missing prices or stock?","What sells best through agents?"]},{route:"/agent-commerce/storefront/bundles",name:"Bundles",defaultAgent:"max",reads:f,kind:"commerce",opening:d,suggestions:["Which bundle should I offer agents?","Does bundling lift order value?","What margin does each bundle keep?"]},{route:"/agent-commerce/storefront/customize",name:"Storefront customisation",defaultAgent:"olivia",reads:f,kind:"commerce",opening:d,suggestions:["How does my storefront read to an agent?","What should the brand summary say?","Which details matter most?"]},{route:"/agent-commerce/storefront/negotiation",name:"Negotiation",defaultAgent:"max",reads:f,kind:"commerce",opening:d,suggestions:["How far can agents negotiate on price?","What did negotiations agree recently?","What margin do I keep?"]},{route:"/agent-commerce/storefront/offers",name:"Offers",defaultAgent:"max",reads:f,kind:"commerce",opening:d,suggestions:["Which offer should agents see?","Did the last offer pay for itself?","What discount keeps margin?"]},{route:"/agent-commerce/storefront/platforms-integrations",name:"AI platforms",defaultAgent:"sam",reads:f,kind:"commerce",opening:d,suggestions:["Which AI platforms can buy from me?","Which should I enable next?","How do they differ?"]},{route:"/agent-commerce/storefront/pricing",name:"Pricing",defaultAgent:"max",reads:f,kind:"commerce",opening:d,suggestions:["Are my agent prices competitive?","What margin does each price keep?","Should any price change?"]},{route:"/agent-commerce/storefront/response",name:"Agent responses",defaultAgent:"dana",reads:f,kind:"commerce",opening:d,suggestions:["What do agents get back from my store?","Which answers are incomplete?","How fast do we respond?"]},{route:"/agent-commerce/storefront/transactions",name:"Transactions",defaultAgent:"parker",reads:f,kind:"commerce",opening:d,suggestions:["What did agents buy this week?","Were any agent orders refunded?","Which agent orders most?"]},{route:"/agent-commerce/storefront/trust",name:"Trust score",defaultAgent:"dana",reads:f,kind:"commerce",opening:d,suggestions:["Why is my trust score what it is?","What raises it fastest?","How do agents use it?"]},{route:"/agent-commerce/structured-data",name:"Structured data",defaultAgent:"dana",reads:f,kind:"commerce",opening:d,suggestions:["Which pages lack product markup?","Are my prices marked up correctly?","What should I fix first?"]},{route:"/agent-commerce/visibility",name:"Brand visibility",defaultAgent:"dana",reads:f,kind:"commerce",opening:d,suggestions:["Do AI assistants know my brand?","Where are we mentioned?","How do we get mentioned more?"]}];k.map(e=>[e.route,e]);let W=k.map(e=>{let t;return{page:e,re:(t=e.route.split("/").map(e=>/^\[\[?\.\.\./.test(e)?"(?:/.+)?":/^\[.+\]$/.test(e)?"/[^/]+":e?`/${e.replace(/[.*+?^${}()|\\]/g,"\\$&")}`:"").join(""),RegExp(`^${t}/?$`)),dynamic:/\[/.test(e.route)}});function v(e,t){if(!e||!t)return null;let n=`/dashboard/${t}`,s=e.split("?")[0].split("#")[0];if(s!==n&&!s.startsWith(`${n}/`))return null;let a=s.slice(n.length).replace(/\/$/,""),o=W.filter(e=>e.re.test(a)),r=o.find(e=>!e.dynamic);return(r??o[0])?.page??null}function A(e){if(!e)return null;let t=e.name.trim();if(!t)return null;let n=t.length>1&&t[1]===t[1].toLowerCase()?t[0].toLowerCase()+t.slice(1):t;return"Home"===t?"this brand":/\[/.test(e.route)?`this ${n}`:/[^s]s$/.test(t)?`your ${n}`:n}function $(e,t){if(!t.canAsk)return"Search pages and actions";let n=A(e);return n?`Ask about ${n}, or search`:"Ask anything, or search"}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.