@ainyc/canonry 4.97.0 → 4.98.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.
Files changed (23) hide show
  1. package/assets/agent-workspace/skills/canonry/references/canonry-cli.md +7 -3
  2. package/assets/assets/{BacklinksPage-BI9BtHjp.js → BacklinksPage-CuWs7I1D.js} +1 -1
  3. package/assets/assets/{ChartPrimitives-BcjGunGr.js → ChartPrimitives-bm37tprp.js} +1 -1
  4. package/assets/assets/{ProjectPage-BdoberYt.js → ProjectPage-BksYe8FP.js} +1 -1
  5. package/assets/assets/{RunRow-BT2kpdQR.js → RunRow-DzhQl87g.js} +1 -1
  6. package/assets/assets/{RunsPage-BAgZuX7j.js → RunsPage-wOaewhbF.js} +1 -1
  7. package/assets/assets/{SettingsPage-BvKcpivM.js → SettingsPage-CJdhhkkE.js} +1 -1
  8. package/assets/assets/{TrafficPage-BdGOZv1e.js → TrafficPage-BJBeN5Ph.js} +1 -1
  9. package/assets/assets/{TrafficSourceDetailPage-C_N2D9xy.js → TrafficSourceDetailPage-D3PmH0B1.js} +1 -1
  10. package/assets/assets/{arrow-left-C8Fbup8X.js → arrow-left-BmITMI6O.js} +1 -1
  11. package/assets/assets/{extract-error-message-C29K35Gm.js → extract-error-message-BGwnyAfP.js} +1 -1
  12. package/assets/assets/{index-BGfyt3LX.js → index-BSX6r6ju.js} +9 -9
  13. package/assets/assets/{trash-2-DWLIELE_.js → trash-2-Bd2mkP_w.js} +1 -1
  14. package/assets/index.html +1 -1
  15. package/dist/{chunk-SRJ5IGNK.js → chunk-3TH54726.js} +2 -2
  16. package/dist/{chunk-NUGGUQH3.js → chunk-7COFPNMH.js} +106 -8
  17. package/dist/{chunk-E2FDXNMW.js → chunk-CWFTMFEU.js} +5 -3
  18. package/dist/{chunk-TXNKKTFD.js → chunk-DJVUNURL.js} +51 -2
  19. package/dist/cli.js +4 -4
  20. package/dist/index.js +4 -4
  21. package/dist/{intelligence-service-DC2TD7RR.js → intelligence-service-QHBXW4KI.js} +2 -2
  22. package/dist/mcp.js +2 -2
  23. package/package.json +8 -8
@@ -1,4 +1,4 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./ProjectPage-BdoberYt.js","./vendor-tanstack-Be8JdV5M.js","./RunRow-BT2kpdQR.js","./ChartPrimitives-BcjGunGr.js","./extract-error-message-C29K35Gm.js","./vendor-recharts-C9EZkgbP.js","./trash-2-DWLIELE_.js","./vendor-radix-CQ77EO2y.js","./vendor-markdown-6dwjPOKK.js","./RunsPage-BAgZuX7j.js","./SettingsPage-BvKcpivM.js","./BacklinksPage-BI9BtHjp.js","./TrafficPage-BdGOZv1e.js","./arrow-left-C8Fbup8X.js","./TrafficSourceDetailPage-C_N2D9xy.js"])))=>i.map(i=>d[i]);
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./ProjectPage-BksYe8FP.js","./vendor-tanstack-Be8JdV5M.js","./RunRow-DzhQl87g.js","./ChartPrimitives-bm37tprp.js","./extract-error-message-BGwnyAfP.js","./vendor-recharts-C9EZkgbP.js","./trash-2-Bd2mkP_w.js","./vendor-radix-CQ77EO2y.js","./vendor-markdown-6dwjPOKK.js","./RunsPage-wOaewhbF.js","./SettingsPage-CJdhhkkE.js","./BacklinksPage-CuWs7I1D.js","./TrafficPage-BJBeN5Ph.js","./arrow-left-BmITMI6O.js","./TrafficSourceDetailPage-D3PmH0B1.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 ze,j as f,L as st,a as _w,e as ks,u as fn,f as Cw,h as fc,k as zw,l as Tw,m as fv,O as Sf,n as Fa,o as zi,p as Ew,s as Tt,t as Gf,v as Is,x as Ow,y as Dw,z as Rw}from"./vendor-tanstack-Be8JdV5M.js";import{S as Mw,O as Hf,P as pv,C as Qf,a as mv,T as Kf,D as hv,R as gv}from"./vendor-radix-CQ77EO2y.js";import{c as yv}from"./vendor-recharts-C9EZkgbP.js";import{M as Bw}from"./vendor-markdown-6dwjPOKK.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 ef={exports:{}},Qr={},tf={exports:{}},nf={};var $y;function Lw(){return $y||($y=1,(function(e){function n(B,W){var fe=B.length;B.push(W);e:for(;0<fe;){var Se=fe-1>>>1,re=B[Se];if(0<l(re,W))B[Se]=W,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 W=B[0],fe=B.pop();if(fe!==W){B[0]=fe;e:for(var Se=0,re=B.length,Ze=re>>>1;Se<Ze;){var ee=2*(Se+1)-1,ue=B[ee],te=ee+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[ee]=fe,Se=ee);else if(te<re&&0>l(de,fe))B[Se]=de,B[te]=fe,Se=te;else break e}}return W}function l(B,W){var fe=B.sortIndex-W.sortIndex;return fe!==0?fe:B.id-W.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=[],v=[],S=1,x=null,N=3,_=!1,T=!1,k=!1,E=!1,R=typeof setTimeout=="function"?setTimeout:null,I=typeof clearTimeout=="function"?clearTimeout:null,G=typeof setImmediate<"u"?setImmediate:null;function Z(B){for(var W=i(v);W!==null;){if(W.callback===null)r(v);else if(W.startTime<=B)r(v),W.sortIndex=W.expirationTime,n(g,W);else break;W=i(v)}}function X(B){if(k=!1,Z(B),!T)if(i(g)!==null)T=!0,F||(F=!0,be());else{var W=i(v);W!==null&&J(X,W.startTime-B)}}var F=!1,O=-1,M=5,oe=-1;function ke(){return E?!0:!(e.unstable_now()-oe<M)}function Oe(){if(E=!1,F){var B=e.unstable_now();oe=B;var W=!0;try{e:{T=!1,k&&(k=!1,I(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),W=!0;break t}x===i(g)&&r(g),Z(B)}else r(g);x=i(g)}if(x!==null)W=!0;else{var Ze=i(v);Ze!==null&&J(X,Ze.startTime-B),W=!1}}break e}finally{x=null,N=fe,_=!1}W=void 0}}finally{W?be():F=!1}}}var be;if(typeof G=="function")be=function(){G(Oe)};else if(typeof MessageChannel<"u"){var et=new MessageChannel,Ke=et.port2;et.port1.onmessage=Oe,be=function(){Ke.postMessage(null)}}else be=function(){R(Oe,0)};function J(B,W){O=R(function(){B(e.unstable_now())},W)}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 W=3;break;default:W=N}var fe=N;N=W;try{return B()}finally{N=fe}},e.unstable_requestPaint=function(){E=!0},e.unstable_runWithPriority=function(B,W){switch(B){case 1:case 2:case 3:case 4:case 5:break;default:B=3}var fe=N;N=B;try{return W()}finally{N=fe}},e.unstable_scheduleCallback=function(B,W,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:W,priorityLevel:B,startTime:fe,expirationTime:re,sortIndex:-1},fe>Se?(B.sortIndex=fe,n(v,B),i(g)===null&&B===i(v)&&(k?(I(O),O=-1):k=!0,J(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 W=N;return function(){var fe=N;N=W;try{return B.apply(this,arguments)}finally{N=fe}}}})(nf)),nf}var Vy;function qw(){return Vy||(Vy=1,tf.exports=Lw()),tf.exports}var Iy;function Uw(){if(Iy)return Qr;Iy=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 v(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,j=u.child;j;){if(j===s){y=!0,s=u,o=m;break}if(j===o){y=!0,o=u,s=m;break}j=j.sibling}if(!y){for(j=m.child;j;){if(j===s){y=!0,s=m,o=u;break}if(j===o){y=!0,o=m,s=u;break}j=j.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"),I=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"),oe=Symbol.for("react.activity"),ke=Symbol.for("react.memo_cache_sentinel"),Oe=Symbol.iterator;function be(t){return t===null||typeof t!="object"?null:(t=Oe&&t[Oe]||t["@@iterator"],typeof t=="function"?t:null)}var et=Symbol.for("react.client.reference");function Ke(t){if(t==null)return null;if(typeof t=="function")return t.$$typeof===et?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 oe:return"Activity"}if(typeof t=="object")switch(t.$$typeof){case T:return"Portal";case G:return t.displayName||"Context";case I: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 J=Array.isArray,B=n.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,W=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 ee(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),ie=Ze(null),je=Ze(null);function tt(t,a){switch(ue(ie,a),ue(de,t),ue(te,null),a.nodeType){case 9:case 11:t=(t=a.documentElement)&&(t=t.namespaceURI)?cy(t):0;break;default:if(t=a.tagName,a=a.namespaceURI)a=cy(a),t=uy(a,t);else switch(t){case"svg":t=1;break;case"math":t=2;break;default:t=0}}ee(te),ue(te,t)}function xe(){ee(te),ee(de),ee(ie)}function Ue(t){t.memoizedState!==null&&ue(je,t);var a=te.current,s=uy(a,t.type);a!==s&&(ue(de,t),ue(te,s))}function Ge(t){de.current===t&&(ee(te),ee(de)),je.current===t&&(ee(je),Ir._currentValue=fe)}var Dt,Un;function Rt(t){if(Dt===void 0)try{throw Error()}catch(s){var a=s.stack.trim().match(/\n( *(at )?)/);Dt=a&&a[1]||"",Un=-1<s.stack.indexOf(`
3
3
  at`)?" (<anonymous>)":-1<s.stack.indexOf("@")?"@unknown:0:0":""}return`
4
4
  `+Dt+t+Un}var Ws=!1;function Ri(t,a){if(!t||Ws)return"";Ws=!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(V){var $=V}Reflect.construct(t,[],Y)}else{try{Y.call()}catch(V){$=V}t.call(Y.prototype)}}else{try{throw Error()}catch(V){$=V}(Y=t())&&typeof Y.catch=="function"&&Y.catch(function(){})}}catch(V){if(V&&$&&typeof V.stack=="string")return[V.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],j=m[1];if(y&&j){var C=y.split(`
@@ -49,19 +49,19 @@ Error generating stack: `+o.message+`
49
49
 
50
50
  `)}_.write("payload.value = newResult;"),_.write("return payload;");const I=_.compile();return(G,Z)=>I(N,G,Z)};let c;const d=io,h=!qv.jitless,v=h&&t2.value,S=n.catchall;let x;e._zod.parse=(N,_)=>{x??(x=r.value);const T=N.value;return d(T)?h&&v&&_?.async===!1&&_.jitless!==!0?(c||(c=l(n.shape)),N=c(N,_),S?t0([],T,N,_,x,e):N):i(N,_):(N.issues.push({expected:"object",code:"invalid_type",input:T,inst:e}),N)}});function ib(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=>!Cs(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=>Ja(d,r,Xa())))}),n)}const n0=Q("$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=>ep(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 v=g._zod.run({value:l.value,issues:[]},c);if(v instanceof Promise)h.push(v),d=!0;else{if(v.issues.length===0)return v;h.push(v)}}return d?Promise.all(h).then(g=>ib(g,l,e,c)):ib(h,l,e,c)}}),V_=Q("$ZodDiscriminatedUnion",(e,n)=>{n.inclusive=!1,n0.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 v of g)l[h].add(v)}}return l});const r=mc(()=>{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(!io(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)}}),I_=Q("$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,v])=>sb(i,g,v)):sb(i,c,d)}});function _f(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(Ls(e)&&Ls(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=_f(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=_f(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 sb(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}),Cs(e))return e;const d=_f(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 P_=Q("$ZodRecord",(e,n)=>{ut.init(e,n),e._zod.parse=(i,r)=>{const l=i.value;if(!Ls(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 v of d)if(typeof v=="string"||typeof v=="number"||typeof v=="symbol"){h.add(typeof v=="number"?v.toString():v);const S=n.valueType._zod.run({value:l[v],issues:[]},r);S instanceof Promise?c.push(S.then(x=>{x.issues.length&&i.issues.push(...zs(v,x.issues)),i.value[v]=x.value})):(S.issues.length&&i.issues.push(...zs(v,S.issues)),i.value[v]=S.value)}let g;for(const v in l)h.has(v)||(g=g??[],g.push(v));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"&&Zv.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=>Ja(x,r,Xa())),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(...zs(h,x.issues)),i.value[g.value]=x.value})):(S.issues.length&&i.issues.push(...zs(h,S.issues)),i.value[g.value]=S.value)}}return c.length?Promise.all(c).then(()=>i):i}}),G_=Q("$ZodEnum",(e,n)=>{ut.init(e,n);const i=Uv(n.entries),r=new Set(i);e._zod.values=r,e._zod.pattern=new RegExp(`^(${i.filter(l=>n2.has(typeof l)).map(l=>typeof l=="string"?qs(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}}),H_=Q("$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"?qs(r):r?qs(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}}),Q_=Q("$ZodTransform",(e,n)=>{ut.init(e,n),e._zod.parse=(i,r)=>{if(r.direction==="backward")throw new Lv(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 Ds;return i.value=l,i}});function rb(e,n){return e.issues.length&&n===void 0?{issues:[],value:void 0}:e}const a0=Q("$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(`^(${ep(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=>rb(c,i.value)):rb(l,i.value)}return i.value===void 0?i:n.innerType._zod.run(i,r)}}),K_=Q("$ZodExactOptional",(e,n)=>{a0.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)}),Z_=Q("$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(`^(${ep(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)}),Y_=Q("$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=>ob(c,n)):ob(l,n)}});function ob(e,n){return e.value===void 0&&(e.value=n.defaultValue),e}const X_=Q("$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))}),J_=Q("$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=>lb(c,e)):lb(l,e)}});function lb(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 F_=Q("$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=>Ja(d,r,Xa()))},input:i.value}),i.issues=[]),i)):(i.value=l.value,l.issues.length&&(i.value=n.catchValue({...i,error:{issues:l.issues.map(c=>Ja(c,r,Xa()))},input:i.value}),i.issues=[]),i)}}),W_=Q("$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=>ql(d,n.in,r)):ql(c,n.in,r)}const l=n.in._zod.run(i,r);return l instanceof Promise?l.then(c=>ql(c,n.out,r)):ql(l,n.out,r)}});function ql(e,n,i){return e.issues.length?(e.aborted=!0,e):n._zod.run({value:e.value,issues:e.issues},i)}const eC=Q("$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(cb):cb(l)}});function cb(e){return e.value=Object.freeze(e.value),e}const tC=Q("$ZodCustom",(e,n)=>{an.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=>ub(c,i,r,e));ub(l,i,r,e)}});function ub(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(so(l))}}var db;class nC{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 aC(){return new nC}(db=globalThis).__zod_globalRegistry??(db.__zod_globalRegistry=aC());const Wr=globalThis.__zod_globalRegistry;function iC(e,n){return new e({type:"string",...ye(n)})}function sC(e,n){return new e({type:"string",format:"email",check:"string_format",abort:!1,...ye(n)})}function fb(e,n){return new e({type:"string",format:"guid",check:"string_format",abort:!1,...ye(n)})}function rC(e,n){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,...ye(n)})}function oC(e,n){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v4",...ye(n)})}function lC(e,n){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v6",...ye(n)})}function cC(e,n){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v7",...ye(n)})}function uC(e,n){return new e({type:"string",format:"url",check:"string_format",abort:!1,...ye(n)})}function dC(e,n){return new e({type:"string",format:"emoji",check:"string_format",abort:!1,...ye(n)})}function fC(e,n){return new e({type:"string",format:"nanoid",check:"string_format",abort:!1,...ye(n)})}function pC(e,n){return new e({type:"string",format:"cuid",check:"string_format",abort:!1,...ye(n)})}function mC(e,n){return new e({type:"string",format:"cuid2",check:"string_format",abort:!1,...ye(n)})}function hC(e,n){return new e({type:"string",format:"ulid",check:"string_format",abort:!1,...ye(n)})}function gC(e,n){return new e({type:"string",format:"xid",check:"string_format",abort:!1,...ye(n)})}function yC(e,n){return new e({type:"string",format:"ksuid",check:"string_format",abort:!1,...ye(n)})}function bC(e,n){return new e({type:"string",format:"ipv4",check:"string_format",abort:!1,...ye(n)})}function vC(e,n){return new e({type:"string",format:"ipv6",check:"string_format",abort:!1,...ye(n)})}function SC(e,n){return new e({type:"string",format:"cidrv4",check:"string_format",abort:!1,...ye(n)})}function xC(e,n){return new e({type:"string",format:"cidrv6",check:"string_format",abort:!1,...ye(n)})}function wC(e,n){return new e({type:"string",format:"base64",check:"string_format",abort:!1,...ye(n)})}function jC(e,n){return new e({type:"string",format:"base64url",check:"string_format",abort:!1,...ye(n)})}function NC(e,n){return new e({type:"string",format:"e164",check:"string_format",abort:!1,...ye(n)})}function kC(e,n){return new e({type:"string",format:"jwt",check:"string_format",abort:!1,...ye(n)})}function AC(e,n){return new e({type:"string",format:"datetime",check:"string_format",offset:!1,local:!1,precision:null,...ye(n)})}function _C(e,n){return new e({type:"string",format:"date",check:"string_format",...ye(n)})}function CC(e,n){return new e({type:"string",format:"time",check:"string_format",precision:null,...ye(n)})}function zC(e,n){return new e({type:"string",format:"duration",check:"string_format",...ye(n)})}function TC(e,n){return new e({type:"number",checks:[],...ye(n)})}function EC(e,n){return new e({type:"number",check:"number_format",abort:!1,format:"safeint",...ye(n)})}function OC(e,n){return new e({type:"boolean",...ye(n)})}function DC(e){return new e({type:"unknown"})}function RC(e,n){return new e({type:"never",...ye(n)})}function pb(e,n){return new Xv({check:"less_than",...ye(n),value:e,inclusive:!1})}function rf(e,n){return new Xv({check:"less_than",...ye(n),value:e,inclusive:!0})}function mb(e,n){return new Jv({check:"greater_than",...ye(n),value:e,inclusive:!1})}function of(e,n){return new Jv({check:"greater_than",...ye(n),value:e,inclusive:!0})}function hb(e,n){return new Y2({check:"multiple_of",...ye(n),value:e})}function i0(e,n){return new J2({check:"max_length",...ye(n),maximum:e})}function nc(e,n){return new F2({check:"min_length",...ye(n),minimum:e})}function s0(e,n){return new W2({check:"length_equals",...ye(n),length:e})}function MC(e,n){return new e_({check:"string_format",format:"regex",...ye(n),pattern:e})}function BC(e){return new t_({check:"string_format",format:"lowercase",...ye(e)})}function LC(e){return new n_({check:"string_format",format:"uppercase",...ye(e)})}function qC(e,n){return new a_({check:"string_format",format:"includes",...ye(n),includes:e})}function UC(e,n){return new i_({check:"string_format",format:"starts_with",...ye(n),prefix:e})}function $C(e,n){return new s_({check:"string_format",format:"ends_with",...ye(n),suffix:e})}function Hs(e){return new r_({check:"overwrite",tx:e})}function VC(e){return Hs(n=>n.normalize(e))}function IC(){return Hs(e=>e.trim())}function PC(){return Hs(e=>e.toLowerCase())}function GC(){return Hs(e=>e.toUpperCase())}function HC(){return Hs(e=>e2(e))}function QC(e,n,i){return new e({type:"array",element:n,...ye(i)})}function KC(e,n,i){return new e({type:"custom",check:"custom",fn:n,...ye(i)})}function ZC(e){const n=YC(i=>(i.addIssue=r=>{if(typeof r=="string")i.issues.push(so(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(so(l))}},e(i.value,i)));return n}function YC(e,n){const i=new an({check:"custom",...ye(n)});return i._zod.check=e,i}function r0(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??Wr,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 At(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),At(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"&&Gt(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 o0(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 v=`#/${h}/`,S=d[1].schema.id??`__schema${e.counter++}`;return{defId:S,ref:v+S}},c=d=>{if(d[1].schema.$ref)return;const h=d[1],{ref:g,defId:v}=l(d);h.def={...h.schema},v&&(h.defId=v);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 v=e.external.registry.get(d[0])?.id;if(n!==d[0]&&v){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 l0(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,v={...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,v),d._zod.parent===S)for(const k in g)k==="$ref"||k==="allOf"||k in v||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:ac(n,"input",e.processors),output:ac(n,"output",e.processors)}},enumerable:!1,writable:!1}),d}catch{throw new Error("Error converting schema to JSON.")}}function Gt(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 Gt(r.element,i);if(r.type==="set")return Gt(r.valueType,i);if(r.type==="lazy")return Gt(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 Gt(r.innerType,i);if(r.type==="intersection")return Gt(r.left,i)||Gt(r.right,i);if(r.type==="record"||r.type==="map")return Gt(r.keyType,i)||Gt(r.valueType,i);if(r.type==="pipe")return Gt(r.in,i)||Gt(r.out,i);if(r.type==="object"){for(const l in r.shape)if(Gt(r.shape[l],i))return!0;return!1}if(r.type==="union"){for(const l of r.options)if(Gt(l,i))return!0;return!1}if(r.type==="tuple"){for(const l of r.items)if(Gt(l,i))return!0;return!!(r.rest&&Gt(r.rest,i))}return!1}const XC=(e,n={})=>i=>{const r=r0({...i,processors:n});return At(e,r),o0(r,e),l0(r,e)},ac=(e,n,i={})=>r=>{const{libraryOptions:l,target:c}=r??{},d=r0({...l??{},target:c,io:n,processors:i});return At(e,d),o0(d,e),l0(d,e)},JC={guid:"uuid",url:"uri",datetime:"date-time",json_string:"json-string",regex:""},FC=(e,n,i,r)=>{const l=i;l.type="string";const{minimum:c,maximum:d,format:h,patterns:g,contentEncoding:v}=e._zod.bag;if(typeof c=="number"&&(l.minLength=c),typeof d=="number"&&(l.maxLength=d),h&&(l.format=JC[h]??h,l.format===""&&delete l.format,h==="time"&&delete l.format),v&&(l.contentEncoding=v),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}))])}},WC=(e,n,i,r)=>{const l=i,{minimum:c,maximum:d,format:h,multipleOf:g,exclusiveMaximum:v,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 v=="number"&&(n.target==="draft-04"||n.target==="openapi-3.0"?(l.maximum=v,l.exclusiveMaximum=!0):l.exclusiveMaximum=v),typeof d=="number"&&(l.maximum=d,typeof v=="number"&&n.target!=="draft-04"&&(v<=d?delete l.maximum:delete l.exclusiveMaximum)),typeof g=="number"&&(l.multipleOf=g)},ez=(e,n,i,r)=>{i.type="boolean"},tz=(e,n,i,r)=>{i.not={}},nz=(e,n,i,r)=>{},az=(e,n,i,r)=>{const l=e._zod.def,c=Uv(l.entries);c.every(d=>typeof d=="number")&&(i.type="number"),c.every(d=>typeof d=="string")&&(i.type="string"),i.enum=c},iz=(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},sz=(e,n,i,r)=>{if(n.unrepresentable==="throw")throw new Error("Custom types cannot be represented in JSON Schema")},rz=(e,n,i,r)=>{if(n.unrepresentable==="throw")throw new Error("Transforms cannot be represented in JSON Schema")},oz=(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=At(c.element,n,{...r,path:[...r.path,"items"]})},lz=(e,n,i,r)=>{const l=i,c=e._zod.def;l.type="object",l.properties={};const d=c.shape;for(const v in d)l.properties[v]=At(d[v],n,{...r,path:[...r.path,"properties",v]});const h=new Set(Object.keys(d)),g=new Set([...h].filter(v=>{const S=c.shape[v]._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=At(c.catchall,n,{...r,path:[...r.path,"additionalProperties"]})):n.io==="output"&&(l.additionalProperties=!1)},cz=(e,n,i,r)=>{const l=e._zod.def,c=l.inclusive===!1,d=l.options.map((h,g)=>At(h,n,{...r,path:[...r.path,c?"oneOf":"anyOf",g]}));c?i.oneOf=d:i.anyOf=d},uz=(e,n,i,r)=>{const l=e._zod.def,c=At(l.left,n,{...r,path:[...r.path,"allOf",0]}),d=At(l.right,n,{...r,path:[...r.path,"allOf",1]}),h=v=>"allOf"in v&&Object.keys(v).length===1,g=[...h(c)?c.allOf:[c],...h(d)?d.allOf:[d]];i.allOf=g},dz=(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=At(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=At(c.keyType,n,{...r,path:[...r.path,"propertyNames"]})),l.additionalProperties=At(c.valueType,n,{...r,path:[...r.path,"additionalProperties"]});const v=d._zod.values;if(v){const S=[...v].filter(x=>typeof x=="string"||typeof x=="number");S.length>0&&(l.required=S)}},fz=(e,n,i,r)=>{const l=e._zod.def,c=At(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"}]},pz=(e,n,i,r)=>{const l=e._zod.def;At(l.innerType,n,r);const c=n.seen.get(e);c.ref=l.innerType},mz=(e,n,i,r)=>{const l=e._zod.def;At(l.innerType,n,r);const c=n.seen.get(e);c.ref=l.innerType,i.default=JSON.parse(JSON.stringify(l.defaultValue))},hz=(e,n,i,r)=>{const l=e._zod.def;At(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)))},gz=(e,n,i,r)=>{const l=e._zod.def;At(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},yz=(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;At(c,n,r);const d=n.seen.get(e);d.ref=c},bz=(e,n,i,r)=>{const l=e._zod.def;At(l.innerType,n,r);const c=n.seen.get(e);c.ref=l.innerType,i.readOnly=!0},c0=(e,n,i,r)=>{const l=e._zod.def;At(l.innerType,n,r);const c=n.seen.get(e);c.ref=l.innerType},vz=Q("ZodISODateTime",(e,n)=>{S_.init(e,n),ft.init(e,n)});function Sz(e){return AC(vz,e)}const xz=Q("ZodISODate",(e,n)=>{x_.init(e,n),ft.init(e,n)});function wz(e){return _C(xz,e)}const jz=Q("ZodISOTime",(e,n)=>{w_.init(e,n),ft.init(e,n)});function Nz(e){return CC(jz,e)}const kz=Q("ZodISODuration",(e,n)=>{j_.init(e,n),ft.init(e,n)});function Az(e){return zC(kz,e)}const _z=(e,n)=>{Pv.init(e,n),e.name="ZodError",Object.defineProperties(e,{format:{value:i=>p2(e,i)},flatten:{value:i=>f2(e,i)},addIssue:{value:i=>{e.issues.push(i),e.message=JSON.stringify(e.issues,Af,2)}},addIssues:{value:i=>{e.issues.push(...i),e.message=JSON.stringify(e.issues,Af,2)}},isEmpty:{get(){return e.issues.length===0}}})},zn=Q("ZodError",_z,{Parent:Error}),Cz=np(zn),zz=ap(zn),Tz=hc(zn),Ez=gc(zn),Oz=g2(zn),Dz=y2(zn),Rz=b2(zn),Mz=v2(zn),Bz=S2(zn),Lz=x2(zn),qz=w2(zn),Uz=j2(zn),dt=Q("ZodType",(e,n)=>(ut.init(e,n),Object.assign(e["~standard"],{jsonSchema:{input:ac(e,"input"),output:ac(e,"output")}}),e.toJSONSchema=XC(e,{}),e.def=n,e.type=n.type,Object.defineProperty(e,"_def",{value:n}),e.check=(...i)=>e.clone(Wa(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)=>ei(e,i,r),e.brand=()=>e,e.register=((i,r)=>(i.add(e,r),e)),e.parse=(i,r)=>Cz(e,i,r,{callee:e.parse}),e.safeParse=(i,r)=>Tz(e,i,r),e.parseAsync=async(i,r)=>zz(e,i,r,{callee:e.parseAsync}),e.safeParseAsync=async(i,r)=>Ez(e,i,r),e.spa=e.safeParseAsync,e.encode=(i,r)=>Oz(e,i,r),e.decode=(i,r)=>Dz(e,i,r),e.encodeAsync=async(i,r)=>Rz(e,i,r),e.decodeAsync=async(i,r)=>Mz(e,i,r),e.safeEncode=(i,r)=>Bz(e,i,r),e.safeDecode=(i,r)=>Lz(e,i,r),e.safeEncodeAsync=async(i,r)=>qz(e,i,r),e.safeDecodeAsync=async(i,r)=>Uz(e,i,r),e.refine=(i,r)=>e.check(OT(i,r)),e.superRefine=i=>e.check(DT(i)),e.overwrite=i=>e.check(Hs(i)),e.optional=()=>bb(e),e.exactOptional=()=>vT(e),e.nullable=()=>vb(e),e.nullish=()=>bb(vb(e)),e.nonoptional=i=>kT(e,i),e.array=()=>A(e),e.or=i=>bc([e,i]),e.and=i=>pT(e,i),e.transform=i=>Sb(e,yT(i)),e.default=i=>wT(e,i),e.prefault=i=>NT(e,i),e.catch=i=>_T(e,i),e.pipe=i=>Sb(e,i),e.readonly=()=>TT(e),e.describe=i=>{const r=e.clone();return Wr.add(r,{description:i}),r},Object.defineProperty(e,"description",{get(){return Wr.get(e)?.description},configurable:!0}),e.meta=(...i)=>{if(i.length===0)return Wr.get(e);const r=e.clone();return Wr.add(r,i[0]),r},e.isOptional=()=>e.safeParse(void 0).success,e.isNullable=()=>e.safeParse(null).success,e.apply=i=>i(e),e)),u0=Q("_ZodString",(e,n)=>{ip.init(e,n),dt.init(e,n),e._zod.processJSONSchema=(r,l,c)=>FC(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(MC(...r)),e.includes=(...r)=>e.check(qC(...r)),e.startsWith=(...r)=>e.check(UC(...r)),e.endsWith=(...r)=>e.check($C(...r)),e.min=(...r)=>e.check(nc(...r)),e.max=(...r)=>e.check(i0(...r)),e.length=(...r)=>e.check(s0(...r)),e.nonempty=(...r)=>e.check(nc(1,...r)),e.lowercase=r=>e.check(BC(r)),e.uppercase=r=>e.check(LC(r)),e.trim=()=>e.check(IC()),e.normalize=(...r)=>e.check(VC(...r)),e.toLowerCase=()=>e.check(PC()),e.toUpperCase=()=>e.check(GC()),e.slugify=()=>e.check(HC())}),$z=Q("ZodString",(e,n)=>{ip.init(e,n),u0.init(e,n),e.email=i=>e.check(sC(Vz,i)),e.url=i=>e.check(uC(Iz,i)),e.jwt=i=>e.check(kC(aT,i)),e.emoji=i=>e.check(dC(Pz,i)),e.guid=i=>e.check(fb(gb,i)),e.uuid=i=>e.check(rC(Ul,i)),e.uuidv4=i=>e.check(oC(Ul,i)),e.uuidv6=i=>e.check(lC(Ul,i)),e.uuidv7=i=>e.check(cC(Ul,i)),e.nanoid=i=>e.check(fC(Gz,i)),e.guid=i=>e.check(fb(gb,i)),e.cuid=i=>e.check(pC(Hz,i)),e.cuid2=i=>e.check(mC(Qz,i)),e.ulid=i=>e.check(hC(Kz,i)),e.base64=i=>e.check(wC(eT,i)),e.base64url=i=>e.check(jC(tT,i)),e.xid=i=>e.check(gC(Zz,i)),e.ksuid=i=>e.check(yC(Yz,i)),e.ipv4=i=>e.check(bC(Xz,i)),e.ipv6=i=>e.check(vC(Jz,i)),e.cidrv4=i=>e.check(SC(Fz,i)),e.cidrv6=i=>e.check(xC(Wz,i)),e.e164=i=>e.check(NC(nT,i)),e.datetime=i=>e.check(Sz(i)),e.date=i=>e.check(wz(i)),e.time=i=>e.check(Nz(i)),e.duration=i=>e.check(Az(i))});function p(e){return iC($z,e)}const ft=Q("ZodStringFormat",(e,n)=>{ct.init(e,n),u0.init(e,n)}),Vz=Q("ZodEmail",(e,n)=>{d_.init(e,n),ft.init(e,n)}),gb=Q("ZodGUID",(e,n)=>{c_.init(e,n),ft.init(e,n)}),Ul=Q("ZodUUID",(e,n)=>{u_.init(e,n),ft.init(e,n)}),Iz=Q("ZodURL",(e,n)=>{f_.init(e,n),ft.init(e,n)}),Pz=Q("ZodEmoji",(e,n)=>{p_.init(e,n),ft.init(e,n)}),Gz=Q("ZodNanoID",(e,n)=>{m_.init(e,n),ft.init(e,n)}),Hz=Q("ZodCUID",(e,n)=>{h_.init(e,n),ft.init(e,n)}),Qz=Q("ZodCUID2",(e,n)=>{g_.init(e,n),ft.init(e,n)}),Kz=Q("ZodULID",(e,n)=>{y_.init(e,n),ft.init(e,n)}),Zz=Q("ZodXID",(e,n)=>{b_.init(e,n),ft.init(e,n)}),Yz=Q("ZodKSUID",(e,n)=>{v_.init(e,n),ft.init(e,n)}),Xz=Q("ZodIPv4",(e,n)=>{N_.init(e,n),ft.init(e,n)}),Jz=Q("ZodIPv6",(e,n)=>{k_.init(e,n),ft.init(e,n)}),Fz=Q("ZodCIDRv4",(e,n)=>{A_.init(e,n),ft.init(e,n)}),Wz=Q("ZodCIDRv6",(e,n)=>{__.init(e,n),ft.init(e,n)}),eT=Q("ZodBase64",(e,n)=>{C_.init(e,n),ft.init(e,n)}),tT=Q("ZodBase64URL",(e,n)=>{T_.init(e,n),ft.init(e,n)}),nT=Q("ZodE164",(e,n)=>{E_.init(e,n),ft.init(e,n)}),aT=Q("ZodJWT",(e,n)=>{D_.init(e,n),ft.init(e,n)}),d0=Q("ZodNumber",(e,n)=>{Wv.init(e,n),dt.init(e,n),e._zod.processJSONSchema=(r,l,c)=>WC(e,r,l),e.gt=(r,l)=>e.check(mb(r,l)),e.gte=(r,l)=>e.check(of(r,l)),e.min=(r,l)=>e.check(of(r,l)),e.lt=(r,l)=>e.check(pb(r,l)),e.lte=(r,l)=>e.check(rf(r,l)),e.max=(r,l)=>e.check(rf(r,l)),e.int=r=>e.check(yb(r)),e.safe=r=>e.check(yb(r)),e.positive=r=>e.check(mb(0,r)),e.nonnegative=r=>e.check(of(0,r)),e.negative=r=>e.check(pb(0,r)),e.nonpositive=r=>e.check(rf(0,r)),e.multipleOf=(r,l)=>e.check(hb(r,l)),e.step=(r,l)=>e.check(hb(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 b(e){return TC(d0,e)}const iT=Q("ZodNumberFormat",(e,n)=>{R_.init(e,n),d0.init(e,n)});function yb(e){return EC(iT,e)}const sT=Q("ZodBoolean",(e,n)=>{M_.init(e,n),dt.init(e,n),e._zod.processJSONSchema=(i,r,l)=>ez(e,i,r)});function le(e){return OC(sT,e)}const rT=Q("ZodUnknown",(e,n)=>{B_.init(e,n),dt.init(e,n),e._zod.processJSONSchema=(i,r,l)=>nz()});function Ln(){return DC(rT)}const oT=Q("ZodNever",(e,n)=>{L_.init(e,n),dt.init(e,n),e._zod.processJSONSchema=(i,r,l)=>tz(e,i,r)});function lT(e){return RC(oT,e)}const cT=Q("ZodArray",(e,n)=>{q_.init(e,n),dt.init(e,n),e._zod.processJSONSchema=(i,r,l)=>oz(e,i,r,l),e.element=n.element,e.min=(i,r)=>e.check(nc(i,r)),e.nonempty=i=>e.check(nc(1,i)),e.max=(i,r)=>e.check(i0(i,r)),e.length=(i,r)=>e.check(s0(i,r)),e.unwrap=()=>e.element});function A(e,n){return QC(cT,e,n)}const uT=Q("ZodObject",(e,n)=>{$_.init(e,n),dt.init(e,n),e._zod.processJSONSchema=(i,r,l)=>lz(e,i,r,l),Pe(e,"shape",()=>n.shape),e.keyof=()=>ae(Object.keys(e._zod.def.shape)),e.catchall=i=>e.clone({...e._zod.def,catchall:i}),e.passthrough=()=>e.clone({...e._zod.def,catchall:Ln()}),e.loose=()=>e.clone({...e._zod.def,catchall:Ln()}),e.strict=()=>e.clone({...e._zod.def,catchall:lT()}),e.strip=()=>e.clone({...e._zod.def,catchall:void 0}),e.extend=i=>o2(e,i),e.safeExtend=i=>l2(e,i),e.merge=i=>c2(e,i),e.pick=i=>s2(e,i),e.omit=i=>r2(e,i),e.partial=(...i)=>u2(m0,e,i[0]),e.required=(...i)=>d2(h0,e,i[0])});function w(e,n){const i={type:"object",shape:e??{},...ye(n)};return new uT(i)}const f0=Q("ZodUnion",(e,n)=>{n0.init(e,n),dt.init(e,n),e._zod.processJSONSchema=(i,r,l)=>cz(e,i,r,l),e.options=n.options});function bc(e,n){return new f0({type:"union",options:e,...ye(n)})}const dT=Q("ZodDiscriminatedUnion",(e,n)=>{f0.init(e,n),V_.init(e,n)});function p0(e,n,i){return new dT({type:"union",options:n,discriminator:e,...ye(i)})}const fT=Q("ZodIntersection",(e,n)=>{I_.init(e,n),dt.init(e,n),e._zod.processJSONSchema=(i,r,l)=>uz(e,i,r,l)});function pT(e,n){return new fT({type:"intersection",left:e,right:n})}const mT=Q("ZodRecord",(e,n)=>{P_.init(e,n),dt.init(e,n),e._zod.processJSONSchema=(i,r,l)=>dz(e,i,r,l),e.keyType=n.keyType,e.valueType=n.valueType});function lt(e,n,i){return new mT({type:"record",keyType:e,valueType:n,...ye(i)})}const Cf=Q("ZodEnum",(e,n)=>{G_.init(e,n),dt.init(e,n),e._zod.processJSONSchema=(r,l,c)=>az(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 Cf({...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 Cf({...n,checks:[],...ye(l),entries:c})}});function ae(e,n){const i=Array.isArray(e)?Object.fromEntries(e.map(r=>[r,r])):e;return new Cf({type:"enum",entries:i,...ye(n)})}const hT=Q("ZodLiteral",(e,n)=>{H_.init(e,n),dt.init(e,n),e._zod.processJSONSchema=(i,r,l)=>iz(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 vt(e,n){return new hT({type:"literal",values:Array.isArray(e)?e:[e],...ye(n)})}const gT=Q("ZodTransform",(e,n)=>{Q_.init(e,n),dt.init(e,n),e._zod.processJSONSchema=(i,r,l)=>rz(e,i),e._zod.parse=(i,r)=>{if(r.direction==="backward")throw new Lv(e.constructor.name);i.addIssue=c=>{if(typeof c=="string")i.issues.push(so(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(so(d))}};const l=n.transform(i.value,i);return l instanceof Promise?l.then(c=>(i.value=c,i)):(i.value=l,i)}});function yT(e){return new gT({type:"transform",transform:e})}const m0=Q("ZodOptional",(e,n)=>{a0.init(e,n),dt.init(e,n),e._zod.processJSONSchema=(i,r,l)=>c0(e,i,r,l),e.unwrap=()=>e._zod.def.innerType});function bb(e){return new m0({type:"optional",innerType:e})}const bT=Q("ZodExactOptional",(e,n)=>{K_.init(e,n),dt.init(e,n),e._zod.processJSONSchema=(i,r,l)=>c0(e,i,r,l),e.unwrap=()=>e._zod.def.innerType});function vT(e){return new bT({type:"optional",innerType:e})}const ST=Q("ZodNullable",(e,n)=>{Z_.init(e,n),dt.init(e,n),e._zod.processJSONSchema=(i,r,l)=>fz(e,i,r,l),e.unwrap=()=>e._zod.def.innerType});function vb(e){return new ST({type:"nullable",innerType:e})}const xT=Q("ZodDefault",(e,n)=>{Y_.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.removeDefault=e.unwrap});function wT(e,n){return new xT({type:"default",innerType:e,get defaultValue(){return typeof n=="function"?n():Vv(n)}})}const jT=Q("ZodPrefault",(e,n)=>{X_.init(e,n),dt.init(e,n),e._zod.processJSONSchema=(i,r,l)=>hz(e,i,r,l),e.unwrap=()=>e._zod.def.innerType});function NT(e,n){return new jT({type:"prefault",innerType:e,get defaultValue(){return typeof n=="function"?n():Vv(n)}})}const h0=Q("ZodNonOptional",(e,n)=>{J_.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 kT(e,n){return new h0({type:"nonoptional",innerType:e,...ye(n)})}const AT=Q("ZodCatch",(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,e.removeCatch=e.unwrap});function _T(e,n){return new AT({type:"catch",innerType:e,catchValue:typeof n=="function"?n:()=>n})}const CT=Q("ZodPipe",(e,n)=>{W_.init(e,n),dt.init(e,n),e._zod.processJSONSchema=(i,r,l)=>yz(e,i,r,l),e.in=n.in,e.out=n.out});function Sb(e,n){return new CT({type:"pipe",in:e,out:n})}const zT=Q("ZodReadonly",(e,n)=>{eC.init(e,n),dt.init(e,n),e._zod.processJSONSchema=(i,r,l)=>bz(e,i,r,l),e.unwrap=()=>e._zod.def.innerType});function TT(e){return new zT({type:"readonly",innerType:e})}const ET=Q("ZodCustom",(e,n)=>{tC.init(e,n),dt.init(e,n),e._zod.processJSONSchema=(i,r,l)=>sz(e,i)});function OT(e,n={}){return KC(ET,e,n)}function DT(e){return ZC(e)}const g0=w({id:p(),name:p(),keyPrefix:p(),scopes:A(p()),readOnly:le(),createdAt:p(),lastUsedAt:p().nullable(),revokedAt:p().nullable()});w({keys:A(g0)});w({name:p().min(1).max(100),scopes:A(p()).min(1).optional()});g0.extend({key:p()});const RT=w({maxConcurrency:b().int().positive(),maxRequestsPerMinute:b().int().positive(),maxRequestsPerDay:b().int().positive()}),ya=p().min(1);p().min(1);const sp=w({label:p().min(1),city:p().min(1),region:p().min(1),country:p().length(2),timezone:p().optional()}),rp=ae(["citation.lost","citation.gained","run.completed","run.failed","insight.critical","insight.high"]);w({id:p(),projectId:p(),channel:vt("webhook"),url:p().url(),urlDisplay:p(),urlHost:p(),events:A(rp),enabled:le().default(!0),source:p().optional(),webhookSecret:p().optional(),createdAt:p(),updatedAt:p()});w({channel:vt("webhook"),url:p().url(),events:A(rp).min(1),source:p().optional()});const y0=ae(["cli","api","config-file"]);function MT(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 BT(e,n){return n?e.some(i=>i.label===n):!0}w({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(sp).optional(),defaultLocation:p().nullable().optional(),autoExtractBacklinks:le().optional(),configSource:y0.optional()});const LT=w({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(sp).default([]),defaultLocation:p().nullable().optional(),autoExtractBacklinks:le().default(!1),configSource:y0.default("cli"),configRevision:b().int().positive().default(1),createdAt:p().optional(),updatedAt:p().optional()});w({id:p(),query:p(),createdAt:p()});w({id:p(),keyword:p(),createdAt:p()});w({queries:A(p().trim().min(1)).min(1)});w({keywords:A(p().trim().min(1)).min(1)});w({provider:ya,count:b().int().min(1).max(20).optional()});w({id:p(),domain:p(),createdAt:p()});w({competitors:A(p().trim().min(1)).min(1)});function ic(e){let n=e.trim().toLowerCase();try{n.includes("://")&&(n=new URL(n).hostname.toLowerCase())}catch{}return n.replace(/^www\./,"")}const qT=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 UT(e){const n=ic(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 qT.has(l)?r.length>=3?r.slice(-3).join("."):"":r.slice(-2).join(".")}function $T(e){const n=UT(e);return n?n.split(".")[0]??"":""}function VT(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=ic(c);i.has(d)||(i.add(d),r.push(c))}return r}const IT=w({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({})}),PT=w({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(),GT=w({channel:vt("webhook"),url:p().url(),events:A(rp).min(1)}),HT=w({gsc:w({propertyUrl:p()}).optional(),syncSchedule:w({preset:p().optional(),cron:p().optional()}).optional()}).optional(),xb=A(p().min(1)),QT=w({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:xb.optional(),keywords:xb.optional(),competitors:A(p().min(1)).optional().default([]),providers:A(ya).optional().default([]),locations:A(sp).optional().default([]),defaultLocation:p().optional(),schedule:PT,notifications:A(GT).optional().default([]),google:HT,autoExtractBacklinks:le().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=MT(e.locations);i.length>0&&n.addIssue({code:"custom",message:`Duplicate location labels are not allowed: ${i.join(", ")}`,path:["locations"]}),BT(e.locations,e.defaultLocation)||n.addIssue({code:"custom",message:`defaultLocation "${e.defaultLocation}" must match a configured location label`,path:["defaultLocation"]})});w({apiVersion:vt("canonry/v1"),kind:vt("Project"),metadata:IT,spec:QT});const KT=ae(["gsc","ga4","gbp"]);w({id:p(),domain:p(),connectionType:KT,propertyId:p().nullable().optional(),sitemapUrl:p().nullable().optional(),scopes:A(p()).default([]),createdAt:p(),updatedAt:p()});w({date:p(),query:p(),page:p(),country:p().nullable().optional(),device:p().nullable().optional(),clicks:b(),impressions:b(),ctr:b(),position:b()});const ZT=w({date:p(),clicks:b(),impressions:b(),ctr:b()});w({totals:w({clicks:b(),impressions:b(),ctr:b(),days:b()}),daily:A(ZT)});const zf=w({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:le().nullable().optional(),richResults:A(p()).default([]),referringUrls:A(p()).default([]),inspectedAt:p()});ae(["stable","reindexed","deindexed","still-missing","new"]);const YT=w({url:p(),previousState:p().nullable(),currentState:p().nullable(),transitionDate:p()}),XT=w({reason:p(),count:b(),urls:A(zf).default([])});w({summary:w({total:b(),indexed:b(),notIndexed:b(),deindexed:b(),percentage:b()}),lastInspectedAt:p().nullable(),lastSyncedAt:p().nullable(),indexed:A(zf).default([]),notIndexed:A(zf).default([]),deindexed:A(YT).default([]),reasonGroups:A(XT).default([])});w({url:p(),type:ae(["URL_UPDATED","URL_DELETED"]),notifiedAt:p()});const JT=w({url:p(),type:ae(["URL_UPDATED","URL_DELETED"]),notifiedAt:p(),status:ae(["success","error"]),error:p().optional()});w({summary:w({total:b().int().nonnegative(),succeeded:b().int().nonnegative(),failed:b().int().nonnegative()}),results:A(JT).default([])});w({date:p(),indexed:b(),notIndexed:b(),reasonBreakdown:lt(p(),b()).default({})});const FT=w({siteUrl:p(),permissionLevel:p()});w({sites:A(FT).default([])});const WT=w({type:p(),submitted:p(),indexed:p()}),eE=w({path:p(),lastSubmitted:p().optional(),isPending:le().optional(),isSitemapsIndex:le().optional(),type:p().optional(),lastDownloaded:p().optional(),warnings:p().optional(),errors:p().optional(),contents:A(WT).optional()});w({sitemaps:A(eE).default([])});const tE=w({name:p(),accountName:p().nullable(),type:p().nullable(),role:p().nullable()});w({accounts:A(tE),total:b().int().nonnegative()});const nE=w({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(),Ln()).nullable(),regularHours:lt(p(),Ln()).nullable(),primaryPhone:p().nullable(),openStatus:p().nullable(),openingDate:p().nullable(),selected:le(),syncedAt:p().nullable(),createdAt:p(),updatedAt:p()});w({locations:A(nE),totalDiscovered:b().int().nonnegative(),totalSelected:b().int().nonnegative()});w({selectAllNew:le().default(!0),accountName:p().optional(),switchAccount:le().default(!1)});w({selected:le()});w({locationNames:A(p()).optional(),daysOfMetrics:b().int().positive().max(540).optional(),monthsOfKeywords:b().int().positive().max(18).optional()});w({runId:p(),status:p()});const aE=w({locationName:p(),date:p(),metric:p(),value:b().int()});w({metrics:A(aE),total:b().int().nonnegative()});const iE=w({locationName:p(),periodStart:p(),periodEnd:p(),keyword:p(),valueCount:b().int().nullable(),valueThreshold:b().int().nullable()});w({keywords:A(iE),total:b().int().nonnegative(),thresholdedPct:b().int().min(0).max(100)});const sE=w({locationName:p(),placeActionLinkName:p(),placeActionType:p(),uri:p().nullable(),isPreferred:le(),providerType:p().nullable()});w({placeActions:A(sE),total:b().int().nonnegative()});const rE=w({locationName:p(),populatedGroupCount:b().int().nonnegative(),syncedAt:p(),attributes:lt(p(),Ln())});w({lodging:A(rE),total:b().int().nonnegative()});const oE=w({name:p(),valueType:p(),values:A(bc([le(),p()])),unsetValues:A(p()),uris:A(p())}),lE=w({locationName:p(),attributeCount:b().int().nonnegative(),syncedAt:p(),attributes:A(oE)});w({attributes:A(lE),total:b().int().nonnegative()});const cE=w({locationName:p(),placeId:p(),tier:p(),amenities:A(p()),syncedAt:p(),place:lt(p(),Ln())});w({places:A(cE),total:b().int().nonnegative()});w({scope:w({locationName:p().nullable(),locationCount:b().int().nonnegative()}),performance:w({totals:lt(p(),b()),recent7d:lt(p(),b()),prior7d:lt(p(),b()),deltaPct:lt(p(),b().nullable())}),freshness:w({dataThroughDate:p().nullable(),latestStoredDate:p().nullable(),pendingDays:b().int().nonnegative()}),timeseries:A(w({date:p(),pending:le(),metrics:lt(p(),b())})),keywords:w({total:b().int().nonnegative(),thresholdedCount:b().int().nonnegative(),thresholdedPct:b().int().min(0).max(100)}),placeActions:w({total:b().int().nonnegative(),hasReservationCta:le(),hasBookingCta:le(),hasDirectMerchantCta:le()}),lodging:w({lodgingLocationCount:b().int().nonnegative(),populatedLodgingCount:b().int().nonnegative(),emptyLodgingCount:b().int().nonnegative()}),profileCompleteness:w({locationCount:b().int().nonnegative(),withSecondaryCategories:b().int().nonnegative(),secondaryCategoryTotal:b().int().nonnegative(),withDescription:b().int().nonnegative(),withServiceArea:b().int().nonnegative(),withHours:b().int().nonnegative(),withPrimaryPhone:b().int().nonnegative(),permanentlyClosed:b().int().nonnegative(),temporarilyClosed:b().int().nonnegative()})});const uE={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 dE(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 jL(e){return uE[e]??dE(e)}const fE=["BUSINESS_DIRECTION_REQUESTS","WEBSITE_CLICKS","CALL_CLICKS"],pE=["BUSINESS_IMPRESSIONS_DESKTOP_SEARCH","BUSINESS_IMPRESSIONS_MOBILE_SEARCH","BUSINESS_IMPRESSIONS_DESKTOP_MAPS","BUSINESS_IMPRESSIONS_MOBILE_MAPS"];function NL(e){return fE.includes(e)?"conversion":pE.includes(e)?"reach":"other"}w({id:p(),domain:p(),siteUrl:p().nullable().optional(),createdAt:p(),updatedAt:p()});const lf=w({id:p(),url:p(),httpCode:b().nullable().optional(),inIndex:le().nullable().optional(),lastCrawledDate:p().nullable().optional(),inIndexDate:p().nullable().optional(),inspectedAt:p(),documentSize:b().nullable().optional(),anchorCount:b().nullable().optional(),discoveryDate:p().nullable().optional()});w({summary:w({total:b(),indexed:b(),notIndexed:b(),unknown:b().optional(),percentage:b()}),lastInspectedAt:p().nullable(),indexed:A(lf).default([]),notIndexed:A(lf).default([]),unknown:A(lf).default([]).optional()});w({query:p(),impressions:b(),clicks:b(),ctr:b(),averagePosition:b()});w({date:p(),indexed:b(),notIndexed:b(),unknown:b()});const mE=w({url:p(),status:ae(["success","error"]),submittedAt:p(),error:p().optional()});w({summary:w({total:b().int().nonnegative(),succeeded:b().int().nonnegative(),failed:b().int().nonnegative()}),results:A(mE).default([])});const b0=w({url:p(),verified:le()});w({sites:A(b0).default([])});w({connected:le(),domain:p(),siteUrl:p().nullable(),createdAt:p().nullable(),updatedAt:p().nullable()});w({connected:le(),domain:p(),siteUrl:p().nullable(),availableSites:A(b0).default([])});w({siteUrl:p()});const hE=w({name:p(),alive:le(),lastUsed:p().nullable()});w({connected:le(),endpoint:p(),version:p().optional(),browserVersion:p().optional(),targets:A(hE).default([])});const Qs=ae(["live","staging"]);w({projectName:p(),url:p(),stagingUrl:p().optional(),username:p(),defaultEnv:Qs,createdAt:p(),updatedAt:p()});const wb=w({url:p(),reachable:le(),pageCount:b().nullable().optional(),version:p().nullable().optional(),error:p().nullable().optional(),plugins:A(p()).optional(),authenticatedUser:w({id:b(),slug:p()}).nullable().optional()});w({connected:le(),projectName:p(),defaultEnv:Qs,live:wb.nullable(),staging:wb.nullable(),adminUrl:p().nullable().optional()});const gE=w({id:b(),slug:p(),title:p(),status:p(),modifiedAt:p().nullable().optional(),link:p().nullable().optional()}),v0=w({title:p().nullable(),description:p().nullable(),noindex:le().nullable(),writable:le().default(!1),writeTargets:A(p()).default([])}),yE=w({type:p(),json:lt(p(),Ln())}),bE=gE.extend({env:Qs,content:p(),seo:v0,schemaBlocks:A(yE).default([])}),jb=bE.extend({contentHash:p(),contentSnippet:p()}),S0=w({manualRequired:vt(!0),targetUrl:p(),adminUrl:p().nullable().optional(),content:p(),nextSteps:A(p()).default([])}),vE=w({slug:p(),severity:ae(["high","medium","low"]),code:ae(["noindex","missing-seo-title","missing-meta-description","missing-schema","thin-content"]),message:p()});w({slug:p(),title:p(),status:p(),wordCount:b(),seo:v0,schemaPresent:le(),issues:A(vE).default([])});const SE=w({slug:p(),status:ae(["applied","skipped","manual"]),error:p().optional(),manualAssist:S0.optional()});w({env:Qs,strategy:ae(["plugin","manual"]),results:A(SE)});const xE=w({slug:p(),status:ae(["deployed","stripped","skipped","failed"]),schemasInjected:A(p()).optional(),manualAssist:S0.optional(),error:p().optional()});w({env:Qs,results:A(xE)});const wE=w({slug:p(),title:p(),canonrySchemas:A(p()),thirdPartySchemas:A(p()),hasCanonrySchema:le()});w({env:Qs,pages:A(wE)});const jE=w({name:p(),status:ae(["completed","skipped","failed"]),summary:p().optional(),error:p().optional()});w({projectName:p(),steps:A(jE)});w({slug:p(),live:jb,staging:jb,hasDifferences:le(),differences:w({title:le(),slug:le(),content:le(),seoTitle:le(),seoDescription:le(),noindex:le(),schema:le()})});const NE=w({name:p(),displayName:p().optional(),keyUrl:p().optional(),modelHint:p().optional(),model:p().optional(),defaultModel:p().optional(),configured:le(),quota:RT.optional(),vertexConfigured:le().optional()}),Nb=w({configured:le()});w({providers:A(NE).default([]),google:Nb,bing:Nb});const Ks=ae(["queued","running","completed","partial","failed","cancelled"]),Qt=Ks.enum,x0=ae(["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=ae(["manual","scheduled","config-apply","backfill","probe"]),Rs=w0.enum,Ai=ae(["cited","not-cited"]),sc=Ai.enum,rc=ae(["visible","not-visible"]);rc.enum;const oc=ae(["mentioned","not-mentioned"]);oc.enum;const j0=ae(["new","cited","lost","emerging","not-cited"]);j0.enum;const kE=ae(["new","mentioned","lost","emerging","not-mentioned"]);kE.enum;const AE=ae([Rs.manual,Rs.probe]);w({kind:vt(Ne["answer-visibility"]).optional(),trigger:AE.optional(),providers:A(ya).optional(),queries:A(p().min(1)).min(1).optional(),location:p().min(1).optional(),allLocations:le().optional(),noLocation:le().optional()}).refine(e=>+!!e.location+ +!!e.allLocations+ +!!e.noLocation<=1,{message:'Only one of "location", "allLocations", or "noLocation" may be provided'});const _E=w({message:p(),raw:Ln().optional()}),CE=w({message:p().optional(),providers:lt(p(),_E).optional()}),zE=w({id:p(),projectId:p(),kind:x0,status:Ks,trigger:w0.default("manual"),location:p().nullable().optional(),queries:A(p()).nullable().optional(),startedAt:p().nullable().optional(),finishedAt:p().nullable().optional(),error:CE.nullable().optional(),createdAt:p()});function op(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=w({uri:p(),title:p()}),k0=w({id:p(),runId:p(),queryId:p(),query:p().optional(),provider:ya,citationState:Ai,answerMentioned:le().optional(),visibilityState:rc.optional(),mentionState:oc.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()});w({snapshots:A(k0),total:b().int().nonnegative()});const TE=w({queryId:p().nullable(),query:p().nullable(),run1State:Ai.nullable(),run2State:Ai.nullable(),run1AnswerMentioned:le().nullable(),run2AnswerMentioned:le().nullable(),run1VisibilityState:rc.nullable(),run2VisibilityState:rc.nullable(),run1MentionState:oc.nullable().optional(),run2MentionState:oc.nullable().optional(),changed:le(),visibilityChanged:le()});w({run1:p(),run2:p(),diff:A(TE)});const EE=zE.extend({snapshots:A(k0).optional()}),OE=w({totalRuns:b().int().nonnegative(),run:EE.nullable()});w({id:p(),projectId:p().nullable().optional(),actor:p(),action:p(),entityType:p(),entityId:p().nullable().optional(),diff:Ln().optional(),createdAt:p()});const DE=ae(["yes","no","unknown","not-mentioned"]),kb=A(p().min(1));w({companyName:p().min(1),domain:p().min(1),queries:kb.optional(),phrases:kb.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 RE=w({name:p(),count:b().int().nonnegative()}),ME=w({id:p(),name:p(),weight:b(),score:b(),findings:A(w({type:p(),message:p()})).default([]),recommendations:A(p()).default([])}),BE=w({url:p(),finalUrl:p(),auditedAt:p(),overallScore:b(),summary:p(),factors:A(ME).default([])}),LE=w({industry:p(),summary:p(),services:A(p()).default([]),categoryTerms:A(p()).default([])}),qE=w({provider:p(),displayName:p(),model:p().nullable().optional(),mentioned:le(),cited:le(),describedAccurately:DE,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()}),UE=w({query:p(),providerResults:A(qE).default([])}),$E=w({totalQueries:b().int().nonnegative(),totalProviders:b().int().nonnegative(),totalComparisons:b().int().nonnegative(),mentionCount:b().int().nonnegative(),citationCount:b().int().nonnegative(),topCompetitors:A(RE).default([]),visibilityGap:p(),whatThisMeans:A(p()).default([]),recommendedActions:A(p()).default([])});w({companyName:p(),domain:p(),homepageUrl:p(),generatedAt:p(),queries:A(p()).default([]),competitors:A(p()).default([]),profile:LE,audit:BE,queryResults:A(UE).default([]),summary:$E});const A0=ae(["pass","partial","fail"]);A0.enum;const _0=ae(["up","down","flat"]);_0.enum;const VE=w({id:p(),name:p(),weight:b(),avgScore:b(),status:A0,pagesPassing:b().int().nonnegative(),pagesPartial:b().int().nonnegative(),pagesFailing:b().int().nonnegative()}),IE=w({factorId:p(),factorName:p(),avgScore:b(),affectedPages:b().int().nonnegative(),totalPages:b().int().nonnegative(),affectedPct:b().int().nonnegative(),topRecommendations:A(p()).default([])});w({project:p(),hasData:le(),runId:p().nullable(),runStatus:Ks.nullable(),sitemapUrl:p().nullable(),auditedAt:p().nullable(),aggregateScore:b(),pagesDiscovered:b().int().nonnegative(),pagesAudited:b().int().nonnegative(),pagesSkipped:b().int().nonnegative(),pagesErrored:b().int().nonnegative(),deltaScore:b().nullable(),trend:_0.nullable(),previousScore:b().nullable(),previousAuditedAt:p().nullable(),factors:A(VE).default([]),crossCuttingIssues:A(IE).default([]),prioritizedFixes:A(p()).default([])});const PE=w({id:p(),name:p(),weight:b(),score:b()}),GE=w({url:p(),overallScore:b(),status:ae(["success","error"]),error:p().nullable().optional(),factors:A(PE).default([])});w({project:p(),runId:p().nullable(),auditedAt:p().nullable(),total:b().int().nonnegative(),pages:A(GE).default([])});const HE=w({runId:p(),auditedAt:p(),aggregateScore:b(),pagesAudited:b().int().nonnegative()});w({project:p(),points:A(HE).default([])});w({sitemapUrl:p().url().optional(),limit:b().int().positive().max(2e3).optional()});w({runId:p(),status:Ks});const lp=ae(["answer-visibility","traffic-sync","gbp-sync","data-refresh","backlinks-sync","site-audit","ads-sync"]);lp.enum;w({id:p(),projectId:p(),kind:lp,cronExpr:p(),preset:p().nullable().optional(),timezone:p().default("UTC"),enabled:le().default(!0),providers:A(ya).default([]),sourceId:p().nullable().optional(),lastRunAt:p().nullable().optional(),nextRunAt:p().nullable().optional(),createdAt:p(),updatedAt:p()});w({kind:lp.optional(),preset:p().optional(),cron:p().optional(),timezone:p().optional().default("UTC"),enabled:le().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 cp=ae(["competitor","directory","social","forum","news","reference","blog","ecommerce","video","academic","other"]);cp.enum;const up=ae(["cited","aspirational","wasted-surface"]),Ab=up.enum;Ab.cited,Ab.aspirational;const vc=ae(["direct-competitor","ota-aggregator","editorial-media","other","unknown"]),QE=vc.enum;QE["direct-competitor"];const Sc=ae(["queued","seeding","probing","completed","failed"]);Sc.enum;const C0=w({domain:p().min(1),hits:b().int().positive(),competitorType:vc.default("unknown")}),KE=w({id:p(),sessionId:p(),projectId:p(),query:p(),bucket:up.nullable().default(null),citationState:Ai,citedDomains:A(p()).default([]),answerMentioned:le().nullable().default(null),createdAt:p()}),ZE=w({id:p(),projectId:p(),status:Sc,icpDescription:p().nullable().optional(),seedProvider:p().nullable().optional(),seedCountRaw:b().int().nullable().optional(),seedCount:b().int().nullable().optional(),dedupThreshold:b().nullable().optional(),probeCount:b().int().nullable().optional(),citedCount:b().int().nullable().default(null),aspirationalCount:b().int().nullable().default(null),wastedCount:b().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()});ZE.extend({probes:A(KE).default([])});const YE=500;w({icpDescription:p().min(1).optional(),dedupThreshold:b().min(0).max(1).optional(),maxProbes:b().int().positive().max(YE).optional(),locations:A(p().min(1)).optional()});w({buckets:A(up).min(1).optional(),includeCompetitors:le().optional(),competitorTypes:A(vc).min(1).optional()});w({sessionId:p(),projectId:p(),status:Sc,queriesByBucket:w({cited:A(p()),aspirational:A(p()),"wasted-surface":A(p())}),suggestedCompetitors:A(C0)});w({sessionId:p(),projectId:p(),promoted:w({queries:A(p()),competitors:A(p())}),skipped:w({queries:A(p()),competitors:A(p())})});bc([vt("cli"),p().regex(/^discovery:.+$/)]);const XE=w({query:p().min(1),probeHits:b().int().positive()}),JE=w({rawCandidates:b().int().nonnegative(),admitted:b().int().nonnegative(),rejected:w({belowFloor:b().int().nonnegative(),length:b().int().nonnegative(),navigational:b().int().nonnegative(),duplicate:b().int().nonnegative(),offAnchor:b().int().nonnegative(),semanticDuplicate:b().int().nonnegative()})});w({sessionId:p(),projectId:p(),provider:p(),status:Sc,minProbeHits:b().int().positive(),anchorApplied:le(),semanticNoveltyApplied:le(),candidates:A(XE),stats:JE});const dp=ae(["own","direct-competitor","ota-aggregator","editorial-media","other"]);dp.enum;const z0=ae(["7d","30d","90d","all"]),_b=ae(["improving","declining","stable"]),FE=ae(["mentioned","cited"]);FE.enum;const Tf=w({citationRate:b(),cited:b().int(),total:b().int(),mentionRate:b(),mentionedCount:b().int()}),WE=w({startDate:p(),endDate:p(),citationRate:b(),cited:b().int(),total:b().int(),queryCount:b().int(),mentionRate:b(),mentionedCount:b().int(),byProvider:lt(p(),Tf)}),eO=w({date:p(),delta:b().int(),label:p()});w({window:z0,buckets:A(WE),overall:Tf,byProvider:lt(p(),Tf),trend:_b,mentionTrend:_b,queryChanges:A(eO)});const Cb=w({category:cp,label:p(),count:b().int(),percentage:b(),topDomains:A(w({domain:p(),count:b().int()}))}),tO=w({domain:p(),count:b().int(),percentage:b(),category:cp,label:p(),surfaceClass:dp}),nO=w({surfaceClass:dp,label:p(),count:b().int(),percentage:b(),domainCount:b().int()}),zb=w({totalCitedSlots:b().int(),domainTotal:b().int(),entries:A(tO),truncatedDomainCount:b().int(),truncatedCitedSlots:b().int(),bySurfaceClass:A(nO)});w({overall:A(Cb),byQuery:lt(p(),A(Cb)),ranked:zb,byProvider:lt(p(),zb),runId:p(),window:z0,limit:b().int().nullable()});const fp=w({total:b().int(),checked:b().int(),mentioned:b().int(),cited:b().int(),mentionRate:b().nullable(),citedRate:b().nullable()}),T0=fp.extend({provider:p(),firstObserved:p(),lastObserved:p()}),aO=fp.extend({queryId:p().nullable(),query:p(),firstObserved:p(),lastObserved:p(),providers:A(T0).optional()}),iO=w({since:p().nullable(),until:p().nullable(),lastRuns:b().int().nullable(),runCount:b().int()}),sO=ae(["provider"]);w({project:p(),groupBy:sO.optional(),window:iO,totals:fp,byProvider:A(T0).optional(),queries:A(aO)});w({id:p(),projectId:p(),propertyId:p(),clientEmail:p(),connected:le(),createdAt:p(),updatedAt:p()});w({date:p(),landingPage:p(),sessions:b(),organicSessions:b(),users:b()});const pp=ae(["session","first_user","manual_utm"]),rO=w({source:p(),medium:p(),sessions:b(),users:b(),sourceDimension:pp}),oO=w({source:p(),medium:p(),sourceDimension:pp,landingPage:p(),sessions:b(),users:b()}),lO=w({source:p(),medium:p(),sessions:b(),users:b(),channelGroup:p()}),Kr=w({sessions:b(),sharePct:b(),sharePctDisplay:p()}),cO=w({organic:Kr,social:Kr,direct:Kr,ai:Kr,other:Kr});w({totalSessions:b(),totalOrganicSessions:b(),totalDirectSessions:b(),totalUsers:b(),topPages:A(w({landingPage:p(),sessions:b(),organicSessions:b(),directSessions:b(),users:b()})),aiReferrals:A(rO),aiReferralLandingPages:A(oO),aiSessionsDeduped:b(),aiUsersDeduped:b(),aiSessionsBySession:b(),aiUsersBySession:b(),socialReferrals:A(lO),socialSessions:b(),socialUsers:b(),channelBreakdown:cO,organicSharePct:b(),aiSharePct:b(),aiSharePctBySession:b(),directSharePct:b(),socialSharePct:b(),organicSharePctDisplay:p(),aiSharePctDisplay:p(),aiSharePctBySessionDisplay:p(),directSharePctDisplay:p(),socialSharePctDisplay:p(),otherSessions:b(),otherSharePct:b(),otherSharePctDisplay:p(),lastSyncedAt:p().nullable()});w({connected:le(),propertyId:p().nullable(),clientEmail:p().nullable(),authMethod:ae(["service-account","oauth"]).nullable(),lastSyncedAt:p().nullable(),createdAt:p().nullable().optional(),updatedAt:p().nullable().optional()});w({synced:le(),rowCount:b().int().nonnegative(),aiReferralCount:b().int().nonnegative(),socialReferralCount:b().int().nonnegative(),days:b().int().nonnegative(),syncedAt:p(),syncedComponents:A(p()).optional()});w({date:p(),source:p(),medium:p(),landingPage:p(),sessions:b(),users:b(),sourceDimension:pp});w({date:p(),source:p(),medium:p(),sessions:b(),users:b(),channelGroup:p()});w({date:p(),sessions:b(),organicSessions:b(),users:b()});function lc(e){return e.toLowerCase().replace(/[^a-z0-9]/g,"")}const E0=ae(["claude","openai","gemini","zai"]),uO=w({id:E0,label:p(),defaultModel:p(),configured:le(),keySource:ae(["config","env"]).nullable()});w({providers:A(uO).default([]),defaultProvider:E0.nullable()});const dO=ae(["aero","user","compaction"]);dO.enum;const O0=128;w({key:p().min(1).max(O0),value:p().min(1)});w({key:p().min(1).max(O0)});const Zs=ae(["commoncrawl","bing-webmaster"]);Zs.enum;const mp=ae(["queued","downloading","querying","ready","failed"]);mp.enum;w({id:p(),release:p(),status:mp,phaseDetail:p().nullable().optional(),vertexPath:p().nullable().optional(),edgesPath:p().nullable().optional(),vertexSha256:p().nullable().optional(),edgesSha256:p().nullable().optional(),vertexBytes:b().int().nullable().optional(),edgesBytes:b().int().nullable().optional(),projectsProcessed:b().int().nullable().optional(),domainsDiscovered:b().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 fO=w({linkingDomain:p(),numHosts:b().int(),source:Zs}),pO=w({projectId:p(),release:p(),targetDomain:p(),totalLinkingDomains:b().int(),totalHosts:b().int(),top10HostsShare:p(),queriedAt:p(),source:Zs,excludedLinkingDomains:b().int().optional(),excludedHosts:b().int().optional()});w({source:Zs,summary:pO.nullable(),total:b().int(),rows:A(fO)});w({release:p(),totalLinkingDomains:b().int(),totalHosts:b().int(),top10HostsShare:p(),queriedAt:p(),source:Zs});const mO=w({source:Zs,connected:le(),hasData:le(),latestRelease:p().nullable(),totalLinkingDomains:b().int(),lastSyncedAt:p().nullable()});w({projectId:p(),targetDomain:p(),sources:A(mO),anyConnected:le(),anyData:le()});w({duckdbInstalled:le(),duckdbVersion:p().nullable().optional(),duckdbSpec:p(),pluginDir:p()});w({installed:le(),version:p(),path:p(),alreadyPresent:le()});w({release:p(),vertexUrl:p(),edgesUrl:p(),vertexBytes:b().int().nullable(),edgesBytes:b().int().nullable(),lastModified:p().nullable()});w({release:p(),syncStatus:mp.nullable(),bytes:b().int(),lastUsedAt:p().nullable()});const hp=ae(["positive","caution","negative","neutral"]),Ka=w({label:p(),value:p(),delta:p(),tone:hp,description:p(),tooltip:p().optional(),trend:A(b()),progress:b().optional(),providerCoverage:p().optional()}),hO=Ka.extend({breakdown:w({projectMentionSnapshots:b().int().nonnegative(),competitorMentionSnapshots:b().int().nonnegative(),perCompetitor:A(w({domain:p(),mentionSnapshots:b().int().nonnegative(),shareOfCompetitiveTotal:b()})),snapshotsWithAnswerText:b().int().nonnegative(),snapshotsTotal:b().int().nonnegative()})}),cf=w({gained:b().int().nonnegative(),lost:b().int().nonnegative(),tone:hp,hasPreviousRun:le(),gainedQueries:A(p()).optional(),lostQueries:A(p()).optional()}),gO=w({hasPreviousRun:le(),comparable:le(),querySetChanged:le(),previousRunAt:p().nullable(),currentQueryCount:b().int().nonnegative(),previousQueryCount:b().int().nonnegative(),comparableQueryCount:b().int().nonnegative(),addedQueryCount:b().int().nonnegative(),removedQueryCount:b().int().nonnegative(),addedQueries:A(p()),removedQueries:A(p())}),yO=w({id:p(),projectId:p(),runId:p().nullable(),type:ae(["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:ae(["critical","high","medium","low"]),title:p(),query:p(),provider:p(),recommendation:w({action:p(),target:p().optional(),reason:p()}).optional(),cause:w({cause:p(),competitorDomain:p().optional(),details:p().optional()}).optional(),dismissed:le(),createdAt:p()}),bO=w({id:p(),projectId:p(),runId:p().nullable(),overallCitedRate:b(),overallMentionRate:b(),totalPairs:b().int().nonnegative(),citedPairs:b().int().nonnegative(),mentionedPairs:b().int().nonnegative(),providerBreakdown:lt(p(),w({citedRate:b(),mentionRate:b(),cited:b().int().nonnegative(),mentioned:b().int().nonnegative(),total:b().int().nonnegative()})),createdAt:p(),status:ae(["ready","no-data"]),reason:vt("no-runs-yet").optional()});w({project:LT,latestRun:OE,health:bO.nullable(),topInsights:A(yO),queryCounts:w({totalQueries:b().int().nonnegative(),citedQueries:b().int().nonnegative(),notCitedQueries:b().int().nonnegative(),citedRate:b(),mentionedQueries:b().int().nonnegative(),notMentionedQueries:b().int().nonnegative(),mentionRate:b()}),providers:A(w({provider:p(),citedRate:b(),cited:b().int().nonnegative(),total:b().int().nonnegative()})),transitions:w({since:p().nullable(),gained:b().int().nonnegative(),lost:b().int().nonnegative(),emerging:b().int().nonnegative()}),scores:w({mention:Ka,visibility:Ka,mentionShare:hO,gapQueries:Ka,mentionGaps:Ka,indexCoverage:Ka,competitorPressure:Ka,runStatus:Ka}),movementSummary:cf,citationMovement:cf,mentionMovement:cf,movementComparison:gO,competitors:A(w({id:p(),domain:p(),citationCount:b().int().nonnegative(),totalQueries:b().int().nonnegative(),pressureLabel:ae(["None","Low","Moderate","High"]),citedQueries:A(p())})),providerScores:A(w({provider:p(),model:p().nullable(),score:b(),cited:b().int().nonnegative(),total:b().int().nonnegative(),trend:A(b()).optional()})),attentionItems:A(w({id:p(),tone:hp,title:p(),detail:p(),actionLabel:p(),href:p()})),runHistory:A(w({runId:p(),createdAt:p(),citedCount:b().int().nonnegative(),totalCount:b().int().nonnegative(),citationRate:b(),mentionedCount:b().int().nonnegative(),mentionRate:b(),status:p()})),suggestedQueries:w({rows:A(w({query:p(),impressions:b(),clicks:b(),avgPosition:b(),reason:p()})),totalCandidates:b().int().nonnegative(),skippedAlreadyTracked:b().int().nonnegative()}),dateRangeLabel:p(),contextLabel:p()});ae(["snapshot","insight"]);const vO=w({kind:vt("snapshot"),id:p(),runId:p(),query:p(),provider:p(),model:p().nullable(),citationState:Ai,matchedField:ae(["answerText","citedDomains","searchQueries","query"]),snippet:p(),createdAt:p()}),SO=w({kind:vt("insight"),id:p(),runId:p().nullable(),type:ae(["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:ae(["critical","high","medium","low"]),title:p(),query:p(),provider:p(),matchedField:ae(["title","query","recommendation","cause"]),snippet:p(),dismissed:le(),createdAt:p()}),xO=p0("kind",[vO,SO]);w({query:p(),totalHits:b().int().nonnegative(),truncated:le(),hits:A(xO)});const D0=ae(["create","expand","refresh","add-schema"]);D0.enum;function kL(e){switch(e){case"create":return"Create";case"expand":return"Expand";case"refresh":return"Refresh";case"add-schema":return"Add schema"}}const R0=ae(["gsc","competitor-evidence","both"]);R0.enum;const M0=ae(["high","medium","low"]);M0.enum;const wO=ae(["blog-post","comparison","listicle","how-to","guide","glossary"]);wO.enum;const B0=ae(["proposed","briefed","payload-generated","draft-created","published","validated","dismissed"]);B0.enum;const gp=ae(["ownable","ceded"]);gp.enum;const jO=w({url:p(),gscImpressions:b().nonnegative(),gscClicks:b().nonnegative(),gscAvgPosition:b().nonnegative().nullable(),organicSessions:b().nonnegative()}),NO=w({domain:p(),url:p(),title:p(),citationCount:b().int().nonnegative()}),kO=w({demand:b(),competitor:b(),absence:b(),gapSeverity:b()}),AO=w({actionId:p(),state:B0,lastUpdated:p()}),L0=w({targetRef:p(),query:p(),action:D0,ourBestPage:jO.nullable(),winningCompetitor:NO.nullable(),score:b(),scoreBreakdown:kO,drivers:A(p()),demandSource:R0,actionConfidence:M0,existingAction:AO.nullable(),winnabilityClass:gp,winnability:b().min(0).max(1).nullable()});w({targets:A(L0),contextMetrics:w({totalAiReferralSessions:b().int().nonnegative(),latestRunId:p(),runTimestamp:p()})});const _O=w({targetRef:p(),addressedUrl:p().nullable(),note:p().nullable(),dismissedAt:p()});w({dismissals:A(_O)});w({targetRef:p().min(1),addressedUrl:p().url().optional(),note:p().max(500).optional()});w({targetRef:p(),promptVersion:p(),provider:p(),model:p(),responseText:p(),costMillicents:b().int().nonnegative(),generatedAt:p()});w({provider:p().optional(),model:p().optional(),forceRefresh:le().optional()});const CO=w({targetQuery:p().trim().min(1),winnabilityClass:gp,angle:p().trim().min(1),whyWinnable:p().trim().min(1),schemaHookup:p().trim().min(1),controllableSurfaceRationale:p().trim().min(1)});w({targetRef:p(),promptVersion:p(),provider:p(),model:p(),brief:CO,costMillicents:b().int().nonnegative(),generatedAt:p()});const zO=w({domain:p(),competitorType:vc,hits:b().int().nonnegative(),updatedAt:p()});w({classifications:A(zO)});const TO=w({uri:p(),title:p(),domain:p(),isOurDomain:le(),isCompetitor:le(),citationCount:b().int().nonnegative(),providers:A(ya)}),q0=w({query:p(),groundingSources:A(TO)});w({sources:A(q0),latestRunId:p()});const U0=w({query:p(),competitorDomains:A(p()),competitorCount:b().int().nonnegative(),missRate:b().min(0).max(1),lastSeenInRunId:p()});w({gaps:A(U0),latestRunId:p()});const $0=ae(["ok","warn","fail","skipped"]);$0.enum;const yp=ae(["global","project"]);yp.enum;const V0=ae(["auth","config","providers","integrations","database","schedules","agent"]);V0.enum;const EO=w({id:p(),category:V0,scope:yp,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(),Ln()).optional().describe("Structured context — principal email, redirect URI, missing scopes, etc. Stable per check id."),durationMs:b().int().nonnegative().describe("How long the check took to execute.")});w({scope:yp,project:p().nullable().describe('Project name when scope is "project", null otherwise.'),generatedAt:p().describe("ISO-8601 timestamp when this doctor run started."),durationMs:b().int().nonnegative(),summary:w({total:b().int().nonnegative(),ok:b().int().nonnegative(),warn:b().int().nonnegative(),fail:b().int().nonnegative(),skipped:b().int().nonnegative()}),checks:A(EO)});const OO=w({provider:p(),citationState:Ai,cited:le(),mentioned:le(),runId:p(),runCreatedAt:p()}),DO=w({queryId:p(),query:p(),providers:A(OO),citedCount:b().int().nonnegative(),mentionedCount:b().int().nonnegative(),totalProviders:b().int().nonnegative()}),RO=w({queryId:p(),query:p(),provider:p(),citingCompetitors:A(p()),runId:p(),runCreatedAt:p()}),MO=w({providersConfigured:b().int().nonnegative(),providersCiting:b().int().nonnegative(),providersMentioning:b().int().nonnegative(),totalQueries:b().int().nonnegative(),queriesCitedAndMentioned:b().int().nonnegative(),queriesCitedOnly:b().int().nonnegative(),queriesMentionedOnly:b().int().nonnegative(),queriesInvisible:b().int().nonnegative(),latestRunId:p().nullable(),latestRunAt:p().nullable()});w({summary:MO,byQuery:A(DO),competitorGaps:A(RO),status:ae(["ready","no-data"]),reason:ae(["no-runs-yet","no-queries"]).optional()});const AL=[7,14,30,90],_L=30;bc([vt(7),vt(14),vt(30),vt(90)]).describe("Report window in days (7, 14, 30, or 90). Defaults to 30 when omitted.");const BO=ae(["prompt","request-param","browser-geo","ignored"]),LO=w({label:p(),city:p(),region:p(),country:p(),otherConfiguredLabels:A(p())}),qO=w({provider:p(),treatment:BO,description:p()}),UO=w({generatedAt:p(),project:w({id:p(),name:p(),displayName:p(),canonicalDomain:p(),country:p(),language:p()}),location:LO.nullable(),providerLocationHandling:A(qO),periodStart:p().nullable(),periodEnd:p().nullable(),periodDays:b().int().positive()}),$O=w({citationRate:b(),citedQueryCount:b(),totalQueryCount:b(),mentionRate:b(),mentionedQueryCount:b(),trend:ae(["up","down","flat","unknown"]),queryCount:b(),competitorCount:b(),providerCount:b(),gsc:w({clicks:b(),impressions:b(),ctr:b(),avgPosition:b(),periodStart:p(),periodEnd:p()}).nullable(),ga:w({sessions:b(),users:b(),periodStart:p(),periodEnd:p()}).nullable(),findings:A(w({title:p(),detail:p(),tone:ae(["positive","caution","negative","neutral"])}))}),VO=w({citationState:ae(["cited","not-cited","pending"]),answerMentioned:le().nullable(),model:p().nullable()}),IO=w({queries:A(p()),providers:A(p()),matrix:A(A(VO.nullable())),providerRates:A(w({provider:p(),citedCount:b(),totalCount:b(),citationRate:b()}))}),PO=w({domain:p(),citationCount:b(),totalCount:b(),pressureLabel:ae(["High","Moderate","Low","None"]),citedQueries:A(p()),sharePct:b(),theirCitedPages:A(w({url:p(),citedFor:A(p())}))}),GO=w({projectCitationCount:b(),competitors:A(PO)}),HO=w({domain:p(),mentionCount:b(),totalCount:b(),pressureLabel:ae(["High","Moderate","Low","None"]),mentionedQueries:A(p()),sharePct:b()}),QO=w({projectMentionCount:b(),totalAnswerSnapshots:b(),competitors:A(HO)}),KO=w({category:p(),label:p(),count:b(),sharePct:b()}),ZO=w({categories:A(KO),topDomains:A(w({domain:p(),count:b(),isCompetitor:le()}))}),YO=w({query:p(),clicks:b(),impressions:b(),ctr:b(),avgPosition:b(),category:ae(["brand","lead-gen","industry","other"])}),XO=w({periodStart:p(),periodEnd:p(),totalClicks:b(),totalImpressions:b(),ctr:b(),avgPosition:b(),topQueries:A(YO),categoryBreakdown:A(w({category:ae(["brand","lead-gen","industry","other"]),clicks:b(),impressions:b(),sharePct:b()})),trend:A(w({date:p(),clicks:b(),impressions:b()})),trackedButNoGsc:A(p()),gscButNotTracked:A(p())}),JO=w({totalSessions:b(),totalUsers:b(),totalOrganicSessions:b(),periodStart:p(),periodEnd:p(),topLandingPages:A(w({page:p(),sessions:b(),users:b(),organicSessions:b()})),channelBreakdown:A(w({channel:p(),sessions:b(),sharePct:b()}))}),FO=w({totalSessions:b(),organicSessions:b(),paidSessions:b(),channels:A(w({channelGroup:p(),sessions:b(),sharePct:b()})),topCampaigns:A(w({source:p(),medium:p(),sessions:b()}))}),WO=w({totalSessions:b(),totalUsers:b(),bySource:A(w({source:p(),sessions:b(),users:b(),sharePct:b()})),trend:A(w({date:p(),sessions:b()})),topLandingPages:A(w({page:p(),sessions:b(),users:b()}))}),e4=w({windowStart:p(),windowEnd:p(),hasData:le(),verifiedCrawlerHits:w({current:b(),prior:b(),deltaPct:b().nullable()}),unverifiedCrawlerHits:w({current:b(),prior:b(),deltaPct:b().nullable()}),aiUserFetchHits:w({current:b(),prior:b(),deltaPct:b().nullable()}),referralArrivals:w({current:b(),prior:b(),deltaPct:b().nullable()}),byOperator:A(w({operator:p(),verifiedHits:b(),unverifiedHits:b(),userFetchHits:b(),referralArrivals:b(),deltaPct:b().nullable()})),topCrawledPaths:A(w({path:p(),verifiedHits:b(),distinctOperators:b()})),referralProducts:A(w({product:p(),arrivals:b(),distinctLandingPaths:b()})),dailyTrend:A(w({date:p(),verifiedCrawlerHits:b(),userFetchHits:b(),referralArrivals:b()})),topReferralLandingPaths:A(w({path:p(),arrivals:b(),distinctProducts:b()}))}),t4=w({provider:ae(["google","bing"]).nullable(),total:b(),indexed:b(),notIndexed:b(),deindexed:b(),unknown:b(),indexedPct:b()}),n4=w({runId:p(),date:p(),citationRate:b(),citedQueryCount:b(),totalQueryCount:b(),mentionRate:b(),mentionedQueryCount:b(),providerRates:A(w({provider:p(),citationRate:b()}))}),Ef=w({id:p(),type:ae(["regression","gain","opportunity"]),severity:ae(["critical","high","medium","low"]),title:p(),query:p(),provider:p(),recommendation:p().nullable(),createdAt:p(),instanceCount:b()}),a4=w({horizon:ae(["immediate","short-term","medium-term"]),title:p(),rationale:p()}),Zr=w({current:b(),prior:b(),deltaAbs:b(),deltaPct:b().nullable(),direction:ae(["up","down","flat"]),window:b().optional()}),i4=w({provider:p(),current:b(),prior:b(),deltaAbs:b(),direction:ae(["up","down","flat"])}),s4=w({enoughHistory:le(),headline:p(),citationRate:Zr.nullable(),mentionRate:Zr.nullable(),citedQueryCount:Zr.nullable(),gscClicksDelta:Zr.nullable(),aiReferralsDelta:Zr.nullable(),comparisonWindowDays:b().int().positive(),providerMovements:A(i4),wins:A(Ef),regressions:A(Ef)});ae(["agency","client"]);const r4=ae(["agency","client","both"]),o4=ae(["immediate","short-term","medium-term"]),l4=ae(["high","medium","low"]);ae(["positive","caution","negative","neutral"]);const c4=ae(["content","competitors","provider","search-demand","indexing","location","monitoring"]),bp=w({audience:r4,priority:b(),horizon:o4,category:c4,title:p(),action:p(),why:A(p()),evidence:A(p()),successMetric:p(),confidence:l4,targetRef:p().optional()}),u4=w({headline:p(),overview:p(),actionItems:A(bp),confidenceNotes:A(p())}),d4=w({title:p(),detail:p(),severity:ae(["positive","caution","negative","neutral"]),evidence:A(p())}),f4=w({priorities:A(bp),diagnostics:A(d4)});function CL(e){return e.horizon==="immediate"?"negative":e.confidence==="high"?"caution":e.confidence==="low"?"neutral":"caution"}function zL(e){switch(e){case"critical":return"Critical";case"high":return"High";case"medium":return"Medium";case"low":return"Low"}}function TL(e){switch(e){case"immediate":return"Immediate";case"short-term":return"Short term";case"medium-term":return"Medium term"}}function EL(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 OL(e){switch(e){case"high":return"High";case"medium":return"Medium";case"low":return"Low"}}w({meta:UO,executiveSummary:$O,citationScorecard:IO,competitorLandscape:GO,mentionLandscape:QO,aiSourceOrigin:ZO,gsc:XO.nullable(),ga:JO.nullable(),socialReferrals:FO.nullable(),aiReferrals:WO.nullable(),serverActivity:e4.nullable(),indexingHealth:t4.nullable(),citationsTrend:A(n4),whatsChanged:s4,insights:A(Ef),recommendedNextSteps:A(a4),actionPlan:A(bp),clientSummary:u4,agencyDiagnostics:f4,contentOpportunities:A(L0),contentGaps:A(U0),groundingSources:A(q0)});const p4=ae(["claude","codex"]);p4.enum;const m4=ae(["claude","codex","all"]);m4.enum;const I0=w({content:b().int().nonnegative(),sitemap:b().int().nonnegative(),robots:b().int().nonnegative(),asset:b().int().nonnegative(),other:b().int().nonnegative()}),h4=ae(["content","sitemap","robots","asset","other"]),vp=ae(["cloud-run","wordpress","cloudflare","vercel","generic-log"]);vp.enum;const g4=ae(["raw-request-events","aggregate-request-metrics","request-url","status-code","user-agent","remote-ip","referer","cursor-pull"]);g4.enum;const y4=ae(["raw-request","aggregate-bucket"]),b4=y4.enum,v4=ae(["observed","provider-aggregated","inferred"]),S4=v4.enum,x4=w({type:p().nullable(),labels:lt(p(),p())}),w4=w({sourceType:vp,evidenceKind:vt(b4["raw-request"]),confidence:vt(S4.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:b().int().nullable(),userAgent:p().nullable(),remoteIp:p().nullable(),referer:p().nullable(),latencyMs:b().nullable(),requestSizeBytes:b().int().nullable(),responseSizeBytes:b().int().nullable(),providerResource:x4,providerLabels:lt(p(),p())});w({events:A(w4),rawEntryCount:b().int().nonnegative(),skippedEntryCount:b().int().nonnegative(),nextPageToken:p().optional(),filter:p()});const P0=ae(["connected","paused","error","archived"]),DL=P0.enum,G0=ae(["oauth","service-account"]);G0.enum;const j4=ae(["verified","claimed_unverified","unknown_ai_like"]),RL=j4.enum;w({gcpProjectId:p().min(1),serviceName:p().nullable().optional(),location:p().nullable().optional(),authMode:G0});w({baseUrl:p().url(),username:p().min(1)});const Sp=ae(["production","preview"]);Sp.enum;w({projectId:p().min(1),teamId:p().min(1),environment:Sp});const H0=w({id:p(),projectId:p(),sourceType:vp,displayName:p(),status:P0,lastSyncedAt:p().nullable(),lastCursor:p().nullable(),lastError:p().nullable(),archivedAt:p().nullable(),config:lt(p(),Ln()),createdAt:p(),updatedAt:p()});w({gcpProjectId:p().min(1),serviceName:p().min(1).optional(),location:p().min(1).optional(),displayName:p().min(1).optional(),keyJson:p().optional()});w({baseUrl:p().url(),username:p().min(1),applicationPassword:p().min(1),displayName:p().min(1).optional()});w({projectId:p().min(1),teamId:p().min(1),token:p().min(1),environment:Sp.optional(),displayName:p().min(1).optional()});w({sourceId:p(),runId:p(),syncedAt:p(),pulledEvents:b().int().nonnegative(),selfTrafficExcluded:b().int().nonnegative(),crawlerHits:b().int().nonnegative(),aiUserFetchHits:b().int().nonnegative(),aiReferralHits:b().int().nonnegative(),unknownHits:b().int().nonnegative(),crawlerBucketRows:b().int().nonnegative(),aiUserFetchBucketRows:b().int().nonnegative(),aiReferralBucketRows:b().int().nonnegative(),sampleRows:b().int().nonnegative(),windowStart:p(),windowEnd:p()});w({days:b().int().positive().optional()});w({advanceToNow:vt(!0)});w({sourceId:p(),runId:p(),status:Ks,windowStart:p(),windowEnd:p(),daysRequested:b().int().positive(),daysApplied:b().int().positive()});const N4=w({crawlerHits:b().int().nonnegative(),crawlerContentHits:b().int().nonnegative(),crawlerInfraHits:b().int().nonnegative(),crawlerSegments:I0,aiUserFetchHits:b().int().nonnegative(),aiReferralHits:b().int().nonnegative(),sampleCount:b().int().nonnegative()});w({sources:A(H0)});const k4=H0.extend({totals24h:N4,latestRun:w({runId:p(),status:Ks,startedAt:p().nullable(),finishedAt:p().nullable(),error:p().nullable()}).nullable()});w({sources:A(k4)});const A4=ae(["crawler","ai-user-fetch","ai-referral"]),xp=A4.enum,_4=w({kind:vt(xp.crawler),sourceId:p(),tsHour:p(),botId:p(),operator:p(),verificationStatus:p(),pathNormalized:p(),pathClass:h4,status:b().int(),hits:b().int().nonnegative()}),C4=w({kind:vt(xp["ai-user-fetch"]),sourceId:p(),tsHour:p(),botId:p(),operator:p(),verificationStatus:p(),pathNormalized:p(),status:b().int(),hits:b().int().nonnegative()}),z4=w({kind:vt(xp["ai-referral"]),sourceId:p(),tsHour:p(),product:p(),operator:p(),sourceDomain:p(),evidenceType:p(),landingPathNormalized:p(),status:b().int(),hits:b().int().nonnegative()}),T4=p0("kind",[_4,C4,z4]);w({windowStart:p(),windowEnd:p(),totals:w({crawlerHits:b().int().nonnegative(),crawlerContentHits:b().int().nonnegative(),crawlerInfraHits:b().int().nonnegative(),crawlerSegments:I0,aiUserFetchHits:b().int().nonnegative(),aiReferralHits:b().int().nonnegative()}),events:A(T4)});w({apiKey:p().min(1)});w({connected:le(),adAccountId:p().nullable().optional(),displayName:p().nullable().optional(),currencyCode:p().nullable().optional(),timezone:p().nullable().optional(),status:p().nullable().optional(),lastSyncedAt:p().nullable().optional(),conversionTrackingConfigured:le().optional()});w({disconnected:le()});w({runId:p(),status:p()});const E4=w({type:p().nullable().optional(),title:p().nullable().optional(),body:p().nullable().optional(),targetUrl:p().nullable().optional()}),O4=w({id:p(),adGroupId:p(),name:p(),status:p(),reviewStatus:p().nullable().optional(),creative:E4.nullable().optional()}),D4=w({id:p(),campaignId:p(),name:p(),status:p(),billingEventType:p().nullable().optional(),maxBidMicros:b().int().nullable().optional(),contextHints:A(p()).default([]),ads:A(O4).default([])}),R4=w({id:p(),name:p(),status:p(),biddingType:p().nullable().optional(),dailySpendLimitMicros:b().int().nullable().optional(),lifetimeSpendLimitMicros:b().int().nullable().optional(),adGroups:A(D4).default([])});w({campaigns:A(R4)});const Q0=ae(["campaign","ad_group"]);Q0.enum;const M4=w({level:Q0,entityId:p(),date:p(),impressions:b().int(),clicks:b().int(),spendMicros:b().int(),conversions:b().int(),ctr:b().nullable(),cpcMicros:b().int().nullable()});w({rows:A(M4),currencyCode:p().nullable().optional()});const B4=w({impressions:b().int(),clicks:b().int(),spendMicros:b().int(),conversions:b().int(),ctr:b().nullable(),cpcMicros:b().int().nullable()});w({connected:le(),displayName:p().nullable().optional(),currencyCode:p().nullable().optional(),lastSyncedAt:p().nullable().optional(),campaignCount:b().int(),adGroupCount:b().int(),adCount:b().int(),window:w({from:p().nullable(),to:p().nullable()}),totals:B4});var L4=(e=>(e.Clicks="clicks",e.Impressions="impressions",e.CTR="ctr",e.Position="position",e))(L4||{});const ML={clicks:"Clicks",impressions:"Impressions",ctr:"CTR",position:"Position"},BL={clicks:"Clicks",impressions:"Impr",ctr:"CTR",position:"Pos"},LL=op;function q4(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 v=e.external.registry.get(d[0])?.id;if(n!==d[0]&&v){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 l0(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,v={...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,v),d._zod.parent===S)for(const k in g)k==="$ref"||k==="allOf"||k in v||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:ac(n,"input",e.processors),output:ac(n,"output",e.processors)}},enumerable:!1,writable:!1}),d}catch{throw new Error("Error converting schema to JSON.")}}function Gt(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 Gt(r.element,i);if(r.type==="set")return Gt(r.valueType,i);if(r.type==="lazy")return Gt(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 Gt(r.innerType,i);if(r.type==="intersection")return Gt(r.left,i)||Gt(r.right,i);if(r.type==="record"||r.type==="map")return Gt(r.keyType,i)||Gt(r.valueType,i);if(r.type==="pipe")return Gt(r.in,i)||Gt(r.out,i);if(r.type==="object"){for(const l in r.shape)if(Gt(r.shape[l],i))return!0;return!1}if(r.type==="union"){for(const l of r.options)if(Gt(l,i))return!0;return!1}if(r.type==="tuple"){for(const l of r.items)if(Gt(l,i))return!0;return!!(r.rest&&Gt(r.rest,i))}return!1}const XC=(e,n={})=>i=>{const r=r0({...i,processors:n});return At(e,r),o0(r,e),l0(r,e)},ac=(e,n,i={})=>r=>{const{libraryOptions:l,target:c}=r??{},d=r0({...l??{},target:c,io:n,processors:i});return At(e,d),o0(d,e),l0(d,e)},JC={guid:"uuid",url:"uri",datetime:"date-time",json_string:"json-string",regex:""},FC=(e,n,i,r)=>{const l=i;l.type="string";const{minimum:c,maximum:d,format:h,patterns:g,contentEncoding:v}=e._zod.bag;if(typeof c=="number"&&(l.minLength=c),typeof d=="number"&&(l.maxLength=d),h&&(l.format=JC[h]??h,l.format===""&&delete l.format,h==="time"&&delete l.format),v&&(l.contentEncoding=v),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}))])}},WC=(e,n,i,r)=>{const l=i,{minimum:c,maximum:d,format:h,multipleOf:g,exclusiveMaximum:v,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 v=="number"&&(n.target==="draft-04"||n.target==="openapi-3.0"?(l.maximum=v,l.exclusiveMaximum=!0):l.exclusiveMaximum=v),typeof d=="number"&&(l.maximum=d,typeof v=="number"&&n.target!=="draft-04"&&(v<=d?delete l.maximum:delete l.exclusiveMaximum)),typeof g=="number"&&(l.multipleOf=g)},ez=(e,n,i,r)=>{i.type="boolean"},tz=(e,n,i,r)=>{i.not={}},nz=(e,n,i,r)=>{},az=(e,n,i,r)=>{const l=e._zod.def,c=Uv(l.entries);c.every(d=>typeof d=="number")&&(i.type="number"),c.every(d=>typeof d=="string")&&(i.type="string"),i.enum=c},iz=(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},sz=(e,n,i,r)=>{if(n.unrepresentable==="throw")throw new Error("Custom types cannot be represented in JSON Schema")},rz=(e,n,i,r)=>{if(n.unrepresentable==="throw")throw new Error("Transforms cannot be represented in JSON Schema")},oz=(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=At(c.element,n,{...r,path:[...r.path,"items"]})},lz=(e,n,i,r)=>{const l=i,c=e._zod.def;l.type="object",l.properties={};const d=c.shape;for(const v in d)l.properties[v]=At(d[v],n,{...r,path:[...r.path,"properties",v]});const h=new Set(Object.keys(d)),g=new Set([...h].filter(v=>{const S=c.shape[v]._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=At(c.catchall,n,{...r,path:[...r.path,"additionalProperties"]})):n.io==="output"&&(l.additionalProperties=!1)},cz=(e,n,i,r)=>{const l=e._zod.def,c=l.inclusive===!1,d=l.options.map((h,g)=>At(h,n,{...r,path:[...r.path,c?"oneOf":"anyOf",g]}));c?i.oneOf=d:i.anyOf=d},uz=(e,n,i,r)=>{const l=e._zod.def,c=At(l.left,n,{...r,path:[...r.path,"allOf",0]}),d=At(l.right,n,{...r,path:[...r.path,"allOf",1]}),h=v=>"allOf"in v&&Object.keys(v).length===1,g=[...h(c)?c.allOf:[c],...h(d)?d.allOf:[d]];i.allOf=g},dz=(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=At(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=At(c.keyType,n,{...r,path:[...r.path,"propertyNames"]})),l.additionalProperties=At(c.valueType,n,{...r,path:[...r.path,"additionalProperties"]});const v=d._zod.values;if(v){const S=[...v].filter(x=>typeof x=="string"||typeof x=="number");S.length>0&&(l.required=S)}},fz=(e,n,i,r)=>{const l=e._zod.def,c=At(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"}]},pz=(e,n,i,r)=>{const l=e._zod.def;At(l.innerType,n,r);const c=n.seen.get(e);c.ref=l.innerType},mz=(e,n,i,r)=>{const l=e._zod.def;At(l.innerType,n,r);const c=n.seen.get(e);c.ref=l.innerType,i.default=JSON.parse(JSON.stringify(l.defaultValue))},hz=(e,n,i,r)=>{const l=e._zod.def;At(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)))},gz=(e,n,i,r)=>{const l=e._zod.def;At(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},yz=(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;At(c,n,r);const d=n.seen.get(e);d.ref=c},bz=(e,n,i,r)=>{const l=e._zod.def;At(l.innerType,n,r);const c=n.seen.get(e);c.ref=l.innerType,i.readOnly=!0},c0=(e,n,i,r)=>{const l=e._zod.def;At(l.innerType,n,r);const c=n.seen.get(e);c.ref=l.innerType},vz=Q("ZodISODateTime",(e,n)=>{S_.init(e,n),ft.init(e,n)});function Sz(e){return AC(vz,e)}const xz=Q("ZodISODate",(e,n)=>{x_.init(e,n),ft.init(e,n)});function wz(e){return _C(xz,e)}const jz=Q("ZodISOTime",(e,n)=>{w_.init(e,n),ft.init(e,n)});function Nz(e){return CC(jz,e)}const kz=Q("ZodISODuration",(e,n)=>{j_.init(e,n),ft.init(e,n)});function Az(e){return zC(kz,e)}const _z=(e,n)=>{Pv.init(e,n),e.name="ZodError",Object.defineProperties(e,{format:{value:i=>p2(e,i)},flatten:{value:i=>f2(e,i)},addIssue:{value:i=>{e.issues.push(i),e.message=JSON.stringify(e.issues,Af,2)}},addIssues:{value:i=>{e.issues.push(...i),e.message=JSON.stringify(e.issues,Af,2)}},isEmpty:{get(){return e.issues.length===0}}})},zn=Q("ZodError",_z,{Parent:Error}),Cz=np(zn),zz=ap(zn),Tz=hc(zn),Ez=gc(zn),Oz=g2(zn),Dz=y2(zn),Rz=b2(zn),Mz=v2(zn),Bz=S2(zn),Lz=x2(zn),qz=w2(zn),Uz=j2(zn),dt=Q("ZodType",(e,n)=>(ut.init(e,n),Object.assign(e["~standard"],{jsonSchema:{input:ac(e,"input"),output:ac(e,"output")}}),e.toJSONSchema=XC(e,{}),e.def=n,e.type=n.type,Object.defineProperty(e,"_def",{value:n}),e.check=(...i)=>e.clone(Wa(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)=>ei(e,i,r),e.brand=()=>e,e.register=((i,r)=>(i.add(e,r),e)),e.parse=(i,r)=>Cz(e,i,r,{callee:e.parse}),e.safeParse=(i,r)=>Tz(e,i,r),e.parseAsync=async(i,r)=>zz(e,i,r,{callee:e.parseAsync}),e.safeParseAsync=async(i,r)=>Ez(e,i,r),e.spa=e.safeParseAsync,e.encode=(i,r)=>Oz(e,i,r),e.decode=(i,r)=>Dz(e,i,r),e.encodeAsync=async(i,r)=>Rz(e,i,r),e.decodeAsync=async(i,r)=>Mz(e,i,r),e.safeEncode=(i,r)=>Bz(e,i,r),e.safeDecode=(i,r)=>Lz(e,i,r),e.safeEncodeAsync=async(i,r)=>qz(e,i,r),e.safeDecodeAsync=async(i,r)=>Uz(e,i,r),e.refine=(i,r)=>e.check(OT(i,r)),e.superRefine=i=>e.check(DT(i)),e.overwrite=i=>e.check(Hs(i)),e.optional=()=>bb(e),e.exactOptional=()=>vT(e),e.nullable=()=>vb(e),e.nullish=()=>bb(vb(e)),e.nonoptional=i=>kT(e,i),e.array=()=>A(e),e.or=i=>bc([e,i]),e.and=i=>pT(e,i),e.transform=i=>Sb(e,yT(i)),e.default=i=>wT(e,i),e.prefault=i=>NT(e,i),e.catch=i=>_T(e,i),e.pipe=i=>Sb(e,i),e.readonly=()=>TT(e),e.describe=i=>{const r=e.clone();return Wr.add(r,{description:i}),r},Object.defineProperty(e,"description",{get(){return Wr.get(e)?.description},configurable:!0}),e.meta=(...i)=>{if(i.length===0)return Wr.get(e);const r=e.clone();return Wr.add(r,i[0]),r},e.isOptional=()=>e.safeParse(void 0).success,e.isNullable=()=>e.safeParse(null).success,e.apply=i=>i(e),e)),u0=Q("_ZodString",(e,n)=>{ip.init(e,n),dt.init(e,n),e._zod.processJSONSchema=(r,l,c)=>FC(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(MC(...r)),e.includes=(...r)=>e.check(qC(...r)),e.startsWith=(...r)=>e.check(UC(...r)),e.endsWith=(...r)=>e.check($C(...r)),e.min=(...r)=>e.check(nc(...r)),e.max=(...r)=>e.check(i0(...r)),e.length=(...r)=>e.check(s0(...r)),e.nonempty=(...r)=>e.check(nc(1,...r)),e.lowercase=r=>e.check(BC(r)),e.uppercase=r=>e.check(LC(r)),e.trim=()=>e.check(IC()),e.normalize=(...r)=>e.check(VC(...r)),e.toLowerCase=()=>e.check(PC()),e.toUpperCase=()=>e.check(GC()),e.slugify=()=>e.check(HC())}),$z=Q("ZodString",(e,n)=>{ip.init(e,n),u0.init(e,n),e.email=i=>e.check(sC(Vz,i)),e.url=i=>e.check(uC(Iz,i)),e.jwt=i=>e.check(kC(aT,i)),e.emoji=i=>e.check(dC(Pz,i)),e.guid=i=>e.check(fb(gb,i)),e.uuid=i=>e.check(rC(Ul,i)),e.uuidv4=i=>e.check(oC(Ul,i)),e.uuidv6=i=>e.check(lC(Ul,i)),e.uuidv7=i=>e.check(cC(Ul,i)),e.nanoid=i=>e.check(fC(Gz,i)),e.guid=i=>e.check(fb(gb,i)),e.cuid=i=>e.check(pC(Hz,i)),e.cuid2=i=>e.check(mC(Qz,i)),e.ulid=i=>e.check(hC(Kz,i)),e.base64=i=>e.check(wC(eT,i)),e.base64url=i=>e.check(jC(tT,i)),e.xid=i=>e.check(gC(Zz,i)),e.ksuid=i=>e.check(yC(Yz,i)),e.ipv4=i=>e.check(bC(Xz,i)),e.ipv6=i=>e.check(vC(Jz,i)),e.cidrv4=i=>e.check(SC(Fz,i)),e.cidrv6=i=>e.check(xC(Wz,i)),e.e164=i=>e.check(NC(nT,i)),e.datetime=i=>e.check(Sz(i)),e.date=i=>e.check(wz(i)),e.time=i=>e.check(Nz(i)),e.duration=i=>e.check(Az(i))});function p(e){return iC($z,e)}const ft=Q("ZodStringFormat",(e,n)=>{ct.init(e,n),u0.init(e,n)}),Vz=Q("ZodEmail",(e,n)=>{d_.init(e,n),ft.init(e,n)}),gb=Q("ZodGUID",(e,n)=>{c_.init(e,n),ft.init(e,n)}),Ul=Q("ZodUUID",(e,n)=>{u_.init(e,n),ft.init(e,n)}),Iz=Q("ZodURL",(e,n)=>{f_.init(e,n),ft.init(e,n)}),Pz=Q("ZodEmoji",(e,n)=>{p_.init(e,n),ft.init(e,n)}),Gz=Q("ZodNanoID",(e,n)=>{m_.init(e,n),ft.init(e,n)}),Hz=Q("ZodCUID",(e,n)=>{h_.init(e,n),ft.init(e,n)}),Qz=Q("ZodCUID2",(e,n)=>{g_.init(e,n),ft.init(e,n)}),Kz=Q("ZodULID",(e,n)=>{y_.init(e,n),ft.init(e,n)}),Zz=Q("ZodXID",(e,n)=>{b_.init(e,n),ft.init(e,n)}),Yz=Q("ZodKSUID",(e,n)=>{v_.init(e,n),ft.init(e,n)}),Xz=Q("ZodIPv4",(e,n)=>{N_.init(e,n),ft.init(e,n)}),Jz=Q("ZodIPv6",(e,n)=>{k_.init(e,n),ft.init(e,n)}),Fz=Q("ZodCIDRv4",(e,n)=>{A_.init(e,n),ft.init(e,n)}),Wz=Q("ZodCIDRv6",(e,n)=>{__.init(e,n),ft.init(e,n)}),eT=Q("ZodBase64",(e,n)=>{C_.init(e,n),ft.init(e,n)}),tT=Q("ZodBase64URL",(e,n)=>{T_.init(e,n),ft.init(e,n)}),nT=Q("ZodE164",(e,n)=>{E_.init(e,n),ft.init(e,n)}),aT=Q("ZodJWT",(e,n)=>{D_.init(e,n),ft.init(e,n)}),d0=Q("ZodNumber",(e,n)=>{Wv.init(e,n),dt.init(e,n),e._zod.processJSONSchema=(r,l,c)=>WC(e,r,l),e.gt=(r,l)=>e.check(mb(r,l)),e.gte=(r,l)=>e.check(of(r,l)),e.min=(r,l)=>e.check(of(r,l)),e.lt=(r,l)=>e.check(pb(r,l)),e.lte=(r,l)=>e.check(rf(r,l)),e.max=(r,l)=>e.check(rf(r,l)),e.int=r=>e.check(yb(r)),e.safe=r=>e.check(yb(r)),e.positive=r=>e.check(mb(0,r)),e.nonnegative=r=>e.check(of(0,r)),e.negative=r=>e.check(pb(0,r)),e.nonpositive=r=>e.check(rf(0,r)),e.multipleOf=(r,l)=>e.check(hb(r,l)),e.step=(r,l)=>e.check(hb(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 b(e){return TC(d0,e)}const iT=Q("ZodNumberFormat",(e,n)=>{R_.init(e,n),d0.init(e,n)});function yb(e){return EC(iT,e)}const sT=Q("ZodBoolean",(e,n)=>{M_.init(e,n),dt.init(e,n),e._zod.processJSONSchema=(i,r,l)=>ez(e,i,r)});function le(e){return OC(sT,e)}const rT=Q("ZodUnknown",(e,n)=>{B_.init(e,n),dt.init(e,n),e._zod.processJSONSchema=(i,r,l)=>nz()});function Ln(){return DC(rT)}const oT=Q("ZodNever",(e,n)=>{L_.init(e,n),dt.init(e,n),e._zod.processJSONSchema=(i,r,l)=>tz(e,i,r)});function lT(e){return RC(oT,e)}const cT=Q("ZodArray",(e,n)=>{q_.init(e,n),dt.init(e,n),e._zod.processJSONSchema=(i,r,l)=>oz(e,i,r,l),e.element=n.element,e.min=(i,r)=>e.check(nc(i,r)),e.nonempty=i=>e.check(nc(1,i)),e.max=(i,r)=>e.check(i0(i,r)),e.length=(i,r)=>e.check(s0(i,r)),e.unwrap=()=>e.element});function A(e,n){return QC(cT,e,n)}const uT=Q("ZodObject",(e,n)=>{$_.init(e,n),dt.init(e,n),e._zod.processJSONSchema=(i,r,l)=>lz(e,i,r,l),Pe(e,"shape",()=>n.shape),e.keyof=()=>ae(Object.keys(e._zod.def.shape)),e.catchall=i=>e.clone({...e._zod.def,catchall:i}),e.passthrough=()=>e.clone({...e._zod.def,catchall:Ln()}),e.loose=()=>e.clone({...e._zod.def,catchall:Ln()}),e.strict=()=>e.clone({...e._zod.def,catchall:lT()}),e.strip=()=>e.clone({...e._zod.def,catchall:void 0}),e.extend=i=>o2(e,i),e.safeExtend=i=>l2(e,i),e.merge=i=>c2(e,i),e.pick=i=>s2(e,i),e.omit=i=>r2(e,i),e.partial=(...i)=>u2(m0,e,i[0]),e.required=(...i)=>d2(h0,e,i[0])});function w(e,n){const i={type:"object",shape:e??{},...ye(n)};return new uT(i)}const f0=Q("ZodUnion",(e,n)=>{n0.init(e,n),dt.init(e,n),e._zod.processJSONSchema=(i,r,l)=>cz(e,i,r,l),e.options=n.options});function bc(e,n){return new f0({type:"union",options:e,...ye(n)})}const dT=Q("ZodDiscriminatedUnion",(e,n)=>{f0.init(e,n),V_.init(e,n)});function p0(e,n,i){return new dT({type:"union",options:n,discriminator:e,...ye(i)})}const fT=Q("ZodIntersection",(e,n)=>{I_.init(e,n),dt.init(e,n),e._zod.processJSONSchema=(i,r,l)=>uz(e,i,r,l)});function pT(e,n){return new fT({type:"intersection",left:e,right:n})}const mT=Q("ZodRecord",(e,n)=>{P_.init(e,n),dt.init(e,n),e._zod.processJSONSchema=(i,r,l)=>dz(e,i,r,l),e.keyType=n.keyType,e.valueType=n.valueType});function lt(e,n,i){return new mT({type:"record",keyType:e,valueType:n,...ye(i)})}const Cf=Q("ZodEnum",(e,n)=>{G_.init(e,n),dt.init(e,n),e._zod.processJSONSchema=(r,l,c)=>az(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 Cf({...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 Cf({...n,checks:[],...ye(l),entries:c})}});function ae(e,n){const i=Array.isArray(e)?Object.fromEntries(e.map(r=>[r,r])):e;return new Cf({type:"enum",entries:i,...ye(n)})}const hT=Q("ZodLiteral",(e,n)=>{H_.init(e,n),dt.init(e,n),e._zod.processJSONSchema=(i,r,l)=>iz(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 vt(e,n){return new hT({type:"literal",values:Array.isArray(e)?e:[e],...ye(n)})}const gT=Q("ZodTransform",(e,n)=>{Q_.init(e,n),dt.init(e,n),e._zod.processJSONSchema=(i,r,l)=>rz(e,i),e._zod.parse=(i,r)=>{if(r.direction==="backward")throw new Lv(e.constructor.name);i.addIssue=c=>{if(typeof c=="string")i.issues.push(so(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(so(d))}};const l=n.transform(i.value,i);return l instanceof Promise?l.then(c=>(i.value=c,i)):(i.value=l,i)}});function yT(e){return new gT({type:"transform",transform:e})}const m0=Q("ZodOptional",(e,n)=>{a0.init(e,n),dt.init(e,n),e._zod.processJSONSchema=(i,r,l)=>c0(e,i,r,l),e.unwrap=()=>e._zod.def.innerType});function bb(e){return new m0({type:"optional",innerType:e})}const bT=Q("ZodExactOptional",(e,n)=>{K_.init(e,n),dt.init(e,n),e._zod.processJSONSchema=(i,r,l)=>c0(e,i,r,l),e.unwrap=()=>e._zod.def.innerType});function vT(e){return new bT({type:"optional",innerType:e})}const ST=Q("ZodNullable",(e,n)=>{Z_.init(e,n),dt.init(e,n),e._zod.processJSONSchema=(i,r,l)=>fz(e,i,r,l),e.unwrap=()=>e._zod.def.innerType});function vb(e){return new ST({type:"nullable",innerType:e})}const xT=Q("ZodDefault",(e,n)=>{Y_.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.removeDefault=e.unwrap});function wT(e,n){return new xT({type:"default",innerType:e,get defaultValue(){return typeof n=="function"?n():Vv(n)}})}const jT=Q("ZodPrefault",(e,n)=>{X_.init(e,n),dt.init(e,n),e._zod.processJSONSchema=(i,r,l)=>hz(e,i,r,l),e.unwrap=()=>e._zod.def.innerType});function NT(e,n){return new jT({type:"prefault",innerType:e,get defaultValue(){return typeof n=="function"?n():Vv(n)}})}const h0=Q("ZodNonOptional",(e,n)=>{J_.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 kT(e,n){return new h0({type:"nonoptional",innerType:e,...ye(n)})}const AT=Q("ZodCatch",(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,e.removeCatch=e.unwrap});function _T(e,n){return new AT({type:"catch",innerType:e,catchValue:typeof n=="function"?n:()=>n})}const CT=Q("ZodPipe",(e,n)=>{W_.init(e,n),dt.init(e,n),e._zod.processJSONSchema=(i,r,l)=>yz(e,i,r,l),e.in=n.in,e.out=n.out});function Sb(e,n){return new CT({type:"pipe",in:e,out:n})}const zT=Q("ZodReadonly",(e,n)=>{eC.init(e,n),dt.init(e,n),e._zod.processJSONSchema=(i,r,l)=>bz(e,i,r,l),e.unwrap=()=>e._zod.def.innerType});function TT(e){return new zT({type:"readonly",innerType:e})}const ET=Q("ZodCustom",(e,n)=>{tC.init(e,n),dt.init(e,n),e._zod.processJSONSchema=(i,r,l)=>sz(e,i)});function OT(e,n={}){return KC(ET,e,n)}function DT(e){return ZC(e)}const g0=w({id:p(),name:p(),keyPrefix:p(),scopes:A(p()),readOnly:le(),createdAt:p(),lastUsedAt:p().nullable(),revokedAt:p().nullable()});w({keys:A(g0)});w({name:p().min(1).max(100),scopes:A(p()).min(1).optional()});g0.extend({key:p()});const RT=w({maxConcurrency:b().int().positive(),maxRequestsPerMinute:b().int().positive(),maxRequestsPerDay:b().int().positive()}),ya=p().min(1);p().min(1);const sp=w({label:p().min(1),city:p().min(1),region:p().min(1),country:p().length(2),timezone:p().optional()}),rp=ae(["citation.lost","citation.gained","run.completed","run.failed","insight.critical","insight.high"]);w({id:p(),projectId:p(),channel:vt("webhook"),url:p().url(),urlDisplay:p(),urlHost:p(),events:A(rp),enabled:le().default(!0),source:p().optional(),webhookSecret:p().optional(),createdAt:p(),updatedAt:p()});w({channel:vt("webhook"),url:p().url(),events:A(rp).min(1),source:p().optional()});const y0=ae(["cli","api","config-file"]);function MT(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 BT(e,n){return n?e.some(i=>i.label===n):!0}w({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(sp).optional(),defaultLocation:p().nullable().optional(),autoExtractBacklinks:le().optional(),configSource:y0.optional()});const LT=w({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(sp).default([]),defaultLocation:p().nullable().optional(),autoExtractBacklinks:le().default(!1),configSource:y0.default("cli"),configRevision:b().int().positive().default(1),createdAt:p().optional(),updatedAt:p().optional()});w({id:p(),query:p(),createdAt:p()});w({id:p(),keyword:p(),createdAt:p()});w({queries:A(p().trim().min(1)).min(1)});w({keywords:A(p().trim().min(1)).min(1)});w({provider:ya,count:b().int().min(1).max(20).optional()});w({id:p(),domain:p(),createdAt:p()});w({competitors:A(p().trim().min(1)).min(1)});function ic(e){let n=e.trim().toLowerCase();try{n.includes("://")&&(n=new URL(n).hostname.toLowerCase())}catch{}return n.replace(/^www\./,"")}const qT=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 UT(e){const n=ic(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 qT.has(l)?r.length>=3?r.slice(-3).join("."):"":r.slice(-2).join(".")}function $T(e){const n=UT(e);return n?n.split(".")[0]??"":""}function VT(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=ic(c);i.has(d)||(i.add(d),r.push(c))}return r}const IT=w({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({})}),PT=w({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(),GT=w({channel:vt("webhook"),url:p().url(),events:A(rp).min(1)}),HT=w({gsc:w({propertyUrl:p()}).optional(),syncSchedule:w({preset:p().optional(),cron:p().optional()}).optional()}).optional(),xb=A(p().min(1)),QT=w({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:xb.optional(),keywords:xb.optional(),competitors:A(p().min(1)).optional().default([]),providers:A(ya).optional().default([]),locations:A(sp).optional().default([]),defaultLocation:p().optional(),schedule:PT,notifications:A(GT).optional().default([]),google:HT,autoExtractBacklinks:le().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=MT(e.locations);i.length>0&&n.addIssue({code:"custom",message:`Duplicate location labels are not allowed: ${i.join(", ")}`,path:["locations"]}),BT(e.locations,e.defaultLocation)||n.addIssue({code:"custom",message:`defaultLocation "${e.defaultLocation}" must match a configured location label`,path:["defaultLocation"]})});w({apiVersion:vt("canonry/v1"),kind:vt("Project"),metadata:IT,spec:QT});const KT=ae(["gsc","ga4","gbp"]);w({id:p(),domain:p(),connectionType:KT,propertyId:p().nullable().optional(),sitemapUrl:p().nullable().optional(),scopes:A(p()).default([]),createdAt:p(),updatedAt:p()});w({date:p(),query:p(),page:p(),country:p().nullable().optional(),device:p().nullable().optional(),clicks:b(),impressions:b(),ctr:b(),position:b()});const ZT=w({date:p(),clicks:b(),impressions:b(),ctr:b()});w({totals:w({clicks:b(),impressions:b(),ctr:b(),days:b()}),daily:A(ZT)});const zf=w({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:le().nullable().optional(),richResults:A(p()).default([]),referringUrls:A(p()).default([]),inspectedAt:p()});ae(["stable","reindexed","deindexed","still-missing","new"]);const YT=w({url:p(),previousState:p().nullable(),currentState:p().nullable(),transitionDate:p()}),XT=w({reason:p(),count:b(),urls:A(zf).default([])});w({summary:w({total:b(),indexed:b(),notIndexed:b(),deindexed:b(),percentage:b()}),lastInspectedAt:p().nullable(),lastSyncedAt:p().nullable(),indexed:A(zf).default([]),notIndexed:A(zf).default([]),deindexed:A(YT).default([]),reasonGroups:A(XT).default([])});w({url:p(),type:ae(["URL_UPDATED","URL_DELETED"]),notifiedAt:p()});const JT=w({url:p(),type:ae(["URL_UPDATED","URL_DELETED"]),notifiedAt:p(),status:ae(["success","error"]),error:p().optional()});w({summary:w({total:b().int().nonnegative(),succeeded:b().int().nonnegative(),failed:b().int().nonnegative()}),results:A(JT).default([])});w({date:p(),indexed:b(),notIndexed:b(),reasonBreakdown:lt(p(),b()).default({})});const FT=w({siteUrl:p(),permissionLevel:p()});w({sites:A(FT).default([])});const WT=w({type:p(),submitted:p(),indexed:p()}),eE=w({path:p(),lastSubmitted:p().optional(),isPending:le().optional(),isSitemapsIndex:le().optional(),type:p().optional(),lastDownloaded:p().optional(),warnings:p().optional(),errors:p().optional(),contents:A(WT).optional()});w({sitemaps:A(eE).default([])});const tE=w({name:p(),accountName:p().nullable(),type:p().nullable(),role:p().nullable()});w({accounts:A(tE),total:b().int().nonnegative()});const nE=w({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(),Ln()).nullable(),regularHours:lt(p(),Ln()).nullable(),primaryPhone:p().nullable(),openStatus:p().nullable(),openingDate:p().nullable(),selected:le(),syncedAt:p().nullable(),createdAt:p(),updatedAt:p()});w({locations:A(nE),totalDiscovered:b().int().nonnegative(),totalSelected:b().int().nonnegative()});w({selectAllNew:le().default(!0),accountName:p().optional(),switchAccount:le().default(!1)});w({selected:le()});w({locationNames:A(p()).optional(),daysOfMetrics:b().int().positive().max(540).optional(),monthsOfKeywords:b().int().positive().max(18).optional()});w({runId:p(),status:p()});const aE=w({locationName:p(),date:p(),metric:p(),value:b().int()});w({metrics:A(aE),total:b().int().nonnegative()});const iE=w({locationName:p(),periodStart:p(),periodEnd:p(),keyword:p(),valueCount:b().int().nullable(),valueThreshold:b().int().nullable()});w({keywords:A(iE),total:b().int().nonnegative(),thresholdedPct:b().int().min(0).max(100)});const sE=w({locationName:p(),placeActionLinkName:p(),placeActionType:p(),uri:p().nullable(),isPreferred:le(),providerType:p().nullable()});w({placeActions:A(sE),total:b().int().nonnegative()});const rE=w({locationName:p(),populatedGroupCount:b().int().nonnegative(),syncedAt:p(),attributes:lt(p(),Ln())});w({lodging:A(rE),total:b().int().nonnegative()});const oE=w({name:p(),valueType:p(),values:A(bc([le(),p()])),unsetValues:A(p()),uris:A(p())}),lE=w({locationName:p(),attributeCount:b().int().nonnegative(),syncedAt:p(),attributes:A(oE)});w({attributes:A(lE),total:b().int().nonnegative()});const cE=w({locationName:p(),placeId:p(),tier:p(),amenities:A(p()),syncedAt:p(),place:lt(p(),Ln())});w({places:A(cE),total:b().int().nonnegative()});w({scope:w({locationName:p().nullable(),locationCount:b().int().nonnegative()}),performance:w({totals:lt(p(),b()),recent7d:lt(p(),b()),prior7d:lt(p(),b()),deltaPct:lt(p(),b().nullable())}),freshness:w({dataThroughDate:p().nullable(),latestStoredDate:p().nullable(),pendingDays:b().int().nonnegative()}),timeseries:A(w({date:p(),pending:le(),metrics:lt(p(),b())})),keywords:w({total:b().int().nonnegative(),thresholdedCount:b().int().nonnegative(),thresholdedPct:b().int().min(0).max(100)}),placeActions:w({total:b().int().nonnegative(),hasReservationCta:le(),hasBookingCta:le(),hasDirectMerchantCta:le()}),lodging:w({lodgingLocationCount:b().int().nonnegative(),populatedLodgingCount:b().int().nonnegative(),emptyLodgingCount:b().int().nonnegative()}),profileCompleteness:w({locationCount:b().int().nonnegative(),withSecondaryCategories:b().int().nonnegative(),secondaryCategoryTotal:b().int().nonnegative(),withDescription:b().int().nonnegative(),withServiceArea:b().int().nonnegative(),withHours:b().int().nonnegative(),withPrimaryPhone:b().int().nonnegative(),permanentlyClosed:b().int().nonnegative(),temporarilyClosed:b().int().nonnegative()})});const uE={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 dE(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 jL(e){return uE[e]??dE(e)}const fE=["BUSINESS_DIRECTION_REQUESTS","WEBSITE_CLICKS","CALL_CLICKS"],pE=["BUSINESS_IMPRESSIONS_DESKTOP_SEARCH","BUSINESS_IMPRESSIONS_MOBILE_SEARCH","BUSINESS_IMPRESSIONS_DESKTOP_MAPS","BUSINESS_IMPRESSIONS_MOBILE_MAPS"];function NL(e){return fE.includes(e)?"conversion":pE.includes(e)?"reach":"other"}w({id:p(),domain:p(),siteUrl:p().nullable().optional(),createdAt:p(),updatedAt:p()});const lf=w({id:p(),url:p(),httpCode:b().nullable().optional(),inIndex:le().nullable().optional(),lastCrawledDate:p().nullable().optional(),inIndexDate:p().nullable().optional(),inspectedAt:p(),documentSize:b().nullable().optional(),anchorCount:b().nullable().optional(),discoveryDate:p().nullable().optional()});w({summary:w({total:b(),indexed:b(),notIndexed:b(),unknown:b().optional(),percentage:b()}),lastInspectedAt:p().nullable(),indexed:A(lf).default([]),notIndexed:A(lf).default([]),unknown:A(lf).default([]).optional()});w({query:p(),impressions:b(),clicks:b(),ctr:b(),averagePosition:b()});w({date:p(),indexed:b(),notIndexed:b(),unknown:b()});const mE=w({url:p(),status:ae(["success","error"]),submittedAt:p(),error:p().optional()});w({summary:w({total:b().int().nonnegative(),succeeded:b().int().nonnegative(),failed:b().int().nonnegative()}),results:A(mE).default([])});const b0=w({url:p(),verified:le()});w({sites:A(b0).default([])});w({connected:le(),domain:p(),siteUrl:p().nullable(),createdAt:p().nullable(),updatedAt:p().nullable()});w({connected:le(),domain:p(),siteUrl:p().nullable(),availableSites:A(b0).default([])});w({siteUrl:p()});const hE=w({name:p(),alive:le(),lastUsed:p().nullable()});w({connected:le(),endpoint:p(),version:p().optional(),browserVersion:p().optional(),targets:A(hE).default([])});const Qs=ae(["live","staging"]);w({projectName:p(),url:p(),stagingUrl:p().optional(),username:p(),defaultEnv:Qs,createdAt:p(),updatedAt:p()});const wb=w({url:p(),reachable:le(),pageCount:b().nullable().optional(),version:p().nullable().optional(),error:p().nullable().optional(),plugins:A(p()).optional(),authenticatedUser:w({id:b(),slug:p()}).nullable().optional()});w({connected:le(),projectName:p(),defaultEnv:Qs,live:wb.nullable(),staging:wb.nullable(),adminUrl:p().nullable().optional()});const gE=w({id:b(),slug:p(),title:p(),status:p(),modifiedAt:p().nullable().optional(),link:p().nullable().optional()}),v0=w({title:p().nullable(),description:p().nullable(),noindex:le().nullable(),writable:le().default(!1),writeTargets:A(p()).default([])}),yE=w({type:p(),json:lt(p(),Ln())}),bE=gE.extend({env:Qs,content:p(),seo:v0,schemaBlocks:A(yE).default([])}),jb=bE.extend({contentHash:p(),contentSnippet:p()}),S0=w({manualRequired:vt(!0),targetUrl:p(),adminUrl:p().nullable().optional(),content:p(),nextSteps:A(p()).default([])}),vE=w({slug:p(),severity:ae(["high","medium","low"]),code:ae(["noindex","missing-seo-title","missing-meta-description","missing-schema","thin-content"]),message:p()});w({slug:p(),title:p(),status:p(),wordCount:b(),seo:v0,schemaPresent:le(),issues:A(vE).default([])});const SE=w({slug:p(),status:ae(["applied","skipped","manual"]),error:p().optional(),manualAssist:S0.optional()});w({env:Qs,strategy:ae(["plugin","manual"]),results:A(SE)});const xE=w({slug:p(),status:ae(["deployed","stripped","skipped","failed"]),schemasInjected:A(p()).optional(),manualAssist:S0.optional(),error:p().optional()});w({env:Qs,results:A(xE)});const wE=w({slug:p(),title:p(),canonrySchemas:A(p()),thirdPartySchemas:A(p()),hasCanonrySchema:le()});w({env:Qs,pages:A(wE)});const jE=w({name:p(),status:ae(["completed","skipped","failed"]),summary:p().optional(),error:p().optional()});w({projectName:p(),steps:A(jE)});w({slug:p(),live:jb,staging:jb,hasDifferences:le(),differences:w({title:le(),slug:le(),content:le(),seoTitle:le(),seoDescription:le(),noindex:le(),schema:le()})});const NE=w({name:p(),displayName:p().optional(),keyUrl:p().optional(),modelHint:p().optional(),model:p().optional(),defaultModel:p().optional(),configured:le(),quota:RT.optional(),vertexConfigured:le().optional()}),Nb=w({configured:le()});w({providers:A(NE).default([]),google:Nb,bing:Nb});const Ks=ae(["queued","running","completed","partial","failed","cancelled"]),Qt=Ks.enum,x0=ae(["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=ae(["manual","scheduled","config-apply","backfill","probe"]),Rs=w0.enum,Ai=ae(["cited","not-cited"]),sc=Ai.enum,rc=ae(["visible","not-visible"]);rc.enum;const oc=ae(["mentioned","not-mentioned"]);oc.enum;const j0=ae(["new","cited","lost","emerging","not-cited"]);j0.enum;const kE=ae(["new","mentioned","lost","emerging","not-mentioned"]);kE.enum;const AE=ae([Rs.manual,Rs.probe]);w({kind:vt(Ne["answer-visibility"]).optional(),trigger:AE.optional(),providers:A(ya).optional(),queries:A(p().min(1)).min(1).optional(),location:p().min(1).optional(),allLocations:le().optional(),noLocation:le().optional()}).refine(e=>+!!e.location+ +!!e.allLocations+ +!!e.noLocation<=1,{message:'Only one of "location", "allLocations", or "noLocation" may be provided'});const _E=w({message:p(),raw:Ln().optional()}),CE=w({message:p().optional(),providers:lt(p(),_E).optional()}),zE=w({id:p(),projectId:p(),kind:x0,status:Ks,trigger:w0.default("manual"),location:p().nullable().optional(),queries:A(p()).nullable().optional(),startedAt:p().nullable().optional(),finishedAt:p().nullable().optional(),error:CE.nullable().optional(),createdAt:p()});function op(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=w({uri:p(),title:p()}),k0=w({id:p(),runId:p(),queryId:p(),query:p().optional(),provider:ya,citationState:Ai,answerMentioned:le().optional(),visibilityState:rc.optional(),mentionState:oc.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()});w({snapshots:A(k0),total:b().int().nonnegative()});const TE=w({queryId:p().nullable(),query:p().nullable(),run1State:Ai.nullable(),run2State:Ai.nullable(),run1AnswerMentioned:le().nullable(),run2AnswerMentioned:le().nullable(),run1VisibilityState:rc.nullable(),run2VisibilityState:rc.nullable(),run1MentionState:oc.nullable().optional(),run2MentionState:oc.nullable().optional(),changed:le(),visibilityChanged:le()});w({run1:p(),run2:p(),diff:A(TE)});const EE=zE.extend({snapshots:A(k0).optional()}),OE=w({totalRuns:b().int().nonnegative(),run:EE.nullable()});w({id:p(),projectId:p().nullable().optional(),actor:p(),action:p(),entityType:p(),entityId:p().nullable().optional(),diff:Ln().optional(),createdAt:p()});const DE=ae(["yes","no","unknown","not-mentioned"]),kb=A(p().min(1));w({companyName:p().min(1),domain:p().min(1),queries:kb.optional(),phrases:kb.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 RE=w({name:p(),count:b().int().nonnegative()}),ME=w({id:p(),name:p(),weight:b(),score:b(),findings:A(w({type:p(),message:p()})).default([]),recommendations:A(p()).default([])}),BE=w({url:p(),finalUrl:p(),auditedAt:p(),overallScore:b(),summary:p(),factors:A(ME).default([])}),LE=w({industry:p(),summary:p(),services:A(p()).default([]),categoryTerms:A(p()).default([])}),qE=w({provider:p(),displayName:p(),model:p().nullable().optional(),mentioned:le(),cited:le(),describedAccurately:DE,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()}),UE=w({query:p(),providerResults:A(qE).default([])}),$E=w({totalQueries:b().int().nonnegative(),totalProviders:b().int().nonnegative(),totalComparisons:b().int().nonnegative(),mentionCount:b().int().nonnegative(),citationCount:b().int().nonnegative(),topCompetitors:A(RE).default([]),visibilityGap:p(),whatThisMeans:A(p()).default([]),recommendedActions:A(p()).default([])});w({companyName:p(),domain:p(),homepageUrl:p(),generatedAt:p(),queries:A(p()).default([]),competitors:A(p()).default([]),profile:LE,audit:BE,queryResults:A(UE).default([]),summary:$E});const A0=ae(["pass","partial","fail"]);A0.enum;const _0=ae(["up","down","flat"]);_0.enum;const VE=w({id:p(),name:p(),weight:b(),avgScore:b(),status:A0,pagesPassing:b().int().nonnegative(),pagesPartial:b().int().nonnegative(),pagesFailing:b().int().nonnegative()}),IE=w({factorId:p(),factorName:p(),avgScore:b(),affectedPages:b().int().nonnegative(),totalPages:b().int().nonnegative(),affectedPct:b().int().nonnegative(),topRecommendations:A(p()).default([])});w({project:p(),hasData:le(),runId:p().nullable(),runStatus:Ks.nullable(),sitemapUrl:p().nullable(),auditedAt:p().nullable(),aggregateScore:b(),pagesDiscovered:b().int().nonnegative(),pagesAudited:b().int().nonnegative(),pagesSkipped:b().int().nonnegative(),pagesErrored:b().int().nonnegative(),deltaScore:b().nullable(),trend:_0.nullable(),previousScore:b().nullable(),previousAuditedAt:p().nullable(),factors:A(VE).default([]),crossCuttingIssues:A(IE).default([]),prioritizedFixes:A(p()).default([])});const PE=w({id:p(),name:p(),weight:b(),score:b()}),GE=w({url:p(),overallScore:b(),status:ae(["success","error"]),error:p().nullable().optional(),factors:A(PE).default([])});w({project:p(),runId:p().nullable(),auditedAt:p().nullable(),total:b().int().nonnegative(),pages:A(GE).default([])});const HE=w({runId:p(),auditedAt:p(),aggregateScore:b(),pagesAudited:b().int().nonnegative()});w({project:p(),points:A(HE).default([])});w({sitemapUrl:p().url().optional(),limit:b().int().positive().max(2e3).optional()});w({runId:p(),status:Ks});const lp=ae(["answer-visibility","traffic-sync","gbp-sync","data-refresh","backlinks-sync","site-audit","ads-sync"]);lp.enum;w({id:p(),projectId:p(),kind:lp,cronExpr:p(),preset:p().nullable().optional(),timezone:p().default("UTC"),enabled:le().default(!0),providers:A(ya).default([]),sourceId:p().nullable().optional(),lastRunAt:p().nullable().optional(),nextRunAt:p().nullable().optional(),createdAt:p(),updatedAt:p()});w({kind:lp.optional(),preset:p().optional(),cron:p().optional(),timezone:p().optional().default("UTC"),enabled:le().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 cp=ae(["competitor","directory","social","forum","news","reference","blog","ecommerce","video","academic","other"]);cp.enum;const up=ae(["cited","aspirational","wasted-surface"]),Ab=up.enum;Ab.cited,Ab.aspirational;const vc=ae(["direct-competitor","ota-aggregator","editorial-media","other","unknown"]),QE=vc.enum;QE["direct-competitor"];const Sc=ae(["queued","seeding","probing","completed","failed"]);Sc.enum;const C0=w({domain:p().min(1),hits:b().int().positive(),competitorType:vc.default("unknown")}),KE=w({id:p(),sessionId:p(),projectId:p(),query:p(),bucket:up.nullable().default(null),citationState:Ai,citedDomains:A(p()).default([]),answerMentioned:le().nullable().default(null),createdAt:p()}),ZE=w({id:p(),projectId:p(),status:Sc,icpDescription:p().nullable().optional(),seedProvider:p().nullable().optional(),seedCountRaw:b().int().nullable().optional(),seedCount:b().int().nullable().optional(),dedupThreshold:b().nullable().optional(),probeCount:b().int().nullable().optional(),citedCount:b().int().nullable().default(null),aspirationalCount:b().int().nullable().default(null),wastedCount:b().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()});ZE.extend({probes:A(KE).default([])});const YE=500;w({icpDescription:p().min(1).optional(),dedupThreshold:b().min(0).max(1).optional(),maxProbes:b().int().positive().max(YE).optional(),locations:A(p().min(1)).optional()});w({buckets:A(up).min(1).optional(),includeCompetitors:le().optional(),competitorTypes:A(vc).min(1).optional()});w({sessionId:p(),projectId:p(),status:Sc,queriesByBucket:w({cited:A(p()),aspirational:A(p()),"wasted-surface":A(p())}),suggestedCompetitors:A(C0)});w({sessionId:p(),projectId:p(),promoted:w({queries:A(p()),competitors:A(p())}),skipped:w({queries:A(p()),competitors:A(p())})});bc([vt("cli"),p().regex(/^discovery:.+$/)]);const XE=w({query:p().min(1),probeHits:b().int().positive()}),JE=w({rawCandidates:b().int().nonnegative(),admitted:b().int().nonnegative(),rejected:w({belowFloor:b().int().nonnegative(),length:b().int().nonnegative(),navigational:b().int().nonnegative(),duplicate:b().int().nonnegative(),offAnchor:b().int().nonnegative(),semanticDuplicate:b().int().nonnegative()})});w({sessionId:p(),projectId:p(),provider:p(),status:Sc,minProbeHits:b().int().positive(),anchorApplied:le(),semanticNoveltyApplied:le(),candidates:A(XE),stats:JE});const dp=ae(["own","direct-competitor","ota-aggregator","editorial-media","other"]);dp.enum;const z0=ae(["7d","30d","90d","all"]),_b=ae(["improving","declining","stable"]),FE=ae(["mentioned","cited"]);FE.enum;const Tf=w({citationRate:b(),cited:b().int(),total:b().int(),mentionRate:b(),mentionedCount:b().int()}),WE=w({startDate:p(),endDate:p(),citationRate:b(),cited:b().int(),total:b().int(),queryCount:b().int(),mentionRate:b(),mentionedCount:b().int(),byProvider:lt(p(),Tf)}),eO=w({date:p(),delta:b().int(),label:p()});w({window:z0,buckets:A(WE),overall:Tf,byProvider:lt(p(),Tf),trend:_b,mentionTrend:_b,queryChanges:A(eO)});const Cb=w({category:cp,label:p(),count:b().int(),percentage:b(),topDomains:A(w({domain:p(),count:b().int()}))}),tO=w({domain:p(),count:b().int(),percentage:b(),category:cp,label:p(),surfaceClass:dp}),nO=w({surfaceClass:dp,label:p(),count:b().int(),percentage:b(),domainCount:b().int()}),zb=w({totalCitedSlots:b().int(),domainTotal:b().int(),entries:A(tO),truncatedDomainCount:b().int(),truncatedCitedSlots:b().int(),bySurfaceClass:A(nO)});w({overall:A(Cb),byQuery:lt(p(),A(Cb)),ranked:zb,byProvider:lt(p(),zb),runId:p(),window:z0,limit:b().int().nullable()});const fp=w({total:b().int(),checked:b().int(),mentioned:b().int(),cited:b().int(),mentionRate:b().nullable(),citedRate:b().nullable()}),T0=fp.extend({provider:p(),firstObserved:p(),lastObserved:p()}),aO=fp.extend({queryId:p().nullable(),query:p(),firstObserved:p(),lastObserved:p(),providers:A(T0).optional()}),iO=w({since:p().nullable(),until:p().nullable(),lastRuns:b().int().nullable(),runCount:b().int()}),sO=ae(["provider"]);w({project:p(),groupBy:sO.optional(),window:iO,totals:fp,byProvider:A(T0).optional(),queries:A(aO)});w({id:p(),projectId:p(),propertyId:p(),clientEmail:p(),connected:le(),createdAt:p(),updatedAt:p()});w({date:p(),landingPage:p(),sessions:b(),organicSessions:b(),users:b()});const pp=ae(["session","first_user","manual_utm"]),rO=w({source:p(),medium:p(),sessions:b(),users:b(),sourceDimension:pp}),oO=w({source:p(),medium:p(),sourceDimension:pp,landingPage:p(),sessions:b(),users:b()}),lO=w({source:p(),medium:p(),sessions:b(),users:b(),channelGroup:p()}),Kr=w({sessions:b(),sharePct:b(),sharePctDisplay:p()}),cO=w({organic:Kr,social:Kr,direct:Kr,ai:Kr,other:Kr});w({totalSessions:b(),totalOrganicSessions:b(),totalDirectSessions:b(),totalUsers:b(),topPages:A(w({landingPage:p(),sessions:b(),organicSessions:b(),directSessions:b(),users:b()})),aiReferrals:A(rO),aiReferralLandingPages:A(oO),aiSessionsDeduped:b(),aiUsersDeduped:b(),aiSessionsBySession:b(),aiUsersBySession:b(),socialReferrals:A(lO),socialSessions:b(),socialUsers:b(),channelBreakdown:cO,organicSharePct:b(),aiSharePct:b(),aiSharePctBySession:b(),directSharePct:b(),socialSharePct:b(),organicSharePctDisplay:p(),aiSharePctDisplay:p(),aiSharePctBySessionDisplay:p(),directSharePctDisplay:p(),socialSharePctDisplay:p(),otherSessions:b(),otherSharePct:b(),otherSharePctDisplay:p(),lastSyncedAt:p().nullable()});w({connected:le(),propertyId:p().nullable(),clientEmail:p().nullable(),authMethod:ae(["service-account","oauth"]).nullable(),lastSyncedAt:p().nullable(),createdAt:p().nullable().optional(),updatedAt:p().nullable().optional()});w({synced:le(),rowCount:b().int().nonnegative(),aiReferralCount:b().int().nonnegative(),socialReferralCount:b().int().nonnegative(),days:b().int().nonnegative(),syncedAt:p(),syncedComponents:A(p()).optional()});w({date:p(),source:p(),medium:p(),landingPage:p(),sessions:b(),users:b(),sourceDimension:pp});w({date:p(),source:p(),medium:p(),sessions:b(),users:b(),channelGroup:p()});w({date:p(),sessions:b(),organicSessions:b(),users:b()});function lc(e){return e.toLowerCase().replace(/[^a-z0-9]/g,"")}const E0=ae(["claude","openai","gemini","zai","deepinfra"]),uO=w({id:E0,label:p(),defaultModel:p(),configured:le(),keySource:ae(["config","env"]).nullable()});w({providers:A(uO).default([]),defaultProvider:E0.nullable()});const dO=ae(["aero","user","compaction"]);dO.enum;const O0=128;w({key:p().min(1).max(O0),value:p().min(1)});w({key:p().min(1).max(O0)});const Zs=ae(["commoncrawl","bing-webmaster"]);Zs.enum;const mp=ae(["queued","downloading","querying","ready","failed"]);mp.enum;w({id:p(),release:p(),status:mp,phaseDetail:p().nullable().optional(),vertexPath:p().nullable().optional(),edgesPath:p().nullable().optional(),vertexSha256:p().nullable().optional(),edgesSha256:p().nullable().optional(),vertexBytes:b().int().nullable().optional(),edgesBytes:b().int().nullable().optional(),projectsProcessed:b().int().nullable().optional(),domainsDiscovered:b().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 fO=w({linkingDomain:p(),numHosts:b().int(),source:Zs}),pO=w({projectId:p(),release:p(),targetDomain:p(),totalLinkingDomains:b().int(),totalHosts:b().int(),top10HostsShare:p(),queriedAt:p(),source:Zs,excludedLinkingDomains:b().int().optional(),excludedHosts:b().int().optional()});w({source:Zs,summary:pO.nullable(),total:b().int(),rows:A(fO)});w({release:p(),totalLinkingDomains:b().int(),totalHosts:b().int(),top10HostsShare:p(),queriedAt:p(),source:Zs});const mO=w({source:Zs,connected:le(),hasData:le(),latestRelease:p().nullable(),totalLinkingDomains:b().int(),lastSyncedAt:p().nullable()});w({projectId:p(),targetDomain:p(),sources:A(mO),anyConnected:le(),anyData:le()});w({duckdbInstalled:le(),duckdbVersion:p().nullable().optional(),duckdbSpec:p(),pluginDir:p()});w({installed:le(),version:p(),path:p(),alreadyPresent:le()});w({release:p(),vertexUrl:p(),edgesUrl:p(),vertexBytes:b().int().nullable(),edgesBytes:b().int().nullable(),lastModified:p().nullable()});w({release:p(),syncStatus:mp.nullable(),bytes:b().int(),lastUsedAt:p().nullable()});const hp=ae(["positive","caution","negative","neutral"]),Ka=w({label:p(),value:p(),delta:p(),tone:hp,description:p(),tooltip:p().optional(),trend:A(b()),progress:b().optional(),providerCoverage:p().optional()}),hO=Ka.extend({breakdown:w({projectMentionSnapshots:b().int().nonnegative(),competitorMentionSnapshots:b().int().nonnegative(),perCompetitor:A(w({domain:p(),mentionSnapshots:b().int().nonnegative(),shareOfCompetitiveTotal:b()})),snapshotsWithAnswerText:b().int().nonnegative(),snapshotsTotal:b().int().nonnegative()})}),cf=w({gained:b().int().nonnegative(),lost:b().int().nonnegative(),tone:hp,hasPreviousRun:le(),gainedQueries:A(p()).optional(),lostQueries:A(p()).optional()}),gO=w({hasPreviousRun:le(),comparable:le(),querySetChanged:le(),previousRunAt:p().nullable(),currentQueryCount:b().int().nonnegative(),previousQueryCount:b().int().nonnegative(),comparableQueryCount:b().int().nonnegative(),addedQueryCount:b().int().nonnegative(),removedQueryCount:b().int().nonnegative(),addedQueries:A(p()),removedQueries:A(p())}),yO=w({id:p(),projectId:p(),runId:p().nullable(),type:ae(["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:ae(["critical","high","medium","low"]),title:p(),query:p(),provider:p(),recommendation:w({action:p(),target:p().optional(),reason:p()}).optional(),cause:w({cause:p(),competitorDomain:p().optional(),details:p().optional()}).optional(),dismissed:le(),createdAt:p()}),bO=w({id:p(),projectId:p(),runId:p().nullable(),overallCitedRate:b(),overallMentionRate:b(),totalPairs:b().int().nonnegative(),citedPairs:b().int().nonnegative(),mentionedPairs:b().int().nonnegative(),providerBreakdown:lt(p(),w({citedRate:b(),mentionRate:b(),cited:b().int().nonnegative(),mentioned:b().int().nonnegative(),total:b().int().nonnegative()})),createdAt:p(),status:ae(["ready","no-data"]),reason:vt("no-runs-yet").optional()});w({project:LT,latestRun:OE,health:bO.nullable(),topInsights:A(yO),queryCounts:w({totalQueries:b().int().nonnegative(),citedQueries:b().int().nonnegative(),notCitedQueries:b().int().nonnegative(),citedRate:b(),mentionedQueries:b().int().nonnegative(),notMentionedQueries:b().int().nonnegative(),mentionRate:b()}),providers:A(w({provider:p(),citedRate:b(),cited:b().int().nonnegative(),total:b().int().nonnegative()})),transitions:w({since:p().nullable(),gained:b().int().nonnegative(),lost:b().int().nonnegative(),emerging:b().int().nonnegative()}),scores:w({mention:Ka,visibility:Ka,mentionShare:hO,gapQueries:Ka,mentionGaps:Ka,indexCoverage:Ka,competitorPressure:Ka,runStatus:Ka}),movementSummary:cf,citationMovement:cf,mentionMovement:cf,movementComparison:gO,competitors:A(w({id:p(),domain:p(),citationCount:b().int().nonnegative(),totalQueries:b().int().nonnegative(),pressureLabel:ae(["None","Low","Moderate","High"]),citedQueries:A(p())})),providerScores:A(w({provider:p(),model:p().nullable(),score:b(),cited:b().int().nonnegative(),total:b().int().nonnegative(),trend:A(b()).optional()})),attentionItems:A(w({id:p(),tone:hp,title:p(),detail:p(),actionLabel:p(),href:p()})),runHistory:A(w({runId:p(),createdAt:p(),citedCount:b().int().nonnegative(),totalCount:b().int().nonnegative(),citationRate:b(),mentionedCount:b().int().nonnegative(),mentionRate:b(),status:p()})),suggestedQueries:w({rows:A(w({query:p(),impressions:b(),clicks:b(),avgPosition:b(),reason:p()})),totalCandidates:b().int().nonnegative(),skippedAlreadyTracked:b().int().nonnegative()}),dateRangeLabel:p(),contextLabel:p()});ae(["snapshot","insight"]);const vO=w({kind:vt("snapshot"),id:p(),runId:p(),query:p(),provider:p(),model:p().nullable(),citationState:Ai,matchedField:ae(["answerText","citedDomains","searchQueries","query"]),snippet:p(),createdAt:p()}),SO=w({kind:vt("insight"),id:p(),runId:p().nullable(),type:ae(["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:ae(["critical","high","medium","low"]),title:p(),query:p(),provider:p(),matchedField:ae(["title","query","recommendation","cause"]),snippet:p(),dismissed:le(),createdAt:p()}),xO=p0("kind",[vO,SO]);w({query:p(),totalHits:b().int().nonnegative(),truncated:le(),hits:A(xO)});const D0=ae(["create","expand","refresh","add-schema"]);D0.enum;function kL(e){switch(e){case"create":return"Create";case"expand":return"Expand";case"refresh":return"Refresh";case"add-schema":return"Add schema"}}const R0=ae(["gsc","competitor-evidence","both"]);R0.enum;const M0=ae(["high","medium","low"]);M0.enum;const wO=ae(["blog-post","comparison","listicle","how-to","guide","glossary"]);wO.enum;const B0=ae(["proposed","briefed","payload-generated","draft-created","published","validated","dismissed"]);B0.enum;const gp=ae(["ownable","ceded"]);gp.enum;const jO=w({url:p(),gscImpressions:b().nonnegative(),gscClicks:b().nonnegative(),gscAvgPosition:b().nonnegative().nullable(),organicSessions:b().nonnegative()}),NO=w({domain:p(),url:p(),title:p(),citationCount:b().int().nonnegative()}),kO=w({demand:b(),competitor:b(),absence:b(),gapSeverity:b()}),AO=w({actionId:p(),state:B0,lastUpdated:p()}),L0=w({targetRef:p(),query:p(),action:D0,ourBestPage:jO.nullable(),winningCompetitor:NO.nullable(),score:b(),scoreBreakdown:kO,drivers:A(p()),demandSource:R0,actionConfidence:M0,existingAction:AO.nullable(),winnabilityClass:gp,winnability:b().min(0).max(1).nullable()});w({targets:A(L0),contextMetrics:w({totalAiReferralSessions:b().int().nonnegative(),latestRunId:p(),runTimestamp:p()})});const _O=w({targetRef:p(),addressedUrl:p().nullable(),note:p().nullable(),dismissedAt:p()});w({dismissals:A(_O)});w({targetRef:p().min(1),addressedUrl:p().url().optional(),note:p().max(500).optional()});w({targetRef:p(),promptVersion:p(),provider:p(),model:p(),responseText:p(),costMillicents:b().int().nonnegative(),generatedAt:p()});w({provider:p().optional(),model:p().optional(),forceRefresh:le().optional()});const CO=w({targetQuery:p().trim().min(1),winnabilityClass:gp,angle:p().trim().min(1),whyWinnable:p().trim().min(1),schemaHookup:p().trim().min(1),controllableSurfaceRationale:p().trim().min(1)});w({targetRef:p(),promptVersion:p(),provider:p(),model:p(),brief:CO,costMillicents:b().int().nonnegative(),generatedAt:p()});const zO=w({domain:p(),competitorType:vc,hits:b().int().nonnegative(),updatedAt:p()});w({classifications:A(zO)});const TO=w({uri:p(),title:p(),domain:p(),isOurDomain:le(),isCompetitor:le(),citationCount:b().int().nonnegative(),providers:A(ya)}),q0=w({query:p(),groundingSources:A(TO)});w({sources:A(q0),latestRunId:p()});const U0=w({query:p(),competitorDomains:A(p()),competitorCount:b().int().nonnegative(),missRate:b().min(0).max(1),lastSeenInRunId:p()});w({gaps:A(U0),latestRunId:p()});const $0=ae(["ok","warn","fail","skipped"]);$0.enum;const yp=ae(["global","project"]);yp.enum;const V0=ae(["auth","config","providers","integrations","database","schedules","agent"]);V0.enum;const EO=w({id:p(),category:V0,scope:yp,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(),Ln()).optional().describe("Structured context — principal email, redirect URI, missing scopes, etc. Stable per check id."),durationMs:b().int().nonnegative().describe("How long the check took to execute.")});w({scope:yp,project:p().nullable().describe('Project name when scope is "project", null otherwise.'),generatedAt:p().describe("ISO-8601 timestamp when this doctor run started."),durationMs:b().int().nonnegative(),summary:w({total:b().int().nonnegative(),ok:b().int().nonnegative(),warn:b().int().nonnegative(),fail:b().int().nonnegative(),skipped:b().int().nonnegative()}),checks:A(EO)});const OO=w({provider:p(),citationState:Ai,cited:le(),mentioned:le(),runId:p(),runCreatedAt:p()}),DO=w({queryId:p(),query:p(),providers:A(OO),citedCount:b().int().nonnegative(),mentionedCount:b().int().nonnegative(),totalProviders:b().int().nonnegative()}),RO=w({queryId:p(),query:p(),provider:p(),citingCompetitors:A(p()),runId:p(),runCreatedAt:p()}),MO=w({providersConfigured:b().int().nonnegative(),providersCiting:b().int().nonnegative(),providersMentioning:b().int().nonnegative(),totalQueries:b().int().nonnegative(),queriesCitedAndMentioned:b().int().nonnegative(),queriesCitedOnly:b().int().nonnegative(),queriesMentionedOnly:b().int().nonnegative(),queriesInvisible:b().int().nonnegative(),latestRunId:p().nullable(),latestRunAt:p().nullable()});w({summary:MO,byQuery:A(DO),competitorGaps:A(RO),status:ae(["ready","no-data"]),reason:ae(["no-runs-yet","no-queries"]).optional()});const AL=[7,14,30,90],_L=30;bc([vt(7),vt(14),vt(30),vt(90)]).describe("Report window in days (7, 14, 30, or 90). Defaults to 30 when omitted.");const BO=ae(["prompt","request-param","browser-geo","ignored"]),LO=w({label:p(),city:p(),region:p(),country:p(),otherConfiguredLabels:A(p())}),qO=w({provider:p(),treatment:BO,description:p()}),UO=w({generatedAt:p(),project:w({id:p(),name:p(),displayName:p(),canonicalDomain:p(),country:p(),language:p()}),location:LO.nullable(),providerLocationHandling:A(qO),periodStart:p().nullable(),periodEnd:p().nullable(),periodDays:b().int().positive()}),$O=w({citationRate:b(),citedQueryCount:b(),totalQueryCount:b(),mentionRate:b(),mentionedQueryCount:b(),trend:ae(["up","down","flat","unknown"]),queryCount:b(),competitorCount:b(),providerCount:b(),gsc:w({clicks:b(),impressions:b(),ctr:b(),avgPosition:b(),periodStart:p(),periodEnd:p()}).nullable(),ga:w({sessions:b(),users:b(),periodStart:p(),periodEnd:p()}).nullable(),findings:A(w({title:p(),detail:p(),tone:ae(["positive","caution","negative","neutral"])}))}),VO=w({citationState:ae(["cited","not-cited","pending"]),answerMentioned:le().nullable(),model:p().nullable()}),IO=w({queries:A(p()),providers:A(p()),matrix:A(A(VO.nullable())),providerRates:A(w({provider:p(),citedCount:b(),totalCount:b(),citationRate:b()}))}),PO=w({domain:p(),citationCount:b(),totalCount:b(),pressureLabel:ae(["High","Moderate","Low","None"]),citedQueries:A(p()),sharePct:b(),theirCitedPages:A(w({url:p(),citedFor:A(p())}))}),GO=w({projectCitationCount:b(),competitors:A(PO)}),HO=w({domain:p(),mentionCount:b(),totalCount:b(),pressureLabel:ae(["High","Moderate","Low","None"]),mentionedQueries:A(p()),sharePct:b()}),QO=w({projectMentionCount:b(),totalAnswerSnapshots:b(),competitors:A(HO)}),KO=w({category:p(),label:p(),count:b(),sharePct:b()}),ZO=w({categories:A(KO),topDomains:A(w({domain:p(),count:b(),isCompetitor:le()}))}),YO=w({query:p(),clicks:b(),impressions:b(),ctr:b(),avgPosition:b(),category:ae(["brand","lead-gen","industry","other"])}),XO=w({periodStart:p(),periodEnd:p(),totalClicks:b(),totalImpressions:b(),ctr:b(),avgPosition:b(),topQueries:A(YO),categoryBreakdown:A(w({category:ae(["brand","lead-gen","industry","other"]),clicks:b(),impressions:b(),sharePct:b()})),trend:A(w({date:p(),clicks:b(),impressions:b()})),trackedButNoGsc:A(p()),gscButNotTracked:A(p())}),JO=w({totalSessions:b(),totalUsers:b(),totalOrganicSessions:b(),periodStart:p(),periodEnd:p(),topLandingPages:A(w({page:p(),sessions:b(),users:b(),organicSessions:b()})),channelBreakdown:A(w({channel:p(),sessions:b(),sharePct:b()}))}),FO=w({totalSessions:b(),organicSessions:b(),paidSessions:b(),channels:A(w({channelGroup:p(),sessions:b(),sharePct:b()})),topCampaigns:A(w({source:p(),medium:p(),sessions:b()}))}),WO=w({totalSessions:b(),totalUsers:b(),bySource:A(w({source:p(),sessions:b(),users:b(),sharePct:b()})),trend:A(w({date:p(),sessions:b()})),topLandingPages:A(w({page:p(),sessions:b(),users:b()}))}),eD=w({windowStart:p(),windowEnd:p(),hasData:le(),verifiedCrawlerHits:w({current:b(),prior:b(),deltaPct:b().nullable()}),unverifiedCrawlerHits:w({current:b(),prior:b(),deltaPct:b().nullable()}),aiUserFetchHits:w({current:b(),prior:b(),deltaPct:b().nullable()}),referralArrivals:w({current:b(),prior:b(),deltaPct:b().nullable()}),byOperator:A(w({operator:p(),verifiedHits:b(),unverifiedHits:b(),userFetchHits:b(),referralArrivals:b(),deltaPct:b().nullable()})),topCrawledPaths:A(w({path:p(),verifiedHits:b(),distinctOperators:b()})),referralProducts:A(w({product:p(),arrivals:b(),distinctLandingPaths:b()})),dailyTrend:A(w({date:p(),verifiedCrawlerHits:b(),userFetchHits:b(),referralArrivals:b()})),topReferralLandingPaths:A(w({path:p(),arrivals:b(),distinctProducts:b()}))}),tD=w({provider:ae(["google","bing"]).nullable(),total:b(),indexed:b(),notIndexed:b(),deindexed:b(),unknown:b(),indexedPct:b()}),nD=w({runId:p(),date:p(),citationRate:b(),citedQueryCount:b(),totalQueryCount:b(),mentionRate:b(),mentionedQueryCount:b(),providerRates:A(w({provider:p(),citationRate:b()}))}),Ef=w({id:p(),type:ae(["regression","gain","opportunity"]),severity:ae(["critical","high","medium","low"]),title:p(),query:p(),provider:p(),recommendation:p().nullable(),createdAt:p(),instanceCount:b()}),aD=w({horizon:ae(["immediate","short-term","medium-term"]),title:p(),rationale:p()}),Zr=w({current:b(),prior:b(),deltaAbs:b(),deltaPct:b().nullable(),direction:ae(["up","down","flat"]),window:b().optional()}),iD=w({provider:p(),current:b(),prior:b(),deltaAbs:b(),direction:ae(["up","down","flat"])}),sD=w({enoughHistory:le(),headline:p(),citationRate:Zr.nullable(),mentionRate:Zr.nullable(),citedQueryCount:Zr.nullable(),gscClicksDelta:Zr.nullable(),aiReferralsDelta:Zr.nullable(),comparisonWindowDays:b().int().positive(),providerMovements:A(iD),wins:A(Ef),regressions:A(Ef)});ae(["agency","client"]);const rD=ae(["agency","client","both"]),oD=ae(["immediate","short-term","medium-term"]),lD=ae(["high","medium","low"]);ae(["positive","caution","negative","neutral"]);const cD=ae(["content","competitors","provider","search-demand","indexing","location","monitoring"]),bp=w({audience:rD,priority:b(),horizon:oD,category:cD,title:p(),action:p(),why:A(p()),evidence:A(p()),successMetric:p(),confidence:lD,targetRef:p().optional()}),uD=w({headline:p(),overview:p(),actionItems:A(bp),confidenceNotes:A(p())}),dD=w({title:p(),detail:p(),severity:ae(["positive","caution","negative","neutral"]),evidence:A(p())}),fD=w({priorities:A(bp),diagnostics:A(dD)});function CL(e){return e.horizon==="immediate"?"negative":e.confidence==="high"?"caution":e.confidence==="low"?"neutral":"caution"}function zL(e){switch(e){case"critical":return"Critical";case"high":return"High";case"medium":return"Medium";case"low":return"Low"}}function TL(e){switch(e){case"immediate":return"Immediate";case"short-term":return"Short term";case"medium-term":return"Medium term"}}function EL(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 OL(e){switch(e){case"high":return"High";case"medium":return"Medium";case"low":return"Low"}}w({meta:UO,executiveSummary:$O,citationScorecard:IO,competitorLandscape:GO,mentionLandscape:QO,aiSourceOrigin:ZO,gsc:XO.nullable(),ga:JO.nullable(),socialReferrals:FO.nullable(),aiReferrals:WO.nullable(),serverActivity:eD.nullable(),indexingHealth:tD.nullable(),citationsTrend:A(nD),whatsChanged:sD,insights:A(Ef),recommendedNextSteps:A(aD),actionPlan:A(bp),clientSummary:uD,agencyDiagnostics:fD,contentOpportunities:A(L0),contentGaps:A(U0),groundingSources:A(q0)});const pD=ae(["claude","codex"]);pD.enum;const mD=ae(["claude","codex","all"]);mD.enum;const I0=w({content:b().int().nonnegative(),sitemap:b().int().nonnegative(),robots:b().int().nonnegative(),asset:b().int().nonnegative(),other:b().int().nonnegative()}),hD=ae(["content","sitemap","robots","asset","other"]),vp=ae(["cloud-run","wordpress","cloudflare","vercel","generic-log"]);vp.enum;const gD=ae(["raw-request-events","aggregate-request-metrics","request-url","status-code","user-agent","remote-ip","referer","cursor-pull"]);gD.enum;const yD=ae(["raw-request","aggregate-bucket"]),bD=yD.enum,vD=ae(["observed","provider-aggregated","inferred"]),SD=vD.enum,xD=w({type:p().nullable(),labels:lt(p(),p())}),wD=w({sourceType:vp,evidenceKind:vt(bD["raw-request"]),confidence:vt(SD.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:b().int().nullable(),userAgent:p().nullable(),remoteIp:p().nullable(),referer:p().nullable(),latencyMs:b().nullable(),requestSizeBytes:b().int().nullable(),responseSizeBytes:b().int().nullable(),providerResource:xD,providerLabels:lt(p(),p())});w({events:A(wD),rawEntryCount:b().int().nonnegative(),skippedEntryCount:b().int().nonnegative(),nextPageToken:p().optional(),filter:p()});const P0=ae(["connected","paused","error","archived"]),DL=P0.enum,G0=ae(["oauth","service-account"]);G0.enum;const jD=ae(["verified","claimed_unverified","unknown_ai_like"]),RL=jD.enum;w({gcpProjectId:p().min(1),serviceName:p().nullable().optional(),location:p().nullable().optional(),authMode:G0});w({baseUrl:p().url(),username:p().min(1)});const Sp=ae(["production","preview"]);Sp.enum;w({projectId:p().min(1),teamId:p().min(1),environment:Sp});const H0=w({id:p(),projectId:p(),sourceType:vp,displayName:p(),status:P0,lastSyncedAt:p().nullable(),lastCursor:p().nullable(),lastError:p().nullable(),archivedAt:p().nullable(),config:lt(p(),Ln()),createdAt:p(),updatedAt:p()});w({gcpProjectId:p().min(1),serviceName:p().min(1).optional(),location:p().min(1).optional(),displayName:p().min(1).optional(),keyJson:p().optional()});w({baseUrl:p().url(),username:p().min(1),applicationPassword:p().min(1),displayName:p().min(1).optional()});w({projectId:p().min(1),teamId:p().min(1),token:p().min(1),environment:Sp.optional(),displayName:p().min(1).optional()});w({sourceId:p(),runId:p(),syncedAt:p(),pulledEvents:b().int().nonnegative(),selfTrafficExcluded:b().int().nonnegative(),crawlerHits:b().int().nonnegative(),aiUserFetchHits:b().int().nonnegative(),aiReferralHits:b().int().nonnegative(),unknownHits:b().int().nonnegative(),crawlerBucketRows:b().int().nonnegative(),aiUserFetchBucketRows:b().int().nonnegative(),aiReferralBucketRows:b().int().nonnegative(),sampleRows:b().int().nonnegative(),windowStart:p(),windowEnd:p()});w({days:b().int().positive().optional()});w({advanceToNow:vt(!0)});w({sourceId:p(),runId:p(),status:Ks,windowStart:p(),windowEnd:p(),daysRequested:b().int().positive(),daysApplied:b().int().positive()});const ND=w({crawlerHits:b().int().nonnegative(),crawlerContentHits:b().int().nonnegative(),crawlerInfraHits:b().int().nonnegative(),crawlerSegments:I0,aiUserFetchHits:b().int().nonnegative(),aiReferralHits:b().int().nonnegative(),sampleCount:b().int().nonnegative()});w({sources:A(H0)});const kD=H0.extend({totals24h:ND,latestRun:w({runId:p(),status:Ks,startedAt:p().nullable(),finishedAt:p().nullable(),error:p().nullable()}).nullable()});w({sources:A(kD)});const AD=ae(["crawler","ai-user-fetch","ai-referral"]),xp=AD.enum,_D=w({kind:vt(xp.crawler),sourceId:p(),tsHour:p(),botId:p(),operator:p(),verificationStatus:p(),pathNormalized:p(),pathClass:hD,status:b().int(),hits:b().int().nonnegative()}),CD=w({kind:vt(xp["ai-user-fetch"]),sourceId:p(),tsHour:p(),botId:p(),operator:p(),verificationStatus:p(),pathNormalized:p(),status:b().int(),hits:b().int().nonnegative()}),zD=w({kind:vt(xp["ai-referral"]),sourceId:p(),tsHour:p(),product:p(),operator:p(),sourceDomain:p(),evidenceType:p(),landingPathNormalized:p(),status:b().int(),hits:b().int().nonnegative()}),TD=p0("kind",[_D,CD,zD]);w({windowStart:p(),windowEnd:p(),totals:w({crawlerHits:b().int().nonnegative(),crawlerContentHits:b().int().nonnegative(),crawlerInfraHits:b().int().nonnegative(),crawlerSegments:I0,aiUserFetchHits:b().int().nonnegative(),aiReferralHits:b().int().nonnegative()}),events:A(TD)});w({apiKey:p().min(1)});w({connected:le(),adAccountId:p().nullable().optional(),displayName:p().nullable().optional(),currencyCode:p().nullable().optional(),timezone:p().nullable().optional(),status:p().nullable().optional(),lastSyncedAt:p().nullable().optional(),conversionTrackingConfigured:le().optional()});w({disconnected:le()});w({runId:p(),status:p()});const ED=w({type:p().nullable().optional(),title:p().nullable().optional(),body:p().nullable().optional(),targetUrl:p().nullable().optional()}),OD=w({id:p(),adGroupId:p(),name:p(),status:p(),reviewStatus:p().nullable().optional(),creative:ED.nullable().optional()}),DD=w({id:p(),campaignId:p(),name:p(),status:p(),billingEventType:p().nullable().optional(),maxBidMicros:b().int().nullable().optional(),contextHints:A(p()).default([]),ads:A(OD).default([])}),RD=w({id:p(),name:p(),status:p(),biddingType:p().nullable().optional(),dailySpendLimitMicros:b().int().nullable().optional(),lifetimeSpendLimitMicros:b().int().nullable().optional(),adGroups:A(DD).default([])});w({campaigns:A(RD)});const Q0=ae(["campaign","ad_group"]);Q0.enum;const MD=w({level:Q0,entityId:p(),date:p(),impressions:b().int(),clicks:b().int(),spendMicros:b().int(),conversions:b().int(),ctr:b().nullable(),cpcMicros:b().int().nullable()});w({rows:A(MD),currencyCode:p().nullable().optional()});const BD=w({impressions:b().int(),clicks:b().int(),spendMicros:b().int(),conversions:b().int(),ctr:b().nullable(),cpcMicros:b().int().nullable()});w({connected:le(),displayName:p().nullable().optional(),currencyCode:p().nullable().optional(),lastSyncedAt:p().nullable().optional(),campaignCount:b().int(),adGroupCount:b().int(),adCount:b().int(),window:w({from:p().nullable(),to:p().nullable()}),totals:BD});var LD=(e=>(e.Clicks="clicks",e.Impressions="impressions",e.CTR="ctr",e.Position="position",e))(LD||{});const ML={clicks:"Clicks",impressions:"Impressions",ctr:"CTR",position:"Position"},BL={clicks:"Clicks",impressions:"Impr",ctr:"CTR",position:"Pos"},LL=op;function qD(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
- `):"Run failed."}function U4(e){return e.split("-").map(n=>n.charAt(0).toUpperCase()+n.slice(1)).join(" ")}function qL(e){if(!e)return"—";try{return new Date(e).toLocaleString()}catch{return e}}function UL(e){return e===null?"Unknown":e?"Pass":"Fail"}function Tb(e){return e===0?"12:00 AM":e<12?`${e}:00 AM`:e===12?"12:00 PM":`${e-12}:00 PM`}function $L(e,n){return e==="twice-daily"?"twice-daily":e.startsWith("weekly@")?`${e}@${n}`:`daily@${n}`}function VL(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 IL(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 ${Tb(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 ${Tb(h)} · ${r}`}return`${e} · ${r}`}function $4(e,n){return n&&n!==e?`${e} · ${n}`:e}function PL(){const e=Intl.DateTimeFormat().resolvedOptions().timeZone,n=new Intl.DateTimeFormat("en-US",{timeZoneName:"short"}).formatToParts().find(i=>i.type==="timeZoneName")?.value;return $4(e,n)}function V4(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 I4={bg:"--canonry-embed-bg",fg:"--canonry-embed-fg"},P4=/^(?:#(?:[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 G4(e){if(!e)return{};const n={};for(const[i,r]of Object.entries(e)){const l=I4[i];if(!l||typeof r!="string")continue;const c=r.trim();P4.test(c)&&(n[l]=c)}return n}const _e=(e,n,i,r)=>{const l={_id:e,baseUrl:n?.baseUrl||(n?.client??H).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]},H4=e=>_e("getApiV1ProjectsByName",e),Q4=e=>ze({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await Nv({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:H4(e)}),Ei=e=>_e("getApiV1Projects",e),xc=e=>ze({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await oj({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:Ei(e)}),wp=e=>_e("getApiV1Runs",e),jp=e=>ze({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await wj({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:wp(e)}),K4=e=>_e("getApiV1RunsById",e),K0=e=>ze({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await kv({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:K4(e)}),Z4=e=>_e("getApiV1Settings",e),Y4=e=>ze({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await Av({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:Z4(e)}),X4=e=>_e("getApiV1ProjectsByNameGoogleConnections",e),GL=e=>ze({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await Uj({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:X4(e)}),J4=e=>_e("getApiV1ProjectsByNameGoogleProperties",e),HL=e=>ze({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await Ij({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:J4(e)}),F4=e=>_e("getApiV1ProjectsByNameGoogleGscPerformance",e),QL=e=>ze({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await Qj({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:F4(e)}),W4=e=>_e("getApiV1ProjectsByNameGoogleGscPerformanceDaily",e),KL=e=>ze({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await Kj({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:W4(e)}),eD=e=>_e("getApiV1ProjectsByNameGoogleGscInspections",e),ZL=e=>ze({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await Yj({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:eD(e)}),tD=e=>_e("getApiV1ProjectsByNameGoogleGscDeindexed",e),YL=e=>ze({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await Xj({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:tD(e)}),nD=e=>_e("getApiV1ProjectsByNameGoogleGscCoverage",e),XL=e=>ze({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await _v({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:nD(e)}),aD=e=>_e("getApiV1ProjectsByNameGoogleGscCoverageHistory",e),JL=e=>ze({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await Jj({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:aD(e)}),FL=e=>_e("getApiV1ProjectsByNameGoogleGscSitemaps",e),iD=e=>_e("getApiV1ProjectsByNameGbpLocations",e),WL=e=>ze({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await nN({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:iD(e)}),e6=e=>({mutationFn:async i=>{const{data:r}=await aN({...e,...i,throwOnError:!0});return r}}),t6=e=>({mutationFn:async i=>{const{data:r}=await iN({...e,...i,throwOnError:!0});return r}}),sD=e=>_e("getApiV1ProjectsByNameGbpKeywords",e),n6=e=>ze({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await sN({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:sD(e)}),rD=e=>_e("getApiV1ProjectsByNameGbpPlaceActions",e),a6=e=>ze({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await rN({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:rD(e)}),oD=e=>_e("getApiV1ProjectsByNameGbpLodging",e),i6=e=>ze({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await oN({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:oD(e)}),lD=e=>_e("getApiV1ProjectsByNameGbpPlaces",e),s6=e=>ze({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await lN({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:lD(e)}),cD=e=>_e("getApiV1ProjectsByNameGbpSummary",e),r6=e=>ze({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await cN({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:cD(e)}),uD=e=>_e("getApiV1ProjectsByNameBingStatus",e),o6=e=>ze({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await fN({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:uD(e)}),dD=e=>_e("getApiV1ProjectsByNameBingSites",e),l6=e=>ze({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await pN({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:dD(e)}),fD=e=>_e("getApiV1ProjectsByNameBingCoverage",e),c6=e=>ze({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await Cv({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:fD(e)}),pD=e=>_e("getApiV1ProjectsByNameBingInspections",e),u6=e=>ze({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await hN({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:pD(e)}),mD=e=>_e("getApiV1ProjectsByNameBingPerformance",e),d6=e=>ze({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await vN({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:mD(e)}),hD=e=>_e("getApiV1ProjectsByNameGaStatus",e),f6=e=>ze({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await wN({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:hD(e)}),gD=e=>_e("getApiV1ProjectsByNameGaTraffic",e),p6=e=>ze({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await NN({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:gD(e)}),yD=e=>_e("getApiV1ProjectsByNameGaAiReferralHistory",e),m6=e=>ze({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await kN({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:yD(e)}),bD=e=>_e("getApiV1ProjectsByNameGaSocialReferralHistory",e),h6=e=>ze({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await AN({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:bD(e)}),vD=e=>_e("getApiV1ProjectsByNameGaSessionHistory",e),g6=e=>ze({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await _N({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:vD(e)}),SD=e=>_e("getApiV1ProjectsByNameReport",e),y6=e=>ze({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await zN({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:SD(e)}),xD=e=>_e("getApiV1ProjectsByNameCitationsVisibility",e),b6=e=>ze({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await TN({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:xD(e)}),wD=e=>_e("getApiV1ProjectsByNameTrafficSources",e),v6=e=>ze({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await FN({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:wD(e)}),jD=e=>_e("getApiV1ProjectsByNameTrafficStatus",e),S6=e=>ze({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await WN({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:jD(e)}),ND=e=>_e("getApiV1ProjectsByNameTrafficSourcesById",e),x6=e=>ze({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await ek({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:ND(e)}),kD=e=>_e("getApiV1ProjectsByNameTrafficEvents",e),w6=e=>ze({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await tk({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:kD(e)}),AD=e=>_e("getApiV1ProjectsByNameDiscoverSessions",e),j6=e=>ze({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await ak({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:AD(e)}),_D=e=>_e("getApiV1ProjectsByNameDiscoverSessionsById",e),N6=e=>ze({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await ik({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:_D(e)}),CD=e=>_e("getApiV1ProjectsByNameDiscoverSessionsByIdPromote",e),k6=e=>ze({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await sk({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:CD(e)}),zD=e=>_e("getApiV1ProjectsByNameTechnicalAeo",e),A6=e=>ze({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await ok({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:zD(e)}),TD=e=>_e("getApiV1ProjectsByNameTechnicalAeoPages",e),_6=e=>ze({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await lk({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:TD(e)}),ED=e=>_e("getApiV1ProjectsByNameTechnicalAeoTrend",e),C6=e=>ze({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await ck({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:ED(e)}),OD=e=>_e("getApiV1ProjectsByNameAgentProviders",e),DD=e=>ze({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await dk({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:OD(e)});function Eb(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 z6(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 T6(e){return e==="High"?"negative":e==="Moderate"?"caution":"neutral"}const E6={positive:"text-emerald-400",caution:"text-amber-400",negative:"text-rose-400",neutral:"text-zinc-400"};function RD(e){return e.displayName??e.name.charAt(0).toUpperCase()+e.name.slice(1)}function Us(e){const n=[e.detail,e.hint].filter(Boolean);return n.length>0?n.join(`
57
- `):void 0}function MD(e,n,i){return e.map(r=>{if(r.id==="api")return{...r,tone:Eb(n.apiStatus),detail:n.apiStatus.state==="ok"?"Healthy":"Needs attention",meta:n.apiStatus.detail};if(r.id==="worker")return{...r,tone:Eb(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=>RD(g)).join(" · ");return{...r,label:"Providers",tone:d?"positive":"caution",detail:`${l} of ${c} configured`,meta:h||"None configured"}})}function BD(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 LD(e,n,i){const r=BD(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",Of=new Set;let Ob=!1,qD=0,wc={runs:{},batches:{}};function UD(){const e=_i();for(const n of Of)n(e)}function $D(e){if(!e)return{runs:{},batches:{}};try{const n=JSON.parse(e);return{runs:n.runs??{},batches:n.batches??{}}}catch{return{runs:{},batches:{}}}}function VD(){typeof window>"u"||window.sessionStorage.setItem(Y0,JSON.stringify(wc))}function X0(){Ob||(Ob=!0,!(typeof window>"u")&&(wc=$D(window.sessionStorage.getItem(Y0))))}function jc(e){wc=e,VD(),UD()}function _i(){return X0(),wc}function ID(e){return X0(),Of.add(e),()=>{Of.delete(e)}}function J0(e){const n=_i();jc({...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 uf(e){const n=_i();if(!n.runs[e])return;const{[e]:i,...r}=n.runs;jc({...n,runs:r})}function PD(e){const n=_i(),i=`batch_${Date.now()}_${++qD}`;return jc({...n,batches:{...n.batches,[i]:{batchId:i,runIds:e.runIds,queuedCount:e.queuedCount,skippedCount:e.skippedCount}}}),i}function GD(e){const n=_i();if(!n.batches[e])return;const{[e]:i,...r}=n.batches;jc({...n,batches:r})}function HD(e){return e==="completed"||e==="partial"||e==="failed"||e==="cancelled"}const QD=10*6e4;function KD(e,n,i,r){return e.filter(l=>!n.has(l.runId)&&i-(l.trackedAt??0)>=r)}function ZD(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 Db=e=>typeof e=="boolean"?`${e}`:e===0?"0":e,Rb=yv,F0=(e,n)=>i=>{var r;if(n?.variants==null)return Rb(e,i?.class,i?.className);const{variants:l,defaultVariants:c}=n,d=Object.keys(l).map(v=>{const S=i?.[v],x=c?.[v];if(S===null)return null;const N=Db(S)||Db(x);return l[v][N]}),h=i&&Object.entries(i).reduce((v,S)=>{let[x,N]=S;return N===void 0||(v[x]=N),v},{}),g=n==null||(r=n.compoundVariants)===null||r===void 0?void 0:r.reduce((v,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})?[...v,x,N]:v},[]);return Rb(e,d,g,i?.class,i?.className)},YD=(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},XD=(e,n)=>({classGroupId:e,validator:n}),W0=(e=new Map,n=null,i)=>({nextPart:e,validators:n,classGroupId:i}),cc="-",Mb=[],JD="arbitrary..",FD=e=>{const n=e3(e),{conflictingClassGroups:i,conflictingClassGroupModifiers:r}=e;return{getClassGroupId:d=>{if(d.startsWith("[")&&d.endsWith("]"))return WD(d);const h=d.split(cc),g=h[0]===""&&h.length>1?1:0;return eS(h,g,n)},getConflictingClassGroupIds:(d,h)=>{if(h){const g=r[d],v=i[d];return g?v?YD(v,g):g:v||Mb}return i[d]||Mb}}},eS=(e,n,i)=>{if(e.length-n===0)return i.classGroupId;const l=e[n],c=i.nextPart.get(l);if(c){const v=eS(e,n+1,c);if(v)return v}const d=i.validators;if(d===null)return;const h=n===0?e.join(cc):e.slice(n).join(cc),g=d.length;for(let v=0;v<g;v++){const S=d[v];if(S.validator(h))return S.classGroupId}},WD=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?JD+r:void 0})(),e3=e=>{const{theme:n,classGroups:i}=e;return t3(i,n)},t3=(e,n)=>{const i=W0();for(const r in e){const l=e[r];Np(l,i,r,n)}return i},Np=(e,n,i,r)=>{const l=e.length;for(let c=0;c<l;c++){const d=e[c];n3(d,n,i,r)}},n3=(e,n,i,r)=>{if(typeof e=="string"){a3(e,n,i);return}if(typeof e=="function"){i3(e,n,i,r);return}s3(e,n,i,r)},a3=(e,n,i)=>{const r=e===""?n:tS(n,e);r.classGroupId=i},i3=(e,n,i,r)=>{if(r3(e)){Np(e(r),n,i,r);return}n.validators===null&&(n.validators=[]),n.validators.push(XD(i,e))},s3=(e,n,i,r)=>{const l=Object.entries(e),c=l.length;for(let d=0;d<c;d++){const[h,g]=l[d];Np(g,tS(n,h),i,r)}},tS=(e,n)=>{let i=e;const r=n.split(cc),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},r3=e=>"isThemeGetter"in e&&e.isThemeGetter===!0,o3=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)}}},Df="!",Bb=":",l3=[],Lb=(e,n,i,r,l)=>({modifiers:e,hasImportantModifier:n,baseClassName:i,maybePostfixModifierPosition:r,isExternal:l}),c3=e=>{const{prefix:n,experimentalParseClassName:i}=e;let r=l=>{const c=[];let d=0,h=0,g=0,v;const S=l.length;for(let k=0;k<S;k++){const E=l[k];if(d===0&&h===0){if(E===Bb){c.push(l.slice(g,k)),g=k+1;continue}if(E==="/"){v=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(Df)?(N=x.slice(0,-1),_=!0):x.startsWith(Df)&&(N=x.slice(1),_=!0);const T=v&&v>g?v-g:void 0;return Lb(c,_,N,T)};if(n){const l=n+Bb,c=r;r=d=>d.startsWith(l)?c(d.slice(l.length)):Lb(l3,!1,d,void 0,!0)}if(i){const l=r;r=c=>i({className:c,parseClassName:l})}return r},u3=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}},d3=e=>({cache:o3(e.cacheSize),parseClassName:c3(e),sortModifiers:u3(e),...FD(e)}),f3=/\s+/,p3=(e,n)=>{const{parseClassName:i,getClassGroupId:r,getConflictingClassGroupIds:l,sortModifiers:c}=n,d=[],h=e.trim().split(f3);let g="";for(let v=h.length-1;v>=0;v-=1){const S=h[v],{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 I=N.length===0?"":N.length===1?N[0]:c(N).join(":"),G=_?I+Df:I,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},m3=(...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},h3=(e,...n)=>{let i,r,l,c;const d=g=>{const v=n.reduce((S,x)=>x(S),e());return i=d3(v),r=i.cache.get,l=i.cache.set,c=h,h(g)},h=g=>{const v=r(g);if(v)return v;const S=p3(g,i);return l(g,S),S};return c=d,(...g)=>c(m3(...g))},g3=[],zt=e=>{const n=i=>i[e]||g3;return n.isThemeGetter=!0,n},aS=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,iS=/^\((?:(\w[\w-]*):)?(.+)\)$/i,y3=/^\d+(?:\.\d+)?\/\d+(?:\.\d+)?$/,b3=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,v3=/\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$/,S3=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,x3=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,w3=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,Ha=e=>y3.test(e),Ee=e=>!!e&&!Number.isNaN(Number(e)),Qa=e=>!!e&&Number.isInteger(Number(e)),df=e=>e.endsWith("%")&&Ee(e.slice(0,-1)),ma=e=>b3.test(e),sS=()=>!0,j3=e=>v3.test(e)&&!S3.test(e),kp=()=>!1,N3=e=>x3.test(e),k3=e=>w3.test(e),A3=e=>!me(e)&&!he(e),_3=e=>ti(e,lS,kp),me=e=>aS.test(e),xi=e=>ti(e,cS,j3),qb=e=>ti(e,M3,Ee),C3=e=>ti(e,dS,sS),z3=e=>ti(e,uS,kp),Ub=e=>ti(e,rS,kp),T3=e=>ti(e,oS,k3),$l=e=>ti(e,fS,N3),he=e=>iS.test(e),Yr=e=>Oi(e,cS),E3=e=>Oi(e,uS),$b=e=>Oi(e,rS),O3=e=>Oi(e,lS),D3=e=>Oi(e,oS),Vl=e=>Oi(e,fS,!0),R3=e=>Oi(e,dS,!0),ti=(e,n,i)=>{const r=aS.exec(e);return r?r[1]?n(r[1]):i(r[2]):!1},Oi=(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",M3=e=>e==="number",uS=e=>e==="family-name",dS=e=>e==="number"||e==="weight",fS=e=>e==="shadow",B3=()=>{const e=zt("color"),n=zt("font"),i=zt("text"),r=zt("font-weight"),l=zt("tracking"),c=zt("leading"),d=zt("breakpoint"),h=zt("container"),g=zt("spacing"),v=zt("radius"),S=zt("shadow"),x=zt("inset-shadow"),N=zt("text-shadow"),_=zt("drop-shadow"),T=zt("blur"),k=zt("perspective"),E=zt("aspect"),R=zt("ease"),I=zt("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],oe=()=>[Ha,"full","auto",...M()],ke=()=>[Qa,"none","subgrid",he,me],Oe=()=>["auto",{span:["full",Qa,he,me]},Qa,he,me],be=()=>[Qa,"auto",he,me],et=()=>["auto","min","max","fr",he,me],Ke=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],J=()=>["start","end","center","stretch","center-safe","end-safe"],B=()=>["auto",...M()],W=()=>[Ha,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...M()],fe=()=>[Ha,"screen","full","dvw","lvw","svw","min","max","fit",...M()],Se=()=>[Ha,"screen","full","lh","dvh","lvh","svh","min","max","fit",...M()],re=()=>[e,he,me],Ze=()=>[...Z(),$b,Ub,{position:[he,me]}],ee=()=>["no-repeat",{repeat:["","x","y","space","round"]}],ue=()=>["auto","cover","contain",O3,_3,{size:[he,me]}],te=()=>[df,Yr,xi],de=()=>["","none","full",v,he,me],ie=()=>["",Ee,Yr,xi],je=()=>["solid","dashed","dotted","double"],tt=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],xe=()=>[Ee,df,$b,Ub],Ue=()=>["","none",T,he,me],Ge=()=>["none",Ee,he,me],Dt=()=>["none",Ee,he,me],Un=()=>[Ee,he,me],Rt=()=>[Ha,"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:[A3],"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",Ee],text:[ma],"text-shadow":[ma],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",Ha,me,he,E]}],container:["container"],columns:[{columns:[Ee,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:oe()}],"inset-x":[{"inset-x":oe()}],"inset-y":[{"inset-y":oe()}],start:[{"inset-s":oe(),start:oe()}],end:[{"inset-e":oe(),end:oe()}],"inset-bs":[{"inset-bs":oe()}],"inset-be":[{"inset-be":oe()}],top:[{top:oe()}],right:[{right:oe()}],bottom:[{bottom:oe()}],left:[{left:oe()}],visibility:["visible","invisible","collapse"],z:[{z:[Qa,"auto",he,me]}],basis:[{basis:[Ha,"full","auto",h,...M()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[Ee,Ha,"auto","initial","none",me]}],grow:[{grow:["",Ee,he,me]}],shrink:[{shrink:["",Ee,he,me]}],order:[{order:[Qa,"first","last","none",he,me]}],"grid-cols":[{"grid-cols":ke()}],"col-start-end":[{col:Oe()}],"col-start":[{"col-start":be()}],"col-end":[{"col-end":be()}],"grid-rows":[{"grid-rows":ke()}],"row-start-end":[{row:Oe()}],"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":et()}],"auto-rows":[{"auto-rows":et()}],gap:[{gap:M()}],"gap-x":[{"gap-x":M()}],"gap-y":[{"gap-y":M()}],"justify-content":[{justify:[...Ke(),"normal"]}],"justify-items":[{"justify-items":[...J(),"normal"]}],"justify-self":[{"justify-self":["auto",...J()]}],"align-content":[{content:["normal",...Ke()]}],"align-items":[{items:[...J(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...J(),{baseline:["","last"]}]}],"place-content":[{"place-content":Ke()}],"place-items":[{"place-items":[...J(),"baseline"]}],"place-self":[{"place-self":["auto",...J()]}],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:W()}],"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",...W()]}],"min-w":[{"min-w":[h,"screen","none",...W()]}],"max-w":[{"max-w":[h,"screen","none","prose",{screen:[d]},...W()]}],h:[{h:["screen","lh",...W()]}],"min-h":[{"min-h":["screen","lh","none",...W()]}],"max-h":[{"max-h":["screen","lh",...W()]}],"font-size":[{text:["base",i,Yr,xi]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[r,R3,C3]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",df,me]}],"font-family":[{font:[E3,z3,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":[Ee,"none",he,qb]}],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:[Ee,"from-font","auto",he,xi]}],"text-decoration-color":[{decoration:re()}],"underline-offset":[{"underline-offset":[Ee,"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:ee()}],"bg-size":[{bg:ue()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},Qa,he,me],radial:["",he,me],conic:[Qa,he,me]},D3,T3]}],"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:ie()}],"border-w-x":[{"border-x":ie()}],"border-w-y":[{"border-y":ie()}],"border-w-s":[{"border-s":ie()}],"border-w-e":[{"border-e":ie()}],"border-w-bs":[{"border-bs":ie()}],"border-w-be":[{"border-be":ie()}],"border-w-t":[{"border-t":ie()}],"border-w-r":[{"border-r":ie()}],"border-w-b":[{"border-b":ie()}],"border-w-l":[{"border-l":ie()}],"divide-x":[{"divide-x":ie()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":ie()}],"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":[Ee,he,me]}],"outline-w":[{outline:["",Ee,Yr,xi]}],"outline-color":[{outline:re()}],shadow:[{shadow:["","none",S,Vl,$l]}],"shadow-color":[{shadow:re()}],"inset-shadow":[{"inset-shadow":["none",x,Vl,$l]}],"inset-shadow-color":[{"inset-shadow":re()}],"ring-w":[{ring:ie()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:re()}],"ring-offset-w":[{"ring-offset":[Ee,xi]}],"ring-offset-color":[{"ring-offset":re()}],"inset-ring-w":[{"inset-ring":ie()}],"inset-ring-color":[{"inset-ring":re()}],"text-shadow":[{"text-shadow":["none",N,Vl,$l]}],"text-shadow-color":[{"text-shadow":re()}],opacity:[{opacity:[Ee,he,me]}],"mix-blend":[{"mix-blend":[...tt(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":tt()}],"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":[Ee]}],"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":[Ee]}],"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:ee()}],"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:[Ee,he,me]}],contrast:[{contrast:[Ee,he,me]}],"drop-shadow":[{"drop-shadow":["","none",_,Vl,$l]}],"drop-shadow-color":[{"drop-shadow":re()}],grayscale:[{grayscale:["",Ee,he,me]}],"hue-rotate":[{"hue-rotate":[Ee,he,me]}],invert:[{invert:["",Ee,he,me]}],saturate:[{saturate:[Ee,he,me]}],sepia:[{sepia:["",Ee,he,me]}],"backdrop-filter":[{"backdrop-filter":["","none",he,me]}],"backdrop-blur":[{"backdrop-blur":Ue()}],"backdrop-brightness":[{"backdrop-brightness":[Ee,he,me]}],"backdrop-contrast":[{"backdrop-contrast":[Ee,he,me]}],"backdrop-grayscale":[{"backdrop-grayscale":["",Ee,he,me]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[Ee,he,me]}],"backdrop-invert":[{"backdrop-invert":["",Ee,he,me]}],"backdrop-opacity":[{"backdrop-opacity":[Ee,he,me]}],"backdrop-saturate":[{"backdrop-saturate":[Ee,he,me]}],"backdrop-sepia":[{"backdrop-sepia":["",Ee,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:[Ee,"initial",he,me]}],ease:[{ease:["linear","initial",R,he,me]}],delay:[{delay:[Ee,he,me]}],animate:[{animate:["none",I,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:Dt()}],"scale-x":[{"scale-x":Dt()}],"scale-y":[{"scale-y":Dt()}],"scale-z":[{"scale-z":Dt()}],"scale-3d":["scale-3d"],skew:[{skew:Un()}],"skew-x":[{"skew-x":Un()}],"skew-y":[{"skew-y":Un()}],transform:[{transform:[he,me,"","none","gpu","cpu"]}],"transform-origin":[{origin:X()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:Rt()}],"translate-x":[{"translate-x":Rt()}],"translate-y":[{"translate-y":Rt()}],"translate-z":[{"translate-z":Rt()}],"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:[Ee,Yr,xi,qb]}],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"]}},L3=h3(B3);function Tn(...e){return L3(yv(e))}const q3=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:Tn(q3({variant:n,size:i,className:e})),...l})});qe.displayName="Button";const U3=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:Tn(U3({variant:n}),e),...i})}const $3=220;function Vb({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)},$3)};return e?f.jsxs(st,{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(st,{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(st,{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(oA,{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(Gs,{className:"size-3","aria-hidden":"true"})})]}):l?f.jsxs("span",{className:"brand-version",children:["v",n]}):null]})]})}function V3({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 Bn({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 Ap({status:e}){return f.jsx(Bn,{tone:Z0(e),children:U4(e)})}const I3=gv,P3=pv,mS=U.forwardRef(({className:e,...n},i)=>f.jsx(Hf,{ref:i,className:Tn("fixed inset-0 z-50 bg-black/70 backdrop-blur-sm",e),...n}));mS.displayName=Hf.displayName;const G3=400,H3=1200,Q3=720,hS=U.forwardRef(({className:e,children:n,...i},r)=>{const[l,c]=U.useState(Q3),d=U.useRef(!1),h=U.useRef(0),g=U.useRef(0),v=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(H3,Math.max(G3,g.current+_));c(T)},[]),x=U.useCallback(()=>{d.current=!1},[]);return f.jsxs(P3,{children:[f.jsx(mS,{}),f.jsxs(Qf,{ref:r,className:Tn("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:v,onPointerMove:S,onPointerUp:x}),n,f.jsxs(mv,{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(Gs,{className:"size-4"}),f.jsx("span",{className:"sr-only",children:"Close"})]})]})]})});hS.displayName=Qf.displayName;const K3=({className:e,...n})=>f.jsx("div",{className:Tn("flex flex-col gap-1.5 pr-10",e),...n}),gS=U.forwardRef(({className:e,...n},i)=>f.jsx(Kf,{ref:i,className:Tn("text-lg font-medium text-zinc-50",e),...n}));gS.displayName=Kf.displayName;const yS=U.forwardRef(({className:e,...n},i)=>f.jsx(hv,{ref:i,className:Tn("text-sm text-zinc-500",e),...n}));yS.displayName=hv.displayName;function Z3({title:e,subtitle:n,children:i,open:r,onClose:l}){return f.jsx(I3,{open:r,onOpenChange:c=>c?void 0:l(),children:f.jsxs(hS,{children:[f.jsxs(K3,{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 Xr({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 Y3=/[\s\-_]+/;function X3(e){const n=e.split(Y3).filter(Boolean);return n.length===0?null:n.map(i=>i.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")).join("[\\s\\-_]*")}function Ib(e,n){const i=J3(n),r=e.split(/(\*\*[^*]+\*\*)/).filter(Boolean).map(v=>v.startsWith("**")&&v.endsWith("**")?{type:"bold",value:v.slice(2,-2)}:{type:"text",value:v}),l=i.flatMap(v=>v.terms).filter(v=>v.trim().length>1);if(l.length===0)return r.map((v,S)=>v.type==="bold"?ks.createElement("strong",{key:`b-${S}`,className:"text-zinc-200 font-semibold"},v.value):v.value).filter(Boolean);const d=[...l].sort((v,S)=>S.length-v.length).map(X3).filter(v=>!!v);if(d.length===0)return r.map((v,S)=>v.type==="bold"?ks.createElement("strong",{key:`b-${S}`,className:"text-zinc-200 font-semibold"},v.value):v.value).filter(Boolean);const h=new RegExp(`(${d.join("|")})`,"gi"),g=new Map;for(const v of i)for(const S of v.terms){const x=lc(S);x&&!g.has(x)&&g.set(x,v.className)}return r.flatMap((v,S)=>v.value.split(h).map((N,_)=>{if(!N)return null;if(_%2===1){const k=g.get(lc(N))??"answer-highlight";return v.type==="bold"?ks.createElement("mark",{key:`hl-${S}-${_}`,className:k},ks.createElement("strong",{className:"text-zinc-200 font-semibold"},N)):ks.createElement("mark",{key:`hl-${S}-${_}`,className:k},N)}return v.type==="bold"?ks.createElement("strong",{key:`b-${S}-${_}`,className:"text-zinc-200 font-semibold"},N):N})).filter(Boolean)}function J3(e){return e.length===0?[]:typeof e[0]=="string"?[{terms:e,className:"answer-highlight"}]:e}function Rf(e){const n=(e??"").trim();return n&&(n.startsWith("/")||/^https?:\/\//i.test(n)||/^mailto:/i.test(n))?n:null}function ff(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 F3({evidence:e,project:n,onClose:i}){const[r,l]=U.useState(!1),[c,d]=U.useState("mentions"),[h,g]=U.useState(-1),[v,S]=U.useState(null),[x,N]=U.useState(!1),[_,T]=U.useState({}),k=VT(n.project),E=new Set(k.map(ic)),R=e.runHistory,I=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,Wl(te.runId).then(de=>{const ie=de.snapshots?.find(je=>je.query===e.query&&je.provider===e.provider);ie&&Z({citationState:ie.citationState,answerMentioned:ie.answerMentioned,visibilityState:ie.visibilityState,visibilityTransition:te.visibilityTransition,provider:ie.provider,model:ie.model??e.model,answerSnippet:ie.answerText??e.answerSnippet,citedDomains:ie.citedDomains??e.citedDomains,competitorDomains:ie.competitorOverlap??e.competitorDomains,recommendedCompetitors:ie.recommendedCompetitors??e.recommendedCompetitors??[],matchedTerms:ie.matchedTerms??e.matchedTerms??[],groundingSources:ie.groundingSources??e.groundingSources,searchQueries:ie.searchQueries,evidenceUrls:[],changeLabel:e.visibilityChangeLabel??e.changeLabel,summary:e.summary})}).catch(()=>{}))},[e,R]);const F=h>=0&&v!==null,O=F?v: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",oe=M?!1:O.visibilityState!=null?O.visibilityState==="visible":O.answerMentioned!=null?O.answerMentioned:O.citationState===sc.cited||O.citationState==="emerging",ke=O.answerMentioned!=null||O.visibilityState!=null||O.recommendedCompetitors.length>0,Oe=O.citedDomains.length>0||O.groundingSources.length>0||O.evidenceUrls.length>0,be=n.project.displayName||n.project.name,et=[...k.map(ic),be,be.split(" ").slice(0,2).join(" "),...O.matchedTerms].filter(te=>te.trim().length>2),Ke=[...O.competitorDomains.flatMap(te=>{const de=$T(te);return de.length>=4?[de]:[]}),...O.recommendedCompetitors].filter(te=>te.trim().length>2),J=[{terms:et,className:"answer-highlight-brand"},...Ke.length>0?[{terms:Ke,className:"answer-highlight-competitor"}]:[]],B=M?"pending":O.visibilityTransition==="lost"?"lost":oe?"mentioned":"not-mentioned",W=U.useRef(0),fe=U.useCallback(async te=>{const de=++W.current;if(te===-1||te===R.length-1){g(-1),S(null),l(!1);return}g(te),l(!1);const ie=R[te],je=`${ie.runId}::${e.query}::${e.provider}`;if(_[je]){S(_[je]);return}N(!0);try{const tt=await Wl(ie.runId);if(de!==W.current)return;const xe=tt.snapshots?.find(Ge=>Ge.query===e.query&&Ge.provider===e.provider)??tt.snapshots?.find(Ge=>Ge.query===e.query),Ue=xe?{citationState:xe.citationState,answerMentioned:xe.answerMentioned,visibilityState:xe.visibilityState,visibilityTransition:ie.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:ff(ie.mentionTransition??ie.visibilityTransition,ie.mentionState??ie.visibilityState),summary:""}:{citationState:ie.citationState,answerMentioned:ie.answerMentioned,visibilityState:ie.visibilityState,visibilityTransition:ie.visibilityTransition,provider:e.provider,model:ie.model??null,answerSnippet:"",citedDomains:[],competitorDomains:[],recommendedCompetitors:[],matchedTerms:[],groundingSources:[],searchQueries:[],evidenceUrls:[],changeLabel:ff(ie.mentionTransition??ie.visibilityTransition,ie.mentionState??ie.visibilityState),summary:"Snapshot data not available for this run."};T(Ge=>({...Ge,[je]:Ue})),S(Ue)}catch{if(de!==W.current)return;S({citationState:ie.citationState,answerMentioned:ie.answerMentioned,visibilityState:ie.visibilityState,visibilityTransition:ie.visibilityTransition,provider:e.provider,model:ie.model??null,answerSnippet:"",citedDomains:[],competitorDomains:[],recommendedCompetitors:[],matchedTerms:[],groundingSources:[],searchQueries:[],evidenceUrls:[],changeLabel:ff(ie.mentionTransition??ie.visibilityTransition,ie.mentionState??ie.visibilityState),summary:"Failed to load historical run data."})}finally{de===W.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(" · "):"",ee=oe?{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 ie=[],je=0;const tt=()=>{if(ie.length===0)return;const xe=ie.join(" ").trim();xe&&de.push(f.jsx("p",{className:de.length>0?"mt-2.5":"",children:Ib(xe,J)},je++)),ie=[]};for(const xe of te){const Ue=xe.trim();if(/^[-\u2013\u2014]{3,}$/.test(Ue)){tt(),de.push(f.jsx("hr",{className:"border-zinc-800/60 my-3"},je++));continue}const Ge=Ue.match(/^(#{1,3})\s+(\S.*)$/);if(Ge){tt();const Dt=Ge[1].length,Un=Ge[2].replace(/^[\p{Emoji}\p{Emoji_Component}\s]+/u,"").trim()||Ge[2],Rt=Dt===1?"text-[13px] font-semibold text-zinc-100 mt-4 mb-1":Dt===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:Rt,children:Ib(Un,J)},je++));continue}if(Ue===""){tt();continue}ie.push(Ue)}return tt(),de};return f.jsx(gv,{open:!0,onOpenChange:te=>{te||i()},children:f.jsxs(pv,{children:[f.jsx(Hf,{className:"fixed inset-0 z-50 bg-black/80 backdrop-blur-sm"}),f.jsxs(Qf,{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(Kf,{className:"text-lg font-semibold text-zinc-50 truncate",children:e.query})]}),f.jsxs(mv,{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(Gs,{className:"size-4"}),f.jsx("span",{className:"sr-only",children:"Close"})]})]}),I&&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 ie=h===-1&&de===R.length-1||h===de,je=te.visibilityState??(te.answerMentioned?"visible":"not-visible"),tt=te.visibilityTransition??je,xe=je==="visible"?"bg-emerald-400":tt==="emerging"?"bg-amber-400":tt==="lost"?"bg-rose-400":"bg-zinc-600",Ge=new Date(te.createdAt).toLocaleDateString(void 0,{month:"short",day:"numeric"}),Dt=!!(te.model&&de>0&&R[de-1]?.model&&R[de-1].model!==te.model);return f.jsxs("button",{type:"button",className:`evidence-run-dot ${ie?"evidence-run-dot--selected":""}`,onClick:()=>{fe(de===R.length-1?-1:de)},"aria-label":[`Run ${Ge}: ${je}`,te.model?`model ${te.model}`:null,Dt?"model changed":null].filter(Boolean).join(" — "),"aria-pressed":ie,children:[f.jsx("span",{className:`size-2 rounded-full ${xe} ${Dt?"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:ee.label}),f.jsx("p",{className:`evidence-position-title evidence-position-title--${B}`,children:ee.title}),f.jsx("p",{className:"evidence-position-meta",children:ee.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(Xr,{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(QA,{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:oe?"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 ${oe?"text-emerald-400":"text-amber-400"}`,viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:oe?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||Oe)&&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(Xr,{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--${oe?"mentioned":"not-mentioned"}`,children:[f.jsx("span",{className:"mention-status-icon",children:M?"…":oe?"✓":"—"}),f.jsx("span",{className:"mention-status-label",children:M?"Pending":oe?"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&&!oe&&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:et.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(Xr,{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=>lc(je.replace(/\.[^.]+$/,""))));return[...O.recommendedCompetitors.filter(je=>!de.has(lc(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(Xr,{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 ie=te.toLowerCase().replace(/^www\./,""),je=E.has(ie),tt=!je&&O.competitorDomains.some(Ue=>Ue.toLowerCase().replace(/^www\./,"")===ie),xe=je?"you":tt?"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"}),tt&&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(Xr,{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 ie=Rf(te.uri),je=te.title||te.uri;return f.jsx("li",{className:"truncate text-sm",children:ie?f.jsx("a",{href:ie,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=Rf(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&&!Oe&&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 Mn(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 pf=[{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 Nc(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 W3=Nc({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"}),eR=Nc({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"}),tR=Nc({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"}),nR=Nc({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"}),aR=[{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:Mn(["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:Mn(["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:Mn(["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:Mn(["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:Mn(["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:Mn(["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:Mn(["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:Mn(["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:Mn(["not-cited","not-cited","not-cited","not-cited","not-cited","cited"])}];pf[0],Math.round(1/9*100),Math.round(2/9*100),pf[1],Mn(["cited","cited","cited","cited","cited"]),pf[2],Math.round(2/7*100),Math.round(3/7*100),Mn(["not-cited","not-cited","not-cited","cited"]);function iR(e,n){return e.runs.find(i=>i.id===n)}function sR(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 rR(e,n,i){if(e){const r=e.visibilityEvidence.find(l=>l.id===i);if(r)return{project:e,evidence:r}}if(n)return sR(n,i)}const oR={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"},lR={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"},cR={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"},uR={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 dR(e){return{id:e.id,tone:oR[e.type],title:e.title,detail:e.cause?.details??e.cause?.cause??"",actionLabel:e.recommendation?.action??uR[e.type],actionGroup:lR[e.type],affectedPhrases:[{query:e.query,evidenceId:"",provider:e.provider,citationState:cR[e.type]}]}}function fR(e){return e.filter(n=>!n.dismissed).map(dR)}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 Pb(e){try{return new Date(e).toLocaleDateString("en-US",{month:"short",day:"numeric",hour:"numeric",minute:"2-digit"})}catch{return e}}function pR(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 mR(e){return e===Rs.manual?"Manual":e===Rs.scheduled?"Scheduled":e===Rs["config-apply"]?"Config apply":e}function _p(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?Pb(e.startedAt):Pb(e.createdAt),duration:pR(e.startedAt??null,e.finishedAt??null),statusDetail:e.error?SS(e.error):hR(e),summary:gR(e),triggerLabel:mR(e.trigger)}}function SS(e){const n=op(e);return n.length>200?n.slice(0,200)+"…":n}function hR(e){switch(e.status){case Qt.queued:return"Waiting for execution slot.";case Qt.running:return"Provider queries in progress.";case Qt.completed:return"All queries checked.";case Qt.partial:return"Run completed with some queries skipped.";case Qt.failed:return e.error?SS(e.error):"Run failed.";case Qt.cancelled:return"Run was cancelled.";default:return""}}function gR(e){const n=vS(e.kind);switch(e.status){case Qt.queued:return`${n} queued`;case Qt.running:return`${n} in progress`;case Qt.completed:return`${n} completed`;case Qt.partial:return`${n} partially completed`;case Qt.failed:return`${n} failed`;case Qt.cancelled:return`${n} cancelled`;default:return e.status}}function yR(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 v=new Set(h.map(T=>T.location??null));v.size===0&&v.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 I=[...v].filter(X=>g.has(`${T.query}::${R}::${X??""}`)),G=(T.providerRuns?.[R]?.length??0)>0,Z=I.length>0?I:G?[null]:[];for(const X of Z){const F=X??"",O=g.get(`${T.query}::${R}::${F}`),M=O?.model??null,oe=M?`${R}:${M}`:null,ke=T.providerRuns?.[R],Oe=oe?T.modelRuns?.[oe]:void 0,be=Ue=>Ue?.filter(Ge=>(Ge.location??null)===X),et=I.length>0?be(ke):ke,Ke=I.length>0?be(Oe):Oe,J=(et?.length?et:null)??(Ke?.length?Ke:null),B=et?.length?"provider":Ke?.length?"model":"query",W=J?J.at(-1).transition:E,fe=J?J.at(-1).visibilityTransition??(J.at(-1).visibilityState==="visible"?"visible":"not-visible"):k?.visibilityTransition??(k?.visibilityState==="visible"?"visible":"not-visible"),Se=J?.at(-1)?.citationState,re=J?.at(-1)?.visibilityState,Ze=O?W==="lost"?"lost":W==="emerging"?"emerging":O.citationState===sc.cited?"cited":"not-cited":Se===sc.cited?"cited":"not-cited",ee=O?.visibilityState??(re==="visible"?"visible":re==="pending"?"pending":"not-visible"),ue=Gb(J||T.runs),te=Hb(J||T.runs),de=bR(T,R),ie=(J??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=vR(ie),tt=B==="provider"&&je.length<=1?"model":B,xe=SR(ie);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:ee,visibilityChangeLabel:Qb(fe,te,{positive:"visible",negative:"not visible",first:"first visibility"}),changeLabel:Qb(W,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:xR(ee,fe,T.query),runHistory:ie,historyScope:tt,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 bR(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 vR(e){const n=new Set;for(const i of e)i.model&&n.add(i.model);return[...n]}function SR(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 Gb(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 Hb(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 Qb(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?`${Jr(r.positive)} in latest run`:`${Jr(r.positive)} for ${n} runs`;case"lost":return"Lost since last run";case"emerging":return Jr(r.first);case"not-cited":case"not-visible":return n<=1?`${Jr(r.negative)} in latest run`:`${Jr(r.negative)} across ${n} runs`;default:return e}}function Jr(e){return e.charAt(0).toUpperCase()+e.slice(1)}function xR(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=yR(n.name,e.timeline,e.latestRunDetails,e.queries),l=[...e.runs].sort((c,d)=>d.createdAt.localeCompare(c.createdAt)).map(c=>_p(c,e.project.displayName||e.project.name));return e.overview?wR(n,e.overview,i,l):jR(n,i,l)}function wR(e,n,i,r){const l=fR(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 jR(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 NR(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?_p(r,l):kR(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,v=d.queryCounts.mentionedQueries,S=d.queryCounts.totalQueries,x=d.providers.length;return{project:n,mentionScore:g,mentionDelta:S>0?`${v} of ${S} queries`:"No data",mentionTone:h.tone,providerCoverage:h.providerCoverage,lastRun:c,insight:S>0?`${v} of ${S} queries mentioned across ${x} provider${x===1?"":"s"}.`:"No runs completed yet.",trend:h.trend??[],competitorPressureLabel:d.scores.competitorPressure.value}}function kR(e,n){return{id:"none",projectId:e,projectName:n,kind:Ne["answer-visibility"],kindLabel:"No runs yet",status:Qt.queued,trigger:Rs.manual,createdAt:"",startedAt:"",duration:"",statusDetail:"",summary:"No runs yet",triggerLabel:""}}function AR(e,n){const i=[],r=[],l=[];for(const d of e){r.push(xS(d)),l.push(NR(d));const h=[...d.runs].sort((g,v)=>v.createdAt.localeCompare(g.createdAt));for(const g of h)i.push(_p(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?_R(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 _R(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/${encodeURIComponent(i.project.name)}`});const l=i.recentRuns.filter(c=>c.status===Qt.running||c.status===Qt.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 uo(){return U.useContext(wS)}function kc(e){const i=uo()?.dashboard??null,r=fn({...xc({client:ne}),enabled:!i,refetchInterval:Xk}),l=fn({...jp({client:ne,query:{kind:"answer-visibility"}}),enabled:!i,staleTime:ao,refetchInterval:T=>T.state.data?.some(R=>R.status==="running"||R.status==="queued")?3e3:ao}),c=fn({...Y4({client:ne}),enabled:!i}),d=r.data??[],h=l.data??[],g=Cw({queries:d.map(T=>{const k=h.filter(I=>I.projectId===T.id),E=k.filter(I=>(I.status==="completed"||I.status==="partial")&&I.kind==="answer-visibility"&&I.trigger!=="probe").sort((I,G)=>G.createdAt.localeCompare(I.createdAt)),R=E.length>0?E[0].id:"no-run";return{queryKey:["project-overview-slim",T.id,R],queryFn:async()=>{const I=await Ev(T.name).catch(()=>null);return{project:T,runs:k,queries:[],competitors:[],timeline:[],latestRunDetails:[],previousRunDetails:[],gscCoverage:null,bingCoverage:null,dbInsights:null,overview:I}},enabled:!i&&r.isSuccess&&l.isSuccess,staleTime:kf}})}),v=g.every(T=>T.isSuccess),S=U.useMemo(()=>{if(i)return i;if(!r.data||!l.data||d.length>0&&!v)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 AR(T,c.data??null)},[i,r.data,l.data,c.data,v,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 CR(e){const n=uo(),i=U.useMemo(()=>!n||!e?null:n.dashboard.projects.find(T=>T.project.name===e)??null,[n,e]),r=fn({...Q4({client:ne,path:{name:e??""}}),enabled:!!e&&!i,staleTime:kf,refetchOnWindowFocus:"always"}),l=fn({...jp({client:ne,query:{kind:"answer-visibility"}}),enabled:!!e,staleTime:ao,refetchOnWindowFocus:"always",refetchInterval:T=>T.state.data?.some(R=>R.projectId===r.data?.id&&(R.status==="running"||R.status==="queued"))?3e3:ao}),c=r.data??null,d=U.useMemo(()=>c?(l.data??[]).filter(T=>T.projectId===c.id):[],[c,l.data]),{latestRunIds:h,previousRunIds:g,latestRunIdsKey:v}=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,I=R?T.filter(G=>G.createdAt===R).map(G=>G.id):[];return{latestRunIds:E,previousRunIds:I,latestRunIdsKey:[...E].sort().join(",")}},[d]),S=fn({queryKey:["project-dashboard-full",c?.id??null,v||"none"],queryFn:async()=>{if(!c||!e)return null;const[T,k,E,R,I,G,Z,X,F]=await Promise.all([Sk(e).catch(()=>[]),xk(e).catch(()=>[]),wk(e).catch(()=>[]),h.length?Promise.all(h.map(O=>Wl(O).catch(()=>null))).then(O=>O.filter(M=>M!=null)):Promise.resolve([]),g.length?Promise.all(g.map(O=>Wl(O).catch(()=>null))).then(O=>O.filter(M=>M!=null)):Promise.resolve([]),Mk(e).catch(()=>null),qk(e).catch(()=>null),$k(e).catch(()=>null),Ev(e).catch(()=>null)]);return{project:c,runs:d,queries:T,competitors:k,timeline:E,latestRunDetails:R,previousRunDetails:I,gscCoverage:G,bingCoverage:Z,dbInsights:X,overview:F}},enabled:!!c&&!!e&&l.isSuccess,staleTime:kf,refetchOnWindowFocus:"always",refetchInterval:Jk}),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 zR=["health"];async function TR(){const e=await Ik("/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 Cp(e,n){return fn({queryKey:zR,queryFn:TR,enabled:e,refetchInterval:15e3,initialData:n})}function ER(e){return fn({...K0({client:ne,path:{id:e??""}}),enabled:!!e,refetchInterval:n=>{const i=n.state.data?.status;return i==="running"||i==="queued"?3e3:!1}})}function zp(){const e=fc(),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:nn.to,search:v=>({...v,runId:g,evidenceId:void 0})})},openEvidence:g=>{e({to:i,from:nn.to,search:v=>({...v,evidenceId:g,runId:void 0})})},closeDrawer:()=>{e({to:i,from:nn.to,search:g=>({...g,runId:void 0,evidenceId:void 0})})}}}const OR={negative:"toast-card-negative",caution:"toast-card-caution",positive:"toast-card-positive",neutral:"toast-card-neutral"};function DR(e){if(e.cta)return`${e.cta.label}: ${e.title}`}function RR(){const e=U.useSyncExternalStore(Zk,Yy,Yy),n=fc(),{openRun:i}=zp(),r=U.useCallback(c=>{Nf(c)},[]),l=U.useCallback(c=>{c.cta&&(c.cta.intent==="open-run-drawer"?i(c.cta.runId):n({to:"/runs"}),Nf(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 ${OR[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":DR(c),children:c.cta.label}):null]}),f.jsx("button",{type:"button",onClick:()=>r(c.id),className:"toast-dismiss","aria-label":"Dismiss",children:f.jsx(Gs,{className:"size-3.5"})})]},c.id))})}function MR(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 v=()=>{l.current.wasAtEnd=c(g)<=i};return g.addEventListener("scroll",v,{passive:!0}),()=>g.removeEventListener("scroll",v)},[i]),U.useLayoutEffect(()=>{const g=r.current;if(!g)return;const v=g.scrollHeight;v>l.current.scrollHeight&&l.current.wasAtEnd&&(g.scrollTop=v),l.current.scrollHeight=v},e),U.useEffect(()=>{const g=r.current;if(!g||typeof ResizeObserver>"u")return;const v=new ResizeObserver(()=>{const S=g.scrollHeight;S>l.current.scrollHeight&&l.current.wasAtEnd&&(g.scrollTop=S),l.current.scrollHeight=S});return v.observe(g),g.firstElementChild&&v.observe(g.firstElementChild),()=>v.disconnect()},[]),{ref:r,scrollToEnd:h,isAtEnd:d}}async function Tp(e){try{return await e.json()}catch{return{}}}function BR(){return typeof window<"u"&&window.__CANONRY_CONFIG__?.basePath?window.__CANONRY_CONFIG__.basePath.replace(/\/$/,"")+"/api/v1":"/api/v1"}const Ep=BR();function Op(e){e===401&&Zf()}async function Kb(e){const n=await fetch(`${Ep}/projects/${encodeURIComponent(e)}/agent/transcript`,{credentials:"include"});if(!n.ok){Op(n.status);const i=await Tp(n);throw new Hn(i.error?.message??`transcript fetch failed: ${n.status}`,n.status,i.error?.code)}return await n.json()}async function LR(e){const n=await fetch(`${Ep}/projects/${encodeURIComponent(e)}/agent/transcript`,{method:"DELETE",credentials:"include"});if(!n.ok){Op(n.status);const i=await Tp(n);throw new Hn(i.error?.message??`reset failed: ${n.status}`,n.status,i.error?.code)}}async function qR({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(`${Ep}/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){Op(g.status);const _=await Tp(g);throw new Hn(_.error?.message??`prompt failed: ${g.status}`,g.status,_.error?.code)}const v=g.body.getReader(),S=new TextDecoder;let x="";const N=()=>{v.cancel().catch(()=>{})};c?.addEventListener("abort",N,{once:!0});try{for(;;){const{value:_,done:T}=await v.read();if(T)break;x+=S.decode(_,{stream:!0});let k=x.indexOf(`
56
+ `):"Run failed."}function UD(e){return e.split("-").map(n=>n.charAt(0).toUpperCase()+n.slice(1)).join(" ")}function qL(e){if(!e)return"—";try{return new Date(e).toLocaleString()}catch{return e}}function UL(e){return e===null?"Unknown":e?"Pass":"Fail"}function Tb(e){return e===0?"12:00 AM":e<12?`${e}:00 AM`:e===12?"12:00 PM":`${e-12}:00 PM`}function $L(e,n){return e==="twice-daily"?"twice-daily":e.startsWith("weekly@")?`${e}@${n}`:`daily@${n}`}function VL(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 IL(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 ${Tb(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 ${Tb(h)} · ${r}`}return`${e} · ${r}`}function $D(e,n){return n&&n!==e?`${e} · ${n}`:e}function PL(){const e=Intl.DateTimeFormat().resolvedOptions().timeZone,n=new Intl.DateTimeFormat("en-US",{timeZoneName:"short"}).formatToParts().find(i=>i.type==="timeZoneName")?.value;return $D(e,n)}function VD(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 ID={bg:"--canonry-embed-bg",fg:"--canonry-embed-fg"},PD=/^(?:#(?:[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 GD(e){if(!e)return{};const n={};for(const[i,r]of Object.entries(e)){const l=ID[i];if(!l||typeof r!="string")continue;const c=r.trim();PD.test(c)&&(n[l]=c)}return n}const _e=(e,n,i,r)=>{const l={_id:e,baseUrl:n?.baseUrl||(n?.client??H).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]},HD=e=>_e("getApiV1ProjectsByName",e),QD=e=>ze({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await Nv({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:HD(e)}),Ei=e=>_e("getApiV1Projects",e),xc=e=>ze({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await oj({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:Ei(e)}),wp=e=>_e("getApiV1Runs",e),jp=e=>ze({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await wj({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:wp(e)}),KD=e=>_e("getApiV1RunsById",e),K0=e=>ze({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await kv({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:KD(e)}),ZD=e=>_e("getApiV1Settings",e),YD=e=>ze({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await Av({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:ZD(e)}),XD=e=>_e("getApiV1ProjectsByNameGoogleConnections",e),GL=e=>ze({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await Uj({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:XD(e)}),JD=e=>_e("getApiV1ProjectsByNameGoogleProperties",e),HL=e=>ze({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await Ij({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:JD(e)}),FD=e=>_e("getApiV1ProjectsByNameGoogleGscPerformance",e),QL=e=>ze({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await Qj({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:FD(e)}),WD=e=>_e("getApiV1ProjectsByNameGoogleGscPerformanceDaily",e),KL=e=>ze({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await Kj({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:WD(e)}),e4=e=>_e("getApiV1ProjectsByNameGoogleGscInspections",e),ZL=e=>ze({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await Yj({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:e4(e)}),t4=e=>_e("getApiV1ProjectsByNameGoogleGscDeindexed",e),YL=e=>ze({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await Xj({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:t4(e)}),n4=e=>_e("getApiV1ProjectsByNameGoogleGscCoverage",e),XL=e=>ze({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await _v({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:n4(e)}),a4=e=>_e("getApiV1ProjectsByNameGoogleGscCoverageHistory",e),JL=e=>ze({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await Jj({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:a4(e)}),FL=e=>_e("getApiV1ProjectsByNameGoogleGscSitemaps",e),i4=e=>_e("getApiV1ProjectsByNameGbpLocations",e),WL=e=>ze({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await nN({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:i4(e)}),e6=e=>({mutationFn:async i=>{const{data:r}=await aN({...e,...i,throwOnError:!0});return r}}),t6=e=>({mutationFn:async i=>{const{data:r}=await iN({...e,...i,throwOnError:!0});return r}}),s4=e=>_e("getApiV1ProjectsByNameGbpKeywords",e),n6=e=>ze({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await sN({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:s4(e)}),r4=e=>_e("getApiV1ProjectsByNameGbpPlaceActions",e),a6=e=>ze({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await rN({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:r4(e)}),o4=e=>_e("getApiV1ProjectsByNameGbpLodging",e),i6=e=>ze({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await oN({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:o4(e)}),l4=e=>_e("getApiV1ProjectsByNameGbpPlaces",e),s6=e=>ze({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await lN({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:l4(e)}),c4=e=>_e("getApiV1ProjectsByNameGbpSummary",e),r6=e=>ze({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await cN({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:c4(e)}),u4=e=>_e("getApiV1ProjectsByNameBingStatus",e),o6=e=>ze({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await fN({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:u4(e)}),d4=e=>_e("getApiV1ProjectsByNameBingSites",e),l6=e=>ze({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await pN({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:d4(e)}),f4=e=>_e("getApiV1ProjectsByNameBingCoverage",e),c6=e=>ze({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await Cv({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:f4(e)}),p4=e=>_e("getApiV1ProjectsByNameBingInspections",e),u6=e=>ze({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await hN({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:p4(e)}),m4=e=>_e("getApiV1ProjectsByNameBingPerformance",e),d6=e=>ze({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await vN({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:m4(e)}),h4=e=>_e("getApiV1ProjectsByNameGaStatus",e),f6=e=>ze({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await wN({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:h4(e)}),g4=e=>_e("getApiV1ProjectsByNameGaTraffic",e),p6=e=>ze({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await NN({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:g4(e)}),y4=e=>_e("getApiV1ProjectsByNameGaAiReferralHistory",e),m6=e=>ze({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await kN({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:y4(e)}),b4=e=>_e("getApiV1ProjectsByNameGaSocialReferralHistory",e),h6=e=>ze({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await AN({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:b4(e)}),v4=e=>_e("getApiV1ProjectsByNameGaSessionHistory",e),g6=e=>ze({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await _N({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:v4(e)}),S4=e=>_e("getApiV1ProjectsByNameReport",e),y6=e=>ze({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await zN({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:S4(e)}),x4=e=>_e("getApiV1ProjectsByNameCitationsVisibility",e),b6=e=>ze({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await TN({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:x4(e)}),w4=e=>_e("getApiV1ProjectsByNameTrafficSources",e),v6=e=>ze({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await FN({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:w4(e)}),j4=e=>_e("getApiV1ProjectsByNameTrafficStatus",e),S6=e=>ze({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await WN({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:j4(e)}),N4=e=>_e("getApiV1ProjectsByNameTrafficSourcesById",e),x6=e=>ze({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await ek({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:N4(e)}),k4=e=>_e("getApiV1ProjectsByNameTrafficEvents",e),w6=e=>ze({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await tk({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:k4(e)}),A4=e=>_e("getApiV1ProjectsByNameDiscoverSessions",e),j6=e=>ze({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await ak({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:A4(e)}),_4=e=>_e("getApiV1ProjectsByNameDiscoverSessionsById",e),N6=e=>ze({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await ik({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:_4(e)}),C4=e=>_e("getApiV1ProjectsByNameDiscoverSessionsByIdPromote",e),k6=e=>ze({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await sk({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:C4(e)}),z4=e=>_e("getApiV1ProjectsByNameTechnicalAeo",e),A6=e=>ze({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await ok({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:z4(e)}),T4=e=>_e("getApiV1ProjectsByNameTechnicalAeoPages",e),_6=e=>ze({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await lk({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:T4(e)}),E4=e=>_e("getApiV1ProjectsByNameTechnicalAeoTrend",e),C6=e=>ze({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await ck({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:E4(e)}),O4=e=>_e("getApiV1ProjectsByNameAgentProviders",e),D4=e=>ze({queryFn:async({queryKey:n,signal:i})=>{const{data:r}=await dk({...e,...n[0],signal:i,throwOnError:!0});return r},queryKey:O4(e)});function Eb(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 z6(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 T6(e){return e==="High"?"negative":e==="Moderate"?"caution":"neutral"}const E6={positive:"text-emerald-400",caution:"text-amber-400",negative:"text-rose-400",neutral:"text-zinc-400"};function R4(e){return e.displayName??e.name.charAt(0).toUpperCase()+e.name.slice(1)}function Us(e){const n=[e.detail,e.hint].filter(Boolean);return n.length>0?n.join(`
57
+ `):void 0}function M4(e,n,i){return e.map(r=>{if(r.id==="api")return{...r,tone:Eb(n.apiStatus),detail:n.apiStatus.state==="ok"?"Healthy":"Needs attention",meta:n.apiStatus.detail};if(r.id==="worker")return{...r,tone:Eb(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=>R4(g)).join(" · ");return{...r,label:"Providers",tone:d?"positive":"caution",detail:`${l} of ${c} configured`,meta:h||"None configured"}})}function B4(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 L4(e,n,i){const r=B4(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",Of=new Set;let Ob=!1,q4=0,wc={runs:{},batches:{}};function U4(){const e=_i();for(const n of Of)n(e)}function $4(e){if(!e)return{runs:{},batches:{}};try{const n=JSON.parse(e);return{runs:n.runs??{},batches:n.batches??{}}}catch{return{runs:{},batches:{}}}}function V4(){typeof window>"u"||window.sessionStorage.setItem(Y0,JSON.stringify(wc))}function X0(){Ob||(Ob=!0,!(typeof window>"u")&&(wc=$4(window.sessionStorage.getItem(Y0))))}function jc(e){wc=e,V4(),U4()}function _i(){return X0(),wc}function I4(e){return X0(),Of.add(e),()=>{Of.delete(e)}}function J0(e){const n=_i();jc({...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 uf(e){const n=_i();if(!n.runs[e])return;const{[e]:i,...r}=n.runs;jc({...n,runs:r})}function P4(e){const n=_i(),i=`batch_${Date.now()}_${++q4}`;return jc({...n,batches:{...n.batches,[i]:{batchId:i,runIds:e.runIds,queuedCount:e.queuedCount,skippedCount:e.skippedCount}}}),i}function G4(e){const n=_i();if(!n.batches[e])return;const{[e]:i,...r}=n.batches;jc({...n,batches:r})}function H4(e){return e==="completed"||e==="partial"||e==="failed"||e==="cancelled"}const Q4=10*6e4;function K4(e,n,i,r){return e.filter(l=>!n.has(l.runId)&&i-(l.trackedAt??0)>=r)}function Z4(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 Db=e=>typeof e=="boolean"?`${e}`:e===0?"0":e,Rb=yv,F0=(e,n)=>i=>{var r;if(n?.variants==null)return Rb(e,i?.class,i?.className);const{variants:l,defaultVariants:c}=n,d=Object.keys(l).map(v=>{const S=i?.[v],x=c?.[v];if(S===null)return null;const N=Db(S)||Db(x);return l[v][N]}),h=i&&Object.entries(i).reduce((v,S)=>{let[x,N]=S;return N===void 0||(v[x]=N),v},{}),g=n==null||(r=n.compoundVariants)===null||r===void 0?void 0:r.reduce((v,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})?[...v,x,N]:v},[]);return Rb(e,d,g,i?.class,i?.className)},Y4=(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},X4=(e,n)=>({classGroupId:e,validator:n}),W0=(e=new Map,n=null,i)=>({nextPart:e,validators:n,classGroupId:i}),cc="-",Mb=[],J4="arbitrary..",F4=e=>{const n=e3(e),{conflictingClassGroups:i,conflictingClassGroupModifiers:r}=e;return{getClassGroupId:d=>{if(d.startsWith("[")&&d.endsWith("]"))return W4(d);const h=d.split(cc),g=h[0]===""&&h.length>1?1:0;return eS(h,g,n)},getConflictingClassGroupIds:(d,h)=>{if(h){const g=r[d],v=i[d];return g?v?Y4(v,g):g:v||Mb}return i[d]||Mb}}},eS=(e,n,i)=>{if(e.length-n===0)return i.classGroupId;const l=e[n],c=i.nextPart.get(l);if(c){const v=eS(e,n+1,c);if(v)return v}const d=i.validators;if(d===null)return;const h=n===0?e.join(cc):e.slice(n).join(cc),g=d.length;for(let v=0;v<g;v++){const S=d[v];if(S.validator(h))return S.classGroupId}},W4=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?J4+r:void 0})(),e3=e=>{const{theme:n,classGroups:i}=e;return t3(i,n)},t3=(e,n)=>{const i=W0();for(const r in e){const l=e[r];Np(l,i,r,n)}return i},Np=(e,n,i,r)=>{const l=e.length;for(let c=0;c<l;c++){const d=e[c];n3(d,n,i,r)}},n3=(e,n,i,r)=>{if(typeof e=="string"){a3(e,n,i);return}if(typeof e=="function"){i3(e,n,i,r);return}s3(e,n,i,r)},a3=(e,n,i)=>{const r=e===""?n:tS(n,e);r.classGroupId=i},i3=(e,n,i,r)=>{if(r3(e)){Np(e(r),n,i,r);return}n.validators===null&&(n.validators=[]),n.validators.push(X4(i,e))},s3=(e,n,i,r)=>{const l=Object.entries(e),c=l.length;for(let d=0;d<c;d++){const[h,g]=l[d];Np(g,tS(n,h),i,r)}},tS=(e,n)=>{let i=e;const r=n.split(cc),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},r3=e=>"isThemeGetter"in e&&e.isThemeGetter===!0,o3=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)}}},Df="!",Bb=":",l3=[],Lb=(e,n,i,r,l)=>({modifiers:e,hasImportantModifier:n,baseClassName:i,maybePostfixModifierPosition:r,isExternal:l}),c3=e=>{const{prefix:n,experimentalParseClassName:i}=e;let r=l=>{const c=[];let d=0,h=0,g=0,v;const S=l.length;for(let k=0;k<S;k++){const E=l[k];if(d===0&&h===0){if(E===Bb){c.push(l.slice(g,k)),g=k+1;continue}if(E==="/"){v=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(Df)?(N=x.slice(0,-1),_=!0):x.startsWith(Df)&&(N=x.slice(1),_=!0);const T=v&&v>g?v-g:void 0;return Lb(c,_,N,T)};if(n){const l=n+Bb,c=r;r=d=>d.startsWith(l)?c(d.slice(l.length)):Lb(l3,!1,d,void 0,!0)}if(i){const l=r;r=c=>i({className:c,parseClassName:l})}return r},u3=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}},d3=e=>({cache:o3(e.cacheSize),parseClassName:c3(e),sortModifiers:u3(e),...F4(e)}),f3=/\s+/,p3=(e,n)=>{const{parseClassName:i,getClassGroupId:r,getConflictingClassGroupIds:l,sortModifiers:c}=n,d=[],h=e.trim().split(f3);let g="";for(let v=h.length-1;v>=0;v-=1){const S=h[v],{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 I=N.length===0?"":N.length===1?N[0]:c(N).join(":"),G=_?I+Df:I,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},m3=(...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},h3=(e,...n)=>{let i,r,l,c;const d=g=>{const v=n.reduce((S,x)=>x(S),e());return i=d3(v),r=i.cache.get,l=i.cache.set,c=h,h(g)},h=g=>{const v=r(g);if(v)return v;const S=p3(g,i);return l(g,S),S};return c=d,(...g)=>c(m3(...g))},g3=[],zt=e=>{const n=i=>i[e]||g3;return n.isThemeGetter=!0,n},aS=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,iS=/^\((?:(\w[\w-]*):)?(.+)\)$/i,y3=/^\d+(?:\.\d+)?\/\d+(?:\.\d+)?$/,b3=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,v3=/\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$/,S3=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,x3=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,w3=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,Ha=e=>y3.test(e),Ee=e=>!!e&&!Number.isNaN(Number(e)),Qa=e=>!!e&&Number.isInteger(Number(e)),df=e=>e.endsWith("%")&&Ee(e.slice(0,-1)),ma=e=>b3.test(e),sS=()=>!0,j3=e=>v3.test(e)&&!S3.test(e),kp=()=>!1,N3=e=>x3.test(e),k3=e=>w3.test(e),A3=e=>!me(e)&&!he(e),_3=e=>ti(e,lS,kp),me=e=>aS.test(e),xi=e=>ti(e,cS,j3),qb=e=>ti(e,M3,Ee),C3=e=>ti(e,dS,sS),z3=e=>ti(e,uS,kp),Ub=e=>ti(e,rS,kp),T3=e=>ti(e,oS,k3),$l=e=>ti(e,fS,N3),he=e=>iS.test(e),Yr=e=>Oi(e,cS),E3=e=>Oi(e,uS),$b=e=>Oi(e,rS),O3=e=>Oi(e,lS),D3=e=>Oi(e,oS),Vl=e=>Oi(e,fS,!0),R3=e=>Oi(e,dS,!0),ti=(e,n,i)=>{const r=aS.exec(e);return r?r[1]?n(r[1]):i(r[2]):!1},Oi=(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",M3=e=>e==="number",uS=e=>e==="family-name",dS=e=>e==="number"||e==="weight",fS=e=>e==="shadow",B3=()=>{const e=zt("color"),n=zt("font"),i=zt("text"),r=zt("font-weight"),l=zt("tracking"),c=zt("leading"),d=zt("breakpoint"),h=zt("container"),g=zt("spacing"),v=zt("radius"),S=zt("shadow"),x=zt("inset-shadow"),N=zt("text-shadow"),_=zt("drop-shadow"),T=zt("blur"),k=zt("perspective"),E=zt("aspect"),R=zt("ease"),I=zt("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],oe=()=>[Ha,"full","auto",...M()],ke=()=>[Qa,"none","subgrid",he,me],Oe=()=>["auto",{span:["full",Qa,he,me]},Qa,he,me],be=()=>[Qa,"auto",he,me],et=()=>["auto","min","max","fr",he,me],Ke=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],J=()=>["start","end","center","stretch","center-safe","end-safe"],B=()=>["auto",...M()],W=()=>[Ha,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...M()],fe=()=>[Ha,"screen","full","dvw","lvw","svw","min","max","fit",...M()],Se=()=>[Ha,"screen","full","lh","dvh","lvh","svh","min","max","fit",...M()],re=()=>[e,he,me],Ze=()=>[...Z(),$b,Ub,{position:[he,me]}],ee=()=>["no-repeat",{repeat:["","x","y","space","round"]}],ue=()=>["auto","cover","contain",O3,_3,{size:[he,me]}],te=()=>[df,Yr,xi],de=()=>["","none","full",v,he,me],ie=()=>["",Ee,Yr,xi],je=()=>["solid","dashed","dotted","double"],tt=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],xe=()=>[Ee,df,$b,Ub],Ue=()=>["","none",T,he,me],Ge=()=>["none",Ee,he,me],Dt=()=>["none",Ee,he,me],Un=()=>[Ee,he,me],Rt=()=>[Ha,"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:[A3],"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",Ee],text:[ma],"text-shadow":[ma],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",Ha,me,he,E]}],container:["container"],columns:[{columns:[Ee,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:oe()}],"inset-x":[{"inset-x":oe()}],"inset-y":[{"inset-y":oe()}],start:[{"inset-s":oe(),start:oe()}],end:[{"inset-e":oe(),end:oe()}],"inset-bs":[{"inset-bs":oe()}],"inset-be":[{"inset-be":oe()}],top:[{top:oe()}],right:[{right:oe()}],bottom:[{bottom:oe()}],left:[{left:oe()}],visibility:["visible","invisible","collapse"],z:[{z:[Qa,"auto",he,me]}],basis:[{basis:[Ha,"full","auto",h,...M()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[Ee,Ha,"auto","initial","none",me]}],grow:[{grow:["",Ee,he,me]}],shrink:[{shrink:["",Ee,he,me]}],order:[{order:[Qa,"first","last","none",he,me]}],"grid-cols":[{"grid-cols":ke()}],"col-start-end":[{col:Oe()}],"col-start":[{"col-start":be()}],"col-end":[{"col-end":be()}],"grid-rows":[{"grid-rows":ke()}],"row-start-end":[{row:Oe()}],"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":et()}],"auto-rows":[{"auto-rows":et()}],gap:[{gap:M()}],"gap-x":[{"gap-x":M()}],"gap-y":[{"gap-y":M()}],"justify-content":[{justify:[...Ke(),"normal"]}],"justify-items":[{"justify-items":[...J(),"normal"]}],"justify-self":[{"justify-self":["auto",...J()]}],"align-content":[{content:["normal",...Ke()]}],"align-items":[{items:[...J(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...J(),{baseline:["","last"]}]}],"place-content":[{"place-content":Ke()}],"place-items":[{"place-items":[...J(),"baseline"]}],"place-self":[{"place-self":["auto",...J()]}],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:W()}],"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",...W()]}],"min-w":[{"min-w":[h,"screen","none",...W()]}],"max-w":[{"max-w":[h,"screen","none","prose",{screen:[d]},...W()]}],h:[{h:["screen","lh",...W()]}],"min-h":[{"min-h":["screen","lh","none",...W()]}],"max-h":[{"max-h":["screen","lh",...W()]}],"font-size":[{text:["base",i,Yr,xi]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[r,R3,C3]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",df,me]}],"font-family":[{font:[E3,z3,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":[Ee,"none",he,qb]}],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:[Ee,"from-font","auto",he,xi]}],"text-decoration-color":[{decoration:re()}],"underline-offset":[{"underline-offset":[Ee,"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:ee()}],"bg-size":[{bg:ue()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},Qa,he,me],radial:["",he,me],conic:[Qa,he,me]},D3,T3]}],"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:ie()}],"border-w-x":[{"border-x":ie()}],"border-w-y":[{"border-y":ie()}],"border-w-s":[{"border-s":ie()}],"border-w-e":[{"border-e":ie()}],"border-w-bs":[{"border-bs":ie()}],"border-w-be":[{"border-be":ie()}],"border-w-t":[{"border-t":ie()}],"border-w-r":[{"border-r":ie()}],"border-w-b":[{"border-b":ie()}],"border-w-l":[{"border-l":ie()}],"divide-x":[{"divide-x":ie()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":ie()}],"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":[Ee,he,me]}],"outline-w":[{outline:["",Ee,Yr,xi]}],"outline-color":[{outline:re()}],shadow:[{shadow:["","none",S,Vl,$l]}],"shadow-color":[{shadow:re()}],"inset-shadow":[{"inset-shadow":["none",x,Vl,$l]}],"inset-shadow-color":[{"inset-shadow":re()}],"ring-w":[{ring:ie()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:re()}],"ring-offset-w":[{"ring-offset":[Ee,xi]}],"ring-offset-color":[{"ring-offset":re()}],"inset-ring-w":[{"inset-ring":ie()}],"inset-ring-color":[{"inset-ring":re()}],"text-shadow":[{"text-shadow":["none",N,Vl,$l]}],"text-shadow-color":[{"text-shadow":re()}],opacity:[{opacity:[Ee,he,me]}],"mix-blend":[{"mix-blend":[...tt(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":tt()}],"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":[Ee]}],"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":[Ee]}],"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:ee()}],"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:[Ee,he,me]}],contrast:[{contrast:[Ee,he,me]}],"drop-shadow":[{"drop-shadow":["","none",_,Vl,$l]}],"drop-shadow-color":[{"drop-shadow":re()}],grayscale:[{grayscale:["",Ee,he,me]}],"hue-rotate":[{"hue-rotate":[Ee,he,me]}],invert:[{invert:["",Ee,he,me]}],saturate:[{saturate:[Ee,he,me]}],sepia:[{sepia:["",Ee,he,me]}],"backdrop-filter":[{"backdrop-filter":["","none",he,me]}],"backdrop-blur":[{"backdrop-blur":Ue()}],"backdrop-brightness":[{"backdrop-brightness":[Ee,he,me]}],"backdrop-contrast":[{"backdrop-contrast":[Ee,he,me]}],"backdrop-grayscale":[{"backdrop-grayscale":["",Ee,he,me]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[Ee,he,me]}],"backdrop-invert":[{"backdrop-invert":["",Ee,he,me]}],"backdrop-opacity":[{"backdrop-opacity":[Ee,he,me]}],"backdrop-saturate":[{"backdrop-saturate":[Ee,he,me]}],"backdrop-sepia":[{"backdrop-sepia":["",Ee,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:[Ee,"initial",he,me]}],ease:[{ease:["linear","initial",R,he,me]}],delay:[{delay:[Ee,he,me]}],animate:[{animate:["none",I,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:Dt()}],"scale-x":[{"scale-x":Dt()}],"scale-y":[{"scale-y":Dt()}],"scale-z":[{"scale-z":Dt()}],"scale-3d":["scale-3d"],skew:[{skew:Un()}],"skew-x":[{"skew-x":Un()}],"skew-y":[{"skew-y":Un()}],transform:[{transform:[he,me,"","none","gpu","cpu"]}],"transform-origin":[{origin:X()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:Rt()}],"translate-x":[{"translate-x":Rt()}],"translate-y":[{"translate-y":Rt()}],"translate-z":[{"translate-z":Rt()}],"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:[Ee,Yr,xi,qb]}],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"]}},L3=h3(B3);function Tn(...e){return L3(yv(e))}const q3=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:Tn(q3({variant:n,size:i,className:e})),...l})});qe.displayName="Button";const U3=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:Tn(U3({variant:n}),e),...i})}const $3=220;function Vb({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)},$3)};return e?f.jsxs(st,{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(st,{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(st,{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(oA,{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(Gs,{className:"size-3","aria-hidden":"true"})})]}):l?f.jsxs("span",{className:"brand-version",children:["v",n]}):null]})]})}function V3({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 Bn({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 Ap({status:e}){return f.jsx(Bn,{tone:Z0(e),children:UD(e)})}const I3=gv,P3=pv,mS=U.forwardRef(({className:e,...n},i)=>f.jsx(Hf,{ref:i,className:Tn("fixed inset-0 z-50 bg-black/70 backdrop-blur-sm",e),...n}));mS.displayName=Hf.displayName;const G3=400,H3=1200,Q3=720,hS=U.forwardRef(({className:e,children:n,...i},r)=>{const[l,c]=U.useState(Q3),d=U.useRef(!1),h=U.useRef(0),g=U.useRef(0),v=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(H3,Math.max(G3,g.current+_));c(T)},[]),x=U.useCallback(()=>{d.current=!1},[]);return f.jsxs(P3,{children:[f.jsx(mS,{}),f.jsxs(Qf,{ref:r,className:Tn("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:v,onPointerMove:S,onPointerUp:x}),n,f.jsxs(mv,{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(Gs,{className:"size-4"}),f.jsx("span",{className:"sr-only",children:"Close"})]})]})]})});hS.displayName=Qf.displayName;const K3=({className:e,...n})=>f.jsx("div",{className:Tn("flex flex-col gap-1.5 pr-10",e),...n}),gS=U.forwardRef(({className:e,...n},i)=>f.jsx(Kf,{ref:i,className:Tn("text-lg font-medium text-zinc-50",e),...n}));gS.displayName=Kf.displayName;const yS=U.forwardRef(({className:e,...n},i)=>f.jsx(hv,{ref:i,className:Tn("text-sm text-zinc-500",e),...n}));yS.displayName=hv.displayName;function Z3({title:e,subtitle:n,children:i,open:r,onClose:l}){return f.jsx(I3,{open:r,onOpenChange:c=>c?void 0:l(),children:f.jsxs(hS,{children:[f.jsxs(K3,{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 Xr({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 Y3=/[\s\-_]+/;function X3(e){const n=e.split(Y3).filter(Boolean);return n.length===0?null:n.map(i=>i.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")).join("[\\s\\-_]*")}function Ib(e,n){const i=J3(n),r=e.split(/(\*\*[^*]+\*\*)/).filter(Boolean).map(v=>v.startsWith("**")&&v.endsWith("**")?{type:"bold",value:v.slice(2,-2)}:{type:"text",value:v}),l=i.flatMap(v=>v.terms).filter(v=>v.trim().length>1);if(l.length===0)return r.map((v,S)=>v.type==="bold"?ks.createElement("strong",{key:`b-${S}`,className:"text-zinc-200 font-semibold"},v.value):v.value).filter(Boolean);const d=[...l].sort((v,S)=>S.length-v.length).map(X3).filter(v=>!!v);if(d.length===0)return r.map((v,S)=>v.type==="bold"?ks.createElement("strong",{key:`b-${S}`,className:"text-zinc-200 font-semibold"},v.value):v.value).filter(Boolean);const h=new RegExp(`(${d.join("|")})`,"gi"),g=new Map;for(const v of i)for(const S of v.terms){const x=lc(S);x&&!g.has(x)&&g.set(x,v.className)}return r.flatMap((v,S)=>v.value.split(h).map((N,_)=>{if(!N)return null;if(_%2===1){const k=g.get(lc(N))??"answer-highlight";return v.type==="bold"?ks.createElement("mark",{key:`hl-${S}-${_}`,className:k},ks.createElement("strong",{className:"text-zinc-200 font-semibold"},N)):ks.createElement("mark",{key:`hl-${S}-${_}`,className:k},N)}return v.type==="bold"?ks.createElement("strong",{key:`b-${S}-${_}`,className:"text-zinc-200 font-semibold"},N):N})).filter(Boolean)}function J3(e){return e.length===0?[]:typeof e[0]=="string"?[{terms:e,className:"answer-highlight"}]:e}function Rf(e){const n=(e??"").trim();return n&&(n.startsWith("/")||/^https?:\/\//i.test(n)||/^mailto:/i.test(n))?n:null}function ff(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 F3({evidence:e,project:n,onClose:i}){const[r,l]=U.useState(!1),[c,d]=U.useState("mentions"),[h,g]=U.useState(-1),[v,S]=U.useState(null),[x,N]=U.useState(!1),[_,T]=U.useState({}),k=VT(n.project),E=new Set(k.map(ic)),R=e.runHistory,I=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,Wl(te.runId).then(de=>{const ie=de.snapshots?.find(je=>je.query===e.query&&je.provider===e.provider);ie&&Z({citationState:ie.citationState,answerMentioned:ie.answerMentioned,visibilityState:ie.visibilityState,visibilityTransition:te.visibilityTransition,provider:ie.provider,model:ie.model??e.model,answerSnippet:ie.answerText??e.answerSnippet,citedDomains:ie.citedDomains??e.citedDomains,competitorDomains:ie.competitorOverlap??e.competitorDomains,recommendedCompetitors:ie.recommendedCompetitors??e.recommendedCompetitors??[],matchedTerms:ie.matchedTerms??e.matchedTerms??[],groundingSources:ie.groundingSources??e.groundingSources,searchQueries:ie.searchQueries,evidenceUrls:[],changeLabel:e.visibilityChangeLabel??e.changeLabel,summary:e.summary})}).catch(()=>{}))},[e,R]);const F=h>=0&&v!==null,O=F?v: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",oe=M?!1:O.visibilityState!=null?O.visibilityState==="visible":O.answerMentioned!=null?O.answerMentioned:O.citationState===sc.cited||O.citationState==="emerging",ke=O.answerMentioned!=null||O.visibilityState!=null||O.recommendedCompetitors.length>0,Oe=O.citedDomains.length>0||O.groundingSources.length>0||O.evidenceUrls.length>0,be=n.project.displayName||n.project.name,et=[...k.map(ic),be,be.split(" ").slice(0,2).join(" "),...O.matchedTerms].filter(te=>te.trim().length>2),Ke=[...O.competitorDomains.flatMap(te=>{const de=$T(te);return de.length>=4?[de]:[]}),...O.recommendedCompetitors].filter(te=>te.trim().length>2),J=[{terms:et,className:"answer-highlight-brand"},...Ke.length>0?[{terms:Ke,className:"answer-highlight-competitor"}]:[]],B=M?"pending":O.visibilityTransition==="lost"?"lost":oe?"mentioned":"not-mentioned",W=U.useRef(0),fe=U.useCallback(async te=>{const de=++W.current;if(te===-1||te===R.length-1){g(-1),S(null),l(!1);return}g(te),l(!1);const ie=R[te],je=`${ie.runId}::${e.query}::${e.provider}`;if(_[je]){S(_[je]);return}N(!0);try{const tt=await Wl(ie.runId);if(de!==W.current)return;const xe=tt.snapshots?.find(Ge=>Ge.query===e.query&&Ge.provider===e.provider)??tt.snapshots?.find(Ge=>Ge.query===e.query),Ue=xe?{citationState:xe.citationState,answerMentioned:xe.answerMentioned,visibilityState:xe.visibilityState,visibilityTransition:ie.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:ff(ie.mentionTransition??ie.visibilityTransition,ie.mentionState??ie.visibilityState),summary:""}:{citationState:ie.citationState,answerMentioned:ie.answerMentioned,visibilityState:ie.visibilityState,visibilityTransition:ie.visibilityTransition,provider:e.provider,model:ie.model??null,answerSnippet:"",citedDomains:[],competitorDomains:[],recommendedCompetitors:[],matchedTerms:[],groundingSources:[],searchQueries:[],evidenceUrls:[],changeLabel:ff(ie.mentionTransition??ie.visibilityTransition,ie.mentionState??ie.visibilityState),summary:"Snapshot data not available for this run."};T(Ge=>({...Ge,[je]:Ue})),S(Ue)}catch{if(de!==W.current)return;S({citationState:ie.citationState,answerMentioned:ie.answerMentioned,visibilityState:ie.visibilityState,visibilityTransition:ie.visibilityTransition,provider:e.provider,model:ie.model??null,answerSnippet:"",citedDomains:[],competitorDomains:[],recommendedCompetitors:[],matchedTerms:[],groundingSources:[],searchQueries:[],evidenceUrls:[],changeLabel:ff(ie.mentionTransition??ie.visibilityTransition,ie.mentionState??ie.visibilityState),summary:"Failed to load historical run data."})}finally{de===W.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(" · "):"",ee=oe?{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 ie=[],je=0;const tt=()=>{if(ie.length===0)return;const xe=ie.join(" ").trim();xe&&de.push(f.jsx("p",{className:de.length>0?"mt-2.5":"",children:Ib(xe,J)},je++)),ie=[]};for(const xe of te){const Ue=xe.trim();if(/^[-\u2013\u2014]{3,}$/.test(Ue)){tt(),de.push(f.jsx("hr",{className:"border-zinc-800/60 my-3"},je++));continue}const Ge=Ue.match(/^(#{1,3})\s+(\S.*)$/);if(Ge){tt();const Dt=Ge[1].length,Un=Ge[2].replace(/^[\p{Emoji}\p{Emoji_Component}\s]+/u,"").trim()||Ge[2],Rt=Dt===1?"text-[13px] font-semibold text-zinc-100 mt-4 mb-1":Dt===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:Rt,children:Ib(Un,J)},je++));continue}if(Ue===""){tt();continue}ie.push(Ue)}return tt(),de};return f.jsx(gv,{open:!0,onOpenChange:te=>{te||i()},children:f.jsxs(pv,{children:[f.jsx(Hf,{className:"fixed inset-0 z-50 bg-black/80 backdrop-blur-sm"}),f.jsxs(Qf,{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(Kf,{className:"text-lg font-semibold text-zinc-50 truncate",children:e.query})]}),f.jsxs(mv,{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(Gs,{className:"size-4"}),f.jsx("span",{className:"sr-only",children:"Close"})]})]}),I&&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 ie=h===-1&&de===R.length-1||h===de,je=te.visibilityState??(te.answerMentioned?"visible":"not-visible"),tt=te.visibilityTransition??je,xe=je==="visible"?"bg-emerald-400":tt==="emerging"?"bg-amber-400":tt==="lost"?"bg-rose-400":"bg-zinc-600",Ge=new Date(te.createdAt).toLocaleDateString(void 0,{month:"short",day:"numeric"}),Dt=!!(te.model&&de>0&&R[de-1]?.model&&R[de-1].model!==te.model);return f.jsxs("button",{type:"button",className:`evidence-run-dot ${ie?"evidence-run-dot--selected":""}`,onClick:()=>{fe(de===R.length-1?-1:de)},"aria-label":[`Run ${Ge}: ${je}`,te.model?`model ${te.model}`:null,Dt?"model changed":null].filter(Boolean).join(" — "),"aria-pressed":ie,children:[f.jsx("span",{className:`size-2 rounded-full ${xe} ${Dt?"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:ee.label}),f.jsx("p",{className:`evidence-position-title evidence-position-title--${B}`,children:ee.title}),f.jsx("p",{className:"evidence-position-meta",children:ee.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(Xr,{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(QA,{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:oe?"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 ${oe?"text-emerald-400":"text-amber-400"}`,viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:oe?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||Oe)&&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(Xr,{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--${oe?"mentioned":"not-mentioned"}`,children:[f.jsx("span",{className:"mention-status-icon",children:M?"…":oe?"✓":"—"}),f.jsx("span",{className:"mention-status-label",children:M?"Pending":oe?"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&&!oe&&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:et.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(Xr,{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=>lc(je.replace(/\.[^.]+$/,""))));return[...O.recommendedCompetitors.filter(je=>!de.has(lc(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(Xr,{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 ie=te.toLowerCase().replace(/^www\./,""),je=E.has(ie),tt=!je&&O.competitorDomains.some(Ue=>Ue.toLowerCase().replace(/^www\./,"")===ie),xe=je?"you":tt?"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"}),tt&&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(Xr,{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 ie=Rf(te.uri),je=te.title||te.uri;return f.jsx("li",{className:"truncate text-sm",children:ie?f.jsx("a",{href:ie,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=Rf(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&&!Oe&&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 Mn(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 pf=[{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 Nc(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 W3=Nc({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"}),eR=Nc({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"}),tR=Nc({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"}),nR=Nc({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"}),aR=[{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:Mn(["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:Mn(["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:Mn(["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:Mn(["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:Mn(["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:Mn(["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:Mn(["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:Mn(["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:Mn(["not-cited","not-cited","not-cited","not-cited","not-cited","cited"])}];pf[0],Math.round(1/9*100),Math.round(2/9*100),pf[1],Mn(["cited","cited","cited","cited","cited"]),pf[2],Math.round(2/7*100),Math.round(3/7*100),Mn(["not-cited","not-cited","not-cited","cited"]);function iR(e,n){return e.runs.find(i=>i.id===n)}function sR(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 rR(e,n,i){if(e){const r=e.visibilityEvidence.find(l=>l.id===i);if(r)return{project:e,evidence:r}}if(n)return sR(n,i)}const oR={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"},lR={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"},cR={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"},uR={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 dR(e){return{id:e.id,tone:oR[e.type],title:e.title,detail:e.cause?.details??e.cause?.cause??"",actionLabel:e.recommendation?.action??uR[e.type],actionGroup:lR[e.type],affectedPhrases:[{query:e.query,evidenceId:"",provider:e.provider,citationState:cR[e.type]}]}}function fR(e){return e.filter(n=>!n.dismissed).map(dR)}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 Pb(e){try{return new Date(e).toLocaleDateString("en-US",{month:"short",day:"numeric",hour:"numeric",minute:"2-digit"})}catch{return e}}function pR(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 mR(e){return e===Rs.manual?"Manual":e===Rs.scheduled?"Scheduled":e===Rs["config-apply"]?"Config apply":e}function _p(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?Pb(e.startedAt):Pb(e.createdAt),duration:pR(e.startedAt??null,e.finishedAt??null),statusDetail:e.error?SS(e.error):hR(e),summary:gR(e),triggerLabel:mR(e.trigger)}}function SS(e){const n=op(e);return n.length>200?n.slice(0,200)+"…":n}function hR(e){switch(e.status){case Qt.queued:return"Waiting for execution slot.";case Qt.running:return"Provider queries in progress.";case Qt.completed:return"All queries checked.";case Qt.partial:return"Run completed with some queries skipped.";case Qt.failed:return e.error?SS(e.error):"Run failed.";case Qt.cancelled:return"Run was cancelled.";default:return""}}function gR(e){const n=vS(e.kind);switch(e.status){case Qt.queued:return`${n} queued`;case Qt.running:return`${n} in progress`;case Qt.completed:return`${n} completed`;case Qt.partial:return`${n} partially completed`;case Qt.failed:return`${n} failed`;case Qt.cancelled:return`${n} cancelled`;default:return e.status}}function yR(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 v=new Set(h.map(T=>T.location??null));v.size===0&&v.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 I=[...v].filter(X=>g.has(`${T.query}::${R}::${X??""}`)),G=(T.providerRuns?.[R]?.length??0)>0,Z=I.length>0?I:G?[null]:[];for(const X of Z){const F=X??"",O=g.get(`${T.query}::${R}::${F}`),M=O?.model??null,oe=M?`${R}:${M}`:null,ke=T.providerRuns?.[R],Oe=oe?T.modelRuns?.[oe]:void 0,be=Ue=>Ue?.filter(Ge=>(Ge.location??null)===X),et=I.length>0?be(ke):ke,Ke=I.length>0?be(Oe):Oe,J=(et?.length?et:null)??(Ke?.length?Ke:null),B=et?.length?"provider":Ke?.length?"model":"query",W=J?J.at(-1).transition:E,fe=J?J.at(-1).visibilityTransition??(J.at(-1).visibilityState==="visible"?"visible":"not-visible"):k?.visibilityTransition??(k?.visibilityState==="visible"?"visible":"not-visible"),Se=J?.at(-1)?.citationState,re=J?.at(-1)?.visibilityState,Ze=O?W==="lost"?"lost":W==="emerging"?"emerging":O.citationState===sc.cited?"cited":"not-cited":Se===sc.cited?"cited":"not-cited",ee=O?.visibilityState??(re==="visible"?"visible":re==="pending"?"pending":"not-visible"),ue=Gb(J||T.runs),te=Hb(J||T.runs),de=bR(T,R),ie=(J??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=vR(ie),tt=B==="provider"&&je.length<=1?"model":B,xe=SR(ie);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:ee,visibilityChangeLabel:Qb(fe,te,{positive:"visible",negative:"not visible",first:"first visibility"}),changeLabel:Qb(W,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:xR(ee,fe,T.query),runHistory:ie,historyScope:tt,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 bR(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 vR(e){const n=new Set;for(const i of e)i.model&&n.add(i.model);return[...n]}function SR(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 Gb(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 Hb(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 Qb(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?`${Jr(r.positive)} in latest run`:`${Jr(r.positive)} for ${n} runs`;case"lost":return"Lost since last run";case"emerging":return Jr(r.first);case"not-cited":case"not-visible":return n<=1?`${Jr(r.negative)} in latest run`:`${Jr(r.negative)} across ${n} runs`;default:return e}}function Jr(e){return e.charAt(0).toUpperCase()+e.slice(1)}function xR(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=yR(n.name,e.timeline,e.latestRunDetails,e.queries),l=[...e.runs].sort((c,d)=>d.createdAt.localeCompare(c.createdAt)).map(c=>_p(c,e.project.displayName||e.project.name));return e.overview?wR(n,e.overview,i,l):jR(n,i,l)}function wR(e,n,i,r){const l=fR(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 jR(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 NR(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?_p(r,l):kR(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,v=d.queryCounts.mentionedQueries,S=d.queryCounts.totalQueries,x=d.providers.length;return{project:n,mentionScore:g,mentionDelta:S>0?`${v} of ${S} queries`:"No data",mentionTone:h.tone,providerCoverage:h.providerCoverage,lastRun:c,insight:S>0?`${v} of ${S} queries mentioned across ${x} provider${x===1?"":"s"}.`:"No runs completed yet.",trend:h.trend??[],competitorPressureLabel:d.scores.competitorPressure.value}}function kR(e,n){return{id:"none",projectId:e,projectName:n,kind:Ne["answer-visibility"],kindLabel:"No runs yet",status:Qt.queued,trigger:Rs.manual,createdAt:"",startedAt:"",duration:"",statusDetail:"",summary:"No runs yet",triggerLabel:""}}function AR(e,n){const i=[],r=[],l=[];for(const d of e){r.push(xS(d)),l.push(NR(d));const h=[...d.runs].sort((g,v)=>v.createdAt.localeCompare(g.createdAt));for(const g of h)i.push(_p(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?_R(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 _R(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/${encodeURIComponent(i.project.name)}`});const l=i.recentRuns.filter(c=>c.status===Qt.running||c.status===Qt.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 uo(){return U.useContext(wS)}function kc(e){const i=uo()?.dashboard??null,r=fn({...xc({client:ne}),enabled:!i,refetchInterval:Xk}),l=fn({...jp({client:ne,query:{kind:"answer-visibility"}}),enabled:!i,staleTime:ao,refetchInterval:T=>T.state.data?.some(R=>R.status==="running"||R.status==="queued")?3e3:ao}),c=fn({...YD({client:ne}),enabled:!i}),d=r.data??[],h=l.data??[],g=Cw({queries:d.map(T=>{const k=h.filter(I=>I.projectId===T.id),E=k.filter(I=>(I.status==="completed"||I.status==="partial")&&I.kind==="answer-visibility"&&I.trigger!=="probe").sort((I,G)=>G.createdAt.localeCompare(I.createdAt)),R=E.length>0?E[0].id:"no-run";return{queryKey:["project-overview-slim",T.id,R],queryFn:async()=>{const I=await Ev(T.name).catch(()=>null);return{project:T,runs:k,queries:[],competitors:[],timeline:[],latestRunDetails:[],previousRunDetails:[],gscCoverage:null,bingCoverage:null,dbInsights:null,overview:I}},enabled:!i&&r.isSuccess&&l.isSuccess,staleTime:kf}})}),v=g.every(T=>T.isSuccess),S=U.useMemo(()=>{if(i)return i;if(!r.data||!l.data||d.length>0&&!v)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 AR(T,c.data??null)},[i,r.data,l.data,c.data,v,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 CR(e){const n=uo(),i=U.useMemo(()=>!n||!e?null:n.dashboard.projects.find(T=>T.project.name===e)??null,[n,e]),r=fn({...QD({client:ne,path:{name:e??""}}),enabled:!!e&&!i,staleTime:kf,refetchOnWindowFocus:"always"}),l=fn({...jp({client:ne,query:{kind:"answer-visibility"}}),enabled:!!e,staleTime:ao,refetchOnWindowFocus:"always",refetchInterval:T=>T.state.data?.some(R=>R.projectId===r.data?.id&&(R.status==="running"||R.status==="queued"))?3e3:ao}),c=r.data??null,d=U.useMemo(()=>c?(l.data??[]).filter(T=>T.projectId===c.id):[],[c,l.data]),{latestRunIds:h,previousRunIds:g,latestRunIdsKey:v}=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,I=R?T.filter(G=>G.createdAt===R).map(G=>G.id):[];return{latestRunIds:E,previousRunIds:I,latestRunIdsKey:[...E].sort().join(",")}},[d]),S=fn({queryKey:["project-dashboard-full",c?.id??null,v||"none"],queryFn:async()=>{if(!c||!e)return null;const[T,k,E,R,I,G,Z,X,F]=await Promise.all([Sk(e).catch(()=>[]),xk(e).catch(()=>[]),wk(e).catch(()=>[]),h.length?Promise.all(h.map(O=>Wl(O).catch(()=>null))).then(O=>O.filter(M=>M!=null)):Promise.resolve([]),g.length?Promise.all(g.map(O=>Wl(O).catch(()=>null))).then(O=>O.filter(M=>M!=null)):Promise.resolve([]),Mk(e).catch(()=>null),qk(e).catch(()=>null),$k(e).catch(()=>null),Ev(e).catch(()=>null)]);return{project:c,runs:d,queries:T,competitors:k,timeline:E,latestRunDetails:R,previousRunDetails:I,gscCoverage:G,bingCoverage:Z,dbInsights:X,overview:F}},enabled:!!c&&!!e&&l.isSuccess,staleTime:kf,refetchOnWindowFocus:"always",refetchInterval:Jk}),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 zR=["health"];async function TR(){const e=await Ik("/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 Cp(e,n){return fn({queryKey:zR,queryFn:TR,enabled:e,refetchInterval:15e3,initialData:n})}function ER(e){return fn({...K0({client:ne,path:{id:e??""}}),enabled:!!e,refetchInterval:n=>{const i=n.state.data?.status;return i==="running"||i==="queued"?3e3:!1}})}function zp(){const e=fc(),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:nn.to,search:v=>({...v,runId:g,evidenceId:void 0})})},openEvidence:g=>{e({to:i,from:nn.to,search:v=>({...v,evidenceId:g,runId:void 0})})},closeDrawer:()=>{e({to:i,from:nn.to,search:g=>({...g,runId:void 0,evidenceId:void 0})})}}}const OR={negative:"toast-card-negative",caution:"toast-card-caution",positive:"toast-card-positive",neutral:"toast-card-neutral"};function DR(e){if(e.cta)return`${e.cta.label}: ${e.title}`}function RR(){const e=U.useSyncExternalStore(Zk,Yy,Yy),n=fc(),{openRun:i}=zp(),r=U.useCallback(c=>{Nf(c)},[]),l=U.useCallback(c=>{c.cta&&(c.cta.intent==="open-run-drawer"?i(c.cta.runId):n({to:"/runs"}),Nf(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 ${OR[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":DR(c),children:c.cta.label}):null]}),f.jsx("button",{type:"button",onClick:()=>r(c.id),className:"toast-dismiss","aria-label":"Dismiss",children:f.jsx(Gs,{className:"size-3.5"})})]},c.id))})}function MR(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 v=()=>{l.current.wasAtEnd=c(g)<=i};return g.addEventListener("scroll",v,{passive:!0}),()=>g.removeEventListener("scroll",v)},[i]),U.useLayoutEffect(()=>{const g=r.current;if(!g)return;const v=g.scrollHeight;v>l.current.scrollHeight&&l.current.wasAtEnd&&(g.scrollTop=v),l.current.scrollHeight=v},e),U.useEffect(()=>{const g=r.current;if(!g||typeof ResizeObserver>"u")return;const v=new ResizeObserver(()=>{const S=g.scrollHeight;S>l.current.scrollHeight&&l.current.wasAtEnd&&(g.scrollTop=S),l.current.scrollHeight=S});return v.observe(g),g.firstElementChild&&v.observe(g.firstElementChild),()=>v.disconnect()},[]),{ref:r,scrollToEnd:h,isAtEnd:d}}async function Tp(e){try{return await e.json()}catch{return{}}}function BR(){return typeof window<"u"&&window.__CANONRY_CONFIG__?.basePath?window.__CANONRY_CONFIG__.basePath.replace(/\/$/,"")+"/api/v1":"/api/v1"}const Ep=BR();function Op(e){e===401&&Zf()}async function Kb(e){const n=await fetch(`${Ep}/projects/${encodeURIComponent(e)}/agent/transcript`,{credentials:"include"});if(!n.ok){Op(n.status);const i=await Tp(n);throw new Hn(i.error?.message??`transcript fetch failed: ${n.status}`,n.status,i.error?.code)}return await n.json()}async function LR(e){const n=await fetch(`${Ep}/projects/${encodeURIComponent(e)}/agent/transcript`,{method:"DELETE",credentials:"include"});if(!n.ok){Op(n.status);const i=await Tp(n);throw new Hn(i.error?.message??`reset failed: ${n.status}`,n.status,i.error?.code)}}async function qR({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(`${Ep}/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){Op(g.status);const _=await Tp(g);throw new Hn(_.error?.message??`prompt failed: ${g.status}`,g.status,_.error?.code)}const v=g.body.getReader(),S=new TextDecoder;let x="";const N=()=>{v.cancel().catch(()=>{})};c?.addEventListener("abort",N,{once:!0});try{for(;;){const{value:_,done:T}=await v.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 I=R.slice(5).trim();if(I)try{d(JSON.parse(I))}catch{}}k=x.indexOf(`
62
62
 
63
- `)}}}finally{c?.removeEventListener("abort",N);try{v.releaseLock()}catch{}}}function jS(e){return!e||e.role!=="assistant"?"":e.content.filter(n=>n.type==="text").map(n=>n.text).join("")}const UR=[{label:"Status",prompt:"Quick status overview for this project — latest runs, current health, anything unusual."},{label:"Top insights",prompt:"Walk me through the 3 most severe active insights and what to do about each."},{label:"Last failed run",prompt:"If the latest run failed, dig into it and tell me what went wrong plus how to fix it."},{label:"Schedule",prompt:"What is the current sweep schedule, and is it appropriate given recent volatility?"}],$R=[{command:"/status",label:"Status",hint:"Latest runs, health, anything unusual",prompt:"Quick status overview for this project — latest runs, current health, anything unusual."},{command:"/insights",label:"Top insights",hint:"Walk through the most severe active insights",prompt:"Walk me through the 3 most severe active insights and what to do about each."},{command:"/last-run",label:"Last run",hint:"Summarize the latest sweep",prompt:"Summarize the latest run for this project — provider mix, visibility changes, and anything that moved."},{command:"/last-failed",label:"Last failed run",hint:"Diagnose the most recent failure",prompt:"If the latest run failed, dig into it and tell me what went wrong plus how to fix it."},{command:"/run-sweep",label:"Run sweep now",hint:"Trigger a new visibility sweep",prompt:"Run a new answer-visibility sweep for this project now and tell me when it lands."},{command:"/schedule",label:"Schedule",hint:"Review the sweep schedule",prompt:"What is the current sweep schedule, and is it appropriate given recent volatility?"},{command:"/queries",label:"Queries",hint:"List tracked queries",prompt:"List the tracked queries for this project and flag any that are obvious duplicates or underperformers."},{command:"/competitors",label:"Competitors",hint:"List tracked competitors",prompt:"List this project's tracked competitors and call out which ones are showing up in answer citations."},{command:"/clear",label:"Clear conversation",hint:"Wipe transcript and start fresh",action:"clear"}],Il=e=>`canonry:aero:provider:${e}`,Zb=e=>`canonry:aero:scope:${e}`;function VR({projectName:e}){const[n,i]=U.useState(!1),[r,l]=U.useState(!1),[c,d]=U.useState([]),[h,g]=U.useState(""),[v,S]=U.useState(!1),[x,N]=U.useState([]),[_,T]=U.useState(""),[k,E]=U.useState(null),[R,I]=U.useState(()=>typeof window>"u"?null:window.localStorage.getItem(Il(e))??null),[G,Z]=U.useState(()=>typeof window>"u"?"read-only":window.localStorage.getItem(Zb(e))==="all"?"all":"read-only"),X=U.useRef(null),{ref:F}=MR([c,_,x]),O=U.useRef(null),[M,oe]=U.useState(0),ke=U.useMemo(()=>{const ee=h.trimStart();if(!ee.startsWith("/"))return[];if(/\s/.test(ee))return[];const ue=ee.toLowerCase();return $R.filter(te=>te.command.startsWith(ue)||te.label.toLowerCase().includes(ue.slice(1)))},[h]);U.useEffect(()=>{oe(ee=>ke.length===0?0:Math.min(ee,ke.length-1))},[ke.length]);const Oe=fn({...DD({client:ne,path:{name:e}}),enabled:n,staleTime:6e4}),be=U.useMemo(()=>{const ee=Oe.data?.providers??[];if(R){const te=ee.find(de=>de.id===R&&de.configured);if(te)return te}const ue=Oe.data?.defaultProvider;return ue?ee.find(te=>te.id===ue)??null:null},[R,Oe.data]);U.useEffect(()=>{if(!Oe.data||!R)return;Oe.data.providers.find(ue=>ue.id===R&&ue.configured)||(I(null),window.localStorage.removeItem(Il(e)))},[Oe.data,R,e]);const et=U.useCallback(ee=>{I(ee),!(typeof window>"u")&&(ee?window.localStorage.setItem(Il(e),ee):window.localStorage.removeItem(Il(e)))},[e]),Ke=U.useCallback(()=>{Z(ee=>{const ue=ee==="all"?"read-only":"all";return typeof window<"u"&&window.localStorage.setItem(Zb(e),ue),ue})},[e]);U.useEffect(()=>{if(!n)return;const ee=ue=>{ue.key==="Escape"&&(r?l(!1):i(!1))};return window.addEventListener("keydown",ee),()=>window.removeEventListener("keydown",ee)},[n,r]),U.useEffect(()=>{if(!n)return;let ee=!1;E(null);const ue=()=>{ee||v||Kb(e).then(ie=>{ee||d(ie.messages)}).catch(ie=>{ee||E(ie instanceof Error?ie.message:"Failed to load transcript")})};ue();const de=window.setInterval(ue,15e3);return()=>{ee=!0,window.clearInterval(de)}},[n,e,v]),U.useEffect(()=>()=>{X.current?.abort()},[e]);async function J(ee){const ue=ee.trim();if(!ue||v)return;E(null),g(""),S(!0),T(""),N([]);const te={role:"user",content:ue,timestamp:Date.now()};d(ie=>[...ie,te]);const de=new AbortController;X.current=de;try{await qR({project:e,prompt:ue,provider:R??void 0,scope:G,signal:de.signal,onEvent:B});const ie=await Kb(e);d(ie.messages)}catch(ie){ie.name!=="AbortError"&&E(ie instanceof Error?ie.message:"Prompt failed")}finally{S(!1),T(""),X.current=null}}function B(ee){switch(ee.type){case"message_update":T(jS(ee.message));break;case"message_end":ee.message.role==="assistant"&&T("");break;case"tool_execution_start":N(ue=>[...ue,{id:ee.toolCallId,name:ee.toolName,args:ee.args,startedAt:Date.now()}]);break;case"tool_execution_end":N(ue=>ue.map(te=>te.id===ee.toolCallId?{...te,endedAt:Date.now(),isError:ee.isError,result:ee.result}:te));break;case"error":E(ee.message);break}}async function W(){X.current?.abort();try{await LR(e),d([]),E(null)}catch(ee){E(ee instanceof Error?ee.message:"Reset failed")}}const fe=c.length===0,Se=n&&r?"pointer-events-auto fixed inset-0 z-40 flex items-stretch justify-center bg-zinc-950/70 p-4 sm:p-8 backdrop-blur-sm":"pointer-events-none fixed inset-x-0 bottom-0 z-40 flex justify-center p-3",re=r?"pointer-events-auto flex h-full w-full max-w-5xl flex-col overflow-hidden rounded-2xl border border-zinc-800/80 bg-zinc-950/95 shadow-2xl":"pointer-events-auto w-full max-w-3xl",Ze=r?"flex-1 overflow-y-auto px-6 py-5 text-sm text-zinc-200":"max-h-[40vh] min-h-[120px] overflow-y-auto px-4 py-3 text-sm text-zinc-200";return f.jsx("div",{className:Se,onClick:ee=>{r&&ee.target===ee.currentTarget&&l(!1)},children:f.jsx("div",{className:re,children:n?f.jsxs("div",{className:r?"flex h-full flex-col":"flex flex-col overflow-hidden rounded-2xl border border-zinc-800/80 bg-zinc-950/95 shadow-xl backdrop-blur",children:[f.jsxs("div",{className:"flex items-center justify-between gap-2 border-b border-zinc-800/70 px-4 py-2.5",children:[f.jsxs("div",{className:"flex items-center gap-2",children:[f.jsx(Wy,{className:"h-4 w-4 text-emerald-400","aria-hidden":"true"}),f.jsx("span",{className:"text-sm font-medium text-zinc-100",children:"Aero"}),f.jsx("span",{className:"text-[10px] uppercase tracking-wider text-zinc-500",children:v?"working…":e})]}),f.jsxs("div",{className:"flex items-center gap-1",children:[f.jsx(IR,{providers:Oe.data?.providers??[],active:be,override:R,onPick:et,disabled:v}),f.jsx("button",{type:"button",onClick:Nn(W),className:"rounded-md p-1.5 text-zinc-500 transition hover:bg-zinc-800/60 hover:text-zinc-200","aria-label":"Reset conversation",title:"Reset conversation",children:f.jsx(Mv,{className:"h-3.5 w-3.5","aria-hidden":"true"})}),f.jsx("button",{type:"button",onClick:()=>l(ee=>!ee),className:"rounded-md p-1.5 text-zinc-500 transition hover:bg-zinc-800/60 hover:text-zinc-200","aria-label":r?"Collapse":"Expand",title:r?"Collapse":"Expand",children:r?f.jsx(MA,{className:"h-3.5 w-3.5","aria-hidden":"true"}):f.jsx(EA,{className:"h-3.5 w-3.5","aria-hidden":"true"})}),f.jsx("button",{type:"button",onClick:()=>{l(!1),i(!1)},className:"rounded-md p-1.5 text-zinc-500 transition hover:bg-zinc-800/60 hover:text-zinc-200","aria-label":"Close Aero",children:f.jsx(Gs,{className:"h-4 w-4","aria-hidden":"true"})})]})]}),f.jsxs("div",{ref:F,className:Ze,children:[k&&f.jsx("div",{className:"mb-2 rounded-md border border-rose-700/40 bg-rose-950/40 px-3 py-2 text-xs text-rose-200",children:k}),fe&&!v&&f.jsxs("div",{className:"flex flex-col gap-3 py-2",children:[f.jsxs("p",{className:"text-xs text-zinc-500",children:["Ask anything about ",f.jsx("span",{className:"text-zinc-300",children:e}),", or start with:"]}),f.jsx("div",{className:"flex flex-wrap gap-1.5",children:UR.map(ee=>f.jsx("button",{type:"button",onClick:()=>{J(ee.prompt)},className:"rounded-full border border-zinc-800 bg-zinc-900/70 px-3 py-1 text-xs text-zinc-300 transition hover:border-zinc-700 hover:bg-zinc-800/70 hover:text-zinc-100",children:ee.label},ee.label))})]}),KR(c,e,R,G),x.length>0&&f.jsx("div",{className:"mt-3 space-y-1.5",children:x.map(ee=>f.jsx(NS,{trail:ee},ee.id))}),v&&_&&f.jsxs("div",{className:"mt-3",children:[f.jsx("div",{className:"mb-0.5 text-[10px] uppercase tracking-wider text-emerald-400",children:"Aero"}),f.jsx(kS,{content:_})]}),v&&!_&&x.every(ee=>ee.endedAt!==void 0)&&f.jsx(JR,{})]}),f.jsx(PR,{projectName:e,activeProvider:be,scope:G,onToggleScope:Ke,disabled:v}),f.jsxs("div",{className:"relative",children:[ke.length>0&&f.jsx(GR,{matches:ke,selectedIndex:M,onHover:oe,onPick:ee=>{g(""),O.current?.focus(),ee.action==="clear"?W():J(ee.prompt)}}),f.jsxs("form",{className:"flex items-end gap-2 border-t border-zinc-800/70 bg-zinc-950/80 px-3 py-2.5",onSubmit:ee=>{if(ee.preventDefault(),ke.length>0){const ue=ke[M];g(""),ue.action==="clear"?W():J(ue.prompt);return}J(h)},children:[f.jsx("textarea",{ref:O,value:h,onChange:ee=>g(ee.target.value),onKeyDown:ee=>{if(ke.length>0){if(ee.key==="ArrowDown"){ee.preventDefault(),oe(ue=>(ue+1)%ke.length);return}if(ee.key==="ArrowUp"){ee.preventDefault(),oe(ue=>(ue-1+ke.length)%ke.length);return}if(ee.key==="Tab"){ee.preventDefault();const ue=ke[M];g(`${ue.command} `);return}if(ee.key==="Escape"){ee.preventDefault(),g("");return}}if(ee.key==="Enter"&&!ee.shiftKey)if(ee.preventDefault(),ke.length>0){const ue=ke[M];g(""),ue.action==="clear"?W():J(ue.prompt)}else J(h)},placeholder:"Ask Aero, or / for commands…",disabled:v,rows:r?3:1,className:"flex-1 resize-none bg-transparent text-sm text-zinc-100 placeholder:text-zinc-600 focus:outline-none disabled:opacity-60"}),f.jsx("button",{type:"submit",disabled:v||!h.trim(),className:"inline-flex h-7 w-7 items-center justify-center rounded-md bg-emerald-500 text-zinc-950 transition hover:bg-emerald-400 disabled:opacity-40","aria-label":"Send",children:f.jsx(cA,{className:"h-3.5 w-3.5","aria-hidden":"true"})})]})]})]}):f.jsxs("button",{type:"button",onClick:()=>i(!0),className:"flex w-full items-center justify-between rounded-full border border-zinc-800/80 bg-zinc-950/95 px-4 py-2 text-left text-sm text-zinc-400 shadow-lg backdrop-blur transition hover:border-zinc-700 hover:bg-zinc-900/90 hover:text-zinc-200",children:[f.jsxs("span",{className:"flex items-center gap-2",children:[f.jsx(Wy,{className:"h-4 w-4 text-emerald-400","aria-hidden":"true"}),"Ask Aero about ",e,"…"]}),f.jsx("span",{className:"text-[10px] uppercase tracking-wider text-zinc-600",children:"Enter"})]})})})}function IR({providers:e,active:n,override:i,onPick:r,disabled:l}){const[c,d]=U.useState(!1),h=U.useRef(null);if(U.useEffect(()=>{if(!c)return;const S=N=>{h.current?.contains(N.target)||d(!1)},x=N=>{N.key==="Escape"&&d(!1)};return window.addEventListener("mousedown",S),window.addEventListener("keydown",x),()=>{window.removeEventListener("mousedown",S),window.removeEventListener("keydown",x)}},[c]),e.length===0)return null;const g=n?.label.replace(/\s+\(.+\)$/,"")??"No provider",v=n?.defaultModel;return f.jsxs("div",{ref:h,className:"relative",children:[f.jsxs("button",{type:"button",onClick:()=>d(S=>!S),disabled:l,className:"flex items-center gap-1 rounded-md px-1.5 py-1 text-[11px] text-zinc-400 transition hover:bg-zinc-800/60 hover:text-zinc-200 disabled:opacity-50","aria-label":"Switch agent model","aria-haspopup":"listbox","aria-expanded":c,title:n?`${n.label} · ${n.defaultModel}`:"Pick a provider",children:[f.jsx("span",{className:"font-medium text-zinc-200",children:g}),v&&f.jsx("span",{className:"hidden font-mono text-[10px] text-zinc-500 sm:inline",children:v}),f.jsx(mA,{className:"h-3 w-3","aria-hidden":"true"})]}),c&&f.jsxs("div",{role:"listbox",className:"absolute right-0 top-full z-50 mt-1 w-64 overflow-hidden rounded-lg border border-zinc-800 bg-zinc-950 shadow-xl",children:[f.jsx("div",{className:"border-b border-zinc-800/60 px-3 py-2 text-[10px] uppercase tracking-wider text-zinc-500",children:"Aero provider"}),f.jsx("ul",{className:"max-h-72 overflow-y-auto py-1",children:e.map(S=>{const x=n?.id===S.id,N=i===S.id;return f.jsx("li",{children:f.jsxs("button",{type:"button",role:"option","aria-selected":x,disabled:!S.configured,onClick:()=>{S.configured&&(r(N?null:S.id),d(!1))},className:"flex w-full items-start gap-2 px-3 py-2 text-left text-xs transition enabled:hover:bg-zinc-900 disabled:cursor-not-allowed disabled:opacity-50",children:[f.jsx("span",{className:"mt-0.5 flex h-3.5 w-3.5 shrink-0 items-center justify-center",children:x?f.jsx(Rv,{className:"h-3 w-3 text-emerald-400","aria-hidden":"true"}):null}),f.jsxs("span",{className:"flex-1",children:[f.jsxs("span",{className:"flex items-center gap-1.5",children:[f.jsx("span",{className:"font-medium text-zinc-100",children:S.label}),N&&f.jsx("span",{className:"rounded-full border border-emerald-800/60 bg-emerald-950/60 px-1.5 text-[9px] uppercase tracking-wider text-emerald-300",children:"Pinned"}),!S.configured&&f.jsx("span",{className:"rounded-full border border-zinc-800 px-1.5 text-[9px] uppercase tracking-wider text-zinc-500",children:"Key missing"})]}),f.jsx("span",{className:"mt-0.5 block font-mono text-[10px] text-zinc-500",children:S.defaultModel}),S.keySource==="env"&&f.jsx("span",{className:"mt-0.5 block text-[10px] text-zinc-600",children:"via env var"}),!S.configured&&f.jsxs("span",{className:"mt-0.5 block text-[10px] text-zinc-600",children:["Add key in config.yaml or export"," ",f.jsx("code",{className:"font-mono text-zinc-400",children:HR(S.id)})]})]})]})},S.id)})}),i&&f.jsx("button",{type:"button",onClick:()=>{r(null),d(!1)},className:"w-full border-t border-zinc-800/60 px-3 py-2 text-left text-[11px] text-zinc-400 transition hover:bg-zinc-900 hover:text-zinc-100",children:"Reset to auto-detected default"})]})]})}function PR({projectName:e,activeProvider:n,scope:i,onToggleScope:r,disabled:l}){const c=n?.label.replace(/\s+\(.+\)$/,"")??null,d=i==="all";return f.jsxs("div",{className:"flex flex-wrap items-center gap-1.5 border-t border-zinc-800/70 bg-zinc-950/80 px-3 pt-2",children:[f.jsxs("span",{className:"inline-flex items-center gap-1 rounded-full border border-zinc-800 bg-zinc-900/70 px-2 py-0.5 text-[10px] text-zinc-400",children:[f.jsx("span",{className:"text-zinc-600",children:"project"}),f.jsx("span",{className:"font-medium text-zinc-200",children:e})]}),c&&f.jsxs("span",{className:"inline-flex items-center gap-1 rounded-full border border-zinc-800 bg-zinc-900/70 px-2 py-0.5 text-[10px] text-zinc-400",children:[f.jsx("span",{className:"text-zinc-600",children:"model"}),f.jsx("span",{className:"font-medium text-zinc-200",children:c})]}),f.jsxs("button",{type:"button",onClick:r,disabled:l,className:`inline-flex items-center gap-1 rounded-full border px-2 py-0.5 text-[10px] transition disabled:opacity-50 ${d?"border-amber-800/60 bg-amber-950/40 text-amber-300 hover:border-amber-700 hover:text-amber-200":"border-zinc-800 bg-zinc-900/70 text-zinc-400 hover:border-zinc-700 hover:text-zinc-200"}`,title:d?"Aero can invoke write tools (run sweep, dismiss insight, etc). Click to restrict.":"Aero is restricted to read-only tools. Click to allow writes.",children:[f.jsx("span",{className:d?"text-amber-500":"text-zinc-600",children:"scope"}),f.jsx("span",{className:"font-medium",children:d?"all tools":"read-only"})]})]})}function GR({matches:e,selectedIndex:n,onHover:i,onPick:r}){return f.jsxs("div",{className:"absolute inset-x-3 bottom-full mb-2 overflow-hidden rounded-lg border border-zinc-800 bg-zinc-950/98 shadow-2xl",children:[f.jsx("div",{className:"border-b border-zinc-800/60 px-3 py-1.5 text-[10px] uppercase tracking-wider text-zinc-500",children:"Commands"}),f.jsx("ul",{role:"listbox",className:"max-h-72 overflow-y-auto py-1",children:e.map((l,c)=>{const d=c===n;return f.jsx("li",{children:f.jsxs("button",{type:"button",role:"option","aria-selected":d,onMouseEnter:()=>i(c),onClick:()=>r(l),className:`flex w-full items-center gap-3 px-3 py-1.5 text-left text-xs transition ${d?"bg-zinc-900 text-zinc-100":"text-zinc-300 hover:bg-zinc-900/60"}`,children:[f.jsx("span",{className:"font-mono text-[11px] text-emerald-400",children:l.command}),f.jsx("span",{className:"font-medium",children:l.label}),f.jsx("span",{className:"ml-auto text-[10px] text-zinc-500",children:l.hint})]})},l.command)})}),f.jsxs("div",{className:"border-t border-zinc-800/60 px-3 py-1.5 text-[10px] text-zinc-600",children:[f.jsx("span",{className:"mr-3",children:"↑↓ to select"}),f.jsx("span",{className:"mr-3",children:"Enter to run"}),f.jsx("span",{children:"Tab to autocomplete"})]})]})}function HR(e){switch(e){case"claude":return"ANTHROPIC_API_KEY";case"openai":return"OPENAI_API_KEY";case"gemini":return"GOOGLE_API_KEY";case"zai":return"ZAI_API_KEY"}}function QR(e,n){const i=e.timestamp??0;return`${e.role}:${i}:${n}`}function KR(e,n,i,r){const l=[];for(let c=0;c<e.length;c++){const d=e[c],h=QR(d,c);if(d.role==="user"){const g=typeof d.content=="string"?d.content:JSON.stringify(d.content);if(g.startsWith("[system]"))continue;l.push(f.jsx(ZR,{text:g,projectName:n,providerOverride:i,scope:r},h));continue}if(d.role==="assistant"){const g=new Map;let v=c+1;for(;v<e.length&&e[v].role==="toolResult";){const N=e[v];g.set(N.toolCallId,N),v++}const S=XR(d,g,d.timestamp??0),x=jS(d);l.push(f.jsxs(U.Fragment,{children:[S.length>0&&f.jsx("div",{className:"mt-3 space-y-1.5",children:S.map(N=>f.jsx(NS,{trail:N},N.id))}),x.trim()&&f.jsxs("div",{className:"mt-3",children:[f.jsx("div",{className:"mb-0.5 text-[10px] uppercase tracking-wider text-emerald-400",children:"Aero"}),f.jsx(kS,{content:x})]})]},h)),c=v-1;continue}}return l}function ZR({text:e,projectName:n,providerOverride:i,scope:r}){const[l,c]=U.useState(!1),d=U.useMemo(()=>YR(n,e,i,r),[n,e,i,r]);async function h(){try{await navigator.clipboard.writeText(d),c(!0),window.setTimeout(()=>c(!1),1500)}catch{}}return f.jsxs("div",{className:"group relative mt-3 rounded-md bg-zinc-900/60 px-3 py-2 text-zinc-200",children:[f.jsxs("div",{className:"flex items-center justify-between gap-2",children:[f.jsx("div",{className:"text-[10px] uppercase tracking-wider text-zinc-500",children:"You"}),f.jsx("button",{type:"button",onClick:Nn(h),className:"inline-flex items-center gap-1 rounded border border-zinc-800/70 bg-zinc-950/60 px-1.5 py-0.5 text-[10px] text-zinc-400 opacity-0 transition hover:border-zinc-700 hover:text-zinc-100 group-hover:opacity-100 focus:opacity-100","aria-label":"Copy as CLI command",title:d,children:l?f.jsxs(f.Fragment,{children:[f.jsx(Rv,{className:"h-2.5 w-2.5 text-emerald-400","aria-hidden":"true"}),"Copied"]}):f.jsxs(f.Fragment,{children:[f.jsx(yA,{className:"h-2.5 w-2.5","aria-hidden":"true"}),"Copy as CLI"]})})]}),f.jsx("div",{className:"whitespace-pre-wrap",children:e})]})}function YR(e,n,i,r){const l=["canonry","agent","ask",Yb(e),Yb(n)];return i&&l.push("--provider",i),r==="read-only"&&l.push("--scope","read-only"),l.join(" ")}function Yb(e){return`'${e.replace(/'/g,"'\\''")}'`}function XR(e,n,i){const r=[];for(const l of e.content){if(l.type!=="toolCall")continue;const c=l,d=n.get(c.id);r.push({id:c.id,name:c.name,args:c.arguments,startedAt:i,endedAt:d?.timestamp,isError:d?.isError,result:d?.content})}return r}function NS({trail:e}){const[n,i]=U.useState(!1),r=e.endedAt===void 0,l=!r&&e.isError===!0,c=e.endedAt!=null?e.endedAt-e.startedAt:null,d=c==null||c<0?null:c<1e3?`${c}ms`:`${(c/1e3).toFixed(1)}s`,h=l?"border-rose-800/50":r?"border-emerald-800/50":"border-zinc-800/70",g=l?"bg-rose-950/20":r?"bg-emerald-950/20":"bg-zinc-900/40";return f.jsxs("div",{className:`rounded-md border ${h} ${g} font-mono`,children:[f.jsxs("button",{type:"button",onClick:()=>i(v=>!v),className:"flex w-full items-center gap-2 px-2.5 py-1.5 text-left","aria-expanded":n,children:[f.jsx("span",{className:"flex h-3.5 w-3.5 shrink-0 items-center justify-center",children:r?f.jsx(zA,{className:"h-3 w-3 animate-spin text-emerald-400","aria-hidden":"true"}):l?f.jsx(Bv,{className:"h-3 w-3 text-rose-400","aria-hidden":"true"}):f.jsx(JA,{className:"h-3 w-3 text-zinc-500","aria-hidden":"true"})}),f.jsx("span",{className:"text-[11px] font-semibold text-zinc-100",children:e.name}),f.jsxs("span",{className:"ml-auto flex items-center gap-2 text-[10px] text-zinc-500",children:[r?f.jsx("span",{className:"text-emerald-400",children:"running…"}):f.jsxs(f.Fragment,{children:[f.jsx("span",{children:l?"failed":"ok"}),d&&f.jsx("span",{children:d})]}),f.jsx(Ff,{className:`h-3 w-3 transition-transform ${n?"rotate-90":""}`,"aria-hidden":"true"})]})]}),n&&f.jsxs("div",{className:"border-t border-zinc-800/60 px-2.5 py-2 text-[11px] text-zinc-400",children:[f.jsx("div",{className:"mb-1 text-[9px] uppercase tracking-wider text-zinc-600",children:"Args"}),f.jsx("pre",{className:"mb-2 overflow-x-auto whitespace-pre-wrap break-all text-[10px] text-zinc-300",children:Xb(e.args)}),!r&&e.result!==void 0&&f.jsxs(f.Fragment,{children:[f.jsx("div",{className:"mb-1 text-[9px] uppercase tracking-wider text-zinc-600",children:l?"Error":"Result"}),f.jsx("pre",{className:"overflow-x-auto whitespace-pre-wrap break-all text-[10px] text-zinc-300",children:Xb(e.result)})]})]})]})}function Xb(e){try{const n=typeof e=="string"?e:JSON.stringify(e,null,2);return n.length>2e3?`${n.slice(0,2e3)}
64
- … (${n.length-2e3} more chars)`:n}catch{return String(e)}}function kS({content:e}){return f.jsx("div",{className:"aero-markdown text-zinc-100",children:f.jsx(Bw,{components:{h1:n=>f.jsx("h1",{...n,className:"mt-3 mb-2 text-base font-semibold text-zinc-50"}),h2:n=>f.jsx("h2",{...n,className:"mt-3 mb-2 text-sm font-semibold text-zinc-50"}),h3:n=>f.jsx("h3",{...n,className:"mt-3 mb-1.5 text-sm font-semibold text-zinc-100"}),h4:n=>f.jsx("h4",{...n,className:"mt-2 mb-1 text-xs font-semibold uppercase tracking-wide text-zinc-300"}),p:n=>f.jsx("p",{...n,className:"mb-2 leading-relaxed"}),ul:n=>f.jsx("ul",{...n,className:"mb-2 ml-4 list-disc space-y-1"}),ol:n=>f.jsx("ol",{...n,className:"mb-2 ml-4 list-decimal space-y-1"}),li:n=>f.jsx("li",{...n,className:"marker:text-zinc-600"}),strong:n=>f.jsx("strong",{...n,className:"font-semibold text-zinc-50"}),em:n=>f.jsx("em",{...n,className:"text-zinc-200"}),code:({children:n,...i})=>f.jsx("code",{...i,className:"rounded bg-zinc-800/70 px-1 py-0.5 font-mono text-[12px] text-emerald-200",children:n}),pre:n=>f.jsx("pre",{...n,className:"mb-2 overflow-x-auto rounded-md border border-zinc-800 bg-zinc-900/70 p-3 font-mono text-xs text-zinc-200"}),a:n=>f.jsx("a",{...n,className:"text-emerald-400 underline decoration-emerald-700 hover:decoration-emerald-400",target:"_blank",rel:"noopener noreferrer"}),table:n=>f.jsx("div",{className:"mb-2 overflow-x-auto",children:f.jsx("table",{...n,className:"w-full border-collapse text-xs"})}),thead:n=>f.jsx("thead",{...n,className:"border-b border-zinc-800"}),th:n=>f.jsx("th",{...n,className:"px-2 py-1 text-left font-semibold text-zinc-300"}),tr:n=>f.jsx("tr",{...n,className:"border-b border-zinc-900"}),td:n=>f.jsx("td",{...n,className:"px-2 py-1 text-zinc-200"}),blockquote:n=>f.jsx("blockquote",{...n,className:"mb-2 border-l-2 border-zinc-700 pl-3 italic text-zinc-400"}),hr:()=>f.jsx("hr",{className:"my-3 border-zinc-800"})},children:e})})}function JR(){return f.jsxs("div",{className:"mt-3 flex items-center gap-2",children:[f.jsx("div",{className:"text-[10px] uppercase tracking-wider text-emerald-400",children:"Aero"}),f.jsxs("div",{className:"flex items-center gap-1","aria-label":"Aero is thinking",children:[f.jsx("span",{className:"aero-dot h-1.5 w-1.5 rounded-full bg-emerald-400/80"}),f.jsx("span",{className:"aero-dot aero-dot-2 h-1.5 w-1.5 rounded-full bg-emerald-400/60"}),f.jsx("span",{className:"aero-dot aero-dot-3 h-1.5 w-1.5 rounded-full bg-emerald-400/40"})]})]})}function FR(){const e=fv(),n=/^\/projects\/([^/]+)/.exec(e.pathname),i=n?decodeURIComponent(n[1]):null,r=fn({...xc({client:ne}),enabled:i!==null,staleTime:6e4});if(!i)return null;const l=r.data??[],c=l.find(d=>d.id===i)??l.find(d=>d.name===i);return c?f.jsx(VR,{projectName:c.name},c.name):null}function wi(e,n){e.invalidateQueries({predicate:i=>{const r=i.queryKey[0];return typeof r?._id=="string"&&r._id.startsWith(n)}})}function ro(e,n,i){switch(e.invalidateQueries({queryKey:wp({client:ne})}),e.invalidateQueries({queryKey:Ei({client:ne})}),n){case Ne["answer-visibility"]:case Ne["site-audit"]:case Ne["backlink-extract"]:return;case Ne["gsc-sync"]:case Ne["inspect-sitemap"]:wi(e,"getApiV1ProjectsByNameGoogleGsc");return;case Ne["ga-sync"]:wi(e,"getApiV1ProjectsByNameGa");return;case Ne["traffic-sync"]:wi(e,"getApiV1ProjectsByNameGa"),wi(e,"getApiV1ProjectsByNameTraffic");return;case Ne["bing-inspect"]:case Ne["bing-inspect-sitemap"]:wi(e,"getApiV1ProjectsByNameBing");return;case Ne["aeo-discover-seed"]:case Ne["aeo-discover-probe"]:return;case Ne["gbp-sync"]:wi(e,"getApiV1ProjectsByNameGbp");return;case Ne["ads-sync"]:wi(e,"getApiV1ProjectsByNameAds");return;default:return n}}const Jb=[{label:"GitHub",href:"https://github.com/AINYC/canonry",Icon:xA},{label:"Docs",href:"https://github.com/AINYC/canonry/tree/main/docs",Icon:dA},{label:"Changelog",href:"https://github.com/AINYC/canonry/releases",Icon:vA}],Fb=e=>({label:e,state:"checking",detail:"Checking service health"}),WR={apiStatus:Fb("API"),workerStatus:Fb("Worker")};function AS(e){switch(e){case Ne["answer-visibility"]:return"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 eM(e){return e==="completed"?"positive":e==="partial"?"caution":"negative"}function tM(e){const n=AS(e.kind);return e.status==="completed"?`${n} completed`:e.status==="partial"?`${n} completed with partial results`:e.status==="cancelled"?`${n} cancelled`:`${n} failed`}function nM(e,n){return e.error?`${n}: ${op(e.error)}`:e.location?`${n} · ${e.location}`:n}function Wb(e,n,i){if(n)return n;const r=i.find(l=>l.id===e);return r?.displayName||r?.name||e}function aM(e,n){return[e.completed>0?`${e.completed} completed`:null,e.partial>0?`${e.partial} partial`:null,e.failed>0?`${e.failed} failed`:null,e.cancelled>0?`${e.cancelled} cancelled`:null,n>0?`${n} skipped at queue time`:null].filter(Boolean).join(", ")}function iM(e){return e.failed>0||e.cancelled>0?"negative":e.partial>0?"caution":"positive"}function sM(){const e=Fa(),n=U.useSyncExternalStore(ID,_i,_i),i=Object.keys(n.runs).length>0||Object.keys(n.batches).length>0,r=fn({...jp({client:ne}),enabled:i,staleTime:ao,refetchInterval:3e3}),l=fn({...xc({client:ne}),enabled:i}),c=U.useRef({}),d=U.useCallback(()=>{r.refetch()},[r.refetch]);return U.useEffect(()=>{i&&d()},[i,d]),U.useEffect(()=>{if(!i||typeof window>"u")return;const h=()=>{document.visibilityState==="visible"&&d()};return window.addEventListener("focus",d),document.addEventListener("visibilitychange",h),()=>{window.removeEventListener("focus",d),document.removeEventListener("visibilitychange",h)}},[i,d]),U.useEffect(()=>{const h=r.data??[],g=l.data??[],v=Object.fromEntries(h.map(x=>[x.id,x])),S=Object.fromEntries(h.map(x=>[x.id,x.status]));for(const x of Object.values(n.runs)){const N=v[x.runId];if(!N||!HD(N.status)||(c.current[N.id]??x.lastAnnouncedStatus)===N.status)continue;const T=g.find(E=>E.id===N.projectId);if(T&&ro(e,N.kind,T.name),x.sourceAction==="run-all"){uf(N.id);continue}const k=Wb(N.projectId,x.projectLabel,g);tn({title:tM(N),detail:nM(N,k),tone:eM(N.status),dedupeKey:`run:${N.id}`,dedupeMode:"replace",cta:{label:"View run",intent:"open-run-drawer",runId:N.id}}),uf(N.id)}if(r.data!==void 0){const x=new Set(h.map(_=>_.id)),N=KD(Object.values(n.runs),x,Date.now(),QD);for(const _ of N){const T=g.find(k=>k.id===_.projectId);T&&ro(e,_.kind,T.name),_.sourceAction!=="run-all"&&tn({title:`${AS(_.kind)} status unavailable`,detail:Wb(_.projectId,_.projectLabel,g),tone:"neutral",dedupeKey:`run-stale:${_.runId}`,dedupeMode:"replace"}),uf(_.runId)}}for(const x of Object.values(n.batches)){const N=ZD(x.runIds,v);N.finished&&(tn({title:"Run-all batch finished",detail:aM(N,x.skippedCount),tone:iM(N),dedupeKey:`batch:${x.batchId}`,dedupeMode:"replace",cta:{label:"View runs",intent:"go-to-runs"}}),GD(x.batchId))}c.current=S},[l.data,r.data,n,e]),null}function rM(){const e=uo(),{dashboard:n,isLoading:i,refetch:r}=kc(),d=Cp(!e,e?.health).data??e?.health??WR,h=fv(),{runId:g,evidenceId:v,closeDrawer:S}=zp(),[x,N]=U.useState(!1),[_,T]=U.useState(()=>{if(typeof window>"u")return null;try{return window.localStorage.getItem("canonry:dismissedUpdateVersion")}catch{return null}}),[k]=U.useState(()=>typeof window>"u"?null:new URLSearchParams(window.location.search).get("force-update")),E=k?{current:d.apiStatus.version??"0.0.0",latest:k,url:"https://www.npmjs.com/package/@ainyc/canonry",upgradeCommand:"npm install -g @ainyc/canonry"}:d.apiStatus.updateAvailable,R=E&&E.latest!==_,I=()=>{if(E){try{window.localStorage.setItem("canonry:dismissedUpdateVersion",E.latest)}catch{}T(E.latest)}},G=ER(g),Z=G.data??null,X=G.isLoading;U.useEffect(()=>{Z&&Z.status!=="running"&&Z.status!=="queued"&&r()},[Z?.status,r]),U.useEffect(()=>{N(!1)},[h.pathname]),U.useEffect(()=>{if(typeof window>"u"||!g&&!v)return;const J=B=>{B.key==="Escape"&&S()};return window.addEventListener("keydown",J),()=>{window.removeEventListener("keydown",J)}},[g,v,S]);const F=n??e?.dashboard??null,O=h.pathname==="/setup"&&F!==null&&F.portfolioOverview.projects.length===0,M=g&&F?iR(F,g):void 0,oe=U.useMemo(()=>h.pathname.match(/^\/projects\/([^/]+)/)?.[1]??null,[h.pathname]),ke=U.useMemo(()=>!oe||!F?null:F.projects.find(J=>J.project.id===oe)?.project.name??null,[oe,F]),{commandCenter:Oe}=CR(ke),be=U.useMemo(()=>{if(v)return rR(Oe,F,v)},[v,Oe,F]),et=(()=>{const J=h.pathname;if(J==="/")return"Portfolio";if(J==="/projects")return"Projects";if(J==="/runs")return"Runs";if(J==="/settings")return"Settings";if(J==="/setup")return"Setup";if(J==="/backlinks")return"Backlinks";if(J==="/traffic"||J.startsWith("/traffic/"))return"Server traffic";if(J.startsWith("/projects/")){const W=J.split("/").filter(Boolean)[1];if(W&&F){const fe=F.projects.find(Se=>Se.project.id===W);if(fe)return fe.project.name}return"Project"}return"Not found"})(),Ke=U.useMemo(()=>pk(),[]);if(Ke){const J=!Ke.views||Ke.views.includes(V4(h.pathname));return f.jsxs("div",{className:"app-shell app-shell-embed",style:G4(Ke.theme),children:[f.jsx("a",{className:"skip-link",href:"#content",children:"Skip to content"}),f.jsx("main",{id:"content",className:"page-shell",children:J?f.jsx(Sf,{}):f.jsx("div",{className:"embed-view-unavailable",role:"status",children:"This view is not available in embed mode."})})]})}return f.jsxs("div",{className:`app-shell ${O?"app-shell-focus":""}`,children:[f.jsx("a",{className:"skip-link",href:"#content",children:"Skip to content"}),!O&&f.jsxs("aside",{className:"sidebar","aria-label":"Primary navigation",children:[f.jsx("div",{className:"sidebar-brand",children:f.jsx(Vb,{version:d.apiStatus.version,updateAvailable:R?E:null,onDismissUpdate:I})}),f.jsxs("nav",{className:"sidebar-nav",children:[f.jsxs(st,{to:"/",className:"sidebar-link",activeProps:{className:"sidebar-link sidebar-link-active"},activeOptions:{exact:!0},children:[f.jsx(kA,{className:"sidebar-icon"}),f.jsx("span",{children:"Overview"})]}),f.jsxs(st,{to:"/projects",className:"sidebar-link",activeProps:{className:"sidebar-link sidebar-link-active"},activeOptions:{exact:!1},children:[f.jsx(jA,{className:"sidebar-icon"}),f.jsx("span",{children:"Projects"})]}),f.jsxs(st,{to:"/runs",className:"sidebar-link",activeProps:{className:"sidebar-link sidebar-link-active"},activeOptions:{exact:!0},children:[f.jsx(LA,{className:"sidebar-icon"}),f.jsx("span",{children:"Runs"})]}),f.jsxs(st,{to:"/traffic",className:"sidebar-link",activeProps:{className:"sidebar-link sidebar-link-active"},activeOptions:{exact:!1},children:[f.jsx($A,{className:"sidebar-icon"}),f.jsx("span",{children:"Server traffic"})]}),f.jsxs(st,{to:"/backlinks",className:"sidebar-link",activeProps:{className:"sidebar-link sidebar-link-active"},activeOptions:{exact:!0},children:[f.jsx(_A,{className:"sidebar-icon"}),f.jsx("span",{children:"Backlinks"})]}),f.jsxs(st,{to:"/settings",className:"sidebar-link",activeProps:{className:"sidebar-link sidebar-link-active"},activeOptions:{exact:!0},children:[f.jsx(ZA,{className:"sidebar-icon"}),f.jsx("span",{children:"Settings"})]}),i?f.jsxs(f.Fragment,{children:[f.jsx("p",{className:"sidebar-section-title",children:"Projects"}),[1,2,3].map(J=>f.jsxs("div",{className:"sidebar-skeleton-item",children:[f.jsx("span",{className:"skeleton-circle size-2"}),f.jsx("span",{className:"skeleton-text flex-1",style:{width:`${50+J*15}%`}})]},J))]}):F&&F.projects.length>0?f.jsxs(f.Fragment,{children:[f.jsx("p",{className:"sidebar-section-title",children:"Projects"}),F.projects.map(J=>{const B=J.visibilitySummary.tone;return f.jsxs(st,{to:"/projects/$projectName",params:{projectName:J.project.name},className:"sidebar-project",activeProps:{className:"sidebar-project sidebar-project-active"},children:[f.jsx("span",{className:`sidebar-dot sidebar-dot-${B}`}),f.jsx("span",{children:J.project.displayName||J.project.name})]},J.project.id)})]}):i?null:f.jsxs(f.Fragment,{children:[f.jsx("p",{className:"sidebar-section-title",children:"Resources"}),f.jsxs(st,{to:"/setup",className:"sidebar-link",activeProps:{className:"sidebar-link sidebar-link-active"},activeOptions:{exact:!0},children:[f.jsx(PA,{className:"sidebar-icon"}),f.jsx("span",{children:"Setup"})]})]})]}),f.jsx("div",{className:"sidebar-footer",children:Jb.map(({label:J,href:B,Icon:W})=>f.jsx("a",{className:"sidebar-footer-icon",href:B,target:"_blank",rel:"noopener noreferrer",title:J,"aria-label":J,children:f.jsx(W,{className:"size-4"})},B))})]}),f.jsxs("div",{className:"main-area",children:[f.jsxs("header",{className:"topbar",children:[f.jsxs("div",{className:"topbar-left",children:[f.jsx("div",{className:"topbar-brand-mobile",children:f.jsx(Vb,{compact:!0})}),f.jsxs("nav",{className:"breadcrumb","aria-label":"Breadcrumb",children:[f.jsx(st,{to:"/",children:"Home"}),f.jsx(Ff,{className:"breadcrumb-sep size-3"}),f.jsx("span",{className:"breadcrumb-current",children:et})]})]}),f.jsxs("div",{className:"topbar-actions",children:[f.jsxs("div",{className:"health-pill-row",children:[f.jsxs("span",{className:`health-pill health-pill-${d.apiStatus.state}`,title:Us(d.apiStatus),children:["API ",d.apiStatus.state==="ok"?"ok":d.apiStatus.state]}),f.jsxs("span",{className:`health-pill health-pill-${d.workerStatus.state}`,title:Us(d.workerStatus),children:["Worker ",d.workerStatus.state==="ok"?"ok":d.workerStatus.state]})]}),f.jsxs(qe,{className:"nav-toggle",variant:"secondary",size:"icon",type:"button","aria-expanded":x,"aria-controls":"mobile-nav",onClick:()=>N(J=>!J),children:[f.jsx(DA,{className:"size-4"}),f.jsx("span",{className:"sr-only",children:"Open navigation"})]})]})]}),f.jsxs("div",{id:"mobile-nav",className:`mobile-nav ${x?"mobile-nav-open":""}`,children:[f.jsxs(qe,{className:"mobile-nav-close",variant:"ghost",size:"icon",type:"button",onClick:()=>N(!1),children:[f.jsx(Gs,{className:"size-5"}),f.jsx("span",{className:"sr-only",children:"Close navigation"})]}),f.jsx(st,{to:"/",className:"mobile-nav-link",activeProps:{className:"mobile-nav-link mobile-nav-link-active"},activeOptions:{exact:!0},children:"Overview"}),f.jsx(st,{to:"/projects",className:"mobile-nav-link",activeProps:{className:"mobile-nav-link mobile-nav-link-active"},activeOptions:{exact:!1},children:"Projects"}),f.jsx(st,{to:"/runs",className:"mobile-nav-link",activeProps:{className:"mobile-nav-link mobile-nav-link-active"},activeOptions:{exact:!0},children:"Runs"}),f.jsx(st,{to:"/traffic",className:"mobile-nav-link",activeProps:{className:"mobile-nav-link mobile-nav-link-active"},activeOptions:{exact:!1},children:"Server traffic"}),f.jsx(st,{to:"/settings",className:"mobile-nav-link",activeProps:{className:"mobile-nav-link mobile-nav-link-active"},activeOptions:{exact:!0},children:"Settings"}),F&&F.projects.length>0?f.jsxs("div",{className:"mobile-nav-section",children:[f.jsx("p",{className:"mobile-nav-section-title",children:"Projects"}),F.projects.map(J=>f.jsx(st,{to:"/projects/$projectName",params:{projectName:J.project.name},className:"mobile-nav-link",children:J.project.name},J.project.id))]}):null]}),f.jsx("main",{id:"content",className:"page-shell",children:i&&!e?f.jsxs("div",{className:"page-skeleton",children:[f.jsxs("div",{className:"page-skeleton-header",children:[f.jsx("div",{className:"skeleton-text h-6 w-40"}),f.jsx("div",{className:"skeleton-text-sm w-72"})]}),f.jsx("div",{className:"page-skeleton-grid",children:[1,2,3].map(J=>f.jsxs("div",{className:"page-skeleton-card",children:[f.jsx("div",{className:"skeleton-text w-24"}),f.jsx("div",{className:"skeleton-text w-full"}),f.jsx("div",{className:"skeleton-text-sm w-3/4"})]},J))}),f.jsx("div",{className:"page-skeleton-grid",style:{gridTemplateColumns:"1fr 1fr"},children:[1,2].map(J=>f.jsxs("div",{className:"page-skeleton-card",children:[f.jsx("div",{className:"skeleton-text w-20"}),f.jsx("div",{className:"space-y-2",children:[1,2,3].map(B=>f.jsx("div",{className:"skeleton-text-sm w-full"},B))})]},J))})]}):f.jsx(Sf,{})}),f.jsxs("footer",{className:"footer",children:[f.jsxs("span",{className:"footer-brand",children:[f.jsx("span",{children:f.jsx("a",{href:"https://canonry.ai",children:"Canonry"})}),d.apiStatus.version&&d.apiStatus.version!=="unknown"?f.jsxs("span",{className:"footer-version",children:["v",d.apiStatus.version]}):null]}),f.jsx("div",{className:"footer-links",children:Jb.map(({label:J,href:B,Icon:W})=>f.jsx("a",{href:B,target:"_blank",rel:"noopener noreferrer",title:J,"aria-label":J,className:"footer-icon",children:f.jsx(W,{className:"size-3.5"})},B))})]})]}),M?f.jsxs(Z3,{open:!0,title:M.summary,subtitle:`${M.projectName} · ${M.kindLabel}`,onClose:S,children:[f.jsxs("div",{className:"flex flex-wrap items-center gap-x-5 gap-y-1 text-sm",children:[f.jsx(Ap,{status:M.status}),f.jsx("span",{className:"text-zinc-400",children:M.startedAt}),f.jsx("span",{className:"text-zinc-500",children:M.duration}),f.jsx("span",{className:"text-zinc-600",children:M.triggerLabel})]}),M.status==="failed"&&M.statusDetail&&f.jsx("p",{className:"text-sm text-rose-300/80 mt-2",children:M.statusDetail}),f.jsxs("div",{className:"mt-4",children:[f.jsx("p",{className:"text-[10px] font-semibold uppercase tracking-wider text-zinc-500 mb-2",children:"Activity Log"}),X?f.jsx("p",{className:"text-sm text-zinc-500",children:"Loading run details..."}):Z?.snapshots&&Z.snapshots.length>0?f.jsxs("div",{className:"space-y-2",children:[Z.snapshots.map(J=>f.jsxs("div",{className:"rounded-lg border border-zinc-800/60 bg-zinc-900/30 p-3",children:[f.jsxs("div",{className:"flex items-center justify-between gap-2 mb-1",children:[f.jsx("p",{className:"text-sm font-medium text-zinc-200 truncate",children:J.query??"Unknown query"}),f.jsxs("div",{className:"flex items-center gap-1.5",children:[f.jsx(V3,{provider:J.provider}),f.jsx(pS,{variant:J.citationState===sc.cited?"success":"neutral",children:J.citationState})]})]}),J.model&&f.jsx("p",{className:"text-[11px] text-zinc-500 font-mono",children:J.model}),J.citedDomains.length>0&&f.jsxs("p",{className:"text-xs text-zinc-500 mt-1",children:[f.jsx("span",{className:"text-zinc-400",children:"Sources:"})," ",J.citedDomains.join(", ")]}),J.competitorOverlap.length>0&&f.jsxs("p",{className:"text-xs text-rose-400/80 mt-0.5",children:["Competitor cited: ",J.competitorOverlap.join(", ")]}),J.groundingSources&&J.groundingSources.length>0&&f.jsxs("details",{className:"mt-2",children:[f.jsxs("summary",{className:"text-xs text-zinc-500 cursor-pointer hover:text-zinc-400",children:[J.groundingSources.length," grounding source",J.groundingSources.length!==1?"s":""]}),f.jsx("ul",{className:"mt-1 space-y-0.5",children:J.groundingSources.map((B,W)=>{const fe=Rf(B.uri),Se=B.title||B.uri;return f.jsx("li",{className:"text-xs text-zinc-500 truncate",children:fe?f.jsx("a",{href:fe,target:"_blank",rel:"noopener noreferrer",className:"hover:text-zinc-300",children:Se}):f.jsx("span",{children:Se})},W)})})]}),J.answerText&&f.jsxs("details",{className:"mt-1",children:[f.jsx("summary",{className:"text-xs text-zinc-500 cursor-pointer hover:text-zinc-400",children:"Answer preview"}),f.jsx("p",{className:"mt-1 text-xs text-zinc-400 leading-relaxed whitespace-pre-wrap",children:J.answerText})]})]},J.id)),Z.status==="running"&&f.jsxs("div",{className:"flex items-center gap-2 p-3 text-sm text-zinc-500",children:[f.jsx("span",{className:"inline-block h-2 w-2 rounded-full bg-amber-500 animate-pulse"}),"Running remaining queries..."]})]}):Z&&Z.status==="running"?f.jsxs("div",{className:"flex items-center gap-2 p-3 text-sm text-zinc-500",children:[f.jsx("span",{className:"inline-block h-2 w-2 rounded-full bg-amber-500 animate-pulse"}),"Waiting for first query result..."]}):Z&&Z.status==="queued"?f.jsxs("div",{className:"flex items-center gap-2 p-3 text-sm text-zinc-500",children:[f.jsx("span",{className:"inline-block h-2 w-2 rounded-full bg-zinc-500 animate-pulse"}),"Run queued, waiting for execution slot..."]}):Z&&Z.error?f.jsxs("div",{className:"rounded-lg border border-rose-800/40 bg-rose-950/20 p-3",children:[f.jsx("p",{className:"text-sm font-medium text-rose-300 mb-2",children:"Run failed"}),f.jsx("pre",{className:"text-xs text-rose-300/80 whitespace-pre-wrap break-words max-h-48 overflow-y-auto font-mono leading-5",children:q4(Z.error)})]}):f.jsx("p",{className:"text-sm text-zinc-500",children:"No snapshot data available."})]})]}):null,be?f.jsx(F3,{evidence:be.evidence,project:be.project,onClose:S}):null,f.jsx(sM,{}),f.jsx(RR,{}),f.jsx(FR,{})]})}class oM extends U.Component{state={error:null};static getDerivedStateFromError(n){return{error:n}}componentDidCatch(n,i){console.error("[ErrorBoundary]",n,i.componentStack)}handleReset=()=>{this.setState({error:null})};render(){return this.state.error?f.jsx("div",{className:"page-container",children:f.jsxs("div",{className:"flex flex-col items-center justify-center gap-4 py-20 text-center",children:[f.jsx("div",{className:"rounded-full bg-rose-950/40 p-3",children:f.jsx(Bv,{className:"size-6 text-rose-400"})}),f.jsx("h2",{className:"text-lg font-semibold text-zinc-100",children:"Something went wrong"}),f.jsx("p",{className:"text-sm text-zinc-400 max-w-md",children:this.state.error.message||"An unexpected error occurred while rendering this page."}),f.jsxs("div",{className:"flex gap-3 mt-2",children:[f.jsxs(qe,{variant:"secondary",size:"sm",onClick:this.handleReset,children:[f.jsx(Mv,{className:"size-3.5 mr-1.5"}),"Try again"]}),f.jsx(qe,{variant:"secondary",size:"sm",onClick:()=>{const n=window.__CANONRY_CONFIG__?.basePath?.replace(/\/$/,"")??"";window.location.href=n||"/"},children:"Go home"})]})]})}):this.props.children}}const kn=U.forwardRef(({className:e,...n},i)=>f.jsx("div",{ref:i,className:Tn("rounded-xl border border-zinc-800 bg-zinc-950/75 shadow-[0_0_0_1px_rgba(255,255,255,0.01)]",e),...n}));kn.displayName="Card";const Mf=U.forwardRef(({className:e,...n},i)=>f.jsx("div",{ref:i,className:Tn("flex flex-col gap-1.5 p-5",e),...n}));Mf.displayName="CardHeader";const Bf=U.forwardRef(({className:e,...n},i)=>f.jsx("h3",{ref:i,className:Tn("font-medium tracking-tight text-zinc-50",e),...n}));Bf.displayName="CardTitle";const Lf=U.forwardRef(({className:e,...n},i)=>f.jsx("p",{ref:i,className:Tn("text-sm text-zinc-500",e),...n}));Lf.displayName="CardDescription";const Yl=U.forwardRef(({className:e,...n},i)=>f.jsx("div",{ref:i,className:Tn("p-5 pt-0",e),...n}));Yl.displayName="CardContent";function lM({points:e,tone:n}){const i=U.useId();if(e.length===0)return null;const r=42,l=132,c=5,d=Math.min(...e),g=Math.max(...e)-d||1,v=l-c*2,S=r-c*2,x=e.map((N,_)=>{const T=c+_/Math.max(e.length-1,1)*v,k=c+(1-(N-d)/g)*S;return`${T},${k}`}).join(" ");return f.jsxs("svg",{className:`sparkline sparkline-${n}`,viewBox:`0 0 ${l} ${r}`,"aria-hidden":"true",children:[f.jsx("defs",{children:f.jsx("clipPath",{id:i,children:f.jsx("rect",{x:c,y:c,width:v,height:S,rx:"8"})})}),f.jsx("line",{className:"sparkline-guide",x1:c,x2:l-c,y1:r-c,y2:r-c}),f.jsx("polyline",{clipPath:`url(#${i})`,points:x,vectorEffect:"non-scaling-stroke"})]})}function cM({project:e}){return f.jsxs(st,{to:"/projects/$projectName",params:{projectName:e.project.name},className:"project-row cursor-pointer",children:[f.jsx("div",{className:"project-row-chart",children:f.jsx(lM,{points:e.trend,tone:Z0(e.lastRun.status)})}),f.jsxs("div",{className:"project-row-primary",children:[f.jsxs("div",{children:[f.jsx("p",{className:"project-name",children:e.project.name}),f.jsx("p",{className:"project-domain",children:e.project.canonicalDomain})]}),f.jsx("p",{className:"project-insight",children:e.insight})]}),f.jsx("div",{className:"project-row-stat",children:f.jsxs("div",{className:"metric-inline-block",children:[f.jsx("p",{className:"metric-inline-label",children:"Mentioned"}),f.jsx("p",{className:`metric-inline-value ${e.mentionTone==="caution"?"text-amber-400":""}`,children:e.mentionScore}),f.jsx("p",{className:"metric-inline-delta",children:e.mentionDelta}),e.providerCoverage&&f.jsx("p",{className:"text-[10px] font-medium text-amber-400/80",children:e.providerCoverage})]})}),f.jsx("div",{className:"project-row-stat",children:f.jsxs("div",{className:"metric-inline-block",children:[f.jsx("p",{className:"metric-inline-label",children:"Competitor Pressure"}),f.jsx("p",{className:"metric-inline-value",children:e.competitorPressureLabel})]})}),f.jsx("span",{className:"project-row-link",children:f.jsx(Ff,{className:"h-4 w-4 text-zinc-500"})})]})}function uM(){const e=uo(),{dashboard:n,isLoading:i}=kc(),r=n??e?.dashboard;if(!r||i)return f.jsxs("div",{className:"page-skeleton",children:[f.jsxs("div",{className:"page-skeleton-header",children:[f.jsx("div",{className:"skeleton-text h-6 w-32"}),f.jsx("div",{className:"skeleton-text-sm w-64"})]}),f.jsx("div",{className:"space-y-3",children:[1,2,3].map(S=>f.jsxs("div",{className:"rounded-xl border border-zinc-800/60 bg-zinc-900/30 p-4 flex items-center gap-4",children:[f.jsxs("div",{className:"flex-1 space-y-2",children:[f.jsx("div",{className:"skeleton-text w-36"}),f.jsx("div",{className:"skeleton-text-sm w-48"})]}),f.jsx("div",{className:"skeleton-text w-16"}),f.jsx("div",{className:"skeleton-text w-16"}),f.jsx("div",{className:"skeleton h-8 w-20 rounded"})]},S))})]});const l=r.portfolioOverview,h=Cp(!e,e?.health).data??e?.health??{apiStatus:{label:"API",state:"checking",detail:"Checking service health"},workerStatus:{label:"Worker",state:"checking",detail:"Checking service health"}},g=MD(l.systemHealth,h,r.settings),{openRun:v}=zp();return f.jsxs("div",{className:"page-container",children:[f.jsxs("div",{className:"page-header",children:[f.jsxs("div",{className:"page-header-left",children:[f.jsx("h1",{className:"page-title",children:"Portfolio"}),f.jsx("p",{className:"page-subtitle",children:"Visibility and execution state across all projects"})]}),f.jsx("div",{className:"page-header-right",children:f.jsx("p",{className:"text-[11px] text-zinc-600",children:l.lastUpdatedAt})})]}),l.projects.length>0?f.jsx("div",{className:"project-list project-list-scrollable",children:l.projects.map(S=>f.jsx(cM,{project:S},S.project.id))}):f.jsxs(kn,{className:"surface-card empty-card",children:[f.jsx("h3",{children:l.emptyState?.title??"No projects yet"}),f.jsx("p",{className:"supporting-copy",children:l.emptyState?.detail}),f.jsx(qe,{size:"sm",asChild:!0,children:f.jsx(st,{to:l.emptyState?.ctaHref==="/setup"||!l.emptyState?.ctaHref?"/setup":"/",children:l.emptyState?.ctaLabel??"Launch setup"})})]}),f.jsxs("div",{className:"overview-secondary-grid",children:[l.attentionItems.length>0&&f.jsxs("section",{className:"overview-secondary-section",children:[f.jsx("div",{className:"section-head section-head-inline",children:f.jsxs("div",{children:[f.jsx("p",{className:"eyebrow eyebrow-soft",children:"Needs attention"}),f.jsx("h2",{className:"section-title-sm",children:"What changed"})]})}),f.jsx("div",{className:"attention-list attention-list-scrollable",children:l.attentionItems.map(S=>S.href?f.jsxs(st,{to:S.href,className:`attention-item attention-item-${S.tone}`,children:[f.jsxs("div",{children:[f.jsx("p",{className:"attention-title",children:S.title}),f.jsx("p",{className:"attention-detail",children:S.detail})]}),S.actionLabel&&f.jsx("span",{className:"attention-action",children:S.actionLabel})]},S.id):f.jsxs("div",{className:`attention-item attention-item-static attention-item-${S.tone}`,children:[f.jsxs("div",{children:[f.jsx("p",{className:"attention-title",children:S.title}),f.jsx("p",{className:"attention-detail",children:S.detail})]}),S.actionLabel&&f.jsx("span",{className:"attention-action",children:S.actionLabel})]},S.id))})]}),f.jsxs("section",{className:"overview-secondary-section",children:[f.jsx("div",{className:"section-head section-head-inline",children:f.jsxs("div",{children:[f.jsx("p",{className:"eyebrow eyebrow-soft",children:"Recent runs"}),f.jsx("h2",{className:"section-title-sm",children:"Activity"})]})}),f.jsx("div",{className:"compact-stack compact-stack-scrollable",children:l.recentRuns.length>0?l.recentRuns.map(S=>f.jsxs("button",{className:"compact-run",type:"button",onClick:()=>v(S.id),children:[f.jsxs("div",{children:[f.jsx("p",{className:"compact-run-title",children:S.projectName}),f.jsx("p",{className:"compact-run-detail",children:S.summary})]}),f.jsx(Ap,{status:S.status})]},S.id)):f.jsx("p",{className:"supporting-copy",children:"Run history appears here after the first launch."})})]})]}),f.jsxs("section",{className:"page-section",children:[f.jsx("div",{className:"section-head section-head-inline",children:f.jsxs("div",{children:[f.jsx("p",{className:"eyebrow eyebrow-soft",children:"System health"}),f.jsx("h2",{className:"section-title-sm",children:"Infrastructure"})]})}),f.jsx("div",{className:"health-grid",children:g.map(S=>f.jsxs(kn,{className:"surface-card compact-card",children:[f.jsxs("div",{className:"section-head",children:[f.jsxs("div",{children:[f.jsx("p",{className:"eyebrow eyebrow-soft",children:S.label}),f.jsx("h3",{children:S.detail})]}),f.jsx(Bn,{tone:S.tone,title:S.id==="api"?Us(h.apiStatus):S.id==="worker"?Us(h.workerStatus):void 0,children:S.label})]}),f.jsx("p",{className:"supporting-copy",children:S.meta})]},S.id))})]})]})}const Dp=Symbol.for("yaml.alias"),qf=Symbol.for("yaml.document"),Ya=Symbol.for("yaml.map"),_S=Symbol.for("yaml.pair"),Qn=Symbol.for("yaml.scalar"),Ys=Symbol.for("yaml.seq"),Cn=Symbol.for("yaml.node.type"),Di=e=>!!e&&typeof e=="object"&&e[Cn]===Dp,Ac=e=>!!e&&typeof e=="object"&&e[Cn]===qf,fo=e=>!!e&&typeof e=="object"&&e[Cn]===Ya,xt=e=>!!e&&typeof e=="object"&&e[Cn]===_S,nt=e=>!!e&&typeof e=="object"&&e[Cn]===Qn,po=e=>!!e&&typeof e=="object"&&e[Cn]===Ys;function bt(e){if(e&&typeof e=="object")switch(e[Cn]){case Ya:case Ys:return!0}return!1}function St(e){if(e&&typeof e=="object")switch(e[Cn]){case Dp:case Ya:case Qn:case Ys:return!0}return!1}const CS=e=>(nt(e)||bt(e))&&!!e.anchor,ji=Symbol("break visit"),dM=Symbol("skip children"),to=Symbol("remove node");function Xs(e,n){const i=fM(n);Ac(e)?Ts(null,e.contents,i,Object.freeze([e]))===to&&(e.contents=null):Ts(null,e,i,Object.freeze([]))}Xs.BREAK=ji;Xs.SKIP=dM;Xs.REMOVE=to;function Ts(e,n,i,r){const l=pM(e,n,i,r);if(St(l)||xt(l))return mM(e,r,l),Ts(e,l,i,r);if(typeof l!="symbol"){if(bt(n)){r=Object.freeze(r.concat(n));for(let c=0;c<n.items.length;++c){const d=Ts(c,n.items[c],i,r);if(typeof d=="number")c=d-1;else{if(d===ji)return ji;d===to&&(n.items.splice(c,1),c-=1)}}}else if(xt(n)){r=Object.freeze(r.concat(n));const c=Ts("key",n.key,i,r);if(c===ji)return ji;c===to&&(n.key=null);const d=Ts("value",n.value,i,r);if(d===ji)return ji;d===to&&(n.value=null)}}return l}function fM(e){return typeof e=="object"&&(e.Collection||e.Node||e.Value)?Object.assign({Alias:e.Node,Map:e.Node,Scalar:e.Node,Seq:e.Node},e.Value&&{Map:e.Value,Scalar:e.Value,Seq:e.Value},e.Collection&&{Map:e.Collection,Seq:e.Collection},e):e}function pM(e,n,i,r){if(typeof i=="function")return i(e,n,r);if(fo(n))return i.Map?.(e,n,r);if(po(n))return i.Seq?.(e,n,r);if(xt(n))return i.Pair?.(e,n,r);if(nt(n))return i.Scalar?.(e,n,r);if(Di(n))return i.Alias?.(e,n,r)}function mM(e,n,i){const r=n[n.length-1];if(bt(r))r.items[e]=i;else if(xt(r))e==="key"?r.key=i:r.value=i;else if(Ac(r))r.contents=i;else{const l=Di(r)?"alias":"scalar";throw new Error(`Cannot replace node with ${l} parent`)}}const hM={"!":"%21",",":"%2C","[":"%5B","]":"%5D","{":"%7B","}":"%7D"},gM=e=>e.replace(/[!,[\]{}]/g,n=>hM[n]);class Ht{constructor(n,i){this.docStart=null,this.docEnd=!1,this.yaml=Object.assign({},Ht.defaultYaml,n),this.tags=Object.assign({},Ht.defaultTags,i)}clone(){const n=new Ht(this.yaml,this.tags);return n.docStart=this.docStart,n}atDocument(){const n=new Ht(this.yaml,this.tags);switch(this.yaml.version){case"1.1":this.atNextDocument=!0;break;case"1.2":this.atNextDocument=!1,this.yaml={explicit:Ht.defaultYaml.explicit,version:"1.2"},this.tags=Object.assign({},Ht.defaultTags);break}return n}add(n,i){this.atNextDocument&&(this.yaml={explicit:Ht.defaultYaml.explicit,version:"1.1"},this.tags=Object.assign({},Ht.defaultTags),this.atNextDocument=!1);const r=n.trim().split(/[ \t]+/),l=r.shift();switch(l){case"%TAG":{if(r.length!==2&&(i(0,"%TAG directive should contain exactly two parts"),r.length<2))return!1;const[c,d]=r;return this.tags[c]=d,!0}case"%YAML":{if(this.yaml.explicit=!0,r.length!==1)return i(0,"%YAML directive should contain exactly one part"),!1;const[c]=r;if(c==="1.1"||c==="1.2")return this.yaml.version=c,!0;{const d=/^\d+\.\d+$/.test(c);return i(6,`Unsupported YAML version ${c}`,d),!1}}default:return i(0,`Unknown directive ${l}`,!0),!1}}tagName(n,i){if(n==="!")return"!";if(n[0]!=="!")return i(`Not a valid tag: ${n}`),null;if(n[1]==="<"){const d=n.slice(2,-1);return d==="!"||d==="!!"?(i(`Verbatim tags aren't resolved, so ${n} is invalid.`),null):(n[n.length-1]!==">"&&i("Verbatim tags must end with a >"),d)}const[,r,l]=n.match(/^(.*!)([^!]*)$/s);l||i(`The ${n} tag has no suffix`);const c=this.tags[r];if(c)try{return c+decodeURIComponent(l)}catch(d){return i(String(d)),null}return r==="!"?n:(i(`Could not resolve tag: ${n}`),null)}tagString(n){for(const[i,r]of Object.entries(this.tags))if(n.startsWith(r))return i+gM(n.substring(r.length));return n[0]==="!"?n:`!<${n}>`}toString(n){const i=this.yaml.explicit?[`%YAML ${this.yaml.version||"1.2"}`]:[],r=Object.entries(this.tags);let l;if(n&&r.length>0&&St(n.contents)){const c={};Xs(n.contents,(d,h)=>{St(h)&&h.tag&&(c[h.tag]=!0)}),l=Object.keys(c)}else l=[];for(const[c,d]of r)c==="!!"&&d==="tag:yaml.org,2002:"||(!n||l.some(h=>h.startsWith(d)))&&i.push(`%TAG ${c} ${d}`);return i.join(`
63
+ `)}}}finally{c?.removeEventListener("abort",N);try{v.releaseLock()}catch{}}}function jS(e){return!e||e.role!=="assistant"?"":e.content.filter(n=>n.type==="text").map(n=>n.text).join("")}const UR=[{label:"Status",prompt:"Quick status overview for this project — latest runs, current health, anything unusual."},{label:"Top insights",prompt:"Walk me through the 3 most severe active insights and what to do about each."},{label:"Last failed run",prompt:"If the latest run failed, dig into it and tell me what went wrong plus how to fix it."},{label:"Schedule",prompt:"What is the current sweep schedule, and is it appropriate given recent volatility?"}],$R=[{command:"/status",label:"Status",hint:"Latest runs, health, anything unusual",prompt:"Quick status overview for this project — latest runs, current health, anything unusual."},{command:"/insights",label:"Top insights",hint:"Walk through the most severe active insights",prompt:"Walk me through the 3 most severe active insights and what to do about each."},{command:"/last-run",label:"Last run",hint:"Summarize the latest sweep",prompt:"Summarize the latest run for this project — provider mix, visibility changes, and anything that moved."},{command:"/last-failed",label:"Last failed run",hint:"Diagnose the most recent failure",prompt:"If the latest run failed, dig into it and tell me what went wrong plus how to fix it."},{command:"/run-sweep",label:"Run sweep now",hint:"Trigger a new visibility sweep",prompt:"Run a new answer-visibility sweep for this project now and tell me when it lands."},{command:"/schedule",label:"Schedule",hint:"Review the sweep schedule",prompt:"What is the current sweep schedule, and is it appropriate given recent volatility?"},{command:"/queries",label:"Queries",hint:"List tracked queries",prompt:"List the tracked queries for this project and flag any that are obvious duplicates or underperformers."},{command:"/competitors",label:"Competitors",hint:"List tracked competitors",prompt:"List this project's tracked competitors and call out which ones are showing up in answer citations."},{command:"/clear",label:"Clear conversation",hint:"Wipe transcript and start fresh",action:"clear"}],Il=e=>`canonry:aero:provider:${e}`,Zb=e=>`canonry:aero:scope:${e}`;function VR({projectName:e}){const[n,i]=U.useState(!1),[r,l]=U.useState(!1),[c,d]=U.useState([]),[h,g]=U.useState(""),[v,S]=U.useState(!1),[x,N]=U.useState([]),[_,T]=U.useState(""),[k,E]=U.useState(null),[R,I]=U.useState(()=>typeof window>"u"?null:window.localStorage.getItem(Il(e))??null),[G,Z]=U.useState(()=>typeof window>"u"?"read-only":window.localStorage.getItem(Zb(e))==="all"?"all":"read-only"),X=U.useRef(null),{ref:F}=MR([c,_,x]),O=U.useRef(null),[M,oe]=U.useState(0),ke=U.useMemo(()=>{const ee=h.trimStart();if(!ee.startsWith("/"))return[];if(/\s/.test(ee))return[];const ue=ee.toLowerCase();return $R.filter(te=>te.command.startsWith(ue)||te.label.toLowerCase().includes(ue.slice(1)))},[h]);U.useEffect(()=>{oe(ee=>ke.length===0?0:Math.min(ee,ke.length-1))},[ke.length]);const Oe=fn({...D4({client:ne,path:{name:e}}),enabled:n,staleTime:6e4}),be=U.useMemo(()=>{const ee=Oe.data?.providers??[];if(R){const te=ee.find(de=>de.id===R&&de.configured);if(te)return te}const ue=Oe.data?.defaultProvider;return ue?ee.find(te=>te.id===ue)??null:null},[R,Oe.data]);U.useEffect(()=>{if(!Oe.data||!R)return;Oe.data.providers.find(ue=>ue.id===R&&ue.configured)||(I(null),window.localStorage.removeItem(Il(e)))},[Oe.data,R,e]);const et=U.useCallback(ee=>{I(ee),!(typeof window>"u")&&(ee?window.localStorage.setItem(Il(e),ee):window.localStorage.removeItem(Il(e)))},[e]),Ke=U.useCallback(()=>{Z(ee=>{const ue=ee==="all"?"read-only":"all";return typeof window<"u"&&window.localStorage.setItem(Zb(e),ue),ue})},[e]);U.useEffect(()=>{if(!n)return;const ee=ue=>{ue.key==="Escape"&&(r?l(!1):i(!1))};return window.addEventListener("keydown",ee),()=>window.removeEventListener("keydown",ee)},[n,r]),U.useEffect(()=>{if(!n)return;let ee=!1;E(null);const ue=()=>{ee||v||Kb(e).then(ie=>{ee||d(ie.messages)}).catch(ie=>{ee||E(ie instanceof Error?ie.message:"Failed to load transcript")})};ue();const de=window.setInterval(ue,15e3);return()=>{ee=!0,window.clearInterval(de)}},[n,e,v]),U.useEffect(()=>()=>{X.current?.abort()},[e]);async function J(ee){const ue=ee.trim();if(!ue||v)return;E(null),g(""),S(!0),T(""),N([]);const te={role:"user",content:ue,timestamp:Date.now()};d(ie=>[...ie,te]);const de=new AbortController;X.current=de;try{await qR({project:e,prompt:ue,provider:R??void 0,scope:G,signal:de.signal,onEvent:B});const ie=await Kb(e);d(ie.messages)}catch(ie){ie.name!=="AbortError"&&E(ie instanceof Error?ie.message:"Prompt failed")}finally{S(!1),T(""),X.current=null}}function B(ee){switch(ee.type){case"message_update":T(jS(ee.message));break;case"message_end":ee.message.role==="assistant"&&T("");break;case"tool_execution_start":N(ue=>[...ue,{id:ee.toolCallId,name:ee.toolName,args:ee.args,startedAt:Date.now()}]);break;case"tool_execution_end":N(ue=>ue.map(te=>te.id===ee.toolCallId?{...te,endedAt:Date.now(),isError:ee.isError,result:ee.result}:te));break;case"error":E(ee.message);break}}async function W(){X.current?.abort();try{await LR(e),d([]),E(null)}catch(ee){E(ee instanceof Error?ee.message:"Reset failed")}}const fe=c.length===0,Se=n&&r?"pointer-events-auto fixed inset-0 z-40 flex items-stretch justify-center bg-zinc-950/70 p-4 sm:p-8 backdrop-blur-sm":"pointer-events-none fixed inset-x-0 bottom-0 z-40 flex justify-center p-3",re=r?"pointer-events-auto flex h-full w-full max-w-5xl flex-col overflow-hidden rounded-2xl border border-zinc-800/80 bg-zinc-950/95 shadow-2xl":"pointer-events-auto w-full max-w-3xl",Ze=r?"flex-1 overflow-y-auto px-6 py-5 text-sm text-zinc-200":"max-h-[40vh] min-h-[120px] overflow-y-auto px-4 py-3 text-sm text-zinc-200";return f.jsx("div",{className:Se,onClick:ee=>{r&&ee.target===ee.currentTarget&&l(!1)},children:f.jsx("div",{className:re,children:n?f.jsxs("div",{className:r?"flex h-full flex-col":"flex flex-col overflow-hidden rounded-2xl border border-zinc-800/80 bg-zinc-950/95 shadow-xl backdrop-blur",children:[f.jsxs("div",{className:"flex items-center justify-between gap-2 border-b border-zinc-800/70 px-4 py-2.5",children:[f.jsxs("div",{className:"flex items-center gap-2",children:[f.jsx(Wy,{className:"h-4 w-4 text-emerald-400","aria-hidden":"true"}),f.jsx("span",{className:"text-sm font-medium text-zinc-100",children:"Aero"}),f.jsx("span",{className:"text-[10px] uppercase tracking-wider text-zinc-500",children:v?"working…":e})]}),f.jsxs("div",{className:"flex items-center gap-1",children:[f.jsx(IR,{providers:Oe.data?.providers??[],active:be,override:R,onPick:et,disabled:v}),f.jsx("button",{type:"button",onClick:Nn(W),className:"rounded-md p-1.5 text-zinc-500 transition hover:bg-zinc-800/60 hover:text-zinc-200","aria-label":"Reset conversation",title:"Reset conversation",children:f.jsx(Mv,{className:"h-3.5 w-3.5","aria-hidden":"true"})}),f.jsx("button",{type:"button",onClick:()=>l(ee=>!ee),className:"rounded-md p-1.5 text-zinc-500 transition hover:bg-zinc-800/60 hover:text-zinc-200","aria-label":r?"Collapse":"Expand",title:r?"Collapse":"Expand",children:r?f.jsx(MA,{className:"h-3.5 w-3.5","aria-hidden":"true"}):f.jsx(EA,{className:"h-3.5 w-3.5","aria-hidden":"true"})}),f.jsx("button",{type:"button",onClick:()=>{l(!1),i(!1)},className:"rounded-md p-1.5 text-zinc-500 transition hover:bg-zinc-800/60 hover:text-zinc-200","aria-label":"Close Aero",children:f.jsx(Gs,{className:"h-4 w-4","aria-hidden":"true"})})]})]}),f.jsxs("div",{ref:F,className:Ze,children:[k&&f.jsx("div",{className:"mb-2 rounded-md border border-rose-700/40 bg-rose-950/40 px-3 py-2 text-xs text-rose-200",children:k}),fe&&!v&&f.jsxs("div",{className:"flex flex-col gap-3 py-2",children:[f.jsxs("p",{className:"text-xs text-zinc-500",children:["Ask anything about ",f.jsx("span",{className:"text-zinc-300",children:e}),", or start with:"]}),f.jsx("div",{className:"flex flex-wrap gap-1.5",children:UR.map(ee=>f.jsx("button",{type:"button",onClick:()=>{J(ee.prompt)},className:"rounded-full border border-zinc-800 bg-zinc-900/70 px-3 py-1 text-xs text-zinc-300 transition hover:border-zinc-700 hover:bg-zinc-800/70 hover:text-zinc-100",children:ee.label},ee.label))})]}),KR(c,e,R,G),x.length>0&&f.jsx("div",{className:"mt-3 space-y-1.5",children:x.map(ee=>f.jsx(NS,{trail:ee},ee.id))}),v&&_&&f.jsxs("div",{className:"mt-3",children:[f.jsx("div",{className:"mb-0.5 text-[10px] uppercase tracking-wider text-emerald-400",children:"Aero"}),f.jsx(kS,{content:_})]}),v&&!_&&x.every(ee=>ee.endedAt!==void 0)&&f.jsx(JR,{})]}),f.jsx(PR,{projectName:e,activeProvider:be,scope:G,onToggleScope:Ke,disabled:v}),f.jsxs("div",{className:"relative",children:[ke.length>0&&f.jsx(GR,{matches:ke,selectedIndex:M,onHover:oe,onPick:ee=>{g(""),O.current?.focus(),ee.action==="clear"?W():J(ee.prompt)}}),f.jsxs("form",{className:"flex items-end gap-2 border-t border-zinc-800/70 bg-zinc-950/80 px-3 py-2.5",onSubmit:ee=>{if(ee.preventDefault(),ke.length>0){const ue=ke[M];g(""),ue.action==="clear"?W():J(ue.prompt);return}J(h)},children:[f.jsx("textarea",{ref:O,value:h,onChange:ee=>g(ee.target.value),onKeyDown:ee=>{if(ke.length>0){if(ee.key==="ArrowDown"){ee.preventDefault(),oe(ue=>(ue+1)%ke.length);return}if(ee.key==="ArrowUp"){ee.preventDefault(),oe(ue=>(ue-1+ke.length)%ke.length);return}if(ee.key==="Tab"){ee.preventDefault();const ue=ke[M];g(`${ue.command} `);return}if(ee.key==="Escape"){ee.preventDefault(),g("");return}}if(ee.key==="Enter"&&!ee.shiftKey)if(ee.preventDefault(),ke.length>0){const ue=ke[M];g(""),ue.action==="clear"?W():J(ue.prompt)}else J(h)},placeholder:"Ask Aero, or / for commands…",disabled:v,rows:r?3:1,className:"flex-1 resize-none bg-transparent text-sm text-zinc-100 placeholder:text-zinc-600 focus:outline-none disabled:opacity-60"}),f.jsx("button",{type:"submit",disabled:v||!h.trim(),className:"inline-flex h-7 w-7 items-center justify-center rounded-md bg-emerald-500 text-zinc-950 transition hover:bg-emerald-400 disabled:opacity-40","aria-label":"Send",children:f.jsx(cA,{className:"h-3.5 w-3.5","aria-hidden":"true"})})]})]})]}):f.jsxs("button",{type:"button",onClick:()=>i(!0),className:"flex w-full items-center justify-between rounded-full border border-zinc-800/80 bg-zinc-950/95 px-4 py-2 text-left text-sm text-zinc-400 shadow-lg backdrop-blur transition hover:border-zinc-700 hover:bg-zinc-900/90 hover:text-zinc-200",children:[f.jsxs("span",{className:"flex items-center gap-2",children:[f.jsx(Wy,{className:"h-4 w-4 text-emerald-400","aria-hidden":"true"}),"Ask Aero about ",e,"…"]}),f.jsx("span",{className:"text-[10px] uppercase tracking-wider text-zinc-600",children:"Enter"})]})})})}function IR({providers:e,active:n,override:i,onPick:r,disabled:l}){const[c,d]=U.useState(!1),h=U.useRef(null);if(U.useEffect(()=>{if(!c)return;const S=N=>{h.current?.contains(N.target)||d(!1)},x=N=>{N.key==="Escape"&&d(!1)};return window.addEventListener("mousedown",S),window.addEventListener("keydown",x),()=>{window.removeEventListener("mousedown",S),window.removeEventListener("keydown",x)}},[c]),e.length===0)return null;const g=n?.label.replace(/\s+\(.+\)$/,"")??"No provider",v=n?.defaultModel;return f.jsxs("div",{ref:h,className:"relative",children:[f.jsxs("button",{type:"button",onClick:()=>d(S=>!S),disabled:l,className:"flex items-center gap-1 rounded-md px-1.5 py-1 text-[11px] text-zinc-400 transition hover:bg-zinc-800/60 hover:text-zinc-200 disabled:opacity-50","aria-label":"Switch agent model","aria-haspopup":"listbox","aria-expanded":c,title:n?`${n.label} · ${n.defaultModel}`:"Pick a provider",children:[f.jsx("span",{className:"font-medium text-zinc-200",children:g}),v&&f.jsx("span",{className:"hidden font-mono text-[10px] text-zinc-500 sm:inline",children:v}),f.jsx(mA,{className:"h-3 w-3","aria-hidden":"true"})]}),c&&f.jsxs("div",{role:"listbox",className:"absolute right-0 top-full z-50 mt-1 w-64 overflow-hidden rounded-lg border border-zinc-800 bg-zinc-950 shadow-xl",children:[f.jsx("div",{className:"border-b border-zinc-800/60 px-3 py-2 text-[10px] uppercase tracking-wider text-zinc-500",children:"Aero provider"}),f.jsx("ul",{className:"max-h-72 overflow-y-auto py-1",children:e.map(S=>{const x=n?.id===S.id,N=i===S.id;return f.jsx("li",{children:f.jsxs("button",{type:"button",role:"option","aria-selected":x,disabled:!S.configured,onClick:()=>{S.configured&&(r(N?null:S.id),d(!1))},className:"flex w-full items-start gap-2 px-3 py-2 text-left text-xs transition enabled:hover:bg-zinc-900 disabled:cursor-not-allowed disabled:opacity-50",children:[f.jsx("span",{className:"mt-0.5 flex h-3.5 w-3.5 shrink-0 items-center justify-center",children:x?f.jsx(Rv,{className:"h-3 w-3 text-emerald-400","aria-hidden":"true"}):null}),f.jsxs("span",{className:"flex-1",children:[f.jsxs("span",{className:"flex items-center gap-1.5",children:[f.jsx("span",{className:"font-medium text-zinc-100",children:S.label}),N&&f.jsx("span",{className:"rounded-full border border-emerald-800/60 bg-emerald-950/60 px-1.5 text-[9px] uppercase tracking-wider text-emerald-300",children:"Pinned"}),!S.configured&&f.jsx("span",{className:"rounded-full border border-zinc-800 px-1.5 text-[9px] uppercase tracking-wider text-zinc-500",children:"Key missing"})]}),f.jsx("span",{className:"mt-0.5 block font-mono text-[10px] text-zinc-500",children:S.defaultModel}),S.keySource==="env"&&f.jsx("span",{className:"mt-0.5 block text-[10px] text-zinc-600",children:"via env var"}),!S.configured&&f.jsxs("span",{className:"mt-0.5 block text-[10px] text-zinc-600",children:["Add key in config.yaml or export"," ",f.jsx("code",{className:"font-mono text-zinc-400",children:HR(S.id)})]})]})]})},S.id)})}),i&&f.jsx("button",{type:"button",onClick:()=>{r(null),d(!1)},className:"w-full border-t border-zinc-800/60 px-3 py-2 text-left text-[11px] text-zinc-400 transition hover:bg-zinc-900 hover:text-zinc-100",children:"Reset to auto-detected default"})]})]})}function PR({projectName:e,activeProvider:n,scope:i,onToggleScope:r,disabled:l}){const c=n?.label.replace(/\s+\(.+\)$/,"")??null,d=i==="all";return f.jsxs("div",{className:"flex flex-wrap items-center gap-1.5 border-t border-zinc-800/70 bg-zinc-950/80 px-3 pt-2",children:[f.jsxs("span",{className:"inline-flex items-center gap-1 rounded-full border border-zinc-800 bg-zinc-900/70 px-2 py-0.5 text-[10px] text-zinc-400",children:[f.jsx("span",{className:"text-zinc-600",children:"project"}),f.jsx("span",{className:"font-medium text-zinc-200",children:e})]}),c&&f.jsxs("span",{className:"inline-flex items-center gap-1 rounded-full border border-zinc-800 bg-zinc-900/70 px-2 py-0.5 text-[10px] text-zinc-400",children:[f.jsx("span",{className:"text-zinc-600",children:"model"}),f.jsx("span",{className:"font-medium text-zinc-200",children:c})]}),f.jsxs("button",{type:"button",onClick:r,disabled:l,className:`inline-flex items-center gap-1 rounded-full border px-2 py-0.5 text-[10px] transition disabled:opacity-50 ${d?"border-amber-800/60 bg-amber-950/40 text-amber-300 hover:border-amber-700 hover:text-amber-200":"border-zinc-800 bg-zinc-900/70 text-zinc-400 hover:border-zinc-700 hover:text-zinc-200"}`,title:d?"Aero can invoke write tools (run sweep, dismiss insight, etc). Click to restrict.":"Aero is restricted to read-only tools. Click to allow writes.",children:[f.jsx("span",{className:d?"text-amber-500":"text-zinc-600",children:"scope"}),f.jsx("span",{className:"font-medium",children:d?"all tools":"read-only"})]})]})}function GR({matches:e,selectedIndex:n,onHover:i,onPick:r}){return f.jsxs("div",{className:"absolute inset-x-3 bottom-full mb-2 overflow-hidden rounded-lg border border-zinc-800 bg-zinc-950/98 shadow-2xl",children:[f.jsx("div",{className:"border-b border-zinc-800/60 px-3 py-1.5 text-[10px] uppercase tracking-wider text-zinc-500",children:"Commands"}),f.jsx("ul",{role:"listbox",className:"max-h-72 overflow-y-auto py-1",children:e.map((l,c)=>{const d=c===n;return f.jsx("li",{children:f.jsxs("button",{type:"button",role:"option","aria-selected":d,onMouseEnter:()=>i(c),onClick:()=>r(l),className:`flex w-full items-center gap-3 px-3 py-1.5 text-left text-xs transition ${d?"bg-zinc-900 text-zinc-100":"text-zinc-300 hover:bg-zinc-900/60"}`,children:[f.jsx("span",{className:"font-mono text-[11px] text-emerald-400",children:l.command}),f.jsx("span",{className:"font-medium",children:l.label}),f.jsx("span",{className:"ml-auto text-[10px] text-zinc-500",children:l.hint})]})},l.command)})}),f.jsxs("div",{className:"border-t border-zinc-800/60 px-3 py-1.5 text-[10px] text-zinc-600",children:[f.jsx("span",{className:"mr-3",children:"↑↓ to select"}),f.jsx("span",{className:"mr-3",children:"Enter to run"}),f.jsx("span",{children:"Tab to autocomplete"})]})]})}function HR(e){switch(e){case"claude":return"ANTHROPIC_API_KEY";case"openai":return"OPENAI_API_KEY";case"gemini":return"GOOGLE_API_KEY";case"zai":return"ZAI_API_KEY";case"deepinfra":return"DEEPINFRA_TOKEN"}}function QR(e,n){const i=e.timestamp??0;return`${e.role}:${i}:${n}`}function KR(e,n,i,r){const l=[];for(let c=0;c<e.length;c++){const d=e[c],h=QR(d,c);if(d.role==="user"){const g=typeof d.content=="string"?d.content:JSON.stringify(d.content);if(g.startsWith("[system]"))continue;l.push(f.jsx(ZR,{text:g,projectName:n,providerOverride:i,scope:r},h));continue}if(d.role==="assistant"){const g=new Map;let v=c+1;for(;v<e.length&&e[v].role==="toolResult";){const N=e[v];g.set(N.toolCallId,N),v++}const S=XR(d,g,d.timestamp??0),x=jS(d);l.push(f.jsxs(U.Fragment,{children:[S.length>0&&f.jsx("div",{className:"mt-3 space-y-1.5",children:S.map(N=>f.jsx(NS,{trail:N},N.id))}),x.trim()&&f.jsxs("div",{className:"mt-3",children:[f.jsx("div",{className:"mb-0.5 text-[10px] uppercase tracking-wider text-emerald-400",children:"Aero"}),f.jsx(kS,{content:x})]})]},h)),c=v-1;continue}}return l}function ZR({text:e,projectName:n,providerOverride:i,scope:r}){const[l,c]=U.useState(!1),d=U.useMemo(()=>YR(n,e,i,r),[n,e,i,r]);async function h(){try{await navigator.clipboard.writeText(d),c(!0),window.setTimeout(()=>c(!1),1500)}catch{}}return f.jsxs("div",{className:"group relative mt-3 rounded-md bg-zinc-900/60 px-3 py-2 text-zinc-200",children:[f.jsxs("div",{className:"flex items-center justify-between gap-2",children:[f.jsx("div",{className:"text-[10px] uppercase tracking-wider text-zinc-500",children:"You"}),f.jsx("button",{type:"button",onClick:Nn(h),className:"inline-flex items-center gap-1 rounded border border-zinc-800/70 bg-zinc-950/60 px-1.5 py-0.5 text-[10px] text-zinc-400 opacity-0 transition hover:border-zinc-700 hover:text-zinc-100 group-hover:opacity-100 focus:opacity-100","aria-label":"Copy as CLI command",title:d,children:l?f.jsxs(f.Fragment,{children:[f.jsx(Rv,{className:"h-2.5 w-2.5 text-emerald-400","aria-hidden":"true"}),"Copied"]}):f.jsxs(f.Fragment,{children:[f.jsx(yA,{className:"h-2.5 w-2.5","aria-hidden":"true"}),"Copy as CLI"]})})]}),f.jsx("div",{className:"whitespace-pre-wrap",children:e})]})}function YR(e,n,i,r){const l=["canonry","agent","ask",Yb(e),Yb(n)];return i&&l.push("--provider",i),r==="read-only"&&l.push("--scope","read-only"),l.join(" ")}function Yb(e){return`'${e.replace(/'/g,"'\\''")}'`}function XR(e,n,i){const r=[];for(const l of e.content){if(l.type!=="toolCall")continue;const c=l,d=n.get(c.id);r.push({id:c.id,name:c.name,args:c.arguments,startedAt:i,endedAt:d?.timestamp,isError:d?.isError,result:d?.content})}return r}function NS({trail:e}){const[n,i]=U.useState(!1),r=e.endedAt===void 0,l=!r&&e.isError===!0,c=e.endedAt!=null?e.endedAt-e.startedAt:null,d=c==null||c<0?null:c<1e3?`${c}ms`:`${(c/1e3).toFixed(1)}s`,h=l?"border-rose-800/50":r?"border-emerald-800/50":"border-zinc-800/70",g=l?"bg-rose-950/20":r?"bg-emerald-950/20":"bg-zinc-900/40";return f.jsxs("div",{className:`rounded-md border ${h} ${g} font-mono`,children:[f.jsxs("button",{type:"button",onClick:()=>i(v=>!v),className:"flex w-full items-center gap-2 px-2.5 py-1.5 text-left","aria-expanded":n,children:[f.jsx("span",{className:"flex h-3.5 w-3.5 shrink-0 items-center justify-center",children:r?f.jsx(zA,{className:"h-3 w-3 animate-spin text-emerald-400","aria-hidden":"true"}):l?f.jsx(Bv,{className:"h-3 w-3 text-rose-400","aria-hidden":"true"}):f.jsx(JA,{className:"h-3 w-3 text-zinc-500","aria-hidden":"true"})}),f.jsx("span",{className:"text-[11px] font-semibold text-zinc-100",children:e.name}),f.jsxs("span",{className:"ml-auto flex items-center gap-2 text-[10px] text-zinc-500",children:[r?f.jsx("span",{className:"text-emerald-400",children:"running…"}):f.jsxs(f.Fragment,{children:[f.jsx("span",{children:l?"failed":"ok"}),d&&f.jsx("span",{children:d})]}),f.jsx(Ff,{className:`h-3 w-3 transition-transform ${n?"rotate-90":""}`,"aria-hidden":"true"})]})]}),n&&f.jsxs("div",{className:"border-t border-zinc-800/60 px-2.5 py-2 text-[11px] text-zinc-400",children:[f.jsx("div",{className:"mb-1 text-[9px] uppercase tracking-wider text-zinc-600",children:"Args"}),f.jsx("pre",{className:"mb-2 overflow-x-auto whitespace-pre-wrap break-all text-[10px] text-zinc-300",children:Xb(e.args)}),!r&&e.result!==void 0&&f.jsxs(f.Fragment,{children:[f.jsx("div",{className:"mb-1 text-[9px] uppercase tracking-wider text-zinc-600",children:l?"Error":"Result"}),f.jsx("pre",{className:"overflow-x-auto whitespace-pre-wrap break-all text-[10px] text-zinc-300",children:Xb(e.result)})]})]})]})}function Xb(e){try{const n=typeof e=="string"?e:JSON.stringify(e,null,2);return n.length>2e3?`${n.slice(0,2e3)}
64
+ … (${n.length-2e3} more chars)`:n}catch{return String(e)}}function kS({content:e}){return f.jsx("div",{className:"aero-markdown text-zinc-100",children:f.jsx(Bw,{components:{h1:n=>f.jsx("h1",{...n,className:"mt-3 mb-2 text-base font-semibold text-zinc-50"}),h2:n=>f.jsx("h2",{...n,className:"mt-3 mb-2 text-sm font-semibold text-zinc-50"}),h3:n=>f.jsx("h3",{...n,className:"mt-3 mb-1.5 text-sm font-semibold text-zinc-100"}),h4:n=>f.jsx("h4",{...n,className:"mt-2 mb-1 text-xs font-semibold uppercase tracking-wide text-zinc-300"}),p:n=>f.jsx("p",{...n,className:"mb-2 leading-relaxed"}),ul:n=>f.jsx("ul",{...n,className:"mb-2 ml-4 list-disc space-y-1"}),ol:n=>f.jsx("ol",{...n,className:"mb-2 ml-4 list-decimal space-y-1"}),li:n=>f.jsx("li",{...n,className:"marker:text-zinc-600"}),strong:n=>f.jsx("strong",{...n,className:"font-semibold text-zinc-50"}),em:n=>f.jsx("em",{...n,className:"text-zinc-200"}),code:({children:n,...i})=>f.jsx("code",{...i,className:"rounded bg-zinc-800/70 px-1 py-0.5 font-mono text-[12px] text-emerald-200",children:n}),pre:n=>f.jsx("pre",{...n,className:"mb-2 overflow-x-auto rounded-md border border-zinc-800 bg-zinc-900/70 p-3 font-mono text-xs text-zinc-200"}),a:n=>f.jsx("a",{...n,className:"text-emerald-400 underline decoration-emerald-700 hover:decoration-emerald-400",target:"_blank",rel:"noopener noreferrer"}),table:n=>f.jsx("div",{className:"mb-2 overflow-x-auto",children:f.jsx("table",{...n,className:"w-full border-collapse text-xs"})}),thead:n=>f.jsx("thead",{...n,className:"border-b border-zinc-800"}),th:n=>f.jsx("th",{...n,className:"px-2 py-1 text-left font-semibold text-zinc-300"}),tr:n=>f.jsx("tr",{...n,className:"border-b border-zinc-900"}),td:n=>f.jsx("td",{...n,className:"px-2 py-1 text-zinc-200"}),blockquote:n=>f.jsx("blockquote",{...n,className:"mb-2 border-l-2 border-zinc-700 pl-3 italic text-zinc-400"}),hr:()=>f.jsx("hr",{className:"my-3 border-zinc-800"})},children:e})})}function JR(){return f.jsxs("div",{className:"mt-3 flex items-center gap-2",children:[f.jsx("div",{className:"text-[10px] uppercase tracking-wider text-emerald-400",children:"Aero"}),f.jsxs("div",{className:"flex items-center gap-1","aria-label":"Aero is thinking",children:[f.jsx("span",{className:"aero-dot h-1.5 w-1.5 rounded-full bg-emerald-400/80"}),f.jsx("span",{className:"aero-dot aero-dot-2 h-1.5 w-1.5 rounded-full bg-emerald-400/60"}),f.jsx("span",{className:"aero-dot aero-dot-3 h-1.5 w-1.5 rounded-full bg-emerald-400/40"})]})]})}function FR(){const e=fv(),n=/^\/projects\/([^/]+)/.exec(e.pathname),i=n?decodeURIComponent(n[1]):null,r=fn({...xc({client:ne}),enabled:i!==null,staleTime:6e4});if(!i)return null;const l=r.data??[],c=l.find(d=>d.id===i)??l.find(d=>d.name===i);return c?f.jsx(VR,{projectName:c.name},c.name):null}function wi(e,n){e.invalidateQueries({predicate:i=>{const r=i.queryKey[0];return typeof r?._id=="string"&&r._id.startsWith(n)}})}function ro(e,n,i){switch(e.invalidateQueries({queryKey:wp({client:ne})}),e.invalidateQueries({queryKey:Ei({client:ne})}),n){case Ne["answer-visibility"]:case Ne["site-audit"]:case Ne["backlink-extract"]:return;case Ne["gsc-sync"]:case Ne["inspect-sitemap"]:wi(e,"getApiV1ProjectsByNameGoogleGsc");return;case Ne["ga-sync"]:wi(e,"getApiV1ProjectsByNameGa");return;case Ne["traffic-sync"]:wi(e,"getApiV1ProjectsByNameGa"),wi(e,"getApiV1ProjectsByNameTraffic");return;case Ne["bing-inspect"]:case Ne["bing-inspect-sitemap"]:wi(e,"getApiV1ProjectsByNameBing");return;case Ne["aeo-discover-seed"]:case Ne["aeo-discover-probe"]:return;case Ne["gbp-sync"]:wi(e,"getApiV1ProjectsByNameGbp");return;case Ne["ads-sync"]:wi(e,"getApiV1ProjectsByNameAds");return;default:return n}}const Jb=[{label:"GitHub",href:"https://github.com/AINYC/canonry",Icon:xA},{label:"Docs",href:"https://github.com/AINYC/canonry/tree/main/docs",Icon:dA},{label:"Changelog",href:"https://github.com/AINYC/canonry/releases",Icon:vA}],Fb=e=>({label:e,state:"checking",detail:"Checking service health"}),WR={apiStatus:Fb("API"),workerStatus:Fb("Worker")};function AS(e){switch(e){case Ne["answer-visibility"]:return"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 eM(e){return e==="completed"?"positive":e==="partial"?"caution":"negative"}function tM(e){const n=AS(e.kind);return e.status==="completed"?`${n} completed`:e.status==="partial"?`${n} completed with partial results`:e.status==="cancelled"?`${n} cancelled`:`${n} failed`}function nM(e,n){return e.error?`${n}: ${op(e.error)}`:e.location?`${n} · ${e.location}`:n}function Wb(e,n,i){if(n)return n;const r=i.find(l=>l.id===e);return r?.displayName||r?.name||e}function aM(e,n){return[e.completed>0?`${e.completed} completed`:null,e.partial>0?`${e.partial} partial`:null,e.failed>0?`${e.failed} failed`:null,e.cancelled>0?`${e.cancelled} cancelled`:null,n>0?`${n} skipped at queue time`:null].filter(Boolean).join(", ")}function iM(e){return e.failed>0||e.cancelled>0?"negative":e.partial>0?"caution":"positive"}function sM(){const e=Fa(),n=U.useSyncExternalStore(I4,_i,_i),i=Object.keys(n.runs).length>0||Object.keys(n.batches).length>0,r=fn({...jp({client:ne}),enabled:i,staleTime:ao,refetchInterval:3e3}),l=fn({...xc({client:ne}),enabled:i}),c=U.useRef({}),d=U.useCallback(()=>{r.refetch()},[r.refetch]);return U.useEffect(()=>{i&&d()},[i,d]),U.useEffect(()=>{if(!i||typeof window>"u")return;const h=()=>{document.visibilityState==="visible"&&d()};return window.addEventListener("focus",d),document.addEventListener("visibilitychange",h),()=>{window.removeEventListener("focus",d),document.removeEventListener("visibilitychange",h)}},[i,d]),U.useEffect(()=>{const h=r.data??[],g=l.data??[],v=Object.fromEntries(h.map(x=>[x.id,x])),S=Object.fromEntries(h.map(x=>[x.id,x.status]));for(const x of Object.values(n.runs)){const N=v[x.runId];if(!N||!H4(N.status)||(c.current[N.id]??x.lastAnnouncedStatus)===N.status)continue;const T=g.find(E=>E.id===N.projectId);if(T&&ro(e,N.kind,T.name),x.sourceAction==="run-all"){uf(N.id);continue}const k=Wb(N.projectId,x.projectLabel,g);tn({title:tM(N),detail:nM(N,k),tone:eM(N.status),dedupeKey:`run:${N.id}`,dedupeMode:"replace",cta:{label:"View run",intent:"open-run-drawer",runId:N.id}}),uf(N.id)}if(r.data!==void 0){const x=new Set(h.map(_=>_.id)),N=K4(Object.values(n.runs),x,Date.now(),Q4);for(const _ of N){const T=g.find(k=>k.id===_.projectId);T&&ro(e,_.kind,T.name),_.sourceAction!=="run-all"&&tn({title:`${AS(_.kind)} status unavailable`,detail:Wb(_.projectId,_.projectLabel,g),tone:"neutral",dedupeKey:`run-stale:${_.runId}`,dedupeMode:"replace"}),uf(_.runId)}}for(const x of Object.values(n.batches)){const N=Z4(x.runIds,v);N.finished&&(tn({title:"Run-all batch finished",detail:aM(N,x.skippedCount),tone:iM(N),dedupeKey:`batch:${x.batchId}`,dedupeMode:"replace",cta:{label:"View runs",intent:"go-to-runs"}}),G4(x.batchId))}c.current=S},[l.data,r.data,n,e]),null}function rM(){const e=uo(),{dashboard:n,isLoading:i,refetch:r}=kc(),d=Cp(!e,e?.health).data??e?.health??WR,h=fv(),{runId:g,evidenceId:v,closeDrawer:S}=zp(),[x,N]=U.useState(!1),[_,T]=U.useState(()=>{if(typeof window>"u")return null;try{return window.localStorage.getItem("canonry:dismissedUpdateVersion")}catch{return null}}),[k]=U.useState(()=>typeof window>"u"?null:new URLSearchParams(window.location.search).get("force-update")),E=k?{current:d.apiStatus.version??"0.0.0",latest:k,url:"https://www.npmjs.com/package/@ainyc/canonry",upgradeCommand:"npm install -g @ainyc/canonry"}:d.apiStatus.updateAvailable,R=E&&E.latest!==_,I=()=>{if(E){try{window.localStorage.setItem("canonry:dismissedUpdateVersion",E.latest)}catch{}T(E.latest)}},G=ER(g),Z=G.data??null,X=G.isLoading;U.useEffect(()=>{Z&&Z.status!=="running"&&Z.status!=="queued"&&r()},[Z?.status,r]),U.useEffect(()=>{N(!1)},[h.pathname]),U.useEffect(()=>{if(typeof window>"u"||!g&&!v)return;const J=B=>{B.key==="Escape"&&S()};return window.addEventListener("keydown",J),()=>{window.removeEventListener("keydown",J)}},[g,v,S]);const F=n??e?.dashboard??null,O=h.pathname==="/setup"&&F!==null&&F.portfolioOverview.projects.length===0,M=g&&F?iR(F,g):void 0,oe=U.useMemo(()=>h.pathname.match(/^\/projects\/([^/]+)/)?.[1]??null,[h.pathname]),ke=U.useMemo(()=>!oe||!F?null:F.projects.find(J=>J.project.id===oe)?.project.name??null,[oe,F]),{commandCenter:Oe}=CR(ke),be=U.useMemo(()=>{if(v)return rR(Oe,F,v)},[v,Oe,F]),et=(()=>{const J=h.pathname;if(J==="/")return"Portfolio";if(J==="/projects")return"Projects";if(J==="/runs")return"Runs";if(J==="/settings")return"Settings";if(J==="/setup")return"Setup";if(J==="/backlinks")return"Backlinks";if(J==="/traffic"||J.startsWith("/traffic/"))return"Server traffic";if(J.startsWith("/projects/")){const W=J.split("/").filter(Boolean)[1];if(W&&F){const fe=F.projects.find(Se=>Se.project.id===W);if(fe)return fe.project.name}return"Project"}return"Not found"})(),Ke=U.useMemo(()=>pk(),[]);if(Ke){const J=!Ke.views||Ke.views.includes(VD(h.pathname));return f.jsxs("div",{className:"app-shell app-shell-embed",style:GD(Ke.theme),children:[f.jsx("a",{className:"skip-link",href:"#content",children:"Skip to content"}),f.jsx("main",{id:"content",className:"page-shell",children:J?f.jsx(Sf,{}):f.jsx("div",{className:"embed-view-unavailable",role:"status",children:"This view is not available in embed mode."})})]})}return f.jsxs("div",{className:`app-shell ${O?"app-shell-focus":""}`,children:[f.jsx("a",{className:"skip-link",href:"#content",children:"Skip to content"}),!O&&f.jsxs("aside",{className:"sidebar","aria-label":"Primary navigation",children:[f.jsx("div",{className:"sidebar-brand",children:f.jsx(Vb,{version:d.apiStatus.version,updateAvailable:R?E:null,onDismissUpdate:I})}),f.jsxs("nav",{className:"sidebar-nav",children:[f.jsxs(st,{to:"/",className:"sidebar-link",activeProps:{className:"sidebar-link sidebar-link-active"},activeOptions:{exact:!0},children:[f.jsx(kA,{className:"sidebar-icon"}),f.jsx("span",{children:"Overview"})]}),f.jsxs(st,{to:"/projects",className:"sidebar-link",activeProps:{className:"sidebar-link sidebar-link-active"},activeOptions:{exact:!1},children:[f.jsx(jA,{className:"sidebar-icon"}),f.jsx("span",{children:"Projects"})]}),f.jsxs(st,{to:"/runs",className:"sidebar-link",activeProps:{className:"sidebar-link sidebar-link-active"},activeOptions:{exact:!0},children:[f.jsx(LA,{className:"sidebar-icon"}),f.jsx("span",{children:"Runs"})]}),f.jsxs(st,{to:"/traffic",className:"sidebar-link",activeProps:{className:"sidebar-link sidebar-link-active"},activeOptions:{exact:!1},children:[f.jsx($A,{className:"sidebar-icon"}),f.jsx("span",{children:"Server traffic"})]}),f.jsxs(st,{to:"/backlinks",className:"sidebar-link",activeProps:{className:"sidebar-link sidebar-link-active"},activeOptions:{exact:!0},children:[f.jsx(_A,{className:"sidebar-icon"}),f.jsx("span",{children:"Backlinks"})]}),f.jsxs(st,{to:"/settings",className:"sidebar-link",activeProps:{className:"sidebar-link sidebar-link-active"},activeOptions:{exact:!0},children:[f.jsx(ZA,{className:"sidebar-icon"}),f.jsx("span",{children:"Settings"})]}),i?f.jsxs(f.Fragment,{children:[f.jsx("p",{className:"sidebar-section-title",children:"Projects"}),[1,2,3].map(J=>f.jsxs("div",{className:"sidebar-skeleton-item",children:[f.jsx("span",{className:"skeleton-circle size-2"}),f.jsx("span",{className:"skeleton-text flex-1",style:{width:`${50+J*15}%`}})]},J))]}):F&&F.projects.length>0?f.jsxs(f.Fragment,{children:[f.jsx("p",{className:"sidebar-section-title",children:"Projects"}),F.projects.map(J=>{const B=J.visibilitySummary.tone;return f.jsxs(st,{to:"/projects/$projectName",params:{projectName:J.project.name},className:"sidebar-project",activeProps:{className:"sidebar-project sidebar-project-active"},children:[f.jsx("span",{className:`sidebar-dot sidebar-dot-${B}`}),f.jsx("span",{children:J.project.displayName||J.project.name})]},J.project.id)})]}):i?null:f.jsxs(f.Fragment,{children:[f.jsx("p",{className:"sidebar-section-title",children:"Resources"}),f.jsxs(st,{to:"/setup",className:"sidebar-link",activeProps:{className:"sidebar-link sidebar-link-active"},activeOptions:{exact:!0},children:[f.jsx(PA,{className:"sidebar-icon"}),f.jsx("span",{children:"Setup"})]})]})]}),f.jsx("div",{className:"sidebar-footer",children:Jb.map(({label:J,href:B,Icon:W})=>f.jsx("a",{className:"sidebar-footer-icon",href:B,target:"_blank",rel:"noopener noreferrer",title:J,"aria-label":J,children:f.jsx(W,{className:"size-4"})},B))})]}),f.jsxs("div",{className:"main-area",children:[f.jsxs("header",{className:"topbar",children:[f.jsxs("div",{className:"topbar-left",children:[f.jsx("div",{className:"topbar-brand-mobile",children:f.jsx(Vb,{compact:!0})}),f.jsxs("nav",{className:"breadcrumb","aria-label":"Breadcrumb",children:[f.jsx(st,{to:"/",children:"Home"}),f.jsx(Ff,{className:"breadcrumb-sep size-3"}),f.jsx("span",{className:"breadcrumb-current",children:et})]})]}),f.jsxs("div",{className:"topbar-actions",children:[f.jsxs("div",{className:"health-pill-row",children:[f.jsxs("span",{className:`health-pill health-pill-${d.apiStatus.state}`,title:Us(d.apiStatus),children:["API ",d.apiStatus.state==="ok"?"ok":d.apiStatus.state]}),f.jsxs("span",{className:`health-pill health-pill-${d.workerStatus.state}`,title:Us(d.workerStatus),children:["Worker ",d.workerStatus.state==="ok"?"ok":d.workerStatus.state]})]}),f.jsxs(qe,{className:"nav-toggle",variant:"secondary",size:"icon",type:"button","aria-expanded":x,"aria-controls":"mobile-nav",onClick:()=>N(J=>!J),children:[f.jsx(DA,{className:"size-4"}),f.jsx("span",{className:"sr-only",children:"Open navigation"})]})]})]}),f.jsxs("div",{id:"mobile-nav",className:`mobile-nav ${x?"mobile-nav-open":""}`,children:[f.jsxs(qe,{className:"mobile-nav-close",variant:"ghost",size:"icon",type:"button",onClick:()=>N(!1),children:[f.jsx(Gs,{className:"size-5"}),f.jsx("span",{className:"sr-only",children:"Close navigation"})]}),f.jsx(st,{to:"/",className:"mobile-nav-link",activeProps:{className:"mobile-nav-link mobile-nav-link-active"},activeOptions:{exact:!0},children:"Overview"}),f.jsx(st,{to:"/projects",className:"mobile-nav-link",activeProps:{className:"mobile-nav-link mobile-nav-link-active"},activeOptions:{exact:!1},children:"Projects"}),f.jsx(st,{to:"/runs",className:"mobile-nav-link",activeProps:{className:"mobile-nav-link mobile-nav-link-active"},activeOptions:{exact:!0},children:"Runs"}),f.jsx(st,{to:"/traffic",className:"mobile-nav-link",activeProps:{className:"mobile-nav-link mobile-nav-link-active"},activeOptions:{exact:!1},children:"Server traffic"}),f.jsx(st,{to:"/settings",className:"mobile-nav-link",activeProps:{className:"mobile-nav-link mobile-nav-link-active"},activeOptions:{exact:!0},children:"Settings"}),F&&F.projects.length>0?f.jsxs("div",{className:"mobile-nav-section",children:[f.jsx("p",{className:"mobile-nav-section-title",children:"Projects"}),F.projects.map(J=>f.jsx(st,{to:"/projects/$projectName",params:{projectName:J.project.name},className:"mobile-nav-link",children:J.project.name},J.project.id))]}):null]}),f.jsx("main",{id:"content",className:"page-shell",children:i&&!e?f.jsxs("div",{className:"page-skeleton",children:[f.jsxs("div",{className:"page-skeleton-header",children:[f.jsx("div",{className:"skeleton-text h-6 w-40"}),f.jsx("div",{className:"skeleton-text-sm w-72"})]}),f.jsx("div",{className:"page-skeleton-grid",children:[1,2,3].map(J=>f.jsxs("div",{className:"page-skeleton-card",children:[f.jsx("div",{className:"skeleton-text w-24"}),f.jsx("div",{className:"skeleton-text w-full"}),f.jsx("div",{className:"skeleton-text-sm w-3/4"})]},J))}),f.jsx("div",{className:"page-skeleton-grid",style:{gridTemplateColumns:"1fr 1fr"},children:[1,2].map(J=>f.jsxs("div",{className:"page-skeleton-card",children:[f.jsx("div",{className:"skeleton-text w-20"}),f.jsx("div",{className:"space-y-2",children:[1,2,3].map(B=>f.jsx("div",{className:"skeleton-text-sm w-full"},B))})]},J))})]}):f.jsx(Sf,{})}),f.jsxs("footer",{className:"footer",children:[f.jsxs("span",{className:"footer-brand",children:[f.jsx("span",{children:f.jsx("a",{href:"https://canonry.ai",children:"Canonry"})}),d.apiStatus.version&&d.apiStatus.version!=="unknown"?f.jsxs("span",{className:"footer-version",children:["v",d.apiStatus.version]}):null]}),f.jsx("div",{className:"footer-links",children:Jb.map(({label:J,href:B,Icon:W})=>f.jsx("a",{href:B,target:"_blank",rel:"noopener noreferrer",title:J,"aria-label":J,className:"footer-icon",children:f.jsx(W,{className:"size-3.5"})},B))})]})]}),M?f.jsxs(Z3,{open:!0,title:M.summary,subtitle:`${M.projectName} · ${M.kindLabel}`,onClose:S,children:[f.jsxs("div",{className:"flex flex-wrap items-center gap-x-5 gap-y-1 text-sm",children:[f.jsx(Ap,{status:M.status}),f.jsx("span",{className:"text-zinc-400",children:M.startedAt}),f.jsx("span",{className:"text-zinc-500",children:M.duration}),f.jsx("span",{className:"text-zinc-600",children:M.triggerLabel})]}),M.status==="failed"&&M.statusDetail&&f.jsx("p",{className:"text-sm text-rose-300/80 mt-2",children:M.statusDetail}),f.jsxs("div",{className:"mt-4",children:[f.jsx("p",{className:"text-[10px] font-semibold uppercase tracking-wider text-zinc-500 mb-2",children:"Activity Log"}),X?f.jsx("p",{className:"text-sm text-zinc-500",children:"Loading run details..."}):Z?.snapshots&&Z.snapshots.length>0?f.jsxs("div",{className:"space-y-2",children:[Z.snapshots.map(J=>f.jsxs("div",{className:"rounded-lg border border-zinc-800/60 bg-zinc-900/30 p-3",children:[f.jsxs("div",{className:"flex items-center justify-between gap-2 mb-1",children:[f.jsx("p",{className:"text-sm font-medium text-zinc-200 truncate",children:J.query??"Unknown query"}),f.jsxs("div",{className:"flex items-center gap-1.5",children:[f.jsx(V3,{provider:J.provider}),f.jsx(pS,{variant:J.citationState===sc.cited?"success":"neutral",children:J.citationState})]})]}),J.model&&f.jsx("p",{className:"text-[11px] text-zinc-500 font-mono",children:J.model}),J.citedDomains.length>0&&f.jsxs("p",{className:"text-xs text-zinc-500 mt-1",children:[f.jsx("span",{className:"text-zinc-400",children:"Sources:"})," ",J.citedDomains.join(", ")]}),J.competitorOverlap.length>0&&f.jsxs("p",{className:"text-xs text-rose-400/80 mt-0.5",children:["Competitor cited: ",J.competitorOverlap.join(", ")]}),J.groundingSources&&J.groundingSources.length>0&&f.jsxs("details",{className:"mt-2",children:[f.jsxs("summary",{className:"text-xs text-zinc-500 cursor-pointer hover:text-zinc-400",children:[J.groundingSources.length," grounding source",J.groundingSources.length!==1?"s":""]}),f.jsx("ul",{className:"mt-1 space-y-0.5",children:J.groundingSources.map((B,W)=>{const fe=Rf(B.uri),Se=B.title||B.uri;return f.jsx("li",{className:"text-xs text-zinc-500 truncate",children:fe?f.jsx("a",{href:fe,target:"_blank",rel:"noopener noreferrer",className:"hover:text-zinc-300",children:Se}):f.jsx("span",{children:Se})},W)})})]}),J.answerText&&f.jsxs("details",{className:"mt-1",children:[f.jsx("summary",{className:"text-xs text-zinc-500 cursor-pointer hover:text-zinc-400",children:"Answer preview"}),f.jsx("p",{className:"mt-1 text-xs text-zinc-400 leading-relaxed whitespace-pre-wrap",children:J.answerText})]})]},J.id)),Z.status==="running"&&f.jsxs("div",{className:"flex items-center gap-2 p-3 text-sm text-zinc-500",children:[f.jsx("span",{className:"inline-block h-2 w-2 rounded-full bg-amber-500 animate-pulse"}),"Running remaining queries..."]})]}):Z&&Z.status==="running"?f.jsxs("div",{className:"flex items-center gap-2 p-3 text-sm text-zinc-500",children:[f.jsx("span",{className:"inline-block h-2 w-2 rounded-full bg-amber-500 animate-pulse"}),"Waiting for first query result..."]}):Z&&Z.status==="queued"?f.jsxs("div",{className:"flex items-center gap-2 p-3 text-sm text-zinc-500",children:[f.jsx("span",{className:"inline-block h-2 w-2 rounded-full bg-zinc-500 animate-pulse"}),"Run queued, waiting for execution slot..."]}):Z&&Z.error?f.jsxs("div",{className:"rounded-lg border border-rose-800/40 bg-rose-950/20 p-3",children:[f.jsx("p",{className:"text-sm font-medium text-rose-300 mb-2",children:"Run failed"}),f.jsx("pre",{className:"text-xs text-rose-300/80 whitespace-pre-wrap break-words max-h-48 overflow-y-auto font-mono leading-5",children:qD(Z.error)})]}):f.jsx("p",{className:"text-sm text-zinc-500",children:"No snapshot data available."})]})]}):null,be?f.jsx(F3,{evidence:be.evidence,project:be.project,onClose:S}):null,f.jsx(sM,{}),f.jsx(RR,{}),f.jsx(FR,{})]})}class oM extends U.Component{state={error:null};static getDerivedStateFromError(n){return{error:n}}componentDidCatch(n,i){console.error("[ErrorBoundary]",n,i.componentStack)}handleReset=()=>{this.setState({error:null})};render(){return this.state.error?f.jsx("div",{className:"page-container",children:f.jsxs("div",{className:"flex flex-col items-center justify-center gap-4 py-20 text-center",children:[f.jsx("div",{className:"rounded-full bg-rose-950/40 p-3",children:f.jsx(Bv,{className:"size-6 text-rose-400"})}),f.jsx("h2",{className:"text-lg font-semibold text-zinc-100",children:"Something went wrong"}),f.jsx("p",{className:"text-sm text-zinc-400 max-w-md",children:this.state.error.message||"An unexpected error occurred while rendering this page."}),f.jsxs("div",{className:"flex gap-3 mt-2",children:[f.jsxs(qe,{variant:"secondary",size:"sm",onClick:this.handleReset,children:[f.jsx(Mv,{className:"size-3.5 mr-1.5"}),"Try again"]}),f.jsx(qe,{variant:"secondary",size:"sm",onClick:()=>{const n=window.__CANONRY_CONFIG__?.basePath?.replace(/\/$/,"")??"";window.location.href=n||"/"},children:"Go home"})]})]})}):this.props.children}}const kn=U.forwardRef(({className:e,...n},i)=>f.jsx("div",{ref:i,className:Tn("rounded-xl border border-zinc-800 bg-zinc-950/75 shadow-[0_0_0_1px_rgba(255,255,255,0.01)]",e),...n}));kn.displayName="Card";const Mf=U.forwardRef(({className:e,...n},i)=>f.jsx("div",{ref:i,className:Tn("flex flex-col gap-1.5 p-5",e),...n}));Mf.displayName="CardHeader";const Bf=U.forwardRef(({className:e,...n},i)=>f.jsx("h3",{ref:i,className:Tn("font-medium tracking-tight text-zinc-50",e),...n}));Bf.displayName="CardTitle";const Lf=U.forwardRef(({className:e,...n},i)=>f.jsx("p",{ref:i,className:Tn("text-sm text-zinc-500",e),...n}));Lf.displayName="CardDescription";const Yl=U.forwardRef(({className:e,...n},i)=>f.jsx("div",{ref:i,className:Tn("p-5 pt-0",e),...n}));Yl.displayName="CardContent";function lM({points:e,tone:n}){const i=U.useId();if(e.length===0)return null;const r=42,l=132,c=5,d=Math.min(...e),g=Math.max(...e)-d||1,v=l-c*2,S=r-c*2,x=e.map((N,_)=>{const T=c+_/Math.max(e.length-1,1)*v,k=c+(1-(N-d)/g)*S;return`${T},${k}`}).join(" ");return f.jsxs("svg",{className:`sparkline sparkline-${n}`,viewBox:`0 0 ${l} ${r}`,"aria-hidden":"true",children:[f.jsx("defs",{children:f.jsx("clipPath",{id:i,children:f.jsx("rect",{x:c,y:c,width:v,height:S,rx:"8"})})}),f.jsx("line",{className:"sparkline-guide",x1:c,x2:l-c,y1:r-c,y2:r-c}),f.jsx("polyline",{clipPath:`url(#${i})`,points:x,vectorEffect:"non-scaling-stroke"})]})}function cM({project:e}){return f.jsxs(st,{to:"/projects/$projectName",params:{projectName:e.project.name},className:"project-row cursor-pointer",children:[f.jsx("div",{className:"project-row-chart",children:f.jsx(lM,{points:e.trend,tone:Z0(e.lastRun.status)})}),f.jsxs("div",{className:"project-row-primary",children:[f.jsxs("div",{children:[f.jsx("p",{className:"project-name",children:e.project.name}),f.jsx("p",{className:"project-domain",children:e.project.canonicalDomain})]}),f.jsx("p",{className:"project-insight",children:e.insight})]}),f.jsx("div",{className:"project-row-stat",children:f.jsxs("div",{className:"metric-inline-block",children:[f.jsx("p",{className:"metric-inline-label",children:"Mentioned"}),f.jsx("p",{className:`metric-inline-value ${e.mentionTone==="caution"?"text-amber-400":""}`,children:e.mentionScore}),f.jsx("p",{className:"metric-inline-delta",children:e.mentionDelta}),e.providerCoverage&&f.jsx("p",{className:"text-[10px] font-medium text-amber-400/80",children:e.providerCoverage})]})}),f.jsx("div",{className:"project-row-stat",children:f.jsxs("div",{className:"metric-inline-block",children:[f.jsx("p",{className:"metric-inline-label",children:"Competitor Pressure"}),f.jsx("p",{className:"metric-inline-value",children:e.competitorPressureLabel})]})}),f.jsx("span",{className:"project-row-link",children:f.jsx(Ff,{className:"h-4 w-4 text-zinc-500"})})]})}function uM(){const e=uo(),{dashboard:n,isLoading:i}=kc(),r=n??e?.dashboard;if(!r||i)return f.jsxs("div",{className:"page-skeleton",children:[f.jsxs("div",{className:"page-skeleton-header",children:[f.jsx("div",{className:"skeleton-text h-6 w-32"}),f.jsx("div",{className:"skeleton-text-sm w-64"})]}),f.jsx("div",{className:"space-y-3",children:[1,2,3].map(S=>f.jsxs("div",{className:"rounded-xl border border-zinc-800/60 bg-zinc-900/30 p-4 flex items-center gap-4",children:[f.jsxs("div",{className:"flex-1 space-y-2",children:[f.jsx("div",{className:"skeleton-text w-36"}),f.jsx("div",{className:"skeleton-text-sm w-48"})]}),f.jsx("div",{className:"skeleton-text w-16"}),f.jsx("div",{className:"skeleton-text w-16"}),f.jsx("div",{className:"skeleton h-8 w-20 rounded"})]},S))})]});const l=r.portfolioOverview,h=Cp(!e,e?.health).data??e?.health??{apiStatus:{label:"API",state:"checking",detail:"Checking service health"},workerStatus:{label:"Worker",state:"checking",detail:"Checking service health"}},g=M4(l.systemHealth,h,r.settings),{openRun:v}=zp();return f.jsxs("div",{className:"page-container",children:[f.jsxs("div",{className:"page-header",children:[f.jsxs("div",{className:"page-header-left",children:[f.jsx("h1",{className:"page-title",children:"Portfolio"}),f.jsx("p",{className:"page-subtitle",children:"Visibility and execution state across all projects"})]}),f.jsx("div",{className:"page-header-right",children:f.jsx("p",{className:"text-[11px] text-zinc-600",children:l.lastUpdatedAt})})]}),l.projects.length>0?f.jsx("div",{className:"project-list project-list-scrollable",children:l.projects.map(S=>f.jsx(cM,{project:S},S.project.id))}):f.jsxs(kn,{className:"surface-card empty-card",children:[f.jsx("h3",{children:l.emptyState?.title??"No projects yet"}),f.jsx("p",{className:"supporting-copy",children:l.emptyState?.detail}),f.jsx(qe,{size:"sm",asChild:!0,children:f.jsx(st,{to:l.emptyState?.ctaHref==="/setup"||!l.emptyState?.ctaHref?"/setup":"/",children:l.emptyState?.ctaLabel??"Launch setup"})})]}),f.jsxs("div",{className:"overview-secondary-grid",children:[l.attentionItems.length>0&&f.jsxs("section",{className:"overview-secondary-section",children:[f.jsx("div",{className:"section-head section-head-inline",children:f.jsxs("div",{children:[f.jsx("p",{className:"eyebrow eyebrow-soft",children:"Needs attention"}),f.jsx("h2",{className:"section-title-sm",children:"What changed"})]})}),f.jsx("div",{className:"attention-list attention-list-scrollable",children:l.attentionItems.map(S=>S.href?f.jsxs(st,{to:S.href,className:`attention-item attention-item-${S.tone}`,children:[f.jsxs("div",{children:[f.jsx("p",{className:"attention-title",children:S.title}),f.jsx("p",{className:"attention-detail",children:S.detail})]}),S.actionLabel&&f.jsx("span",{className:"attention-action",children:S.actionLabel})]},S.id):f.jsxs("div",{className:`attention-item attention-item-static attention-item-${S.tone}`,children:[f.jsxs("div",{children:[f.jsx("p",{className:"attention-title",children:S.title}),f.jsx("p",{className:"attention-detail",children:S.detail})]}),S.actionLabel&&f.jsx("span",{className:"attention-action",children:S.actionLabel})]},S.id))})]}),f.jsxs("section",{className:"overview-secondary-section",children:[f.jsx("div",{className:"section-head section-head-inline",children:f.jsxs("div",{children:[f.jsx("p",{className:"eyebrow eyebrow-soft",children:"Recent runs"}),f.jsx("h2",{className:"section-title-sm",children:"Activity"})]})}),f.jsx("div",{className:"compact-stack compact-stack-scrollable",children:l.recentRuns.length>0?l.recentRuns.map(S=>f.jsxs("button",{className:"compact-run",type:"button",onClick:()=>v(S.id),children:[f.jsxs("div",{children:[f.jsx("p",{className:"compact-run-title",children:S.projectName}),f.jsx("p",{className:"compact-run-detail",children:S.summary})]}),f.jsx(Ap,{status:S.status})]},S.id)):f.jsx("p",{className:"supporting-copy",children:"Run history appears here after the first launch."})})]})]}),f.jsxs("section",{className:"page-section",children:[f.jsx("div",{className:"section-head section-head-inline",children:f.jsxs("div",{children:[f.jsx("p",{className:"eyebrow eyebrow-soft",children:"System health"}),f.jsx("h2",{className:"section-title-sm",children:"Infrastructure"})]})}),f.jsx("div",{className:"health-grid",children:g.map(S=>f.jsxs(kn,{className:"surface-card compact-card",children:[f.jsxs("div",{className:"section-head",children:[f.jsxs("div",{children:[f.jsx("p",{className:"eyebrow eyebrow-soft",children:S.label}),f.jsx("h3",{children:S.detail})]}),f.jsx(Bn,{tone:S.tone,title:S.id==="api"?Us(h.apiStatus):S.id==="worker"?Us(h.workerStatus):void 0,children:S.label})]}),f.jsx("p",{className:"supporting-copy",children:S.meta})]},S.id))})]})]})}const Dp=Symbol.for("yaml.alias"),qf=Symbol.for("yaml.document"),Ya=Symbol.for("yaml.map"),_S=Symbol.for("yaml.pair"),Qn=Symbol.for("yaml.scalar"),Ys=Symbol.for("yaml.seq"),Cn=Symbol.for("yaml.node.type"),Di=e=>!!e&&typeof e=="object"&&e[Cn]===Dp,Ac=e=>!!e&&typeof e=="object"&&e[Cn]===qf,fo=e=>!!e&&typeof e=="object"&&e[Cn]===Ya,xt=e=>!!e&&typeof e=="object"&&e[Cn]===_S,nt=e=>!!e&&typeof e=="object"&&e[Cn]===Qn,po=e=>!!e&&typeof e=="object"&&e[Cn]===Ys;function bt(e){if(e&&typeof e=="object")switch(e[Cn]){case Ya:case Ys:return!0}return!1}function St(e){if(e&&typeof e=="object")switch(e[Cn]){case Dp:case Ya:case Qn:case Ys:return!0}return!1}const CS=e=>(nt(e)||bt(e))&&!!e.anchor,ji=Symbol("break visit"),dM=Symbol("skip children"),to=Symbol("remove node");function Xs(e,n){const i=fM(n);Ac(e)?Ts(null,e.contents,i,Object.freeze([e]))===to&&(e.contents=null):Ts(null,e,i,Object.freeze([]))}Xs.BREAK=ji;Xs.SKIP=dM;Xs.REMOVE=to;function Ts(e,n,i,r){const l=pM(e,n,i,r);if(St(l)||xt(l))return mM(e,r,l),Ts(e,l,i,r);if(typeof l!="symbol"){if(bt(n)){r=Object.freeze(r.concat(n));for(let c=0;c<n.items.length;++c){const d=Ts(c,n.items[c],i,r);if(typeof d=="number")c=d-1;else{if(d===ji)return ji;d===to&&(n.items.splice(c,1),c-=1)}}}else if(xt(n)){r=Object.freeze(r.concat(n));const c=Ts("key",n.key,i,r);if(c===ji)return ji;c===to&&(n.key=null);const d=Ts("value",n.value,i,r);if(d===ji)return ji;d===to&&(n.value=null)}}return l}function fM(e){return typeof e=="object"&&(e.Collection||e.Node||e.Value)?Object.assign({Alias:e.Node,Map:e.Node,Scalar:e.Node,Seq:e.Node},e.Value&&{Map:e.Value,Scalar:e.Value,Seq:e.Value},e.Collection&&{Map:e.Collection,Seq:e.Collection},e):e}function pM(e,n,i,r){if(typeof i=="function")return i(e,n,r);if(fo(n))return i.Map?.(e,n,r);if(po(n))return i.Seq?.(e,n,r);if(xt(n))return i.Pair?.(e,n,r);if(nt(n))return i.Scalar?.(e,n,r);if(Di(n))return i.Alias?.(e,n,r)}function mM(e,n,i){const r=n[n.length-1];if(bt(r))r.items[e]=i;else if(xt(r))e==="key"?r.key=i:r.value=i;else if(Ac(r))r.contents=i;else{const l=Di(r)?"alias":"scalar";throw new Error(`Cannot replace node with ${l} parent`)}}const hM={"!":"%21",",":"%2C","[":"%5B","]":"%5D","{":"%7B","}":"%7D"},gM=e=>e.replace(/[!,[\]{}]/g,n=>hM[n]);class Ht{constructor(n,i){this.docStart=null,this.docEnd=!1,this.yaml=Object.assign({},Ht.defaultYaml,n),this.tags=Object.assign({},Ht.defaultTags,i)}clone(){const n=new Ht(this.yaml,this.tags);return n.docStart=this.docStart,n}atDocument(){const n=new Ht(this.yaml,this.tags);switch(this.yaml.version){case"1.1":this.atNextDocument=!0;break;case"1.2":this.atNextDocument=!1,this.yaml={explicit:Ht.defaultYaml.explicit,version:"1.2"},this.tags=Object.assign({},Ht.defaultTags);break}return n}add(n,i){this.atNextDocument&&(this.yaml={explicit:Ht.defaultYaml.explicit,version:"1.1"},this.tags=Object.assign({},Ht.defaultTags),this.atNextDocument=!1);const r=n.trim().split(/[ \t]+/),l=r.shift();switch(l){case"%TAG":{if(r.length!==2&&(i(0,"%TAG directive should contain exactly two parts"),r.length<2))return!1;const[c,d]=r;return this.tags[c]=d,!0}case"%YAML":{if(this.yaml.explicit=!0,r.length!==1)return i(0,"%YAML directive should contain exactly one part"),!1;const[c]=r;if(c==="1.1"||c==="1.2")return this.yaml.version=c,!0;{const d=/^\d+\.\d+$/.test(c);return i(6,`Unsupported YAML version ${c}`,d),!1}}default:return i(0,`Unknown directive ${l}`,!0),!1}}tagName(n,i){if(n==="!")return"!";if(n[0]!=="!")return i(`Not a valid tag: ${n}`),null;if(n[1]==="<"){const d=n.slice(2,-1);return d==="!"||d==="!!"?(i(`Verbatim tags aren't resolved, so ${n} is invalid.`),null):(n[n.length-1]!==">"&&i("Verbatim tags must end with a >"),d)}const[,r,l]=n.match(/^(.*!)([^!]*)$/s);l||i(`The ${n} tag has no suffix`);const c=this.tags[r];if(c)try{return c+decodeURIComponent(l)}catch(d){return i(String(d)),null}return r==="!"?n:(i(`Could not resolve tag: ${n}`),null)}tagString(n){for(const[i,r]of Object.entries(this.tags))if(n.startsWith(r))return i+gM(n.substring(r.length));return n[0]==="!"?n:`!<${n}>`}toString(n){const i=this.yaml.explicit?[`%YAML ${this.yaml.version||"1.2"}`]:[],r=Object.entries(this.tags);let l;if(n&&r.length>0&&St(n.contents)){const c={};Xs(n.contents,(d,h)=>{St(h)&&h.tag&&(c[h.tag]=!0)}),l=Object.keys(c)}else l=[];for(const[c,d]of r)c==="!!"&&d==="tag:yaml.org,2002:"||(!n||l.some(h=>h.startsWith(d)))&&i.push(`%TAG ${c} ${d}`);return i.join(`
65
65
  `)}}Ht.defaultYaml={explicit:!1,version:"1.2"};Ht.defaultTags={"!!":"tag:yaml.org,2002:"};function zS(e){if(/[\x00-\x19\s,[\]{}]/.test(e)){const i=`Anchor must not contain whitespace or control characters: ${JSON.stringify(e)}`;throw new Error(i)}return!0}function TS(e){const n=new Set;return Xs(e,{Value(i,r){r.anchor&&n.add(r.anchor)}}),n}function ES(e,n){for(let i=1;;++i){const r=`${e}${i}`;if(!n.has(r))return r}}function yM(e,n){const i=[],r=new Map;let l=null;return{onAnchor:c=>{i.push(c),l??(l=TS(e));const d=ES(n,l);return l.add(d),d},setAnchors:()=>{for(const c of i){const d=r.get(c);if(typeof d=="object"&&d.anchor&&(nt(d.node)||bt(d.node)))d.node.anchor=d.anchor;else{const h=new Error("Failed to resolve repeated object (this should not happen)");throw h.source=c,h}}},sourceObjects:r}}function Es(e,n,i,r){if(r&&typeof r=="object")if(Array.isArray(r))for(let l=0,c=r.length;l<c;++l){const d=r[l],h=Es(e,r,String(l),d);h===void 0?delete r[l]:h!==d&&(r[l]=h)}else if(r instanceof Map)for(const l of Array.from(r.keys())){const c=r.get(l),d=Es(e,r,l,c);d===void 0?r.delete(l):d!==c&&r.set(l,d)}else if(r instanceof Set)for(const l of Array.from(r)){const c=Es(e,r,l,l);c===void 0?r.delete(l):c!==l&&(r.delete(l),r.add(c))}else for(const[l,c]of Object.entries(r)){const d=Es(e,r,l,c);d===void 0?delete r[l]:d!==c&&(r[l]=d)}return e.call(n,i,r)}function _n(e,n,i){if(Array.isArray(e))return e.map((r,l)=>_n(r,String(l),i));if(e&&typeof e.toJSON=="function"){if(!i||!CS(e))return e.toJSON(n,i);const r={aliasCount:0,count:1,res:void 0};i.anchors.set(e,r),i.onCreate=c=>{r.res=c,delete i.onCreate};const l=e.toJSON(n,i);return i.onCreate&&i.onCreate(l),l}return typeof e=="bigint"&&!i?.keep?Number(e):e}class Rp{constructor(n){Object.defineProperty(this,Cn,{value:n})}clone(){const n=Object.create(Object.getPrototypeOf(this),Object.getOwnPropertyDescriptors(this));return this.range&&(n.range=this.range.slice()),n}toJS(n,{mapAsMap:i,maxAliasCount:r,onAnchor:l,reviver:c}={}){if(!Ac(n))throw new TypeError("A document argument is required");const d={anchors:new Map,doc:n,keep:!0,mapAsMap:i===!0,mapKeyWarned:!1,maxAliasCount:typeof r=="number"?r:100},h=_n(this,"",d);if(typeof l=="function")for(const{count:g,res:v}of d.anchors.values())l(v,g);return typeof c=="function"?Es(c,{"":h},"",h):h}}class Mp extends Rp{constructor(n){super(Dp),this.source=n,Object.defineProperty(this,"tag",{set(){throw new Error("Alias nodes cannot have tags")}})}resolve(n,i){let r;i?.aliasResolveCache?r=i.aliasResolveCache:(r=[],Xs(n,{Node:(c,d)=>{(Di(d)||CS(d))&&r.push(d)}}),i&&(i.aliasResolveCache=r));let l;for(const c of r){if(c===this)break;c.anchor===this.source&&(l=c)}return l}toJSON(n,i){if(!i)return{source:this.source};const{anchors:r,doc:l,maxAliasCount:c}=i,d=this.resolve(l,i);if(!d){const g=`Unresolved alias (the anchor must be set before the alias): ${this.source}`;throw new ReferenceError(g)}let h=r.get(d);if(h||(_n(d,null,i),h=r.get(d)),h?.res===void 0){const g="This should not happen: Alias anchor was not resolved?";throw new ReferenceError(g)}if(c>=0&&(h.count+=1,h.aliasCount===0&&(h.aliasCount=Xl(l,d,r)),h.count*h.aliasCount>c)){const g="Excessive alias count indicates a resource exhaustion attack";throw new ReferenceError(g)}return h.res}toString(n,i,r){const l=`*${this.source}`;if(n){if(zS(this.source),n.options.verifyAliasOrder&&!n.anchors.has(this.source)){const c=`Unresolved alias (the anchor must be set before the alias): ${this.source}`;throw new Error(c)}if(n.implicitKey)return`${l} `}return l}}function Xl(e,n,i){if(Di(n)){const r=n.resolve(e),l=i&&r&&i.get(r);return l?l.count*l.aliasCount:0}else if(bt(n)){let r=0;for(const l of n.items){const c=Xl(e,l,i);c>r&&(r=c)}return r}else if(xt(n)){const r=Xl(e,n.key,i),l=Xl(e,n.value,i);return Math.max(r,l)}return 1}const OS=e=>!e||typeof e!="function"&&typeof e!="object";class Ae extends Rp{constructor(n){super(Qn),this.value=n}toJSON(n,i){return i?.keep?this.value:_n(this.value,n,i)}toString(){return String(this.value)}}Ae.BLOCK_FOLDED="BLOCK_FOLDED";Ae.BLOCK_LITERAL="BLOCK_LITERAL";Ae.PLAIN="PLAIN";Ae.QUOTE_DOUBLE="QUOTE_DOUBLE";Ae.QUOTE_SINGLE="QUOTE_SINGLE";const bM="tag:yaml.org,2002:";function vM(e,n,i){if(n){const r=i.filter(c=>c.tag===n),l=r.find(c=>!c.format)??r[0];if(!l)throw new Error(`Tag ${n} not found`);return l}return i.find(r=>r.identify?.(e)&&!r.format)}function oo(e,n,i){if(Ac(e)&&(e=e.contents),St(e))return e;if(xt(e)){const x=i.schema[Ya].createNode?.(i.schema,null,i);return x.items.push(e),x}(e instanceof String||e instanceof Number||e instanceof Boolean||typeof BigInt<"u"&&e instanceof BigInt)&&(e=e.valueOf());const{aliasDuplicateObjects:r,onAnchor:l,onTagObj:c,schema:d,sourceObjects:h}=i;let g;if(r&&e&&typeof e=="object"){if(g=h.get(e),g)return g.anchor??(g.anchor=l(e)),new Mp(g.anchor);g={anchor:null,node:null},h.set(e,g)}n?.startsWith("!!")&&(n=bM+n.slice(2));let v=vM(e,n,d.tags);if(!v){if(e&&typeof e.toJSON=="function"&&(e=e.toJSON()),!e||typeof e!="object"){const x=new Ae(e);return g&&(g.node=x),x}v=e instanceof Map?d[Ya]:Symbol.iterator in Object(e)?d[Ys]:d[Ya]}c&&(c(v),delete i.onTagObj);const S=v?.createNode?v.createNode(i.schema,e,i):typeof v?.nodeClass?.from=="function"?v.nodeClass.from(i.schema,e,i):new Ae(e);return n?S.tag=n:v.default||(S.tag=v.tag),g&&(g.node=S),S}function uc(e,n,i){let r=i;for(let l=n.length-1;l>=0;--l){const c=n[l];if(typeof c=="number"&&Number.isInteger(c)&&c>=0){const d=[];d[c]=r,r=d}else r=new Map([[c,r]])}return oo(r,void 0,{aliasDuplicateObjects:!1,keepUndefined:!1,onAnchor:()=>{throw new Error("This should not happen, please report a bug.")},schema:e,sourceObjects:new Map})}const eo=e=>e==null||typeof e=="object"&&!!e[Symbol.iterator]().next().done;class DS extends Rp{constructor(n,i){super(n),Object.defineProperty(this,"schema",{value:i,configurable:!0,enumerable:!1,writable:!0})}clone(n){const i=Object.create(Object.getPrototypeOf(this),Object.getOwnPropertyDescriptors(this));return n&&(i.schema=n),i.items=i.items.map(r=>St(r)||xt(r)?r.clone(n):r),this.range&&(i.range=this.range.slice()),i}addIn(n,i){if(eo(n))this.add(i);else{const[r,...l]=n,c=this.get(r,!0);if(bt(c))c.addIn(l,i);else if(c===void 0&&this.schema)this.set(r,uc(this.schema,l,i));else throw new Error(`Expected YAML collection at ${r}. Remaining path: ${l}`)}}deleteIn(n){const[i,...r]=n;if(r.length===0)return this.delete(i);const l=this.get(i,!0);if(bt(l))return l.deleteIn(r);throw new Error(`Expected YAML collection at ${i}. Remaining path: ${r}`)}getIn(n,i){const[r,...l]=n,c=this.get(r,!0);return l.length===0?!i&&nt(c)?c.value:c:bt(c)?c.getIn(l,i):void 0}hasAllNullValues(n){return this.items.every(i=>{if(!xt(i))return!1;const r=i.value;return r==null||n&&nt(r)&&r.value==null&&!r.commentBefore&&!r.comment&&!r.tag})}hasIn(n){const[i,...r]=n;if(r.length===0)return this.has(i);const l=this.get(i,!0);return bt(l)?l.hasIn(r):!1}setIn(n,i){const[r,...l]=n;if(l.length===0)this.set(r,i);else{const c=this.get(r,!0);if(bt(c))c.setIn(l,i);else if(c===void 0&&this.schema)this.set(r,uc(this.schema,l,i));else throw new Error(`Expected YAML collection at ${r}. Remaining path: ${l}`)}}}const SM=e=>e.replace(/^(?!$)(?: $)?/gm,"#");function ha(e,n){return/^\n+$/.test(e)?e.substring(1):n?e.replace(/^(?! *$)/gm,n):e}const Ni=(e,n,i)=>e.endsWith(`
66
66
  `)?ha(i,n):i.includes(`
67
67
  `)?`
@@ -199,7 +199,7 @@ spec:
199
199
  canonicalDomain: example.com
200
200
  country: US
201
201
  language: en
202
- queries: []`,value:n,onChange:S=>i(S.target.value)}),c.length>0&&f.jsx("ul",{className:"mt-2 space-y-1",children:c.map((S,x)=>f.jsx("li",{className:"text-emerald-400 text-sm",children:S},x))}),h.length>0&&f.jsx("ul",{className:"mt-2 space-y-1",children:h.map((S,x)=>f.jsx("li",{className:"text-rose-400 text-sm",children:S},x))}),f.jsx("div",{className:"mt-3",children:f.jsx(qe,{type:"button",disabled:!n.trim()||r,onClick:Nn(v),children:r?"Applying...":"Apply"})})]})}function wB(){const{dashboard:e,isLoading:n,refetch:i}=kc();if(!e||n)return f.jsxs("div",{className:"page-skeleton",children:[f.jsxs("div",{className:"page-skeleton-header",children:[f.jsx("div",{className:"skeleton-text h-6 w-28"}),f.jsx("div",{className:"skeleton-text-sm w-40"})]}),f.jsxs("div",{className:"rounded-xl border border-zinc-800/60 bg-zinc-900/30 overflow-hidden",children:[f.jsx("div",{className:"p-3 border-b border-zinc-800/60 flex gap-8",children:["Name","Domain","Mentions","Last run","Country"].map(O=>f.jsx("div",{className:"skeleton-text-sm w-16"},O))}),[1,2,3].map(O=>f.jsxs("div",{className:"p-3 border-b border-zinc-800/40 flex gap-8 items-center",children:[f.jsxs("div",{className:"flex-1 space-y-1",children:[f.jsx("div",{className:"skeleton-text w-28"}),f.jsx("div",{className:"skeleton-text-sm w-16"})]}),f.jsx("div",{className:"skeleton-text w-24"}),f.jsx("div",{className:"skeleton h-5 w-14 rounded-full"}),f.jsx("div",{className:"skeleton h-5 w-16 rounded-full"}),f.jsx("div",{className:"skeleton-text-sm w-8"})]},O))]})]});const r=e.projects,l=fc(),[c,d]=U.useState(!1),[h,g]=U.useState(""),[v,S]=U.useState(""),[x,N]=U.useState(""),[_,T]=U.useState("US"),[k,E]=U.useState("en"),[R,I]=U.useState(!1),[G,Z]=U.useState(null),X=h.toLowerCase().replace(/[^a-z0-9-]/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,""),F=async()=>{if(!(!X||!x)){I(!0),Z(null);try{const O=await co(X,{displayName:v||h,canonicalDomain:x,country:_,language:k});tn({title:"Project created",detail:`${O.displayName||O.name} is ready to configure.`,tone:"positive",dedupeKey:`project:create:${O.name}`,dedupeMode:"drop"}),i(),g(""),S(""),N(""),T("US"),E("en"),d(!1),l({to:"/projects/$projectName",params:{projectName:O.name}})}catch(O){Z(O instanceof Error?O.message:"Failed to create project")}finally{I(!1)}}};return f.jsxs("div",{className:"page-container",children:[f.jsxs("div",{className:"page-header",children:[f.jsxs("div",{className:"page-header-left",children:[f.jsx("h1",{className:"page-title",children:"Projects"}),f.jsxs("p",{className:"page-subtitle",children:[r.length," project",r.length!==1?"s":""," tracked"]})]}),f.jsx("div",{className:"page-header-right",children:f.jsxs(qe,{type:"button",onClick:()=>d(O=>!O),children:[f.jsx(Fy,{className:"size-4 mr-1.5"}),"Add project"]})})]}),c?f.jsxs(kn,{className:"surface-card mb-6",children:[f.jsx("div",{className:"section-head",children:f.jsxs("div",{children:[f.jsx("p",{className:"eyebrow eyebrow-soft",children:"New project"}),f.jsx("h2",{className:"text-sm font-medium text-zinc-200",children:"Create a new monitoring project"})]})}),f.jsxs("div",{className:"compact-stack mt-4",children:[f.jsxs("div",{className:"setup-field-row",children:[f.jsxs("div",{className:"setup-field",children:[f.jsx("label",{className:"setup-label",htmlFor:"new-project-name",children:"Project name"}),f.jsx("input",{id:"new-project-name",className:"setup-input",type:"text",placeholder:"my-project",value:h,onChange:O=>g(O.target.value)}),X&&X!==h?f.jsxs("p",{className:"supporting-copy",children:["Slug: ",X]}):null]}),f.jsxs("div",{className:"setup-field",children:[f.jsx("label",{className:"setup-label",htmlFor:"new-display-name",children:"Display name"}),f.jsx("input",{id:"new-display-name",className:"setup-input",type:"text",placeholder:"My Project",value:v,onChange:O=>S(O.target.value)})]})]}),f.jsxs("div",{className:"setup-field",children:[f.jsx("label",{className:"setup-label",htmlFor:"new-domain",children:"Canonical domain"}),f.jsx("input",{id:"new-domain",className:"setup-input",type:"text",placeholder:"example.com",value:x,onChange:O=>N(O.target.value)})]}),f.jsxs("div",{className:"setup-field-row",children:[f.jsxs("div",{className:"setup-field",children:[f.jsx("label",{className:"setup-label",htmlFor:"new-country",children:"Country"}),f.jsx("input",{id:"new-country",className:"setup-input",type:"text",placeholder:"US",maxLength:2,value:_,onChange:O=>T(O.target.value.toUpperCase())})]}),f.jsxs("div",{className:"setup-field",children:[f.jsx("label",{className:"setup-label",htmlFor:"new-language",children:"Language"}),f.jsx("input",{id:"new-language",className:"setup-input",type:"text",placeholder:"en",maxLength:5,value:k,onChange:O=>E(O.target.value.toLowerCase())})]})]})]}),G?f.jsx("p",{className:"text-rose-400 text-sm mt-3",children:G}):null,f.jsxs("div",{className:"flex items-center gap-3 mt-4",children:[f.jsx(qe,{type:"button",disabled:!X||!x||R,onClick:Nn(F),children:R?"Creating...":"Create project"}),f.jsx(qe,{type:"button",variant:"ghost",onClick:()=>d(!1),children:"Cancel"})]})]}):null,r.length>0?f.jsx("div",{className:"data-table-wrapper",children:f.jsxs("table",{className:"data-table",children:[f.jsx("thead",{children:f.jsxs("tr",{children:[f.jsx("th",{children:"Name"}),f.jsx("th",{children:"Domain"}),f.jsx("th",{children:"Mentions"}),f.jsx("th",{children:"Last run"}),f.jsx("th",{className:"text-right",children:"Country"})]})}),f.jsx("tbody",{children:r.map(O=>{const M=O.recentRuns[0];return f.jsxs("tr",{className:"cursor-pointer",onClick:()=>{l({to:"/projects/$projectName",params:{projectName:O.project.name}})},children:[f.jsxs("td",{children:[f.jsx(st,{to:"/projects/$projectName",params:{projectName:O.project.name},className:"text-zinc-100 font-medium hover:underline",onClick:oe=>oe.stopPropagation(),children:O.project.displayName||O.project.name}),f.jsx("p",{className:"text-[11px] text-zinc-500",children:O.project.name})]}),f.jsx("td",{className:"text-zinc-400",children:O.project.canonicalDomain}),f.jsx("td",{children:f.jsx(Bn,{tone:O.mentionSummary.tone,children:O.mentionSummary.value})}),f.jsx("td",{className:"text-zinc-500 text-sm",children:M?f.jsx(Ap,{status:M.status}):f.jsx("span",{className:"text-zinc-600",children:"No runs"})}),f.jsx("td",{className:"text-right text-zinc-500",children:O.project.country})]},O.project.id)})})]})}):c?null:f.jsxs(kn,{className:"surface-card empty-card",children:[f.jsx("h3",{children:"No projects yet"}),f.jsx("p",{className:"supporting-copy",children:"Create your first monitoring project to start tracking AI visibility."}),f.jsxs(qe,{type:"button",onClick:()=>d(!0),children:[f.jsx(Fy,{className:"size-4 mr-1.5"}),"Add project"]})]}),f.jsx(xB,{onApplied:()=>{i()}})]})}function c1(e){e.invalidateQueries({queryKey:wp({client:ne})}),e.invalidateQueries({queryKey:Ei({client:ne})})}function jB(e){return e==="gsc-sync"?"GSC sync queued":e==="inspect-sitemap"?"Sitemap inspection queued":"Visibility sweep queued"}function NB(e,n){const i=e??"Project";return n==="gsc-sync"?`${i} will refresh after the sync completes.`:n==="inspect-sitemap"?`${i} will notify you when sitemap inspection finishes.`:`${i} will notify you when the run finishes.`}function Bc(e,n){J0({id:e.id,projectId:e.projectId,kind:e.kind,projectLabel:n.projectLabel,sourceAction:n.sourceAction,lastAnnouncedStatus:"queued"}),tn({title:jB(e.kind),detail:NB(n.projectLabel,e.kind),tone:"neutral",dedupeKey:`run:${e.id}`,dedupeMode:"replace"})}function kB(e){const n=e.filter(l=>l.status!=="conflict"),i=e.filter(l=>l.status==="conflict");if(n.length===0){tn({title:"No runs queued",detail:i.length>0?`${i.length} project${i.length===1?"":"s"} already had a run in progress.`:"No projects were available to queue.",tone:"caution",durationMs:8e3,dedupeKey:"run-all:conflict",dedupeMode:"replace"});return}for(const l of n)J0({id:l.id,projectId:l.projectId,kind:l.kind,projectLabel:l.projectName,sourceAction:"run-all",lastAnnouncedStatus:"queued"});const r=PD({runIds:n.map(l=>l.id),queuedCount:n.length,skippedCount:i.length});tn({title:"Run-all batch queued",detail:i.length>0?`${n.length} project${n.length===1?"":"s"} queued, ${i.length} skipped because a run is already active.`:`${n.length} project${n.length===1?"":"s"} queued.`,tone:i.length>0?"caution":"neutral",dedupeKey:`batch:${r}`,dedupeMode:"replace"})}function Lc(e,n){if(e instanceof Hn&&e.code==="RUN_IN_PROGRESS"){tn({title:"Run already in progress",detail:n?.projectLabel?`${n.projectLabel} already has an active run. Wait for it to finish, then retry.`:"This project already has an active run. Wait for it to finish, then retry.",tone:"caution",durationMs:8e3,dedupeKey:`run-in-progress:${n?.projectKey??"project"}:${n?.sourceAction??"run"}`,dedupeMode:"replace"});return}tn({title:e instanceof Error?e.message:"Failed to queue run",tone:"negative"})}function AB(){const e=Fa();return zi({meta:{skipGlobalErrorToast:!0},mutationFn:({projectName:n,opts:i})=>_k(n,i),onSuccess:(n,i)=>{c1(e),Bc(n,{projectLabel:i.projectLabel??i.projectName,sourceAction:i.sourceAction})},onError:(n,i)=>{Lc(n,{projectKey:i.projectName,projectLabel:i.projectLabel??i.projectName,sourceAction:i.sourceAction})}})}function O6(){const e=Fa();return zi({meta:{skipGlobalErrorToast:!0},mutationFn:n=>Dk(n),onSuccess:n=>{c1(e),kB(n)},onError:n=>{tn({title:n instanceof Error?n.message:"Failed to queue runs",tone:"negative"})}})}function D6(){const e=Fa();return zi({meta:{skipGlobalErrorToast:!0},mutationFn:({projectName:n,opts:i})=>Rk(n,i),onSuccess:(n,i)=>{ro(e,Ne["gsc-sync"],i.projectName),Bc(n,{projectLabel:i.projectLabel??i.projectName,sourceAction:"gsc-sync"})},onError:(n,i)=>{Lc(n,{projectKey:i.projectName,projectLabel:i.projectLabel??i.projectName,sourceAction:"gsc-sync"})}})}function R6(){const e=Fa();return zi({meta:{skipGlobalErrorToast:!0},mutationFn:({projectName:n})=>Lk(n),onSuccess:(n,i)=>{ro(e,n.run.kind,i.projectName),Bc(n.run,{projectLabel:i.projectLabel??i.projectName,sourceAction:"discover-sitemaps"})},onError:(n,i)=>{Lc(n,{projectKey:i.projectName,projectLabel:i.projectLabel??i.projectName,sourceAction:"discover-sitemaps"})}})}function M6(){const e=Fa();return zi({meta:{skipGlobalErrorToast:!0},mutationFn:({projectName:n,opts:i})=>Bk(n,i),onSuccess:(n,i)=>{ro(e,Ne["inspect-sitemap"],i.projectName),Bc(n,{projectLabel:i.projectLabel??i.projectName,sourceAction:"inspect-sitemap"})},onError:(n,i)=>{Lc(n,{projectKey:i.projectName,projectLabel:i.projectLabel??i.projectName,sourceAction:"inspect-sitemap"})}})}function u1(e){if(!Array.isArray(e.queryKey)||e.queryKey.length<=1)return!1;const n=e.queryKey[0];return n==="projects"||n==="project-dashboard-full"}function B6(){const e=Fa();return zi({mutationFn:({projectName:n,queries:i})=>Nk(n,i),onSuccess:()=>{e.invalidateQueries({queryKey:Ei({client:ne})}),e.invalidateQueries({predicate:u1})}})}function L6(){const e=Fa();return zi({mutationFn:({projectName:n,body:i})=>kk(n,i),onSuccess:()=>{e.invalidateQueries({predicate:n=>Array.isArray(n.queryKey)&&typeof n.queryKey[0]=="object"&&n.queryKey[0]!==null&&"_id"in n.queryKey[0]&&typeof n.queryKey[0]._id=="string"&&n.queryKey[0]._id.startsWith("getApiV1ProjectsByName")}),e.invalidateQueries({predicate:u1})}})}const _B=[{label:"System check",description:"Verify your instance is ready"},{label:"Create project",description:"Name, domain, and locale"},{label:"Queries",description:"Add queries to track"},{label:"Competitors",description:"Add competitor domains"},{label:"Launch",description:"Start your first visibility sweep"}];function CB({current:e,labels:n}){return f.jsx("div",{className:"setup-steps",role:"list","aria-label":"Setup progress",children:n.map((i,r)=>{const l=r<e,c=r===e;return f.jsxs("div",{className:`setup-step ${l?"setup-step-done":""} ${c?"setup-step-active":""}`,role:"listitem","aria-current":c?"step":void 0,children:[f.jsx("span",{className:"setup-step-number",children:l?"✓":r+1}),f.jsx("span",{className:"setup-step-label",children:i.label})]},i.label)})})}function zB(){const e=uo(),{dashboard:n,isLoading:i,refetch:r}=kc(),l=n??e?.dashboard;if(!l||i)return f.jsxs("div",{className:"page-skeleton",children:[f.jsxs("div",{className:"page-skeleton-header",children:[f.jsx("div",{className:"skeleton-text h-6 w-24"}),f.jsx("div",{className:"skeleton-text-sm w-80"})]}),f.jsxs("div",{className:"page-skeleton-card",children:[f.jsx("div",{className:"skeleton-text w-32"}),f.jsx("div",{className:"space-y-3 mt-3",children:[1,2,3].map(se=>f.jsxs("div",{className:"flex items-center justify-between",children:[f.jsxs("div",{className:"space-y-1 flex-1",children:[f.jsx("div",{className:"skeleton-text w-24"}),f.jsx("div",{className:"skeleton-text-sm w-48"})]}),f.jsx("div",{className:"skeleton h-6 w-16 rounded-full"})]},se))})]})]});const c=l.settings,g=Cp(!e,e?.health).data??e?.health??{apiStatus:{label:"API",state:"checking",detail:"Checking service health"},workerStatus:{label:"Worker",state:"checking",detail:"Checking service health"}},v=LD(l.setup,g,c),S=fc(),[x,N]=U.useState(0),[_,T]=U.useState(""),[k,E]=U.useState(""),[R,I]=U.useState(""),[G,Z]=U.useState("US"),[X,F]=U.useState("en"),[O,M]=U.useState(!1),[oe,ke]=U.useState(null),[Oe,be]=U.useState(null),[et,Ke]=U.useState(!1),[J,B]=U.useState(""),[W,fe]=U.useState(!1),[Se,re]=U.useState(null),[Ze,ee]=U.useState(!1),ue=c.providerStatuses.filter(se=>se.state==="ready"),[te,de]=U.useState(ue[0]?.name??""),[ie,je]=U.useState(5),[tt,xe]=U.useState(!1),[Ue,Ge]=U.useState(null),[Dt,Un]=U.useState(""),[Rt,Ws]=U.useState(!1),[Ri,go]=U.useState(null),[er,Mi]=U.useState(!1),[Bi,tr]=U.useState(!1),[yo,bo]=U.useState(!1),[Vt,qc]=U.useState(null),vo=AB(),So=fn({...K0({client:ne,path:{id:Vt??""}}),enabled:!!Vt,refetchInterval:({state:se})=>{const rt=se.data?.status;return rt==="completed"||rt==="partial"||rt==="failed"||rt==="cancelled"?!1:2e3},refetchIntervalInBackground:!0}),[va,xo]=U.useState(""),[Li,wo]=U.useState(!1),[jo,Sa]=U.useState(null),ht=_.toLowerCase().replace(/[^a-z0-9-]/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,""),Mt=J.split(`
202
+ queries: []`,value:n,onChange:S=>i(S.target.value)}),c.length>0&&f.jsx("ul",{className:"mt-2 space-y-1",children:c.map((S,x)=>f.jsx("li",{className:"text-emerald-400 text-sm",children:S},x))}),h.length>0&&f.jsx("ul",{className:"mt-2 space-y-1",children:h.map((S,x)=>f.jsx("li",{className:"text-rose-400 text-sm",children:S},x))}),f.jsx("div",{className:"mt-3",children:f.jsx(qe,{type:"button",disabled:!n.trim()||r,onClick:Nn(v),children:r?"Applying...":"Apply"})})]})}function wB(){const{dashboard:e,isLoading:n,refetch:i}=kc();if(!e||n)return f.jsxs("div",{className:"page-skeleton",children:[f.jsxs("div",{className:"page-skeleton-header",children:[f.jsx("div",{className:"skeleton-text h-6 w-28"}),f.jsx("div",{className:"skeleton-text-sm w-40"})]}),f.jsxs("div",{className:"rounded-xl border border-zinc-800/60 bg-zinc-900/30 overflow-hidden",children:[f.jsx("div",{className:"p-3 border-b border-zinc-800/60 flex gap-8",children:["Name","Domain","Mentions","Last run","Country"].map(O=>f.jsx("div",{className:"skeleton-text-sm w-16"},O))}),[1,2,3].map(O=>f.jsxs("div",{className:"p-3 border-b border-zinc-800/40 flex gap-8 items-center",children:[f.jsxs("div",{className:"flex-1 space-y-1",children:[f.jsx("div",{className:"skeleton-text w-28"}),f.jsx("div",{className:"skeleton-text-sm w-16"})]}),f.jsx("div",{className:"skeleton-text w-24"}),f.jsx("div",{className:"skeleton h-5 w-14 rounded-full"}),f.jsx("div",{className:"skeleton h-5 w-16 rounded-full"}),f.jsx("div",{className:"skeleton-text-sm w-8"})]},O))]})]});const r=e.projects,l=fc(),[c,d]=U.useState(!1),[h,g]=U.useState(""),[v,S]=U.useState(""),[x,N]=U.useState(""),[_,T]=U.useState("US"),[k,E]=U.useState("en"),[R,I]=U.useState(!1),[G,Z]=U.useState(null),X=h.toLowerCase().replace(/[^a-z0-9-]/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,""),F=async()=>{if(!(!X||!x)){I(!0),Z(null);try{const O=await co(X,{displayName:v||h,canonicalDomain:x,country:_,language:k});tn({title:"Project created",detail:`${O.displayName||O.name} is ready to configure.`,tone:"positive",dedupeKey:`project:create:${O.name}`,dedupeMode:"drop"}),i(),g(""),S(""),N(""),T("US"),E("en"),d(!1),l({to:"/projects/$projectName",params:{projectName:O.name}})}catch(O){Z(O instanceof Error?O.message:"Failed to create project")}finally{I(!1)}}};return f.jsxs("div",{className:"page-container",children:[f.jsxs("div",{className:"page-header",children:[f.jsxs("div",{className:"page-header-left",children:[f.jsx("h1",{className:"page-title",children:"Projects"}),f.jsxs("p",{className:"page-subtitle",children:[r.length," project",r.length!==1?"s":""," tracked"]})]}),f.jsx("div",{className:"page-header-right",children:f.jsxs(qe,{type:"button",onClick:()=>d(O=>!O),children:[f.jsx(Fy,{className:"size-4 mr-1.5"}),"Add project"]})})]}),c?f.jsxs(kn,{className:"surface-card mb-6",children:[f.jsx("div",{className:"section-head",children:f.jsxs("div",{children:[f.jsx("p",{className:"eyebrow eyebrow-soft",children:"New project"}),f.jsx("h2",{className:"text-sm font-medium text-zinc-200",children:"Create a new monitoring project"})]})}),f.jsxs("div",{className:"compact-stack mt-4",children:[f.jsxs("div",{className:"setup-field-row",children:[f.jsxs("div",{className:"setup-field",children:[f.jsx("label",{className:"setup-label",htmlFor:"new-project-name",children:"Project name"}),f.jsx("input",{id:"new-project-name",className:"setup-input",type:"text",placeholder:"my-project",value:h,onChange:O=>g(O.target.value)}),X&&X!==h?f.jsxs("p",{className:"supporting-copy",children:["Slug: ",X]}):null]}),f.jsxs("div",{className:"setup-field",children:[f.jsx("label",{className:"setup-label",htmlFor:"new-display-name",children:"Display name"}),f.jsx("input",{id:"new-display-name",className:"setup-input",type:"text",placeholder:"My Project",value:v,onChange:O=>S(O.target.value)})]})]}),f.jsxs("div",{className:"setup-field",children:[f.jsx("label",{className:"setup-label",htmlFor:"new-domain",children:"Canonical domain"}),f.jsx("input",{id:"new-domain",className:"setup-input",type:"text",placeholder:"example.com",value:x,onChange:O=>N(O.target.value)})]}),f.jsxs("div",{className:"setup-field-row",children:[f.jsxs("div",{className:"setup-field",children:[f.jsx("label",{className:"setup-label",htmlFor:"new-country",children:"Country"}),f.jsx("input",{id:"new-country",className:"setup-input",type:"text",placeholder:"US",maxLength:2,value:_,onChange:O=>T(O.target.value.toUpperCase())})]}),f.jsxs("div",{className:"setup-field",children:[f.jsx("label",{className:"setup-label",htmlFor:"new-language",children:"Language"}),f.jsx("input",{id:"new-language",className:"setup-input",type:"text",placeholder:"en",maxLength:5,value:k,onChange:O=>E(O.target.value.toLowerCase())})]})]})]}),G?f.jsx("p",{className:"text-rose-400 text-sm mt-3",children:G}):null,f.jsxs("div",{className:"flex items-center gap-3 mt-4",children:[f.jsx(qe,{type:"button",disabled:!X||!x||R,onClick:Nn(F),children:R?"Creating...":"Create project"}),f.jsx(qe,{type:"button",variant:"ghost",onClick:()=>d(!1),children:"Cancel"})]})]}):null,r.length>0?f.jsx("div",{className:"data-table-wrapper",children:f.jsxs("table",{className:"data-table",children:[f.jsx("thead",{children:f.jsxs("tr",{children:[f.jsx("th",{children:"Name"}),f.jsx("th",{children:"Domain"}),f.jsx("th",{children:"Mentions"}),f.jsx("th",{children:"Last run"}),f.jsx("th",{className:"text-right",children:"Country"})]})}),f.jsx("tbody",{children:r.map(O=>{const M=O.recentRuns[0];return f.jsxs("tr",{className:"cursor-pointer",onClick:()=>{l({to:"/projects/$projectName",params:{projectName:O.project.name}})},children:[f.jsxs("td",{children:[f.jsx(st,{to:"/projects/$projectName",params:{projectName:O.project.name},className:"text-zinc-100 font-medium hover:underline",onClick:oe=>oe.stopPropagation(),children:O.project.displayName||O.project.name}),f.jsx("p",{className:"text-[11px] text-zinc-500",children:O.project.name})]}),f.jsx("td",{className:"text-zinc-400",children:O.project.canonicalDomain}),f.jsx("td",{children:f.jsx(Bn,{tone:O.mentionSummary.tone,children:O.mentionSummary.value})}),f.jsx("td",{className:"text-zinc-500 text-sm",children:M?f.jsx(Ap,{status:M.status}):f.jsx("span",{className:"text-zinc-600",children:"No runs"})}),f.jsx("td",{className:"text-right text-zinc-500",children:O.project.country})]},O.project.id)})})]})}):c?null:f.jsxs(kn,{className:"surface-card empty-card",children:[f.jsx("h3",{children:"No projects yet"}),f.jsx("p",{className:"supporting-copy",children:"Create your first monitoring project to start tracking AI visibility."}),f.jsxs(qe,{type:"button",onClick:()=>d(!0),children:[f.jsx(Fy,{className:"size-4 mr-1.5"}),"Add project"]})]}),f.jsx(xB,{onApplied:()=>{i()}})]})}function c1(e){e.invalidateQueries({queryKey:wp({client:ne})}),e.invalidateQueries({queryKey:Ei({client:ne})})}function jB(e){return e==="gsc-sync"?"GSC sync queued":e==="inspect-sitemap"?"Sitemap inspection queued":"Visibility sweep queued"}function NB(e,n){const i=e??"Project";return n==="gsc-sync"?`${i} will refresh after the sync completes.`:n==="inspect-sitemap"?`${i} will notify you when sitemap inspection finishes.`:`${i} will notify you when the run finishes.`}function Bc(e,n){J0({id:e.id,projectId:e.projectId,kind:e.kind,projectLabel:n.projectLabel,sourceAction:n.sourceAction,lastAnnouncedStatus:"queued"}),tn({title:jB(e.kind),detail:NB(n.projectLabel,e.kind),tone:"neutral",dedupeKey:`run:${e.id}`,dedupeMode:"replace"})}function kB(e){const n=e.filter(l=>l.status!=="conflict"),i=e.filter(l=>l.status==="conflict");if(n.length===0){tn({title:"No runs queued",detail:i.length>0?`${i.length} project${i.length===1?"":"s"} already had a run in progress.`:"No projects were available to queue.",tone:"caution",durationMs:8e3,dedupeKey:"run-all:conflict",dedupeMode:"replace"});return}for(const l of n)J0({id:l.id,projectId:l.projectId,kind:l.kind,projectLabel:l.projectName,sourceAction:"run-all",lastAnnouncedStatus:"queued"});const r=P4({runIds:n.map(l=>l.id),queuedCount:n.length,skippedCount:i.length});tn({title:"Run-all batch queued",detail:i.length>0?`${n.length} project${n.length===1?"":"s"} queued, ${i.length} skipped because a run is already active.`:`${n.length} project${n.length===1?"":"s"} queued.`,tone:i.length>0?"caution":"neutral",dedupeKey:`batch:${r}`,dedupeMode:"replace"})}function Lc(e,n){if(e instanceof Hn&&e.code==="RUN_IN_PROGRESS"){tn({title:"Run already in progress",detail:n?.projectLabel?`${n.projectLabel} already has an active run. Wait for it to finish, then retry.`:"This project already has an active run. Wait for it to finish, then retry.",tone:"caution",durationMs:8e3,dedupeKey:`run-in-progress:${n?.projectKey??"project"}:${n?.sourceAction??"run"}`,dedupeMode:"replace"});return}tn({title:e instanceof Error?e.message:"Failed to queue run",tone:"negative"})}function AB(){const e=Fa();return zi({meta:{skipGlobalErrorToast:!0},mutationFn:({projectName:n,opts:i})=>_k(n,i),onSuccess:(n,i)=>{c1(e),Bc(n,{projectLabel:i.projectLabel??i.projectName,sourceAction:i.sourceAction})},onError:(n,i)=>{Lc(n,{projectKey:i.projectName,projectLabel:i.projectLabel??i.projectName,sourceAction:i.sourceAction})}})}function O6(){const e=Fa();return zi({meta:{skipGlobalErrorToast:!0},mutationFn:n=>Dk(n),onSuccess:n=>{c1(e),kB(n)},onError:n=>{tn({title:n instanceof Error?n.message:"Failed to queue runs",tone:"negative"})}})}function D6(){const e=Fa();return zi({meta:{skipGlobalErrorToast:!0},mutationFn:({projectName:n,opts:i})=>Rk(n,i),onSuccess:(n,i)=>{ro(e,Ne["gsc-sync"],i.projectName),Bc(n,{projectLabel:i.projectLabel??i.projectName,sourceAction:"gsc-sync"})},onError:(n,i)=>{Lc(n,{projectKey:i.projectName,projectLabel:i.projectLabel??i.projectName,sourceAction:"gsc-sync"})}})}function R6(){const e=Fa();return zi({meta:{skipGlobalErrorToast:!0},mutationFn:({projectName:n})=>Lk(n),onSuccess:(n,i)=>{ro(e,n.run.kind,i.projectName),Bc(n.run,{projectLabel:i.projectLabel??i.projectName,sourceAction:"discover-sitemaps"})},onError:(n,i)=>{Lc(n,{projectKey:i.projectName,projectLabel:i.projectLabel??i.projectName,sourceAction:"discover-sitemaps"})}})}function M6(){const e=Fa();return zi({meta:{skipGlobalErrorToast:!0},mutationFn:({projectName:n,opts:i})=>Bk(n,i),onSuccess:(n,i)=>{ro(e,Ne["inspect-sitemap"],i.projectName),Bc(n,{projectLabel:i.projectLabel??i.projectName,sourceAction:"inspect-sitemap"})},onError:(n,i)=>{Lc(n,{projectKey:i.projectName,projectLabel:i.projectLabel??i.projectName,sourceAction:"inspect-sitemap"})}})}function u1(e){if(!Array.isArray(e.queryKey)||e.queryKey.length<=1)return!1;const n=e.queryKey[0];return n==="projects"||n==="project-dashboard-full"}function B6(){const e=Fa();return zi({mutationFn:({projectName:n,queries:i})=>Nk(n,i),onSuccess:()=>{e.invalidateQueries({queryKey:Ei({client:ne})}),e.invalidateQueries({predicate:u1})}})}function L6(){const e=Fa();return zi({mutationFn:({projectName:n,body:i})=>kk(n,i),onSuccess:()=>{e.invalidateQueries({predicate:n=>Array.isArray(n.queryKey)&&typeof n.queryKey[0]=="object"&&n.queryKey[0]!==null&&"_id"in n.queryKey[0]&&typeof n.queryKey[0]._id=="string"&&n.queryKey[0]._id.startsWith("getApiV1ProjectsByName")}),e.invalidateQueries({predicate:u1})}})}const _B=[{label:"System check",description:"Verify your instance is ready"},{label:"Create project",description:"Name, domain, and locale"},{label:"Queries",description:"Add queries to track"},{label:"Competitors",description:"Add competitor domains"},{label:"Launch",description:"Start your first visibility sweep"}];function CB({current:e,labels:n}){return f.jsx("div",{className:"setup-steps",role:"list","aria-label":"Setup progress",children:n.map((i,r)=>{const l=r<e,c=r===e;return f.jsxs("div",{className:`setup-step ${l?"setup-step-done":""} ${c?"setup-step-active":""}`,role:"listitem","aria-current":c?"step":void 0,children:[f.jsx("span",{className:"setup-step-number",children:l?"✓":r+1}),f.jsx("span",{className:"setup-step-label",children:i.label})]},i.label)})})}function zB(){const e=uo(),{dashboard:n,isLoading:i,refetch:r}=kc(),l=n??e?.dashboard;if(!l||i)return f.jsxs("div",{className:"page-skeleton",children:[f.jsxs("div",{className:"page-skeleton-header",children:[f.jsx("div",{className:"skeleton-text h-6 w-24"}),f.jsx("div",{className:"skeleton-text-sm w-80"})]}),f.jsxs("div",{className:"page-skeleton-card",children:[f.jsx("div",{className:"skeleton-text w-32"}),f.jsx("div",{className:"space-y-3 mt-3",children:[1,2,3].map(se=>f.jsxs("div",{className:"flex items-center justify-between",children:[f.jsxs("div",{className:"space-y-1 flex-1",children:[f.jsx("div",{className:"skeleton-text w-24"}),f.jsx("div",{className:"skeleton-text-sm w-48"})]}),f.jsx("div",{className:"skeleton h-6 w-16 rounded-full"})]},se))})]})]});const c=l.settings,g=Cp(!e,e?.health).data??e?.health??{apiStatus:{label:"API",state:"checking",detail:"Checking service health"},workerStatus:{label:"Worker",state:"checking",detail:"Checking service health"}},v=L4(l.setup,g,c),S=fc(),[x,N]=U.useState(0),[_,T]=U.useState(""),[k,E]=U.useState(""),[R,I]=U.useState(""),[G,Z]=U.useState("US"),[X,F]=U.useState("en"),[O,M]=U.useState(!1),[oe,ke]=U.useState(null),[Oe,be]=U.useState(null),[et,Ke]=U.useState(!1),[J,B]=U.useState(""),[W,fe]=U.useState(!1),[Se,re]=U.useState(null),[Ze,ee]=U.useState(!1),ue=c.providerStatuses.filter(se=>se.state==="ready"),[te,de]=U.useState(ue[0]?.name??""),[ie,je]=U.useState(5),[tt,xe]=U.useState(!1),[Ue,Ge]=U.useState(null),[Dt,Un]=U.useState(""),[Rt,Ws]=U.useState(!1),[Ri,go]=U.useState(null),[er,Mi]=U.useState(!1),[Bi,tr]=U.useState(!1),[yo,bo]=U.useState(!1),[Vt,qc]=U.useState(null),vo=AB(),So=fn({...K0({client:ne,path:{id:Vt??""}}),enabled:!!Vt,refetchInterval:({state:se})=>{const rt=se.data?.status;return rt==="completed"||rt==="partial"||rt==="failed"||rt==="cancelled"?!1:2e3},refetchIntervalInBackground:!0}),[va,xo]=U.useState(""),[Li,wo]=U.useState(!1),[jo,Sa]=U.useState(null),ht=_.toLowerCase().replace(/[^a-z0-9-]/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,""),Mt=J.split(`
203
203
  `).map(se=>se.trim()).filter(Boolean),_t=Dt.split(`
204
204
  `).map(se=>se.trim()).filter(Boolean),Uc=v.healthChecks.some(se=>se.id==="api"&&se.state==="ready"),$c=async()=>{if(!(!ht||!R)){Ke(!0),be(null);try{const se=await co(ht,{displayName:k||_,canonicalDomain:R,country:G,language:X,autoExtractBacklinks:O});ke(ht),tn({title:"Project created",detail:`${se.displayName||se.name} is ready for setup.`,tone:"positive",dedupeKey:`project:create:${se.name}`,dedupeMode:"drop"}),await r(),N(2)}catch(se){be(se instanceof Error?se.message:"Failed to create project")}finally{Ke(!1)}}},Vc=async()=>{if(!oe)return;const se=Mt;if(se.length!==0){ee(!0),re(null);try{await jk(oe,se),fe(!0),await r(),N(3)}catch(rt){re(rt instanceof Error?rt.message:"Failed to save queries")}finally{ee(!1)}}},qi=async()=>{if(!(!oe||!te)){xe(!0),Ge(null);try{const se=await Ek(oe,te,ie);if(se.queries.length>0){const rt=J?J.trimEnd()+`
205
205
  `+se.queries.join(`
@@ -207,4 +207,4 @@ spec:
207
207
  `);B(rt)}}catch(se){Ge(se instanceof Error?se.message:"Failed to generate queries")}finally{xe(!1)}}},Ui=async()=>{if(!oe)return;const se=_t;if(se.length!==0){Mi(!0),go(null);try{await Ak(oe,se),Ws(!0),await r(),N(4)}catch(rt){go(rt instanceof Error?rt.message:"Failed to save competitors")}finally{Mi(!1)}}},$i=async()=>{const se=va.trim();if(se){wo(!0),Sa(null);try{await Tk("gemini",{apiKey:se}),tn({title:"Gemini configured",detail:"Provider is ready — continuing setup.",tone:"positive",dedupeKey:"setup:gemini:configured",dedupeMode:"drop"}),xo(""),await r()}catch(rt){Sa(rt instanceof Error?rt.message:"Failed to save Gemini key")}finally{wo(!1)}}},Zn=async()=>{if(oe){bo(!0);try{const se=await vo.mutateAsync({projectName:oe,projectLabel:k||_||oe,sourceAction:"setup-launch"});qc(se.id),tr(!0),await r()}catch{}finally{bo(!1)}}},pn=()=>N(se=>Math.max(0,se-1)),ni=(()=>{switch(x){case 0:return f.jsxs(kn,{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:v.healthChecks.map(se=>f.jsxs("div",{className:"health-check-row",children:[f.jsxs("div",{children:[f.jsx("p",{className:"run-row-title",children:se.label}),f.jsx("p",{className:"supporting-copy",children:se.detail}),se.id==="provider"&&se.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:va,onChange:rt=>xo(rt.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:Li}),f.jsx(qe,{type:"button",size:"sm",disabled:Li||!va.trim(),onClick:Nn($i),children:Li?"Saving...":"Save"})]}),jo&&f.jsx("p",{className:"text-xs text-rose-400",children:jo}),f.jsxs("p",{className:"text-[11px] text-zinc-600",children:["Other providers (OpenAI, Claude, Perplexity) configurable later via"," ",f.jsx(st,{to:"/settings",className:"text-zinc-500 hover:text-zinc-300 underline underline-offset-2",children:"/settings"}),"."]})]})]}),f.jsx(Bn,{tone:se.state==="ready"?"positive":"caution",title:se.id==="api"?Us(g.apiStatus):se.id==="worker"?Us(g.workerStatus):se.detail,children:se.state==="ready"?"Ready":"Attention"})]},se.id))}),f.jsxs("div",{className:"setup-nav",children:[f.jsx("span",{}),f.jsx(qe,{type:"button",disabled:!Uc,onClick:()=>N(1),children:"Continue"})]})]});case 1:return f.jsxs(kn,{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"})]}),oe?f.jsx(Bn,{tone:"positive",children:"Created"}):null]}),oe?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:oe})," created successfully."]}),f.jsxs("div",{className:"setup-nav",children:[f.jsx(qe,{type:"button",variant:"outline",onClick:pn,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:se=>T(se.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:se=>E(se.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:se=>I(se.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:se=>Z(se.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:se=>F(se.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:se=>M(se.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(st,{to:"/backlinks",className:"text-emerald-400 hover:text-emerald-300 underline underline-offset-2",children:"Manage backlinks"})]})]})]}),Oe?f.jsx("p",{className:"text-rose-400 text-sm",children:Oe}):null,f.jsxs("div",{className:"setup-nav",children:[f.jsx(qe,{type:"button",variant:"outline",onClick:pn,children:"Back"}),f.jsx(qe,{type:"button",disabled:!ht||!R||et,onClick:Nn($c),children:et?"Creating...":"Create project"})]})]})]});case 2:return f.jsxs(kn,{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"})]}),W?f.jsxs(Bn,{tone:"positive",children:[Mt.length," saved"]}):f.jsxs(Bn,{tone:"neutral",children:[Mt.length," quer",Mt.length!==1?"ies":"y"]})]}),f.jsx("p",{className:"supporting-copy",children:"Enter the search queries you want to track. One per line."}),W?f.jsxs("div",{className:"compact-stack",children:[f.jsx("ul",{className:"detail-list",children:Mt.map(se=>f.jsx("li",{children:se},se))}),f.jsxs("div",{className:"setup-nav",children:[f.jsx(qe,{type:"button",variant:"outline",onClick:pn,children:"Back"}),f.jsx(qe,{type:"button",onClick:()=>N(3),children:"Continue"})]})]}):f.jsxs("div",{className:"compact-stack",children:[ue.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:te,onChange:se=>de(se.target.value),children:ue.map(se=>f.jsxs("option",{value:se.name,children:[se.displayName??se.name,se.model?` (${se.model})`:""]},se.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:ie,onChange:se=>je(Number(se.target.value)),children:[3,5,10,15,20].map(se=>f.jsx("option",{value:se,children:se},se))})]}),f.jsx(qe,{type:"button",variant:"outline",disabled:tt||!te,onClick:Nn(qi),children:tt?"Analyzing site...":"Generate"})]}),Ue?f.jsx("p",{className:"text-rose-400 text-sm",children:Ue}):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:se=>B(se.target.value)})]}),Se?f.jsx("p",{className:"text-rose-400 text-sm",children:Se}):null,f.jsxs("div",{className:"setup-nav",children:[f.jsx(qe,{type:"button",variant:"outline",onClick:pn,children:"Back"}),f.jsx(qe,{type:"button",disabled:Mt.length===0||Ze,onClick:Nn(Vc),children:Ze?"Saving...":`Save ${Mt.length} quer${Mt.length!==1?"ies":"y"}`})]})]})]});case 3:return f.jsxs(kn,{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"})]}),Rt?f.jsx(Bn,{tone:"positive",children:"Saved"}):null]}),f.jsx("p",{className:"supporting-copy",children:"Domains that compete for the same queries. One per line."}),Rt?f.jsxs("div",{className:"compact-stack",children:[f.jsx("ul",{className:"detail-list",children:_t.map(se=>f.jsx("li",{children:se},se))}),f.jsxs("div",{className:"setup-nav",children:[f.jsx(qe,{type:"button",variant:"outline",onClick:pn,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:Dt,onChange:se=>Un(se.target.value)})]}),Ri?f.jsx("p",{className:"text-rose-400 text-sm",children:Ri}):null,f.jsxs("div",{className:"setup-nav",children:[f.jsx(qe,{type:"button",variant:"outline",onClick:pn,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:_t.length===0||er,onClick:Nn(Ui),children:er?"Saving...":`Save ${_t.length} competitor${_t.length!==1?"s":""}`})]})]})]})]});case 4:{const se=So.data,rt=se?.status==="completed"||se?.status==="partial"||se?.status==="failed"||se?.status==="cancelled",Yn=se?.snapshots??[],ai=Yn.filter($n=>$n.citationState==="cited").length,Ic=Yn.filter($n=>$n.answerMentioned===!0).length,nr=new Set(Yn.map($n=>$n.query).filter($n=>!!$n)).size,No=Bi?rt&&(se?.status==="completed"||se?.status==="partial")?f.jsx(Bn,{tone:"positive",children:"Complete"}):rt?f.jsx(Bn,{tone:"negative",children:"Failed"}):f.jsx(Bn,{tone:"caution",children:"Running"}):null;return f.jsxs(kn,{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"})]}),No]}),Bi?rt?se?.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:oe?`/projects/${encodeURIComponent(oe)}`:"/"})},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:oe}),":"]}),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:[Ic,f.jsxs("span",{className:"text-zinc-600 text-lg",children:[" / ",nr]})]}),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:[ai,f.jsxs("span",{className:"text-zinc-600 text-lg",children:[" / ",nr]})]}),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:Yn.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:oe?`/projects/${encodeURIComponent(oe)}`:"/"})},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:se?.status??"queued"})]})}),f.jsxs("div",{className:"setup-nav",children:[f.jsx("span",{}),f.jsx(qe,{type:"button",variant:"outline",onClick:()=>{S({to:oe?`/projects/${encodeURIComponent(oe)}`:"/"})},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:oe}),"."]}),f.jsxs("div",{className:"setup-nav",children:[f.jsx(qe,{type:"button",variant:"outline",onClick:pn,children:"Back"}),f.jsx(qe,{type:"button",disabled:yo,onClick:Nn(Zn),children:yo?"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(CB,{current:x,labels:_B}),f.jsx("section",{className:"setup-wizard",children:ni})]})}function TB(){return f.jsx("div",{className:"page-container",children:f.jsx("section",{className:"page-section",children:f.jsxs(kn,{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(st,{to:"/",children:"Return to overview"})})]})})})}const ba=Is(()=>Ps(()=>import("./ProjectPage-BdoberYt.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8]),import.meta.url),"ProjectPage"),EB=Is(()=>Ps(()=>import("./RunsPage-BAgZuX7j.js"),__vite__mapDeps([9,1,2,7,5,8]),import.meta.url),"RunsPage"),OB=Is(()=>Ps(()=>import("./SettingsPage-BvKcpivM.js"),__vite__mapDeps([10,1,7,5,8]),import.meta.url),"SettingsPage"),DB=Is(()=>Ps(()=>import("./BacklinksPage-BI9BtHjp.js"),__vite__mapDeps([11,1,6,7,5,8]),import.meta.url),"BacklinksPage"),RB=Is(()=>Ps(()=>import("./TrafficPage-BdGOZv1e.js"),__vite__mapDeps([12,1,4,13,7,5,8]),import.meta.url),"TrafficPage"),MB=Is(()=>Ps(()=>import("./TrafficSourceDetailPage-C_N2D9xy.js"),__vite__mapDeps([14,1,4,3,5,13,7,8]),import.meta.url),"TrafficSourceDetailPage");function BB(){return f.jsx(oM,{children:f.jsx(rM,{})})}const nn=Ew()({component:BB,validateSearch:e=>({runId:typeof e.runId=="string"?e.runId:void 0,evidenceId:typeof e.evidenceId=="string"?e.evidenceId:void 0})}),LB=Tt({getParentRoute:()=>nn,path:"/",component:uM,beforeLoad:({context:e})=>{const n=e.queryClient.getQueryData(Ei({client:ne}));if(n&&n.length===0)throw Gf({to:"/setup"})}}),qB=Tt({getParentRoute:()=>nn,path:"/projects",component:wB}),UB=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,Kn=Tt({getParentRoute:()=>nn,path:"/projects/$projectName",component:()=>f.jsx(Sf,{}),beforeLoad:async({context:e,params:n,location:i})=>{const r=n.projectName;if(!UB.test(r))return;let l=e.queryClient.getQueryData(Ei({client:ne}));if(!l)try{l=await e.queryClient.ensureQueryData(xc({client:ne}))}catch{return}const c=l.find(d=>d.id===r);if(c)throw Gf({to:i.pathname.replace(`/projects/${r}`,`/projects/${encodeURIComponent(c.name)}`),replace:!0})}}),$B=Tt({getParentRoute:()=>Kn,path:"/",component:()=>f.jsx(ba,{tab:"overview"})}),VB=Tt({getParentRoute:()=>Kn,path:"/search-console",component:()=>f.jsx(ba,{tab:"search-console"})}),IB=Tt({getParentRoute:()=>Kn,path:"/local",component:()=>f.jsx(ba,{tab:"local"})}),PB=Tt({getParentRoute:()=>Kn,path:"/discovery",component:()=>f.jsx(ba,{tab:"discovery"})}),GB=Tt({getParentRoute:()=>Kn,path:"/report",component:()=>f.jsx(ba,{tab:"report"})}),HB=Tt({getParentRoute:()=>Kn,path:"/activity",component:()=>f.jsx(ba,{tab:"activity"})}),QB=Tt({getParentRoute:()=>Kn,path:"/backlinks",component:()=>f.jsx(ba,{tab:"backlinks"})}),KB=Tt({getParentRoute:()=>Kn,path:"/technical-aeo",component:()=>f.jsx(ba,{tab:"technical-aeo"})}),ZB=Tt({getParentRoute:()=>Kn,path:"/settings",component:()=>f.jsx(ba,{tab:"settings"})}),YB=Tt({getParentRoute:()=>nn,path:"/runs",component:EB}),XB=Tt({getParentRoute:()=>nn,path:"/settings",component:OB,beforeLoad:({context:e})=>{}}),JB=Tt({getParentRoute:()=>nn,path:"/setup",component:zB,beforeLoad:({context:e})=>{const n=e.queryClient.getQueryData(Ei({client:ne}));if(n&&n.length>0)throw Gf({to:"/"})}}),FB=Tt({getParentRoute:()=>nn,path:"/backlinks",component:DB}),WB=Tt({getParentRoute:()=>nn,path:"/traffic",component:RB}),e5=Tt({getParentRoute:()=>nn,path:"/traffic/$projectName/$sourceId",component:MB}),t5=Tt({getParentRoute:()=>nn,path:"*",component:TB}),n5=nn.addChildren([LB,qB,Kn.addChildren([$B,VB,IB,PB,GB,HB,QB,KB,ZB]),YB,XB,JB,FB,WB,e5,t5]);function a5(){return typeof window<"u"&&window.__CANONRY_CONFIG__?.basePath?window.__CANONRY_CONFIG__.basePath:"/"}const dv=a5(),i5=dv==="/"?"":dv.replace(/\/$/,"");function s5(e,n){return Ow({routeTree:n5,basepath:i5||"/",context:{queryClient:e},...n?.initialEntries})}const r5=6e4;function o5(){const[e,n]=U.useState(sf()?"ready":"checking"),[i,r]=U.useState(""),[l,c]=U.useState(""),[d,h]=U.useState(null),[g,v]=U.useState(!1),[S,x]=U.useState(!1),N=U.useRef(null),_=U.useRef(null),T=()=>{if(!N.current){const R=Fk();_.current=R,N.current=s5(R)}return{queryClient:_.current,router:N.current}};U.useEffect(()=>{if(sf())return;let R=!1;return Ky().then(I=>{R||(I.authenticated?n("ready"):n(I.setupRequired?"setup":"login"))}).catch(I=>{R||(h(I instanceof Error?I.message:"Failed to reach the Canonry API"),n("login"))}),()=>{R=!0}},[]),U.useEffect(()=>{if(e!=="ready"||sf())return;const R=setInterval(()=>{Ky().then(I=>{I.authenticated||(x(!0),n(I.setupRequired?"setup":"login"))}).catch(()=>{})},r5);return Qy(()=>{x(!0),n("login")}),()=>{clearInterval(R),Qy(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}v(!0),h(null);try{if(!(await Ck(i.trim())).authenticated){h("Setup failed");return}r(""),c(""),x(!1),n("ready")}catch(I){h(I instanceof Hn||I instanceof Error?I.message:"Setup failed")}finally{v(!1)}},E=async R=>{if(R.preventDefault(),!!i.trim()){v(!0),h(null);try{if(!(await zk(i.trim())).authenticated){h("Incorrect password");return}r(""),x(!1),n("ready")}catch(I){h(I instanceof Hn||I instanceof Error?I.message:"Authentication failed")}finally{v(!1)}}};if(e==="ready"){const{queryClient:R,router:I}=T();return f.jsx(Dw,{client:R,children:f.jsx(Rw,{router:I})})}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(kn,{className:"surface-card w-full",children:e==="checking"?f.jsx(Yl,{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(Mf,{children:[f.jsx("p",{className:"eyebrow eyebrow-soft",children:"First-time setup"}),f.jsx(Bf,{children:"Create a dashboard password"}),f.jsx(Lf,{children:"Choose a password to protect the Canonry dashboard. You will use this to sign in on future visits."})]}),f.jsx(Yl,{children:f.jsxs("form",{className:"space-y-4",onSubmit:Nn(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(Mf,{children:[f.jsx("p",{className:"eyebrow eyebrow-soft",children:"Dashboard access"}),f.jsx(Bf,{children:"Sign in to Canonry"}),f.jsx(Lf,{children:"Enter your dashboard password to continue."})]}),f.jsxs(Yl,{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:Nn(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.");Vw.createRoot(d1).render(f.jsx(U.StrictMode,{children:f.jsx(o5,{})}));export{r6 as $,UL as A,qe as B,sc as C,j5 as D,GL as E,QL as F,wL as G,KL as H,Xr as I,D5 as J,O5 as K,M5 as L,tn as M,G5 as N,XL as O,V3 as P,JL as Q,L5 as R,L4 as S,Bn as T,ZL as U,YL as V,HL as W,R5 as X,q5 as Y,FL as Z,WL as _,z6 as a,k5 as a$,n6 as a0,i6 as a1,a6 as a2,s6 as a3,$k as a4,J0 as a5,Ne as a6,t6 as a7,ID as a8,_i as a9,$5 as aA,Ei as aB,V5 as aC,wp as aD,A6 as aE,C6 as aF,_6 as aG,U5 as aH,mA as aI,Bv as aJ,zD as aK,ED as aL,TD as aM,_L as aN,y6 as aO,AL as aP,F5 as aQ,L6 as aR,TL as aS,CL as aT,EL as aU,OL as aV,kL as aW,zL as aX,S5 as aY,v5 as aZ,b5 as a_,e6 as aa,fE as ab,pE as ac,NL as ad,jL as ae,bL as af,cL as ag,hL as ah,gL as ai,Hn as aj,yL as ak,f5 as al,zA as am,LL as an,_A as ao,LA as ap,HD as aq,Wl as ar,SL as as,vL as at,kf as au,b6 as av,B5 as aw,j6 as ax,N6 as ay,k6 as az,Ff as b,gS as b$,IL as b0,Tb as b1,VL as b2,A5 as b3,_5 as b4,$L as b5,C5 as b6,z5 as b7,E5 as b8,T5 as b9,l6 as bA,BL as bB,H5 as bC,Q5 as bD,K5 as bE,X5 as bF,kc as bG,O6 as bH,Ap as bI,Tk as bJ,N5 as bK,I5 as bL,P5 as bM,Cp as bN,J5 as bO,Us as bP,Eb as bQ,oL as bR,uL as bS,fL as bT,pL as bU,lL as bV,dL as bW,mL as bX,I3 as bY,hS as bZ,K3 as b_,uo as ba,xc as bb,CR as bc,AB as bd,Qt as be,wk as bf,x5 as bg,h5 as bh,g5 as bi,w5 as bj,E6 as bk,xk as bl,Ak as bm,m5 as bn,p5 as bo,Nk as bp,y5 as bq,B6 as br,Y4 as bs,o6 as bt,c6 as bu,Rk as bv,u6 as bw,Y5 as bx,Z5 as by,d6 as bz,We as c,yS as c0,jA as c1,rL as c2,Fy as c3,x6 as c4,DL as c5,RL as c6,xp as c7,PL as c8,Gs as c9,v6 as ca,w6 as cb,sL as cc,aL as cd,iL as ce,nL as cf,S6 as cg,$T as d,T6 as e,qL as f,kn as g,Ib as h,Nn as i,xL as j,f6 as k,ne as l,p6 as m,m6 as n,g6 as o,h6 as p,W5 as q,tL as r,eL as s,U4 as t,zp as u,D6 as v,R6 as w,M6 as x,Rf as y,ML as z};
210
+ competitor2.com`,value:Dt,onChange:se=>Un(se.target.value)})]}),Ri?f.jsx("p",{className:"text-rose-400 text-sm",children:Ri}):null,f.jsxs("div",{className:"setup-nav",children:[f.jsx(qe,{type:"button",variant:"outline",onClick:pn,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:_t.length===0||er,onClick:Nn(Ui),children:er?"Saving...":`Save ${_t.length} competitor${_t.length!==1?"s":""}`})]})]})]})]});case 4:{const se=So.data,rt=se?.status==="completed"||se?.status==="partial"||se?.status==="failed"||se?.status==="cancelled",Yn=se?.snapshots??[],ai=Yn.filter($n=>$n.citationState==="cited").length,Ic=Yn.filter($n=>$n.answerMentioned===!0).length,nr=new Set(Yn.map($n=>$n.query).filter($n=>!!$n)).size,No=Bi?rt&&(se?.status==="completed"||se?.status==="partial")?f.jsx(Bn,{tone:"positive",children:"Complete"}):rt?f.jsx(Bn,{tone:"negative",children:"Failed"}):f.jsx(Bn,{tone:"caution",children:"Running"}):null;return f.jsxs(kn,{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"})]}),No]}),Bi?rt?se?.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:oe?`/projects/${encodeURIComponent(oe)}`:"/"})},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:oe}),":"]}),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:[Ic,f.jsxs("span",{className:"text-zinc-600 text-lg",children:[" / ",nr]})]}),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:[ai,f.jsxs("span",{className:"text-zinc-600 text-lg",children:[" / ",nr]})]}),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:Yn.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:oe?`/projects/${encodeURIComponent(oe)}`:"/"})},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:se?.status??"queued"})]})}),f.jsxs("div",{className:"setup-nav",children:[f.jsx("span",{}),f.jsx(qe,{type:"button",variant:"outline",onClick:()=>{S({to:oe?`/projects/${encodeURIComponent(oe)}`:"/"})},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:oe}),"."]}),f.jsxs("div",{className:"setup-nav",children:[f.jsx(qe,{type:"button",variant:"outline",onClick:pn,children:"Back"}),f.jsx(qe,{type:"button",disabled:yo,onClick:Nn(Zn),children:yo?"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(CB,{current:x,labels:_B}),f.jsx("section",{className:"setup-wizard",children:ni})]})}function TB(){return f.jsx("div",{className:"page-container",children:f.jsx("section",{className:"page-section",children:f.jsxs(kn,{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(st,{to:"/",children:"Return to overview"})})]})})})}const ba=Is(()=>Ps(()=>import("./ProjectPage-BksYe8FP.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8]),import.meta.url),"ProjectPage"),EB=Is(()=>Ps(()=>import("./RunsPage-wOaewhbF.js"),__vite__mapDeps([9,1,2,7,5,8]),import.meta.url),"RunsPage"),OB=Is(()=>Ps(()=>import("./SettingsPage-CJdhhkkE.js"),__vite__mapDeps([10,1,7,5,8]),import.meta.url),"SettingsPage"),DB=Is(()=>Ps(()=>import("./BacklinksPage-CuWs7I1D.js"),__vite__mapDeps([11,1,6,7,5,8]),import.meta.url),"BacklinksPage"),RB=Is(()=>Ps(()=>import("./TrafficPage-BJBeN5Ph.js"),__vite__mapDeps([12,1,4,13,7,5,8]),import.meta.url),"TrafficPage"),MB=Is(()=>Ps(()=>import("./TrafficSourceDetailPage-D3PmH0B1.js"),__vite__mapDeps([14,1,4,3,5,13,7,8]),import.meta.url),"TrafficSourceDetailPage");function BB(){return f.jsx(oM,{children:f.jsx(rM,{})})}const nn=Ew()({component:BB,validateSearch:e=>({runId:typeof e.runId=="string"?e.runId:void 0,evidenceId:typeof e.evidenceId=="string"?e.evidenceId:void 0})}),LB=Tt({getParentRoute:()=>nn,path:"/",component:uM,beforeLoad:({context:e})=>{const n=e.queryClient.getQueryData(Ei({client:ne}));if(n&&n.length===0)throw Gf({to:"/setup"})}}),qB=Tt({getParentRoute:()=>nn,path:"/projects",component:wB}),UB=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,Kn=Tt({getParentRoute:()=>nn,path:"/projects/$projectName",component:()=>f.jsx(Sf,{}),beforeLoad:async({context:e,params:n,location:i})=>{const r=n.projectName;if(!UB.test(r))return;let l=e.queryClient.getQueryData(Ei({client:ne}));if(!l)try{l=await e.queryClient.ensureQueryData(xc({client:ne}))}catch{return}const c=l.find(d=>d.id===r);if(c)throw Gf({to:i.pathname.replace(`/projects/${r}`,`/projects/${encodeURIComponent(c.name)}`),replace:!0})}}),$B=Tt({getParentRoute:()=>Kn,path:"/",component:()=>f.jsx(ba,{tab:"overview"})}),VB=Tt({getParentRoute:()=>Kn,path:"/search-console",component:()=>f.jsx(ba,{tab:"search-console"})}),IB=Tt({getParentRoute:()=>Kn,path:"/local",component:()=>f.jsx(ba,{tab:"local"})}),PB=Tt({getParentRoute:()=>Kn,path:"/discovery",component:()=>f.jsx(ba,{tab:"discovery"})}),GB=Tt({getParentRoute:()=>Kn,path:"/report",component:()=>f.jsx(ba,{tab:"report"})}),HB=Tt({getParentRoute:()=>Kn,path:"/activity",component:()=>f.jsx(ba,{tab:"activity"})}),QB=Tt({getParentRoute:()=>Kn,path:"/backlinks",component:()=>f.jsx(ba,{tab:"backlinks"})}),KB=Tt({getParentRoute:()=>Kn,path:"/technical-aeo",component:()=>f.jsx(ba,{tab:"technical-aeo"})}),ZB=Tt({getParentRoute:()=>Kn,path:"/settings",component:()=>f.jsx(ba,{tab:"settings"})}),YB=Tt({getParentRoute:()=>nn,path:"/runs",component:EB}),XB=Tt({getParentRoute:()=>nn,path:"/settings",component:OB,beforeLoad:({context:e})=>{}}),JB=Tt({getParentRoute:()=>nn,path:"/setup",component:zB,beforeLoad:({context:e})=>{const n=e.queryClient.getQueryData(Ei({client:ne}));if(n&&n.length>0)throw Gf({to:"/"})}}),FB=Tt({getParentRoute:()=>nn,path:"/backlinks",component:DB}),WB=Tt({getParentRoute:()=>nn,path:"/traffic",component:RB}),e5=Tt({getParentRoute:()=>nn,path:"/traffic/$projectName/$sourceId",component:MB}),t5=Tt({getParentRoute:()=>nn,path:"*",component:TB}),n5=nn.addChildren([LB,qB,Kn.addChildren([$B,VB,IB,PB,GB,HB,QB,KB,ZB]),YB,XB,JB,FB,WB,e5,t5]);function a5(){return typeof window<"u"&&window.__CANONRY_CONFIG__?.basePath?window.__CANONRY_CONFIG__.basePath:"/"}const dv=a5(),i5=dv==="/"?"":dv.replace(/\/$/,"");function s5(e,n){return Ow({routeTree:n5,basepath:i5||"/",context:{queryClient:e},...n?.initialEntries})}const r5=6e4;function o5(){const[e,n]=U.useState(sf()?"ready":"checking"),[i,r]=U.useState(""),[l,c]=U.useState(""),[d,h]=U.useState(null),[g,v]=U.useState(!1),[S,x]=U.useState(!1),N=U.useRef(null),_=U.useRef(null),T=()=>{if(!N.current){const R=Fk();_.current=R,N.current=s5(R)}return{queryClient:_.current,router:N.current}};U.useEffect(()=>{if(sf())return;let R=!1;return Ky().then(I=>{R||(I.authenticated?n("ready"):n(I.setupRequired?"setup":"login"))}).catch(I=>{R||(h(I instanceof Error?I.message:"Failed to reach the Canonry API"),n("login"))}),()=>{R=!0}},[]),U.useEffect(()=>{if(e!=="ready"||sf())return;const R=setInterval(()=>{Ky().then(I=>{I.authenticated||(x(!0),n(I.setupRequired?"setup":"login"))}).catch(()=>{})},r5);return Qy(()=>{x(!0),n("login")}),()=>{clearInterval(R),Qy(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}v(!0),h(null);try{if(!(await Ck(i.trim())).authenticated){h("Setup failed");return}r(""),c(""),x(!1),n("ready")}catch(I){h(I instanceof Hn||I instanceof Error?I.message:"Setup failed")}finally{v(!1)}},E=async R=>{if(R.preventDefault(),!!i.trim()){v(!0),h(null);try{if(!(await zk(i.trim())).authenticated){h("Incorrect password");return}r(""),x(!1),n("ready")}catch(I){h(I instanceof Hn||I instanceof Error?I.message:"Authentication failed")}finally{v(!1)}}};if(e==="ready"){const{queryClient:R,router:I}=T();return f.jsx(Dw,{client:R,children:f.jsx(Rw,{router:I})})}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(kn,{className:"surface-card w-full",children:e==="checking"?f.jsx(Yl,{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(Mf,{children:[f.jsx("p",{className:"eyebrow eyebrow-soft",children:"First-time setup"}),f.jsx(Bf,{children:"Create a dashboard password"}),f.jsx(Lf,{children:"Choose a password to protect the Canonry dashboard. You will use this to sign in on future visits."})]}),f.jsx(Yl,{children:f.jsxs("form",{className:"space-y-4",onSubmit:Nn(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(Mf,{children:[f.jsx("p",{className:"eyebrow eyebrow-soft",children:"Dashboard access"}),f.jsx(Bf,{children:"Sign in to Canonry"}),f.jsx(Lf,{children:"Enter your dashboard password to continue."})]}),f.jsxs(Yl,{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:Nn(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.");Vw.createRoot(d1).render(f.jsx(U.StrictMode,{children:f.jsx(o5,{})}));export{r6 as $,UL as A,qe as B,sc as C,j5 as D,GL as E,QL as F,wL as G,KL as H,Xr as I,D5 as J,O5 as K,M5 as L,tn as M,G5 as N,XL as O,V3 as P,JL as Q,L5 as R,LD as S,Bn as T,ZL as U,YL as V,HL as W,R5 as X,q5 as Y,FL as Z,WL as _,z6 as a,k5 as a$,n6 as a0,i6 as a1,a6 as a2,s6 as a3,$k as a4,J0 as a5,Ne as a6,t6 as a7,I4 as a8,_i as a9,$5 as aA,Ei as aB,V5 as aC,wp as aD,A6 as aE,C6 as aF,_6 as aG,U5 as aH,mA as aI,Bv as aJ,z4 as aK,E4 as aL,T4 as aM,_L as aN,y6 as aO,AL as aP,F5 as aQ,L6 as aR,TL as aS,CL as aT,EL as aU,OL as aV,kL as aW,zL as aX,S5 as aY,v5 as aZ,b5 as a_,e6 as aa,fE as ab,pE as ac,NL as ad,jL as ae,bL as af,cL as ag,hL as ah,gL as ai,Hn as aj,yL as ak,f5 as al,zA as am,LL as an,_A as ao,LA as ap,H4 as aq,Wl as ar,SL as as,vL as at,kf as au,b6 as av,B5 as aw,j6 as ax,N6 as ay,k6 as az,Ff as b,gS as b$,IL as b0,Tb as b1,VL as b2,A5 as b3,_5 as b4,$L as b5,C5 as b6,z5 as b7,E5 as b8,T5 as b9,l6 as bA,BL as bB,H5 as bC,Q5 as bD,K5 as bE,X5 as bF,kc as bG,O6 as bH,Ap as bI,Tk as bJ,N5 as bK,I5 as bL,P5 as bM,Cp as bN,J5 as bO,Us as bP,Eb as bQ,oL as bR,uL as bS,fL as bT,pL as bU,lL as bV,dL as bW,mL as bX,I3 as bY,hS as bZ,K3 as b_,uo as ba,xc as bb,CR as bc,AB as bd,Qt as be,wk as bf,x5 as bg,h5 as bh,g5 as bi,w5 as bj,E6 as bk,xk as bl,Ak as bm,m5 as bn,p5 as bo,Nk as bp,y5 as bq,B6 as br,YD as bs,o6 as bt,c6 as bu,Rk as bv,u6 as bw,Y5 as bx,Z5 as by,d6 as bz,We as c,yS as c0,jA as c1,rL as c2,Fy as c3,x6 as c4,DL as c5,RL as c6,xp as c7,PL as c8,Gs as c9,v6 as ca,w6 as cb,sL as cc,aL as cd,iL as ce,nL as cf,S6 as cg,$T as d,T6 as e,qL as f,kn as g,Ib as h,Nn as i,xL as j,f6 as k,ne as l,p6 as m,m6 as n,g6 as o,h6 as p,W5 as q,tL as r,eL as s,UD as t,zp as u,D6 as v,R6 as w,M6 as x,Rf as y,ML as z};