@canonry/canonry 4.156.0 → 4.157.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (27) hide show
  1. package/README.md +2 -2
  2. package/assets/agent-workspace/skills/canonry/SKILL.md +8 -3
  3. package/assets/agent-workspace/skills/canonry/references/server-side-traffic.md +454 -21
  4. package/assets/assets/{AuditHistoryPanel-gmJMVlXX.js → AuditHistoryPanel-D12lHs6n.js} +1 -1
  5. package/assets/assets/{BacklinksPage-Bv2sTCyN.js → BacklinksPage-D2ScFYru.js} +1 -1
  6. package/assets/assets/{HistoryPage-13q7GkiI.js → HistoryPage-jZ_I4rwX.js} +1 -1
  7. package/assets/assets/{MeasurementPropertyPage-BgBqXT1p.js → MeasurementPropertyPage-BIdQjXJT.js} +1 -1
  8. package/assets/assets/{ProjectPage-EsGwKhot.js → ProjectPage-CLvLOOtj.js} +3 -3
  9. package/assets/assets/{RunRow-bPzapIGJ.js → RunRow-Q2X0NR74.js} +1 -1
  10. package/assets/assets/{RunsPage-Dqfz18lH.js → RunsPage-Cw7YVsbJ.js} +1 -1
  11. package/assets/assets/{SettingsPage-_wMecn-V.js → SettingsPage-bFl2EXOD.js} +1 -1
  12. package/assets/assets/{TrafficPage-RYBdsOLB.js → TrafficPage-DJjhk7Jw.js} +1 -1
  13. package/assets/assets/{TrafficSourceDetailPage-DpeMMyKU.js → TrafficSourceDetailPage-CGKwIu9A.js} +1 -1
  14. package/assets/assets/{extract-error-message-DUarAlyD.js → extract-error-message-BHm98tXH.js} +1 -1
  15. package/assets/assets/{index-DP-fT2uI.js → index-VO6nKq5b.js} +25 -25
  16. package/assets/assets/{react-sigma_core.esm.min-DnypJl5w.js → react-sigma_core.esm.min-EzswMBkr.js} +1 -1
  17. package/assets/index.html +1 -1
  18. package/dist/{chunk-ZWESOFA5.js → chunk-AEIKAWOW.js} +88 -8
  19. package/dist/{chunk-CPASKGUE.js → chunk-KMTRO56O.js} +35 -1
  20. package/dist/{chunk-ABNN2ZVR.js → chunk-MEBL4EJO.js} +1820 -431
  21. package/dist/{chunk-AMPT2EP7.js → chunk-TRRVBTU5.js} +71 -0
  22. package/dist/cli.js +667 -142
  23. package/dist/index.d.ts +32 -0
  24. package/dist/index.js +4 -4
  25. package/dist/{intelligence-service-WHC7B32V.js → intelligence-service-YUUPSJRC.js} +2 -2
  26. package/dist/mcp.js +2 -2
  27. package/package.json +10 -9
@@ -1,4 +1,4 @@
1
- import{g as Bt,t as S,r as C}from"./vendor-tanstack-pFxw0eGP.js";import{e as Ht,G as Wt}from"./ProjectPage-EsGwKhot.js";import"./index-DP-fT2uI.js";import"./vendor-radix-BxMXSwbC.js";import"./vendor-recharts-C4ktw_aE.js";import"./vendor-lucide-BtYdosYk.js";import"./vendor-markdown-D274_wsI.js";import"./vendor-yaml-GWJz5H2G.js";import"./RunRow-bPzapIGJ.js";import"./ChartPrimitives-DXVLCdBi.js";import"./extract-error-message-DUarAlyD.js";import"./AuditHistoryPanel-gmJMVlXX.js";import"./v2-overview-adapter-COMP5UGt.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-pFxw0eGP.js";import{e as Ht,G as Wt}from"./ProjectPage-CLvLOOtj.js";import"./index-VO6nKq5b.js";import"./vendor-radix-BxMXSwbC.js";import"./vendor-recharts-C4ktw_aE.js";import"./vendor-lucide-BtYdosYk.js";import"./vendor-markdown-D274_wsI.js";import"./vendor-yaml-GWJz5H2G.js";import"./RunRow-Q2X0NR74.js";import"./ChartPrimitives-DXVLCdBi.js";import"./extract-error-message-BHm98tXH.js";import"./AuditHistoryPanel-D12lHs6n.js";import"./v2-overview-adapter-COMP5UGt.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
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-DP-fT2uI.js"></script>
15
+ <script type="module" crossorigin src="./assets/index-VO6nKq5b.js"></script>
16
16
  <link rel="modulepreload" crossorigin href="./assets/vendor-tanstack-pFxw0eGP.js">
17
17
  <link rel="modulepreload" crossorigin href="./assets/vendor-radix-BxMXSwbC.js">
18
18
  <link rel="modulepreload" crossorigin href="./assets/vendor-recharts-C4ktw_aE.js">
@@ -10,7 +10,7 @@ import {
10
10
  loadConfig,
11
11
  loadConfigRaw,
12
12
  saveConfigPatch
13
- } from "./chunk-CPASKGUE.js";
13
+ } from "./chunk-KMTRO56O.js";
14
14
  import {
15
15
  CC_CACHE_DIR,
16
16
  DUCKDB_SPEC,
@@ -136,7 +136,7 @@ import {
136
136
  siteCrawlSnapshots,
137
137
  toAlertView,
138
138
  usageCounters
139
- } from "./chunk-ABNN2ZVR.js";
139
+ } from "./chunk-MEBL4EJO.js";
140
140
  import {
141
141
  AGENT_MEMORY_VALUE_MAX_BYTES,
142
142
  AGENT_PROVIDER_IDS,
@@ -236,7 +236,7 @@ import {
236
236
  validationError,
237
237
  winnabilityClassLabel,
238
238
  withRetry
239
- } from "./chunk-AMPT2EP7.js";
239
+ } from "./chunk-TRRVBTU5.js";
240
240
 
241
241
  // src/telemetry.ts
242
242
  import crypto from "crypto";
@@ -3167,8 +3167,67 @@ function removeVercelTrafficConnection(config, projectName) {
3167
3167
  return true;
3168
3168
  }
3169
3169
 
3170
- // src/wordpress-config.ts
3170
+ // src/cloudflare-traffic-config.ts
3171
+ function unsupportedDeliveryMode(deliveryMode) {
3172
+ const label = typeof deliveryMode === "string" ? ` "${deliveryMode}"` : "";
3173
+ return new Error(`Unsupported Cloudflare traffic delivery mode${label}`);
3174
+ }
3171
3175
  function ensureConnections6(config) {
3176
+ if (!config.cloudflareTraffic) config.cloudflareTraffic = {};
3177
+ if (!config.cloudflareTraffic.connections) config.cloudflareTraffic.connections = [];
3178
+ return config.cloudflareTraffic.connections;
3179
+ }
3180
+ function normalizeDirectPushConnection(connection) {
3181
+ const deliveryMode = connection.deliveryMode;
3182
+ if (deliveryMode !== void 0 && deliveryMode !== "direct-push") {
3183
+ throw unsupportedDeliveryMode(deliveryMode);
3184
+ }
3185
+ if (deliveryMode === "direct-push") return connection;
3186
+ return { ...connection, deliveryMode: "direct-push" };
3187
+ }
3188
+ function getCloudflareTrafficConnection(config, projectName) {
3189
+ const connection = (config.cloudflareTraffic?.connections ?? []).find((c) => c.projectName === projectName);
3190
+ return connection ? normalizeDirectPushConnection(connection) : void 0;
3191
+ }
3192
+ function getCloudflareTrafficConnectionBySourceId(config, sourceId) {
3193
+ const connection = (config.cloudflareTraffic?.connections ?? []).find((c) => c.sourceId === sourceId);
3194
+ return connection ? normalizeDirectPushConnection(connection) : void 0;
3195
+ }
3196
+ function upsertCloudflareTrafficConnection(config, connection) {
3197
+ const deliveryMode = connection.deliveryMode;
3198
+ if (deliveryMode !== "direct-push") {
3199
+ throw unsupportedDeliveryMode(deliveryMode);
3200
+ }
3201
+ const connections = ensureConnections6(config);
3202
+ const index = connections.findIndex((c) => c.projectName === connection.projectName);
3203
+ if (index === -1) {
3204
+ connections.push(connection);
3205
+ return connection;
3206
+ }
3207
+ connections[index] = connection;
3208
+ return connection;
3209
+ }
3210
+ function removeCloudflareTrafficConnection(config, projectName) {
3211
+ const connections = config.cloudflareTraffic?.connections;
3212
+ if (!connections?.length) return false;
3213
+ const next = connections.filter((c) => c.projectName !== projectName);
3214
+ if (next.length === connections.length) return false;
3215
+ if (!config.cloudflareTraffic) return false;
3216
+ config.cloudflareTraffic.connections = next;
3217
+ if (next.length === 0) {
3218
+ delete config.cloudflareTraffic;
3219
+ }
3220
+ return true;
3221
+ }
3222
+
3223
+ // src/cloudflare-ingest-url.ts
3224
+ function buildCloudflareIngestUrlTemplate(config) {
3225
+ const base = (config.publicUrl ?? config.apiUrl).replace(/\/+$/, "");
3226
+ return `${base}/api/v1/projects/{name}/traffic/cloudflare/ingest`;
3227
+ }
3228
+
3229
+ // src/wordpress-config.ts
3230
+ function ensureConnections7(config) {
3172
3231
  if (!config.wordpress) config.wordpress = {};
3173
3232
  if (!config.wordpress.connections) config.wordpress.connections = [];
3174
3233
  return config.wordpress.connections;
@@ -3185,7 +3244,7 @@ function getWordpressConnection(config, projectName) {
3185
3244
  return (config.wordpress?.connections ?? []).find((connection) => connection.projectName === projectName);
3186
3245
  }
3187
3246
  function upsertWordpressConnection(config, connection) {
3188
- const connections = ensureConnections6(config);
3247
+ const connections = ensureConnections7(config);
3189
3248
  const normalized = normalizeConnection(connection);
3190
3249
  const index = connections.findIndex((entry) => entry.projectName === connection.projectName);
3191
3250
  if (index === -1) {
@@ -5290,7 +5349,7 @@ async function getAdGroupInsights(apiKey, adGroupId, opts) {
5290
5349
  }
5291
5350
 
5292
5351
  // src/ads-config.ts
5293
- function ensureConnections7(config) {
5352
+ function ensureConnections8(config) {
5294
5353
  if (!config.openaiAds) config.openaiAds = {};
5295
5354
  if (!config.openaiAds.connections) config.openaiAds.connections = [];
5296
5355
  return config.openaiAds.connections;
@@ -5299,7 +5358,7 @@ function getOpenAiAdsConnection(config, projectName) {
5299
5358
  return (config.openaiAds?.connections ?? []).find((c) => c.projectName === projectName);
5300
5359
  }
5301
5360
  function upsertOpenAiAdsConnection(config, connection) {
5302
- const connections = ensureConnections7(config);
5361
+ const connections = ensureConnections8(config);
5303
5362
  const index = connections.findIndex((c) => c.projectName === connection.projectName);
5304
5363
  if (index === -1) {
5305
5364
  connections.push(connection);
@@ -8413,7 +8472,7 @@ function readStoredGroundingSources(rawResponse) {
8413
8472
  return result;
8414
8473
  }
8415
8474
  async function backfillInsightsCommand(project, opts) {
8416
- const { IntelligenceService: IntelligenceService2 } = await import("./intelligence-service-WHC7B32V.js");
8475
+ const { IntelligenceService: IntelligenceService2 } = await import("./intelligence-service-YUUPSJRC.js");
8417
8476
  const config = loadConfig();
8418
8477
  const db = createClient(config.database);
8419
8478
  migrate(db);
@@ -14043,6 +14102,24 @@ async function createServer(opts) {
14043
14102
  return removed;
14044
14103
  }
14045
14104
  };
14105
+ const cloudflareTrafficCredentialStore = {
14106
+ getConnection: (projectName) => {
14107
+ return getCloudflareTrafficConnection(opts.config, projectName);
14108
+ },
14109
+ getConnectionBySourceId: (sourceId) => {
14110
+ return getCloudflareTrafficConnectionBySourceId(opts.config, sourceId);
14111
+ },
14112
+ upsertConnection: (record) => {
14113
+ const updated = upsertCloudflareTrafficConnection(opts.config, record);
14114
+ saveConfigPatch(opts.config);
14115
+ return updated;
14116
+ },
14117
+ deleteConnection: (projectName) => {
14118
+ const removed = removeCloudflareTrafficConnection(opts.config, projectName);
14119
+ if (removed) saveConfigPatch(opts.config);
14120
+ return removed;
14121
+ }
14122
+ };
14046
14123
  const googleStateSecret = process.env.GOOGLE_STATE_SECRET ?? crypto25.randomBytes(32).toString("hex");
14047
14124
  const googleConnectionStore = {
14048
14125
  listConnections: (domain) => listGoogleConnections(opts.config, domain),
@@ -14652,6 +14729,8 @@ async function createServer(opts) {
14652
14729
  cloudRunCredentialStore,
14653
14730
  wordpressTrafficCredentialStore,
14654
14731
  vercelTrafficCredentialStore,
14732
+ cloudflareTrafficCredentialStore,
14733
+ cloudflareTrafficIngestUrl: buildCloudflareIngestUrlTemplate(opts.config),
14655
14734
  onTrafficSynced: (event) => {
14656
14735
  trackEvent(
14657
14736
  "traffic.synced",
@@ -15090,6 +15169,7 @@ export {
15090
15169
  backfillInsightsCommand,
15091
15170
  backfillSnapshotAttributionCommand,
15092
15171
  backfillTrafficClassificationCommand,
15172
+ getCloudflareTrafficConnection,
15093
15173
  setGoogleAuthConfig,
15094
15174
  installSkills,
15095
15175
  listSkills,
@@ -81,7 +81,7 @@ import {
81
81
  trafficConnectWordpressRequestSchema,
82
82
  trafficEventKindSchema,
83
83
  trafficSeriesGranularitySchema
84
- } from "./chunk-AMPT2EP7.js";
84
+ } from "./chunk-TRRVBTU5.js";
85
85
 
86
86
  // src/config.ts
87
87
  import fs from "fs";
@@ -107,6 +107,14 @@ function normalizeWordpressConfig(config) {
107
107
  defaultEnv: connection.defaultEnv ?? "live"
108
108
  }));
109
109
  }
110
+ function normalizeCloudflareTrafficConfig(config) {
111
+ for (const connection of config.cloudflareTraffic?.connections ?? []) {
112
+ const legacy = connection;
113
+ if (legacy.deliveryMode === void 0) {
114
+ legacy.deliveryMode = "direct-push";
115
+ }
116
+ }
117
+ }
110
118
  function getConfigDir() {
111
119
  const override = process.env.CANONRY_CONFIG_DIR?.trim();
112
120
  if (override) {
@@ -152,6 +160,7 @@ Do not write config.yaml by hand; use "canonry init", "canonry settings", or "ca
152
160
  }
153
161
  normalizeGoogleConfig(parsed);
154
162
  normalizeWordpressConfig(parsed);
163
+ normalizeCloudflareTrafficConfig(parsed);
155
164
  const portOverride = process.env.CANONRY_PORT?.trim();
156
165
  if (portOverride) {
157
166
  try {
@@ -4695,6 +4704,22 @@ var postApiV1ProjectsByNameTrafficConnectVercel = (options) => {
4695
4704
  }
4696
4705
  });
4697
4706
  };
4707
+ var postApiV1ProjectsByNameTrafficConnectCloudflare = (options) => {
4708
+ return (options.client ?? client).post({
4709
+ security: [
4710
+ {
4711
+ scheme: "bearer",
4712
+ type: "http"
4713
+ }
4714
+ ],
4715
+ url: "/api/v1/projects/{name}/traffic/connect/cloudflare",
4716
+ ...options,
4717
+ headers: {
4718
+ "Content-Type": "application/json",
4719
+ ...options.headers
4720
+ }
4721
+ });
4722
+ };
4698
4723
  var postApiV1ProjectsByNameTrafficSourcesByIdSync = (options) => {
4699
4724
  return (options.client ?? client).post({
4700
4725
  security: [
@@ -6982,6 +7007,15 @@ var ApiClient = class {
6982
7007
  })
6983
7008
  );
6984
7009
  }
7010
+ async trafficConnectCloudflare(project, body) {
7011
+ return this.invoke(
7012
+ () => postApiV1ProjectsByNameTrafficConnectCloudflare({
7013
+ client: this.heyClient,
7014
+ path: { name: project },
7015
+ body
7016
+ })
7017
+ );
7018
+ }
6985
7019
  async trafficSync(project, sourceId, body) {
6986
7020
  return this.invoke(
6987
7021
  () => postApiV1ProjectsByNameTrafficSourcesByIdSync({