@ainyc/canonry 4.91.0 → 4.92.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/assets/agent-workspace/skills/aero/references/regression-playbook.md +1 -0
- package/assets/agent-workspace/skills/canonry/references/google-business-profile.md +1 -0
- package/assets/assets/{BacklinksPage-DHC1po5Q.js → BacklinksPage-D3JpcWtH.js} +1 -1
- package/assets/assets/{ChartPrimitives-Cu2xEVle.js → ChartPrimitives-DdwqEX5v.js} +1 -1
- package/assets/assets/{ProjectPage-DXYcaMVO.js → ProjectPage-BPLf4U3A.js} +1 -1
- package/assets/assets/{RunRow-BPqbBlXl.js → RunRow-c_2jd8iz.js} +1 -1
- package/assets/assets/{RunsPage-BJx3_Nel.js → RunsPage-D6eM_5tB.js} +1 -1
- package/assets/assets/{SettingsPage-CXTIHdsv.js → SettingsPage-DaMc8nxK.js} +1 -1
- package/assets/assets/{TrafficPage-iibCIBqX.js → TrafficPage-Dw16dcSc.js} +1 -1
- package/assets/assets/{TrafficSourceDetailPage-WU30E_59.js → TrafficSourceDetailPage-Dy9D80dz.js} +1 -1
- package/assets/assets/{arrow-left-Ds_f14R8.js → arrow-left-D8UaBG9a.js} +1 -1
- package/assets/assets/{extract-error-message-D250utEX.js → extract-error-message-CfxCIMNJ.js} +1 -1
- package/assets/assets/{index-qiysJOcG.js → index-BA-lh2pG.js} +4 -4
- package/assets/assets/{trash-2-CcVWAeec.js → trash-2-j1tX1-Kq.js} +1 -1
- package/assets/index.html +1 -1
- package/dist/{chunk-6RVUSM4Y.js → chunk-HW4GVIQD.js} +1 -1
- package/dist/{chunk-AFSVCKFI.js → chunk-IFUHXONX.js} +22 -3
- package/dist/{chunk-2SO5ZS4S.js → chunk-QYC2N23P.js} +4 -4
- package/dist/{chunk-WMBOHP7E.js → chunk-VJPVFCZW.js} +2 -0
- package/dist/cli.js +4 -4
- package/dist/index.js +4 -4
- package/dist/{intelligence-service-MHTYZ632.js → intelligence-service-24HCX4SJ.js} +2 -2
- package/dist/mcp.js +2 -2
- package/package.json +8 -8
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./ProjectPage-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./ProjectPage-BPLf4U3A.js","./vendor-tanstack-Dq7p98wZ.js","./RunRow-c_2jd8iz.js","./ChartPrimitives-DdwqEX5v.js","./extract-error-message-CfxCIMNJ.js","./vendor-recharts-ClRVR6aX.js","./trash-2-j1tX1-Kq.js","./vendor-radix-B57xfQbP.js","./vendor-markdown-DK7fbRNb.js","./RunsPage-D6eM_5tB.js","./SettingsPage-DaMc8nxK.js","./BacklinksPage-D3JpcWtH.js","./TrafficPage-Dw16dcSc.js","./arrow-left-D8UaBG9a.js","./TrafficSourceDetailPage-Dy9D80dz.js"])))=>i.map(i=>d[i]);
|
|
2
2
|
import{c as jw,d as Nw,Q as kw,M as Aw,r as U,q as Ee,j as f,L as rt,a as _w,e as _s,u as dn,f as Cw,h as hc,k as zw,l as Tw,m as uv,O as bf,n as Ja,o as zi,p as Ew,s as Ct,t as dv,v as Gs,x as Ow,y as Dw,z as Rw}from"./vendor-tanstack-Dq7p98wZ.js";import{S as Mw,O as Vf,P as fv,C as Pf,a as pv,T as Gf,D as mv,R as hv}from"./vendor-radix-B57xfQbP.js";import{c as gv}from"./vendor-recharts-ClRVR6aX.js";import{M as Bw}from"./vendor-markdown-DK7fbRNb.js";(function(){const n=document.createElement("link").relList;if(n&&n.supports&&n.supports("modulepreload"))return;for(const l of document.querySelectorAll('link[rel="modulepreload"]'))r(l);new MutationObserver(l=>{for(const c of l)if(c.type==="childList")for(const d of c.addedNodes)d.tagName==="LINK"&&d.rel==="modulepreload"&&r(d)}).observe(document,{childList:!0,subtree:!0});function i(l){const c={};return l.integrity&&(c.integrity=l.integrity),l.referrerPolicy&&(c.referrerPolicy=l.referrerPolicy),l.crossOrigin==="use-credentials"?c.credentials="include":l.crossOrigin==="anonymous"?c.credentials="omit":c.credentials="same-origin",c}function r(l){if(l.ep)return;l.ep=!0;const c=i(l);fetch(l.href,c)}})();var Fd={exports:{}},Jr={},Wd={exports:{}},ef={};var qy;function Lw(){return qy||(qy=1,(function(e){function n(B,J){var fe=B.length;B.push(J);e:for(;0<fe;){var Se=fe-1>>>1,re=B[Se];if(0<l(re,J))B[Se]=J,B[fe]=re,fe=Se;else break e}}function i(B){return B.length===0?null:B[0]}function r(B){if(B.length===0)return null;var J=B[0],fe=B.pop();if(fe!==J){B[0]=fe;e:for(var Se=0,re=B.length,Ze=re>>>1;Se<Ze;){var W=2*(Se+1)-1,ue=B[W],te=W+1,de=B[te];if(0>l(ue,fe))te<re&&0>l(de,ue)?(B[Se]=de,B[te]=fe,Se=te):(B[Se]=ue,B[W]=fe,Se=W);else if(te<re&&0>l(de,fe))B[Se]=de,B[te]=fe,Se=te;else break e}}return J}function l(B,J){var fe=B.sortIndex-J.sortIndex;return fe!==0?fe:B.id-J.id}if(e.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var c=performance;e.unstable_now=function(){return c.now()}}else{var d=Date,h=d.now();e.unstable_now=function(){return d.now()-h}}var g=[],b=[],S=1,x=null,N=3,_=!1,T=!1,k=!1,E=!1,R=typeof setTimeout=="function"?setTimeout:null,V=typeof clearTimeout=="function"?clearTimeout:null,G=typeof setImmediate<"u"?setImmediate:null;function Z(B){for(var J=i(b);J!==null;){if(J.callback===null)r(b);else if(J.startTime<=B)r(b),J.sortIndex=J.expirationTime,n(g,J);else break;J=i(b)}}function X(B){if(k=!1,Z(B),!T)if(i(g)!==null)T=!0,F||(F=!0,be());else{var J=i(b);J!==null&&ee(X,J.startTime-B)}}var F=!1,O=-1,M=5,le=-1;function ke(){return E?!0:!(e.unstable_now()-le<M)}function _e(){if(E=!1,F){var B=e.unstable_now();le=B;var J=!0;try{e:{T=!1,k&&(k=!1,V(O),O=-1),_=!0;var fe=N;try{t:{for(Z(B),x=i(g);x!==null&&!(x.expirationTime>B&&ke());){var Se=x.callback;if(typeof Se=="function"){x.callback=null,N=x.priorityLevel;var re=Se(x.expirationTime<=B);if(B=e.unstable_now(),typeof re=="function"){x.callback=re,Z(B),J=!0;break t}x===i(g)&&r(g),Z(B)}else r(g);x=i(g)}if(x!==null)J=!0;else{var Ze=i(b);Ze!==null&&ee(X,Ze.startTime-B),J=!1}}break e}finally{x=null,N=fe,_=!1}J=void 0}}finally{J?be():F=!1}}}var be;if(typeof G=="function")be=function(){G(_e)};else if(typeof MessageChannel<"u"){var tt=new MessageChannel,Ke=tt.port2;tt.port1.onmessage=_e,be=function(){Ke.postMessage(null)}}else be=function(){R(_e,0)};function ee(B,J){O=R(function(){B(e.unstable_now())},J)}e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(B){B.callback=null},e.unstable_forceFrameRate=function(B){0>B||125<B?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):M=0<B?Math.floor(1e3/B):5},e.unstable_getCurrentPriorityLevel=function(){return N},e.unstable_next=function(B){switch(N){case 1:case 2:case 3:var J=3;break;default:J=N}var fe=N;N=J;try{return B()}finally{N=fe}},e.unstable_requestPaint=function(){E=!0},e.unstable_runWithPriority=function(B,J){switch(B){case 1:case 2:case 3:case 4:case 5:break;default:B=3}var fe=N;N=B;try{return J()}finally{N=fe}},e.unstable_scheduleCallback=function(B,J,fe){var Se=e.unstable_now();switch(typeof fe=="object"&&fe!==null?(fe=fe.delay,fe=typeof fe=="number"&&0<fe?Se+fe:Se):fe=Se,B){case 1:var re=-1;break;case 2:re=250;break;case 5:re=1073741823;break;case 4:re=1e4;break;default:re=5e3}return re=fe+re,B={id:S++,callback:J,priorityLevel:B,startTime:fe,expirationTime:re,sortIndex:-1},fe>Se?(B.sortIndex=fe,n(b,B),i(g)===null&&B===i(b)&&(k?(V(O),O=-1):k=!0,ee(X,fe-Se))):(B.sortIndex=re,n(g,B),T||_||(T=!0,F||(F=!0,be()))),B},e.unstable_shouldYield=ke,e.unstable_wrapCallback=function(B){var J=N;return function(){var fe=N;N=J;try{return B.apply(this,arguments)}finally{N=fe}}}})(ef)),ef}var Uy;function qw(){return Uy||(Uy=1,Wd.exports=Lw()),Wd.exports}var $y;function Uw(){if($y)return Jr;$y=1;var e=qw(),n=jw(),i=Nw();function r(t){var a="https://react.dev/errors/"+t;if(1<arguments.length){a+="?args[]="+encodeURIComponent(arguments[1]);for(var s=2;s<arguments.length;s++)a+="&args[]="+encodeURIComponent(arguments[s])}return"Minified React error #"+t+"; visit "+a+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function l(t){return!(!t||t.nodeType!==1&&t.nodeType!==9&&t.nodeType!==11)}function c(t){var a=t,s=t;if(t.alternate)for(;a.return;)a=a.return;else{t=a;do a=t,(a.flags&4098)!==0&&(s=a.return),t=a.return;while(t)}return a.tag===3?s:null}function d(t){if(t.tag===13){var a=t.memoizedState;if(a===null&&(t=t.alternate,t!==null&&(a=t.memoizedState)),a!==null)return a.dehydrated}return null}function h(t){if(t.tag===31){var a=t.memoizedState;if(a===null&&(t=t.alternate,t!==null&&(a=t.memoizedState)),a!==null)return a.dehydrated}return null}function g(t){if(c(t)!==t)throw Error(r(188))}function b(t){var a=t.alternate;if(!a){if(a=c(t),a===null)throw Error(r(188));return a!==t?null:t}for(var s=t,o=a;;){var u=s.return;if(u===null)break;var m=u.alternate;if(m===null){if(o=u.return,o!==null){s=o;continue}break}if(u.child===m.child){for(m=u.child;m;){if(m===s)return g(u),t;if(m===o)return g(u),a;m=m.sibling}throw Error(r(188))}if(s.return!==o.return)s=u,o=m;else{for(var y=!1,w=u.child;w;){if(w===s){y=!0,s=u,o=m;break}if(w===o){y=!0,o=u,s=m;break}w=w.sibling}if(!y){for(w=m.child;w;){if(w===s){y=!0,s=m,o=u;break}if(w===o){y=!0,o=m,s=u;break}w=w.sibling}if(!y)throw Error(r(189))}}if(s.alternate!==o)throw Error(r(190))}if(s.tag!==3)throw Error(r(188));return s.stateNode.current===s?t:a}function S(t){var a=t.tag;if(a===5||a===26||a===27||a===6)return t;for(t=t.child;t!==null;){if(a=S(t),a!==null)return a;t=t.sibling}return null}var x=Object.assign,N=Symbol.for("react.element"),_=Symbol.for("react.transitional.element"),T=Symbol.for("react.portal"),k=Symbol.for("react.fragment"),E=Symbol.for("react.strict_mode"),R=Symbol.for("react.profiler"),V=Symbol.for("react.consumer"),G=Symbol.for("react.context"),Z=Symbol.for("react.forward_ref"),X=Symbol.for("react.suspense"),F=Symbol.for("react.suspense_list"),O=Symbol.for("react.memo"),M=Symbol.for("react.lazy"),le=Symbol.for("react.activity"),ke=Symbol.for("react.memo_cache_sentinel"),_e=Symbol.iterator;function be(t){return t===null||typeof t!="object"?null:(t=_e&&t[_e]||t["@@iterator"],typeof t=="function"?t:null)}var tt=Symbol.for("react.client.reference");function Ke(t){if(t==null)return null;if(typeof t=="function")return t.$$typeof===tt?null:t.displayName||t.name||null;if(typeof t=="string")return t;switch(t){case k:return"Fragment";case R:return"Profiler";case E:return"StrictMode";case X:return"Suspense";case F:return"SuspenseList";case le:return"Activity"}if(typeof t=="object")switch(t.$$typeof){case T:return"Portal";case G:return t.displayName||"Context";case V:return(t._context.displayName||"Context")+".Consumer";case Z:var a=t.render;return t=t.displayName,t||(t=a.displayName||a.name||"",t=t!==""?"ForwardRef("+t+")":"ForwardRef"),t;case O:return a=t.displayName||null,a!==null?a:Ke(t.type)||"Memo";case M:a=t._payload,t=t._init;try{return Ke(t(a))}catch{}}return null}var ee=Array.isArray,B=n.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,J=i.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,fe={pending:!1,data:null,method:null,action:null},Se=[],re=-1;function Ze(t){return{current:t}}function W(t){0>re||(t.current=Se[re],Se[re]=null,re--)}function ue(t,a){re++,Se[re]=t.current,t.current=a}var te=Ze(null),de=Ze(null),ae=Ze(null),je=Ze(null);function nt(t,a){switch(ue(ae,a),ue(de,t),ue(te,null),a.nodeType){case 9:case 11:t=(t=a.documentElement)&&(t=t.namespaceURI)?oy(t):0;break;default:if(t=a.tagName,a=a.namespaceURI)a=oy(a),t=ly(a,t);else switch(t){case"svg":t=1;break;case"math":t=2;break;default:t=0}}W(te),ue(te,t)}function xe(){W(te),W(de),W(ae)}function Ue(t){t.memoizedState!==null&&ue(je,t);var a=te.current,s=ly(a,t.type);a!==s&&(ue(de,t),ue(te,s))}function Ge(t){de.current===t&&(W(te),W(de)),je.current===t&&(W(je),Kr._currentValue=fe)}var Et,zn;function Ot(t){if(Et===void 0)try{throw Error()}catch(s){var a=s.stack.trim().match(/\n( *(at )?)/);Et=a&&a[1]||"",zn=-1<s.stack.indexOf(`
|
|
3
3
|
at`)?" (<anonymous>)":-1<s.stack.indexOf("@")?"@unknown:0:0":""}return`
|
|
4
4
|
`+Et+t+zn}var nr=!1;function Di(t,a){if(!t||nr)return"";nr=!0;var s=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{var o={DetermineComponentFrameRoot:function(){try{if(a){var Y=function(){throw Error()};if(Object.defineProperty(Y.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(Y,[])}catch(I){var $=I}Reflect.construct(t,[],Y)}else{try{Y.call()}catch(I){$=I}t.call(Y.prototype)}}else{try{throw Error()}catch(I){$=I}(Y=t())&&typeof Y.catch=="function"&&Y.catch(function(){})}}catch(I){if(I&&$&&typeof I.stack=="string")return[I.stack,$.stack]}return[null,null]}};o.DetermineComponentFrameRoot.displayName="DetermineComponentFrameRoot";var u=Object.getOwnPropertyDescriptor(o.DetermineComponentFrameRoot,"name");u&&u.configurable&&Object.defineProperty(o.DetermineComponentFrameRoot,"name",{value:"DetermineComponentFrameRoot"});var m=o.DetermineComponentFrameRoot(),y=m[0],w=m[1];if(y&&w){var C=y.split(`
|
|
@@ -49,13 +49,13 @@ Error generating stack: `+o.message+`
|
|
|
49
49
|
|
|
50
50
|
`)}_.write("payload.value = newResult;"),_.write("return payload;");const V=_.compile();return(G,Z)=>V(N,G,Z)};let c;const d=co,h=!Lv.jitless,b=h&&WA.value,S=n.catchall;let x;e._zod.parse=(N,_)=>{x??(x=r.value);const T=N.value;return d(T)?h&&b&&_?.async===!1&&_.jitless!==!0?(c||(c=l(n.shape)),N=c(N,_),S?e0([],T,N,_,x,e):N):i(N,_):(N.issues.push({expected:"object",code:"invalid_type",input:T,inst:e}),N)}});function nb(e,n,i,r){for(const c of e)if(c.issues.length===0)return n.value=c.value,n;const l=e.filter(c=>!Ts(c));return l.length===1?(n.value=l[0].value,l[0]):(n.issues.push({code:"invalid_union",input:n.value,inst:i,errors:e.map(c=>c.issues.map(d=>Xa(d,r,Ya())))}),n)}const t0=H("$ZodUnion",(e,n)=>{ut.init(e,n),Pe(e._zod,"optin",()=>n.options.some(l=>l._zod.optin==="optional")?"optional":void 0),Pe(e._zod,"optout",()=>n.options.some(l=>l._zod.optout==="optional")?"optional":void 0),Pe(e._zod,"values",()=>{if(n.options.every(l=>l._zod.values))return new Set(n.options.flatMap(l=>Array.from(l._zod.values)))}),Pe(e._zod,"pattern",()=>{if(n.options.every(l=>l._zod.pattern)){const l=n.options.map(c=>c._zod.pattern);return new RegExp(`^(${l.map(c=>Jf(c.source)).join("|")})$`)}});const i=n.options.length===1,r=n.options[0]._zod.run;e._zod.parse=(l,c)=>{if(i)return r(l,c);let d=!1;const h=[];for(const g of n.options){const b=g._zod.run({value:l.value,issues:[]},c);if(b instanceof Promise)h.push(b),d=!0;else{if(b.issues.length===0)return b;h.push(b)}}return d?Promise.all(h).then(g=>nb(g,l,e,c)):nb(h,l,e,c)}}),U_=H("$ZodDiscriminatedUnion",(e,n)=>{n.inclusive=!1,t0.init(e,n);const i=e._zod.parse;Pe(e._zod,"propValues",()=>{const l={};for(const c of n.options){const d=c._zod.propValues;if(!d||Object.keys(d).length===0)throw new Error(`Invalid discriminated union option at index "${n.options.indexOf(c)}"`);for(const[h,g]of Object.entries(d)){l[h]||(l[h]=new Set);for(const b of g)l[h].add(b)}}return l});const r=yc(()=>{const l=n.options,c=new Map;for(const d of l){const h=d._zod.propValues?.[n.discriminator];if(!h||h.size===0)throw new Error(`Invalid discriminated union option at index "${n.options.indexOf(d)}"`);for(const g of h){if(c.has(g))throw new Error(`Duplicate discriminator value "${String(g)}"`);c.set(g,d)}}return c});e._zod.parse=(l,c)=>{const d=l.value;if(!co(d))return l.issues.push({code:"invalid_type",expected:"object",input:d,inst:e}),l;const h=r.value.get(d?.[n.discriminator]);return h?h._zod.run(l,c):n.unionFallback?i(l,c):(l.issues.push({code:"invalid_union",errors:[],note:"No matching discriminator",discriminator:n.discriminator,input:d,path:[n.discriminator],inst:e}),l)}}),$_=H("$ZodIntersection",(e,n)=>{ut.init(e,n),e._zod.parse=(i,r)=>{const l=i.value,c=n.left._zod.run({value:l,issues:[]},r),d=n.right._zod.run({value:l,issues:[]},r);return c instanceof Promise||d instanceof Promise?Promise.all([c,d]).then(([g,b])=>ab(i,g,b)):ab(i,c,d)}});function kf(e,n){if(e===n)return{valid:!0,data:e};if(e instanceof Date&&n instanceof Date&&+e==+n)return{valid:!0,data:e};if(Us(e)&&Us(n)){const i=Object.keys(n),r=Object.keys(e).filter(c=>i.indexOf(c)!==-1),l={...e,...n};for(const c of r){const d=kf(e[c],n[c]);if(!d.valid)return{valid:!1,mergeErrorPath:[c,...d.mergeErrorPath]};l[c]=d.data}return{valid:!0,data:l}}if(Array.isArray(e)&&Array.isArray(n)){if(e.length!==n.length)return{valid:!1,mergeErrorPath:[]};const i=[];for(let r=0;r<e.length;r++){const l=e[r],c=n[r],d=kf(l,c);if(!d.valid)return{valid:!1,mergeErrorPath:[r,...d.mergeErrorPath]};i.push(d.data)}return{valid:!0,data:i}}return{valid:!1,mergeErrorPath:[]}}function ab(e,n,i){const r=new Map;let l;for(const h of n.issues)if(h.code==="unrecognized_keys"){l??(l=h);for(const g of h.keys)r.has(g)||r.set(g,{}),r.get(g).l=!0}else e.issues.push(h);for(const h of i.issues)if(h.code==="unrecognized_keys")for(const g of h.keys)r.has(g)||r.set(g,{}),r.get(g).r=!0;else e.issues.push(h);const c=[...r].filter(([,h])=>h.l&&h.r).map(([h])=>h);if(c.length&&l&&e.issues.push({...l,keys:c}),Ts(e))return e;const d=kf(n.value,i.value);if(!d.valid)throw new Error(`Unmergable intersection. Error path: ${JSON.stringify(d.mergeErrorPath)}`);return e.value=d.data,e}const I_=H("$ZodRecord",(e,n)=>{ut.init(e,n),e._zod.parse=(i,r)=>{const l=i.value;if(!Us(l))return i.issues.push({expected:"record",code:"invalid_type",input:l,inst:e}),i;const c=[],d=n.keyType._zod.values;if(d){i.value={};const h=new Set;for(const b of d)if(typeof b=="string"||typeof b=="number"||typeof b=="symbol"){h.add(typeof b=="number"?b.toString():b);const S=n.valueType._zod.run({value:l[b],issues:[]},r);S instanceof Promise?c.push(S.then(x=>{x.issues.length&&i.issues.push(...Es(b,x.issues)),i.value[b]=x.value})):(S.issues.length&&i.issues.push(...Es(b,S.issues)),i.value[b]=S.value)}let g;for(const b in l)h.has(b)||(g=g??[],g.push(b));g&&g.length>0&&i.issues.push({code:"unrecognized_keys",input:l,inst:e,keys:g})}else{i.value={};for(const h of Reflect.ownKeys(l)){if(h==="__proto__")continue;let g=n.keyType._zod.run({value:h,issues:[]},r);if(g instanceof Promise)throw new Error("Async schemas not supported in object keys currently");if(typeof h=="string"&&Kv.test(h)&&g.issues.length){const x=n.keyType._zod.run({value:Number(h),issues:[]},r);if(x instanceof Promise)throw new Error("Async schemas not supported in object keys currently");x.issues.length===0&&(g=x)}if(g.issues.length){n.mode==="loose"?i.value[h]=l[h]:i.issues.push({code:"invalid_key",origin:"record",issues:g.issues.map(x=>Xa(x,r,Ya())),input:h,path:[h],inst:e});continue}const S=n.valueType._zod.run({value:l[h],issues:[]},r);S instanceof Promise?c.push(S.then(x=>{x.issues.length&&i.issues.push(...Es(h,x.issues)),i.value[g.value]=x.value})):(S.issues.length&&i.issues.push(...Es(h,S.issues)),i.value[g.value]=S.value)}}return c.length?Promise.all(c).then(()=>i):i}}),V_=H("$ZodEnum",(e,n)=>{ut.init(e,n);const i=qv(n.entries),r=new Set(i);e._zod.values=r,e._zod.pattern=new RegExp(`^(${i.filter(l=>e2.has(typeof l)).map(l=>typeof l=="string"?$s(l):l.toString()).join("|")})$`),e._zod.parse=(l,c)=>{const d=l.value;return r.has(d)||l.issues.push({code:"invalid_value",values:i,input:d,inst:e}),l}}),P_=H("$ZodLiteral",(e,n)=>{if(ut.init(e,n),n.values.length===0)throw new Error("Cannot create literal schema with no valid values");const i=new Set(n.values);e._zod.values=i,e._zod.pattern=new RegExp(`^(${n.values.map(r=>typeof r=="string"?$s(r):r?$s(r.toString()):String(r)).join("|")})$`),e._zod.parse=(r,l)=>{const c=r.value;return i.has(c)||r.issues.push({code:"invalid_value",values:n.values,input:c,inst:e}),r}}),G_=H("$ZodTransform",(e,n)=>{ut.init(e,n),e._zod.parse=(i,r)=>{if(r.direction==="backward")throw new Bv(e.constructor.name);const l=n.transform(i.value,i);if(r.async)return(l instanceof Promise?l:Promise.resolve(l)).then(d=>(i.value=d,i));if(l instanceof Promise)throw new Ms;return i.value=l,i}});function ib(e,n){return e.issues.length&&n===void 0?{issues:[],value:void 0}:e}const n0=H("$ZodOptional",(e,n)=>{ut.init(e,n),e._zod.optin="optional",e._zod.optout="optional",Pe(e._zod,"values",()=>n.innerType._zod.values?new Set([...n.innerType._zod.values,void 0]):void 0),Pe(e._zod,"pattern",()=>{const i=n.innerType._zod.pattern;return i?new RegExp(`^(${Jf(i.source)})?$`):void 0}),e._zod.parse=(i,r)=>{if(n.innerType._zod.optin==="optional"){const l=n.innerType._zod.run(i,r);return l instanceof Promise?l.then(c=>ib(c,i.value)):ib(l,i.value)}return i.value===void 0?i:n.innerType._zod.run(i,r)}}),H_=H("$ZodExactOptional",(e,n)=>{n0.init(e,n),Pe(e._zod,"values",()=>n.innerType._zod.values),Pe(e._zod,"pattern",()=>n.innerType._zod.pattern),e._zod.parse=(i,r)=>n.innerType._zod.run(i,r)}),Q_=H("$ZodNullable",(e,n)=>{ut.init(e,n),Pe(e._zod,"optin",()=>n.innerType._zod.optin),Pe(e._zod,"optout",()=>n.innerType._zod.optout),Pe(e._zod,"pattern",()=>{const i=n.innerType._zod.pattern;return i?new RegExp(`^(${Jf(i.source)}|null)$`):void 0}),Pe(e._zod,"values",()=>n.innerType._zod.values?new Set([...n.innerType._zod.values,null]):void 0),e._zod.parse=(i,r)=>i.value===null?i:n.innerType._zod.run(i,r)}),K_=H("$ZodDefault",(e,n)=>{ut.init(e,n),e._zod.optin="optional",Pe(e._zod,"values",()=>n.innerType._zod.values),e._zod.parse=(i,r)=>{if(r.direction==="backward")return n.innerType._zod.run(i,r);if(i.value===void 0)return i.value=n.defaultValue,i;const l=n.innerType._zod.run(i,r);return l instanceof Promise?l.then(c=>sb(c,n)):sb(l,n)}});function sb(e,n){return e.value===void 0&&(e.value=n.defaultValue),e}const Z_=H("$ZodPrefault",(e,n)=>{ut.init(e,n),e._zod.optin="optional",Pe(e._zod,"values",()=>n.innerType._zod.values),e._zod.parse=(i,r)=>(r.direction==="backward"||i.value===void 0&&(i.value=n.defaultValue),n.innerType._zod.run(i,r))}),Y_=H("$ZodNonOptional",(e,n)=>{ut.init(e,n),Pe(e._zod,"values",()=>{const i=n.innerType._zod.values;return i?new Set([...i].filter(r=>r!==void 0)):void 0}),e._zod.parse=(i,r)=>{const l=n.innerType._zod.run(i,r);return l instanceof Promise?l.then(c=>rb(c,e)):rb(l,e)}});function rb(e,n){return!e.issues.length&&e.value===void 0&&e.issues.push({code:"invalid_type",expected:"nonoptional",input:e.value,inst:n}),e}const X_=H("$ZodCatch",(e,n)=>{ut.init(e,n),Pe(e._zod,"optin",()=>n.innerType._zod.optin),Pe(e._zod,"optout",()=>n.innerType._zod.optout),Pe(e._zod,"values",()=>n.innerType._zod.values),e._zod.parse=(i,r)=>{if(r.direction==="backward")return n.innerType._zod.run(i,r);const l=n.innerType._zod.run(i,r);return l instanceof Promise?l.then(c=>(i.value=c.value,c.issues.length&&(i.value=n.catchValue({...i,error:{issues:c.issues.map(d=>Xa(d,r,Ya()))},input:i.value}),i.issues=[]),i)):(i.value=l.value,l.issues.length&&(i.value=n.catchValue({...i,error:{issues:l.issues.map(c=>Xa(c,r,Ya()))},input:i.value}),i.issues=[]),i)}}),J_=H("$ZodPipe",(e,n)=>{ut.init(e,n),Pe(e._zod,"values",()=>n.in._zod.values),Pe(e._zod,"optin",()=>n.in._zod.optin),Pe(e._zod,"optout",()=>n.out._zod.optout),Pe(e._zod,"propValues",()=>n.in._zod.propValues),e._zod.parse=(i,r)=>{if(r.direction==="backward"){const c=n.out._zod.run(i,r);return c instanceof Promise?c.then(d=>Il(d,n.in,r)):Il(c,n.in,r)}const l=n.in._zod.run(i,r);return l instanceof Promise?l.then(c=>Il(c,n.out,r)):Il(l,n.out,r)}});function Il(e,n,i){return e.issues.length?(e.aborted=!0,e):n._zod.run({value:e.value,issues:e.issues},i)}const F_=H("$ZodReadonly",(e,n)=>{ut.init(e,n),Pe(e._zod,"propValues",()=>n.innerType._zod.propValues),Pe(e._zod,"values",()=>n.innerType._zod.values),Pe(e._zod,"optin",()=>n.innerType?._zod?.optin),Pe(e._zod,"optout",()=>n.innerType?._zod?.optout),e._zod.parse=(i,r)=>{if(r.direction==="backward")return n.innerType._zod.run(i,r);const l=n.innerType._zod.run(i,r);return l instanceof Promise?l.then(ob):ob(l)}});function ob(e){return e.value=Object.freeze(e.value),e}const W_=H("$ZodCustom",(e,n)=>{nn.init(e,n),ut.init(e,n),e._zod.parse=(i,r)=>i,e._zod.check=i=>{const r=i.value,l=n.fn(r);if(l instanceof Promise)return l.then(c=>lb(c,i,r,e));lb(l,i,r,e)}});function lb(e,n,i,r){if(!e){const l={code:"custom",input:i,inst:r,path:[...r._zod.def.path??[]],continue:!r._zod.def.abort};r._zod.def.params&&(l.params=r._zod.def.params),n.issues.push(uo(l))}}var cb;class eC{constructor(){this._map=new WeakMap,this._idmap=new Map}add(n,...i){const r=i[0];return this._map.set(n,r),r&&typeof r=="object"&&"id"in r&&this._idmap.set(r.id,n),this}clear(){return this._map=new WeakMap,this._idmap=new Map,this}remove(n){const i=this._map.get(n);return i&&typeof i=="object"&&"id"in i&&this._idmap.delete(i.id),this._map.delete(n),this}get(n){const i=n._zod.parent;if(i){const r={...this.get(i)??{}};delete r.id;const l={...r,...this._map.get(n)};return Object.keys(l).length?l:void 0}return this._map.get(n)}has(n){return this._map.has(n)}}function tC(){return new eC}(cb=globalThis).__zod_globalRegistry??(cb.__zod_globalRegistry=tC());const io=globalThis.__zod_globalRegistry;function nC(e,n){return new e({type:"string",...ye(n)})}function aC(e,n){return new e({type:"string",format:"email",check:"string_format",abort:!1,...ye(n)})}function ub(e,n){return new e({type:"string",format:"guid",check:"string_format",abort:!1,...ye(n)})}function iC(e,n){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,...ye(n)})}function sC(e,n){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v4",...ye(n)})}function rC(e,n){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v6",...ye(n)})}function oC(e,n){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v7",...ye(n)})}function lC(e,n){return new e({type:"string",format:"url",check:"string_format",abort:!1,...ye(n)})}function cC(e,n){return new e({type:"string",format:"emoji",check:"string_format",abort:!1,...ye(n)})}function uC(e,n){return new e({type:"string",format:"nanoid",check:"string_format",abort:!1,...ye(n)})}function dC(e,n){return new e({type:"string",format:"cuid",check:"string_format",abort:!1,...ye(n)})}function fC(e,n){return new e({type:"string",format:"cuid2",check:"string_format",abort:!1,...ye(n)})}function pC(e,n){return new e({type:"string",format:"ulid",check:"string_format",abort:!1,...ye(n)})}function mC(e,n){return new e({type:"string",format:"xid",check:"string_format",abort:!1,...ye(n)})}function hC(e,n){return new e({type:"string",format:"ksuid",check:"string_format",abort:!1,...ye(n)})}function gC(e,n){return new e({type:"string",format:"ipv4",check:"string_format",abort:!1,...ye(n)})}function yC(e,n){return new e({type:"string",format:"ipv6",check:"string_format",abort:!1,...ye(n)})}function bC(e,n){return new e({type:"string",format:"cidrv4",check:"string_format",abort:!1,...ye(n)})}function vC(e,n){return new e({type:"string",format:"cidrv6",check:"string_format",abort:!1,...ye(n)})}function SC(e,n){return new e({type:"string",format:"base64",check:"string_format",abort:!1,...ye(n)})}function xC(e,n){return new e({type:"string",format:"base64url",check:"string_format",abort:!1,...ye(n)})}function wC(e,n){return new e({type:"string",format:"e164",check:"string_format",abort:!1,...ye(n)})}function jC(e,n){return new e({type:"string",format:"jwt",check:"string_format",abort:!1,...ye(n)})}function NC(e,n){return new e({type:"string",format:"datetime",check:"string_format",offset:!1,local:!1,precision:null,...ye(n)})}function kC(e,n){return new e({type:"string",format:"date",check:"string_format",...ye(n)})}function AC(e,n){return new e({type:"string",format:"time",check:"string_format",precision:null,...ye(n)})}function _C(e,n){return new e({type:"string",format:"duration",check:"string_format",...ye(n)})}function CC(e,n){return new e({type:"number",checks:[],...ye(n)})}function zC(e,n){return new e({type:"number",check:"number_format",abort:!1,format:"safeint",...ye(n)})}function TC(e,n){return new e({type:"boolean",...ye(n)})}function EC(e){return new e({type:"unknown"})}function OC(e,n){return new e({type:"never",...ye(n)})}function db(e,n){return new Yv({check:"less_than",...ye(n),value:e,inclusive:!1})}function af(e,n){return new Yv({check:"less_than",...ye(n),value:e,inclusive:!0})}function fb(e,n){return new Xv({check:"greater_than",...ye(n),value:e,inclusive:!1})}function sf(e,n){return new Xv({check:"greater_than",...ye(n),value:e,inclusive:!0})}function pb(e,n){return new K2({check:"multiple_of",...ye(n),value:e})}function a0(e,n){return new Y2({check:"max_length",...ye(n),maximum:e})}function sc(e,n){return new X2({check:"min_length",...ye(n),minimum:e})}function i0(e,n){return new J2({check:"length_equals",...ye(n),length:e})}function DC(e,n){return new F2({check:"string_format",format:"regex",...ye(n),pattern:e})}function RC(e){return new W2({check:"string_format",format:"lowercase",...ye(e)})}function MC(e){return new e_({check:"string_format",format:"uppercase",...ye(e)})}function BC(e,n){return new t_({check:"string_format",format:"includes",...ye(n),includes:e})}function LC(e,n){return new n_({check:"string_format",format:"starts_with",...ye(n),prefix:e})}function qC(e,n){return new a_({check:"string_format",format:"ends_with",...ye(n),suffix:e})}function Ks(e){return new i_({check:"overwrite",tx:e})}function UC(e){return Ks(n=>n.normalize(e))}function $C(){return Ks(e=>e.trim())}function IC(){return Ks(e=>e.toLowerCase())}function VC(){return Ks(e=>e.toUpperCase())}function PC(){return Ks(e=>FA(e))}function GC(e,n,i){return new e({type:"array",element:n,...ye(i)})}function HC(e,n,i){return new e({type:"custom",check:"custom",fn:n,...ye(i)})}function QC(e){const n=KC(i=>(i.addIssue=r=>{if(typeof r=="string")i.issues.push(uo(r,i.value,n._zod.def));else{const l=r;l.fatal&&(l.continue=!1),l.code??(l.code="custom"),l.input??(l.input=i.value),l.inst??(l.inst=n),l.continue??(l.continue=!n._zod.def.abort),i.issues.push(uo(l))}},e(i.value,i)));return n}function KC(e,n){const i=new nn({check:"custom",...ye(n)});return i._zod.check=e,i}function s0(e){let n=e?.target??"draft-2020-12";return n==="draft-4"&&(n="draft-04"),n==="draft-7"&&(n="draft-07"),{processors:e.processors??{},metadataRegistry:e?.metadata??io,target:n,unrepresentable:e?.unrepresentable??"throw",override:e?.override??(()=>{}),io:e?.io??"output",counter:0,seen:new Map,cycles:e?.cycles??"ref",reused:e?.reused??"inline",external:e?.external??void 0}}function kt(e,n,i={path:[],schemaPath:[]}){var r;const l=e._zod.def,c=n.seen.get(e);if(c)return c.count++,i.schemaPath.includes(e)&&(c.cycle=i.path),c.schema;const d={schema:{},count:1,cycle:void 0,path:i.path};n.seen.set(e,d);const h=e._zod.toJSONSchema?.();if(h)d.schema=h;else{const S={...i,schemaPath:[...i.schemaPath,e],path:i.path};if(e._zod.processJSONSchema)e._zod.processJSONSchema(n,d.schema,S);else{const N=d.schema,_=n.processors[l.type];if(!_)throw new Error(`[toJSONSchema]: Non-representable type encountered: ${l.type}`);_(e,n,N,S)}const x=e._zod.parent;x&&(d.ref||(d.ref=x),kt(x,n,S),n.seen.get(x).isParent=!0)}const g=n.metadataRegistry.get(e);return g&&Object.assign(d.schema,g),n.io==="input"&&Pt(e)&&(delete d.schema.examples,delete d.schema.default),n.io==="input"&&d.schema._prefault&&((r=d.schema).default??(r.default=d.schema._prefault)),delete d.schema._prefault,n.seen.get(e).schema}function r0(e,n){const i=e.seen.get(n);if(!i)throw new Error("Unprocessed schema. This is a bug in Zod.");const r=new Map;for(const d of e.seen.entries()){const h=e.metadataRegistry.get(d[0])?.id;if(h){const g=r.get(h);if(g&&g!==d[0])throw new Error(`Duplicate schema id "${h}" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`);r.set(h,d[0])}}const l=d=>{const h=e.target==="draft-2020-12"?"$defs":"definitions";if(e.external){const x=e.external.registry.get(d[0])?.id,N=e.external.uri??(T=>T);if(x)return{ref:N(x)};const _=d[1].defId??d[1].schema.id??`schema${e.counter++}`;return d[1].defId=_,{defId:_,ref:`${N("__shared")}#/${h}/${_}`}}if(d[1]===i)return{ref:"#"};const b=`#/${h}/`,S=d[1].schema.id??`__schema${e.counter++}`;return{defId:S,ref:b+S}},c=d=>{if(d[1].schema.$ref)return;const h=d[1],{ref:g,defId:b}=l(d);h.def={...h.schema},b&&(h.defId=b);const S=h.schema;for(const x in S)delete S[x];S.$ref=g};if(e.cycles==="throw")for(const d of e.seen.entries()){const h=d[1];if(h.cycle)throw new Error(`Cycle detected: #/${h.cycle?.join("/")}/<root>
|
|
51
51
|
|
|
52
|
-
Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(const d of e.seen.entries()){const h=d[1];if(n===d[0]){c(d);continue}if(e.external){const b=e.external.registry.get(d[0])?.id;if(n!==d[0]&&b){c(d);continue}}if(e.metadataRegistry.get(d[0])?.id){c(d);continue}if(h.cycle){c(d);continue}if(h.count>1&&e.reused==="ref"){c(d);continue}}}function o0(e,n){const i=e.seen.get(n);if(!i)throw new Error("Unprocessed schema. This is a bug in Zod.");const r=d=>{const h=e.seen.get(d);if(h.ref===null)return;const g=h.def??h.schema,b={...g},S=h.ref;if(h.ref=null,S){r(S);const N=e.seen.get(S),_=N.schema;if(_.$ref&&(e.target==="draft-07"||e.target==="draft-04"||e.target==="openapi-3.0")?(g.allOf=g.allOf??[],g.allOf.push(_)):Object.assign(g,_),Object.assign(g,b),d._zod.parent===S)for(const k in g)k==="$ref"||k==="allOf"||k in b||delete g[k];if(_.$ref&&N.def)for(const k in g)k==="$ref"||k==="allOf"||k in N.def&&JSON.stringify(g[k])===JSON.stringify(N.def[k])&&delete g[k]}const x=d._zod.parent;if(x&&x!==S){r(x);const N=e.seen.get(x);if(N?.schema.$ref&&(g.$ref=N.schema.$ref,N.def))for(const _ in g)_==="$ref"||_==="allOf"||_ in N.def&&JSON.stringify(g[_])===JSON.stringify(N.def[_])&&delete g[_]}e.override({zodSchema:d,jsonSchema:g,path:h.path??[]})};for(const d of[...e.seen.entries()].reverse())r(d[0]);const l={};if(e.target==="draft-2020-12"?l.$schema="https://json-schema.org/draft/2020-12/schema":e.target==="draft-07"?l.$schema="http://json-schema.org/draft-07/schema#":e.target==="draft-04"?l.$schema="http://json-schema.org/draft-04/schema#":e.target,e.external?.uri){const d=e.external.registry.get(n)?.id;if(!d)throw new Error("Schema is missing an `id` property");l.$id=e.external.uri(d)}Object.assign(l,i.def??i.schema);const c=e.external?.defs??{};for(const d of e.seen.entries()){const h=d[1];h.def&&h.defId&&(c[h.defId]=h.def)}e.external||Object.keys(c).length>0&&(e.target==="draft-2020-12"?l.$defs=c:l.definitions=c);try{const d=JSON.parse(JSON.stringify(l));return Object.defineProperty(d,"~standard",{value:{...n["~standard"],jsonSchema:{input:rc(n,"input",e.processors),output:rc(n,"output",e.processors)}},enumerable:!1,writable:!1}),d}catch{throw new Error("Error converting schema to JSON.")}}function Pt(e,n){const i=n??{seen:new Set};if(i.seen.has(e))return!1;i.seen.add(e);const r=e._zod.def;if(r.type==="transform")return!0;if(r.type==="array")return Pt(r.element,i);if(r.type==="set")return Pt(r.valueType,i);if(r.type==="lazy")return Pt(r.getter(),i);if(r.type==="promise"||r.type==="optional"||r.type==="nonoptional"||r.type==="nullable"||r.type==="readonly"||r.type==="default"||r.type==="prefault")return Pt(r.innerType,i);if(r.type==="intersection")return Pt(r.left,i)||Pt(r.right,i);if(r.type==="record"||r.type==="map")return Pt(r.keyType,i)||Pt(r.valueType,i);if(r.type==="pipe")return Pt(r.in,i)||Pt(r.out,i);if(r.type==="object"){for(const l in r.shape)if(Pt(r.shape[l],i))return!0;return!1}if(r.type==="union"){for(const l of r.options)if(Pt(l,i))return!0;return!1}if(r.type==="tuple"){for(const l of r.items)if(Pt(l,i))return!0;return!!(r.rest&&Pt(r.rest,i))}return!1}const ZC=(e,n={})=>i=>{const r=s0({...i,processors:n});return kt(e,r),r0(r,e),o0(r,e)},rc=(e,n,i={})=>r=>{const{libraryOptions:l,target:c}=r??{},d=s0({...l??{},target:c,io:n,processors:i});return kt(e,d),r0(d,e),o0(d,e)},YC={guid:"uuid",url:"uri",datetime:"date-time",json_string:"json-string",regex:""},XC=(e,n,i,r)=>{const l=i;l.type="string";const{minimum:c,maximum:d,format:h,patterns:g,contentEncoding:b}=e._zod.bag;if(typeof c=="number"&&(l.minLength=c),typeof d=="number"&&(l.maxLength=d),h&&(l.format=YC[h]??h,l.format===""&&delete l.format,h==="time"&&delete l.format),b&&(l.contentEncoding=b),g&&g.size>0){const S=[...g];S.length===1?l.pattern=S[0].source:S.length>1&&(l.allOf=[...S.map(x=>({...n.target==="draft-07"||n.target==="draft-04"||n.target==="openapi-3.0"?{type:"string"}:{},pattern:x.source}))])}},JC=(e,n,i,r)=>{const l=i,{minimum:c,maximum:d,format:h,multipleOf:g,exclusiveMaximum:b,exclusiveMinimum:S}=e._zod.bag;typeof h=="string"&&h.includes("int")?l.type="integer":l.type="number",typeof S=="number"&&(n.target==="draft-04"||n.target==="openapi-3.0"?(l.minimum=S,l.exclusiveMinimum=!0):l.exclusiveMinimum=S),typeof c=="number"&&(l.minimum=c,typeof S=="number"&&n.target!=="draft-04"&&(S>=c?delete l.minimum:delete l.exclusiveMinimum)),typeof b=="number"&&(n.target==="draft-04"||n.target==="openapi-3.0"?(l.maximum=b,l.exclusiveMaximum=!0):l.exclusiveMaximum=b),typeof d=="number"&&(l.maximum=d,typeof b=="number"&&n.target!=="draft-04"&&(b<=d?delete l.maximum:delete l.exclusiveMaximum)),typeof g=="number"&&(l.multipleOf=g)},FC=(e,n,i,r)=>{i.type="boolean"},WC=(e,n,i,r)=>{i.not={}},ez=(e,n,i,r)=>{},tz=(e,n,i,r)=>{const l=e._zod.def,c=qv(l.entries);c.every(d=>typeof d=="number")&&(i.type="number"),c.every(d=>typeof d=="string")&&(i.type="string"),i.enum=c},nz=(e,n,i,r)=>{const l=e._zod.def,c=[];for(const d of l.values)if(d===void 0){if(n.unrepresentable==="throw")throw new Error("Literal `undefined` cannot be represented in JSON Schema")}else if(typeof d=="bigint"){if(n.unrepresentable==="throw")throw new Error("BigInt literals cannot be represented in JSON Schema");c.push(Number(d))}else c.push(d);if(c.length!==0)if(c.length===1){const d=c[0];i.type=d===null?"null":typeof d,n.target==="draft-04"||n.target==="openapi-3.0"?i.enum=[d]:i.const=d}else c.every(d=>typeof d=="number")&&(i.type="number"),c.every(d=>typeof d=="string")&&(i.type="string"),c.every(d=>typeof d=="boolean")&&(i.type="boolean"),c.every(d=>d===null)&&(i.type="null"),i.enum=c},az=(e,n,i,r)=>{if(n.unrepresentable==="throw")throw new Error("Custom types cannot be represented in JSON Schema")},iz=(e,n,i,r)=>{if(n.unrepresentable==="throw")throw new Error("Transforms cannot be represented in JSON Schema")},sz=(e,n,i,r)=>{const l=i,c=e._zod.def,{minimum:d,maximum:h}=e._zod.bag;typeof d=="number"&&(l.minItems=d),typeof h=="number"&&(l.maxItems=h),l.type="array",l.items=kt(c.element,n,{...r,path:[...r.path,"items"]})},rz=(e,n,i,r)=>{const l=i,c=e._zod.def;l.type="object",l.properties={};const d=c.shape;for(const b in d)l.properties[b]=kt(d[b],n,{...r,path:[...r.path,"properties",b]});const h=new Set(Object.keys(d)),g=new Set([...h].filter(b=>{const S=c.shape[b]._zod;return n.io==="input"?S.optin===void 0:S.optout===void 0}));g.size>0&&(l.required=Array.from(g)),c.catchall?._zod.def.type==="never"?l.additionalProperties=!1:c.catchall?c.catchall&&(l.additionalProperties=kt(c.catchall,n,{...r,path:[...r.path,"additionalProperties"]})):n.io==="output"&&(l.additionalProperties=!1)},oz=(e,n,i,r)=>{const l=e._zod.def,c=l.inclusive===!1,d=l.options.map((h,g)=>kt(h,n,{...r,path:[...r.path,c?"oneOf":"anyOf",g]}));c?i.oneOf=d:i.anyOf=d},lz=(e,n,i,r)=>{const l=e._zod.def,c=kt(l.left,n,{...r,path:[...r.path,"allOf",0]}),d=kt(l.right,n,{...r,path:[...r.path,"allOf",1]}),h=b=>"allOf"in b&&Object.keys(b).length===1,g=[...h(c)?c.allOf:[c],...h(d)?d.allOf:[d]];i.allOf=g},cz=(e,n,i,r)=>{const l=i,c=e._zod.def;l.type="object";const d=c.keyType,g=d._zod.bag?.patterns;if(c.mode==="loose"&&g&&g.size>0){const S=kt(c.valueType,n,{...r,path:[...r.path,"patternProperties","*"]});l.patternProperties={};for(const x of g)l.patternProperties[x.source]=S}else(n.target==="draft-07"||n.target==="draft-2020-12")&&(l.propertyNames=kt(c.keyType,n,{...r,path:[...r.path,"propertyNames"]})),l.additionalProperties=kt(c.valueType,n,{...r,path:[...r.path,"additionalProperties"]});const b=d._zod.values;if(b){const S=[...b].filter(x=>typeof x=="string"||typeof x=="number");S.length>0&&(l.required=S)}},uz=(e,n,i,r)=>{const l=e._zod.def,c=kt(l.innerType,n,r),d=n.seen.get(e);n.target==="openapi-3.0"?(d.ref=l.innerType,i.nullable=!0):i.anyOf=[c,{type:"null"}]},dz=(e,n,i,r)=>{const l=e._zod.def;kt(l.innerType,n,r);const c=n.seen.get(e);c.ref=l.innerType},fz=(e,n,i,r)=>{const l=e._zod.def;kt(l.innerType,n,r);const c=n.seen.get(e);c.ref=l.innerType,i.default=JSON.parse(JSON.stringify(l.defaultValue))},pz=(e,n,i,r)=>{const l=e._zod.def;kt(l.innerType,n,r);const c=n.seen.get(e);c.ref=l.innerType,n.io==="input"&&(i._prefault=JSON.parse(JSON.stringify(l.defaultValue)))},mz=(e,n,i,r)=>{const l=e._zod.def;kt(l.innerType,n,r);const c=n.seen.get(e);c.ref=l.innerType;let d;try{d=l.catchValue(void 0)}catch{throw new Error("Dynamic catch values are not supported in JSON Schema")}i.default=d},hz=(e,n,i,r)=>{const l=e._zod.def,c=n.io==="input"?l.in._zod.def.type==="transform"?l.out:l.in:l.out;kt(c,n,r);const d=n.seen.get(e);d.ref=c},gz=(e,n,i,r)=>{const l=e._zod.def;kt(l.innerType,n,r);const c=n.seen.get(e);c.ref=l.innerType,i.readOnly=!0},l0=(e,n,i,r)=>{const l=e._zod.def;kt(l.innerType,n,r);const c=n.seen.get(e);c.ref=l.innerType},yz=H("ZodISODateTime",(e,n)=>{b_.init(e,n),ft.init(e,n)});function bz(e){return NC(yz,e)}const vz=H("ZodISODate",(e,n)=>{v_.init(e,n),ft.init(e,n)});function Sz(e){return kC(vz,e)}const xz=H("ZodISOTime",(e,n)=>{S_.init(e,n),ft.init(e,n)});function wz(e){return AC(xz,e)}const jz=H("ZodISODuration",(e,n)=>{x_.init(e,n),ft.init(e,n)});function Nz(e){return _C(jz,e)}const kz=(e,n)=>{Vv.init(e,n),e.name="ZodError",Object.defineProperties(e,{format:{value:i=>d2(e,i)},flatten:{value:i=>u2(e,i)},addIssue:{value:i=>{e.issues.push(i),e.message=JSON.stringify(e.issues,Nf,2)}},addIssues:{value:i=>{e.issues.push(...i),e.message=JSON.stringify(e.issues,Nf,2)}},isEmpty:{get(){return e.issues.length===0}}})},_n=H("ZodError",kz,{Parent:Error}),Az=Wf(_n),_z=ep(_n),Cz=bc(_n),zz=vc(_n),Tz=m2(_n),Ez=h2(_n),Oz=g2(_n),Dz=y2(_n),Rz=b2(_n),Mz=v2(_n),Bz=S2(_n),Lz=x2(_n),dt=H("ZodType",(e,n)=>(ut.init(e,n),Object.assign(e["~standard"],{jsonSchema:{input:rc(e,"input"),output:rc(e,"output")}}),e.toJSONSchema=ZC(e,{}),e.def=n,e.type=n.type,Object.defineProperty(e,"_def",{value:n}),e.check=(...i)=>e.clone(Fa(n,{checks:[...n.checks??[],...i.map(r=>typeof r=="function"?{_zod:{check:r,def:{check:"custom"},onattach:[]}}:r)]}),{parent:!0}),e.with=e.check,e.clone=(i,r)=>Wa(e,i,r),e.brand=()=>e,e.register=((i,r)=>(i.add(e,r),e)),e.parse=(i,r)=>Az(e,i,r,{callee:e.parse}),e.safeParse=(i,r)=>Cz(e,i,r),e.parseAsync=async(i,r)=>_z(e,i,r,{callee:e.parseAsync}),e.safeParseAsync=async(i,r)=>zz(e,i,r),e.spa=e.safeParseAsync,e.encode=(i,r)=>Tz(e,i,r),e.decode=(i,r)=>Ez(e,i,r),e.encodeAsync=async(i,r)=>Oz(e,i,r),e.decodeAsync=async(i,r)=>Dz(e,i,r),e.safeEncode=(i,r)=>Rz(e,i,r),e.safeDecode=(i,r)=>Mz(e,i,r),e.safeEncodeAsync=async(i,r)=>Bz(e,i,r),e.safeDecodeAsync=async(i,r)=>Lz(e,i,r),e.refine=(i,r)=>e.check(TT(i,r)),e.superRefine=i=>e.check(ET(i)),e.overwrite=i=>e.check(Ks(i)),e.optional=()=>gb(e),e.exactOptional=()=>yT(e),e.nullable=()=>yb(e),e.nullish=()=>gb(yb(e)),e.nonoptional=i=>jT(e,i),e.array=()=>A(e),e.or=i=>f0([e,i]),e.and=i=>dT(e,i),e.transform=i=>bb(e,hT(i)),e.default=i=>ST(e,i),e.prefault=i=>wT(e,i),e.catch=i=>kT(e,i),e.pipe=i=>bb(e,i),e.readonly=()=>CT(e),e.describe=i=>{const r=e.clone();return io.add(r,{description:i}),r},Object.defineProperty(e,"description",{get(){return io.get(e)?.description},configurable:!0}),e.meta=(...i)=>{if(i.length===0)return io.get(e);const r=e.clone();return io.add(r,i[0]),r},e.isOptional=()=>e.safeParse(void 0).success,e.isNullable=()=>e.safeParse(null).success,e.apply=i=>i(e),e)),c0=H("_ZodString",(e,n)=>{tp.init(e,n),dt.init(e,n),e._zod.processJSONSchema=(r,l,c)=>XC(e,r,l);const i=e._zod.bag;e.format=i.format??null,e.minLength=i.minimum??null,e.maxLength=i.maximum??null,e.regex=(...r)=>e.check(DC(...r)),e.includes=(...r)=>e.check(BC(...r)),e.startsWith=(...r)=>e.check(LC(...r)),e.endsWith=(...r)=>e.check(qC(...r)),e.min=(...r)=>e.check(sc(...r)),e.max=(...r)=>e.check(a0(...r)),e.length=(...r)=>e.check(i0(...r)),e.nonempty=(...r)=>e.check(sc(1,...r)),e.lowercase=r=>e.check(RC(r)),e.uppercase=r=>e.check(MC(r)),e.trim=()=>e.check($C()),e.normalize=(...r)=>e.check(UC(...r)),e.toLowerCase=()=>e.check(IC()),e.toUpperCase=()=>e.check(VC()),e.slugify=()=>e.check(PC())}),qz=H("ZodString",(e,n)=>{tp.init(e,n),c0.init(e,n),e.email=i=>e.check(aC(Uz,i)),e.url=i=>e.check(lC($z,i)),e.jwt=i=>e.check(jC(tT,i)),e.emoji=i=>e.check(cC(Iz,i)),e.guid=i=>e.check(ub(mb,i)),e.uuid=i=>e.check(iC(Vl,i)),e.uuidv4=i=>e.check(sC(Vl,i)),e.uuidv6=i=>e.check(rC(Vl,i)),e.uuidv7=i=>e.check(oC(Vl,i)),e.nanoid=i=>e.check(uC(Vz,i)),e.guid=i=>e.check(ub(mb,i)),e.cuid=i=>e.check(dC(Pz,i)),e.cuid2=i=>e.check(fC(Gz,i)),e.ulid=i=>e.check(pC(Hz,i)),e.base64=i=>e.check(SC(Fz,i)),e.base64url=i=>e.check(xC(Wz,i)),e.xid=i=>e.check(mC(Qz,i)),e.ksuid=i=>e.check(hC(Kz,i)),e.ipv4=i=>e.check(gC(Zz,i)),e.ipv6=i=>e.check(yC(Yz,i)),e.cidrv4=i=>e.check(bC(Xz,i)),e.cidrv6=i=>e.check(vC(Jz,i)),e.e164=i=>e.check(wC(eT,i)),e.datetime=i=>e.check(bz(i)),e.date=i=>e.check(Sz(i)),e.time=i=>e.check(wz(i)),e.duration=i=>e.check(Nz(i))});function p(e){return nC(qz,e)}const ft=H("ZodStringFormat",(e,n)=>{ct.init(e,n),c0.init(e,n)}),Uz=H("ZodEmail",(e,n)=>{c_.init(e,n),ft.init(e,n)}),mb=H("ZodGUID",(e,n)=>{o_.init(e,n),ft.init(e,n)}),Vl=H("ZodUUID",(e,n)=>{l_.init(e,n),ft.init(e,n)}),$z=H("ZodURL",(e,n)=>{u_.init(e,n),ft.init(e,n)}),Iz=H("ZodEmoji",(e,n)=>{d_.init(e,n),ft.init(e,n)}),Vz=H("ZodNanoID",(e,n)=>{f_.init(e,n),ft.init(e,n)}),Pz=H("ZodCUID",(e,n)=>{p_.init(e,n),ft.init(e,n)}),Gz=H("ZodCUID2",(e,n)=>{m_.init(e,n),ft.init(e,n)}),Hz=H("ZodULID",(e,n)=>{h_.init(e,n),ft.init(e,n)}),Qz=H("ZodXID",(e,n)=>{g_.init(e,n),ft.init(e,n)}),Kz=H("ZodKSUID",(e,n)=>{y_.init(e,n),ft.init(e,n)}),Zz=H("ZodIPv4",(e,n)=>{w_.init(e,n),ft.init(e,n)}),Yz=H("ZodIPv6",(e,n)=>{j_.init(e,n),ft.init(e,n)}),Xz=H("ZodCIDRv4",(e,n)=>{N_.init(e,n),ft.init(e,n)}),Jz=H("ZodCIDRv6",(e,n)=>{k_.init(e,n),ft.init(e,n)}),Fz=H("ZodBase64",(e,n)=>{A_.init(e,n),ft.init(e,n)}),Wz=H("ZodBase64URL",(e,n)=>{C_.init(e,n),ft.init(e,n)}),eT=H("ZodE164",(e,n)=>{z_.init(e,n),ft.init(e,n)}),tT=H("ZodJWT",(e,n)=>{E_.init(e,n),ft.init(e,n)}),u0=H("ZodNumber",(e,n)=>{Fv.init(e,n),dt.init(e,n),e._zod.processJSONSchema=(r,l,c)=>JC(e,r,l),e.gt=(r,l)=>e.check(fb(r,l)),e.gte=(r,l)=>e.check(sf(r,l)),e.min=(r,l)=>e.check(sf(r,l)),e.lt=(r,l)=>e.check(db(r,l)),e.lte=(r,l)=>e.check(af(r,l)),e.max=(r,l)=>e.check(af(r,l)),e.int=r=>e.check(hb(r)),e.safe=r=>e.check(hb(r)),e.positive=r=>e.check(fb(0,r)),e.nonnegative=r=>e.check(sf(0,r)),e.negative=r=>e.check(db(0,r)),e.nonpositive=r=>e.check(af(0,r)),e.multipleOf=(r,l)=>e.check(pb(r,l)),e.step=(r,l)=>e.check(pb(r,l)),e.finite=()=>e;const i=e._zod.bag;e.minValue=Math.max(i.minimum??Number.NEGATIVE_INFINITY,i.exclusiveMinimum??Number.NEGATIVE_INFINITY)??null,e.maxValue=Math.min(i.maximum??Number.POSITIVE_INFINITY,i.exclusiveMaximum??Number.POSITIVE_INFINITY)??null,e.isInt=(i.format??"").includes("int")||Number.isSafeInteger(i.multipleOf??.5),e.isFinite=!0,e.format=i.format??null});function v(e){return CC(u0,e)}const nT=H("ZodNumberFormat",(e,n)=>{O_.init(e,n),u0.init(e,n)});function hb(e){return zC(nT,e)}const aT=H("ZodBoolean",(e,n)=>{D_.init(e,n),dt.init(e,n),e._zod.processJSONSchema=(i,r,l)=>FC(e,i,r)});function oe(e){return TC(aT,e)}const iT=H("ZodUnknown",(e,n)=>{R_.init(e,n),dt.init(e,n),e._zod.processJSONSchema=(i,r,l)=>ez()});function qn(){return EC(iT)}const sT=H("ZodNever",(e,n)=>{M_.init(e,n),dt.init(e,n),e._zod.processJSONSchema=(i,r,l)=>WC(e,i,r)});function rT(e){return OC(sT,e)}const oT=H("ZodArray",(e,n)=>{B_.init(e,n),dt.init(e,n),e._zod.processJSONSchema=(i,r,l)=>sz(e,i,r,l),e.element=n.element,e.min=(i,r)=>e.check(sc(i,r)),e.nonempty=i=>e.check(sc(1,i)),e.max=(i,r)=>e.check(a0(i,r)),e.length=(i,r)=>e.check(i0(i,r)),e.unwrap=()=>e.element});function A(e,n){return GC(oT,e,n)}const lT=H("ZodObject",(e,n)=>{q_.init(e,n),dt.init(e,n),e._zod.processJSONSchema=(i,r,l)=>rz(e,i,r,l),Pe(e,"shape",()=>n.shape),e.keyof=()=>ie(Object.keys(e._zod.def.shape)),e.catchall=i=>e.clone({...e._zod.def,catchall:i}),e.passthrough=()=>e.clone({...e._zod.def,catchall:qn()}),e.loose=()=>e.clone({...e._zod.def,catchall:qn()}),e.strict=()=>e.clone({...e._zod.def,catchall:rT()}),e.strip=()=>e.clone({...e._zod.def,catchall:void 0}),e.extend=i=>s2(e,i),e.safeExtend=i=>r2(e,i),e.merge=i=>o2(e,i),e.pick=i=>a2(e,i),e.omit=i=>i2(e,i),e.partial=(...i)=>l2(m0,e,i[0]),e.required=(...i)=>c2(h0,e,i[0])});function j(e,n){const i={type:"object",shape:e??{},...ye(n)};return new lT(i)}const d0=H("ZodUnion",(e,n)=>{t0.init(e,n),dt.init(e,n),e._zod.processJSONSchema=(i,r,l)=>oz(e,i,r,l),e.options=n.options});function f0(e,n){return new d0({type:"union",options:e,...ye(n)})}const cT=H("ZodDiscriminatedUnion",(e,n)=>{d0.init(e,n),U_.init(e,n)});function p0(e,n,i){return new cT({type:"union",options:n,discriminator:e,...ye(i)})}const uT=H("ZodIntersection",(e,n)=>{$_.init(e,n),dt.init(e,n),e._zod.processJSONSchema=(i,r,l)=>lz(e,i,r,l)});function dT(e,n){return new uT({type:"intersection",left:e,right:n})}const fT=H("ZodRecord",(e,n)=>{I_.init(e,n),dt.init(e,n),e._zod.processJSONSchema=(i,r,l)=>cz(e,i,r,l),e.keyType=n.keyType,e.valueType=n.valueType});function lt(e,n,i){return new fT({type:"record",keyType:e,valueType:n,...ye(i)})}const Af=H("ZodEnum",(e,n)=>{V_.init(e,n),dt.init(e,n),e._zod.processJSONSchema=(r,l,c)=>tz(e,r,l),e.enum=n.entries,e.options=Object.values(n.entries);const i=new Set(Object.keys(n.entries));e.extract=(r,l)=>{const c={};for(const d of r)if(i.has(d))c[d]=n.entries[d];else throw new Error(`Key ${d} not found in enum`);return new Af({...n,checks:[],...ye(l),entries:c})},e.exclude=(r,l)=>{const c={...n.entries};for(const d of r)if(i.has(d))delete c[d];else throw new Error(`Key ${d} not found in enum`);return new Af({...n,checks:[],...ye(l),entries:c})}});function ie(e,n){const i=Array.isArray(e)?Object.fromEntries(e.map(r=>[r,r])):e;return new Af({type:"enum",entries:i,...ye(n)})}const pT=H("ZodLiteral",(e,n)=>{P_.init(e,n),dt.init(e,n),e._zod.processJSONSchema=(i,r,l)=>nz(e,i,r),e.values=new Set(n.values),Object.defineProperty(e,"value",{get(){if(n.values.length>1)throw new Error("This schema contains multiple valid literal values. Use `.values` instead.");return n.values[0]}})});function qt(e,n){return new pT({type:"literal",values:Array.isArray(e)?e:[e],...ye(n)})}const mT=H("ZodTransform",(e,n)=>{G_.init(e,n),dt.init(e,n),e._zod.processJSONSchema=(i,r,l)=>iz(e,i),e._zod.parse=(i,r)=>{if(r.direction==="backward")throw new Bv(e.constructor.name);i.addIssue=c=>{if(typeof c=="string")i.issues.push(uo(c,i.value,n));else{const d=c;d.fatal&&(d.continue=!1),d.code??(d.code="custom"),d.input??(d.input=i.value),d.inst??(d.inst=e),i.issues.push(uo(d))}};const l=n.transform(i.value,i);return l instanceof Promise?l.then(c=>(i.value=c,i)):(i.value=l,i)}});function hT(e){return new mT({type:"transform",transform:e})}const m0=H("ZodOptional",(e,n)=>{n0.init(e,n),dt.init(e,n),e._zod.processJSONSchema=(i,r,l)=>l0(e,i,r,l),e.unwrap=()=>e._zod.def.innerType});function gb(e){return new m0({type:"optional",innerType:e})}const gT=H("ZodExactOptional",(e,n)=>{H_.init(e,n),dt.init(e,n),e._zod.processJSONSchema=(i,r,l)=>l0(e,i,r,l),e.unwrap=()=>e._zod.def.innerType});function yT(e){return new gT({type:"optional",innerType:e})}const bT=H("ZodNullable",(e,n)=>{Q_.init(e,n),dt.init(e,n),e._zod.processJSONSchema=(i,r,l)=>uz(e,i,r,l),e.unwrap=()=>e._zod.def.innerType});function yb(e){return new bT({type:"nullable",innerType:e})}const vT=H("ZodDefault",(e,n)=>{K_.init(e,n),dt.init(e,n),e._zod.processJSONSchema=(i,r,l)=>fz(e,i,r,l),e.unwrap=()=>e._zod.def.innerType,e.removeDefault=e.unwrap});function ST(e,n){return new vT({type:"default",innerType:e,get defaultValue(){return typeof n=="function"?n():$v(n)}})}const xT=H("ZodPrefault",(e,n)=>{Z_.init(e,n),dt.init(e,n),e._zod.processJSONSchema=(i,r,l)=>pz(e,i,r,l),e.unwrap=()=>e._zod.def.innerType});function wT(e,n){return new xT({type:"prefault",innerType:e,get defaultValue(){return typeof n=="function"?n():$v(n)}})}const h0=H("ZodNonOptional",(e,n)=>{Y_.init(e,n),dt.init(e,n),e._zod.processJSONSchema=(i,r,l)=>dz(e,i,r,l),e.unwrap=()=>e._zod.def.innerType});function jT(e,n){return new h0({type:"nonoptional",innerType:e,...ye(n)})}const NT=H("ZodCatch",(e,n)=>{X_.init(e,n),dt.init(e,n),e._zod.processJSONSchema=(i,r,l)=>mz(e,i,r,l),e.unwrap=()=>e._zod.def.innerType,e.removeCatch=e.unwrap});function kT(e,n){return new NT({type:"catch",innerType:e,catchValue:typeof n=="function"?n:()=>n})}const AT=H("ZodPipe",(e,n)=>{J_.init(e,n),dt.init(e,n),e._zod.processJSONSchema=(i,r,l)=>hz(e,i,r,l),e.in=n.in,e.out=n.out});function bb(e,n){return new AT({type:"pipe",in:e,out:n})}const _T=H("ZodReadonly",(e,n)=>{F_.init(e,n),dt.init(e,n),e._zod.processJSONSchema=(i,r,l)=>gz(e,i,r,l),e.unwrap=()=>e._zod.def.innerType});function CT(e){return new _T({type:"readonly",innerType:e})}const zT=H("ZodCustom",(e,n)=>{W_.init(e,n),dt.init(e,n),e._zod.processJSONSchema=(i,r,l)=>az(e,i)});function TT(e,n={}){return HC(zT,e,n)}function ET(e){return QC(e)}const g0=j({id:p(),name:p(),keyPrefix:p(),scopes:A(p()),readOnly:oe(),createdAt:p(),lastUsedAt:p().nullable(),revokedAt:p().nullable()});j({keys:A(g0)});j({name:p().min(1).max(100),scopes:A(p()).min(1).optional()});g0.extend({key:p()});const OT=j({maxConcurrency:v().int().positive(),maxRequestsPerMinute:v().int().positive(),maxRequestsPerDay:v().int().positive()}),ya=p().min(1);p().min(1);const np=j({label:p().min(1),city:p().min(1),region:p().min(1),country:p().length(2),timezone:p().optional()}),ap=ie(["citation.lost","citation.gained","run.completed","run.failed","insight.critical","insight.high"]);j({id:p(),projectId:p(),channel:qt("webhook"),url:p().url(),urlDisplay:p(),urlHost:p(),events:A(ap),enabled:oe().default(!0),source:p().optional(),webhookSecret:p().optional(),createdAt:p(),updatedAt:p()});j({channel:qt("webhook"),url:p().url(),events:A(ap).min(1),source:p().optional()});const y0=ie(["cli","api","config-file"]);function DT(e){const n=new Set,i=new Set;for(const r of e){if(n.has(r.label)){i.add(r.label);continue}n.add(r.label)}return[...i]}function RT(e,n){return n?e.some(i=>i.label===n):!0}j({displayName:p().min(1),canonicalDomain:p().min(1),ownedDomains:A(p().min(1)).optional(),aliases:A(p()).optional(),country:p().length(2),language:p().min(2),tags:A(p()).optional(),labels:lt(p(),p()).optional(),providers:A(ya).optional(),locations:A(np).optional(),defaultLocation:p().nullable().optional(),autoExtractBacklinks:oe().optional(),configSource:y0.optional()});const MT=j({id:p(),name:p(),displayName:p().optional(),canonicalDomain:p(),ownedDomains:A(p()).default([]),aliases:A(p()).default([]),country:p().length(2),language:p().min(2),tags:A(p()).default([]),labels:lt(p(),p()).default({}),providers:A(p()).default([]),locations:A(np).default([]),defaultLocation:p().nullable().optional(),autoExtractBacklinks:oe().default(!1),configSource:y0.default("cli"),configRevision:v().int().positive().default(1),createdAt:p().optional(),updatedAt:p().optional()});j({id:p(),query:p(),createdAt:p()});j({id:p(),keyword:p(),createdAt:p()});j({queries:A(p().trim().min(1)).min(1)});j({keywords:A(p().trim().min(1)).min(1)});j({provider:ya,count:v().int().min(1).max(20).optional()});j({id:p(),domain:p(),createdAt:p()});j({competitors:A(p().trim().min(1)).min(1)});function oc(e){let n=e.trim().toLowerCase();try{n.includes("://")&&(n=new URL(n).hostname.toLowerCase())}catch{}return n.replace(/^www\./,"")}const BT=new Set(["ac.uk","co.id","co.il","co.in","co.jp","co.kr","co.nz","co.th","co.uk","co.za","com.au","com.br","com.cn","com.mx","com.ph","com.sg","com.tr","edu.au","edu.sg","gov.au","gov.uk","me.uk","ne.jp","net.au","net.br","net.cn","net.in","net.tr","or.jp","or.kr","org.au","org.br","org.in","org.nz","org.tr","org.uk","org.za"]);function LT(e){const n=oc(e);if(!n)return"";const i=n.split("/")[0]?.split(":")[0]??"";if(!i)return"";const r=i.split(".").filter(Boolean);if(r.length<2)return"";if(r.length===2)return r.join(".");const l=r.slice(-2).join(".");return BT.has(l)?r.length>=3?r.slice(-3).join("."):"":r.slice(-2).join(".")}function qT(e){const n=LT(e);return n?n.split(".")[0]??"":""}function UT(e){const n=[e.canonicalDomain,...e.ownedDomains??[]],i=new Set,r=[];for(const l of n){const c=l.trim();if(!c)continue;const d=oc(c);i.has(d)||(i.add(d),r.push(c))}return r}const $T=j({name:p().min(1).max(63).regex(/^[a-z0-9]([a-z0-9-]*[a-z0-9])?$/,{message:"Name must be a lowercase slug (letters, numbers, hyphens)"}),labels:lt(p(),p()).optional().default({})}),IT=j({preset:p().optional(),cron:p().optional(),timezone:p().optional().default("UTC"),providers:A(ya).optional().default([])}).refine(e=>e.preset&&!e.cron||!e.preset&&e.cron,{message:'Exactly one of "preset" or "cron" must be provided'}).optional(),VT=j({channel:qt("webhook"),url:p().url(),events:A(ap).min(1)}),PT=j({gsc:j({propertyUrl:p()}).optional(),syncSchedule:j({preset:p().optional(),cron:p().optional()}).optional()}).optional(),vb=A(p().min(1)),GT=j({displayName:p().min(1),canonicalDomain:p().min(1),ownedDomains:A(p().min(1)).optional().default([]),aliases:A(p().min(1)).optional().default([]),country:p().length(2),language:p().min(2),queries:vb.optional(),keywords:vb.optional(),competitors:A(p().min(1)).optional().default([]),providers:A(ya).optional().default([]),locations:A(np).optional().default([]),defaultLocation:p().optional(),schedule:IT,notifications:A(VT).optional().default([]),google:PT,autoExtractBacklinks:oe().optional().default(!1)}).superRefine((e,n)=>{e.queries!==void 0&&e.keywords!==void 0&&n.addIssue({code:"custom",message:"Use spec.queries; spec.keywords is accepted only as a legacy alias when spec.queries is omitted",path:["keywords"]});const i=DT(e.locations);i.length>0&&n.addIssue({code:"custom",message:`Duplicate location labels are not allowed: ${i.join(", ")}`,path:["locations"]}),RT(e.locations,e.defaultLocation)||n.addIssue({code:"custom",message:`defaultLocation "${e.defaultLocation}" must match a configured location label`,path:["defaultLocation"]})});j({apiVersion:qt("canonry/v1"),kind:qt("Project"),metadata:$T,spec:GT});const HT=ie(["gsc","ga4","gbp"]);j({id:p(),domain:p(),connectionType:HT,propertyId:p().nullable().optional(),sitemapUrl:p().nullable().optional(),scopes:A(p()).default([]),createdAt:p(),updatedAt:p()});j({date:p(),query:p(),page:p(),country:p().nullable().optional(),device:p().nullable().optional(),clicks:v(),impressions:v(),ctr:v(),position:v()});const QT=j({date:p(),clicks:v(),impressions:v(),ctr:v()});j({totals:j({clicks:v(),impressions:v(),ctr:v(),days:v()}),daily:A(QT)});const _f=j({id:p(),url:p(),indexingState:p().nullable().optional(),verdict:p().nullable().optional(),coverageState:p().nullable().optional(),pageFetchState:p().nullable().optional(),robotsTxtState:p().nullable().optional(),crawlTime:p().nullable().optional(),lastCrawlResult:p().nullable().optional(),isMobileFriendly:oe().nullable().optional(),richResults:A(p()).default([]),referringUrls:A(p()).default([]),inspectedAt:p()});ie(["stable","reindexed","deindexed","still-missing","new"]);const KT=j({url:p(),previousState:p().nullable(),currentState:p().nullable(),transitionDate:p()}),ZT=j({reason:p(),count:v(),urls:A(_f).default([])});j({summary:j({total:v(),indexed:v(),notIndexed:v(),deindexed:v(),percentage:v()}),lastInspectedAt:p().nullable(),lastSyncedAt:p().nullable(),indexed:A(_f).default([]),notIndexed:A(_f).default([]),deindexed:A(KT).default([]),reasonGroups:A(ZT).default([])});j({url:p(),type:ie(["URL_UPDATED","URL_DELETED"]),notifiedAt:p()});const YT=j({url:p(),type:ie(["URL_UPDATED","URL_DELETED"]),notifiedAt:p(),status:ie(["success","error"]),error:p().optional()});j({summary:j({total:v().int().nonnegative(),succeeded:v().int().nonnegative(),failed:v().int().nonnegative()}),results:A(YT).default([])});j({date:p(),indexed:v(),notIndexed:v(),reasonBreakdown:lt(p(),v()).default({})});const XT=j({siteUrl:p(),permissionLevel:p()});j({sites:A(XT).default([])});const JT=j({type:p(),submitted:p(),indexed:p()}),FT=j({path:p(),lastSubmitted:p().optional(),isPending:oe().optional(),isSitemapsIndex:oe().optional(),type:p().optional(),lastDownloaded:p().optional(),warnings:p().optional(),errors:p().optional(),contents:A(JT).optional()});j({sitemaps:A(FT).default([])});const WT=j({name:p(),accountName:p().nullable(),type:p().nullable(),role:p().nullable()});j({accounts:A(WT),total:v().int().nonnegative()});const eE=j({id:p(),projectId:p(),accountName:p(),locationName:p(),displayName:p(),primaryCategoryDisplayName:p().nullable(),storefrontAddress:p().nullable(),websiteUri:p().nullable(),placeId:p().nullable(),mapsUri:p().nullable(),additionalCategories:A(p()),description:p().nullable(),serviceArea:lt(p(),qn()).nullable(),regularHours:lt(p(),qn()).nullable(),primaryPhone:p().nullable(),openStatus:p().nullable(),openingDate:p().nullable(),selected:oe(),syncedAt:p().nullable(),createdAt:p(),updatedAt:p()});j({locations:A(eE),totalDiscovered:v().int().nonnegative(),totalSelected:v().int().nonnegative()});j({selectAllNew:oe().default(!0),accountName:p().optional(),switchAccount:oe().default(!1)});j({selected:oe()});j({locationNames:A(p()).optional(),daysOfMetrics:v().int().positive().max(540).optional(),monthsOfKeywords:v().int().positive().max(18).optional()});j({runId:p(),status:p()});const tE=j({locationName:p(),date:p(),metric:p(),value:v().int()});j({metrics:A(tE),total:v().int().nonnegative()});const nE=j({locationName:p(),periodStart:p(),periodEnd:p(),keyword:p(),valueCount:v().int().nullable(),valueThreshold:v().int().nullable()});j({keywords:A(nE),total:v().int().nonnegative(),thresholdedPct:v().int().min(0).max(100)});const aE=j({locationName:p(),placeActionLinkName:p(),placeActionType:p(),uri:p().nullable(),isPreferred:oe(),providerType:p().nullable()});j({placeActions:A(aE),total:v().int().nonnegative()});const iE=j({locationName:p(),populatedGroupCount:v().int().nonnegative(),syncedAt:p(),attributes:lt(p(),qn())});j({lodging:A(iE),total:v().int().nonnegative()});const sE=j({locationName:p(),placeId:p(),tier:p(),amenities:A(p()),syncedAt:p(),place:lt(p(),qn())});j({places:A(sE),total:v().int().nonnegative()});j({scope:j({locationName:p().nullable(),locationCount:v().int().nonnegative()}),performance:j({totals:lt(p(),v()),recent7d:lt(p(),v()),prior7d:lt(p(),v()),deltaPct:lt(p(),v().nullable())}),freshness:j({dataThroughDate:p().nullable(),latestStoredDate:p().nullable(),pendingDays:v().int().nonnegative()}),timeseries:A(j({date:p(),pending:oe(),metrics:lt(p(),v())})),keywords:j({total:v().int().nonnegative(),thresholdedCount:v().int().nonnegative(),thresholdedPct:v().int().min(0).max(100)}),placeActions:j({total:v().int().nonnegative(),hasReservationCta:oe(),hasBookingCta:oe(),hasDirectMerchantCta:oe()}),lodging:j({lodgingLocationCount:v().int().nonnegative(),populatedLodgingCount:v().int().nonnegative(),emptyLodgingCount:v().int().nonnegative()}),profileCompleteness:j({locationCount:v().int().nonnegative(),withSecondaryCategories:v().int().nonnegative(),secondaryCategoryTotal:v().int().nonnegative(),withDescription:v().int().nonnegative(),withServiceArea:v().int().nonnegative(),withHours:v().int().nonnegative(),withPrimaryPhone:v().int().nonnegative(),permanentlyClosed:v().int().nonnegative(),temporarilyClosed:v().int().nonnegative()})});const rE={BUSINESS_DIRECTION_REQUESTS:"Direction requests",WEBSITE_CLICKS:"Website clicks",CALL_CLICKS:"Call clicks",BUSINESS_BOOKINGS:"Bookings",BUSINESS_CONVERSATIONS:"Conversations",BUSINESS_FOOD_ORDERS:"Food orders",BUSINESS_FOOD_MENU_CLICKS:"Food menu clicks",BUSINESS_IMPRESSIONS_DESKTOP_SEARCH:"Search impressions (desktop)",BUSINESS_IMPRESSIONS_MOBILE_SEARCH:"Search impressions (mobile)",BUSINESS_IMPRESSIONS_DESKTOP_MAPS:"Maps impressions (desktop)",BUSINESS_IMPRESSIONS_MOBILE_MAPS:"Maps impressions (mobile)"};function oE(e){const n=e.replace(/^BUSINESS_/,"").split("_").filter(Boolean).map(r=>r.toLowerCase());if(n.length===0)return e;const i=n.join(" ");return i.charAt(0).toUpperCase()+i.slice(1)}function gL(e){return rE[e]??oE(e)}const lE=["BUSINESS_DIRECTION_REQUESTS","WEBSITE_CLICKS","CALL_CLICKS"],cE=["BUSINESS_IMPRESSIONS_DESKTOP_SEARCH","BUSINESS_IMPRESSIONS_MOBILE_SEARCH","BUSINESS_IMPRESSIONS_DESKTOP_MAPS","BUSINESS_IMPRESSIONS_MOBILE_MAPS"];function yL(e){return lE.includes(e)?"conversion":cE.includes(e)?"reach":"other"}j({id:p(),domain:p(),siteUrl:p().nullable().optional(),createdAt:p(),updatedAt:p()});const rf=j({id:p(),url:p(),httpCode:v().nullable().optional(),inIndex:oe().nullable().optional(),lastCrawledDate:p().nullable().optional(),inIndexDate:p().nullable().optional(),inspectedAt:p(),documentSize:v().nullable().optional(),anchorCount:v().nullable().optional(),discoveryDate:p().nullable().optional()});j({summary:j({total:v(),indexed:v(),notIndexed:v(),unknown:v().optional(),percentage:v()}),lastInspectedAt:p().nullable(),indexed:A(rf).default([]),notIndexed:A(rf).default([]),unknown:A(rf).default([]).optional()});j({query:p(),impressions:v(),clicks:v(),ctr:v(),averagePosition:v()});j({date:p(),indexed:v(),notIndexed:v(),unknown:v()});const uE=j({url:p(),status:ie(["success","error"]),submittedAt:p(),error:p().optional()});j({summary:j({total:v().int().nonnegative(),succeeded:v().int().nonnegative(),failed:v().int().nonnegative()}),results:A(uE).default([])});const b0=j({url:p(),verified:oe()});j({sites:A(b0).default([])});j({connected:oe(),domain:p(),siteUrl:p().nullable(),createdAt:p().nullable(),updatedAt:p().nullable()});j({connected:oe(),domain:p(),siteUrl:p().nullable(),availableSites:A(b0).default([])});j({siteUrl:p()});const dE=j({name:p(),alive:oe(),lastUsed:p().nullable()});j({connected:oe(),endpoint:p(),version:p().optional(),browserVersion:p().optional(),targets:A(dE).default([])});const Zs=ie(["live","staging"]);j({projectName:p(),url:p(),stagingUrl:p().optional(),username:p(),defaultEnv:Zs,createdAt:p(),updatedAt:p()});const Sb=j({url:p(),reachable:oe(),pageCount:v().nullable().optional(),version:p().nullable().optional(),error:p().nullable().optional(),plugins:A(p()).optional(),authenticatedUser:j({id:v(),slug:p()}).nullable().optional()});j({connected:oe(),projectName:p(),defaultEnv:Zs,live:Sb.nullable(),staging:Sb.nullable(),adminUrl:p().nullable().optional()});const fE=j({id:v(),slug:p(),title:p(),status:p(),modifiedAt:p().nullable().optional(),link:p().nullable().optional()}),v0=j({title:p().nullable(),description:p().nullable(),noindex:oe().nullable(),writable:oe().default(!1),writeTargets:A(p()).default([])}),pE=j({type:p(),json:lt(p(),qn())}),mE=fE.extend({env:Zs,content:p(),seo:v0,schemaBlocks:A(pE).default([])}),xb=mE.extend({contentHash:p(),contentSnippet:p()}),S0=j({manualRequired:qt(!0),targetUrl:p(),adminUrl:p().nullable().optional(),content:p(),nextSteps:A(p()).default([])}),hE=j({slug:p(),severity:ie(["high","medium","low"]),code:ie(["noindex","missing-seo-title","missing-meta-description","missing-schema","thin-content"]),message:p()});j({slug:p(),title:p(),status:p(),wordCount:v(),seo:v0,schemaPresent:oe(),issues:A(hE).default([])});const gE=j({slug:p(),status:ie(["applied","skipped","manual"]),error:p().optional(),manualAssist:S0.optional()});j({env:Zs,strategy:ie(["plugin","manual"]),results:A(gE)});const yE=j({slug:p(),status:ie(["deployed","stripped","skipped","failed"]),schemasInjected:A(p()).optional(),manualAssist:S0.optional(),error:p().optional()});j({env:Zs,results:A(yE)});const bE=j({slug:p(),title:p(),canonrySchemas:A(p()),thirdPartySchemas:A(p()),hasCanonrySchema:oe()});j({env:Zs,pages:A(bE)});const vE=j({name:p(),status:ie(["completed","skipped","failed"]),summary:p().optional(),error:p().optional()});j({projectName:p(),steps:A(vE)});j({slug:p(),live:xb,staging:xb,hasDifferences:oe(),differences:j({title:oe(),slug:oe(),content:oe(),seoTitle:oe(),seoDescription:oe(),noindex:oe(),schema:oe()})});const SE=j({name:p(),displayName:p().optional(),keyUrl:p().optional(),modelHint:p().optional(),model:p().optional(),defaultModel:p().optional(),configured:oe(),quota:OT.optional(),vertexConfigured:oe().optional()}),wb=j({configured:oe()});j({providers:A(SE).default([]),google:wb,bing:wb});const Ys=ie(["queued","running","completed","partial","failed","cancelled"]),Ht=Ys.enum,x0=ie(["answer-visibility","site-audit","gsc-sync","inspect-sitemap","ga-sync","bing-inspect","bing-inspect-sitemap","backlink-extract","traffic-sync","aeo-discover-seed","aeo-discover-probe","gbp-sync","ads-sync"]),Ne=x0.enum,w0=ie(["manual","scheduled","config-apply","backfill","probe"]),Bs=w0.enum,Ai=ie(["cited","not-cited"]),lc=Ai.enum,cc=ie(["visible","not-visible"]);cc.enum;const uc=ie(["mentioned","not-mentioned"]);uc.enum;const j0=ie(["new","cited","lost","emerging","not-cited"]);j0.enum;const xE=ie(["new","mentioned","lost","emerging","not-mentioned"]);xE.enum;const wE=ie([Bs.manual,Bs.probe]);j({kind:qt(Ne["answer-visibility"]).optional(),trigger:wE.optional(),providers:A(ya).optional(),queries:A(p().min(1)).min(1).optional(),location:p().min(1).optional(),allLocations:oe().optional(),noLocation:oe().optional()}).refine(e=>+!!e.location+ +!!e.allLocations+ +!!e.noLocation<=1,{message:'Only one of "location", "allLocations", or "noLocation" may be provided'});const jE=j({message:p(),raw:qn().optional()}),NE=j({message:p().optional(),providers:lt(p(),jE).optional()}),kE=j({id:p(),projectId:p(),kind:x0,status:Ys,trigger:w0.default("manual"),location:p().nullable().optional(),queries:A(p()).nullable().optional(),startedAt:p().nullable().optional(),finishedAt:p().nullable().optional(),error:NE.nullable().optional(),createdAt:p()});function ip(e){if(e.providers){const n=Object.entries(e.providers);if(n.length===1){const[i,r]=n[0];return`${i}: ${r.message}`}if(n.length>1)return n.map(([i,r])=>`${i}: ${r.message}`).join(" • ")}return e.message??"Run failed."}const N0=j({uri:p(),title:p()}),k0=j({id:p(),runId:p(),queryId:p(),query:p().optional(),provider:ya,citationState:Ai,answerMentioned:oe().optional(),visibilityState:cc.optional(),mentionState:uc.optional(),transition:j0.optional(),answerText:p().nullable().optional(),citedDomains:A(p()).default([]),competitorOverlap:A(p()).default([]),recommendedCompetitors:A(p()).default([]),matchedTerms:A(p()).default([]),groundingSources:A(N0).default([]),searchQueries:A(p()).default([]),model:p().nullable().optional(),location:p().nullable().optional(),createdAt:p()});j({snapshots:A(k0),total:v().int().nonnegative()});const AE=j({queryId:p().nullable(),query:p().nullable(),run1State:Ai.nullable(),run2State:Ai.nullable(),run1AnswerMentioned:oe().nullable(),run2AnswerMentioned:oe().nullable(),run1VisibilityState:cc.nullable(),run2VisibilityState:cc.nullable(),run1MentionState:uc.nullable().optional(),run2MentionState:uc.nullable().optional(),changed:oe(),visibilityChanged:oe()});j({run1:p(),run2:p(),diff:A(AE)});const _E=kE.extend({snapshots:A(k0).optional()}),CE=j({totalRuns:v().int().nonnegative(),run:_E.nullable()});j({id:p(),projectId:p().nullable().optional(),actor:p(),action:p(),entityType:p(),entityId:p().nullable().optional(),diff:qn().optional(),createdAt:p()});const zE=ie(["yes","no","unknown","not-mentioned"]),jb=A(p().min(1));j({companyName:p().min(1),domain:p().min(1),queries:jb.optional(),phrases:jb.optional(),competitors:A(p().min(1)).optional().default([])}).superRefine((e,n)=>{e.queries!==void 0&&e.phrases!==void 0&&n.addIssue({code:"custom",message:"Use queries; phrases is accepted only as a legacy alias when queries is omitted",path:["phrases"]})});const TE=j({name:p(),count:v().int().nonnegative()}),EE=j({id:p(),name:p(),weight:v(),score:v(),findings:A(j({type:p(),message:p()})).default([]),recommendations:A(p()).default([])}),OE=j({url:p(),finalUrl:p(),auditedAt:p(),overallScore:v(),summary:p(),factors:A(EE).default([])}),DE=j({industry:p(),summary:p(),services:A(p()).default([]),categoryTerms:A(p()).default([])}),RE=j({provider:p(),displayName:p(),model:p().nullable().optional(),mentioned:oe(),cited:oe(),describedAccurately:zE,accuracyNotes:p().nullable().optional(),incorrectClaims:A(p()).default([]),recommendedCompetitors:A(p()).default([]),citedDomains:A(p()).default([]),groundingSources:A(N0).default([]),searchQueries:A(p()).default([]),answerText:p(),error:p().nullable().optional()}),ME=j({query:p(),providerResults:A(RE).default([])}),BE=j({totalQueries:v().int().nonnegative(),totalProviders:v().int().nonnegative(),totalComparisons:v().int().nonnegative(),mentionCount:v().int().nonnegative(),citationCount:v().int().nonnegative(),topCompetitors:A(TE).default([]),visibilityGap:p(),whatThisMeans:A(p()).default([]),recommendedActions:A(p()).default([])});j({companyName:p(),domain:p(),homepageUrl:p(),generatedAt:p(),queries:A(p()).default([]),competitors:A(p()).default([]),profile:DE,audit:OE,queryResults:A(ME).default([]),summary:BE});const A0=ie(["pass","partial","fail"]);A0.enum;const _0=ie(["up","down","flat"]);_0.enum;const LE=j({id:p(),name:p(),weight:v(),avgScore:v(),status:A0,pagesPassing:v().int().nonnegative(),pagesPartial:v().int().nonnegative(),pagesFailing:v().int().nonnegative()}),qE=j({factorId:p(),factorName:p(),avgScore:v(),affectedPages:v().int().nonnegative(),totalPages:v().int().nonnegative(),affectedPct:v().int().nonnegative(),topRecommendations:A(p()).default([])});j({project:p(),hasData:oe(),runId:p().nullable(),runStatus:Ys.nullable(),sitemapUrl:p().nullable(),auditedAt:p().nullable(),aggregateScore:v(),pagesDiscovered:v().int().nonnegative(),pagesAudited:v().int().nonnegative(),pagesSkipped:v().int().nonnegative(),pagesErrored:v().int().nonnegative(),deltaScore:v().nullable(),trend:_0.nullable(),previousScore:v().nullable(),previousAuditedAt:p().nullable(),factors:A(LE).default([]),crossCuttingIssues:A(qE).default([]),prioritizedFixes:A(p()).default([])});const UE=j({id:p(),name:p(),weight:v(),score:v()}),$E=j({url:p(),overallScore:v(),status:ie(["success","error"]),error:p().nullable().optional(),factors:A(UE).default([])});j({project:p(),runId:p().nullable(),auditedAt:p().nullable(),total:v().int().nonnegative(),pages:A($E).default([])});const IE=j({runId:p(),auditedAt:p(),aggregateScore:v(),pagesAudited:v().int().nonnegative()});j({project:p(),points:A(IE).default([])});j({sitemapUrl:p().url().optional(),limit:v().int().positive().max(2e3).optional()});j({runId:p(),status:Ys});const sp=ie(["answer-visibility","traffic-sync","gbp-sync","data-refresh","backlinks-sync","site-audit","ads-sync"]);sp.enum;j({id:p(),projectId:p(),kind:sp,cronExpr:p(),preset:p().nullable().optional(),timezone:p().default("UTC"),enabled:oe().default(!0),providers:A(ya).default([]),sourceId:p().nullable().optional(),lastRunAt:p().nullable().optional(),nextRunAt:p().nullable().optional(),createdAt:p(),updatedAt:p()});j({kind:sp.optional(),preset:p().optional(),cron:p().optional(),timezone:p().optional().default("UTC"),enabled:oe().optional().default(!0),providers:A(ya).optional().default([]),sourceId:p().optional()}).refine(e=>e.preset&&!e.cron||!e.preset&&e.cron,{message:'Exactly one of "preset" or "cron" must be provided'});const rp=ie(["competitor","directory","social","forum","news","reference","blog","ecommerce","video","academic","other"]);rp.enum;const op=ie(["cited","aspirational","wasted-surface"]),Nb=op.enum;Nb.cited,Nb.aspirational;const xc=ie(["direct-competitor","ota-aggregator","editorial-media","other","unknown"]),VE=xc.enum;VE["direct-competitor"];const wc=ie(["queued","seeding","probing","completed","failed"]);wc.enum;const C0=j({domain:p().min(1),hits:v().int().positive(),competitorType:xc.default("unknown")}),PE=j({id:p(),sessionId:p(),projectId:p(),query:p(),bucket:op.nullable().default(null),citationState:Ai,citedDomains:A(p()).default([]),answerMentioned:oe().nullable().default(null),createdAt:p()}),GE=j({id:p(),projectId:p(),status:wc,icpDescription:p().nullable().optional(),seedProvider:p().nullable().optional(),seedCountRaw:v().int().nullable().optional(),seedCount:v().int().nullable().optional(),dedupThreshold:v().nullable().optional(),probeCount:v().int().nullable().optional(),citedCount:v().int().nullable().default(null),aspirationalCount:v().int().nullable().default(null),wastedCount:v().int().nullable().default(null),competitorMap:A(C0).default([]),warning:p().nullable().optional(),error:p().nullable().optional(),startedAt:p().nullable().optional(),finishedAt:p().nullable().optional(),createdAt:p()});GE.extend({probes:A(PE).default([])});const HE=500;j({icpDescription:p().min(1).optional(),dedupThreshold:v().min(0).max(1).optional(),maxProbes:v().int().positive().max(HE).optional(),locations:A(p().min(1)).optional()});j({buckets:A(op).min(1).optional(),includeCompetitors:oe().optional(),competitorTypes:A(xc).min(1).optional()});j({sessionId:p(),projectId:p(),status:wc,queriesByBucket:j({cited:A(p()),aspirational:A(p()),"wasted-surface":A(p())}),suggestedCompetitors:A(C0)});j({sessionId:p(),projectId:p(),promoted:j({queries:A(p()),competitors:A(p())}),skipped:j({queries:A(p()),competitors:A(p())})});f0([qt("cli"),p().regex(/^discovery:.+$/)]);const QE=j({query:p().min(1),probeHits:v().int().positive()}),KE=j({rawCandidates:v().int().nonnegative(),admitted:v().int().nonnegative(),rejected:j({belowFloor:v().int().nonnegative(),length:v().int().nonnegative(),navigational:v().int().nonnegative(),duplicate:v().int().nonnegative(),offAnchor:v().int().nonnegative(),semanticDuplicate:v().int().nonnegative()})});j({sessionId:p(),projectId:p(),provider:p(),status:wc,minProbeHits:v().int().positive(),anchorApplied:oe(),semanticNoveltyApplied:oe(),candidates:A(QE),stats:KE});const lp=ie(["own","direct-competitor","ota-aggregator","editorial-media","other"]);lp.enum;const z0=ie(["7d","30d","90d","all"]),kb=ie(["improving","declining","stable"]),ZE=ie(["mentioned","cited"]);ZE.enum;const Cf=j({citationRate:v(),cited:v().int(),total:v().int(),mentionRate:v(),mentionedCount:v().int()}),YE=j({startDate:p(),endDate:p(),citationRate:v(),cited:v().int(),total:v().int(),queryCount:v().int(),mentionRate:v(),mentionedCount:v().int(),byProvider:lt(p(),Cf)}),XE=j({date:p(),delta:v().int(),label:p()});j({window:z0,buckets:A(YE),overall:Cf,byProvider:lt(p(),Cf),trend:kb,mentionTrend:kb,queryChanges:A(XE)});const Ab=j({category:rp,label:p(),count:v().int(),percentage:v(),topDomains:A(j({domain:p(),count:v().int()}))}),JE=j({domain:p(),count:v().int(),percentage:v(),category:rp,label:p(),surfaceClass:lp}),FE=j({surfaceClass:lp,label:p(),count:v().int(),percentage:v(),domainCount:v().int()}),_b=j({totalCitedSlots:v().int(),domainTotal:v().int(),entries:A(JE),truncatedDomainCount:v().int(),truncatedCitedSlots:v().int(),bySurfaceClass:A(FE)});j({overall:A(Ab),byQuery:lt(p(),A(Ab)),ranked:_b,byProvider:lt(p(),_b),runId:p(),window:z0,limit:v().int().nullable()});const cp=j({total:v().int(),checked:v().int(),mentioned:v().int(),cited:v().int(),mentionRate:v().nullable(),citedRate:v().nullable()}),T0=cp.extend({provider:p(),firstObserved:p(),lastObserved:p()}),WE=cp.extend({queryId:p().nullable(),query:p(),firstObserved:p(),lastObserved:p(),providers:A(T0).optional()}),eO=j({since:p().nullable(),until:p().nullable(),lastRuns:v().int().nullable(),runCount:v().int()}),tO=ie(["provider"]);j({project:p(),groupBy:tO.optional(),window:eO,totals:cp,byProvider:A(T0).optional(),queries:A(WE)});j({id:p(),projectId:p(),propertyId:p(),clientEmail:p(),connected:oe(),createdAt:p(),updatedAt:p()});j({date:p(),landingPage:p(),sessions:v(),organicSessions:v(),users:v()});const up=ie(["session","first_user","manual_utm"]),nO=j({source:p(),medium:p(),sessions:v(),users:v(),sourceDimension:up}),aO=j({source:p(),medium:p(),sourceDimension:up,landingPage:p(),sessions:v(),users:v()}),iO=j({source:p(),medium:p(),sessions:v(),users:v(),channelGroup:p()}),Fr=j({sessions:v(),sharePct:v(),sharePctDisplay:p()}),sO=j({organic:Fr,social:Fr,direct:Fr,ai:Fr,other:Fr});j({totalSessions:v(),totalOrganicSessions:v(),totalDirectSessions:v(),totalUsers:v(),topPages:A(j({landingPage:p(),sessions:v(),organicSessions:v(),directSessions:v(),users:v()})),aiReferrals:A(nO),aiReferralLandingPages:A(aO),aiSessionsDeduped:v(),aiUsersDeduped:v(),aiSessionsBySession:v(),aiUsersBySession:v(),socialReferrals:A(iO),socialSessions:v(),socialUsers:v(),channelBreakdown:sO,organicSharePct:v(),aiSharePct:v(),aiSharePctBySession:v(),directSharePct:v(),socialSharePct:v(),organicSharePctDisplay:p(),aiSharePctDisplay:p(),aiSharePctBySessionDisplay:p(),directSharePctDisplay:p(),socialSharePctDisplay:p(),otherSessions:v(),otherSharePct:v(),otherSharePctDisplay:p(),lastSyncedAt:p().nullable()});j({connected:oe(),propertyId:p().nullable(),clientEmail:p().nullable(),authMethod:ie(["service-account","oauth"]).nullable(),lastSyncedAt:p().nullable(),createdAt:p().nullable().optional(),updatedAt:p().nullable().optional()});j({synced:oe(),rowCount:v().int().nonnegative(),aiReferralCount:v().int().nonnegative(),socialReferralCount:v().int().nonnegative(),days:v().int().nonnegative(),syncedAt:p(),syncedComponents:A(p()).optional()});j({date:p(),source:p(),medium:p(),landingPage:p(),sessions:v(),users:v(),sourceDimension:up});j({date:p(),source:p(),medium:p(),sessions:v(),users:v(),channelGroup:p()});j({date:p(),sessions:v(),organicSessions:v(),users:v()});function dc(e){return e.toLowerCase().replace(/[^a-z0-9]/g,"")}const E0=ie(["claude","openai","gemini","zai"]),rO=j({id:E0,label:p(),defaultModel:p(),configured:oe(),keySource:ie(["config","env"]).nullable()});j({providers:A(rO).default([]),defaultProvider:E0.nullable()});const oO=ie(["aero","user","compaction"]);oO.enum;const O0=128;j({key:p().min(1).max(O0),value:p().min(1)});j({key:p().min(1).max(O0)});const Xs=ie(["commoncrawl","bing-webmaster"]);Xs.enum;const dp=ie(["queued","downloading","querying","ready","failed"]);dp.enum;j({id:p(),release:p(),status:dp,phaseDetail:p().nullable().optional(),vertexPath:p().nullable().optional(),edgesPath:p().nullable().optional(),vertexSha256:p().nullable().optional(),edgesSha256:p().nullable().optional(),vertexBytes:v().int().nullable().optional(),edgesBytes:v().int().nullable().optional(),projectsProcessed:v().int().nullable().optional(),domainsDiscovered:v().int().nullable().optional(),downloadStartedAt:p().nullable().optional(),downloadFinishedAt:p().nullable().optional(),queryStartedAt:p().nullable().optional(),queryFinishedAt:p().nullable().optional(),error:p().nullable().optional(),createdAt:p(),updatedAt:p()});const lO=j({linkingDomain:p(),numHosts:v().int(),source:Xs}),cO=j({projectId:p(),release:p(),targetDomain:p(),totalLinkingDomains:v().int(),totalHosts:v().int(),top10HostsShare:p(),queriedAt:p(),source:Xs,excludedLinkingDomains:v().int().optional(),excludedHosts:v().int().optional()});j({source:Xs,summary:cO.nullable(),total:v().int(),rows:A(lO)});j({release:p(),totalLinkingDomains:v().int(),totalHosts:v().int(),top10HostsShare:p(),queriedAt:p(),source:Xs});const uO=j({source:Xs,connected:oe(),hasData:oe(),latestRelease:p().nullable(),totalLinkingDomains:v().int(),lastSyncedAt:p().nullable()});j({projectId:p(),targetDomain:p(),sources:A(uO),anyConnected:oe(),anyData:oe()});j({duckdbInstalled:oe(),duckdbVersion:p().nullable().optional(),duckdbSpec:p(),pluginDir:p()});j({installed:oe(),version:p(),path:p(),alreadyPresent:oe()});j({release:p(),vertexUrl:p(),edgesUrl:p(),vertexBytes:v().int().nullable(),edgesBytes:v().int().nullable(),lastModified:p().nullable()});j({release:p(),syncStatus:dp.nullable(),bytes:v().int(),lastUsedAt:p().nullable()});const fp=ie(["positive","caution","negative","neutral"]),Qa=j({label:p(),value:p(),delta:p(),tone:fp,description:p(),tooltip:p().optional(),trend:A(v()),progress:v().optional(),providerCoverage:p().optional()}),dO=Qa.extend({breakdown:j({projectMentionSnapshots:v().int().nonnegative(),competitorMentionSnapshots:v().int().nonnegative(),perCompetitor:A(j({domain:p(),mentionSnapshots:v().int().nonnegative(),shareOfCompetitiveTotal:v()})),snapshotsWithAnswerText:v().int().nonnegative(),snapshotsTotal:v().int().nonnegative()})}),of=j({gained:v().int().nonnegative(),lost:v().int().nonnegative(),tone:fp,hasPreviousRun:oe(),gainedQueries:A(p()).optional(),lostQueries:A(p()).optional()}),fO=j({hasPreviousRun:oe(),comparable:oe(),querySetChanged:oe(),previousRunAt:p().nullable(),currentQueryCount:v().int().nonnegative(),previousQueryCount:v().int().nonnegative(),comparableQueryCount:v().int().nonnegative(),addedQueryCount:v().int().nonnegative(),removedQueryCount:v().int().nonnegative(),addedQueries:A(p()),removedQueries:A(p())}),pO=j({id:p(),projectId:p(),runId:p().nullable(),type:ie(["regression","gain","opportunity","first-citation","provider-pickup","persistent-gap","competitor-gained","competitor-lost","gbp-lodging-gap","gbp-listing-discrepancy","gbp-cta-gap","gbp-metric-drop","gbp-keyword-drop"]),severity:ie(["critical","high","medium","low"]),title:p(),query:p(),provider:p(),recommendation:j({action:p(),target:p().optional(),reason:p()}).optional(),cause:j({cause:p(),competitorDomain:p().optional(),details:p().optional()}).optional(),dismissed:oe(),createdAt:p()}),mO=j({id:p(),projectId:p(),runId:p().nullable(),overallCitedRate:v(),overallMentionRate:v(),totalPairs:v().int().nonnegative(),citedPairs:v().int().nonnegative(),mentionedPairs:v().int().nonnegative(),providerBreakdown:lt(p(),j({citedRate:v(),mentionRate:v(),cited:v().int().nonnegative(),mentioned:v().int().nonnegative(),total:v().int().nonnegative()})),createdAt:p(),status:ie(["ready","no-data"]),reason:qt("no-runs-yet").optional()});j({project:MT,latestRun:CE,health:mO.nullable(),topInsights:A(pO),queryCounts:j({totalQueries:v().int().nonnegative(),citedQueries:v().int().nonnegative(),notCitedQueries:v().int().nonnegative(),citedRate:v(),mentionedQueries:v().int().nonnegative(),notMentionedQueries:v().int().nonnegative(),mentionRate:v()}),providers:A(j({provider:p(),citedRate:v(),cited:v().int().nonnegative(),total:v().int().nonnegative()})),transitions:j({since:p().nullable(),gained:v().int().nonnegative(),lost:v().int().nonnegative(),emerging:v().int().nonnegative()}),scores:j({mention:Qa,visibility:Qa,mentionShare:dO,gapQueries:Qa,mentionGaps:Qa,indexCoverage:Qa,competitorPressure:Qa,runStatus:Qa}),movementSummary:of,citationMovement:of,mentionMovement:of,movementComparison:fO,competitors:A(j({id:p(),domain:p(),citationCount:v().int().nonnegative(),totalQueries:v().int().nonnegative(),pressureLabel:ie(["None","Low","Moderate","High"]),citedQueries:A(p())})),providerScores:A(j({provider:p(),model:p().nullable(),score:v(),cited:v().int().nonnegative(),total:v().int().nonnegative(),trend:A(v()).optional()})),attentionItems:A(j({id:p(),tone:fp,title:p(),detail:p(),actionLabel:p(),href:p()})),runHistory:A(j({runId:p(),createdAt:p(),citedCount:v().int().nonnegative(),totalCount:v().int().nonnegative(),citationRate:v(),mentionedCount:v().int().nonnegative(),mentionRate:v(),status:p()})),suggestedQueries:j({rows:A(j({query:p(),impressions:v(),clicks:v(),avgPosition:v(),reason:p()})),totalCandidates:v().int().nonnegative(),skippedAlreadyTracked:v().int().nonnegative()}),dateRangeLabel:p(),contextLabel:p()});ie(["snapshot","insight"]);const hO=j({kind:qt("snapshot"),id:p(),runId:p(),query:p(),provider:p(),model:p().nullable(),citationState:Ai,matchedField:ie(["answerText","citedDomains","searchQueries","query"]),snippet:p(),createdAt:p()}),gO=j({kind:qt("insight"),id:p(),runId:p().nullable(),type:ie(["regression","gain","opportunity","first-citation","provider-pickup","persistent-gap","competitor-gained","competitor-lost","gbp-lodging-gap","gbp-listing-discrepancy","gbp-cta-gap","gbp-metric-drop","gbp-keyword-drop"]),severity:ie(["critical","high","medium","low"]),title:p(),query:p(),provider:p(),matchedField:ie(["title","query","recommendation","cause"]),snippet:p(),dismissed:oe(),createdAt:p()}),yO=p0("kind",[hO,gO]);j({query:p(),totalHits:v().int().nonnegative(),truncated:oe(),hits:A(yO)});const D0=ie(["create","expand","refresh","add-schema"]);D0.enum;function bL(e){switch(e){case"create":return"Create";case"expand":return"Expand";case"refresh":return"Refresh";case"add-schema":return"Add schema"}}const R0=ie(["gsc","competitor-evidence","both"]);R0.enum;const M0=ie(["high","medium","low"]);M0.enum;const bO=ie(["blog-post","comparison","listicle","how-to","guide","glossary"]);bO.enum;const B0=ie(["proposed","briefed","payload-generated","draft-created","published","validated","dismissed"]);B0.enum;const pp=ie(["ownable","ceded"]);pp.enum;const vO=j({url:p(),gscImpressions:v().nonnegative(),gscClicks:v().nonnegative(),gscAvgPosition:v().nonnegative().nullable(),organicSessions:v().nonnegative()}),SO=j({domain:p(),url:p(),title:p(),citationCount:v().int().nonnegative()}),xO=j({demand:v(),competitor:v(),absence:v(),gapSeverity:v()}),wO=j({actionId:p(),state:B0,lastUpdated:p()}),L0=j({targetRef:p(),query:p(),action:D0,ourBestPage:vO.nullable(),winningCompetitor:SO.nullable(),score:v(),scoreBreakdown:xO,drivers:A(p()),demandSource:R0,actionConfidence:M0,existingAction:wO.nullable(),winnabilityClass:pp,winnability:v().min(0).max(1).nullable()});j({targets:A(L0),contextMetrics:j({totalAiReferralSessions:v().int().nonnegative(),latestRunId:p(),runTimestamp:p()})});const jO=j({targetRef:p(),addressedUrl:p().nullable(),note:p().nullable(),dismissedAt:p()});j({dismissals:A(jO)});j({targetRef:p().min(1),addressedUrl:p().url().optional(),note:p().max(500).optional()});j({targetRef:p(),promptVersion:p(),provider:p(),model:p(),responseText:p(),costMillicents:v().int().nonnegative(),generatedAt:p()});j({provider:p().optional(),model:p().optional(),forceRefresh:oe().optional()});const NO=j({targetQuery:p().trim().min(1),winnabilityClass:pp,angle:p().trim().min(1),whyWinnable:p().trim().min(1),schemaHookup:p().trim().min(1),controllableSurfaceRationale:p().trim().min(1)});j({targetRef:p(),promptVersion:p(),provider:p(),model:p(),brief:NO,costMillicents:v().int().nonnegative(),generatedAt:p()});const kO=j({domain:p(),competitorType:xc,hits:v().int().nonnegative(),updatedAt:p()});j({classifications:A(kO)});const AO=j({uri:p(),title:p(),domain:p(),isOurDomain:oe(),isCompetitor:oe(),citationCount:v().int().nonnegative(),providers:A(ya)}),q0=j({query:p(),groundingSources:A(AO)});j({sources:A(q0),latestRunId:p()});const U0=j({query:p(),competitorDomains:A(p()),competitorCount:v().int().nonnegative(),missRate:v().min(0).max(1),lastSeenInRunId:p()});j({gaps:A(U0),latestRunId:p()});const $0=ie(["ok","warn","fail","skipped"]);$0.enum;const mp=ie(["global","project"]);mp.enum;const I0=ie(["auth","config","providers","integrations","database","schedules","agent"]);I0.enum;const _O=j({id:p(),category:I0,scope:mp,title:p(),status:$0,code:p().describe('Stable machine-readable code (e.g. "google.token.refresh-failed"). Use this for filtering and remediation logic.'),summary:p(),remediation:p().nullable().optional().describe('Operator-facing next step. Null when status is "ok" or no specific remediation applies.'),details:lt(p(),qn()).optional().describe("Structured context — principal email, redirect URI, missing scopes, etc. Stable per check id."),durationMs:v().int().nonnegative().describe("How long the check took to execute.")});j({scope:mp,project:p().nullable().describe('Project name when scope is "project", null otherwise.'),generatedAt:p().describe("ISO-8601 timestamp when this doctor run started."),durationMs:v().int().nonnegative(),summary:j({total:v().int().nonnegative(),ok:v().int().nonnegative(),warn:v().int().nonnegative(),fail:v().int().nonnegative(),skipped:v().int().nonnegative()}),checks:A(_O)});const CO=j({provider:p(),citationState:Ai,cited:oe(),mentioned:oe(),runId:p(),runCreatedAt:p()}),zO=j({queryId:p(),query:p(),providers:A(CO),citedCount:v().int().nonnegative(),mentionedCount:v().int().nonnegative(),totalProviders:v().int().nonnegative()}),TO=j({queryId:p(),query:p(),provider:p(),citingCompetitors:A(p()),runId:p(),runCreatedAt:p()}),EO=j({providersConfigured:v().int().nonnegative(),providersCiting:v().int().nonnegative(),providersMentioning:v().int().nonnegative(),totalQueries:v().int().nonnegative(),queriesCitedAndMentioned:v().int().nonnegative(),queriesCitedOnly:v().int().nonnegative(),queriesMentionedOnly:v().int().nonnegative(),queriesInvisible:v().int().nonnegative(),latestRunId:p().nullable(),latestRunAt:p().nullable()});j({summary:EO,byQuery:A(zO),competitorGaps:A(TO),status:ie(["ready","no-data"]),reason:ie(["no-runs-yet","no-queries"]).optional()});const OO=ie(["prompt","request-param","browser-geo","ignored"]),DO=j({label:p(),city:p(),region:p(),country:p(),otherConfiguredLabels:A(p())}),RO=j({provider:p(),treatment:OO,description:p()}),MO=j({generatedAt:p(),project:j({id:p(),name:p(),displayName:p(),canonicalDomain:p(),country:p(),language:p()}),location:DO.nullable(),providerLocationHandling:A(RO),periodStart:p().nullable(),periodEnd:p().nullable()}),BO=j({citationRate:v(),citedQueryCount:v(),totalQueryCount:v(),mentionRate:v(),mentionedQueryCount:v(),trend:ie(["up","down","flat","unknown"]),queryCount:v(),competitorCount:v(),providerCount:v(),gsc:j({clicks:v(),impressions:v(),ctr:v(),avgPosition:v(),periodStart:p(),periodEnd:p()}).nullable(),ga:j({sessions:v(),users:v(),periodStart:p(),periodEnd:p()}).nullable(),findings:A(j({title:p(),detail:p(),tone:ie(["positive","caution","negative","neutral"])}))}),LO=j({citationState:ie(["cited","not-cited","pending"]),answerMentioned:oe().nullable(),model:p().nullable()}),qO=j({queries:A(p()),providers:A(p()),matrix:A(A(LO.nullable())),providerRates:A(j({provider:p(),citedCount:v(),totalCount:v(),citationRate:v()}))}),UO=j({domain:p(),citationCount:v(),totalCount:v(),pressureLabel:ie(["High","Moderate","Low","None"]),citedQueries:A(p()),sharePct:v(),theirCitedPages:A(j({url:p(),citedFor:A(p())}))}),$O=j({projectCitationCount:v(),competitors:A(UO)}),IO=j({domain:p(),mentionCount:v(),totalCount:v(),pressureLabel:ie(["High","Moderate","Low","None"]),mentionedQueries:A(p()),sharePct:v()}),VO=j({projectMentionCount:v(),totalAnswerSnapshots:v(),competitors:A(IO)}),PO=j({category:p(),label:p(),count:v(),sharePct:v()}),GO=j({categories:A(PO),topDomains:A(j({domain:p(),count:v(),isCompetitor:oe()}))}),HO=j({query:p(),clicks:v(),impressions:v(),ctr:v(),avgPosition:v(),category:ie(["brand","lead-gen","industry","other"])}),QO=j({periodStart:p(),periodEnd:p(),totalClicks:v(),totalImpressions:v(),ctr:v(),avgPosition:v(),topQueries:A(HO),categoryBreakdown:A(j({category:ie(["brand","lead-gen","industry","other"]),clicks:v(),impressions:v(),sharePct:v()})),trend:A(j({date:p(),clicks:v(),impressions:v()})),trackedButNoGsc:A(p()),gscButNotTracked:A(p())}),KO=j({totalSessions:v(),totalUsers:v(),totalOrganicSessions:v(),periodStart:p(),periodEnd:p(),topLandingPages:A(j({page:p(),sessions:v(),users:v(),organicSessions:v()})),channelBreakdown:A(j({channel:p(),sessions:v(),sharePct:v()}))}),ZO=j({totalSessions:v(),organicSessions:v(),paidSessions:v(),channels:A(j({channelGroup:p(),sessions:v(),sharePct:v()})),topCampaigns:A(j({source:p(),medium:p(),sessions:v()}))}),YO=j({totalSessions:v(),totalUsers:v(),bySource:A(j({source:p(),sessions:v(),users:v(),sharePct:v()})),trend:A(j({date:p(),sessions:v()})),topLandingPages:A(j({page:p(),sessions:v(),users:v()}))}),XO=j({windowStart:p(),windowEnd:p(),hasData:oe(),verifiedCrawlerHits:j({current:v(),prior:v(),deltaPct:v().nullable()}),unverifiedCrawlerHits:j({current:v(),prior:v(),deltaPct:v().nullable()}),aiUserFetchHits:j({current:v(),prior:v(),deltaPct:v().nullable()}),referralArrivals:j({current:v(),prior:v(),deltaPct:v().nullable()}),byOperator:A(j({operator:p(),verifiedHits:v(),unverifiedHits:v(),userFetchHits:v(),referralArrivals:v(),deltaPct:v().nullable()})),topCrawledPaths:A(j({path:p(),verifiedHits:v(),distinctOperators:v()})),referralProducts:A(j({product:p(),arrivals:v(),distinctLandingPaths:v()})),dailyTrend:A(j({date:p(),verifiedCrawlerHits:v(),userFetchHits:v(),referralArrivals:v()})),topReferralLandingPaths:A(j({path:p(),arrivals:v(),distinctProducts:v()}))}),JO=j({provider:ie(["google","bing"]).nullable(),total:v(),indexed:v(),notIndexed:v(),deindexed:v(),unknown:v(),indexedPct:v()}),FO=j({runId:p(),date:p(),citationRate:v(),citedQueryCount:v(),totalQueryCount:v(),mentionRate:v(),mentionedQueryCount:v(),providerRates:A(j({provider:p(),citationRate:v()}))}),zf=j({id:p(),type:ie(["regression","gain","opportunity"]),severity:ie(["critical","high","medium","low"]),title:p(),query:p(),provider:p(),recommendation:p().nullable(),createdAt:p(),instanceCount:v()}),WO=j({horizon:ie(["immediate","short-term","medium-term"]),title:p(),rationale:p()}),Wr=j({current:v(),prior:v(),deltaAbs:v(),direction:ie(["up","down","flat"]),window:v().optional()}),e4=j({provider:p(),current:v(),prior:v(),deltaAbs:v(),direction:ie(["up","down","flat"])}),t4=j({enoughHistory:oe(),headline:p(),citationRate:Wr.nullable(),mentionRate:Wr.nullable(),citedQueryCount:Wr.nullable(),gscClicksDelta:Wr.nullable(),aiReferralsDelta:Wr.nullable(),providerMovements:A(e4),wins:A(zf),regressions:A(zf)});ie(["agency","client"]);const n4=ie(["agency","client","both"]),a4=ie(["immediate","short-term","medium-term"]),i4=ie(["high","medium","low"]);ie(["positive","caution","negative","neutral"]);const s4=ie(["content","competitors","provider","search-demand","indexing","location","monitoring"]),hp=j({audience:n4,priority:v(),horizon:a4,category:s4,title:p(),action:p(),why:A(p()),evidence:A(p()),successMetric:p(),confidence:i4,targetRef:p().optional()}),r4=j({headline:p(),overview:p(),actionItems:A(hp),confidenceNotes:A(p())}),o4=j({title:p(),detail:p(),severity:ie(["positive","caution","negative","neutral"]),evidence:A(p())}),l4=j({priorities:A(hp),diagnostics:A(o4)});function vL(e){return e.horizon==="immediate"?"negative":e.confidence==="high"?"caution":e.confidence==="low"?"neutral":"caution"}function SL(e){switch(e){case"critical":return"Critical";case"high":return"High";case"medium":return"Medium";case"low":return"Low"}}function xL(e){switch(e){case"immediate":return"Immediate";case"short-term":return"Short term";case"medium-term":return"Medium term"}}function wL(e){switch(e){case"content":return"Content";case"competitors":return"Competitors";case"provider":return"Provider";case"search-demand":return"Search demand";case"indexing":return"Indexing";case"location":return"Location";case"monitoring":return"Monitoring"}}function jL(e){switch(e){case"high":return"High";case"medium":return"Medium";case"low":return"Low"}}j({meta:MO,executiveSummary:BO,citationScorecard:qO,competitorLandscape:$O,mentionLandscape:VO,aiSourceOrigin:GO,gsc:QO.nullable(),ga:KO.nullable(),socialReferrals:ZO.nullable(),aiReferrals:YO.nullable(),serverActivity:XO.nullable(),indexingHealth:JO.nullable(),citationsTrend:A(FO),whatsChanged:t4,insights:A(zf),recommendedNextSteps:A(WO),actionPlan:A(hp),clientSummary:r4,agencyDiagnostics:l4,contentOpportunities:A(L0),contentGaps:A(U0),groundingSources:A(q0)});const c4=ie(["claude","codex"]);c4.enum;const u4=ie(["claude","codex","all"]);u4.enum;const V0=j({content:v().int().nonnegative(),sitemap:v().int().nonnegative(),robots:v().int().nonnegative(),asset:v().int().nonnegative(),other:v().int().nonnegative()}),d4=ie(["content","sitemap","robots","asset","other"]),gp=ie(["cloud-run","wordpress","cloudflare","vercel","generic-log"]);gp.enum;const f4=ie(["raw-request-events","aggregate-request-metrics","request-url","status-code","user-agent","remote-ip","referer","cursor-pull"]);f4.enum;const p4=ie(["raw-request","aggregate-bucket"]),m4=p4.enum,h4=ie(["observed","provider-aggregated","inferred"]),g4=h4.enum,y4=j({type:p().nullable(),labels:lt(p(),p())}),b4=j({sourceType:gp,evidenceKind:qt(m4["raw-request"]),confidence:qt(g4.observed),eventId:p().min(1),observedAt:p().min(1),method:p().nullable(),requestUrl:p().nullable(),host:p().nullable(),path:p().min(1),queryString:p().nullable(),status:v().int().nullable(),userAgent:p().nullable(),remoteIp:p().nullable(),referer:p().nullable(),latencyMs:v().nullable(),requestSizeBytes:v().int().nullable(),responseSizeBytes:v().int().nullable(),providerResource:y4,providerLabels:lt(p(),p())});j({events:A(b4),rawEntryCount:v().int().nonnegative(),skippedEntryCount:v().int().nonnegative(),nextPageToken:p().optional(),filter:p()});const P0=ie(["connected","paused","error","archived"]),NL=P0.enum,G0=ie(["oauth","service-account"]);G0.enum;const v4=ie(["verified","claimed_unverified","unknown_ai_like"]),kL=v4.enum;j({gcpProjectId:p().min(1),serviceName:p().nullable().optional(),location:p().nullable().optional(),authMode:G0});j({baseUrl:p().url(),username:p().min(1)});const yp=ie(["production","preview"]);yp.enum;j({projectId:p().min(1),teamId:p().min(1),environment:yp});const H0=j({id:p(),projectId:p(),sourceType:gp,displayName:p(),status:P0,lastSyncedAt:p().nullable(),lastCursor:p().nullable(),lastError:p().nullable(),archivedAt:p().nullable(),config:lt(p(),qn()),createdAt:p(),updatedAt:p()});j({gcpProjectId:p().min(1),serviceName:p().min(1).optional(),location:p().min(1).optional(),displayName:p().min(1).optional(),keyJson:p().optional()});j({baseUrl:p().url(),username:p().min(1),applicationPassword:p().min(1),displayName:p().min(1).optional()});j({projectId:p().min(1),teamId:p().min(1),token:p().min(1),environment:yp.optional(),displayName:p().min(1).optional()});j({sourceId:p(),runId:p(),syncedAt:p(),pulledEvents:v().int().nonnegative(),selfTrafficExcluded:v().int().nonnegative(),crawlerHits:v().int().nonnegative(),aiUserFetchHits:v().int().nonnegative(),aiReferralHits:v().int().nonnegative(),unknownHits:v().int().nonnegative(),crawlerBucketRows:v().int().nonnegative(),aiUserFetchBucketRows:v().int().nonnegative(),aiReferralBucketRows:v().int().nonnegative(),sampleRows:v().int().nonnegative(),windowStart:p(),windowEnd:p()});j({days:v().int().positive().optional()});j({advanceToNow:qt(!0)});j({sourceId:p(),runId:p(),status:Ys,windowStart:p(),windowEnd:p(),daysRequested:v().int().positive(),daysApplied:v().int().positive()});const S4=j({crawlerHits:v().int().nonnegative(),crawlerContentHits:v().int().nonnegative(),crawlerInfraHits:v().int().nonnegative(),crawlerSegments:V0,aiUserFetchHits:v().int().nonnegative(),aiReferralHits:v().int().nonnegative(),sampleCount:v().int().nonnegative()});j({sources:A(H0)});const x4=H0.extend({totals24h:S4,latestRun:j({runId:p(),status:Ys,startedAt:p().nullable(),finishedAt:p().nullable(),error:p().nullable()}).nullable()});j({sources:A(x4)});const w4=ie(["crawler","ai-user-fetch","ai-referral"]),bp=w4.enum,j4=j({kind:qt(bp.crawler),sourceId:p(),tsHour:p(),botId:p(),operator:p(),verificationStatus:p(),pathNormalized:p(),pathClass:d4,status:v().int(),hits:v().int().nonnegative()}),N4=j({kind:qt(bp["ai-user-fetch"]),sourceId:p(),tsHour:p(),botId:p(),operator:p(),verificationStatus:p(),pathNormalized:p(),status:v().int(),hits:v().int().nonnegative()}),k4=j({kind:qt(bp["ai-referral"]),sourceId:p(),tsHour:p(),product:p(),operator:p(),sourceDomain:p(),evidenceType:p(),landingPathNormalized:p(),status:v().int(),hits:v().int().nonnegative()}),A4=p0("kind",[j4,N4,k4]);j({windowStart:p(),windowEnd:p(),totals:j({crawlerHits:v().int().nonnegative(),crawlerContentHits:v().int().nonnegative(),crawlerInfraHits:v().int().nonnegative(),crawlerSegments:V0,aiUserFetchHits:v().int().nonnegative(),aiReferralHits:v().int().nonnegative()}),events:A(A4)});j({apiKey:p().min(1)});j({connected:oe(),adAccountId:p().nullable().optional(),displayName:p().nullable().optional(),currencyCode:p().nullable().optional(),timezone:p().nullable().optional(),status:p().nullable().optional(),lastSyncedAt:p().nullable().optional()});j({disconnected:oe()});j({runId:p(),status:p()});const _4=j({type:p().nullable().optional(),title:p().nullable().optional(),body:p().nullable().optional(),targetUrl:p().nullable().optional()}),C4=j({id:p(),adGroupId:p(),name:p(),status:p(),reviewStatus:p().nullable().optional(),creative:_4.nullable().optional()}),z4=j({id:p(),campaignId:p(),name:p(),status:p(),billingEventType:p().nullable().optional(),maxBidMicros:v().int().nullable().optional(),contextHints:A(p()).default([]),ads:A(C4).default([])}),T4=j({id:p(),name:p(),status:p(),biddingType:p().nullable().optional(),dailySpendLimitMicros:v().int().nullable().optional(),lifetimeSpendLimitMicros:v().int().nullable().optional(),adGroups:A(z4).default([])});j({campaigns:A(T4)});const Q0=ie(["campaign","ad_group"]);Q0.enum;const E4=j({level:Q0,entityId:p(),date:p(),impressions:v().int(),clicks:v().int(),spendMicros:v().int(),ctr:v().nullable(),cpcMicros:v().int().nullable()});j({rows:A(E4),currencyCode:p().nullable().optional()});const O4=j({impressions:v().int(),clicks:v().int(),spendMicros:v().int(),ctr:v().nullable(),cpcMicros:v().int().nullable()});j({connected:oe(),displayName:p().nullable().optional(),currencyCode:p().nullable().optional(),lastSyncedAt:p().nullable().optional(),campaignCount:v().int(),adGroupCount:v().int(),adCount:v().int(),window:j({from:p().nullable(),to:p().nullable()}),totals:O4});var D4=(e=>(e.Clicks="clicks",e.Impressions="impressions",e.CTR="ctr",e.Position="position",e))(D4||{});const AL={clicks:"Clicks",impressions:"Impressions",ctr:"CTR",position:"Position"},_L={clicks:"Clicks",impressions:"Impr",ctr:"CTR",position:"Pos"},CL=ip;function R4(e){const n=[];if(e.message&&n.push(e.message),e.providers)for(const[i,r]of Object.entries(e.providers)){const l=`[${i}] ${r.message}`;r.raw!==void 0?n.push(`${l}
|
|
52
|
+
Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(const d of e.seen.entries()){const h=d[1];if(n===d[0]){c(d);continue}if(e.external){const b=e.external.registry.get(d[0])?.id;if(n!==d[0]&&b){c(d);continue}}if(e.metadataRegistry.get(d[0])?.id){c(d);continue}if(h.cycle){c(d);continue}if(h.count>1&&e.reused==="ref"){c(d);continue}}}function o0(e,n){const i=e.seen.get(n);if(!i)throw new Error("Unprocessed schema. This is a bug in Zod.");const r=d=>{const h=e.seen.get(d);if(h.ref===null)return;const g=h.def??h.schema,b={...g},S=h.ref;if(h.ref=null,S){r(S);const N=e.seen.get(S),_=N.schema;if(_.$ref&&(e.target==="draft-07"||e.target==="draft-04"||e.target==="openapi-3.0")?(g.allOf=g.allOf??[],g.allOf.push(_)):Object.assign(g,_),Object.assign(g,b),d._zod.parent===S)for(const k in g)k==="$ref"||k==="allOf"||k in b||delete g[k];if(_.$ref&&N.def)for(const k in g)k==="$ref"||k==="allOf"||k in N.def&&JSON.stringify(g[k])===JSON.stringify(N.def[k])&&delete g[k]}const x=d._zod.parent;if(x&&x!==S){r(x);const N=e.seen.get(x);if(N?.schema.$ref&&(g.$ref=N.schema.$ref,N.def))for(const _ in g)_==="$ref"||_==="allOf"||_ in N.def&&JSON.stringify(g[_])===JSON.stringify(N.def[_])&&delete g[_]}e.override({zodSchema:d,jsonSchema:g,path:h.path??[]})};for(const d of[...e.seen.entries()].reverse())r(d[0]);const l={};if(e.target==="draft-2020-12"?l.$schema="https://json-schema.org/draft/2020-12/schema":e.target==="draft-07"?l.$schema="http://json-schema.org/draft-07/schema#":e.target==="draft-04"?l.$schema="http://json-schema.org/draft-04/schema#":e.target,e.external?.uri){const d=e.external.registry.get(n)?.id;if(!d)throw new Error("Schema is missing an `id` property");l.$id=e.external.uri(d)}Object.assign(l,i.def??i.schema);const c=e.external?.defs??{};for(const d of e.seen.entries()){const h=d[1];h.def&&h.defId&&(c[h.defId]=h.def)}e.external||Object.keys(c).length>0&&(e.target==="draft-2020-12"?l.$defs=c:l.definitions=c);try{const d=JSON.parse(JSON.stringify(l));return Object.defineProperty(d,"~standard",{value:{...n["~standard"],jsonSchema:{input:rc(n,"input",e.processors),output:rc(n,"output",e.processors)}},enumerable:!1,writable:!1}),d}catch{throw new Error("Error converting schema to JSON.")}}function Pt(e,n){const i=n??{seen:new Set};if(i.seen.has(e))return!1;i.seen.add(e);const r=e._zod.def;if(r.type==="transform")return!0;if(r.type==="array")return Pt(r.element,i);if(r.type==="set")return Pt(r.valueType,i);if(r.type==="lazy")return Pt(r.getter(),i);if(r.type==="promise"||r.type==="optional"||r.type==="nonoptional"||r.type==="nullable"||r.type==="readonly"||r.type==="default"||r.type==="prefault")return Pt(r.innerType,i);if(r.type==="intersection")return Pt(r.left,i)||Pt(r.right,i);if(r.type==="record"||r.type==="map")return Pt(r.keyType,i)||Pt(r.valueType,i);if(r.type==="pipe")return Pt(r.in,i)||Pt(r.out,i);if(r.type==="object"){for(const l in r.shape)if(Pt(r.shape[l],i))return!0;return!1}if(r.type==="union"){for(const l of r.options)if(Pt(l,i))return!0;return!1}if(r.type==="tuple"){for(const l of r.items)if(Pt(l,i))return!0;return!!(r.rest&&Pt(r.rest,i))}return!1}const ZC=(e,n={})=>i=>{const r=s0({...i,processors:n});return kt(e,r),r0(r,e),o0(r,e)},rc=(e,n,i={})=>r=>{const{libraryOptions:l,target:c}=r??{},d=s0({...l??{},target:c,io:n,processors:i});return kt(e,d),r0(d,e),o0(d,e)},YC={guid:"uuid",url:"uri",datetime:"date-time",json_string:"json-string",regex:""},XC=(e,n,i,r)=>{const l=i;l.type="string";const{minimum:c,maximum:d,format:h,patterns:g,contentEncoding:b}=e._zod.bag;if(typeof c=="number"&&(l.minLength=c),typeof d=="number"&&(l.maxLength=d),h&&(l.format=YC[h]??h,l.format===""&&delete l.format,h==="time"&&delete l.format),b&&(l.contentEncoding=b),g&&g.size>0){const S=[...g];S.length===1?l.pattern=S[0].source:S.length>1&&(l.allOf=[...S.map(x=>({...n.target==="draft-07"||n.target==="draft-04"||n.target==="openapi-3.0"?{type:"string"}:{},pattern:x.source}))])}},JC=(e,n,i,r)=>{const l=i,{minimum:c,maximum:d,format:h,multipleOf:g,exclusiveMaximum:b,exclusiveMinimum:S}=e._zod.bag;typeof h=="string"&&h.includes("int")?l.type="integer":l.type="number",typeof S=="number"&&(n.target==="draft-04"||n.target==="openapi-3.0"?(l.minimum=S,l.exclusiveMinimum=!0):l.exclusiveMinimum=S),typeof c=="number"&&(l.minimum=c,typeof S=="number"&&n.target!=="draft-04"&&(S>=c?delete l.minimum:delete l.exclusiveMinimum)),typeof b=="number"&&(n.target==="draft-04"||n.target==="openapi-3.0"?(l.maximum=b,l.exclusiveMaximum=!0):l.exclusiveMaximum=b),typeof d=="number"&&(l.maximum=d,typeof b=="number"&&n.target!=="draft-04"&&(b<=d?delete l.maximum:delete l.exclusiveMaximum)),typeof g=="number"&&(l.multipleOf=g)},FC=(e,n,i,r)=>{i.type="boolean"},WC=(e,n,i,r)=>{i.not={}},ez=(e,n,i,r)=>{},tz=(e,n,i,r)=>{const l=e._zod.def,c=qv(l.entries);c.every(d=>typeof d=="number")&&(i.type="number"),c.every(d=>typeof d=="string")&&(i.type="string"),i.enum=c},nz=(e,n,i,r)=>{const l=e._zod.def,c=[];for(const d of l.values)if(d===void 0){if(n.unrepresentable==="throw")throw new Error("Literal `undefined` cannot be represented in JSON Schema")}else if(typeof d=="bigint"){if(n.unrepresentable==="throw")throw new Error("BigInt literals cannot be represented in JSON Schema");c.push(Number(d))}else c.push(d);if(c.length!==0)if(c.length===1){const d=c[0];i.type=d===null?"null":typeof d,n.target==="draft-04"||n.target==="openapi-3.0"?i.enum=[d]:i.const=d}else c.every(d=>typeof d=="number")&&(i.type="number"),c.every(d=>typeof d=="string")&&(i.type="string"),c.every(d=>typeof d=="boolean")&&(i.type="boolean"),c.every(d=>d===null)&&(i.type="null"),i.enum=c},az=(e,n,i,r)=>{if(n.unrepresentable==="throw")throw new Error("Custom types cannot be represented in JSON Schema")},iz=(e,n,i,r)=>{if(n.unrepresentable==="throw")throw new Error("Transforms cannot be represented in JSON Schema")},sz=(e,n,i,r)=>{const l=i,c=e._zod.def,{minimum:d,maximum:h}=e._zod.bag;typeof d=="number"&&(l.minItems=d),typeof h=="number"&&(l.maxItems=h),l.type="array",l.items=kt(c.element,n,{...r,path:[...r.path,"items"]})},rz=(e,n,i,r)=>{const l=i,c=e._zod.def;l.type="object",l.properties={};const d=c.shape;for(const b in d)l.properties[b]=kt(d[b],n,{...r,path:[...r.path,"properties",b]});const h=new Set(Object.keys(d)),g=new Set([...h].filter(b=>{const S=c.shape[b]._zod;return n.io==="input"?S.optin===void 0:S.optout===void 0}));g.size>0&&(l.required=Array.from(g)),c.catchall?._zod.def.type==="never"?l.additionalProperties=!1:c.catchall?c.catchall&&(l.additionalProperties=kt(c.catchall,n,{...r,path:[...r.path,"additionalProperties"]})):n.io==="output"&&(l.additionalProperties=!1)},oz=(e,n,i,r)=>{const l=e._zod.def,c=l.inclusive===!1,d=l.options.map((h,g)=>kt(h,n,{...r,path:[...r.path,c?"oneOf":"anyOf",g]}));c?i.oneOf=d:i.anyOf=d},lz=(e,n,i,r)=>{const l=e._zod.def,c=kt(l.left,n,{...r,path:[...r.path,"allOf",0]}),d=kt(l.right,n,{...r,path:[...r.path,"allOf",1]}),h=b=>"allOf"in b&&Object.keys(b).length===1,g=[...h(c)?c.allOf:[c],...h(d)?d.allOf:[d]];i.allOf=g},cz=(e,n,i,r)=>{const l=i,c=e._zod.def;l.type="object";const d=c.keyType,g=d._zod.bag?.patterns;if(c.mode==="loose"&&g&&g.size>0){const S=kt(c.valueType,n,{...r,path:[...r.path,"patternProperties","*"]});l.patternProperties={};for(const x of g)l.patternProperties[x.source]=S}else(n.target==="draft-07"||n.target==="draft-2020-12")&&(l.propertyNames=kt(c.keyType,n,{...r,path:[...r.path,"propertyNames"]})),l.additionalProperties=kt(c.valueType,n,{...r,path:[...r.path,"additionalProperties"]});const b=d._zod.values;if(b){const S=[...b].filter(x=>typeof x=="string"||typeof x=="number");S.length>0&&(l.required=S)}},uz=(e,n,i,r)=>{const l=e._zod.def,c=kt(l.innerType,n,r),d=n.seen.get(e);n.target==="openapi-3.0"?(d.ref=l.innerType,i.nullable=!0):i.anyOf=[c,{type:"null"}]},dz=(e,n,i,r)=>{const l=e._zod.def;kt(l.innerType,n,r);const c=n.seen.get(e);c.ref=l.innerType},fz=(e,n,i,r)=>{const l=e._zod.def;kt(l.innerType,n,r);const c=n.seen.get(e);c.ref=l.innerType,i.default=JSON.parse(JSON.stringify(l.defaultValue))},pz=(e,n,i,r)=>{const l=e._zod.def;kt(l.innerType,n,r);const c=n.seen.get(e);c.ref=l.innerType,n.io==="input"&&(i._prefault=JSON.parse(JSON.stringify(l.defaultValue)))},mz=(e,n,i,r)=>{const l=e._zod.def;kt(l.innerType,n,r);const c=n.seen.get(e);c.ref=l.innerType;let d;try{d=l.catchValue(void 0)}catch{throw new Error("Dynamic catch values are not supported in JSON Schema")}i.default=d},hz=(e,n,i,r)=>{const l=e._zod.def,c=n.io==="input"?l.in._zod.def.type==="transform"?l.out:l.in:l.out;kt(c,n,r);const d=n.seen.get(e);d.ref=c},gz=(e,n,i,r)=>{const l=e._zod.def;kt(l.innerType,n,r);const c=n.seen.get(e);c.ref=l.innerType,i.readOnly=!0},l0=(e,n,i,r)=>{const l=e._zod.def;kt(l.innerType,n,r);const c=n.seen.get(e);c.ref=l.innerType},yz=H("ZodISODateTime",(e,n)=>{b_.init(e,n),ft.init(e,n)});function bz(e){return NC(yz,e)}const vz=H("ZodISODate",(e,n)=>{v_.init(e,n),ft.init(e,n)});function Sz(e){return kC(vz,e)}const xz=H("ZodISOTime",(e,n)=>{S_.init(e,n),ft.init(e,n)});function wz(e){return AC(xz,e)}const jz=H("ZodISODuration",(e,n)=>{x_.init(e,n),ft.init(e,n)});function Nz(e){return _C(jz,e)}const kz=(e,n)=>{Vv.init(e,n),e.name="ZodError",Object.defineProperties(e,{format:{value:i=>d2(e,i)},flatten:{value:i=>u2(e,i)},addIssue:{value:i=>{e.issues.push(i),e.message=JSON.stringify(e.issues,Nf,2)}},addIssues:{value:i=>{e.issues.push(...i),e.message=JSON.stringify(e.issues,Nf,2)}},isEmpty:{get(){return e.issues.length===0}}})},_n=H("ZodError",kz,{Parent:Error}),Az=Wf(_n),_z=ep(_n),Cz=bc(_n),zz=vc(_n),Tz=m2(_n),Ez=h2(_n),Oz=g2(_n),Dz=y2(_n),Rz=b2(_n),Mz=v2(_n),Bz=S2(_n),Lz=x2(_n),dt=H("ZodType",(e,n)=>(ut.init(e,n),Object.assign(e["~standard"],{jsonSchema:{input:rc(e,"input"),output:rc(e,"output")}}),e.toJSONSchema=ZC(e,{}),e.def=n,e.type=n.type,Object.defineProperty(e,"_def",{value:n}),e.check=(...i)=>e.clone(Fa(n,{checks:[...n.checks??[],...i.map(r=>typeof r=="function"?{_zod:{check:r,def:{check:"custom"},onattach:[]}}:r)]}),{parent:!0}),e.with=e.check,e.clone=(i,r)=>Wa(e,i,r),e.brand=()=>e,e.register=((i,r)=>(i.add(e,r),e)),e.parse=(i,r)=>Az(e,i,r,{callee:e.parse}),e.safeParse=(i,r)=>Cz(e,i,r),e.parseAsync=async(i,r)=>_z(e,i,r,{callee:e.parseAsync}),e.safeParseAsync=async(i,r)=>zz(e,i,r),e.spa=e.safeParseAsync,e.encode=(i,r)=>Tz(e,i,r),e.decode=(i,r)=>Ez(e,i,r),e.encodeAsync=async(i,r)=>Oz(e,i,r),e.decodeAsync=async(i,r)=>Dz(e,i,r),e.safeEncode=(i,r)=>Rz(e,i,r),e.safeDecode=(i,r)=>Mz(e,i,r),e.safeEncodeAsync=async(i,r)=>Bz(e,i,r),e.safeDecodeAsync=async(i,r)=>Lz(e,i,r),e.refine=(i,r)=>e.check(TT(i,r)),e.superRefine=i=>e.check(ET(i)),e.overwrite=i=>e.check(Ks(i)),e.optional=()=>gb(e),e.exactOptional=()=>yT(e),e.nullable=()=>yb(e),e.nullish=()=>gb(yb(e)),e.nonoptional=i=>jT(e,i),e.array=()=>A(e),e.or=i=>f0([e,i]),e.and=i=>dT(e,i),e.transform=i=>bb(e,hT(i)),e.default=i=>ST(e,i),e.prefault=i=>wT(e,i),e.catch=i=>kT(e,i),e.pipe=i=>bb(e,i),e.readonly=()=>CT(e),e.describe=i=>{const r=e.clone();return io.add(r,{description:i}),r},Object.defineProperty(e,"description",{get(){return io.get(e)?.description},configurable:!0}),e.meta=(...i)=>{if(i.length===0)return io.get(e);const r=e.clone();return io.add(r,i[0]),r},e.isOptional=()=>e.safeParse(void 0).success,e.isNullable=()=>e.safeParse(null).success,e.apply=i=>i(e),e)),c0=H("_ZodString",(e,n)=>{tp.init(e,n),dt.init(e,n),e._zod.processJSONSchema=(r,l,c)=>XC(e,r,l);const i=e._zod.bag;e.format=i.format??null,e.minLength=i.minimum??null,e.maxLength=i.maximum??null,e.regex=(...r)=>e.check(DC(...r)),e.includes=(...r)=>e.check(BC(...r)),e.startsWith=(...r)=>e.check(LC(...r)),e.endsWith=(...r)=>e.check(qC(...r)),e.min=(...r)=>e.check(sc(...r)),e.max=(...r)=>e.check(a0(...r)),e.length=(...r)=>e.check(i0(...r)),e.nonempty=(...r)=>e.check(sc(1,...r)),e.lowercase=r=>e.check(RC(r)),e.uppercase=r=>e.check(MC(r)),e.trim=()=>e.check($C()),e.normalize=(...r)=>e.check(UC(...r)),e.toLowerCase=()=>e.check(IC()),e.toUpperCase=()=>e.check(VC()),e.slugify=()=>e.check(PC())}),qz=H("ZodString",(e,n)=>{tp.init(e,n),c0.init(e,n),e.email=i=>e.check(aC(Uz,i)),e.url=i=>e.check(lC($z,i)),e.jwt=i=>e.check(jC(tT,i)),e.emoji=i=>e.check(cC(Iz,i)),e.guid=i=>e.check(ub(mb,i)),e.uuid=i=>e.check(iC(Vl,i)),e.uuidv4=i=>e.check(sC(Vl,i)),e.uuidv6=i=>e.check(rC(Vl,i)),e.uuidv7=i=>e.check(oC(Vl,i)),e.nanoid=i=>e.check(uC(Vz,i)),e.guid=i=>e.check(ub(mb,i)),e.cuid=i=>e.check(dC(Pz,i)),e.cuid2=i=>e.check(fC(Gz,i)),e.ulid=i=>e.check(pC(Hz,i)),e.base64=i=>e.check(SC(Fz,i)),e.base64url=i=>e.check(xC(Wz,i)),e.xid=i=>e.check(mC(Qz,i)),e.ksuid=i=>e.check(hC(Kz,i)),e.ipv4=i=>e.check(gC(Zz,i)),e.ipv6=i=>e.check(yC(Yz,i)),e.cidrv4=i=>e.check(bC(Xz,i)),e.cidrv6=i=>e.check(vC(Jz,i)),e.e164=i=>e.check(wC(eT,i)),e.datetime=i=>e.check(bz(i)),e.date=i=>e.check(Sz(i)),e.time=i=>e.check(wz(i)),e.duration=i=>e.check(Nz(i))});function p(e){return nC(qz,e)}const ft=H("ZodStringFormat",(e,n)=>{ct.init(e,n),c0.init(e,n)}),Uz=H("ZodEmail",(e,n)=>{c_.init(e,n),ft.init(e,n)}),mb=H("ZodGUID",(e,n)=>{o_.init(e,n),ft.init(e,n)}),Vl=H("ZodUUID",(e,n)=>{l_.init(e,n),ft.init(e,n)}),$z=H("ZodURL",(e,n)=>{u_.init(e,n),ft.init(e,n)}),Iz=H("ZodEmoji",(e,n)=>{d_.init(e,n),ft.init(e,n)}),Vz=H("ZodNanoID",(e,n)=>{f_.init(e,n),ft.init(e,n)}),Pz=H("ZodCUID",(e,n)=>{p_.init(e,n),ft.init(e,n)}),Gz=H("ZodCUID2",(e,n)=>{m_.init(e,n),ft.init(e,n)}),Hz=H("ZodULID",(e,n)=>{h_.init(e,n),ft.init(e,n)}),Qz=H("ZodXID",(e,n)=>{g_.init(e,n),ft.init(e,n)}),Kz=H("ZodKSUID",(e,n)=>{y_.init(e,n),ft.init(e,n)}),Zz=H("ZodIPv4",(e,n)=>{w_.init(e,n),ft.init(e,n)}),Yz=H("ZodIPv6",(e,n)=>{j_.init(e,n),ft.init(e,n)}),Xz=H("ZodCIDRv4",(e,n)=>{N_.init(e,n),ft.init(e,n)}),Jz=H("ZodCIDRv6",(e,n)=>{k_.init(e,n),ft.init(e,n)}),Fz=H("ZodBase64",(e,n)=>{A_.init(e,n),ft.init(e,n)}),Wz=H("ZodBase64URL",(e,n)=>{C_.init(e,n),ft.init(e,n)}),eT=H("ZodE164",(e,n)=>{z_.init(e,n),ft.init(e,n)}),tT=H("ZodJWT",(e,n)=>{E_.init(e,n),ft.init(e,n)}),u0=H("ZodNumber",(e,n)=>{Fv.init(e,n),dt.init(e,n),e._zod.processJSONSchema=(r,l,c)=>JC(e,r,l),e.gt=(r,l)=>e.check(fb(r,l)),e.gte=(r,l)=>e.check(sf(r,l)),e.min=(r,l)=>e.check(sf(r,l)),e.lt=(r,l)=>e.check(db(r,l)),e.lte=(r,l)=>e.check(af(r,l)),e.max=(r,l)=>e.check(af(r,l)),e.int=r=>e.check(hb(r)),e.safe=r=>e.check(hb(r)),e.positive=r=>e.check(fb(0,r)),e.nonnegative=r=>e.check(sf(0,r)),e.negative=r=>e.check(db(0,r)),e.nonpositive=r=>e.check(af(0,r)),e.multipleOf=(r,l)=>e.check(pb(r,l)),e.step=(r,l)=>e.check(pb(r,l)),e.finite=()=>e;const i=e._zod.bag;e.minValue=Math.max(i.minimum??Number.NEGATIVE_INFINITY,i.exclusiveMinimum??Number.NEGATIVE_INFINITY)??null,e.maxValue=Math.min(i.maximum??Number.POSITIVE_INFINITY,i.exclusiveMaximum??Number.POSITIVE_INFINITY)??null,e.isInt=(i.format??"").includes("int")||Number.isSafeInteger(i.multipleOf??.5),e.isFinite=!0,e.format=i.format??null});function v(e){return CC(u0,e)}const nT=H("ZodNumberFormat",(e,n)=>{O_.init(e,n),u0.init(e,n)});function hb(e){return zC(nT,e)}const aT=H("ZodBoolean",(e,n)=>{D_.init(e,n),dt.init(e,n),e._zod.processJSONSchema=(i,r,l)=>FC(e,i,r)});function oe(e){return TC(aT,e)}const iT=H("ZodUnknown",(e,n)=>{R_.init(e,n),dt.init(e,n),e._zod.processJSONSchema=(i,r,l)=>ez()});function qn(){return EC(iT)}const sT=H("ZodNever",(e,n)=>{M_.init(e,n),dt.init(e,n),e._zod.processJSONSchema=(i,r,l)=>WC(e,i,r)});function rT(e){return OC(sT,e)}const oT=H("ZodArray",(e,n)=>{B_.init(e,n),dt.init(e,n),e._zod.processJSONSchema=(i,r,l)=>sz(e,i,r,l),e.element=n.element,e.min=(i,r)=>e.check(sc(i,r)),e.nonempty=i=>e.check(sc(1,i)),e.max=(i,r)=>e.check(a0(i,r)),e.length=(i,r)=>e.check(i0(i,r)),e.unwrap=()=>e.element});function A(e,n){return GC(oT,e,n)}const lT=H("ZodObject",(e,n)=>{q_.init(e,n),dt.init(e,n),e._zod.processJSONSchema=(i,r,l)=>rz(e,i,r,l),Pe(e,"shape",()=>n.shape),e.keyof=()=>ie(Object.keys(e._zod.def.shape)),e.catchall=i=>e.clone({...e._zod.def,catchall:i}),e.passthrough=()=>e.clone({...e._zod.def,catchall:qn()}),e.loose=()=>e.clone({...e._zod.def,catchall:qn()}),e.strict=()=>e.clone({...e._zod.def,catchall:rT()}),e.strip=()=>e.clone({...e._zod.def,catchall:void 0}),e.extend=i=>s2(e,i),e.safeExtend=i=>r2(e,i),e.merge=i=>o2(e,i),e.pick=i=>a2(e,i),e.omit=i=>i2(e,i),e.partial=(...i)=>l2(m0,e,i[0]),e.required=(...i)=>c2(h0,e,i[0])});function j(e,n){const i={type:"object",shape:e??{},...ye(n)};return new lT(i)}const d0=H("ZodUnion",(e,n)=>{t0.init(e,n),dt.init(e,n),e._zod.processJSONSchema=(i,r,l)=>oz(e,i,r,l),e.options=n.options});function f0(e,n){return new d0({type:"union",options:e,...ye(n)})}const cT=H("ZodDiscriminatedUnion",(e,n)=>{d0.init(e,n),U_.init(e,n)});function p0(e,n,i){return new cT({type:"union",options:n,discriminator:e,...ye(i)})}const uT=H("ZodIntersection",(e,n)=>{$_.init(e,n),dt.init(e,n),e._zod.processJSONSchema=(i,r,l)=>lz(e,i,r,l)});function dT(e,n){return new uT({type:"intersection",left:e,right:n})}const fT=H("ZodRecord",(e,n)=>{I_.init(e,n),dt.init(e,n),e._zod.processJSONSchema=(i,r,l)=>cz(e,i,r,l),e.keyType=n.keyType,e.valueType=n.valueType});function lt(e,n,i){return new fT({type:"record",keyType:e,valueType:n,...ye(i)})}const Af=H("ZodEnum",(e,n)=>{V_.init(e,n),dt.init(e,n),e._zod.processJSONSchema=(r,l,c)=>tz(e,r,l),e.enum=n.entries,e.options=Object.values(n.entries);const i=new Set(Object.keys(n.entries));e.extract=(r,l)=>{const c={};for(const d of r)if(i.has(d))c[d]=n.entries[d];else throw new Error(`Key ${d} not found in enum`);return new Af({...n,checks:[],...ye(l),entries:c})},e.exclude=(r,l)=>{const c={...n.entries};for(const d of r)if(i.has(d))delete c[d];else throw new Error(`Key ${d} not found in enum`);return new Af({...n,checks:[],...ye(l),entries:c})}});function ie(e,n){const i=Array.isArray(e)?Object.fromEntries(e.map(r=>[r,r])):e;return new Af({type:"enum",entries:i,...ye(n)})}const pT=H("ZodLiteral",(e,n)=>{P_.init(e,n),dt.init(e,n),e._zod.processJSONSchema=(i,r,l)=>nz(e,i,r),e.values=new Set(n.values),Object.defineProperty(e,"value",{get(){if(n.values.length>1)throw new Error("This schema contains multiple valid literal values. Use `.values` instead.");return n.values[0]}})});function qt(e,n){return new pT({type:"literal",values:Array.isArray(e)?e:[e],...ye(n)})}const mT=H("ZodTransform",(e,n)=>{G_.init(e,n),dt.init(e,n),e._zod.processJSONSchema=(i,r,l)=>iz(e,i),e._zod.parse=(i,r)=>{if(r.direction==="backward")throw new Bv(e.constructor.name);i.addIssue=c=>{if(typeof c=="string")i.issues.push(uo(c,i.value,n));else{const d=c;d.fatal&&(d.continue=!1),d.code??(d.code="custom"),d.input??(d.input=i.value),d.inst??(d.inst=e),i.issues.push(uo(d))}};const l=n.transform(i.value,i);return l instanceof Promise?l.then(c=>(i.value=c,i)):(i.value=l,i)}});function hT(e){return new mT({type:"transform",transform:e})}const m0=H("ZodOptional",(e,n)=>{n0.init(e,n),dt.init(e,n),e._zod.processJSONSchema=(i,r,l)=>l0(e,i,r,l),e.unwrap=()=>e._zod.def.innerType});function gb(e){return new m0({type:"optional",innerType:e})}const gT=H("ZodExactOptional",(e,n)=>{H_.init(e,n),dt.init(e,n),e._zod.processJSONSchema=(i,r,l)=>l0(e,i,r,l),e.unwrap=()=>e._zod.def.innerType});function yT(e){return new gT({type:"optional",innerType:e})}const bT=H("ZodNullable",(e,n)=>{Q_.init(e,n),dt.init(e,n),e._zod.processJSONSchema=(i,r,l)=>uz(e,i,r,l),e.unwrap=()=>e._zod.def.innerType});function yb(e){return new bT({type:"nullable",innerType:e})}const vT=H("ZodDefault",(e,n)=>{K_.init(e,n),dt.init(e,n),e._zod.processJSONSchema=(i,r,l)=>fz(e,i,r,l),e.unwrap=()=>e._zod.def.innerType,e.removeDefault=e.unwrap});function ST(e,n){return new vT({type:"default",innerType:e,get defaultValue(){return typeof n=="function"?n():$v(n)}})}const xT=H("ZodPrefault",(e,n)=>{Z_.init(e,n),dt.init(e,n),e._zod.processJSONSchema=(i,r,l)=>pz(e,i,r,l),e.unwrap=()=>e._zod.def.innerType});function wT(e,n){return new xT({type:"prefault",innerType:e,get defaultValue(){return typeof n=="function"?n():$v(n)}})}const h0=H("ZodNonOptional",(e,n)=>{Y_.init(e,n),dt.init(e,n),e._zod.processJSONSchema=(i,r,l)=>dz(e,i,r,l),e.unwrap=()=>e._zod.def.innerType});function jT(e,n){return new h0({type:"nonoptional",innerType:e,...ye(n)})}const NT=H("ZodCatch",(e,n)=>{X_.init(e,n),dt.init(e,n),e._zod.processJSONSchema=(i,r,l)=>mz(e,i,r,l),e.unwrap=()=>e._zod.def.innerType,e.removeCatch=e.unwrap});function kT(e,n){return new NT({type:"catch",innerType:e,catchValue:typeof n=="function"?n:()=>n})}const AT=H("ZodPipe",(e,n)=>{J_.init(e,n),dt.init(e,n),e._zod.processJSONSchema=(i,r,l)=>hz(e,i,r,l),e.in=n.in,e.out=n.out});function bb(e,n){return new AT({type:"pipe",in:e,out:n})}const _T=H("ZodReadonly",(e,n)=>{F_.init(e,n),dt.init(e,n),e._zod.processJSONSchema=(i,r,l)=>gz(e,i,r,l),e.unwrap=()=>e._zod.def.innerType});function CT(e){return new _T({type:"readonly",innerType:e})}const zT=H("ZodCustom",(e,n)=>{W_.init(e,n),dt.init(e,n),e._zod.processJSONSchema=(i,r,l)=>az(e,i)});function TT(e,n={}){return HC(zT,e,n)}function ET(e){return QC(e)}const g0=j({id:p(),name:p(),keyPrefix:p(),scopes:A(p()),readOnly:oe(),createdAt:p(),lastUsedAt:p().nullable(),revokedAt:p().nullable()});j({keys:A(g0)});j({name:p().min(1).max(100),scopes:A(p()).min(1).optional()});g0.extend({key:p()});const OT=j({maxConcurrency:v().int().positive(),maxRequestsPerMinute:v().int().positive(),maxRequestsPerDay:v().int().positive()}),ya=p().min(1);p().min(1);const np=j({label:p().min(1),city:p().min(1),region:p().min(1),country:p().length(2),timezone:p().optional()}),ap=ie(["citation.lost","citation.gained","run.completed","run.failed","insight.critical","insight.high"]);j({id:p(),projectId:p(),channel:qt("webhook"),url:p().url(),urlDisplay:p(),urlHost:p(),events:A(ap),enabled:oe().default(!0),source:p().optional(),webhookSecret:p().optional(),createdAt:p(),updatedAt:p()});j({channel:qt("webhook"),url:p().url(),events:A(ap).min(1),source:p().optional()});const y0=ie(["cli","api","config-file"]);function DT(e){const n=new Set,i=new Set;for(const r of e){if(n.has(r.label)){i.add(r.label);continue}n.add(r.label)}return[...i]}function RT(e,n){return n?e.some(i=>i.label===n):!0}j({displayName:p().min(1),canonicalDomain:p().min(1),ownedDomains:A(p().min(1)).optional(),aliases:A(p()).optional(),country:p().length(2),language:p().min(2),tags:A(p()).optional(),labels:lt(p(),p()).optional(),providers:A(ya).optional(),locations:A(np).optional(),defaultLocation:p().nullable().optional(),autoExtractBacklinks:oe().optional(),configSource:y0.optional()});const MT=j({id:p(),name:p(),displayName:p().optional(),canonicalDomain:p(),ownedDomains:A(p()).default([]),aliases:A(p()).default([]),country:p().length(2),language:p().min(2),tags:A(p()).default([]),labels:lt(p(),p()).default({}),providers:A(p()).default([]),locations:A(np).default([]),defaultLocation:p().nullable().optional(),autoExtractBacklinks:oe().default(!1),configSource:y0.default("cli"),configRevision:v().int().positive().default(1),createdAt:p().optional(),updatedAt:p().optional()});j({id:p(),query:p(),createdAt:p()});j({id:p(),keyword:p(),createdAt:p()});j({queries:A(p().trim().min(1)).min(1)});j({keywords:A(p().trim().min(1)).min(1)});j({provider:ya,count:v().int().min(1).max(20).optional()});j({id:p(),domain:p(),createdAt:p()});j({competitors:A(p().trim().min(1)).min(1)});function oc(e){let n=e.trim().toLowerCase();try{n.includes("://")&&(n=new URL(n).hostname.toLowerCase())}catch{}return n.replace(/^www\./,"")}const BT=new Set(["ac.uk","co.id","co.il","co.in","co.jp","co.kr","co.nz","co.th","co.uk","co.za","com.au","com.br","com.cn","com.mx","com.ph","com.sg","com.tr","edu.au","edu.sg","gov.au","gov.uk","me.uk","ne.jp","net.au","net.br","net.cn","net.in","net.tr","or.jp","or.kr","org.au","org.br","org.in","org.nz","org.tr","org.uk","org.za"]);function LT(e){const n=oc(e);if(!n)return"";const i=n.split("/")[0]?.split(":")[0]??"";if(!i)return"";const r=i.split(".").filter(Boolean);if(r.length<2)return"";if(r.length===2)return r.join(".");const l=r.slice(-2).join(".");return BT.has(l)?r.length>=3?r.slice(-3).join("."):"":r.slice(-2).join(".")}function qT(e){const n=LT(e);return n?n.split(".")[0]??"":""}function UT(e){const n=[e.canonicalDomain,...e.ownedDomains??[]],i=new Set,r=[];for(const l of n){const c=l.trim();if(!c)continue;const d=oc(c);i.has(d)||(i.add(d),r.push(c))}return r}const $T=j({name:p().min(1).max(63).regex(/^[a-z0-9]([a-z0-9-]*[a-z0-9])?$/,{message:"Name must be a lowercase slug (letters, numbers, hyphens)"}),labels:lt(p(),p()).optional().default({})}),IT=j({preset:p().optional(),cron:p().optional(),timezone:p().optional().default("UTC"),providers:A(ya).optional().default([])}).refine(e=>e.preset&&!e.cron||!e.preset&&e.cron,{message:'Exactly one of "preset" or "cron" must be provided'}).optional(),VT=j({channel:qt("webhook"),url:p().url(),events:A(ap).min(1)}),PT=j({gsc:j({propertyUrl:p()}).optional(),syncSchedule:j({preset:p().optional(),cron:p().optional()}).optional()}).optional(),vb=A(p().min(1)),GT=j({displayName:p().min(1),canonicalDomain:p().min(1),ownedDomains:A(p().min(1)).optional().default([]),aliases:A(p().min(1)).optional().default([]),country:p().length(2),language:p().min(2),queries:vb.optional(),keywords:vb.optional(),competitors:A(p().min(1)).optional().default([]),providers:A(ya).optional().default([]),locations:A(np).optional().default([]),defaultLocation:p().optional(),schedule:IT,notifications:A(VT).optional().default([]),google:PT,autoExtractBacklinks:oe().optional().default(!1)}).superRefine((e,n)=>{e.queries!==void 0&&e.keywords!==void 0&&n.addIssue({code:"custom",message:"Use spec.queries; spec.keywords is accepted only as a legacy alias when spec.queries is omitted",path:["keywords"]});const i=DT(e.locations);i.length>0&&n.addIssue({code:"custom",message:`Duplicate location labels are not allowed: ${i.join(", ")}`,path:["locations"]}),RT(e.locations,e.defaultLocation)||n.addIssue({code:"custom",message:`defaultLocation "${e.defaultLocation}" must match a configured location label`,path:["defaultLocation"]})});j({apiVersion:qt("canonry/v1"),kind:qt("Project"),metadata:$T,spec:GT});const HT=ie(["gsc","ga4","gbp"]);j({id:p(),domain:p(),connectionType:HT,propertyId:p().nullable().optional(),sitemapUrl:p().nullable().optional(),scopes:A(p()).default([]),createdAt:p(),updatedAt:p()});j({date:p(),query:p(),page:p(),country:p().nullable().optional(),device:p().nullable().optional(),clicks:v(),impressions:v(),ctr:v(),position:v()});const QT=j({date:p(),clicks:v(),impressions:v(),ctr:v()});j({totals:j({clicks:v(),impressions:v(),ctr:v(),days:v()}),daily:A(QT)});const _f=j({id:p(),url:p(),indexingState:p().nullable().optional(),verdict:p().nullable().optional(),coverageState:p().nullable().optional(),pageFetchState:p().nullable().optional(),robotsTxtState:p().nullable().optional(),crawlTime:p().nullable().optional(),lastCrawlResult:p().nullable().optional(),isMobileFriendly:oe().nullable().optional(),richResults:A(p()).default([]),referringUrls:A(p()).default([]),inspectedAt:p()});ie(["stable","reindexed","deindexed","still-missing","new"]);const KT=j({url:p(),previousState:p().nullable(),currentState:p().nullable(),transitionDate:p()}),ZT=j({reason:p(),count:v(),urls:A(_f).default([])});j({summary:j({total:v(),indexed:v(),notIndexed:v(),deindexed:v(),percentage:v()}),lastInspectedAt:p().nullable(),lastSyncedAt:p().nullable(),indexed:A(_f).default([]),notIndexed:A(_f).default([]),deindexed:A(KT).default([]),reasonGroups:A(ZT).default([])});j({url:p(),type:ie(["URL_UPDATED","URL_DELETED"]),notifiedAt:p()});const YT=j({url:p(),type:ie(["URL_UPDATED","URL_DELETED"]),notifiedAt:p(),status:ie(["success","error"]),error:p().optional()});j({summary:j({total:v().int().nonnegative(),succeeded:v().int().nonnegative(),failed:v().int().nonnegative()}),results:A(YT).default([])});j({date:p(),indexed:v(),notIndexed:v(),reasonBreakdown:lt(p(),v()).default({})});const XT=j({siteUrl:p(),permissionLevel:p()});j({sites:A(XT).default([])});const JT=j({type:p(),submitted:p(),indexed:p()}),FT=j({path:p(),lastSubmitted:p().optional(),isPending:oe().optional(),isSitemapsIndex:oe().optional(),type:p().optional(),lastDownloaded:p().optional(),warnings:p().optional(),errors:p().optional(),contents:A(JT).optional()});j({sitemaps:A(FT).default([])});const WT=j({name:p(),accountName:p().nullable(),type:p().nullable(),role:p().nullable()});j({accounts:A(WT),total:v().int().nonnegative()});const eE=j({id:p(),projectId:p(),accountName:p(),locationName:p(),displayName:p(),primaryCategoryDisplayName:p().nullable(),storefrontAddress:p().nullable(),websiteUri:p().nullable(),placeId:p().nullable(),mapsUri:p().nullable(),additionalCategories:A(p()),description:p().nullable(),serviceArea:lt(p(),qn()).nullable(),regularHours:lt(p(),qn()).nullable(),primaryPhone:p().nullable(),openStatus:p().nullable(),openingDate:p().nullable(),selected:oe(),syncedAt:p().nullable(),createdAt:p(),updatedAt:p()});j({locations:A(eE),totalDiscovered:v().int().nonnegative(),totalSelected:v().int().nonnegative()});j({selectAllNew:oe().default(!0),accountName:p().optional(),switchAccount:oe().default(!1)});j({selected:oe()});j({locationNames:A(p()).optional(),daysOfMetrics:v().int().positive().max(540).optional(),monthsOfKeywords:v().int().positive().max(18).optional()});j({runId:p(),status:p()});const tE=j({locationName:p(),date:p(),metric:p(),value:v().int()});j({metrics:A(tE),total:v().int().nonnegative()});const nE=j({locationName:p(),periodStart:p(),periodEnd:p(),keyword:p(),valueCount:v().int().nullable(),valueThreshold:v().int().nullable()});j({keywords:A(nE),total:v().int().nonnegative(),thresholdedPct:v().int().min(0).max(100)});const aE=j({locationName:p(),placeActionLinkName:p(),placeActionType:p(),uri:p().nullable(),isPreferred:oe(),providerType:p().nullable()});j({placeActions:A(aE),total:v().int().nonnegative()});const iE=j({locationName:p(),populatedGroupCount:v().int().nonnegative(),syncedAt:p(),attributes:lt(p(),qn())});j({lodging:A(iE),total:v().int().nonnegative()});const sE=j({locationName:p(),placeId:p(),tier:p(),amenities:A(p()),syncedAt:p(),place:lt(p(),qn())});j({places:A(sE),total:v().int().nonnegative()});j({scope:j({locationName:p().nullable(),locationCount:v().int().nonnegative()}),performance:j({totals:lt(p(),v()),recent7d:lt(p(),v()),prior7d:lt(p(),v()),deltaPct:lt(p(),v().nullable())}),freshness:j({dataThroughDate:p().nullable(),latestStoredDate:p().nullable(),pendingDays:v().int().nonnegative()}),timeseries:A(j({date:p(),pending:oe(),metrics:lt(p(),v())})),keywords:j({total:v().int().nonnegative(),thresholdedCount:v().int().nonnegative(),thresholdedPct:v().int().min(0).max(100)}),placeActions:j({total:v().int().nonnegative(),hasReservationCta:oe(),hasBookingCta:oe(),hasDirectMerchantCta:oe()}),lodging:j({lodgingLocationCount:v().int().nonnegative(),populatedLodgingCount:v().int().nonnegative(),emptyLodgingCount:v().int().nonnegative()}),profileCompleteness:j({locationCount:v().int().nonnegative(),withSecondaryCategories:v().int().nonnegative(),secondaryCategoryTotal:v().int().nonnegative(),withDescription:v().int().nonnegative(),withServiceArea:v().int().nonnegative(),withHours:v().int().nonnegative(),withPrimaryPhone:v().int().nonnegative(),permanentlyClosed:v().int().nonnegative(),temporarilyClosed:v().int().nonnegative()})});const rE={BUSINESS_DIRECTION_REQUESTS:"Direction requests",WEBSITE_CLICKS:"Website clicks",CALL_CLICKS:"Call clicks",BUSINESS_BOOKINGS:"Bookings",BUSINESS_CONVERSATIONS:"Conversations",BUSINESS_FOOD_ORDERS:"Food orders",BUSINESS_FOOD_MENU_CLICKS:"Food menu clicks",BUSINESS_IMPRESSIONS_DESKTOP_SEARCH:"Search impressions (desktop)",BUSINESS_IMPRESSIONS_MOBILE_SEARCH:"Search impressions (mobile)",BUSINESS_IMPRESSIONS_DESKTOP_MAPS:"Maps impressions (desktop)",BUSINESS_IMPRESSIONS_MOBILE_MAPS:"Maps impressions (mobile)"};function oE(e){const n=e.replace(/^BUSINESS_/,"").split("_").filter(Boolean).map(r=>r.toLowerCase());if(n.length===0)return e;const i=n.join(" ");return i.charAt(0).toUpperCase()+i.slice(1)}function gL(e){return rE[e]??oE(e)}const lE=["BUSINESS_DIRECTION_REQUESTS","WEBSITE_CLICKS","CALL_CLICKS"],cE=["BUSINESS_IMPRESSIONS_DESKTOP_SEARCH","BUSINESS_IMPRESSIONS_MOBILE_SEARCH","BUSINESS_IMPRESSIONS_DESKTOP_MAPS","BUSINESS_IMPRESSIONS_MOBILE_MAPS"];function yL(e){return lE.includes(e)?"conversion":cE.includes(e)?"reach":"other"}j({id:p(),domain:p(),siteUrl:p().nullable().optional(),createdAt:p(),updatedAt:p()});const rf=j({id:p(),url:p(),httpCode:v().nullable().optional(),inIndex:oe().nullable().optional(),lastCrawledDate:p().nullable().optional(),inIndexDate:p().nullable().optional(),inspectedAt:p(),documentSize:v().nullable().optional(),anchorCount:v().nullable().optional(),discoveryDate:p().nullable().optional()});j({summary:j({total:v(),indexed:v(),notIndexed:v(),unknown:v().optional(),percentage:v()}),lastInspectedAt:p().nullable(),indexed:A(rf).default([]),notIndexed:A(rf).default([]),unknown:A(rf).default([]).optional()});j({query:p(),impressions:v(),clicks:v(),ctr:v(),averagePosition:v()});j({date:p(),indexed:v(),notIndexed:v(),unknown:v()});const uE=j({url:p(),status:ie(["success","error"]),submittedAt:p(),error:p().optional()});j({summary:j({total:v().int().nonnegative(),succeeded:v().int().nonnegative(),failed:v().int().nonnegative()}),results:A(uE).default([])});const b0=j({url:p(),verified:oe()});j({sites:A(b0).default([])});j({connected:oe(),domain:p(),siteUrl:p().nullable(),createdAt:p().nullable(),updatedAt:p().nullable()});j({connected:oe(),domain:p(),siteUrl:p().nullable(),availableSites:A(b0).default([])});j({siteUrl:p()});const dE=j({name:p(),alive:oe(),lastUsed:p().nullable()});j({connected:oe(),endpoint:p(),version:p().optional(),browserVersion:p().optional(),targets:A(dE).default([])});const Zs=ie(["live","staging"]);j({projectName:p(),url:p(),stagingUrl:p().optional(),username:p(),defaultEnv:Zs,createdAt:p(),updatedAt:p()});const Sb=j({url:p(),reachable:oe(),pageCount:v().nullable().optional(),version:p().nullable().optional(),error:p().nullable().optional(),plugins:A(p()).optional(),authenticatedUser:j({id:v(),slug:p()}).nullable().optional()});j({connected:oe(),projectName:p(),defaultEnv:Zs,live:Sb.nullable(),staging:Sb.nullable(),adminUrl:p().nullable().optional()});const fE=j({id:v(),slug:p(),title:p(),status:p(),modifiedAt:p().nullable().optional(),link:p().nullable().optional()}),v0=j({title:p().nullable(),description:p().nullable(),noindex:oe().nullable(),writable:oe().default(!1),writeTargets:A(p()).default([])}),pE=j({type:p(),json:lt(p(),qn())}),mE=fE.extend({env:Zs,content:p(),seo:v0,schemaBlocks:A(pE).default([])}),xb=mE.extend({contentHash:p(),contentSnippet:p()}),S0=j({manualRequired:qt(!0),targetUrl:p(),adminUrl:p().nullable().optional(),content:p(),nextSteps:A(p()).default([])}),hE=j({slug:p(),severity:ie(["high","medium","low"]),code:ie(["noindex","missing-seo-title","missing-meta-description","missing-schema","thin-content"]),message:p()});j({slug:p(),title:p(),status:p(),wordCount:v(),seo:v0,schemaPresent:oe(),issues:A(hE).default([])});const gE=j({slug:p(),status:ie(["applied","skipped","manual"]),error:p().optional(),manualAssist:S0.optional()});j({env:Zs,strategy:ie(["plugin","manual"]),results:A(gE)});const yE=j({slug:p(),status:ie(["deployed","stripped","skipped","failed"]),schemasInjected:A(p()).optional(),manualAssist:S0.optional(),error:p().optional()});j({env:Zs,results:A(yE)});const bE=j({slug:p(),title:p(),canonrySchemas:A(p()),thirdPartySchemas:A(p()),hasCanonrySchema:oe()});j({env:Zs,pages:A(bE)});const vE=j({name:p(),status:ie(["completed","skipped","failed"]),summary:p().optional(),error:p().optional()});j({projectName:p(),steps:A(vE)});j({slug:p(),live:xb,staging:xb,hasDifferences:oe(),differences:j({title:oe(),slug:oe(),content:oe(),seoTitle:oe(),seoDescription:oe(),noindex:oe(),schema:oe()})});const SE=j({name:p(),displayName:p().optional(),keyUrl:p().optional(),modelHint:p().optional(),model:p().optional(),defaultModel:p().optional(),configured:oe(),quota:OT.optional(),vertexConfigured:oe().optional()}),wb=j({configured:oe()});j({providers:A(SE).default([]),google:wb,bing:wb});const Ys=ie(["queued","running","completed","partial","failed","cancelled"]),Ht=Ys.enum,x0=ie(["answer-visibility","site-audit","gsc-sync","inspect-sitemap","ga-sync","bing-inspect","bing-inspect-sitemap","backlink-extract","traffic-sync","aeo-discover-seed","aeo-discover-probe","gbp-sync","ads-sync"]),Ne=x0.enum,w0=ie(["manual","scheduled","config-apply","backfill","probe"]),Bs=w0.enum,Ai=ie(["cited","not-cited"]),lc=Ai.enum,cc=ie(["visible","not-visible"]);cc.enum;const uc=ie(["mentioned","not-mentioned"]);uc.enum;const j0=ie(["new","cited","lost","emerging","not-cited"]);j0.enum;const xE=ie(["new","mentioned","lost","emerging","not-mentioned"]);xE.enum;const wE=ie([Bs.manual,Bs.probe]);j({kind:qt(Ne["answer-visibility"]).optional(),trigger:wE.optional(),providers:A(ya).optional(),queries:A(p().min(1)).min(1).optional(),location:p().min(1).optional(),allLocations:oe().optional(),noLocation:oe().optional()}).refine(e=>+!!e.location+ +!!e.allLocations+ +!!e.noLocation<=1,{message:'Only one of "location", "allLocations", or "noLocation" may be provided'});const jE=j({message:p(),raw:qn().optional()}),NE=j({message:p().optional(),providers:lt(p(),jE).optional()}),kE=j({id:p(),projectId:p(),kind:x0,status:Ys,trigger:w0.default("manual"),location:p().nullable().optional(),queries:A(p()).nullable().optional(),startedAt:p().nullable().optional(),finishedAt:p().nullable().optional(),error:NE.nullable().optional(),createdAt:p()});function ip(e){if(e.providers){const n=Object.entries(e.providers);if(n.length===1){const[i,r]=n[0];return`${i}: ${r.message}`}if(n.length>1)return n.map(([i,r])=>`${i}: ${r.message}`).join(" • ")}return e.message??"Run failed."}const N0=j({uri:p(),title:p()}),k0=j({id:p(),runId:p(),queryId:p(),query:p().optional(),provider:ya,citationState:Ai,answerMentioned:oe().optional(),visibilityState:cc.optional(),mentionState:uc.optional(),transition:j0.optional(),answerText:p().nullable().optional(),citedDomains:A(p()).default([]),competitorOverlap:A(p()).default([]),recommendedCompetitors:A(p()).default([]),matchedTerms:A(p()).default([]),groundingSources:A(N0).default([]),searchQueries:A(p()).default([]),model:p().nullable().optional(),location:p().nullable().optional(),createdAt:p()});j({snapshots:A(k0),total:v().int().nonnegative()});const AE=j({queryId:p().nullable(),query:p().nullable(),run1State:Ai.nullable(),run2State:Ai.nullable(),run1AnswerMentioned:oe().nullable(),run2AnswerMentioned:oe().nullable(),run1VisibilityState:cc.nullable(),run2VisibilityState:cc.nullable(),run1MentionState:uc.nullable().optional(),run2MentionState:uc.nullable().optional(),changed:oe(),visibilityChanged:oe()});j({run1:p(),run2:p(),diff:A(AE)});const _E=kE.extend({snapshots:A(k0).optional()}),CE=j({totalRuns:v().int().nonnegative(),run:_E.nullable()});j({id:p(),projectId:p().nullable().optional(),actor:p(),action:p(),entityType:p(),entityId:p().nullable().optional(),diff:qn().optional(),createdAt:p()});const zE=ie(["yes","no","unknown","not-mentioned"]),jb=A(p().min(1));j({companyName:p().min(1),domain:p().min(1),queries:jb.optional(),phrases:jb.optional(),competitors:A(p().min(1)).optional().default([])}).superRefine((e,n)=>{e.queries!==void 0&&e.phrases!==void 0&&n.addIssue({code:"custom",message:"Use queries; phrases is accepted only as a legacy alias when queries is omitted",path:["phrases"]})});const TE=j({name:p(),count:v().int().nonnegative()}),EE=j({id:p(),name:p(),weight:v(),score:v(),findings:A(j({type:p(),message:p()})).default([]),recommendations:A(p()).default([])}),OE=j({url:p(),finalUrl:p(),auditedAt:p(),overallScore:v(),summary:p(),factors:A(EE).default([])}),DE=j({industry:p(),summary:p(),services:A(p()).default([]),categoryTerms:A(p()).default([])}),RE=j({provider:p(),displayName:p(),model:p().nullable().optional(),mentioned:oe(),cited:oe(),describedAccurately:zE,accuracyNotes:p().nullable().optional(),incorrectClaims:A(p()).default([]),recommendedCompetitors:A(p()).default([]),citedDomains:A(p()).default([]),groundingSources:A(N0).default([]),searchQueries:A(p()).default([]),answerText:p(),error:p().nullable().optional()}),ME=j({query:p(),providerResults:A(RE).default([])}),BE=j({totalQueries:v().int().nonnegative(),totalProviders:v().int().nonnegative(),totalComparisons:v().int().nonnegative(),mentionCount:v().int().nonnegative(),citationCount:v().int().nonnegative(),topCompetitors:A(TE).default([]),visibilityGap:p(),whatThisMeans:A(p()).default([]),recommendedActions:A(p()).default([])});j({companyName:p(),domain:p(),homepageUrl:p(),generatedAt:p(),queries:A(p()).default([]),competitors:A(p()).default([]),profile:DE,audit:OE,queryResults:A(ME).default([]),summary:BE});const A0=ie(["pass","partial","fail"]);A0.enum;const _0=ie(["up","down","flat"]);_0.enum;const LE=j({id:p(),name:p(),weight:v(),avgScore:v(),status:A0,pagesPassing:v().int().nonnegative(),pagesPartial:v().int().nonnegative(),pagesFailing:v().int().nonnegative()}),qE=j({factorId:p(),factorName:p(),avgScore:v(),affectedPages:v().int().nonnegative(),totalPages:v().int().nonnegative(),affectedPct:v().int().nonnegative(),topRecommendations:A(p()).default([])});j({project:p(),hasData:oe(),runId:p().nullable(),runStatus:Ys.nullable(),sitemapUrl:p().nullable(),auditedAt:p().nullable(),aggregateScore:v(),pagesDiscovered:v().int().nonnegative(),pagesAudited:v().int().nonnegative(),pagesSkipped:v().int().nonnegative(),pagesErrored:v().int().nonnegative(),deltaScore:v().nullable(),trend:_0.nullable(),previousScore:v().nullable(),previousAuditedAt:p().nullable(),factors:A(LE).default([]),crossCuttingIssues:A(qE).default([]),prioritizedFixes:A(p()).default([])});const UE=j({id:p(),name:p(),weight:v(),score:v()}),$E=j({url:p(),overallScore:v(),status:ie(["success","error"]),error:p().nullable().optional(),factors:A(UE).default([])});j({project:p(),runId:p().nullable(),auditedAt:p().nullable(),total:v().int().nonnegative(),pages:A($E).default([])});const IE=j({runId:p(),auditedAt:p(),aggregateScore:v(),pagesAudited:v().int().nonnegative()});j({project:p(),points:A(IE).default([])});j({sitemapUrl:p().url().optional(),limit:v().int().positive().max(2e3).optional()});j({runId:p(),status:Ys});const sp=ie(["answer-visibility","traffic-sync","gbp-sync","data-refresh","backlinks-sync","site-audit","ads-sync"]);sp.enum;j({id:p(),projectId:p(),kind:sp,cronExpr:p(),preset:p().nullable().optional(),timezone:p().default("UTC"),enabled:oe().default(!0),providers:A(ya).default([]),sourceId:p().nullable().optional(),lastRunAt:p().nullable().optional(),nextRunAt:p().nullable().optional(),createdAt:p(),updatedAt:p()});j({kind:sp.optional(),preset:p().optional(),cron:p().optional(),timezone:p().optional().default("UTC"),enabled:oe().optional().default(!0),providers:A(ya).optional().default([]),sourceId:p().optional()}).refine(e=>e.preset&&!e.cron||!e.preset&&e.cron,{message:'Exactly one of "preset" or "cron" must be provided'});const rp=ie(["competitor","directory","social","forum","news","reference","blog","ecommerce","video","academic","other"]);rp.enum;const op=ie(["cited","aspirational","wasted-surface"]),Nb=op.enum;Nb.cited,Nb.aspirational;const xc=ie(["direct-competitor","ota-aggregator","editorial-media","other","unknown"]),VE=xc.enum;VE["direct-competitor"];const wc=ie(["queued","seeding","probing","completed","failed"]);wc.enum;const C0=j({domain:p().min(1),hits:v().int().positive(),competitorType:xc.default("unknown")}),PE=j({id:p(),sessionId:p(),projectId:p(),query:p(),bucket:op.nullable().default(null),citationState:Ai,citedDomains:A(p()).default([]),answerMentioned:oe().nullable().default(null),createdAt:p()}),GE=j({id:p(),projectId:p(),status:wc,icpDescription:p().nullable().optional(),seedProvider:p().nullable().optional(),seedCountRaw:v().int().nullable().optional(),seedCount:v().int().nullable().optional(),dedupThreshold:v().nullable().optional(),probeCount:v().int().nullable().optional(),citedCount:v().int().nullable().default(null),aspirationalCount:v().int().nullable().default(null),wastedCount:v().int().nullable().default(null),competitorMap:A(C0).default([]),warning:p().nullable().optional(),error:p().nullable().optional(),startedAt:p().nullable().optional(),finishedAt:p().nullable().optional(),createdAt:p()});GE.extend({probes:A(PE).default([])});const HE=500;j({icpDescription:p().min(1).optional(),dedupThreshold:v().min(0).max(1).optional(),maxProbes:v().int().positive().max(HE).optional(),locations:A(p().min(1)).optional()});j({buckets:A(op).min(1).optional(),includeCompetitors:oe().optional(),competitorTypes:A(xc).min(1).optional()});j({sessionId:p(),projectId:p(),status:wc,queriesByBucket:j({cited:A(p()),aspirational:A(p()),"wasted-surface":A(p())}),suggestedCompetitors:A(C0)});j({sessionId:p(),projectId:p(),promoted:j({queries:A(p()),competitors:A(p())}),skipped:j({queries:A(p()),competitors:A(p())})});f0([qt("cli"),p().regex(/^discovery:.+$/)]);const QE=j({query:p().min(1),probeHits:v().int().positive()}),KE=j({rawCandidates:v().int().nonnegative(),admitted:v().int().nonnegative(),rejected:j({belowFloor:v().int().nonnegative(),length:v().int().nonnegative(),navigational:v().int().nonnegative(),duplicate:v().int().nonnegative(),offAnchor:v().int().nonnegative(),semanticDuplicate:v().int().nonnegative()})});j({sessionId:p(),projectId:p(),provider:p(),status:wc,minProbeHits:v().int().positive(),anchorApplied:oe(),semanticNoveltyApplied:oe(),candidates:A(QE),stats:KE});const lp=ie(["own","direct-competitor","ota-aggregator","editorial-media","other"]);lp.enum;const z0=ie(["7d","30d","90d","all"]),kb=ie(["improving","declining","stable"]),ZE=ie(["mentioned","cited"]);ZE.enum;const Cf=j({citationRate:v(),cited:v().int(),total:v().int(),mentionRate:v(),mentionedCount:v().int()}),YE=j({startDate:p(),endDate:p(),citationRate:v(),cited:v().int(),total:v().int(),queryCount:v().int(),mentionRate:v(),mentionedCount:v().int(),byProvider:lt(p(),Cf)}),XE=j({date:p(),delta:v().int(),label:p()});j({window:z0,buckets:A(YE),overall:Cf,byProvider:lt(p(),Cf),trend:kb,mentionTrend:kb,queryChanges:A(XE)});const Ab=j({category:rp,label:p(),count:v().int(),percentage:v(),topDomains:A(j({domain:p(),count:v().int()}))}),JE=j({domain:p(),count:v().int(),percentage:v(),category:rp,label:p(),surfaceClass:lp}),FE=j({surfaceClass:lp,label:p(),count:v().int(),percentage:v(),domainCount:v().int()}),_b=j({totalCitedSlots:v().int(),domainTotal:v().int(),entries:A(JE),truncatedDomainCount:v().int(),truncatedCitedSlots:v().int(),bySurfaceClass:A(FE)});j({overall:A(Ab),byQuery:lt(p(),A(Ab)),ranked:_b,byProvider:lt(p(),_b),runId:p(),window:z0,limit:v().int().nullable()});const cp=j({total:v().int(),checked:v().int(),mentioned:v().int(),cited:v().int(),mentionRate:v().nullable(),citedRate:v().nullable()}),T0=cp.extend({provider:p(),firstObserved:p(),lastObserved:p()}),WE=cp.extend({queryId:p().nullable(),query:p(),firstObserved:p(),lastObserved:p(),providers:A(T0).optional()}),eO=j({since:p().nullable(),until:p().nullable(),lastRuns:v().int().nullable(),runCount:v().int()}),tO=ie(["provider"]);j({project:p(),groupBy:tO.optional(),window:eO,totals:cp,byProvider:A(T0).optional(),queries:A(WE)});j({id:p(),projectId:p(),propertyId:p(),clientEmail:p(),connected:oe(),createdAt:p(),updatedAt:p()});j({date:p(),landingPage:p(),sessions:v(),organicSessions:v(),users:v()});const up=ie(["session","first_user","manual_utm"]),nO=j({source:p(),medium:p(),sessions:v(),users:v(),sourceDimension:up}),aO=j({source:p(),medium:p(),sourceDimension:up,landingPage:p(),sessions:v(),users:v()}),iO=j({source:p(),medium:p(),sessions:v(),users:v(),channelGroup:p()}),Fr=j({sessions:v(),sharePct:v(),sharePctDisplay:p()}),sO=j({organic:Fr,social:Fr,direct:Fr,ai:Fr,other:Fr});j({totalSessions:v(),totalOrganicSessions:v(),totalDirectSessions:v(),totalUsers:v(),topPages:A(j({landingPage:p(),sessions:v(),organicSessions:v(),directSessions:v(),users:v()})),aiReferrals:A(nO),aiReferralLandingPages:A(aO),aiSessionsDeduped:v(),aiUsersDeduped:v(),aiSessionsBySession:v(),aiUsersBySession:v(),socialReferrals:A(iO),socialSessions:v(),socialUsers:v(),channelBreakdown:sO,organicSharePct:v(),aiSharePct:v(),aiSharePctBySession:v(),directSharePct:v(),socialSharePct:v(),organicSharePctDisplay:p(),aiSharePctDisplay:p(),aiSharePctBySessionDisplay:p(),directSharePctDisplay:p(),socialSharePctDisplay:p(),otherSessions:v(),otherSharePct:v(),otherSharePctDisplay:p(),lastSyncedAt:p().nullable()});j({connected:oe(),propertyId:p().nullable(),clientEmail:p().nullable(),authMethod:ie(["service-account","oauth"]).nullable(),lastSyncedAt:p().nullable(),createdAt:p().nullable().optional(),updatedAt:p().nullable().optional()});j({synced:oe(),rowCount:v().int().nonnegative(),aiReferralCount:v().int().nonnegative(),socialReferralCount:v().int().nonnegative(),days:v().int().nonnegative(),syncedAt:p(),syncedComponents:A(p()).optional()});j({date:p(),source:p(),medium:p(),landingPage:p(),sessions:v(),users:v(),sourceDimension:up});j({date:p(),source:p(),medium:p(),sessions:v(),users:v(),channelGroup:p()});j({date:p(),sessions:v(),organicSessions:v(),users:v()});function dc(e){return e.toLowerCase().replace(/[^a-z0-9]/g,"")}const E0=ie(["claude","openai","gemini","zai"]),rO=j({id:E0,label:p(),defaultModel:p(),configured:oe(),keySource:ie(["config","env"]).nullable()});j({providers:A(rO).default([]),defaultProvider:E0.nullable()});const oO=ie(["aero","user","compaction"]);oO.enum;const O0=128;j({key:p().min(1).max(O0),value:p().min(1)});j({key:p().min(1).max(O0)});const Xs=ie(["commoncrawl","bing-webmaster"]);Xs.enum;const dp=ie(["queued","downloading","querying","ready","failed"]);dp.enum;j({id:p(),release:p(),status:dp,phaseDetail:p().nullable().optional(),vertexPath:p().nullable().optional(),edgesPath:p().nullable().optional(),vertexSha256:p().nullable().optional(),edgesSha256:p().nullable().optional(),vertexBytes:v().int().nullable().optional(),edgesBytes:v().int().nullable().optional(),projectsProcessed:v().int().nullable().optional(),domainsDiscovered:v().int().nullable().optional(),downloadStartedAt:p().nullable().optional(),downloadFinishedAt:p().nullable().optional(),queryStartedAt:p().nullable().optional(),queryFinishedAt:p().nullable().optional(),error:p().nullable().optional(),createdAt:p(),updatedAt:p()});const lO=j({linkingDomain:p(),numHosts:v().int(),source:Xs}),cO=j({projectId:p(),release:p(),targetDomain:p(),totalLinkingDomains:v().int(),totalHosts:v().int(),top10HostsShare:p(),queriedAt:p(),source:Xs,excludedLinkingDomains:v().int().optional(),excludedHosts:v().int().optional()});j({source:Xs,summary:cO.nullable(),total:v().int(),rows:A(lO)});j({release:p(),totalLinkingDomains:v().int(),totalHosts:v().int(),top10HostsShare:p(),queriedAt:p(),source:Xs});const uO=j({source:Xs,connected:oe(),hasData:oe(),latestRelease:p().nullable(),totalLinkingDomains:v().int(),lastSyncedAt:p().nullable()});j({projectId:p(),targetDomain:p(),sources:A(uO),anyConnected:oe(),anyData:oe()});j({duckdbInstalled:oe(),duckdbVersion:p().nullable().optional(),duckdbSpec:p(),pluginDir:p()});j({installed:oe(),version:p(),path:p(),alreadyPresent:oe()});j({release:p(),vertexUrl:p(),edgesUrl:p(),vertexBytes:v().int().nullable(),edgesBytes:v().int().nullable(),lastModified:p().nullable()});j({release:p(),syncStatus:dp.nullable(),bytes:v().int(),lastUsedAt:p().nullable()});const fp=ie(["positive","caution","negative","neutral"]),Qa=j({label:p(),value:p(),delta:p(),tone:fp,description:p(),tooltip:p().optional(),trend:A(v()),progress:v().optional(),providerCoverage:p().optional()}),dO=Qa.extend({breakdown:j({projectMentionSnapshots:v().int().nonnegative(),competitorMentionSnapshots:v().int().nonnegative(),perCompetitor:A(j({domain:p(),mentionSnapshots:v().int().nonnegative(),shareOfCompetitiveTotal:v()})),snapshotsWithAnswerText:v().int().nonnegative(),snapshotsTotal:v().int().nonnegative()})}),of=j({gained:v().int().nonnegative(),lost:v().int().nonnegative(),tone:fp,hasPreviousRun:oe(),gainedQueries:A(p()).optional(),lostQueries:A(p()).optional()}),fO=j({hasPreviousRun:oe(),comparable:oe(),querySetChanged:oe(),previousRunAt:p().nullable(),currentQueryCount:v().int().nonnegative(),previousQueryCount:v().int().nonnegative(),comparableQueryCount:v().int().nonnegative(),addedQueryCount:v().int().nonnegative(),removedQueryCount:v().int().nonnegative(),addedQueries:A(p()),removedQueries:A(p())}),pO=j({id:p(),projectId:p(),runId:p().nullable(),type:ie(["regression","gain","opportunity","first-citation","provider-pickup","persistent-gap","competitor-gained","competitor-lost","gbp-lodging-gap","gbp-listing-discrepancy","gbp-cta-gap","gbp-description-missing","gbp-metric-drop","gbp-keyword-drop"]),severity:ie(["critical","high","medium","low"]),title:p(),query:p(),provider:p(),recommendation:j({action:p(),target:p().optional(),reason:p()}).optional(),cause:j({cause:p(),competitorDomain:p().optional(),details:p().optional()}).optional(),dismissed:oe(),createdAt:p()}),mO=j({id:p(),projectId:p(),runId:p().nullable(),overallCitedRate:v(),overallMentionRate:v(),totalPairs:v().int().nonnegative(),citedPairs:v().int().nonnegative(),mentionedPairs:v().int().nonnegative(),providerBreakdown:lt(p(),j({citedRate:v(),mentionRate:v(),cited:v().int().nonnegative(),mentioned:v().int().nonnegative(),total:v().int().nonnegative()})),createdAt:p(),status:ie(["ready","no-data"]),reason:qt("no-runs-yet").optional()});j({project:MT,latestRun:CE,health:mO.nullable(),topInsights:A(pO),queryCounts:j({totalQueries:v().int().nonnegative(),citedQueries:v().int().nonnegative(),notCitedQueries:v().int().nonnegative(),citedRate:v(),mentionedQueries:v().int().nonnegative(),notMentionedQueries:v().int().nonnegative(),mentionRate:v()}),providers:A(j({provider:p(),citedRate:v(),cited:v().int().nonnegative(),total:v().int().nonnegative()})),transitions:j({since:p().nullable(),gained:v().int().nonnegative(),lost:v().int().nonnegative(),emerging:v().int().nonnegative()}),scores:j({mention:Qa,visibility:Qa,mentionShare:dO,gapQueries:Qa,mentionGaps:Qa,indexCoverage:Qa,competitorPressure:Qa,runStatus:Qa}),movementSummary:of,citationMovement:of,mentionMovement:of,movementComparison:fO,competitors:A(j({id:p(),domain:p(),citationCount:v().int().nonnegative(),totalQueries:v().int().nonnegative(),pressureLabel:ie(["None","Low","Moderate","High"]),citedQueries:A(p())})),providerScores:A(j({provider:p(),model:p().nullable(),score:v(),cited:v().int().nonnegative(),total:v().int().nonnegative(),trend:A(v()).optional()})),attentionItems:A(j({id:p(),tone:fp,title:p(),detail:p(),actionLabel:p(),href:p()})),runHistory:A(j({runId:p(),createdAt:p(),citedCount:v().int().nonnegative(),totalCount:v().int().nonnegative(),citationRate:v(),mentionedCount:v().int().nonnegative(),mentionRate:v(),status:p()})),suggestedQueries:j({rows:A(j({query:p(),impressions:v(),clicks:v(),avgPosition:v(),reason:p()})),totalCandidates:v().int().nonnegative(),skippedAlreadyTracked:v().int().nonnegative()}),dateRangeLabel:p(),contextLabel:p()});ie(["snapshot","insight"]);const hO=j({kind:qt("snapshot"),id:p(),runId:p(),query:p(),provider:p(),model:p().nullable(),citationState:Ai,matchedField:ie(["answerText","citedDomains","searchQueries","query"]),snippet:p(),createdAt:p()}),gO=j({kind:qt("insight"),id:p(),runId:p().nullable(),type:ie(["regression","gain","opportunity","first-citation","provider-pickup","persistent-gap","competitor-gained","competitor-lost","gbp-lodging-gap","gbp-listing-discrepancy","gbp-cta-gap","gbp-description-missing","gbp-metric-drop","gbp-keyword-drop"]),severity:ie(["critical","high","medium","low"]),title:p(),query:p(),provider:p(),matchedField:ie(["title","query","recommendation","cause"]),snippet:p(),dismissed:oe(),createdAt:p()}),yO=p0("kind",[hO,gO]);j({query:p(),totalHits:v().int().nonnegative(),truncated:oe(),hits:A(yO)});const D0=ie(["create","expand","refresh","add-schema"]);D0.enum;function bL(e){switch(e){case"create":return"Create";case"expand":return"Expand";case"refresh":return"Refresh";case"add-schema":return"Add schema"}}const R0=ie(["gsc","competitor-evidence","both"]);R0.enum;const M0=ie(["high","medium","low"]);M0.enum;const bO=ie(["blog-post","comparison","listicle","how-to","guide","glossary"]);bO.enum;const B0=ie(["proposed","briefed","payload-generated","draft-created","published","validated","dismissed"]);B0.enum;const pp=ie(["ownable","ceded"]);pp.enum;const vO=j({url:p(),gscImpressions:v().nonnegative(),gscClicks:v().nonnegative(),gscAvgPosition:v().nonnegative().nullable(),organicSessions:v().nonnegative()}),SO=j({domain:p(),url:p(),title:p(),citationCount:v().int().nonnegative()}),xO=j({demand:v(),competitor:v(),absence:v(),gapSeverity:v()}),wO=j({actionId:p(),state:B0,lastUpdated:p()}),L0=j({targetRef:p(),query:p(),action:D0,ourBestPage:vO.nullable(),winningCompetitor:SO.nullable(),score:v(),scoreBreakdown:xO,drivers:A(p()),demandSource:R0,actionConfidence:M0,existingAction:wO.nullable(),winnabilityClass:pp,winnability:v().min(0).max(1).nullable()});j({targets:A(L0),contextMetrics:j({totalAiReferralSessions:v().int().nonnegative(),latestRunId:p(),runTimestamp:p()})});const jO=j({targetRef:p(),addressedUrl:p().nullable(),note:p().nullable(),dismissedAt:p()});j({dismissals:A(jO)});j({targetRef:p().min(1),addressedUrl:p().url().optional(),note:p().max(500).optional()});j({targetRef:p(),promptVersion:p(),provider:p(),model:p(),responseText:p(),costMillicents:v().int().nonnegative(),generatedAt:p()});j({provider:p().optional(),model:p().optional(),forceRefresh:oe().optional()});const NO=j({targetQuery:p().trim().min(1),winnabilityClass:pp,angle:p().trim().min(1),whyWinnable:p().trim().min(1),schemaHookup:p().trim().min(1),controllableSurfaceRationale:p().trim().min(1)});j({targetRef:p(),promptVersion:p(),provider:p(),model:p(),brief:NO,costMillicents:v().int().nonnegative(),generatedAt:p()});const kO=j({domain:p(),competitorType:xc,hits:v().int().nonnegative(),updatedAt:p()});j({classifications:A(kO)});const AO=j({uri:p(),title:p(),domain:p(),isOurDomain:oe(),isCompetitor:oe(),citationCount:v().int().nonnegative(),providers:A(ya)}),q0=j({query:p(),groundingSources:A(AO)});j({sources:A(q0),latestRunId:p()});const U0=j({query:p(),competitorDomains:A(p()),competitorCount:v().int().nonnegative(),missRate:v().min(0).max(1),lastSeenInRunId:p()});j({gaps:A(U0),latestRunId:p()});const $0=ie(["ok","warn","fail","skipped"]);$0.enum;const mp=ie(["global","project"]);mp.enum;const I0=ie(["auth","config","providers","integrations","database","schedules","agent"]);I0.enum;const _O=j({id:p(),category:I0,scope:mp,title:p(),status:$0,code:p().describe('Stable machine-readable code (e.g. "google.token.refresh-failed"). Use this for filtering and remediation logic.'),summary:p(),remediation:p().nullable().optional().describe('Operator-facing next step. Null when status is "ok" or no specific remediation applies.'),details:lt(p(),qn()).optional().describe("Structured context — principal email, redirect URI, missing scopes, etc. Stable per check id."),durationMs:v().int().nonnegative().describe("How long the check took to execute.")});j({scope:mp,project:p().nullable().describe('Project name when scope is "project", null otherwise.'),generatedAt:p().describe("ISO-8601 timestamp when this doctor run started."),durationMs:v().int().nonnegative(),summary:j({total:v().int().nonnegative(),ok:v().int().nonnegative(),warn:v().int().nonnegative(),fail:v().int().nonnegative(),skipped:v().int().nonnegative()}),checks:A(_O)});const CO=j({provider:p(),citationState:Ai,cited:oe(),mentioned:oe(),runId:p(),runCreatedAt:p()}),zO=j({queryId:p(),query:p(),providers:A(CO),citedCount:v().int().nonnegative(),mentionedCount:v().int().nonnegative(),totalProviders:v().int().nonnegative()}),TO=j({queryId:p(),query:p(),provider:p(),citingCompetitors:A(p()),runId:p(),runCreatedAt:p()}),EO=j({providersConfigured:v().int().nonnegative(),providersCiting:v().int().nonnegative(),providersMentioning:v().int().nonnegative(),totalQueries:v().int().nonnegative(),queriesCitedAndMentioned:v().int().nonnegative(),queriesCitedOnly:v().int().nonnegative(),queriesMentionedOnly:v().int().nonnegative(),queriesInvisible:v().int().nonnegative(),latestRunId:p().nullable(),latestRunAt:p().nullable()});j({summary:EO,byQuery:A(zO),competitorGaps:A(TO),status:ie(["ready","no-data"]),reason:ie(["no-runs-yet","no-queries"]).optional()});const OO=ie(["prompt","request-param","browser-geo","ignored"]),DO=j({label:p(),city:p(),region:p(),country:p(),otherConfiguredLabels:A(p())}),RO=j({provider:p(),treatment:OO,description:p()}),MO=j({generatedAt:p(),project:j({id:p(),name:p(),displayName:p(),canonicalDomain:p(),country:p(),language:p()}),location:DO.nullable(),providerLocationHandling:A(RO),periodStart:p().nullable(),periodEnd:p().nullable()}),BO=j({citationRate:v(),citedQueryCount:v(),totalQueryCount:v(),mentionRate:v(),mentionedQueryCount:v(),trend:ie(["up","down","flat","unknown"]),queryCount:v(),competitorCount:v(),providerCount:v(),gsc:j({clicks:v(),impressions:v(),ctr:v(),avgPosition:v(),periodStart:p(),periodEnd:p()}).nullable(),ga:j({sessions:v(),users:v(),periodStart:p(),periodEnd:p()}).nullable(),findings:A(j({title:p(),detail:p(),tone:ie(["positive","caution","negative","neutral"])}))}),LO=j({citationState:ie(["cited","not-cited","pending"]),answerMentioned:oe().nullable(),model:p().nullable()}),qO=j({queries:A(p()),providers:A(p()),matrix:A(A(LO.nullable())),providerRates:A(j({provider:p(),citedCount:v(),totalCount:v(),citationRate:v()}))}),UO=j({domain:p(),citationCount:v(),totalCount:v(),pressureLabel:ie(["High","Moderate","Low","None"]),citedQueries:A(p()),sharePct:v(),theirCitedPages:A(j({url:p(),citedFor:A(p())}))}),$O=j({projectCitationCount:v(),competitors:A(UO)}),IO=j({domain:p(),mentionCount:v(),totalCount:v(),pressureLabel:ie(["High","Moderate","Low","None"]),mentionedQueries:A(p()),sharePct:v()}),VO=j({projectMentionCount:v(),totalAnswerSnapshots:v(),competitors:A(IO)}),PO=j({category:p(),label:p(),count:v(),sharePct:v()}),GO=j({categories:A(PO),topDomains:A(j({domain:p(),count:v(),isCompetitor:oe()}))}),HO=j({query:p(),clicks:v(),impressions:v(),ctr:v(),avgPosition:v(),category:ie(["brand","lead-gen","industry","other"])}),QO=j({periodStart:p(),periodEnd:p(),totalClicks:v(),totalImpressions:v(),ctr:v(),avgPosition:v(),topQueries:A(HO),categoryBreakdown:A(j({category:ie(["brand","lead-gen","industry","other"]),clicks:v(),impressions:v(),sharePct:v()})),trend:A(j({date:p(),clicks:v(),impressions:v()})),trackedButNoGsc:A(p()),gscButNotTracked:A(p())}),KO=j({totalSessions:v(),totalUsers:v(),totalOrganicSessions:v(),periodStart:p(),periodEnd:p(),topLandingPages:A(j({page:p(),sessions:v(),users:v(),organicSessions:v()})),channelBreakdown:A(j({channel:p(),sessions:v(),sharePct:v()}))}),ZO=j({totalSessions:v(),organicSessions:v(),paidSessions:v(),channels:A(j({channelGroup:p(),sessions:v(),sharePct:v()})),topCampaigns:A(j({source:p(),medium:p(),sessions:v()}))}),YO=j({totalSessions:v(),totalUsers:v(),bySource:A(j({source:p(),sessions:v(),users:v(),sharePct:v()})),trend:A(j({date:p(),sessions:v()})),topLandingPages:A(j({page:p(),sessions:v(),users:v()}))}),XO=j({windowStart:p(),windowEnd:p(),hasData:oe(),verifiedCrawlerHits:j({current:v(),prior:v(),deltaPct:v().nullable()}),unverifiedCrawlerHits:j({current:v(),prior:v(),deltaPct:v().nullable()}),aiUserFetchHits:j({current:v(),prior:v(),deltaPct:v().nullable()}),referralArrivals:j({current:v(),prior:v(),deltaPct:v().nullable()}),byOperator:A(j({operator:p(),verifiedHits:v(),unverifiedHits:v(),userFetchHits:v(),referralArrivals:v(),deltaPct:v().nullable()})),topCrawledPaths:A(j({path:p(),verifiedHits:v(),distinctOperators:v()})),referralProducts:A(j({product:p(),arrivals:v(),distinctLandingPaths:v()})),dailyTrend:A(j({date:p(),verifiedCrawlerHits:v(),userFetchHits:v(),referralArrivals:v()})),topReferralLandingPaths:A(j({path:p(),arrivals:v(),distinctProducts:v()}))}),JO=j({provider:ie(["google","bing"]).nullable(),total:v(),indexed:v(),notIndexed:v(),deindexed:v(),unknown:v(),indexedPct:v()}),FO=j({runId:p(),date:p(),citationRate:v(),citedQueryCount:v(),totalQueryCount:v(),mentionRate:v(),mentionedQueryCount:v(),providerRates:A(j({provider:p(),citationRate:v()}))}),zf=j({id:p(),type:ie(["regression","gain","opportunity"]),severity:ie(["critical","high","medium","low"]),title:p(),query:p(),provider:p(),recommendation:p().nullable(),createdAt:p(),instanceCount:v()}),WO=j({horizon:ie(["immediate","short-term","medium-term"]),title:p(),rationale:p()}),Wr=j({current:v(),prior:v(),deltaAbs:v(),direction:ie(["up","down","flat"]),window:v().optional()}),e4=j({provider:p(),current:v(),prior:v(),deltaAbs:v(),direction:ie(["up","down","flat"])}),t4=j({enoughHistory:oe(),headline:p(),citationRate:Wr.nullable(),mentionRate:Wr.nullable(),citedQueryCount:Wr.nullable(),gscClicksDelta:Wr.nullable(),aiReferralsDelta:Wr.nullable(),providerMovements:A(e4),wins:A(zf),regressions:A(zf)});ie(["agency","client"]);const n4=ie(["agency","client","both"]),a4=ie(["immediate","short-term","medium-term"]),i4=ie(["high","medium","low"]);ie(["positive","caution","negative","neutral"]);const s4=ie(["content","competitors","provider","search-demand","indexing","location","monitoring"]),hp=j({audience:n4,priority:v(),horizon:a4,category:s4,title:p(),action:p(),why:A(p()),evidence:A(p()),successMetric:p(),confidence:i4,targetRef:p().optional()}),r4=j({headline:p(),overview:p(),actionItems:A(hp),confidenceNotes:A(p())}),o4=j({title:p(),detail:p(),severity:ie(["positive","caution","negative","neutral"]),evidence:A(p())}),l4=j({priorities:A(hp),diagnostics:A(o4)});function vL(e){return e.horizon==="immediate"?"negative":e.confidence==="high"?"caution":e.confidence==="low"?"neutral":"caution"}function SL(e){switch(e){case"critical":return"Critical";case"high":return"High";case"medium":return"Medium";case"low":return"Low"}}function xL(e){switch(e){case"immediate":return"Immediate";case"short-term":return"Short term";case"medium-term":return"Medium term"}}function wL(e){switch(e){case"content":return"Content";case"competitors":return"Competitors";case"provider":return"Provider";case"search-demand":return"Search demand";case"indexing":return"Indexing";case"location":return"Location";case"monitoring":return"Monitoring"}}function jL(e){switch(e){case"high":return"High";case"medium":return"Medium";case"low":return"Low"}}j({meta:MO,executiveSummary:BO,citationScorecard:qO,competitorLandscape:$O,mentionLandscape:VO,aiSourceOrigin:GO,gsc:QO.nullable(),ga:KO.nullable(),socialReferrals:ZO.nullable(),aiReferrals:YO.nullable(),serverActivity:XO.nullable(),indexingHealth:JO.nullable(),citationsTrend:A(FO),whatsChanged:t4,insights:A(zf),recommendedNextSteps:A(WO),actionPlan:A(hp),clientSummary:r4,agencyDiagnostics:l4,contentOpportunities:A(L0),contentGaps:A(U0),groundingSources:A(q0)});const c4=ie(["claude","codex"]);c4.enum;const u4=ie(["claude","codex","all"]);u4.enum;const V0=j({content:v().int().nonnegative(),sitemap:v().int().nonnegative(),robots:v().int().nonnegative(),asset:v().int().nonnegative(),other:v().int().nonnegative()}),d4=ie(["content","sitemap","robots","asset","other"]),gp=ie(["cloud-run","wordpress","cloudflare","vercel","generic-log"]);gp.enum;const f4=ie(["raw-request-events","aggregate-request-metrics","request-url","status-code","user-agent","remote-ip","referer","cursor-pull"]);f4.enum;const p4=ie(["raw-request","aggregate-bucket"]),m4=p4.enum,h4=ie(["observed","provider-aggregated","inferred"]),g4=h4.enum,y4=j({type:p().nullable(),labels:lt(p(),p())}),b4=j({sourceType:gp,evidenceKind:qt(m4["raw-request"]),confidence:qt(g4.observed),eventId:p().min(1),observedAt:p().min(1),method:p().nullable(),requestUrl:p().nullable(),host:p().nullable(),path:p().min(1),queryString:p().nullable(),status:v().int().nullable(),userAgent:p().nullable(),remoteIp:p().nullable(),referer:p().nullable(),latencyMs:v().nullable(),requestSizeBytes:v().int().nullable(),responseSizeBytes:v().int().nullable(),providerResource:y4,providerLabels:lt(p(),p())});j({events:A(b4),rawEntryCount:v().int().nonnegative(),skippedEntryCount:v().int().nonnegative(),nextPageToken:p().optional(),filter:p()});const P0=ie(["connected","paused","error","archived"]),NL=P0.enum,G0=ie(["oauth","service-account"]);G0.enum;const v4=ie(["verified","claimed_unverified","unknown_ai_like"]),kL=v4.enum;j({gcpProjectId:p().min(1),serviceName:p().nullable().optional(),location:p().nullable().optional(),authMode:G0});j({baseUrl:p().url(),username:p().min(1)});const yp=ie(["production","preview"]);yp.enum;j({projectId:p().min(1),teamId:p().min(1),environment:yp});const H0=j({id:p(),projectId:p(),sourceType:gp,displayName:p(),status:P0,lastSyncedAt:p().nullable(),lastCursor:p().nullable(),lastError:p().nullable(),archivedAt:p().nullable(),config:lt(p(),qn()),createdAt:p(),updatedAt:p()});j({gcpProjectId:p().min(1),serviceName:p().min(1).optional(),location:p().min(1).optional(),displayName:p().min(1).optional(),keyJson:p().optional()});j({baseUrl:p().url(),username:p().min(1),applicationPassword:p().min(1),displayName:p().min(1).optional()});j({projectId:p().min(1),teamId:p().min(1),token:p().min(1),environment:yp.optional(),displayName:p().min(1).optional()});j({sourceId:p(),runId:p(),syncedAt:p(),pulledEvents:v().int().nonnegative(),selfTrafficExcluded:v().int().nonnegative(),crawlerHits:v().int().nonnegative(),aiUserFetchHits:v().int().nonnegative(),aiReferralHits:v().int().nonnegative(),unknownHits:v().int().nonnegative(),crawlerBucketRows:v().int().nonnegative(),aiUserFetchBucketRows:v().int().nonnegative(),aiReferralBucketRows:v().int().nonnegative(),sampleRows:v().int().nonnegative(),windowStart:p(),windowEnd:p()});j({days:v().int().positive().optional()});j({advanceToNow:qt(!0)});j({sourceId:p(),runId:p(),status:Ys,windowStart:p(),windowEnd:p(),daysRequested:v().int().positive(),daysApplied:v().int().positive()});const S4=j({crawlerHits:v().int().nonnegative(),crawlerContentHits:v().int().nonnegative(),crawlerInfraHits:v().int().nonnegative(),crawlerSegments:V0,aiUserFetchHits:v().int().nonnegative(),aiReferralHits:v().int().nonnegative(),sampleCount:v().int().nonnegative()});j({sources:A(H0)});const x4=H0.extend({totals24h:S4,latestRun:j({runId:p(),status:Ys,startedAt:p().nullable(),finishedAt:p().nullable(),error:p().nullable()}).nullable()});j({sources:A(x4)});const w4=ie(["crawler","ai-user-fetch","ai-referral"]),bp=w4.enum,j4=j({kind:qt(bp.crawler),sourceId:p(),tsHour:p(),botId:p(),operator:p(),verificationStatus:p(),pathNormalized:p(),pathClass:d4,status:v().int(),hits:v().int().nonnegative()}),N4=j({kind:qt(bp["ai-user-fetch"]),sourceId:p(),tsHour:p(),botId:p(),operator:p(),verificationStatus:p(),pathNormalized:p(),status:v().int(),hits:v().int().nonnegative()}),k4=j({kind:qt(bp["ai-referral"]),sourceId:p(),tsHour:p(),product:p(),operator:p(),sourceDomain:p(),evidenceType:p(),landingPathNormalized:p(),status:v().int(),hits:v().int().nonnegative()}),A4=p0("kind",[j4,N4,k4]);j({windowStart:p(),windowEnd:p(),totals:j({crawlerHits:v().int().nonnegative(),crawlerContentHits:v().int().nonnegative(),crawlerInfraHits:v().int().nonnegative(),crawlerSegments:V0,aiUserFetchHits:v().int().nonnegative(),aiReferralHits:v().int().nonnegative()}),events:A(A4)});j({apiKey:p().min(1)});j({connected:oe(),adAccountId:p().nullable().optional(),displayName:p().nullable().optional(),currencyCode:p().nullable().optional(),timezone:p().nullable().optional(),status:p().nullable().optional(),lastSyncedAt:p().nullable().optional()});j({disconnected:oe()});j({runId:p(),status:p()});const _4=j({type:p().nullable().optional(),title:p().nullable().optional(),body:p().nullable().optional(),targetUrl:p().nullable().optional()}),C4=j({id:p(),adGroupId:p(),name:p(),status:p(),reviewStatus:p().nullable().optional(),creative:_4.nullable().optional()}),z4=j({id:p(),campaignId:p(),name:p(),status:p(),billingEventType:p().nullable().optional(),maxBidMicros:v().int().nullable().optional(),contextHints:A(p()).default([]),ads:A(C4).default([])}),T4=j({id:p(),name:p(),status:p(),biddingType:p().nullable().optional(),dailySpendLimitMicros:v().int().nullable().optional(),lifetimeSpendLimitMicros:v().int().nullable().optional(),adGroups:A(z4).default([])});j({campaigns:A(T4)});const Q0=ie(["campaign","ad_group"]);Q0.enum;const E4=j({level:Q0,entityId:p(),date:p(),impressions:v().int(),clicks:v().int(),spendMicros:v().int(),ctr:v().nullable(),cpcMicros:v().int().nullable()});j({rows:A(E4),currencyCode:p().nullable().optional()});const O4=j({impressions:v().int(),clicks:v().int(),spendMicros:v().int(),ctr:v().nullable(),cpcMicros:v().int().nullable()});j({connected:oe(),displayName:p().nullable().optional(),currencyCode:p().nullable().optional(),lastSyncedAt:p().nullable().optional(),campaignCount:v().int(),adGroupCount:v().int(),adCount:v().int(),window:j({from:p().nullable(),to:p().nullable()}),totals:O4});var D4=(e=>(e.Clicks="clicks",e.Impressions="impressions",e.CTR="ctr",e.Position="position",e))(D4||{});const AL={clicks:"Clicks",impressions:"Impressions",ctr:"CTR",position:"Position"},_L={clicks:"Clicks",impressions:"Impr",ctr:"CTR",position:"Pos"},CL=ip;function R4(e){const n=[];if(e.message&&n.push(e.message),e.providers)for(const[i,r]of Object.entries(e.providers)){const l=`[${i}] ${r.message}`;r.raw!==void 0?n.push(`${l}
|
|
53
53
|
|
|
54
54
|
${JSON.stringify(r.raw,null,2)}`):n.push(l)}return n.length>0?n.join(`
|
|
55
55
|
|
|
56
56
|
`):"Run failed."}function M4(e){return e.split("-").map(n=>n.charAt(0).toUpperCase()+n.slice(1)).join(" ")}function zL(e){if(!e)return"—";try{return new Date(e).toLocaleString()}catch{return e}}function TL(e){return e===null?"Unknown":e?"Pass":"Fail"}function Cb(e){return e===0?"12:00 AM":e<12?`${e}:00 AM`:e===12?"12:00 PM":`${e-12}:00 PM`}function EL(e,n){return e==="twice-daily"?"twice-daily":e.startsWith("weekly@")?`${e}@${n}`:`daily@${n}`}function OL(e,n){if(!e)return{freq:"custom",hour:6,customCron:n};if(e==="twice-daily")return{freq:"twice-daily",hour:6,customCron:""};const i=e.match(/^daily(?:@(\d+))?$/);if(i)return{freq:"daily",hour:i[1]?parseInt(i[1]):6,customCron:""};const r=e.match(/^(weekly@(?:mon|tue|wed|thu|fri|sat|sun))(?:@(\d+))?$/);return r?{freq:r[1],hour:r[2]?parseInt(r[2]):6,customCron:""}:{freq:"custom",hour:6,customCron:n}}function DL(e,n,i){const r=i==="UTC"?"UTC":i.split("/").pop()?.replace(/_/g," ")??i;if(!e)return`Custom: ${n} · ${r}`;if(e==="twice-daily")return`Twice a day (6am & 6pm) · ${r}`;const l=e.match(/^daily(?:@(\d+))?$/);if(l){const d=l[1]?parseInt(l[1]):6;return`Every day at ${Cb(d)} · ${r}`}const c=e.match(/^weekly@(mon|tue|wed|thu|fri|sat|sun)(?:@(\d+))?$/);if(c){const d={mon:"Monday",tue:"Tuesday",wed:"Wednesday",thu:"Thursday",fri:"Friday",sat:"Saturday",sun:"Sunday"},h=c[2]?parseInt(c[2]):6;return`Every ${d[c[1]]} at ${Cb(h)} · ${r}`}return`${e} · ${r}`}function B4(e,n){return n&&n!==e?`${e} · ${n}`:e}function RL(){const e=Intl.DateTimeFormat().resolvedOptions().timeZone,n=new Intl.DateTimeFormat("en-US",{timeZoneName:"short"}).formatToParts().find(i=>i.type==="timeZoneName")?.value;return B4(e,n)}function L4(e){const n=e.replace(/\/+$/,"")||"/";return n==="/"?"overview":n==="/projects"?"projects":n.startsWith("/projects/")?"project":n==="/runs"?"runs":n==="/traffic"||n.startsWith("/traffic/")?"traffic":n==="/backlinks"?"backlinks":n==="/settings"?"settings":n==="/setup"?"setup":"other"}const q4={bg:"--canonry-embed-bg",fg:"--canonry-embed-fg"},U4=/^(?:#(?:[0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})|rgba?\([0-9.,%\s/]+\)|hsla?\([0-9.,%\s/a-z]+\))$/i;function $4(e){if(!e)return{};const n={};for(const[i,r]of Object.entries(e)){const l=q4[i];if(!l||typeof r!="string")continue;const c=r.trim();U4.test(c)&&(n[l]=c)}return n}const Te=(e,n,i,r)=>{const l={_id:e,baseUrl:n?.baseUrl||(n?.client??K).getConfig().baseUrl};return n?.body&&(l.body=n.body),n?.headers&&(l.headers=n.headers),n?.path&&(l.path=n.path),n?.query&&(l.query=n.query),[l]},I4=e=>Te("getApiV1ProjectsByName",e),V4=e=>Ee({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await jv({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:I4(e)}),Js=e=>Te("getApiV1Projects",e),vp=e=>Ee({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await oj({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:Js(e)}),Sp=e=>Te("getApiV1Runs",e),xp=e=>Ee({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await wj({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:Sp(e)}),P4=e=>Te("getApiV1RunsById",e),K0=e=>Ee({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await Nv({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:P4(e)}),G4=e=>Te("getApiV1Settings",e),H4=e=>Ee({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await kv({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:G4(e)}),Q4=e=>Te("getApiV1ProjectsByNameGoogleConnections",e),ML=e=>Ee({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await Uj({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:Q4(e)}),K4=e=>Te("getApiV1ProjectsByNameGoogleProperties",e),BL=e=>Ee({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await Vj({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:K4(e)}),Z4=e=>Te("getApiV1ProjectsByNameGoogleGscPerformance",e),LL=e=>Ee({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await Qj({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:Z4(e)}),Y4=e=>Te("getApiV1ProjectsByNameGoogleGscPerformanceDaily",e),qL=e=>Ee({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await Kj({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:Y4(e)}),X4=e=>Te("getApiV1ProjectsByNameGoogleGscInspections",e),UL=e=>Ee({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await Yj({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:X4(e)}),J4=e=>Te("getApiV1ProjectsByNameGoogleGscDeindexed",e),$L=e=>Ee({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await Xj({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:J4(e)}),F4=e=>Te("getApiV1ProjectsByNameGoogleGscCoverage",e),IL=e=>Ee({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await Av({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:F4(e)}),W4=e=>Te("getApiV1ProjectsByNameGoogleGscCoverageHistory",e),VL=e=>Ee({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await Jj({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:W4(e)}),PL=e=>Te("getApiV1ProjectsByNameGoogleGscSitemaps",e),eD=e=>Te("getApiV1ProjectsByNameGbpLocations",e),GL=e=>Ee({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await nN({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:eD(e)}),HL=e=>({mutationFn:async i=>{const{data:r}=await aN({...e,...i,throwOnError:!0});return r}}),QL=e=>({mutationFn:async i=>{const{data:r}=await iN({...e,...i,throwOnError:!0});return r}}),tD=e=>Te("getApiV1ProjectsByNameGbpKeywords",e),KL=e=>Ee({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await sN({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:tD(e)}),nD=e=>Te("getApiV1ProjectsByNameGbpPlaces",e),ZL=e=>Ee({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await rN({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:nD(e)}),aD=e=>Te("getApiV1ProjectsByNameGbpSummary",e),YL=e=>Ee({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await oN({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:aD(e)}),iD=e=>Te("getApiV1ProjectsByNameBingStatus",e),XL=e=>Ee({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await uN({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:iD(e)}),sD=e=>Te("getApiV1ProjectsByNameBingSites",e),JL=e=>Ee({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await dN({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:sD(e)}),rD=e=>Te("getApiV1ProjectsByNameBingCoverage",e),FL=e=>Ee({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await _v({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:rD(e)}),oD=e=>Te("getApiV1ProjectsByNameBingInspections",e),WL=e=>Ee({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await pN({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:oD(e)}),lD=e=>Te("getApiV1ProjectsByNameBingPerformance",e),e6=e=>Ee({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await yN({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:lD(e)}),cD=e=>Te("getApiV1ProjectsByNameGaStatus",e),t6=e=>Ee({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await SN({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:cD(e)}),uD=e=>Te("getApiV1ProjectsByNameGaTraffic",e),n6=e=>Ee({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await wN({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:uD(e)}),dD=e=>Te("getApiV1ProjectsByNameGaAiReferralHistory",e),a6=e=>Ee({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await jN({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:dD(e)}),fD=e=>Te("getApiV1ProjectsByNameGaSocialReferralHistory",e),i6=e=>Ee({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await NN({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:fD(e)}),pD=e=>Te("getApiV1ProjectsByNameGaSessionHistory",e),s6=e=>Ee({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await kN({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:pD(e)}),mD=e=>Te("getApiV1ProjectsByNameReport",e),r6=e=>Ee({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await _N({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:mD(e)}),hD=e=>Te("getApiV1ProjectsByNameCitationsVisibility",e),o6=e=>Ee({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await CN({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:hD(e)}),gD=e=>Te("getApiV1ProjectsByNameTrafficSources",e),l6=e=>Ee({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await XN({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:gD(e)}),yD=e=>Te("getApiV1ProjectsByNameTrafficStatus",e),c6=e=>Ee({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await JN({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:yD(e)}),bD=e=>Te("getApiV1ProjectsByNameTrafficSourcesById",e),u6=e=>Ee({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await FN({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:bD(e)}),vD=e=>Te("getApiV1ProjectsByNameTrafficEvents",e),d6=e=>Ee({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await WN({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:vD(e)}),SD=e=>Te("getApiV1ProjectsByNameDiscoverSessions",e),f6=e=>Ee({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await tk({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:SD(e)}),xD=e=>Te("getApiV1ProjectsByNameDiscoverSessionsById",e),p6=e=>Ee({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await nk({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:xD(e)}),wD=e=>Te("getApiV1ProjectsByNameDiscoverSessionsByIdPromote",e),m6=e=>Ee({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await ak({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:wD(e)}),jD=e=>Te("getApiV1ProjectsByNameTechnicalAeo",e),h6=e=>Ee({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await sk({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:jD(e)}),ND=e=>Te("getApiV1ProjectsByNameTechnicalAeoPages",e),g6=e=>Ee({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await rk({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:ND(e)}),kD=e=>Te("getApiV1ProjectsByNameTechnicalAeoTrend",e),y6=e=>Ee({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await ok({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:kD(e)}),AD=e=>Te("getApiV1ProjectsByNameAgentProviders",e),_D=e=>Ee({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await ck({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:AD(e)});function zb(e){return e.state==="ok"?"positive":e.state==="checking"?"neutral":"negative"}function Z0(e){switch(e){case"completed":return"positive";case"partial":return"caution";case"failed":return"negative";case"cancelled":return"caution";case"queued":case"running":return"neutral";default:return"neutral"}}function b6(e){switch(e){case"cited":return"positive";case"emerging":return"caution";case"not-cited":return"caution";case"lost":return"negative";case"pending":return"neutral";default:return"neutral"}}function v6(e){return e==="High"?"negative":e==="Moderate"?"caution":"neutral"}const S6={positive:"text-emerald-400",caution:"text-amber-400",negative:"text-rose-400",neutral:"text-zinc-400"};function CD(e){return e.displayName??e.name.charAt(0).toUpperCase()+e.name.slice(1)}function Is(e){const n=[e.detail,e.hint].filter(Boolean);return n.length>0?n.join(`
|
|
57
57
|
`):void 0}function zD(e,n,i){return e.map(r=>{if(r.id==="api")return{...r,tone:zb(n.apiStatus),detail:n.apiStatus.state==="ok"?"Healthy":"Needs attention",meta:n.apiStatus.detail};if(r.id==="worker")return{...r,tone:zb(n.workerStatus),detail:n.workerStatus.state==="ok"?"Healthy":"Needs attention",meta:n.workerStatus.detail};const l=i.providerStatuses.filter(g=>g.state==="ready").length,c=i.providerStatuses.length,d=l>0,h=i.providerStatuses.filter(g=>g.state==="ready").map(g=>CD(g)).join(" · ");return{...r,label:"Providers",tone:d?"positive":"caution",detail:`${l} of ${c} configured`,meta:h||"None configured"}})}function TD(e,n){if(e.apiStatus.state!=="ok")return"Launch is blocked until the API responds cleanly.";if(e.apiStatus.databaseConfigured===!1)return"Launch is blocked until the API has a database connection configured.";if(e.workerStatus.state!=="ok")return"Launch is blocked until the worker is healthy and heartbeats are current.";if(!n.providerStatuses.some(i=>i.state==="ready"))return"Launch is blocked until at least one provider is configured."}function ED(e,n,i){const r=TD(n,i),l=structuredClone(e);return l.healthChecks=l.healthChecks.map(c=>{if(c.id==="api")return{...c,detail:n.apiStatus.detail,state:n.apiStatus.state==="ok"?"ready":"attention"};if(c.id==="worker")return{...c,detail:n.workerStatus.detail,state:n.workerStatus.state==="ok"?"ready":"attention"};const d=i.providerStatuses.some(h=>h.state==="ready");return{...c,detail:d?"At least one provider configured.":"No providers configured.",state:d?"ready":"attention"}}),l.launchState.enabled=r===void 0,l.launchState.blockedReason=r,l.launchState.summary=r??"Queue a visibility sweep first, then follow with a site audit to explain movement.",l}const Y0="canonry.run-tracker",Tf=new Set;let Tb=!1,OD=0,jc={runs:{},batches:{}};function DD(){const e=_i();for(const n of Tf)n(e)}function RD(e){if(!e)return{runs:{},batches:{}};try{const n=JSON.parse(e);return{runs:n.runs??{},batches:n.batches??{}}}catch{return{runs:{},batches:{}}}}function MD(){typeof window>"u"||window.sessionStorage.setItem(Y0,JSON.stringify(jc))}function X0(){Tb||(Tb=!0,!(typeof window>"u")&&(jc=RD(window.sessionStorage.getItem(Y0))))}function Nc(e){jc=e,MD(),DD()}function _i(){return X0(),jc}function BD(e){return X0(),Tf.add(e),()=>{Tf.delete(e)}}function J0(e){const n=_i();Nc({...n,runs:{...n.runs,[e.id]:{runId:e.id,projectId:e.projectId,projectLabel:e.projectLabel,kind:e.kind,sourceAction:e.sourceAction,lastAnnouncedStatus:e.lastAnnouncedStatus??"queued",trackedAt:e.trackedAt??Date.now()}}})}function lf(e){const n=_i();if(!n.runs[e])return;const{[e]:i,...r}=n.runs;Nc({...n,runs:r})}function LD(e){const n=_i(),i=`batch_${Date.now()}_${++OD}`;return Nc({...n,batches:{...n.batches,[i]:{batchId:i,runIds:e.runIds,queuedCount:e.queuedCount,skippedCount:e.skippedCount}}}),i}function qD(e){const n=_i();if(!n.batches[e])return;const{[e]:i,...r}=n.batches;Nc({...n,batches:r})}function UD(e){return e==="completed"||e==="partial"||e==="failed"||e==="cancelled"}const $D=10*6e4;function ID(e,n,i,r){return e.filter(l=>!n.has(l.runId)&&i-(l.trackedAt??0)>=r)}function VD(e,n){let i=0,r=0,l=0,c=0,d=0;for(const h of e){const g=n[h]?.status;g==="completed"?i+=1:g==="partial"?r+=1:g==="failed"?l+=1:g==="cancelled"?c+=1:d+=1}return{completed:i,partial:r,failed:l,cancelled:c,pending:d,finished:d===0}}const Eb=e=>typeof e=="boolean"?`${e}`:e===0?"0":e,Ob=gv,F0=(e,n)=>i=>{var r;if(n?.variants==null)return Ob(e,i?.class,i?.className);const{variants:l,defaultVariants:c}=n,d=Object.keys(l).map(b=>{const S=i?.[b],x=c?.[b];if(S===null)return null;const N=Eb(S)||Eb(x);return l[b][N]}),h=i&&Object.entries(i).reduce((b,S)=>{let[x,N]=S;return N===void 0||(b[x]=N),b},{}),g=n==null||(r=n.compoundVariants)===null||r===void 0?void 0:r.reduce((b,S)=>{let{class:x,className:N,..._}=S;return Object.entries(_).every(T=>{let[k,E]=T;return Array.isArray(E)?E.includes({...c,...h}[k]):{...c,...h}[k]===E})?[...b,x,N]:b},[]);return Ob(e,d,g,i?.class,i?.className)},PD=(e,n)=>{const i=new Array(e.length+n.length);for(let r=0;r<e.length;r++)i[r]=e[r];for(let r=0;r<n.length;r++)i[e.length+r]=n[r];return i},GD=(e,n)=>({classGroupId:e,validator:n}),W0=(e=new Map,n=null,i)=>({nextPart:e,validators:n,classGroupId:i}),fc="-",Db=[],HD="arbitrary..",QD=e=>{const n=ZD(e),{conflictingClassGroups:i,conflictingClassGroupModifiers:r}=e;return{getClassGroupId:d=>{if(d.startsWith("[")&&d.endsWith("]"))return KD(d);const h=d.split(fc),g=h[0]===""&&h.length>1?1:0;return eS(h,g,n)},getConflictingClassGroupIds:(d,h)=>{if(h){const g=r[d],b=i[d];return g?b?PD(b,g):g:b||Db}return i[d]||Db}}},eS=(e,n,i)=>{if(e.length-n===0)return i.classGroupId;const l=e[n],c=i.nextPart.get(l);if(c){const b=eS(e,n+1,c);if(b)return b}const d=i.validators;if(d===null)return;const h=n===0?e.join(fc):e.slice(n).join(fc),g=d.length;for(let b=0;b<g;b++){const S=d[b];if(S.validator(h))return S.classGroupId}},KD=e=>e.slice(1,-1).indexOf(":")===-1?void 0:(()=>{const n=e.slice(1,-1),i=n.indexOf(":"),r=n.slice(0,i);return r?HD+r:void 0})(),ZD=e=>{const{theme:n,classGroups:i}=e;return YD(i,n)},YD=(e,n)=>{const i=W0();for(const r in e){const l=e[r];wp(l,i,r,n)}return i},wp=(e,n,i,r)=>{const l=e.length;for(let c=0;c<l;c++){const d=e[c];XD(d,n,i,r)}},XD=(e,n,i,r)=>{if(typeof e=="string"){JD(e,n,i);return}if(typeof e=="function"){FD(e,n,i,r);return}WD(e,n,i,r)},JD=(e,n,i)=>{const r=e===""?n:tS(n,e);r.classGroupId=i},FD=(e,n,i,r)=>{if(e3(e)){wp(e(r),n,i,r);return}n.validators===null&&(n.validators=[]),n.validators.push(GD(i,e))},WD=(e,n,i,r)=>{const l=Object.entries(e),c=l.length;for(let d=0;d<c;d++){const[h,g]=l[d];wp(g,tS(n,h),i,r)}},tS=(e,n)=>{let i=e;const r=n.split(fc),l=r.length;for(let c=0;c<l;c++){const d=r[c];let h=i.nextPart.get(d);h||(h=W0(),i.nextPart.set(d,h)),i=h}return i},e3=e=>"isThemeGetter"in e&&e.isThemeGetter===!0,t3=e=>{if(e<1)return{get:()=>{},set:()=>{}};let n=0,i=Object.create(null),r=Object.create(null);const l=(c,d)=>{i[c]=d,n++,n>e&&(n=0,r=i,i=Object.create(null))};return{get(c){let d=i[c];if(d!==void 0)return d;if((d=r[c])!==void 0)return l(c,d),d},set(c,d){c in i?i[c]=d:l(c,d)}}},Ef="!",Rb=":",n3=[],Mb=(e,n,i,r,l)=>({modifiers:e,hasImportantModifier:n,baseClassName:i,maybePostfixModifierPosition:r,isExternal:l}),a3=e=>{const{prefix:n,experimentalParseClassName:i}=e;let r=l=>{const c=[];let d=0,h=0,g=0,b;const S=l.length;for(let k=0;k<S;k++){const E=l[k];if(d===0&&h===0){if(E===Rb){c.push(l.slice(g,k)),g=k+1;continue}if(E==="/"){b=k;continue}}E==="["?d++:E==="]"?d--:E==="("?h++:E===")"&&h--}const x=c.length===0?l:l.slice(g);let N=x,_=!1;x.endsWith(Ef)?(N=x.slice(0,-1),_=!0):x.startsWith(Ef)&&(N=x.slice(1),_=!0);const T=b&&b>g?b-g:void 0;return Mb(c,_,N,T)};if(n){const l=n+Rb,c=r;r=d=>d.startsWith(l)?c(d.slice(l.length)):Mb(n3,!1,d,void 0,!0)}if(i){const l=r;r=c=>i({className:c,parseClassName:l})}return r},i3=e=>{const n=new Map;return e.orderSensitiveModifiers.forEach((i,r)=>{n.set(i,1e6+r)}),i=>{const r=[];let l=[];for(let c=0;c<i.length;c++){const d=i[c],h=d[0]==="[",g=n.has(d);h||g?(l.length>0&&(l.sort(),r.push(...l),l=[]),r.push(d)):l.push(d)}return l.length>0&&(l.sort(),r.push(...l)),r}},s3=e=>({cache:t3(e.cacheSize),parseClassName:a3(e),sortModifiers:i3(e),...QD(e)}),r3=/\s+/,o3=(e,n)=>{const{parseClassName:i,getClassGroupId:r,getConflictingClassGroupIds:l,sortModifiers:c}=n,d=[],h=e.trim().split(r3);let g="";for(let b=h.length-1;b>=0;b-=1){const S=h[b],{isExternal:x,modifiers:N,hasImportantModifier:_,baseClassName:T,maybePostfixModifierPosition:k}=i(S);if(x){g=S+(g.length>0?" "+g:g);continue}let E=!!k,R=r(E?T.substring(0,k):T);if(!R){if(!E){g=S+(g.length>0?" "+g:g);continue}if(R=r(T),!R){g=S+(g.length>0?" "+g:g);continue}E=!1}const V=N.length===0?"":N.length===1?N[0]:c(N).join(":"),G=_?V+Ef:V,Z=G+R;if(d.indexOf(Z)>-1)continue;d.push(Z);const X=l(R,E);for(let F=0;F<X.length;++F){const O=X[F];d.push(G+O)}g=S+(g.length>0?" "+g:g)}return g},l3=(...e)=>{let n=0,i,r,l="";for(;n<e.length;)(i=e[n++])&&(r=nS(i))&&(l&&(l+=" "),l+=r);return l},nS=e=>{if(typeof e=="string")return e;let n,i="";for(let r=0;r<e.length;r++)e[r]&&(n=nS(e[r]))&&(i&&(i+=" "),i+=n);return i},c3=(e,...n)=>{let i,r,l,c;const d=g=>{const b=n.reduce((S,x)=>x(S),e());return i=s3(b),r=i.cache.get,l=i.cache.set,c=h,h(g)},h=g=>{const b=r(g);if(b)return b;const S=o3(g,i);return l(g,S),S};return c=d,(...g)=>c(l3(...g))},u3=[],_t=e=>{const n=i=>i[e]||u3;return n.isThemeGetter=!0,n},aS=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,iS=/^\((?:(\w[\w-]*):)?(.+)\)$/i,d3=/^\d+(?:\.\d+)?\/\d+(?:\.\d+)?$/,f3=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,p3=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,m3=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,h3=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,g3=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,Ga=e=>d3.test(e),Oe=e=>!!e&&!Number.isNaN(Number(e)),Ha=e=>!!e&&Number.isInteger(Number(e)),cf=e=>e.endsWith("%")&&Oe(e.slice(0,-1)),ma=e=>f3.test(e),sS=()=>!0,y3=e=>p3.test(e)&&!m3.test(e),jp=()=>!1,b3=e=>h3.test(e),v3=e=>g3.test(e),S3=e=>!me(e)&&!he(e),x3=e=>ei(e,lS,jp),me=e=>aS.test(e),xi=e=>ei(e,cS,y3),Bb=e=>ei(e,z3,Oe),w3=e=>ei(e,dS,sS),j3=e=>ei(e,uS,jp),Lb=e=>ei(e,rS,jp),N3=e=>ei(e,oS,v3),Pl=e=>ei(e,fS,b3),he=e=>iS.test(e),eo=e=>Ei(e,cS),k3=e=>Ei(e,uS),qb=e=>Ei(e,rS),A3=e=>Ei(e,lS),_3=e=>Ei(e,oS),Gl=e=>Ei(e,fS,!0),C3=e=>Ei(e,dS,!0),ei=(e,n,i)=>{const r=aS.exec(e);return r?r[1]?n(r[1]):i(r[2]):!1},Ei=(e,n,i=!1)=>{const r=iS.exec(e);return r?r[1]?n(r[1]):i:!1},rS=e=>e==="position"||e==="percentage",oS=e=>e==="image"||e==="url",lS=e=>e==="length"||e==="size"||e==="bg-size",cS=e=>e==="length",z3=e=>e==="number",uS=e=>e==="family-name",dS=e=>e==="number"||e==="weight",fS=e=>e==="shadow",T3=()=>{const e=_t("color"),n=_t("font"),i=_t("text"),r=_t("font-weight"),l=_t("tracking"),c=_t("leading"),d=_t("breakpoint"),h=_t("container"),g=_t("spacing"),b=_t("radius"),S=_t("shadow"),x=_t("inset-shadow"),N=_t("text-shadow"),_=_t("drop-shadow"),T=_t("blur"),k=_t("perspective"),E=_t("aspect"),R=_t("ease"),V=_t("animate"),G=()=>["auto","avoid","all","avoid-page","page","left","right","column"],Z=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],X=()=>[...Z(),he,me],F=()=>["auto","hidden","clip","visible","scroll"],O=()=>["auto","contain","none"],M=()=>[he,me,g],le=()=>[Ga,"full","auto",...M()],ke=()=>[Ha,"none","subgrid",he,me],_e=()=>["auto",{span:["full",Ha,he,me]},Ha,he,me],be=()=>[Ha,"auto",he,me],tt=()=>["auto","min","max","fr",he,me],Ke=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],ee=()=>["start","end","center","stretch","center-safe","end-safe"],B=()=>["auto",...M()],J=()=>[Ga,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...M()],fe=()=>[Ga,"screen","full","dvw","lvw","svw","min","max","fit",...M()],Se=()=>[Ga,"screen","full","lh","dvh","lvh","svh","min","max","fit",...M()],re=()=>[e,he,me],Ze=()=>[...Z(),qb,Lb,{position:[he,me]}],W=()=>["no-repeat",{repeat:["","x","y","space","round"]}],ue=()=>["auto","cover","contain",A3,x3,{size:[he,me]}],te=()=>[cf,eo,xi],de=()=>["","none","full",b,he,me],ae=()=>["",Oe,eo,xi],je=()=>["solid","dashed","dotted","double"],nt=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],xe=()=>[Oe,cf,qb,Lb],Ue=()=>["","none",T,he,me],Ge=()=>["none",Oe,he,me],Et=()=>["none",Oe,he,me],zn=()=>[Oe,he,me],Ot=()=>[Ga,"full",...M()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[ma],breakpoint:[ma],color:[sS],container:[ma],"drop-shadow":[ma],ease:["in","out","in-out"],font:[S3],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[ma],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[ma],shadow:[ma],spacing:["px",Oe],text:[ma],"text-shadow":[ma],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",Ga,me,he,E]}],container:["container"],columns:[{columns:[Oe,me,he,h]}],"break-after":[{"break-after":G()}],"break-before":[{"break-before":G()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],sr:["sr-only","not-sr-only"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:X()}],overflow:[{overflow:F()}],"overflow-x":[{"overflow-x":F()}],"overflow-y":[{"overflow-y":F()}],overscroll:[{overscroll:O()}],"overscroll-x":[{"overscroll-x":O()}],"overscroll-y":[{"overscroll-y":O()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:le()}],"inset-x":[{"inset-x":le()}],"inset-y":[{"inset-y":le()}],start:[{"inset-s":le(),start:le()}],end:[{"inset-e":le(),end:le()}],"inset-bs":[{"inset-bs":le()}],"inset-be":[{"inset-be":le()}],top:[{top:le()}],right:[{right:le()}],bottom:[{bottom:le()}],left:[{left:le()}],visibility:["visible","invisible","collapse"],z:[{z:[Ha,"auto",he,me]}],basis:[{basis:[Ga,"full","auto",h,...M()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[Oe,Ga,"auto","initial","none",me]}],grow:[{grow:["",Oe,he,me]}],shrink:[{shrink:["",Oe,he,me]}],order:[{order:[Ha,"first","last","none",he,me]}],"grid-cols":[{"grid-cols":ke()}],"col-start-end":[{col:_e()}],"col-start":[{"col-start":be()}],"col-end":[{"col-end":be()}],"grid-rows":[{"grid-rows":ke()}],"row-start-end":[{row:_e()}],"row-start":[{"row-start":be()}],"row-end":[{"row-end":be()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":tt()}],"auto-rows":[{"auto-rows":tt()}],gap:[{gap:M()}],"gap-x":[{"gap-x":M()}],"gap-y":[{"gap-y":M()}],"justify-content":[{justify:[...Ke(),"normal"]}],"justify-items":[{"justify-items":[...ee(),"normal"]}],"justify-self":[{"justify-self":["auto",...ee()]}],"align-content":[{content:["normal",...Ke()]}],"align-items":[{items:[...ee(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...ee(),{baseline:["","last"]}]}],"place-content":[{"place-content":Ke()}],"place-items":[{"place-items":[...ee(),"baseline"]}],"place-self":[{"place-self":["auto",...ee()]}],p:[{p:M()}],px:[{px:M()}],py:[{py:M()}],ps:[{ps:M()}],pe:[{pe:M()}],pbs:[{pbs:M()}],pbe:[{pbe:M()}],pt:[{pt:M()}],pr:[{pr:M()}],pb:[{pb:M()}],pl:[{pl:M()}],m:[{m:B()}],mx:[{mx:B()}],my:[{my:B()}],ms:[{ms:B()}],me:[{me:B()}],mbs:[{mbs:B()}],mbe:[{mbe:B()}],mt:[{mt:B()}],mr:[{mr:B()}],mb:[{mb:B()}],ml:[{ml:B()}],"space-x":[{"space-x":M()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":M()}],"space-y-reverse":["space-y-reverse"],size:[{size:J()}],"inline-size":[{inline:["auto",...fe()]}],"min-inline-size":[{"min-inline":["auto",...fe()]}],"max-inline-size":[{"max-inline":["none",...fe()]}],"block-size":[{block:["auto",...Se()]}],"min-block-size":[{"min-block":["auto",...Se()]}],"max-block-size":[{"max-block":["none",...Se()]}],w:[{w:[h,"screen",...J()]}],"min-w":[{"min-w":[h,"screen","none",...J()]}],"max-w":[{"max-w":[h,"screen","none","prose",{screen:[d]},...J()]}],h:[{h:["screen","lh",...J()]}],"min-h":[{"min-h":["screen","lh","none",...J()]}],"max-h":[{"max-h":["screen","lh",...J()]}],"font-size":[{text:["base",i,eo,xi]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[r,C3,w3]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",cf,me]}],"font-family":[{font:[k3,j3,n]}],"font-features":[{"font-features":[me]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:[l,he,me]}],"line-clamp":[{"line-clamp":[Oe,"none",he,Bb]}],leading:[{leading:[c,...M()]}],"list-image":[{"list-image":["none",he,me]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",he,me]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:re()}],"text-color":[{text:re()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...je(),"wavy"]}],"text-decoration-thickness":[{decoration:[Oe,"from-font","auto",he,xi]}],"text-decoration-color":[{decoration:re()}],"underline-offset":[{"underline-offset":[Oe,"auto",he,me]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:M()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",he,me]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",he,me]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:Ze()}],"bg-repeat":[{bg:W()}],"bg-size":[{bg:ue()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},Ha,he,me],radial:["",he,me],conic:[Ha,he,me]},_3,N3]}],"bg-color":[{bg:re()}],"gradient-from-pos":[{from:te()}],"gradient-via-pos":[{via:te()}],"gradient-to-pos":[{to:te()}],"gradient-from":[{from:re()}],"gradient-via":[{via:re()}],"gradient-to":[{to:re()}],rounded:[{rounded:de()}],"rounded-s":[{"rounded-s":de()}],"rounded-e":[{"rounded-e":de()}],"rounded-t":[{"rounded-t":de()}],"rounded-r":[{"rounded-r":de()}],"rounded-b":[{"rounded-b":de()}],"rounded-l":[{"rounded-l":de()}],"rounded-ss":[{"rounded-ss":de()}],"rounded-se":[{"rounded-se":de()}],"rounded-ee":[{"rounded-ee":de()}],"rounded-es":[{"rounded-es":de()}],"rounded-tl":[{"rounded-tl":de()}],"rounded-tr":[{"rounded-tr":de()}],"rounded-br":[{"rounded-br":de()}],"rounded-bl":[{"rounded-bl":de()}],"border-w":[{border:ae()}],"border-w-x":[{"border-x":ae()}],"border-w-y":[{"border-y":ae()}],"border-w-s":[{"border-s":ae()}],"border-w-e":[{"border-e":ae()}],"border-w-bs":[{"border-bs":ae()}],"border-w-be":[{"border-be":ae()}],"border-w-t":[{"border-t":ae()}],"border-w-r":[{"border-r":ae()}],"border-w-b":[{"border-b":ae()}],"border-w-l":[{"border-l":ae()}],"divide-x":[{"divide-x":ae()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":ae()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...je(),"hidden","none"]}],"divide-style":[{divide:[...je(),"hidden","none"]}],"border-color":[{border:re()}],"border-color-x":[{"border-x":re()}],"border-color-y":[{"border-y":re()}],"border-color-s":[{"border-s":re()}],"border-color-e":[{"border-e":re()}],"border-color-bs":[{"border-bs":re()}],"border-color-be":[{"border-be":re()}],"border-color-t":[{"border-t":re()}],"border-color-r":[{"border-r":re()}],"border-color-b":[{"border-b":re()}],"border-color-l":[{"border-l":re()}],"divide-color":[{divide:re()}],"outline-style":[{outline:[...je(),"none","hidden"]}],"outline-offset":[{"outline-offset":[Oe,he,me]}],"outline-w":[{outline:["",Oe,eo,xi]}],"outline-color":[{outline:re()}],shadow:[{shadow:["","none",S,Gl,Pl]}],"shadow-color":[{shadow:re()}],"inset-shadow":[{"inset-shadow":["none",x,Gl,Pl]}],"inset-shadow-color":[{"inset-shadow":re()}],"ring-w":[{ring:ae()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:re()}],"ring-offset-w":[{"ring-offset":[Oe,xi]}],"ring-offset-color":[{"ring-offset":re()}],"inset-ring-w":[{"inset-ring":ae()}],"inset-ring-color":[{"inset-ring":re()}],"text-shadow":[{"text-shadow":["none",N,Gl,Pl]}],"text-shadow-color":[{"text-shadow":re()}],opacity:[{opacity:[Oe,he,me]}],"mix-blend":[{"mix-blend":[...nt(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":nt()}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[Oe]}],"mask-image-linear-from-pos":[{"mask-linear-from":xe()}],"mask-image-linear-to-pos":[{"mask-linear-to":xe()}],"mask-image-linear-from-color":[{"mask-linear-from":re()}],"mask-image-linear-to-color":[{"mask-linear-to":re()}],"mask-image-t-from-pos":[{"mask-t-from":xe()}],"mask-image-t-to-pos":[{"mask-t-to":xe()}],"mask-image-t-from-color":[{"mask-t-from":re()}],"mask-image-t-to-color":[{"mask-t-to":re()}],"mask-image-r-from-pos":[{"mask-r-from":xe()}],"mask-image-r-to-pos":[{"mask-r-to":xe()}],"mask-image-r-from-color":[{"mask-r-from":re()}],"mask-image-r-to-color":[{"mask-r-to":re()}],"mask-image-b-from-pos":[{"mask-b-from":xe()}],"mask-image-b-to-pos":[{"mask-b-to":xe()}],"mask-image-b-from-color":[{"mask-b-from":re()}],"mask-image-b-to-color":[{"mask-b-to":re()}],"mask-image-l-from-pos":[{"mask-l-from":xe()}],"mask-image-l-to-pos":[{"mask-l-to":xe()}],"mask-image-l-from-color":[{"mask-l-from":re()}],"mask-image-l-to-color":[{"mask-l-to":re()}],"mask-image-x-from-pos":[{"mask-x-from":xe()}],"mask-image-x-to-pos":[{"mask-x-to":xe()}],"mask-image-x-from-color":[{"mask-x-from":re()}],"mask-image-x-to-color":[{"mask-x-to":re()}],"mask-image-y-from-pos":[{"mask-y-from":xe()}],"mask-image-y-to-pos":[{"mask-y-to":xe()}],"mask-image-y-from-color":[{"mask-y-from":re()}],"mask-image-y-to-color":[{"mask-y-to":re()}],"mask-image-radial":[{"mask-radial":[he,me]}],"mask-image-radial-from-pos":[{"mask-radial-from":xe()}],"mask-image-radial-to-pos":[{"mask-radial-to":xe()}],"mask-image-radial-from-color":[{"mask-radial-from":re()}],"mask-image-radial-to-color":[{"mask-radial-to":re()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":Z()}],"mask-image-conic-pos":[{"mask-conic":[Oe]}],"mask-image-conic-from-pos":[{"mask-conic-from":xe()}],"mask-image-conic-to-pos":[{"mask-conic-to":xe()}],"mask-image-conic-from-color":[{"mask-conic-from":re()}],"mask-image-conic-to-color":[{"mask-conic-to":re()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:Ze()}],"mask-repeat":[{mask:W()}],"mask-size":[{mask:ue()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",he,me]}],filter:[{filter:["","none",he,me]}],blur:[{blur:Ue()}],brightness:[{brightness:[Oe,he,me]}],contrast:[{contrast:[Oe,he,me]}],"drop-shadow":[{"drop-shadow":["","none",_,Gl,Pl]}],"drop-shadow-color":[{"drop-shadow":re()}],grayscale:[{grayscale:["",Oe,he,me]}],"hue-rotate":[{"hue-rotate":[Oe,he,me]}],invert:[{invert:["",Oe,he,me]}],saturate:[{saturate:[Oe,he,me]}],sepia:[{sepia:["",Oe,he,me]}],"backdrop-filter":[{"backdrop-filter":["","none",he,me]}],"backdrop-blur":[{"backdrop-blur":Ue()}],"backdrop-brightness":[{"backdrop-brightness":[Oe,he,me]}],"backdrop-contrast":[{"backdrop-contrast":[Oe,he,me]}],"backdrop-grayscale":[{"backdrop-grayscale":["",Oe,he,me]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[Oe,he,me]}],"backdrop-invert":[{"backdrop-invert":["",Oe,he,me]}],"backdrop-opacity":[{"backdrop-opacity":[Oe,he,me]}],"backdrop-saturate":[{"backdrop-saturate":[Oe,he,me]}],"backdrop-sepia":[{"backdrop-sepia":["",Oe,he,me]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":M()}],"border-spacing-x":[{"border-spacing-x":M()}],"border-spacing-y":[{"border-spacing-y":M()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",he,me]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[Oe,"initial",he,me]}],ease:[{ease:["linear","initial",R,he,me]}],delay:[{delay:[Oe,he,me]}],animate:[{animate:["none",V,he,me]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[k,he,me]}],"perspective-origin":[{"perspective-origin":X()}],rotate:[{rotate:Ge()}],"rotate-x":[{"rotate-x":Ge()}],"rotate-y":[{"rotate-y":Ge()}],"rotate-z":[{"rotate-z":Ge()}],scale:[{scale:Et()}],"scale-x":[{"scale-x":Et()}],"scale-y":[{"scale-y":Et()}],"scale-z":[{"scale-z":Et()}],"scale-3d":["scale-3d"],skew:[{skew:zn()}],"skew-x":[{"skew-x":zn()}],"skew-y":[{"skew-y":zn()}],transform:[{transform:[he,me,"","none","gpu","cpu"]}],"transform-origin":[{origin:X()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:Ot()}],"translate-x":[{"translate-x":Ot()}],"translate-y":[{"translate-y":Ot()}],"translate-z":[{"translate-z":Ot()}],"translate-none":["translate-none"],accent:[{accent:re()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:re()}],"color-scheme":[{scheme:["normal","dark","light","light-dark","only-dark","only-light"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",he,me]}],"field-sizing":[{"field-sizing":["fixed","content"]}],"pointer-events":[{"pointer-events":["auto","none"]}],resize:[{resize:["none","","y","x"]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":M()}],"scroll-mx":[{"scroll-mx":M()}],"scroll-my":[{"scroll-my":M()}],"scroll-ms":[{"scroll-ms":M()}],"scroll-me":[{"scroll-me":M()}],"scroll-mbs":[{"scroll-mbs":M()}],"scroll-mbe":[{"scroll-mbe":M()}],"scroll-mt":[{"scroll-mt":M()}],"scroll-mr":[{"scroll-mr":M()}],"scroll-mb":[{"scroll-mb":M()}],"scroll-ml":[{"scroll-ml":M()}],"scroll-p":[{"scroll-p":M()}],"scroll-px":[{"scroll-px":M()}],"scroll-py":[{"scroll-py":M()}],"scroll-ps":[{"scroll-ps":M()}],"scroll-pe":[{"scroll-pe":M()}],"scroll-pbs":[{"scroll-pbs":M()}],"scroll-pbe":[{"scroll-pbe":M()}],"scroll-pt":[{"scroll-pt":M()}],"scroll-pr":[{"scroll-pr":M()}],"scroll-pb":[{"scroll-pb":M()}],"scroll-pl":[{"scroll-pl":M()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",he,me]}],fill:[{fill:["none",...re()]}],"stroke-w":[{stroke:[Oe,eo,xi,Bb]}],stroke:[{stroke:["none",...re()]}],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","inset-bs","inset-be","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pbs","pbe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mbs","mbe","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-x","border-w-y","border-w-s","border-w-e","border-w-bs","border-w-be","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-x","border-color-y","border-color-s","border-color-e","border-color-bs","border-color-be","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],translate:["translate-x","translate-y","translate-none"],"translate-none":["translate","translate-x","translate-y","translate-z"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mbs","scroll-mbe","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pbs","scroll-pbe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]},orderSensitiveModifiers:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}},E3=c3(T3);function Cn(...e){return E3(gv(e))}const O3=F0("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-zinc-400 focus-visible:ring-offset-2 focus-visible:ring-offset-black disabled:pointer-events-none disabled:opacity-50",{variants:{variant:{default:"bg-zinc-50 text-black hover:bg-zinc-200",secondary:"border border-zinc-800 bg-zinc-950 text-zinc-100 hover:bg-zinc-900",ghost:"text-zinc-400 hover:bg-zinc-900 hover:text-zinc-50",outline:"border border-zinc-800 bg-transparent text-zinc-100 hover:bg-zinc-900",destructive:"bg-rose-600 text-white hover:bg-rose-700"},size:{default:"h-10 px-4 md:h-9",sm:"h-9 px-3 text-xs md:h-8",icon:"size-10 md:size-9"}},defaultVariants:{variant:"default",size:"default"}}),qe=U.forwardRef(({className:e,variant:n,size:i,asChild:r=!1,...l},c)=>{const d=r?Mw:"button";return f.jsx(d,{ref:c,className:Cn(O3({variant:n,size:i,className:e})),...l})});qe.displayName="Button";const D3=F0("inline-flex items-center rounded-md border px-2 py-0.5 text-[11px] font-medium tracking-wide",{variants:{variant:{neutral:"border-zinc-800 bg-zinc-950 text-zinc-300",success:"border-emerald-500/25 bg-emerald-500/10 text-emerald-300",warning:"border-amber-500/25 bg-amber-500/10 text-amber-300",destructive:"border-rose-500/25 bg-rose-500/10 text-rose-300"}},defaultVariants:{variant:"neutral"}});function pS({className:e,variant:n,...i}){return f.jsx("div",{className:Cn(D3({variant:n}),e),...i})}const R3=220;function Ub({compact:e=!1,version:n,updateAvailable:i,onDismissUpdate:r}){const l=!e&&n&&n!=="unknown",[c,d]=U.useState(!1),h=!e&&i&&r,g=()=>{d(!0),window.setTimeout(()=>{r?.(),d(!1)},R3)};return e?f.jsxs(rt,{to:"/",className:"brand-lockup brand-lockup-compact","aria-label":"Canonry home",children:[f.jsx("img",{className:"brand-icon",src:"./favicon.svg",alt:"","aria-hidden":"true"}),f.jsx("span",{className:"brand-copy",children:f.jsx("span",{className:"brand-mark",children:"Canonry"})})]}):f.jsxs("div",{className:"brand-lockup brand-lockup-wrapper",children:[f.jsx(rt,{to:"/",className:"brand-icon-link","aria-label":"Canonry home",tabIndex:-1,children:f.jsx("img",{className:"brand-icon",src:"./favicon.svg",alt:"","aria-hidden":"true"})}),f.jsxs("div",{className:"brand-copy",children:[f.jsx(rt,{to:"/",className:"brand-mark",children:"Canonry"}),h?f.jsxs("span",{className:`brand-update-bubble ${c?"brand-update-bubble-closing":""}`,role:"status","aria-live":"polite",children:[f.jsxs("a",{className:"brand-update-bubble-link",href:i.url,target:"_blank",rel:"noopener noreferrer",title:`Open release: ${i.upgradeCommand}`,"aria-label":`New version v${i.latest} available — open release page`,children:[f.jsxs("span",{className:"brand-update-bubble-from",children:["v",i.current]}),f.jsx(sA,{className:"brand-update-bubble-arrow size-3","aria-hidden":"true"}),f.jsxs("span",{className:"brand-update-bubble-to",children:["v",i.latest]})]}),f.jsx("button",{type:"button",className:"brand-update-bubble-dismiss",onClick:g,"aria-label":`Dismiss update notification for v${i.latest}`,children:f.jsx(Qs,{className:"size-3","aria-hidden":"true"})})]}):l?f.jsxs("span",{className:"brand-version",children:["v",n]}):null]})]})}function M3({provider:e}){const n={gemini:"border-blue-800/50 bg-blue-950/40 text-blue-300",openai:"border-green-800/50 bg-green-950/40 text-green-300",claude:"border-amber-800/50 bg-amber-950/40 text-amber-300",perplexity:"border-teal-800/50 bg-teal-950/40 text-teal-300",local:"border-purple-800/50 bg-purple-950/40 text-purple-300"};return f.jsx("span",{className:`inline-flex items-center rounded-full border px-2 py-0.5 text-[10px] font-medium uppercase tracking-wide ${n[e]??"border-zinc-700 bg-zinc-800 text-zinc-300"}`,children:e})}function Ln({tone:e,children:n,...i}){const r=e==="positive"?"success":e==="caution"?"warning":e==="negative"?"destructive":"neutral";return f.jsx(pS,{variant:r,...i,children:n})}function Np({status:e}){return f.jsx(Ln,{tone:Z0(e),children:M4(e)})}const B3=hv,L3=fv,mS=U.forwardRef(({className:e,...n},i)=>f.jsx(Vf,{ref:i,className:Cn("fixed inset-0 z-50 bg-black/70 backdrop-blur-sm",e),...n}));mS.displayName=Vf.displayName;const q3=400,U3=1200,$3=720,hS=U.forwardRef(({className:e,children:n,...i},r)=>{const[l,c]=U.useState($3),d=U.useRef(!1),h=U.useRef(0),g=U.useRef(0),b=U.useCallback(N=>{d.current=!0,h.current=N.clientX,g.current=l,N.target.setPointerCapture(N.pointerId),N.preventDefault()},[l]),S=U.useCallback(N=>{if(!d.current)return;const _=h.current-N.clientX,T=Math.min(U3,Math.max(q3,g.current+_));c(T)},[]),x=U.useCallback(()=>{d.current=!1},[]);return f.jsxs(L3,{children:[f.jsx(mS,{}),f.jsxs(Pf,{ref:r,className:Cn("fixed z-50 flex flex-col bg-zinc-950 px-5 py-4 shadow-2xl overflow-hidden","max-md:inset-x-0 max-md:bottom-0 max-md:top-auto max-md:max-h-[88vh] max-md:rounded-t-2xl max-md:border-t","md:inset-y-0 md:right-0 md:h-full md:border-l","border-zinc-800",e),style:{width:`min(${l}px, 100vw)`},...i,children:[f.jsx("div",{className:"absolute inset-y-0 left-0 w-1.5 cursor-col-resize hover:bg-zinc-700/50 active:bg-zinc-600/50 transition-colors max-md:hidden",onPointerDown:b,onPointerMove:S,onPointerUp:x}),n,f.jsxs(pv,{className:"absolute right-4 top-4 inline-flex size-8 items-center justify-center rounded-md text-zinc-500 transition hover:bg-zinc-900 hover:text-zinc-100 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-zinc-400",children:[f.jsx(Qs,{className:"size-4"}),f.jsx("span",{className:"sr-only",children:"Close"})]})]})]})});hS.displayName=Pf.displayName;const I3=({className:e,...n})=>f.jsx("div",{className:Cn("flex flex-col gap-1.5 pr-10",e),...n}),gS=U.forwardRef(({className:e,...n},i)=>f.jsx(Gf,{ref:i,className:Cn("text-lg font-medium text-zinc-50",e),...n}));gS.displayName=Gf.displayName;const yS=U.forwardRef(({className:e,...n},i)=>f.jsx(mv,{ref:i,className:Cn("text-sm text-zinc-500",e),...n}));yS.displayName=mv.displayName;function V3({title:e,subtitle:n,children:i,open:r,onClose:l}){return f.jsx(B3,{open:r,onOpenChange:c=>c?void 0:l(),children:f.jsxs(hS,{children:[f.jsxs(I3,{className:"drawer-head",children:[f.jsx("p",{className:"eyebrow eyebrow-soft",children:n}),f.jsx(gS,{id:"drawer-title",children:e}),f.jsx(yS,{className:"sr-only",children:n})]}),f.jsx("div",{className:"drawer-body",children:i})]})})}function to({text:e}){const[n,i]=U.useState(null),r=U.useRef(null),l=U.useCallback(()=>{if(!r.current)return;const h=r.current.getBoundingClientRect();i({top:h.top,left:h.left+h.width/2})},[]),c=U.useCallback(()=>i(null),[]),d=U.useCallback(()=>{n===null?l():c()},[n,l,c]);return f.jsxs("span",{className:"info-tooltip-wrapper",onMouseEnter:l,onMouseLeave:c,children:[f.jsx("button",{ref:r,type:"button",className:"info-tooltip-trigger","aria-label":e,"aria-expanded":n!==null,onFocus:l,onBlur:c,onClick:d,onKeyDown:h=>{h.key==="Escape"&&c()},children:f.jsxs("svg",{className:"info-tooltip-icon",viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:[f.jsx("circle",{cx:"8",cy:"8",r:"7",stroke:"currentColor",strokeWidth:"1.5"}),f.jsx("path",{d:"M8 7v4M8 5.5v0",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})]})}),n!==null&&_w.createPortal(f.jsx("span",{"aria-hidden":"true",style:{position:"fixed",top:n.top,left:n.left,transform:"translateX(-50%) translateY(calc(-100% - 8px))",zIndex:9999,pointerEvents:"none",width:"14rem",padding:"0.5rem 0.75rem",fontSize:"11px",fontWeight:400,textTransform:"none",letterSpacing:"normal",lineHeight:"1rem",color:"#d4d4d8",backgroundColor:"#18181b",border:"1px solid rgba(63, 63, 70, 0.6)",borderRadius:"0.5rem",boxShadow:"0 10px 15px -3px rgba(0,0,0,.1), 0 4px 6px -4px rgba(0,0,0,.1)"},children:e}),document.body)]})}const P3=/[\s\-_]+/;function G3(e){const n=e.split(P3).filter(Boolean);return n.length===0?null:n.map(i=>i.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")).join("[\\s\\-_]*")}function $b(e,n){const i=H3(n),r=e.split(/(\*\*[^*]+\*\*)/).filter(Boolean).map(b=>b.startsWith("**")&&b.endsWith("**")?{type:"bold",value:b.slice(2,-2)}:{type:"text",value:b}),l=i.flatMap(b=>b.terms).filter(b=>b.trim().length>1);if(l.length===0)return r.map((b,S)=>b.type==="bold"?_s.createElement("strong",{key:`b-${S}`,className:"text-zinc-200 font-semibold"},b.value):b.value).filter(Boolean);const d=[...l].sort((b,S)=>S.length-b.length).map(G3).filter(b=>!!b);if(d.length===0)return r.map((b,S)=>b.type==="bold"?_s.createElement("strong",{key:`b-${S}`,className:"text-zinc-200 font-semibold"},b.value):b.value).filter(Boolean);const h=new RegExp(`(${d.join("|")})`,"gi"),g=new Map;for(const b of i)for(const S of b.terms){const x=dc(S);x&&!g.has(x)&&g.set(x,b.className)}return r.flatMap((b,S)=>b.value.split(h).map((N,_)=>{if(!N)return null;if(_%2===1){const k=g.get(dc(N))??"answer-highlight";return b.type==="bold"?_s.createElement("mark",{key:`hl-${S}-${_}`,className:k},_s.createElement("strong",{className:"text-zinc-200 font-semibold"},N)):_s.createElement("mark",{key:`hl-${S}-${_}`,className:k},N)}return b.type==="bold"?_s.createElement("strong",{key:`b-${S}-${_}`,className:"text-zinc-200 font-semibold"},N):N})).filter(Boolean)}function H3(e){return e.length===0?[]:typeof e[0]=="string"?[{terms:e,className:"answer-highlight"}]:e}function Of(e){const n=(e??"").trim();return n&&(n.startsWith("/")||/^https?:\/\//i.test(n)||/^mailto:/i.test(n))?n:null}function uf(e,n){switch(e){case"new":return"First observation";case"emerging":return"First mention";case"lost":return"Lost since last run";default:return n==="mentioned"||n==="visible"?"Mentioned in latest run":n==="pending"?"Awaiting first run":"Not mentioned in latest run"}}function Q3({evidence:e,project:n,onClose:i}){const[r,l]=U.useState(!1),[c,d]=U.useState("mentions"),[h,g]=U.useState(-1),[b,S]=U.useState(null),[x,N]=U.useState(!1),[_,T]=U.useState({}),k=UT(n.project),E=new Set(k.map(oc)),R=e.runHistory,V=R.length>1,[G,Z]=U.useState(null),X=U.useRef(!1);U.useEffect(()=>{if(X.current||e.answerSnippet&&(e.visibilityState!=null||e.answerMentioned!=null))return;const te=R.at(-1);te&&(X.current=!0,nc(te.runId).then(de=>{const ae=de.snapshots?.find(je=>je.query===e.query&&je.provider===e.provider);ae&&Z({citationState:ae.citationState,answerMentioned:ae.answerMentioned,visibilityState:ae.visibilityState,visibilityTransition:te.visibilityTransition,provider:ae.provider,model:ae.model??e.model,answerSnippet:ae.answerText??e.answerSnippet,citedDomains:ae.citedDomains??e.citedDomains,competitorDomains:ae.competitorOverlap??e.competitorDomains,recommendedCompetitors:ae.recommendedCompetitors??e.recommendedCompetitors??[],matchedTerms:ae.matchedTerms??e.matchedTerms??[],groundingSources:ae.groundingSources??e.groundingSources,searchQueries:ae.searchQueries,evidenceUrls:[],changeLabel:e.visibilityChangeLabel??e.changeLabel,summary:e.summary})}).catch(()=>{}))},[e,R]);const F=h>=0&&b!==null,O=F?b:G||{citationState:e.citationState,answerMentioned:e.answerMentioned,visibilityState:e.visibilityState,visibilityTransition:R.at(-1)?.visibilityTransition,provider:e.provider,model:e.model,answerSnippet:e.answerSnippet,citedDomains:e.citedDomains,competitorDomains:e.competitorDomains,recommendedCompetitors:e.recommendedCompetitors??[],matchedTerms:e.matchedTerms??[],groundingSources:e.groundingSources,searchQueries:e.searchQueries??[],evidenceUrls:e.evidenceUrls,changeLabel:e.visibilityChangeLabel??e.changeLabel,summary:e.summary},M=O.visibilityState==="pending"||O.citationState==="pending",le=M?!1:O.visibilityState!=null?O.visibilityState==="visible":O.answerMentioned!=null?O.answerMentioned:O.citationState===lc.cited||O.citationState==="emerging",ke=O.answerMentioned!=null||O.visibilityState!=null||O.recommendedCompetitors.length>0,_e=O.citedDomains.length>0||O.groundingSources.length>0||O.evidenceUrls.length>0,be=n.project.displayName||n.project.name,tt=[...k.map(oc),be,be.split(" ").slice(0,2).join(" "),...O.matchedTerms].filter(te=>te.trim().length>2),Ke=[...O.competitorDomains.flatMap(te=>{const de=qT(te);return de.length>=4?[de]:[]}),...O.recommendedCompetitors].filter(te=>te.trim().length>2),ee=[{terms:tt,className:"answer-highlight-brand"},...Ke.length>0?[{terms:Ke,className:"answer-highlight-competitor"}]:[]],B=M?"pending":O.visibilityTransition==="lost"?"lost":le?"mentioned":"not-mentioned",J=U.useRef(0),fe=U.useCallback(async te=>{const de=++J.current;if(te===-1||te===R.length-1){g(-1),S(null),l(!1);return}g(te),l(!1);const ae=R[te],je=`${ae.runId}::${e.query}::${e.provider}`;if(_[je]){S(_[je]);return}N(!0);try{const nt=await nc(ae.runId);if(de!==J.current)return;const xe=nt.snapshots?.find(Ge=>Ge.query===e.query&&Ge.provider===e.provider)??nt.snapshots?.find(Ge=>Ge.query===e.query),Ue=xe?{citationState:xe.citationState,answerMentioned:xe.answerMentioned,visibilityState:xe.visibilityState,visibilityTransition:ae.visibilityTransition,provider:xe.provider,model:xe.model??null,answerSnippet:xe.answerText??"",citedDomains:xe.citedDomains,competitorDomains:xe.competitorOverlap,recommendedCompetitors:xe.recommendedCompetitors??[],matchedTerms:xe.matchedTerms??[],groundingSources:xe.groundingSources,searchQueries:xe.searchQueries,evidenceUrls:[],changeLabel:uf(ae.mentionTransition??ae.visibilityTransition,ae.mentionState??ae.visibilityState),summary:""}:{citationState:ae.citationState,answerMentioned:ae.answerMentioned,visibilityState:ae.visibilityState,visibilityTransition:ae.visibilityTransition,provider:e.provider,model:ae.model??null,answerSnippet:"",citedDomains:[],competitorDomains:[],recommendedCompetitors:[],matchedTerms:[],groundingSources:[],searchQueries:[],evidenceUrls:[],changeLabel:uf(ae.mentionTransition??ae.visibilityTransition,ae.mentionState??ae.visibilityState),summary:"Snapshot data not available for this run."};T(Ge=>({...Ge,[je]:Ue})),S(Ue)}catch{if(de!==J.current)return;S({citationState:ae.citationState,answerMentioned:ae.answerMentioned,visibilityState:ae.visibilityState,visibilityTransition:ae.visibilityTransition,provider:e.provider,model:ae.model??null,answerSnippet:"",citedDomains:[],competitorDomains:[],recommendedCompetitors:[],matchedTerms:[],groundingSources:[],searchQueries:[],evidenceUrls:[],changeLabel:uf(ae.mentionTransition??ae.visibilityTransition,ae.mentionState??ae.visibilityState),summary:"Failed to load historical run data."})}finally{de===J.current&&N(!1)}},[R,e.query,e.provider,_]),re=(F||e.historyScope!=="provider")&&O.model?`${O.provider} (${O.model}) · ${O.changeLabel.toLowerCase()}`:`${O.provider} · ${O.changeLabel.toLowerCase()}`,Ze=!F&&e.historyScope==="provider"?[e.model?`Current model: ${e.model}`:null,e.modelsSeen&&e.modelsSeen.length>1?`History spans ${e.modelsSeen.length} models`:null].filter(Boolean).join(" · "):"",W=le?{label:"Mentioned in answer",title:"Your brand or domain is mentioned in this answer",meta:re}:O.visibilityTransition==="lost"?{label:"Mention lost",title:"Your brand no longer appears in this answer",meta:re}:M?{label:"Pending",title:"Awaiting first run",meta:"No provider data yet"}:{label:"Not mentioned in answer",title:"Your brand or domain was not mentioned in this answer",meta:re},ue=()=>{if(!O.answerSnippet)return null;const te=O.answerSnippet.split(`
|
|
58
|
-
`),de=[];let ae=[],je=0;const nt=()=>{if(ae.length===0)return;const xe=ae.join(" ").trim();xe&&de.push(f.jsx("p",{className:de.length>0?"mt-2.5":"",children:$b(xe,ee)},je++)),ae=[]};for(const xe of te){const Ue=xe.trim();if(/^[-\u2013\u2014]{3,}$/.test(Ue)){nt(),de.push(f.jsx("hr",{className:"border-zinc-800/60 my-3"},je++));continue}const Ge=Ue.match(/^(#{1,3})\s+(\S.*)$/);if(Ge){nt();const Et=Ge[1].length,zn=Ge[2].replace(/^[\p{Emoji}\p{Emoji_Component}\s]+/u,"").trim()||Ge[2],Ot=Et===1?"text-[13px] font-semibold text-zinc-100 mt-4 mb-1":Et===2?"text-xs font-semibold text-zinc-200 mt-3 mb-0.5":"text-xs font-medium text-zinc-300 mt-2";de.push(f.jsx("p",{className:Ot,children:$b(zn,ee)},je++));continue}if(Ue===""){nt();continue}ae.push(Ue)}return nt(),de};return f.jsx(hv,{open:!0,onOpenChange:te=>{te||i()},children:f.jsxs(fv,{children:[f.jsx(Vf,{className:"fixed inset-0 z-50 bg-black/80 backdrop-blur-sm"}),f.jsxs(Pf,{className:"evidence-modal","aria-describedby":void 0,children:[f.jsxs("div",{className:"evidence-modal-header",children:[f.jsxs("div",{className:"min-w-0 flex-1",children:[f.jsxs("p",{className:"eyebrow eyebrow-soft",children:[n.project.name," ","·"," ",O.provider||"All providers"]}),f.jsx(Gf,{className:"text-lg font-semibold text-zinc-50 truncate",children:e.query})]}),f.jsxs(pv,{className:"inline-flex size-8 items-center justify-center rounded-md text-zinc-500 transition hover:bg-zinc-800 hover:text-zinc-100 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-zinc-400 shrink-0",children:[f.jsx(Qs,{className:"size-4"}),f.jsx("span",{className:"sr-only",children:"Close"})]})]}),V&&f.jsxs("div",{className:"evidence-modal-timeline",children:[f.jsx("p",{className:"drawer-section-label mb-1.5",children:"Run history"}),f.jsx("div",{className:"flex items-center gap-1 overflow-x-auto pb-1",children:R.map((te,de)=>{const ae=h===-1&&de===R.length-1||h===de,je=te.visibilityState??(te.answerMentioned?"visible":"not-visible"),nt=te.visibilityTransition??je,xe=je==="visible"?"bg-emerald-400":nt==="emerging"?"bg-amber-400":nt==="lost"?"bg-rose-400":"bg-zinc-600",Ge=new Date(te.createdAt).toLocaleDateString(void 0,{month:"short",day:"numeric"}),Et=!!(te.model&&de>0&&R[de-1]?.model&&R[de-1].model!==te.model);return f.jsxs("button",{type:"button",className:`evidence-run-dot ${ae?"evidence-run-dot--selected":""}`,onClick:()=>{fe(de===R.length-1?-1:de)},"aria-label":[`Run ${Ge}: ${je}`,te.model?`model ${te.model}`:null,Et?"model changed":null].filter(Boolean).join(" — "),"aria-pressed":ae,children:[f.jsx("span",{className:`size-2 rounded-full ${xe} ${Et?"ring-1 ring-amber-300/80 ring-offset-2 ring-offset-zinc-950":""}`,"aria-hidden":"true"}),f.jsx("span",{className:"text-[10px] text-zinc-500",children:Ge})]},de)})}),h>=0&&h<R.length&&f.jsxs("p",{className:"text-[11px] text-zinc-500 mt-1",children:["Viewing run from ",new Date(R[h].createdAt).toLocaleString()," ","—"," ",f.jsx("span",{className:"capitalize",children:R[h].visibilityState??(R[h].answerMentioned?"visible":"not-visible")}),f.jsxs("button",{type:"button",className:"text-zinc-400 hover:text-zinc-200 ml-2",onClick:()=>{fe(-1)},children:["←"," Back to latest"]})]}),!F&&(e.modelTransitions?.length??0)>0&&f.jsx("div",{className:"mt-2 flex flex-wrap gap-2",children:e.modelTransitions.map(te=>f.jsx("span",{className:"inline-flex items-center rounded-full border border-amber-400/30 bg-amber-400/10 px-2 py-1 text-[10px] text-amber-100",children:`${te.fromModel??"unknown"} -> ${te.toModel??"unknown"} on ${new Date(te.createdAt).toLocaleDateString()}`},`${te.runId}:${te.toModel??"unknown"}`))})]}),f.jsxs("div",{className:"evidence-modal-body",children:[x&&f.jsxs("div",{className:"md:col-span-2 flex items-center justify-center py-12 text-zinc-500 text-sm",children:["Loading historical run data","…"]}),!x&&f.jsxs(f.Fragment,{children:[f.jsxs("div",{className:"evidence-modal-main",children:[f.jsxs("div",{className:`evidence-position-hero evidence-position-hero--${B}`,children:[f.jsx("p",{className:`evidence-position-label evidence-position-label--${B}`,children:W.label}),f.jsx("p",{className:`evidence-position-title evidence-position-title--${B}`,children:W.title}),f.jsx("p",{className:"evidence-position-meta",children:W.meta}),Ze&&f.jsx("p",{className:"mt-1 text-[11px] text-zinc-500",children:Ze})]}),O.answerSnippet&&f.jsxs("div",{children:[f.jsx("p",{className:"drawer-section-label",children:"What the AI said"}),f.jsx("div",{className:`answer-snippet-block ${r?"evidence-answer-expanded":"evidence-answer-collapsed"}`,children:ue()}),O.answerSnippet.length>280&&f.jsx("button",{type:"button",className:"mt-1.5 text-xs text-zinc-500 hover:text-zinc-300 transition-colors",onClick:()=>l(!r),children:r?"↑ Collapse":"↓ Show full answer"})]}),!O.answerSnippet&&!x&&f.jsx("div",{className:"rounded-lg border border-zinc-800/40 bg-zinc-900/20 px-4 py-8 text-center text-zinc-600 text-sm",children:"No answer text recorded for this run"}),O.searchQueries.length>0&&f.jsxs("div",{children:[f.jsxs("div",{className:"drawer-section-label flex items-center",children:[f.jsx("span",{children:"Web searches the model ran"}),f.jsx(to,{text:"The search queries this AI model issued while researching your prompt. They reveal how the model reformulated the question — the phrasings worth optimizing your content for. Distinct from grounding sources (what it found) and citations (what it linked)."})]}),f.jsx("ul",{className:"grid gap-1",children:O.searchQueries.map((te,de)=>f.jsxs("li",{className:"flex items-start gap-2 text-sm text-zinc-300",children:[f.jsx(GA,{className:"size-3.5 mt-0.5 shrink-0 text-zinc-600","aria-hidden":"true"}),f.jsx("span",{className:"break-words",children:te})]},`${de}-${te}`))})]}),!F&&e.relatedTechnicalSignals.length>0&&f.jsxs("div",{children:[f.jsx("p",{className:"drawer-section-label",children:le?"Why you're visible":"What to fix"}),f.jsx("div",{className:"action-items-list",children:e.relatedTechnicalSignals.map((te,de)=>f.jsxs("div",{className:"action-item",children:[f.jsx("svg",{className:`action-item-icon ${le?"text-emerald-400":"text-amber-400"}`,viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:le?f.jsx("path",{d:"M3 8l3.5 3.5L13 4.5",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"}):f.jsxs(f.Fragment,{children:[f.jsx("circle",{cx:"8",cy:"8",r:"7",stroke:"currentColor",strokeWidth:"1.5"}),f.jsx("path",{d:"M8 5v3.5M8 10.5v0",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})]})}),f.jsx("span",{className:"action-item-text",children:te})]},de))})]}),O.summary&&f.jsx("p",{className:"text-xs text-zinc-600 border-t border-zinc-800/40 pt-3 mt-1",children:O.summary})]}),f.jsxs("div",{className:"evidence-modal-sidebar",children:[(ke||_e)&&f.jsxs("div",{className:"sidebar-tabs",children:[f.jsx("button",{className:`sidebar-tab ${c==="mentions"?"sidebar-tab--active":""}`,onClick:()=>d("mentions"),type:"button",title:"Canonry's answer-level visibility assessment and any company names extracted from the answer text.",children:"Mentions"}),f.jsx("button",{className:`sidebar-tab ${c==="sources"?"sidebar-tab--active":""}`,onClick:()=>d("sources"),type:"button",title:"Grounding links the model used to build the answer. These are supporting sources, not the primary visibility signal.",children:"Sources"})]}),c==="mentions"&&f.jsxs(f.Fragment,{children:[f.jsxs("div",{children:[f.jsxs("div",{className:"drawer-section-label flex items-center",children:[f.jsx("span",{children:"Mention in answer"}),f.jsx(to,{text:"Canonry scans the AI answer for your owned domains and project name. This is independent from grounding or citation sources."})]}),f.jsxs("div",{className:`mention-status mention-status--${le?"mentioned":"not-mentioned"}`,children:[f.jsx("span",{className:"mention-status-icon",children:M?"…":le?"✓":"—"}),f.jsx("span",{className:"mention-status-label",children:M?"Pending":le?"Mentioned":"Not mentioned"})]}),O.matchedTerms.length>0&&f.jsxs("div",{className:"mt-2",children:[f.jsx("p",{className:"text-[10px] uppercase tracking-wide text-zinc-500 mb-1.5",children:"Matched in answer"}),f.jsx("div",{className:"flex flex-wrap gap-1.5",children:O.matchedTerms.map(te=>f.jsx("span",{className:"mention-chip mention-chip--brand",children:te},te))})]}),!M&&!le&&O.matchedTerms.length===0&&f.jsxs("div",{className:"mt-2",children:[f.jsx("p",{className:"text-[10px] uppercase tracking-wide text-zinc-500 mb-1.5",children:"Searched for"}),f.jsx("div",{className:"flex flex-wrap gap-1.5",children:tt.map(te=>f.jsx("span",{className:"mention-chip mention-chip--muted",children:te},te))}),f.jsx("p",{className:"text-[11px] text-zinc-600 mt-1.5",children:"None of these appear in the answer text."})]})]}),(O.recommendedCompetitors.length>0||O.competitorDomains.length>0)&&f.jsxs("div",{children:[f.jsxs("div",{className:"drawer-section-label flex items-center",children:[f.jsx("span",{children:"Competitors in answer"}),f.jsx(to,{text:"Competitors detected in the answer text or cited source links. Includes both tracked competitors and names extracted by Canonry."})]}),f.jsx("div",{className:"flex flex-wrap gap-1.5",children:(()=>{const te=O.competitorDomains.map(je=>je.replace(/^www\./,"")),de=new Set(te.map(je=>dc(je.replace(/\.[^.]+$/,""))));return[...O.recommendedCompetitors.filter(je=>!de.has(dc(je))),...te].map(je=>f.jsx("span",{className:"mention-chip mention-chip--competitor",children:je},je))})()})]})]}),c==="sources"&&f.jsxs(f.Fragment,{children:[O.citedDomains.length>0&&f.jsxs("div",{children:[f.jsxs("div",{className:"drawer-section-label flex items-center",children:[f.jsx("span",{children:"Domains from source links"}),f.jsx(to,{text:"These domains were extracted from grounding or citation URLs. They are supporting-source metadata, not proof that the answer text mentioned them."})]}),f.jsx("div",{className:"citation-leaderboard",children:O.citedDomains.map((te,de)=>{const ae=te.toLowerCase().replace(/^www\./,""),je=E.has(ae),nt=!je&&O.competitorDomains.some(Ue=>Ue.toLowerCase().replace(/^www\./,"")===ae),xe=je?"you":nt?"competitor":"other";return f.jsxs("div",{className:`citation-leaderboard-item citation-leaderboard-item--${xe}`,children:[f.jsxs("span",{className:"citation-leaderboard-rank",children:["#",de+1]}),f.jsx("span",{className:"citation-leaderboard-domain",children:te}),je&&f.jsx("span",{className:"citation-leaderboard-tag",children:"You"}),nt&&f.jsx("span",{className:"citation-leaderboard-tag",children:"Competitor"})]},te)})})]}),O.groundingSources.length>0&&f.jsxs("div",{children:[f.jsxs("div",{className:"drawer-section-label flex items-center",children:[f.jsxs("span",{children:["Grounding source links (",O.groundingSources.length,")"]}),f.jsx(to,{text:"Links the model used as grounding or supporting context while producing the answer. These are not the same thing as answer visibility."})]}),f.jsx("ul",{className:"grid gap-0.5",children:O.groundingSources.map((te,de)=>{const ae=Of(te.uri),je=te.title||te.uri;return f.jsx("li",{className:"truncate text-sm",children:ae?f.jsx("a",{href:ae,target:"_blank",rel:"noopener noreferrer",className:"text-zinc-400 hover:text-zinc-200 transition-colors",children:je}):f.jsx("span",{className:"text-zinc-400",children:je})},de)})})]}),O.evidenceUrls.length>0&&f.jsxs("div",{children:[f.jsx("p",{className:"drawer-section-label",children:"Evidence URLs"}),f.jsx("ul",{className:"grid gap-1",children:O.evidenceUrls.map(te=>{const de=Of(te);return f.jsx("li",{className:"truncate text-sm",children:de?f.jsx("a",{href:de,target:"_blank",rel:"noopener noreferrer",className:"text-zinc-400 hover:text-zinc-200 transition-colors",children:te}):f.jsx("span",{className:"text-zinc-400",children:te})},te)})})]}),O.citedDomains.length===0&&O.groundingSources.length===0&&O.evidenceUrls.length===0&&f.jsxs("div",{className:"flex items-center justify-center h-24 text-zinc-600 text-sm",children:["No source data ",F?"for this run":"yet"]})]}),!ke&&!_e&&f.jsxs("div",{className:"flex items-center justify-center h-24 text-zinc-600 text-sm",children:["No answer visibility data ",F?"for this run":"yet"]})]})]})]})]})]})})}function Bn(e){const n=new Date("2026-02-20");return e.map((i,r)=>({runId:`run_mock_${r+1}`,citationState:i,createdAt:new Date(n.getTime()+r*2*24*60*60*1e3).toISOString()}))}const df=[{id:"project_citypoint",name:"Citypoint Dental NYC",canonicalDomain:"citypointdental.com",ownedDomains:[],aliases:[],country:"US",language:"en",tags:["local intent","priority"],labels:{},providers:[],locations:[],defaultLocation:null,autoExtractBacklinks:!1,configSource:"cli",configRevision:1},{id:"project_harbor",name:"Harbor Legal Group",canonicalDomain:"harborlegal.com",ownedDomains:[],aliases:[],country:"US",language:"en",tags:["lead gen"],labels:{},providers:[],locations:[],defaultLocation:null,autoExtractBacklinks:!1,configSource:"cli",configRevision:1},{id:"project_northstar",name:"Northstar Orthopedics",canonicalDomain:"northstarortho.com",ownedDomains:[],aliases:[],country:"US",language:"en",tags:["multi-location"],labels:{},providers:[],locations:[],defaultLocation:null,autoExtractBacklinks:!1,configSource:"cli",configRevision:1}];function kc(e){return{id:e.id,projectId:e.projectId,projectName:e.projectName,kind:e.kind,kindLabel:e.kindLabel,status:e.status,trigger:e.trigger??"manual",createdAt:e.createdAt,startedAt:e.startedAt,duration:e.duration,statusDetail:e.statusDetail,summary:e.summary,triggerLabel:e.triggerLabel}}const K3=kc({id:"run_citypoint_visibility_20260308",projectId:"project_citypoint",projectName:"Citypoint Dental NYC",kind:"answer-visibility",kindLabel:"Answer visibility sweep",status:"completed",createdAt:"2026-03-08T12:15:00.000Z",startedAt:"Mar 8, 12:15 PM",duration:"6m 12s",statusDetail:"18 tracked queries checked; 3 citation losses detected on emergency-intent prompts.",summary:"Citation losses on emergency-intent prompts",triggerLabel:"Scheduled"}),Z3=kc({id:"run_citypoint_queued_20260309",projectId:"project_citypoint",projectName:"Citypoint Dental NYC",kind:"answer-visibility",kindLabel:"Answer visibility sweep",status:"queued",createdAt:"2026-03-09T08:05:00.000Z",startedAt:"Mar 9, 8:05 AM",duration:"Waiting for slot",statusDetail:"Ready to enqueue after the next provider rate window clears.",summary:"Queued follow-up after local ranking movement",triggerLabel:"Manual"}),Y3=kc({id:"run_harbor_visibility_20260308",projectId:"project_harbor",projectName:"Harbor Legal Group",kind:"answer-visibility",kindLabel:"Answer visibility sweep",status:"completed",createdAt:"2026-03-08T11:05:00.000Z",startedAt:"Mar 8, 11:05 AM",duration:"5m 07s",statusDetail:"12 tracked queries checked; local-intent visibility held steady across branded prompts.",summary:"Branded prompts remain stable",triggerLabel:"Scheduled"}),X3=kc({id:"run_northstar_visibility_20260308",projectId:"project_northstar",projectName:"Northstar Orthopedics",kind:"answer-visibility",kindLabel:"Answer visibility sweep",status:"running",createdAt:"2026-03-08T13:40:00.000Z",startedAt:"Mar 8, 1:40 PM",duration:"3m 10s",statusDetail:"Provider responses still in flight for 9 multi-location prompts.",summary:"Mid-run on treatment-location prompts",triggerLabel:"Manual"}),J3=[{id:"evidence_citypoint_emergency_gemini",query:"emergency dentist brooklyn",provider:"gemini",model:"gemini-2.5-flash",location:null,citationState:"lost",changeLabel:"Lost since Mar 5",answerSnippet:"For urgent dental care in Brooklyn, Downtown Smiles and Harbor Dental are now cited first for emergency availability and same-day booking.",citedDomains:["downtownsmiles.com","harbordental.com"],evidenceUrls:["https://downtownsmiles.com/emergency-dentist-brooklyn","https://harbordental.com/same-day-emergency-care"],competitorDomains:["downtownsmiles.com","harbordental.com"],groundingSources:[],relatedTechnicalSignals:["FAQ schema missing on the emergency service page","llms.txt not found during latest site audit","Location pages link weakly into the emergency care hub"],summary:"AI answers now cite two competitors while your emergency page is no longer grounded.",runHistory:Bn(["cited","cited","cited","cited","cited","cited","cited","not-cited","not-cited"])},{id:"evidence_citypoint_emergency_openai",query:"emergency dentist brooklyn",provider:"openai",model:"gpt-5.4",location:null,citationState:"cited",changeLabel:"Cited for 6 runs",answerSnippet:"Citypoint Dental is listed as a top emergency dentist in Brooklyn for same-day appointments and walk-in availability.",citedDomains:["citypointdental.com","downtownsmiles.com"],evidenceUrls:["https://citypointdental.com/emergency-dentist-brooklyn"],competitorDomains:["downtownsmiles.com"],groundingSources:[],relatedTechnicalSignals:["Emergency page indexed with structured data"],summary:"OpenAI cites your emergency page consistently alongside one competitor.",runHistory:Bn(["not-cited","cited","cited","cited","cited","cited","cited"])},{id:"evidence_citypoint_emergency_claude",query:"emergency dentist brooklyn",provider:"claude",model:"claude-sonnet-4-6",location:null,citationState:"not-cited",changeLabel:"No citation across 12 runs",answerSnippet:"Based on the search results, top-rated emergency dental practices in Brooklyn include Downtown Smiles and Harbor Dental.",citedDomains:["downtownsmiles.com","harbordental.com"],evidenceUrls:[],competitorDomains:["downtownsmiles.com","harbordental.com"],groundingSources:[],relatedTechnicalSignals:["FAQ schema missing","llms.txt not found"],summary:"Claude does not cite your domain for this emergency query.",runHistory:Bn(["not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited"])},{id:"evidence_citypoint_invisalign_openai",query:"best invisalign dentist downtown brooklyn",provider:"openai",model:"gpt-5.4",location:null,citationState:"emerging",changeLabel:"First citation in 7 days",answerSnippet:"Citypoint Dental appears as an emerging recommendation for Invisalign in Downtown Brooklyn, supported by recent before-and-after case pages.",citedDomains:["citypointdental.com","clearlineortho.com"],evidenceUrls:["https://citypointdental.com/invisalign-downtown-brooklyn","https://citypointdental.com/case-studies/invisalign-open-bite"],competitorDomains:["clearlineortho.com"],groundingSources:[],relatedTechnicalSignals:["Structured data now present on two case-study pages","Internal links from service pages to case studies improved crawl depth"],summary:"Fresh case-study content is starting to earn citations on Invisalign prompts.",runHistory:Bn(["not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","cited"])},{id:"evidence_citypoint_invisalign_gemini",query:"best invisalign dentist downtown brooklyn",provider:"gemini",model:"gemini-2.5-flash",location:null,citationState:"cited",changeLabel:"Cited for 8 runs",answerSnippet:"Citypoint Dental in Downtown Brooklyn is highlighted for its Invisalign expertise and patient outcomes.",citedDomains:["citypointdental.com"],evidenceUrls:["https://citypointdental.com/invisalign-downtown-brooklyn"],competitorDomains:[],groundingSources:[],relatedTechnicalSignals:["Case study pages well-indexed"],summary:"Gemini consistently cites your Invisalign page with no competitor overlap.",runHistory:Bn(["cited","cited","cited","cited","cited","cited","cited","cited"])},{id:"evidence_citypoint_invisalign_claude",query:"best invisalign dentist downtown brooklyn",provider:"claude",model:"claude-sonnet-4-6",location:null,citationState:"not-cited",changeLabel:"No citation across 12 runs",answerSnippet:"For Invisalign in Downtown Brooklyn, Clear Line Ortho and Brooklyn Smiles are frequently recommended for their experienced orthodontists.",citedDomains:["clearlineortho.com","brooklynsmiles.com"],evidenceUrls:[],competitorDomains:["clearlineortho.com"],groundingSources:[],relatedTechnicalSignals:["No before/after schema on case study pages"],summary:"Claude does not surface your Invisalign content despite strong page quality.",runHistory:Bn(["not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited"])},{id:"evidence_citypoint_children_claude",query:"pediatric dentist brooklyn heights",provider:"claude",model:"claude-sonnet-4-6",location:null,citationState:"not-cited",changeLabel:"No citation across 4 runs",answerSnippet:"Answers cite neighborhood-specific pediatric practices with stronger family-focused FAQ content and clearer insurance details.",citedDomains:["brightkidsdental.com","parkpediatricdental.com"],evidenceUrls:["https://brightkidsdental.com/pediatric-dentist-brooklyn-heights","https://parkpediatricdental.com/insurance"],competitorDomains:["brightkidsdental.com","parkpediatricdental.com"],groundingSources:[],relatedTechnicalSignals:["No dedicated pediatric service page exists for Brooklyn Heights","Insurance content is buried three clicks deep"],summary:"Coverage gap is content-driven, not purely technical.",runHistory:Bn(["not-cited","not-cited","not-cited","not-cited"])},{id:"evidence_citypoint_children_gemini",query:"pediatric dentist brooklyn heights",provider:"gemini",model:"gemini-2.5-flash",location:null,citationState:"not-cited",changeLabel:"No citation across 12 runs",answerSnippet:"For pediatric dentistry in Brooklyn Heights, Bright Kids Dental and Park Pediatric Dental are cited for family-friendly care.",citedDomains:["brightkidsdental.com","parkpediatricdental.com"],evidenceUrls:[],competitorDomains:["brightkidsdental.com","parkpediatricdental.com"],groundingSources:[],relatedTechnicalSignals:["No dedicated pediatric page for Brooklyn Heights"],summary:"Gemini does not surface your domain for pediatric queries in this area.",runHistory:Bn(["not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited"])},{id:"evidence_citypoint_children_openai",query:"pediatric dentist brooklyn heights",provider:"openai",model:"gpt-5.4",location:null,citationState:"cited",changeLabel:"First citation this month",answerSnippet:"Citypoint Dental is mentioned as offering pediatric services in Brooklyn, though specialized pediatric-only practices are also highlighted.",citedDomains:["citypointdental.com","brightkidsdental.com"],evidenceUrls:["https://citypointdental.com/family-dentistry"],competitorDomains:["brightkidsdental.com"],groundingSources:[],relatedTechnicalSignals:["Family dentistry page recently updated"],summary:"OpenAI recently started citing your family dentistry page for this query.",runHistory:Bn(["not-cited","not-cited","not-cited","not-cited","not-cited","cited"])}];df[0],Math.round(1/9*100),Math.round(2/9*100),df[1],Bn(["cited","cited","cited","cited","cited"]),df[2],Math.round(2/7*100),Math.round(3/7*100),Bn(["not-cited","not-cited","not-cited","cited"]);function F3(e,n){return e.runs.find(i=>i.id===n)}function W3(e,n){for(const i of e.projects){const r=i.visibilityEvidence.find(l=>l.id===n);if(r)return{project:i,evidence:r}}}function eR(e,n,i){if(e){const r=e.visibilityEvidence.find(l=>l.id===i);if(r)return{project:e,evidence:r}}if(n)return W3(n,i)}const tR={regression:"negative",gain:"positive",opportunity:"caution","first-citation":"positive","provider-pickup":"positive","persistent-gap":"caution","competitor-gained":"negative","competitor-lost":"neutral","gbp-lodging-gap":"negative","gbp-listing-discrepancy":"negative","gbp-cta-gap":"caution","gbp-metric-drop":"negative","gbp-keyword-drop":"negative"},nR={opportunity:"write","persistent-gap":"write","competitor-gained":"write","competitor-lost":"write",regression:"investigate",gain:"monitor","first-citation":"monitor","provider-pickup":"monitor","gbp-lodging-gap":"write","gbp-listing-discrepancy":"write","gbp-cta-gap":"write","gbp-metric-drop":"investigate","gbp-keyword-drop":"investigate"},aR={regression:"lost",gain:"emerging",opportunity:"not-cited","first-citation":"emerging","provider-pickup":"emerging","persistent-gap":"not-cited","competitor-gained":"cited","competitor-lost":"not-cited","gbp-lodging-gap":"not-cited","gbp-listing-discrepancy":"not-cited","gbp-cta-gap":"not-cited","gbp-metric-drop":"lost","gbp-keyword-drop":"lost"},iR={regression:"Regression",gain:"Gain",opportunity:"Opportunity","first-citation":"First citation","provider-pickup":"Pickup","persistent-gap":"Gap","competitor-gained":"Competitor","competitor-lost":"Competitor","gbp-lodging-gap":"Lodging gap","gbp-listing-discrepancy":"Listing gap","gbp-cta-gap":"Booking CTA","gbp-metric-drop":"Metric drop","gbp-keyword-drop":"Keyword drop"};function sR(e){return{id:e.id,tone:tR[e.type],title:e.title,detail:e.cause?.details??e.cause?.cause??"",actionLabel:e.recommendation?.action??iR[e.type],actionGroup:nR[e.type],affectedPhrases:[{query:e.query,evidenceId:"",provider:e.provider,citationState:aR[e.type]}]}}function rR(e){return e.filter(n=>!n.dismissed).map(sR)}function bS(e){return{id:e.id,name:e.name,displayName:e.displayName,canonicalDomain:e.canonicalDomain,ownedDomains:e.ownedDomains??[],aliases:e.aliases??[],country:e.country,language:e.language,tags:e.tags,labels:e.labels,providers:e.providers??[],locations:e.locations??[],defaultLocation:e.defaultLocation??null,autoExtractBacklinks:e.autoExtractBacklinks??!1,configSource:e.configSource,configRevision:e.configRevision,createdAt:e.createdAt,updatedAt:e.updatedAt}}function Ib(e){try{return new Date(e).toLocaleDateString("en-US",{month:"short",day:"numeric",hour:"numeric",minute:"2-digit"})}catch{return e}}function oR(e,n){if(!e)return"Waiting";if(!n)return"Running";const i=new Date(n).getTime()-new Date(e).getTime();if(i<1e3)return"<1s";const r=Math.floor(i/1e3);if(r<60)return`${r}s`;const l=Math.floor(r/60),c=r%60;return`${l}m ${c}s`}function vS(e){switch(e){case Ne["answer-visibility"]:return"Answer visibility sweep";case Ne["gsc-sync"]:return"GSC sync";case Ne["inspect-sitemap"]:return"Sitemap inspection";case Ne["ga-sync"]:return"GA sync";case Ne["traffic-sync"]:return"Traffic sync";case Ne["bing-inspect"]:return"Bing URL inspection";case Ne["bing-inspect-sitemap"]:return"Bing sitemap inspection";case Ne["site-audit"]:return"Site audit";case Ne["backlink-extract"]:return"Backlink extract";case Ne["aeo-discover-seed"]:return"Discovery (seed phase)";case Ne["aeo-discover-probe"]:return"Discovery (probe phase)";case Ne["gbp-sync"]:return"Business Profile sync";case Ne["ads-sync"]:return"ChatGPT ads sync"}}function lR(e){return e===Bs.manual?"Manual":e===Bs.scheduled?"Scheduled":e===Bs["config-apply"]?"Config apply":e}function kp(e,n){return{id:e.id,projectId:e.projectId,projectName:n,kind:e.kind,kindLabel:vS(e.kind),status:e.status,trigger:e.trigger??"manual",location:e.location??null,createdAt:e.createdAt,startedAt:e.startedAt?Ib(e.startedAt):Ib(e.createdAt),duration:oR(e.startedAt??null,e.finishedAt??null),statusDetail:e.error?SS(e.error):cR(e),summary:uR(e),triggerLabel:lR(e.trigger)}}function SS(e){const n=ip(e);return n.length>200?n.slice(0,200)+"…":n}function cR(e){switch(e.status){case Ht.queued:return"Waiting for execution slot.";case Ht.running:return"Provider queries in progress.";case Ht.completed:return"All queries checked.";case Ht.partial:return"Run completed with some queries skipped.";case Ht.failed:return e.error?SS(e.error):"Run failed.";case Ht.cancelled:return"Run was cancelled.";default:return""}}function uR(e){const n=vS(e.kind);switch(e.status){case Ht.queued:return`${n} queued`;case Ht.running:return`${n} in progress`;case Ht.completed:return`${n} completed`;case Ht.partial:return`${n} partially completed`;case Ht.failed:return`${n} failed`;case Ht.cancelled:return`${n} cancelled`;default:return e.status}}function dR(e,n,i,r){const l=[];let c=0;const d=new Set;if(i.length>0){const h=i.flatMap(T=>T.snapshots??[]),g=new Map;for(const T of h)if(T.query){const k=`${T.query}::${T.provider}::${T.location??""}`;g.set(k,T)}const b=new Set(h.map(T=>T.location??null));b.size===0&&b.add(null);const S=new Set(h.map(T=>T.provider)),x=new Set(n.flatMap(T=>Object.keys(T.providerRuns??{}))),N=[...new Set([...S,...x])].sort(),_=N.length>0?N:["gemini"];for(const T of n){if(T.runs.length===0)continue;d.add(T.query);const k=T.runs.at(-1),E=k?.transition??"not-cited";for(const R of _){const V=[...b].filter(X=>g.has(`${T.query}::${R}::${X??""}`)),G=(T.providerRuns?.[R]?.length??0)>0,Z=V.length>0?V:G?[null]:[];for(const X of Z){const F=X??"",O=g.get(`${T.query}::${R}::${F}`),M=O?.model??null,le=M?`${R}:${M}`:null,ke=T.providerRuns?.[R],_e=le?T.modelRuns?.[le]:void 0,be=Ue=>Ue?.filter(Ge=>(Ge.location??null)===X),tt=V.length>0?be(ke):ke,Ke=V.length>0?be(_e):_e,ee=(tt?.length?tt:null)??(Ke?.length?Ke:null),B=tt?.length?"provider":Ke?.length?"model":"query",J=ee?ee.at(-1).transition:E,fe=ee?ee.at(-1).visibilityTransition??(ee.at(-1).visibilityState==="visible"?"visible":"not-visible"):k?.visibilityTransition??(k?.visibilityState==="visible"?"visible":"not-visible"),Se=ee?.at(-1)?.citationState,re=ee?.at(-1)?.visibilityState,Ze=O?J==="lost"?"lost":J==="emerging"?"emerging":O.citationState===lc.cited?"cited":"not-cited":Se===lc.cited?"cited":"not-cited",W=O?.visibilityState??(re==="visible"?"visible":re==="pending"?"pending":"not-visible"),ue=Vb(ee||T.runs),te=Pb(ee||T.runs),de=fR(T,R),ae=(ee??T.runs).map(Ue=>({runId:Ue.runId,citationState:Ue.citationState,createdAt:Ue.createdAt,model:de.get(Ue.runId)??null,answerMentioned:Ue.answerMentioned,visibilityState:Ue.visibilityState,visibilityTransition:Ue.visibilityTransition,mentionState:Ue.mentionState,mentionTransition:Ue.mentionTransition})),je=pR(ae),nt=B==="provider"&&je.length<=1?"model":B,xe=mR(ae);l.push({id:`evidence_${e}_${c++}`,query:T.query,provider:O?.provider??R,model:O?.model??null,location:O?.location??X,citationState:Ze,answerMentioned:O?.answerMentioned,visibilityState:W,visibilityChangeLabel:Gb(fe,te,{positive:"visible",negative:"not visible",first:"first visibility"}),changeLabel:Gb(J,ue),answerSnippet:O?.answerText??"",citedDomains:O?.citedDomains??[],evidenceUrls:[],competitorDomains:O?.competitorOverlap??[],recommendedCompetitors:O?.recommendedCompetitors??[],matchedTerms:O?.matchedTerms??[],relatedTechnicalSignals:[],groundingSources:O?.groundingSources??[],searchQueries:O?.searchQueries??[],summary:hR(W,fe,T.query),runHistory:ae,historyScope:nt,modelsSeen:je,modelTransitions:xe})}}}}for(const h of r)d.has(h.query)||l.push({id:`evidence_${e}_${c++}`,query:h.query,provider:"",model:null,location:null,citationState:"pending",visibilityState:"pending",visibilityChangeLabel:"Awaiting first run",changeLabel:"Awaiting first run",answerSnippet:"",citedDomains:[],evidenceUrls:[],competitorDomains:[],recommendedCompetitors:[],matchedTerms:[],relatedTechnicalSignals:[],groundingSources:[],searchQueries:[],summary:`"${h.query}" has been added but no visibility run has been triggered yet.`,runHistory:[],historyScope:"query",modelsSeen:[],modelTransitions:[]});return l}function fR(e,n){const i=new Map,r=`${n}:`;for(const[l,c]of Object.entries(e.modelRuns??{})){if(!l.startsWith(r))continue;const d=l.slice(r.length),h=d==="unknown"?null:d;for(const g of c)i.set(g.runId,h)}return i}function pR(e){const n=new Set;for(const i of e)i.model&&n.add(i.model);return[...n]}function mR(e){const n=[];let i=null;for(const r of e){const l=r.model??null;l!==i&&i!==null&&n.push({runId:r.runId,createdAt:r.createdAt,fromModel:i,toModel:l}),i=l}return n}function Vb(e){if(e.length===0)return 0;const n=e[e.length-1].citationState;let i=0;for(let r=e.length-1;r>=0&&e[r].citationState===n;r--)i++;return i}function Pb(e){if(e.length===0)return 0;const n=e[e.length-1].visibilityState??"not-visible";let i=0;for(let r=e.length-1;r>=0&&(e[r].visibilityState??"not-visible")===n;r--)i++;return i}function Gb(e,n,i){const r={positive:i?.positive??"cited",negative:i?.negative??"not cited",first:i?.first??"first citation"};switch(e){case"new":return"First observation";case"cited":case"visible":return n<=1?`${no(r.positive)} in latest run`:`${no(r.positive)} for ${n} runs`;case"lost":return"Lost since last run";case"emerging":return no(r.first);case"not-cited":case"not-visible":return n<=1?`${no(r.negative)} in latest run`:`${no(r.negative)} across ${n} runs`;default:return e}}function no(e){return e.charAt(0).toUpperCase()+e.slice(1)}function hR(e,n,i){switch(n){case"lost":return`Mention was lost for "${i}". Your brand no longer appeared in the latest answer.`;case"emerging":return`Your brand started appearing in AI answers for "${i}".`}switch(e){case"visible":return`Your brand or domain is mentioned in AI answers for "${i}".`;case"pending":return`"${i}" has been added but no run has been triggered yet.`;default:return`Your brand or domain was not mentioned in AI answers for "${i}".`}}function xS(e){const n=bS(e.project),i=dR(n.name,e.timeline,e.latestRunDetails,e.queries),l=[...e.runs].sort((c,d)=>d.createdAt.localeCompare(c.createdAt)).map(c=>kp(c,e.project.displayName||e.project.name));return e.overview?gR(n,e.overview,i,l):yR(n,i,l)}function gR(e,n,i,r){const l=rR(n.topInsights);for(const c of n.attentionItems)c.id.startsWith("insight_")||l.push({id:c.id,tone:c.tone,title:c.title,detail:c.detail,actionLabel:c.actionLabel,actionGroup:"investigate",affectedPhrases:[]});return{project:e,dateRangeLabel:n.dateRangeLabel,contextLabel:n.contextLabel,mentionSummary:n.scores.mention,visibilitySummary:n.scores.visibility,mentionShareSummary:n.scores.mentionShare,queryCounts:{cited:n.queryCounts.citedQueries,total:n.queryCounts.totalQueries},gapQueries:n.scores.gapQueries,mentionGaps:n.scores.mentionGaps,indexCoverage:n.scores.indexCoverage,providerScores:n.providerScores,competitorPressure:n.scores.competitorPressure,runStatus:n.scores.runStatus,citationMovement:n.citationMovement,mentionMovement:n.mentionMovement,movementComparison:n.movementComparison,insights:l,visibilityEvidence:i,competitors:n.competitors.map(c=>({id:c.id,domain:c.domain,citationCount:c.citationCount,totalQueries:c.totalQueries,pressureLabel:c.pressureLabel,citedQueries:c.citedQueries,movement:"",notes:""})),recentRuns:r.slice(0,5),suggestedQueries:n.suggestedQueries}}function yR(e,n,i){const r={label:"",value:"No data",delta:"Loading…",tone:"neutral",description:"",tooltip:"",trend:[]};return{project:e,dateRangeLabel:"All time",contextLabel:`${e.country} / ${e.language.toUpperCase()}`,mentionSummary:{...r,label:"Mention Coverage"},visibilitySummary:{...r,label:"Citation Coverage"},mentionShareSummary:{...r,label:"Mention Share",breakdown:{projectMentionSnapshots:0,competitorMentionSnapshots:0,perCompetitor:[],snapshotsWithAnswerText:0,snapshotsTotal:0}},queryCounts:{cited:0,total:0},gapQueries:{...r,label:"Citation Gaps"},mentionGaps:{...r,label:"Mention Gaps"},indexCoverage:{...r,label:"Index Coverage"},providerScores:[],competitorPressure:{...r,label:"Competitor Pressure"},runStatus:{...r,label:"Run Status"},citationMovement:{gained:0,lost:0,tone:"neutral",hasPreviousRun:!1},mentionMovement:{gained:0,lost:0,tone:"neutral",hasPreviousRun:!1},movementComparison:{hasPreviousRun:!1,comparable:!1,querySetChanged:!1,previousRunAt:null,currentQueryCount:0,previousQueryCount:0,comparableQueryCount:0,addedQueryCount:0,removedQueryCount:0,addedQueries:[],removedQueries:[]},insights:[],visibilityEvidence:n,competitors:[],recentRuns:i.slice(0,5),suggestedQueries:{rows:[],totalCandidates:0,skippedAlreadyTracked:0}}}function bR(e){const n=bS(e.project),i=[...e.runs].sort((N,_)=>_.createdAt.localeCompare(N.createdAt)),r=i.find(N=>N.kind===Ne["answer-visibility"])??i[0],l=e.project.displayName||e.project.name,c=r?kp(r,l):vR(e.project.id,l),d=e.overview;if(!d)return{project:n,mentionScore:0,mentionDelta:"No data",mentionTone:"neutral",lastRun:c,insight:"No runs completed yet.",trend:[],competitorPressureLabel:"None"};const h=d.scores.mention,g=h.progress??0,b=d.queryCounts.mentionedQueries,S=d.queryCounts.totalQueries,x=d.providers.length;return{project:n,mentionScore:g,mentionDelta:S>0?`${b} of ${S} queries`:"No data",mentionTone:h.tone,providerCoverage:h.providerCoverage,lastRun:c,insight:S>0?`${b} of ${S} queries mentioned across ${x} provider${x===1?"":"s"}.`:"No runs completed yet.",trend:h.trend??[],competitorPressureLabel:d.scores.competitorPressure.value}}function vR(e,n){return{id:"none",projectId:e,projectName:n,kind:Ne["answer-visibility"],kindLabel:"No runs yet",status:Ht.queued,trigger:Bs.manual,createdAt:"",startedAt:"",duration:"",statusDetail:"",summary:"No runs yet",triggerLabel:""}}function SR(e,n){const i=[],r=[],l=[];for(const d of e){r.push(xS(d)),l.push(bR(d));const h=[...d.runs].sort((g,b)=>b.createdAt.localeCompare(g.createdAt));for(const g of h)i.push(kp(g,d.project.displayName||d.project.name))}i.sort((d,h)=>h.createdAt.localeCompare(d.createdAt));const c=e.length>0;return{portfolioOverview:{projects:l,attentionItems:c?xR(r):[{id:"attention_setup",tone:"neutral",title:"No projects yet",detail:"Create your first project using the setup wizard, CLI, or API.",actionLabel:"Open setup",href:"/setup"}],recentRuns:i.slice(0,5),systemHealth:[{id:"api",label:"API",tone:"positive",detail:"Connected",meta:"Real-time data"},{id:"provider",label:"Gemini",tone:"positive",detail:"Configured",meta:"Provider active"}],lastUpdatedAt:new Date().toLocaleString("en-US",{month:"short",day:"numeric",hour:"numeric",minute:"2-digit",timeZoneName:"short"}),...c?{}:{emptyState:{title:"No projects yet",detail:"Canonry becomes useful after one project, a small query set, and one competitor list are in place.",ctaLabel:"Launch setup",ctaHref:"/setup"}}},projects:r,runs:i,setup:{healthChecks:[{id:"api",label:"API reachable",detail:"API is responding.",state:"ready",guidance:"Required for project creation and run history."},{id:"provider",label:"Provider configured",detail:"Gemini key is configured.",state:"ready",guidance:"Required for answer-visibility sweeps."}],projectDraft:{name:"",canonicalDomain:"",country:"US",language:"en"},queryImportState:{mode:"paste",queryCount:0,preview:[]},competitorDraft:{domains:[],notes:"Use the CLI to add competitors."},launchState:{enabled:c,ctaLabel:c?"Trigger run":"Create a project first",summary:c?"Ready to run.":"Create a project first to launch a run."}},settings:{providerStatuses:(n?.providers??[]).map(d=>({name:d.name,displayName:d.displayName,keyUrl:d.keyUrl,modelHint:d.modelHint,model:d.model,defaultModel:d.defaultModel,state:d.configured?"ready":"needs-config",detail:d.configured?"Provider is configured.":"API key is missing.",quota:d.quota})),google:{state:n?.google?.configured?"ready":"needs-config",detail:n?.google?.configured?"Google OAuth app credentials are configured. Project-level GSC connections can be created from the dashboard.":"Google OAuth client ID and client secret are not configured yet."},bing:{state:n?.bing?.configured?"ready":"needs-config",detail:n?.bing?.configured?"Bing Webmaster Tools API key is configured. Project-level Bing connections can be created from the dashboard.":"Bing Webmaster Tools API key is not configured yet."},selfHostNotes:["Configuration is stored in ~/.canonry/config.yaml.","The local config file is the source of truth for authentication credentials.","Google OAuth app credentials and per-domain Google tokens are stored in local config, not the database.","Database is SQLite at ~/.canonry/data.db.","API key was auto-generated during canonry init."],bootstrapNote:"Use the UI, CLI, or ~/.canonry/config.yaml to manage settings. Authentication credentials persist to local config."}}}function xR(e){const n=[];for(const i of e){const r=i.visibilityEvidence.filter(c=>c.citationState==="lost");r.length>0&&n.push({id:`attention_${i.project.id}_lost`,tone:"negative",title:`${i.project.displayName||i.project.name} lost citations`,detail:`${r.length} quer${r.length>1?"ies":"y"} lost citation.`,actionLabel:"Open project",href:`/projects/${i.project.id}`});const l=i.recentRuns.filter(c=>c.status===Ht.running||c.status===Ht.queued);l.length>0&&n.push({id:`attention_${i.project.id}_active`,tone:"neutral",title:`${i.project.displayName||i.project.name} has active runs`,detail:`${l.length} run${l.length>1?"s":""} in progress.`,actionLabel:"View runs",href:"/runs"})}return n.length===0&&n.push({id:"attention_stable",tone:"positive",title:"All projects stable",detail:"No citation losses or active runs to flag."}),n}const wS=U.createContext(null);wS.Provider;function go(){return U.useContext(wS)}function Ac(e){const i=go()?.dashboard??null,r=dn({...vp({client:se}),enabled:!i,refetchInterval:Zk}),l=dn({...xp({client:se,query:{kind:"answer-visibility"}}),enabled:!i,staleTime:lo,refetchInterval:T=>T.state.data?.some(R=>R.status==="running"||R.status==="queued")?3e3:lo}),c=dn({...H4({client:se}),enabled:!i}),d=r.data??[],h=l.data??[],g=Cw({queries:d.map(T=>{const k=h.filter(V=>V.projectId===T.id),E=k.filter(V=>(V.status==="completed"||V.status==="partial")&&V.kind==="answer-visibility"&&V.trigger!=="probe").sort((V,G)=>G.createdAt.localeCompare(V.createdAt)),R=E.length>0?E[0].id:"no-run";return{queryKey:["project-overview-slim",T.id,R],queryFn:async()=>{const V=await Tv(T.name).catch(()=>null);return{project:T,runs:k,queries:[],competitors:[],timeline:[],latestRunDetails:[],previousRunDetails:[],gscCoverage:null,bingCoverage:null,dbInsights:null,overview:V}},enabled:!i&&r.isSuccess&&l.isSuccess,staleTime:jf}})}),b=g.every(T=>T.isSuccess),S=U.useMemo(()=>{if(i)return i;if(!r.data||!l.data||d.length>0&&!b)return null;const T=g.map(k=>k.data?{...k.data,runs:h.filter(E=>E.projectId===k.data.project.id)}:null).filter(k=>k!=null);return SR(T,c.data??null)},[i,r.data,l.data,c.data,b,g,d.length,h]),x=!i&&(r.isError||l.isError),N=!i&&!S&&!x,_=U.useCallback(async()=>{await Promise.all([r.refetch(),l.refetch(),c.refetch()])},[r.refetch,l.refetch,c.refetch]);return{dashboard:S,isLoading:N,isError:x,refetch:_}}function wR(e){const n=go(),i=U.useMemo(()=>!n||!e?null:n.dashboard.projects.find(T=>T.project.name===e)??null,[n,e]),r=dn({...V4({client:se,path:{name:e??""}}),enabled:!!e&&!i,staleTime:jf,refetchOnWindowFocus:"always"}),l=dn({...xp({client:se,query:{kind:"answer-visibility"}}),enabled:!!e,staleTime:lo,refetchOnWindowFocus:"always",refetchInterval:T=>T.state.data?.some(R=>R.projectId===r.data?.id&&(R.status==="running"||R.status==="queued"))?3e3:lo}),c=r.data??null,d=U.useMemo(()=>c?(l.data??[]).filter(T=>T.projectId===c.id):[],[c,l.data]),{latestRunIds:h,previousRunIds:g,latestRunIdsKey:b}=U.useMemo(()=>{const T=d.filter(G=>(G.status==="completed"||G.status==="partial")&&G.kind==="answer-visibility"&&G.trigger!=="probe").sort((G,Z)=>Z.createdAt.localeCompare(G.createdAt)),k=T[0]?.createdAt??null,E=k?T.filter(G=>G.createdAt===k).map(G=>G.id):[],R=T.find(G=>G.createdAt!==k)?.createdAt??null,V=R?T.filter(G=>G.createdAt===R).map(G=>G.id):[];return{latestRunIds:E,previousRunIds:V,latestRunIdsKey:[...E].sort().join(",")}},[d]),S=dn({queryKey:["project-dashboard-full",c?.id??null,b||"none"],queryFn:async()=>{if(!c||!e)return null;const[T,k,E,R,V,G,Z,X,F]=await Promise.all([bk(e).catch(()=>[]),vk(e).catch(()=>[]),Sk(e).catch(()=>[]),h.length?Promise.all(h.map(O=>nc(O).catch(()=>null))).then(O=>O.filter(M=>M!=null)):Promise.resolve([]),g.length?Promise.all(g.map(O=>nc(O).catch(()=>null))).then(O=>O.filter(M=>M!=null)):Promise.resolve([]),Dk(e).catch(()=>null),Bk(e).catch(()=>null),qk(e).catch(()=>null),Tv(e).catch(()=>null)]);return{project:c,runs:d,queries:T,competitors:k,timeline:E,latestRunDetails:R,previousRunDetails:V,gscCoverage:G,bingCoverage:Z,dbInsights:X,overview:F}},enabled:!!c&&!!e&&l.isSuccess,staleTime:jf,refetchOnWindowFocus:"always",refetchInterval:Yk}),x=U.useMemo(()=>S.data?xS({...S.data,runs:d}):i||null,[S.data,d,i]),N=U.useCallback(async()=>{await Promise.all([r.refetch(),l.refetch(),S.refetch()])},[r.refetch,l.refetch,S.refetch]),_=!x&&(r.isLoading||l.isLoading||S.isLoading);return{commandCenter:x,project:c,isLoading:_,isError:r.isError||l.isError||S.isError,refetch:N}}const jR=["health"];async function NR(){const e=await $k("/health","API"),n=e.state==="ok"?{label:"Worker",state:"ok",detail:"In-process job runner"}:{label:"Worker",state:e.state,detail:`Depends on API health check · ${e.detail}`,statusCode:e.statusCode,hint:e.hint?`Worker status is inferred from API health in this deployment mode. ${e.hint}`:"Worker status is inferred from API health in this deployment mode."};return{apiStatus:e,workerStatus:n}}function Ap(e,n){return dn({queryKey:jR,queryFn:NR,enabled:e,refetchInterval:15e3,initialData:n})}function kR(e){return dn({...K0({client:se,path:{id:e??""}}),enabled:!!e,refetchInterval:n=>{const i=n.state.data?.status;return i==="running"||i==="queued"?3e3:!1}})}function _p(){const e=hc(),n=zw({strict:!1}),i=Tw({select:g=>g.location.pathname}),r=n.runId??null,l=n.evidenceId??null;return{runId:r,evidenceId:l,openRun:g=>{e({to:i,from:tn.to,search:b=>({...b,runId:g,evidenceId:void 0})})},openEvidence:g=>{e({to:i,from:tn.to,search:b=>({...b,evidenceId:g,runId:void 0})})},closeDrawer:()=>{e({to:i,from:tn.to,search:g=>({...g,runId:void 0,evidenceId:void 0})})}}}const AR={negative:"toast-card-negative",caution:"toast-card-caution",positive:"toast-card-positive",neutral:"toast-card-neutral"};function _R(e){if(e.cta)return`${e.cta.label}: ${e.title}`}function CR(){const e=U.useSyncExternalStore(Qk,Ky,Ky),n=hc(),{openRun:i}=_p(),r=U.useCallback(c=>{wf(c)},[]),l=U.useCallback(c=>{c.cta&&(c.cta.intent==="open-run-drawer"?i(c.cta.runId):n({to:"/runs"}),wf(c.id))},[n,i]);return e.length===0?null:f.jsx("div",{className:"toast-viewport","aria-label":"Notifications",children:e.map(c=>f.jsxs("section",{role:c.tone==="negative"?"alert":"status","aria-live":c.tone==="negative"?"assertive":"polite","data-state":c.state,className:`toast-card ${AR[c.tone]}`,children:[f.jsxs("div",{className:"toast-copy",children:[f.jsx("p",{className:"toast-title",children:c.title}),c.detail?f.jsx("p",{className:"toast-detail",children:c.detail}):null,c.cta?f.jsx("button",{type:"button",className:"toast-action",onClick:()=>l(c),"aria-label":_R(c),children:c.cta.label}):null]}),f.jsx("button",{type:"button",onClick:()=>r(c.id),className:"toast-dismiss","aria-label":"Dismiss",children:f.jsx(Qs,{className:"size-3.5"})})]},c.id))})}function zR(e,n={}){const{threshold:i=80}=n,r=U.useRef(null),l=U.useRef({scrollHeight:0,wasAtEnd:!0});function c(g){return g.scrollHeight-g.scrollTop-g.clientHeight}function d(){const g=r.current;return g?c(g)<=i:!0}function h(){const g=r.current;g&&(g.scrollTop=g.scrollHeight,l.current.wasAtEnd=!0,l.current.scrollHeight=g.scrollHeight)}return U.useEffect(()=>{const g=r.current;if(!g)return;const b=()=>{l.current.wasAtEnd=c(g)<=i};return g.addEventListener("scroll",b,{passive:!0}),()=>g.removeEventListener("scroll",b)},[i]),U.useLayoutEffect(()=>{const g=r.current;if(!g)return;const b=g.scrollHeight;b>l.current.scrollHeight&&l.current.wasAtEnd&&(g.scrollTop=b),l.current.scrollHeight=b},e),U.useEffect(()=>{const g=r.current;if(!g||typeof ResizeObserver>"u")return;const b=new ResizeObserver(()=>{const S=g.scrollHeight;S>l.current.scrollHeight&&l.current.wasAtEnd&&(g.scrollTop=S),l.current.scrollHeight=S});return b.observe(g),g.firstElementChild&&b.observe(g.firstElementChild),()=>b.disconnect()},[]),{ref:r,scrollToEnd:h,isAtEnd:d}}async function Cp(e){try{return await e.json()}catch{return{}}}function TR(){return typeof window<"u"&&window.__CANONRY_CONFIG__?.basePath?window.__CANONRY_CONFIG__.basePath.replace(/\/$/,"")+"/api/v1":"/api/v1"}const zp=TR();function Tp(e){e===401&&Hf()}async function Hb(e){const n=await fetch(`${zp}/projects/${encodeURIComponent(e)}/agent/transcript`,{credentials:"include"});if(!n.ok){Tp(n.status);const i=await Cp(n);throw new Hn(i.error?.message??`transcript fetch failed: ${n.status}`,n.status,i.error?.code)}return await n.json()}async function ER(e){const n=await fetch(`${zp}/projects/${encodeURIComponent(e)}/agent/transcript`,{method:"DELETE",credentials:"include"});if(!n.ok){Tp(n.status);const i=await Cp(n);throw new Hn(i.error?.message??`reset failed: ${n.status}`,n.status,i.error?.code)}}async function OR({project:e,prompt:n,provider:i,modelId:r,scope:l,signal:c,onEvent:d}){const h={prompt:n};i&&(h.provider=i),r&&(h.modelId=r),l&&(h.scope=l);const g=await fetch(`${zp}/projects/${encodeURIComponent(e)}/agent/prompt`,{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify(h),signal:c});if(!g.ok||!g.body){Tp(g.status);const _=await Cp(g);throw new Hn(_.error?.message??`prompt failed: ${g.status}`,g.status,_.error?.code)}const b=g.body.getReader(),S=new TextDecoder;let x="";const N=()=>{b.cancel().catch(()=>{})};c?.addEventListener("abort",N,{once:!0});try{for(;;){const{value:_,done:T}=await b.read();if(T)break;x+=S.decode(_,{stream:!0});let k=x.indexOf(`
|
|
58
|
+
`),de=[];let ae=[],je=0;const nt=()=>{if(ae.length===0)return;const xe=ae.join(" ").trim();xe&&de.push(f.jsx("p",{className:de.length>0?"mt-2.5":"",children:$b(xe,ee)},je++)),ae=[]};for(const xe of te){const Ue=xe.trim();if(/^[-\u2013\u2014]{3,}$/.test(Ue)){nt(),de.push(f.jsx("hr",{className:"border-zinc-800/60 my-3"},je++));continue}const Ge=Ue.match(/^(#{1,3})\s+(\S.*)$/);if(Ge){nt();const Et=Ge[1].length,zn=Ge[2].replace(/^[\p{Emoji}\p{Emoji_Component}\s]+/u,"").trim()||Ge[2],Ot=Et===1?"text-[13px] font-semibold text-zinc-100 mt-4 mb-1":Et===2?"text-xs font-semibold text-zinc-200 mt-3 mb-0.5":"text-xs font-medium text-zinc-300 mt-2";de.push(f.jsx("p",{className:Ot,children:$b(zn,ee)},je++));continue}if(Ue===""){nt();continue}ae.push(Ue)}return nt(),de};return f.jsx(hv,{open:!0,onOpenChange:te=>{te||i()},children:f.jsxs(fv,{children:[f.jsx(Vf,{className:"fixed inset-0 z-50 bg-black/80 backdrop-blur-sm"}),f.jsxs(Pf,{className:"evidence-modal","aria-describedby":void 0,children:[f.jsxs("div",{className:"evidence-modal-header",children:[f.jsxs("div",{className:"min-w-0 flex-1",children:[f.jsxs("p",{className:"eyebrow eyebrow-soft",children:[n.project.name," ","·"," ",O.provider||"All providers"]}),f.jsx(Gf,{className:"text-lg font-semibold text-zinc-50 truncate",children:e.query})]}),f.jsxs(pv,{className:"inline-flex size-8 items-center justify-center rounded-md text-zinc-500 transition hover:bg-zinc-800 hover:text-zinc-100 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-zinc-400 shrink-0",children:[f.jsx(Qs,{className:"size-4"}),f.jsx("span",{className:"sr-only",children:"Close"})]})]}),V&&f.jsxs("div",{className:"evidence-modal-timeline",children:[f.jsx("p",{className:"drawer-section-label mb-1.5",children:"Run history"}),f.jsx("div",{className:"flex items-center gap-1 overflow-x-auto pb-1",children:R.map((te,de)=>{const ae=h===-1&&de===R.length-1||h===de,je=te.visibilityState??(te.answerMentioned?"visible":"not-visible"),nt=te.visibilityTransition??je,xe=je==="visible"?"bg-emerald-400":nt==="emerging"?"bg-amber-400":nt==="lost"?"bg-rose-400":"bg-zinc-600",Ge=new Date(te.createdAt).toLocaleDateString(void 0,{month:"short",day:"numeric"}),Et=!!(te.model&&de>0&&R[de-1]?.model&&R[de-1].model!==te.model);return f.jsxs("button",{type:"button",className:`evidence-run-dot ${ae?"evidence-run-dot--selected":""}`,onClick:()=>{fe(de===R.length-1?-1:de)},"aria-label":[`Run ${Ge}: ${je}`,te.model?`model ${te.model}`:null,Et?"model changed":null].filter(Boolean).join(" — "),"aria-pressed":ae,children:[f.jsx("span",{className:`size-2 rounded-full ${xe} ${Et?"ring-1 ring-amber-300/80 ring-offset-2 ring-offset-zinc-950":""}`,"aria-hidden":"true"}),f.jsx("span",{className:"text-[10px] text-zinc-500",children:Ge})]},de)})}),h>=0&&h<R.length&&f.jsxs("p",{className:"text-[11px] text-zinc-500 mt-1",children:["Viewing run from ",new Date(R[h].createdAt).toLocaleString()," ","—"," ",f.jsx("span",{className:"capitalize",children:R[h].visibilityState??(R[h].answerMentioned?"visible":"not-visible")}),f.jsxs("button",{type:"button",className:"text-zinc-400 hover:text-zinc-200 ml-2",onClick:()=>{fe(-1)},children:["←"," Back to latest"]})]}),!F&&(e.modelTransitions?.length??0)>0&&f.jsx("div",{className:"mt-2 flex flex-wrap gap-2",children:e.modelTransitions.map(te=>f.jsx("span",{className:"inline-flex items-center rounded-full border border-amber-400/30 bg-amber-400/10 px-2 py-1 text-[10px] text-amber-100",children:`${te.fromModel??"unknown"} -> ${te.toModel??"unknown"} on ${new Date(te.createdAt).toLocaleDateString()}`},`${te.runId}:${te.toModel??"unknown"}`))})]}),f.jsxs("div",{className:"evidence-modal-body",children:[x&&f.jsxs("div",{className:"md:col-span-2 flex items-center justify-center py-12 text-zinc-500 text-sm",children:["Loading historical run data","…"]}),!x&&f.jsxs(f.Fragment,{children:[f.jsxs("div",{className:"evidence-modal-main",children:[f.jsxs("div",{className:`evidence-position-hero evidence-position-hero--${B}`,children:[f.jsx("p",{className:`evidence-position-label evidence-position-label--${B}`,children:W.label}),f.jsx("p",{className:`evidence-position-title evidence-position-title--${B}`,children:W.title}),f.jsx("p",{className:"evidence-position-meta",children:W.meta}),Ze&&f.jsx("p",{className:"mt-1 text-[11px] text-zinc-500",children:Ze})]}),O.answerSnippet&&f.jsxs("div",{children:[f.jsx("p",{className:"drawer-section-label",children:"What the AI said"}),f.jsx("div",{className:`answer-snippet-block ${r?"evidence-answer-expanded":"evidence-answer-collapsed"}`,children:ue()}),O.answerSnippet.length>280&&f.jsx("button",{type:"button",className:"mt-1.5 text-xs text-zinc-500 hover:text-zinc-300 transition-colors",onClick:()=>l(!r),children:r?"↑ Collapse":"↓ Show full answer"})]}),!O.answerSnippet&&!x&&f.jsx("div",{className:"rounded-lg border border-zinc-800/40 bg-zinc-900/20 px-4 py-8 text-center text-zinc-600 text-sm",children:"No answer text recorded for this run"}),O.searchQueries.length>0&&f.jsxs("div",{children:[f.jsxs("div",{className:"drawer-section-label flex items-center",children:[f.jsx("span",{children:"Web searches the model ran"}),f.jsx(to,{text:"The search queries this AI model issued while researching your prompt. They reveal how the model reformulated the question — the phrasings worth optimizing your content for. Distinct from grounding sources (what it found) and citations (what it linked)."})]}),f.jsx("ul",{className:"grid gap-1",children:O.searchQueries.map((te,de)=>f.jsxs("li",{className:"flex items-start gap-2 text-sm text-zinc-300",children:[f.jsx(GA,{className:"size-3.5 mt-0.5 shrink-0 text-zinc-600","aria-hidden":"true"}),f.jsx("span",{className:"break-words",children:te})]},`${de}-${te}`))})]}),!F&&e.relatedTechnicalSignals.length>0&&f.jsxs("div",{children:[f.jsx("p",{className:"drawer-section-label",children:le?"Why you're visible":"What to fix"}),f.jsx("div",{className:"action-items-list",children:e.relatedTechnicalSignals.map((te,de)=>f.jsxs("div",{className:"action-item",children:[f.jsx("svg",{className:`action-item-icon ${le?"text-emerald-400":"text-amber-400"}`,viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:le?f.jsx("path",{d:"M3 8l3.5 3.5L13 4.5",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"}):f.jsxs(f.Fragment,{children:[f.jsx("circle",{cx:"8",cy:"8",r:"7",stroke:"currentColor",strokeWidth:"1.5"}),f.jsx("path",{d:"M8 5v3.5M8 10.5v0",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})]})}),f.jsx("span",{className:"action-item-text",children:te})]},de))})]}),O.summary&&f.jsx("p",{className:"text-xs text-zinc-600 border-t border-zinc-800/40 pt-3 mt-1",children:O.summary})]}),f.jsxs("div",{className:"evidence-modal-sidebar",children:[(ke||_e)&&f.jsxs("div",{className:"sidebar-tabs",children:[f.jsx("button",{className:`sidebar-tab ${c==="mentions"?"sidebar-tab--active":""}`,onClick:()=>d("mentions"),type:"button",title:"Canonry's answer-level visibility assessment and any company names extracted from the answer text.",children:"Mentions"}),f.jsx("button",{className:`sidebar-tab ${c==="sources"?"sidebar-tab--active":""}`,onClick:()=>d("sources"),type:"button",title:"Grounding links the model used to build the answer. These are supporting sources, not the primary visibility signal.",children:"Sources"})]}),c==="mentions"&&f.jsxs(f.Fragment,{children:[f.jsxs("div",{children:[f.jsxs("div",{className:"drawer-section-label flex items-center",children:[f.jsx("span",{children:"Mention in answer"}),f.jsx(to,{text:"Canonry scans the AI answer for your owned domains and project name. This is independent from grounding or citation sources."})]}),f.jsxs("div",{className:`mention-status mention-status--${le?"mentioned":"not-mentioned"}`,children:[f.jsx("span",{className:"mention-status-icon",children:M?"…":le?"✓":"—"}),f.jsx("span",{className:"mention-status-label",children:M?"Pending":le?"Mentioned":"Not mentioned"})]}),O.matchedTerms.length>0&&f.jsxs("div",{className:"mt-2",children:[f.jsx("p",{className:"text-[10px] uppercase tracking-wide text-zinc-500 mb-1.5",children:"Matched in answer"}),f.jsx("div",{className:"flex flex-wrap gap-1.5",children:O.matchedTerms.map(te=>f.jsx("span",{className:"mention-chip mention-chip--brand",children:te},te))})]}),!M&&!le&&O.matchedTerms.length===0&&f.jsxs("div",{className:"mt-2",children:[f.jsx("p",{className:"text-[10px] uppercase tracking-wide text-zinc-500 mb-1.5",children:"Searched for"}),f.jsx("div",{className:"flex flex-wrap gap-1.5",children:tt.map(te=>f.jsx("span",{className:"mention-chip mention-chip--muted",children:te},te))}),f.jsx("p",{className:"text-[11px] text-zinc-600 mt-1.5",children:"None of these appear in the answer text."})]})]}),(O.recommendedCompetitors.length>0||O.competitorDomains.length>0)&&f.jsxs("div",{children:[f.jsxs("div",{className:"drawer-section-label flex items-center",children:[f.jsx("span",{children:"Competitors in answer"}),f.jsx(to,{text:"Competitors detected in the answer text or cited source links. Includes both tracked competitors and names extracted by Canonry."})]}),f.jsx("div",{className:"flex flex-wrap gap-1.5",children:(()=>{const te=O.competitorDomains.map(je=>je.replace(/^www\./,"")),de=new Set(te.map(je=>dc(je.replace(/\.[^.]+$/,""))));return[...O.recommendedCompetitors.filter(je=>!de.has(dc(je))),...te].map(je=>f.jsx("span",{className:"mention-chip mention-chip--competitor",children:je},je))})()})]})]}),c==="sources"&&f.jsxs(f.Fragment,{children:[O.citedDomains.length>0&&f.jsxs("div",{children:[f.jsxs("div",{className:"drawer-section-label flex items-center",children:[f.jsx("span",{children:"Domains from source links"}),f.jsx(to,{text:"These domains were extracted from grounding or citation URLs. They are supporting-source metadata, not proof that the answer text mentioned them."})]}),f.jsx("div",{className:"citation-leaderboard",children:O.citedDomains.map((te,de)=>{const ae=te.toLowerCase().replace(/^www\./,""),je=E.has(ae),nt=!je&&O.competitorDomains.some(Ue=>Ue.toLowerCase().replace(/^www\./,"")===ae),xe=je?"you":nt?"competitor":"other";return f.jsxs("div",{className:`citation-leaderboard-item citation-leaderboard-item--${xe}`,children:[f.jsxs("span",{className:"citation-leaderboard-rank",children:["#",de+1]}),f.jsx("span",{className:"citation-leaderboard-domain",children:te}),je&&f.jsx("span",{className:"citation-leaderboard-tag",children:"You"}),nt&&f.jsx("span",{className:"citation-leaderboard-tag",children:"Competitor"})]},te)})})]}),O.groundingSources.length>0&&f.jsxs("div",{children:[f.jsxs("div",{className:"drawer-section-label flex items-center",children:[f.jsxs("span",{children:["Grounding source links (",O.groundingSources.length,")"]}),f.jsx(to,{text:"Links the model used as grounding or supporting context while producing the answer. These are not the same thing as answer visibility."})]}),f.jsx("ul",{className:"grid gap-0.5",children:O.groundingSources.map((te,de)=>{const ae=Of(te.uri),je=te.title||te.uri;return f.jsx("li",{className:"truncate text-sm",children:ae?f.jsx("a",{href:ae,target:"_blank",rel:"noopener noreferrer",className:"text-zinc-400 hover:text-zinc-200 transition-colors",children:je}):f.jsx("span",{className:"text-zinc-400",children:je})},de)})})]}),O.evidenceUrls.length>0&&f.jsxs("div",{children:[f.jsx("p",{className:"drawer-section-label",children:"Evidence URLs"}),f.jsx("ul",{className:"grid gap-1",children:O.evidenceUrls.map(te=>{const de=Of(te);return f.jsx("li",{className:"truncate text-sm",children:de?f.jsx("a",{href:de,target:"_blank",rel:"noopener noreferrer",className:"text-zinc-400 hover:text-zinc-200 transition-colors",children:te}):f.jsx("span",{className:"text-zinc-400",children:te})},te)})})]}),O.citedDomains.length===0&&O.groundingSources.length===0&&O.evidenceUrls.length===0&&f.jsxs("div",{className:"flex items-center justify-center h-24 text-zinc-600 text-sm",children:["No source data ",F?"for this run":"yet"]})]}),!ke&&!_e&&f.jsxs("div",{className:"flex items-center justify-center h-24 text-zinc-600 text-sm",children:["No answer visibility data ",F?"for this run":"yet"]})]})]})]})]})]})})}function Bn(e){const n=new Date("2026-02-20");return e.map((i,r)=>({runId:`run_mock_${r+1}`,citationState:i,createdAt:new Date(n.getTime()+r*2*24*60*60*1e3).toISOString()}))}const df=[{id:"project_citypoint",name:"Citypoint Dental NYC",canonicalDomain:"citypointdental.com",ownedDomains:[],aliases:[],country:"US",language:"en",tags:["local intent","priority"],labels:{},providers:[],locations:[],defaultLocation:null,autoExtractBacklinks:!1,configSource:"cli",configRevision:1},{id:"project_harbor",name:"Harbor Legal Group",canonicalDomain:"harborlegal.com",ownedDomains:[],aliases:[],country:"US",language:"en",tags:["lead gen"],labels:{},providers:[],locations:[],defaultLocation:null,autoExtractBacklinks:!1,configSource:"cli",configRevision:1},{id:"project_northstar",name:"Northstar Orthopedics",canonicalDomain:"northstarortho.com",ownedDomains:[],aliases:[],country:"US",language:"en",tags:["multi-location"],labels:{},providers:[],locations:[],defaultLocation:null,autoExtractBacklinks:!1,configSource:"cli",configRevision:1}];function kc(e){return{id:e.id,projectId:e.projectId,projectName:e.projectName,kind:e.kind,kindLabel:e.kindLabel,status:e.status,trigger:e.trigger??"manual",createdAt:e.createdAt,startedAt:e.startedAt,duration:e.duration,statusDetail:e.statusDetail,summary:e.summary,triggerLabel:e.triggerLabel}}const K3=kc({id:"run_citypoint_visibility_20260308",projectId:"project_citypoint",projectName:"Citypoint Dental NYC",kind:"answer-visibility",kindLabel:"Answer visibility sweep",status:"completed",createdAt:"2026-03-08T12:15:00.000Z",startedAt:"Mar 8, 12:15 PM",duration:"6m 12s",statusDetail:"18 tracked queries checked; 3 citation losses detected on emergency-intent prompts.",summary:"Citation losses on emergency-intent prompts",triggerLabel:"Scheduled"}),Z3=kc({id:"run_citypoint_queued_20260309",projectId:"project_citypoint",projectName:"Citypoint Dental NYC",kind:"answer-visibility",kindLabel:"Answer visibility sweep",status:"queued",createdAt:"2026-03-09T08:05:00.000Z",startedAt:"Mar 9, 8:05 AM",duration:"Waiting for slot",statusDetail:"Ready to enqueue after the next provider rate window clears.",summary:"Queued follow-up after local ranking movement",triggerLabel:"Manual"}),Y3=kc({id:"run_harbor_visibility_20260308",projectId:"project_harbor",projectName:"Harbor Legal Group",kind:"answer-visibility",kindLabel:"Answer visibility sweep",status:"completed",createdAt:"2026-03-08T11:05:00.000Z",startedAt:"Mar 8, 11:05 AM",duration:"5m 07s",statusDetail:"12 tracked queries checked; local-intent visibility held steady across branded prompts.",summary:"Branded prompts remain stable",triggerLabel:"Scheduled"}),X3=kc({id:"run_northstar_visibility_20260308",projectId:"project_northstar",projectName:"Northstar Orthopedics",kind:"answer-visibility",kindLabel:"Answer visibility sweep",status:"running",createdAt:"2026-03-08T13:40:00.000Z",startedAt:"Mar 8, 1:40 PM",duration:"3m 10s",statusDetail:"Provider responses still in flight for 9 multi-location prompts.",summary:"Mid-run on treatment-location prompts",triggerLabel:"Manual"}),J3=[{id:"evidence_citypoint_emergency_gemini",query:"emergency dentist brooklyn",provider:"gemini",model:"gemini-2.5-flash",location:null,citationState:"lost",changeLabel:"Lost since Mar 5",answerSnippet:"For urgent dental care in Brooklyn, Downtown Smiles and Harbor Dental are now cited first for emergency availability and same-day booking.",citedDomains:["downtownsmiles.com","harbordental.com"],evidenceUrls:["https://downtownsmiles.com/emergency-dentist-brooklyn","https://harbordental.com/same-day-emergency-care"],competitorDomains:["downtownsmiles.com","harbordental.com"],groundingSources:[],relatedTechnicalSignals:["FAQ schema missing on the emergency service page","llms.txt not found during latest site audit","Location pages link weakly into the emergency care hub"],summary:"AI answers now cite two competitors while your emergency page is no longer grounded.",runHistory:Bn(["cited","cited","cited","cited","cited","cited","cited","not-cited","not-cited"])},{id:"evidence_citypoint_emergency_openai",query:"emergency dentist brooklyn",provider:"openai",model:"gpt-5.4",location:null,citationState:"cited",changeLabel:"Cited for 6 runs",answerSnippet:"Citypoint Dental is listed as a top emergency dentist in Brooklyn for same-day appointments and walk-in availability.",citedDomains:["citypointdental.com","downtownsmiles.com"],evidenceUrls:["https://citypointdental.com/emergency-dentist-brooklyn"],competitorDomains:["downtownsmiles.com"],groundingSources:[],relatedTechnicalSignals:["Emergency page indexed with structured data"],summary:"OpenAI cites your emergency page consistently alongside one competitor.",runHistory:Bn(["not-cited","cited","cited","cited","cited","cited","cited"])},{id:"evidence_citypoint_emergency_claude",query:"emergency dentist brooklyn",provider:"claude",model:"claude-sonnet-4-6",location:null,citationState:"not-cited",changeLabel:"No citation across 12 runs",answerSnippet:"Based on the search results, top-rated emergency dental practices in Brooklyn include Downtown Smiles and Harbor Dental.",citedDomains:["downtownsmiles.com","harbordental.com"],evidenceUrls:[],competitorDomains:["downtownsmiles.com","harbordental.com"],groundingSources:[],relatedTechnicalSignals:["FAQ schema missing","llms.txt not found"],summary:"Claude does not cite your domain for this emergency query.",runHistory:Bn(["not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited"])},{id:"evidence_citypoint_invisalign_openai",query:"best invisalign dentist downtown brooklyn",provider:"openai",model:"gpt-5.4",location:null,citationState:"emerging",changeLabel:"First citation in 7 days",answerSnippet:"Citypoint Dental appears as an emerging recommendation for Invisalign in Downtown Brooklyn, supported by recent before-and-after case pages.",citedDomains:["citypointdental.com","clearlineortho.com"],evidenceUrls:["https://citypointdental.com/invisalign-downtown-brooklyn","https://citypointdental.com/case-studies/invisalign-open-bite"],competitorDomains:["clearlineortho.com"],groundingSources:[],relatedTechnicalSignals:["Structured data now present on two case-study pages","Internal links from service pages to case studies improved crawl depth"],summary:"Fresh case-study content is starting to earn citations on Invisalign prompts.",runHistory:Bn(["not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","cited"])},{id:"evidence_citypoint_invisalign_gemini",query:"best invisalign dentist downtown brooklyn",provider:"gemini",model:"gemini-2.5-flash",location:null,citationState:"cited",changeLabel:"Cited for 8 runs",answerSnippet:"Citypoint Dental in Downtown Brooklyn is highlighted for its Invisalign expertise and patient outcomes.",citedDomains:["citypointdental.com"],evidenceUrls:["https://citypointdental.com/invisalign-downtown-brooklyn"],competitorDomains:[],groundingSources:[],relatedTechnicalSignals:["Case study pages well-indexed"],summary:"Gemini consistently cites your Invisalign page with no competitor overlap.",runHistory:Bn(["cited","cited","cited","cited","cited","cited","cited","cited"])},{id:"evidence_citypoint_invisalign_claude",query:"best invisalign dentist downtown brooklyn",provider:"claude",model:"claude-sonnet-4-6",location:null,citationState:"not-cited",changeLabel:"No citation across 12 runs",answerSnippet:"For Invisalign in Downtown Brooklyn, Clear Line Ortho and Brooklyn Smiles are frequently recommended for their experienced orthodontists.",citedDomains:["clearlineortho.com","brooklynsmiles.com"],evidenceUrls:[],competitorDomains:["clearlineortho.com"],groundingSources:[],relatedTechnicalSignals:["No before/after schema on case study pages"],summary:"Claude does not surface your Invisalign content despite strong page quality.",runHistory:Bn(["not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited"])},{id:"evidence_citypoint_children_claude",query:"pediatric dentist brooklyn heights",provider:"claude",model:"claude-sonnet-4-6",location:null,citationState:"not-cited",changeLabel:"No citation across 4 runs",answerSnippet:"Answers cite neighborhood-specific pediatric practices with stronger family-focused FAQ content and clearer insurance details.",citedDomains:["brightkidsdental.com","parkpediatricdental.com"],evidenceUrls:["https://brightkidsdental.com/pediatric-dentist-brooklyn-heights","https://parkpediatricdental.com/insurance"],competitorDomains:["brightkidsdental.com","parkpediatricdental.com"],groundingSources:[],relatedTechnicalSignals:["No dedicated pediatric service page exists for Brooklyn Heights","Insurance content is buried three clicks deep"],summary:"Coverage gap is content-driven, not purely technical.",runHistory:Bn(["not-cited","not-cited","not-cited","not-cited"])},{id:"evidence_citypoint_children_gemini",query:"pediatric dentist brooklyn heights",provider:"gemini",model:"gemini-2.5-flash",location:null,citationState:"not-cited",changeLabel:"No citation across 12 runs",answerSnippet:"For pediatric dentistry in Brooklyn Heights, Bright Kids Dental and Park Pediatric Dental are cited for family-friendly care.",citedDomains:["brightkidsdental.com","parkpediatricdental.com"],evidenceUrls:[],competitorDomains:["brightkidsdental.com","parkpediatricdental.com"],groundingSources:[],relatedTechnicalSignals:["No dedicated pediatric page for Brooklyn Heights"],summary:"Gemini does not surface your domain for pediatric queries in this area.",runHistory:Bn(["not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited"])},{id:"evidence_citypoint_children_openai",query:"pediatric dentist brooklyn heights",provider:"openai",model:"gpt-5.4",location:null,citationState:"cited",changeLabel:"First citation this month",answerSnippet:"Citypoint Dental is mentioned as offering pediatric services in Brooklyn, though specialized pediatric-only practices are also highlighted.",citedDomains:["citypointdental.com","brightkidsdental.com"],evidenceUrls:["https://citypointdental.com/family-dentistry"],competitorDomains:["brightkidsdental.com"],groundingSources:[],relatedTechnicalSignals:["Family dentistry page recently updated"],summary:"OpenAI recently started citing your family dentistry page for this query.",runHistory:Bn(["not-cited","not-cited","not-cited","not-cited","not-cited","cited"])}];df[0],Math.round(1/9*100),Math.round(2/9*100),df[1],Bn(["cited","cited","cited","cited","cited"]),df[2],Math.round(2/7*100),Math.round(3/7*100),Bn(["not-cited","not-cited","not-cited","cited"]);function F3(e,n){return e.runs.find(i=>i.id===n)}function W3(e,n){for(const i of e.projects){const r=i.visibilityEvidence.find(l=>l.id===n);if(r)return{project:i,evidence:r}}}function eR(e,n,i){if(e){const r=e.visibilityEvidence.find(l=>l.id===i);if(r)return{project:e,evidence:r}}if(n)return W3(n,i)}const tR={regression:"negative",gain:"positive",opportunity:"caution","first-citation":"positive","provider-pickup":"positive","persistent-gap":"caution","competitor-gained":"negative","competitor-lost":"neutral","gbp-lodging-gap":"negative","gbp-listing-discrepancy":"negative","gbp-cta-gap":"caution","gbp-description-missing":"caution","gbp-metric-drop":"negative","gbp-keyword-drop":"negative"},nR={opportunity:"write","persistent-gap":"write","competitor-gained":"write","competitor-lost":"write",regression:"investigate",gain:"monitor","first-citation":"monitor","provider-pickup":"monitor","gbp-lodging-gap":"write","gbp-listing-discrepancy":"write","gbp-cta-gap":"write","gbp-description-missing":"write","gbp-metric-drop":"investigate","gbp-keyword-drop":"investigate"},aR={regression:"lost",gain:"emerging",opportunity:"not-cited","first-citation":"emerging","provider-pickup":"emerging","persistent-gap":"not-cited","competitor-gained":"cited","competitor-lost":"not-cited","gbp-lodging-gap":"not-cited","gbp-listing-discrepancy":"not-cited","gbp-cta-gap":"not-cited","gbp-description-missing":"not-cited","gbp-metric-drop":"lost","gbp-keyword-drop":"lost"},iR={regression:"Regression",gain:"Gain",opportunity:"Opportunity","first-citation":"First citation","provider-pickup":"Pickup","persistent-gap":"Gap","competitor-gained":"Competitor","competitor-lost":"Competitor","gbp-lodging-gap":"Lodging gap","gbp-listing-discrepancy":"Listing gap","gbp-cta-gap":"Booking CTA","gbp-description-missing":"Description gap","gbp-metric-drop":"Metric drop","gbp-keyword-drop":"Keyword drop"};function sR(e){return{id:e.id,tone:tR[e.type],title:e.title,detail:e.cause?.details??e.cause?.cause??"",actionLabel:e.recommendation?.action??iR[e.type],actionGroup:nR[e.type],affectedPhrases:[{query:e.query,evidenceId:"",provider:e.provider,citationState:aR[e.type]}]}}function rR(e){return e.filter(n=>!n.dismissed).map(sR)}function bS(e){return{id:e.id,name:e.name,displayName:e.displayName,canonicalDomain:e.canonicalDomain,ownedDomains:e.ownedDomains??[],aliases:e.aliases??[],country:e.country,language:e.language,tags:e.tags,labels:e.labels,providers:e.providers??[],locations:e.locations??[],defaultLocation:e.defaultLocation??null,autoExtractBacklinks:e.autoExtractBacklinks??!1,configSource:e.configSource,configRevision:e.configRevision,createdAt:e.createdAt,updatedAt:e.updatedAt}}function Ib(e){try{return new Date(e).toLocaleDateString("en-US",{month:"short",day:"numeric",hour:"numeric",minute:"2-digit"})}catch{return e}}function oR(e,n){if(!e)return"Waiting";if(!n)return"Running";const i=new Date(n).getTime()-new Date(e).getTime();if(i<1e3)return"<1s";const r=Math.floor(i/1e3);if(r<60)return`${r}s`;const l=Math.floor(r/60),c=r%60;return`${l}m ${c}s`}function vS(e){switch(e){case Ne["answer-visibility"]:return"Answer visibility sweep";case Ne["gsc-sync"]:return"GSC sync";case Ne["inspect-sitemap"]:return"Sitemap inspection";case Ne["ga-sync"]:return"GA sync";case Ne["traffic-sync"]:return"Traffic sync";case Ne["bing-inspect"]:return"Bing URL inspection";case Ne["bing-inspect-sitemap"]:return"Bing sitemap inspection";case Ne["site-audit"]:return"Site audit";case Ne["backlink-extract"]:return"Backlink extract";case Ne["aeo-discover-seed"]:return"Discovery (seed phase)";case Ne["aeo-discover-probe"]:return"Discovery (probe phase)";case Ne["gbp-sync"]:return"Business Profile sync";case Ne["ads-sync"]:return"ChatGPT ads sync"}}function lR(e){return e===Bs.manual?"Manual":e===Bs.scheduled?"Scheduled":e===Bs["config-apply"]?"Config apply":e}function kp(e,n){return{id:e.id,projectId:e.projectId,projectName:n,kind:e.kind,kindLabel:vS(e.kind),status:e.status,trigger:e.trigger??"manual",location:e.location??null,createdAt:e.createdAt,startedAt:e.startedAt?Ib(e.startedAt):Ib(e.createdAt),duration:oR(e.startedAt??null,e.finishedAt??null),statusDetail:e.error?SS(e.error):cR(e),summary:uR(e),triggerLabel:lR(e.trigger)}}function SS(e){const n=ip(e);return n.length>200?n.slice(0,200)+"…":n}function cR(e){switch(e.status){case Ht.queued:return"Waiting for execution slot.";case Ht.running:return"Provider queries in progress.";case Ht.completed:return"All queries checked.";case Ht.partial:return"Run completed with some queries skipped.";case Ht.failed:return e.error?SS(e.error):"Run failed.";case Ht.cancelled:return"Run was cancelled.";default:return""}}function uR(e){const n=vS(e.kind);switch(e.status){case Ht.queued:return`${n} queued`;case Ht.running:return`${n} in progress`;case Ht.completed:return`${n} completed`;case Ht.partial:return`${n} partially completed`;case Ht.failed:return`${n} failed`;case Ht.cancelled:return`${n} cancelled`;default:return e.status}}function dR(e,n,i,r){const l=[];let c=0;const d=new Set;if(i.length>0){const h=i.flatMap(T=>T.snapshots??[]),g=new Map;for(const T of h)if(T.query){const k=`${T.query}::${T.provider}::${T.location??""}`;g.set(k,T)}const b=new Set(h.map(T=>T.location??null));b.size===0&&b.add(null);const S=new Set(h.map(T=>T.provider)),x=new Set(n.flatMap(T=>Object.keys(T.providerRuns??{}))),N=[...new Set([...S,...x])].sort(),_=N.length>0?N:["gemini"];for(const T of n){if(T.runs.length===0)continue;d.add(T.query);const k=T.runs.at(-1),E=k?.transition??"not-cited";for(const R of _){const V=[...b].filter(X=>g.has(`${T.query}::${R}::${X??""}`)),G=(T.providerRuns?.[R]?.length??0)>0,Z=V.length>0?V:G?[null]:[];for(const X of Z){const F=X??"",O=g.get(`${T.query}::${R}::${F}`),M=O?.model??null,le=M?`${R}:${M}`:null,ke=T.providerRuns?.[R],_e=le?T.modelRuns?.[le]:void 0,be=Ue=>Ue?.filter(Ge=>(Ge.location??null)===X),tt=V.length>0?be(ke):ke,Ke=V.length>0?be(_e):_e,ee=(tt?.length?tt:null)??(Ke?.length?Ke:null),B=tt?.length?"provider":Ke?.length?"model":"query",J=ee?ee.at(-1).transition:E,fe=ee?ee.at(-1).visibilityTransition??(ee.at(-1).visibilityState==="visible"?"visible":"not-visible"):k?.visibilityTransition??(k?.visibilityState==="visible"?"visible":"not-visible"),Se=ee?.at(-1)?.citationState,re=ee?.at(-1)?.visibilityState,Ze=O?J==="lost"?"lost":J==="emerging"?"emerging":O.citationState===lc.cited?"cited":"not-cited":Se===lc.cited?"cited":"not-cited",W=O?.visibilityState??(re==="visible"?"visible":re==="pending"?"pending":"not-visible"),ue=Vb(ee||T.runs),te=Pb(ee||T.runs),de=fR(T,R),ae=(ee??T.runs).map(Ue=>({runId:Ue.runId,citationState:Ue.citationState,createdAt:Ue.createdAt,model:de.get(Ue.runId)??null,answerMentioned:Ue.answerMentioned,visibilityState:Ue.visibilityState,visibilityTransition:Ue.visibilityTransition,mentionState:Ue.mentionState,mentionTransition:Ue.mentionTransition})),je=pR(ae),nt=B==="provider"&&je.length<=1?"model":B,xe=mR(ae);l.push({id:`evidence_${e}_${c++}`,query:T.query,provider:O?.provider??R,model:O?.model??null,location:O?.location??X,citationState:Ze,answerMentioned:O?.answerMentioned,visibilityState:W,visibilityChangeLabel:Gb(fe,te,{positive:"visible",negative:"not visible",first:"first visibility"}),changeLabel:Gb(J,ue),answerSnippet:O?.answerText??"",citedDomains:O?.citedDomains??[],evidenceUrls:[],competitorDomains:O?.competitorOverlap??[],recommendedCompetitors:O?.recommendedCompetitors??[],matchedTerms:O?.matchedTerms??[],relatedTechnicalSignals:[],groundingSources:O?.groundingSources??[],searchQueries:O?.searchQueries??[],summary:hR(W,fe,T.query),runHistory:ae,historyScope:nt,modelsSeen:je,modelTransitions:xe})}}}}for(const h of r)d.has(h.query)||l.push({id:`evidence_${e}_${c++}`,query:h.query,provider:"",model:null,location:null,citationState:"pending",visibilityState:"pending",visibilityChangeLabel:"Awaiting first run",changeLabel:"Awaiting first run",answerSnippet:"",citedDomains:[],evidenceUrls:[],competitorDomains:[],recommendedCompetitors:[],matchedTerms:[],relatedTechnicalSignals:[],groundingSources:[],searchQueries:[],summary:`"${h.query}" has been added but no visibility run has been triggered yet.`,runHistory:[],historyScope:"query",modelsSeen:[],modelTransitions:[]});return l}function fR(e,n){const i=new Map,r=`${n}:`;for(const[l,c]of Object.entries(e.modelRuns??{})){if(!l.startsWith(r))continue;const d=l.slice(r.length),h=d==="unknown"?null:d;for(const g of c)i.set(g.runId,h)}return i}function pR(e){const n=new Set;for(const i of e)i.model&&n.add(i.model);return[...n]}function mR(e){const n=[];let i=null;for(const r of e){const l=r.model??null;l!==i&&i!==null&&n.push({runId:r.runId,createdAt:r.createdAt,fromModel:i,toModel:l}),i=l}return n}function Vb(e){if(e.length===0)return 0;const n=e[e.length-1].citationState;let i=0;for(let r=e.length-1;r>=0&&e[r].citationState===n;r--)i++;return i}function Pb(e){if(e.length===0)return 0;const n=e[e.length-1].visibilityState??"not-visible";let i=0;for(let r=e.length-1;r>=0&&(e[r].visibilityState??"not-visible")===n;r--)i++;return i}function Gb(e,n,i){const r={positive:i?.positive??"cited",negative:i?.negative??"not cited",first:i?.first??"first citation"};switch(e){case"new":return"First observation";case"cited":case"visible":return n<=1?`${no(r.positive)} in latest run`:`${no(r.positive)} for ${n} runs`;case"lost":return"Lost since last run";case"emerging":return no(r.first);case"not-cited":case"not-visible":return n<=1?`${no(r.negative)} in latest run`:`${no(r.negative)} across ${n} runs`;default:return e}}function no(e){return e.charAt(0).toUpperCase()+e.slice(1)}function hR(e,n,i){switch(n){case"lost":return`Mention was lost for "${i}". Your brand no longer appeared in the latest answer.`;case"emerging":return`Your brand started appearing in AI answers for "${i}".`}switch(e){case"visible":return`Your brand or domain is mentioned in AI answers for "${i}".`;case"pending":return`"${i}" has been added but no run has been triggered yet.`;default:return`Your brand or domain was not mentioned in AI answers for "${i}".`}}function xS(e){const n=bS(e.project),i=dR(n.name,e.timeline,e.latestRunDetails,e.queries),l=[...e.runs].sort((c,d)=>d.createdAt.localeCompare(c.createdAt)).map(c=>kp(c,e.project.displayName||e.project.name));return e.overview?gR(n,e.overview,i,l):yR(n,i,l)}function gR(e,n,i,r){const l=rR(n.topInsights);for(const c of n.attentionItems)c.id.startsWith("insight_")||l.push({id:c.id,tone:c.tone,title:c.title,detail:c.detail,actionLabel:c.actionLabel,actionGroup:"investigate",affectedPhrases:[]});return{project:e,dateRangeLabel:n.dateRangeLabel,contextLabel:n.contextLabel,mentionSummary:n.scores.mention,visibilitySummary:n.scores.visibility,mentionShareSummary:n.scores.mentionShare,queryCounts:{cited:n.queryCounts.citedQueries,total:n.queryCounts.totalQueries},gapQueries:n.scores.gapQueries,mentionGaps:n.scores.mentionGaps,indexCoverage:n.scores.indexCoverage,providerScores:n.providerScores,competitorPressure:n.scores.competitorPressure,runStatus:n.scores.runStatus,citationMovement:n.citationMovement,mentionMovement:n.mentionMovement,movementComparison:n.movementComparison,insights:l,visibilityEvidence:i,competitors:n.competitors.map(c=>({id:c.id,domain:c.domain,citationCount:c.citationCount,totalQueries:c.totalQueries,pressureLabel:c.pressureLabel,citedQueries:c.citedQueries,movement:"",notes:""})),recentRuns:r.slice(0,5),suggestedQueries:n.suggestedQueries}}function yR(e,n,i){const r={label:"",value:"No data",delta:"Loading…",tone:"neutral",description:"",tooltip:"",trend:[]};return{project:e,dateRangeLabel:"All time",contextLabel:`${e.country} / ${e.language.toUpperCase()}`,mentionSummary:{...r,label:"Mention Coverage"},visibilitySummary:{...r,label:"Citation Coverage"},mentionShareSummary:{...r,label:"Mention Share",breakdown:{projectMentionSnapshots:0,competitorMentionSnapshots:0,perCompetitor:[],snapshotsWithAnswerText:0,snapshotsTotal:0}},queryCounts:{cited:0,total:0},gapQueries:{...r,label:"Citation Gaps"},mentionGaps:{...r,label:"Mention Gaps"},indexCoverage:{...r,label:"Index Coverage"},providerScores:[],competitorPressure:{...r,label:"Competitor Pressure"},runStatus:{...r,label:"Run Status"},citationMovement:{gained:0,lost:0,tone:"neutral",hasPreviousRun:!1},mentionMovement:{gained:0,lost:0,tone:"neutral",hasPreviousRun:!1},movementComparison:{hasPreviousRun:!1,comparable:!1,querySetChanged:!1,previousRunAt:null,currentQueryCount:0,previousQueryCount:0,comparableQueryCount:0,addedQueryCount:0,removedQueryCount:0,addedQueries:[],removedQueries:[]},insights:[],visibilityEvidence:n,competitors:[],recentRuns:i.slice(0,5),suggestedQueries:{rows:[],totalCandidates:0,skippedAlreadyTracked:0}}}function bR(e){const n=bS(e.project),i=[...e.runs].sort((N,_)=>_.createdAt.localeCompare(N.createdAt)),r=i.find(N=>N.kind===Ne["answer-visibility"])??i[0],l=e.project.displayName||e.project.name,c=r?kp(r,l):vR(e.project.id,l),d=e.overview;if(!d)return{project:n,mentionScore:0,mentionDelta:"No data",mentionTone:"neutral",lastRun:c,insight:"No runs completed yet.",trend:[],competitorPressureLabel:"None"};const h=d.scores.mention,g=h.progress??0,b=d.queryCounts.mentionedQueries,S=d.queryCounts.totalQueries,x=d.providers.length;return{project:n,mentionScore:g,mentionDelta:S>0?`${b} of ${S} queries`:"No data",mentionTone:h.tone,providerCoverage:h.providerCoverage,lastRun:c,insight:S>0?`${b} of ${S} queries mentioned across ${x} provider${x===1?"":"s"}.`:"No runs completed yet.",trend:h.trend??[],competitorPressureLabel:d.scores.competitorPressure.value}}function vR(e,n){return{id:"none",projectId:e,projectName:n,kind:Ne["answer-visibility"],kindLabel:"No runs yet",status:Ht.queued,trigger:Bs.manual,createdAt:"",startedAt:"",duration:"",statusDetail:"",summary:"No runs yet",triggerLabel:""}}function SR(e,n){const i=[],r=[],l=[];for(const d of e){r.push(xS(d)),l.push(bR(d));const h=[...d.runs].sort((g,b)=>b.createdAt.localeCompare(g.createdAt));for(const g of h)i.push(kp(g,d.project.displayName||d.project.name))}i.sort((d,h)=>h.createdAt.localeCompare(d.createdAt));const c=e.length>0;return{portfolioOverview:{projects:l,attentionItems:c?xR(r):[{id:"attention_setup",tone:"neutral",title:"No projects yet",detail:"Create your first project using the setup wizard, CLI, or API.",actionLabel:"Open setup",href:"/setup"}],recentRuns:i.slice(0,5),systemHealth:[{id:"api",label:"API",tone:"positive",detail:"Connected",meta:"Real-time data"},{id:"provider",label:"Gemini",tone:"positive",detail:"Configured",meta:"Provider active"}],lastUpdatedAt:new Date().toLocaleString("en-US",{month:"short",day:"numeric",hour:"numeric",minute:"2-digit",timeZoneName:"short"}),...c?{}:{emptyState:{title:"No projects yet",detail:"Canonry becomes useful after one project, a small query set, and one competitor list are in place.",ctaLabel:"Launch setup",ctaHref:"/setup"}}},projects:r,runs:i,setup:{healthChecks:[{id:"api",label:"API reachable",detail:"API is responding.",state:"ready",guidance:"Required for project creation and run history."},{id:"provider",label:"Provider configured",detail:"Gemini key is configured.",state:"ready",guidance:"Required for answer-visibility sweeps."}],projectDraft:{name:"",canonicalDomain:"",country:"US",language:"en"},queryImportState:{mode:"paste",queryCount:0,preview:[]},competitorDraft:{domains:[],notes:"Use the CLI to add competitors."},launchState:{enabled:c,ctaLabel:c?"Trigger run":"Create a project first",summary:c?"Ready to run.":"Create a project first to launch a run."}},settings:{providerStatuses:(n?.providers??[]).map(d=>({name:d.name,displayName:d.displayName,keyUrl:d.keyUrl,modelHint:d.modelHint,model:d.model,defaultModel:d.defaultModel,state:d.configured?"ready":"needs-config",detail:d.configured?"Provider is configured.":"API key is missing.",quota:d.quota})),google:{state:n?.google?.configured?"ready":"needs-config",detail:n?.google?.configured?"Google OAuth app credentials are configured. Project-level GSC connections can be created from the dashboard.":"Google OAuth client ID and client secret are not configured yet."},bing:{state:n?.bing?.configured?"ready":"needs-config",detail:n?.bing?.configured?"Bing Webmaster Tools API key is configured. Project-level Bing connections can be created from the dashboard.":"Bing Webmaster Tools API key is not configured yet."},selfHostNotes:["Configuration is stored in ~/.canonry/config.yaml.","The local config file is the source of truth for authentication credentials.","Google OAuth app credentials and per-domain Google tokens are stored in local config, not the database.","Database is SQLite at ~/.canonry/data.db.","API key was auto-generated during canonry init."],bootstrapNote:"Use the UI, CLI, or ~/.canonry/config.yaml to manage settings. Authentication credentials persist to local config."}}}function xR(e){const n=[];for(const i of e){const r=i.visibilityEvidence.filter(c=>c.citationState==="lost");r.length>0&&n.push({id:`attention_${i.project.id}_lost`,tone:"negative",title:`${i.project.displayName||i.project.name} lost citations`,detail:`${r.length} quer${r.length>1?"ies":"y"} lost citation.`,actionLabel:"Open project",href:`/projects/${i.project.id}`});const l=i.recentRuns.filter(c=>c.status===Ht.running||c.status===Ht.queued);l.length>0&&n.push({id:`attention_${i.project.id}_active`,tone:"neutral",title:`${i.project.displayName||i.project.name} has active runs`,detail:`${l.length} run${l.length>1?"s":""} in progress.`,actionLabel:"View runs",href:"/runs"})}return n.length===0&&n.push({id:"attention_stable",tone:"positive",title:"All projects stable",detail:"No citation losses or active runs to flag."}),n}const wS=U.createContext(null);wS.Provider;function go(){return U.useContext(wS)}function Ac(e){const i=go()?.dashboard??null,r=dn({...vp({client:se}),enabled:!i,refetchInterval:Zk}),l=dn({...xp({client:se,query:{kind:"answer-visibility"}}),enabled:!i,staleTime:lo,refetchInterval:T=>T.state.data?.some(R=>R.status==="running"||R.status==="queued")?3e3:lo}),c=dn({...H4({client:se}),enabled:!i}),d=r.data??[],h=l.data??[],g=Cw({queries:d.map(T=>{const k=h.filter(V=>V.projectId===T.id),E=k.filter(V=>(V.status==="completed"||V.status==="partial")&&V.kind==="answer-visibility"&&V.trigger!=="probe").sort((V,G)=>G.createdAt.localeCompare(V.createdAt)),R=E.length>0?E[0].id:"no-run";return{queryKey:["project-overview-slim",T.id,R],queryFn:async()=>{const V=await Tv(T.name).catch(()=>null);return{project:T,runs:k,queries:[],competitors:[],timeline:[],latestRunDetails:[],previousRunDetails:[],gscCoverage:null,bingCoverage:null,dbInsights:null,overview:V}},enabled:!i&&r.isSuccess&&l.isSuccess,staleTime:jf}})}),b=g.every(T=>T.isSuccess),S=U.useMemo(()=>{if(i)return i;if(!r.data||!l.data||d.length>0&&!b)return null;const T=g.map(k=>k.data?{...k.data,runs:h.filter(E=>E.projectId===k.data.project.id)}:null).filter(k=>k!=null);return SR(T,c.data??null)},[i,r.data,l.data,c.data,b,g,d.length,h]),x=!i&&(r.isError||l.isError),N=!i&&!S&&!x,_=U.useCallback(async()=>{await Promise.all([r.refetch(),l.refetch(),c.refetch()])},[r.refetch,l.refetch,c.refetch]);return{dashboard:S,isLoading:N,isError:x,refetch:_}}function wR(e){const n=go(),i=U.useMemo(()=>!n||!e?null:n.dashboard.projects.find(T=>T.project.name===e)??null,[n,e]),r=dn({...V4({client:se,path:{name:e??""}}),enabled:!!e&&!i,staleTime:jf,refetchOnWindowFocus:"always"}),l=dn({...xp({client:se,query:{kind:"answer-visibility"}}),enabled:!!e,staleTime:lo,refetchOnWindowFocus:"always",refetchInterval:T=>T.state.data?.some(R=>R.projectId===r.data?.id&&(R.status==="running"||R.status==="queued"))?3e3:lo}),c=r.data??null,d=U.useMemo(()=>c?(l.data??[]).filter(T=>T.projectId===c.id):[],[c,l.data]),{latestRunIds:h,previousRunIds:g,latestRunIdsKey:b}=U.useMemo(()=>{const T=d.filter(G=>(G.status==="completed"||G.status==="partial")&&G.kind==="answer-visibility"&&G.trigger!=="probe").sort((G,Z)=>Z.createdAt.localeCompare(G.createdAt)),k=T[0]?.createdAt??null,E=k?T.filter(G=>G.createdAt===k).map(G=>G.id):[],R=T.find(G=>G.createdAt!==k)?.createdAt??null,V=R?T.filter(G=>G.createdAt===R).map(G=>G.id):[];return{latestRunIds:E,previousRunIds:V,latestRunIdsKey:[...E].sort().join(",")}},[d]),S=dn({queryKey:["project-dashboard-full",c?.id??null,b||"none"],queryFn:async()=>{if(!c||!e)return null;const[T,k,E,R,V,G,Z,X,F]=await Promise.all([bk(e).catch(()=>[]),vk(e).catch(()=>[]),Sk(e).catch(()=>[]),h.length?Promise.all(h.map(O=>nc(O).catch(()=>null))).then(O=>O.filter(M=>M!=null)):Promise.resolve([]),g.length?Promise.all(g.map(O=>nc(O).catch(()=>null))).then(O=>O.filter(M=>M!=null)):Promise.resolve([]),Dk(e).catch(()=>null),Bk(e).catch(()=>null),qk(e).catch(()=>null),Tv(e).catch(()=>null)]);return{project:c,runs:d,queries:T,competitors:k,timeline:E,latestRunDetails:R,previousRunDetails:V,gscCoverage:G,bingCoverage:Z,dbInsights:X,overview:F}},enabled:!!c&&!!e&&l.isSuccess,staleTime:jf,refetchOnWindowFocus:"always",refetchInterval:Yk}),x=U.useMemo(()=>S.data?xS({...S.data,runs:d}):i||null,[S.data,d,i]),N=U.useCallback(async()=>{await Promise.all([r.refetch(),l.refetch(),S.refetch()])},[r.refetch,l.refetch,S.refetch]),_=!x&&(r.isLoading||l.isLoading||S.isLoading);return{commandCenter:x,project:c,isLoading:_,isError:r.isError||l.isError||S.isError,refetch:N}}const jR=["health"];async function NR(){const e=await $k("/health","API"),n=e.state==="ok"?{label:"Worker",state:"ok",detail:"In-process job runner"}:{label:"Worker",state:e.state,detail:`Depends on API health check · ${e.detail}`,statusCode:e.statusCode,hint:e.hint?`Worker status is inferred from API health in this deployment mode. ${e.hint}`:"Worker status is inferred from API health in this deployment mode."};return{apiStatus:e,workerStatus:n}}function Ap(e,n){return dn({queryKey:jR,queryFn:NR,enabled:e,refetchInterval:15e3,initialData:n})}function kR(e){return dn({...K0({client:se,path:{id:e??""}}),enabled:!!e,refetchInterval:n=>{const i=n.state.data?.status;return i==="running"||i==="queued"?3e3:!1}})}function _p(){const e=hc(),n=zw({strict:!1}),i=Tw({select:g=>g.location.pathname}),r=n.runId??null,l=n.evidenceId??null;return{runId:r,evidenceId:l,openRun:g=>{e({to:i,from:tn.to,search:b=>({...b,runId:g,evidenceId:void 0})})},openEvidence:g=>{e({to:i,from:tn.to,search:b=>({...b,evidenceId:g,runId:void 0})})},closeDrawer:()=>{e({to:i,from:tn.to,search:g=>({...g,runId:void 0,evidenceId:void 0})})}}}const AR={negative:"toast-card-negative",caution:"toast-card-caution",positive:"toast-card-positive",neutral:"toast-card-neutral"};function _R(e){if(e.cta)return`${e.cta.label}: ${e.title}`}function CR(){const e=U.useSyncExternalStore(Qk,Ky,Ky),n=hc(),{openRun:i}=_p(),r=U.useCallback(c=>{wf(c)},[]),l=U.useCallback(c=>{c.cta&&(c.cta.intent==="open-run-drawer"?i(c.cta.runId):n({to:"/runs"}),wf(c.id))},[n,i]);return e.length===0?null:f.jsx("div",{className:"toast-viewport","aria-label":"Notifications",children:e.map(c=>f.jsxs("section",{role:c.tone==="negative"?"alert":"status","aria-live":c.tone==="negative"?"assertive":"polite","data-state":c.state,className:`toast-card ${AR[c.tone]}`,children:[f.jsxs("div",{className:"toast-copy",children:[f.jsx("p",{className:"toast-title",children:c.title}),c.detail?f.jsx("p",{className:"toast-detail",children:c.detail}):null,c.cta?f.jsx("button",{type:"button",className:"toast-action",onClick:()=>l(c),"aria-label":_R(c),children:c.cta.label}):null]}),f.jsx("button",{type:"button",onClick:()=>r(c.id),className:"toast-dismiss","aria-label":"Dismiss",children:f.jsx(Qs,{className:"size-3.5"})})]},c.id))})}function zR(e,n={}){const{threshold:i=80}=n,r=U.useRef(null),l=U.useRef({scrollHeight:0,wasAtEnd:!0});function c(g){return g.scrollHeight-g.scrollTop-g.clientHeight}function d(){const g=r.current;return g?c(g)<=i:!0}function h(){const g=r.current;g&&(g.scrollTop=g.scrollHeight,l.current.wasAtEnd=!0,l.current.scrollHeight=g.scrollHeight)}return U.useEffect(()=>{const g=r.current;if(!g)return;const b=()=>{l.current.wasAtEnd=c(g)<=i};return g.addEventListener("scroll",b,{passive:!0}),()=>g.removeEventListener("scroll",b)},[i]),U.useLayoutEffect(()=>{const g=r.current;if(!g)return;const b=g.scrollHeight;b>l.current.scrollHeight&&l.current.wasAtEnd&&(g.scrollTop=b),l.current.scrollHeight=b},e),U.useEffect(()=>{const g=r.current;if(!g||typeof ResizeObserver>"u")return;const b=new ResizeObserver(()=>{const S=g.scrollHeight;S>l.current.scrollHeight&&l.current.wasAtEnd&&(g.scrollTop=S),l.current.scrollHeight=S});return b.observe(g),g.firstElementChild&&b.observe(g.firstElementChild),()=>b.disconnect()},[]),{ref:r,scrollToEnd:h,isAtEnd:d}}async function Cp(e){try{return await e.json()}catch{return{}}}function TR(){return typeof window<"u"&&window.__CANONRY_CONFIG__?.basePath?window.__CANONRY_CONFIG__.basePath.replace(/\/$/,"")+"/api/v1":"/api/v1"}const zp=TR();function Tp(e){e===401&&Hf()}async function Hb(e){const n=await fetch(`${zp}/projects/${encodeURIComponent(e)}/agent/transcript`,{credentials:"include"});if(!n.ok){Tp(n.status);const i=await Cp(n);throw new Hn(i.error?.message??`transcript fetch failed: ${n.status}`,n.status,i.error?.code)}return await n.json()}async function ER(e){const n=await fetch(`${zp}/projects/${encodeURIComponent(e)}/agent/transcript`,{method:"DELETE",credentials:"include"});if(!n.ok){Tp(n.status);const i=await Cp(n);throw new Hn(i.error?.message??`reset failed: ${n.status}`,n.status,i.error?.code)}}async function OR({project:e,prompt:n,provider:i,modelId:r,scope:l,signal:c,onEvent:d}){const h={prompt:n};i&&(h.provider=i),r&&(h.modelId=r),l&&(h.scope=l);const g=await fetch(`${zp}/projects/${encodeURIComponent(e)}/agent/prompt`,{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify(h),signal:c});if(!g.ok||!g.body){Tp(g.status);const _=await Cp(g);throw new Hn(_.error?.message??`prompt failed: ${g.status}`,g.status,_.error?.code)}const b=g.body.getReader(),S=new TextDecoder;let x="";const N=()=>{b.cancel().catch(()=>{})};c?.addEventListener("abort",N,{once:!0});try{for(;;){const{value:_,done:T}=await b.read();if(T)break;x+=S.decode(_,{stream:!0});let k=x.indexOf(`
|
|
59
59
|
|
|
60
60
|
`);for(;k!==-1;){const E=x.slice(0,k);x=x.slice(k+2);for(const R of E.split(`
|
|
61
61
|
`)){if(!R.startsWith("data:"))continue;const V=R.slice(5).trim();if(V)try{d(JSON.parse(V))}catch{}}k=x.indexOf(`
|
|
@@ -207,4 +207,4 @@ spec:
|
|
|
207
207
|
`);fe(Fe)}}catch(ne){zn(ne instanceof Error?ne.message:"Failed to generate queries")}finally{Ge(!1)}}},Zn=async()=>{if(!le)return;const ne=ti;if(ne.length!==0){Bi(!0),Ri(null);try{await Nk(le,ne),Uc(!0),await r(),N(4)}catch(Fe){Ri(Fe instanceof Error?Fe.message:"Failed to save competitors")}finally{Bi(!1)}}},Vi=async()=>{const ne=qi.trim();if(ne){va(!0),Tn(null);try{await Ck("gemini",{apiKey:ne}),en({title:"Gemini configured",detail:"Provider is ready — continuing setup.",tone:"positive",dedupeKey:"setup:gemini:configured",dedupeMode:"drop"}),No(""),await r()}catch(Fe){Tn(Fe instanceof Error?Fe.message:"Failed to save Gemini key")}finally{va(!1)}}},ni=async()=>{if(le){wo(!0);try{const ne=await Li.mutateAsync({projectName:le,projectLabel:k||_||le,sourceAction:"setup-launch"});jo(ne.id),$c(!0),await r()}catch{}finally{wo(!1)}}},Yn=()=>N(ne=>Math.max(0,ne-1)),ko=(()=>{switch(x){case 0:return f.jsxs(jn,{className:"surface-card step-card",children:[f.jsx("div",{className:"section-head",children:f.jsxs("div",{children:[f.jsx("p",{className:"eyebrow eyebrow-soft",children:"Step 1 of 5"}),f.jsx("h2",{children:"System ready"})]})}),f.jsx("p",{className:"supporting-copy",children:"Checking that your Canonry instance is configured and reachable."}),f.jsx("div",{className:"compact-stack",children:b.healthChecks.map(ne=>f.jsxs("div",{className:"health-check-row",children:[f.jsxs("div",{children:[f.jsx("p",{className:"run-row-title",children:ne.label}),f.jsx("p",{className:"supporting-copy",children:ne.detail}),ne.id==="provider"&&ne.state!=="ready"&&f.jsxs("div",{className:"mt-3 rounded-md border border-zinc-800/60 bg-zinc-900/40 p-3 space-y-2",children:[f.jsxs("p",{className:"text-xs text-zinc-400",children:["Paste a Gemini key to enable visibility checks (free at"," ",f.jsx("a",{href:"https://aistudio.google.com/apikey",target:"_blank",rel:"noreferrer",className:"text-emerald-400 hover:text-emerald-300 underline underline-offset-2",children:"aistudio.google.com"}),")."]}),f.jsxs("div",{className:"flex items-center gap-2",children:[f.jsx("input",{type:"password",value:qi,onChange:Fe=>No(Fe.target.value),placeholder:"AI... (paste here)",className:"flex-1 rounded-md border border-zinc-800 bg-zinc-950 px-2.5 py-1.5 text-sm text-zinc-100 placeholder:text-zinc-600 focus:border-zinc-600 focus:outline-none font-mono",disabled:sr}),f.jsx(qe,{type:"button",size:"sm",disabled:sr||!qi.trim(),onClick:wn(Vi),children:sr?"Saving...":"Save"})]}),$t&&f.jsx("p",{className:"text-xs text-rose-400",children:$t}),f.jsxs("p",{className:"text-[11px] text-zinc-600",children:["Other providers (OpenAI, Claude, Perplexity) configurable later via"," ",f.jsx(rt,{to:"/settings",className:"text-zinc-500 hover:text-zinc-300 underline underline-offset-2",children:"/settings"}),"."]})]})]}),f.jsx(Ln,{tone:ne.state==="ready"?"positive":"caution",title:ne.id==="api"?Is(g.apiStatus):ne.id==="worker"?Is(g.workerStatus):ne.detail,children:ne.state==="ready"?"Ready":"Attention"})]},ne.id))}),f.jsxs("div",{className:"setup-nav",children:[f.jsx("span",{}),f.jsx(qe,{type:"button",disabled:!Vc,onClick:()=>N(1),children:"Continue"})]})]});case 1:return f.jsxs(jn,{className:"surface-card step-card",children:[f.jsxs("div",{className:"section-head",children:[f.jsxs("div",{children:[f.jsx("p",{className:"eyebrow eyebrow-soft",children:"Step 2 of 5"}),f.jsx("h2",{children:"Create project"})]}),le?f.jsx(Ln,{tone:"positive",children:"Created"}):null]}),le?f.jsxs("div",{className:"compact-stack",children:[f.jsxs("p",{className:"text-zinc-300",children:["Project ",f.jsx("span",{className:"text-zinc-100 font-medium",children:le})," created successfully."]}),f.jsxs("div",{className:"setup-nav",children:[f.jsx(qe,{type:"button",variant:"outline",onClick:Yn,children:"Back"}),f.jsx(qe,{type:"button",onClick:()=>N(2),children:"Continue"})]})]}):f.jsxs("div",{className:"compact-stack",children:[f.jsxs("div",{className:"setup-field",children:[f.jsx("label",{className:"setup-label",htmlFor:"project-name",children:"Project name"}),f.jsx("input",{id:"project-name",className:"setup-input",type:"text",placeholder:"my-website",value:_,onChange:ne=>T(ne.target.value)}),ht&&ht!==_?f.jsxs("p",{className:"supporting-copy",children:["Slug: ",ht]}):null]}),f.jsxs("div",{className:"setup-field",children:[f.jsx("label",{className:"setup-label",htmlFor:"display-name",children:"Display name (optional)"}),f.jsx("input",{id:"display-name",className:"setup-input",type:"text",placeholder:"My Website",value:k,onChange:ne=>E(ne.target.value)})]}),f.jsxs("div",{className:"setup-field",children:[f.jsx("label",{className:"setup-label",htmlFor:"domain",children:"Canonical domain"}),f.jsx("input",{id:"domain",className:"setup-input",type:"text",placeholder:"example.com",value:R,onChange:ne=>V(ne.target.value)})]}),f.jsxs("div",{className:"setup-field-row",children:[f.jsxs("div",{className:"setup-field",children:[f.jsx("label",{className:"setup-label",htmlFor:"country",children:"Country"}),f.jsx("input",{id:"country",className:"setup-input",type:"text",placeholder:"US",maxLength:2,value:G,onChange:ne=>Z(ne.target.value.toUpperCase())})]}),f.jsxs("div",{className:"setup-field",children:[f.jsx("label",{className:"setup-label",htmlFor:"language",children:"Language"}),f.jsx("input",{id:"language",className:"setup-input",type:"text",placeholder:"en",maxLength:5,value:X,onChange:ne=>F(ne.target.value.toLowerCase())})]})]}),f.jsxs("label",{className:"flex items-start gap-3 rounded-md border border-zinc-800/60 bg-zinc-900/30 p-3 cursor-pointer hover:border-zinc-700",children:[f.jsx("input",{type:"checkbox",className:"mt-0.5 h-4 w-4 rounded border-zinc-700 bg-zinc-950",checked:O,onChange:ne=>M(ne.target.checked)}),f.jsxs("span",{className:"flex-1",children:[f.jsx("span",{className:"block text-sm text-zinc-100",children:"Auto-extract backlinks"}),f.jsxs("span",{className:"block text-xs text-zinc-500 mt-0.5",children:["When a new Common Crawl release syncs, automatically extract backlinks for this project."," ",f.jsx(rt,{to:"/backlinks",className:"text-emerald-400 hover:text-emerald-300 underline underline-offset-2",children:"Manage backlinks"})]})]})]}),tt?f.jsx("p",{className:"text-rose-400 text-sm",children:tt}):null,f.jsxs("div",{className:"setup-nav",children:[f.jsx(qe,{type:"button",variant:"outline",onClick:Yn,children:"Back"}),f.jsx(qe,{type:"button",disabled:!ht||!R||ee,onClick:wn(Ui),children:ee?"Creating...":"Create project"})]})]})]});case 2:return f.jsxs(jn,{className:"surface-card step-card",children:[f.jsxs("div",{className:"section-head",children:[f.jsxs("div",{children:[f.jsx("p",{className:"eyebrow eyebrow-soft",children:"Step 3 of 5"}),f.jsx("h2",{children:"Add queries"})]}),Se?f.jsxs(Ln,{tone:"positive",children:[$n.length," saved"]}):f.jsxs(Ln,{tone:"neutral",children:[$n.length," quer",$n.length!==1?"ies":"y"]})]}),f.jsx("p",{className:"supporting-copy",children:"Enter the search queries you want to track. One per line."}),Se?f.jsxs("div",{className:"compact-stack",children:[f.jsx("ul",{className:"detail-list",children:$n.map(ne=>f.jsx("li",{children:ne},ne))}),f.jsxs("div",{className:"setup-nav",children:[f.jsx(qe,{type:"button",variant:"outline",onClick:Yn,children:"Back"}),f.jsx(qe,{type:"button",onClick:()=>N(3),children:"Continue"})]})]}):f.jsxs("div",{className:"compact-stack",children:[de.length>0?f.jsxs("div",{className:"compact-stack",children:[f.jsxs("div",{className:"flex items-center gap-2 text-zinc-500 text-xs uppercase tracking-wide",children:[f.jsx("span",{className:"flex-1 border-t border-zinc-800"}),"auto-generate",f.jsx("span",{className:"flex-1 border-t border-zinc-800"})]}),f.jsxs("div",{className:"flex items-end gap-2",children:[f.jsxs("div",{className:"setup-field flex-1",children:[f.jsx("label",{className:"setup-label",htmlFor:"gen-provider",children:"Provider"}),f.jsx("select",{id:"gen-provider",className:"setup-input",value:ae,onChange:ne=>je(ne.target.value),children:de.map(ne=>f.jsxs("option",{value:ne.name,children:[ne.displayName??ne.name,ne.model?` (${ne.model})`:""]},ne.name))})]}),f.jsxs("div",{className:"setup-field",children:[f.jsx("label",{className:"setup-label",htmlFor:"gen-count",children:"Count"}),f.jsx("select",{id:"gen-count",className:"setup-input",value:nt,onChange:ne=>xe(Number(ne.target.value)),children:[3,5,10,15,20].map(ne=>f.jsx("option",{value:ne,children:ne},ne))})]}),f.jsx(qe,{type:"button",variant:"outline",disabled:Ue||!ae,onClick:wn(Ii),children:Ue?"Analyzing site...":"Generate"})]}),Et?f.jsx("p",{className:"text-rose-400 text-sm",children:Et}):null]}):null,f.jsxs("div",{className:"flex items-center gap-2 text-zinc-500 text-xs uppercase tracking-wide",children:[f.jsx("span",{className:"flex-1 border-t border-zinc-800"}),"or type manually",f.jsx("span",{className:"flex-1 border-t border-zinc-800"})]}),f.jsxs("div",{className:"setup-field",children:[f.jsx("label",{className:"setup-label",htmlFor:"queries",children:"Queries (one per line)"}),f.jsx("textarea",{id:"queries",className:"setup-textarea",rows:6,placeholder:`emergency dentist brooklyn
|
|
208
208
|
best invisalign downtown brooklyn
|
|
209
209
|
pediatric dentist brooklyn heights`,value:J,onChange:ne=>fe(ne.target.value)})]}),Ze?f.jsx("p",{className:"text-rose-400 text-sm",children:Ze}):null,f.jsxs("div",{className:"setup-nav",children:[f.jsx(qe,{type:"button",variant:"outline",onClick:Yn,children:"Back"}),f.jsx(qe,{type:"button",disabled:$n.length===0||ue,onClick:wn($i),children:ue?"Saving...":`Save ${$n.length} quer${$n.length!==1?"ies":"y"}`})]})]})]});case 3:return f.jsxs(jn,{className:"surface-card step-card",children:[f.jsxs("div",{className:"section-head",children:[f.jsxs("div",{children:[f.jsx("p",{className:"eyebrow eyebrow-soft",children:"Step 4 of 5"}),f.jsx("h2",{children:"Add competitors"})]}),Di?f.jsx(Ln,{tone:"positive",children:"Saved"}):null]}),f.jsx("p",{className:"supporting-copy",children:"Domains that compete for the same queries. One per line."}),Di?f.jsxs("div",{className:"compact-stack",children:[f.jsx("ul",{className:"detail-list",children:ti.map(ne=>f.jsx("li",{children:ne},ne))}),f.jsxs("div",{className:"setup-nav",children:[f.jsx(qe,{type:"button",variant:"outline",onClick:Yn,children:"Back"}),f.jsx(qe,{type:"button",onClick:()=>N(4),children:"Continue"})]})]}):f.jsxs("div",{className:"compact-stack",children:[f.jsxs("div",{className:"setup-field",children:[f.jsx("label",{className:"setup-label",htmlFor:"competitors",children:"Competitor domains (one per line)"}),f.jsx("textarea",{id:"competitors",className:"setup-textarea",rows:4,placeholder:`competitor1.com
|
|
210
|
-
competitor2.com`,value:Ot,onChange:ne=>nr(ne.target.value)})]}),ar?f.jsx("p",{className:"text-rose-400 text-sm",children:ar}):null,f.jsxs("div",{className:"setup-nav",children:[f.jsx(qe,{type:"button",variant:"outline",onClick:Yn,children:"Back"}),f.jsxs("div",{className:"flex gap-2",children:[f.jsx(qe,{type:"button",variant:"outline",onClick:()=>N(4),children:"Skip"}),f.jsx(qe,{type:"button",disabled:ti.length===0||Mi,onClick:wn(Zn),children:Mi?"Saving...":`Save ${ti.length} competitor${ti.length!==1?"s":""}`})]})]})]})]});case 4:{const ne=Ic.data,Fe=ne?.status==="completed"||ne?.status==="partial"||ne?.status==="failed"||ne?.status==="cancelled",ai=ne?.snapshots??[],Ao=ai.filter(En=>En.citationState==="cited").length,_o=ai.filter(En=>En.answerMentioned===!0).length,rr=new Set(ai.map(En=>En.query).filter(En=>!!En)).size,or=xo?Fe&&(ne?.status==="completed"||ne?.status==="partial")?f.jsx(Ln,{tone:"positive",children:"Complete"}):Fe?f.jsx(Ln,{tone:"negative",children:"Failed"}):f.jsx(Ln,{tone:"caution",children:"Running"}):null;return f.jsxs(jn,{className:"surface-card step-card",children:[f.jsxs("div",{className:"section-head",children:[f.jsxs("div",{children:[f.jsx("p",{className:"eyebrow eyebrow-soft",children:"Step 5 of 5"}),f.jsx("h2",{children:"Launch first run"})]}),or]}),xo?Fe?ne?.status==="failed"?f.jsxs("div",{className:"compact-stack",children:[f.jsx("p",{className:"text-rose-400",children:"Sweep failed. Inspect the run on the project page for the provider error and retry from there."}),f.jsxs("div",{className:"setup-nav",children:[f.jsx("span",{}),f.jsx(qe,{type:"button",onClick:()=>{S({to:_e?`/projects/${_e}`:"/"})},children:"Open project"})]})]}):f.jsxs("div",{className:"compact-stack",children:[f.jsxs("p",{className:"text-zinc-300",children:["Sweep complete. Your first answer-visibility snapshot for"," ",f.jsx("span",{className:"text-zinc-100 font-medium",children:le}),":"]}),f.jsxs("div",{className:"grid grid-cols-3 gap-2 mt-1",children:[f.jsxs("div",{className:"rounded-md border border-zinc-800/60 bg-zinc-900/30 p-3",children:[f.jsx("p",{className:"text-[10px] uppercase tracking-wide text-zinc-500",children:"Mentioned"}),f.jsxs("p",{className:"text-2xl font-bold tabular-nums text-zinc-50 mt-1",children:[_o,f.jsxs("span",{className:"text-zinc-600 text-lg",children:[" / ",rr]})]}),f.jsx("p",{className:"text-[11px] text-zinc-500 mt-0.5",children:"queries with brand in answer"})]}),f.jsxs("div",{className:"rounded-md border border-zinc-800/60 bg-zinc-900/30 p-3",children:[f.jsx("p",{className:"text-[10px] uppercase tracking-wide text-zinc-500",children:"Cited"}),f.jsxs("p",{className:"text-2xl font-bold tabular-nums text-zinc-50 mt-1",children:[Ao,f.jsxs("span",{className:"text-zinc-600 text-lg",children:[" / ",rr]})]}),f.jsx("p",{className:"text-[11px] text-zinc-500 mt-0.5",children:"queries with domain in sources"})]}),f.jsxs("div",{className:"rounded-md border border-zinc-800/60 bg-zinc-900/30 p-3",children:[f.jsx("p",{className:"text-[10px] uppercase tracking-wide text-zinc-500",children:"Snapshots"}),f.jsx("p",{className:"text-2xl font-bold tabular-nums text-zinc-50 mt-1",children:ai.length}),f.jsx("p",{className:"text-[11px] text-zinc-500 mt-0.5",children:"total (query × provider)"})]})]}),f.jsx("p",{className:"text-[11px] text-zinc-500 mt-1",children:"Full evidence, per-provider breakdown, and suggested next queries on the project dashboard."}),f.jsxs("div",{className:"setup-nav",children:[f.jsx("span",{}),f.jsx(qe,{type:"button",onClick:()=>{S({to:_e?`/projects/${_e}`:"/"})},children:"Open project dashboard →"})]})]}):f.jsxs("div",{className:"compact-stack",children:[f.jsx("p",{className:"text-zinc-300",children:"Sweep running — typically 30-60s. Polling every 2s…"}),f.jsx("div",{className:"rounded-md border border-zinc-800/60 bg-zinc-900/30 p-3 text-xs text-zinc-500",children:f.jsxs("p",{children:["Status: ",f.jsx("span",{className:"text-zinc-300",children:ne?.status??"queued"})]})}),f.jsxs("div",{className:"setup-nav",children:[f.jsx("span",{}),f.jsx(qe,{type:"button",variant:"outline",onClick:()=>{S({to:_e?`/projects/${_e}`:"/"})},children:"Watch on project page"})]})]}):f.jsxs("div",{className:"compact-stack",children:[f.jsxs("p",{className:"supporting-copy",children:["Everything is configured. Launch an answer-visibility sweep to start tracking citations for ",f.jsx("span",{className:"text-zinc-100 font-medium",children:le}),"."]}),f.jsxs("div",{className:"setup-nav",children:[f.jsx(qe,{type:"button",variant:"outline",onClick:Yn,children:"Back"}),f.jsx(qe,{type:"button",disabled:Ut,onClick:wn(ni),children:Ut?"Launching...":"Launch visibility sweep"})]})]})]})}default:return null}})();return f.jsxs("div",{className:"page-container",children:[f.jsx("div",{className:"page-header",children:f.jsxs("div",{className:"page-header-left",children:[f.jsx("h1",{className:"page-title",children:"Setup"}),f.jsx("p",{className:"page-subtitle",children:"Create a project, add queries, add competitors, and launch the first run."})]})}),f.jsx(w5,{current:x,labels:x5}),f.jsx("section",{className:"setup-wizard",children:ko})]})}function N5(){return f.jsx("div",{className:"page-container",children:f.jsx("section",{className:"page-section",children:f.jsxs(jn,{className:"surface-card empty-card",children:[f.jsx("h1",{children:"Route not found"}),f.jsx("p",{children:"The current path does not map to a dashboard view."}),f.jsx(qe,{asChild:!0,children:f.jsx(rt,{to:"/",children:"Return to overview"})})]})})})}const ba=Gs(()=>Hs(()=>import("./ProjectPage-DXYcaMVO.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8]),import.meta.url),"ProjectPage"),k5=Gs(()=>Hs(()=>import("./RunsPage-BJx3_Nel.js"),__vite__mapDeps([9,1,2,7,5,8]),import.meta.url),"RunsPage"),A5=Gs(()=>Hs(()=>import("./SettingsPage-CXTIHdsv.js"),__vite__mapDeps([10,1,7,5,8]),import.meta.url),"SettingsPage"),_5=Gs(()=>Hs(()=>import("./BacklinksPage-DHC1po5Q.js"),__vite__mapDeps([11,1,6,7,5,8]),import.meta.url),"BacklinksPage"),C5=Gs(()=>Hs(()=>import("./TrafficPage-iibCIBqX.js"),__vite__mapDeps([12,1,4,13,7,5,8]),import.meta.url),"TrafficPage"),z5=Gs(()=>Hs(()=>import("./TrafficSourceDetailPage-WU30E_59.js"),__vite__mapDeps([14,1,4,3,5,13,7,8]),import.meta.url),"TrafficSourceDetailPage");function T5(){return f.jsx(tM,{children:f.jsx(eM,{})})}const tn=Ew()({component:T5,validateSearch:e=>({runId:typeof e.runId=="string"?e.runId:void 0,evidenceId:typeof e.evidenceId=="string"?e.evidenceId:void 0})}),E5=Ct({getParentRoute:()=>tn,path:"/",component:iM,beforeLoad:({context:e})=>{const n=e.queryClient.getQueryData(Js({client:se}));if(n&&n.length===0)throw dv({to:"/setup"})}}),O5=Ct({getParentRoute:()=>tn,path:"/projects",component:g5}),Kn=Ct({getParentRoute:()=>tn,path:"/projects/$projectId",component:()=>f.jsx(bf,{})}),D5=Ct({getParentRoute:()=>Kn,path:"/",component:()=>f.jsx(ba,{tab:"overview"})}),R5=Ct({getParentRoute:()=>Kn,path:"/search-console",component:()=>f.jsx(ba,{tab:"search-console"})}),M5=Ct({getParentRoute:()=>Kn,path:"/local",component:()=>f.jsx(ba,{tab:"local"})}),B5=Ct({getParentRoute:()=>Kn,path:"/discovery",component:()=>f.jsx(ba,{tab:"discovery"})}),L5=Ct({getParentRoute:()=>Kn,path:"/report",component:()=>f.jsx(ba,{tab:"report"})}),q5=Ct({getParentRoute:()=>Kn,path:"/activity",component:()=>f.jsx(ba,{tab:"activity"})}),U5=Ct({getParentRoute:()=>Kn,path:"/backlinks",component:()=>f.jsx(ba,{tab:"backlinks"})}),$5=Ct({getParentRoute:()=>Kn,path:"/technical-aeo",component:()=>f.jsx(ba,{tab:"technical-aeo"})}),I5=Ct({getParentRoute:()=>Kn,path:"/settings",component:()=>f.jsx(ba,{tab:"settings"})}),V5=Ct({getParentRoute:()=>tn,path:"/runs",component:k5}),P5=Ct({getParentRoute:()=>tn,path:"/settings",component:A5,beforeLoad:({context:e})=>{}}),G5=Ct({getParentRoute:()=>tn,path:"/setup",component:j5,beforeLoad:({context:e})=>{const n=e.queryClient.getQueryData(Js({client:se}));if(n&&n.length>0)throw dv({to:"/"})}}),H5=Ct({getParentRoute:()=>tn,path:"/backlinks",component:_5}),Q5=Ct({getParentRoute:()=>tn,path:"/traffic",component:C5}),K5=Ct({getParentRoute:()=>tn,path:"/traffic/$projectName/$sourceId",component:z5}),Z5=Ct({getParentRoute:()=>tn,path:"*",component:N5}),Y5=tn.addChildren([E5,O5,Kn.addChildren([D5,R5,M5,B5,L5,q5,U5,$5,I5]),V5,P5,G5,H5,Q5,K5,Z5]);function X5(){return typeof window<"u"&&window.__CANONRY_CONFIG__?.basePath?window.__CANONRY_CONFIG__.basePath:"/"}const cv=X5(),J5=cv==="/"?"":cv.replace(/\/$/,"");function F5(e,n){return Ow({routeTree:Y5,basepath:J5||"/",context:{queryClient:e},...n?.initialEntries})}const W5=6e4;function eB(){const[e,n]=U.useState(nf()?"ready":"checking"),[i,r]=U.useState(""),[l,c]=U.useState(""),[d,h]=U.useState(null),[g,b]=U.useState(!1),[S,x]=U.useState(!1),N=U.useRef(null),_=U.useRef(null),T=()=>{if(!N.current){const R=Xk();_.current=R,N.current=F5(R)}return{queryClient:_.current,router:N.current}};U.useEffect(()=>{if(nf())return;let R=!1;return Hy().then(V=>{R||(V.authenticated?n("ready"):n(V.setupRequired?"setup":"login"))}).catch(V=>{R||(h(V instanceof Error?V.message:"Failed to reach the Canonry API"),n("login"))}),()=>{R=!0}},[]),U.useEffect(()=>{if(e!=="ready"||nf())return;const R=setInterval(()=>{Hy().then(V=>{V.authenticated||(x(!0),n(V.setupRequired?"setup":"login"))}).catch(()=>{})},W5);return Gy(()=>{x(!0),n("login")}),()=>{clearInterval(R),Gy(null)}},[e]);const k=async R=>{if(R.preventDefault(),!i.trim()||i.trim().length<8){h("Password must be at least 8 characters");return}if(i!==l){h("Passwords do not match");return}b(!0),h(null);try{if(!(await Ak(i.trim())).authenticated){h("Setup failed");return}r(""),c(""),x(!1),n("ready")}catch(V){h(V instanceof Hn||V instanceof Error?V.message:"Setup failed")}finally{b(!1)}},E=async R=>{if(R.preventDefault(),!!i.trim()){b(!0),h(null);try{if(!(await _k(i.trim())).authenticated){h("Incorrect password");return}r(""),x(!1),n("ready")}catch(V){h(V instanceof Hn||V instanceof Error?V.message:"Authentication failed")}finally{b(!1)}}};if(e==="ready"){const{queryClient:R,router:V}=T();return f.jsx(Dw,{client:R,children:f.jsx(Rw,{router:V})})}return f.jsx("div",{className:"min-h-screen bg-zinc-950 px-4 py-8",children:f.jsx("div",{className:"mx-auto flex min-h-[calc(100vh-4rem)] max-w-md items-center justify-center",children:f.jsx(jn,{className:"surface-card w-full",children:e==="checking"?f.jsx(Fl,{className:"py-8",children:f.jsx("p",{className:"supporting-copy text-center",children:"Connecting to Canonry…"})}):e==="setup"?f.jsxs(f.Fragment,{children:[f.jsxs(Df,{children:[f.jsx("p",{className:"eyebrow eyebrow-soft",children:"First-time setup"}),f.jsx(Rf,{children:"Create a dashboard password"}),f.jsx(Mf,{children:"Choose a password to protect the Canonry dashboard. You will use this to sign in on future visits."})]}),f.jsx(Fl,{children:f.jsxs("form",{className:"space-y-4",onSubmit:wn(k),children:[f.jsxs("label",{className:"block space-y-1.5",children:[f.jsx("span",{className:"text-xs font-medium text-zinc-400",children:"Password"}),f.jsx("input",{autoFocus:!0,className:"w-full rounded-md border border-zinc-800 bg-zinc-950 px-3 py-2 text-sm text-zinc-100 outline-none transition focus:border-zinc-600",type:"password",value:i,onChange:R=>r(R.target.value),placeholder:"At least 8 characters"})]}),f.jsxs("label",{className:"block space-y-1.5",children:[f.jsx("span",{className:"text-xs font-medium text-zinc-400",children:"Confirm password"}),f.jsx("input",{className:"w-full rounded-md border border-zinc-800 bg-zinc-950 px-3 py-2 text-sm text-zinc-100 outline-none transition focus:border-zinc-600",type:"password",value:l,onChange:R=>c(R.target.value),placeholder:"Re-enter password"})]}),d?f.jsx("p",{className:"text-sm text-rose-400",children:d}):null,f.jsx(qe,{type:"submit",disabled:g||!i.trim()||!l.trim(),children:g?"Setting up…":"Create password & open dashboard"})]})})]}):f.jsxs(f.Fragment,{children:[f.jsxs(Df,{children:[f.jsx("p",{className:"eyebrow eyebrow-soft",children:"Dashboard access"}),f.jsx(Rf,{children:"Sign in to Canonry"}),f.jsx(Mf,{children:"Enter your dashboard password to continue."})]}),f.jsxs(Fl,{children:[S?f.jsx("p",{className:"mb-4 rounded-md border border-amber-500/30 bg-amber-500/10 px-3 py-2 text-sm text-amber-300",children:"Your session expired — please sign in again."}):null,f.jsxs("form",{className:"space-y-4",onSubmit:wn(E),children:[f.jsxs("label",{className:"block space-y-1.5",children:[f.jsx("span",{className:"text-xs font-medium text-zinc-400",children:"Password"}),f.jsx("input",{autoFocus:!0,className:"w-full rounded-md border border-zinc-800 bg-zinc-950 px-3 py-2 text-sm text-zinc-100 outline-none transition focus:border-zinc-600",type:"password",value:i,onChange:R=>r(R.target.value),placeholder:"Dashboard password"})]}),d?f.jsx("p",{className:"text-sm text-rose-400",children:d}):null,f.jsx(qe,{type:"submit",disabled:g||!i.trim(),children:g?"Signing in…":"Open dashboard"})]})]})]})})})})}const d1=document.getElementById("root");if(!d1)throw new Error("Expected #root element for web app bootstrap.");Iw.createRoot(d1).render(f.jsx(U.StrictMode,{children:f.jsx(eB,{})}));export{YL as $,TL as A,qe as B,lc as C,gB as D,ML as E,LL as F,hL as G,qL as H,to as I,AB as J,kB as K,CB as L,en as M,LB as N,IL as O,M3 as P,VL as Q,TB as R,D4 as S,Ln as T,UL as U,$L as V,BL as W,_B as X,EB as Y,PL as Z,GL as _,b6 as a,vB as a$,KL as a0,ZL as a1,qk as a2,J0 as a3,Ne as a4,QL as a5,BD as a6,_i as a7,HL as a8,lE as a9,RB as aA,Sp as aB,h6 as aC,y6 as aD,g6 as aE,OB as aF,fA as aG,Mv as aH,jD as aI,kD as aJ,ND as aK,r6 as aL,HB as aM,A6 as aN,xL as aO,vL as aP,wL as aQ,jL as aR,bL as aS,SL as aT,pB as aU,fB as aV,dB as aW,bB as aX,DL as aY,Cb as aZ,OL as a_,cE as aa,yL as ab,gL as ac,dL as ad,nL as ae,lL as af,cL as ag,Hn as ah,uL as ai,sB as aj,_A as ak,CL as al,kA as am,MA as an,UD as ao,nc as ap,pL as aq,fL as ar,jf as as,o6 as at,zB as au,f6 as av,p6 as aw,m6 as ax,DB as ay,Js as az,Yf as b,Xy as b$,SB as b0,EL as b1,xB as b2,wB as b3,NB as b4,jB as b5,go as b6,vp as b7,wR as b8,S5 as b9,$B as bA,PB as bB,Ac as bC,x6 as bD,Np as bE,Ck as bF,yB as bG,MB as bH,BB as bI,Ap as bJ,GB as bK,Is as bL,zb as bM,eL as bN,aL as bO,sL as bP,rL as bQ,tL as bR,iL as bS,oL as bT,B3 as bU,hS as bV,I3 as bW,gS as bX,yS as bY,xA as bZ,WB as b_,Ht as ba,Sk as bb,mB as bc,lB as bd,cB as be,hB as bf,S6 as bg,vk as bh,Nk as bi,oB as bj,rB as bk,wk as bl,uB as bm,k6 as bn,H4 as bo,XL as bp,FL as bq,Ok as br,WL as bs,VB as bt,IB as bu,e6 as bv,JL as bw,_L as bx,qB as by,UB as bz,et as c,u6 as c0,NL as c1,kL as c2,bp as c3,RL as c4,Qs as c5,l6 as c6,d6 as c7,FB as c8,XB as c9,JB as ca,YB as cb,c6 as cc,qT as d,v6 as e,zL as f,jn as g,$b as h,wn as i,mL as j,t6 as k,se as l,n6 as m,a6 as n,s6 as o,i6 as p,QB as q,ZB as r,KB as s,M4 as t,_p as u,w6 as v,j6 as w,N6 as x,Of as y,AL as z};
|
|
210
|
+
competitor2.com`,value:Ot,onChange:ne=>nr(ne.target.value)})]}),ar?f.jsx("p",{className:"text-rose-400 text-sm",children:ar}):null,f.jsxs("div",{className:"setup-nav",children:[f.jsx(qe,{type:"button",variant:"outline",onClick:Yn,children:"Back"}),f.jsxs("div",{className:"flex gap-2",children:[f.jsx(qe,{type:"button",variant:"outline",onClick:()=>N(4),children:"Skip"}),f.jsx(qe,{type:"button",disabled:ti.length===0||Mi,onClick:wn(Zn),children:Mi?"Saving...":`Save ${ti.length} competitor${ti.length!==1?"s":""}`})]})]})]})]});case 4:{const ne=Ic.data,Fe=ne?.status==="completed"||ne?.status==="partial"||ne?.status==="failed"||ne?.status==="cancelled",ai=ne?.snapshots??[],Ao=ai.filter(En=>En.citationState==="cited").length,_o=ai.filter(En=>En.answerMentioned===!0).length,rr=new Set(ai.map(En=>En.query).filter(En=>!!En)).size,or=xo?Fe&&(ne?.status==="completed"||ne?.status==="partial")?f.jsx(Ln,{tone:"positive",children:"Complete"}):Fe?f.jsx(Ln,{tone:"negative",children:"Failed"}):f.jsx(Ln,{tone:"caution",children:"Running"}):null;return f.jsxs(jn,{className:"surface-card step-card",children:[f.jsxs("div",{className:"section-head",children:[f.jsxs("div",{children:[f.jsx("p",{className:"eyebrow eyebrow-soft",children:"Step 5 of 5"}),f.jsx("h2",{children:"Launch first run"})]}),or]}),xo?Fe?ne?.status==="failed"?f.jsxs("div",{className:"compact-stack",children:[f.jsx("p",{className:"text-rose-400",children:"Sweep failed. Inspect the run on the project page for the provider error and retry from there."}),f.jsxs("div",{className:"setup-nav",children:[f.jsx("span",{}),f.jsx(qe,{type:"button",onClick:()=>{S({to:_e?`/projects/${_e}`:"/"})},children:"Open project"})]})]}):f.jsxs("div",{className:"compact-stack",children:[f.jsxs("p",{className:"text-zinc-300",children:["Sweep complete. Your first answer-visibility snapshot for"," ",f.jsx("span",{className:"text-zinc-100 font-medium",children:le}),":"]}),f.jsxs("div",{className:"grid grid-cols-3 gap-2 mt-1",children:[f.jsxs("div",{className:"rounded-md border border-zinc-800/60 bg-zinc-900/30 p-3",children:[f.jsx("p",{className:"text-[10px] uppercase tracking-wide text-zinc-500",children:"Mentioned"}),f.jsxs("p",{className:"text-2xl font-bold tabular-nums text-zinc-50 mt-1",children:[_o,f.jsxs("span",{className:"text-zinc-600 text-lg",children:[" / ",rr]})]}),f.jsx("p",{className:"text-[11px] text-zinc-500 mt-0.5",children:"queries with brand in answer"})]}),f.jsxs("div",{className:"rounded-md border border-zinc-800/60 bg-zinc-900/30 p-3",children:[f.jsx("p",{className:"text-[10px] uppercase tracking-wide text-zinc-500",children:"Cited"}),f.jsxs("p",{className:"text-2xl font-bold tabular-nums text-zinc-50 mt-1",children:[Ao,f.jsxs("span",{className:"text-zinc-600 text-lg",children:[" / ",rr]})]}),f.jsx("p",{className:"text-[11px] text-zinc-500 mt-0.5",children:"queries with domain in sources"})]}),f.jsxs("div",{className:"rounded-md border border-zinc-800/60 bg-zinc-900/30 p-3",children:[f.jsx("p",{className:"text-[10px] uppercase tracking-wide text-zinc-500",children:"Snapshots"}),f.jsx("p",{className:"text-2xl font-bold tabular-nums text-zinc-50 mt-1",children:ai.length}),f.jsx("p",{className:"text-[11px] text-zinc-500 mt-0.5",children:"total (query × provider)"})]})]}),f.jsx("p",{className:"text-[11px] text-zinc-500 mt-1",children:"Full evidence, per-provider breakdown, and suggested next queries on the project dashboard."}),f.jsxs("div",{className:"setup-nav",children:[f.jsx("span",{}),f.jsx(qe,{type:"button",onClick:()=>{S({to:_e?`/projects/${_e}`:"/"})},children:"Open project dashboard →"})]})]}):f.jsxs("div",{className:"compact-stack",children:[f.jsx("p",{className:"text-zinc-300",children:"Sweep running — typically 30-60s. Polling every 2s…"}),f.jsx("div",{className:"rounded-md border border-zinc-800/60 bg-zinc-900/30 p-3 text-xs text-zinc-500",children:f.jsxs("p",{children:["Status: ",f.jsx("span",{className:"text-zinc-300",children:ne?.status??"queued"})]})}),f.jsxs("div",{className:"setup-nav",children:[f.jsx("span",{}),f.jsx(qe,{type:"button",variant:"outline",onClick:()=>{S({to:_e?`/projects/${_e}`:"/"})},children:"Watch on project page"})]})]}):f.jsxs("div",{className:"compact-stack",children:[f.jsxs("p",{className:"supporting-copy",children:["Everything is configured. Launch an answer-visibility sweep to start tracking citations for ",f.jsx("span",{className:"text-zinc-100 font-medium",children:le}),"."]}),f.jsxs("div",{className:"setup-nav",children:[f.jsx(qe,{type:"button",variant:"outline",onClick:Yn,children:"Back"}),f.jsx(qe,{type:"button",disabled:Ut,onClick:wn(ni),children:Ut?"Launching...":"Launch visibility sweep"})]})]})]})}default:return null}})();return f.jsxs("div",{className:"page-container",children:[f.jsx("div",{className:"page-header",children:f.jsxs("div",{className:"page-header-left",children:[f.jsx("h1",{className:"page-title",children:"Setup"}),f.jsx("p",{className:"page-subtitle",children:"Create a project, add queries, add competitors, and launch the first run."})]})}),f.jsx(w5,{current:x,labels:x5}),f.jsx("section",{className:"setup-wizard",children:ko})]})}function N5(){return f.jsx("div",{className:"page-container",children:f.jsx("section",{className:"page-section",children:f.jsxs(jn,{className:"surface-card empty-card",children:[f.jsx("h1",{children:"Route not found"}),f.jsx("p",{children:"The current path does not map to a dashboard view."}),f.jsx(qe,{asChild:!0,children:f.jsx(rt,{to:"/",children:"Return to overview"})})]})})})}const ba=Gs(()=>Hs(()=>import("./ProjectPage-BPLf4U3A.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8]),import.meta.url),"ProjectPage"),k5=Gs(()=>Hs(()=>import("./RunsPage-D6eM_5tB.js"),__vite__mapDeps([9,1,2,7,5,8]),import.meta.url),"RunsPage"),A5=Gs(()=>Hs(()=>import("./SettingsPage-DaMc8nxK.js"),__vite__mapDeps([10,1,7,5,8]),import.meta.url),"SettingsPage"),_5=Gs(()=>Hs(()=>import("./BacklinksPage-D3JpcWtH.js"),__vite__mapDeps([11,1,6,7,5,8]),import.meta.url),"BacklinksPage"),C5=Gs(()=>Hs(()=>import("./TrafficPage-Dw16dcSc.js"),__vite__mapDeps([12,1,4,13,7,5,8]),import.meta.url),"TrafficPage"),z5=Gs(()=>Hs(()=>import("./TrafficSourceDetailPage-Dy9D80dz.js"),__vite__mapDeps([14,1,4,3,5,13,7,8]),import.meta.url),"TrafficSourceDetailPage");function T5(){return f.jsx(tM,{children:f.jsx(eM,{})})}const tn=Ew()({component:T5,validateSearch:e=>({runId:typeof e.runId=="string"?e.runId:void 0,evidenceId:typeof e.evidenceId=="string"?e.evidenceId:void 0})}),E5=Ct({getParentRoute:()=>tn,path:"/",component:iM,beforeLoad:({context:e})=>{const n=e.queryClient.getQueryData(Js({client:se}));if(n&&n.length===0)throw dv({to:"/setup"})}}),O5=Ct({getParentRoute:()=>tn,path:"/projects",component:g5}),Kn=Ct({getParentRoute:()=>tn,path:"/projects/$projectId",component:()=>f.jsx(bf,{})}),D5=Ct({getParentRoute:()=>Kn,path:"/",component:()=>f.jsx(ba,{tab:"overview"})}),R5=Ct({getParentRoute:()=>Kn,path:"/search-console",component:()=>f.jsx(ba,{tab:"search-console"})}),M5=Ct({getParentRoute:()=>Kn,path:"/local",component:()=>f.jsx(ba,{tab:"local"})}),B5=Ct({getParentRoute:()=>Kn,path:"/discovery",component:()=>f.jsx(ba,{tab:"discovery"})}),L5=Ct({getParentRoute:()=>Kn,path:"/report",component:()=>f.jsx(ba,{tab:"report"})}),q5=Ct({getParentRoute:()=>Kn,path:"/activity",component:()=>f.jsx(ba,{tab:"activity"})}),U5=Ct({getParentRoute:()=>Kn,path:"/backlinks",component:()=>f.jsx(ba,{tab:"backlinks"})}),$5=Ct({getParentRoute:()=>Kn,path:"/technical-aeo",component:()=>f.jsx(ba,{tab:"technical-aeo"})}),I5=Ct({getParentRoute:()=>Kn,path:"/settings",component:()=>f.jsx(ba,{tab:"settings"})}),V5=Ct({getParentRoute:()=>tn,path:"/runs",component:k5}),P5=Ct({getParentRoute:()=>tn,path:"/settings",component:A5,beforeLoad:({context:e})=>{}}),G5=Ct({getParentRoute:()=>tn,path:"/setup",component:j5,beforeLoad:({context:e})=>{const n=e.queryClient.getQueryData(Js({client:se}));if(n&&n.length>0)throw dv({to:"/"})}}),H5=Ct({getParentRoute:()=>tn,path:"/backlinks",component:_5}),Q5=Ct({getParentRoute:()=>tn,path:"/traffic",component:C5}),K5=Ct({getParentRoute:()=>tn,path:"/traffic/$projectName/$sourceId",component:z5}),Z5=Ct({getParentRoute:()=>tn,path:"*",component:N5}),Y5=tn.addChildren([E5,O5,Kn.addChildren([D5,R5,M5,B5,L5,q5,U5,$5,I5]),V5,P5,G5,H5,Q5,K5,Z5]);function X5(){return typeof window<"u"&&window.__CANONRY_CONFIG__?.basePath?window.__CANONRY_CONFIG__.basePath:"/"}const cv=X5(),J5=cv==="/"?"":cv.replace(/\/$/,"");function F5(e,n){return Ow({routeTree:Y5,basepath:J5||"/",context:{queryClient:e},...n?.initialEntries})}const W5=6e4;function eB(){const[e,n]=U.useState(nf()?"ready":"checking"),[i,r]=U.useState(""),[l,c]=U.useState(""),[d,h]=U.useState(null),[g,b]=U.useState(!1),[S,x]=U.useState(!1),N=U.useRef(null),_=U.useRef(null),T=()=>{if(!N.current){const R=Xk();_.current=R,N.current=F5(R)}return{queryClient:_.current,router:N.current}};U.useEffect(()=>{if(nf())return;let R=!1;return Hy().then(V=>{R||(V.authenticated?n("ready"):n(V.setupRequired?"setup":"login"))}).catch(V=>{R||(h(V instanceof Error?V.message:"Failed to reach the Canonry API"),n("login"))}),()=>{R=!0}},[]),U.useEffect(()=>{if(e!=="ready"||nf())return;const R=setInterval(()=>{Hy().then(V=>{V.authenticated||(x(!0),n(V.setupRequired?"setup":"login"))}).catch(()=>{})},W5);return Gy(()=>{x(!0),n("login")}),()=>{clearInterval(R),Gy(null)}},[e]);const k=async R=>{if(R.preventDefault(),!i.trim()||i.trim().length<8){h("Password must be at least 8 characters");return}if(i!==l){h("Passwords do not match");return}b(!0),h(null);try{if(!(await Ak(i.trim())).authenticated){h("Setup failed");return}r(""),c(""),x(!1),n("ready")}catch(V){h(V instanceof Hn||V instanceof Error?V.message:"Setup failed")}finally{b(!1)}},E=async R=>{if(R.preventDefault(),!!i.trim()){b(!0),h(null);try{if(!(await _k(i.trim())).authenticated){h("Incorrect password");return}r(""),x(!1),n("ready")}catch(V){h(V instanceof Hn||V instanceof Error?V.message:"Authentication failed")}finally{b(!1)}}};if(e==="ready"){const{queryClient:R,router:V}=T();return f.jsx(Dw,{client:R,children:f.jsx(Rw,{router:V})})}return f.jsx("div",{className:"min-h-screen bg-zinc-950 px-4 py-8",children:f.jsx("div",{className:"mx-auto flex min-h-[calc(100vh-4rem)] max-w-md items-center justify-center",children:f.jsx(jn,{className:"surface-card w-full",children:e==="checking"?f.jsx(Fl,{className:"py-8",children:f.jsx("p",{className:"supporting-copy text-center",children:"Connecting to Canonry…"})}):e==="setup"?f.jsxs(f.Fragment,{children:[f.jsxs(Df,{children:[f.jsx("p",{className:"eyebrow eyebrow-soft",children:"First-time setup"}),f.jsx(Rf,{children:"Create a dashboard password"}),f.jsx(Mf,{children:"Choose a password to protect the Canonry dashboard. You will use this to sign in on future visits."})]}),f.jsx(Fl,{children:f.jsxs("form",{className:"space-y-4",onSubmit:wn(k),children:[f.jsxs("label",{className:"block space-y-1.5",children:[f.jsx("span",{className:"text-xs font-medium text-zinc-400",children:"Password"}),f.jsx("input",{autoFocus:!0,className:"w-full rounded-md border border-zinc-800 bg-zinc-950 px-3 py-2 text-sm text-zinc-100 outline-none transition focus:border-zinc-600",type:"password",value:i,onChange:R=>r(R.target.value),placeholder:"At least 8 characters"})]}),f.jsxs("label",{className:"block space-y-1.5",children:[f.jsx("span",{className:"text-xs font-medium text-zinc-400",children:"Confirm password"}),f.jsx("input",{className:"w-full rounded-md border border-zinc-800 bg-zinc-950 px-3 py-2 text-sm text-zinc-100 outline-none transition focus:border-zinc-600",type:"password",value:l,onChange:R=>c(R.target.value),placeholder:"Re-enter password"})]}),d?f.jsx("p",{className:"text-sm text-rose-400",children:d}):null,f.jsx(qe,{type:"submit",disabled:g||!i.trim()||!l.trim(),children:g?"Setting up…":"Create password & open dashboard"})]})})]}):f.jsxs(f.Fragment,{children:[f.jsxs(Df,{children:[f.jsx("p",{className:"eyebrow eyebrow-soft",children:"Dashboard access"}),f.jsx(Rf,{children:"Sign in to Canonry"}),f.jsx(Mf,{children:"Enter your dashboard password to continue."})]}),f.jsxs(Fl,{children:[S?f.jsx("p",{className:"mb-4 rounded-md border border-amber-500/30 bg-amber-500/10 px-3 py-2 text-sm text-amber-300",children:"Your session expired — please sign in again."}):null,f.jsxs("form",{className:"space-y-4",onSubmit:wn(E),children:[f.jsxs("label",{className:"block space-y-1.5",children:[f.jsx("span",{className:"text-xs font-medium text-zinc-400",children:"Password"}),f.jsx("input",{autoFocus:!0,className:"w-full rounded-md border border-zinc-800 bg-zinc-950 px-3 py-2 text-sm text-zinc-100 outline-none transition focus:border-zinc-600",type:"password",value:i,onChange:R=>r(R.target.value),placeholder:"Dashboard password"})]}),d?f.jsx("p",{className:"text-sm text-rose-400",children:d}):null,f.jsx(qe,{type:"submit",disabled:g||!i.trim(),children:g?"Signing in…":"Open dashboard"})]})]})]})})})})}const d1=document.getElementById("root");if(!d1)throw new Error("Expected #root element for web app bootstrap.");Iw.createRoot(d1).render(f.jsx(U.StrictMode,{children:f.jsx(eB,{})}));export{YL as $,TL as A,qe as B,lc as C,gB as D,ML as E,LL as F,hL as G,qL as H,to as I,AB as J,kB as K,CB as L,en as M,LB as N,IL as O,M3 as P,VL as Q,TB as R,D4 as S,Ln as T,UL as U,$L as V,BL as W,_B as X,EB as Y,PL as Z,GL as _,b6 as a,vB as a$,KL as a0,ZL as a1,qk as a2,J0 as a3,Ne as a4,QL as a5,BD as a6,_i as a7,HL as a8,lE as a9,RB as aA,Sp as aB,h6 as aC,y6 as aD,g6 as aE,OB as aF,fA as aG,Mv as aH,jD as aI,kD as aJ,ND as aK,r6 as aL,HB as aM,A6 as aN,xL as aO,vL as aP,wL as aQ,jL as aR,bL as aS,SL as aT,pB as aU,fB as aV,dB as aW,bB as aX,DL as aY,Cb as aZ,OL as a_,cE as aa,yL as ab,gL as ac,dL as ad,nL as ae,lL as af,cL as ag,Hn as ah,uL as ai,sB as aj,_A as ak,CL as al,kA as am,MA as an,UD as ao,nc as ap,pL as aq,fL as ar,jf as as,o6 as at,zB as au,f6 as av,p6 as aw,m6 as ax,DB as ay,Js as az,Yf as b,Xy as b$,SB as b0,EL as b1,xB as b2,wB as b3,NB as b4,jB as b5,go as b6,vp as b7,wR as b8,S5 as b9,$B as bA,PB as bB,Ac as bC,x6 as bD,Np as bE,Ck as bF,yB as bG,MB as bH,BB as bI,Ap as bJ,GB as bK,Is as bL,zb as bM,eL as bN,aL as bO,sL as bP,rL as bQ,tL as bR,iL as bS,oL as bT,B3 as bU,hS as bV,I3 as bW,gS as bX,yS as bY,xA as bZ,WB as b_,Ht as ba,Sk as bb,mB as bc,lB as bd,cB as be,hB as bf,S6 as bg,vk as bh,Nk as bi,oB as bj,rB as bk,wk as bl,uB as bm,k6 as bn,H4 as bo,XL as bp,FL as bq,Ok as br,WL as bs,VB as bt,IB as bu,e6 as bv,JL as bw,_L as bx,qB as by,UB as bz,et as c,u6 as c0,NL as c1,kL as c2,bp as c3,RL as c4,Qs as c5,l6 as c6,d6 as c7,FB as c8,XB as c9,JB as ca,YB as cb,c6 as cc,qT as d,v6 as e,zL as f,jn as g,$b as h,wn as i,mL as j,t6 as k,se as l,n6 as m,a6 as n,s6 as o,i6 as p,QB as q,ZB as r,KB as s,M4 as t,_p as u,w6 as v,j6 as w,N6 as x,Of as y,AL as z};
|