@canonry/canonry 4.180.1 → 4.180.2
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/canonry/references/canonry-cli.md +11 -6
- package/assets/assets/{AuditHistoryPanel-DI6iXS0J.js → AuditHistoryPanel-Cf-jEEKZ.js} +1 -1
- package/assets/assets/{BacklinksPage-DiwTMJTp.js → BacklinksPage-oMcS6Hc_.js} +1 -1
- package/assets/assets/{HistoryPage-BWODoEok.js → HistoryPage-CDQOpxi0.js} +1 -1
- package/assets/assets/{MeasurementPropertyPage-C1uZ9LEl.js → MeasurementPropertyPage-MoKFTmrS.js} +1 -1
- package/assets/assets/{ProjectPage-C-fk0Jja.js → ProjectPage-CtD1AwXE.js} +8 -8
- package/assets/assets/{RunRow-CMSISg-I.js → RunRow-CPekiscK.js} +1 -1
- package/assets/assets/{RunsPage-HZwwLQDE.js → RunsPage-hn05ImCv.js} +1 -1
- package/assets/assets/{SettingsPage-3eoRO4ze.js → SettingsPage-BOTYXtfF.js} +1 -1
- package/assets/assets/{SiteHealthSection-CATUc26x.js → SiteHealthSection-FwMZ11F8.js} +3 -3
- package/assets/assets/{TrafficPage-Cw8AM5VR.js → TrafficPage-f2v6A_uk.js} +1 -1
- package/assets/assets/{TrafficSourceDetailPage-ChFDAstr.js → TrafficSourceDetailPage-nhWRLHiu.js} +1 -1
- package/assets/assets/{extract-error-message-CG_IQ_9c.js → extract-error-message-Cp1YeVEr.js} +1 -1
- package/assets/assets/{index-Dz0ju3qg.js → index-VmxEHABq.js} +22 -22
- package/assets/assets/{react-sigma_core.esm.min-BvgsCKLZ.js → react-sigma_core.esm.min-fnm2MkMi.js} +1 -1
- package/assets/index.html +1 -1
- package/dist/{chunk-VEEHINTY.js → chunk-44LVINXQ.js} +20 -10
- package/dist/{chunk-A6XDLCKF.js → chunk-4XHQ2GCN.js} +2 -2
- package/dist/{chunk-BJAZWJNH.js → chunk-665YENL2.js} +4 -10
- package/dist/{chunk-3JW762Q4.js → chunk-6IR32MIH.js} +5 -7
- package/dist/{chunk-NFALEGSZ.js → chunk-DA25LOTW.js} +2 -2
- package/dist/cli.js +5 -5
- package/dist/index.js +4 -4
- package/dist/{intelligence-service-NHAF7V6L.js → intelligence-service-RNBODYMZ.js} +2 -2
- package/dist/mcp.js +3 -3
- package/package.json +8 -8
package/assets/assets/{react-sigma_core.esm.min-BvgsCKLZ.js → react-sigma_core.esm.min-fnm2MkMi.js}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{g as Bt,t as S,r as C}from"./vendor-tanstack-Dock0eH1.js";import{e as Ht,G as Wt}from"./SiteHealthSection-
|
|
1
|
+
import{g as Bt,t as S,r as C}from"./vendor-tanstack-Dock0eH1.js";import{e as Ht,G as Wt}from"./SiteHealthSection-FwMZ11F8.js";import"./index-VmxEHABq.js";import"./vendor-radix-4UOaVWza.js";import"./vendor-recharts-D8rt5lKn.js";import"./vendor-lucide-nYKv-BB7.js";import"./vendor-markdown-Bn7fRwrx.js";import"./vendor-yaml-GWJz5H2G.js";import"./ChartPrimitives-DG35TyhH.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-
|
|
15
|
+
<script type="module" crossorigin src="./assets/index-VmxEHABq.js"></script>
|
|
16
16
|
<link rel="modulepreload" crossorigin href="./assets/vendor-tanstack-Dock0eH1.js">
|
|
17
17
|
<link rel="modulepreload" crossorigin href="./assets/vendor-radix-4UOaVWza.js">
|
|
18
18
|
<link rel="modulepreload" crossorigin href="./assets/vendor-recharts-D8rt5lKn.js">
|
|
@@ -642,7 +642,7 @@ import {
|
|
|
642
642
|
wordpressSchemaDeployResultDtoSchema,
|
|
643
643
|
wordpressSchemaStatusResultDtoSchema,
|
|
644
644
|
wordpressStatusDtoSchema
|
|
645
|
-
} from "./chunk-
|
|
645
|
+
} from "./chunk-6IR32MIH.js";
|
|
646
646
|
|
|
647
647
|
// src/intelligence-service.ts
|
|
648
648
|
import { eq as eq62, desc as desc27, asc as asc11, and as and51, ne as ne8, or as or14, inArray as inArray22, gte as gte14, lte as lte12, isNull as isNull9, sql as sql25, exists } from "drizzle-orm";
|
|
@@ -34400,7 +34400,7 @@ var routeCatalog = [
|
|
|
34400
34400
|
method: "post",
|
|
34401
34401
|
path: "/api/v1/projects/{name}/ads/campaigns",
|
|
34402
34402
|
summary: "Create a paused OpenAI Ads campaign",
|
|
34403
|
-
description: "The server always creates the campaign paused.
|
|
34403
|
+
description: "The server always creates the campaign paused. biddingType is what the account is billed for and is immutable after creation; conversionEventSettingIds is the independent, optional optimization target, so click bidding may carry none. Omit both bidding fields for legacy impressions mode. Status is not accepted from the caller.",
|
|
34404
34404
|
tags: ["ads"],
|
|
34405
34405
|
parameters: [nameParameter],
|
|
34406
34406
|
requestBody: {
|
|
@@ -34421,7 +34421,7 @@ var routeCatalog = [
|
|
|
34421
34421
|
type: "array",
|
|
34422
34422
|
uniqueItems: true,
|
|
34423
34423
|
items: stringSchema,
|
|
34424
|
-
description: "
|
|
34424
|
+
description: "Optional conversion events to optimize delivery toward. Independent of biddingType: a clicks campaign may omit these."
|
|
34425
34425
|
}
|
|
34426
34426
|
}
|
|
34427
34427
|
} } }
|
|
@@ -70148,10 +70148,16 @@ function bindTrafficSyncSchedule(tx, projectId, sourceId, now, createIfMissing =
|
|
|
70148
70148
|
}).run();
|
|
70149
70149
|
return { changed: true, created: true };
|
|
70150
70150
|
}
|
|
70151
|
+
var VercelRetentionClampError = class extends Error {
|
|
70152
|
+
constructor(requestedStartMs, effectiveStartMs) {
|
|
70153
|
+
super(
|
|
70154
|
+
`Vercel request-logs retention starts at ${new Date(effectiveStartMs).toISOString()}, after requested start ${new Date(requestedStartMs).toISOString()}; refusing to advance because historical traffic would be skipped`
|
|
70155
|
+
);
|
|
70156
|
+
this.name = "VercelRetentionClampError";
|
|
70157
|
+
}
|
|
70158
|
+
};
|
|
70151
70159
|
function vercelRetentionClampError(requestedStartMs, effectiveStartMs) {
|
|
70152
|
-
return new
|
|
70153
|
-
`Vercel request-logs retention starts at ${new Date(effectiveStartMs).toISOString()}, after requested start ${new Date(requestedStartMs).toISOString()}; refusing to advance because historical traffic would be skipped`
|
|
70154
|
-
);
|
|
70160
|
+
return new VercelRetentionClampError(requestedStartMs, effectiveStartMs);
|
|
70155
70161
|
}
|
|
70156
70162
|
async function runBackfillTask(options) {
|
|
70157
70163
|
const {
|
|
@@ -70164,13 +70170,13 @@ async function runBackfillTask(options) {
|
|
|
70164
70170
|
pullForBackfill,
|
|
70165
70171
|
pullErrorPrefix
|
|
70166
70172
|
} = options;
|
|
70167
|
-
const markFailed = (msg) => {
|
|
70173
|
+
const markFailed = (msg, preserveSourceState = false) => {
|
|
70168
70174
|
const failedAt = (/* @__PURE__ */ new Date()).toISOString();
|
|
70169
70175
|
try {
|
|
70170
70176
|
app.db.transaction((tx) => {
|
|
70171
70177
|
tx.update(runs).set({ status: RunStatuses.failed, error: msg, finishedAt: failedAt }).where(eq51(runs.id, runId)).run();
|
|
70172
70178
|
const latestSource = tx.select().from(trafficSources).where(eq51(trafficSources.id, sourceRow2.id)).get();
|
|
70173
|
-
if (latestSource && isAuthoritativeTrafficSource(tx, latestSource) && isSameTrafficSourceGeneration(latestSource, sourceRow2)) {
|
|
70179
|
+
if (!preserveSourceState && latestSource && isAuthoritativeTrafficSource(tx, latestSource) && isSameTrafficSourceGeneration(latestSource, sourceRow2)) {
|
|
70174
70180
|
tx.update(trafficSources).set({ status: TrafficSourceStatuses.error, lastError: msg, updatedAt: failedAt }).where(eq51(trafficSources.id, sourceRow2.id)).run();
|
|
70175
70181
|
}
|
|
70176
70182
|
});
|
|
@@ -70185,7 +70191,10 @@ async function runBackfillTask(options) {
|
|
|
70185
70191
|
try {
|
|
70186
70192
|
allEvents = await pullForBackfill();
|
|
70187
70193
|
} catch (e) {
|
|
70188
|
-
markFailed(
|
|
70194
|
+
markFailed(
|
|
70195
|
+
`${pullErrorPrefix}: ${describeError(e)}`,
|
|
70196
|
+
e instanceof VercelRetentionClampError
|
|
70197
|
+
);
|
|
70189
70198
|
return;
|
|
70190
70199
|
}
|
|
70191
70200
|
if (allEvents.length === 0) {
|
|
@@ -72300,7 +72309,8 @@ async function trafficRoutes(app, opts) {
|
|
|
72300
72309
|
}
|
|
72301
72310
|
const appliedDays = Math.min(requestedDays, MAX_BACKFILL_DAYS);
|
|
72302
72311
|
const windowEnd = /* @__PURE__ */ new Date();
|
|
72303
|
-
const
|
|
72312
|
+
const requestedWindowStartMs = windowEnd.getTime() - appliedDays * 864e5;
|
|
72313
|
+
const windowStart = new Date(requestedWindowStartMs);
|
|
72304
72314
|
windowStart.setUTCMinutes(0, 0, 0);
|
|
72305
72315
|
let pullForBackfill;
|
|
72306
72316
|
let pullErrorPrefix;
|
|
@@ -5,11 +5,11 @@ import {
|
|
|
5
5
|
installSkills,
|
|
6
6
|
loadConfigRaw,
|
|
7
7
|
saveConfigPatch
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-DA25LOTW.js";
|
|
9
9
|
import {
|
|
10
10
|
SKILL_MANIFEST_FILENAME,
|
|
11
11
|
SkillsClients
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-6IR32MIH.js";
|
|
13
13
|
|
|
14
14
|
// src/skills-autosync.ts
|
|
15
15
|
import fs from "fs";
|
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
loadConfig,
|
|
12
12
|
loadConfigRaw,
|
|
13
13
|
saveConfigPatch
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-DA25LOTW.js";
|
|
15
15
|
import {
|
|
16
16
|
CC_CACHE_DIR,
|
|
17
17
|
DUCKDB_SPEC,
|
|
@@ -157,7 +157,7 @@ import {
|
|
|
157
157
|
siteCrawlSnapshots,
|
|
158
158
|
toAlertView,
|
|
159
159
|
usageCounters
|
|
160
|
-
} from "./chunk-
|
|
160
|
+
} from "./chunk-44LVINXQ.js";
|
|
161
161
|
import {
|
|
162
162
|
AGENT_MEMORY_VALUE_MAX_BYTES,
|
|
163
163
|
AGENT_PROVIDER_IDS,
|
|
@@ -295,7 +295,7 @@ import {
|
|
|
295
295
|
validationError,
|
|
296
296
|
winnabilityClassLabel,
|
|
297
297
|
withRetry
|
|
298
|
-
} from "./chunk-
|
|
298
|
+
} from "./chunk-6IR32MIH.js";
|
|
299
299
|
|
|
300
300
|
// src/telemetry.ts
|
|
301
301
|
import crypto from "crypto";
|
|
@@ -7843,12 +7843,6 @@ function validateCampaignBidding(request) {
|
|
|
7843
7843
|
throw new OpenAiAdsApiError("Campaign conversion_event_setting_ids must contain unique IDs", 400);
|
|
7844
7844
|
}
|
|
7845
7845
|
}
|
|
7846
|
-
if (biddingType === OpenAiAdsBiddingTypes.clicks && (!Array.isArray(conversionIds) || conversionIds.length === 0)) {
|
|
7847
|
-
throw new OpenAiAdsApiError(
|
|
7848
|
-
"Click campaigns require at least one conversion_event_setting_id",
|
|
7849
|
-
400
|
|
7850
|
-
);
|
|
7851
|
-
}
|
|
7852
7846
|
}
|
|
7853
7847
|
function validateBiddingConfig(value) {
|
|
7854
7848
|
validateRequestObject(value, "Ad group bidding_config");
|
|
@@ -11857,7 +11851,7 @@ function readStoredGroundingSources(rawResponse) {
|
|
|
11857
11851
|
return result;
|
|
11858
11852
|
}
|
|
11859
11853
|
async function backfillInsightsCommand(project, opts) {
|
|
11860
|
-
const { IntelligenceService: IntelligenceService2 } = await import("./intelligence-service-
|
|
11854
|
+
const { IntelligenceService: IntelligenceService2 } = await import("./intelligence-service-RNBODYMZ.js");
|
|
11861
11855
|
const config = loadConfig();
|
|
11862
11856
|
const db = createClient(config.database);
|
|
11863
11857
|
migrate(db);
|
|
@@ -15575,19 +15575,17 @@ var adsCampaignCreateRequestSchema = z52.object({
|
|
|
15575
15575
|
endTime: adsTimestampSchema.optional(),
|
|
15576
15576
|
lifetimeSpendLimitMicros: adsMicrosSchema.min(1e6),
|
|
15577
15577
|
locationIds: z52.array(adsEntityIdSchema).min(1).max(100),
|
|
15578
|
+
// biddingType is BILLING (what the account pays for) and is immutable once
|
|
15579
|
+
// the provider creates the campaign. conversionEventSettingIds is
|
|
15580
|
+
// OPTIMIZATION (what delivery is steered toward). The two are independent,
|
|
15581
|
+
// and the provider accepts a clicks campaign carrying no conversion event
|
|
15582
|
+
// settings, so neither field is conditioned on the other here.
|
|
15578
15583
|
biddingType: adsCampaignBiddingTypeSchema.optional(),
|
|
15579
15584
|
conversionEventSettingIds: adsConversionEventSettingIdsSchema.optional()
|
|
15580
15585
|
}).superRefine((value, ctx) => {
|
|
15581
15586
|
if (value.startTime !== void 0 && value.endTime !== void 0 && value.endTime <= value.startTime) {
|
|
15582
15587
|
ctx.addIssue({ code: "custom", path: ["endTime"], message: "endTime must be after startTime" });
|
|
15583
15588
|
}
|
|
15584
|
-
if (value.biddingType === AdsCampaignBiddingTypes.clicks && (value.conversionEventSettingIds === void 0 || value.conversionEventSettingIds.length === 0)) {
|
|
15585
|
-
ctx.addIssue({
|
|
15586
|
-
code: "custom",
|
|
15587
|
-
path: ["conversionEventSettingIds"],
|
|
15588
|
-
message: "conversionEventSettingIds must be non-empty when biddingType is clicks"
|
|
15589
|
-
});
|
|
15590
|
-
}
|
|
15591
15589
|
});
|
|
15592
15590
|
var adsAdGroupCreateRequestSchema = z52.object({
|
|
15593
15591
|
operationKey: adsOperationKeySchema,
|
|
@@ -92,7 +92,7 @@ import {
|
|
|
92
92
|
trafficConnectWordpressRequestSchema,
|
|
93
93
|
trafficEventKindSchema,
|
|
94
94
|
trafficSeriesGranularitySchema
|
|
95
|
-
} from "./chunk-
|
|
95
|
+
} from "./chunk-6IR32MIH.js";
|
|
96
96
|
|
|
97
97
|
// src/config.ts
|
|
98
98
|
import fs from "fs";
|
|
@@ -11800,7 +11800,7 @@ var canonryMcpTools = [
|
|
|
11800
11800
|
defineTool({
|
|
11801
11801
|
name: "canonry_ads_campaign_create",
|
|
11802
11802
|
title: "Create a paused ads campaign",
|
|
11803
|
-
description: "Create an OpenAI Ads campaign PAUSED with an explicit lifetime spend limit and location allowlist.
|
|
11803
|
+
description: "Create an OpenAI Ads campaign PAUSED with an explicit lifetime spend limit and location allowlist. biddingType is what the account is BILLED for (clicks or the legacy impressions default) and is immutable after creation; conversionEventSettingIds are what delivery OPTIMIZES toward and are independent, so a clicks campaign may omit them; adding provider-issued IDs makes it conversion-optimized. The server ignores any status concept and always sends paused. Inspect the receipt, then create matching paused ad groups and ads. A human must separately approve the exact tree before this operator can activate it.",
|
|
11804
11804
|
access: "write",
|
|
11805
11805
|
tier: "ads",
|
|
11806
11806
|
inputSchema: adsCampaignCreateInputSchema,
|
package/dist/cli.js
CHANGED
|
@@ -26,11 +26,11 @@ import {
|
|
|
26
26
|
showFirstRunNotice,
|
|
27
27
|
trackCliCommandFinished,
|
|
28
28
|
trackEvent
|
|
29
|
-
} from "./chunk-
|
|
29
|
+
} from "./chunk-665YENL2.js";
|
|
30
30
|
import {
|
|
31
31
|
autoSyncSkills,
|
|
32
32
|
formatAutoSyncNotice
|
|
33
|
-
} from "./chunk-
|
|
33
|
+
} from "./chunk-4XHQ2GCN.js";
|
|
34
34
|
import {
|
|
35
35
|
CliError,
|
|
36
36
|
EXIT_SYSTEM_ERROR,
|
|
@@ -55,7 +55,7 @@ import {
|
|
|
55
55
|
saveConfigPatch,
|
|
56
56
|
systemError,
|
|
57
57
|
usageError
|
|
58
|
-
} from "./chunk-
|
|
58
|
+
} from "./chunk-DA25LOTW.js";
|
|
59
59
|
import {
|
|
60
60
|
CLOUDFLARE_WORKER_BINDINGS,
|
|
61
61
|
CLOUDFLARE_WORKER_GENERATED_MARKER,
|
|
@@ -69,7 +69,7 @@ import {
|
|
|
69
69
|
projects,
|
|
70
70
|
queries,
|
|
71
71
|
renderReportHtml
|
|
72
|
-
} from "./chunk-
|
|
72
|
+
} from "./chunk-44LVINXQ.js";
|
|
73
73
|
import {
|
|
74
74
|
AdsDeliverySnapshotStatuses,
|
|
75
75
|
AdsHistoricalCampaignRollupStatuses,
|
|
@@ -138,7 +138,7 @@ import {
|
|
|
138
138
|
providerQuotaPolicySchema,
|
|
139
139
|
resolveProviderInput,
|
|
140
140
|
winnabilityClassSchema
|
|
141
|
-
} from "./chunk-
|
|
141
|
+
} from "./chunk-6IR32MIH.js";
|
|
142
142
|
|
|
143
143
|
// src/cli.ts
|
|
144
144
|
import { pathToFileURL } from "url";
|
package/dist/index.js
CHANGED
|
@@ -3,12 +3,12 @@ import {
|
|
|
3
3
|
createGoogleMarketingCredentialStore,
|
|
4
4
|
createGoogleMarketingRuntime,
|
|
5
5
|
createServer
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-665YENL2.js";
|
|
7
7
|
import {
|
|
8
8
|
loadConfig
|
|
9
|
-
} from "./chunk-
|
|
10
|
-
import "./chunk-
|
|
11
|
-
import "./chunk-
|
|
9
|
+
} from "./chunk-DA25LOTW.js";
|
|
10
|
+
import "./chunk-44LVINXQ.js";
|
|
11
|
+
import "./chunk-6IR32MIH.js";
|
|
12
12
|
export {
|
|
13
13
|
GoogleMarketingRuntimeError,
|
|
14
14
|
createGoogleMarketingCredentialStore,
|
package/dist/mcp.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
2
|
autoSyncSkills
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-4XHQ2GCN.js";
|
|
4
4
|
import {
|
|
5
5
|
createApiClient,
|
|
6
6
|
createCanonryMcpServer
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-DA25LOTW.js";
|
|
8
8
|
import {
|
|
9
9
|
isReadOnlyKey
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-6IR32MIH.js";
|
|
11
11
|
|
|
12
12
|
// src/mcp/cli.ts
|
|
13
13
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@canonry/canonry",
|
|
3
|
-
"version": "4.180.
|
|
3
|
+
"version": "4.180.2",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Self-hosted AI visibility (AEO) platform: track how ChatGPT, Claude, Gemini, and Perplexity cite your domain, join it with Search Console, GA4, server-side traffic, and paid media, and fix what you find through agent tools (CLI, REST, MCP). Local SQLite.",
|
|
6
6
|
"license": "FSL-1.1-ALv2",
|
|
@@ -70,31 +70,31 @@
|
|
|
70
70
|
"@types/node-cron": "^3.0.11",
|
|
71
71
|
"tsup": "^8.5.1",
|
|
72
72
|
"tsx": "^4.19.0",
|
|
73
|
-
"@ainyc/canonry-api-routes": "0.0.0",
|
|
74
73
|
"@ainyc/canonry-api-client": "0.0.0",
|
|
74
|
+
"@ainyc/canonry-api-routes": "0.0.0",
|
|
75
75
|
"@ainyc/canonry-config": "0.0.0",
|
|
76
|
-
"@ainyc/canonry-contracts": "0.0.0",
|
|
77
76
|
"@ainyc/canonry-db": "0.0.0",
|
|
77
|
+
"@ainyc/canonry-contracts": "0.0.0",
|
|
78
78
|
"@ainyc/canonry-integration-bing": "0.0.0",
|
|
79
79
|
"@ainyc/canonry-integration-cloud-run": "0.0.0",
|
|
80
|
-
"@ainyc/canonry-integration-cloudflare-queue": "0.0.0",
|
|
81
80
|
"@ainyc/canonry-integration-cloudflare-worker": "0.0.0",
|
|
82
81
|
"@ainyc/canonry-integration-commoncrawl": "0.0.0",
|
|
83
82
|
"@ainyc/canonry-integration-google": "0.0.0",
|
|
83
|
+
"@ainyc/canonry-integration-cloudflare-queue": "0.0.0",
|
|
84
84
|
"@ainyc/canonry-integration-google-ads": "0.0.0",
|
|
85
85
|
"@ainyc/canonry-integration-google-business-profile": "0.0.0",
|
|
86
86
|
"@ainyc/canonry-integration-google-places": "0.0.0",
|
|
87
|
+
"@ainyc/canonry-integration-google-tag-manager": "0.0.0",
|
|
87
88
|
"@ainyc/canonry-integration-traffic": "0.0.0",
|
|
88
89
|
"@ainyc/canonry-integration-openai-ads": "0.0.0",
|
|
89
|
-
"@ainyc/canonry-
|
|
90
|
-
"@ainyc/canonry-integration-google-tag-manager": "0.0.0",
|
|
90
|
+
"@ainyc/canonry-provider-claude": "0.0.0",
|
|
91
91
|
"@ainyc/canonry-intelligence": "0.0.0",
|
|
92
92
|
"@ainyc/canonry-provider-cdp": "0.0.0",
|
|
93
|
-
"@ainyc/canonry-provider-claude": "0.0.0",
|
|
94
93
|
"@ainyc/canonry-provider-gemini": "0.0.0",
|
|
95
94
|
"@ainyc/canonry-provider-local": "0.0.0",
|
|
96
95
|
"@ainyc/canonry-provider-perplexity": "0.0.0",
|
|
97
|
-
"@ainyc/canonry-provider-openai": "0.0.0"
|
|
96
|
+
"@ainyc/canonry-provider-openai": "0.0.0",
|
|
97
|
+
"@ainyc/canonry-integration-wordpress": "0.0.0"
|
|
98
98
|
},
|
|
99
99
|
"scripts": {
|
|
100
100
|
"build": "tsx scripts/copy-agent-assets.ts && tsup && tsx build-web.ts",
|