@ainyc/canonry 4.186.0 → 4.186.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/README.md +3 -1
- package/assets/assets/{AuditHistoryPanel-B2OTEbWF.js → AuditHistoryPanel-D1obTGKY.js} +1 -1
- package/assets/assets/{BacklinksPage-B0Bz26IR.js → BacklinksPage-D_tj5Rbt.js} +1 -1
- package/assets/assets/{HistoryPage-DMIiplrT.js → HistoryPage-lL-CZziY.js} +1 -1
- package/assets/assets/{MeasurementPropertyPage-Z1m50P06.js → MeasurementPropertyPage-0voEYofK.js} +1 -1
- package/assets/assets/ProjectPage-Bq-ncl6p.js +9 -0
- package/assets/assets/{RunRow-2oIMBy4X.js → RunRow-DTeprTL3.js} +1 -1
- package/assets/assets/{RunsPage-D82txDn4.js → RunsPage-DrAtN-Xn.js} +1 -1
- package/assets/assets/{SettingsPage-B3SWwskL.js → SettingsPage-DCD1aTWP.js} +1 -1
- package/assets/assets/{SiteHealthSection-BwAsiVkw.js → SiteHealthSection-BX_ehKQW.js} +3 -3
- package/assets/assets/{TrafficPage-s7agZioX.js → TrafficPage-PTKGMjZO.js} +1 -1
- package/assets/assets/{TrafficSourceDetailPage-CAQu3xtO.js → TrafficSourceDetailPage-BouaEiZp.js} +1 -1
- package/assets/assets/{extract-error-message-PO1V0nPB.js → extract-error-message-DOUrsRz6.js} +1 -1
- package/assets/assets/{index-DBzUEmVj.js → index-AI2ypViE.js} +19 -19
- package/assets/assets/{index-SMQQ_3Nk.css → index-DJ8_LvRn.css} +1 -1
- package/assets/assets/{react-sigma_core.esm.min-DawtX7pg.js → react-sigma_core.esm.min-CQ5k6lQz.js} +1 -1
- package/assets/index.html +2 -2
- package/dist/{chunk-UXZCO5WK.js → chunk-67UGGOII.js} +20 -7
- package/dist/{chunk-4EMNAQR6.js → chunk-BPO7PDQH.js} +4 -4
- package/dist/{chunk-OVJJDBZY.js → chunk-GGEW65VE.js} +2 -2
- package/dist/{chunk-U7XFRKLH.js → chunk-PXGN7BY7.js} +7 -2
- package/dist/{chunk-SCNSP2GV.js → chunk-V7LWMC2C.js} +1 -1
- package/dist/cli.js +22 -6
- package/dist/index.js +4 -4
- package/dist/{intelligence-service-WTRLQG5V.js → intelligence-service-CTFIKNIF.js} +2 -2
- package/dist/mcp.js +3 -3
- package/package.json +10 -10
- package/assets/assets/ProjectPage-wcTL1Dim.js +0 -9
package/assets/assets/{react-sigma_core.esm.min-DawtX7pg.js → react-sigma_core.esm.min-CQ5k6lQz.js}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{g as Bt,t as S,r as C}from"./vendor-tanstack-CYBjbqVr.js";import{e as Ht,G as Wt}from"./SiteHealthSection-
|
|
1
|
+
import{g as Bt,t as S,r as C}from"./vendor-tanstack-CYBjbqVr.js";import{e as Ht,G as Wt}from"./SiteHealthSection-BX_ehKQW.js";import"./index-AI2ypViE.js";import"./vendor-radix-BpmvLvpp.js";import"./vendor-recharts-FA0uySU7.js";import"./vendor-lucide-BovNTc41.js";import"./vendor-markdown-9tTeP8v7.js";import"./vendor-yaml-GWJz5H2G.js";import"./ChartPrimitives-DLEICrrL.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,14 +12,14 @@
|
|
|
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-AI2ypViE.js"></script>
|
|
16
16
|
<link rel="modulepreload" crossorigin href="./assets/vendor-tanstack-CYBjbqVr.js">
|
|
17
17
|
<link rel="modulepreload" crossorigin href="./assets/vendor-radix-BpmvLvpp.js">
|
|
18
18
|
<link rel="modulepreload" crossorigin href="./assets/vendor-recharts-FA0uySU7.js">
|
|
19
19
|
<link rel="modulepreload" crossorigin href="./assets/vendor-lucide-BovNTc41.js">
|
|
20
20
|
<link rel="modulepreload" crossorigin href="./assets/vendor-markdown-9tTeP8v7.js">
|
|
21
21
|
<link rel="modulepreload" crossorigin href="./assets/vendor-yaml-GWJz5H2G.js">
|
|
22
|
-
<link rel="stylesheet" crossorigin href="./assets/index-
|
|
22
|
+
<link rel="stylesheet" crossorigin href="./assets/index-DJ8_LvRn.css">
|
|
23
23
|
</head>
|
|
24
24
|
<body>
|
|
25
25
|
<div id="root"></div>
|
|
@@ -664,7 +664,7 @@ import {
|
|
|
664
664
|
wordpressSchemaDeployResultDtoSchema,
|
|
665
665
|
wordpressSchemaStatusResultDtoSchema,
|
|
666
666
|
wordpressStatusDtoSchema
|
|
667
|
-
} from "./chunk-
|
|
667
|
+
} from "./chunk-PXGN7BY7.js";
|
|
668
668
|
|
|
669
669
|
// src/intelligence-service.ts
|
|
670
670
|
import { eq as eq66, desc as desc29, asc as asc12, and as and56, ne as ne10, or as or14, inArray as inArray25, gte as gte17, lte as lte15, isNull as isNull12, sql as sql25, exists } from "drizzle-orm";
|
|
@@ -12393,7 +12393,7 @@ function assertNoActivePlanlessSweep(tx, scope) {
|
|
|
12393
12393
|
inArray(runs.status, [RunStatuses.queued, RunStatuses.running]),
|
|
12394
12394
|
isNull2(runs.measurementPlanVersionId)
|
|
12395
12395
|
)).get();
|
|
12396
|
-
if (activeRun) throw runInProgress(scope.projectName);
|
|
12396
|
+
if (activeRun) throw runInProgress(scope.projectName, RunKinds["answer-visibility"], activeRun.id);
|
|
12397
12397
|
}
|
|
12398
12398
|
function assertQueryReplacementAllowed(tx, scope, incomingTexts) {
|
|
12399
12399
|
const existing = tx.select({ id: queries.id, text: queries.query }).from(queries).where(eq7(queries.projectId, scope.projectId)).all();
|
|
@@ -15481,6 +15481,7 @@ function queueRunIfProjectIdle(db, params) {
|
|
|
15481
15481
|
const activeRun = tx.select().from(runs).where(
|
|
15482
15482
|
and10(
|
|
15483
15483
|
eq15(runs.projectId, params.projectId),
|
|
15484
|
+
eq15(runs.kind, kind),
|
|
15484
15485
|
or(eq15(runs.status, "queued"), eq15(runs.status, "running"))
|
|
15485
15486
|
)
|
|
15486
15487
|
).get();
|
|
@@ -15607,10 +15608,11 @@ async function runRoutes(app, opts) {
|
|
|
15607
15608
|
const result = app.db.transaction((tx) => {
|
|
15608
15609
|
const activeRun = tx.select({ id: runs.id }).from(runs).where(and11(
|
|
15609
15610
|
eq16(runs.projectId, project.id),
|
|
15611
|
+
eq16(runs.kind, kind),
|
|
15610
15612
|
or2(eq16(runs.status, "queued"), eq16(runs.status, "running"))
|
|
15611
15613
|
)).get();
|
|
15612
15614
|
if (activeRun) {
|
|
15613
|
-
return { conflict: true };
|
|
15615
|
+
return { conflict: true, activeRunId: activeRun.id };
|
|
15614
15616
|
}
|
|
15615
15617
|
const inserted = [];
|
|
15616
15618
|
for (const loc of projectLocations) {
|
|
@@ -15630,7 +15632,7 @@ async function runRoutes(app, opts) {
|
|
|
15630
15632
|
return { conflict: false, inserted };
|
|
15631
15633
|
});
|
|
15632
15634
|
if (result.conflict) {
|
|
15633
|
-
throw runInProgress(project.name);
|
|
15635
|
+
throw runInProgress(project.name, kind, result.activeRunId);
|
|
15634
15636
|
}
|
|
15635
15637
|
const results = [];
|
|
15636
15638
|
for (const { runId: runId2, loc } of result.inserted) {
|
|
@@ -15662,7 +15664,7 @@ async function runRoutes(app, opts) {
|
|
|
15662
15664
|
providerModels: opts.getEffectiveProviderModels?.(),
|
|
15663
15665
|
measurementScope: body.measurementScope ?? null
|
|
15664
15666
|
});
|
|
15665
|
-
if (queueResult.conflict) throw runInProgress(project.name);
|
|
15667
|
+
if (queueResult.conflict) throw runInProgress(project.name, kind, queueResult.activeRunId);
|
|
15666
15668
|
const runId = queueResult.runId;
|
|
15667
15669
|
writeAuditLog(app.db, {
|
|
15668
15670
|
projectId: project.id,
|
|
@@ -30771,12 +30773,18 @@ function confidenceFromEvidence(count2) {
|
|
|
30771
30773
|
function actionAudienceMatches2(action, audience) {
|
|
30772
30774
|
return action.audience === "both" || action.audience === audience;
|
|
30773
30775
|
}
|
|
30776
|
+
function configuredCompetitorDomainsForActionPlan(db, projectId, projectCompetitorDomains) {
|
|
30777
|
+
const active = activeMeasurementPlan(db, projectId);
|
|
30778
|
+
if (!active) return [...projectCompetitorDomains];
|
|
30779
|
+
const planCompetitorDomains = active.plan.schemaVersion === 2 ? active.plan.groups.flatMap((group) => group.competitors.map((competitor) => competitor.domain)) : active.plan.groups.flatMap((group) => group.competitors ?? []);
|
|
30780
|
+
return [.../* @__PURE__ */ new Set([...projectCompetitorDomains, ...planCompetitorDomains])];
|
|
30781
|
+
}
|
|
30774
30782
|
function buildReportActionPlan(input) {
|
|
30775
30783
|
const actions = [];
|
|
30776
30784
|
if (input.competitorDomains.length === 0 && input.aiSourceOrigin.topDomains.length > 0) {
|
|
30777
30785
|
const topDomains = input.aiSourceOrigin.topDomains.slice(0, 5);
|
|
30778
30786
|
actions.push({
|
|
30779
|
-
audience: "
|
|
30787
|
+
audience: "agency",
|
|
30780
30788
|
priority: 10,
|
|
30781
30789
|
horizon: "immediate",
|
|
30782
30790
|
category: "competitors",
|
|
@@ -31177,6 +31185,11 @@ function buildProjectReport(db, projectName, periodDays) {
|
|
|
31177
31185
|
const latestRunLocation = representativeLatestRun?.location ?? null;
|
|
31178
31186
|
const competitorRows2 = db.select().from(competitors).where(eq32(competitors.projectId, project.id)).all();
|
|
31179
31187
|
const competitorDomains = competitorRows2.map((c) => c.domain);
|
|
31188
|
+
const actionPlanCompetitorDomains = configuredCompetitorDomainsForActionPlan(
|
|
31189
|
+
db,
|
|
31190
|
+
project.id,
|
|
31191
|
+
competitorDomains
|
|
31192
|
+
);
|
|
31180
31193
|
const ownedDomains = project.ownedDomains;
|
|
31181
31194
|
const projectDomains = [project.canonicalDomain, ...ownedDomains];
|
|
31182
31195
|
const projectBrandNames = effectiveBrandNames(project);
|
|
@@ -31298,7 +31311,7 @@ function buildProjectReport(db, projectName, periodDays) {
|
|
|
31298
31311
|
};
|
|
31299
31312
|
const actionPlan = buildReportActionPlan({
|
|
31300
31313
|
canonicalDomain: project.canonicalDomain,
|
|
31301
|
-
competitorDomains,
|
|
31314
|
+
competitorDomains: actionPlanCompetitorDomains,
|
|
31302
31315
|
citationScorecard,
|
|
31303
31316
|
aiSourceOrigin,
|
|
31304
31317
|
gsc: gscSection,
|
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
loadConfig,
|
|
12
12
|
loadConfigRaw,
|
|
13
13
|
saveConfigPatch
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-V7LWMC2C.js";
|
|
15
15
|
import {
|
|
16
16
|
CC_CACHE_DIR,
|
|
17
17
|
DUCKDB_SPEC,
|
|
@@ -158,7 +158,7 @@ import {
|
|
|
158
158
|
siteCrawlSnapshots,
|
|
159
159
|
toAlertView,
|
|
160
160
|
usageCounters
|
|
161
|
-
} from "./chunk-
|
|
161
|
+
} from "./chunk-67UGGOII.js";
|
|
162
162
|
import {
|
|
163
163
|
AGENT_MEMORY_VALUE_MAX_BYTES,
|
|
164
164
|
AGENT_PROVIDER_IDS,
|
|
@@ -299,7 +299,7 @@ import {
|
|
|
299
299
|
validationError,
|
|
300
300
|
winnabilityClassLabel,
|
|
301
301
|
withRetry
|
|
302
|
-
} from "./chunk-
|
|
302
|
+
} from "./chunk-PXGN7BY7.js";
|
|
303
303
|
|
|
304
304
|
// src/telemetry.ts
|
|
305
305
|
import crypto from "crypto";
|
|
@@ -11903,7 +11903,7 @@ function readStoredGroundingSources(rawResponse) {
|
|
|
11903
11903
|
return result;
|
|
11904
11904
|
}
|
|
11905
11905
|
async function backfillInsightsCommand(project, opts) {
|
|
11906
|
-
const { IntelligenceService: IntelligenceService2 } = await import("./intelligence-service-
|
|
11906
|
+
const { IntelligenceService: IntelligenceService2 } = await import("./intelligence-service-CTFIKNIF.js");
|
|
11907
11907
|
const config = loadConfig();
|
|
11908
11908
|
const db = createClient(config.database);
|
|
11909
11909
|
migrate(db);
|
|
@@ -5,11 +5,11 @@ import {
|
|
|
5
5
|
installSkills,
|
|
6
6
|
loadConfigRaw,
|
|
7
7
|
saveConfigPatch
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-V7LWMC2C.js";
|
|
9
9
|
import {
|
|
10
10
|
SKILL_MANIFEST_FILENAME,
|
|
11
11
|
SkillsClients
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-PXGN7BY7.js";
|
|
13
13
|
|
|
14
14
|
// src/skills-autosync.ts
|
|
15
15
|
import fs from "fs";
|
|
@@ -72,8 +72,13 @@ function noQueries(projectName) {
|
|
|
72
72
|
{ projectName }
|
|
73
73
|
);
|
|
74
74
|
}
|
|
75
|
-
function runInProgress(projectName) {
|
|
76
|
-
return new AppError(
|
|
75
|
+
function runInProgress(projectName, kind = "answer-visibility", activeRunId) {
|
|
76
|
+
return new AppError(
|
|
77
|
+
"RUN_IN_PROGRESS",
|
|
78
|
+
`A '${kind}' run is already in progress for '${projectName}'`,
|
|
79
|
+
409,
|
|
80
|
+
{ projectName, kind, ...activeRunId ? { activeRunId } : {} }
|
|
81
|
+
);
|
|
77
82
|
}
|
|
78
83
|
function operationInProgress(message, details) {
|
|
79
84
|
return new AppError("OPERATION_IN_PROGRESS", message, 409, details);
|
package/dist/cli.js
CHANGED
|
@@ -28,11 +28,11 @@ import {
|
|
|
28
28
|
trackCliCommandFinished,
|
|
29
29
|
trackEvent,
|
|
30
30
|
waitForServerRuntimeStartup
|
|
31
|
-
} from "./chunk-
|
|
31
|
+
} from "./chunk-BPO7PDQH.js";
|
|
32
32
|
import {
|
|
33
33
|
autoSyncSkills,
|
|
34
34
|
formatAutoSyncNotice
|
|
35
|
-
} from "./chunk-
|
|
35
|
+
} from "./chunk-GGEW65VE.js";
|
|
36
36
|
import {
|
|
37
37
|
CliError,
|
|
38
38
|
EXIT_SYSTEM_ERROR,
|
|
@@ -58,7 +58,7 @@ import {
|
|
|
58
58
|
saveConfigPatch,
|
|
59
59
|
systemError,
|
|
60
60
|
usageError
|
|
61
|
-
} from "./chunk-
|
|
61
|
+
} from "./chunk-V7LWMC2C.js";
|
|
62
62
|
import {
|
|
63
63
|
CLOUDFLARE_WORKER_BINDINGS,
|
|
64
64
|
CLOUDFLARE_WORKER_GENERATED_MARKER,
|
|
@@ -72,7 +72,7 @@ import {
|
|
|
72
72
|
projects,
|
|
73
73
|
queries,
|
|
74
74
|
renderReportHtml
|
|
75
|
-
} from "./chunk-
|
|
75
|
+
} from "./chunk-67UGGOII.js";
|
|
76
76
|
import {
|
|
77
77
|
AdsDeliverySnapshotStatuses,
|
|
78
78
|
AdsHistoricalCampaignRollupStatuses,
|
|
@@ -143,7 +143,7 @@ import {
|
|
|
143
143
|
resolveProviderInput,
|
|
144
144
|
visibilityReportRequestSchema,
|
|
145
145
|
winnabilityClassSchema
|
|
146
|
-
} from "./chunk-
|
|
146
|
+
} from "./chunk-PXGN7BY7.js";
|
|
147
147
|
|
|
148
148
|
// src/cli.ts
|
|
149
149
|
import { pathToFileURL } from "url";
|
|
@@ -12410,7 +12410,23 @@ async function cancelRun(project, runId, format) {
|
|
|
12410
12410
|
let targetId = runId;
|
|
12411
12411
|
if (!targetId) {
|
|
12412
12412
|
const runs = await client.listRuns(project);
|
|
12413
|
-
const
|
|
12413
|
+
const activeRuns = runs.filter((r) => r.status === "queued" || r.status === "running");
|
|
12414
|
+
if (activeRuns.length > 1) {
|
|
12415
|
+
const candidates = activeRuns.map(({ id, kind, status }) => ({ id, kind, status }));
|
|
12416
|
+
throw new CliError({
|
|
12417
|
+
code: "MULTIPLE_ACTIVE_RUNS",
|
|
12418
|
+
message: `Multiple active runs found for project "${project}". Specify a run ID.`,
|
|
12419
|
+
displayMessage: `Error: Multiple active runs found for project "${project}". Specify a run ID.
|
|
12420
|
+
` + candidates.map((r) => ` ${r.id} ${r.kind} ${r.status}`).join("\n") + `
|
|
12421
|
+
To cancel by ID: canonry run cancel ${project} <run-id>`,
|
|
12422
|
+
details: {
|
|
12423
|
+
project,
|
|
12424
|
+
activeRuns: candidates,
|
|
12425
|
+
suggestedCommands: [`canonry run cancel ${project} <run-id>`]
|
|
12426
|
+
}
|
|
12427
|
+
});
|
|
12428
|
+
}
|
|
12429
|
+
const active = activeRuns[0];
|
|
12414
12430
|
if (!active) {
|
|
12415
12431
|
throw new CliError({
|
|
12416
12432
|
code: "NO_ACTIVE_RUN",
|
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-BPO7PDQH.js";
|
|
7
7
|
import {
|
|
8
8
|
loadConfig
|
|
9
|
-
} from "./chunk-
|
|
10
|
-
import "./chunk-
|
|
11
|
-
import "./chunk-
|
|
9
|
+
} from "./chunk-V7LWMC2C.js";
|
|
10
|
+
import "./chunk-67UGGOII.js";
|
|
11
|
+
import "./chunk-PXGN7BY7.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-GGEW65VE.js";
|
|
4
4
|
import {
|
|
5
5
|
createApiClient,
|
|
6
6
|
createCanonryMcpServer
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-V7LWMC2C.js";
|
|
8
8
|
import {
|
|
9
9
|
isReadOnlyKey
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-PXGN7BY7.js";
|
|
11
11
|
|
|
12
12
|
// src/mcp/cli.ts
|
|
13
13
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ainyc/canonry",
|
|
3
|
-
"version": "4.186.
|
|
3
|
+
"version": "4.186.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",
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
},
|
|
42
42
|
"dependencies": {
|
|
43
43
|
"@anthropic-ai/sdk": "^0.91.1",
|
|
44
|
-
"@canonry/aeo-audit": "7.
|
|
44
|
+
"@canonry/aeo-audit": "7.2.0",
|
|
45
45
|
"@fastify/rate-limit": "^11.2.0",
|
|
46
46
|
"@fastify/static": "^9.1.1",
|
|
47
47
|
"@google/genai": "^1.46.0",
|
|
@@ -70,30 +70,30 @@
|
|
|
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",
|
|
78
|
-
"@ainyc/canonry-
|
|
77
|
+
"@ainyc/canonry-contracts": "0.0.0",
|
|
79
78
|
"@ainyc/canonry-integration-bing": "0.0.0",
|
|
80
79
|
"@ainyc/canonry-integration-cloudflare-queue": "0.0.0",
|
|
80
|
+
"@ainyc/canonry-integration-cloud-run": "0.0.0",
|
|
81
|
+
"@ainyc/canonry-integration-cloudflare-worker": "0.0.0",
|
|
81
82
|
"@ainyc/canonry-integration-commoncrawl": "0.0.0",
|
|
82
83
|
"@ainyc/canonry-integration-google": "0.0.0",
|
|
83
|
-
"@ainyc/canonry-integration-cloudflare-worker": "0.0.0",
|
|
84
84
|
"@ainyc/canonry-integration-google-ads": "0.0.0",
|
|
85
|
+
"@ainyc/canonry-integration-google-places": "0.0.0",
|
|
85
86
|
"@ainyc/canonry-integration-google-business-profile": "0.0.0",
|
|
86
|
-
"@ainyc/canonry-integration-google-tag-manager": "0.0.0",
|
|
87
87
|
"@ainyc/canonry-integration-openai-ads": "0.0.0",
|
|
88
88
|
"@ainyc/canonry-integration-traffic": "0.0.0",
|
|
89
|
-
"@ainyc/canonry-integration-wordpress": "0.0.0",
|
|
90
89
|
"@ainyc/canonry-intelligence": "0.0.0",
|
|
91
|
-
"@ainyc/canonry-integration-google-
|
|
92
|
-
"@ainyc/canonry-provider-claude": "0.0.0",
|
|
90
|
+
"@ainyc/canonry-integration-google-tag-manager": "0.0.0",
|
|
93
91
|
"@ainyc/canonry-provider-cdp": "0.0.0",
|
|
92
|
+
"@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-openai": "0.0.0",
|
|
96
|
+
"@ainyc/canonry-integration-wordpress": "0.0.0",
|
|
97
97
|
"@ainyc/canonry-provider-perplexity": "0.0.0"
|
|
98
98
|
},
|
|
99
99
|
"scripts": {
|