@canonry/canonry 5.30.2 → 5.33.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/assets/{AuditHistoryPanel-8GPJdEWL.js → AuditHistoryPanel-CcCIqJzU.js} +1 -1
- package/assets/assets/{BacklinksPage-8-KPXFtA.js → BacklinksPage-B4r9SLIP.js} +1 -1
- package/assets/assets/{HistoryPage-CKgF71m5.js → HistoryPage-DIpbpqWc.js} +1 -1
- package/assets/assets/MeasurementPropertyPage-BF93li8O.js +1 -0
- package/assets/assets/{ProjectPage-BPtdO-Gp.js → ProjectPage-CjadJKsG.js} +7 -7
- package/assets/assets/{RunRow-C3CRRfb4.js → RunRow-C-d8luIA.js} +1 -1
- package/assets/assets/{RunsPage-BvCCjtqM.js → RunsPage-DEbjaNYY.js} +1 -1
- package/assets/assets/{SettingsPage-B1QuP6Cv.js → SettingsPage-B5h3wM7i.js} +1 -1
- package/assets/assets/{SiteHealthSection-DgM3aTd-.js → SiteHealthSection-Cj2lo1GY.js} +3 -3
- package/assets/assets/{TrafficPage-DEUDhBXG.js → TrafficPage-CFDh9Rx4.js} +1 -1
- package/assets/assets/{TrafficSourceDetailPage-gpgLsGA1.js → TrafficSourceDetailPage-psddSEHZ.js} +1 -1
- package/assets/assets/{extract-error-message-CH4G5kw6.js → extract-error-message-BbHnZTOx.js} +1 -1
- package/assets/assets/{index-B2qeAPfR.js → index-CiWV331j.js} +24 -24
- package/assets/assets/index-DX5M4MHr.css +1 -0
- package/assets/assets/{react-sigma_core.esm.min-CG4hSMQ3.js → react-sigma_core.esm.min-6EgecOc3.js} +1 -1
- package/assets/assets/v2-overview-adapter-0pVxmjG8.js +1 -0
- package/assets/index.html +2 -2
- package/dist/{chunk-YVWYQBXW.js → chunk-AQFRQTKY.js} +2 -2
- package/dist/{chunk-WZL73LY3.js → chunk-G3CMWO26.js} +2 -2
- package/dist/{chunk-7YS62CJ4.js → chunk-GIKWL2BQ.js} +62 -28
- package/dist/{chunk-RCX6I3DX.js → chunk-SJX7XJB6.js} +2 -1
- package/dist/{chunk-NEP2PJ2T.js → chunk-UDEZZMV5.js} +3 -3
- package/dist/{chunk-7YRGVXR5.js → chunk-XICZEXE5.js} +153 -70
- package/dist/{chunk-DFIK6IPP.js → chunk-Y23FQK6O.js} +1 -1
- package/dist/cli.js +14 -8
- package/dist/{demo-server-ERFY4Q2P.js → demo-server-G4BFXA6G.js} +4 -4
- package/dist/index.js +6 -6
- package/dist/{intelligence-service-PULUYOPR.js → intelligence-service-FVOFIJP3.js} +2 -2
- package/dist/mcp.js +4 -4
- package/package.json +11 -12
- package/assets/assets/MeasurementPropertyPage-nfGYHl6C.js +0 -1
- package/assets/assets/index-D0bY1wpI.css +0 -1
- package/assets/assets/v2-overview-adapter-QNwqt0UG.js +0 -1
package/assets/assets/{react-sigma_core.esm.min-CG4hSMQ3.js → react-sigma_core.esm.min-6EgecOc3.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-Cj2lo1GY.js";import"./index-CiWV331j.js";import"./vendor-radix-twS1M3FF.js";import"./vendor-recharts-llkUFBGR.js";import"./vendor-lucide-N6vOpZmh.js";import"./vendor-markdown-B4giJcws.js";import"./vendor-yaml-GWJz5H2G.js";import"./ChartPrimitives-B5okB5g-.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 a}from"./vendor-tanstack-ZXXkndVj.js";import{K as ie,fB as oe,B as le,aV as ue}from"./index-CiWV331j.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 Ke="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 a.jsxs("div",{className:"mt-3 flex flex-wrap items-center gap-x-3",children:[a.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}),a.jsx("span",{role:"status",className:"text-sm text-secondary",children:r==="copied"?B.copied:r==="failed"?B.failed:""})]})}const Ae=j.memo(function({children:r,headingLevel:o=4,copyable:c=!1,highlightGroups:d,previewLength:p}){return a.jsxs("div",{className:"answer-markdown",children:[a.jsx(ce,{remarkPlugins:[[fe,{headingLevel:o}],[me,{previewLength:p,highlight:!!d?.length}]],components:{p:({children:n})=>a.jsx("p",{className:"mb-3 whitespace-pre-wrap last:mb-0",children:n}),ul:({children:n})=>a.jsx("ul",{className:"mb-3 ml-5 list-disc space-y-1",children:n}),ol:({children:n,start:s})=>a.jsx("ol",{start:s,className:"mb-3 ml-5 list-decimal space-y-1",children:n}),pre:({children:n})=>a.jsx("pre",{className:"mb-3 overflow-x-auto whitespace-pre-wrap",children:n}),span:({children:n})=>a.jsx("span",{children:typeof n=="string"&&d?n.split(/(https?:\/\/[^\s<>]+)/i).map((s,f)=>f%2?s:a.jsx(j.Fragment,{children:oe(s,d)},f)):n}),a:({children:n,href:s})=>{const f=ie(s);return f?a.jsx("a",{href:f,target:"_blank",rel:"noopener noreferrer",className:"text-link underline",children:n}):a.jsx("span",{children:n})},img:({alt:n})=>a.jsx("span",{children:n})},children:r}),c&&r.trim()?a.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",D="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,R={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 Se({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),i=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(" · "),T=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},K=(g?[]:l?y.filter(t=>x?U(t):t.parentGroupIds?.includes(l.id)):x?y:ne).filter(T),A=s.find(t=>t.kind==="market"&&t.id===(c??(r.kind==="market"?r.id:void 0))),H=l&&A&&(l.marketKeys?.includes(A.id)||A.parentGroupIds?.includes(l.id))?A.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(T),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)))&&T(t)),z=l||g?[]:s.filter(t=>t.kind==="project"&&T(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)},q=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]},ae=()=>{const t=r.kind==="group"?h.get(r.id):void 0,u=h.get(A?.parentGroupIds?.[0]??""),m=(r.parentGroupIds??[]).flatMap(S=>{const w=h.get(S);return w?[q(w)]:[]}),v=m.find(S=>S.at(-1)===l?.id)??m.sort((S,w)=>w.length-S.length)[0]??[],Z=u?q(u):r.marketKeys?.length?[]:v;k(t?q(t):Z),$(r.kind==="property"&&Z.length===0&&y.length>0),b("")},Y=t=>{k(q(t)),$(!1),b(""),I.current?.focus()},P=(t,u=E(t))=>a.jsxs("div",{className:"flex items-stretch",children:[a.jsxs("button",{type:"button",className:D,"aria-label":t.kind==="group"&&!n?R.browse(E(t)):R.select(E(t)),"aria-current":r.kind===t.kind&&r.id===t.id?"true":void 0,onClick:()=>t.kind==="group"&&!n?Y(t):se(t),children:[a.jsxs("span",{className:"min-w-0 break-words",children:[u,x&&O(t)?a.jsx("span",{className:"block text-[13px] text-secondary",children:O(t)}):null]}),a.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))?a.jsx("button",{type:"button","aria-label":R.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:()=>Y(t),children:a.jsx(J,{size:18,"aria-hidden":"true"})}):null]},`${t.kind}:${t.id}`),G=(t,u)=>u.length>0?a.jsxs("section",{"aria-label":t,className:"mt-2",children:[a.jsx("h3",{className:"px-2 py-2 text-[13px] font-medium text-secondary",children:t}),u.map(m=>P(m))]}):null,Q=(t,u,m)=>u.length>0?a.jsxs("details",{open:m,className:"mt-2 border-y border-default",children:[a.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=>P(v))]},`${l?.id??"root"}:${t}`):null;return a.jsxs("div",{className:"min-w-0",children:[a.jsx("span",{id:`${i}-label`,className:p==="sr-only"?"sr-only":"mb-1 block text-sm font-medium text-heading",children:d}),a.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:[a.jsxs("summary",{id:`${i}-value`,"aria-labelledby":`${i}-label ${i}-value`,className:`${X} visibility-scope-trigger`,onClick:()=>{C.current?.open||ae()},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?R.allMarkets:"Property")}`:r.kind==="market"?" · Market":""}`,a.jsx(de,{size:16,"aria-hidden":"true",className:"shrink-0 text-secondary"})]}),a.jsxs("div",{className:"visibility-scope-menu",children:[l||g?a.jsxs("div",{className:"mb-2 border-b border-default pb-2",children:[a.jsx("button",{type:"button",className:D,"aria-label":`Back to ${F?.label??"all groups"}`,onClick:()=>{k(N.slice(0,-1)),$(!1),b(""),I.current?.focus()},children:a.jsxs("span",{className:"flex items-center gap-1",children:[a.jsx(pe,{size:16,"aria-hidden":"true"}),F?.label??"All groups"]})}),a.jsx("p",{className:"px-2 py-1 text-sm font-medium text-heading","aria-live":"polite",children:l?.label??"All properties"})]}):null,a.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)}),a.jsxs("div",{className:"mt-2 max-h-80 overflow-y-auto",children:[n&&l&&!x?P(l,"All properties in this group"):null,z.map(t=>P(t)),l&&!x?Q("Subgroups",K,!0):G(l?"Subgroups":"Groups",K),x?G("Properties",V):Q(l&&K.length>0?"All properties":"Properties",V,!l||K.length===0),G("Markets",W),!l&&!g&&!x&&y.length>0&&_.length>0?a.jsxs("button",{type:"button",className:`${D} mt-2 border-t border-default`,"aria-label":R.browseAll,onClick:()=>{$(!0),I.current?.focus()},children:[a.jsx("span",{children:"All properties"}),a.jsx(J,{size:18,"aria-hidden":"true"})]}):null,x&&K.length+V.length+W.length+z.length===0?a.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}}}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 Re({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(i=>[i.stableKey,i])),s=new Map(p.querySnapshots.map(i=>[i.queryId,i.queryText])),f=new Map;for(const i of p.assignments){if(e.queryClass!=="all"&&i.queryClass!==e.queryClass)continue;const y=s.get(i.queryId);if(!y)continue;const h=f.get(i.targetKey)??new Set;h.add(y),f.set(i.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 i of p.groups)for(const y of i.targetKeys)g.has(y)||g.set(y,i.label);const $=e.properties.items.map(i=>{const y=n.get(i.targetKey),h=k.get(i.targetKey)??[];return{id:i.targetKey,name:i.label,mentionCoverage:M(i.mentionCoverage),citationCoverage:M(i.citationCoverage),status:Ce(i),providers:i.providers?.map(l=>({provider:l.provider,mentionCoverage:M(l.mentionCoverage),citationCoverage:M(l.citationCoverage)})),market:g.get(i.targetKey),assignedQueries:[...f.get(i.targetKey)??[]],urls:y?.urlMatchers.map(ye)??[],evidence:h,evidenceState:N,historical:h.some(l=>l.historical)}}),C=e.namedShareOfVoice?.entries.map(i=>({name:i.label,coverage:{numerator:i.credits,denominator:e.namedShareOfVoice.denominator}})),I=e.properties.items.flatMap(i=>i.flags>0?[{id:`property:${i.targetKey}`,property:i.label,summary:`${i.flags} ${i.flags===1?"result needs":"results need"} review.`,tone:"caution",count:i.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(i=>({id:i.stableKey,label:i.label})),...re(e)?{nextActionText:re(e)}:{},flaggedResultsTotal:e.flags.total,flaggedResults:I}}export{Ae as A,R as M,Se as V,Ke as a,Ee as b,Re as c,ye as m};
|
package/assets/index.html
CHANGED
|
@@ -12,14 +12,14 @@
|
|
|
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-CiWV331j.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-llkUFBGR.js">
|
|
19
19
|
<link rel="modulepreload" crossorigin href="./assets/vendor-lucide-N6vOpZmh.js">
|
|
20
20
|
<link rel="modulepreload" crossorigin href="./assets/vendor-markdown-B4giJcws.js">
|
|
21
21
|
<link rel="modulepreload" crossorigin href="./assets/vendor-yaml-GWJz5H2G.js">
|
|
22
|
-
<link rel="stylesheet" crossorigin href="./assets/index-
|
|
22
|
+
<link rel="stylesheet" crossorigin href="./assets/index-DX5M4MHr.css">
|
|
23
23
|
</head>
|
|
24
24
|
<body>
|
|
25
25
|
<div id="root"></div>
|
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
siteCrawlGraphNodes,
|
|
6
6
|
siteCrawlPages,
|
|
7
7
|
siteCrawlSnapshots
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-GIKWL2BQ.js";
|
|
9
9
|
import {
|
|
10
10
|
SITE_CRAWL_GRAPH_MAX_EDGES,
|
|
11
11
|
SITE_CRAWL_GRAPH_MAX_NODES,
|
|
@@ -13,7 +13,7 @@ import {
|
|
|
13
13
|
TEMPLATE_LINK_RATIO_THRESHOLD,
|
|
14
14
|
factorStatusFromScore,
|
|
15
15
|
roundPreservingTotal
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-SJX7XJB6.js";
|
|
17
17
|
|
|
18
18
|
// src/site-audit-factors.ts
|
|
19
19
|
function recordedSharePct(factor) {
|
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
PACKAGE_VERSION,
|
|
6
6
|
canonryMcpTools,
|
|
7
7
|
isMachineFormat
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-Y23FQK6O.js";
|
|
9
9
|
import {
|
|
10
10
|
AGENT_PROVIDER_IDS,
|
|
11
11
|
CANONRY_NPM_PACKAGE_URL,
|
|
@@ -49,7 +49,7 @@ import {
|
|
|
49
49
|
skillsClientSchema,
|
|
50
50
|
upgradeCaveatFor,
|
|
51
51
|
upgradeCommandFor
|
|
52
|
-
} from "./chunk-
|
|
52
|
+
} from "./chunk-SJX7XJB6.js";
|
|
53
53
|
|
|
54
54
|
// src/config.ts
|
|
55
55
|
import fs from "fs";
|
|
@@ -866,7 +866,7 @@ import {
|
|
|
866
866
|
wordpressSchemaDeployResultDtoSchema,
|
|
867
867
|
wordpressSchemaStatusResultDtoSchema,
|
|
868
868
|
wordpressStatusDtoSchema
|
|
869
|
-
} from "./chunk-
|
|
869
|
+
} from "./chunk-SJX7XJB6.js";
|
|
870
870
|
|
|
871
871
|
// src/intelligence-service.ts
|
|
872
872
|
import { eq as eq82, desc as desc36, asc as asc15, and as and69, ne as ne14, or as or20, inArray as inArray32, gte as gte22, lte as lte20, isNull as isNull16, sql as sql31, exists } from "drizzle-orm";
|
|
@@ -13504,7 +13504,10 @@ function selectSentimentSources(db, projectId, filters) {
|
|
|
13504
13504
|
const selectedRuns = db.select(sourceRunColumns).from(runs).where(and3(...conditions)).orderBy(desc2(runs.createdAt)).limit(101).all();
|
|
13505
13505
|
if (selectedRuns.length > 100) throw validationError("Selection exceeds 100 runs; narrow the date range.");
|
|
13506
13506
|
if (requestedIds && new Set(selectedRuns.map((row) => row.id)).size !== new Set(requestedIds).size) throw validationError("One or more selected runs are unavailable in this project.");
|
|
13507
|
-
const out = { assessments: [], runIds: selectedRuns.map((row) => row.id), sourceCoverage: { expected: 0, completed: 0 }, skipped: {}, skippedByRun: {} };
|
|
13507
|
+
const out = { assessments: [], runIds: selectedRuns.map((row) => row.id), sourceCoverage: { expected: 0, completed: 0 }, sourceSlotIds: { expected: [], completed: [] }, skipped: {}, skippedByRun: {} };
|
|
13508
|
+
const recordSlots = (runId, slots) => {
|
|
13509
|
+
for (const key of ["expected", "completed"]) out.sourceSlotIds[key].push(...slots[key].map((slot) => pairKey(runId, slot)));
|
|
13510
|
+
};
|
|
13508
13511
|
let currentRunId = "";
|
|
13509
13512
|
const skip = (reason, count4 = 1) => {
|
|
13510
13513
|
out.skipped[reason] = (out.skipped[reason] ?? 0) + count4;
|
|
@@ -13531,6 +13534,7 @@ function selectSentimentSources(db, projectId, filters) {
|
|
|
13531
13534
|
const completedSuperseded = run.status === "superseded" && Boolean(db.select({ sequence: sentimentCompletionReceipts.sequence }).from(sentimentCompletionReceipts).where(and3(eq8(sentimentCompletionReceipts.projectId, projectId), eq8(sentimentCompletionReceipts.runId, run.id))).get());
|
|
13532
13535
|
if (run.status !== "completed" && !completedSuperseded) {
|
|
13533
13536
|
const coverage = selectedSlotCoverage(db, projectId, run, filters, plans);
|
|
13537
|
+
recordSlots(run.id, coverage.slotIds);
|
|
13534
13538
|
out.sourceCoverage.expected += coverage.expected;
|
|
13535
13539
|
out.sourceCoverage.completed += coverage.completed;
|
|
13536
13540
|
skip(run.status === "failed" ? "failed-run" : "incomplete-run");
|
|
@@ -13555,6 +13559,7 @@ function selectSentimentSources(db, projectId, filters) {
|
|
|
13555
13559
|
out.sourceCoverage.completed += slots.executed;
|
|
13556
13560
|
if (!slots.planned || !slots.readable || slots.missing.length > 0 || slots.hasUnboundSnapshot) {
|
|
13557
13561
|
const coverage = selectedSlotCoverage(db, projectId, run, filters, plans);
|
|
13562
|
+
recordSlots(run.id, coverage.slotIds);
|
|
13558
13563
|
out.sourceCoverage.expected = beforeCoverage.expected + coverage.expected;
|
|
13559
13564
|
out.sourceCoverage.completed = beforeCoverage.completed + coverage.completed;
|
|
13560
13565
|
skip("incomplete-run");
|
|
@@ -13626,6 +13631,7 @@ function selectSentimentSources(db, projectId, filters) {
|
|
|
13626
13631
|
out.sourceCoverage.completed += expected.filter((key) => recorded.has(key)).length;
|
|
13627
13632
|
if (!expected.length || expected.some((key) => !recorded.has(key)) || snapshots.length !== expected.length || snapshots.some(({ snapshot, query }) => !expectedSlots.has(simpleSlotKey(query?.queryId, snapshot.provider)))) {
|
|
13628
13633
|
const coverage = selectedSlotCoverage(db, projectId, run, filters, plans);
|
|
13634
|
+
recordSlots(run.id, coverage.slotIds);
|
|
13629
13635
|
out.sourceCoverage.expected = beforeCoverage.expected + coverage.expected;
|
|
13630
13636
|
out.sourceCoverage.completed = beforeCoverage.completed + coverage.completed;
|
|
13631
13637
|
skip("incomplete-run");
|
|
@@ -13658,9 +13664,10 @@ function selectSentimentSources(db, projectId, filters) {
|
|
|
13658
13664
|
});
|
|
13659
13665
|
}
|
|
13660
13666
|
}
|
|
13661
|
-
const selectedSlots = new Set(out.assessments.slice(beforeAssessments).map((item2) => item2.snapshotId))
|
|
13662
|
-
|
|
13663
|
-
out.sourceCoverage.
|
|
13667
|
+
const selectedSlots = [...new Set(out.assessments.slice(beforeAssessments).map((item2) => item2.snapshotId))];
|
|
13668
|
+
recordSlots(run.id, { expected: selectedSlots, completed: selectedSlots });
|
|
13669
|
+
out.sourceCoverage.expected = beforeCoverage.expected + selectedSlots.length;
|
|
13670
|
+
out.sourceCoverage.completed = beforeCoverage.completed + selectedSlots.length;
|
|
13664
13671
|
}
|
|
13665
13672
|
return out;
|
|
13666
13673
|
}
|
|
@@ -13707,7 +13714,8 @@ function indexedPlan(db, projectId, versionId, cache) {
|
|
|
13707
13714
|
}
|
|
13708
13715
|
function selectedSlotCoverage(db, projectId, run, filters, plans) {
|
|
13709
13716
|
const expected = /* @__PURE__ */ new Set(), completed = /* @__PURE__ */ new Set();
|
|
13710
|
-
|
|
13717
|
+
const coverage = () => ({ expected: expected.size, completed: completed.size, slotIds: { expected: [...expected], completed: [...completed] } });
|
|
13718
|
+
if (run.status === "failed") return coverage();
|
|
13711
13719
|
const snapshots = db.select({ queryId: querySnapshots.queryId, queryText: querySnapshots.queryText, provider: querySnapshots.provider, servedModel: querySnapshots.servedModel, measurementExecutionId: querySnapshots.measurementExecutionId }).from(querySnapshots).where(eq8(querySnapshots.runId, run.id)).all();
|
|
13712
13720
|
const count4 = (key, edge, recorded) => {
|
|
13713
13721
|
if (!matchesSentimentEdge(edge, filters)) return;
|
|
@@ -13716,7 +13724,7 @@ function selectedSlotCoverage(db, projectId, run, filters, plans) {
|
|
|
13716
13724
|
};
|
|
13717
13725
|
if (run.measurementPlanVersionId) {
|
|
13718
13726
|
const indexed = indexedPlan(db, projectId, run.measurementPlanVersionId, plans);
|
|
13719
|
-
if (!indexed || filters.revision !== void 0 && indexed.revision !== filters.revision) return
|
|
13727
|
+
if (!indexed || filters.revision !== void 0 && indexed.revision !== filters.revision) return coverage();
|
|
13720
13728
|
const bySlot = /* @__PURE__ */ new Map();
|
|
13721
13729
|
for (const snapshot of snapshots) if (snapshot.measurementExecutionId !== null) keep(bySlot, pairKey(snapshot.measurementExecutionId, snapshot.provider), snapshot);
|
|
13722
13730
|
const scopedTargets = run.measurementScope?.resolvedTargets.length ? new Set(run.measurementScope.resolvedTargets) : null;
|
|
@@ -13733,10 +13741,10 @@ function selectedSlotCoverage(db, projectId, run, filters, plans) {
|
|
|
13733
13741
|
}
|
|
13734
13742
|
}
|
|
13735
13743
|
} else {
|
|
13736
|
-
if (filters.revision !== void 0 || filters.scope && filters.scope !== "project" || filters.marketKey) return
|
|
13744
|
+
if (filters.revision !== void 0 || filters.scope && filters.scope !== "project" || filters.marketKey) return coverage();
|
|
13737
13745
|
const row = db.select({ definition: simpleMeasurementDefinitions.definition }).from(simpleMeasurementDefinitions).where(eq8(simpleMeasurementDefinitions.runId, run.id)).get();
|
|
13738
13746
|
const stored = simpleMeasurementDefinitionSchema.safeParse(row?.definition);
|
|
13739
|
-
if (!stored.success) return
|
|
13747
|
+
if (!stored.success) return coverage();
|
|
13740
13748
|
const sourceQuery = simpleSourceQueries(stored.data);
|
|
13741
13749
|
const bySlot = /* @__PURE__ */ new Map();
|
|
13742
13750
|
for (const snapshot of snapshots) {
|
|
@@ -13749,7 +13757,7 @@ function selectedSlotCoverage(db, projectId, run, filters, plans) {
|
|
|
13749
13757
|
count4(`${query.queryId}:${engine.provider}`, { queryKey: query.queryId, queryText: query.queryText, executionNodeKey: null, queryClass: query.queryClass, propertyKey: run.projectId, groupKeys: [], marketKeys: [], provider: engine.provider, sourceModel: engine.requestedModel, servedModel: snapshot?.servedModel ?? null, context: stored.data.location }, Boolean(snapshot));
|
|
13750
13758
|
}
|
|
13751
13759
|
}
|
|
13752
|
-
return
|
|
13760
|
+
return coverage();
|
|
13753
13761
|
}
|
|
13754
13762
|
function matchesSentimentEdge(edge, filters) {
|
|
13755
13763
|
if (edge.queryClass !== (filters.queryClass ?? "branded")) return false;
|
|
@@ -14154,26 +14162,12 @@ var SentimentService = class {
|
|
|
14154
14162
|
const selections = resolved.map((entry) => entry.selection), sources = resolved.map((entry) => entry.source);
|
|
14155
14163
|
const runIds = selections.flatMap((selection2) => selection2.runId ? [selection2.runId] : []).sort();
|
|
14156
14164
|
const definitions = new Set(selections.flatMap((selection2) => selection2.evaluationDefinitionId ? [selection2.evaluationDefinitionId] : []));
|
|
14157
|
-
const
|
|
14158
|
-
const revisions = new Set(selections.map((selection2) => selection2.revision));
|
|
14159
|
-
const source = { assessments: sources.flatMap((source2) => source2.assessments), runIds, sourceCoverage: { expected: sources.reduce((sum, source2) => sum + source2.sourceCoverage.expected, 0), completed: sources.reduce((sum, source2) => sum + source2.sourceCoverage.completed, 0) }, skipped: sources.reduce((counts2, source2) => {
|
|
14165
|
+
const source = { assessments: sources.flatMap((source2) => source2.assessments), runIds, sourceCoverage: { expected: sources.reduce((sum, source2) => sum + source2.sourceCoverage.expected, 0), completed: sources.reduce((sum, source2) => sum + source2.sourceCoverage.completed, 0) }, sourceSlotIds: { expected: sources.flatMap((source2) => source2.sourceSlotIds.expected), completed: sources.flatMap((source2) => source2.sourceSlotIds.completed) }, skipped: sources.reduce((counts2, source2) => {
|
|
14160
14166
|
for (const [reason2, count4] of Object.entries(source2.skipped)) counts2[reason2] = (counts2[reason2] ?? 0) + count4;
|
|
14161
14167
|
return counts2;
|
|
14162
14168
|
}, {}) };
|
|
14163
14169
|
const selection = { ...selections[0], runId: runIds.length === 1 ? runIds[0] : null, runIds: runIds.length > 1 ? runIds : void 0, evaluationDefinitionId: definitions.size === 1 ? [...definitions][0] : null };
|
|
14164
|
-
|
|
14165
|
-
const subjects = /* @__PURE__ */ new Map(), queries2 = /* @__PURE__ */ new Map();
|
|
14166
|
-
const filter = sourceFilter(query);
|
|
14167
|
-
for (const assessment of source.assessments) {
|
|
14168
|
-
const identity = sentimentHash(assessment.subject), prior = subjects.get(assessment.subject.key);
|
|
14169
|
-
if (prior && prior !== identity) reason ??= "subject-identity-changed";
|
|
14170
|
-
subjects.set(assessment.subject.key, identity);
|
|
14171
|
-
for (const edge of assessment.edges.filter((edge2) => matchesSentimentEdge(edge2, filter))) {
|
|
14172
|
-
const previous = queries2.get(edge.queryKey);
|
|
14173
|
-
if (previous && previous !== edge.queryText) reason ??= "query-identity-changed";
|
|
14174
|
-
queries2.set(edge.queryKey, edge.queryText);
|
|
14175
|
-
}
|
|
14176
|
-
}
|
|
14170
|
+
const reason = incompatibleSelectionReason(selections, source.assessments, sourceFilter(query));
|
|
14177
14171
|
return { selection, items, source, reason, fingerprint: sentimentHash(selections) };
|
|
14178
14172
|
}
|
|
14179
14173
|
/** Incompatible pooled identities replace every score in the response with an unavailable one. */
|
|
@@ -14205,6 +14199,7 @@ var SentimentService = class {
|
|
|
14205
14199
|
overview(projectId, runIds, location) {
|
|
14206
14200
|
const settings = this.settings(projectId);
|
|
14207
14201
|
const configured = settings.enabled && settings.installEnabled;
|
|
14202
|
+
const reads = [];
|
|
14208
14203
|
const headline = (queryClass) => {
|
|
14209
14204
|
if (!configured || !runIds.length) {
|
|
14210
14205
|
const empty = { mode: "simple", scope: "project", queryClass, runId: null, revision: null, evaluationDefinitionId: null };
|
|
@@ -14212,10 +14207,12 @@ var SentimentService = class {
|
|
|
14212
14207
|
return { state: result2.state, reason: result2.reason, provisional: result2.provisional, coverage: result2.coverage, score: result2.score, selection: empty, runIds: [] };
|
|
14213
14208
|
}
|
|
14214
14209
|
const read = this.readSelection(projectId, { mode: "auto", scope: "project", queryClass, runIds, ...location ? { location } : {} });
|
|
14210
|
+
reads.push(read);
|
|
14215
14211
|
const { summary: result } = this.present(read, settings, null);
|
|
14216
14212
|
return { state: result.state, reason: result.reason, provisional: result.provisional, coverage: result.coverage, score: result.score, selection: result.selection, runIds: result.selection.runIds ?? (result.selection.runId ? [result.selection.runId] : []) };
|
|
14217
14213
|
};
|
|
14218
|
-
|
|
14214
|
+
const branded = headline("branded"), nonBrand = headline("non-brand");
|
|
14215
|
+
return { configured, branded, nonBrand, overall: overallSentiment(reads, !configured) };
|
|
14219
14216
|
}
|
|
14220
14217
|
evidence(projectId, query, limit, cursor) {
|
|
14221
14218
|
const { assessmentId, ...sourceSelection } = query;
|
|
@@ -14276,7 +14273,44 @@ var SentimentService = class {
|
|
|
14276
14273
|
};
|
|
14277
14274
|
var jobAttemptJoin = and4(eq9(sentimentJobItems.workItemId, sentimentAttempts.workItemId), eq9(sentimentJobItems.projectId, sentimentAttempts.projectId));
|
|
14278
14275
|
function emptySource() {
|
|
14279
|
-
return { assessments: [], runIds: [], sourceCoverage: { expected: 0, completed: 0 }, skipped: {} };
|
|
14276
|
+
return { assessments: [], runIds: [], sourceCoverage: { expected: 0, completed: 0 }, sourceSlotIds: { expected: [], completed: [] }, skipped: {} };
|
|
14277
|
+
}
|
|
14278
|
+
function incompatibleSelectionReason(selections, assessments, filter) {
|
|
14279
|
+
const definitions = new Set(selections.flatMap((selection) => selection.evaluationDefinitionId ? [selection.evaluationDefinitionId] : []));
|
|
14280
|
+
const modes = new Set(selections.map((selection) => selection.mode));
|
|
14281
|
+
const revisions = new Set(selections.map((selection) => selection.revision));
|
|
14282
|
+
let reason = definitions.size > 1 ? "evaluation-definition-changed" : modes.size > 1 ? "source-mode-changed" : revisions.size > 1 ? "measurement-revision-changed" : null;
|
|
14283
|
+
const subjects = /* @__PURE__ */ new Map(), queries2 = /* @__PURE__ */ new Map();
|
|
14284
|
+
for (const assessment of assessments) {
|
|
14285
|
+
const identity = sentimentHash(assessment.subject), prior = subjects.get(assessment.subject.key);
|
|
14286
|
+
if (prior && prior !== identity) reason ??= "subject-identity-changed";
|
|
14287
|
+
subjects.set(assessment.subject.key, identity);
|
|
14288
|
+
for (const edge of assessment.edges) {
|
|
14289
|
+
if (filter && !matchesSentimentEdge(edge, filter)) continue;
|
|
14290
|
+
const previous = queries2.get(edge.queryKey);
|
|
14291
|
+
if (previous && previous !== edge.queryText) reason ??= "query-identity-changed";
|
|
14292
|
+
queries2.set(edge.queryKey, edge.queryText);
|
|
14293
|
+
}
|
|
14294
|
+
}
|
|
14295
|
+
return reason;
|
|
14296
|
+
}
|
|
14297
|
+
function overallSentiment(reads, disabled) {
|
|
14298
|
+
const assessmentKey = (item2) => JSON.stringify([item2.snapshotId, item2.subject.key]);
|
|
14299
|
+
const assessments = reads.flatMap((read) => read.source.assessments);
|
|
14300
|
+
const eligible = [...new Map(assessments.map((item2) => [assessmentKey(item2), item2])).values()];
|
|
14301
|
+
const selected = [...new Map(reads.flatMap((read) => read.items).map((item2) => [assessmentKey(item2.member), item2])).values()];
|
|
14302
|
+
const slots = {
|
|
14303
|
+
expected: new Set(reads.flatMap((read) => read.source.sourceSlotIds.expected)).size,
|
|
14304
|
+
completed: new Set(reads.flatMap((read) => read.source.sourceSlotIds.completed)).size
|
|
14305
|
+
};
|
|
14306
|
+
const result = scoreAssessments(selected, eligible, { disabled, slots, incomplete: reads.some((read) => Boolean(read.source.skipped["incomplete-run"])) });
|
|
14307
|
+
const reason = reads.find((read) => read.reason)?.reason ?? incompatibleSelectionReason(reads.map((read) => read.selection), assessments);
|
|
14308
|
+
return {
|
|
14309
|
+
...result,
|
|
14310
|
+
...!disabled && reason ? { state: "unsupported", reason, provisional: true, score: aggregateSentiment([]).score } : {},
|
|
14311
|
+
queryClass: "all",
|
|
14312
|
+
runIds: [...new Set(reads.flatMap((read) => read.source.runIds))].sort()
|
|
14313
|
+
};
|
|
14280
14314
|
}
|
|
14281
14315
|
function append2(map, key, value) {
|
|
14282
14316
|
const list = map.get(key);
|
|
@@ -15660,7 +15660,8 @@ var sentimentCoverageSchema = z51.object({ selected: count, eligibleAssessments:
|
|
|
15660
15660
|
var sentimentScoreSchema = z51.object({ favorableRate: rate, mixedRate: rate, unfavorableRate: rate, favorableDisplay: z51.string(), mixedDisplay: z51.string(), unfavorableDisplay: z51.string(), interval: z51.object({ low: z51.number(), high: z51.number() }).strict().nullable(), method: z51.literal("wilson-independent-v1"), limitation: z51.string() }).strict();
|
|
15661
15661
|
var headlineFields = { state: sentimentStateSchema, reason: z51.string().nullable(), provisional: z51.boolean(), coverage: sentimentCoverageSchema, score: sentimentScoreSchema };
|
|
15662
15662
|
var sentimentHeadlineSchema = z51.object({ ...headlineFields, selection: sentimentResolvedSelectionSchema, runIds: z51.array(id) }).strict();
|
|
15663
|
-
var
|
|
15663
|
+
var sentimentOverallHeadlineSchema = z51.object({ ...headlineFields, queryClass: z51.literal("all"), runIds: z51.array(id) }).strict();
|
|
15664
|
+
var sentimentOverviewSchema = z51.object({ configured: z51.boolean(), branded: sentimentHeadlineSchema, nonBrand: sentimentHeadlineSchema, overall: sentimentOverallHeadlineSchema.optional() }).strict();
|
|
15664
15665
|
var sentimentAssessmentSummarySchema = z51.object({
|
|
15665
15666
|
assessmentId: id.nullable(),
|
|
15666
15667
|
sourceSnapshotId: id,
|
|
@@ -4,14 +4,14 @@ import {
|
|
|
4
4
|
installSkills,
|
|
5
5
|
loadConfigRaw,
|
|
6
6
|
saveConfigPatch
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-G3CMWO26.js";
|
|
8
8
|
import {
|
|
9
9
|
PACKAGE_VERSION
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-Y23FQK6O.js";
|
|
11
11
|
import {
|
|
12
12
|
SKILL_MANIFEST_FILENAME,
|
|
13
13
|
SkillsClients
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-SJX7XJB6.js";
|
|
15
15
|
|
|
16
16
|
// src/skills-autosync.ts
|
|
17
17
|
import fs from "fs";
|