@canonry/canonry 4.125.0 → 4.127.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 (25) hide show
  1. package/assets/agent-workspace/skills/canonry/references/canonry-cli.md +5 -0
  2. package/assets/assets/{AuditHistoryPanel-C-KSU-dr.js → AuditHistoryPanel-DwJpVWme.js} +1 -1
  3. package/assets/assets/{BacklinksPage-BH4njwCh.js → BacklinksPage-K8FQUBxI.js} +1 -1
  4. package/assets/assets/{ChartPrimitives-BhB9Kxzc.js → ChartPrimitives-6oFKrJFk.js} +1 -1
  5. package/assets/assets/{HistoryPage-BQVNx0eu.js → HistoryPage-DwOAoN1Z.js} +1 -1
  6. package/assets/assets/{ProjectPage-DnkNE1AW.js → ProjectPage-CdgFUk7h.js} +1 -1
  7. package/assets/assets/{RunRow-70N3oGz8.js → RunRow-lt9IS99U.js} +1 -1
  8. package/assets/assets/{RunsPage-CtuKRP0o.js → RunsPage-DitYcIdx.js} +1 -1
  9. package/assets/assets/{SettingsPage-B1ZGnDz8.js → SettingsPage-CAOrh65Q.js} +1 -1
  10. package/assets/assets/{TrafficPage-BOGbXHd9.js → TrafficPage-BqzNvx75.js} +1 -1
  11. package/assets/assets/{TrafficSourceDetailPage-5jj7n7W1.js → TrafficSourceDetailPage-DXbygZUA.js} +1 -1
  12. package/assets/assets/{arrow-left-gOf0lyu3.js → arrow-left-AmG4gtUR.js} +1 -1
  13. package/assets/assets/{extract-error-message-CZKcwJhv.js → extract-error-message-DlVtjoPz.js} +1 -1
  14. package/assets/assets/{index-B_CDPjOg.js → index-BiCDkOH4.js} +3 -3
  15. package/assets/assets/{trash-2-BnFgG3Wq.js → trash-2-gFHWd1A1.js} +1 -1
  16. package/assets/index.html +1 -1
  17. package/dist/{chunk-DN5H2ZN7.js → chunk-A4YBV4Y4.js} +35 -4
  18. package/dist/{chunk-RFLNTI7Y.js → chunk-BLSHHRRU.js} +21 -5
  19. package/dist/{chunk-YPRUBNUK.js → chunk-HQRUFTLN.js} +272 -61
  20. package/dist/{chunk-WA57WG6W.js → chunk-IHRW6WWV.js} +1 -1
  21. package/dist/cli.js +4 -4
  22. package/dist/index.js +4 -4
  23. package/dist/{intelligence-service-WJ2ZR7GF.js → intelligence-service-2WKS3EWJ.js} +2 -2
  24. package/dist/mcp.js +2 -2
  25. package/package.json +8 -8
@@ -1,4 +1,4 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./ProjectPage-DnkNE1AW.js","./vendor-tanstack-Be8JdV5M.js","./RunRow-70N3oGz8.js","./ChartPrimitives-BhB9Kxzc.js","./extract-error-message-CZKcwJhv.js","./vendor-recharts-DSxTZhaH.js","./trash-2-BnFgG3Wq.js","./AuditHistoryPanel-C-KSU-dr.js","./vendor-radix-CQ77EO2y.js","./vendor-markdown-6dwjPOKK.js","./RunsPage-CtuKRP0o.js","./HistoryPage-BQVNx0eu.js","./SettingsPage-B1ZGnDz8.js","./BacklinksPage-BH4njwCh.js","./TrafficPage-BOGbXHd9.js","./arrow-left-gOf0lyu3.js","./TrafficSourceDetailPage-5jj7n7W1.js"])))=>i.map(i=>d[i]);
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./ProjectPage-CdgFUk7h.js","./vendor-tanstack-Be8JdV5M.js","./RunRow-lt9IS99U.js","./ChartPrimitives-6oFKrJFk.js","./extract-error-message-DlVtjoPz.js","./vendor-recharts-DSxTZhaH.js","./trash-2-gFHWd1A1.js","./AuditHistoryPanel-DwJpVWme.js","./vendor-radix-CQ77EO2y.js","./vendor-markdown-6dwjPOKK.js","./RunsPage-DitYcIdx.js","./HistoryPage-DwOAoN1Z.js","./SettingsPage-CAOrh65Q.js","./BacklinksPage-K8FQUBxI.js","./TrafficPage-BqzNvx75.js","./arrow-left-AmG4gtUR.js","./TrafficSourceDetailPage-DXbygZUA.js"])))=>i.map(i=>d[i]);
2
2
  import{c as zj,d as Rj,Q as Mj,M as Bj,r as q,q as ke,j as p,L as tt,a as Lj,e as Ls,u as on,f as qj,h as Dc,k as Uj,l as $j,m as r0,O as Qf,n as ka,o as li,p as Ij,s as kt,t as Sp,v as qi,x as Pj,y as Vj,z as Gj}from"./vendor-tanstack-Be8JdV5M.js";import{S as Hj,O as xp,P as o0,C as wp,a as l0,T as jp,D as c0,R as u0}from"./vendor-radix-CQ77EO2y.js";import{c as d0}from"./vendor-recharts-DSxTZhaH.js";import{M as Kj}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 kf={exports:{}},lo={},Af={exports:{}},Cf={};var _b;function Qj(){return _b||(_b=1,(function(e){function n($,W){var pe=$.length;$.push(W);e:for(;0<pe;){var je=pe-1>>>1,le=$[je];if(0<l(le,W))$[je]=W,$[pe]=le,pe=je;else break e}}function i($){return $.length===0?null:$[0]}function r($){if($.length===0)return null;var W=$[0],pe=$.pop();if(pe!==W){$[0]=pe;e:for(var je=0,le=$.length,Xe=le>>>1;je<Xe;){var J=2*(je+1)-1,ue=$[J],ee=J+1,de=$[ee];if(0>l(ue,pe))ee<le&&0>l(de,ue)?($[je]=de,$[ee]=pe,je=ee):($[je]=ue,$[J]=pe,je=J);else if(ee<le&&0>l(de,pe))$[je]=de,$[ee]=pe,je=ee;else break e}}return W}function l($,W){var pe=$.sortIndex-W.sortIndex;return pe!==0?pe:$.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=[],b=[],x=1,w=null,N=3,C=!1,D=!1,A=!1,E=!1,R=typeof setTimeout=="function"?setTimeout:null,G=typeof clearTimeout=="function"?clearTimeout:null,X=typeof setImmediate<"u"?setImmediate:null;function V($){for(var W=i(b);W!==null;){if(W.callback===null)r(b);else if(W.startTime<=$)r(b),W.sortIndex=W.expirationTime,n(g,W);else break;W=i(b)}}function P($){if(A=!1,V($),!D)if(i(g)!==null)D=!0,re||(re=!0,ve());else{var W=i(b);W!==null&&fe(P,W.startTime-$)}}var re=!1,O=-1,L=5,ae=-1;function _e(){return E?!0:!(e.unstable_now()-ae<L)}function Me(){if(E=!1,re){var $=e.unstable_now();ae=$;var W=!0;try{e:{D=!1,A&&(A=!1,G(O),O=-1),C=!0;var pe=N;try{t:{for(V($),w=i(g);w!==null&&!(w.expirationTime>$&&_e());){var je=w.callback;if(typeof je=="function"){w.callback=null,N=w.priorityLevel;var le=je(w.expirationTime<=$);if($=e.unstable_now(),typeof le=="function"){w.callback=le,V($),W=!0;break t}w===i(g)&&r(g),V($)}else r(g);w=i(g)}if(w!==null)W=!0;else{var Xe=i(b);Xe!==null&&fe(P,Xe.startTime-$),W=!1}}break e}finally{w=null,N=pe,C=!1}W=void 0}}finally{W?ve():re=!1}}}var ve;if(typeof X=="function")ve=function(){X(Me)};else if(typeof MessageChannel<"u"){var it=new MessageChannel,oe=it.port2;it.port1.onmessage=Me,ve=function(){oe.postMessage(null)}}else ve=function(){R(Me,0)};function fe($,W){O=R(function(){$(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($){$.callback=null},e.unstable_forceFrameRate=function($){0>$||125<$?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):L=0<$?Math.floor(1e3/$):5},e.unstable_getCurrentPriorityLevel=function(){return N},e.unstable_next=function($){switch(N){case 1:case 2:case 3:var W=3;break;default:W=N}var pe=N;N=W;try{return $()}finally{N=pe}},e.unstable_requestPaint=function(){E=!0},e.unstable_runWithPriority=function($,W){switch($){case 1:case 2:case 3:case 4:case 5:break;default:$=3}var pe=N;N=$;try{return W()}finally{N=pe}},e.unstable_scheduleCallback=function($,W,pe){var je=e.unstable_now();switch(typeof pe=="object"&&pe!==null?(pe=pe.delay,pe=typeof pe=="number"&&0<pe?je+pe:je):pe=je,$){case 1:var le=-1;break;case 2:le=250;break;case 5:le=1073741823;break;case 4:le=1e4;break;default:le=5e3}return le=pe+le,$={id:x++,callback:W,priorityLevel:$,startTime:pe,expirationTime:le,sortIndex:-1},pe>je?($.sortIndex=pe,n(b,$),i(g)===null&&$===i(b)&&(A?(G(O),O=-1):A=!0,fe(P,pe-je))):($.sortIndex=le,n(g,$),D||C||(D=!0,re||(re=!0,ve()))),$},e.unstable_shouldYield=_e,e.unstable_wrapCallback=function($){var W=N;return function(){var pe=N;N=W;try{return $.apply(this,arguments)}finally{N=pe}}}})(Cf)),Cf}var Tb;function Zj(){return Tb||(Tb=1,Af.exports=Qj()),Af.exports}var Eb;function Yj(){if(Eb)return lo;Eb=1;var e=Zj(),n=zj(),i=Rj();function r(t){var a="https://react.dev/errors/"+t;if(1<arguments.length){a+="?args[]="+encodeURIComponent(arguments[1]);for(var s=2;s<arguments.length;s++)a+="&args[]="+encodeURIComponent(arguments[s])}return"Minified React error #"+t+"; visit "+a+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function l(t){return!(!t||t.nodeType!==1&&t.nodeType!==9&&t.nodeType!==11)}function c(t){var a=t,s=t;if(t.alternate)for(;a.return;)a=a.return;else{t=a;do a=t,(a.flags&4098)!==0&&(s=a.return),t=a.return;while(t)}return a.tag===3?s:null}function d(t){if(t.tag===13){var a=t.memoizedState;if(a===null&&(t=t.alternate,t!==null&&(a=t.memoizedState)),a!==null)return a.dehydrated}return null}function h(t){if(t.tag===31){var a=t.memoizedState;if(a===null&&(t=t.alternate,t!==null&&(a=t.memoizedState)),a!==null)return a.dehydrated}return null}function g(t){if(c(t)!==t)throw Error(r(188))}function b(t){var a=t.alternate;if(!a){if(a=c(t),a===null)throw Error(r(188));return a!==t?null:t}for(var s=t,o=a;;){var f=s.return;if(f===null)break;var m=f.alternate;if(m===null){if(o=f.return,o!==null){s=o;continue}break}if(f.child===m.child){for(m=f.child;m;){if(m===s)return g(f),t;if(m===o)return g(f),a;m=m.sibling}throw Error(r(188))}if(s.return!==o.return)s=f,o=m;else{for(var v=!1,j=f.child;j;){if(j===s){v=!0,s=f,o=m;break}if(j===o){v=!0,o=f,s=m;break}j=j.sibling}if(!v){for(j=m.child;j;){if(j===s){v=!0,s=m,o=f;break}if(j===o){v=!0,o=m,s=f;break}j=j.sibling}if(!v)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 x(t){var a=t.tag;if(a===5||a===26||a===27||a===6)return t;for(t=t.child;t!==null;){if(a=x(t),a!==null)return a;t=t.sibling}return null}var w=Object.assign,N=Symbol.for("react.element"),C=Symbol.for("react.transitional.element"),D=Symbol.for("react.portal"),A=Symbol.for("react.fragment"),E=Symbol.for("react.strict_mode"),R=Symbol.for("react.profiler"),G=Symbol.for("react.consumer"),X=Symbol.for("react.context"),V=Symbol.for("react.forward_ref"),P=Symbol.for("react.suspense"),re=Symbol.for("react.suspense_list"),O=Symbol.for("react.memo"),L=Symbol.for("react.lazy"),ae=Symbol.for("react.activity"),_e=Symbol.for("react.memo_cache_sentinel"),Me=Symbol.iterator;function ve(t){return t===null||typeof t!="object"?null:(t=Me&&t[Me]||t["@@iterator"],typeof t=="function"?t:null)}var it=Symbol.for("react.client.reference");function oe(t){if(t==null)return null;if(typeof t=="function")return t.$$typeof===it?null:t.displayName||t.name||null;if(typeof t=="string")return t;switch(t){case A:return"Fragment";case R:return"Profiler";case E:return"StrictMode";case P:return"Suspense";case re:return"SuspenseList";case ae:return"Activity"}if(typeof t=="object")switch(t.$$typeof){case D:return"Portal";case X:return t.displayName||"Context";case G:return(t._context.displayName||"Context")+".Consumer";case V: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:oe(t.type)||"Memo";case L:a=t._payload,t=t._init;try{return oe(t(a))}catch{}}return null}var fe=Array.isArray,$=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,pe={pending:!1,data:null,method:null,action:null},je=[],le=-1;function Xe(t){return{current:t}}function J(t){0>le||(t.current=je[le],je[le]=null,le--)}function ue(t,a){le++,je[le]=t.current,t.current=a}var ee=Xe(null),de=Xe(null),ie=Xe(null),Ae=Xe(null);function st(t,a){switch(ue(ie,a),ue(de,t),ue(ee,null),a.nodeType){case 9:case 11:t=(t=a.documentElement)&&(t=t.namespaceURI)?Xy(t):0;break;default:if(t=a.tagName,a=a.namespaceURI)a=Xy(a),t=Jy(a,t);else switch(t){case"svg":t=1;break;case"math":t=2;break;default:t=0}}J(ee),ue(ee,t)}function xe(){J(ee),J(de),J(ie)}function Pe(t){t.memoizedState!==null&&ue(Ae,t);var a=ee.current,s=Jy(a,t.type);a!==s&&(ue(de,t),ue(ee,s))}function Ze(t){de.current===t&&(J(ee),J(de)),Ae.current===t&&(J(Ae),io._currentValue=pe)}var Bt,Hn;function Lt(t){if(Bt===void 0)try{throw Error()}catch(s){var a=s.stack.trim().match(/\n( *(at )?)/);Bt=a&&a[1]||"",Hn=-1<s.stack.indexOf(`
3
3
  at`)?" (<anonymous>)":-1<s.stack.indexOf("@")?"@unknown:0:0":""}return`
4
4
  `+Bt+t+Hn}var hr=!1;function Ki(t,a){if(!t||hr)return"";hr=!0;var s=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{var o={DetermineComponentFrameRoot:function(){try{if(a){var F=function(){throw Error()};if(Object.defineProperty(F.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(F,[])}catch(I){var U=I}Reflect.construct(t,[],F)}else{try{F.call()}catch(I){U=I}t.call(F.prototype)}}else{try{throw Error()}catch(I){U=I}(F=t())&&typeof F.catch=="function"&&F.catch(function(){})}}catch(I){if(I&&U&&typeof I.stack=="string")return[I.stack,U.stack]}return[null,null]}};o.DetermineComponentFrameRoot.displayName="DetermineComponentFrameRoot";var f=Object.getOwnPropertyDescriptor(o.DetermineComponentFrameRoot,"name");f&&f.configurable&&Object.defineProperty(o.DetermineComponentFrameRoot,"name",{value:"DetermineComponentFrameRoot"});var m=o.DetermineComponentFrameRoot(),v=m[0],j=m[1];if(v&&j){var _=v.split(`
@@ -49,7 +49,7 @@ Error generating stack: `+o.message+`
49
49
 
50
50
  `)}C.write("payload.value = newResult;"),C.write("return payload;");const G=C.compile();return(X,V)=>G(N,X,V)};let c;const d=xo,h=!B0.jitless,b=h&&y2.value,x=n.catchall;let w;e._zod.parse=(N,C)=>{w??(w=r.value);const D=N.value;return d(D)?h&&b&&C?.async===!1&&C.jitless!==!0?(c||(c=l(n.shape)),N=c(N,C),x?W0([],D,N,C,w,e):N):i(N,C):(N.issues.push({expected:"object",code:"invalid_type",input:D,inst:e}),N)}});function Kb(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=>!Is(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=>ri(d,r,si())))}),n)}const eS=Z("$ZodUnion",(e,n)=>{pt.init(e,n),Qe(e._zod,"optin",()=>n.options.some(l=>l._zod.optin==="optional")?"optional":void 0),Qe(e._zod,"optout",()=>n.options.some(l=>l._zod.optout==="optional")?"optional":void 0),Qe(e._zod,"values",()=>{if(n.options.every(l=>l._zod.values))return new Set(n.options.flatMap(l=>Array.from(l._zod.values)))}),Qe(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=>zp(c.source)).join("|")})$`)}});const i=n.options.length===1,r=n.options[0]._zod.run;e._zod.parse=(l,c)=>{if(i)return r(l,c);let d=!1;const h=[];for(const g of n.options){const b=g._zod.run({value:l.value,issues:[]},c);if(b instanceof Promise)h.push(b),d=!0;else{if(b.issues.length===0)return b;h.push(b)}}return d?Promise.all(h).then(g=>Kb(g,l,e,c)):Kb(h,l,e,c)}}),sT=Z("$ZodDiscriminatedUnion",(e,n)=>{n.inclusive=!1,eS.init(e,n);const i=e._zod.parse;Qe(e._zod,"propValues",()=>{const l={};for(const c of n.options){const d=c._zod.propValues;if(!d||Object.keys(d).length===0)throw new Error(`Invalid discriminated union option at index "${n.options.indexOf(c)}"`);for(const[h,g]of Object.entries(d)){l[h]||(l[h]=new Set);for(const b of g)l[h].add(b)}}return l});const r=Rc(()=>{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(!xo(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)}}),rT=Z("$ZodIntersection",(e,n)=>{pt.init(e,n),e._zod.parse=(i,r)=>{const l=i.value,c=n.left._zod.run({value:l,issues:[]},r),d=n.right._zod.run({value:l,issues:[]},r);return c instanceof Promise||d instanceof Promise?Promise.all([c,d]).then(([g,b])=>Qb(i,g,b)):Qb(i,c,d)}});function ep(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(Js(e)&&Js(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=ep(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=ep(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 Qb(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}),Is(e))return e;const d=ep(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 oT=Z("$ZodRecord",(e,n)=>{pt.init(e,n),e._zod.parse=(i,r)=>{const l=i.value;if(!Js(l))return i.issues.push({expected:"record",code:"invalid_type",input:l,inst:e}),i;const c=[],d=n.keyType._zod.values;if(d){i.value={};const h=new Set;for(const b of d)if(typeof b=="string"||typeof b=="number"||typeof b=="symbol"){h.add(typeof b=="number"?b.toString():b);const x=n.valueType._zod.run({value:l[b],issues:[]},r);x instanceof Promise?c.push(x.then(w=>{w.issues.length&&i.issues.push(...Ps(b,w.issues)),i.value[b]=w.value})):(x.issues.length&&i.issues.push(...Ps(b,x.issues)),i.value[b]=x.value)}let g;for(const b in l)h.has(b)||(g=g??[],g.push(b));g&&g.length>0&&i.issues.push({code:"unrecognized_keys",input:l,inst:e,keys:g})}else{i.value={};for(const h of Reflect.ownKeys(l)){if(h==="__proto__")continue;let g=n.keyType._zod.run({value:h,issues:[]},r);if(g instanceof Promise)throw new Error("Async schemas not supported in object keys currently");if(typeof h=="string"&&K0.test(h)&&g.issues.length){const w=n.keyType._zod.run({value:Number(h),issues:[]},r);if(w instanceof Promise)throw new Error("Async schemas not supported in object keys currently");w.issues.length===0&&(g=w)}if(g.issues.length){n.mode==="loose"?i.value[h]=l[h]:i.issues.push({code:"invalid_key",origin:"record",issues:g.issues.map(w=>ri(w,r,si())),input:h,path:[h],inst:e});continue}const x=n.valueType._zod.run({value:l[h],issues:[]},r);x instanceof Promise?c.push(x.then(w=>{w.issues.length&&i.issues.push(...Ps(h,w.issues)),i.value[g.value]=w.value})):(x.issues.length&&i.issues.push(...Ps(h,x.issues)),i.value[g.value]=x.value)}}return c.length?Promise.all(c).then(()=>i):i}}),lT=Z("$ZodEnum",(e,n)=>{pt.init(e,n);const i=L0(n.entries),r=new Set(i);e._zod.values=r,e._zod.pattern=new RegExp(`^(${i.filter(l=>b2.has(typeof l)).map(l=>typeof l=="string"?Ws(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}}),cT=Z("$ZodLiteral",(e,n)=>{if(pt.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"?Ws(r):r?Ws(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}}),uT=Z("$ZodTransform",(e,n)=>{pt.init(e,n),e._zod.parse=(i,r)=>{if(r.direction==="backward")throw new M0(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 Ks;return i.value=l,i}});function Zb(e,n){return e.issues.length&&n===void 0?{issues:[],value:void 0}:e}const tS=Z("$ZodOptional",(e,n)=>{pt.init(e,n),e._zod.optin="optional",e._zod.optout="optional",Qe(e._zod,"values",()=>n.innerType._zod.values?new Set([...n.innerType._zod.values,void 0]):void 0),Qe(e._zod,"pattern",()=>{const i=n.innerType._zod.pattern;return i?new RegExp(`^(${zp(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=>Zb(c,i.value)):Zb(l,i.value)}return i.value===void 0?i:n.innerType._zod.run(i,r)}}),dT=Z("$ZodExactOptional",(e,n)=>{tS.init(e,n),Qe(e._zod,"values",()=>n.innerType._zod.values),Qe(e._zod,"pattern",()=>n.innerType._zod.pattern),e._zod.parse=(i,r)=>n.innerType._zod.run(i,r)}),fT=Z("$ZodNullable",(e,n)=>{pt.init(e,n),Qe(e._zod,"optin",()=>n.innerType._zod.optin),Qe(e._zod,"optout",()=>n.innerType._zod.optout),Qe(e._zod,"pattern",()=>{const i=n.innerType._zod.pattern;return i?new RegExp(`^(${zp(i.source)}|null)$`):void 0}),Qe(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)}),pT=Z("$ZodDefault",(e,n)=>{pt.init(e,n),e._zod.optin="optional",Qe(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=>Yb(c,n)):Yb(l,n)}});function Yb(e,n){return e.value===void 0&&(e.value=n.defaultValue),e}const mT=Z("$ZodPrefault",(e,n)=>{pt.init(e,n),e._zod.optin="optional",Qe(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))}),hT=Z("$ZodNonOptional",(e,n)=>{pt.init(e,n),Qe(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=>Fb(c,e)):Fb(l,e)}});function Fb(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 gT=Z("$ZodCatch",(e,n)=>{pt.init(e,n),Qe(e._zod,"optin",()=>n.innerType._zod.optin),Qe(e._zod,"optout",()=>n.innerType._zod.optout),Qe(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=>ri(d,r,si()))},input:i.value}),i.issues=[]),i)):(i.value=l.value,l.issues.length&&(i.value=n.catchValue({...i,error:{issues:l.issues.map(c=>ri(c,r,si()))},input:i.value}),i.issues=[]),i)}}),yT=Z("$ZodPipe",(e,n)=>{pt.init(e,n),Qe(e._zod,"values",()=>n.in._zod.values),Qe(e._zod,"optin",()=>n.in._zod.optin),Qe(e._zod,"optout",()=>n.out._zod.optout),Qe(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=>ic(d,n.in,r)):ic(c,n.in,r)}const l=n.in._zod.run(i,r);return l instanceof Promise?l.then(c=>ic(c,n.out,r)):ic(l,n.out,r)}});function ic(e,n,i){return e.issues.length?(e.aborted=!0,e):n._zod.run({value:e.value,issues:e.issues},i)}const bT=Z("$ZodReadonly",(e,n)=>{pt.init(e,n),Qe(e._zod,"propValues",()=>n.innerType._zod.propValues),Qe(e._zod,"values",()=>n.innerType._zod.values),Qe(e._zod,"optin",()=>n.innerType?._zod?.optin),Qe(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(Xb):Xb(l)}});function Xb(e){return e.value=Object.freeze(e.value),e}const vT=Z("$ZodCustom",(e,n)=>{ln.init(e,n),pt.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=>Jb(c,i,r,e));Jb(l,i,r,e)}});function Jb(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(wo(l))}}var Wb;class ST{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 xT(){return new ST}(Wb=globalThis).__zod_globalRegistry??(Wb.__zod_globalRegistry=xT());const go=globalThis.__zod_globalRegistry;function wT(e,n){return new e({type:"string",...be(n)})}function jT(e,n){return new e({type:"string",format:"email",check:"string_format",abort:!1,...be(n)})}function ev(e,n){return new e({type:"string",format:"guid",check:"string_format",abort:!1,...be(n)})}function NT(e,n){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,...be(n)})}function kT(e,n){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v4",...be(n)})}function AT(e,n){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v6",...be(n)})}function CT(e,n){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v7",...be(n)})}function _T(e,n){return new e({type:"string",format:"url",check:"string_format",abort:!1,...be(n)})}function TT(e,n){return new e({type:"string",format:"emoji",check:"string_format",abort:!1,...be(n)})}function ET(e,n){return new e({type:"string",format:"nanoid",check:"string_format",abort:!1,...be(n)})}function OT(e,n){return new e({type:"string",format:"cuid",check:"string_format",abort:!1,...be(n)})}function DT(e,n){return new e({type:"string",format:"cuid2",check:"string_format",abort:!1,...be(n)})}function zT(e,n){return new e({type:"string",format:"ulid",check:"string_format",abort:!1,...be(n)})}function RT(e,n){return new e({type:"string",format:"xid",check:"string_format",abort:!1,...be(n)})}function MT(e,n){return new e({type:"string",format:"ksuid",check:"string_format",abort:!1,...be(n)})}function BT(e,n){return new e({type:"string",format:"ipv4",check:"string_format",abort:!1,...be(n)})}function LT(e,n){return new e({type:"string",format:"ipv6",check:"string_format",abort:!1,...be(n)})}function qT(e,n){return new e({type:"string",format:"cidrv4",check:"string_format",abort:!1,...be(n)})}function UT(e,n){return new e({type:"string",format:"cidrv6",check:"string_format",abort:!1,...be(n)})}function $T(e,n){return new e({type:"string",format:"base64",check:"string_format",abort:!1,...be(n)})}function IT(e,n){return new e({type:"string",format:"base64url",check:"string_format",abort:!1,...be(n)})}function PT(e,n){return new e({type:"string",format:"e164",check:"string_format",abort:!1,...be(n)})}function VT(e,n){return new e({type:"string",format:"jwt",check:"string_format",abort:!1,...be(n)})}function GT(e,n){return new e({type:"string",format:"datetime",check:"string_format",offset:!1,local:!1,precision:null,...be(n)})}function HT(e,n){return new e({type:"string",format:"date",check:"string_format",...be(n)})}function KT(e,n){return new e({type:"string",format:"time",check:"string_format",precision:null,...be(n)})}function QT(e,n){return new e({type:"string",format:"duration",check:"string_format",...be(n)})}function ZT(e,n){return new e({type:"number",checks:[],...be(n)})}function YT(e,n){return new e({type:"number",coerce:!0,checks:[],...be(n)})}function FT(e,n){return new e({type:"number",check:"number_format",abort:!1,format:"safeint",...be(n)})}function XT(e,n){return new e({type:"boolean",...be(n)})}function JT(e,n){return new e({type:"null",...be(n)})}function WT(e){return new e({type:"unknown"})}function eE(e,n){return new e({type:"never",...be(n)})}function tv(e,n){return new Z0({check:"less_than",...be(n),value:e,inclusive:!1})}function Ef(e,n){return new Z0({check:"less_than",...be(n),value:e,inclusive:!0})}function nv(e,n){return new Y0({check:"greater_than",...be(n),value:e,inclusive:!1})}function Of(e,n){return new Y0({check:"greater_than",...be(n),value:e,inclusive:!0})}function av(e,n){return new f_({check:"multiple_of",...be(n),value:e})}function nS(e,n){return new m_({check:"max_length",...be(n),maximum:e})}function wc(e,n){return new h_({check:"min_length",...be(n),minimum:e})}function aS(e,n){return new g_({check:"length_equals",...be(n),length:e})}function tE(e,n){return new y_({check:"string_format",format:"regex",...be(n),pattern:e})}function nE(e){return new b_({check:"string_format",format:"lowercase",...be(e)})}function aE(e){return new v_({check:"string_format",format:"uppercase",...be(e)})}function iE(e,n){return new S_({check:"string_format",format:"includes",...be(n),includes:e})}function sE(e,n){return new x_({check:"string_format",format:"starts_with",...be(n),prefix:e})}function rE(e,n){return new w_({check:"string_format",format:"ends_with",...be(n),suffix:e})}function or(e){return new j_({check:"overwrite",tx:e})}function oE(e){return or(n=>n.normalize(e))}function lE(){return or(e=>e.trim())}function cE(){return or(e=>e.toLowerCase())}function uE(){return or(e=>e.toUpperCase())}function dE(){return or(e=>g2(e))}function fE(e,n,i){return new e({type:"array",element:n,...be(i)})}function pE(e,n,i){return new e({type:"custom",check:"custom",fn:n,...be(i)})}function mE(e){const n=hE(i=>(i.addIssue=r=>{if(typeof r=="string")i.issues.push(wo(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(wo(l))}},e(i.value,i)));return n}function hE(e,n){const i=new ln({check:"custom",...be(n)});return i._zod.check=e,i}function iS(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??go,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 Et(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 x={...i,schemaPath:[...i.schemaPath,e],path:i.path};if(e._zod.processJSONSchema)e._zod.processJSONSchema(n,d.schema,x);else{const N=d.schema,C=n.processors[l.type];if(!C)throw new Error(`[toJSONSchema]: Non-representable type encountered: ${l.type}`);C(e,n,N,x)}const w=e._zod.parent;w&&(d.ref||(d.ref=w),Et(w,n,x),n.seen.get(w).isParent=!0)}const g=n.metadataRegistry.get(e);return g&&Object.assign(d.schema,g),n.io==="input"&&Qt(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 sS(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 w=e.external.registry.get(d[0])?.id,N=e.external.uri??(D=>D);if(w)return{ref:N(w)};const C=d[1].defId??d[1].schema.id??`schema${e.counter++}`;return d[1].defId=C,{defId:C,ref:`${N("__shared")}#/${h}/${C}`}}if(d[1]===i)return{ref:"#"};const b=`#/${h}/`,x=d[1].schema.id??`__schema${e.counter++}`;return{defId:x,ref:b+x}},c=d=>{if(d[1].schema.$ref)return;const h=d[1],{ref:g,defId:b}=l(d);h.def={...h.schema},b&&(h.defId=b);const x=h.schema;for(const w in x)delete x[w];x.$ref=g};if(e.cycles==="throw")for(const d of e.seen.entries()){const h=d[1];if(h.cycle)throw new Error(`Cycle detected: #/${h.cycle?.join("/")}/<root>
51
51
 
52
- Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(const d of e.seen.entries()){const h=d[1];if(n===d[0]){c(d);continue}if(e.external){const b=e.external.registry.get(d[0])?.id;if(n!==d[0]&&b){c(d);continue}}if(e.metadataRegistry.get(d[0])?.id){c(d);continue}if(h.cycle){c(d);continue}if(h.count>1&&e.reused==="ref"){c(d);continue}}}function rS(e,n){const i=e.seen.get(n);if(!i)throw new Error("Unprocessed schema. This is a bug in Zod.");const r=d=>{const h=e.seen.get(d);if(h.ref===null)return;const g=h.def??h.schema,b={...g},x=h.ref;if(h.ref=null,x){r(x);const N=e.seen.get(x),C=N.schema;if(C.$ref&&(e.target==="draft-07"||e.target==="draft-04"||e.target==="openapi-3.0")?(g.allOf=g.allOf??[],g.allOf.push(C)):Object.assign(g,C),Object.assign(g,b),d._zod.parent===x)for(const A in g)A==="$ref"||A==="allOf"||A in b||delete g[A];if(C.$ref&&N.def)for(const A in g)A==="$ref"||A==="allOf"||A in N.def&&JSON.stringify(g[A])===JSON.stringify(N.def[A])&&delete g[A]}const w=d._zod.parent;if(w&&w!==x){r(w);const N=e.seen.get(w);if(N?.schema.$ref&&(g.$ref=N.schema.$ref,N.def))for(const C in g)C==="$ref"||C==="allOf"||C in N.def&&JSON.stringify(g[C])===JSON.stringify(N.def[C])&&delete g[C]}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:jc(n,"input",e.processors),output:jc(n,"output",e.processors)}},enumerable:!1,writable:!1}),d}catch{throw new Error("Error converting schema to JSON.")}}function Qt(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 Qt(r.element,i);if(r.type==="set")return Qt(r.valueType,i);if(r.type==="lazy")return Qt(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 Qt(r.innerType,i);if(r.type==="intersection")return Qt(r.left,i)||Qt(r.right,i);if(r.type==="record"||r.type==="map")return Qt(r.keyType,i)||Qt(r.valueType,i);if(r.type==="pipe")return Qt(r.in,i)||Qt(r.out,i);if(r.type==="object"){for(const l in r.shape)if(Qt(r.shape[l],i))return!0;return!1}if(r.type==="union"){for(const l of r.options)if(Qt(l,i))return!0;return!1}if(r.type==="tuple"){for(const l of r.items)if(Qt(l,i))return!0;return!!(r.rest&&Qt(r.rest,i))}return!1}const gE=(e,n={})=>i=>{const r=iS({...i,processors:n});return Et(e,r),sS(r,e),rS(r,e)},jc=(e,n,i={})=>r=>{const{libraryOptions:l,target:c}=r??{},d=iS({...l??{},target:c,io:n,processors:i});return Et(e,d),sS(d,e),rS(d,e)},yE={guid:"uuid",url:"uri",datetime:"date-time",json_string:"json-string",regex:""},bE=(e,n,i,r)=>{const l=i;l.type="string";const{minimum:c,maximum:d,format:h,patterns:g,contentEncoding:b}=e._zod.bag;if(typeof c=="number"&&(l.minLength=c),typeof d=="number"&&(l.maxLength=d),h&&(l.format=yE[h]??h,l.format===""&&delete l.format,h==="time"&&delete l.format),b&&(l.contentEncoding=b),g&&g.size>0){const x=[...g];x.length===1?l.pattern=x[0].source:x.length>1&&(l.allOf=[...x.map(w=>({...n.target==="draft-07"||n.target==="draft-04"||n.target==="openapi-3.0"?{type:"string"}:{},pattern:w.source}))])}},vE=(e,n,i,r)=>{const l=i,{minimum:c,maximum:d,format:h,multipleOf:g,exclusiveMaximum:b,exclusiveMinimum:x}=e._zod.bag;typeof h=="string"&&h.includes("int")?l.type="integer":l.type="number",typeof x=="number"&&(n.target==="draft-04"||n.target==="openapi-3.0"?(l.minimum=x,l.exclusiveMinimum=!0):l.exclusiveMinimum=x),typeof c=="number"&&(l.minimum=c,typeof x=="number"&&n.target!=="draft-04"&&(x>=c?delete l.minimum:delete l.exclusiveMinimum)),typeof b=="number"&&(n.target==="draft-04"||n.target==="openapi-3.0"?(l.maximum=b,l.exclusiveMaximum=!0):l.exclusiveMaximum=b),typeof d=="number"&&(l.maximum=d,typeof b=="number"&&n.target!=="draft-04"&&(b<=d?delete l.maximum:delete l.exclusiveMaximum)),typeof g=="number"&&(l.multipleOf=g)},SE=(e,n,i,r)=>{i.type="boolean"},xE=(e,n,i,r)=>{n.target==="openapi-3.0"?(i.type="string",i.nullable=!0,i.enum=[null]):i.type="null"},wE=(e,n,i,r)=>{i.not={}},jE=(e,n,i,r)=>{},NE=(e,n,i,r)=>{const l=e._zod.def,c=L0(l.entries);c.every(d=>typeof d=="number")&&(i.type="number"),c.every(d=>typeof d=="string")&&(i.type="string"),i.enum=c},kE=(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},AE=(e,n,i,r)=>{if(n.unrepresentable==="throw")throw new Error("Custom types cannot be represented in JSON Schema")},CE=(e,n,i,r)=>{if(n.unrepresentable==="throw")throw new Error("Transforms cannot be represented in JSON Schema")},_E=(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=Et(c.element,n,{...r,path:[...r.path,"items"]})},TE=(e,n,i,r)=>{const l=i,c=e._zod.def;l.type="object",l.properties={};const d=c.shape;for(const b in d)l.properties[b]=Et(d[b],n,{...r,path:[...r.path,"properties",b]});const h=new Set(Object.keys(d)),g=new Set([...h].filter(b=>{const x=c.shape[b]._zod;return n.io==="input"?x.optin===void 0:x.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=Et(c.catchall,n,{...r,path:[...r.path,"additionalProperties"]})):n.io==="output"&&(l.additionalProperties=!1)},EE=(e,n,i,r)=>{const l=e._zod.def,c=l.inclusive===!1,d=l.options.map((h,g)=>Et(h,n,{...r,path:[...r.path,c?"oneOf":"anyOf",g]}));c?i.oneOf=d:i.anyOf=d},OE=(e,n,i,r)=>{const l=e._zod.def,c=Et(l.left,n,{...r,path:[...r.path,"allOf",0]}),d=Et(l.right,n,{...r,path:[...r.path,"allOf",1]}),h=b=>"allOf"in b&&Object.keys(b).length===1,g=[...h(c)?c.allOf:[c],...h(d)?d.allOf:[d]];i.allOf=g},DE=(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 x=Et(c.valueType,n,{...r,path:[...r.path,"patternProperties","*"]});l.patternProperties={};for(const w of g)l.patternProperties[w.source]=x}else(n.target==="draft-07"||n.target==="draft-2020-12")&&(l.propertyNames=Et(c.keyType,n,{...r,path:[...r.path,"propertyNames"]})),l.additionalProperties=Et(c.valueType,n,{...r,path:[...r.path,"additionalProperties"]});const b=d._zod.values;if(b){const x=[...b].filter(w=>typeof w=="string"||typeof w=="number");x.length>0&&(l.required=x)}},zE=(e,n,i,r)=>{const l=e._zod.def,c=Et(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"}]},RE=(e,n,i,r)=>{const l=e._zod.def;Et(l.innerType,n,r);const c=n.seen.get(e);c.ref=l.innerType},ME=(e,n,i,r)=>{const l=e._zod.def;Et(l.innerType,n,r);const c=n.seen.get(e);c.ref=l.innerType,i.default=JSON.parse(JSON.stringify(l.defaultValue))},BE=(e,n,i,r)=>{const l=e._zod.def;Et(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)))},LE=(e,n,i,r)=>{const l=e._zod.def;Et(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},qE=(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;Et(c,n,r);const d=n.seen.get(e);d.ref=c},UE=(e,n,i,r)=>{const l=e._zod.def;Et(l.innerType,n,r);const c=n.seen.get(e);c.ref=l.innerType,i.readOnly=!0},oS=(e,n,i,r)=>{const l=e._zod.def;Et(l.innerType,n,r);const c=n.seen.get(e);c.ref=l.innerType},$E=Z("ZodISODateTime",(e,n)=>{L_.init(e,n),gt.init(e,n)});function lS(e){return GT($E,e)}const IE=Z("ZodISODate",(e,n)=>{q_.init(e,n),gt.init(e,n)});function PE(e){return HT(IE,e)}const VE=Z("ZodISOTime",(e,n)=>{U_.init(e,n),gt.init(e,n)});function GE(e){return KT(VE,e)}const HE=Z("ZodISODuration",(e,n)=>{$_.init(e,n),gt.init(e,n)});function KE(e){return QT(HE,e)}const QE=(e,n)=>{I0.init(e,n),e.name="ZodError",Object.defineProperties(e,{format:{value:i=>T2(e,i)},flatten:{value:i=>_2(e,i)},addIssue:{value:i=>{e.issues.push(i),e.message=JSON.stringify(e.issues,Wf,2)}},addIssues:{value:i=>{e.issues.push(...i),e.message=JSON.stringify(e.issues,Wf,2)}},isEmpty:{get(){return e.issues.length===0}}})},Rn=Z("ZodError",QE,{Parent:Error}),ZE=Mp(Rn),YE=Bp(Rn),FE=Mc(Rn),XE=Bc(Rn),JE=D2(Rn),WE=z2(Rn),eO=R2(Rn),tO=M2(Rn),nO=B2(Rn),aO=L2(Rn),iO=q2(Rn),sO=U2(Rn),ht=Z("ZodType",(e,n)=>(pt.init(e,n),Object.assign(e["~standard"],{jsonSchema:{input:jc(e,"input"),output:jc(e,"output")}}),e.toJSONSchema=gE(e,{}),e.def=n,e.type=n.type,Object.defineProperty(e,"_def",{value:n}),e.check=(...i)=>e.clone(ci(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)=>ui(e,i,r),e.brand=()=>e,e.register=((i,r)=>(i.add(e,r),e)),e.parse=(i,r)=>ZE(e,i,r,{callee:e.parse}),e.safeParse=(i,r)=>FE(e,i,r),e.parseAsync=async(i,r)=>YE(e,i,r,{callee:e.parseAsync}),e.safeParseAsync=async(i,r)=>XE(e,i,r),e.spa=e.safeParseAsync,e.encode=(i,r)=>JE(e,i,r),e.decode=(i,r)=>WE(e,i,r),e.encodeAsync=async(i,r)=>eO(e,i,r),e.decodeAsync=async(i,r)=>tO(e,i,r),e.safeEncode=(i,r)=>nO(e,i,r),e.safeDecode=(i,r)=>aO(e,i,r),e.safeEncodeAsync=async(i,r)=>iO(e,i,r),e.safeDecodeAsync=async(i,r)=>sO(e,i,r),e.refine=(i,r)=>e.check(JO(i,r)),e.superRefine=i=>e.check(WO(i)),e.overwrite=i=>e.check(or(i)),e.optional=()=>rv(e),e.exactOptional=()=>UO(e),e.nullable=()=>ov(e),e.nullish=()=>rv(ov(e)),e.nonoptional=i=>HO(e,i),e.array=()=>k(e),e.or=i=>Dn([e,i]),e.and=i=>RO(e,i),e.transform=i=>np(e,dS(i)),e.default=i=>PO(e,i),e.prefault=i=>GO(e,i),e.catch=i=>QO(e,i),e.pipe=i=>np(e,i),e.readonly=()=>FO(e),e.describe=i=>{const r=e.clone();return go.add(r,{description:i}),r},Object.defineProperty(e,"description",{get(){return go.get(e)?.description},configurable:!0}),e.meta=(...i)=>{if(i.length===0)return go.get(e);const r=e.clone();return go.add(r,i[0]),r},e.isOptional=()=>e.safeParse(void 0).success,e.isNullable=()=>e.safeParse(null).success,e.apply=i=>i(e),e)),cS=Z("_ZodString",(e,n)=>{Lp.init(e,n),ht.init(e,n),e._zod.processJSONSchema=(r,l,c)=>bE(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(tE(...r)),e.includes=(...r)=>e.check(iE(...r)),e.startsWith=(...r)=>e.check(sE(...r)),e.endsWith=(...r)=>e.check(rE(...r)),e.min=(...r)=>e.check(wc(...r)),e.max=(...r)=>e.check(nS(...r)),e.length=(...r)=>e.check(aS(...r)),e.nonempty=(...r)=>e.check(wc(1,...r)),e.lowercase=r=>e.check(nE(r)),e.uppercase=r=>e.check(aE(r)),e.trim=()=>e.check(lE()),e.normalize=(...r)=>e.check(oE(...r)),e.toLowerCase=()=>e.check(cE()),e.toUpperCase=()=>e.check(uE()),e.slugify=()=>e.check(dE())}),rO=Z("ZodString",(e,n)=>{Lp.init(e,n),cS.init(e,n),e.email=i=>e.check(jT(oO,i)),e.url=i=>e.check(_T(lO,i)),e.jwt=i=>e.check(VT(jO,i)),e.emoji=i=>e.check(TT(cO,i)),e.guid=i=>e.check(ev(iv,i)),e.uuid=i=>e.check(NT(sc,i)),e.uuidv4=i=>e.check(kT(sc,i)),e.uuidv6=i=>e.check(AT(sc,i)),e.uuidv7=i=>e.check(CT(sc,i)),e.nanoid=i=>e.check(ET(uO,i)),e.guid=i=>e.check(ev(iv,i)),e.cuid=i=>e.check(OT(dO,i)),e.cuid2=i=>e.check(DT(fO,i)),e.ulid=i=>e.check(zT(pO,i)),e.base64=i=>e.check($T(SO,i)),e.base64url=i=>e.check(IT(xO,i)),e.xid=i=>e.check(RT(mO,i)),e.ksuid=i=>e.check(MT(hO,i)),e.ipv4=i=>e.check(BT(gO,i)),e.ipv6=i=>e.check(LT(yO,i)),e.cidrv4=i=>e.check(qT(bO,i)),e.cidrv6=i=>e.check(UT(vO,i)),e.e164=i=>e.check(PT(wO,i)),e.datetime=i=>e.check(lS(i)),e.date=i=>e.check(PE(i)),e.time=i=>e.check(GE(i)),e.duration=i=>e.check(KE(i))});function u(e){return wT(rO,e)}const gt=Z("ZodStringFormat",(e,n)=>{mt.init(e,n),cS.init(e,n)}),oO=Z("ZodEmail",(e,n)=>{__.init(e,n),gt.init(e,n)}),iv=Z("ZodGUID",(e,n)=>{A_.init(e,n),gt.init(e,n)}),sc=Z("ZodUUID",(e,n)=>{C_.init(e,n),gt.init(e,n)}),lO=Z("ZodURL",(e,n)=>{T_.init(e,n),gt.init(e,n)}),cO=Z("ZodEmoji",(e,n)=>{E_.init(e,n),gt.init(e,n)}),uO=Z("ZodNanoID",(e,n)=>{O_.init(e,n),gt.init(e,n)}),dO=Z("ZodCUID",(e,n)=>{D_.init(e,n),gt.init(e,n)}),fO=Z("ZodCUID2",(e,n)=>{z_.init(e,n),gt.init(e,n)}),pO=Z("ZodULID",(e,n)=>{R_.init(e,n),gt.init(e,n)}),mO=Z("ZodXID",(e,n)=>{M_.init(e,n),gt.init(e,n)}),hO=Z("ZodKSUID",(e,n)=>{B_.init(e,n),gt.init(e,n)}),gO=Z("ZodIPv4",(e,n)=>{I_.init(e,n),gt.init(e,n)}),yO=Z("ZodIPv6",(e,n)=>{P_.init(e,n),gt.init(e,n)}),bO=Z("ZodCIDRv4",(e,n)=>{V_.init(e,n),gt.init(e,n)}),vO=Z("ZodCIDRv6",(e,n)=>{G_.init(e,n),gt.init(e,n)}),SO=Z("ZodBase64",(e,n)=>{H_.init(e,n),gt.init(e,n)}),xO=Z("ZodBase64URL",(e,n)=>{Q_.init(e,n),gt.init(e,n)}),wO=Z("ZodE164",(e,n)=>{Z_.init(e,n),gt.init(e,n)}),jO=Z("ZodJWT",(e,n)=>{F_.init(e,n),gt.init(e,n)}),qp=Z("ZodNumber",(e,n)=>{X0.init(e,n),ht.init(e,n),e._zod.processJSONSchema=(r,l,c)=>vE(e,r,l),e.gt=(r,l)=>e.check(nv(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(tv(r,l)),e.lte=(r,l)=>e.check(Ef(r,l)),e.max=(r,l)=>e.check(Ef(r,l)),e.int=r=>e.check(sv(r)),e.safe=r=>e.check(sv(r)),e.positive=r=>e.check(nv(0,r)),e.nonnegative=r=>e.check(Of(0,r)),e.negative=r=>e.check(tv(0,r)),e.nonpositive=r=>e.check(Ef(0,r)),e.multipleOf=(r,l)=>e.check(av(r,l)),e.step=(r,l)=>e.check(av(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 y(e){return ZT(qp,e)}const NO=Z("ZodNumberFormat",(e,n)=>{X_.init(e,n),qp.init(e,n)});function sv(e){return FT(NO,e)}const kO=Z("ZodBoolean",(e,n)=>{J_.init(e,n),ht.init(e,n),e._zod.processJSONSchema=(i,r,l)=>SE(e,i,r)});function ne(e){return XT(kO,e)}const AO=Z("ZodNull",(e,n)=>{W_.init(e,n),ht.init(e,n),e._zod.processJSONSchema=(i,r,l)=>xE(e,i,r)});function ze(e){return JT(AO,e)}const CO=Z("ZodUnknown",(e,n)=>{eT.init(e,n),ht.init(e,n),e._zod.processJSONSchema=(i,r,l)=>jE()});function Pn(){return WT(CO)}const _O=Z("ZodNever",(e,n)=>{tT.init(e,n),ht.init(e,n),e._zod.processJSONSchema=(i,r,l)=>wE(e,i,r)});function TO(e){return eE(_O,e)}const EO=Z("ZodArray",(e,n)=>{nT.init(e,n),ht.init(e,n),e._zod.processJSONSchema=(i,r,l)=>_E(e,i,r,l),e.element=n.element,e.min=(i,r)=>e.check(wc(i,r)),e.nonempty=i=>e.check(wc(1,i)),e.max=(i,r)=>e.check(nS(i,r)),e.length=(i,r)=>e.check(aS(i,r)),e.unwrap=()=>e.element});function k(e,n){return fE(EO,e,n)}const OO=Z("ZodObject",(e,n)=>{iT.init(e,n),ht.init(e,n),e._zod.processJSONSchema=(i,r,l)=>TE(e,i,r,l),Qe(e,"shape",()=>n.shape),e.keyof=()=>H(Object.keys(e._zod.def.shape)),e.catchall=i=>e.clone({...e._zod.def,catchall:i}),e.passthrough=()=>e.clone({...e._zod.def,catchall:Pn()}),e.loose=()=>e.clone({...e._zod.def,catchall:Pn()}),e.strict=()=>e.clone({...e._zod.def,catchall:TO()}),e.strip=()=>e.clone({...e._zod.def,catchall:void 0}),e.extend=i=>j2(e,i),e.safeExtend=i=>N2(e,i),e.merge=i=>k2(e,i),e.pick=i=>x2(e,i),e.omit=i=>w2(e,i),e.partial=(...i)=>A2(fS,e,i[0]),e.required=(...i)=>C2(pS,e,i[0])});function S(e,n){const i={type:"object",shape:e??{},...be(n)};return new OO(i)}const uS=Z("ZodUnion",(e,n)=>{eS.init(e,n),ht.init(e,n),e._zod.processJSONSchema=(i,r,l)=>EE(e,i,r,l),e.options=n.options});function Dn(e,n){return new uS({type:"union",options:e,...be(n)})}const DO=Z("ZodDiscriminatedUnion",(e,n)=>{uS.init(e,n),sT.init(e,n)});function _o(e,n,i){return new DO({type:"union",options:n,discriminator:e,...be(i)})}const zO=Z("ZodIntersection",(e,n)=>{rT.init(e,n),ht.init(e,n),e._zod.processJSONSchema=(i,r,l)=>OE(e,i,r,l)});function RO(e,n){return new zO({type:"intersection",left:e,right:n})}const MO=Z("ZodRecord",(e,n)=>{oT.init(e,n),ht.init(e,n),e._zod.processJSONSchema=(i,r,l)=>DE(e,i,r,l),e.keyType=n.keyType,e.valueType=n.valueType});function He(e,n,i){return new MO({type:"record",keyType:e,valueType:n,...be(i)})}const tp=Z("ZodEnum",(e,n)=>{lT.init(e,n),ht.init(e,n),e._zod.processJSONSchema=(r,l,c)=>NE(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 tp({...n,checks:[],...be(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 tp({...n,checks:[],...be(l),entries:c})}});function H(e,n){const i=Array.isArray(e)?Object.fromEntries(e.map(r=>[r,r])):e;return new tp({type:"enum",entries:i,...be(n)})}const BO=Z("ZodLiteral",(e,n)=>{cT.init(e,n),ht.init(e,n),e._zod.processJSONSchema=(i,r,l)=>kE(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 De(e,n){return new BO({type:"literal",values:Array.isArray(e)?e:[e],...be(n)})}const LO=Z("ZodTransform",(e,n)=>{uT.init(e,n),ht.init(e,n),e._zod.processJSONSchema=(i,r,l)=>CE(e,i),e._zod.parse=(i,r)=>{if(r.direction==="backward")throw new M0(e.constructor.name);i.addIssue=c=>{if(typeof c=="string")i.issues.push(wo(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(wo(d))}};const l=n.transform(i.value,i);return l instanceof Promise?l.then(c=>(i.value=c,i)):(i.value=l,i)}});function dS(e){return new LO({type:"transform",transform:e})}const fS=Z("ZodOptional",(e,n)=>{tS.init(e,n),ht.init(e,n),e._zod.processJSONSchema=(i,r,l)=>oS(e,i,r,l),e.unwrap=()=>e._zod.def.innerType});function rv(e){return new fS({type:"optional",innerType:e})}const qO=Z("ZodExactOptional",(e,n)=>{dT.init(e,n),ht.init(e,n),e._zod.processJSONSchema=(i,r,l)=>oS(e,i,r,l),e.unwrap=()=>e._zod.def.innerType});function UO(e){return new qO({type:"optional",innerType:e})}const $O=Z("ZodNullable",(e,n)=>{fT.init(e,n),ht.init(e,n),e._zod.processJSONSchema=(i,r,l)=>zE(e,i,r,l),e.unwrap=()=>e._zod.def.innerType});function ov(e){return new $O({type:"nullable",innerType:e})}const IO=Z("ZodDefault",(e,n)=>{pT.init(e,n),ht.init(e,n),e._zod.processJSONSchema=(i,r,l)=>ME(e,i,r,l),e.unwrap=()=>e._zod.def.innerType,e.removeDefault=e.unwrap});function PO(e,n){return new IO({type:"default",innerType:e,get defaultValue(){return typeof n=="function"?n():U0(n)}})}const VO=Z("ZodPrefault",(e,n)=>{mT.init(e,n),ht.init(e,n),e._zod.processJSONSchema=(i,r,l)=>BE(e,i,r,l),e.unwrap=()=>e._zod.def.innerType});function GO(e,n){return new VO({type:"prefault",innerType:e,get defaultValue(){return typeof n=="function"?n():U0(n)}})}const pS=Z("ZodNonOptional",(e,n)=>{hT.init(e,n),ht.init(e,n),e._zod.processJSONSchema=(i,r,l)=>RE(e,i,r,l),e.unwrap=()=>e._zod.def.innerType});function HO(e,n){return new pS({type:"nonoptional",innerType:e,...be(n)})}const KO=Z("ZodCatch",(e,n)=>{gT.init(e,n),ht.init(e,n),e._zod.processJSONSchema=(i,r,l)=>LE(e,i,r,l),e.unwrap=()=>e._zod.def.innerType,e.removeCatch=e.unwrap});function QO(e,n){return new KO({type:"catch",innerType:e,catchValue:typeof n=="function"?n:()=>n})}const ZO=Z("ZodPipe",(e,n)=>{yT.init(e,n),ht.init(e,n),e._zod.processJSONSchema=(i,r,l)=>qE(e,i,r,l),e.in=n.in,e.out=n.out});function np(e,n){return new ZO({type:"pipe",in:e,out:n})}const YO=Z("ZodReadonly",(e,n)=>{bT.init(e,n),ht.init(e,n),e._zod.processJSONSchema=(i,r,l)=>UE(e,i,r,l),e.unwrap=()=>e._zod.def.innerType});function FO(e){return new YO({type:"readonly",innerType:e})}const XO=Z("ZodCustom",(e,n)=>{vT.init(e,n),ht.init(e,n),e._zod.processJSONSchema=(i,r,l)=>AE(e,i)});function JO(e,n={}){return pE(XO,e,n)}function WO(e){return mE(e)}function eD(e,n){return np(dS(e),n)}function tD(e){return YT(qp,e)}const mS=S({id:u(),name:u(),keyPrefix:u(),scopes:k(u()),projectId:u().nullable(),readOnly:ne(),createdAt:u(),lastUsedAt:u().nullable(),revokedAt:u().nullable()});S({keys:k(mS)});S({name:u().min(1).max(100),scopes:k(u()).min(1).optional(),projectId:u().optional()});mS.extend({key:u()});const nD=S({maxConcurrency:y().int().positive(),maxRequestsPerMinute:y().int().positive(),maxRequestsPerDay:y().int().positive()}),Aa=u().min(1),Up=He(u(),u().trim().min(1));u().min(1);const qc=S({label:u().min(1),city:u().min(1),region:u().min(1),country:u().length(2),timezone:u().optional()}),$p=H(["citation.lost","citation.gained","run.completed","run.failed","insight.critical","insight.high"]);S({id:u(),projectId:u(),channel:De("webhook"),url:u().url(),urlDisplay:u(),urlHost:u(),events:k($p),enabled:ne().default(!0),source:u().optional(),webhookSecret:u().optional(),createdAt:u(),updatedAt:u()});S({channel:De("webhook"),url:u().url(),events:k($p).min(1),source:u().optional()});const hS=H(["cli","api","config-file"]);function aD(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 iD(e,n){return n?e.some(i=>i.label===n):!0}S({displayName:u().min(1),canonicalDomain:u().min(1),ownedDomains:k(u().min(1)).optional(),aliases:k(u()).optional(),country:u().length(2),language:u().min(2),tags:k(u()).optional(),labels:He(u(),u()).optional(),providers:k(Aa).optional(),providerModels:Up.optional(),locations:k(qc).optional(),defaultLocation:u().nullable().optional(),autoExtractBacklinks:ne().optional(),configSource:hS.optional()});const sD=S({id:u(),name:u(),displayName:u().optional(),canonicalDomain:u(),ownedDomains:k(u()).default([]),aliases:k(u()).default([]),country:u().length(2),language:u().min(2),tags:k(u()).default([]),labels:He(u(),u()).default({}),providers:k(u()).default([]),providerModels:Up.default({}),locations:k(qc).default([]),defaultLocation:u().nullable().optional(),autoExtractBacklinks:ne().default(!1),configSource:hS.default("cli"),configRevision:y().int().positive().default(1),createdAt:u().optional(),updatedAt:u().optional()});S({id:u(),query:u(),createdAt:u()});S({id:u(),keyword:u(),createdAt:u()});S({queries:k(u().trim().min(1)).min(1)});S({keywords:k(u().trim().min(1)).min(1)});S({provider:Aa,count:y().int().min(1).max(20).optional()});S({id:u(),domain:u(),createdAt:u()});S({competitors:k(u().trim().min(1)).min(1)});function Nc(e){let n=e.trim().toLowerCase();try{n.includes("://")&&(n=new URL(n).hostname.toLowerCase())}catch{}return n.replace(/^www\./,"")}const rD=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 oD(e){const n=Nc(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 rD.has(l)?r.length>=3?r.slice(-3).join("."):"":r.slice(-2).join(".")}function lD(e){const n=oD(e);return n?n.split(".")[0]??"":""}function cD(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=Nc(c);i.has(d)||(i.add(d),r.push(c))}return r}const uD=S({name:u().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:He(u(),u()).optional().default({})}),dD=S({preset:u().optional(),cron:u().optional(),timezone:u().optional().default("UTC"),providers:k(Aa).optional().default([])}).refine(e=>e.preset&&!e.cron||!e.preset&&e.cron,{message:'Exactly one of "preset" or "cron" must be provided'}).optional(),fD=S({channel:De("webhook"),url:u().url(),events:k($p).min(1)}),pD=S({gsc:S({propertyUrl:u()}).optional(),syncSchedule:S({preset:u().optional(),cron:u().optional()}).optional()}).optional(),lv=k(u().min(1)),mD=S({displayName:u().min(1),canonicalDomain:u().min(1),ownedDomains:k(u().min(1)).optional().default([]),aliases:k(u().min(1)).optional().default([]),country:u().length(2),language:u().min(2),queries:lv.optional(),keywords:lv.optional(),competitors:k(u().min(1)).optional().default([]),providers:k(Aa).optional().default([]),providerModels:Up.optional().default({}),locations:k(qc).optional().default([]),defaultLocation:u().optional(),schedule:dD,notifications:k(fD).optional().default([]),google:pD,autoExtractBacklinks:ne().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=aD(e.locations);i.length>0&&n.addIssue({code:"custom",message:`Duplicate location labels are not allowed: ${i.join(", ")}`,path:["locations"]}),iD(e.locations,e.defaultLocation)||n.addIssue({code:"custom",message:`defaultLocation "${e.defaultLocation}" must match a configured location label`,path:["defaultLocation"]})});S({apiVersion:De("canonry/v1"),kind:De("Project"),metadata:uD,spec:mD});const gS=H(["introduced","repointed","retired"]),hD=gS.enum;S({modelId:u().trim().min(1),date:u().regex(/^\d{4}-\d{2}-\d{2}$/,"date must be YYYY-MM-DD"),kind:gS,confirmed:ne(),sourceUrl:u().url(),note:u().min(1)});const gD=[{modelId:"chatgpt-4o-latest",date:"2024-08-15",kind:"introduced",confirmed:!0,sourceUrl:"https://developers.openai.com/api/docs/changelog",note:'Verbatim: "Released dynamic model for chatgpt-4o-latest—this model will point to the latest GPT-4o model used by ChatGPT." First moving id in the lineage.'},{modelId:"chatgpt-4o-latest",date:"2026-02-17",kind:"retired",confirmed:!0,sourceUrl:"https://developers.openai.com/api/docs/deprecations.md",note:'Shutdown 2026-02-17, replacement gpt-5.1-chat-latest. Announced under the heading "2025-11-18: chatgpt-4o-latest snapshot".'},{modelId:"gpt-5.1-chat-latest",date:"2025-11-13",kind:"introduced",confirmed:!0,sourceUrl:"https://developers.openai.com/api/docs/changelog",note:"Introduced inside the GPT-5.1 launch entry, not as a standalone entry."},{modelId:"gpt-5.2-chat-latest",date:"2025-12-11",kind:"introduced",confirmed:!0,sourceUrl:"https://developers.openai.com/api/docs/changelog",note:"Introduced inside the GPT-5.2 launch entry."},{modelId:"gpt-5.2-chat-latest",date:"2026-02-10",kind:"repointed",confirmed:!0,sourceUrl:"https://developers.openai.com/api/docs/changelog",note:'Verbatim: "Updated the gpt-5.2-chat-latest slug to point to the latest model currently used in ChatGPT." Target model NOT named.'},{modelId:"gpt-5.3-chat-latest",date:"2026-03-03",kind:"introduced",confirmed:!0,sourceUrl:"https://developers.openai.com/api/docs/changelog",note:'Verbatim: "Released gpt-5.3-chat-latest to the Chat Completions and Responses API. This model points to the GPT-5.3 Instant snapshot currently used in ChatGPT."'},{modelId:"gpt-5.3-chat-latest",date:"2026-03-16",kind:"repointed",confirmed:!0,sourceUrl:"https://developers.openai.com/api/docs/changelog",note:'Verbatim: "Updated the gpt-5.3-chat-latest slug to point to the latest model currently used in ChatGPT." Target model NOT named.'},{modelId:"chat-latest",date:"2026-05-05",kind:"introduced",confirmed:!0,sourceUrl:"https://developers.openai.com/api/docs/changelog",note:'Verbatim: "Released chat-latest snapshot which points to the latest Instant model currently used in ChatGPT... The underlying model snapshot will be regularly updated."'},{modelId:"chat-latest",date:"2026-05-28",kind:"repointed",confirmed:!1,sourceUrl:"https://developers.openai.com/api/docs/changelog",note:'UNCONFIRMED. The entry reads "Released chat-latest snapshot..." — the verb is "Released", the same boilerplate as the 2026-05-05 entry, not "Updated" as used on 2026-06-24. Only "the latest improvements" vs "our latest improvements" differs. Either a real change logged with copy-pasted text, or a duplicated entry; the record does not disambiguate.'},{modelId:"chat-latest",date:"2026-06-24",kind:"repointed",confirmed:!0,sourceUrl:"https://developers.openai.com/api/docs/changelog",note:'Verbatim (re-read at source 2026-07-20): "Updated the chat-latest snapshot, which points to the latest Instant model currently used in ChatGPT." The verb is "Updated", unlike the "Released" boilerplate of 2026-05-05 and 2026-05-28, which is the wording the changelog reserves for a real change. Target model NOT named. The only unambiguous chat-latest change on record.'}];hD.repointed;new Set(gD.map(e=>e.modelId.toLowerCase()));const yD=H(["not-exposed","no-known-change","known-change"]);yD.enum;const bD=S({modelId:u().trim().min(1),date:u().regex(/^\d{4}-\d{2}-\d{2}$/),confirmed:ne(),sourceUrl:u().url()}),vD=S({status:H(["no-known-change","known-change"]),modelIds:k(u().trim().min(1)).min(1),changes:k(bD),changeCount:y().int().nonnegative(),unverifiedChangeCount:y().int().nonnegative(),firstChangeDate:u().optional(),lastChangeDate:u().optional(),knownGoodAsOf:u(),checkedThroughPeriodEnd:ne()}),SD={openai:"ChatGPT",chatgpt:"ChatGPT",anthropic:"Claude",claude:"Claude",google:"Gemini",gemini:"Gemini",perplexity:"Perplexity"};function xD(e){const n=e.trim().toLowerCase();return SD[n]??e.charAt(0).toUpperCase()+e.slice(1)}function Df(e){return typeof e=="number"&&Number.isFinite(e)&&e>0?Math.floor(e):0}function co(e){return typeof e=="string"&&e.trim().length>=10?e.trim().slice(0,10):null}function zf(e){return[...new Set(e.filter(n=>n!==null))].sort()}function wD(e,n){const i=xD(e),r=Array.isArray(n.changes)?n.changes:[],l=Df(n.changeCount)||r.length,c=Math.min(l,Df(n.unverifiedChangeCount)||Df(n.unconfirmedChangeCount)||r.filter(x=>x.confirmed===!1).length),d=co(n.knownGoodAsOf),h=n.checkedThroughPeriodEnd!==!1,g={engine:i,confirmedCount:l-c,unconfirmedCount:c,knownGoodAsOf:d,checkedThroughPeriodEnd:h};if(r.length>0)return{...g,confirmedDates:zf(r.filter(x=>x.confirmed!==!1).map(x=>co(x.date))),unconfirmedDates:zf(r.filter(x=>x.confirmed===!1).map(x=>co(x.date)))};const b=zf([co(n.firstChangeDate),co(n.lastChangeDate)]);return l===0?{...g,confirmedDates:[],unconfirmedDates:[]}:c===0?{...g,confirmedDates:b,unconfirmedDates:[]}:g.confirmedCount===0?{...g,confirmedDates:[],unconfirmedDates:b}:{...g,confirmedDates:[],unconfirmedDates:[]}}function jD(e){return e.length===1?e[0]:e.length===2?`${e[0]} and ${e[1]}`:`${e.slice(0,-1).join(", ")}, and ${e[e.length-1]}`}function cv(e,n){return e.length===0?null:e.length===1&&n<=1?`on ${e[0]}`:`more than once between ${e[0]} and ${e[e.length-1]}`}function ND(e){const n=cv(e.confirmedDates,e.confirmedCount),i=cv(e.unconfirmedDates,e.unconfirmedCount),r=`The model behind ${e.engine}`;if(e.confirmedCount>0&&e.unconfirmedCount===0)return n?`${r} was updated ${n}, inside this period.`:`${r} was updated inside this period.`;if(e.confirmedCount===0)return i?`${r} may have been updated ${i}, inside this period, though that is not confirmed.`:`${r} may have been updated inside this period, though that is not confirmed.`;if(n&&i)return`${r} was updated ${n}, inside this period, and may also have been updated ${i}.`;const l=e.unconfirmedCount>1?"more times":"once more";return`${r} was updated inside this period, and may have been updated ${l}, though that is not confirmed.`}function uv(e){const n=e.filter(r=>!r.checkedThroughPeriodEnd&&r.knownGoodAsOf!==null);return n.length===0?null:`We last checked for model updates on ${n.map(r=>r.knownGoodAsOf).sort()[0]}, and this period runs past that date, so there may be later updates we do not know about.`}function vU(e){const n=Object.entries(e??{}).map(([g,b])=>wD(g,b??{})).sort((g,b)=>g.engine.localeCompare(b.engine));if(n.length===0)return null;const i=n.filter(g=>g.confirmedCount+g.unconfirmedCount>0);if(i.length===0){const g=[...new Set(n.map(C=>C.engine))],b=g.length>1,x=uv(n),w=[...new Set(n.map(C=>C.knownGoodAsOf).filter(C=>C!==null))].sort(),N=x??(w.length>0?`We last checked for model updates on ${w[0]}.`:null);return{kind:"no-known-change",text:`No model updates are on record for ${jD(g)} in this period.`,detail:`${b?"These engines":"This engine"} can be moved onto a different underlying model without the data ever showing a different model name, so we check each period against a record of known updates. Nothing is listed inside this one.${N?` ${N}`:""}`}}const r=i.reduce((g,b)=>g+b.confirmedCount+b.unconfirmedCount,0),l=i.some(g=>g.confirmedCount>0),c=r===1?"this update":"these updates",d=l?`Some of the movement in these numbers may come from ${c} rather than from a real change in how AI answers about you, so compare periods carefully.`:`If so, some of the movement in these numbers may come from ${c} rather than from a real change in how AI answers about you, so compare periods carefully.`,h=uv(n);return{kind:"change",text:`${i.map(ND).join(" ")} ${d}${h?` ${h}`:""}`}}const kD=H(["gsc","ga4","gbp"]);S({id:u(),domain:u(),connectionType:kD,propertyId:u().nullable().optional(),sitemapUrl:u().nullable().optional(),scopes:k(u()).default([]),createdAt:u(),updatedAt:u()});S({date:u(),query:u(),page:u(),country:u().nullable().optional(),device:u().nullable().optional(),clicks:y(),impressions:y(),ctr:y(),position:y()});const AD=S({date:u(),clicks:y(),impressions:y(),ctr:y()});S({totals:S({clicks:y(),impressions:y(),ctr:y(),days:y()}),daily:k(AD)});const ap=S({id:u(),url:u(),indexingState:u().nullable().optional(),verdict:u().nullable().optional(),coverageState:u().nullable().optional(),pageFetchState:u().nullable().optional(),robotsTxtState:u().nullable().optional(),crawlTime:u().nullable().optional(),lastCrawlResult:u().nullable().optional(),isMobileFriendly:ne().nullable().optional(),richResults:k(u()).default([]),referringUrls:k(u()).default([]),inspectedAt:u()});H(["stable","reindexed","deindexed","still-missing","new"]);const CD=S({url:u(),previousState:u().nullable(),currentState:u().nullable(),transitionDate:u()}),_D=S({reason:u(),count:y(),urls:k(ap).default([])});S({summary:S({total:y(),indexed:y(),notIndexed:y(),deindexed:y(),percentage:y()}),lastInspectedAt:u().nullable(),lastSyncedAt:u().nullable(),indexed:k(ap).default([]),notIndexed:k(ap).default([]),deindexed:k(CD).default([]),reasonGroups:k(_D).default([])});S({url:u(),type:H(["URL_UPDATED","URL_DELETED"]),notifiedAt:u()});const TD=S({url:u(),type:H(["URL_UPDATED","URL_DELETED"]),notifiedAt:u(),status:H(["success","error"]),error:u().optional()});S({summary:S({total:y().int().nonnegative(),succeeded:y().int().nonnegative(),failed:y().int().nonnegative()}),results:k(TD).default([])});S({date:u(),indexed:y(),notIndexed:y(),reasonBreakdown:He(u(),y()).default({})});const ED=S({siteUrl:u(),permissionLevel:u()});S({sites:k(ED).default([])});const OD=S({type:u(),submitted:u(),indexed:u()}),DD=S({path:u(),lastSubmitted:u().optional(),isPending:ne().optional(),isSitemapsIndex:ne().optional(),type:u().optional(),lastDownloaded:u().optional(),warnings:u().optional(),errors:u().optional(),contents:k(OD).optional()});S({sitemaps:k(DD).default([])});const zD=S({name:u(),accountName:u().nullable(),type:u().nullable(),role:u().nullable()});S({accounts:k(zD),total:y().int().nonnegative()});const RD=S({id:u(),projectId:u(),accountName:u(),locationName:u(),displayName:u(),primaryCategoryDisplayName:u().nullable(),storefrontAddress:u().nullable(),websiteUri:u().nullable(),placeId:u().nullable(),mapsUri:u().nullable(),additionalCategories:k(u()),description:u().nullable(),serviceArea:He(u(),Pn()).nullable(),regularHours:He(u(),Pn()).nullable(),primaryPhone:u().nullable(),openStatus:u().nullable(),openingDate:u().nullable(),selected:ne(),syncedAt:u().nullable(),createdAt:u(),updatedAt:u()});S({locations:k(RD),totalDiscovered:y().int().nonnegative(),totalSelected:y().int().nonnegative()});S({selectAllNew:ne().default(!0),accountName:u().optional(),switchAccount:ne().default(!1)});S({selected:ne()});S({locationNames:k(u()).optional(),daysOfMetrics:y().int().positive().max(540).optional(),monthsOfKeywords:y().int().positive().max(18).optional()});S({runId:u(),status:u()});const MD=S({locationName:u(),date:u(),metric:u(),value:y().int()});S({metrics:k(MD),total:y().int().nonnegative()});const BD=S({locationName:u(),periodStart:u(),periodEnd:u(),keyword:u(),valueCount:y().int().nullable(),valueThreshold:y().int().nullable()});S({keywords:k(BD),total:y().int().nonnegative(),thresholdedPct:y().int().min(0).max(100)});const LD=S({locationName:u(),placeActionLinkName:u(),placeActionType:u(),uri:u().nullable(),isPreferred:ne(),providerType:u().nullable()});S({placeActions:k(LD),total:y().int().nonnegative()});const qD=S({locationName:u(),populatedGroupCount:y().int().nonnegative(),syncedAt:u(),attributes:He(u(),Pn())});S({lodging:k(qD),total:y().int().nonnegative()});const UD=S({name:u(),valueType:u(),values:k(Dn([ne(),u()])),unsetValues:k(u()),uris:k(u())}),$D=S({locationName:u(),attributeCount:y().int().nonnegative(),syncedAt:u(),attributes:k(UD)});S({attributes:k($D),total:y().int().nonnegative()});const ID=S({locationName:u(),placeId:u(),tier:u(),amenities:k(u()),syncedAt:u(),place:He(u(),Pn())});S({places:k(ID),total:y().int().nonnegative()});S({scope:S({locationName:u().nullable(),locationCount:y().int().nonnegative()}),performance:S({totals:He(u(),y()),recent7d:He(u(),y()),prior7d:He(u(),y()),deltaPct:He(u(),y().nullable())}),freshness:S({dataThroughDate:u().nullable(),latestStoredDate:u().nullable(),pendingDays:y().int().nonnegative()}),timeseries:k(S({date:u(),pending:ne(),metrics:He(u(),y())})),keywords:S({total:y().int().nonnegative(),thresholdedCount:y().int().nonnegative(),thresholdedPct:y().int().min(0).max(100)}),placeActions:S({total:y().int().nonnegative(),hasReservationCta:ne(),hasBookingCta:ne(),hasDirectMerchantCta:ne()}),lodging:S({lodgingLocationCount:y().int().nonnegative(),populatedLodgingCount:y().int().nonnegative(),emptyLodgingCount:y().int().nonnegative()}),profileCompleteness:S({locationCount:y().int().nonnegative(),withSecondaryCategories:y().int().nonnegative(),secondaryCategoryTotal:y().int().nonnegative(),withDescription:y().int().nonnegative(),withServiceArea:y().int().nonnegative(),withHours:y().int().nonnegative(),withPrimaryPhone:y().int().nonnegative(),permanentlyClosed:y().int().nonnegative(),temporarilyClosed:y().int().nonnegative()})});const PD={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 VD(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 SU(e){return PD[e]??VD(e)}const GD=["BUSINESS_DIRECTION_REQUESTS","WEBSITE_CLICKS","CALL_CLICKS"],HD=["BUSINESS_IMPRESSIONS_DESKTOP_SEARCH","BUSINESS_IMPRESSIONS_MOBILE_SEARCH","BUSINESS_IMPRESSIONS_DESKTOP_MAPS","BUSINESS_IMPRESSIONS_MOBILE_MAPS"];function xU(e){return GD.includes(e)?"conversion":HD.includes(e)?"reach":"other"}S({id:u(),domain:u(),siteUrl:u().nullable().optional(),createdAt:u(),updatedAt:u()});const Rf=S({id:u(),url:u(),httpCode:y().nullable().optional(),inIndex:ne().nullable().optional(),lastCrawledDate:u().nullable().optional(),inIndexDate:u().nullable().optional(),inspectedAt:u(),documentSize:y().nullable().optional(),anchorCount:y().nullable().optional(),discoveryDate:u().nullable().optional()});S({summary:S({total:y(),indexed:y(),notIndexed:y(),unknown:y().optional(),percentage:y()}),lastInspectedAt:u().nullable(),indexed:k(Rf).default([]),notIndexed:k(Rf).default([]),unknown:k(Rf).default([]).optional()});S({query:u(),impressions:y(),clicks:y(),ctr:y(),averagePosition:y()});S({date:u(),indexed:y(),notIndexed:y(),unknown:y()});const KD=S({url:u(),status:H(["success","error"]),submittedAt:u(),error:u().optional()});S({summary:S({total:y().int().nonnegative(),succeeded:y().int().nonnegative(),failed:y().int().nonnegative()}),results:k(KD).default([])});const yS=S({url:u(),verified:ne()});S({sites:k(yS).default([])});S({connected:ne(),domain:u(),siteUrl:u().nullable(),createdAt:u().nullable(),updatedAt:u().nullable()});S({connected:ne(),domain:u(),siteUrl:u().nullable(),availableSites:k(yS).default([])});S({siteUrl:u()});const QD=S({name:u(),alive:ne(),lastUsed:u().nullable()});S({connected:ne(),endpoint:u(),version:u().optional(),browserVersion:u().optional(),targets:k(QD).default([])});const lr=H(["live","staging"]);S({projectName:u(),url:u(),stagingUrl:u().optional(),username:u(),defaultEnv:lr,createdAt:u(),updatedAt:u()});const dv=S({url:u(),reachable:ne(),pageCount:y().nullable().optional(),version:u().nullable().optional(),error:u().nullable().optional(),plugins:k(u()).optional(),authenticatedUser:S({id:y(),slug:u()}).nullable().optional()});S({connected:ne(),projectName:u(),defaultEnv:lr,live:dv.nullable(),staging:dv.nullable(),adminUrl:u().nullable().optional()});const ZD=S({id:y(),slug:u(),title:u(),status:u(),modifiedAt:u().nullable().optional(),link:u().nullable().optional()}),bS=S({title:u().nullable(),description:u().nullable(),noindex:ne().nullable(),writable:ne().default(!1),writeTargets:k(u()).default([])}),YD=S({type:u(),json:He(u(),Pn())}),FD=ZD.extend({env:lr,content:u(),seo:bS,schemaBlocks:k(YD).default([])}),fv=FD.extend({contentHash:u(),contentSnippet:u()}),vS=S({manualRequired:De(!0),targetUrl:u(),adminUrl:u().nullable().optional(),content:u(),nextSteps:k(u()).default([])}),XD=S({slug:u(),severity:H(["high","medium","low"]),code:H(["noindex","missing-seo-title","missing-meta-description","missing-schema","thin-content"]),message:u()});S({slug:u(),title:u(),status:u(),wordCount:y(),seo:bS,schemaPresent:ne(),issues:k(XD).default([])});const JD=S({slug:u(),status:H(["applied","skipped","manual"]),error:u().optional(),manualAssist:vS.optional()});S({env:lr,strategy:H(["plugin","manual"]),results:k(JD)});const WD=S({slug:u(),status:H(["deployed","stripped","skipped","failed"]),schemasInjected:k(u()).optional(),manualAssist:vS.optional(),error:u().optional()});S({env:lr,results:k(WD)});const ez=S({slug:u(),title:u(),canonrySchemas:k(u()),thirdPartySchemas:k(u()),hasCanonrySchema:ne()});S({env:lr,pages:k(ez)});const tz=S({name:u(),status:H(["completed","skipped","failed"]),summary:u().optional(),error:u().optional()});S({projectName:u(),steps:k(tz)});S({slug:u(),live:fv,staging:fv,hasDifferences:ne(),differences:S({title:ne(),slug:ne(),content:ne(),seoTitle:ne(),seoDescription:ne(),noindex:ne(),schema:ne()})});const nz=S({name:u(),displayName:u().optional(),keyUrl:u().optional(),modelHint:u().optional(),model:u().optional(),defaultModel:u().optional(),configured:ne(),quota:nD.optional(),vertexConfigured:ne().optional()}),az=S({name:u(),displayName:u(),mode:H(["api","browser"]),modelConfigurable:ne(),defaultModel:u(),knownModels:k(S({id:u(),displayName:u(),tier:H(["flagship","standard","fast","economy"])})).default([]),modelValidationPattern:S({source:u(),flags:u()}),modelValidationHint:u()}),pv=S({configured:ne()});S({providers:k(nz).default([]),providerCatalog:k(az).default([]),google:pv,bing:pv});const Ii=H(["queued","running","completed","partial","failed","cancelled"]),Yt=Ii.enum,SS=H(["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"]),Ce=SS.enum,Ip=H(["manual","scheduled","config-apply","backfill","probe"]),Qs=Ip.enum,oi=H(["cited","not-cited"]),kc=oi.enum,Ac=H(["visible","not-visible"]);Ac.enum;const jo=H(["mentioned","not-mentioned"]);jo.enum;const xS=H(["new","cited","lost","emerging","not-cited"]);xS.enum;const iz=H(["new","mentioned","lost","emerging","not-mentioned"]);iz.enum;const sz=H([Qs.manual,Qs.probe]);S({kind:De(Ce["answer-visibility"]).optional(),trigger:sz.optional(),providers:k(Aa).optional(),queries:k(u().min(1)).min(1).optional(),location:u().min(1).optional(),allLocations:ne().optional(),noLocation:ne().optional()}).refine(e=>+!!e.location+ +!!e.allLocations+ +!!e.noLocation<=1,{message:'Only one of "location", "allLocations", or "noLocation" may be provided'});const rz=S({message:u(),raw:Pn().optional()}),oz=S({message:u().optional(),providers:He(u(),rz).optional()}),lz=S({id:u(),projectId:u(),kind:SS,status:Ii,trigger:Ip.default("manual"),location:u().nullable().optional(),queries:k(u()).nullable().optional(),startedAt:u().nullable().optional(),finishedAt:u().nullable().optional(),error:oz.nullable().optional(),createdAt:u()});function Pp(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 Vp=S({uri:u(),title:u()}),wS=S({id:u(),runId:u(),queryId:u(),query:u().optional(),provider:Aa,citationState:oi,answerMentioned:ne().optional(),visibilityState:Ac.optional(),mentionState:jo.optional(),transition:xS.optional(),answerText:u().nullable().optional(),citedDomains:k(u()).default([]),competitorOverlap:k(u()).default([]),recommendedCompetitors:k(u()).default([]),matchedTerms:k(u()).default([]),groundingSources:k(Vp).default([]),searchQueries:k(u()).default([]),model:u().nullable().optional(),servedModel:u().nullable().optional(),location:u().nullable().optional(),createdAt:u()});S({snapshots:k(wS),total:y().int().nonnegative()});const cz=S({queryId:u().nullable(),query:u().nullable(),run1State:oi.nullable(),run2State:oi.nullable(),run1AnswerMentioned:ne().nullable(),run2AnswerMentioned:ne().nullable(),run1VisibilityState:Ac.nullable(),run2VisibilityState:Ac.nullable(),run1MentionState:jo.nullable().optional(),run2MentionState:jo.nullable().optional(),changed:ne(),visibilityChanged:ne()});S({run1:u(),run2:u(),diff:k(cz)});const uz=lz.extend({snapshots:k(wS).optional()}),dz=S({totalRuns:y().int().nonnegative(),run:uz.nullable()});S({id:u(),projectId:u().nullable().optional(),actor:u(),action:u(),entityType:u(),entityId:u().nullable().optional(),diff:Pn().optional(),userAgent:u().nullable().optional(),actorSession:u().nullable().optional(),createdAt:u()});const fz=H(["yes","no","unknown","not-mentioned"]),mv=k(u().min(1));S({companyName:u().min(1),domain:u().min(1),queries:mv.optional(),phrases:mv.optional(),competitors:k(u().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 pz=S({name:u(),count:y().int().nonnegative()}),mz=S({id:u(),name:u(),weight:y(),score:y(),findings:k(S({type:u(),message:u()})).default([]),recommendations:k(u()).default([])}),hz=S({url:u(),finalUrl:u(),auditedAt:u(),overallScore:y(),summary:u(),factors:k(mz).default([])}),gz=S({industry:u(),summary:u(),services:k(u()).default([]),categoryTerms:k(u()).default([])}),yz=S({provider:u(),displayName:u(),model:u().nullable().optional(),mentioned:ne(),cited:ne(),describedAccurately:fz,accuracyNotes:u().nullable().optional(),incorrectClaims:k(u()).default([]),recommendedCompetitors:k(u()).default([]),citedDomains:k(u()).default([]),groundingSources:k(Vp).default([]),searchQueries:k(u()).default([]),answerText:u(),error:u().nullable().optional()}),bz=S({query:u(),providerResults:k(yz).default([])}),vz=S({totalQueries:y().int().nonnegative(),totalProviders:y().int().nonnegative(),totalComparisons:y().int().nonnegative(),mentionCount:y().int().nonnegative(),citationCount:y().int().nonnegative(),topCompetitors:k(pz).default([]),visibilityGap:u(),whatThisMeans:k(u()).default([]),recommendedActions:k(u()).default([])});S({companyName:u(),domain:u(),homepageUrl:u(),generatedAt:u(),queries:k(u()).default([]),competitors:k(u()).default([]),profile:gz,audit:hz,queryResults:k(bz).default([]),summary:vz});const jS=H(["pass","partial","fail"]);jS.enum;const NS=H(["up","down","flat"]);NS.enum;const Sz=S({id:u(),name:u(),weight:y(),avgScore:y(),status:jS,pagesPassing:y().int().nonnegative(),pagesPartial:y().int().nonnegative(),pagesFailing:y().int().nonnegative()}),xz=S({factorId:u(),factorName:u(),avgScore:y(),affectedPages:y().int().nonnegative(),totalPages:y().int().nonnegative(),affectedPct:y().int().nonnegative(),topRecommendations:k(u()).default([])});S({project:u(),hasData:ne(),runId:u().nullable(),runStatus:Ii.nullable(),sitemapUrl:u().nullable(),auditedAt:u().nullable(),aggregateScore:y(),pagesDiscovered:y().int().nonnegative(),pagesAudited:y().int().nonnegative(),pagesSkipped:y().int().nonnegative(),pagesErrored:y().int().nonnegative(),deltaScore:y().nullable(),trend:NS.nullable(),previousScore:y().nullable(),previousAuditedAt:u().nullable(),factors:k(Sz).default([]),crossCuttingIssues:k(xz).default([]),prioritizedFixes:k(u()).default([])});const wz=S({id:u(),name:u(),weight:y(),score:y()}),jz=S({url:u(),overallScore:y(),status:H(["success","error"]),error:u().nullable().optional(),factors:k(wz).default([])});S({project:u(),runId:u().nullable(),auditedAt:u().nullable(),total:y().int().nonnegative(),pages:k(jz).default([])});const Nz=S({runId:u(),auditedAt:u(),aggregateScore:y(),pagesAudited:y().int().nonnegative()});S({project:u(),points:k(Nz).default([])});S({sitemapUrl:u().url().optional(),limit:y().int().positive().max(2e3).optional()});S({runId:u(),status:Ii});const Gp=H(["answer-visibility","traffic-sync","gbp-sync","data-refresh","backlinks-sync","site-audit","ads-sync"]);Gp.enum;S({id:u(),projectId:u(),kind:Gp,cronExpr:u(),preset:u().nullable().optional(),timezone:u().default("UTC"),enabled:ne().default(!0),providers:k(Aa).default([]),sourceId:u().nullable().optional(),lastRunAt:u().nullable().optional(),nextRunAt:u().nullable().optional(),createdAt:u(),updatedAt:u()});S({kind:Gp.optional(),preset:u().optional(),cron:u().optional(),timezone:u().optional().default("UTC"),enabled:ne().optional().default(!0),providers:k(Aa).optional().default([]),sourceId:u().optional()}).refine(e=>e.preset&&!e.cron||!e.preset&&e.cron,{message:'Exactly one of "preset" or "cron" must be provided'});const Hp=H(["competitor","directory","social","forum","news","reference","blog","ecommerce","video","academic","other"]);Hp.enum;const Kp=H(["cited","aspirational","wasted-surface"]),hv=Kp.enum;hv.cited,hv.aspirational;const Uc=H(["direct-competitor","ota-aggregator","editorial-media","other","unknown"]),kz=Uc.enum;kz["direct-competitor"];const $c=H(["queued","seeding","probing","completed","failed"]);$c.enum;const kS=S({domain:u().min(1),hits:y().int().positive(),competitorType:Uc.default("unknown")}),Az=S({id:u(),sessionId:u(),projectId:u(),query:u(),bucket:Kp.nullable().default(null),citationState:oi,citedDomains:k(u()).default([]),answerMentioned:ne().nullable().default(null),createdAt:u()}),Cz=S({id:u(),projectId:u(),status:$c,icpDescription:u().nullable().optional(),seedProvider:u().nullable().optional(),seedCountRaw:y().int().nullable().optional(),seedCount:y().int().nullable().optional(),seedFromAnswerCount:y().int().nullable().optional(),seedFromGroundingCount:y().int().nullable().optional(),seedBrandFilteredCount:y().int().nullable().optional(),buyerDescription:u().nullable().optional(),locations:k(qc).nullable().optional(),seedRawCandidates:k(u()).nullable().optional(),dedupClusterMinSims:k(y()).nullable().optional(),dedupBandPairFraction:y().nullable().optional(),dedupPairsTotal:y().int().nullable().optional(),seedProviders:k(u()).nullable().optional(),seedProviderCounts:He(u(),y().int()).nullable().optional(),canonicalCount:y().int().nullable().optional(),dedupThreshold:y().nullable().optional(),probeCount:y().int().nullable().optional(),citedCount:y().int().nullable().default(null),aspirationalCount:y().int().nullable().default(null),wastedCount:y().int().nullable().default(null),competitorMap:k(kS).default([]),warning:u().nullable().optional(),error:u().nullable().optional(),startedAt:u().nullable().optional(),finishedAt:u().nullable().optional(),createdAt:u()});Cz.extend({probes:k(Az).default([])});const _z=500,Tz=8,Ez=["gemini","openai"],Oz=H(Ez);S({icpDescription:u().min(1).optional(),buyerDescription:u().min(1).optional(),seedProviders:k(Oz).min(1).transform(e=>[...new Set(e)].sort()).optional(),dedupThreshold:y().min(0).max(1).optional(),maxProbes:y().int().positive().max(_z).optional(),probeConcurrency:y().int().min(1).max(Tz).optional(),locations:k(u().min(1)).optional()});S({buckets:k(Kp).min(1).optional(),includeCompetitors:ne().optional(),competitorTypes:k(Uc).min(1).optional()});S({sessionId:u(),projectId:u(),status:$c,queriesByBucket:S({cited:k(u()),aspirational:k(u()),"wasted-surface":k(u())}),suggestedCompetitors:k(kS)});S({sessionId:u(),projectId:u(),promoted:S({queries:k(u()),competitors:k(u())}),skipped:S({queries:k(u()),competitors:k(u())})});Dn([De("cli"),u().regex(/^discovery:.+$/)]);const Dz=S({query:u().min(1),probeHits:y().int().positive()}),zz=S({rawCandidates:y().int().nonnegative(),admitted:y().int().nonnegative(),rejected:S({belowFloor:y().int().nonnegative(),length:y().int().nonnegative(),navigational:y().int().nonnegative(),duplicate:y().int().nonnegative(),offAnchor:y().int().nonnegative(),semanticDuplicate:y().int().nonnegative()})});S({sessionId:u(),projectId:u(),provider:u(),status:$c,minProbeHits:y().int().positive(),anchorApplied:ne(),semanticNoveltyApplied:ne(),candidates:k(Dz),stats:zz});const Qp=H(["own","direct-competitor","ota-aggregator","editorial-media","other"]);Qp.enum;const AS=H(["7d","30d","90d","all"]),gv=H(["improving","declining","stable"]),Rz=H(["mentioned","cited"]);Rz.enum;const ip=S({citationRate:y(),cited:y().int(),total:y().int(),mentionRate:y(),mentionedCount:y().int()}),Zp=u().trim().min(1),Mz=k(Zp).min(1).superRefine((e,n)=>{for(let i=1;i<e.length;i+=1)e[i-1]>=e[i]&&n.addIssue({code:"custom",message:"mixed model IDs must be sorted and unique",path:[i]})}),er=_o("status",[S({status:De("known"),model:Zp}),S({status:De("unknown")}),S({status:De("mixed"),models:Mz,includesUnknown:ne()})]),Bz=S({observedAt:u(),bucketStartDate:u(),from:er,to:er,fromPreWindowAnchor:ne().optional(),anchorObservedAt:u().optional()}),CS=S({latestObservation:S({observedAt:u(),state:er}),events:k(Bz),eventTotal:y().int().nonnegative().optional(),anchorUnavailable:ne().optional()}),Lz=He(u(),CS),qz=CS.extend({latestServedModelIds:k(Zp).default([])}),Uz=He(u(),qz),$z=S({observedAt:u(),configured:er,served:er}),Iz=S({rate:y().nullable(),projectMentionSnapshots:y().int().nonnegative(),competitorMentionSnapshots:y().int().nonnegative()}),Pz=S({startDate:u(),endDate:u(),dataStartDate:u(),dataEndDate:u(),sweepCount:y().int().nonnegative(),citationRate:y(),cited:y().int(),total:y().int(),queryCount:y().int(),mentionRate:y(),mentionedCount:y().int(),mentionShare:Iz,byProvider:He(u(),ip),modelEvidenceByProvider:He(u(),er).default({})}),Vz=S({date:u(),delta:y().int(),label:u()});S({window:AS,buckets:k(Pz),overall:ip,byProvider:He(u(),ip),trend:gv,mentionTrend:gv,queryChanges:k(Vz),modelAttribution:Lz.default({}),servedModelAttribution:Uz.default({}),modelServiceMismatch:He(u(),$z).default({}),modelPointerChanges:He(u(),vD).default({})});const yv=S({category:Hp,label:u(),count:y().int(),percentage:y(),topDomains:k(S({domain:u(),count:y().int()}))}),Gz=S({domain:u(),count:y().int(),percentage:y(),category:Hp,label:u(),surfaceClass:Qp}),Hz=S({surfaceClass:Qp,label:u(),count:y().int(),percentage:y(),domainCount:y().int()}),bv=S({totalCitedSlots:y().int(),domainTotal:y().int(),entries:k(Gz),truncatedDomainCount:y().int(),truncatedCitedSlots:y().int(),bySurfaceClass:k(Hz)});S({overall:k(yv),byQuery:He(u(),k(yv)),ranked:bv,byProvider:He(u(),bv),runId:u(),window:AS,limit:y().int().nullable()});const Yp=S({total:y().int(),checked:y().int(),mentioned:y().int(),cited:y().int(),mentionRate:y().nullable(),citedRate:y().nullable()}),_S=Yp.extend({provider:u(),firstObserved:u(),lastObserved:u()}),Kz=Yp.extend({queryId:u().nullable(),query:u(),firstObserved:u(),lastObserved:u(),providers:k(_S).optional()}),Qz=S({since:u().nullable(),until:u().nullable(),lastRuns:y().int().nullable(),runCount:y().int()}),Zz=H(["provider"]),sp=S({domain:u(),mentions:y().int()}),Yz=S({percent:y().nullable(),projectMentions:y().int(),competitorMentions:y().int(),snapshotsWithAnswerText:y().int(),perCompetitor:k(sp)});S({project:u(),groupBy:Zz.optional(),window:Qz,totals:Yp,byProvider:k(_S).optional(),queries:k(Kz),shareOfVoice:Yz.optional()});const Fz=H(["within-noise","moved","insufficient-data","model-discontinuous","model-unknown"]),Xz=H(["up","down","flat"]),vv=S({point:y().nullable(),ciLow:y().nullable(),ciHigh:y().nullable(),numerator:y().int(),denominator:y().int()}),Jz=H(["mention-share-of-voice","cited-share-of-voice","mention-rate","cited-rate"]),Wz=S({key:Jz,label:u(),driftRobust:ne(),from:vv,to:vv,rateRatio:y().nullable(),direction:Dn([Xz,ze()]),verdict:Fz}),Sv=S({month:u(),since:u(),until:u(),runCount:y().int(),lowRunCount:ne()}),eR=S({queryCount:y().int(),excludedFromOnly:y().int(),excludedToOnly:y().int(),providers:k(u()),excludedProviders:k(u())}),tR=S({provider:u(),fromModels:k(u()),toModels:k(u())}),nR=H(["included","model-discontinuous","model-unknown"]),aR=S({provider:u(),status:nR,fromModels:k(u()),toModels:k(u())}),iR=H(["comparable","model-discontinuous","model-unknown","insufficient-data"]),sR=S({status:iR,comparedProviders:k(u()),providers:k(aR)}),rR=S({provider:u(),from:S({checked:y().int(),mentioned:y().int(),cited:y().int()}),to:S({checked:y().int(),mentioned:y().int(),cited:y().int()})}),oR=S({from:S({count:y().int(),of:y().int()}),to:S({count:y().int(),of:y().int()})});S({project:u(),from:Sv,to:Sv,basket:eR,metrics:k(Wz),queriesMentioned:oR,byProvider:k(rR),modelChanges:k(tR),continuity:sR,competitors:S({from:k(sp),to:k(sp)})});H(["json","csv"]);const lR=S({runId:u(),runKind:De("answer-visibility"),runStatus:Ii,runTrigger:Ip,runCreatedAt:u(),runStartedAt:u().nullable(),runFinishedAt:u().nullable(),snapshotId:u(),snapshotCreatedAt:u(),queryId:u().nullable(),query:u().nullable(),provider:u(),model:u().nullable(),location:u().nullable(),citationState:oi,cited:ne(),answerMentioned:ne().nullable(),mentionState:Dn([jo,ze()]),citedDomains:k(u()),competitorOverlap:k(u()),recommendedCompetitors:k(u()),answerText:u().nullable(),groundingSources:k(Vp),searchQueries:k(u())}),cR=S({since:u().nullable(),until:u().nullable(),includeProbes:ne()});S({schemaVersion:De("canonry.results-export/v1"),generatedAt:u(),project:S({id:u(),name:u(),displayName:u(),canonicalDomain:u(),country:u(),language:u()}),filters:cR,recordCount:y().int().nonnegative(),records:k(lR)});const Ic=H(["organic","paid"]);Ic.enum;S({id:u(),projectId:u(),propertyId:u(),clientEmail:u(),connected:ne(),createdAt:u(),updatedAt:u()});S({date:u(),landingPage:u(),sessions:y(),organicSessions:y(),users:y()});const Fp=H(["session","first_user","manual_utm"]),uR=S({source:u(),medium:u(),trafficClass:Ic,sessions:y(),users:y(),sourceDimension:Fp}),dR=S({source:u(),medium:u(),trafficClass:Ic,sourceDimension:Fp,landingPage:u(),sessions:y(),users:y()}),fR=S({source:u(),medium:u(),sessions:y(),users:y(),channelGroup:u()}),uo=S({sessions:y(),sharePct:y(),sharePctDisplay:u()}),pR=S({organic:uo,social:uo,direct:uo,ai:uo,other:uo});S({totalSessions:y(),totalOrganicSessions:y(),totalDirectSessions:y(),totalUsers:y(),topPages:k(S({landingPage:u(),sessions:y(),organicSessions:y(),directSessions:y(),users:y()})),aiReferrals:k(uR),aiReferralLandingPages:k(dR),aiSessionsDeduped:y(),aiUsersDeduped:y(),paidAiSessionsDeduped:y(),paidAiUsersDeduped:y(),organicAiSessionsDeduped:y(),organicAiUsersDeduped:y(),aiSessionsBySession:y(),aiUsersBySession:y(),paidAiSessionsBySession:y(),paidAiUsersBySession:y(),organicAiSessionsBySession:y(),organicAiUsersBySession:y(),socialReferrals:k(fR),socialSessions:y(),socialUsers:y(),channelBreakdown:pR,organicSharePct:y(),aiSharePct:y(),aiSharePctBySession:y(),paidAiSharePct:y(),paidAiSharePctBySession:y(),organicAiSharePct:y(),organicAiSharePctBySession:y(),directSharePct:y(),socialSharePct:y(),organicSharePctDisplay:u(),aiSharePctDisplay:u(),aiSharePctBySessionDisplay:u(),paidAiSharePctDisplay:u(),paidAiSharePctBySessionDisplay:u(),organicAiSharePctDisplay:u(),organicAiSharePctBySessionDisplay:u(),directSharePctDisplay:u(),socialSharePctDisplay:u(),otherSessions:y(),otherSharePct:y(),otherSharePctDisplay:u(),lastSyncedAt:u().nullable()});S({connected:ne(),propertyId:u().nullable(),clientEmail:u().nullable(),authMethod:H(["service-account","oauth"]).nullable(),lastSyncedAt:u().nullable(),createdAt:u().nullable().optional(),updatedAt:u().nullable().optional()});S({synced:ne(),rowCount:y().int().nonnegative(),aiReferralCount:y().int().nonnegative(),socialReferralCount:y().int().nonnegative(),days:y().int().nonnegative(),syncedAt:u(),syncedComponents:k(u()).optional()});S({date:u(),source:u(),medium:u(),trafficClass:Ic,landingPage:u(),sessions:y(),users:y(),sourceDimension:Fp});S({date:u(),source:u(),medium:u(),sessions:y(),users:y(),channelGroup:u()});S({date:u(),sessions:y(),organicSessions:y(),users:y(),usersSource:H(["deduplicated","landing-page-sum"])});function Cc(e){return e.toLowerCase().replace(/[^a-z0-9]/g,"")}S({id:u(),projectId:u(),runId:u().nullable(),overallCitedRate:y(),overallMentionRate:y(),totalPairs:y().int().nonnegative(),citedPairs:y().int().nonnegative(),mentionedPairs:y().int().nonnegative(),providerBreakdown:He(u(),S({citedRate:y(),mentionRate:y(),cited:y().int().nonnegative(),mentioned:y().int().nonnegative(),total:y().int().nonnegative()})),createdAt:u(),status:H(["ready","no-data"]),reason:De("no-runs-yet").optional()});const TS=H(["claude","openai","gemini","zai","deepinfra"]),mR=S({id:TS,label:u(),defaultModel:u(),configured:ne(),keySource:H(["config","env"]).nullable()});S({providers:k(mR).default([]),defaultProvider:TS.nullable()});const hR=H(["aero","user","compaction"]);hR.enum;const ES=128;S({key:u().min(1).max(ES),value:u().min(1)});S({key:u().min(1).max(ES)});const cr=H(["commoncrawl","bing-webmaster"]);cr.enum;const Xp=H(["queued","downloading","querying","ready","failed"]);Xp.enum;S({id:u(),release:u(),status:Xp,phaseDetail:u().nullable().optional(),vertexPath:u().nullable().optional(),edgesPath:u().nullable().optional(),vertexSha256:u().nullable().optional(),edgesSha256:u().nullable().optional(),vertexBytes:y().int().nullable().optional(),edgesBytes:y().int().nullable().optional(),projectsProcessed:y().int().nullable().optional(),domainsDiscovered:y().int().nullable().optional(),downloadStartedAt:u().nullable().optional(),downloadFinishedAt:u().nullable().optional(),queryStartedAt:u().nullable().optional(),queryFinishedAt:u().nullable().optional(),error:u().nullable().optional(),createdAt:u(),updatedAt:u()});const gR=S({linkingDomain:u(),numHosts:y().int(),source:cr}),yR=S({projectId:u(),release:u(),targetDomain:u(),totalLinkingDomains:y().int(),totalHosts:y().int(),top10HostsShare:u(),queriedAt:u(),source:cr,excludedLinkingDomains:y().int().optional(),excludedHosts:y().int().optional()});S({source:cr,summary:yR.nullable(),total:y().int(),rows:k(gR)});S({release:u(),totalLinkingDomains:y().int(),totalHosts:y().int(),top10HostsShare:u(),queriedAt:u(),source:cr});const bR=S({source:cr,connected:ne(),hasData:ne(),latestRelease:u().nullable(),totalLinkingDomains:y().int(),lastSyncedAt:u().nullable()});S({projectId:u(),targetDomain:u(),sources:k(bR),anyConnected:ne(),anyData:ne()});S({duckdbInstalled:ne(),duckdbVersion:u().nullable().optional(),duckdbSpec:u(),pluginDir:u()});S({installed:ne(),version:u(),path:u(),alreadyPresent:ne()});S({release:u(),vertexUrl:u(),edgesUrl:u(),vertexBytes:y().int().nullable(),edgesBytes:y().int().nullable(),lastModified:u().nullable()});S({release:u(),syncStatus:Xp.nullable(),bytes:y().int(),lastUsedAt:u().nullable()});const Jp=H(["positive","caution","negative","neutral"]),ni=S({label:u(),value:u(),delta:u(),tone:Jp,description:u(),tooltip:u().optional(),trend:k(y()),progress:y().optional(),providerCoverage:u().optional()}),vR=ni.extend({breakdown:S({projectMentionSnapshots:y().int().nonnegative(),competitorMentionSnapshots:y().int().nonnegative(),perCompetitor:k(S({domain:u(),mentionSnapshots:y().int().nonnegative(),shareOfCompetitiveTotal:y()})),snapshotsWithAnswerText:y().int().nonnegative(),snapshotsTotal:y().int().nonnegative()})}),Mf=S({gained:y().int().nonnegative(),lost:y().int().nonnegative(),tone:Jp,hasPreviousRun:ne(),gainedQueries:k(u()).optional(),lostQueries:k(u()).optional()}),SR=S({hasPreviousRun:ne(),comparable:ne(),querySetChanged:ne(),previousRunAt:u().nullable(),currentQueryCount:y().int().nonnegative(),previousQueryCount:y().int().nonnegative(),comparableQueryCount:y().int().nonnegative(),addedQueryCount:y().int().nonnegative(),removedQueryCount:y().int().nonnegative(),addedQueries:k(u()),removedQueries:k(u())}),xR=S({id:u(),projectId:u(),runId:u().nullable(),type:H(["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:H(["critical","high","medium","low"]),title:u(),query:u(),provider:u(),recommendation:S({action:u(),target:u().optional(),reason:u()}).optional(),cause:S({cause:u(),competitorDomain:u().optional(),details:u().optional()}).optional(),dismissed:ne(),createdAt:u()}),wR=S({id:u(),projectId:u(),runId:u().nullable(),overallCitedRate:y(),overallMentionRate:y(),totalPairs:y().int().nonnegative(),citedPairs:y().int().nonnegative(),mentionedPairs:y().int().nonnegative(),providerBreakdown:He(u(),S({citedRate:y(),mentionRate:y(),cited:y().int().nonnegative(),mentioned:y().int().nonnegative(),total:y().int().nonnegative()})),createdAt:u(),status:H(["ready","no-data"]),reason:De("no-runs-yet").optional()});S({project:sD,latestRun:dz,health:wR.nullable(),topInsights:k(xR),queryCounts:S({totalQueries:y().int().nonnegative(),citedQueries:y().int().nonnegative(),notCitedQueries:y().int().nonnegative(),citedRate:y(),mentionedQueries:y().int().nonnegative(),notMentionedQueries:y().int().nonnegative(),mentionRate:y()}),providers:k(S({provider:u(),citedRate:y(),cited:y().int().nonnegative(),total:y().int().nonnegative()})),transitions:S({since:u().nullable(),gained:y().int().nonnegative(),lost:y().int().nonnegative(),emerging:y().int().nonnegative()}),scores:S({mention:ni,visibility:ni,mentionShare:vR,gapQueries:ni,mentionGaps:ni,indexCoverage:ni,competitorPressure:ni,runStatus:ni}),movementSummary:Mf,citationMovement:Mf,mentionMovement:Mf,movementComparison:SR,competitors:k(S({id:u(),domain:u(),citationCount:y().int().nonnegative(),totalQueries:y().int().nonnegative(),pressureLabel:H(["None","Low","Moderate","High"]),citedQueries:k(u())})),providerScores:k(S({provider:u(),model:u().nullable(),score:y(),cited:y().int().nonnegative(),total:y().int().nonnegative(),trend:k(y()).optional()})),attentionItems:k(S({id:u(),tone:Jp,title:u(),detail:u(),actionLabel:u(),href:u()})),runHistory:k(S({runId:u(),createdAt:u(),citedCount:y().int().nonnegative(),totalCount:y().int().nonnegative(),citationRate:y(),mentionedCount:y().int().nonnegative(),mentionRate:y(),status:u()})),suggestedQueries:S({rows:k(S({query:u(),impressions:y(),clicks:y(),avgPosition:y(),reason:u()})),totalCandidates:y().int().nonnegative(),skippedAlreadyTracked:y().int().nonnegative()}),dateRangeLabel:u(),contextLabel:u()});H(["snapshot","insight"]);const jR=S({kind:De("snapshot"),id:u(),runId:u(),query:u(),provider:u(),model:u().nullable(),citationState:oi,matchedField:H(["answerText","citedDomains","searchQueries","query"]),snippet:u(),createdAt:u()}),NR=S({kind:De("insight"),id:u(),runId:u().nullable(),type:H(["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:H(["critical","high","medium","low"]),title:u(),query:u(),provider:u(),matchedField:H(["title","query","recommendation","cause"]),snippet:u(),dismissed:ne(),createdAt:u()}),kR=_o("kind",[jR,NR]);S({query:u(),totalHits:y().int().nonnegative(),truncated:ne(),hits:k(kR)});const OS=H(["create","expand","refresh","add-schema"]);OS.enum;function wU(e){switch(e){case"create":return"Create";case"expand":return"Expand";case"refresh":return"Refresh";case"add-schema":return"Add schema"}}const DS=H(["gsc","competitor-evidence","both"]);DS.enum;const zS=H(["high","medium","low"]);zS.enum;const AR=H(["blog-post","comparison","listicle","how-to","guide","glossary"]);AR.enum;const RS=H(["proposed","briefed","payload-generated","draft-created","published","validated","dismissed"]);RS.enum;const Wp=H(["ownable","ceded"]);Wp.enum;const CR=S({url:u(),gscImpressions:y().nonnegative(),gscClicks:y().nonnegative(),gscAvgPosition:y().nonnegative().nullable(),organicSessions:y().nonnegative()}),_R=S({domain:u(),url:u(),title:u(),citationCount:y().int().nonnegative()}),TR=S({demand:y(),competitor:y(),absence:y(),gapSeverity:y()}),ER=S({actionId:u(),state:RS,lastUpdated:u()}),MS=S({targetRef:u(),query:u(),action:OS,ourBestPage:CR.nullable(),winningCompetitor:_R.nullable(),score:y(),scoreBreakdown:TR,drivers:k(u()),demandSource:DS,actionConfidence:zS,existingAction:ER.nullable(),winnabilityClass:Wp,winnability:y().min(0).max(1).nullable()});S({targets:k(MS),contextMetrics:S({totalAiReferralSessions:y().int().nonnegative(),latestRunId:u(),runTimestamp:u()})});const OR=S({targetRef:u(),addressedUrl:u().nullable(),note:u().nullable(),dismissedAt:u()});S({dismissals:k(OR)});S({targetRef:u().min(1),addressedUrl:u().url().optional(),note:u().max(500).optional()});S({targetRef:u(),promptVersion:u(),provider:u(),model:u(),responseText:u(),costMillicents:y().int().nonnegative(),generatedAt:u()});S({provider:u().optional(),model:u().optional(),forceRefresh:ne().optional()});const DR=S({targetQuery:u().trim().min(1),winnabilityClass:Wp,angle:u().trim().min(1),whyWinnable:u().trim().min(1),schemaHookup:u().trim().min(1),controllableSurfaceRationale:u().trim().min(1)});S({targetRef:u(),promptVersion:u(),provider:u(),model:u(),brief:DR,costMillicents:y().int().nonnegative(),generatedAt:u()});const zR=S({domain:u(),competitorType:Uc,hits:y().int().nonnegative(),updatedAt:u()});S({classifications:k(zR)});const RR=S({uri:u(),title:u(),domain:u(),isOurDomain:ne(),isCompetitor:ne(),citationCount:y().int().nonnegative(),providers:k(Aa)}),BS=S({query:u(),groundingSources:k(RR)});S({sources:k(BS),latestRunId:u()});const LS=S({query:u(),competitorDomains:k(u()),competitorCount:y().int().nonnegative(),missRate:y().min(0).max(1),lastSeenInRunId:u()});S({gaps:k(LS),latestRunId:u()});const qS=H(["ok","warn","fail","skipped"]);qS.enum;const em=H(["global","project"]);em.enum;const US=H(["auth","config","providers","integrations","database","schedules","agent"]);US.enum;const MR=S({id:u(),category:US,scope:em,title:u(),status:qS,code:u().describe('Stable machine-readable code (e.g. "google.token.refresh-failed"). Use this for filtering and remediation logic.'),summary:u(),remediation:u().nullable().optional().describe('Operator-facing next step. Null when status is "ok" or no specific remediation applies.'),details:He(u(),Pn()).optional().describe("Structured context — principal email, redirect URI, missing scopes, etc. Stable per check id."),durationMs:y().int().nonnegative().describe("How long the check took to execute.")});S({scope:em,project:u().nullable().describe('Project name when scope is "project", null otherwise.'),generatedAt:u().describe("ISO-8601 timestamp when this doctor run started."),durationMs:y().int().nonnegative(),summary:S({total:y().int().nonnegative(),ok:y().int().nonnegative(),warn:y().int().nonnegative(),fail:y().int().nonnegative(),skipped:y().int().nonnegative()}),checks:k(MR)});const BR=S({provider:u(),citationState:oi,cited:ne(),mentioned:ne(),runId:u(),runCreatedAt:u()}),LR=S({queryId:u(),query:u(),providers:k(BR),citedCount:y().int().nonnegative(),mentionedCount:y().int().nonnegative(),totalProviders:y().int().nonnegative()}),qR=S({queryId:u(),query:u(),provider:u(),citingCompetitors:k(u()),runId:u(),runCreatedAt:u()}),UR=S({providersConfigured:y().int().nonnegative(),providersCiting:y().int().nonnegative(),providersMentioning:y().int().nonnegative(),totalQueries:y().int().nonnegative(),queriesCitedAndMentioned:y().int().nonnegative(),queriesCitedOnly:y().int().nonnegative(),queriesMentionedOnly:y().int().nonnegative(),queriesInvisible:y().int().nonnegative(),latestRunId:u().nullable(),latestRunAt:u().nullable()});S({summary:UR,byQuery:k(LR),competitorGaps:k(qR),status:H(["ready","no-data"]),reason:H(["no-runs-yet","no-queries"]).optional()});const jU=[7,14,30,90],NU=30;Dn([De(7),De(14),De(30),De(90)]).describe("Report window in days (7, 14, 30, or 90). Defaults to 30 when omitted.");const $R=H(["prompt","request-param","browser-geo","ignored"]),IR=S({label:u(),city:u(),region:u(),country:u(),otherConfiguredLabels:k(u())}),PR=S({provider:u(),treatment:$R,description:u()}),VR=S({generatedAt:u(),project:S({id:u(),name:u(),displayName:u(),canonicalDomain:u(),country:u(),language:u()}),location:IR.nullable(),providerLocationHandling:k(PR),periodStart:u().nullable(),periodEnd:u().nullable(),periodDays:y().int().positive()}),GR=S({citationRate:y(),citedQueryCount:y(),totalQueryCount:y(),mentionRate:y(),mentionedQueryCount:y(),trend:H(["up","down","flat","unknown"]),queryCount:y(),competitorCount:y(),providerCount:y(),gsc:S({clicks:y(),impressions:y(),ctr:y(),avgPosition:y(),periodStart:u(),periodEnd:u()}).nullable(),ga:S({sessions:y(),users:y(),periodStart:u(),periodEnd:u()}).nullable(),findings:k(S({title:u(),detail:u(),tone:H(["positive","caution","negative","neutral"])}))}),HR=S({citationState:H(["cited","not-cited","pending"]),answerMentioned:ne().nullable(),model:u().nullable()}),KR=S({queries:k(u()),providers:k(u()),matrix:k(k(HR.nullable())),providerRates:k(S({provider:u(),citedCount:y(),mentionedCount:y(),totalCount:y(),citationRate:y(),mentionRate:y()}))}),QR=S({domain:u(),citationCount:y(),totalCount:y(),pressureLabel:H(["High","Moderate","Low","None"]),citedQueries:k(u()),sharePct:y(),theirCitedPages:k(S({url:u(),citedFor:k(u())}))}),ZR=S({projectCitationCount:y(),competitors:k(QR)}),YR=S({domain:u(),mentionCount:y(),totalCount:y(),pressureLabel:H(["High","Moderate","Low","None"]),mentionedQueries:k(u()),sharePct:y()}),FR=S({projectMentionCount:y(),totalAnswerSnapshots:y(),competitors:k(YR)}),XR=S({category:u(),label:u(),count:y(),sharePct:y()}),JR=S({categories:k(XR),topDomains:k(S({domain:u(),count:y(),isCompetitor:ne()}))}),WR=S({query:u(),clicks:y(),impressions:y(),ctr:y(),avgPosition:y(),category:H(["brand","lead-gen","industry","other"])}),e4=S({periodStart:u(),periodEnd:u(),totalClicks:y(),totalImpressions:y(),ctr:y(),avgPosition:y(),topQueries:k(WR),categoryBreakdown:k(S({category:H(["brand","lead-gen","industry","other"]),clicks:y(),impressions:y(),sharePct:y()})),trend:k(S({date:u(),clicks:y(),impressions:y()})),trackedButNoGsc:k(u()),gscButNotTracked:k(u())}),t4=S({totalSessions:y(),totalUsers:y(),totalOrganicSessions:y(),periodStart:u(),periodEnd:u(),topLandingPages:k(S({page:u(),sessions:y(),users:y(),organicSessions:y()})),channelBreakdown:k(S({channel:u(),sessions:y(),sharePct:y()}))}),n4=S({totalSessions:y(),organicSessions:y(),paidSessions:y(),channels:k(S({channelGroup:u(),sessions:y(),sharePct:y()})),topCampaigns:k(S({source:u(),medium:u(),sessions:y()}))}),a4=S({totalSessions:y(),totalUsers:y(),paidSessions:y(),paidUsers:y(),organicSessions:y(),organicUsers:y(),bySource:k(S({source:u(),sessions:y(),users:y(),paidSessions:y(),organicSessions:y(),sharePct:y()})),trend:k(S({date:u(),sessions:y()})),topLandingPages:k(S({page:u(),sessions:y(),users:y()}))}),i4=S({windowStart:u(),windowEnd:u(),hasData:ne(),verifiedCrawlerHits:S({current:y(),prior:y(),deltaPct:y().nullable()}),unverifiedCrawlerHits:S({current:y(),prior:y(),deltaPct:y().nullable()}),aiUserFetchHits:S({current:y(),prior:y(),deltaPct:y().nullable()}),referralArrivals:S({current:y(),prior:y(),deltaPct:y().nullable()}),referralArrivalsByClass:S({paid:S({current:y(),prior:y(),deltaPct:y().nullable()}),organic:S({current:y(),prior:y(),deltaPct:y().nullable()}),unclassified:S({current:y(),prior:y(),deltaPct:y().nullable()})}),referralArrivalsClassSummary:u(),byOperator:k(S({operator:u(),verifiedHits:y(),unverifiedHits:y(),userFetchHits:y(),referralArrivals:y(),deltaPct:y().nullable()})),topCrawledPaths:k(S({path:u(),verifiedHits:y(),distinctOperators:y()})),referralProducts:k(S({product:u(),arrivals:y(),distinctLandingPaths:y()})),dailyTrend:k(S({date:u(),verifiedCrawlerHits:y(),userFetchHits:y(),referralArrivals:y()})),topReferralLandingPaths:k(S({path:u(),arrivals:y(),distinctProducts:y()}))}),s4=S({provider:H(["google","bing"]).nullable(),total:y(),indexed:y(),notIndexed:y(),deindexed:y(),unknown:y(),indexedPct:y()}),r4=S({runId:u(),date:u(),citationRate:y(),citedQueryCount:y(),totalQueryCount:y(),mentionRate:y(),mentionedQueryCount:y(),providerRates:k(S({provider:u(),citationRate:y(),mentionRate:y()}))}),rp=S({id:u(),type:H(["regression","gain","opportunity"]),severity:H(["critical","high","medium","low"]),title:u(),query:u(),provider:u(),recommendation:u().nullable(),createdAt:u(),instanceCount:y()}),o4=S({horizon:H(["immediate","short-term","medium-term"]),title:u(),rationale:u()}),qs=S({current:y(),prior:y(),deltaAbs:y(),deltaPct:y().nullable(),direction:H(["up","down","flat"]),window:y().optional()}),l4=S({provider:u(),current:y(),prior:y(),deltaAbs:y(),direction:H(["up","down","flat"])}),c4=S({enoughHistory:ne(),headline:u(),citationRate:qs.nullable(),mentionRate:qs.nullable(),citedQueryCount:qs.nullable(),mentionedQueryCount:qs.nullable(),gscClicksDelta:qs.nullable(),aiReferralsDelta:qs.nullable(),comparisonWindowDays:y().int().positive(),providerMovements:k(l4),wins:k(rp),regressions:k(rp)});H(["agency","client"]);const u4=H(["agency","client","both"]),d4=H(["immediate","short-term","medium-term"]),f4=H(["high","medium","low"]);H(["positive","caution","negative","neutral"]);const p4=H(["content","competitors","provider","search-demand","indexing","location","monitoring"]),tm=S({audience:u4,priority:y(),horizon:d4,category:p4,title:u(),action:u(),why:k(u()),evidence:k(u()),successMetric:u(),confidence:f4,targetRef:u().optional()}),m4=S({headline:u(),overview:u(),actionItems:k(tm),confidenceNotes:k(u())}),h4=S({title:u(),detail:u(),severity:H(["positive","caution","negative","neutral"]),evidence:k(u())}),g4=S({priorities:k(tm),diagnostics:k(h4)});function kU(e){return e.horizon==="immediate"?"negative":e.confidence==="high"?"caution":e.confidence==="low"?"neutral":"caution"}function AU(e){switch(e){case"critical":return"Critical";case"high":return"High";case"medium":return"Medium";case"low":return"Low"}}function CU(e){switch(e){case"immediate":return"Immediate";case"short-term":return"Short term";case"medium-term":return"Medium term"}}function _U(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 TU(e){switch(e){case"high":return"High";case"medium":return"Medium";case"low":return"Low"}}S({meta:VR,executiveSummary:GR,citationScorecard:KR,competitorLandscape:ZR,mentionLandscape:FR,aiSourceOrigin:JR,gsc:e4.nullable(),ga:t4.nullable(),socialReferrals:n4.nullable(),aiReferrals:a4.nullable(),serverActivity:i4.nullable(),indexingHealth:s4.nullable(),citationsTrend:k(r4),whatsChanged:c4,insights:k(rp),recommendedNextSteps:k(o4),actionPlan:k(tm),clientSummary:m4,agencyDiagnostics:g4,contentOpportunities:k(MS),contentGaps:k(LS),groundingSources:k(BS)});const y4=H(["claude","codex"]);y4.enum;const b4=H(["claude","codex","all"]);b4.enum;const $S=S({content:y().int().nonnegative(),sitemap:y().int().nonnegative(),robots:y().int().nonnegative(),asset:y().int().nonnegative(),other:y().int().nonnegative()}),v4=H(["content","sitemap","robots","asset","other"]),nm=H(["cloud-run","wordpress","cloudflare","vercel","generic-log"]);nm.enum;const S4=H(["raw-request-events","aggregate-request-metrics","request-url","status-code","user-agent","remote-ip","referer","cursor-pull"]);S4.enum;const x4=H(["raw-request","aggregate-bucket"]),w4=x4.enum,j4=H(["observed","provider-aggregated","inferred"]),N4=j4.enum,k4=S({type:u().nullable(),labels:He(u(),u())}),A4=S({sourceType:nm,evidenceKind:De(w4["raw-request"]),confidence:De(N4.observed),eventId:u().min(1),observedAt:u().min(1),method:u().nullable(),requestUrl:u().nullable(),host:u().nullable(),path:u().min(1),queryString:u().nullable(),status:y().int().nullable(),userAgent:u().nullable(),remoteIp:u().nullable(),referer:u().nullable(),latencyMs:y().nullable(),requestSizeBytes:y().int().nullable(),responseSizeBytes:y().int().nullable(),providerResource:k4,providerLabels:He(u(),u())});S({events:k(A4),rawEntryCount:y().int().nonnegative(),skippedEntryCount:y().int().nonnegative(),nextPageToken:u().optional(),filter:u()});const IS=H(["connected","paused","error","archived"]),EU=IS.enum,PS=H(["oauth","service-account"]);PS.enum;const C4=H(["verified","claimed_unverified","unknown_ai_like"]),OU=C4.enum;S({gcpProjectId:u().min(1),serviceName:u().nullable().optional(),location:u().nullable().optional(),authMode:PS});S({baseUrl:u().url(),username:u().min(1)});const am=H(["production","preview"]);am.enum;S({projectId:u().min(1),teamId:u().min(1),environment:am});const VS=S({id:u(),projectId:u(),sourceType:nm,displayName:u(),status:IS,lastSyncedAt:u().nullable(),lastCursor:u().nullable(),lastError:u().nullable(),archivedAt:u().nullable(),config:He(u(),Pn()),createdAt:u(),updatedAt:u()});S({gcpProjectId:u().min(1),serviceName:u().min(1).optional(),location:u().min(1).optional(),displayName:u().min(1).optional(),keyJson:u().optional()});S({baseUrl:u().url(),username:u().min(1),applicationPassword:u().min(1),displayName:u().min(1).optional()});S({projectId:u().min(1),teamId:u().min(1),token:u().min(1),environment:am.optional(),displayName:u().min(1).optional()});S({sourceId:u(),runId:u(),syncedAt:u(),pulledEvents:y().int().nonnegative(),selfTrafficExcluded:y().int().nonnegative(),crawlerHits:y().int().nonnegative(),aiUserFetchHits:y().int().nonnegative(),aiReferralHits:y().int().nonnegative(),unknownHits:y().int().nonnegative(),crawlerBucketRows:y().int().nonnegative(),aiUserFetchBucketRows:y().int().nonnegative(),aiReferralBucketRows:y().int().nonnegative(),sampleRows:y().int().nonnegative(),windowStart:u(),windowEnd:u()});S({days:y().int().positive().optional()});S({advanceToNow:De(!0)});S({sourceId:u(),runId:u(),status:Ii,windowStart:u(),windowEnd:u(),daysRequested:y().int().positive(),daysApplied:y().int().positive()});const _4=S({crawlerHits:y().int().nonnegative(),crawlerContentHits:y().int().nonnegative(),crawlerInfraHits:y().int().nonnegative(),crawlerSegments:$S,aiUserFetchHits:y().int().nonnegative(),aiReferralHits:y().int().nonnegative(),sampleCount:y().int().nonnegative()});S({sources:k(VS)});const T4=VS.extend({totals24h:_4,latestRun:S({runId:u(),status:Ii,startedAt:u().nullable(),finishedAt:u().nullable(),error:u().nullable()}).nullable()});S({sources:k(T4)});const E4=H(["crawler","ai-user-fetch","ai-referral"]),im=E4.enum,O4=S({kind:De(im.crawler),sourceId:u(),tsHour:u(),botId:u(),operator:u(),verificationStatus:u(),pathNormalized:u(),pathClass:v4,status:y().int(),hits:y().int().nonnegative()}),D4=S({kind:De(im["ai-user-fetch"]),sourceId:u(),tsHour:u(),botId:u(),operator:u(),verificationStatus:u(),pathNormalized:u(),status:y().int(),hits:y().int().nonnegative()}),z4=S({kind:De(im["ai-referral"]),sourceId:u(),tsHour:u(),product:u(),operator:u(),sourceDomain:u(),evidenceType:u(),landingPathNormalized:u(),status:y().int(),hits:y().int().nonnegative(),paidHits:y().int().nonnegative(),organicHits:y().int().nonnegative(),unknownHits:y().int().nonnegative()}),R4=_o("kind",[O4,D4,z4]);S({windowStart:u(),windowEnd:u(),totals:S({crawlerHits:y().int().nonnegative(),crawlerContentHits:y().int().nonnegative(),crawlerInfraHits:y().int().nonnegative(),crawlerSegments:$S,aiUserFetchHits:y().int().nonnegative(),aiReferralHits:y().int().nonnegative(),aiReferralPaidHits:y().int().nonnegative(),aiReferralOrganicHits:y().int().nonnegative(),aiReferralUnknownHits:y().int().nonnegative()}),events:k(R4)});S({apiKey:u().min(1)});S({id:u(),name:u(),status:u(),currencyCode:u().nullable(),timezone:u().nullable(),url:u().nullable(),reviewStatus:u().nullable(),integrityReviewStatus:u().nullable(),integrityDecision:u().nullable()});S({q:u().trim().min(1).max(200),limit:y().int().min(1).max(100).default(20)});const M4=S({id:u(),type:u(),canonicalName:u(),countryCode:u(),name:u(),regionCode:u().nullable()});S({count:y().int().nonnegative(),query:u(),results:k(M4)});const B4=S({id:u(),clientType:u().optional(),name:u().optional(),pixelId:u().optional()});S({pixels:k(B4)});const L4=S({id:u(),name:u().optional()}),q4=S({id:u(),name:u().optional(),eventType:u().optional(),customEventName:u().nullable().optional(),attributionWindowDays:y().int().positive().optional(),adAccountId:u().optional(),sourceIds:k(u()).optional(),sources:k(L4).optional(),archived:ne().optional(),version:y().int().nonnegative().optional()});S({eventSettings:k(q4)});S({connected:ne(),adAccountId:u().nullable().optional(),displayName:u().nullable().optional(),currencyCode:u().nullable().optional(),timezone:u().nullable().optional(),status:u().nullable().optional(),reviewStatus:u().nullable().optional(),integrityReviewStatus:u().nullable().optional(),integrityDecision:u().nullable().optional(),lastSyncedAt:u().nullable().optional(),conversionTrackingConfigured:ne().optional()});S({disconnected:ne()});S({runId:u(),status:u()});const U4=S({type:u().nullable().optional(),title:u().nullable().optional(),body:u().nullable().optional(),targetUrl:u().nullable().optional(),fileId:u().nullable().optional()}),Pc=H(["impressions","clicks"]),$4=Pc.enum,Vc=H(["impression","click"]);Vc.enum;const I4=S({id:u(),adGroupId:u(),name:u(),status:u(),reviewStatus:u().nullable().optional(),creative:U4.nullable().optional(),upstreamUpdatedAt:y().int().nullable().optional(),syncedAt:u().optional()}),P4=S({id:u(),campaignId:u(),name:u(),description:u().nullable().optional(),status:u(),billingEventType:Dn([Vc,ze()]).optional(),maxBidMicros:y().int().nullable().optional(),contextHints:k(u()).default([]),ads:k(I4).default([]),upstreamUpdatedAt:y().int().nullable().optional(),syncedAt:u().optional()}),V4=S({id:u(),name:u(),description:u().nullable().optional(),status:u(),startTime:y().int().nullable().optional(),endTime:y().int().nullable().optional(),biddingType:Dn([Pc,ze()]).optional(),dailySpendLimitMicros:y().int().nullable().optional(),lifetimeSpendLimitMicros:y().int().nullable().optional(),conversionEventSettingIds:k(u()).default([]),locationIds:k(u()).optional(),adGroups:k(P4).default([]),upstreamUpdatedAt:y().int().nullable().optional(),syncedAt:u().optional()});S({campaigns:k(V4)});const GS=H(["campaign","ad_group"]);GS.enum;const G4=S({level:GS,entityId:u(),date:u(),impressions:y().int(),clicks:y().int(),spendMicros:y().int(),conversions:y().int(),ctr:y().nullable(),cpcMicros:y().int().nullable()});S({rows:k(G4),currencyCode:u().nullable().optional()});const H4=S({impressions:y().int(),clicks:y().int(),spendMicros:y().int(),conversions:y().int(),ctr:y().nullable(),cpcMicros:y().int().nullable()});S({connected:ne(),displayName:u().nullable().optional(),currencyCode:u().nullable().optional(),lastSyncedAt:u().nullable().optional(),campaignCount:y().int(),adGroupCount:y().int(),adCount:y().int(),window:S({from:u().nullable(),to:u().nullable()}),totals:H4});const Ca=u().min(8).max(128).regex(/^[\w.:-]+$/,"operationKey may contain letters, numbers, dot, underscore, colon, and hyphen"),ft=u().min(1).max(200),Pi=u().min(3).max(1e3).refine(e=>e.trim().length>0),tr=y().int().min(946684800).max(4102444800),nr=y().int().positive().max(Number.MAX_SAFE_INTEGER),sm=u().regex(/^[a-f0-9]{64}$/),HS=k(ft).max(100).refine(e=>new Set(e).size===e.length,"conversionEventSettingIds must be unique"),KS=u().url().refine(e=>new URL(e).protocol==="https:",{message:"URL must use https"}),QS=H(["image_upload","campaign_create","campaign_update","campaign_pause","campaign_tree_activate","ad_group_create","ad_group_update","ad_group_pause","ad_create","ad_update","ad_pause"]);QS.enum;const ZS=H(["pending","reconciling","succeeded","failed","unknown"]),Zs=ZS.enum,YS=H(["known_entity","create_fingerprint","manual_only"]);YS.enum;const FS=H([Zs.pending,Zs.unknown,Zs.reconciling]);FS.enum;const XS=H(["active","paused","archived"]);XS.enum;const JS=H(["file","campaign","ad_group","ad"]);JS.enum;const WS=H(["campaign","ad_group","ad"]);WS.enum;const rm=S({id:ft,expectedUpdatedAt:y().int().nonnegative()}).strict(),K4=rm,_c=100,Q4=rm.extend({ads:k(K4).min(1).max(_c-1)}).strict(),Z4=rm.extend({adGroups:k(Q4).min(1).max(_c-1)}).strict();function Y4(e,n){return e<n?-1:e>n?1:0}function xv(e,n,i){for(let r=1;r<e.length;r+=1)if(Y4(e[r-1].id,e[r].id)>=0){i.addIssue({code:"custom",path:n,message:"Activation manifest entities must be uniquely sorted by id"});return}}const e1=S({campaign:Z4}).strict().superRefine((e,n)=>{1+e.campaign.adGroups.reduce((l,c)=>l+1+c.ads.length,0)>_c&&n.addIssue({code:"custom",path:["campaign"],message:`Activation manifests may contain at most ${_c} entities`}),xv(e.campaign.adGroups,["campaign","adGroups"],n);const r=new Set;for(let l=0;l<e.campaign.adGroups.length;l+=1){const c=e.campaign.adGroups[l];xv(c.ads,["campaign","adGroups",l,"ads"],n);for(let d=0;d<c.ads.length;d+=1){const h=c.ads[d];r.has(h.id)&&n.addIssue({code:"custom",path:["campaign","adGroups",l,"ads",d,"id"],message:"An ad may appear only once in an activation manifest"}),r.add(h.id)}}}),t1=sm,F4=H(["approved","executing","consumed","revoked","expired","unknown"]),wa=F4.enum,X4=H(["pending","executing","active","failed","rollback_executing","rolled_back","rollback_failed","unknown"]),di=X4.enum,J4=S({name:Pi.optional(),description:u().max(4e3).nullable().optional(),status:XS.optional(),startTime:tr.nullable().optional(),endTime:tr.nullable().optional(),lifetimeSpendLimitMicros:nr.min(1e6).optional(),locationIds:k(ft).max(100).optional(),biddingType:Pc.optional(),conversionEventSettingIds:HS.optional(),campaignId:ft.optional(),contextHints:k(u().min(1).max(1e3)).max(100).optional(),maxBidMicros:nr.max(1e8).optional(),billingEventType:Vc.optional(),adGroupId:ft.optional(),creativeFingerprint:sm.optional()}).strict();S({operationKey:Ca,imageUrl:KS});S({operationKey:Ca,name:Pi,description:u().max(4e3).optional(),startTime:tr.optional(),endTime:tr.optional(),lifetimeSpendLimitMicros:nr.min(1e6),locationIds:k(ft).min(1).max(100),biddingType:Pc.optional(),conversionEventSettingIds:HS.optional()}).superRefine((e,n)=>{e.startTime!==void 0&&e.endTime!==void 0&&e.endTime<=e.startTime&&n.addIssue({code:"custom",path:["endTime"],message:"endTime must be after startTime"}),e.biddingType===$4.clicks&&(e.conversionEventSettingIds===void 0||e.conversionEventSettingIds.length===0)&&n.addIssue({code:"custom",path:["conversionEventSettingIds"],message:"conversionEventSettingIds must be non-empty when biddingType is clicks"})});S({operationKey:Ca,campaignId:ft,name:Pi,description:u().max(4e3).optional(),contextHints:k(u().min(1).max(1e3)).min(1).max(100),maxBidMicros:nr.max(1e8),billingEventType:Vc.optional()});const n1=S({title:u().min(3).max(50),body:u().min(1).max(100),targetUrl:KS,fileId:ft});S({operationKey:Ca,adGroupId:ft,name:Pi,creative:n1});function om(e){return Object.keys(e).some(n=>n!=="operationKey"&&n!=="expectedUpdatedAt")}S({operationKey:Ca,expectedUpdatedAt:y().int().nonnegative(),name:Pi.optional(),description:u().max(4e3).nullable().optional(),startTime:tr.nullable().optional(),endTime:tr.nullable().optional(),lifetimeSpendLimitMicros:nr.min(1e6).optional(),locationIds:k(ft).min(1).max(100).optional()}).refine(om,{message:"At least one campaign field must be updated"});S({operationKey:Ca,expectedUpdatedAt:y().int().nonnegative(),name:Pi.optional(),description:u().max(4e3).nullable().optional(),contextHints:k(u().min(1).max(1e3)).min(1).max(100).optional(),maxBidMicros:nr.max(1e8).optional()}).refine(om,{message:"At least one ad group field must be updated"});S({operationKey:Ca,expectedUpdatedAt:y().int().nonnegative(),name:Pi.optional(),creative:n1.optional()}).refine(om,{message:"At least one ad field must be updated"});S({operationKey:Ca});const Gc=S({id:u(),adAccountId:u().nullable(),operationKey:u(),kind:QS,state:ZS,entityType:Dn([JS,ze()]),entityId:u().nullable(),upstreamUpdatedAt:y().int().nullable(),errorCode:u().nullable(),errorMessage:u().nullable(),reconcileStrategy:Dn([YS,ze()]),reconcileParentId:ft.nullable(),reconcileFingerprint:sm.nullable(),reconcileFields:J4.nullable(),reconcileAttempts:y().int().nonnegative(),lastReconciledAt:u().nullable(),createdAt:u(),updatedAt:u()});S({operation:Gc,replayed:ne()});const rt=lS({offset:!0}),ur={id:ft,projectId:ft,adAccountId:ft,manifestHash:t1,manifest:e1,executorApiKeyId:ft,approverApiKeyId:ft,expiresAt:rt,approvedAt:rt,createdAt:rt,updatedAt:rt,revocationRequestedAt:rt.nullable()},W4=S({...ur,state:De(wa.approved),operationId:ze(),executionStartedAt:ze(),consumedAt:ze(),revokedAt:ze(),expiredAt:ze()}).strict(),e3=S({...ur,state:De(wa.executing),operationId:ft,executionStartedAt:rt,consumedAt:ze(),revokedAt:ze(),expiredAt:ze()}).strict(),t3=S({...ur,state:De(wa.consumed),operationId:ft,executionStartedAt:rt,consumedAt:rt,revokedAt:ze(),expiredAt:ze()}).strict(),n3=S({...ur,state:De(wa.revoked),operationId:ze(),executionStartedAt:ze(),consumedAt:ze(),revokedAt:rt,expiredAt:ze()}).strict(),a3=S({...ur,state:De(wa.expired),operationId:ze(),executionStartedAt:ze(),consumedAt:ze(),revokedAt:ze(),expiredAt:rt}).strict(),i3=S({...ur,state:De(wa.unknown),operationId:ft,executionStartedAt:rt,consumedAt:ze(),revokedAt:ze(),expiredAt:ze()}).strict(),a1=_o("state",[W4,e3,t3,n3,a3,i3]).superRefine((e,n)=>{e.executorApiKeyId===e.approverApiKeyId&&n.addIssue({code:"custom",path:["executorApiKeyId"],message:"The activation executor must use a different API key from the approver"}),e.revocationRequestedAt!==null&&e.state!==wa.executing&&e.state!==wa.unknown&&e.state!==wa.consumed&&n.addIssue({code:"custom",path:["revocationRequestedAt"],message:"Only an executing, cancelled, or unresolved activation can carry a cancellation request"})}),fi={id:ft,operationId:ft,ordinal:y().int().nonnegative(),entityType:WS,entityId:ft,expectedUpdatedAt:y().int().nonnegative(),createdAt:rt,updatedAt:rt},To={errorCode:ze(),errorMessage:ze()},lm={errorCode:u().min(1).max(100),errorMessage:u().min(1).max(500),remediation:u().min(1).max(500)},s3=S({...fi,...To,state:De(di.pending),providerUpdatedAt:ze(),remediation:ze(),startedAt:ze(),finishedAt:ze()}).strict(),r3=S({...fi,...To,state:De(di.executing),providerUpdatedAt:ze(),remediation:ze(),startedAt:rt,finishedAt:ze()}).strict(),o3=S({...fi,...To,state:De(di.active),providerUpdatedAt:y().int().nonnegative(),remediation:ze(),startedAt:rt,finishedAt:rt}).strict(),l3=S({...fi,...lm,state:De(di.failed),providerUpdatedAt:Dn([y().int().nonnegative(),ze()]),startedAt:rt,finishedAt:rt}).strict(),c3=S({...fi,...To,state:De(di.rollback_executing),providerUpdatedAt:y().int().nonnegative(),remediation:u().min(1).max(500),startedAt:rt,finishedAt:ze()}).strict(),u3=S({...fi,...To,state:De(di.rolled_back),providerUpdatedAt:y().int().nonnegative(),remediation:u().min(1).max(500),startedAt:rt,finishedAt:rt}).strict(),d3=S({...fi,...lm,state:De(di.rollback_failed),providerUpdatedAt:y().int().nonnegative(),startedAt:rt,finishedAt:rt}).strict(),f3=S({...fi,...lm,state:De(di.unknown),providerUpdatedAt:Dn([y().int().nonnegative(),ze()]),startedAt:rt,finishedAt:rt}).strict(),p3=_o("state",[s3,r3,o3,l3,c3,u3,d3,f3]),op={exact:"exact",refreshSemanticallyUnchanged:"refresh_semantically_unchanged"},m3=H([op.exact,op.refreshSemanticallyUnchanged]);S({manifest:e1,executorApiKeyId:ft,expiresAt:rt,versionPolicy:m3.default(op.exact)}).strict();S({grant:a1}).strict();S({}).strict();S({operationKey:Ca,grantId:ft,manifestHash:t1}).strict();S({grant:a1,operation:Gc,steps:k(p3)}).strict();const h3=[Zs.pending,Zs.unknown,Zs.reconciling];function g3(e){if(e===void 0||e==="")return h3;if(Array.isArray(e)){const n=[];for(const i of e)typeof i=="string"?n.push(...i.split(",")):n.push(i);return n}return typeof e=="string"?e.split(",").filter(Boolean):e}S({state:eD(g3,k(FS).min(1).max(3).refine(e=>new Set(e).size===e.length,"state values must be unique")),limit:tD().int().min(1).max(200).default(100),cursor:u().min(1).max(1e3).optional()});S({operations:k(Gc),count:y().int().nonnegative(),nextCursor:u().nullable()});S({}).strict();S({operation:Gc,resolved:ne()});var y3=(e=>(e.Clicks="clicks",e.Impressions="impressions",e.CTR="ctr",e.Position="position",e))(y3||{});const DU={clicks:"Clicks",impressions:"Impressions",ctr:"CTR",position:"Position"},zU={clicks:"Clicks",impressions:"Impr",ctr:"CTR",position:"Pos"},RU=Pp;function b3(e){const n=[];if(e.message&&n.push(e.message),e.providers)for(const[i,r]of Object.entries(e.providers)){const l=`[${i}] ${r.message}`;r.raw!==void 0?n.push(`${l}
52
+ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(const d of e.seen.entries()){const h=d[1];if(n===d[0]){c(d);continue}if(e.external){const b=e.external.registry.get(d[0])?.id;if(n!==d[0]&&b){c(d);continue}}if(e.metadataRegistry.get(d[0])?.id){c(d);continue}if(h.cycle){c(d);continue}if(h.count>1&&e.reused==="ref"){c(d);continue}}}function rS(e,n){const i=e.seen.get(n);if(!i)throw new Error("Unprocessed schema. This is a bug in Zod.");const r=d=>{const h=e.seen.get(d);if(h.ref===null)return;const g=h.def??h.schema,b={...g},x=h.ref;if(h.ref=null,x){r(x);const N=e.seen.get(x),C=N.schema;if(C.$ref&&(e.target==="draft-07"||e.target==="draft-04"||e.target==="openapi-3.0")?(g.allOf=g.allOf??[],g.allOf.push(C)):Object.assign(g,C),Object.assign(g,b),d._zod.parent===x)for(const A in g)A==="$ref"||A==="allOf"||A in b||delete g[A];if(C.$ref&&N.def)for(const A in g)A==="$ref"||A==="allOf"||A in N.def&&JSON.stringify(g[A])===JSON.stringify(N.def[A])&&delete g[A]}const w=d._zod.parent;if(w&&w!==x){r(w);const N=e.seen.get(w);if(N?.schema.$ref&&(g.$ref=N.schema.$ref,N.def))for(const C in g)C==="$ref"||C==="allOf"||C in N.def&&JSON.stringify(g[C])===JSON.stringify(N.def[C])&&delete g[C]}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:jc(n,"input",e.processors),output:jc(n,"output",e.processors)}},enumerable:!1,writable:!1}),d}catch{throw new Error("Error converting schema to JSON.")}}function Qt(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 Qt(r.element,i);if(r.type==="set")return Qt(r.valueType,i);if(r.type==="lazy")return Qt(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 Qt(r.innerType,i);if(r.type==="intersection")return Qt(r.left,i)||Qt(r.right,i);if(r.type==="record"||r.type==="map")return Qt(r.keyType,i)||Qt(r.valueType,i);if(r.type==="pipe")return Qt(r.in,i)||Qt(r.out,i);if(r.type==="object"){for(const l in r.shape)if(Qt(r.shape[l],i))return!0;return!1}if(r.type==="union"){for(const l of r.options)if(Qt(l,i))return!0;return!1}if(r.type==="tuple"){for(const l of r.items)if(Qt(l,i))return!0;return!!(r.rest&&Qt(r.rest,i))}return!1}const gE=(e,n={})=>i=>{const r=iS({...i,processors:n});return Et(e,r),sS(r,e),rS(r,e)},jc=(e,n,i={})=>r=>{const{libraryOptions:l,target:c}=r??{},d=iS({...l??{},target:c,io:n,processors:i});return Et(e,d),sS(d,e),rS(d,e)},yE={guid:"uuid",url:"uri",datetime:"date-time",json_string:"json-string",regex:""},bE=(e,n,i,r)=>{const l=i;l.type="string";const{minimum:c,maximum:d,format:h,patterns:g,contentEncoding:b}=e._zod.bag;if(typeof c=="number"&&(l.minLength=c),typeof d=="number"&&(l.maxLength=d),h&&(l.format=yE[h]??h,l.format===""&&delete l.format,h==="time"&&delete l.format),b&&(l.contentEncoding=b),g&&g.size>0){const x=[...g];x.length===1?l.pattern=x[0].source:x.length>1&&(l.allOf=[...x.map(w=>({...n.target==="draft-07"||n.target==="draft-04"||n.target==="openapi-3.0"?{type:"string"}:{},pattern:w.source}))])}},vE=(e,n,i,r)=>{const l=i,{minimum:c,maximum:d,format:h,multipleOf:g,exclusiveMaximum:b,exclusiveMinimum:x}=e._zod.bag;typeof h=="string"&&h.includes("int")?l.type="integer":l.type="number",typeof x=="number"&&(n.target==="draft-04"||n.target==="openapi-3.0"?(l.minimum=x,l.exclusiveMinimum=!0):l.exclusiveMinimum=x),typeof c=="number"&&(l.minimum=c,typeof x=="number"&&n.target!=="draft-04"&&(x>=c?delete l.minimum:delete l.exclusiveMinimum)),typeof b=="number"&&(n.target==="draft-04"||n.target==="openapi-3.0"?(l.maximum=b,l.exclusiveMaximum=!0):l.exclusiveMaximum=b),typeof d=="number"&&(l.maximum=d,typeof b=="number"&&n.target!=="draft-04"&&(b<=d?delete l.maximum:delete l.exclusiveMaximum)),typeof g=="number"&&(l.multipleOf=g)},SE=(e,n,i,r)=>{i.type="boolean"},xE=(e,n,i,r)=>{n.target==="openapi-3.0"?(i.type="string",i.nullable=!0,i.enum=[null]):i.type="null"},wE=(e,n,i,r)=>{i.not={}},jE=(e,n,i,r)=>{},NE=(e,n,i,r)=>{const l=e._zod.def,c=L0(l.entries);c.every(d=>typeof d=="number")&&(i.type="number"),c.every(d=>typeof d=="string")&&(i.type="string"),i.enum=c},kE=(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},AE=(e,n,i,r)=>{if(n.unrepresentable==="throw")throw new Error("Custom types cannot be represented in JSON Schema")},CE=(e,n,i,r)=>{if(n.unrepresentable==="throw")throw new Error("Transforms cannot be represented in JSON Schema")},_E=(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=Et(c.element,n,{...r,path:[...r.path,"items"]})},TE=(e,n,i,r)=>{const l=i,c=e._zod.def;l.type="object",l.properties={};const d=c.shape;for(const b in d)l.properties[b]=Et(d[b],n,{...r,path:[...r.path,"properties",b]});const h=new Set(Object.keys(d)),g=new Set([...h].filter(b=>{const x=c.shape[b]._zod;return n.io==="input"?x.optin===void 0:x.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=Et(c.catchall,n,{...r,path:[...r.path,"additionalProperties"]})):n.io==="output"&&(l.additionalProperties=!1)},EE=(e,n,i,r)=>{const l=e._zod.def,c=l.inclusive===!1,d=l.options.map((h,g)=>Et(h,n,{...r,path:[...r.path,c?"oneOf":"anyOf",g]}));c?i.oneOf=d:i.anyOf=d},OE=(e,n,i,r)=>{const l=e._zod.def,c=Et(l.left,n,{...r,path:[...r.path,"allOf",0]}),d=Et(l.right,n,{...r,path:[...r.path,"allOf",1]}),h=b=>"allOf"in b&&Object.keys(b).length===1,g=[...h(c)?c.allOf:[c],...h(d)?d.allOf:[d]];i.allOf=g},DE=(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 x=Et(c.valueType,n,{...r,path:[...r.path,"patternProperties","*"]});l.patternProperties={};for(const w of g)l.patternProperties[w.source]=x}else(n.target==="draft-07"||n.target==="draft-2020-12")&&(l.propertyNames=Et(c.keyType,n,{...r,path:[...r.path,"propertyNames"]})),l.additionalProperties=Et(c.valueType,n,{...r,path:[...r.path,"additionalProperties"]});const b=d._zod.values;if(b){const x=[...b].filter(w=>typeof w=="string"||typeof w=="number");x.length>0&&(l.required=x)}},zE=(e,n,i,r)=>{const l=e._zod.def,c=Et(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"}]},RE=(e,n,i,r)=>{const l=e._zod.def;Et(l.innerType,n,r);const c=n.seen.get(e);c.ref=l.innerType},ME=(e,n,i,r)=>{const l=e._zod.def;Et(l.innerType,n,r);const c=n.seen.get(e);c.ref=l.innerType,i.default=JSON.parse(JSON.stringify(l.defaultValue))},BE=(e,n,i,r)=>{const l=e._zod.def;Et(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)))},LE=(e,n,i,r)=>{const l=e._zod.def;Et(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},qE=(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;Et(c,n,r);const d=n.seen.get(e);d.ref=c},UE=(e,n,i,r)=>{const l=e._zod.def;Et(l.innerType,n,r);const c=n.seen.get(e);c.ref=l.innerType,i.readOnly=!0},oS=(e,n,i,r)=>{const l=e._zod.def;Et(l.innerType,n,r);const c=n.seen.get(e);c.ref=l.innerType},$E=Z("ZodISODateTime",(e,n)=>{L_.init(e,n),gt.init(e,n)});function lS(e){return GT($E,e)}const IE=Z("ZodISODate",(e,n)=>{q_.init(e,n),gt.init(e,n)});function PE(e){return HT(IE,e)}const VE=Z("ZodISOTime",(e,n)=>{U_.init(e,n),gt.init(e,n)});function GE(e){return KT(VE,e)}const HE=Z("ZodISODuration",(e,n)=>{$_.init(e,n),gt.init(e,n)});function KE(e){return QT(HE,e)}const QE=(e,n)=>{I0.init(e,n),e.name="ZodError",Object.defineProperties(e,{format:{value:i=>T2(e,i)},flatten:{value:i=>_2(e,i)},addIssue:{value:i=>{e.issues.push(i),e.message=JSON.stringify(e.issues,Wf,2)}},addIssues:{value:i=>{e.issues.push(...i),e.message=JSON.stringify(e.issues,Wf,2)}},isEmpty:{get(){return e.issues.length===0}}})},Rn=Z("ZodError",QE,{Parent:Error}),ZE=Mp(Rn),YE=Bp(Rn),FE=Mc(Rn),XE=Bc(Rn),JE=D2(Rn),WE=z2(Rn),eO=R2(Rn),tO=M2(Rn),nO=B2(Rn),aO=L2(Rn),iO=q2(Rn),sO=U2(Rn),ht=Z("ZodType",(e,n)=>(pt.init(e,n),Object.assign(e["~standard"],{jsonSchema:{input:jc(e,"input"),output:jc(e,"output")}}),e.toJSONSchema=gE(e,{}),e.def=n,e.type=n.type,Object.defineProperty(e,"_def",{value:n}),e.check=(...i)=>e.clone(ci(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)=>ui(e,i,r),e.brand=()=>e,e.register=((i,r)=>(i.add(e,r),e)),e.parse=(i,r)=>ZE(e,i,r,{callee:e.parse}),e.safeParse=(i,r)=>FE(e,i,r),e.parseAsync=async(i,r)=>YE(e,i,r,{callee:e.parseAsync}),e.safeParseAsync=async(i,r)=>XE(e,i,r),e.spa=e.safeParseAsync,e.encode=(i,r)=>JE(e,i,r),e.decode=(i,r)=>WE(e,i,r),e.encodeAsync=async(i,r)=>eO(e,i,r),e.decodeAsync=async(i,r)=>tO(e,i,r),e.safeEncode=(i,r)=>nO(e,i,r),e.safeDecode=(i,r)=>aO(e,i,r),e.safeEncodeAsync=async(i,r)=>iO(e,i,r),e.safeDecodeAsync=async(i,r)=>sO(e,i,r),e.refine=(i,r)=>e.check(JO(i,r)),e.superRefine=i=>e.check(WO(i)),e.overwrite=i=>e.check(or(i)),e.optional=()=>rv(e),e.exactOptional=()=>UO(e),e.nullable=()=>ov(e),e.nullish=()=>rv(ov(e)),e.nonoptional=i=>HO(e,i),e.array=()=>k(e),e.or=i=>Dn([e,i]),e.and=i=>RO(e,i),e.transform=i=>np(e,dS(i)),e.default=i=>PO(e,i),e.prefault=i=>GO(e,i),e.catch=i=>QO(e,i),e.pipe=i=>np(e,i),e.readonly=()=>FO(e),e.describe=i=>{const r=e.clone();return go.add(r,{description:i}),r},Object.defineProperty(e,"description",{get(){return go.get(e)?.description},configurable:!0}),e.meta=(...i)=>{if(i.length===0)return go.get(e);const r=e.clone();return go.add(r,i[0]),r},e.isOptional=()=>e.safeParse(void 0).success,e.isNullable=()=>e.safeParse(null).success,e.apply=i=>i(e),e)),cS=Z("_ZodString",(e,n)=>{Lp.init(e,n),ht.init(e,n),e._zod.processJSONSchema=(r,l,c)=>bE(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(tE(...r)),e.includes=(...r)=>e.check(iE(...r)),e.startsWith=(...r)=>e.check(sE(...r)),e.endsWith=(...r)=>e.check(rE(...r)),e.min=(...r)=>e.check(wc(...r)),e.max=(...r)=>e.check(nS(...r)),e.length=(...r)=>e.check(aS(...r)),e.nonempty=(...r)=>e.check(wc(1,...r)),e.lowercase=r=>e.check(nE(r)),e.uppercase=r=>e.check(aE(r)),e.trim=()=>e.check(lE()),e.normalize=(...r)=>e.check(oE(...r)),e.toLowerCase=()=>e.check(cE()),e.toUpperCase=()=>e.check(uE()),e.slugify=()=>e.check(dE())}),rO=Z("ZodString",(e,n)=>{Lp.init(e,n),cS.init(e,n),e.email=i=>e.check(jT(oO,i)),e.url=i=>e.check(_T(lO,i)),e.jwt=i=>e.check(VT(jO,i)),e.emoji=i=>e.check(TT(cO,i)),e.guid=i=>e.check(ev(iv,i)),e.uuid=i=>e.check(NT(sc,i)),e.uuidv4=i=>e.check(kT(sc,i)),e.uuidv6=i=>e.check(AT(sc,i)),e.uuidv7=i=>e.check(CT(sc,i)),e.nanoid=i=>e.check(ET(uO,i)),e.guid=i=>e.check(ev(iv,i)),e.cuid=i=>e.check(OT(dO,i)),e.cuid2=i=>e.check(DT(fO,i)),e.ulid=i=>e.check(zT(pO,i)),e.base64=i=>e.check($T(SO,i)),e.base64url=i=>e.check(IT(xO,i)),e.xid=i=>e.check(RT(mO,i)),e.ksuid=i=>e.check(MT(hO,i)),e.ipv4=i=>e.check(BT(gO,i)),e.ipv6=i=>e.check(LT(yO,i)),e.cidrv4=i=>e.check(qT(bO,i)),e.cidrv6=i=>e.check(UT(vO,i)),e.e164=i=>e.check(PT(wO,i)),e.datetime=i=>e.check(lS(i)),e.date=i=>e.check(PE(i)),e.time=i=>e.check(GE(i)),e.duration=i=>e.check(KE(i))});function u(e){return wT(rO,e)}const gt=Z("ZodStringFormat",(e,n)=>{mt.init(e,n),cS.init(e,n)}),oO=Z("ZodEmail",(e,n)=>{__.init(e,n),gt.init(e,n)}),iv=Z("ZodGUID",(e,n)=>{A_.init(e,n),gt.init(e,n)}),sc=Z("ZodUUID",(e,n)=>{C_.init(e,n),gt.init(e,n)}),lO=Z("ZodURL",(e,n)=>{T_.init(e,n),gt.init(e,n)}),cO=Z("ZodEmoji",(e,n)=>{E_.init(e,n),gt.init(e,n)}),uO=Z("ZodNanoID",(e,n)=>{O_.init(e,n),gt.init(e,n)}),dO=Z("ZodCUID",(e,n)=>{D_.init(e,n),gt.init(e,n)}),fO=Z("ZodCUID2",(e,n)=>{z_.init(e,n),gt.init(e,n)}),pO=Z("ZodULID",(e,n)=>{R_.init(e,n),gt.init(e,n)}),mO=Z("ZodXID",(e,n)=>{M_.init(e,n),gt.init(e,n)}),hO=Z("ZodKSUID",(e,n)=>{B_.init(e,n),gt.init(e,n)}),gO=Z("ZodIPv4",(e,n)=>{I_.init(e,n),gt.init(e,n)}),yO=Z("ZodIPv6",(e,n)=>{P_.init(e,n),gt.init(e,n)}),bO=Z("ZodCIDRv4",(e,n)=>{V_.init(e,n),gt.init(e,n)}),vO=Z("ZodCIDRv6",(e,n)=>{G_.init(e,n),gt.init(e,n)}),SO=Z("ZodBase64",(e,n)=>{H_.init(e,n),gt.init(e,n)}),xO=Z("ZodBase64URL",(e,n)=>{Q_.init(e,n),gt.init(e,n)}),wO=Z("ZodE164",(e,n)=>{Z_.init(e,n),gt.init(e,n)}),jO=Z("ZodJWT",(e,n)=>{F_.init(e,n),gt.init(e,n)}),qp=Z("ZodNumber",(e,n)=>{X0.init(e,n),ht.init(e,n),e._zod.processJSONSchema=(r,l,c)=>vE(e,r,l),e.gt=(r,l)=>e.check(nv(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(tv(r,l)),e.lte=(r,l)=>e.check(Ef(r,l)),e.max=(r,l)=>e.check(Ef(r,l)),e.int=r=>e.check(sv(r)),e.safe=r=>e.check(sv(r)),e.positive=r=>e.check(nv(0,r)),e.nonnegative=r=>e.check(Of(0,r)),e.negative=r=>e.check(tv(0,r)),e.nonpositive=r=>e.check(Ef(0,r)),e.multipleOf=(r,l)=>e.check(av(r,l)),e.step=(r,l)=>e.check(av(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 y(e){return ZT(qp,e)}const NO=Z("ZodNumberFormat",(e,n)=>{X_.init(e,n),qp.init(e,n)});function sv(e){return FT(NO,e)}const kO=Z("ZodBoolean",(e,n)=>{J_.init(e,n),ht.init(e,n),e._zod.processJSONSchema=(i,r,l)=>SE(e,i,r)});function ne(e){return XT(kO,e)}const AO=Z("ZodNull",(e,n)=>{W_.init(e,n),ht.init(e,n),e._zod.processJSONSchema=(i,r,l)=>xE(e,i,r)});function ze(e){return JT(AO,e)}const CO=Z("ZodUnknown",(e,n)=>{eT.init(e,n),ht.init(e,n),e._zod.processJSONSchema=(i,r,l)=>jE()});function Pn(){return WT(CO)}const _O=Z("ZodNever",(e,n)=>{tT.init(e,n),ht.init(e,n),e._zod.processJSONSchema=(i,r,l)=>wE(e,i,r)});function TO(e){return eE(_O,e)}const EO=Z("ZodArray",(e,n)=>{nT.init(e,n),ht.init(e,n),e._zod.processJSONSchema=(i,r,l)=>_E(e,i,r,l),e.element=n.element,e.min=(i,r)=>e.check(wc(i,r)),e.nonempty=i=>e.check(wc(1,i)),e.max=(i,r)=>e.check(nS(i,r)),e.length=(i,r)=>e.check(aS(i,r)),e.unwrap=()=>e.element});function k(e,n){return fE(EO,e,n)}const OO=Z("ZodObject",(e,n)=>{iT.init(e,n),ht.init(e,n),e._zod.processJSONSchema=(i,r,l)=>TE(e,i,r,l),Qe(e,"shape",()=>n.shape),e.keyof=()=>H(Object.keys(e._zod.def.shape)),e.catchall=i=>e.clone({...e._zod.def,catchall:i}),e.passthrough=()=>e.clone({...e._zod.def,catchall:Pn()}),e.loose=()=>e.clone({...e._zod.def,catchall:Pn()}),e.strict=()=>e.clone({...e._zod.def,catchall:TO()}),e.strip=()=>e.clone({...e._zod.def,catchall:void 0}),e.extend=i=>j2(e,i),e.safeExtend=i=>N2(e,i),e.merge=i=>k2(e,i),e.pick=i=>x2(e,i),e.omit=i=>w2(e,i),e.partial=(...i)=>A2(fS,e,i[0]),e.required=(...i)=>C2(pS,e,i[0])});function S(e,n){const i={type:"object",shape:e??{},...be(n)};return new OO(i)}const uS=Z("ZodUnion",(e,n)=>{eS.init(e,n),ht.init(e,n),e._zod.processJSONSchema=(i,r,l)=>EE(e,i,r,l),e.options=n.options});function Dn(e,n){return new uS({type:"union",options:e,...be(n)})}const DO=Z("ZodDiscriminatedUnion",(e,n)=>{uS.init(e,n),sT.init(e,n)});function _o(e,n,i){return new DO({type:"union",options:n,discriminator:e,...be(i)})}const zO=Z("ZodIntersection",(e,n)=>{rT.init(e,n),ht.init(e,n),e._zod.processJSONSchema=(i,r,l)=>OE(e,i,r,l)});function RO(e,n){return new zO({type:"intersection",left:e,right:n})}const MO=Z("ZodRecord",(e,n)=>{oT.init(e,n),ht.init(e,n),e._zod.processJSONSchema=(i,r,l)=>DE(e,i,r,l),e.keyType=n.keyType,e.valueType=n.valueType});function He(e,n,i){return new MO({type:"record",keyType:e,valueType:n,...be(i)})}const tp=Z("ZodEnum",(e,n)=>{lT.init(e,n),ht.init(e,n),e._zod.processJSONSchema=(r,l,c)=>NE(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 tp({...n,checks:[],...be(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 tp({...n,checks:[],...be(l),entries:c})}});function H(e,n){const i=Array.isArray(e)?Object.fromEntries(e.map(r=>[r,r])):e;return new tp({type:"enum",entries:i,...be(n)})}const BO=Z("ZodLiteral",(e,n)=>{cT.init(e,n),ht.init(e,n),e._zod.processJSONSchema=(i,r,l)=>kE(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 De(e,n){return new BO({type:"literal",values:Array.isArray(e)?e:[e],...be(n)})}const LO=Z("ZodTransform",(e,n)=>{uT.init(e,n),ht.init(e,n),e._zod.processJSONSchema=(i,r,l)=>CE(e,i),e._zod.parse=(i,r)=>{if(r.direction==="backward")throw new M0(e.constructor.name);i.addIssue=c=>{if(typeof c=="string")i.issues.push(wo(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(wo(d))}};const l=n.transform(i.value,i);return l instanceof Promise?l.then(c=>(i.value=c,i)):(i.value=l,i)}});function dS(e){return new LO({type:"transform",transform:e})}const fS=Z("ZodOptional",(e,n)=>{tS.init(e,n),ht.init(e,n),e._zod.processJSONSchema=(i,r,l)=>oS(e,i,r,l),e.unwrap=()=>e._zod.def.innerType});function rv(e){return new fS({type:"optional",innerType:e})}const qO=Z("ZodExactOptional",(e,n)=>{dT.init(e,n),ht.init(e,n),e._zod.processJSONSchema=(i,r,l)=>oS(e,i,r,l),e.unwrap=()=>e._zod.def.innerType});function UO(e){return new qO({type:"optional",innerType:e})}const $O=Z("ZodNullable",(e,n)=>{fT.init(e,n),ht.init(e,n),e._zod.processJSONSchema=(i,r,l)=>zE(e,i,r,l),e.unwrap=()=>e._zod.def.innerType});function ov(e){return new $O({type:"nullable",innerType:e})}const IO=Z("ZodDefault",(e,n)=>{pT.init(e,n),ht.init(e,n),e._zod.processJSONSchema=(i,r,l)=>ME(e,i,r,l),e.unwrap=()=>e._zod.def.innerType,e.removeDefault=e.unwrap});function PO(e,n){return new IO({type:"default",innerType:e,get defaultValue(){return typeof n=="function"?n():U0(n)}})}const VO=Z("ZodPrefault",(e,n)=>{mT.init(e,n),ht.init(e,n),e._zod.processJSONSchema=(i,r,l)=>BE(e,i,r,l),e.unwrap=()=>e._zod.def.innerType});function GO(e,n){return new VO({type:"prefault",innerType:e,get defaultValue(){return typeof n=="function"?n():U0(n)}})}const pS=Z("ZodNonOptional",(e,n)=>{hT.init(e,n),ht.init(e,n),e._zod.processJSONSchema=(i,r,l)=>RE(e,i,r,l),e.unwrap=()=>e._zod.def.innerType});function HO(e,n){return new pS({type:"nonoptional",innerType:e,...be(n)})}const KO=Z("ZodCatch",(e,n)=>{gT.init(e,n),ht.init(e,n),e._zod.processJSONSchema=(i,r,l)=>LE(e,i,r,l),e.unwrap=()=>e._zod.def.innerType,e.removeCatch=e.unwrap});function QO(e,n){return new KO({type:"catch",innerType:e,catchValue:typeof n=="function"?n:()=>n})}const ZO=Z("ZodPipe",(e,n)=>{yT.init(e,n),ht.init(e,n),e._zod.processJSONSchema=(i,r,l)=>qE(e,i,r,l),e.in=n.in,e.out=n.out});function np(e,n){return new ZO({type:"pipe",in:e,out:n})}const YO=Z("ZodReadonly",(e,n)=>{bT.init(e,n),ht.init(e,n),e._zod.processJSONSchema=(i,r,l)=>UE(e,i,r,l),e.unwrap=()=>e._zod.def.innerType});function FO(e){return new YO({type:"readonly",innerType:e})}const XO=Z("ZodCustom",(e,n)=>{vT.init(e,n),ht.init(e,n),e._zod.processJSONSchema=(i,r,l)=>AE(e,i)});function JO(e,n={}){return pE(XO,e,n)}function WO(e){return mE(e)}function eD(e,n){return np(dS(e),n)}function tD(e){return YT(qp,e)}const mS=S({id:u(),name:u(),keyPrefix:u(),scopes:k(u()),projectId:u().nullable(),readOnly:ne(),createdAt:u(),lastUsedAt:u().nullable(),revokedAt:u().nullable()});S({keys:k(mS)});S({name:u().min(1).max(100),scopes:k(u()).min(1).optional(),projectId:u().optional()});mS.extend({key:u()});const nD=S({maxConcurrency:y().int().positive(),maxRequestsPerMinute:y().int().positive(),maxRequestsPerDay:y().int().positive()}),Aa=u().min(1),Up=He(u(),u().trim().min(1));u().min(1);const qc=S({label:u().min(1),city:u().min(1),region:u().min(1),country:u().length(2),timezone:u().optional()}),$p=H(["citation.lost","citation.gained","run.completed","run.failed","insight.critical","insight.high"]);S({id:u(),projectId:u(),channel:De("webhook"),url:u().url(),urlDisplay:u(),urlHost:u(),events:k($p),enabled:ne().default(!0),source:u().optional(),webhookSecret:u().optional(),createdAt:u(),updatedAt:u()});S({channel:De("webhook"),url:u().url(),events:k($p).min(1),source:u().optional()});const hS=H(["cli","api","config-file"]);function aD(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 iD(e,n){return n?e.some(i=>i.label===n):!0}S({displayName:u().min(1),canonicalDomain:u().min(1),ownedDomains:k(u().min(1)).optional(),aliases:k(u()).optional(),country:u().length(2),language:u().min(2),tags:k(u()).optional(),labels:He(u(),u()).optional(),providers:k(Aa).optional(),providerModels:Up.optional(),locations:k(qc).optional(),defaultLocation:u().nullable().optional(),autoExtractBacklinks:ne().optional(),configSource:hS.optional()});const sD=S({id:u(),name:u(),displayName:u().optional(),canonicalDomain:u(),ownedDomains:k(u()).default([]),aliases:k(u()).default([]),country:u().length(2),language:u().min(2),tags:k(u()).default([]),labels:He(u(),u()).default({}),providers:k(u()).default([]),providerModels:Up.default({}),locations:k(qc).default([]),defaultLocation:u().nullable().optional(),autoExtractBacklinks:ne().default(!1),configSource:hS.default("cli"),configRevision:y().int().positive().default(1),createdAt:u().optional(),updatedAt:u().optional()});S({id:u(),query:u(),createdAt:u()});S({id:u(),keyword:u(),createdAt:u()});S({queries:k(u().trim().min(1)).min(1)});S({keywords:k(u().trim().min(1)).min(1)});S({provider:Aa,count:y().int().min(1).max(20).optional()});S({id:u(),domain:u(),createdAt:u()});S({competitors:k(u().trim().min(1)).min(1)});function Nc(e){let n=e.trim().toLowerCase();try{n.includes("://")&&(n=new URL(n).hostname.toLowerCase())}catch{}return n.replace(/^www\./,"")}const rD=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 oD(e){const n=Nc(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 rD.has(l)?r.length>=3?r.slice(-3).join("."):"":r.slice(-2).join(".")}function lD(e){const n=oD(e);return n?n.split(".")[0]??"":""}function cD(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=Nc(c);i.has(d)||(i.add(d),r.push(c))}return r}const uD=S({name:u().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:He(u(),u()).optional().default({})}),dD=S({preset:u().optional(),cron:u().optional(),timezone:u().optional().default("UTC"),providers:k(Aa).optional().default([])}).refine(e=>e.preset&&!e.cron||!e.preset&&e.cron,{message:'Exactly one of "preset" or "cron" must be provided'}).optional(),fD=S({channel:De("webhook"),url:u().url(),events:k($p).min(1)}),pD=S({gsc:S({propertyUrl:u()}).optional(),syncSchedule:S({preset:u().optional(),cron:u().optional()}).optional()}).optional(),lv=k(u().min(1)),mD=S({displayName:u().min(1),canonicalDomain:u().min(1),ownedDomains:k(u().min(1)).optional().default([]),aliases:k(u().min(1)).optional().default([]),country:u().length(2),language:u().min(2),queries:lv.optional(),keywords:lv.optional(),competitors:k(u().min(1)).optional().default([]),providers:k(Aa).optional().default([]),providerModels:Up.optional().default({}),locations:k(qc).optional().default([]),defaultLocation:u().optional(),schedule:dD,notifications:k(fD).optional().default([]),google:pD,autoExtractBacklinks:ne().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=aD(e.locations);i.length>0&&n.addIssue({code:"custom",message:`Duplicate location labels are not allowed: ${i.join(", ")}`,path:["locations"]}),iD(e.locations,e.defaultLocation)||n.addIssue({code:"custom",message:`defaultLocation "${e.defaultLocation}" must match a configured location label`,path:["defaultLocation"]})});S({apiVersion:De("canonry/v1"),kind:De("Project"),metadata:uD,spec:mD});const gS=H(["introduced","repointed","retired"]),hD=gS.enum;S({modelId:u().trim().min(1),date:u().regex(/^\d{4}-\d{2}-\d{2}$/,"date must be YYYY-MM-DD"),kind:gS,confirmed:ne(),sourceUrl:u().url(),note:u().min(1)});const gD=[{modelId:"chatgpt-4o-latest",date:"2024-08-15",kind:"introduced",confirmed:!0,sourceUrl:"https://developers.openai.com/api/docs/changelog",note:'Verbatim: "Released dynamic model for chatgpt-4o-latest—this model will point to the latest GPT-4o model used by ChatGPT." First moving id in the lineage.'},{modelId:"chatgpt-4o-latest",date:"2026-02-17",kind:"retired",confirmed:!0,sourceUrl:"https://developers.openai.com/api/docs/deprecations.md",note:'Shutdown 2026-02-17, replacement gpt-5.1-chat-latest. Announced under the heading "2025-11-18: chatgpt-4o-latest snapshot".'},{modelId:"gpt-5.1-chat-latest",date:"2025-11-13",kind:"introduced",confirmed:!0,sourceUrl:"https://developers.openai.com/api/docs/changelog",note:"Introduced inside the GPT-5.1 launch entry, not as a standalone entry."},{modelId:"gpt-5.2-chat-latest",date:"2025-12-11",kind:"introduced",confirmed:!0,sourceUrl:"https://developers.openai.com/api/docs/changelog",note:"Introduced inside the GPT-5.2 launch entry."},{modelId:"gpt-5.2-chat-latest",date:"2026-02-10",kind:"repointed",confirmed:!0,sourceUrl:"https://developers.openai.com/api/docs/changelog",note:'Verbatim: "Updated the gpt-5.2-chat-latest slug to point to the latest model currently used in ChatGPT." Target model NOT named.'},{modelId:"gpt-5.3-chat-latest",date:"2026-03-03",kind:"introduced",confirmed:!0,sourceUrl:"https://developers.openai.com/api/docs/changelog",note:'Verbatim: "Released gpt-5.3-chat-latest to the Chat Completions and Responses API. This model points to the GPT-5.3 Instant snapshot currently used in ChatGPT."'},{modelId:"gpt-5.3-chat-latest",date:"2026-03-16",kind:"repointed",confirmed:!0,sourceUrl:"https://developers.openai.com/api/docs/changelog",note:'Verbatim: "Updated the gpt-5.3-chat-latest slug to point to the latest model currently used in ChatGPT." Target model NOT named.'},{modelId:"chat-latest",date:"2026-05-05",kind:"introduced",confirmed:!0,sourceUrl:"https://developers.openai.com/api/docs/changelog",note:'Verbatim: "Released chat-latest snapshot which points to the latest Instant model currently used in ChatGPT... The underlying model snapshot will be regularly updated."'},{modelId:"chat-latest",date:"2026-05-28",kind:"repointed",confirmed:!1,sourceUrl:"https://developers.openai.com/api/docs/changelog",note:'UNCONFIRMED. The entry reads "Released chat-latest snapshot..." — the verb is "Released", the same boilerplate as the 2026-05-05 entry, not "Updated" as used on 2026-06-24. Only "the latest improvements" vs "our latest improvements" differs. Either a real change logged with copy-pasted text, or a duplicated entry; the record does not disambiguate.'},{modelId:"chat-latest",date:"2026-06-24",kind:"repointed",confirmed:!0,sourceUrl:"https://developers.openai.com/api/docs/changelog",note:'Verbatim (re-read at source 2026-07-20): "Updated the chat-latest snapshot, which points to the latest Instant model currently used in ChatGPT." The verb is "Updated", unlike the "Released" boilerplate of 2026-05-05 and 2026-05-28, which is the wording the changelog reserves for a real change. Target model NOT named. The only unambiguous chat-latest change on record.'}];hD.repointed;new Set(gD.map(e=>e.modelId.toLowerCase()));const yD=H(["not-exposed","no-known-change","known-change"]);yD.enum;const bD=S({modelId:u().trim().min(1),date:u().regex(/^\d{4}-\d{2}-\d{2}$/),confirmed:ne(),sourceUrl:u().url()}),vD=S({status:H(["no-known-change","known-change"]),modelIds:k(u().trim().min(1)).min(1),changes:k(bD),changeCount:y().int().nonnegative(),unverifiedChangeCount:y().int().nonnegative(),firstChangeDate:u().optional(),lastChangeDate:u().optional(),knownGoodAsOf:u(),checkedThroughPeriodEnd:ne()}),SD={openai:"ChatGPT",chatgpt:"ChatGPT",anthropic:"Claude",claude:"Claude",google:"Gemini",gemini:"Gemini",perplexity:"Perplexity"};function xD(e){const n=e.trim().toLowerCase();return SD[n]??e.charAt(0).toUpperCase()+e.slice(1)}function Df(e){return typeof e=="number"&&Number.isFinite(e)&&e>0?Math.floor(e):0}function co(e){return typeof e=="string"&&e.trim().length>=10?e.trim().slice(0,10):null}function zf(e){return[...new Set(e.filter(n=>n!==null))].sort()}function wD(e,n){const i=xD(e),r=Array.isArray(n.changes)?n.changes:[],l=Df(n.changeCount)||r.length,c=Math.min(l,Df(n.unverifiedChangeCount)||Df(n.unconfirmedChangeCount)||r.filter(x=>x.confirmed===!1).length),d=co(n.knownGoodAsOf),h=n.checkedThroughPeriodEnd!==!1,g={engine:i,confirmedCount:l-c,unconfirmedCount:c,knownGoodAsOf:d,checkedThroughPeriodEnd:h};if(r.length>0)return{...g,confirmedDates:zf(r.filter(x=>x.confirmed!==!1).map(x=>co(x.date))),unconfirmedDates:zf(r.filter(x=>x.confirmed===!1).map(x=>co(x.date)))};const b=zf([co(n.firstChangeDate),co(n.lastChangeDate)]);return l===0?{...g,confirmedDates:[],unconfirmedDates:[]}:c===0?{...g,confirmedDates:b,unconfirmedDates:[]}:g.confirmedCount===0?{...g,confirmedDates:[],unconfirmedDates:b}:{...g,confirmedDates:[],unconfirmedDates:[]}}function jD(e){return e.length===1?e[0]:e.length===2?`${e[0]} and ${e[1]}`:`${e.slice(0,-1).join(", ")}, and ${e[e.length-1]}`}function cv(e,n){return e.length===0?null:e.length===1&&n<=1?`on ${e[0]}`:`more than once between ${e[0]} and ${e[e.length-1]}`}function ND(e){const n=cv(e.confirmedDates,e.confirmedCount),i=cv(e.unconfirmedDates,e.unconfirmedCount),r=`The model behind ${e.engine}`;if(e.confirmedCount>0&&e.unconfirmedCount===0)return n?`${r} was updated ${n}, inside this period.`:`${r} was updated inside this period.`;if(e.confirmedCount===0)return i?`${r} may have been updated ${i}, inside this period, though that is not confirmed.`:`${r} may have been updated inside this period, though that is not confirmed.`;if(n&&i)return`${r} was updated ${n}, inside this period, and may also have been updated ${i}.`;const l=e.unconfirmedCount>1?"more times":"once more";return`${r} was updated inside this period, and may have been updated ${l}, though that is not confirmed.`}function uv(e){const n=e.filter(r=>!r.checkedThroughPeriodEnd&&r.knownGoodAsOf!==null);return n.length===0?null:`We last checked for model updates on ${n.map(r=>r.knownGoodAsOf).sort()[0]}, and this period runs past that date, so there may be later updates we do not know about.`}function vU(e){const n=Object.entries(e??{}).map(([g,b])=>wD(g,b??{})).sort((g,b)=>g.engine.localeCompare(b.engine));if(n.length===0)return null;const i=n.filter(g=>g.confirmedCount+g.unconfirmedCount>0);if(i.length===0){const g=[...new Set(n.map(C=>C.engine))],b=g.length>1,x=uv(n),w=[...new Set(n.map(C=>C.knownGoodAsOf).filter(C=>C!==null))].sort(),N=x??(w.length>0?`We last checked for model updates on ${w[0]}.`:null);return{kind:"no-known-change",text:`No model updates are on record for ${jD(g)} in this period.`,detail:`${b?"These engines":"This engine"} can be moved onto a different underlying model without the data ever showing a different model name, so we check each period against a record of known updates. Nothing is listed inside this one.${N?` ${N}`:""}`}}const r=i.reduce((g,b)=>g+b.confirmedCount+b.unconfirmedCount,0),l=i.some(g=>g.confirmedCount>0),c=r===1?"this update":"these updates",d=l?`Some of the movement in these numbers may come from ${c} rather than from a real change in how AI answers about you, so compare periods carefully.`:`If so, some of the movement in these numbers may come from ${c} rather than from a real change in how AI answers about you, so compare periods carefully.`,h=uv(n);return{kind:"change",text:`${i.map(ND).join(" ")} ${d}${h?` ${h}`:""}`}}const kD=H(["gsc","ga4","gbp"]);S({id:u(),domain:u(),connectionType:kD,propertyId:u().nullable().optional(),sitemapUrl:u().nullable().optional(),scopes:k(u()).default([]),createdAt:u(),updatedAt:u()});S({date:u(),query:u(),page:u(),country:u().nullable().optional(),device:u().nullable().optional(),clicks:y(),impressions:y(),ctr:y(),position:y()});const AD=S({date:u(),clicks:y(),impressions:y(),ctr:y()});S({totals:S({clicks:y(),impressions:y(),ctr:y(),days:y()}),daily:k(AD)});const ap=S({id:u(),url:u(),indexingState:u().nullable().optional(),verdict:u().nullable().optional(),coverageState:u().nullable().optional(),pageFetchState:u().nullable().optional(),robotsTxtState:u().nullable().optional(),crawlTime:u().nullable().optional(),lastCrawlResult:u().nullable().optional(),isMobileFriendly:ne().nullable().optional(),richResults:k(u()).default([]),referringUrls:k(u()).default([]),inspectedAt:u()});H(["stable","reindexed","deindexed","still-missing","new"]);const CD=S({url:u(),previousState:u().nullable(),currentState:u().nullable(),transitionDate:u()}),_D=S({reason:u(),count:y(),urls:k(ap).default([])});S({summary:S({total:y(),indexed:y(),notIndexed:y(),deindexed:y(),percentage:y()}),lastInspectedAt:u().nullable(),lastSyncedAt:u().nullable(),indexed:k(ap).default([]),notIndexed:k(ap).default([]),deindexed:k(CD).default([]),reasonGroups:k(_D).default([])});S({url:u(),type:H(["URL_UPDATED","URL_DELETED"]),notifiedAt:u()});const TD=S({url:u(),type:H(["URL_UPDATED","URL_DELETED"]),notifiedAt:u(),status:H(["success","error"]),error:u().optional()});S({summary:S({total:y().int().nonnegative(),succeeded:y().int().nonnegative(),failed:y().int().nonnegative()}),results:k(TD).default([])});S({date:u(),indexed:y(),notIndexed:y(),reasonBreakdown:He(u(),y()).default({})});const ED=S({siteUrl:u(),permissionLevel:u()});S({sites:k(ED).default([])});const OD=S({type:u(),submitted:u(),indexed:u()}),DD=S({path:u(),lastSubmitted:u().optional(),isPending:ne().optional(),isSitemapsIndex:ne().optional(),type:u().optional(),lastDownloaded:u().optional(),warnings:u().optional(),errors:u().optional(),contents:k(OD).optional()});S({sitemaps:k(DD).default([])});const zD=S({name:u(),accountName:u().nullable(),type:u().nullable(),role:u().nullable()});S({accounts:k(zD),total:y().int().nonnegative()});const RD=S({id:u(),projectId:u(),accountName:u(),locationName:u(),displayName:u(),primaryCategoryDisplayName:u().nullable(),storefrontAddress:u().nullable(),websiteUri:u().nullable(),placeId:u().nullable(),mapsUri:u().nullable(),additionalCategories:k(u()),description:u().nullable(),serviceArea:He(u(),Pn()).nullable(),regularHours:He(u(),Pn()).nullable(),primaryPhone:u().nullable(),openStatus:u().nullable(),openingDate:u().nullable(),selected:ne(),syncedAt:u().nullable(),createdAt:u(),updatedAt:u()});S({locations:k(RD),totalDiscovered:y().int().nonnegative(),totalSelected:y().int().nonnegative()});S({selectAllNew:ne().default(!0),accountName:u().optional(),switchAccount:ne().default(!1)});S({selected:ne()});S({locationNames:k(u()).optional(),daysOfMetrics:y().int().positive().max(540).optional(),monthsOfKeywords:y().int().positive().max(18).optional()});S({runId:u(),status:u()});const MD=S({locationName:u(),date:u(),metric:u(),value:y().int()});S({metrics:k(MD),total:y().int().nonnegative()});const BD=S({locationName:u(),periodStart:u(),periodEnd:u(),keyword:u(),valueCount:y().int().nullable(),valueThreshold:y().int().nullable()});S({keywords:k(BD),total:y().int().nonnegative(),thresholdedPct:y().int().min(0).max(100)});const LD=S({locationName:u(),placeActionLinkName:u(),placeActionType:u(),uri:u().nullable(),isPreferred:ne(),providerType:u().nullable()});S({placeActions:k(LD),total:y().int().nonnegative()});const qD=S({locationName:u(),populatedGroupCount:y().int().nonnegative(),syncedAt:u(),attributes:He(u(),Pn())});S({lodging:k(qD),total:y().int().nonnegative()});const UD=S({name:u(),valueType:u(),values:k(Dn([ne(),u()])),unsetValues:k(u()),uris:k(u())}),$D=S({locationName:u(),attributeCount:y().int().nonnegative(),syncedAt:u(),attributes:k(UD)});S({attributes:k($D),total:y().int().nonnegative()});const ID=S({locationName:u(),placeId:u(),tier:u(),amenities:k(u()),syncedAt:u(),place:He(u(),Pn())});S({places:k(ID),total:y().int().nonnegative()});S({scope:S({locationName:u().nullable(),locationCount:y().int().nonnegative()}),performance:S({totals:He(u(),y()),recent7d:He(u(),y()),prior7d:He(u(),y()),deltaPct:He(u(),y().nullable())}),freshness:S({dataThroughDate:u().nullable(),latestStoredDate:u().nullable(),pendingDays:y().int().nonnegative()}),timeseries:k(S({date:u(),pending:ne(),metrics:He(u(),y())})),keywords:S({total:y().int().nonnegative(),thresholdedCount:y().int().nonnegative(),thresholdedPct:y().int().min(0).max(100)}),placeActions:S({total:y().int().nonnegative(),hasReservationCta:ne(),hasBookingCta:ne(),hasDirectMerchantCta:ne()}),lodging:S({lodgingLocationCount:y().int().nonnegative(),populatedLodgingCount:y().int().nonnegative(),emptyLodgingCount:y().int().nonnegative()}),profileCompleteness:S({locationCount:y().int().nonnegative(),withSecondaryCategories:y().int().nonnegative(),secondaryCategoryTotal:y().int().nonnegative(),withDescription:y().int().nonnegative(),withServiceArea:y().int().nonnegative(),withHours:y().int().nonnegative(),withPrimaryPhone:y().int().nonnegative(),permanentlyClosed:y().int().nonnegative(),temporarilyClosed:y().int().nonnegative()})});const PD={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 VD(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 SU(e){return PD[e]??VD(e)}const GD=["BUSINESS_DIRECTION_REQUESTS","WEBSITE_CLICKS","CALL_CLICKS"],HD=["BUSINESS_IMPRESSIONS_DESKTOP_SEARCH","BUSINESS_IMPRESSIONS_MOBILE_SEARCH","BUSINESS_IMPRESSIONS_DESKTOP_MAPS","BUSINESS_IMPRESSIONS_MOBILE_MAPS"];function xU(e){return GD.includes(e)?"conversion":HD.includes(e)?"reach":"other"}S({id:u(),domain:u(),siteUrl:u().nullable().optional(),createdAt:u(),updatedAt:u()});const Rf=S({id:u(),url:u(),httpCode:y().nullable().optional(),inIndex:ne().nullable().optional(),lastCrawledDate:u().nullable().optional(),inIndexDate:u().nullable().optional(),inspectedAt:u(),documentSize:y().nullable().optional(),anchorCount:y().nullable().optional(),discoveryDate:u().nullable().optional()});S({summary:S({total:y(),indexed:y(),notIndexed:y(),unknown:y().optional(),percentage:y()}),lastInspectedAt:u().nullable(),indexed:k(Rf).default([]),notIndexed:k(Rf).default([]),unknown:k(Rf).default([]).optional()});S({query:u(),impressions:y(),clicks:y(),ctr:y(),averagePosition:y()});S({date:u(),indexed:y(),notIndexed:y(),unknown:y()});const KD=S({url:u(),status:H(["success","error"]),submittedAt:u(),error:u().optional()});S({summary:S({total:y().int().nonnegative(),succeeded:y().int().nonnegative(),failed:y().int().nonnegative()}),results:k(KD).default([])});const yS=S({url:u(),verified:ne()});S({sites:k(yS).default([])});S({connected:ne(),domain:u(),siteUrl:u().nullable(),createdAt:u().nullable(),updatedAt:u().nullable()});S({connected:ne(),domain:u(),siteUrl:u().nullable(),availableSites:k(yS).default([])});S({siteUrl:u()});const QD=S({name:u(),alive:ne(),lastUsed:u().nullable()});S({connected:ne(),endpoint:u(),version:u().optional(),browserVersion:u().optional(),targets:k(QD).default([])});const lr=H(["live","staging"]);S({projectName:u(),url:u(),stagingUrl:u().optional(),username:u(),defaultEnv:lr,createdAt:u(),updatedAt:u()});const dv=S({url:u(),reachable:ne(),pageCount:y().nullable().optional(),version:u().nullable().optional(),error:u().nullable().optional(),plugins:k(u()).optional(),authenticatedUser:S({id:y(),slug:u()}).nullable().optional()});S({connected:ne(),projectName:u(),defaultEnv:lr,live:dv.nullable(),staging:dv.nullable(),adminUrl:u().nullable().optional()});const ZD=S({id:y(),slug:u(),title:u(),status:u(),modifiedAt:u().nullable().optional(),link:u().nullable().optional()}),bS=S({title:u().nullable(),description:u().nullable(),noindex:ne().nullable(),writable:ne().default(!1),writeTargets:k(u()).default([])}),YD=S({type:u(),json:He(u(),Pn())}),FD=ZD.extend({env:lr,content:u(),seo:bS,schemaBlocks:k(YD).default([])}),fv=FD.extend({contentHash:u(),contentSnippet:u()}),vS=S({manualRequired:De(!0),targetUrl:u(),adminUrl:u().nullable().optional(),content:u(),nextSteps:k(u()).default([])}),XD=S({slug:u(),severity:H(["high","medium","low"]),code:H(["noindex","missing-seo-title","missing-meta-description","missing-schema","thin-content"]),message:u()});S({slug:u(),title:u(),status:u(),wordCount:y(),seo:bS,schemaPresent:ne(),issues:k(XD).default([])});const JD=S({slug:u(),status:H(["applied","skipped","manual"]),error:u().optional(),manualAssist:vS.optional()});S({env:lr,strategy:H(["plugin","manual"]),results:k(JD)});const WD=S({slug:u(),status:H(["deployed","stripped","skipped","failed"]),schemasInjected:k(u()).optional(),manualAssist:vS.optional(),error:u().optional()});S({env:lr,results:k(WD)});const ez=S({slug:u(),title:u(),canonrySchemas:k(u()),thirdPartySchemas:k(u()),hasCanonrySchema:ne()});S({env:lr,pages:k(ez)});const tz=S({name:u(),status:H(["completed","skipped","failed"]),summary:u().optional(),error:u().optional()});S({projectName:u(),steps:k(tz)});S({slug:u(),live:fv,staging:fv,hasDifferences:ne(),differences:S({title:ne(),slug:ne(),content:ne(),seoTitle:ne(),seoDescription:ne(),noindex:ne(),schema:ne()})});const nz=S({name:u(),displayName:u().optional(),keyUrl:u().optional(),modelHint:u().optional(),model:u().optional(),defaultModel:u().optional(),configured:ne(),quota:nD.optional(),vertexConfigured:ne().optional()}),az=S({name:u(),displayName:u(),mode:H(["api","browser"]),modelConfigurable:ne(),defaultModel:u(),knownModels:k(S({id:u(),displayName:u(),tier:H(["flagship","standard","fast","economy"])})).default([]),modelValidationPattern:S({source:u(),flags:u()}),modelValidationHint:u()}),pv=S({configured:ne()});S({providers:k(nz).default([]),providerCatalog:k(az).default([]),google:pv,bing:pv});const Ii=H(["queued","running","completed","partial","failed","cancelled"]),Yt=Ii.enum,SS=H(["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"]),Ce=SS.enum,Ip=H(["manual","scheduled","config-apply","backfill","probe"]),Qs=Ip.enum,oi=H(["cited","not-cited"]),kc=oi.enum,Ac=H(["visible","not-visible"]);Ac.enum;const jo=H(["mentioned","not-mentioned"]);jo.enum;const xS=H(["new","cited","lost","emerging","not-cited"]);xS.enum;const iz=H(["new","mentioned","lost","emerging","not-mentioned"]);iz.enum;const sz=H([Qs.manual,Qs.probe]);S({kind:De(Ce["answer-visibility"]).optional(),trigger:sz.optional(),providers:k(Aa).optional(),queries:k(u().min(1)).min(1).optional(),location:u().min(1).optional(),allLocations:ne().optional(),noLocation:ne().optional()}).refine(e=>+!!e.location+ +!!e.allLocations+ +!!e.noLocation<=1,{message:'Only one of "location", "allLocations", or "noLocation" may be provided'});const rz=S({message:u(),raw:Pn().optional()}),oz=S({message:u().optional(),providers:He(u(),rz).optional()}),lz=S({id:u(),projectId:u(),kind:SS,status:Ii,trigger:Ip.default("manual"),location:u().nullable().optional(),queries:k(u()).nullable().optional(),startedAt:u().nullable().optional(),finishedAt:u().nullable().optional(),error:oz.nullable().optional(),createdAt:u()});function Pp(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 Vp=S({uri:u(),title:u()}),wS=S({id:u(),runId:u(),queryId:u(),query:u().optional(),provider:Aa,citationState:oi,answerMentioned:ne().optional(),visibilityState:Ac.optional(),mentionState:jo.optional(),transition:xS.optional(),answerText:u().nullable().optional(),citedDomains:k(u()).default([]),competitorOverlap:k(u()).default([]),recommendedCompetitors:k(u()).default([]),matchedTerms:k(u()).default([]),groundingSources:k(Vp).default([]),searchQueries:k(u()).default([]),model:u().nullable().optional(),servedModel:u().nullable().optional(),location:u().nullable().optional(),createdAt:u()});S({snapshots:k(wS),total:y().int().nonnegative()});const cz=S({queryId:u().nullable(),query:u().nullable(),run1State:oi.nullable(),run2State:oi.nullable(),run1AnswerMentioned:ne().nullable(),run2AnswerMentioned:ne().nullable(),run1VisibilityState:Ac.nullable(),run2VisibilityState:Ac.nullable(),run1MentionState:jo.nullable().optional(),run2MentionState:jo.nullable().optional(),changed:ne(),visibilityChanged:ne()});S({run1:u(),run2:u(),diff:k(cz)});const uz=lz.extend({snapshots:k(wS).optional()}),dz=S({totalRuns:y().int().nonnegative(),run:uz.nullable()});S({id:u(),projectId:u().nullable().optional(),actor:u(),action:u(),entityType:u(),entityId:u().nullable().optional(),diff:Pn().optional(),userAgent:u().nullable().optional(),actorSession:u().nullable().optional(),createdAt:u()});const fz=H(["yes","no","unknown","not-mentioned"]),mv=k(u().min(1));S({companyName:u().min(1),domain:u().min(1),queries:mv.optional(),phrases:mv.optional(),competitors:k(u().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 pz=S({name:u(),count:y().int().nonnegative()}),mz=S({id:u(),name:u(),weight:y(),score:y(),findings:k(S({type:u(),message:u()})).default([]),recommendations:k(u()).default([])}),hz=S({url:u(),finalUrl:u(),auditedAt:u(),overallScore:y(),summary:u(),factors:k(mz).default([])}),gz=S({industry:u(),summary:u(),services:k(u()).default([]),categoryTerms:k(u()).default([])}),yz=S({provider:u(),displayName:u(),model:u().nullable().optional(),mentioned:ne(),cited:ne(),describedAccurately:fz,accuracyNotes:u().nullable().optional(),incorrectClaims:k(u()).default([]),recommendedCompetitors:k(u()).default([]),citedDomains:k(u()).default([]),groundingSources:k(Vp).default([]),searchQueries:k(u()).default([]),answerText:u(),error:u().nullable().optional()}),bz=S({query:u(),providerResults:k(yz).default([])}),vz=S({totalQueries:y().int().nonnegative(),totalProviders:y().int().nonnegative(),totalComparisons:y().int().nonnegative(),mentionCount:y().int().nonnegative(),citationCount:y().int().nonnegative(),topCompetitors:k(pz).default([]),visibilityGap:u(),whatThisMeans:k(u()).default([]),recommendedActions:k(u()).default([])});S({companyName:u(),domain:u(),homepageUrl:u(),generatedAt:u(),queries:k(u()).default([]),competitors:k(u()).default([]),profile:gz,audit:hz,queryResults:k(bz).default([]),summary:vz});const jS=H(["pass","partial","fail"]);jS.enum;const NS=H(["up","down","flat"]);NS.enum;const Sz=S({id:u(),name:u(),weight:y(),avgScore:y(),status:jS,pagesPassing:y().int().nonnegative(),pagesPartial:y().int().nonnegative(),pagesFailing:y().int().nonnegative()}),xz=S({factorId:u(),factorName:u(),avgScore:y(),affectedPages:y().int().nonnegative(),totalPages:y().int().nonnegative(),affectedPct:y().int().nonnegative(),topRecommendations:k(u()).default([])});S({project:u(),hasData:ne(),runId:u().nullable(),runStatus:Ii.nullable(),sitemapUrl:u().nullable(),auditedAt:u().nullable(),aggregateScore:y(),pagesDiscovered:y().int().nonnegative(),pagesAudited:y().int().nonnegative(),pagesSkipped:y().int().nonnegative(),pagesErrored:y().int().nonnegative(),deltaScore:y().nullable(),trend:NS.nullable(),previousScore:y().nullable(),previousAuditedAt:u().nullable(),factors:k(Sz).default([]),crossCuttingIssues:k(xz).default([]),prioritizedFixes:k(u()).default([])});const wz=S({id:u(),name:u(),weight:y(),score:y()}),jz=S({url:u(),overallScore:y(),status:H(["success","error"]),error:u().nullable().optional(),factors:k(wz).default([])});S({project:u(),runId:u().nullable(),auditedAt:u().nullable(),total:y().int().nonnegative(),pages:k(jz).default([])});const Nz=S({runId:u(),auditedAt:u(),aggregateScore:y(),pagesAudited:y().int().nonnegative()});S({project:u(),points:k(Nz).default([])});S({sitemapUrl:u().url().optional(),limit:y().int().positive().max(2e3).optional()});S({runId:u(),status:Ii});const Gp=H(["answer-visibility","traffic-sync","gbp-sync","data-refresh","backlinks-sync","site-audit","ads-sync"]);Gp.enum;S({id:u(),projectId:u(),kind:Gp,cronExpr:u(),preset:u().nullable().optional(),timezone:u().default("UTC"),enabled:ne().default(!0),providers:k(Aa).default([]),sourceId:u().nullable().optional(),lastRunAt:u().nullable().optional(),nextRunAt:u().nullable().optional(),createdAt:u(),updatedAt:u()});S({kind:Gp.optional(),preset:u().optional(),cron:u().optional(),timezone:u().optional().default("UTC"),enabled:ne().optional().default(!0),providers:k(Aa).optional().default([]),sourceId:u().optional()}).refine(e=>e.preset&&!e.cron||!e.preset&&e.cron,{message:'Exactly one of "preset" or "cron" must be provided'});const Hp=H(["competitor","directory","social","forum","news","reference","blog","ecommerce","video","academic","other"]);Hp.enum;const Kp=H(["cited","aspirational","wasted-surface"]),hv=Kp.enum;hv.cited,hv.aspirational;const Uc=H(["direct-competitor","ota-aggregator","editorial-media","other","unknown"]),kz=Uc.enum;kz["direct-competitor"];const $c=H(["queued","seeding","probing","completed","failed"]);$c.enum;const kS=S({domain:u().min(1),hits:y().int().positive(),competitorType:Uc.default("unknown")}),Az=S({id:u(),sessionId:u(),projectId:u(),query:u(),bucket:Kp.nullable().default(null),citationState:oi,citedDomains:k(u()).default([]),answerMentioned:ne().nullable().default(null),createdAt:u()}),Cz=S({id:u(),projectId:u(),status:$c,icpDescription:u().nullable().optional(),seedProvider:u().nullable().optional(),seedCountRaw:y().int().nullable().optional(),seedCount:y().int().nullable().optional(),seedFromAnswerCount:y().int().nullable().optional(),seedFromGroundingCount:y().int().nullable().optional(),seedBrandFilteredCount:y().int().nullable().optional(),buyerDescription:u().nullable().optional(),locations:k(qc).nullable().optional(),seedRawCandidates:k(u()).nullable().optional(),dedupClusterMinSims:k(y()).nullable().optional(),dedupBandPairFraction:y().nullable().optional(),dedupPairsTotal:y().int().nullable().optional(),seedProviders:k(u()).nullable().optional(),seedProviderCounts:He(u(),y().int()).nullable().optional(),canonicalCount:y().int().nullable().optional(),dedupThreshold:y().nullable().optional(),probeCount:y().int().nullable().optional(),citedCount:y().int().nullable().default(null),aspirationalCount:y().int().nullable().default(null),wastedCount:y().int().nullable().default(null),competitorMap:k(kS).default([]),warning:u().nullable().optional(),error:u().nullable().optional(),startedAt:u().nullable().optional(),finishedAt:u().nullable().optional(),createdAt:u()});Cz.extend({probes:k(Az).default([])});const _z=500,Tz=8,Ez=["gemini","openai"],Oz=H(Ez);S({icpDescription:u().min(1).optional(),buyerDescription:u().min(1).optional(),seedProviders:k(Oz).min(1).transform(e=>[...new Set(e)].sort()).optional(),dedupThreshold:y().min(0).max(1).optional(),maxProbes:y().int().positive().max(_z).optional(),probeConcurrency:y().int().min(1).max(Tz).optional(),locations:k(u().min(1)).optional()});S({buckets:k(Kp).min(1).optional(),includeCompetitors:ne().optional(),competitorTypes:k(Uc).min(1).optional()});S({sessionId:u(),projectId:u(),status:$c,queriesByBucket:S({cited:k(u()),aspirational:k(u()),"wasted-surface":k(u())}),suggestedCompetitors:k(kS)});S({sessionId:u(),projectId:u(),promoted:S({queries:k(u()),competitors:k(u())}),skipped:S({queries:k(u()),competitors:k(u())})});Dn([De("cli"),u().regex(/^discovery:.+$/)]);const Dz=S({query:u().min(1),probeHits:y().int().positive()}),zz=S({rawCandidates:y().int().nonnegative(),admitted:y().int().nonnegative(),rejected:S({belowFloor:y().int().nonnegative(),length:y().int().nonnegative(),navigational:y().int().nonnegative(),duplicate:y().int().nonnegative(),offAnchor:y().int().nonnegative(),semanticDuplicate:y().int().nonnegative()})});S({sessionId:u(),projectId:u(),provider:u(),status:$c,minProbeHits:y().int().positive(),anchorApplied:ne(),semanticNoveltyApplied:ne(),candidates:k(Dz),stats:zz});const Qp=H(["own","direct-competitor","ota-aggregator","editorial-media","other"]);Qp.enum;const AS=H(["7d","30d","90d","all"]),gv=H(["improving","declining","stable"]),Rz=H(["mentioned","cited"]);Rz.enum;const ip=S({citationRate:y(),cited:y().int(),total:y().int(),mentionRate:y(),mentionedCount:y().int()}),Zp=u().trim().min(1),Mz=k(Zp).min(1).superRefine((e,n)=>{for(let i=1;i<e.length;i+=1)e[i-1]>=e[i]&&n.addIssue({code:"custom",message:"mixed model IDs must be sorted and unique",path:[i]})}),er=_o("status",[S({status:De("known"),model:Zp}),S({status:De("unknown")}),S({status:De("mixed"),models:Mz,includesUnknown:ne()})]),Bz=S({observedAt:u(),bucketStartDate:u(),from:er,to:er,fromPreWindowAnchor:ne().optional(),anchorObservedAt:u().optional()}),CS=S({latestObservation:S({observedAt:u(),state:er}),events:k(Bz),eventTotal:y().int().nonnegative().optional(),anchorUnavailable:ne().optional()}),Lz=He(u(),CS),qz=CS.extend({latestServedModelIds:k(Zp).default([])}),Uz=He(u(),qz),$z=S({observedAt:u(),configured:er,served:er}),Iz=S({rate:y().nullable(),projectMentionSnapshots:y().int().nonnegative(),competitorMentionSnapshots:y().int().nonnegative()}),Pz=S({startDate:u(),endDate:u(),dataStartDate:u(),dataEndDate:u(),sweepCount:y().int().nonnegative(),citationRate:y(),cited:y().int(),total:y().int(),queryCount:y().int(),mentionRate:y(),mentionedCount:y().int(),mentionShare:Iz,byProvider:He(u(),ip),modelEvidenceByProvider:He(u(),er).default({})}),Vz=S({date:u(),delta:y().int(),label:u()});S({window:AS,buckets:k(Pz),overall:ip,byProvider:He(u(),ip),trend:gv,mentionTrend:gv,queryChanges:k(Vz),modelAttribution:Lz.default({}),servedModelAttribution:Uz.default({}),modelServiceMismatch:He(u(),$z).default({}),modelPointerChanges:He(u(),vD).default({})});const yv=S({category:Hp,label:u(),count:y().int(),percentage:y(),topDomains:k(S({domain:u(),count:y().int()}))}),Gz=S({domain:u(),count:y().int(),percentage:y(),category:Hp,label:u(),surfaceClass:Qp}),Hz=S({surfaceClass:Qp,label:u(),count:y().int(),percentage:y(),domainCount:y().int()}),bv=S({totalCitedSlots:y().int(),domainTotal:y().int(),entries:k(Gz),truncatedDomainCount:y().int(),truncatedCitedSlots:y().int(),bySurfaceClass:k(Hz)});S({overall:k(yv),byQuery:He(u(),k(yv)),ranked:bv,byProvider:He(u(),bv),runId:u(),window:AS,limit:y().int().nullable()});const Yp=S({total:y().int(),checked:y().int(),mentioned:y().int(),cited:y().int(),mentionRate:y().nullable(),citedRate:y().nullable()}),_S=Yp.extend({provider:u(),firstObserved:u(),lastObserved:u()}),Kz=Yp.extend({queryId:u().nullable(),query:u(),firstObserved:u(),lastObserved:u(),providers:k(_S).optional()}),Qz=S({since:u().nullable(),until:u().nullable(),lastRuns:y().int().nullable(),runCount:y().int()}),Zz=H(["provider"]),sp=S({domain:u(),mentions:y().int()}),Yz=S({percent:y().nullable(),projectMentions:y().int(),competitorMentions:y().int(),snapshotsWithAnswerText:y().int(),perCompetitor:k(sp)});S({project:u(),groupBy:Zz.optional(),window:Qz,totals:Yp,byProvider:k(_S).optional(),queries:k(Kz),shareOfVoice:Yz.optional()});const Fz=H(["within-noise","moved","insufficient-data","model-discontinuous","model-unknown"]),Xz=H(["up","down","flat"]),vv=S({point:y().nullable(),ciLow:y().nullable(),ciHigh:y().nullable(),numerator:y().int(),denominator:y().int()}),Jz=H(["mention-share-of-voice","cited-share-of-voice","mention-rate","cited-rate"]),Wz=S({key:Jz,label:u(),driftRobust:ne(),from:vv,to:vv,rateRatio:y().nullable(),direction:Dn([Xz,ze()]),verdict:Fz}),Sv=S({month:u(),since:u(),until:u(),runCount:y().int(),lowRunCount:ne()}),eR=S({queryCount:y().int(),excludedFromOnly:y().int(),excludedToOnly:y().int(),providers:k(u()),excludedProviders:k(u())}),tR=S({provider:u(),fromModels:k(u()),toModels:k(u())}),nR=H(["included","model-discontinuous","model-unknown"]),aR=S({provider:u(),status:nR,fromModels:k(u()),toModels:k(u())}),iR=H(["comparable","model-discontinuous","model-unknown","insufficient-data"]),sR=S({status:iR,comparedProviders:k(u()),providers:k(aR)}),rR=S({provider:u(),from:S({checked:y().int(),mentioned:y().int(),cited:y().int()}),to:S({checked:y().int(),mentioned:y().int(),cited:y().int()})}),oR=S({from:S({count:y().int(),of:y().int()}),to:S({count:y().int(),of:y().int()})});S({project:u(),from:Sv,to:Sv,basket:eR,metrics:k(Wz),queriesMentioned:oR,byProvider:k(rR),modelChanges:k(tR),continuity:sR,competitors:S({from:k(sp),to:k(sp)})});H(["json","csv"]);const lR=S({runId:u(),runKind:De("answer-visibility"),runStatus:Ii,runTrigger:Ip,runCreatedAt:u(),runStartedAt:u().nullable(),runFinishedAt:u().nullable(),snapshotId:u(),snapshotCreatedAt:u(),queryId:u().nullable(),query:u().nullable(),provider:u(),model:u().nullable(),location:u().nullable(),citationState:oi,cited:ne(),answerMentioned:ne().nullable(),mentionState:Dn([jo,ze()]),citedDomains:k(u()),competitorOverlap:k(u()),recommendedCompetitors:k(u()),answerText:u().nullable(),groundingSources:k(Vp),searchQueries:k(u())}),cR=S({since:u().nullable(),until:u().nullable(),includeProbes:ne()});S({schemaVersion:De("canonry.results-export/v1"),generatedAt:u(),project:S({id:u(),name:u(),displayName:u(),canonicalDomain:u(),country:u(),language:u()}),filters:cR,recordCount:y().int().nonnegative(),records:k(lR)});const Ic=H(["organic","paid"]);Ic.enum;S({id:u(),projectId:u(),propertyId:u(),clientEmail:u(),connected:ne(),createdAt:u(),updatedAt:u()});S({date:u(),landingPage:u(),sessions:y(),organicSessions:y(),users:y()});const Fp=H(["session","first_user","manual_utm"]),uR=S({source:u(),medium:u(),trafficClass:Ic,sessions:y(),users:y(),sourceDimension:Fp}),dR=S({source:u(),medium:u(),trafficClass:Ic,sourceDimension:Fp,landingPage:u(),sessions:y(),users:y()}),fR=S({source:u(),medium:u(),sessions:y(),users:y(),channelGroup:u()}),uo=S({sessions:y(),sharePct:y(),sharePctDisplay:u()}),pR=S({organic:uo,social:uo,direct:uo,ai:uo,other:uo});S({totalSessions:y(),totalOrganicSessions:y(),totalDirectSessions:y(),totalUsers:y(),topPages:k(S({landingPage:u(),sessions:y(),organicSessions:y(),directSessions:y(),users:y()})),aiReferrals:k(uR),aiReferralLandingPages:k(dR),aiSessionsDeduped:y(),aiUsersDeduped:y(),paidAiSessionsDeduped:y(),paidAiUsersDeduped:y(),organicAiSessionsDeduped:y(),organicAiUsersDeduped:y(),aiSessionsBySession:y(),aiUsersBySession:y(),paidAiSessionsBySession:y(),paidAiUsersBySession:y(),organicAiSessionsBySession:y(),organicAiUsersBySession:y(),socialReferrals:k(fR),socialSessions:y(),socialUsers:y(),channelBreakdown:pR,organicSharePct:y(),aiSharePct:y(),aiSharePctBySession:y(),paidAiSharePct:y(),paidAiSharePctBySession:y(),organicAiSharePct:y(),organicAiSharePctBySession:y(),directSharePct:y(),socialSharePct:y(),organicSharePctDisplay:u(),aiSharePctDisplay:u(),aiSharePctBySessionDisplay:u(),paidAiSharePctDisplay:u(),paidAiSharePctBySessionDisplay:u(),organicAiSharePctDisplay:u(),organicAiSharePctBySessionDisplay:u(),directSharePctDisplay:u(),socialSharePctDisplay:u(),otherSessions:y(),otherSharePct:y(),otherSharePctDisplay:u(),lastSyncedAt:u().nullable()});S({connected:ne(),propertyId:u().nullable(),clientEmail:u().nullable(),authMethod:H(["service-account","oauth"]).nullable(),lastSyncedAt:u().nullable(),createdAt:u().nullable().optional(),updatedAt:u().nullable().optional()});S({synced:ne(),rowCount:y().int().nonnegative(),aiReferralCount:y().int().nonnegative(),socialReferralCount:y().int().nonnegative(),days:y().int().nonnegative(),syncedAt:u(),syncedComponents:k(u()).optional()});S({date:u(),source:u(),medium:u(),trafficClass:Ic,landingPage:u(),sessions:y(),users:y(),sourceDimension:Fp});S({date:u(),source:u(),medium:u(),sessions:y(),users:y(),channelGroup:u()});S({date:u(),sessions:y(),organicSessions:y(),users:y(),usersSource:H(["deduplicated","landing-page-sum"])});function Cc(e){return e.toLowerCase().replace(/[^a-z0-9]/g,"")}S({id:u(),projectId:u(),runId:u().nullable(),overallCitedRate:y(),overallMentionRate:y(),totalPairs:y().int().nonnegative(),citedPairs:y().int().nonnegative(),mentionedPairs:y().int().nonnegative(),providerBreakdown:He(u(),S({citedRate:y(),mentionRate:y(),cited:y().int().nonnegative(),mentioned:y().int().nonnegative(),total:y().int().nonnegative()})),createdAt:u(),status:H(["ready","no-data"]),reason:De("no-runs-yet").optional()});const TS=H(["claude","openai","gemini","zai","deepinfra"]),mR=S({id:TS,label:u(),defaultModel:u(),configured:ne(),keySource:H(["config","env"]).nullable()});S({providers:k(mR).default([]),defaultProvider:TS.nullable()});const hR=H(["aero","user","compaction"]);hR.enum;const ES=128;S({key:u().min(1).max(ES),value:u().min(1)});S({key:u().min(1).max(ES)});const cr=H(["commoncrawl","bing-webmaster"]);cr.enum;const Xp=H(["queued","downloading","querying","ready","failed"]);Xp.enum;S({id:u(),release:u(),status:Xp,phaseDetail:u().nullable().optional(),vertexPath:u().nullable().optional(),edgesPath:u().nullable().optional(),vertexSha256:u().nullable().optional(),edgesSha256:u().nullable().optional(),vertexBytes:y().int().nullable().optional(),edgesBytes:y().int().nullable().optional(),projectsProcessed:y().int().nullable().optional(),domainsDiscovered:y().int().nullable().optional(),downloadStartedAt:u().nullable().optional(),downloadFinishedAt:u().nullable().optional(),queryStartedAt:u().nullable().optional(),queryFinishedAt:u().nullable().optional(),error:u().nullable().optional(),createdAt:u(),updatedAt:u()});const gR=S({linkingDomain:u(),numHosts:y().int(),source:cr}),yR=S({projectId:u(),release:u(),targetDomain:u(),totalLinkingDomains:y().int(),totalHosts:y().int(),top10HostsShare:u(),queriedAt:u(),source:cr,excludedLinkingDomains:y().int().optional(),excludedHosts:y().int().optional()});S({source:cr,summary:yR.nullable(),total:y().int(),rows:k(gR)});S({release:u(),totalLinkingDomains:y().int(),totalHosts:y().int(),top10HostsShare:u(),queriedAt:u(),source:cr});const bR=S({source:cr,connected:ne(),hasData:ne(),latestRelease:u().nullable(),totalLinkingDomains:y().int(),lastSyncedAt:u().nullable()});S({projectId:u(),targetDomain:u(),sources:k(bR),anyConnected:ne(),anyData:ne()});S({duckdbInstalled:ne(),duckdbVersion:u().nullable().optional(),duckdbSpec:u(),pluginDir:u()});S({installed:ne(),version:u(),path:u(),alreadyPresent:ne()});S({release:u(),vertexUrl:u(),edgesUrl:u(),vertexBytes:y().int().nullable(),edgesBytes:y().int().nullable(),lastModified:u().nullable()});S({release:u(),syncStatus:Xp.nullable(),bytes:y().int(),lastUsedAt:u().nullable()});const Jp=H(["positive","caution","negative","neutral"]),ni=S({label:u(),value:u(),delta:u(),tone:Jp,description:u(),tooltip:u().optional(),trend:k(y()),progress:y().optional(),providerCoverage:u().optional()}),vR=ni.extend({breakdown:S({projectMentionSnapshots:y().int().nonnegative(),competitorMentionSnapshots:y().int().nonnegative(),perCompetitor:k(S({domain:u(),mentionSnapshots:y().int().nonnegative(),shareOfCompetitiveTotal:y()})),snapshotsWithAnswerText:y().int().nonnegative(),snapshotsTotal:y().int().nonnegative()})}),Mf=S({gained:y().int().nonnegative(),lost:y().int().nonnegative(),tone:Jp,hasPreviousRun:ne(),gainedQueries:k(u()).optional(),lostQueries:k(u()).optional()}),SR=S({hasPreviousRun:ne(),comparable:ne(),querySetChanged:ne(),previousRunAt:u().nullable(),currentQueryCount:y().int().nonnegative(),previousQueryCount:y().int().nonnegative(),comparableQueryCount:y().int().nonnegative(),addedQueryCount:y().int().nonnegative(),removedQueryCount:y().int().nonnegative(),addedQueries:k(u()),removedQueries:k(u())}),xR=S({id:u(),projectId:u(),runId:u().nullable(),type:H(["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:H(["critical","high","medium","low"]),title:u(),query:u(),provider:u(),recommendation:S({action:u(),target:u().optional(),reason:u()}).optional(),cause:S({cause:u(),competitorDomain:u().optional(),details:u().optional()}).optional(),dismissed:ne(),createdAt:u()}),wR=S({id:u(),projectId:u(),runId:u().nullable(),overallCitedRate:y(),overallMentionRate:y(),totalPairs:y().int().nonnegative(),citedPairs:y().int().nonnegative(),mentionedPairs:y().int().nonnegative(),providerBreakdown:He(u(),S({citedRate:y(),mentionRate:y(),cited:y().int().nonnegative(),mentioned:y().int().nonnegative(),total:y().int().nonnegative()})),createdAt:u(),status:H(["ready","no-data"]),reason:De("no-runs-yet").optional()});S({project:sD,latestRun:dz,health:wR.nullable(),topInsights:k(xR),queryCounts:S({totalQueries:y().int().nonnegative(),citedQueries:y().int().nonnegative(),notCitedQueries:y().int().nonnegative(),citedRate:y(),mentionedQueries:y().int().nonnegative(),notMentionedQueries:y().int().nonnegative(),mentionRate:y()}),providers:k(S({provider:u(),citedRate:y(),cited:y().int().nonnegative(),total:y().int().nonnegative()})),transitions:S({since:u().nullable(),gained:y().int().nonnegative(),lost:y().int().nonnegative(),emerging:y().int().nonnegative()}),scores:S({mention:ni,visibility:ni,mentionShare:vR,gapQueries:ni,mentionGaps:ni,indexCoverage:ni,competitorPressure:ni,runStatus:ni}),movementSummary:Mf,citationMovement:Mf,mentionMovement:Mf,movementComparison:SR,competitors:k(S({id:u(),domain:u(),citationCount:y().int().nonnegative(),totalQueries:y().int().nonnegative(),pressureLabel:H(["None","Low","Moderate","High"]),citedQueries:k(u())})),providerScores:k(S({provider:u(),model:u().nullable(),score:y(),cited:y().int().nonnegative(),total:y().int().nonnegative(),trend:k(y()).optional()})),attentionItems:k(S({id:u(),tone:Jp,title:u(),detail:u(),actionLabel:u(),href:u()})),runHistory:k(S({runId:u(),createdAt:u(),citedCount:y().int().nonnegative(),totalCount:y().int().nonnegative(),citationRate:y(),mentionedCount:y().int().nonnegative(),mentionRate:y(),status:u()})),suggestedQueries:S({rows:k(S({query:u(),impressions:y(),clicks:y(),avgPosition:y(),reason:u()})),totalCandidates:y().int().nonnegative(),skippedAlreadyTracked:y().int().nonnegative()}),dateRangeLabel:u(),contextLabel:u()});H(["snapshot","insight"]);const jR=S({kind:De("snapshot"),id:u(),runId:u(),query:u(),provider:u(),model:u().nullable(),citationState:oi,matchedField:H(["answerText","citedDomains","searchQueries","query"]),snippet:u(),createdAt:u()}),NR=S({kind:De("insight"),id:u(),runId:u().nullable(),type:H(["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:H(["critical","high","medium","low"]),title:u(),query:u(),provider:u(),matchedField:H(["title","query","recommendation","cause"]),snippet:u(),dismissed:ne(),createdAt:u()}),kR=_o("kind",[jR,NR]);S({query:u(),totalHits:y().int().nonnegative(),truncated:ne(),hits:k(kR)});const OS=H(["create","expand","refresh","add-schema"]);OS.enum;function wU(e){switch(e){case"create":return"Create";case"expand":return"Expand";case"refresh":return"Refresh";case"add-schema":return"Add schema"}}const DS=H(["gsc","competitor-evidence","both"]);DS.enum;const zS=H(["high","medium","low"]);zS.enum;const AR=H(["blog-post","comparison","listicle","how-to","guide","glossary"]);AR.enum;const RS=H(["proposed","briefed","payload-generated","draft-created","published","validated","dismissed"]);RS.enum;const Wp=H(["ownable","ceded"]);Wp.enum;const CR=S({url:u(),gscImpressions:y().nonnegative(),gscClicks:y().nonnegative(),gscAvgPosition:y().nonnegative().nullable(),organicSessions:y().nonnegative()}),_R=S({domain:u(),url:u(),title:u(),citationCount:y().int().nonnegative()}),TR=S({demand:y(),competitor:y(),absence:y(),gapSeverity:y()}),ER=S({actionId:u(),state:RS,lastUpdated:u()}),MS=S({targetRef:u(),query:u(),action:OS,ourBestPage:CR.nullable(),winningCompetitor:_R.nullable(),score:y(),scoreBreakdown:TR,drivers:k(u()),demandSource:DS,actionConfidence:zS,existingAction:ER.nullable(),winnabilityClass:Wp,winnability:y().min(0).max(1).nullable()});S({targets:k(MS),contextMetrics:S({totalAiReferralSessions:y().int().nonnegative(),latestRunId:u(),runTimestamp:u()})});const OR=S({targetRef:u(),addressedUrl:u().nullable(),note:u().nullable(),dismissedAt:u()});S({dismissals:k(OR)});S({targetRef:u().min(1),addressedUrl:u().url().optional(),note:u().max(500).optional()});S({targetRef:u(),promptVersion:u(),provider:u(),model:u(),responseText:u(),costMillicents:y().int().nonnegative(),generatedAt:u()});S({provider:u().optional(),model:u().optional(),forceRefresh:ne().optional()});const DR=S({targetQuery:u().trim().min(1),winnabilityClass:Wp,angle:u().trim().min(1),whyWinnable:u().trim().min(1),schemaHookup:u().trim().min(1),controllableSurfaceRationale:u().trim().min(1)});S({targetRef:u(),promptVersion:u(),provider:u(),model:u(),brief:DR,costMillicents:y().int().nonnegative(),generatedAt:u()});const zR=S({domain:u(),competitorType:Uc,hits:y().int().nonnegative(),updatedAt:u()});S({classifications:k(zR)});const RR=S({uri:u(),title:u(),domain:u(),isOurDomain:ne(),isCompetitor:ne(),citationCount:y().int().nonnegative(),providers:k(Aa)}),BS=S({query:u(),groundingSources:k(RR)});S({sources:k(BS),latestRunId:u()});const LS=S({query:u(),competitorDomains:k(u()),competitorCount:y().int().nonnegative(),missRate:y().min(0).max(1),lastSeenInRunId:u()});S({gaps:k(LS),latestRunId:u()});const qS=H(["ok","warn","fail","skipped"]);qS.enum;const em=H(["global","project"]);em.enum;const US=H(["auth","config","providers","integrations","database","schedules","agent"]);US.enum;const MR=S({id:u(),category:US,scope:em,title:u(),status:qS,code:u().describe('Stable machine-readable code (e.g. "google.token.refresh-failed"). Use this for filtering and remediation logic.'),summary:u(),remediation:u().nullable().optional().describe('Operator-facing next step. Null when status is "ok" or no specific remediation applies.'),details:He(u(),Pn()).optional().describe("Structured context — principal email, redirect URI, missing scopes, etc. Stable per check id."),durationMs:y().int().nonnegative().describe("How long the check took to execute.")});S({scope:em,project:u().nullable().describe('Project name when scope is "project", null otherwise.'),generatedAt:u().describe("ISO-8601 timestamp when this doctor run started."),durationMs:y().int().nonnegative(),summary:S({total:y().int().nonnegative(),ok:y().int().nonnegative(),warn:y().int().nonnegative(),fail:y().int().nonnegative(),skipped:y().int().nonnegative()}),checks:k(MR)});const BR=S({provider:u(),citationState:oi,cited:ne(),mentioned:ne(),runId:u(),runCreatedAt:u()}),LR=S({queryId:u(),query:u(),providers:k(BR),citedCount:y().int().nonnegative(),mentionedCount:y().int().nonnegative(),totalProviders:y().int().nonnegative()}),qR=S({queryId:u(),query:u(),provider:u(),citingCompetitors:k(u()),runId:u(),runCreatedAt:u()}),UR=S({providersConfigured:y().int().nonnegative(),providersCiting:y().int().nonnegative(),providersMentioning:y().int().nonnegative(),totalQueries:y().int().nonnegative(),queriesCitedAndMentioned:y().int().nonnegative(),queriesCitedOnly:y().int().nonnegative(),queriesMentionedOnly:y().int().nonnegative(),queriesInvisible:y().int().nonnegative(),latestRunId:u().nullable(),latestRunAt:u().nullable()});S({summary:UR,byQuery:k(LR),competitorGaps:k(qR),status:H(["ready","no-data"]),reason:H(["no-runs-yet","no-queries"]).optional()});const jU=[7,14,30,90],NU=30;Dn([De(7),De(14),De(30),De(90)]).describe("Report window in days (7, 14, 30, or 90). Defaults to 30 when omitted.");const $R=H(["prompt","request-param","browser-geo","ignored"]),IR=S({label:u(),city:u(),region:u(),country:u(),otherConfiguredLabels:k(u())}),PR=S({provider:u(),treatment:$R,description:u()}),VR=S({generatedAt:u(),project:S({id:u(),name:u(),displayName:u(),canonicalDomain:u(),country:u(),language:u()}),location:IR.nullable(),providerLocationHandling:k(PR),periodStart:u().nullable(),periodEnd:u().nullable(),periodDays:y().int().positive()}),GR=S({citationRate:y(),citedQueryCount:y(),totalQueryCount:y(),mentionRate:y(),mentionedQueryCount:y(),trend:H(["up","down","flat","unknown"]),queryCount:y(),competitorCount:y(),providerCount:y(),gsc:S({clicks:y(),impressions:y(),ctr:y(),avgPosition:y(),periodStart:u(),periodEnd:u()}).nullable(),ga:S({sessions:y(),users:y(),periodStart:u(),periodEnd:u()}).nullable(),findings:k(S({title:u(),detail:u(),tone:H(["positive","caution","negative","neutral"])}))}),HR=S({citationState:H(["cited","not-cited","pending"]),answerMentioned:ne().nullable(),model:u().nullable()}),KR=S({queries:k(u()),providers:k(u()),matrix:k(k(HR.nullable())),providerRates:k(S({provider:u(),citedCount:y(),mentionedCount:y(),totalCount:y(),citationRate:y(),mentionRate:y()}))}),QR=S({domain:u(),citationCount:y(),totalCount:y(),pressureLabel:H(["High","Moderate","Low","None"]),citedQueries:k(u()),sharePct:y(),theirCitedPages:k(S({url:u(),citedFor:k(u())}))}),ZR=S({projectCitationCount:y(),competitors:k(QR)}),YR=S({domain:u(),mentionCount:y(),totalCount:y(),pressureLabel:H(["High","Moderate","Low","None"]),mentionedQueries:k(u()),sharePct:y()}),FR=S({projectMentionCount:y(),totalAnswerSnapshots:y(),competitors:k(YR)}),XR=S({category:u(),label:u(),count:y(),sharePct:y()}),JR=S({categories:k(XR),topDomains:k(S({domain:u(),count:y(),isCompetitor:ne()}))}),WR=S({query:u(),clicks:y(),impressions:y(),ctr:y(),avgPosition:y(),category:H(["brand","lead-gen","industry","other"])}),e4=S({periodStart:u(),periodEnd:u(),totalClicks:y(),totalImpressions:y(),ctr:y(),avgPosition:y(),topQueries:k(WR),categoryBreakdown:k(S({category:H(["brand","lead-gen","industry","other"]),clicks:y(),impressions:y(),sharePct:y()})),trend:k(S({date:u(),clicks:y(),impressions:y()})),trackedButNoGsc:k(u()),gscButNotTracked:k(u())}),t4=S({totalSessions:y(),totalUsers:y(),totalOrganicSessions:y(),periodStart:u(),periodEnd:u(),topLandingPages:k(S({page:u(),sessions:y(),users:y(),organicSessions:y()})),channelBreakdown:k(S({channel:u(),sessions:y(),sharePct:y()}))}),n4=S({totalSessions:y(),organicSessions:y(),paidSessions:y(),channels:k(S({channelGroup:u(),sessions:y(),sharePct:y()})),topCampaigns:k(S({source:u(),medium:u(),sessions:y()}))}),a4=S({totalSessions:y(),paidSessions:y(),organicSessions:y(),totalUsers:y().optional(),paidUsers:y().optional(),organicUsers:y().optional(),bySource:k(S({source:u(),sessions:y(),users:y().optional(),paidSessions:y(),organicSessions:y(),sharePct:y()})),trend:k(S({date:u(),sessions:y()})),topLandingPages:k(S({page:u(),sessions:y(),users:y().optional()}))}),i4=S({windowStart:u(),windowEnd:u(),hasData:ne(),verifiedCrawlerHits:S({current:y(),prior:y(),deltaPct:y().nullable()}),unverifiedCrawlerHits:S({current:y(),prior:y(),deltaPct:y().nullable()}),aiUserFetchHits:S({current:y(),prior:y(),deltaPct:y().nullable()}),referralArrivals:S({current:y(),prior:y(),deltaPct:y().nullable()}),referralArrivalsByClass:S({paid:S({current:y(),prior:y(),deltaPct:y().nullable()}),organic:S({current:y(),prior:y(),deltaPct:y().nullable()}),unclassified:S({current:y(),prior:y(),deltaPct:y().nullable()})}),referralArrivalsClassSummary:u(),byOperator:k(S({operator:u(),verifiedHits:y(),unverifiedHits:y(),userFetchHits:y(),referralArrivals:y(),deltaPct:y().nullable()})),topCrawledPaths:k(S({path:u(),verifiedHits:y(),distinctOperators:y()})),referralProducts:k(S({product:u(),arrivals:y(),distinctLandingPaths:y()})),dailyTrend:k(S({date:u(),verifiedCrawlerHits:y(),userFetchHits:y(),referralArrivals:y()})),topReferralLandingPaths:k(S({path:u(),arrivals:y(),distinctProducts:y()}))}),s4=S({provider:H(["google","bing"]).nullable(),total:y(),indexed:y(),notIndexed:y(),deindexed:y(),unknown:y(),indexedPct:y()}),r4=S({runId:u(),date:u(),citationRate:y(),citedQueryCount:y(),totalQueryCount:y(),mentionRate:y(),mentionedQueryCount:y(),providerRates:k(S({provider:u(),citationRate:y(),mentionRate:y()}))}),rp=S({id:u(),type:H(["regression","gain","opportunity"]),severity:H(["critical","high","medium","low"]),title:u(),query:u(),provider:u(),recommendation:u().nullable(),createdAt:u(),instanceCount:y()}),o4=S({horizon:H(["immediate","short-term","medium-term"]),title:u(),rationale:u()}),qs=S({current:y(),prior:y(),deltaAbs:y(),deltaPct:y().nullable(),direction:H(["up","down","flat"]),window:y().optional()}),l4=S({provider:u(),current:y(),prior:y(),deltaAbs:y(),direction:H(["up","down","flat"])}),c4=S({enoughHistory:ne(),headline:u(),citationRate:qs.nullable(),mentionRate:qs.nullable(),citedQueryCount:qs.nullable(),mentionedQueryCount:qs.nullable(),gscClicksDelta:qs.nullable(),aiReferralsDelta:qs.nullable(),comparisonWindowDays:y().int().positive(),providerMovements:k(l4),wins:k(rp),regressions:k(rp)});H(["agency","client"]);const u4=H(["agency","client","both"]),d4=H(["immediate","short-term","medium-term"]),f4=H(["high","medium","low"]);H(["positive","caution","negative","neutral"]);const p4=H(["content","competitors","provider","search-demand","indexing","location","monitoring"]),tm=S({audience:u4,priority:y(),horizon:d4,category:p4,title:u(),action:u(),why:k(u()),evidence:k(u()),successMetric:u(),confidence:f4,targetRef:u().optional()}),m4=S({headline:u(),overview:u(),actionItems:k(tm),confidenceNotes:k(u())}),h4=S({title:u(),detail:u(),severity:H(["positive","caution","negative","neutral"]),evidence:k(u())}),g4=S({priorities:k(tm),diagnostics:k(h4)});function kU(e){return e.horizon==="immediate"?"negative":e.confidence==="high"?"caution":e.confidence==="low"?"neutral":"caution"}function AU(e){switch(e){case"critical":return"Critical";case"high":return"High";case"medium":return"Medium";case"low":return"Low"}}function CU(e){switch(e){case"immediate":return"Immediate";case"short-term":return"Short term";case"medium-term":return"Medium term"}}function _U(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 TU(e){switch(e){case"high":return"High";case"medium":return"Medium";case"low":return"Low"}}S({meta:VR,executiveSummary:GR,citationScorecard:KR,competitorLandscape:ZR,mentionLandscape:FR,aiSourceOrigin:JR,gsc:e4.nullable(),ga:t4.nullable(),socialReferrals:n4.nullable(),aiReferrals:a4.nullable(),serverActivity:i4.nullable(),indexingHealth:s4.nullable(),citationsTrend:k(r4),whatsChanged:c4,insights:k(rp),recommendedNextSteps:k(o4),actionPlan:k(tm),clientSummary:m4,agencyDiagnostics:g4,contentOpportunities:k(MS),contentGaps:k(LS),groundingSources:k(BS)});const y4=H(["claude","codex"]);y4.enum;const b4=H(["claude","codex","all"]);b4.enum;const $S=S({content:y().int().nonnegative(),sitemap:y().int().nonnegative(),robots:y().int().nonnegative(),asset:y().int().nonnegative(),other:y().int().nonnegative()}),v4=H(["content","sitemap","robots","asset","other"]),nm=H(["cloud-run","wordpress","cloudflare","vercel","generic-log"]);nm.enum;const S4=H(["raw-request-events","aggregate-request-metrics","request-url","status-code","user-agent","remote-ip","referer","cursor-pull"]);S4.enum;const x4=H(["raw-request","aggregate-bucket"]),w4=x4.enum,j4=H(["observed","provider-aggregated","inferred"]),N4=j4.enum,k4=S({type:u().nullable(),labels:He(u(),u())}),A4=S({sourceType:nm,evidenceKind:De(w4["raw-request"]),confidence:De(N4.observed),eventId:u().min(1),observedAt:u().min(1),method:u().nullable(),requestUrl:u().nullable(),host:u().nullable(),path:u().min(1),queryString:u().nullable(),status:y().int().nullable(),userAgent:u().nullable(),remoteIp:u().nullable(),referer:u().nullable(),latencyMs:y().nullable(),requestSizeBytes:y().int().nullable(),responseSizeBytes:y().int().nullable(),providerResource:k4,providerLabels:He(u(),u())});S({events:k(A4),rawEntryCount:y().int().nonnegative(),skippedEntryCount:y().int().nonnegative(),nextPageToken:u().optional(),filter:u()});const IS=H(["connected","paused","error","archived"]),EU=IS.enum,PS=H(["oauth","service-account"]);PS.enum;const C4=H(["verified","claimed_unverified","unknown_ai_like"]),OU=C4.enum;S({gcpProjectId:u().min(1),serviceName:u().nullable().optional(),location:u().nullable().optional(),authMode:PS});S({baseUrl:u().url(),username:u().min(1)});const am=H(["production","preview"]);am.enum;S({projectId:u().min(1),teamId:u().min(1),environment:am});const VS=S({id:u(),projectId:u(),sourceType:nm,displayName:u(),status:IS,lastSyncedAt:u().nullable(),lastCursor:u().nullable(),lastError:u().nullable(),archivedAt:u().nullable(),config:He(u(),Pn()),createdAt:u(),updatedAt:u()});S({gcpProjectId:u().min(1),serviceName:u().min(1).optional(),location:u().min(1).optional(),displayName:u().min(1).optional(),keyJson:u().optional()});S({baseUrl:u().url(),username:u().min(1),applicationPassword:u().min(1),displayName:u().min(1).optional()});S({projectId:u().min(1),teamId:u().min(1),token:u().min(1),environment:am.optional(),displayName:u().min(1).optional()});S({sourceId:u(),runId:u(),syncedAt:u(),pulledEvents:y().int().nonnegative(),selfTrafficExcluded:y().int().nonnegative(),crawlerHits:y().int().nonnegative(),aiUserFetchHits:y().int().nonnegative(),aiReferralHits:y().int().nonnegative(),unknownHits:y().int().nonnegative(),crawlerBucketRows:y().int().nonnegative(),aiUserFetchBucketRows:y().int().nonnegative(),aiReferralBucketRows:y().int().nonnegative(),sampleRows:y().int().nonnegative(),windowStart:u(),windowEnd:u()});S({days:y().int().positive().optional()});S({advanceToNow:De(!0)});S({sourceId:u(),runId:u(),status:Ii,windowStart:u(),windowEnd:u(),daysRequested:y().int().positive(),daysApplied:y().int().positive()});const _4=S({crawlerHits:y().int().nonnegative(),crawlerContentHits:y().int().nonnegative(),crawlerInfraHits:y().int().nonnegative(),crawlerSegments:$S,aiUserFetchHits:y().int().nonnegative(),aiReferralHits:y().int().nonnegative(),sampleCount:y().int().nonnegative()});S({sources:k(VS)});const T4=VS.extend({totals24h:_4,latestRun:S({runId:u(),status:Ii,startedAt:u().nullable(),finishedAt:u().nullable(),error:u().nullable()}).nullable()});S({sources:k(T4)});const E4=H(["crawler","ai-user-fetch","ai-referral"]),im=E4.enum,O4=S({kind:De(im.crawler),sourceId:u(),tsHour:u(),botId:u(),operator:u(),verificationStatus:u(),pathNormalized:u(),pathClass:v4,status:y().int(),hits:y().int().nonnegative()}),D4=S({kind:De(im["ai-user-fetch"]),sourceId:u(),tsHour:u(),botId:u(),operator:u(),verificationStatus:u(),pathNormalized:u(),status:y().int(),hits:y().int().nonnegative()}),z4=S({kind:De(im["ai-referral"]),sourceId:u(),tsHour:u(),product:u(),operator:u(),sourceDomain:u(),evidenceType:u(),landingPathNormalized:u(),status:y().int(),hits:y().int().nonnegative(),paidHits:y().int().nonnegative(),organicHits:y().int().nonnegative(),unknownHits:y().int().nonnegative()}),R4=_o("kind",[O4,D4,z4]);S({windowStart:u(),windowEnd:u(),totals:S({crawlerHits:y().int().nonnegative(),crawlerContentHits:y().int().nonnegative(),crawlerInfraHits:y().int().nonnegative(),crawlerSegments:$S,aiUserFetchHits:y().int().nonnegative(),aiReferralHits:y().int().nonnegative(),aiReferralPaidHits:y().int().nonnegative(),aiReferralOrganicHits:y().int().nonnegative(),aiReferralUnknownHits:y().int().nonnegative()}),events:k(R4)});S({apiKey:u().min(1)});S({id:u(),name:u(),status:u(),currencyCode:u().nullable(),timezone:u().nullable(),url:u().nullable(),reviewStatus:u().nullable(),integrityReviewStatus:u().nullable(),integrityDecision:u().nullable()});S({q:u().trim().min(1).max(200),limit:y().int().min(1).max(100).default(20)});const M4=S({id:u(),type:u(),canonicalName:u(),countryCode:u(),name:u(),regionCode:u().nullable()});S({count:y().int().nonnegative(),query:u(),results:k(M4)});const B4=S({id:u(),clientType:u().optional(),name:u().optional(),pixelId:u().optional()});S({pixels:k(B4)});const L4=S({id:u(),name:u().optional()}),q4=S({id:u(),name:u().optional(),eventType:u().optional(),customEventName:u().nullable().optional(),attributionWindowDays:y().int().positive().optional(),adAccountId:u().optional(),sourceIds:k(u()).optional(),sources:k(L4).optional(),archived:ne().optional(),version:y().int().nonnegative().optional()});S({eventSettings:k(q4)});S({connected:ne(),adAccountId:u().nullable().optional(),displayName:u().nullable().optional(),currencyCode:u().nullable().optional(),timezone:u().nullable().optional(),status:u().nullable().optional(),reviewStatus:u().nullable().optional(),integrityReviewStatus:u().nullable().optional(),integrityDecision:u().nullable().optional(),lastSyncedAt:u().nullable().optional(),conversionTrackingConfigured:ne().optional()});S({disconnected:ne()});S({runId:u(),status:u()});const U4=S({type:u().nullable().optional(),title:u().nullable().optional(),body:u().nullable().optional(),targetUrl:u().nullable().optional(),fileId:u().nullable().optional()}),Pc=H(["impressions","clicks"]),$4=Pc.enum,Vc=H(["impression","click"]);Vc.enum;const I4=S({id:u(),adGroupId:u(),name:u(),status:u(),reviewStatus:u().nullable().optional(),creative:U4.nullable().optional(),upstreamUpdatedAt:y().int().nullable().optional(),syncedAt:u().optional()}),P4=S({id:u(),campaignId:u(),name:u(),description:u().nullable().optional(),status:u(),billingEventType:Dn([Vc,ze()]).optional(),maxBidMicros:y().int().nullable().optional(),contextHints:k(u()).default([]),ads:k(I4).default([]),upstreamUpdatedAt:y().int().nullable().optional(),syncedAt:u().optional()}),V4=S({id:u(),name:u(),description:u().nullable().optional(),status:u(),startTime:y().int().nullable().optional(),endTime:y().int().nullable().optional(),biddingType:Dn([Pc,ze()]).optional(),dailySpendLimitMicros:y().int().nullable().optional(),lifetimeSpendLimitMicros:y().int().nullable().optional(),conversionEventSettingIds:k(u()).default([]),locationIds:k(u()).optional(),adGroups:k(P4).default([]),upstreamUpdatedAt:y().int().nullable().optional(),syncedAt:u().optional()});S({campaigns:k(V4)});const GS=H(["campaign","ad_group"]);GS.enum;const G4=S({level:GS,entityId:u(),date:u(),impressions:y().int(),clicks:y().int(),spendMicros:y().int(),conversions:y().int(),ctr:y().nullable(),cpcMicros:y().int().nullable()});S({rows:k(G4),currencyCode:u().nullable().optional()});const H4=S({impressions:y().int(),clicks:y().int(),spendMicros:y().int(),conversions:y().int(),ctr:y().nullable(),cpcMicros:y().int().nullable()});S({connected:ne(),displayName:u().nullable().optional(),currencyCode:u().nullable().optional(),lastSyncedAt:u().nullable().optional(),campaignCount:y().int(),adGroupCount:y().int(),adCount:y().int(),window:S({from:u().nullable(),to:u().nullable()}),totals:H4});const Ca=u().min(8).max(128).regex(/^[\w.:-]+$/,"operationKey may contain letters, numbers, dot, underscore, colon, and hyphen"),ft=u().min(1).max(200),Pi=u().min(3).max(1e3).refine(e=>e.trim().length>0),tr=y().int().min(946684800).max(4102444800),nr=y().int().positive().max(Number.MAX_SAFE_INTEGER),sm=u().regex(/^[a-f0-9]{64}$/),HS=k(ft).max(100).refine(e=>new Set(e).size===e.length,"conversionEventSettingIds must be unique"),KS=u().url().refine(e=>new URL(e).protocol==="https:",{message:"URL must use https"}),QS=H(["image_upload","campaign_create","campaign_update","campaign_pause","campaign_tree_activate","ad_group_create","ad_group_update","ad_group_pause","ad_create","ad_update","ad_pause"]);QS.enum;const ZS=H(["pending","reconciling","succeeded","failed","unknown"]),Zs=ZS.enum,YS=H(["known_entity","create_fingerprint","manual_only"]);YS.enum;const FS=H([Zs.pending,Zs.unknown,Zs.reconciling]);FS.enum;const XS=H(["active","paused","archived"]);XS.enum;const JS=H(["file","campaign","ad_group","ad"]);JS.enum;const WS=H(["campaign","ad_group","ad"]);WS.enum;const rm=S({id:ft,expectedUpdatedAt:y().int().nonnegative()}).strict(),K4=rm,_c=100,Q4=rm.extend({ads:k(K4).min(1).max(_c-1)}).strict(),Z4=rm.extend({adGroups:k(Q4).min(1).max(_c-1)}).strict();function Y4(e,n){return e<n?-1:e>n?1:0}function xv(e,n,i){for(let r=1;r<e.length;r+=1)if(Y4(e[r-1].id,e[r].id)>=0){i.addIssue({code:"custom",path:n,message:"Activation manifest entities must be uniquely sorted by id"});return}}const e1=S({campaign:Z4}).strict().superRefine((e,n)=>{1+e.campaign.adGroups.reduce((l,c)=>l+1+c.ads.length,0)>_c&&n.addIssue({code:"custom",path:["campaign"],message:`Activation manifests may contain at most ${_c} entities`}),xv(e.campaign.adGroups,["campaign","adGroups"],n);const r=new Set;for(let l=0;l<e.campaign.adGroups.length;l+=1){const c=e.campaign.adGroups[l];xv(c.ads,["campaign","adGroups",l,"ads"],n);for(let d=0;d<c.ads.length;d+=1){const h=c.ads[d];r.has(h.id)&&n.addIssue({code:"custom",path:["campaign","adGroups",l,"ads",d,"id"],message:"An ad may appear only once in an activation manifest"}),r.add(h.id)}}}),t1=sm,F4=H(["approved","executing","consumed","revoked","expired","unknown"]),wa=F4.enum,X4=H(["pending","executing","active","failed","rollback_executing","rolled_back","rollback_failed","unknown"]),di=X4.enum,J4=S({name:Pi.optional(),description:u().max(4e3).nullable().optional(),status:XS.optional(),startTime:tr.nullable().optional(),endTime:tr.nullable().optional(),lifetimeSpendLimitMicros:nr.min(1e6).optional(),locationIds:k(ft).max(100).optional(),biddingType:Pc.optional(),conversionEventSettingIds:HS.optional(),campaignId:ft.optional(),contextHints:k(u().min(1).max(1e3)).max(100).optional(),maxBidMicros:nr.max(1e8).optional(),billingEventType:Vc.optional(),adGroupId:ft.optional(),creativeFingerprint:sm.optional()}).strict();S({operationKey:Ca,imageUrl:KS});S({operationKey:Ca,name:Pi,description:u().max(4e3).optional(),startTime:tr.optional(),endTime:tr.optional(),lifetimeSpendLimitMicros:nr.min(1e6),locationIds:k(ft).min(1).max(100),biddingType:Pc.optional(),conversionEventSettingIds:HS.optional()}).superRefine((e,n)=>{e.startTime!==void 0&&e.endTime!==void 0&&e.endTime<=e.startTime&&n.addIssue({code:"custom",path:["endTime"],message:"endTime must be after startTime"}),e.biddingType===$4.clicks&&(e.conversionEventSettingIds===void 0||e.conversionEventSettingIds.length===0)&&n.addIssue({code:"custom",path:["conversionEventSettingIds"],message:"conversionEventSettingIds must be non-empty when biddingType is clicks"})});S({operationKey:Ca,campaignId:ft,name:Pi,description:u().max(4e3).optional(),contextHints:k(u().min(1).max(1e3)).min(1).max(100),maxBidMicros:nr.max(1e8),billingEventType:Vc.optional()});const n1=S({title:u().min(3).max(50),body:u().min(1).max(100),targetUrl:KS,fileId:ft});S({operationKey:Ca,adGroupId:ft,name:Pi,creative:n1});function om(e){return Object.keys(e).some(n=>n!=="operationKey"&&n!=="expectedUpdatedAt")}S({operationKey:Ca,expectedUpdatedAt:y().int().nonnegative(),name:Pi.optional(),description:u().max(4e3).nullable().optional(),startTime:tr.nullable().optional(),endTime:tr.nullable().optional(),lifetimeSpendLimitMicros:nr.min(1e6).optional(),locationIds:k(ft).min(1).max(100).optional()}).refine(om,{message:"At least one campaign field must be updated"});S({operationKey:Ca,expectedUpdatedAt:y().int().nonnegative(),name:Pi.optional(),description:u().max(4e3).nullable().optional(),contextHints:k(u().min(1).max(1e3)).min(1).max(100).optional(),maxBidMicros:nr.max(1e8).optional()}).refine(om,{message:"At least one ad group field must be updated"});S({operationKey:Ca,expectedUpdatedAt:y().int().nonnegative(),name:Pi.optional(),creative:n1.optional()}).refine(om,{message:"At least one ad field must be updated"});S({operationKey:Ca});const Gc=S({id:u(),adAccountId:u().nullable(),operationKey:u(),kind:QS,state:ZS,entityType:Dn([JS,ze()]),entityId:u().nullable(),upstreamUpdatedAt:y().int().nullable(),errorCode:u().nullable(),errorMessage:u().nullable(),reconcileStrategy:Dn([YS,ze()]),reconcileParentId:ft.nullable(),reconcileFingerprint:sm.nullable(),reconcileFields:J4.nullable(),reconcileAttempts:y().int().nonnegative(),lastReconciledAt:u().nullable(),createdAt:u(),updatedAt:u()});S({operation:Gc,replayed:ne()});const rt=lS({offset:!0}),ur={id:ft,projectId:ft,adAccountId:ft,manifestHash:t1,manifest:e1,executorApiKeyId:ft,approverApiKeyId:ft,expiresAt:rt,approvedAt:rt,createdAt:rt,updatedAt:rt,revocationRequestedAt:rt.nullable()},W4=S({...ur,state:De(wa.approved),operationId:ze(),executionStartedAt:ze(),consumedAt:ze(),revokedAt:ze(),expiredAt:ze()}).strict(),e3=S({...ur,state:De(wa.executing),operationId:ft,executionStartedAt:rt,consumedAt:ze(),revokedAt:ze(),expiredAt:ze()}).strict(),t3=S({...ur,state:De(wa.consumed),operationId:ft,executionStartedAt:rt,consumedAt:rt,revokedAt:ze(),expiredAt:ze()}).strict(),n3=S({...ur,state:De(wa.revoked),operationId:ze(),executionStartedAt:ze(),consumedAt:ze(),revokedAt:rt,expiredAt:ze()}).strict(),a3=S({...ur,state:De(wa.expired),operationId:ze(),executionStartedAt:ze(),consumedAt:ze(),revokedAt:ze(),expiredAt:rt}).strict(),i3=S({...ur,state:De(wa.unknown),operationId:ft,executionStartedAt:rt,consumedAt:ze(),revokedAt:ze(),expiredAt:ze()}).strict(),a1=_o("state",[W4,e3,t3,n3,a3,i3]).superRefine((e,n)=>{e.executorApiKeyId===e.approverApiKeyId&&n.addIssue({code:"custom",path:["executorApiKeyId"],message:"The activation executor must use a different API key from the approver"}),e.revocationRequestedAt!==null&&e.state!==wa.executing&&e.state!==wa.unknown&&e.state!==wa.consumed&&n.addIssue({code:"custom",path:["revocationRequestedAt"],message:"Only an executing, cancelled, or unresolved activation can carry a cancellation request"})}),fi={id:ft,operationId:ft,ordinal:y().int().nonnegative(),entityType:WS,entityId:ft,expectedUpdatedAt:y().int().nonnegative(),createdAt:rt,updatedAt:rt},To={errorCode:ze(),errorMessage:ze()},lm={errorCode:u().min(1).max(100),errorMessage:u().min(1).max(500),remediation:u().min(1).max(500)},s3=S({...fi,...To,state:De(di.pending),providerUpdatedAt:ze(),remediation:ze(),startedAt:ze(),finishedAt:ze()}).strict(),r3=S({...fi,...To,state:De(di.executing),providerUpdatedAt:ze(),remediation:ze(),startedAt:rt,finishedAt:ze()}).strict(),o3=S({...fi,...To,state:De(di.active),providerUpdatedAt:y().int().nonnegative(),remediation:ze(),startedAt:rt,finishedAt:rt}).strict(),l3=S({...fi,...lm,state:De(di.failed),providerUpdatedAt:Dn([y().int().nonnegative(),ze()]),startedAt:rt,finishedAt:rt}).strict(),c3=S({...fi,...To,state:De(di.rollback_executing),providerUpdatedAt:y().int().nonnegative(),remediation:u().min(1).max(500),startedAt:rt,finishedAt:ze()}).strict(),u3=S({...fi,...To,state:De(di.rolled_back),providerUpdatedAt:y().int().nonnegative(),remediation:u().min(1).max(500),startedAt:rt,finishedAt:rt}).strict(),d3=S({...fi,...lm,state:De(di.rollback_failed),providerUpdatedAt:y().int().nonnegative(),startedAt:rt,finishedAt:rt}).strict(),f3=S({...fi,...lm,state:De(di.unknown),providerUpdatedAt:Dn([y().int().nonnegative(),ze()]),startedAt:rt,finishedAt:rt}).strict(),p3=_o("state",[s3,r3,o3,l3,c3,u3,d3,f3]),op={exact:"exact",refreshSemanticallyUnchanged:"refresh_semantically_unchanged"},m3=H([op.exact,op.refreshSemanticallyUnchanged]);S({manifest:e1,executorApiKeyId:ft,expiresAt:rt,versionPolicy:m3.default(op.exact)}).strict();S({grant:a1}).strict();S({}).strict();S({operationKey:Ca,grantId:ft,manifestHash:t1}).strict();S({grant:a1,operation:Gc,steps:k(p3)}).strict();const h3=[Zs.pending,Zs.unknown,Zs.reconciling];function g3(e){if(e===void 0||e==="")return h3;if(Array.isArray(e)){const n=[];for(const i of e)typeof i=="string"?n.push(...i.split(",")):n.push(i);return n}return typeof e=="string"?e.split(",").filter(Boolean):e}S({state:eD(g3,k(FS).min(1).max(3).refine(e=>new Set(e).size===e.length,"state values must be unique")),limit:tD().int().min(1).max(200).default(100),cursor:u().min(1).max(1e3).optional()});S({operations:k(Gc),count:y().int().nonnegative(),nextCursor:u().nullable()});S({}).strict();S({operation:Gc,resolved:ne()});var y3=(e=>(e.Clicks="clicks",e.Impressions="impressions",e.CTR="ctr",e.Position="position",e))(y3||{});const DU={clicks:"Clicks",impressions:"Impressions",ctr:"CTR",position:"Position"},zU={clicks:"Clicks",impressions:"Impr",ctr:"CTR",position:"Pos"},RU=Pp;function b3(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
 
@@ -207,4 +207,4 @@ spec:
207
207
  `);$(ut)}}catch(se){Ze(se instanceof Error?se.message:"Failed to generate queries")}finally{xe(!1)}}},Xi=async()=>{if(!ae)return;const se=Ot;if(se.length!==0){Qi(!0),Bo(null);try{await VA(ae,se),hr(!0),await r(),N(4)}catch(ut){Bo(ut instanceof Error?ut.message:"Failed to save competitors")}finally{Qi(!1)}}},Ji=async()=>{const se=_a.trim();if(se){Po(!0),Ta(null);try{await QA("gemini",{apiKey:se}),Ft({title:"Gemini configured",detail:"Provider is ready — continuing setup.",tone:"positive",dedupeKey:"setup:gemini:configured",dedupeMode:"drop"}),Io(""),await r()}catch(ut){Ta(ut instanceof Error?ut.message:"Failed to save Gemini key")}finally{Po(!1)}}},Wn=async()=>{if(ae){qo(!0);try{const se=await Uo.mutateAsync({projectName:ae,projectLabel:A||C||ae,sourceAction:"setup-launch"});lu(se.id),yr(!0),await r()}catch{}finally{qo(!1)}}},gn=()=>N(se=>Math.max(0,se-1)),mi=(()=>{switch(w){case 0:return p.jsxs(Tn,{className:"surface-card step-card",children:[p.jsx("div",{className:"section-head",children:p.jsxs("div",{children:[p.jsx("p",{className:"eyebrow eyebrow-soft",children:"Step 1 of 5"}),p.jsx("h2",{children:"System ready"})]})}),p.jsx("p",{className:"supporting-copy",children:"Checking that your Canonry instance is configured and reachable."}),p.jsx("div",{className:"compact-stack",children:b.healthChecks.map(se=>p.jsxs("div",{className:"health-check-row",children:[p.jsxs("div",{children:[p.jsx("p",{className:"run-row-title",children:se.label}),p.jsx("p",{className:"supporting-copy",children:se.detail}),se.id==="provider"&&se.state!=="ready"&&p.jsxs("div",{className:"mt-3 rounded-md border border-default bg-bg-elevated/40 p-3 space-y-2",children:[p.jsxs("p",{className:"text-xs text-secondary",children:["Paste a Gemini key to enable visibility checks (free at"," ",p.jsx("a",{href:"https://aistudio.google.com/apikey",target:"_blank",rel:"noreferrer",className:"text-positive-400 hover:text-positive underline underline-offset-2",children:"aistudio.google.com"}),")."]}),p.jsxs("div",{className:"flex items-center gap-2",children:[p.jsx("input",{type:"password",value:_a,onChange:ut=>Io(ut.target.value),placeholder:"AI... (paste here)",className:"flex-1 rounded-md border border-base bg-bg px-2.5 py-1.5 text-sm text-heading placeholder:text-faint focus:border-mono-600 focus:outline-none font-mono",disabled:Yi}),p.jsx(Ie,{type:"button",size:"sm",disabled:Yi||!_a.trim(),onClick:_n(Ji),children:Yi?"Saving...":"Save"})]}),Vo&&p.jsx("p",{className:"text-xs text-negative-400",children:Vo}),p.jsxs("p",{className:"text-[11px] text-faint",children:["Other providers (OpenAI, Claude, Perplexity) configurable later via"," ",p.jsx(tt,{to:"/settings",className:"text-muted hover:text-neutral underline underline-offset-2",children:"/settings"}),"."]})]})]}),p.jsx(Cn,{tone:se.state==="ready"?"positive":"caution",title:se.id==="api"?ar(g.apiStatus):se.id==="worker"?ar(g.workerStatus):se.detail,children:se.state==="ready"?"Ready":"Attention"})]},se.id))}),p.jsxs("div",{className:"setup-nav",children:[p.jsx("span",{}),p.jsx(Ie,{type:"button",disabled:!cu,onClick:()=>N(1),children:"Continue"})]})]});case 1:return p.jsxs(Tn,{className:"surface-card step-card",children:[p.jsxs("div",{className:"section-head",children:[p.jsxs("div",{children:[p.jsx("p",{className:"eyebrow eyebrow-soft",children:"Step 2 of 5"}),p.jsx("h2",{children:"Create project"})]}),ae?p.jsx(Cn,{tone:"positive",children:"Created"}):null]}),ae?p.jsxs("div",{className:"compact-stack",children:[p.jsxs("p",{className:"text-neutral",children:["Project ",p.jsx("span",{className:"text-heading font-medium",children:ae})," created successfully."]}),p.jsxs("div",{className:"setup-nav",children:[p.jsx(Ie,{type:"button",variant:"outline",onClick:gn,children:"Back"}),p.jsx(Ie,{type:"button",onClick:()=>N(2),children:"Continue"})]})]}):p.jsxs("div",{className:"compact-stack",children:[p.jsxs("div",{className:"setup-field",children:[p.jsx("label",{className:"setup-label",htmlFor:"project-name",children:"Project name"}),p.jsx("input",{id:"project-name",className:"setup-input",type:"text",placeholder:"my-website",value:C,onChange:se=>D(se.target.value)}),vt&&vt!==C?p.jsxs("p",{className:"supporting-copy",children:["Slug: ",vt]}):null]}),p.jsxs("div",{className:"setup-field",children:[p.jsx("label",{className:"setup-label",htmlFor:"display-name",children:"Display name (optional)"}),p.jsx("input",{id:"display-name",className:"setup-input",type:"text",placeholder:"My Website",value:A,onChange:se=>E(se.target.value)})]}),p.jsxs("div",{className:"setup-field",children:[p.jsx("label",{className:"setup-label",htmlFor:"domain",children:"Canonical domain"}),p.jsx("input",{id:"domain",className:"setup-input",type:"text",placeholder:"example.com",value:R,onChange:se=>G(se.target.value)})]}),p.jsxs("div",{className:"setup-field-row",children:[p.jsxs("div",{className:"setup-field",children:[p.jsx("label",{className:"setup-label",htmlFor:"country",children:"Country"}),p.jsx("input",{id:"country",className:"setup-input",type:"text",placeholder:"US",maxLength:2,value:X,onChange:se=>V(se.target.value.toUpperCase())})]}),p.jsxs("div",{className:"setup-field",children:[p.jsx("label",{className:"setup-label",htmlFor:"language",children:"Language"}),p.jsx("input",{id:"language",className:"setup-input",type:"text",placeholder:"en",maxLength:5,value:P,onChange:se=>re(se.target.value.toLowerCase())})]})]}),p.jsxs("label",{className:"flex items-start gap-3 rounded-md border border-default bg-surface p-3 cursor-pointer hover:border-strong",children:[p.jsx("input",{type:"checkbox",className:"mt-0.5 h-4 w-4 rounded border-strong bg-bg",checked:O,onChange:se=>L(se.target.checked)}),p.jsxs("span",{className:"flex-1",children:[p.jsx("span",{className:"block text-sm text-heading",children:"Auto-extract backlinks"}),p.jsxs("span",{className:"block text-xs text-muted mt-0.5",children:["When a new Common Crawl release syncs, automatically extract backlinks for this project."," ",p.jsx(tt,{to:"/backlinks",className:"text-positive-400 hover:text-positive underline underline-offset-2",children:"Manage backlinks"})]})]})]}),Me?p.jsx("p",{className:"text-negative-400 text-sm",children:Me}):null,p.jsxs("div",{className:"setup-nav",children:[p.jsx(Ie,{type:"button",variant:"outline",onClick:gn,children:"Back"}),p.jsx(Ie,{type:"button",disabled:!vt||!R||it,onClick:_n(uu),children:it?"Creating...":"Create project"})]})]})]});case 2:return p.jsxs(Tn,{className:"surface-card step-card",children:[p.jsxs("div",{className:"section-head",children:[p.jsxs("div",{children:[p.jsx("p",{className:"eyebrow eyebrow-soft",children:"Step 3 of 5"}),p.jsx("h2",{children:"Add queries"})]}),W?p.jsxs(Cn,{tone:"positive",children:[qt.length," saved"]}):p.jsxs(Cn,{tone:"neutral",children:[qt.length," quer",qt.length!==1?"ies":"y"]})]}),p.jsx("p",{className:"supporting-copy",children:"Enter the search queries you want to track. One per line."}),W?p.jsxs("div",{className:"compact-stack",children:[p.jsx("ul",{className:"detail-list",children:qt.map(se=>p.jsx("li",{children:se},se))}),p.jsxs("div",{className:"setup-nav",children:[p.jsx(Ie,{type:"button",variant:"outline",onClick:gn,children:"Back"}),p.jsx(Ie,{type:"button",onClick:()=>N(3),children:"Continue"})]})]}):p.jsxs("div",{className:"compact-stack",children:[ue.length>0?p.jsxs("div",{className:"compact-stack",children:[p.jsxs("div",{className:"flex items-center gap-2 text-muted text-xs uppercase tracking-wide",children:[p.jsx("span",{className:"flex-1 border-t border-base"}),"auto-generate",p.jsx("span",{className:"flex-1 border-t border-base"})]}),p.jsxs("div",{className:"flex items-end gap-2",children:[p.jsxs("div",{className:"setup-field flex-1",children:[p.jsx("label",{className:"setup-label",htmlFor:"gen-provider",children:"Provider"}),p.jsx("select",{id:"gen-provider",className:"setup-input",value:ee,onChange:se=>de(se.target.value),children:ue.map(se=>p.jsxs("option",{value:se.name,children:[se.displayName??se.name,se.model?` (${se.model})`:""]},se.name))})]}),p.jsxs("div",{className:"setup-field",children:[p.jsx("label",{className:"setup-label",htmlFor:"gen-count",children:"Count"}),p.jsx("select",{id:"gen-count",className:"setup-input",value:ie,onChange:se=>Ae(Number(se.target.value)),children:[3,5,10,15,20].map(se=>p.jsx("option",{value:se,children:se},se))})]}),p.jsx(Ie,{type:"button",variant:"outline",disabled:st||!ee,onClick:_n(Fi),children:st?"Analyzing site...":"Generate"})]}),Pe?p.jsx("p",{className:"text-negative-400 text-sm",children:Pe}):null]}):null,p.jsxs("div",{className:"flex items-center gap-2 text-muted text-xs uppercase tracking-wide",children:[p.jsx("span",{className:"flex-1 border-t border-base"}),"or type manually",p.jsx("span",{className:"flex-1 border-t border-base"})]}),p.jsxs("div",{className:"setup-field",children:[p.jsx("label",{className:"setup-label",htmlFor:"queries",children:"Queries (one per line)"}),p.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:fe,onChange:se=>$(se.target.value)})]}),je?p.jsx("p",{className:"text-negative-400 text-sm",children:je}):null,p.jsxs("div",{className:"setup-nav",children:[p.jsx(Ie,{type:"button",variant:"outline",onClick:gn,children:"Back"}),p.jsx(Ie,{type:"button",disabled:qt.length===0||Xe,onClick:_n(du),children:Xe?"Saving...":`Save ${qt.length} quer${qt.length!==1?"ies":"y"}`})]})]})]});case 3:return p.jsxs(Tn,{className:"surface-card step-card",children:[p.jsxs("div",{className:"section-head",children:[p.jsxs("div",{children:[p.jsx("p",{className:"eyebrow eyebrow-soft",children:"Step 4 of 5"}),p.jsx("h2",{children:"Add competitors"})]}),Lt?p.jsx(Cn,{tone:"positive",children:"Saved"}):null]}),p.jsx("p",{className:"supporting-copy",children:"Domains that compete for the same queries. One per line."}),Lt?p.jsxs("div",{className:"compact-stack",children:[p.jsx("ul",{className:"detail-list",children:Ot.map(se=>p.jsx("li",{children:se},se))}),p.jsxs("div",{className:"setup-nav",children:[p.jsx(Ie,{type:"button",variant:"outline",onClick:gn,children:"Back"}),p.jsx(Ie,{type:"button",onClick:()=>N(4),children:"Continue"})]})]}):p.jsxs("div",{className:"compact-stack",children:[p.jsxs("div",{className:"setup-field",children:[p.jsx("label",{className:"setup-label",htmlFor:"competitors",children:"Competitor domains (one per line)"}),p.jsx("textarea",{id:"competitors",className:"setup-textarea",rows:4,placeholder:`competitor1.com
210
- competitor2.com`,value:Bt,onChange:se=>Hn(se.target.value)})]}),Ki?p.jsx("p",{className:"text-negative-400 text-sm",children:Ki}):null,p.jsxs("div",{className:"setup-nav",children:[p.jsx(Ie,{type:"button",variant:"outline",onClick:gn,children:"Back"}),p.jsxs("div",{className:"flex gap-2",children:[p.jsx(Ie,{type:"button",variant:"outline",onClick:()=>N(4),children:"Skip"}),p.jsx(Ie,{type:"button",disabled:Ot.length===0||gr,onClick:_n(Xi),children:gr?"Saving...":`Save ${Ot.length} competitor${Ot.length!==1?"s":""}`})]})]})]})]});case 4:{const se=$o.data,ut=se?.status==="completed"||se?.status==="partial"||se?.status==="failed"||se?.status==="cancelled",ea=se?.snapshots??[],hi=ea.filter(Kn=>Kn.citationState==="cited").length,fu=ea.filter(Kn=>Kn.answerMentioned===!0).length,br=new Set(ea.map(Kn=>Kn.query).filter(Kn=>!!Kn)).size,Go=Zi?ut&&(se?.status==="completed"||se?.status==="partial")?p.jsx(Cn,{tone:"positive",children:"Complete"}):ut?p.jsx(Cn,{tone:"negative",children:"Failed"}):p.jsx(Cn,{tone:"caution",children:"Running"}):null;return p.jsxs(Tn,{className:"surface-card step-card",children:[p.jsxs("div",{className:"section-head",children:[p.jsxs("div",{children:[p.jsx("p",{className:"eyebrow eyebrow-soft",children:"Step 5 of 5"}),p.jsx("h2",{children:"Launch first run"})]}),Go]}),Zi?ut?se?.status==="failed"?p.jsxs("div",{className:"compact-stack",children:[p.jsx("p",{className:"text-negative-400",children:"Sweep failed. Inspect the run on the project page for the provider error and retry from there."}),p.jsxs("div",{className:"setup-nav",children:[p.jsx("span",{}),p.jsx(Ie,{type:"button",onClick:()=>{x({to:ae?`/projects/${encodeURIComponent(ae)}`:"/"})},children:"Open project"})]})]}):p.jsxs("div",{className:"compact-stack",children:[p.jsxs("p",{className:"text-neutral",children:["Sweep complete. Your first answer-visibility snapshot for"," ",p.jsx("span",{className:"text-heading font-medium",children:ae}),":"]}),p.jsxs("div",{className:"grid grid-cols-3 gap-2 mt-1",children:[p.jsxs("div",{className:"rounded-md border border-default bg-surface p-3",children:[p.jsx("p",{className:"text-[10px] uppercase tracking-wide text-muted",children:"Mentioned"}),p.jsxs("p",{className:"text-2xl font-bold tabular-nums text-primary mt-1",children:[fu,p.jsxs("span",{className:"text-faint text-lg",children:[" / ",br]})]}),p.jsx("p",{className:"text-[11px] text-muted mt-0.5",children:"queries with brand in answer"})]}),p.jsxs("div",{className:"rounded-md border border-default bg-surface p-3",children:[p.jsx("p",{className:"text-[10px] uppercase tracking-wide text-muted",children:"Cited"}),p.jsxs("p",{className:"text-2xl font-bold tabular-nums text-primary mt-1",children:[hi,p.jsxs("span",{className:"text-faint text-lg",children:[" / ",br]})]}),p.jsx("p",{className:"text-[11px] text-muted mt-0.5",children:"queries with domain in sources"})]}),p.jsxs("div",{className:"rounded-md border border-default bg-surface p-3",children:[p.jsx("p",{className:"text-[10px] uppercase tracking-wide text-muted",children:"Snapshots"}),p.jsx("p",{className:"text-2xl font-bold tabular-nums text-primary mt-1",children:ea.length}),p.jsx("p",{className:"text-[11px] text-muted mt-0.5",children:"total (query × provider)"})]})]}),p.jsx("p",{className:"text-[11px] text-muted mt-1",children:"Full evidence, per-provider breakdown, and suggested next queries on the project dashboard."}),p.jsxs("div",{className:"setup-nav",children:[p.jsx("span",{}),p.jsx(Ie,{type:"button",onClick:()=>{x({to:ae?`/projects/${encodeURIComponent(ae)}`:"/"})},children:"Open project dashboard →"})]})]}):p.jsxs("div",{className:"compact-stack",children:[p.jsx("p",{className:"text-neutral",children:"Sweep running — typically 30-60s. Polling every 2s…"}),p.jsx("div",{className:"rounded-md border border-default bg-surface p-3 text-xs text-muted",children:p.jsxs("p",{children:["Status: ",p.jsx("span",{className:"text-neutral",children:se?.status??"queued"})]})}),p.jsxs("div",{className:"setup-nav",children:[p.jsx("span",{}),p.jsx(Ie,{type:"button",variant:"outline",onClick:()=>{x({to:ae?`/projects/${encodeURIComponent(ae)}`:"/"})},children:"Watch on project page"})]})]}):p.jsxs("div",{className:"compact-stack",children:[p.jsxs("p",{className:"supporting-copy",children:["Everything is configured. Launch an answer-visibility sweep to start tracking citations for ",p.jsx("span",{className:"text-heading font-medium",children:ae}),"."]}),p.jsxs("div",{className:"setup-nav",children:[p.jsx(Ie,{type:"button",variant:"outline",onClick:gn,children:"Back"}),p.jsx(Ie,{type:"button",disabled:Lo,onClick:_n(Wn),children:Lo?"Launching...":"Launch visibility sweep"})]})]})]})}default:return null}})();return p.jsxs("div",{className:"page-container",children:[p.jsx("div",{className:"page-header",children:p.jsxs("div",{className:"page-header-left",children:[p.jsx("h1",{className:"page-title",children:"Setup"}),p.jsx("p",{className:"page-subtitle",children:"Create a project, add queries, add competitors, and launch the first run."})]})}),p.jsx(S6,{current:w,labels:v6}),p.jsx("section",{className:"setup-wizard",children:mi})]})}function w6(){return p.jsx("div",{className:"page-container",children:p.jsx("section",{className:"page-section",children:p.jsxs(Tn,{className:"surface-card empty-card",children:[p.jsx("h1",{children:"Route not found"}),p.jsx("p",{children:"The current path does not map to a dashboard view."}),p.jsx(Ie,{asChild:!0,children:p.jsx(tt,{to:"/",children:"Return to overview"})})]})})})}const Jn=qi(()=>Ui(()=>import("./ProjectPage-DnkNE1AW.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9]),import.meta.url),"ProjectPage"),j6=qi(()=>Ui(()=>import("./RunsPage-CtuKRP0o.js"),__vite__mapDeps([10,1,2,8,5,9]),import.meta.url),"RunsPage"),N6=qi(()=>Ui(()=>import("./HistoryPage-BQVNx0eu.js"),__vite__mapDeps([11,1,7,8,5,9]),import.meta.url),"HistoryPage"),k6=qi(()=>Ui(()=>import("./SettingsPage-B1ZGnDz8.js"),__vite__mapDeps([12,1,8,5,9]),import.meta.url),"SettingsPage"),A6=qi(()=>Ui(()=>import("./BacklinksPage-BH4njwCh.js"),__vite__mapDeps([13,1,6,8,5,9]),import.meta.url),"BacklinksPage"),C6=qi(()=>Ui(()=>import("./TrafficPage-BOGbXHd9.js"),__vite__mapDeps([14,1,4,15,8,5,9]),import.meta.url),"TrafficPage"),_6=qi(()=>Ui(()=>import("./TrafficSourceDetailPage-5jj7n7W1.js"),__vite__mapDeps([16,1,4,3,5,15,8,9]),import.meta.url),"TrafficSourceDetailPage");function T6(){return p.jsx(WL,{children:p.jsx(JL,{})})}const Jt=Ij()({component:T6,validateSearch:e=>({runId:typeof e.runId=="string"?e.runId:void 0,evidenceId:typeof e.evidenceId=="string"?e.evidenceId:void 0,runStatus:typeof e.runStatus=="string"?e.runStatus:void 0,runKind:typeof e.runKind=="string"?e.runKind:void 0,runProject:typeof e.runProject=="string"?e.runProject:void 0,runWindow:typeof e.runWindow=="string"?e.runWindow:void 0,runQuery:typeof e.runQuery=="string"?e.runQuery:void 0})}),E6=kt({getParentRoute:()=>Jt,path:"/",component:n5,beforeLoad:({context:e})=>{const n=e.queryClient.getQueryData(Vi({client:te}));if(n&&n.length===0)throw Sp({to:"/setup"})}}),O6=kt({getParentRoute:()=>Jt,path:"/projects",component:m6}),D6=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,Gn=kt({getParentRoute:()=>Jt,path:"/projects/$projectName",component:()=>p.jsx(Qf,{}),beforeLoad:async({context:e,params:n,location:i})=>{const r=n.projectName;if(!D6.test(r))return;let l=e.queryClient.getQueryData(Vi({client:te}));if(!l)try{l=await e.queryClient.ensureQueryData(Hc({client:te}))}catch{return}const c=l.find(d=>d.id===r);if(c)throw Sp({to:i.pathname.replace(`/projects/${r}`,`/projects/${encodeURIComponent(c.name)}`),replace:!0})}}),z6=kt({getParentRoute:()=>Gn,path:"/",component:()=>p.jsx(Jn,{tab:"overview"})}),R6=kt({getParentRoute:()=>Gn,path:"/search-console",component:()=>p.jsx(Jn,{tab:"search-console"})}),M6=kt({getParentRoute:()=>Gn,path:"/local",component:()=>p.jsx(Jn,{tab:"local"})}),B6=kt({getParentRoute:()=>Gn,path:"/discovery",component:()=>p.jsx(Jn,{tab:"discovery"})}),L6=kt({getParentRoute:()=>Gn,path:"/report",component:()=>p.jsx(Jn,{tab:"report"})}),q6=kt({getParentRoute:()=>Gn,path:"/activity",component:()=>p.jsx(Jn,{tab:"activity"})}),U6=kt({getParentRoute:()=>Gn,path:"/backlinks",component:()=>p.jsx(Jn,{tab:"backlinks"})}),$6=kt({getParentRoute:()=>Gn,path:"/technical-aeo",component:()=>p.jsx(Jn,{tab:"technical-aeo"})}),I6=kt({getParentRoute:()=>Gn,path:"/history",component:()=>p.jsx(Jn,{tab:"history"})}),P6=kt({getParentRoute:()=>Gn,path:"/settings",component:()=>p.jsx(Jn,{tab:"settings"})}),V6=kt({getParentRoute:()=>Jt,path:"/runs",component:j6}),G6=kt({getParentRoute:()=>Jt,path:"/history",component:N6}),H6=kt({getParentRoute:()=>Jt,path:"/settings",component:k6,beforeLoad:({context:e})=>{}}),K6=kt({getParentRoute:()=>Jt,path:"/setup",component:x6,beforeLoad:({context:e})=>{const n=e.queryClient.getQueryData(Vi({client:te}));if(n&&n.length>0)throw Sp({to:"/"})}}),Q6=kt({getParentRoute:()=>Jt,path:"/backlinks",component:A6}),Z6=kt({getParentRoute:()=>Jt,path:"/traffic",component:C6}),Y6=kt({getParentRoute:()=>Jt,path:"/traffic/$projectName/$sourceId",component:_6}),F6=kt({getParentRoute:()=>Jt,path:"*",component:w6}),X6=Jt.addChildren([E6,O6,Gn.addChildren([z6,R6,M6,B6,L6,q6,U6,$6,I6,P6]),V6,G6,H6,K6,Q6,Z6,Y6,F6]);function J6(){return typeof window<"u"&&window.__CANONRY_CONFIG__?.basePath?window.__CANONRY_CONFIG__.basePath:"/"}const s0=J6(),W6=s0==="/"?"":s0.replace(/\/$/,"");function eq(e,n){return Pj({routeTree:X6,basepath:W6||"/",context:{queryClient:e},...n?.initialEntries})}const tq=6e4;function nq(){const[e,n]=q.useState(Tf()?"ready":"checking"),[i,r]=q.useState(""),[l,c]=q.useState(""),[d,h]=q.useState(null),[g,b]=q.useState(!1),[x,w]=q.useState(!1),N=q.useRef(null),C=q.useRef(null),D=()=>{if(!N.current){const R=mC();C.current=R,N.current=eq(R)}return{queryClient:C.current,router:N.current}};q.useEffect(()=>{if(Tf())return;let R=!1;return Mb().then(G=>{R||(G.authenticated?n("ready"):n(G.setupRequired?"setup":"login"))}).catch(G=>{R||(h(G instanceof Error?G.message:"Failed to reach the Canonry API"),n("login"))}),()=>{R=!0}},[]),q.useEffect(()=>{if(e!=="ready"||Tf())return;const R=setInterval(()=>{Mb().then(G=>{G.authenticated||(w(!0),n(G.setupRequired?"setup":"login"))}).catch(()=>{})},tq);return Rb(()=>{w(!0),n("login")}),()=>{clearInterval(R),Rb(null)}},[e]);const A=async R=>{if(R.preventDefault(),!i.trim()||i.trim().length<8){h("Password must be at least 8 characters");return}if(i!==l){h("Passwords do not match");return}b(!0),h(null);try{if(!(await HA(i.trim())).authenticated){h("Setup failed");return}r(""),c(""),w(!1),n("ready")}catch(G){h(G instanceof In||G instanceof Error?G.message:"Setup failed")}finally{b(!1)}},E=async R=>{if(R.preventDefault(),!!i.trim()){b(!0),h(null);try{if(!(await KA(i.trim())).authenticated){h("Incorrect password");return}r(""),w(!1),n("ready")}catch(G){h(G instanceof In||G instanceof Error?G.message:"Authentication failed")}finally{b(!1)}}};if(e==="ready"){const{queryClient:R,router:G}=D();return p.jsx(Vj,{client:R,children:p.jsx(Gj,{router:G})})}return p.jsx("div",{className:"min-h-screen bg-bg px-4 py-8",children:p.jsx("div",{className:"mx-auto flex min-h-[calc(100vh-4rem)] max-w-md items-center justify-center",children:p.jsx(Tn,{className:"surface-card w-full",children:e==="checking"?p.jsx(hc,{className:"py-8",children:p.jsx("p",{className:"supporting-copy text-center",children:"Connecting to Canonry…"})}):e==="setup"?p.jsxs(p.Fragment,{children:[p.jsxs(dp,{children:[p.jsx("p",{className:"eyebrow eyebrow-soft",children:"First-time setup"}),p.jsx(fp,{children:"Create a dashboard password"}),p.jsx(pp,{children:"Choose a password to protect the Canonry dashboard. You will use this to sign in on future visits."})]}),p.jsx(hc,{children:p.jsxs("form",{className:"space-y-4",onSubmit:_n(A),children:[p.jsxs("label",{className:"block space-y-1.5",children:[p.jsx("span",{className:"text-xs font-medium text-secondary",children:"Password"}),p.jsx("input",{autoFocus:!0,className:"w-full rounded-md border border-base bg-bg px-3 py-2 text-sm text-heading outline-none transition focus:border-mono-600",type:"password",value:i,onChange:R=>r(R.target.value),placeholder:"At least 8 characters"})]}),p.jsxs("label",{className:"block space-y-1.5",children:[p.jsx("span",{className:"text-xs font-medium text-secondary",children:"Confirm password"}),p.jsx("input",{className:"w-full rounded-md border border-base bg-bg px-3 py-2 text-sm text-heading outline-none transition focus:border-mono-600",type:"password",value:l,onChange:R=>c(R.target.value),placeholder:"Re-enter password"})]}),d?p.jsx("p",{className:"text-sm text-negative-400",children:d}):null,p.jsx(Ie,{type:"submit",disabled:g||!i.trim()||!l.trim(),children:g?"Setting up…":"Create password & open dashboard"})]})})]}):p.jsxs(p.Fragment,{children:[p.jsxs(dp,{children:[p.jsx("p",{className:"eyebrow eyebrow-soft",children:"Dashboard access"}),p.jsx(fp,{children:"Sign in to Canonry"}),p.jsx(pp,{children:"Enter your dashboard password to continue."})]}),p.jsxs(hc,{children:[x?p.jsx("p",{className:"mb-4 rounded-md border border-caution bg-caution-soft px-3 py-2 text-sm text-caution",children:"Your session expired — please sign in again."}):null,p.jsxs("form",{className:"space-y-4",onSubmit:_n(E),children:[p.jsxs("label",{className:"block space-y-1.5",children:[p.jsx("span",{className:"text-xs font-medium text-secondary",children:"Password"}),p.jsx("input",{autoFocus:!0,className:"w-full rounded-md border border-base bg-bg px-3 py-2 text-sm text-heading outline-none transition focus:border-mono-600",type:"password",value:i,onChange:R=>r(R.target.value),placeholder:"Dashboard password"})]}),d?p.jsx("p",{className:"text-sm text-negative-400",children:d}):null,p.jsx(Ie,{type:"submit",disabled:g||!i.trim(),children:g?"Signing in…":"Open dashboard"})]})]})]})})})})}const xx=document.getElementById("root");if(!xx)throw new Error("Expected #root element for web app bootstrap.");Xj.createRoot(xx).render(p.jsx(q.StrictMode,{children:p.jsx(nq,{})}));export{e$ as $,DU as A,Ie as B,kc as C,BU as D,vq as E,HU as F,bU as G,QU as H,po as I,ZU as J,Tq as K,_q as L,Oq as M,Ft as N,Uq as O,TB as P,XU as Q,JU as R,y3 as S,Cn as T,zq as U,YU as V,FU as W,KU as X,Eq as Y,Rq as Z,WU as _,O$ as a,gq as a$,o$ as a0,a$ as a1,s$ as a2,i$ as a3,r$ as a4,aC as a5,dm as a6,Ce as a7,n$ as a8,c1 as a9,A$ as aA,C$ as aB,Mq as aC,Vi as aD,Bq as aE,cm as aF,_$ as aG,E$ as aH,T$ as aI,O3 as aJ,M$ as aK,O0 as aL,R0 as aM,v$ as aN,GU as aO,NU as aP,b$ as aQ,jU as aR,Qq as aS,$$ as aT,CU as aU,kU as aV,_U as aW,TU as aX,wU as aY,AU as aZ,yq as a_,Na as aa,t$ as ab,GD as ac,HD as ad,xU as ae,SU as af,mU as ag,sU as ah,dU as ai,fU as aj,In as ak,pU as al,lq as am,D0 as an,RU as ao,GC as ap,WC as aq,zM as ar,vc as as,gU as at,hU as au,Jf as av,S$ as aw,Dq as ax,vU as ay,k$ as az,Op as b,ar as b$,hq as b0,Zq as b1,xq as b2,UU as b3,wv as b4,qU as b5,wq as b6,jq as b7,LU as b8,Nq as b9,XA as bA,d$ as bB,Gq as bC,Vq as bD,f$ as bE,c$ as bF,zU as bG,$q as bH,Iq as bI,Pq as bJ,Hq as bK,Xs as bL,um as bM,R$ as bN,Yc as bO,mm as bP,PU as bQ,VU as bR,QA as bS,DA as bT,oq as bU,Sq as bV,Lq as bW,qq as bX,Fc as bY,hm as bZ,Kq as b_,kq as ba,Cq as bb,Aq as bc,Eo as bd,Hc as be,vL as bf,N0 as bg,IU as bh,b6 as bi,Yt as bj,UA as bk,w3 as bl,bq as bm,fq as bn,pq as bo,z$ as bp,uq as bq,dq as br,cq as bs,IA as bt,mq as bu,_3 as bv,U$ as bw,L3 as bx,l$ as by,u$ as bz,nt as c,Nv as c0,aU as c1,rU as c2,lU as c3,cU as c4,iU as c5,oU as c6,uU as c7,EB as c8,C1 as c9,MB as ca,_1 as cb,T1 as cc,qC as cd,nU as ce,$b as cf,j$ as cg,EU as ch,OU as ci,im as cj,$U as ck,rr as cl,x$ as cm,N$ as cn,tU as co,Wq as cp,eU as cq,Jq as cr,w$ as cs,lD as d,D$ as e,MU as f,Tn as g,Mv as h,_A as i,_n as j,yU as k,p$ as l,te as m,m$ as n,h$ as o,y$ as p,g$ as q,Yq as r,Xq as s,v3 as t,gm as u,Fq as v,B$ as w,L$ as x,q$ as y,up as z};
210
+ competitor2.com`,value:Bt,onChange:se=>Hn(se.target.value)})]}),Ki?p.jsx("p",{className:"text-negative-400 text-sm",children:Ki}):null,p.jsxs("div",{className:"setup-nav",children:[p.jsx(Ie,{type:"button",variant:"outline",onClick:gn,children:"Back"}),p.jsxs("div",{className:"flex gap-2",children:[p.jsx(Ie,{type:"button",variant:"outline",onClick:()=>N(4),children:"Skip"}),p.jsx(Ie,{type:"button",disabled:Ot.length===0||gr,onClick:_n(Xi),children:gr?"Saving...":`Save ${Ot.length} competitor${Ot.length!==1?"s":""}`})]})]})]})]});case 4:{const se=$o.data,ut=se?.status==="completed"||se?.status==="partial"||se?.status==="failed"||se?.status==="cancelled",ea=se?.snapshots??[],hi=ea.filter(Kn=>Kn.citationState==="cited").length,fu=ea.filter(Kn=>Kn.answerMentioned===!0).length,br=new Set(ea.map(Kn=>Kn.query).filter(Kn=>!!Kn)).size,Go=Zi?ut&&(se?.status==="completed"||se?.status==="partial")?p.jsx(Cn,{tone:"positive",children:"Complete"}):ut?p.jsx(Cn,{tone:"negative",children:"Failed"}):p.jsx(Cn,{tone:"caution",children:"Running"}):null;return p.jsxs(Tn,{className:"surface-card step-card",children:[p.jsxs("div",{className:"section-head",children:[p.jsxs("div",{children:[p.jsx("p",{className:"eyebrow eyebrow-soft",children:"Step 5 of 5"}),p.jsx("h2",{children:"Launch first run"})]}),Go]}),Zi?ut?se?.status==="failed"?p.jsxs("div",{className:"compact-stack",children:[p.jsx("p",{className:"text-negative-400",children:"Sweep failed. Inspect the run on the project page for the provider error and retry from there."}),p.jsxs("div",{className:"setup-nav",children:[p.jsx("span",{}),p.jsx(Ie,{type:"button",onClick:()=>{x({to:ae?`/projects/${encodeURIComponent(ae)}`:"/"})},children:"Open project"})]})]}):p.jsxs("div",{className:"compact-stack",children:[p.jsxs("p",{className:"text-neutral",children:["Sweep complete. Your first answer-visibility snapshot for"," ",p.jsx("span",{className:"text-heading font-medium",children:ae}),":"]}),p.jsxs("div",{className:"grid grid-cols-3 gap-2 mt-1",children:[p.jsxs("div",{className:"rounded-md border border-default bg-surface p-3",children:[p.jsx("p",{className:"text-[10px] uppercase tracking-wide text-muted",children:"Mentioned"}),p.jsxs("p",{className:"text-2xl font-bold tabular-nums text-primary mt-1",children:[fu,p.jsxs("span",{className:"text-faint text-lg",children:[" / ",br]})]}),p.jsx("p",{className:"text-[11px] text-muted mt-0.5",children:"queries with brand in answer"})]}),p.jsxs("div",{className:"rounded-md border border-default bg-surface p-3",children:[p.jsx("p",{className:"text-[10px] uppercase tracking-wide text-muted",children:"Cited"}),p.jsxs("p",{className:"text-2xl font-bold tabular-nums text-primary mt-1",children:[hi,p.jsxs("span",{className:"text-faint text-lg",children:[" / ",br]})]}),p.jsx("p",{className:"text-[11px] text-muted mt-0.5",children:"queries with domain in sources"})]}),p.jsxs("div",{className:"rounded-md border border-default bg-surface p-3",children:[p.jsx("p",{className:"text-[10px] uppercase tracking-wide text-muted",children:"Snapshots"}),p.jsx("p",{className:"text-2xl font-bold tabular-nums text-primary mt-1",children:ea.length}),p.jsx("p",{className:"text-[11px] text-muted mt-0.5",children:"total (query × provider)"})]})]}),p.jsx("p",{className:"text-[11px] text-muted mt-1",children:"Full evidence, per-provider breakdown, and suggested next queries on the project dashboard."}),p.jsxs("div",{className:"setup-nav",children:[p.jsx("span",{}),p.jsx(Ie,{type:"button",onClick:()=>{x({to:ae?`/projects/${encodeURIComponent(ae)}`:"/"})},children:"Open project dashboard →"})]})]}):p.jsxs("div",{className:"compact-stack",children:[p.jsx("p",{className:"text-neutral",children:"Sweep running — typically 30-60s. Polling every 2s…"}),p.jsx("div",{className:"rounded-md border border-default bg-surface p-3 text-xs text-muted",children:p.jsxs("p",{children:["Status: ",p.jsx("span",{className:"text-neutral",children:se?.status??"queued"})]})}),p.jsxs("div",{className:"setup-nav",children:[p.jsx("span",{}),p.jsx(Ie,{type:"button",variant:"outline",onClick:()=>{x({to:ae?`/projects/${encodeURIComponent(ae)}`:"/"})},children:"Watch on project page"})]})]}):p.jsxs("div",{className:"compact-stack",children:[p.jsxs("p",{className:"supporting-copy",children:["Everything is configured. Launch an answer-visibility sweep to start tracking citations for ",p.jsx("span",{className:"text-heading font-medium",children:ae}),"."]}),p.jsxs("div",{className:"setup-nav",children:[p.jsx(Ie,{type:"button",variant:"outline",onClick:gn,children:"Back"}),p.jsx(Ie,{type:"button",disabled:Lo,onClick:_n(Wn),children:Lo?"Launching...":"Launch visibility sweep"})]})]})]})}default:return null}})();return p.jsxs("div",{className:"page-container",children:[p.jsx("div",{className:"page-header",children:p.jsxs("div",{className:"page-header-left",children:[p.jsx("h1",{className:"page-title",children:"Setup"}),p.jsx("p",{className:"page-subtitle",children:"Create a project, add queries, add competitors, and launch the first run."})]})}),p.jsx(S6,{current:w,labels:v6}),p.jsx("section",{className:"setup-wizard",children:mi})]})}function w6(){return p.jsx("div",{className:"page-container",children:p.jsx("section",{className:"page-section",children:p.jsxs(Tn,{className:"surface-card empty-card",children:[p.jsx("h1",{children:"Route not found"}),p.jsx("p",{children:"The current path does not map to a dashboard view."}),p.jsx(Ie,{asChild:!0,children:p.jsx(tt,{to:"/",children:"Return to overview"})})]})})})}const Jn=qi(()=>Ui(()=>import("./ProjectPage-CdgFUk7h.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9]),import.meta.url),"ProjectPage"),j6=qi(()=>Ui(()=>import("./RunsPage-DitYcIdx.js"),__vite__mapDeps([10,1,2,8,5,9]),import.meta.url),"RunsPage"),N6=qi(()=>Ui(()=>import("./HistoryPage-DwOAoN1Z.js"),__vite__mapDeps([11,1,7,8,5,9]),import.meta.url),"HistoryPage"),k6=qi(()=>Ui(()=>import("./SettingsPage-CAOrh65Q.js"),__vite__mapDeps([12,1,8,5,9]),import.meta.url),"SettingsPage"),A6=qi(()=>Ui(()=>import("./BacklinksPage-K8FQUBxI.js"),__vite__mapDeps([13,1,6,8,5,9]),import.meta.url),"BacklinksPage"),C6=qi(()=>Ui(()=>import("./TrafficPage-BqzNvx75.js"),__vite__mapDeps([14,1,4,15,8,5,9]),import.meta.url),"TrafficPage"),_6=qi(()=>Ui(()=>import("./TrafficSourceDetailPage-DXbygZUA.js"),__vite__mapDeps([16,1,4,3,5,15,8,9]),import.meta.url),"TrafficSourceDetailPage");function T6(){return p.jsx(WL,{children:p.jsx(JL,{})})}const Jt=Ij()({component:T6,validateSearch:e=>({runId:typeof e.runId=="string"?e.runId:void 0,evidenceId:typeof e.evidenceId=="string"?e.evidenceId:void 0,runStatus:typeof e.runStatus=="string"?e.runStatus:void 0,runKind:typeof e.runKind=="string"?e.runKind:void 0,runProject:typeof e.runProject=="string"?e.runProject:void 0,runWindow:typeof e.runWindow=="string"?e.runWindow:void 0,runQuery:typeof e.runQuery=="string"?e.runQuery:void 0})}),E6=kt({getParentRoute:()=>Jt,path:"/",component:n5,beforeLoad:({context:e})=>{const n=e.queryClient.getQueryData(Vi({client:te}));if(n&&n.length===0)throw Sp({to:"/setup"})}}),O6=kt({getParentRoute:()=>Jt,path:"/projects",component:m6}),D6=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,Gn=kt({getParentRoute:()=>Jt,path:"/projects/$projectName",component:()=>p.jsx(Qf,{}),beforeLoad:async({context:e,params:n,location:i})=>{const r=n.projectName;if(!D6.test(r))return;let l=e.queryClient.getQueryData(Vi({client:te}));if(!l)try{l=await e.queryClient.ensureQueryData(Hc({client:te}))}catch{return}const c=l.find(d=>d.id===r);if(c)throw Sp({to:i.pathname.replace(`/projects/${r}`,`/projects/${encodeURIComponent(c.name)}`),replace:!0})}}),z6=kt({getParentRoute:()=>Gn,path:"/",component:()=>p.jsx(Jn,{tab:"overview"})}),R6=kt({getParentRoute:()=>Gn,path:"/search-console",component:()=>p.jsx(Jn,{tab:"search-console"})}),M6=kt({getParentRoute:()=>Gn,path:"/local",component:()=>p.jsx(Jn,{tab:"local"})}),B6=kt({getParentRoute:()=>Gn,path:"/discovery",component:()=>p.jsx(Jn,{tab:"discovery"})}),L6=kt({getParentRoute:()=>Gn,path:"/report",component:()=>p.jsx(Jn,{tab:"report"})}),q6=kt({getParentRoute:()=>Gn,path:"/activity",component:()=>p.jsx(Jn,{tab:"activity"})}),U6=kt({getParentRoute:()=>Gn,path:"/backlinks",component:()=>p.jsx(Jn,{tab:"backlinks"})}),$6=kt({getParentRoute:()=>Gn,path:"/technical-aeo",component:()=>p.jsx(Jn,{tab:"technical-aeo"})}),I6=kt({getParentRoute:()=>Gn,path:"/history",component:()=>p.jsx(Jn,{tab:"history"})}),P6=kt({getParentRoute:()=>Gn,path:"/settings",component:()=>p.jsx(Jn,{tab:"settings"})}),V6=kt({getParentRoute:()=>Jt,path:"/runs",component:j6}),G6=kt({getParentRoute:()=>Jt,path:"/history",component:N6}),H6=kt({getParentRoute:()=>Jt,path:"/settings",component:k6,beforeLoad:({context:e})=>{}}),K6=kt({getParentRoute:()=>Jt,path:"/setup",component:x6,beforeLoad:({context:e})=>{const n=e.queryClient.getQueryData(Vi({client:te}));if(n&&n.length>0)throw Sp({to:"/"})}}),Q6=kt({getParentRoute:()=>Jt,path:"/backlinks",component:A6}),Z6=kt({getParentRoute:()=>Jt,path:"/traffic",component:C6}),Y6=kt({getParentRoute:()=>Jt,path:"/traffic/$projectName/$sourceId",component:_6}),F6=kt({getParentRoute:()=>Jt,path:"*",component:w6}),X6=Jt.addChildren([E6,O6,Gn.addChildren([z6,R6,M6,B6,L6,q6,U6,$6,I6,P6]),V6,G6,H6,K6,Q6,Z6,Y6,F6]);function J6(){return typeof window<"u"&&window.__CANONRY_CONFIG__?.basePath?window.__CANONRY_CONFIG__.basePath:"/"}const s0=J6(),W6=s0==="/"?"":s0.replace(/\/$/,"");function eq(e,n){return Pj({routeTree:X6,basepath:W6||"/",context:{queryClient:e},...n?.initialEntries})}const tq=6e4;function nq(){const[e,n]=q.useState(Tf()?"ready":"checking"),[i,r]=q.useState(""),[l,c]=q.useState(""),[d,h]=q.useState(null),[g,b]=q.useState(!1),[x,w]=q.useState(!1),N=q.useRef(null),C=q.useRef(null),D=()=>{if(!N.current){const R=mC();C.current=R,N.current=eq(R)}return{queryClient:C.current,router:N.current}};q.useEffect(()=>{if(Tf())return;let R=!1;return Mb().then(G=>{R||(G.authenticated?n("ready"):n(G.setupRequired?"setup":"login"))}).catch(G=>{R||(h(G instanceof Error?G.message:"Failed to reach the Canonry API"),n("login"))}),()=>{R=!0}},[]),q.useEffect(()=>{if(e!=="ready"||Tf())return;const R=setInterval(()=>{Mb().then(G=>{G.authenticated||(w(!0),n(G.setupRequired?"setup":"login"))}).catch(()=>{})},tq);return Rb(()=>{w(!0),n("login")}),()=>{clearInterval(R),Rb(null)}},[e]);const A=async R=>{if(R.preventDefault(),!i.trim()||i.trim().length<8){h("Password must be at least 8 characters");return}if(i!==l){h("Passwords do not match");return}b(!0),h(null);try{if(!(await HA(i.trim())).authenticated){h("Setup failed");return}r(""),c(""),w(!1),n("ready")}catch(G){h(G instanceof In||G instanceof Error?G.message:"Setup failed")}finally{b(!1)}},E=async R=>{if(R.preventDefault(),!!i.trim()){b(!0),h(null);try{if(!(await KA(i.trim())).authenticated){h("Incorrect password");return}r(""),w(!1),n("ready")}catch(G){h(G instanceof In||G instanceof Error?G.message:"Authentication failed")}finally{b(!1)}}};if(e==="ready"){const{queryClient:R,router:G}=D();return p.jsx(Vj,{client:R,children:p.jsx(Gj,{router:G})})}return p.jsx("div",{className:"min-h-screen bg-bg px-4 py-8",children:p.jsx("div",{className:"mx-auto flex min-h-[calc(100vh-4rem)] max-w-md items-center justify-center",children:p.jsx(Tn,{className:"surface-card w-full",children:e==="checking"?p.jsx(hc,{className:"py-8",children:p.jsx("p",{className:"supporting-copy text-center",children:"Connecting to Canonry…"})}):e==="setup"?p.jsxs(p.Fragment,{children:[p.jsxs(dp,{children:[p.jsx("p",{className:"eyebrow eyebrow-soft",children:"First-time setup"}),p.jsx(fp,{children:"Create a dashboard password"}),p.jsx(pp,{children:"Choose a password to protect the Canonry dashboard. You will use this to sign in on future visits."})]}),p.jsx(hc,{children:p.jsxs("form",{className:"space-y-4",onSubmit:_n(A),children:[p.jsxs("label",{className:"block space-y-1.5",children:[p.jsx("span",{className:"text-xs font-medium text-secondary",children:"Password"}),p.jsx("input",{autoFocus:!0,className:"w-full rounded-md border border-base bg-bg px-3 py-2 text-sm text-heading outline-none transition focus:border-mono-600",type:"password",value:i,onChange:R=>r(R.target.value),placeholder:"At least 8 characters"})]}),p.jsxs("label",{className:"block space-y-1.5",children:[p.jsx("span",{className:"text-xs font-medium text-secondary",children:"Confirm password"}),p.jsx("input",{className:"w-full rounded-md border border-base bg-bg px-3 py-2 text-sm text-heading outline-none transition focus:border-mono-600",type:"password",value:l,onChange:R=>c(R.target.value),placeholder:"Re-enter password"})]}),d?p.jsx("p",{className:"text-sm text-negative-400",children:d}):null,p.jsx(Ie,{type:"submit",disabled:g||!i.trim()||!l.trim(),children:g?"Setting up…":"Create password & open dashboard"})]})})]}):p.jsxs(p.Fragment,{children:[p.jsxs(dp,{children:[p.jsx("p",{className:"eyebrow eyebrow-soft",children:"Dashboard access"}),p.jsx(fp,{children:"Sign in to Canonry"}),p.jsx(pp,{children:"Enter your dashboard password to continue."})]}),p.jsxs(hc,{children:[x?p.jsx("p",{className:"mb-4 rounded-md border border-caution bg-caution-soft px-3 py-2 text-sm text-caution",children:"Your session expired — please sign in again."}):null,p.jsxs("form",{className:"space-y-4",onSubmit:_n(E),children:[p.jsxs("label",{className:"block space-y-1.5",children:[p.jsx("span",{className:"text-xs font-medium text-secondary",children:"Password"}),p.jsx("input",{autoFocus:!0,className:"w-full rounded-md border border-base bg-bg px-3 py-2 text-sm text-heading outline-none transition focus:border-mono-600",type:"password",value:i,onChange:R=>r(R.target.value),placeholder:"Dashboard password"})]}),d?p.jsx("p",{className:"text-sm text-negative-400",children:d}):null,p.jsx(Ie,{type:"submit",disabled:g||!i.trim(),children:g?"Signing in…":"Open dashboard"})]})]})]})})})})}const xx=document.getElementById("root");if(!xx)throw new Error("Expected #root element for web app bootstrap.");Xj.createRoot(xx).render(p.jsx(q.StrictMode,{children:p.jsx(nq,{})}));export{e$ as $,DU as A,Ie as B,kc as C,BU as D,vq as E,HU as F,bU as G,QU as H,po as I,ZU as J,Tq as K,_q as L,Oq as M,Ft as N,Uq as O,TB as P,XU as Q,JU as R,y3 as S,Cn as T,zq as U,YU as V,FU as W,KU as X,Eq as Y,Rq as Z,WU as _,O$ as a,gq as a$,o$ as a0,a$ as a1,s$ as a2,i$ as a3,r$ as a4,aC as a5,dm as a6,Ce as a7,n$ as a8,c1 as a9,A$ as aA,C$ as aB,Mq as aC,Vi as aD,Bq as aE,cm as aF,_$ as aG,E$ as aH,T$ as aI,O3 as aJ,M$ as aK,O0 as aL,R0 as aM,v$ as aN,GU as aO,NU as aP,b$ as aQ,jU as aR,Qq as aS,$$ as aT,CU as aU,kU as aV,_U as aW,TU as aX,wU as aY,AU as aZ,yq as a_,Na as aa,t$ as ab,GD as ac,HD as ad,xU as ae,SU as af,mU as ag,sU as ah,dU as ai,fU as aj,In as ak,pU as al,lq as am,D0 as an,RU as ao,GC as ap,WC as aq,zM as ar,vc as as,gU as at,hU as au,Jf as av,S$ as aw,Dq as ax,vU as ay,k$ as az,Op as b,ar as b$,hq as b0,Zq as b1,xq as b2,UU as b3,wv as b4,qU as b5,wq as b6,jq as b7,LU as b8,Nq as b9,XA as bA,d$ as bB,Gq as bC,Vq as bD,f$ as bE,c$ as bF,zU as bG,$q as bH,Iq as bI,Pq as bJ,Hq as bK,Xs as bL,um as bM,R$ as bN,Yc as bO,mm as bP,PU as bQ,VU as bR,QA as bS,DA as bT,oq as bU,Sq as bV,Lq as bW,qq as bX,Fc as bY,hm as bZ,Kq as b_,kq as ba,Cq as bb,Aq as bc,Eo as bd,Hc as be,vL as bf,N0 as bg,IU as bh,b6 as bi,Yt as bj,UA as bk,w3 as bl,bq as bm,fq as bn,pq as bo,z$ as bp,uq as bq,dq as br,cq as bs,IA as bt,mq as bu,_3 as bv,U$ as bw,L3 as bx,l$ as by,u$ as bz,nt as c,Nv as c0,aU as c1,rU as c2,lU as c3,cU as c4,iU as c5,oU as c6,uU as c7,EB as c8,C1 as c9,MB as ca,_1 as cb,T1 as cc,qC as cd,nU as ce,$b as cf,j$ as cg,EU as ch,OU as ci,im as cj,$U as ck,rr as cl,x$ as cm,N$ as cn,tU as co,Wq as cp,eU as cq,Jq as cr,w$ as cs,lD as d,D$ as e,MU as f,Tn as g,Mv as h,_A as i,_n as j,yU as k,p$ as l,te as m,m$ as n,h$ as o,y$ as p,g$ as q,Yq as r,Xq as s,v3 as t,gm as u,Fq as v,B$ as w,L$ as x,q$ as y,up as z};