@canonry/canonry 4.131.0 → 4.133.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 (26) hide show
  1. package/assets/agent-workspace/skills/canonry/references/canonry-cli.md +7 -0
  2. package/assets/assets/{AuditHistoryPanel-yJXZMO5t.js → AuditHistoryPanel-CVDg3GXg.js} +1 -1
  3. package/assets/assets/{BacklinksPage-6VTLbAYx.js → BacklinksPage-Dh4RIvS7.js} +1 -1
  4. package/assets/assets/{ChartPrimitives-D5YGiDLi.js → ChartPrimitives-BK89G5H_.js} +1 -1
  5. package/assets/assets/{HistoryPage-BxdTM6-R.js → HistoryPage-D8rMu_Js.js} +1 -1
  6. package/assets/assets/{ProjectPage-BJKxZPRO.js → ProjectPage-CiTDveNK.js} +1 -1
  7. package/assets/assets/{RunRow-DTrAO7tE.js → RunRow-DVOwbmTp.js} +1 -1
  8. package/assets/assets/{RunsPage-CHU0DQGl.js → RunsPage-tz3Oil7N.js} +1 -1
  9. package/assets/assets/{SettingsPage-bOIwju6t.js → SettingsPage-C698YidM.js} +1 -1
  10. package/assets/assets/{TrafficPage-BKvuR482.js → TrafficPage-XDXWMtey.js} +1 -1
  11. package/assets/assets/{TrafficSourceDetailPage-3-iUTgQg.js → TrafficSourceDetailPage-Clz8kOR8.js} +1 -1
  12. package/assets/assets/{arrow-left-BXSfGhr6.js → arrow-left-GWLbh0pE.js} +1 -1
  13. package/assets/assets/{extract-error-message-DEAY62LS.js → extract-error-message-Dk8w-sb1.js} +1 -1
  14. package/assets/assets/index-jTshRRh0.js +210 -0
  15. package/assets/assets/{trash-2-O1wo9IX1.js → trash-2-DwnzsuH1.js} +1 -1
  16. package/assets/index.html +1 -1
  17. package/dist/{chunk-5GQ6FF5R.js → chunk-42P7POVS.js} +4 -4
  18. package/dist/{chunk-73HPY6XQ.js → chunk-P4MIG7V5.js} +81 -1
  19. package/dist/{chunk-ZXVWL5HX.js → chunk-VPY3PZXV.js} +1827 -873
  20. package/dist/{chunk-3WBAJKRR.js → chunk-ZPQX5ZQ2.js} +740 -555
  21. package/dist/cli.js +139 -11
  22. package/dist/index.js +4 -4
  23. package/dist/{intelligence-service-YJKQQYJQ.js → intelligence-service-2K7GVEQM.js} +2 -2
  24. package/dist/mcp.js +2 -2
  25. package/package.json +8 -8
  26. package/assets/assets/index-CfjIYitV.js +0 -210
@@ -1 +1 @@
1
- import{c as a}from"./index-CfjIYitV.js";const c=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]],d=a("circle-check",c);const e=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3",key:"1u773s"}],["path",{d:"M12 17h.01",key:"p32p05"}]],k=a("circle-question-mark",e);const t=[["path",{d:"M12 15V3",key:"m9g1x1"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["path",{d:"m7 10 5 5 5-5",key:"brsn70"}]],s=a("download",t);const o=[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]],r=a("external-link",o);const n=[["path",{d:"M10 11v6",key:"nco0om"}],["path",{d:"M14 11v6",key:"outv1u"}],["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6",key:"miytrc"}],["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2",key:"e791ji"}]],y=a("trash-2",n);export{d as C,s as D,r as E,y as T,k as a};
1
+ import{c as a}from"./index-jTshRRh0.js";const c=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]],d=a("circle-check",c);const e=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3",key:"1u773s"}],["path",{d:"M12 17h.01",key:"p32p05"}]],k=a("circle-question-mark",e);const t=[["path",{d:"M12 15V3",key:"m9g1x1"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["path",{d:"m7 10 5 5 5-5",key:"brsn70"}]],s=a("download",t);const o=[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]],r=a("external-link",o);const n=[["path",{d:"M10 11v6",key:"nco0om"}],["path",{d:"M14 11v6",key:"outv1u"}],["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6",key:"miytrc"}],["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2",key:"e791ji"}]],y=a("trash-2",n);export{d as C,s as D,r as E,y as T,k as a};
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-CfjIYitV.js"></script>
15
+ <script type="module" crossorigin src="./assets/index-jTshRRh0.js"></script>
16
16
  <link rel="modulepreload" crossorigin href="./assets/vendor-tanstack-Be8JdV5M.js">
17
17
  <link rel="modulepreload" crossorigin href="./assets/vendor-radix-CQ77EO2y.js">
18
18
  <link rel="modulepreload" crossorigin href="./assets/vendor-recharts-DSxTZhaH.js">
@@ -10,7 +10,7 @@ import {
10
10
  loadConfig,
11
11
  loadConfigRaw,
12
12
  saveConfigPatch
13
- } from "./chunk-73HPY6XQ.js";
13
+ } from "./chunk-P4MIG7V5.js";
14
14
  import {
15
15
  CC_CACHE_DIR,
16
16
  DUCKDB_SPEC,
@@ -118,7 +118,7 @@ import {
118
118
  siteAuditPages,
119
119
  siteAuditSnapshots,
120
120
  usageCounters
121
- } from "./chunk-ZXVWL5HX.js";
121
+ } from "./chunk-VPY3PZXV.js";
122
122
  import {
123
123
  AGENT_MEMORY_VALUE_MAX_BYTES,
124
124
  AGENT_PROVIDER_IDS,
@@ -191,7 +191,7 @@ import {
191
191
  validationError,
192
192
  winnabilityClassLabel,
193
193
  withRetry
194
- } from "./chunk-3WBAJKRR.js";
194
+ } from "./chunk-ZPQX5ZQ2.js";
195
195
 
196
196
  // src/telemetry.ts
197
197
  import crypto from "crypto";
@@ -7000,7 +7000,7 @@ function readStoredGroundingSources(rawResponse) {
7000
7000
  return result;
7001
7001
  }
7002
7002
  async function backfillInsightsCommand(project, opts) {
7003
- const { IntelligenceService: IntelligenceService2 } = await import("./intelligence-service-YJKQQYJQ.js");
7003
+ const { IntelligenceService: IntelligenceService2 } = await import("./intelligence-service-2K7GVEQM.js");
7004
7004
  const config = loadConfig();
7005
7005
  const db = createClient(config.database);
7006
7006
  migrate(db);
@@ -21,10 +21,13 @@ import {
21
21
  discoveryCompetitorTypeSchema,
22
22
  discoveryPromoteRequestSchema,
23
23
  discoveryRunRequestSchema,
24
+ gaMeasurementAnalysisWindowSchema,
25
+ gaMeasurementHostScopeSchema,
24
26
  keywordBatchRequestSchema,
25
27
  keywordGenerateRequestSchema,
26
28
  notificationCreateRequestSchema,
27
29
  notificationEventSchema,
30
+ organicEvidencePeriodSchema,
28
31
  projectConfigSchema,
29
32
  projectUpsertRequestSchema,
30
33
  queryBatchRequestSchema,
@@ -39,7 +42,7 @@ import {
39
42
  trafficConnectWordpressRequestSchema,
40
43
  trafficEventKindSchema,
41
44
  trafficSeriesGranularitySchema
42
- } from "./chunk-3WBAJKRR.js";
45
+ } from "./chunk-ZPQX5ZQ2.js";
43
46
 
44
47
  // src/config.ts
45
48
  import fs from "fs";
@@ -3204,6 +3207,18 @@ var getApiV1ProjectsByNameGaStatus = (options) => {
3204
3207
  ...options
3205
3208
  });
3206
3209
  };
3210
+ var getApiV1ProjectsByNameGaMeasurementAnalysis = (options) => {
3211
+ return (options.client ?? client).get({
3212
+ security: [
3213
+ {
3214
+ scheme: "bearer",
3215
+ type: "http"
3216
+ }
3217
+ ],
3218
+ url: "/api/v1/projects/{name}/ga/measurement-analysis",
3219
+ ...options
3220
+ });
3221
+ };
3207
3222
  var postApiV1ProjectsByNameGaSync = (options) => {
3208
3223
  return (options.client ?? client).post({
3209
3224
  security: [
@@ -3340,6 +3355,18 @@ var postApiV1ProjectsByNameInsightsByIdDismiss = (options) => {
3340
3355
  ...options
3341
3356
  });
3342
3357
  };
3358
+ var getApiV1ProjectsByNameOrganicEvidence = (options) => {
3359
+ return (options.client ?? client).get({
3360
+ security: [
3361
+ {
3362
+ scheme: "bearer",
3363
+ type: "http"
3364
+ }
3365
+ ],
3366
+ url: "/api/v1/projects/{name}/organic-evidence",
3367
+ ...options
3368
+ });
3369
+ };
3343
3370
  var getApiV1ProjectsByNameReport = (options) => {
3344
3371
  return (options.client ?? client).get({
3345
3372
  security: [
@@ -4327,6 +4354,15 @@ var ApiClient = class {
4327
4354
  })
4328
4355
  );
4329
4356
  }
4357
+ async getOrganicEvidence(project, period) {
4358
+ return this.invoke(
4359
+ () => getApiV1ProjectsByNameOrganicEvidence({
4360
+ client: this.heyClient,
4361
+ path: { name: project },
4362
+ ...period !== void 0 && { query: { period } }
4363
+ })
4364
+ );
4365
+ }
4330
4366
  /** Download the versioned historical answer-engine results attachment. */
4331
4367
  async downloadResultsExport(project, opts) {
4332
4368
  await this.probeBasePath();
@@ -5234,6 +5270,15 @@ var ApiClient = class {
5234
5270
  () => getApiV1ProjectsByNameGaStatus({ client: this.heyClient, path: { name: project } })
5235
5271
  );
5236
5272
  }
5273
+ async gaMeasurementAnalysis(project, params) {
5274
+ return this.invoke(
5275
+ () => getApiV1ProjectsByNameGaMeasurementAnalysis({
5276
+ client: this.heyClient,
5277
+ path: { name: project },
5278
+ query: params
5279
+ })
5280
+ );
5281
+ }
5237
5282
  async gaSync(project, body) {
5238
5283
  return this.invoke(
5239
5284
  () => postApiV1ProjectsByNameGaSync({
@@ -6049,6 +6094,13 @@ var gaWindowInputSchema = z2.object({
6049
6094
  var gaTrafficInputSchema = gaWindowInputSchema.extend({
6050
6095
  limit: z2.number().int().positive().max(500).optional()
6051
6096
  });
6097
+ var gaMeasurementAnalysisInputSchema = z2.object({
6098
+ project: projectNameSchema,
6099
+ window: gaMeasurementAnalysisWindowSchema.optional(),
6100
+ hostScope: gaMeasurementHostScopeSchema.optional(),
6101
+ pathPrefix: z2.string().min(1).optional(),
6102
+ limit: z2.number().int().positive().max(100).optional()
6103
+ });
6052
6104
  var queriesInputSchema = z2.object({
6053
6105
  project: projectNameSchema,
6054
6106
  request: queryBatchRequestSchema
@@ -6415,6 +6467,20 @@ var canonryMcpTools = [
6415
6467
  openApiOperations: ["GET /api/v1/projects/{name}/report"],
6416
6468
  handler: (client2, input) => client2.getReport(input.project, input.period !== void 0 ? { period: input.period } : void 0)
6417
6469
  }),
6470
+ defineTool({
6471
+ name: "canonry_organic_evidence",
6472
+ title: "Reconcile organic and AI evidence",
6473
+ description: "One-call investigation of whether organic work is gaining visibility, traffic, AI attention, or leads. Returns source-specific 30-day GSC and GA4 cohorts, URL-agnostic page evidence, available GA4 lead events, server-observed AI crawling/user-fetch/referral evidence, the latest answer-visibility sweep, source coverage, findings, and limitations. It preserves native units. Prefer this over fanning out across GSC, GA, traffic, and visibility tools.",
6474
+ access: "read",
6475
+ tier: "monitoring",
6476
+ inputSchema: z2.object({
6477
+ project: projectNameSchema,
6478
+ period: organicEvidencePeriodSchema.optional().describe("Evidence window: 60 or 90 days (default 90).")
6479
+ }),
6480
+ annotations: readAnnotations(),
6481
+ openApiOperations: ["GET /api/v1/projects/{name}/organic-evidence"],
6482
+ handler: (client2, input) => client2.getOrganicEvidence(input.project, input.period)
6483
+ }),
6418
6484
  defineTool({
6419
6485
  name: "canonry_analytics_metrics",
6420
6486
  title: "Get citation & mention trend",
@@ -6931,6 +6997,20 @@ var canonryMcpTools = [
6931
6997
  openApiOperations: ["GET /api/v1/projects/{name}/ga/status"],
6932
6998
  handler: (client2, input) => client2.gaStatus(input.project)
6933
6999
  }),
7000
+ defineTool({
7001
+ name: "canonry_ga_measurement_analysis",
7002
+ title: "Analyze GA acquisition and search demand",
7003
+ description: "Compare native GA4 channels and lead events with branded/non-brand Search Console demand over fixed 30-day cohorts.",
7004
+ access: "read",
7005
+ tier: "ga",
7006
+ inputSchema: gaMeasurementAnalysisInputSchema,
7007
+ annotations: readAnnotations(),
7008
+ openApiOperations: ["GET /api/v1/projects/{name}/ga/measurement-analysis"],
7009
+ handler: (client2, input) => client2.gaMeasurementAnalysis(
7010
+ input.project,
7011
+ compactStringParams(input, ["window", "hostScope", "pathPrefix", "limit"])
7012
+ )
7013
+ }),
6934
7014
  defineTool({
6935
7015
  name: "canonry_ga_traffic",
6936
7016
  title: "Get GA traffic",