@ainyc/canonry 4.193.0 → 4.193.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.
Files changed (26) hide show
  1. package/assets/assets/{AuditHistoryPanel-B5ujKofj.js → AuditHistoryPanel-D5qbrXKZ.js} +1 -1
  2. package/assets/assets/{BacklinksPage-DnJ7tbUQ.js → BacklinksPage-BkQNTtV9.js} +1 -1
  3. package/assets/assets/{HistoryPage-uOpp9NS1.js → HistoryPage-CU2woh-k.js} +1 -1
  4. package/assets/assets/{MeasurementPropertyPage-R-EM27KG.js → MeasurementPropertyPage-D5EhcG4V.js} +1 -1
  5. package/assets/assets/{ProjectPage-L4LCiofR.js → ProjectPage-C6Wg18vZ.js} +1 -1
  6. package/assets/assets/{RunRow-DzldP1Fv.js → RunRow-CYXAUdeG.js} +1 -1
  7. package/assets/assets/{RunsPage-aAn7zPwn.js → RunsPage-BYji7xOv.js} +1 -1
  8. package/assets/assets/{SettingsPage-BdAhhAS6.js → SettingsPage-D2VAFJh0.js} +1 -1
  9. package/assets/assets/{SiteHealthSection-DOQWKbrE.js → SiteHealthSection-B-HyC8y6.js} +3 -3
  10. package/assets/assets/{TrafficPage-BARq38mK.js → TrafficPage-UoiRx4vW.js} +1 -1
  11. package/assets/assets/{TrafficSourceDetailPage-DRhuS7fH.js → TrafficSourceDetailPage-24Ioy8BG.js} +1 -1
  12. package/assets/assets/{extract-error-message-DX4eQGO9.js → extract-error-message-COA1TC0-.js} +1 -1
  13. package/assets/assets/{index-zF9YNhaN.js → index-BtyrghBH.js} +20 -20
  14. package/assets/assets/{react-sigma_core.esm.min-CcZJvxeL.js → react-sigma_core.esm.min-gjGMldEz.js} +1 -1
  15. package/assets/assets/{v2-overview-adapter-Jh4TgRVR.js → v2-overview-adapter-Df-08Umi.js} +1 -1
  16. package/assets/index.html +1 -1
  17. package/dist/{chunk-ZGAVPLNP.js → chunk-24JHDZ7H.js} +10 -7
  18. package/dist/{chunk-JXMRYJR5.js → chunk-5CXUV3ZX.js} +6 -0
  19. package/dist/{chunk-KWUKYRS5.js → chunk-LIMWYFHS.js} +2 -2
  20. package/dist/{chunk-7773NNZY.js → chunk-Q5KGSOT7.js} +37 -30
  21. package/dist/{chunk-PKMJAHP5.js → chunk-ZX3QN26Z.js} +5 -5
  22. package/dist/cli.js +14 -11
  23. package/dist/index.js +4 -4
  24. package/dist/{intelligence-service-TJN37R37.js → intelligence-service-6ORSU2M6.js} +2 -2
  25. package/dist/mcp.js +3 -3
  26. package/package.json +11 -11
@@ -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-DOQWKbrE.js";import"./index-zF9YNhaN.js";import"./vendor-radix-twS1M3FF.js";import"./vendor-recharts-D-cUuLZo.js";import"./vendor-lucide-CW2qe0uH.js";import"./vendor-markdown-B-Oq2NYq.js";import"./vendor-yaml-GWJz5H2G.js";import"./ChartPrimitives-Bxa_vFmq.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.
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-B-HyC8y6.js";import"./index-BtyrghBH.js";import"./vendor-radix-twS1M3FF.js";import"./vendor-recharts-D-cUuLZo.js";import"./vendor-lucide-CW2qe0uH.js";import"./vendor-markdown-B-Oq2NYq.js";import"./vendor-yaml-GWJz5H2G.js";import"./ChartPrimitives-Bxa_vFmq.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
@@ -1 +1 @@
1
- import{j as o,r as C}from"./vendor-tanstack-ZXXkndVj.js";import{y as M,B as A}from"./index-zF9YNhaN.js";import{M as $}from"./vendor-markdown-B-Oq2NYq.js";const H="Sources",y={copy:"Copy answer",copying:"Copying…",copied:"Copied",failed:"Could not copy. Select and copy the answer above."};function N({headingLevel:e}){return n=>{const r=[],s=i=>{i.type==="heading"&&i.depth&&r.push(i),i.children?.forEach(s)};s(n);const l=r.reduce((i,u)=>Math.min(i,u.depth),6);for(const i of r){const u=i.depth-l;i.depth=Math.min(6,e+u),i.data={...i.data,hProperties:{...i.data?.hProperties,"data-answer-heading-level":u+1}}}}}function R({answer:e}){const[n,r]=C.useState("idle"),s=C.useRef(!1),l=async()=>{if(!s.current){s.current=!0,r("copying");try{await navigator.clipboard.writeText(e),r("copied")}catch{r("failed")}finally{s.current=!1}}};return o.jsxs("div",{className:"mt-3 flex flex-wrap items-center gap-x-3",children:[o.jsx(A,{type:"button",variant:"ghost",className:"min-h-11 px-2","aria-disabled":n==="copying","aria-busy":n==="copying",onClick:()=>{l()},children:n==="copying"?y.copying:y.copy}),o.jsx("span",{role:"status",className:"text-sm text-secondary",children:n==="copied"?y.copied:n==="failed"?y.failed:""})]})}function L({children:e,headingLevel:n=4,copyable:r=!1}){return o.jsxs("div",{className:"answer-markdown",children:[o.jsx($,{remarkPlugins:[[N,{headingLevel:n}]],components:{p:({children:s})=>o.jsx("p",{className:"mb-3 whitespace-pre-wrap last:mb-0",children:s}),ul:({children:s})=>o.jsx("ul",{className:"mb-3 ml-5 list-disc space-y-1",children:s}),ol:({children:s,start:l})=>o.jsx("ol",{start:l,className:"mb-3 ml-5 list-decimal space-y-1",children:s}),pre:({children:s})=>o.jsx("pre",{className:"mb-3 overflow-x-auto whitespace-pre-wrap",children:s}),a:({children:s,href:l})=>{const i=M(l);return i?o.jsx("a",{href:i,target:"_blank",rel:"noopener noreferrer",className:"text-link underline",children:s}):o.jsx("span",{children:s})},img:({alt:s})=>o.jsx("span",{children:s})},children:e}),r&&e.trim()?o.jsx(R,{answer:e},e):null]})}function F(e){const n=e[0];return n?e.every(r=>r.mode===n.mode&&r.scope.kind===n.scope.kind&&r.scope.key===n.scope.key&&r.queryClass===n.queryClass&&r.measurement.displayedRunId===n.measurement.displayedRunId):!0}function p(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}}function I(e){return e.kind==="exact"?e.url:e.kind==="prefix"?`https://${e.host}${e.pathPrefix}/*`:`https://${e.host}/*`}function T(e){return e==="assigned"?"this-property":e==="sibling"?"another-property":e==="ownedUnmapped"?"owned-unassigned":e==="external"?"external":e==="ambiguous"?"multiple-properties":"invalid-url"}function _(e){return e==="assigned"?"positive":e==="external"?"neutral":e==="invalid"?"negative":"caution"}function k(e){return`target:${e.targetKey}:${e.queryId}:${e.executionNodeKey}`}function j(e,n,r){const s=new Map;if(!n)return s;const l=new Map(e.usageEdges.map(a=>[k(a),a.targetKey])),i=new Map(e.assignments.map(a=>[`${a.targetKey}:${a.queryId}`,a.queryClass])),u=new Map(e.usageEdges.map(a=>[k(a),i.get(`${a.targetKey}:${a.queryId}`)]));for(const a of n.evidence){if(r&&u.get(a.usageEdgeId)!==r)continue;const c=l.get(a.usageEdgeId);if(!c)continue;const m=s.get(c)??[];m.push({id:`${a.observationId}:${a.expectedSlotId}:${a.usageEdgeId}:${a.sourceUrl}`,kind:T(a.classification),query:a.queryText,provider:a.provider,location:a.location,url:a.sourceUrl,tone:_(a.classification),historical:a.historical||a.bridged}),s.set(c,m)}return s}function B(e){if(e.flags>0)return{label:"Review",tone:"caution"};const n=[e.mentionCoverage,e.citationCoverage].filter(r=>r.state==="unavailable").map(r=>r.reason);return n.includes("no_completed_run")?{label:"Not measured",tone:"neutral"}:n.includes("plan_v1")?{label:"Update setup",tone:"caution"}:n.includes("evidence_incomplete")?{label:"Evidence incomplete",tone:"caution"}:n.includes("no_population")?{label:"No queries",tone:"neutral"}:n.includes("not_applicable")?{label:"Not applicable",tone:"neutral"}:{label:"Complete",tone:"positive"}}function O(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 U(e){if(!e)return"";const n=new Date(e);return Number.isFinite(n.getTime())?n.toLocaleDateString("en-US",{month:"short",day:"numeric",year:"numeric",timeZone:"UTC"}):""}function q(e){const n=e.nextAction.count??e.flags.total;if(e.nextAction.kind==="review_flags")return`${n} flagged ${n===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 W({overview:e,activePlan:n,report:r,reportState:s=r?"ready":"loading",sort:l}){if(n.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 i=n.plan,u=new Map(i.targets.map(t=>[t.stableKey,t])),a=new Map(i.querySnapshots.map(t=>[t.queryId,t.queryText])),c=new Map;for(const t of i.assignments){if(e.queryClass!=="all"&&t.queryClass!==e.queryClass)continue;const d=a.get(t.queryId);if(!d)continue;const g=c.get(t.targetKey)??new Set;g.add(d),c.set(t.targetKey,g)}const m=r?.revision===n.revision&&r.run?.id===e.measurement.displayedRunId?r:null,K=e.measurement.displayedRunId===void 0||m?"ready":s==="error"||r!=null?"error":"loading",S=j(i,m,e.queryClass==="all"?void 0:e.queryClass),h=new Map;for(const t of i.groups)for(const d of t.targetKeys)h.has(d)||h.set(d,t.label);const x=e.properties.items.map(t=>{const d=u.get(t.targetKey),g=S.get(t.targetKey)??[];return{id:t.targetKey,name:t.label,mentionCoverage:p(t.mentionCoverage),citationCoverage:p(t.citationCoverage),status:B(t),providers:t.providers?.map(f=>({provider:f.provider,mentionCoverage:p(f.mentionCoverage),citationCoverage:p(f.citationCoverage)})),market:h.get(t.targetKey),assignedQueries:[...c.get(t.targetKey)??[]],urls:d?.urlMatchers.map(I)??[],evidence:g,evidenceState:K,historical:g.some(f=>f.historical)}}),b=e.namedShareOfVoice?.entries.map(t=>({name:t.label,coverage:{numerator:t.credits,denominator:e.namedShareOfVoice.denominator}})),E=e.properties.items.flatMap(t=>t.flags>0?[{id:`property:${t.targetKey}`,property:t.label,summary:`${t.flags} ${t.flags===1?"result needs":"results need"} review.`,tone:"caution",count:t.flags}]:[]);return{classReporting:"available",latestMeasurement:{status:O(e.measurement.state),completedSlots:e.measurement.completed,totalSlots:e.measurement.expected,date:U(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:p(e.metrics.propertiesMentioned),mentionCoverage:p(e.metrics.mentionCoverage),citationCoverage:p(e.metrics.citationCoverage)},properties:x,...b?{shareOfVoice:b}:{}},propertyTotal:e.properties.totalEstimate??x.length,outcomes:e.outcomes,nextCursor:e.properties.nextCursor,...l?{sort:l}:{}},availableGroups:i.groups.map(t=>({id:t.stableKey,label:t.label})),...q(e)?{nextActionText:q(e)}:{},flaggedResultsTotal:e.flags.total,flaggedResults:E}}export{L as A,H as a,F as b,W as c,I as m};
1
+ import{j as o,r as C}from"./vendor-tanstack-ZXXkndVj.js";import{y as M,B as A}from"./index-BtyrghBH.js";import{M as $}from"./vendor-markdown-B-Oq2NYq.js";const H="Sources",y={copy:"Copy answer",copying:"Copying…",copied:"Copied",failed:"Could not copy. Select and copy the answer above."};function N({headingLevel:e}){return n=>{const r=[],s=i=>{i.type==="heading"&&i.depth&&r.push(i),i.children?.forEach(s)};s(n);const l=r.reduce((i,u)=>Math.min(i,u.depth),6);for(const i of r){const u=i.depth-l;i.depth=Math.min(6,e+u),i.data={...i.data,hProperties:{...i.data?.hProperties,"data-answer-heading-level":u+1}}}}}function R({answer:e}){const[n,r]=C.useState("idle"),s=C.useRef(!1),l=async()=>{if(!s.current){s.current=!0,r("copying");try{await navigator.clipboard.writeText(e),r("copied")}catch{r("failed")}finally{s.current=!1}}};return o.jsxs("div",{className:"mt-3 flex flex-wrap items-center gap-x-3",children:[o.jsx(A,{type:"button",variant:"ghost",className:"min-h-11 px-2","aria-disabled":n==="copying","aria-busy":n==="copying",onClick:()=>{l()},children:n==="copying"?y.copying:y.copy}),o.jsx("span",{role:"status",className:"text-sm text-secondary",children:n==="copied"?y.copied:n==="failed"?y.failed:""})]})}function L({children:e,headingLevel:n=4,copyable:r=!1}){return o.jsxs("div",{className:"answer-markdown",children:[o.jsx($,{remarkPlugins:[[N,{headingLevel:n}]],components:{p:({children:s})=>o.jsx("p",{className:"mb-3 whitespace-pre-wrap last:mb-0",children:s}),ul:({children:s})=>o.jsx("ul",{className:"mb-3 ml-5 list-disc space-y-1",children:s}),ol:({children:s,start:l})=>o.jsx("ol",{start:l,className:"mb-3 ml-5 list-decimal space-y-1",children:s}),pre:({children:s})=>o.jsx("pre",{className:"mb-3 overflow-x-auto whitespace-pre-wrap",children:s}),a:({children:s,href:l})=>{const i=M(l);return i?o.jsx("a",{href:i,target:"_blank",rel:"noopener noreferrer",className:"text-link underline",children:s}):o.jsx("span",{children:s})},img:({alt:s})=>o.jsx("span",{children:s})},children:e}),r&&e.trim()?o.jsx(R,{answer:e},e):null]})}function F(e){const n=e[0];return n?e.every(r=>r.mode===n.mode&&r.scope.kind===n.scope.kind&&r.scope.key===n.scope.key&&r.queryClass===n.queryClass&&r.measurement.displayedRunId===n.measurement.displayedRunId):!0}function p(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}}function I(e){return e.kind==="exact"?e.url:e.kind==="prefix"?`https://${e.host}${e.pathPrefix}/*`:`https://${e.host}/*`}function T(e){return e==="assigned"?"this-property":e==="sibling"?"another-property":e==="ownedUnmapped"?"owned-unassigned":e==="external"?"external":e==="ambiguous"?"multiple-properties":"invalid-url"}function _(e){return e==="assigned"?"positive":e==="external"?"neutral":e==="invalid"?"negative":"caution"}function k(e){return`target:${e.targetKey}:${e.queryId}:${e.executionNodeKey}`}function j(e,n,r){const s=new Map;if(!n)return s;const l=new Map(e.usageEdges.map(a=>[k(a),a.targetKey])),i=new Map(e.assignments.map(a=>[`${a.targetKey}:${a.queryId}`,a.queryClass])),u=new Map(e.usageEdges.map(a=>[k(a),i.get(`${a.targetKey}:${a.queryId}`)]));for(const a of n.evidence){if(r&&u.get(a.usageEdgeId)!==r)continue;const c=l.get(a.usageEdgeId);if(!c)continue;const m=s.get(c)??[];m.push({id:`${a.observationId}:${a.expectedSlotId}:${a.usageEdgeId}:${a.sourceUrl}`,kind:T(a.classification),query:a.queryText,provider:a.provider,location:a.location,url:a.sourceUrl,tone:_(a.classification),historical:a.historical||a.bridged}),s.set(c,m)}return s}function B(e){if(e.flags>0)return{label:"Review",tone:"caution"};const n=[e.mentionCoverage,e.citationCoverage].filter(r=>r.state==="unavailable").map(r=>r.reason);return n.includes("no_completed_run")?{label:"Not measured",tone:"neutral"}:n.includes("plan_v1")?{label:"Update setup",tone:"caution"}:n.includes("evidence_incomplete")?{label:"Evidence incomplete",tone:"caution"}:n.includes("no_population")?{label:"No queries",tone:"neutral"}:n.includes("not_applicable")?{label:"Not applicable",tone:"neutral"}:{label:"Complete",tone:"positive"}}function O(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 U(e){if(!e)return"";const n=new Date(e);return Number.isFinite(n.getTime())?n.toLocaleDateString("en-US",{month:"short",day:"numeric",year:"numeric",timeZone:"UTC"}):""}function q(e){const n=e.nextAction.count??e.flags.total;if(e.nextAction.kind==="review_flags")return`${n} flagged ${n===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 W({overview:e,activePlan:n,report:r,reportState:s=r?"ready":"loading",sort:l}){if(n.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 i=n.plan,u=new Map(i.targets.map(t=>[t.stableKey,t])),a=new Map(i.querySnapshots.map(t=>[t.queryId,t.queryText])),c=new Map;for(const t of i.assignments){if(e.queryClass!=="all"&&t.queryClass!==e.queryClass)continue;const d=a.get(t.queryId);if(!d)continue;const g=c.get(t.targetKey)??new Set;g.add(d),c.set(t.targetKey,g)}const m=r?.revision===n.revision&&r.run?.id===e.measurement.displayedRunId?r:null,K=e.measurement.displayedRunId===void 0||m?"ready":s==="error"||r!=null?"error":"loading",S=j(i,m,e.queryClass==="all"?void 0:e.queryClass),h=new Map;for(const t of i.groups)for(const d of t.targetKeys)h.has(d)||h.set(d,t.label);const x=e.properties.items.map(t=>{const d=u.get(t.targetKey),g=S.get(t.targetKey)??[];return{id:t.targetKey,name:t.label,mentionCoverage:p(t.mentionCoverage),citationCoverage:p(t.citationCoverage),status:B(t),providers:t.providers?.map(f=>({provider:f.provider,mentionCoverage:p(f.mentionCoverage),citationCoverage:p(f.citationCoverage)})),market:h.get(t.targetKey),assignedQueries:[...c.get(t.targetKey)??[]],urls:d?.urlMatchers.map(I)??[],evidence:g,evidenceState:K,historical:g.some(f=>f.historical)}}),b=e.namedShareOfVoice?.entries.map(t=>({name:t.label,coverage:{numerator:t.credits,denominator:e.namedShareOfVoice.denominator}})),E=e.properties.items.flatMap(t=>t.flags>0?[{id:`property:${t.targetKey}`,property:t.label,summary:`${t.flags} ${t.flags===1?"result needs":"results need"} review.`,tone:"caution",count:t.flags}]:[]);return{classReporting:"available",latestMeasurement:{status:O(e.measurement.state),completedSlots:e.measurement.completed,totalSlots:e.measurement.expected,date:U(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:p(e.metrics.propertiesMentioned),mentionCoverage:p(e.metrics.mentionCoverage),citationCoverage:p(e.metrics.citationCoverage)},properties:x,...b?{shareOfVoice:b}:{}},propertyTotal:e.properties.totalEstimate??x.length,outcomes:e.outcomes,nextCursor:e.properties.nextCursor,...l?{sort:l}:{}},availableGroups:i.groups.map(t=>({id:t.stableKey,label:t.label})),...q(e)?{nextActionText:q(e)}:{},flaggedResultsTotal:e.flags.total,flaggedResults:E}}export{L as A,H as a,F as b,W as c,I 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-zF9YNhaN.js"></script>
15
+ <script type="module" crossorigin src="./assets/index-BtyrghBH.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">
@@ -94,6 +94,7 @@ import {
94
94
  researchRunCreateSchema,
95
95
  restrictedWriteScopes,
96
96
  resultsClearRequestSchema,
97
+ runListFilterQuerySchema,
97
98
  runTriggerRequestSchema,
98
99
  schedulableRunKindSchema,
99
100
  scheduleUpsertRequestSchema,
@@ -104,7 +105,7 @@ import {
104
105
  trafficEventKindSchema,
105
106
  trafficSeriesGranularitySchema,
106
107
  visibilityReportRequestSchema
107
- } from "./chunk-JXMRYJR5.js";
108
+ } from "./chunk-5CXUV3ZX.js";
108
109
 
109
110
  // src/cli-error.ts
110
111
  function isMachineFormat(format) {
@@ -6831,13 +6832,13 @@ var ApiClient = class {
6831
6832
  })
6832
6833
  );
6833
6834
  }
6834
- async listRuns(project, limit, kind) {
6835
+ async listRuns(project, limit, kind, status) {
6835
6836
  return this.invoke(
6836
6837
  () => getApiV1ProjectsByNameRuns({
6837
6838
  client: this.heyClient,
6838
6839
  path: { name: project },
6839
- // kind arrives as a free CLI string; the server validates it against the enum.
6840
- query: { limit, kind }
6840
+ // kind/status arrive as free CLI strings; the server validates them against the enums.
6841
+ query: { limit, kind, status }
6841
6842
  })
6842
6843
  );
6843
6844
  }
@@ -9094,7 +9095,9 @@ var measurementDraftActionOpenApiOperations = [
9094
9095
  ];
9095
9096
  var runsListInputSchema = z4.object({
9096
9097
  project: projectNameSchema,
9097
- limit: z4.number().int().positive().max(500).optional()
9098
+ limit: z4.number().int().positive().max(500).optional(),
9099
+ kind: runListFilterQuerySchema.shape.kind.describe('Restrict to a single run kind (e.g. "answer-visibility"). Unknown values are rejected.'),
9100
+ status: runListFilterQuerySchema.shape.status.describe('Restrict to a single run status (e.g. "running" for in-flight work, "failed" to triage). Unknown values are rejected.')
9098
9101
  });
9099
9102
  var runGetInputSchema = z4.object({
9100
9103
  runId: runIdSchema
@@ -9998,13 +10001,13 @@ var canonryMcpTools = [
9998
10001
  defineTool({
9999
10002
  name: "canonry_runs_list",
10000
10003
  title: "List project runs",
10001
- description: "List runs for a Canonry project. Includes both real runs (trigger='manual'/'scheduled'/'config-apply'/'backfill') AND probe runs (trigger='probe'). Probe runs are operator/agent test runs that don't influence dashboard, analytics, intelligence, or notifications \u2014 filter by `trigger !== 'probe'` if you only want runs that feed project metrics.",
10004
+ description: "List runs for a Canonry project. Includes both real runs (trigger='manual'/'scheduled'/'config-apply'/'backfill') AND probe runs (trigger='probe'). Probe runs are operator/agent test runs that don't influence dashboard, analytics, intelligence, or notifications \u2014 filter by `trigger !== 'probe'` if you only want runs that feed project metrics. Narrow with `kind` and/or `status` (e.g. status='running' lists only in-flight work).",
10002
10005
  access: "read",
10003
10006
  tier: "monitoring",
10004
10007
  inputSchema: runsListInputSchema,
10005
10008
  annotations: readAnnotations(),
10006
10009
  openApiOperations: ["GET /api/v1/projects/{name}/runs"],
10007
- handler: (client2, input) => client2.listRuns(input.project, input.limit)
10010
+ handler: (client2, input) => client2.listRuns(input.project, input.limit, input.kind, input.status)
10008
10011
  }),
10009
10012
  defineTool({
10010
10013
  name: "canonry_runs_latest",
@@ -5397,6 +5397,10 @@ var runKindSchema = z9.enum([
5397
5397
  "gtm-sync"
5398
5398
  ]);
5399
5399
  var RunKinds = runKindSchema.enum;
5400
+ var runListFilterQuerySchema = z9.object({
5401
+ kind: runKindSchema.optional(),
5402
+ status: runStatusSchema.optional()
5403
+ });
5400
5404
  var runTriggerSchema = z9.enum(["manual", "scheduled", "config-apply", "backfill", "probe"]);
5401
5405
  var RunTriggers = runTriggerSchema.enum;
5402
5406
  var citationStateSchema = z9.enum(["cited", "not-cited"]);
@@ -18130,7 +18134,9 @@ export {
18130
18134
  settingsDtoSchema,
18131
18135
  runStatusSchema,
18132
18136
  RunStatuses,
18137
+ runKindSchema,
18133
18138
  RunKinds,
18139
+ runListFilterQuerySchema,
18134
18140
  runTriggerSchema,
18135
18141
  RunTriggers,
18136
18142
  citationStateSchema,
@@ -5,11 +5,11 @@ import {
5
5
  installSkills,
6
6
  loadConfigRaw,
7
7
  saveConfigPatch
8
- } from "./chunk-ZGAVPLNP.js";
8
+ } from "./chunk-24JHDZ7H.js";
9
9
  import {
10
10
  SKILL_MANIFEST_FILENAME,
11
11
  SkillsClients
12
- } from "./chunk-JXMRYJR5.js";
12
+ } from "./chunk-5CXUV3ZX.js";
13
13
 
14
14
  // src/skills-autosync.ts
15
15
  import fs from "fs";
@@ -590,6 +590,8 @@ import {
590
590
  runDetailDtoSchema,
591
591
  runDtoSchema,
592
592
  runInProgress,
593
+ runKindSchema,
594
+ runListFilterQuerySchema,
593
595
  runNotCancellable,
594
596
  runStatusSchema,
595
597
  runTriggerRequestSchema,
@@ -689,7 +691,7 @@ import {
689
691
  wordpressSchemaDeployResultDtoSchema,
690
692
  wordpressSchemaStatusResultDtoSchema,
691
693
  wordpressStatusDtoSchema
692
- } from "./chunk-JXMRYJR5.js";
694
+ } from "./chunk-5CXUV3ZX.js";
693
695
 
694
696
  // src/intelligence-service.ts
695
697
  import { eq as eq67, desc as desc29, asc as asc12, and as and57, ne as ne10, or as or15, inArray as inArray25, gte as gte18, lte as lte15, isNull as isNull12, sql as sql26, exists } from "drizzle-orm";
@@ -16018,8 +16020,11 @@ async function runRoutes(app, opts) {
16018
16020
  const project = resolveProject(app.db, request.params.name);
16019
16021
  const parsedLimit = parseInt(request.query.limit ?? "", 10);
16020
16022
  const limit = Number.isNaN(parsedLimit) || parsedLimit <= 0 ? void 0 : parsedLimit;
16021
- const kind = parseListKind(request.query.kind);
16022
- const where = kind ? and12(eq17(runs.projectId, project.id), eq17(runs.kind, kind)) : eq17(runs.projectId, project.id);
16023
+ const { kind, status } = parseListFilters(request.query);
16024
+ const filters = [eq17(runs.projectId, project.id)];
16025
+ if (kind) filters.push(eq17(runs.kind, kind));
16026
+ if (status) filters.push(eq17(runs.status, status));
16027
+ const where = and12(...filters);
16023
16028
  const rows = limit == null ? app.db.select().from(runs).where(where).orderBy(asc(runs.createdAt)).all() : app.db.select().from(runs).where(where).orderBy(desc3(runs.createdAt)).limit(limit).all().reverse();
16024
16029
  return reply.send(rows.map(formatRun));
16025
16030
  });
@@ -16040,10 +16045,11 @@ async function runRoutes(app, opts) {
16040
16045
  const limit = parseListLimit(request.query.limit, 500, 5e3);
16041
16046
  const since = parseListSince(request.query.since);
16042
16047
  const includeProbe = request.query.includeProbe === "1" || request.query.includeProbe === "true";
16043
- const kind = parseListKind(request.query.kind);
16048
+ const { kind, status } = parseListFilters(request.query);
16044
16049
  const filters = [gte3(runs.createdAt, since)];
16045
16050
  if (!includeProbe) filters.push(notProbeRun());
16046
16051
  if (kind) filters.push(eq17(runs.kind, kind));
16052
+ if (status) filters.push(eq17(runs.status, status));
16047
16053
  const scopedProjectId = request.apiKey?.projectId;
16048
16054
  if (scopedProjectId) filters.push(eq17(runs.projectId, scopedProjectId));
16049
16055
  const rows = app.db.select().from(runs).where(and12(...filters)).orderBy(desc3(runs.createdAt), desc3(runs.id)).limit(limit).all();
@@ -16235,13 +16241,22 @@ function parseListLimit(raw, defaultValue, max2) {
16235
16241
  }
16236
16242
  return Math.min(parsed, max2);
16237
16243
  }
16238
- function parseListKind(raw) {
16239
- if (raw === void 0 || raw === "") return null;
16240
- const validKinds = Object.values(RunKinds);
16241
- if (!validKinds.includes(raw)) {
16242
- throw validationError(`"kind" must be one of: ${validKinds.join(", ")}`);
16243
- }
16244
- return raw;
16244
+ var RUN_LIST_FILTER_OPTIONS = {
16245
+ kind: runKindSchema.options,
16246
+ status: runStatusSchema.options
16247
+ };
16248
+ function isRunListFilterField(field) {
16249
+ return typeof field === "string" && field in RUN_LIST_FILTER_OPTIONS;
16250
+ }
16251
+ function parseListFilters(query) {
16252
+ const parsed = runListFilterQuerySchema.safeParse({
16253
+ kind: query.kind === "" ? void 0 : query.kind,
16254
+ status: query.status === "" ? void 0 : query.status
16255
+ });
16256
+ if (parsed.success) return parsed.data;
16257
+ const invalid = parsed.error.issues.map((issue) => issue.path[0]).filter(isRunListFilterField);
16258
+ const message = invalid.length > 0 ? invalid.map((field) => `"${field}" must be one of: ${RUN_LIST_FILTER_OPTIONS[field].join(", ")}`).join("; ") : "Invalid run list filters";
16259
+ throw validationError(message, { invalid: Object.fromEntries(invalid.map((field) => [field, query[field]])) });
16245
16260
  }
16246
16261
  function parseListSince(raw) {
16247
16262
  if (raw === void 0) {
@@ -35324,23 +35339,14 @@ var scheduleExpectedUpdatedAtQueryParameter = {
35324
35339
  var runsListKindQueryParameter = {
35325
35340
  name: "kind",
35326
35341
  in: "query",
35327
- description: "Restrict results to a single run kind. Without this filter, integration syncs (bing-inspect, gsc-sync, ga-sync) can fill the default 500-row cap within minutes on busy projects and push answer-visibility runs out of the response.",
35328
- schema: {
35329
- type: "string",
35330
- enum: [
35331
- "answer-visibility",
35332
- "site-audit",
35333
- "gsc-sync",
35334
- "inspect-sitemap",
35335
- "ga-sync",
35336
- "bing-inspect",
35337
- "bing-inspect-sitemap",
35338
- "backlink-extract",
35339
- "traffic-sync",
35340
- "aeo-discover-seed",
35341
- "aeo-discover-probe"
35342
- ]
35343
- }
35342
+ description: "Restrict results to a single run kind. Without this filter, integration syncs (bing-inspect, gsc-sync, ga-sync) can fill the default 500-row cap within minutes on busy projects and push answer-visibility runs out of the response. Unknown values are rejected with 400.",
35343
+ schema: { type: "string", enum: [...runKindSchema.options] }
35344
+ };
35345
+ var runsListStatusQueryParameter = {
35346
+ name: "status",
35347
+ in: "query",
35348
+ description: 'Restrict results to a single run status, e.g. "running" to find in-flight work or "failed" to triage. Unknown values are rejected with 400 rather than returning an empty list.',
35349
+ schema: { type: "string", enum: [...runStatusSchema.options] }
35344
35350
  };
35345
35351
  var runsListSinceQueryParameter = {
35346
35352
  name: "since",
@@ -37143,7 +37149,7 @@ var routeCatalog = [
37143
37149
  path: "/api/v1/projects/{name}/runs",
37144
37150
  summary: "List project runs",
37145
37151
  tags: ["runs"],
37146
- parameters: [nameParameter, limitQueryParameter, runsListKindQueryParameter],
37152
+ parameters: [nameParameter, limitQueryParameter, runsListKindQueryParameter, runsListStatusQueryParameter],
37147
37153
  responses: {
37148
37154
  200: jsonArrayResponse("Runs returned.", "RunDto")
37149
37155
  }
@@ -37167,7 +37173,8 @@ var routeCatalog = [
37167
37173
  limitQueryParameter,
37168
37174
  runsListSinceQueryParameter,
37169
37175
  runsListIncludeProbeQueryParameter,
37170
- runsListKindQueryParameter
37176
+ runsListKindQueryParameter,
37177
+ runsListStatusQueryParameter
37171
37178
  ],
37172
37179
  responses: {
37173
37180
  200: jsonArrayResponse("Runs returned.", "RunDto")
@@ -14,7 +14,7 @@ import {
14
14
  loadConfig,
15
15
  loadConfigRaw,
16
16
  saveConfigPatch
17
- } from "./chunk-ZGAVPLNP.js";
17
+ } from "./chunk-24JHDZ7H.js";
18
18
  import {
19
19
  CC_CACHE_DIR,
20
20
  DUCKDB_SPEC,
@@ -162,7 +162,7 @@ import {
162
162
  siteCrawlSnapshots,
163
163
  toAlertView,
164
164
  usageCounters
165
- } from "./chunk-7773NNZY.js";
165
+ } from "./chunk-Q5KGSOT7.js";
166
166
  import {
167
167
  AGENT_MEMORY_VALUE_MAX_BYTES,
168
168
  AGENT_PROVIDER_IDS,
@@ -305,7 +305,7 @@ import {
305
305
  validationError,
306
306
  winnabilityClassLabel,
307
307
  withRetry
308
- } from "./chunk-JXMRYJR5.js";
308
+ } from "./chunk-5CXUV3ZX.js";
309
309
 
310
310
  // src/telemetry.ts
311
311
  import crypto from "crypto";
@@ -6246,7 +6246,7 @@ function nonBlank(value) {
6246
6246
  return trimmed ? trimmed : void 0;
6247
6247
  }
6248
6248
  function resolveBuildCommit(env = process.env) {
6249
- const embedded = true ? "6cb1a2ee1431aa6dc7940fa5c483b26163d6b580" : void 0;
6249
+ const embedded = true ? "f1d65c35a4310d8766aa4b96dfbd7ab527419f15" : void 0;
6250
6250
  return nonBlank(embedded) ?? nonBlank(env.CANONRY_COMMIT);
6251
6251
  }
6252
6252
  function resolveInstanceIdentity(env = process.env) {
@@ -12057,7 +12057,7 @@ function readStoredGroundingSources(rawResponse) {
12057
12057
  return result;
12058
12058
  }
12059
12059
  async function backfillInsightsCommand(project, opts) {
12060
- const { IntelligenceService: IntelligenceService2 } = await import("./intelligence-service-TJN37R37.js");
12060
+ const { IntelligenceService: IntelligenceService2 } = await import("./intelligence-service-6ORSU2M6.js");
12061
12061
  const config = loadConfig();
12062
12062
  const db = createClient(config.database);
12063
12063
  migrate(db);
package/dist/cli.js CHANGED
@@ -28,11 +28,11 @@ import {
28
28
  trackCliCommandFinished,
29
29
  trackEvent,
30
30
  waitForServerRuntimeStartup
31
- } from "./chunk-PKMJAHP5.js";
31
+ } from "./chunk-ZX3QN26Z.js";
32
32
  import {
33
33
  autoSyncSkills,
34
34
  formatAutoSyncNotice
35
- } from "./chunk-KWUKYRS5.js";
35
+ } from "./chunk-LIMWYFHS.js";
36
36
  import {
37
37
  CliError,
38
38
  EXIT_SYSTEM_ERROR,
@@ -58,7 +58,7 @@ import {
58
58
  saveConfigPatch,
59
59
  systemError,
60
60
  usageError
61
- } from "./chunk-ZGAVPLNP.js";
61
+ } from "./chunk-24JHDZ7H.js";
62
62
  import {
63
63
  CLOUDFLARE_WORKER_BINDINGS,
64
64
  CLOUDFLARE_WORKER_GENERATED_MARKER,
@@ -72,7 +72,7 @@ import {
72
72
  projects,
73
73
  queries,
74
74
  renderReportHtml
75
- } from "./chunk-7773NNZY.js";
75
+ } from "./chunk-Q5KGSOT7.js";
76
76
  import {
77
77
  AdsDeliverySnapshotStatuses,
78
78
  AdsHistoricalCampaignRollupStatuses,
@@ -148,7 +148,7 @@ import {
148
148
  shareOfVoiceReason,
149
149
  visibilityReportRequestSchema,
150
150
  winnabilityClassSchema
151
- } from "./chunk-JXMRYJR5.js";
151
+ } from "./chunk-5CXUV3ZX.js";
152
152
 
153
153
  // src/cli.ts
154
154
  import { pathToFileURL } from "url";
@@ -12582,7 +12582,7 @@ async function showRun(id, format) {
12582
12582
  }
12583
12583
  async function listRuns(project, opts) {
12584
12584
  const client = getClient23();
12585
- const runs = await client.listRuns(project, opts?.limit, opts?.kind);
12585
+ const runs = await client.listRuns(project, opts?.limit, opts?.kind, opts?.status);
12586
12586
  if (opts?.format === "json") {
12587
12587
  console.log(JSON.stringify(runs, null, 2));
12588
12588
  return;
@@ -12650,6 +12650,7 @@ function printRunDetail(run) {
12650
12650
  // src/cli-commands/run.ts
12651
12651
  var RUN_TRIGGER_USAGE = "canonry run trigger <project> [--group <key>]... [--target <key>]... [--provider <name>] [--query <q>...] [--location <label>] [--all-locations] [--no-location] [--probe] [--wait] [--format json]";
12652
12652
  var RUN_USAGE2 = "canonry run <project|--all> [--group <key>]... [--target <key>]... [--provider <name>] [--query <q>...] [--location <label>] [--all-locations] [--no-location] [--probe] [--wait] [--format json]";
12653
+ var RUNS_USAGE = "canonry runs <project> [--limit <n>] [--kind <kind>] [--status <status>] [--format json]";
12653
12654
  var RUN_TRIGGER_OPTIONS = {
12654
12655
  provider: stringOption(),
12655
12656
  query: multiStringOption(),
@@ -12775,21 +12776,23 @@ var RUN_CLI_COMMANDS = [
12775
12776
  },
12776
12777
  {
12777
12778
  path: ["runs"],
12778
- usage: "canonry runs <project> [--limit <n>] [--kind <kind>] [--format json]",
12779
+ usage: RUNS_USAGE,
12779
12780
  options: {
12780
12781
  limit: stringOption(),
12781
- kind: stringOption()
12782
+ kind: stringOption(),
12783
+ status: stringOption()
12782
12784
  },
12783
12785
  run: async (input) => {
12784
- const project = requireProject(input, "runs", "canonry runs <project> [--limit <n>] [--kind <kind>] [--format json]");
12786
+ const project = requireProject(input, "runs", RUNS_USAGE);
12785
12787
  await listRuns(project, {
12786
12788
  format: input.format,
12787
12789
  limit: parseIntegerOption(input, "limit", {
12788
12790
  command: "runs",
12789
- usage: "canonry runs <project> [--limit <n>] [--kind <kind>] [--format json]",
12791
+ usage: RUNS_USAGE,
12790
12792
  message: "--limit must be an integer"
12791
12793
  }),
12792
- kind: getString(input.values, "kind")
12794
+ kind: getString(input.values, "kind"),
12795
+ status: getString(input.values, "status")
12793
12796
  });
12794
12797
  }
12795
12798
  }
package/dist/index.js CHANGED
@@ -3,12 +3,12 @@ import {
3
3
  createGoogleMarketingCredentialStore,
4
4
  createGoogleMarketingRuntime,
5
5
  createServer
6
- } from "./chunk-PKMJAHP5.js";
6
+ } from "./chunk-ZX3QN26Z.js";
7
7
  import {
8
8
  loadConfig
9
- } from "./chunk-ZGAVPLNP.js";
10
- import "./chunk-7773NNZY.js";
11
- import "./chunk-JXMRYJR5.js";
9
+ } from "./chunk-24JHDZ7H.js";
10
+ import "./chunk-Q5KGSOT7.js";
11
+ import "./chunk-5CXUV3ZX.js";
12
12
  export {
13
13
  GoogleMarketingRuntimeError,
14
14
  createGoogleMarketingCredentialStore,
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  IntelligenceService
3
- } from "./chunk-7773NNZY.js";
4
- import "./chunk-JXMRYJR5.js";
3
+ } from "./chunk-Q5KGSOT7.js";
4
+ import "./chunk-5CXUV3ZX.js";
5
5
  export {
6
6
  IntelligenceService
7
7
  };
package/dist/mcp.js CHANGED
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  autoSyncSkills
3
- } from "./chunk-KWUKYRS5.js";
3
+ } from "./chunk-LIMWYFHS.js";
4
4
  import {
5
5
  createApiClient,
6
6
  createCanonryMcpServer
7
- } from "./chunk-ZGAVPLNP.js";
7
+ } from "./chunk-24JHDZ7H.js";
8
8
  import {
9
9
  isReadOnlyKey
10
- } from "./chunk-JXMRYJR5.js";
10
+ } from "./chunk-5CXUV3ZX.js";
11
11
 
12
12
  // src/mcp/cli.ts
13
13
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ainyc/canonry",
3
- "version": "4.193.0",
3
+ "version": "4.193.1",
4
4
  "type": "module",
5
5
  "description": "Self-hosted AI visibility (AEO) platform: track how ChatGPT, Claude, Gemini, and Perplexity cite your domain, join it with Search Console, GA4, server-side traffic, and paid media, and fix what you find through agent tools (CLI, REST, MCP). Local SQLite.",
6
6
  "license": "FSL-1.1-ALv2",
@@ -71,31 +71,31 @@
71
71
  "tsup": "^8.5.1",
72
72
  "tsx": "^4.19.0",
73
73
  "@ainyc/canonry-web": "0.0.0",
74
- "@ainyc/canonry-api-client": "0.0.0",
75
- "@ainyc/canonry-api-routes": "0.0.0",
76
- "@ainyc/canonry-config": "0.0.0",
77
74
  "@ainyc/canonry-contracts": "0.0.0",
75
+ "@ainyc/canonry-config": "0.0.0",
78
76
  "@ainyc/canonry-db": "0.0.0",
77
+ "@ainyc/canonry-api-client": "0.0.0",
78
+ "@ainyc/canonry-api-routes": "0.0.0",
79
79
  "@ainyc/canonry-integration-bing": "0.0.0",
80
- "@ainyc/canonry-integration-cloud-run": "0.0.0",
81
80
  "@ainyc/canonry-integration-cloudflare-queue": "0.0.0",
82
- "@ainyc/canonry-integration-cloudflare-worker": "0.0.0",
83
81
  "@ainyc/canonry-integration-google": "0.0.0",
82
+ "@ainyc/canonry-integration-cloud-run": "0.0.0",
83
+ "@ainyc/canonry-integration-cloudflare-worker": "0.0.0",
84
84
  "@ainyc/canonry-integration-google-ads": "0.0.0",
85
85
  "@ainyc/canonry-integration-commoncrawl": "0.0.0",
86
- "@ainyc/canonry-integration-google-places": "0.0.0",
87
86
  "@ainyc/canonry-integration-google-business-profile": "0.0.0",
87
+ "@ainyc/canonry-integration-google-places": "0.0.0",
88
88
  "@ainyc/canonry-integration-google-tag-manager": "0.0.0",
89
89
  "@ainyc/canonry-integration-openai-ads": "0.0.0",
90
- "@ainyc/canonry-integration-traffic": "0.0.0",
91
90
  "@ainyc/canonry-integration-wordpress": "0.0.0",
91
+ "@ainyc/canonry-integration-traffic": "0.0.0",
92
92
  "@ainyc/canonry-provider-cdp": "0.0.0",
93
- "@ainyc/canonry-provider-claude": "0.0.0",
94
93
  "@ainyc/canonry-intelligence": "0.0.0",
95
94
  "@ainyc/canonry-provider-gemini": "0.0.0",
96
95
  "@ainyc/canonry-provider-local": "0.0.0",
97
- "@ainyc/canonry-provider-openai": "0.0.0",
98
- "@ainyc/canonry-provider-perplexity": "0.0.0"
96
+ "@ainyc/canonry-provider-perplexity": "0.0.0",
97
+ "@ainyc/canonry-provider-claude": "0.0.0",
98
+ "@ainyc/canonry-provider-openai": "0.0.0"
99
99
  },
100
100
  "scripts": {
101
101
  "build": "pnpm run build:cli && pnpm run build:web",