@canonry/canonry 7.78.3 → 7.79.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 (44) hide show
  1. package/assets/agent-workspace/skills/aero/references/agent-operations.md +6 -0
  2. package/assets/agent-workspace/skills/canonry/SKILL.md +6 -0
  3. package/assets/assets/{AgentSetupPage-BGdvyQFL.js → AgentSetupPage-Cr2ZU_4s.js} +1 -1
  4. package/assets/assets/{MeasurementPropertyPage-CwPuJMBy.js → MeasurementPropertyPage-ighxjOiq.js} +1 -1
  5. package/assets/assets/{ProjectPage-Bbnbg7c9.js → ProjectPage-DnAXCPle.js} +2 -2
  6. package/assets/assets/{RunsPage-CJHJ7kHk.js → RunsPage-Ds5K3fOQ.js} +1 -1
  7. package/assets/assets/{SettingsPage-r8VrtFyJ.js → SettingsPage-B8Jed-xH.js} +1 -1
  8. package/assets/assets/{SiteHealthSection-D1oSuo9O.js → SiteHealthSection-cjNQasWj.js} +2 -2
  9. package/assets/assets/{TrafficPage-DY2ykwH1.js → TrafficPage-BUid1rkh.js} +1 -1
  10. package/assets/assets/{index-Dfm8z5cG.js → index-BhoSVTom.js} +3 -3
  11. package/assets/assets/index-TBDfE2OO.css +1 -0
  12. package/assets/assets/{react-sigma_core.esm.min-Bjdtl0TQ.js → react-sigma_core.esm.min-SbOH7c6K.js} +1 -1
  13. package/assets/index.html +2 -2
  14. package/dist/{backfill-IRVLT6VT.js → backfill-SRE52FDL.js} +4 -4
  15. package/dist/{bootstrap-WZ6YDQIG.js → bootstrap-ITVA7X45.js} +1 -1
  16. package/dist/{chunk-OES6PSQK.js → chunk-27MGZQ6Z.js} +23 -41
  17. package/dist/{chunk-7HE4LAJY.js → chunk-6OCQTAXU.js} +16 -9
  18. package/dist/{chunk-5NBXPO4G.js → chunk-7S6SQFFT.js} +1 -1
  19. package/dist/{chunk-KHIZSTDP.js → chunk-DEQC5XVD.js} +15 -15
  20. package/dist/{chunk-PH4AESRE.js → chunk-HRFPGXON.js} +18 -0
  21. package/dist/{chunk-IYMTQHPD.js → chunk-I7RTAHCL.js} +1 -1
  22. package/dist/{chunk-WVCDUKJ2.js → chunk-JI7FDO7I.js} +19 -0
  23. package/dist/{chunk-PRCBHOVR.js → chunk-KUMHO22S.js} +15 -8
  24. package/dist/{chunk-LBNUTWPK.js → chunk-OIRHCT63.js} +1 -1
  25. package/dist/{chunk-QALET4XH.js → chunk-QOKK5PMO.js} +10 -10
  26. package/dist/{chunk-BKOG3GEI.js → chunk-RPTOVEZT.js} +79 -9
  27. package/dist/{chunk-LOMRNRML.js → chunk-SWWZ733W.js} +2 -2
  28. package/dist/{chunk-BTMLE3EN.js → chunk-ZMMS3FAR.js} +2 -2
  29. package/dist/{cli-commands-6M5QDGBZ.js → cli-commands-BZLUMYKR.js} +1 -1
  30. package/dist/cli.js +2 -2
  31. package/dist/{dashboard-6MMYA2GG.js → dashboard-43ST35IW.js} +2 -2
  32. package/dist/{demo-3R2SHQPO.js → demo-COMFIESH.js} +1 -1
  33. package/dist/{demo-server-ISJOEJN5.js → demo-server-MRGL3SNP.js} +4 -4
  34. package/dist/index.d.ts +16 -144
  35. package/dist/index.js +10 -10
  36. package/dist/{init-FLWVOJHU.js → init-YKLLVT7X.js} +2 -2
  37. package/dist/{intelligence-service-MPNONLCW.js → intelligence-service-5STL6A45.js} +3 -3
  38. package/dist/mcp.js +2 -2
  39. package/dist/{serve-7HN3VT6J.js → serve-VU3E7XTX.js} +11 -11
  40. package/dist/{session-FBHHWILQ.js → session-JKMEKQYL.js} +7 -6
  41. package/dist/{src-AQ5MHQGQ.js → src-QC2VNJWJ.js} +3 -1
  42. package/dist/{tools-3ACR2D2V.js → tools-LGTWLH5Y.js} +3 -3
  43. package/package.json +1 -1
  44. package/assets/assets/index-CHHZDc6d.css +0 -1
@@ -1,4 +1,4 @@
1
- import{r as e,t}from"./rolldown-runtime-XKyaHtl9.js";import{ot as n}from"./vendor-lucide-BILL9eZH.js";import{c as r,l as i}from"./SiteHealthSection-D1oSuo9O.js";var a=e(n(),1);function o(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function s(e,t){if(e){if(typeof e==`string`)return o(e,t);var n={}.toString.call(e).slice(8,-1);return n===`Object`&&e.constructor&&(n=e.constructor.name),n===`Map`||n===`Set`?Array.from(e):n===`Arguments`||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?o(e,t):void 0}}function c(e){if(Array.isArray(e))return e}function l(e,t){var n=e==null?null:typeof Symbol<`u`&&e[Symbol.iterator]||e[`@@iterator`];if(n!=null){var r,i,a,o,s=[],c=!0,l=!1;try{if(a=(n=n.call(e)).next,t===0){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=a.call(n)).done)&&(s.push(r.value),s.length!==t);c=!0);}catch(e){l=!0,i=e}finally{try{if(!c&&n.return!=null&&(o=n.return(),Object(o)!==o))return}finally{if(l)throw i}}return s}}function u(){throw TypeError(`Invalid attempt to destructure non-iterable instance.
1
+ import{r as e,t}from"./rolldown-runtime-XKyaHtl9.js";import{ot as n}from"./vendor-lucide-BILL9eZH.js";import{c as r,l as i}from"./SiteHealthSection-cjNQasWj.js";var a=e(n(),1);function o(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function s(e,t){if(e){if(typeof e==`string`)return o(e,t);var n={}.toString.call(e).slice(8,-1);return n===`Object`&&e.constructor&&(n=e.constructor.name),n===`Map`||n===`Set`?Array.from(e):n===`Arguments`||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?o(e,t):void 0}}function c(e){if(Array.isArray(e))return e}function l(e,t){var n=e==null?null:typeof Symbol<`u`&&e[Symbol.iterator]||e[`@@iterator`];if(n!=null){var r,i,a,o,s=[],c=!0,l=!1;try{if(a=(n=n.call(e)).next,t===0){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=a.call(n)).done)&&(s.push(r.value),s.length!==t);c=!0);}catch(e){l=!0,i=e}finally{try{if(!c&&n.return!=null&&(o=n.return(),Object(o)!==o))return}finally{if(l)throw i}}return s}}function u(){throw 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 d(e,t){return c(e)||l(e,t)||s(e,t)||u()}function f(e,t){var n=typeof Symbol<`u`&&e[Symbol.iterator]||e[`@@iterator`];if(!n){if(Array.isArray(e)||(n=s(e))||t&&e&&typeof e.length==`number`){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw TypeError(`Invalid attempt to iterate non-iterable instance.
3
3
  In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var a,o=!0,c=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return o=e.done,e},e:function(e){c=!0,a=e},f:function(){try{o||n.return==null||n.return()}finally{if(c)throw a}}}}function p(){return Float32Array.of(1,0,0,0,1,0,0,0,1)}function m(e,t,n){return e[0]=t,e[4]=typeof n==`number`?n:t,e}function h(e,t){var n=Math.sin(t),r=Math.cos(t);return e[0]=r,e[1]=n,e[3]=-n,e[4]=r,e}function g(e,t,n){return e[6]=t,e[7]=n,e}function _(e,t){var n=e[0],r=e[1],i=e[2],a=e[3],o=e[4],s=e[5],c=e[6],l=e[7],u=e[8],d=t[0],f=t[1],p=t[2],m=t[3],h=t[4],g=t[5],_=t[6],v=t[7],y=t[8];return e[0]=d*n+f*a+p*c,e[1]=d*r+f*o+p*l,e[2]=d*i+f*s+p*u,e[3]=m*n+h*a+g*c,e[4]=m*r+h*o+g*l,e[5]=m*i+h*s+g*u,e[6]=_*n+v*a+y*c,e[7]=_*r+v*o+y*l,e[8]=_*i+v*s+y*u,e}function v(e,t){var n=Math.cos(t),r=Math.sin(t);return{x:n*e.x+r*e.y,y:-r*e.x+n*e.y}}function y(e,t){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1,r=e[0],i=e[1],a=e[3],o=e[4],s=e[6],c=e[7],l=t.x,u=t.y;return{x:l*r+u*a+s*n,y:l*i+u*o+c*n}}function b(e,t){var n=e.height/e.width,r=t.height/t.width;return n<1&&r>1||n>1&&r<1?1:Math.min(Math.max(r,1/r),Math.max(1/n,n))}function x(e,t,n,r,i){var a=e.angle,o=e.ratio,s=e.x,c=e.y,l=t.width,u=t.height,d=p(),f=Math.min(l,u)-2*r,v=b(t,n);return i?(_(d,g(p(),s,c)),_(d,m(p(),o)),_(d,h(p(),a)),_(d,m(p(),l/f/2/v,u/f/2/v))):(_(d,m(p(),f/l*2*v,f/u*2*v)),_(d,h(p(),-a)),_(d,m(p(),1/o)),_(d,g(p(),-s,-c))),d}function S(e,t,n){var r=y(e,{x:Math.cos(t.angle),y:Math.sin(t.angle)},0),i=r.x,a=r.y;return 1/Math.sqrt(i**2+a**2)/n.width}function C(e,t,n,r,i){return[Math.floor(t/i*r),Math.floor(e.drawingBufferHeight/i-n/i*r)]}var w={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`},T=new Int8Array(4),E=new Int32Array(T.buffer,0,1),D=new Float32Array(T.buffer,0,1),O=/^\s*rgba?\s*\(/,k=/^\s*rgba?\s*\(\s*([0-9]*)\s*,\s*([0-9]*)\s*,\s*([0-9]*)(?:\s*,\s*(.*)?)?\)\s*$/;function A(e){var t=0,n=0,r=0,i=1,a=e.toLowerCase();if(a===`transparent`)return{r:0,g:0,b:0,a:0};if(a in w)return A(w[a]);if(e[0]===`#`)e.length===4?(t=parseInt(e.charAt(1)+e.charAt(1),16),n=parseInt(e.charAt(2)+e.charAt(2),16),r=parseInt(e.charAt(3)+e.charAt(3),16)):(t=parseInt(e.charAt(1)+e.charAt(2),16),n=parseInt(e.charAt(3)+e.charAt(4),16),r=parseInt(e.charAt(5)+e.charAt(6),16)),e.length===9&&(i=parseInt(e.charAt(7)+e.charAt(8),16)/255);else if(O.test(e)){var o=e.match(k);o&&(t=+o[1],n=+o[2],r=+o[3],o[4]&&(i=+o[4]))}return{r:t,g:n,b:r,a:i}}function j(e){var t=arguments.length>1&&arguments[1]!==void 0&&arguments[1],n=A(e),r=n.r,i=n.g,a=n.b,o=n.a;return t?[r/255*o,i/255*o,a/255*o,o]:[r/255,i/255,a/255,o]}var M={};for(var N in w)M[N]=F(w[N]),M[w[N]]=M[N];function P(e,t,n,r,i){return E[0]=r<<24|n<<16|t<<8|e,i&&(E[0]&=4278190079),D[0]}function F(e){if(e=e.toLowerCase(),M[e]!==void 0)return M[e];var t=A(e),n=t.r,r=t.g,i=t.b,a=t.a;a=a*255|0;var o=P(n,r,i,a,!0);return M[e]=o,o}function I(e,t){D[0]=F(e);var n=E[0];return t&&(n|=16777216),[n&255,n>>8&255,n>>16&255,n>>24&255]}function ee(e){var t=e>>>8&255,n=e>>>16&255,r=e>>>24&255;return((e&255)<<24|r<<16|n<<8|t)>>>0}function te(e,t,n,r){return(n<<24|t<<16|e<<8|r)>>>0}function L(e,t,n,r,i,a){var o=d(C(e,n,r,i,a),2),s=o[0],c=o[1],l=new Uint8Array(4);e.bindFramebuffer(e.FRAMEBUFFER,t),e.readPixels(s,c,1,1,e.RGBA,e.UNSIGNED_BYTE,l);var u=d(l,4);return[u[0],u[1],u[2],u[3]]}function ne(e){var t=A(e),n=t.r,r=t.g,i=t.b,a=t.a;return`vec4(${(n/255).toFixed(6)}, ${(r/255).toFixed(6)}, ${(i/255).toFixed(6)}, ${a.toFixed(6)})`}function re(e,t){if(typeof e!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(typeof r!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function ie(e){var t=re(e,`string`);return typeof t==`symbol`?t:t+``}function R(e,t,n){return(t=ie(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function ae(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function z(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?ae(Object(n),!0).forEach(function(t){R(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ae(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function B(e,t){if(!(e instanceof t))throw TypeError(`Cannot call a class as a function`)}function oe(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,`value`in r&&(r.writable=!0),Object.defineProperty(e,ie(r.key),r)}}function V(e,t,n){return t&&oe(e.prototype,t),n&&oe(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function se(e){return se=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},se(e)}function ce(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch{}return(ce=function(){return!!e})()}function le(e){if(e===void 0)throw ReferenceError(`this hasn't been initialised - super() hasn't been called`);return e}function ue(e,t){if(t&&(typeof t==`object`||typeof t==`function`))return t;if(t!==void 0)throw TypeError(`Derived constructors may only return object or undefined`);return le(e)}function H(e,t,n){return t=se(t),ue(e,ce()?Reflect.construct(t,n||[],se(e).constructor):t.apply(e,n))}function de(e,t){return de=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},de(e,t)}function U(e,t){if(typeof t!=`function`&&t!==null)throw TypeError(`Super expression must either be null or a function`);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&de(e,t)}function fe(e){if(Array.isArray(e))return o(e)}function pe(e){if(typeof Symbol<`u`&&e[Symbol.iterator]!=null||e[`@@iterator`]!=null)return Array.from(e)}function me(){throw TypeError(`Invalid attempt to spread non-iterable instance.
4
4
  In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function W(e){return fe(e)||pe(e)||s(e)||me()}function G(e){"@babel/helpers - typeof";return G=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},G(e)}function he(e){return G(e)===`object`&&e!==null&&`attribute`in e}function ge(){return{name:`circle`,glsl:`
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-Dfm8z5cG.js"></script>
15
+ <script type="module" crossorigin src="./assets/index-BhoSVTom.js"></script>
16
16
  <link rel="modulepreload" crossorigin href="./assets/rolldown-runtime-XKyaHtl9.js">
17
17
  <link rel="modulepreload" crossorigin href="./assets/vendor-lucide-BILL9eZH.js">
18
18
  <link rel="modulepreload" crossorigin href="./assets/vendor-markdown-DNTP_967.js">
@@ -29,7 +29,7 @@
29
29
  <link rel="modulepreload" crossorigin href="./assets/InfoTooltip-CJ3IWqBk.js">
30
30
  <link rel="modulepreload" crossorigin href="./assets/card-BE2fqwVq.js">
31
31
  <link rel="modulepreload" crossorigin href="./assets/vendor-yaml-Y43rmNgW.js">
32
- <link rel="stylesheet" crossorigin href="./assets/index-CHHZDc6d.css">
32
+ <link rel="stylesheet" crossorigin href="./assets/index-TBDfE2OO.css">
33
33
  </head>
34
34
  <body>
35
35
  <script id="theme-bootstrap">
@@ -10,18 +10,18 @@ import {
10
10
  backfillSnapshotAttributionCommand,
11
11
  backfillTrafficClassificationCommand,
12
12
  replayQueryAuditLog
13
- } from "./chunk-7HE4LAJY.js";
14
- import "./chunk-5NBXPO4G.js";
13
+ } from "./chunk-6OCQTAXU.js";
14
+ import "./chunk-7S6SQFFT.js";
15
15
  import "./chunk-3QJWOF2B.js";
16
16
  import "./chunk-HGMYEDAQ.js";
17
17
  import "./chunk-JERATA5R.js";
18
18
  import {
19
19
  backfillProjectAnswerMentions,
20
20
  backfillProjectAnswerMentionsInChunks
21
- } from "./chunk-PRCBHOVR.js";
21
+ } from "./chunk-KUMHO22S.js";
22
22
  import "./chunk-O4WBYEGV.js";
23
23
  import "./chunk-3MGM3U6V.js";
24
- import "./chunk-PH4AESRE.js";
24
+ import "./chunk-HRFPGXON.js";
25
25
  import "./chunk-PM2DB3HE.js";
26
26
  import "./chunk-MLKGABMK.js";
27
27
  export {
@@ -44,7 +44,7 @@ import {
44
44
  createClient,
45
45
  dashboardSessions,
46
46
  migrate
47
- } from "./chunk-PH4AESRE.js";
47
+ } from "./chunk-HRFPGXON.js";
48
48
  import {
49
49
  ProviderNames,
50
50
  ProviderReloadErrorReasons
@@ -5,10 +5,11 @@ import {
5
5
  isStoredPageReadTool,
6
6
  isStoredReadTool,
7
7
  truncateToolResult
8
- } from "./chunk-IYMTQHPD.js";
8
+ } from "./chunk-I7RTAHCL.js";
9
9
  import {
10
- CANONRY_MCP_TOOLKITS
11
- } from "./chunk-WVCDUKJ2.js";
10
+ CANONRY_MCP_TOOLKITS,
11
+ resolveAeroSkillDir
12
+ } from "./chunk-JI7FDO7I.js";
12
13
  import {
13
14
  AGENT_REASONING_LEVELS,
14
15
  aeroStreamFn,
@@ -33,7 +34,7 @@ import {
33
34
  import {
34
35
  agentToolEvents,
35
36
  llmUsageEvents
36
- } from "./chunk-PH4AESRE.js";
37
+ } from "./chunk-HRFPGXON.js";
37
38
  import {
38
39
  MeasurementPortfolioLists,
39
40
  SeoCapabilities,
@@ -45,8 +46,8 @@ import {
45
46
  } from "./chunk-PM2DB3HE.js";
46
47
 
47
48
  // src/agent/session.ts
48
- import fs3 from "fs";
49
- import path3 from "path";
49
+ import fs2 from "fs";
50
+ import path2 from "path";
50
51
  import { Agent } from "@earendil-works/pi-agent-core";
51
52
 
52
53
  // src/agent-config.ts
@@ -75,27 +76,9 @@ function resolveAgentReasoning(env, config, provider, modelId) {
75
76
  return config.agent?.reasoning ?? defaultAgentReasoning(provider, modelId);
76
77
  }
77
78
 
78
- // src/agent/skill-paths.ts
79
+ // src/agent/skill-tools.ts
79
80
  import fs from "fs";
80
81
  import path from "path";
81
- import { fileURLToPath } from "url";
82
- function resolveAeroSkillDir(pkgDir) {
83
- const here = pkgDir ?? path.dirname(fileURLToPath(import.meta.url));
84
- const candidates = [
85
- path.join(here, "../assets/agent-workspace/skills/aero"),
86
- path.join(here, "../../assets/agent-workspace/skills/aero"),
87
- path.join(here, "../../../../skills/aero")
88
- ];
89
- for (const candidate of candidates) {
90
- if (fs.existsSync(path.join(candidate, "SKILL.md"))) return candidate;
91
- }
92
- throw new Error(`Aero skill not found. Searched:
93
- ${candidates.join("\n ")}`);
94
- }
95
-
96
- // src/agent/skill-tools.ts
97
- import fs2 from "fs";
98
- import path2 from "path";
99
82
  import { Type } from "@earendil-works/pi-ai";
100
83
  var MAX_DOC_CHARS = 2e4;
101
84
  function textResult(details) {
@@ -116,13 +99,13 @@ function parseDescription(body) {
116
99
  return "(no description)";
117
100
  }
118
101
  function scanSkillDocs(skillDir) {
119
- const refsDir = path2.join(skillDir ?? resolveAeroSkillDir(), "references");
120
- if (!fs2.existsSync(refsDir)) return [];
102
+ const refsDir = path.join(skillDir ?? resolveAeroSkillDir(), "references");
103
+ if (!fs.existsSync(refsDir)) return [];
121
104
  const entries = [];
122
- for (const file of fs2.readdirSync(refsDir)) {
105
+ for (const file of fs.readdirSync(refsDir)) {
123
106
  if (!file.endsWith(".md")) continue;
124
- const filePath = path2.join(refsDir, file);
125
- const body = fs2.readFileSync(filePath, "utf-8");
107
+ const filePath = path.join(refsDir, file);
108
+ const body = fs.readFileSync(filePath, "utf-8");
126
109
  entries.push({
127
110
  slug: file.replace(/\.md$/, ""),
128
111
  description: parseDescription(body),
@@ -165,8 +148,8 @@ function buildReadSkillDocTool() {
165
148
  availableSlugs: docs.map((d) => d.slug)
166
149
  });
167
150
  }
168
- const filePath = path2.join(skillDir, "references", `${match.slug}.md`);
169
- const content = fs2.readFileSync(filePath, "utf-8");
151
+ const filePath = path.join(skillDir, "references", `${match.slug}.md`);
152
+ const content = fs.readFileSync(filePath, "utf-8");
170
153
  if (content.length > MAX_DOC_CHARS) {
171
154
  return textResult({
172
155
  slug: match.slug,
@@ -360,9 +343,9 @@ function resolvePageReferences(runtime, tool, params) {
360
343
  }
361
344
  return resolved;
362
345
  }
363
- function pageOwner(value, path4) {
346
+ function pageOwner(value, path3) {
364
347
  let owner = value;
365
- for (const key of path4) {
348
+ for (const key of path3) {
366
349
  if (owner === null || typeof owner !== "object" || Array.isArray(owner)) return void 0;
367
350
  owner = owner[key];
368
351
  }
@@ -397,8 +380,8 @@ function referencePages(runtime, tool, params, value) {
397
380
  });
398
381
  owner[cursor.key] = reference;
399
382
  const pagination = pageOwner(root.__pagination, []);
400
- for (const [path4, note] of Object.entries(pagination ?? {})) {
401
- if (typeof note === "string") pagination[path4] = note.split(token).join(reference);
383
+ for (const [path3, note] of Object.entries(pagination ?? {})) {
384
+ if (typeof note === "string") pagination[path3] = note.split(token).join(reference);
402
385
  }
403
386
  changed = true;
404
387
  }
@@ -927,9 +910,9 @@ function ensureBuiltinsRegistered() {
927
910
  }
928
911
  function loadAeroSystemPrompt(pkgDir, opts = {}) {
929
912
  const skillDir = resolveAeroSkillDir(pkgDir);
930
- const skillBody = fs3.readFileSync(path3.join(skillDir, "SKILL.md"), "utf-8");
931
- const soulPath = path3.join(skillDir, "soul.md");
932
- const base = fs3.existsSync(soulPath) ? `${fs3.readFileSync(soulPath, "utf-8").trimEnd()}
913
+ const skillBody = fs2.readFileSync(path2.join(skillDir, "SKILL.md"), "utf-8");
914
+ const soulPath = path2.join(skillDir, "soul.md");
915
+ const base = fs2.existsSync(soulPath) ? `${fs2.readFileSync(soulPath, "utf-8").trimEnd()}
933
916
 
934
917
  ---
935
918
 
@@ -942,7 +925,7 @@ function appendSystemPromptExtras(base, env = process.env) {
942
925
  const filePath = env.AERO_SYSTEM_PROMPT_FILE?.trim();
943
926
  if (filePath) {
944
927
  try {
945
- fileBody = fs3.readFileSync(filePath, "utf-8").trim();
928
+ fileBody = fs2.readFileSync(filePath, "utf-8").trim();
946
929
  } catch {
947
930
  fileBody = "";
948
931
  }
@@ -1070,7 +1053,6 @@ export {
1070
1053
  resolveAgentAllowViewers,
1071
1054
  resolveAgentReasoning,
1072
1055
  AeroLlmUsageFeatures,
1073
- resolveAeroSkillDir,
1074
1056
  buildSkillDocTools,
1075
1057
  configureAeroRuntime,
1076
1058
  isSystemMessage,
@@ -7,7 +7,7 @@ import {
7
7
  reparseStoredResult4,
8
8
  reparseStoredResult5,
9
9
  resolveStoredApiResponse
10
- } from "./chunk-5NBXPO4G.js";
10
+ } from "./chunk-7S6SQFFT.js";
11
11
  import {
12
12
  loadConfig
13
13
  } from "./chunk-3QJWOF2B.js";
@@ -23,12 +23,13 @@ import {
23
23
  createRunCompetitorResolver,
24
24
  readMarketCompetitorNames,
25
25
  refreshSnapshotMentionIdentity
26
- } from "./chunk-PRCBHOVR.js";
26
+ } from "./chunk-KUMHO22S.js";
27
27
  import {
28
28
  classifyAiUserFetch,
29
29
  classifyCrawler
30
30
  } from "./chunk-O4WBYEGV.js";
31
31
  import {
32
+ RawEventSampleEventTypes,
32
33
  aiUserFetchEventsHourly,
33
34
  auditLog,
34
35
  competitors,
@@ -42,13 +43,12 @@ import {
42
43
  querySnapshots,
43
44
  rawEventSamples,
44
45
  runs
45
- } from "./chunk-PH4AESRE.js";
46
+ } from "./chunk-HRFPGXON.js";
46
47
  import {
47
48
  ProviderNames,
48
49
  RetrievalContracts,
49
50
  RunKinds,
50
51
  TrafficEventConfidences,
51
- TrafficEventKinds,
52
52
  TrafficEvidenceKinds,
53
53
  TrafficSourceTypes,
54
54
  computeCompetitorOverlap,
@@ -437,7 +437,7 @@ No DB writes performed. Re-run without --dry-run to apply.`);
437
437
  }
438
438
  }
439
439
  async function backfillInsightsCommand(project, opts) {
440
- const { IntelligenceService } = await import("./intelligence-service-MPNONLCW.js");
440
+ const { IntelligenceService } = await import("./intelligence-service-5STL6A45.js");
441
441
  const config = loadConfig();
442
442
  const db = createClient(config.database);
443
443
  migrate(db);
@@ -811,7 +811,7 @@ async function backfillTrafficClassificationCommand(opts) {
811
811
  byBot: {}
812
812
  };
813
813
  const unknownCountRow = db.select({ n: sql`count(*)` }).from(rawEventSamples).where(and(
814
- eq(rawEventSamples.eventType, "unknown"),
814
+ eq(rawEventSamples.eventType, RawEventSampleEventTypes.unknown),
815
815
  inArray(rawEventSamples.projectId, projectIds)
816
816
  )).get();
817
817
  result.unknownBefore = Number(unknownCountRow?.n ?? 0);
@@ -824,7 +824,7 @@ async function backfillTrafficClassificationCommand(opts) {
824
824
  pathNormalized: rawEventSamples.pathNormalized,
825
825
  status: rawEventSamples.status
826
826
  }).from(rawEventSamples).where(and(
827
- eq(rawEventSamples.eventType, "unknown"),
827
+ eq(rawEventSamples.eventType, RawEventSampleEventTypes.unknown),
828
828
  inArray(rawEventSamples.projectId, projectIds)
829
829
  )).all();
830
830
  result.examined = unknownSamples.length;
@@ -868,7 +868,14 @@ async function backfillTrafficClassificationCommand(opts) {
868
868
  const tsHourIso = tsHour.toISOString();
869
869
  const status = snap.status ?? 200;
870
870
  db.transaction((tx) => {
871
- tx.update(rawEventSamples).set({ eventType: userFetch ? TrafficEventKinds["ai-user-fetch"] : TrafficEventKinds.crawler }).where(eq(rawEventSamples.id, snap.id)).run();
871
+ tx.update(rawEventSamples).set({
872
+ eventType: userFetch ? RawEventSampleEventTypes.aiUserFetch : RawEventSampleEventTypes.crawler,
873
+ classifierDetailsJson: {
874
+ crawler: userFetch ? null : { ...classified, verificationManifest: null },
875
+ aiUserFetch: userFetch ? { ...userFetch, verificationManifest: null } : null,
876
+ aiReferral: null
877
+ }
878
+ }).where(eq(rawEventSamples.id, snap.id)).run();
872
879
  if (userFetch) {
873
880
  tx.insert(aiUserFetchEventsHourly).values({
874
881
  projectId: snap.projectId,
@@ -932,7 +939,7 @@ async function backfillTrafficClassificationCommand(opts) {
932
939
  }
933
940
  if (!isDryRun) {
934
941
  const afterRow = db.select({ n: sql`count(*)` }).from(rawEventSamples).where(and(
935
- eq(rawEventSamples.eventType, "unknown"),
942
+ eq(rawEventSamples.eventType, RawEventSampleEventTypes.unknown),
936
943
  inArray(rawEventSamples.projectId, projectIds)
937
944
  )).get();
938
945
  result.unknownAfter = Number(afterRow?.n ?? 0);
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  parseJsonColumn
3
- } from "./chunk-PH4AESRE.js";
3
+ } from "./chunk-HRFPGXON.js";
4
4
  import {
5
5
  AI_ENGINE_DOMAINS,
6
6
  AI_ENGINE_SELF_DOMAINS,
@@ -727,7 +727,7 @@ var DEMO_CLI_COMMANDS = [{
727
727
  options: { host: stringOption(), port: stringOption(), "trust-proxy": multiStringOption() },
728
728
  allowPositionals: false,
729
729
  run: async (input) => {
730
- const { demoCommand } = await import("./demo-3R2SHQPO.js");
730
+ const { demoCommand } = await import("./demo-COMFIESH.js");
731
731
  await demoCommand({
732
732
  host: getString(input.values, "host"),
733
733
  port: getString(input.values, "port"),
@@ -748,7 +748,7 @@ var BACKFILL_CLI_COMMANDS = [
748
748
  allowPositionals: false,
749
749
  supportsDryRun: true,
750
750
  run: async (input) => {
751
- const { backfillAnswerVisibilityCommand } = await import("./backfill-IRVLT6VT.js");
751
+ const { backfillAnswerVisibilityCommand } = await import("./backfill-SRE52FDL.js");
752
752
  await backfillAnswerVisibilityCommand({
753
753
  project: getString(input.values, "project"),
754
754
  dryRun: input.dryRun,
@@ -765,7 +765,7 @@ var BACKFILL_CLI_COMMANDS = [
765
765
  allowPositionals: false,
766
766
  supportsDryRun: true,
767
767
  run: async (input) => {
768
- const { backfillAnswerMentionsCommand } = await import("./backfill-IRVLT6VT.js");
768
+ const { backfillAnswerMentionsCommand } = await import("./backfill-SRE52FDL.js");
769
769
  await backfillAnswerMentionsCommand({
770
770
  project: getString(input.values, "project"),
771
771
  dryRun: input.dryRun,
@@ -783,7 +783,7 @@ var BACKFILL_CLI_COMMANDS = [
783
783
  },
784
784
  supportsDryRun: true,
785
785
  run: async (input) => {
786
- const { backfillInsightsCommand } = await import("./backfill-IRVLT6VT.js");
786
+ const { backfillInsightsCommand } = await import("./backfill-SRE52FDL.js");
787
787
  const usage = "canonry backfill insights <project> [--from-run <id>] [--to-run <id>] [--since <date>] [--dry-run] [--format json]";
788
788
  const project3 = requireProject(input, "backfill insights", usage);
789
789
  await backfillInsightsCommand(project3, {
@@ -803,7 +803,7 @@ var BACKFILL_CLI_COMMANDS = [
803
803
  },
804
804
  allowPositionals: false,
805
805
  run: async (input) => {
806
- const { backfillNormalizedPathsCommand } = await import("./backfill-IRVLT6VT.js");
806
+ const { backfillNormalizedPathsCommand } = await import("./backfill-SRE52FDL.js");
807
807
  await backfillNormalizedPathsCommand({
808
808
  project: getString(input.values, "project"),
809
809
  format: input.format
@@ -818,7 +818,7 @@ var BACKFILL_CLI_COMMANDS = [
818
818
  },
819
819
  allowPositionals: false,
820
820
  run: async (input) => {
821
- const { backfillAiReferralPathsCommand } = await import("./backfill-IRVLT6VT.js");
821
+ const { backfillAiReferralPathsCommand } = await import("./backfill-SRE52FDL.js");
822
822
  await backfillAiReferralPathsCommand({
823
823
  project: getString(input.values, "project"),
824
824
  format: input.format
@@ -830,7 +830,7 @@ var BACKFILL_CLI_COMMANDS = [
830
830
  usage: "canonry backfill snapshot-attribution <project> [--dry-run] [--format json]",
831
831
  supportsDryRun: true,
832
832
  run: async (input) => {
833
- const { backfillSnapshotAttributionCommand } = await import("./backfill-IRVLT6VT.js");
833
+ const { backfillSnapshotAttributionCommand } = await import("./backfill-SRE52FDL.js");
834
834
  const usage = "canonry backfill snapshot-attribution <project> [--dry-run] [--format json]";
835
835
  const project3 = requireProject(input, "backfill snapshot-attribution", usage);
836
836
  await backfillSnapshotAttributionCommand({
@@ -849,7 +849,7 @@ var BACKFILL_CLI_COMMANDS = [
849
849
  allowPositionals: false,
850
850
  supportsDryRun: true,
851
851
  run: async (input) => {
852
- const { backfillTrafficClassificationCommand } = await import("./backfill-IRVLT6VT.js");
852
+ const { backfillTrafficClassificationCommand } = await import("./backfill-SRE52FDL.js");
853
853
  await backfillTrafficClassificationCommand({
854
854
  project: getString(input.values, "project"),
855
855
  dryRun: input.dryRun,
@@ -1291,7 +1291,7 @@ var DASHBOARD_CLI_COMMANDS = [
1291
1291
  usage: "canonry dashboard reset-password [--format json]",
1292
1292
  help: "Clears the dashboard password from config.yaml, so the dashboard asks for a new one after a restart.\nLocal only: it edits the config file under CANONRY_CONFIG_DIR and does not call the server.",
1293
1293
  run: async (input) => {
1294
- const { resetDashboardPassword } = await import("./dashboard-6MMYA2GG.js");
1294
+ const { resetDashboardPassword } = await import("./dashboard-43ST35IW.js");
1295
1295
  await resetDashboardPassword({ format: input.format });
1296
1296
  }
1297
1297
  },
@@ -6868,7 +6868,7 @@ var SYSTEM_CLI_COMMANDS = [
6868
6868
  options: { access: stringOption() },
6869
6869
  run: async (input) => {
6870
6870
  if (input.positionals.length > 1) throw usageError("Expected at most one command group");
6871
- const [{ printCliCatalog }, { REGISTERED_CLI_COMMANDS: REGISTERED_CLI_COMMANDS2 }] = await Promise.all([import("./cli-catalog-KC6JYHSW.js"), import("./cli-commands-6M5QDGBZ.js")]);
6871
+ const [{ printCliCatalog }, { REGISTERED_CLI_COMMANDS: REGISTERED_CLI_COMMANDS2 }] = await Promise.all([import("./cli-catalog-KC6JYHSW.js"), import("./cli-commands-BZLUMYKR.js")]);
6872
6872
  printCliCatalog(REGISTERED_CLI_COMMANDS2, input.format, input.positionals[0], getString(input.values, "access"));
6873
6873
  }
6874
6874
  },
@@ -6917,7 +6917,7 @@ var SYSTEM_CLI_COMMANDS = [
6917
6917
  },
6918
6918
  allowPositionals: false,
6919
6919
  run: async (input) => {
6920
- const { initCommand } = await import("./init-FLWVOJHU.js");
6920
+ const { initCommand } = await import("./init-YKLLVT7X.js");
6921
6921
  await initCommand({
6922
6922
  force: getBoolean(input.values, "force"),
6923
6923
  ref: getString(input.values, "ref"),
@@ -6950,7 +6950,7 @@ var SYSTEM_CLI_COMMANDS = [
6950
6950
  },
6951
6951
  allowPositionals: false,
6952
6952
  run: async (input) => {
6953
- const { bootstrapCommand } = await import("./bootstrap-WZ6YDQIG.js");
6953
+ const { bootstrapCommand } = await import("./bootstrap-ITVA7X45.js");
6954
6954
  await bootstrapCommand({
6955
6955
  format: input.format,
6956
6956
  ref: getString(input.values, "ref")
@@ -6972,7 +6972,7 @@ var SYSTEM_CLI_COMMANDS = [
6972
6972
  allowPositionals: false,
6973
6973
  run: async (input) => {
6974
6974
  applyServerEnv(input.values);
6975
- const { serveCommand } = await import("./serve-7HN3VT6J.js");
6975
+ const { serveCommand } = await import("./serve-VU3E7XTX.js");
6976
6976
  await serveCommand(input.format);
6977
6977
  }
6978
6978
  },
@@ -8290,8 +8290,8 @@ var AGENT_CLI_COMMANDS = [
8290
8290
  "timeout-ms": stringOption()
8291
8291
  },
8292
8292
  run: async (input) => {
8293
- const { coerceAgentProvider } = await import("./session-FBHHWILQ.js");
8294
- const { AERO_TOOL_PROFILES, isAeroToolProfile } = await import("./tools-3ACR2D2V.js");
8293
+ const { coerceAgentProvider } = await import("./session-JKMEKQYL.js");
8294
+ const { AERO_TOOL_PROFILES, isAeroToolProfile } = await import("./tools-LGTWLH5Y.js");
8295
8295
  const { agentAsk } = await import("./agent-ask-32RTOL2M.js");
8296
8296
  const usage = `canonry agent ask <project> "<prompt>" [--provider ${AGENT_PROVIDER_IDS.join("|")}] [--model <id>] [--scope all|read-only] [--profile default|ads-operator] [--context <json>] [--conversation <id>] [--max-tool-calls <n>] [--timeout-ms <ms>] [--format json]`;
8297
8297
  const project3 = requireProject(input, "agent.ask", usage);
@@ -34,6 +34,7 @@ import { drizzle } from "drizzle-orm/better-sqlite3";
34
34
  // ../db/src/schema.ts
35
35
  var schema_exports = {};
36
36
  __export(schema_exports, {
37
+ RawEventSampleEventTypes: () => RawEventSampleEventTypes,
37
38
  adsActivationGrants: () => adsActivationGrants,
38
39
  adsAdGroups: () => adsAdGroups,
39
40
  adsAds: () => adsAds,
@@ -2612,6 +2613,12 @@ var rawEventSamples = sqliteTable2("raw_event_samples", {
2612
2613
  index2("idx_raw_event_samples_source_ts").on(table.sourceId, table.ts),
2613
2614
  index2("idx_raw_event_samples_event_type").on(table.eventType)
2614
2615
  ]);
2616
+ var RawEventSampleEventTypes = {
2617
+ crawler: "crawler",
2618
+ aiUserFetch: "ai_user_fetch",
2619
+ aiReferral: "ai_referral",
2620
+ unknown: "unknown"
2621
+ };
2615
2622
  var journeyVisitors = sqliteTable2("journey_visitors", {
2616
2623
  projectId: text2("project_id").notNull().references(() => projects.id, { onDelete: "cascade" }),
2617
2624
  visitorKey: text2("visitor_key").notNull(),
@@ -8353,6 +8360,16 @@ var MIGRATION_VERSIONS = [
8353
8360
  WHERE (delegated_user_id IS NOT NULL AND name = 'mcp-session:' || delegated_user_id)
8354
8361
  OR (delegated_user_id IS NULL AND name GLOB 'mcp-session:*')`
8355
8362
  ]
8363
+ },
8364
+ {
8365
+ // The traffic-classification backfill stored reclassified AI user-fetch
8366
+ // samples as the wire kind 'ai-user-fetch' instead of the stored
8367
+ // 'ai_user_fetch', so sample reads never returned them. A no-op once fixed.
8368
+ version: 200,
8369
+ name: "raw-event-samples-user-fetch-event-type",
8370
+ statements: [
8371
+ `UPDATE raw_event_samples SET event_type = 'ai_user_fetch' WHERE event_type = 'ai-user-fetch'`
8372
+ ]
8356
8373
  }
8357
8374
  ];
8358
8375
  var AERO_LEDGER_REBUILDS = [
@@ -9860,6 +9877,7 @@ export {
9860
9877
  aiUserFetchVerificationManifestsHourly,
9861
9878
  aiReferralEventsHourly,
9862
9879
  rawEventSamples,
9880
+ RawEventSampleEventTypes,
9863
9881
  journeyVisitors,
9864
9882
  journeyVisits,
9865
9883
  journeyEvents,
@@ -10,7 +10,7 @@ import {
10
10
  } from "./chunk-HGMYEDAQ.js";
11
11
  import {
12
12
  buildOpenApiDocument
13
- } from "./chunk-PRCBHOVR.js";
13
+ } from "./chunk-KUMHO22S.js";
14
14
  import {
15
15
  DEFAULT_COMPETITOR_AUTO_ALIAS_MODE,
16
16
  MeasurementPortfolioLists,
@@ -1,3 +1,21 @@
1
+ // src/agent/skill-paths.ts
2
+ import fs from "fs";
3
+ import path from "path";
4
+ import { fileURLToPath } from "url";
5
+ function resolveAeroSkillDir(pkgDir) {
6
+ const here = pkgDir ?? path.dirname(fileURLToPath(import.meta.url));
7
+ const candidates = [
8
+ path.join(here, "../assets/agent-workspace/skills/aero"),
9
+ path.join(here, "../../assets/agent-workspace/skills/aero"),
10
+ path.join(here, "../../../../skills/aero")
11
+ ];
12
+ for (const candidate of candidates) {
13
+ if (fs.existsSync(path.join(candidate, "SKILL.md"))) return candidate;
14
+ }
15
+ throw new Error(`Aero skill not found. Searched:
16
+ ${candidates.join("\n ")}`);
17
+ }
18
+
1
19
  // src/mcp/toolkits.ts
2
20
  var CANONRY_MCP_TIERS = [
3
21
  "seo",
@@ -125,6 +143,7 @@ function isCanonryMcpToolkitName(value) {
125
143
  }
126
144
 
127
145
  export {
146
+ resolveAeroSkillDir,
128
147
  CANONRY_MCP_TIERS,
129
148
  CANONRY_MCP_TOOLKIT_NAMES,
130
149
  CANONRY_MCP_TOOLKITS,
@@ -18,6 +18,7 @@ import {
18
18
  sanitizeRequestContext
19
19
  } from "./chunk-3MGM3U6V.js";
20
20
  import {
21
+ RawEventSampleEventTypes,
21
22
  SentimentIdempotencyConflict,
22
23
  SentimentRepository,
23
24
  SeoRepository,
@@ -157,7 +158,7 @@ import {
157
158
  userSessions,
158
159
  users,
159
160
  writeNegativeReviewMaxStars
160
- } from "./chunk-PH4AESRE.js";
161
+ } from "./chunk-HRFPGXON.js";
161
162
  import {
162
163
  ADS_ACTIVATE_SCOPE,
163
164
  ADS_ACTIVATION_ABSOLUTE_MAX_ENTITIES,
@@ -29568,10 +29569,10 @@ async function trafficAnalyticsRoutes(app) {
29568
29569
  // ../api-routes/src/traffic-samples.ts
29569
29570
  import { and as and41, count as count3, desc as desc22, eq as eq49, gte as gte9, inArray as inArray27, lte as lte8, sql as sql14 } from "drizzle-orm";
29570
29571
  var storedKind = {
29571
- [TrafficSampleKinds.crawler]: "crawler",
29572
- [TrafficSampleKinds["ai-user-fetch"]]: "ai_user_fetch",
29573
- [TrafficSampleKinds["ai-referral"]]: "ai_referral",
29574
- [TrafficSampleKinds.unknown]: "unknown"
29572
+ [TrafficSampleKinds.crawler]: RawEventSampleEventTypes.crawler,
29573
+ [TrafficSampleKinds["ai-user-fetch"]]: RawEventSampleEventTypes.aiUserFetch,
29574
+ [TrafficSampleKinds["ai-referral"]]: RawEventSampleEventTypes.aiReferral,
29575
+ [TrafficSampleKinds.unknown]: RawEventSampleEventTypes.unknown
29575
29576
  };
29576
29577
  var wireKind = new Map(Object.entries(storedKind).map(([kind, stored]) => [stored, kind]));
29577
29578
  async function trafficSamplesRoutes(app) {
@@ -62634,6 +62635,12 @@ function retainedRawEventSampleTimestamp(observedAt, cutoff) {
62634
62635
 
62635
62636
  // ../api-routes/src/traffic-event-ingest.ts
62636
62637
  var DIRECT_PUSH_RECEIPT_TTL_MS = 10 * 6e4;
62638
+ function rawEventSampleEventType(sample) {
62639
+ if (sample.crawler) return RawEventSampleEventTypes.crawler;
62640
+ if (sample.aiUserFetch) return RawEventSampleEventTypes.aiUserFetch;
62641
+ if (sample.aiReferral) return RawEventSampleEventTypes.aiReferral;
62642
+ return RawEventSampleEventTypes.unknown;
62643
+ }
62637
62644
  function observedUtcHourBounds(observedAt) {
62638
62645
  const instant = new Date(observedAt);
62639
62646
  if (Number.isNaN(instant.getTime())) return null;
@@ -62879,7 +62886,7 @@ function writeTrafficEventBatch(opts) {
62879
62886
  remainingSamplesByHour.set(hour.start, 0);
62880
62887
  continue;
62881
62888
  }
62882
- const eventType = sample.crawler ? "crawler" : sample.aiUserFetch ? "ai_user_fetch" : sample.aiReferral ? "ai_referral" : "unknown";
62889
+ const eventType = rawEventSampleEventType(sample);
62883
62890
  const refererHost = (() => {
62884
62891
  if (!sample.referer) return null;
62885
62892
  try {
@@ -63724,7 +63731,7 @@ async function runBackfillTaskHoldingLease(options, signal) {
63724
63731
  for (const sample of report.samples) {
63725
63732
  const sampleTimestamp = retainedRawEventSampleTimestamp(sample.observedAt, rawSampleCutoff);
63726
63733
  if (!sampleTimestamp) continue;
63727
- const eventType = sample.crawler ? "crawler" : sample.aiUserFetch ? "ai_user_fetch" : sample.aiReferral ? "ai_referral" : "unknown";
63734
+ const eventType = rawEventSampleEventType(sample);
63728
63735
  const refererHost = (() => {
63729
63736
  if (!sample.referer) return null;
63730
63737
  try {
@@ -65615,7 +65622,7 @@ async function trafficRoutes(app, opts) {
65615
65622
  for (const sample of report.samples) {
65616
65623
  const sampleTimestamp = retainedRawEventSampleTimestamp(sample.observedAt, rawSampleCutoff);
65617
65624
  if (!sampleTimestamp) continue;
65618
- const eventType = sample.crawler ? "crawler" : sample.aiUserFetch ? "ai_user_fetch" : sample.aiReferral ? "ai_referral" : "unknown";
65625
+ const eventType = rawEventSampleEventType(sample);
65619
65626
  const refererHost = (() => {
65620
65627
  if (!sample.referer) return null;
65621
65628
  try {
@@ -5,7 +5,7 @@ import {
5
5
  siteCrawlGraphNodes,
6
6
  siteCrawlPages,
7
7
  siteCrawlSnapshots
8
- } from "./chunk-PH4AESRE.js";
8
+ } from "./chunk-HRFPGXON.js";
9
9
  import {
10
10
  SITE_CRAWL_GRAPH_MAX_EDGES,
11
11
  SITE_CRAWL_GRAPH_MAX_NODES,