@canonry/canonry 7.4.0 → 7.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/assets/{AuditHistoryPanel-DIL5oTHF.js → AuditHistoryPanel-B5aLMnWE.js} +1 -1
- package/assets/assets/{BacklinksPage-BpCURZh8.js → BacklinksPage-Biq1jrqe.js} +1 -1
- package/assets/assets/{HistoryPage-TPbexxzA.js → HistoryPage-CGGkAgnz.js} +1 -1
- package/assets/assets/MeasurementPropertyPage-BwyWGGBg.js +1 -0
- package/assets/assets/ProjectPage-DEnKyD3e.js +8 -0
- package/assets/assets/{RunsPage-Dhu7Qe7B.js → RunsPage-DNBn0Rau.js} +1 -1
- package/assets/assets/{SettingsPage-BCG1QJ07.js → SettingsPage-D3m-BLuf.js} +1 -1
- package/assets/assets/{SiteHealthSection-BXueYSiu.js → SiteHealthSection-CPMu1l-l.js} +3 -3
- package/assets/assets/{TrafficPage-ua9wsccA.js → TrafficPage-BCK_V__i.js} +2 -2
- package/assets/assets/{TrafficSourceDetailPage-pwATnkp8.js → TrafficSourceDetailPage-DaCehUm8.js} +1 -1
- package/assets/assets/{extract-error-message-DJfNdKqh.js → extract-error-message-CqBLzzuR.js} +1 -1
- package/assets/assets/{index-DvWWyhGp.js → index-C2X_UARl.js} +15 -15
- package/assets/assets/{react-sigma_core.esm.min-DnbWY5j_.js → react-sigma_core.esm.min-BvO4SZKT.js} +1 -1
- package/assets/assets/v2-overview-adapter-CgDChBa5.js +1 -0
- package/assets/index.html +1 -1
- package/dist/{chunk-TNLOOXUP.js → chunk-56YOI7QX.js} +2 -2
- package/dist/{chunk-GEKMHZS2.js → chunk-HAWCV4SU.js} +10 -10
- package/dist/{chunk-SWSWCUHS.js → chunk-JTQ4KFIR.js} +64 -31
- package/dist/{chunk-ZP6GF32R.js → chunk-KJIXDPYH.js} +3 -3
- package/dist/{chunk-PXRUWG75.js → chunk-RVM6QJQT.js} +75 -8
- package/dist/{chunk-JU6TPMCJ.js → chunk-VVEMJCC6.js} +2 -2
- package/dist/{chunk-XFVJ6QVE.js → chunk-Y7K5NMNV.js} +2 -2
- package/dist/cli.js +26 -15
- package/dist/{demo-server-INMOE4BA.js → demo-server-V3DDLXND.js} +4 -4
- package/dist/index.js +6 -6
- package/dist/{intelligence-service-IBUS2IND.js → intelligence-service-MZVPWIXL.js} +2 -2
- package/dist/mcp.js +4 -4
- package/package.json +12 -12
- package/assets/assets/MeasurementPropertyPage-H991GW9h.js +0 -1
- package/assets/assets/ProjectPage-l1NAl-9k.js +0 -8
- package/assets/assets/v2-overview-adapter-BIOvZAlo.js +0 -1
package/assets/assets/{react-sigma_core.esm.min-DnbWY5j_.js → react-sigma_core.esm.min-BvO4SZKT.js}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{g as Bt,t as S,r as C}from"./vendor-tanstack-ZXXkndVj.js";import{e as Ht,G as Wt}from"./SiteHealthSection-
|
|
1
|
+
import{g as Bt,t as S,r as C}from"./vendor-tanstack-ZXXkndVj.js";import{e as Ht,G as Wt}from"./SiteHealthSection-CPMu1l-l.js";import"./index-C2X_UARl.js";import"./vendor-radix-twS1M3FF.js";import"./vendor-recharts-D-cUuLZo.js";import"./vendor-lucide-N6vOpZmh.js";import"./vendor-markdown-B4giJcws.js";import"./vendor-yaml-GWJz5H2G.js";import"./ChartPrimitives-CYlrwLJs.js";function Vt(r,n){if(typeof r!="object"||!r)return r;var i=r[Symbol.toPrimitive];if(i!==void 0){var e=i.call(r,n);if(typeof e!="object")return e;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(r)}function ae(r){var n=Vt(r,"string");return typeof n=="symbol"?n:n+""}function A(r,n){if(!(r instanceof n))throw new TypeError("Cannot call a class as a function")}function He(r,n){for(var i=0;i<n.length;i++){var e=n[i];e.enumerable=e.enumerable||!1,e.configurable=!0,"value"in e&&(e.writable=!0),Object.defineProperty(r,ae(e.key),e)}}function L(r,n,i){return n&&He(r.prototype,n),i&&He(r,i),Object.defineProperty(r,"prototype",{writable:!1}),r}function Q(r){return Q=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(n){return n.__proto__||Object.getPrototypeOf(n)},Q(r)}function yt(){try{var r=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch{}return(yt=function(){return!!r})()}function jt(r){if(r===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return r}function Zt(r,n){if(n&&(typeof n=="object"||typeof n=="function"))return n;if(n!==void 0)throw new TypeError("Derived constructors may only return object or undefined");return jt(r)}function I(r,n,i){return n=Q(n),Zt(r,yt()?Reflect.construct(n,i||[],Q(r).constructor):n.apply(r,i))}function xe(r,n){return xe=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(i,e){return i.__proto__=e,i},xe(r,n)}function G(r,n){if(typeof n!="function"&&n!==null)throw new TypeError("Super expression must either be null or a function");r.prototype=Object.create(n&&n.prototype,{constructor:{value:r,writable:!0,configurable:!0}}),Object.defineProperty(r,"prototype",{writable:!1}),n&&xe(r,n)}function qt(r){if(Array.isArray(r))return r}function Yt(r,n){var i=r==null?null:typeof Symbol<"u"&&r[Symbol.iterator]||r["@@iterator"];if(i!=null){var e,t,a,o,s=[],l=!0,h=!1;try{if(a=(i=i.call(r)).next,n===0){if(Object(i)!==i)return;l=!1}else for(;!(l=(e=a.call(i)).done)&&(s.push(e.value),s.length!==n);l=!0);}catch(u){h=!0,t=u}finally{try{if(!l&&i.return!=null&&(o=i.return(),Object(o)!==o))return}finally{if(h)throw t}}return s}}function Se(r,n){(n==null||n>r.length)&&(n=r.length);for(var i=0,e=Array(n);i<n;i++)e[i]=r[i];return e}function Tt(r,n){if(r){if(typeof r=="string")return Se(r,n);var i={}.toString.call(r).slice(8,-1);return i==="Object"&&r.constructor&&(i=r.constructor.name),i==="Map"||i==="Set"?Array.from(r):i==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?Se(r,n):void 0}}function Xt(){throw new TypeError(`Invalid attempt to destructure non-iterable instance.
|
|
2
2
|
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function ee(r,n){return qt(r)||Yt(r,n)||Tt(r,n)||Xt()}var pe={black:"#000000",silver:"#C0C0C0",gray:"#808080",grey:"#808080",white:"#FFFFFF",maroon:"#800000",red:"#FF0000",purple:"#800080",fuchsia:"#FF00FF",green:"#008000",lime:"#00FF00",olive:"#808000",yellow:"#FFFF00",navy:"#000080",blue:"#0000FF",teal:"#008080",aqua:"#00FFFF",darkblue:"#00008B",mediumblue:"#0000CD",darkgreen:"#006400",darkcyan:"#008B8B",deepskyblue:"#00BFFF",darkturquoise:"#00CED1",mediumspringgreen:"#00FA9A",springgreen:"#00FF7F",cyan:"#00FFFF",midnightblue:"#191970",dodgerblue:"#1E90FF",lightseagreen:"#20B2AA",forestgreen:"#228B22",seagreen:"#2E8B57",darkslategray:"#2F4F4F",darkslategrey:"#2F4F4F",limegreen:"#32CD32",mediumseagreen:"#3CB371",turquoise:"#40E0D0",royalblue:"#4169E1",steelblue:"#4682B4",darkslateblue:"#483D8B",mediumturquoise:"#48D1CC",indigo:"#4B0082",darkolivegreen:"#556B2F",cadetblue:"#5F9EA0",cornflowerblue:"#6495ED",rebeccapurple:"#663399",mediumaquamarine:"#66CDAA",dimgray:"#696969",dimgrey:"#696969",slateblue:"#6A5ACD",olivedrab:"#6B8E23",slategray:"#708090",slategrey:"#708090",lightslategray:"#778899",lightslategrey:"#778899",mediumslateblue:"#7B68EE",lawngreen:"#7CFC00",chartreuse:"#7FFF00",aquamarine:"#7FFFD4",skyblue:"#87CEEB",lightskyblue:"#87CEFA",blueviolet:"#8A2BE2",darkred:"#8B0000",darkmagenta:"#8B008B",saddlebrown:"#8B4513",darkseagreen:"#8FBC8F",lightgreen:"#90EE90",mediumpurple:"#9370DB",darkviolet:"#9400D3",palegreen:"#98FB98",darkorchid:"#9932CC",yellowgreen:"#9ACD32",sienna:"#A0522D",brown:"#A52A2A",darkgray:"#A9A9A9",darkgrey:"#A9A9A9",lightblue:"#ADD8E6",greenyellow:"#ADFF2F",paleturquoise:"#AFEEEE",lightsteelblue:"#B0C4DE",powderblue:"#B0E0E6",firebrick:"#B22222",darkgoldenrod:"#B8860B",mediumorchid:"#BA55D3",rosybrown:"#BC8F8F",darkkhaki:"#BDB76B",mediumvioletred:"#C71585",indianred:"#CD5C5C",peru:"#CD853F",chocolate:"#D2691E",tan:"#D2B48C",lightgray:"#D3D3D3",lightgrey:"#D3D3D3",thistle:"#D8BFD8",orchid:"#DA70D6",goldenrod:"#DAA520",palevioletred:"#DB7093",crimson:"#DC143C",gainsboro:"#DCDCDC",plum:"#DDA0DD",burlywood:"#DEB887",lightcyan:"#E0FFFF",lavender:"#E6E6FA",darksalmon:"#E9967A",violet:"#EE82EE",palegoldenrod:"#EEE8AA",lightcoral:"#F08080",khaki:"#F0E68C",aliceblue:"#F0F8FF",honeydew:"#F0FFF0",azure:"#F0FFFF",sandybrown:"#F4A460",wheat:"#F5DEB3",beige:"#F5F5DC",whitesmoke:"#F5F5F5",mintcream:"#F5FFFA",ghostwhite:"#F8F8FF",salmon:"#FA8072",antiquewhite:"#FAEBD7",linen:"#FAF0E6",lightgoldenrodyellow:"#FAFAD2",oldlace:"#FDF5E6",magenta:"#FF00FF",deeppink:"#FF1493",orangered:"#FF4500",tomato:"#FF6347",hotpink:"#FF69B4",coral:"#FF7F50",darkorange:"#FF8C00",lightsalmon:"#FFA07A",orange:"#FFA500",lightpink:"#FFB6C1",pink:"#FFC0CB",gold:"#FFD700",peachpuff:"#FFDAB9",navajowhite:"#FFDEAD",moccasin:"#FFE4B5",bisque:"#FFE4C4",mistyrose:"#FFE4E1",blanchedalmond:"#FFEBCD",papayawhip:"#FFEFD5",lavenderblush:"#FFF0F5",seashell:"#FFF5EE",cornsilk:"#FFF8DC",lemonchiffon:"#FFFACD",floralwhite:"#FFFAF0",snow:"#FFFAFA",lightyellow:"#FFFFE0",ivory:"#FFFFF0"},Ct=new Int8Array(4),be=new Int32Array(Ct.buffer,0,1),$t=new Float32Array(Ct.buffer,0,1),Kt=/^\s*rgba?\s*\(/,Jt=/^\s*rgba?\s*\(\s*([0-9]*)\s*,\s*([0-9]*)\s*,\s*([0-9]*)(?:\s*,\s*(.*)?)?\)\s*$/;function Qt(r){var n=0,i=0,e=0,t=1;if(r[0]==="#")r.length===4?(n=parseInt(r.charAt(1)+r.charAt(1),16),i=parseInt(r.charAt(2)+r.charAt(2),16),e=parseInt(r.charAt(3)+r.charAt(3),16)):(n=parseInt(r.charAt(1)+r.charAt(2),16),i=parseInt(r.charAt(3)+r.charAt(4),16),e=parseInt(r.charAt(5)+r.charAt(6),16)),r.length===9&&(t=parseInt(r.charAt(7)+r.charAt(8),16)/255);else if(Kt.test(r)){var a=r.match(Jt);a&&(n=+a[1],i=+a[2],e=+a[3],a[4]&&(t=+a[4]))}return{r:n,g:i,b:e,a:t}}var J={};for(var le in pe)J[le]=oe(pe[le]),J[pe[le]]=J[le];function Rt(r,n,i,e,t){return be[0]=e<<24|i<<16|n<<8|r,be[0]=be[0]&4278190079,$t[0]}function oe(r){if(r=r.toLowerCase(),typeof J[r]<"u")return J[r];var n=Qt(r),i=n.r,e=n.g,t=n.b,a=n.a;a=a*255|0;var o=Rt(i,e,t,a);return J[r]=o,o}var Ee={};function _t(r){if(typeof Ee[r]<"u")return Ee[r];var n=(r&16711680)>>>16,i=(r&65280)>>>8,e=r&255,t=255,a=Rt(n,i,e,t);return Ee[r]=a,a}function We(r,n,i,e){return i+(n<<8)+(r<<16)}function Ve(r,n,i,e,t,a){var o=Math.floor(i/a*t),s=Math.floor(r.drawingBufferHeight/a-e/a*t),l=new Uint8Array(4);r.bindFramebuffer(r.FRAMEBUFFER,n),r.readPixels(o,s,1,1,r.RGBA,r.UNSIGNED_BYTE,l);var h=ee(l,4),u=h[0],d=h[1],f=h[2],g=h[3];return[u,d,f,g]}function c(r,n,i){return(n=ae(n))in r?Object.defineProperty(r,n,{value:i,enumerable:!0,configurable:!0,writable:!0}):r[n]=i,r}function je(r,n){var i=Object.keys(r);if(Object.getOwnPropertySymbols){var e=Object.getOwnPropertySymbols(r);n&&(e=e.filter(function(t){return Object.getOwnPropertyDescriptor(r,t).enumerable})),i.push.apply(i,e)}return i}function b(r){for(var n=1;n<arguments.length;n++){var i=arguments[n]!=null?arguments[n]:{};n%2?je(Object(i),!0).forEach(function(e){c(r,e,i[e])}):Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(i)):je(Object(i)).forEach(function(e){Object.defineProperty(r,e,Object.getOwnPropertyDescriptor(i,e))})}return r}function ei(r,n){for(;!{}.hasOwnProperty.call(r,n)&&(r=Q(r))!==null;);return r}function Ae(){return Ae=typeof Reflect<"u"&&Reflect.get?Reflect.get.bind():function(r,n,i){var e=ei(r,n);if(e){var t=Object.getOwnPropertyDescriptor(e,n);return t.get?t.get.call(arguments.length<3?r:i):t.value}},Ae.apply(null,arguments)}function wt(r,n,i,e){var t=Ae(Q(r.prototype),n,i);return typeof t=="function"?function(a){return t.apply(i,a)}:t}function ti(r){return r.normalized?1:r.size}function ye(r){var n=0;return r.forEach(function(i){return n+=ti(i)}),n}function xt(r,n,i){var e=r==="VERTEX"?n.VERTEX_SHADER:n.FRAGMENT_SHADER,t=n.createShader(e);if(t===null)throw new Error("loadShader: error while creating the shader");n.shaderSource(t,i),n.compileShader(t);var a=n.getShaderParameter(t,n.COMPILE_STATUS);if(!a){var o=n.getShaderInfoLog(t);throw n.deleteShader(t),new Error(`loadShader: error while compiling the shader:
|
|
3
3
|
`.concat(o,`
|
|
4
4
|
`).concat(i))}return t}function ii(r,n){return xt("VERTEX",r,n)}function ri(r,n){return xt("FRAGMENT",r,n)}function ni(r,n){var i=r.createProgram();if(i===null)throw new Error("loadProgram: error while creating the program.");var e,t;for(e=0,t=n.length;e<t;e++)r.attachShader(i,n[e]);r.linkProgram(i);var a=r.getProgramParameter(i,r.LINK_STATUS);if(!a){var o=r.getProgramInfoLog(i);throw r.deleteProgram(i),new Error("loadProgram: error while linking the program: ".concat(o))}return i}function Ze(r){var n=r.gl,i=r.buffer,e=r.program,t=r.vertexShader,a=r.fragmentShader;n.deleteShader(t),n.deleteShader(a),n.deleteProgram(e),n.deleteBuffer(i)}var qe=`#define PICKING_MODE
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as j,j as i}from"./vendor-tanstack-ZXXkndVj.js";import{Q as ae,eh as oe,B as le,aZ as ue}from"./index-C2X_UARl.js";import{M as ce}from"./vendor-markdown-B4giJcws.js";import{C as de,$ as pe,g as J}from"./vendor-lucide-N6vOpZmh.js";const Ae="Sources",B={copy:"Copy answer",copying:"Copying…",copied:"Copied",failed:"Could not copy. Select and copy the answer above."};function me({previewLength:e,highlight:r}){return o=>{if(e!==void 0&&Number.isFinite(e)){let c=Math.max(0,Math.floor(e));const d={field:"value",omitted:!1},p=n=>{if(n.type==="definition")return!0;if(n.children)return n.children=n.children.filter(p),n.children.length>0;const s=n.type==="image"||n.type==="imageReference"?"alt":"value",f=n[s];if(f===void 0)return c>0;const b=Array.from(f);if(b.length===0)return c>0;if(c===0)return d.omitted=!0,!1;const N=b.length>c,k=b.slice(0,c);if(N&&!/\s/.test(b[c])){let g=k.length-1;for(;g>=0&&!/\s/.test(k[g]);)g--;g>=0&&g>c-40&&(k.length=g)}return d.omitted||=N,n[s]=k.join(""),c=N?0:c-k.length,k.length===0?!1:(d.lastNode=n,d.field=s,!0)};p(o),d.omitted&&(d.lastNode?d.lastNode[d.field]=`${d.lastNode[d.field].trimEnd()}…`:o.children?.push({type:"paragraph",children:[{type:"text",value:"…"}]}))}if(r){const c=d=>{["link","linkReference","code","inlineCode"].includes(d.type)||(d.type==="text"&&(d.data={...d.data,hName:"span"}),d.children?.forEach(c))};c(o)}}}function fe({headingLevel:e}){return r=>{const o=[],c=p=>{p.type==="heading"&&p.depth&&o.push(p),p.children?.forEach(c)};c(r);const d=o.reduce((p,n)=>Math.min(p,n.depth),6);for(const p of o){const n=p.depth-d;p.depth=Math.min(6,e+n),p.data={...p.data,hProperties:{...p.data?.hProperties,"data-answer-heading-level":n+1}}}}}function ge({answer:e}){const[r,o]=j.useState("idle"),c=j.useRef(!1),d=async()=>{if(!c.current){c.current=!0,o("copying");try{await navigator.clipboard.writeText(e),o("copied")}catch{o("failed")}finally{c.current=!1}}};return i.jsxs("div",{className:"mt-3 flex flex-wrap items-center gap-x-3",children:[i.jsx(le,{type:"button",variant:"ghost",className:"min-h-11 px-2","aria-disabled":r==="copying","aria-busy":r==="copying",onClick:()=>{d()},children:r==="copying"?B.copying:B.copy}),i.jsx("span",{role:"status",className:"text-sm text-secondary",children:r==="copied"?B.copied:r==="failed"?B.failed:""})]})}const Se=j.memo(function({children:r,headingLevel:o=4,copyable:c=!1,highlightGroups:d,previewLength:p}){return i.jsxs("div",{className:"answer-markdown",children:[i.jsx(ce,{remarkPlugins:[[fe,{headingLevel:o}],[me,{previewLength:p,highlight:!!d?.length}]],components:{p:({children:n})=>i.jsx("p",{className:"mb-3 whitespace-pre-wrap last:mb-0",children:n}),ul:({children:n})=>i.jsx("ul",{className:"mb-3 ml-5 list-disc space-y-1",children:n}),ol:({children:n,start:s})=>i.jsx("ol",{start:s,className:"mb-3 ml-5 list-decimal space-y-1",children:n}),pre:({children:n})=>i.jsx("pre",{className:"mb-3 overflow-x-auto whitespace-pre-wrap",children:n}),span:({children:n})=>i.jsx("span",{children:typeof n=="string"&&d?n.split(/(https?:\/\/[^\s<>]+)/i).map((s,f)=>f%2?s:i.jsx(j.Fragment,{children:oe(s,d)},f)):n}),a:({children:n,href:s})=>{const f=ae(s);return f?i.jsx("a",{href:f,target:"_blank",rel:"noopener noreferrer",className:"text-link underline",children:n}):i.jsx("span",{children:n})},img:({alt:n})=>i.jsx("span",{children:n})},children:r}),c&&r.trim()?i.jsx(ge,{answer:r},r):null]})}),X="min-h-11 w-full rounded-md border border-default bg-surface px-3 py-2 text-sm text-primary focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-mono-400",G="flex min-h-11 w-full items-center justify-between gap-3 rounded px-2 text-left text-sm text-primary hover:bg-surface-hover focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-mono-400",E=e=>e.kind==="project"?"Whole site":e.label,q={allMarkets:"All markets",browse:e=>`Browse ${e}`,select:e=>`Select ${e}`,browseAll:"Browse all properties"},he=e=>e?.kind==="group"&&e.marketKeys?.length===1?e.marketKeys[0]:void 0,ee=e=>`${e} ${e===1?"property":"properties"}`;function Ke({options:e,selected:r,onSelect:o,marketKey:c,label:d="Measurement scope",labelVisibility:p="visible",allowGroupSelect:n=!0}){const s=[...e].sort((t,u)=>t.label.localeCompare(u.label,void 0,{numeric:!0})||t.id.localeCompare(u.id)),[f,b]=j.useState(""),[N,k]=j.useState([]),[g,$]=j.useState(!1),C=j.useRef(null),I=j.useRef(null),a=j.useId(),y=s.filter(t=>t.kind==="group"),h=new Map(y.map(t=>[t.id,t])),l=h.get(N.at(-1)??""),F=h.get(N.at(-2)??""),x=f.trim().toLocaleLowerCase(),ne=y.filter(t=>!t.parentGroupIds?.some(u=>h.has(u))),_=s.filter(t=>t.kind==="property"),O=t=>(t.parentGroupIds??[]).map(u=>h.get(u)?.label).filter(Boolean).join(" · "),P=t=>`${E(t)} ${O(t)}`.toLocaleLowerCase().includes(x),U=t=>{const u=[...t.parentGroupIds??[]],m=new Set;for(;u.length;){const v=u.pop();if(v===l?.id)return!0;m.has(v)||(m.add(v),u.push(...h.get(v)?.parentGroupIds??[]))}return!1},A=(g?[]:l?y.filter(t=>x?U(t):t.parentGroupIds?.includes(l.id)):x?y:ne).filter(P),S=s.find(t=>t.kind==="market"&&t.id===(c??(r.kind==="market"?r.id:void 0))),H=l&&S&&(l.marketKeys?.includes(S.id)||S.parentGroupIds?.includes(l.id))?S.id:void 0,L=n?H??he(l):void 0,V=(l?_.filter(t=>t.parentGroupIds?.includes(l.id)&&(!L||t.marketKeys?.includes(L))):x||g||y.length===0?_:[]).filter(P),W=s.filter(t=>t.kind!=="market"||g||!n&&!l&&!x&&y.length>0||n&&l?.marketKeys?.length===1&&!x?!1:(l?x?U(t):t.parentGroupIds?.includes(l.id):x||!t.parentGroupIds?.some(m=>h.has(m)))&&P(t)),Y=l||g?[]:s.filter(t=>t.kind==="project"&&P(t));j.useEffect(()=>{const t=u=>{C.current?.open&&u.target instanceof Node&&!C.current.contains(u.target)&&(C.current.open=!1)};return document.addEventListener("pointerdown",t),()=>document.removeEventListener("pointerdown",t)},[]);const se=t=>{C.current&&(C.current.open=!1,C.current.querySelector("summary")?.focus());const u=n?t.kind==="property"?L:t.kind==="group"&&t.id===l?.id?H:void 0:void 0;u?o(t,u):o(t)},T=t=>{const u=[];let m=h.get(t.parentGroupIds?.[0]??"");for(;m&&!u.includes(m.id)&&m.id!==t.id;)u.unshift(m.id),m=h.get(m.parentGroupIds?.[0]??"");return[...u,t.id]},ie=()=>{const t=r.kind==="group"?h.get(r.id):void 0,u=h.get(S?.parentGroupIds?.[0]??""),m=(r.parentGroupIds??[]).flatMap(K=>{const R=h.get(K);return R?[T(R)]:[]}),v=m.find(K=>K.at(-1)===l?.id)??m.sort((K,R)=>R.length-K.length)[0]??[],Z=u?T(u):r.marketKeys?.length?[]:v;k(t?T(t):Z),$(r.kind==="property"&&Z.length===0&&y.length>0),b("")},z=t=>{k(T(t)),$(!1),b(""),I.current?.focus()},w=(t,u=E(t))=>i.jsxs("div",{className:"flex items-stretch",children:[i.jsxs("button",{type:"button",className:G,"aria-label":t.kind==="group"&&!n?q.browse(E(t)):q.select(E(t)),"aria-current":r.kind===t.kind&&r.id===t.id?"true":void 0,onClick:()=>t.kind==="group"&&!n?z(t):se(t),children:[i.jsxs("span",{className:"min-w-0 break-words",children:[u,x&&O(t)?i.jsx("span",{className:"block text-[13px] text-secondary",children:O(t)}):null]}),i.jsx("span",{className:"shrink-0 text-right text-[13px] text-secondary",children:t.kind==="market"?n?"Query context":"Market":t.kind==="property"?"Property":ee(t.targetCount)})]}),n&&t.kind==="group"&&t.id!==l?.id&&s.some(m=>m.parentGroupIds?.includes(t.id))?i.jsx("button",{type:"button","aria-label":q.browse(t.label),title:`Browse ${t.label}`,className:"flex min-h-11 min-w-11 items-center justify-center rounded text-secondary hover:bg-surface-hover focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-mono-400",onClick:()=>z(t),children:i.jsx(J,{size:18,"aria-hidden":"true"})}):null]},`${t.kind}:${t.id}`),D=(t,u)=>u.length>0?i.jsxs("section",{"aria-label":t,className:"mt-2",children:[i.jsx("h3",{className:"px-2 py-2 text-[13px] font-medium text-secondary",children:t}),u.map(m=>w(m))]}):null,Q=(t,u,m)=>u.length>0?i.jsxs("details",{open:m,className:"mt-2 border-y border-default",children:[i.jsxs("summary",{className:"min-h-11 cursor-pointer px-2 py-3 text-sm text-primary focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-mono-400",children:[t," (",u.length,")"]}),u.map(v=>w(v))]},`${l?.id??"root"}:${t}`):null;return i.jsxs("div",{className:"min-w-0",children:[i.jsx("span",{id:`${a}-label`,className:p==="sr-only"?"sr-only":"mb-1 block text-sm font-medium text-heading",children:d}),i.jsxs("details",{ref:C,className:"relative",onToggle:t=>{t.target===t.currentTarget&&t.currentTarget.open&&I.current?.focus()},onKeyDown:t=>{t.key==="Escape"&&(t.preventDefault(),t.currentTarget.open=!1,t.currentTarget.querySelector("summary")?.focus())},children:[i.jsxs("summary",{id:`${a}-value`,"aria-labelledby":`${a}-label ${a}-value`,className:`${X} visibility-scope-trigger`,onClick:()=>{C.current?.open||ie()},children:[`${E(r)}${r.kind==="group"?` · ${ee(r.targetCount)}`:r.kind==="property"?` · ${s.find(t=>t.kind==="market"&&t.id===c)?.label??(r.marketKeys?.length?q.allMarkets:"Property")}`:r.kind==="market"?" · Market":""}`,i.jsx(de,{size:16,"aria-hidden":"true",className:"shrink-0 text-secondary"})]}),i.jsxs("div",{className:"visibility-scope-menu",children:[l||g?i.jsxs("div",{className:"mb-2 border-b border-default pb-2",children:[i.jsx("button",{type:"button",className:G,"aria-label":`Back to ${F?.label??"all groups"}`,onClick:()=>{k(N.slice(0,-1)),$(!1),b(""),I.current?.focus()},children:i.jsxs("span",{className:"flex items-center gap-1",children:[i.jsx(pe,{size:16,"aria-hidden":"true"}),F?.label??"All groups"]})}),i.jsx("p",{className:"px-2 py-1 text-sm font-medium text-heading","aria-live":"polite",children:l?.label??"All properties"})]}):null,i.jsx("input",{ref:I,type:"search","aria-label":"Search scopes",className:X,placeholder:l?"Search within this group":g?"Search properties":"Search groups or properties",value:f,onChange:t=>b(t.target.value)}),i.jsxs("div",{className:"mt-2 max-h-80 overflow-y-auto",children:[n&&l&&!x?w(l,"All properties in this group"):null,Y.map(t=>w(t)),l&&!x?Q("Subgroups",A,!0):D(l?"Subgroups":"Groups",A),x?D("Properties",V):Q(l&&A.length>0?"All properties":"Properties",V,!l||A.length===0),D("Markets",W),!l&&!g&&!x&&y.length>0&&_.length>0?i.jsxs("button",{type:"button",className:`${G} mt-2 border-t border-default`,"aria-label":q.browseAll,onClick:()=>{$(!0),I.current?.focus()},children:[i.jsx("span",{children:"All properties"}),i.jsx(J,{size:18,"aria-hidden":"true"})]}):null,x&&A.length+V.length+W.length+Y.length===0?i.jsx("p",{className:"py-3 text-sm text-secondary",children:"No matching scopes."}):null]})]})]})]})}function Ee(e){const r=e[0];return r?e.every(o=>o.mode===r.mode&&o.scope.kind===r.scope.kind&&o.scope.key===r.scope.key&&o.queryClass===r.queryClass&&o.measurement.displayedRunId===r.measurement.displayedRunId):!0}function M(e){return e.state==="unavailable"?{numerator:null,denominator:null,reason:e.reason}:e.numerator===void 0||e.denominator===void 0||e.denominator<=0?{numerator:null,denominator:null,reason:"not_applicable"}:{numerator:e.numerator,denominator:e.denominator,...e.unattributed===void 0?{}:{unattributed:e.unattributed},...e.unchecked===void 0?{}:{unchecked:e.unchecked}}}function ye(e){return e.kind==="exact"?e.url:e.kind==="prefix"?`https://${e.host}${e.pathPrefix}/*`:`https://${e.host}/*`}function be(e){return e==="assigned"?"this-property":e==="sibling"?"another-property":e==="ownedUnmapped"?"owned-unassigned":e==="external"?"external":e==="ambiguous"?"multiple-properties":"invalid-url"}function xe(e){return e==="assigned"?"positive":e==="external"?"neutral":e==="invalid"?"negative":"caution"}function te(e){return`target:${e.targetKey}:${e.queryId}:${e.executionNodeKey}`}function ke(e,r,o){const c=new Map;if(!r)return c;const d=new Map(e.usageEdges.map(s=>[te(s),s.targetKey])),p=new Map(e.assignments.map(s=>[`${s.targetKey}:${s.queryId}`,s.queryClass])),n=new Map(e.usageEdges.map(s=>[te(s),p.get(`${s.targetKey}:${s.queryId}`)]));for(const s of r.evidence){if(o&&n.get(s.usageEdgeId)!==o)continue;const f=d.get(s.usageEdgeId);if(!f)continue;const b=c.get(f)??[];b.push({id:`${s.observationId}:${s.expectedSlotId}:${s.usageEdgeId}:${s.sourceUrl}`,kind:be(s.classification),query:s.queryText,provider:s.provider,location:s.location,url:s.sourceUrl,tone:xe(s.classification),historical:s.historical||s.bridged}),c.set(f,b)}return c}function Ce(e){if(e.flags>0)return{label:"Review",tone:"caution"};const r=[e.mentionCoverage,e.citationCoverage].filter(o=>o.state==="unavailable").map(o=>o.reason);return r.includes("no_completed_run")?{label:"Not measured",tone:"neutral"}:r.includes("plan_v1")?{label:"Update setup",tone:"caution"}:r.includes("evidence_incomplete")?{label:"Evidence incomplete",tone:"caution"}:r.includes("identity_ambiguous")?{label:ue.ambiguous,tone:"caution"}:r.includes("no_population")?{label:"No queries",tone:"neutral"}:r.includes("not_applicable")?{label:"Not applicable",tone:"neutral"}:{label:"Complete",tone:"positive"}}function je(e){return e==="complete"?{label:"Complete",tone:"positive"}:e==="partial"?{label:"Partial",tone:"caution"}:e==="queued"?{label:"Queued",tone:"neutral"}:e==="running"?{label:"Running",tone:"neutral"}:e==="failed"?{label:"Failed",tone:"negative"}:{label:"Not measured",tone:"neutral"}}function Ne(e){if(!e)return"";const r=new Date(e);return Number.isFinite(r.getTime())?r.toLocaleDateString("en-US",{month:"short",day:"numeric",year:"numeric",timeZone:"UTC"}):""}function re(e){const r=e.nextAction.count??e.flags.total;if(e.nextAction.kind==="review_flags")return`${r} flagged ${r===1?"result needs":"results need"} review.`;if(e.nextAction.kind==="complete_setup")return"Finish setup.";if(e.nextAction.kind==="republish_setup")return"Setup update required.";if(e.nextAction.kind==="run_measurement")return"Ready to measure."}function qe({overview:e,activePlan:r,report:o,reportState:c=o?"ready":"loading",sort:d}){if(r.plan.schemaVersion!==2||e.mode!=="active-v2")throw new Error("The current overview requires an active version-two setup.");if(e.scope.kind!=="all"&&e.scope.kind!=="group")throw new Error("The current overview requires an All Properties or group scope.");const p=r.plan,n=new Map(p.targets.map(a=>[a.stableKey,a])),s=new Map(p.querySnapshots.map(a=>[a.queryId,a.queryText])),f=new Map;for(const a of p.assignments){if(e.queryClass!=="all"&&a.queryClass!==e.queryClass)continue;const y=s.get(a.queryId);if(!y)continue;const h=f.get(a.targetKey)??new Set;h.add(y),f.set(a.targetKey,h)}const b=o?.revision===r.revision&&o.run?.id===e.measurement.displayedRunId?o:null,N=e.measurement.displayedRunId===void 0||b?"ready":c==="error"||o!=null?"error":"loading",k=ke(p,b,e.queryClass==="all"?void 0:e.queryClass),g=new Map;for(const a of p.groups)for(const y of a.targetKeys)g.has(y)||g.set(y,a.label);const $=e.properties.items.map(a=>{const y=n.get(a.targetKey),h=k.get(a.targetKey)??[];return{id:a.targetKey,name:a.label,mentionCoverage:M(a.mentionCoverage),citationCoverage:M(a.citationCoverage),status:Ce(a),providers:a.providers?.map(l=>({provider:l.provider,mentionCoverage:M(l.mentionCoverage),citationCoverage:M(l.citationCoverage)})),market:g.get(a.targetKey),assignedQueries:[...f.get(a.targetKey)??[]],urls:y?.urlMatchers.map(ye)??[],evidence:h,evidenceState:N,historical:h.some(l=>l.historical)}}),C=e.namedShareOfVoice?.entries.map(a=>({name:a.label,coverage:{numerator:a.credits,denominator:e.namedShareOfVoice.denominator}})),I=e.properties.items.flatMap(a=>a.flags>0?[{id:`property:${a.targetKey}`,property:a.label,summary:`${a.flags} ${a.flags===1?"result needs":"results need"} review.`,tone:"caution",count:a.flags}]:[]);return{classReporting:"available",latestMeasurement:{status:je(e.measurement.state),completedSlots:e.measurement.completed,totalSlots:e.measurement.expected,date:Ne(e.measurement.completedAt),includesBridgedHistory:e.measurement.includesHistoricalData===!0},currentView:{scope:e.scope.kind==="group"?{kind:"group",...e.scope.key?{key:e.scope.key}:{}}:{kind:"all"},queryClass:e.queryClass,aggregate:{metrics:{propertiesMentioned:M(e.metrics.propertiesMentioned),mentionCoverage:M(e.metrics.mentionCoverage),citationCoverage:M(e.metrics.citationCoverage)},properties:$,...C?{shareOfVoice:C}:{}},propertyTotal:e.properties.totalEstimate??$.length,outcomes:e.outcomes,nextCursor:e.properties.nextCursor,...d?{sort:d}:{}},availableGroups:p.groups.map(a=>({id:a.stableKey,label:a.label})),...re(e)?{nextActionText:re(e)}:{},flaggedResultsTotal:e.flags.total,flaggedResults:I}}export{Se as A,q as M,Ke as V,Ae as a,Ee as b,qe as c,ye as m};
|
package/assets/index.html
CHANGED
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
<link rel="icon" type="image/png" sizes="32x32" href="./favicon-32.png" />
|
|
13
13
|
<link rel="apple-touch-icon" href="./apple-touch-icon.png" />
|
|
14
14
|
<title>Canonry</title>
|
|
15
|
-
<script type="module" crossorigin src="./assets/index-
|
|
15
|
+
<script type="module" crossorigin src="./assets/index-C2X_UARl.js"></script>
|
|
16
16
|
<link rel="modulepreload" crossorigin href="./assets/vendor-tanstack-ZXXkndVj.js">
|
|
17
17
|
<link rel="modulepreload" crossorigin href="./assets/vendor-radix-twS1M3FF.js">
|
|
18
18
|
<link rel="modulepreload" crossorigin href="./assets/vendor-recharts-D-cUuLZo.js">
|
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
PACKAGE_VERSION,
|
|
6
6
|
canonryMcpTools,
|
|
7
7
|
isMachineFormat
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-VVEMJCC6.js";
|
|
9
9
|
import {
|
|
10
10
|
AGENT_PROVIDER_IDS,
|
|
11
11
|
CANONRY_NPM_PACKAGE_URL,
|
|
@@ -50,7 +50,7 @@ import {
|
|
|
50
50
|
skillsClientSchema,
|
|
51
51
|
upgradeCaveatFor,
|
|
52
52
|
upgradeCommandFor
|
|
53
|
-
} from "./chunk-
|
|
53
|
+
} from "./chunk-RVM6QJQT.js";
|
|
54
54
|
|
|
55
55
|
// src/config.ts
|
|
56
56
|
import fs from "fs";
|
|
@@ -20,20 +20,20 @@ import {
|
|
|
20
20
|
saveConfig,
|
|
21
21
|
saveConfigPatch,
|
|
22
22
|
sentimentInstallReadiness
|
|
23
|
-
} from "./chunk-
|
|
23
|
+
} from "./chunk-56YOI7QX.js";
|
|
24
24
|
import {
|
|
25
25
|
computeFactorAverages,
|
|
26
26
|
deleteSiteCrawlGraphLayout,
|
|
27
27
|
persistSiteCrawlGraphLayout,
|
|
28
28
|
prepareSiteCrawlGraphLayout,
|
|
29
29
|
recordedSharePct
|
|
30
|
-
} from "./chunk-
|
|
30
|
+
} from "./chunk-Y7K5NMNV.js";
|
|
31
31
|
import {
|
|
32
32
|
CanonryMcpToolNames,
|
|
33
33
|
CliError,
|
|
34
34
|
PACKAGE_VERSION,
|
|
35
35
|
canonryMcpTools
|
|
36
|
-
} from "./chunk-
|
|
36
|
+
} from "./chunk-VVEMJCC6.js";
|
|
37
37
|
import {
|
|
38
38
|
CC_CACHE_DIR,
|
|
39
39
|
DUCKDB_SPEC,
|
|
@@ -205,7 +205,7 @@ import {
|
|
|
205
205
|
siteLivenessState,
|
|
206
206
|
toAlertView,
|
|
207
207
|
usageCounters
|
|
208
|
-
} from "./chunk-
|
|
208
|
+
} from "./chunk-JTQ4KFIR.js";
|
|
209
209
|
import {
|
|
210
210
|
AGENT_MEMORY_VALUE_MAX_BYTES,
|
|
211
211
|
AGENT_NONE,
|
|
@@ -411,7 +411,7 @@ import {
|
|
|
411
411
|
visibilityReportRequestSchema,
|
|
412
412
|
winnabilityClassLabel,
|
|
413
413
|
withRetry
|
|
414
|
-
} from "./chunk-
|
|
414
|
+
} from "./chunk-RVM6QJQT.js";
|
|
415
415
|
|
|
416
416
|
// src/runtime-context.ts
|
|
417
417
|
function cliRuntimeContext(env = process.env, stdio = process) {
|
|
@@ -7869,7 +7869,7 @@ function nonBlank(value) {
|
|
|
7869
7869
|
return trimmed ? trimmed : void 0;
|
|
7870
7870
|
}
|
|
7871
7871
|
function resolveBuildCommit(env = process.env) {
|
|
7872
|
-
const embedded = true ? "
|
|
7872
|
+
const embedded = true ? "090fac327b8ec7108bb3084bca06488c05f4df02" : void 0;
|
|
7873
7873
|
return nonBlank(embedded) ?? nonBlank(env.CANONRY_COMMIT);
|
|
7874
7874
|
}
|
|
7875
7875
|
function resolveInstanceIdentity(env = process.env) {
|
|
@@ -8881,7 +8881,7 @@ var JobRunner = class {
|
|
|
8881
8881
|
if (dispatched >= units.length || providerErrors.has(providerName)) continue;
|
|
8882
8882
|
providerErrors.set(
|
|
8883
8883
|
providerName,
|
|
8884
|
-
|
|
8884
|
+
`No ${provider} provider was available to this worker, so ${units.length - dispatched} expected measurement(s) did not run.`
|
|
8885
8885
|
);
|
|
8886
8886
|
}
|
|
8887
8887
|
}
|
|
@@ -9179,7 +9179,7 @@ var JobRunner = class {
|
|
|
9179
9179
|
const unrecorded = db.select({ outcome: providerBatchRequests.outcome, error: providerBatchRequests.error }).from(providerBatchRequests).where(and3(eq3(providerBatchRequests.batchId, batch.id), inArray(providerBatchRequests.outcome, [...UNRECORDED_OUTCOMES]))).orderBy(asc2(providerBatchRequests.executionId)).all();
|
|
9180
9180
|
const first = unrecorded[0];
|
|
9181
9181
|
if (first) {
|
|
9182
|
-
add(batch.provider,
|
|
9182
|
+
add(batch.provider, `Batch answers not recorded: ${unrecorded.length} of ${batch.requestCount}. First: ${first.error ?? first.outcome}`);
|
|
9183
9183
|
}
|
|
9184
9184
|
break;
|
|
9185
9185
|
}
|
|
@@ -9194,7 +9194,7 @@ var JobRunner = class {
|
|
|
9194
9194
|
}
|
|
9195
9195
|
const gaps = /* @__PURE__ */ new Map();
|
|
9196
9196
|
for (const slot of missing) gaps.set(slot.provider, (gaps.get(slot.provider) ?? 0) + 1);
|
|
9197
|
-
for (const [provider, gap] of gaps) add(provider,
|
|
9197
|
+
for (const [provider, gap] of gaps) add(provider, `Expected measurements not run yet: ${gap}.`);
|
|
9198
9198
|
return errors;
|
|
9199
9199
|
}
|
|
9200
9200
|
/**
|
|
@@ -9874,7 +9874,7 @@ var JobRunner = class {
|
|
|
9874
9874
|
for (const slot of state.missing) remaining.set(slot.provider, (remaining.get(slot.provider) ?? 0) + 1);
|
|
9875
9875
|
const providers = {};
|
|
9876
9876
|
for (const [provider, count3] of remaining) {
|
|
9877
|
-
providers[provider] = fresh[provider] ?? previous[provider] ?? { message:
|
|
9877
|
+
providers[provider] = fresh[provider] ?? previous[provider] ?? { message: `Expected measurements not run yet: ${count3}.` };
|
|
9878
9878
|
}
|
|
9879
9879
|
txDb.update(runs).set({ error: serializeRunError({ providers }) }).where(and3(eq3(runs.id, input.runId), eq3(runs.status, "partial"))).run();
|
|
9880
9880
|
}
|
|
@@ -626,6 +626,7 @@ import {
|
|
|
626
626
|
queryTrackingWorkspaceResponseSchema,
|
|
627
627
|
quotaExceeded,
|
|
628
628
|
rankCriticizedProperties,
|
|
629
|
+
rateOverChecked,
|
|
629
630
|
recommendationBriefDtoSchema,
|
|
630
631
|
recommendationExplainRequestSchema,
|
|
631
632
|
recommendationExplanationDtoSchema,
|
|
@@ -795,7 +796,7 @@ import {
|
|
|
795
796
|
wordpressSchemaDeployResultDtoSchema,
|
|
796
797
|
wordpressSchemaStatusResultDtoSchema,
|
|
797
798
|
wordpressStatusDtoSchema
|
|
798
|
-
} from "./chunk-
|
|
799
|
+
} from "./chunk-RVM6QJQT.js";
|
|
799
800
|
|
|
800
801
|
// src/intelligence-service.ts
|
|
801
802
|
import { eq as eq84, desc as desc37, asc as asc15, and as and71, ne as ne15, or as or20, inArray as inArray33, gte as gte22, lte as lte20, isNull as isNull16, sql as sql31, exists as exists2 } from "drizzle-orm";
|
|
@@ -11053,7 +11054,7 @@ function buildRunHistory(runs2, snapshotsByRunId, limit = DEFAULT_RUN_HISTORY_LI
|
|
|
11053
11054
|
}
|
|
11054
11055
|
const totalCount = queryCited.size;
|
|
11055
11056
|
const citedCount = [...queryCited.values()].filter(Boolean).length;
|
|
11056
|
-
const
|
|
11057
|
+
const citationRate2 = percentOf(citedCount, totalCount) ?? 0;
|
|
11057
11058
|
const mentionedCount = [...queryMentioned.values()].filter(Boolean).length;
|
|
11058
11059
|
const mentionRate3 = percentOf(mentionedCount, totalCount) ?? 0;
|
|
11059
11060
|
return {
|
|
@@ -11061,7 +11062,7 @@ function buildRunHistory(runs2, snapshotsByRunId, limit = DEFAULT_RUN_HISTORY_LI
|
|
|
11061
11062
|
createdAt: run.createdAt,
|
|
11062
11063
|
citedCount,
|
|
11063
11064
|
totalCount,
|
|
11064
|
-
citationRate,
|
|
11065
|
+
citationRate: citationRate2,
|
|
11065
11066
|
mentionedCount,
|
|
11066
11067
|
mentionRate: mentionRate3,
|
|
11067
11068
|
status: run.status
|
|
@@ -15731,11 +15732,10 @@ function coverageRate(slots, edges, prepared) {
|
|
|
15731
15732
|
if (slots.length === 0) return { numerator: null, denominator: null, rate: null, reason: "no-population" };
|
|
15732
15733
|
if (!status.complete) return { numerator: null, denominator: null, rate: null, reason: "incomplete" };
|
|
15733
15734
|
const basis = sourceCompleteSlots(slots, prepared);
|
|
15734
|
-
if (basis.length === 0) return { numerator: null, denominator: null, rate: null, reason: "evidence-incomplete" };
|
|
15735
15735
|
const edgeIds = new Set(edges.map((edge) => edge.id));
|
|
15736
15736
|
const assignedSlots = new Set(prepared.evidence.filter((row) => edgeIds.has(row.usageEdgeId) && row.classification === "assigned").map((row) => row.expectedSlotId));
|
|
15737
15737
|
const numerator = basis.filter((slot) => assignedSlots.has(slot.id)).length;
|
|
15738
|
-
return
|
|
15738
|
+
return rateOverChecked(numerator, slots.length, slots.length - basis.length, "unchecked") ?? unavailable("evidence-incomplete");
|
|
15739
15739
|
}
|
|
15740
15740
|
function targetCoverageRate(targetIds, slots, edges, prepared) {
|
|
15741
15741
|
const status = completeness(slots, prepared);
|
|
@@ -15763,9 +15763,7 @@ function mentionRate(target, slots, prepared) {
|
|
|
15763
15763
|
return attributableMentionRate(numerator, slots.length, unattributed);
|
|
15764
15764
|
}
|
|
15765
15765
|
function attributableMentionRate(numerator, answered2, unattributed) {
|
|
15766
|
-
|
|
15767
|
-
if (denominator <= 0) return unavailable("identity-ambiguous");
|
|
15768
|
-
return unattributed > 0 ? { numerator, denominator, rate: numerator / denominator, unattributed } : { numerator, denominator, rate: numerator / denominator };
|
|
15766
|
+
return rateOverChecked(numerator, answered2, unattributed, "unattributed") ?? unavailable("identity-ambiguous");
|
|
15769
15767
|
}
|
|
15770
15768
|
function providersFor(slots) {
|
|
15771
15769
|
return sortedUnique(slots.map((slot) => slot.provider));
|
|
@@ -15879,11 +15877,13 @@ function buildMeasurementOverviewIndexes(input, prepared, onEvidenceIndexed) {
|
|
|
15879
15877
|
slots.push(slot);
|
|
15880
15878
|
slotsByExecutionId.set(slot.executionId, slots);
|
|
15881
15879
|
}
|
|
15880
|
+
const observedSlotIds = /* @__PURE__ */ new Set();
|
|
15882
15881
|
const answeredSlotIds = /* @__PURE__ */ new Set();
|
|
15883
15882
|
const sourceCompleteSlotIds = /* @__PURE__ */ new Set();
|
|
15884
15883
|
const mentionedSlotIdsByTargetId = /* @__PURE__ */ new Map();
|
|
15885
15884
|
const unknownMentionSlotIdsByTargetId = /* @__PURE__ */ new Map();
|
|
15886
15885
|
for (const [slotId, observation] of prepared.observationsBySlot) {
|
|
15886
|
+
observedSlotIds.add(slotId);
|
|
15887
15887
|
if (observation.sourceComplete) sourceCompleteSlotIds.add(slotId);
|
|
15888
15888
|
if (observation.input.answerText === null) continue;
|
|
15889
15889
|
answeredSlotIds.add(slotId);
|
|
@@ -15914,6 +15914,7 @@ function buildMeasurementOverviewIndexes(input, prepared, onEvidenceIndexed) {
|
|
|
15914
15914
|
targetsById,
|
|
15915
15915
|
targetEdgesByTargetId,
|
|
15916
15916
|
slotsByExecutionId,
|
|
15917
|
+
observedSlotIds,
|
|
15917
15918
|
answeredSlotIds,
|
|
15918
15919
|
sourceCompleteSlotIds,
|
|
15919
15920
|
mentionedSlotIdsByTargetId,
|
|
@@ -15968,14 +15969,14 @@ function scopeMentionRate(input, targetIds, slots, answered2, prepared, edges) {
|
|
|
15968
15969
|
}
|
|
15969
15970
|
function indexedScopeCitationRate(slots, edges, indexes) {
|
|
15970
15971
|
if (slots.length === 0) return unavailable("no-population");
|
|
15972
|
+
if (slots.some((slot) => !indexes.observedSlotIds.has(slot.id))) return unavailable("evidence-incomplete");
|
|
15971
15973
|
const basis = slots.filter((slot) => indexes.sourceCompleteSlotIds.has(slot.id));
|
|
15972
|
-
if (basis.length !== slots.length) return unavailable("evidence-incomplete");
|
|
15973
15974
|
const assignedSlots = /* @__PURE__ */ new Set();
|
|
15974
15975
|
for (const edge of edges) {
|
|
15975
15976
|
for (const slotId of indexes.assignedSlotIdsByEdgeId.get(edge.id) ?? []) assignedSlots.add(slotId);
|
|
15976
15977
|
}
|
|
15977
15978
|
const numerator = basis.filter((slot) => assignedSlots.has(slot.id)).length;
|
|
15978
|
-
return
|
|
15979
|
+
return rateOverChecked(numerator, slots.length, slots.length - basis.length, "unchecked") ?? unavailable("evidence-incomplete");
|
|
15979
15980
|
}
|
|
15980
15981
|
function targetMentionRate(targets, slots, answered2, indexes) {
|
|
15981
15982
|
const mentionable = targets?.filter((target) => target.aliases.some((alias2) => words(alias2).length > 0)) ?? [];
|
|
@@ -17720,7 +17721,11 @@ function generationFailure(err, fallbackMessage) {
|
|
|
17720
17721
|
if (err instanceof AppError) return err;
|
|
17721
17722
|
const message = err instanceof Error ? describeError(err) : fallbackMessage;
|
|
17722
17723
|
switch (classifyProviderErrorMessage(message)) {
|
|
17724
|
+
// Billing has no error code of its own on the wire. It is an account
|
|
17725
|
+
// problem the operator fixes in the provider's console, as with a bad key,
|
|
17726
|
+
// and not a limit to wait out; the message names which one it is.
|
|
17723
17727
|
case "PROVIDER_AUTH":
|
|
17728
|
+
case "PROVIDER_BILLING":
|
|
17724
17729
|
return providerAuthError(message);
|
|
17725
17730
|
case "RATE_LIMITED":
|
|
17726
17731
|
return quotaExceeded("provider requests", { message });
|
|
@@ -18416,7 +18421,9 @@ function coverageMetric(rate2) {
|
|
|
18416
18421
|
numerator: rate2.numerator,
|
|
18417
18422
|
denominator: rate2.denominator,
|
|
18418
18423
|
// Answers the mention rate left out because their identity was unresolved.
|
|
18419
|
-
...rate2.unattributed === void 0 ? {} : { unattributed: rate2.unattributed }
|
|
18424
|
+
...rate2.unattributed === void 0 ? {} : { unattributed: rate2.unattributed },
|
|
18425
|
+
// Saved answers the citation rate left out because their source capture was incomplete.
|
|
18426
|
+
...rate2.unchecked === void 0 ? {} : { unchecked: rate2.unchecked }
|
|
18420
18427
|
};
|
|
18421
18428
|
}
|
|
18422
18429
|
function providerRows(property) {
|
|
@@ -18580,6 +18587,10 @@ function measurementOutcomeCounts(rows) {
|
|
|
18580
18587
|
continue;
|
|
18581
18588
|
}
|
|
18582
18589
|
const cited = (citation.numerator ?? citation.value) > 0;
|
|
18590
|
+
if (!cited && citation.unchecked !== void 0) {
|
|
18591
|
+
counts2.notMeasured += 1;
|
|
18592
|
+
continue;
|
|
18593
|
+
}
|
|
18583
18594
|
if (mentioned && cited) counts2.bothSignals += 1;
|
|
18584
18595
|
else if (mentioned) counts2.mentionedOnly += 1;
|
|
18585
18596
|
else if (cited) counts2.citedOnly += 1;
|
|
@@ -25496,7 +25507,9 @@ function coverageMetric2(rate2) {
|
|
|
25496
25507
|
numerator: rate2.numerator,
|
|
25497
25508
|
denominator: rate2.denominator,
|
|
25498
25509
|
// Answers the mention rate left out because their identity was unresolved.
|
|
25499
|
-
...rate2.unattributed === void 0 ? {} : { unattributed: rate2.unattributed }
|
|
25510
|
+
...rate2.unattributed === void 0 ? {} : { unattributed: rate2.unattributed },
|
|
25511
|
+
// Saved answers the citation rate left out because their source capture was incomplete.
|
|
25512
|
+
...rate2.unchecked === void 0 ? {} : { unchecked: rate2.unchecked }
|
|
25500
25513
|
};
|
|
25501
25514
|
}
|
|
25502
25515
|
function countMetric2(rate2) {
|
|
@@ -25954,15 +25967,15 @@ function weakestTie(ranked) {
|
|
|
25954
25967
|
return { summary: null, rows: [] };
|
|
25955
25968
|
}
|
|
25956
25969
|
const mentionRate3 = first.mentionCoverage.value;
|
|
25957
|
-
const
|
|
25958
|
-
const rows = ranked.filter((row) => row.mentionCoverage.state === "available" && row.mentionCoverage.value === mentionRate3 && row.citationCoverage.state === "available" && row.citationCoverage.value ===
|
|
25970
|
+
const citationRate2 = first.citationCoverage.value;
|
|
25971
|
+
const rows = ranked.filter((row) => row.mentionCoverage.state === "available" && row.mentionCoverage.value === mentionRate3 && row.citationCoverage.state === "available" && row.citationCoverage.value === citationRate2);
|
|
25959
25972
|
if (rows.length < 2) return { summary: null, rows: [] };
|
|
25960
25973
|
const namedInstead = tieNamedInstead(rows);
|
|
25961
25974
|
return {
|
|
25962
25975
|
summary: {
|
|
25963
25976
|
count: rows.length,
|
|
25964
25977
|
mentionRate: mentionRate3,
|
|
25965
|
-
citationRate,
|
|
25978
|
+
citationRate: citationRate2,
|
|
25966
25979
|
note: MEASUREMENT_PORTFOLIO_TIE_NOTE,
|
|
25967
25980
|
byMetro: tieByMetro(rows),
|
|
25968
25981
|
namedInstead: namedInstead.rows,
|
|
@@ -26754,8 +26767,27 @@ function targetValues(candidate, targets, targetKey) {
|
|
|
26754
26767
|
}
|
|
26755
26768
|
return { mention: false, citation };
|
|
26756
26769
|
}
|
|
26757
|
-
function citationForCoverage(candidate, targets
|
|
26758
|
-
return candidate.observation?.citationComplete ? targetValues(candidate, targets
|
|
26770
|
+
function citationForCoverage(candidate, targets) {
|
|
26771
|
+
return candidate.observation?.citationComplete ? targetValues(candidate, targets).citation : null;
|
|
26772
|
+
}
|
|
26773
|
+
function citationRate(candidates, isCited) {
|
|
26774
|
+
if (candidates.length === 0) return unavailable4("no-population");
|
|
26775
|
+
let numerator = 0;
|
|
26776
|
+
let unchecked = 0;
|
|
26777
|
+
for (const candidate of candidates) {
|
|
26778
|
+
if (candidate.observation === null) return unavailable4("evidence-incomplete");
|
|
26779
|
+
if (!candidate.observation.citationComplete) {
|
|
26780
|
+
unchecked++;
|
|
26781
|
+
continue;
|
|
26782
|
+
}
|
|
26783
|
+
const cited = isCited(candidate);
|
|
26784
|
+
if (cited === null) return unavailable4("evidence-incomplete");
|
|
26785
|
+
if (cited) numerator++;
|
|
26786
|
+
}
|
|
26787
|
+
return rateOverChecked(numerator, candidates.length, unchecked, "unchecked") ?? unavailable4("evidence-incomplete");
|
|
26788
|
+
}
|
|
26789
|
+
function targetCitationRate(candidates, targets, targetKey) {
|
|
26790
|
+
return citationRate(candidates, (candidate) => targetValues(candidate, targets, targetKey).citation);
|
|
26759
26791
|
}
|
|
26760
26792
|
function mentionRate2(candidates, targets, targetKey) {
|
|
26761
26793
|
const values = candidates.map((candidate) => targetValues(candidate, targets, targetKey));
|
|
@@ -26769,9 +26801,7 @@ function mentionRate2(candidates, targets, targetKey) {
|
|
|
26769
26801
|
unattributed++;
|
|
26770
26802
|
}
|
|
26771
26803
|
}
|
|
26772
|
-
|
|
26773
|
-
if (denominator === 0) return unavailable4("identity-ambiguous");
|
|
26774
|
-
return unattributed > 0 ? { numerator, denominator, rate: numerator / denominator, unattributed } : { numerator, denominator, rate: numerator / denominator };
|
|
26804
|
+
return rateOverChecked(numerator, values.length, unattributed, "unattributed") ?? unavailable4("identity-ambiguous");
|
|
26775
26805
|
}
|
|
26776
26806
|
function answered(candidate) {
|
|
26777
26807
|
return candidate.observation !== null;
|
|
@@ -26786,16 +26816,18 @@ function targetMetrics(candidates, targets, targetKey) {
|
|
|
26786
26816
|
const own = candidates.filter((candidate) => candidate.edges.some((edge) => edge.targetKey === targetKey));
|
|
26787
26817
|
return {
|
|
26788
26818
|
mentionCoverage: mentionRate2(own, targets, targetKey),
|
|
26789
|
-
citationCoverage:
|
|
26819
|
+
citationCoverage: targetCitationRate(own, targets, targetKey)
|
|
26790
26820
|
};
|
|
26791
26821
|
}
|
|
26792
26822
|
function targetPresence(candidates, targets, targetKey) {
|
|
26793
|
-
const
|
|
26823
|
+
const scoped = candidates.filter((candidate) => candidate.edges.some((edge) => edge.targetKey === targetKey));
|
|
26824
|
+
const values = scoped.map((candidate) => targetValues(candidate, targets, targetKey));
|
|
26825
|
+
const citations = scoped.map((candidate, index2) => candidate.observation?.citationComplete === false ? null : values[index2].citation);
|
|
26794
26826
|
const anyKnown = (signals) => signals.includes(true) ? true : signals.length === 0 || signals.includes(null) ? null : false;
|
|
26795
26827
|
return {
|
|
26796
26828
|
targetKey,
|
|
26797
26829
|
mention: anyKnown(values.map((value) => value.mention)),
|
|
26798
|
-
citation: anyKnown(
|
|
26830
|
+
citation: anyKnown(citations),
|
|
26799
26831
|
identityAmbiguous: values.some((value) => value.mentionUnavailableReason === "identity-ambiguous")
|
|
26800
26832
|
};
|
|
26801
26833
|
}
|
|
@@ -26824,7 +26856,7 @@ function coverageSummary(candidates, definition, targets = targetMap(definition)
|
|
|
26824
26856
|
queryCount: new Set(rows.map((candidate) => candidate.slot.queryKey)).size,
|
|
26825
26857
|
answerCount: rows.filter(answered).length,
|
|
26826
26858
|
mentionCoverage: mentionRate2(rows, targets),
|
|
26827
|
-
citationCoverage:
|
|
26859
|
+
citationCoverage: targetCitationRate(rows, targets)
|
|
26828
26860
|
};
|
|
26829
26861
|
}
|
|
26830
26862
|
function summary2(candidates, definition, populationTargetKeys = selectedTargetKeys(candidates)) {
|
|
@@ -26920,15 +26952,12 @@ function competitorRows(candidates) {
|
|
|
26920
26952
|
const observation = candidate.observation;
|
|
26921
26953
|
return observation === null || observation.answerText === null ? null : observation.competitorMentionDomains.includes(domain);
|
|
26922
26954
|
});
|
|
26923
|
-
const citationValues = unique3.map((candidate) => {
|
|
26924
|
-
const observation = candidate.observation;
|
|
26925
|
-
return observation === null || !observation.citationComplete ? null : observation.competitorCitationDomains.includes(domain);
|
|
26926
|
-
});
|
|
26927
26955
|
return {
|
|
26928
26956
|
domain,
|
|
26929
26957
|
answerCount: unique3.filter(answered).length,
|
|
26930
26958
|
mentionCoverage: rate(mentionValues, unique3.length),
|
|
26931
|
-
|
|
26959
|
+
// The Property rule: an unchecked answer leaves both sides of the rate.
|
|
26960
|
+
citationCoverage: citationRate(unique3, (candidate) => candidate.observation.competitorCitationDomains.includes(domain))
|
|
26932
26961
|
};
|
|
26933
26962
|
});
|
|
26934
26963
|
}
|
|
@@ -26968,7 +26997,7 @@ function breakdown(candidates, definition, populationTargetKeys = selectedTarget
|
|
|
26968
26997
|
const groupTargetKeys = new Set(targetKeys);
|
|
26969
26998
|
const own = candidates.map((candidate) => narrowedToTargetKeys(candidate, groupTargetKeys)).filter((candidate) => candidate !== null);
|
|
26970
26999
|
const metrics = mentionRate2(own, targets);
|
|
26971
|
-
const citations =
|
|
27000
|
+
const citations = targetCitationRate(own, targets);
|
|
26972
27001
|
return {
|
|
26973
27002
|
id: group.id,
|
|
26974
27003
|
label: group.label,
|
|
@@ -27596,6 +27625,8 @@ function frozenSimpleRun(run, definition, snapshots, includeEvidence = true) {
|
|
|
27596
27625
|
mentionComplete: snapshot.answerText !== null || snapshot.answerMentioned !== null,
|
|
27597
27626
|
mentionedTargetKeys: mentioned ? ["project"] : [],
|
|
27598
27627
|
citedTargetKeys: snapshot.citationState === "cited" ? ["project"] : [],
|
|
27628
|
+
// Simple citation state comes from the stored cited domains, not from
|
|
27629
|
+
// source-URL capture, so a saved Simple answer is never `unchecked`.
|
|
27599
27630
|
citationComplete: true,
|
|
27600
27631
|
competitorMentionDomains: competitorSignalsForSnapshot.mentioned,
|
|
27601
27632
|
competitorCitationDomains: competitorSignalsForSnapshot.cited,
|
|
@@ -27678,6 +27709,7 @@ function legacySimpleRun(project, run, snapshots, includeEvidence = true) {
|
|
|
27678
27709
|
mentionComplete: snapshot.answerMentioned !== null,
|
|
27679
27710
|
mentionedTargetKeys: snapshot.answerMentioned === true ? ["project"] : [],
|
|
27680
27711
|
citedTargetKeys: snapshot.citationState === "cited" ? ["project"] : [],
|
|
27712
|
+
// Legacy rows carry only the stored citation state (see the frozen-simple note).
|
|
27681
27713
|
citationComplete: true,
|
|
27682
27714
|
competitorMentionDomains: [],
|
|
27683
27715
|
competitorCitationDomains: [],
|
|
@@ -79302,7 +79334,8 @@ async function trafficRoutes(app, opts) {
|
|
|
79302
79334
|
allEvents = drained.events;
|
|
79303
79335
|
} catch (e) {
|
|
79304
79336
|
const msg = describeError(e);
|
|
79305
|
-
|
|
79337
|
+
const credentialRefused = e instanceof VercelLogsApiError && (e.status === 401 || e.status === 403);
|
|
79338
|
+
markFailed(msg, credentialRefused ? "PROVIDER_AUTH" : "PROVIDER_PULL");
|
|
79306
79339
|
throw providerError(`Vercel pull failed: ${msg}`);
|
|
79307
79340
|
}
|
|
79308
79341
|
}
|
|
@@ -4,14 +4,14 @@ import {
|
|
|
4
4
|
installSkills,
|
|
5
5
|
loadConfigRaw,
|
|
6
6
|
saveConfigPatch
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-56YOI7QX.js";
|
|
8
8
|
import {
|
|
9
9
|
PACKAGE_VERSION
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-VVEMJCC6.js";
|
|
11
11
|
import {
|
|
12
12
|
SKILL_MANIFEST_FILENAME,
|
|
13
13
|
SkillsClients
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-RVM6QJQT.js";
|
|
15
15
|
|
|
16
16
|
// src/skills-autosync.ts
|
|
17
17
|
import fs from "fs";
|