@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.
- package/assets/agent-workspace/skills/aero/references/agent-operations.md +6 -0
- package/assets/agent-workspace/skills/canonry/SKILL.md +6 -0
- package/assets/assets/{AgentSetupPage-BGdvyQFL.js → AgentSetupPage-Cr2ZU_4s.js} +1 -1
- package/assets/assets/{MeasurementPropertyPage-CwPuJMBy.js → MeasurementPropertyPage-ighxjOiq.js} +1 -1
- package/assets/assets/{ProjectPage-Bbnbg7c9.js → ProjectPage-DnAXCPle.js} +2 -2
- package/assets/assets/{RunsPage-CJHJ7kHk.js → RunsPage-Ds5K3fOQ.js} +1 -1
- package/assets/assets/{SettingsPage-r8VrtFyJ.js → SettingsPage-B8Jed-xH.js} +1 -1
- package/assets/assets/{SiteHealthSection-D1oSuo9O.js → SiteHealthSection-cjNQasWj.js} +2 -2
- package/assets/assets/{TrafficPage-DY2ykwH1.js → TrafficPage-BUid1rkh.js} +1 -1
- package/assets/assets/{index-Dfm8z5cG.js → index-BhoSVTom.js} +3 -3
- package/assets/assets/index-TBDfE2OO.css +1 -0
- package/assets/assets/{react-sigma_core.esm.min-Bjdtl0TQ.js → react-sigma_core.esm.min-SbOH7c6K.js} +1 -1
- package/assets/index.html +2 -2
- package/dist/{backfill-IRVLT6VT.js → backfill-SRE52FDL.js} +4 -4
- package/dist/{bootstrap-WZ6YDQIG.js → bootstrap-ITVA7X45.js} +1 -1
- package/dist/{chunk-OES6PSQK.js → chunk-27MGZQ6Z.js} +23 -41
- package/dist/{chunk-7HE4LAJY.js → chunk-6OCQTAXU.js} +16 -9
- package/dist/{chunk-5NBXPO4G.js → chunk-7S6SQFFT.js} +1 -1
- package/dist/{chunk-KHIZSTDP.js → chunk-DEQC5XVD.js} +15 -15
- package/dist/{chunk-PH4AESRE.js → chunk-HRFPGXON.js} +18 -0
- package/dist/{chunk-IYMTQHPD.js → chunk-I7RTAHCL.js} +1 -1
- package/dist/{chunk-WVCDUKJ2.js → chunk-JI7FDO7I.js} +19 -0
- package/dist/{chunk-PRCBHOVR.js → chunk-KUMHO22S.js} +15 -8
- package/dist/{chunk-LBNUTWPK.js → chunk-OIRHCT63.js} +1 -1
- package/dist/{chunk-QALET4XH.js → chunk-QOKK5PMO.js} +10 -10
- package/dist/{chunk-BKOG3GEI.js → chunk-RPTOVEZT.js} +79 -9
- package/dist/{chunk-LOMRNRML.js → chunk-SWWZ733W.js} +2 -2
- package/dist/{chunk-BTMLE3EN.js → chunk-ZMMS3FAR.js} +2 -2
- package/dist/{cli-commands-6M5QDGBZ.js → cli-commands-BZLUMYKR.js} +1 -1
- package/dist/cli.js +2 -2
- package/dist/{dashboard-6MMYA2GG.js → dashboard-43ST35IW.js} +2 -2
- package/dist/{demo-3R2SHQPO.js → demo-COMFIESH.js} +1 -1
- package/dist/{demo-server-ISJOEJN5.js → demo-server-MRGL3SNP.js} +4 -4
- package/dist/index.d.ts +16 -144
- package/dist/index.js +10 -10
- package/dist/{init-FLWVOJHU.js → init-YKLLVT7X.js} +2 -2
- package/dist/{intelligence-service-MPNONLCW.js → intelligence-service-5STL6A45.js} +3 -3
- package/dist/mcp.js +2 -2
- package/dist/{serve-7HN3VT6J.js → serve-VU3E7XTX.js} +11 -11
- package/dist/{session-FBHHWILQ.js → session-JKMEKQYL.js} +7 -6
- package/dist/{src-AQ5MHQGQ.js → src-QC2VNJWJ.js} +3 -1
- package/dist/{tools-3ACR2D2V.js → tools-LGTWLH5Y.js} +3 -3
- package/package.json +1 -1
- package/assets/assets/index-CHHZDc6d.css +0 -1
package/assets/assets/{react-sigma_core.esm.min-Bjdtl0TQ.js → react-sigma_core.esm.min-SbOH7c6K.js}
RENAMED
|
@@ -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-
|
|
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-
|
|
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-
|
|
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-
|
|
14
|
-
import "./chunk-
|
|
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-
|
|
21
|
+
} from "./chunk-KUMHO22S.js";
|
|
22
22
|
import "./chunk-O4WBYEGV.js";
|
|
23
23
|
import "./chunk-3MGM3U6V.js";
|
|
24
|
-
import "./chunk-
|
|
24
|
+
import "./chunk-HRFPGXON.js";
|
|
25
25
|
import "./chunk-PM2DB3HE.js";
|
|
26
26
|
import "./chunk-MLKGABMK.js";
|
|
27
27
|
export {
|
|
@@ -5,10 +5,11 @@ import {
|
|
|
5
5
|
isStoredPageReadTool,
|
|
6
6
|
isStoredReadTool,
|
|
7
7
|
truncateToolResult
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-I7RTAHCL.js";
|
|
9
9
|
import {
|
|
10
|
-
CANONRY_MCP_TOOLKITS
|
|
11
|
-
|
|
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-
|
|
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
|
|
49
|
-
import
|
|
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-
|
|
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 =
|
|
120
|
-
if (!
|
|
102
|
+
const refsDir = path.join(skillDir ?? resolveAeroSkillDir(), "references");
|
|
103
|
+
if (!fs.existsSync(refsDir)) return [];
|
|
121
104
|
const entries = [];
|
|
122
|
-
for (const file of
|
|
105
|
+
for (const file of fs.readdirSync(refsDir)) {
|
|
123
106
|
if (!file.endsWith(".md")) continue;
|
|
124
|
-
const filePath =
|
|
125
|
-
const body =
|
|
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 =
|
|
169
|
-
const content =
|
|
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,
|
|
346
|
+
function pageOwner(value, path3) {
|
|
364
347
|
let owner = value;
|
|
365
|
-
for (const key of
|
|
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 [
|
|
401
|
-
if (typeof note === "string") pagination[
|
|
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 =
|
|
931
|
-
const soulPath =
|
|
932
|
-
const base =
|
|
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 =
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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,
|
|
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,
|
|
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({
|
|
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,
|
|
942
|
+
eq(rawEventSamples.eventType, RawEventSampleEventTypes.unknown),
|
|
936
943
|
inArray(rawEventSamples.projectId, projectIds)
|
|
937
944
|
)).get();
|
|
938
945
|
result.unknownAfter = Number(afterRow?.n ?? 0);
|
|
@@ -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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
8294
|
-
const { AERO_TOOL_PROFILES, isAeroToolProfile } = await import("./tools-
|
|
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,
|
|
@@ -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-
|
|
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]:
|
|
29572
|
-
[TrafficSampleKinds["ai-user-fetch"]]:
|
|
29573
|
-
[TrafficSampleKinds["ai-referral"]]:
|
|
29574
|
-
[TrafficSampleKinds.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
|
|
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
|
|
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
|
|
65625
|
+
const eventType = rawEventSampleEventType(sample);
|
|
65619
65626
|
const refererHost = (() => {
|
|
65620
65627
|
if (!sample.referer) return null;
|
|
65621
65628
|
try {
|