@canonry/canonry 4.125.0 → 4.127.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 (25) hide show
  1. package/assets/agent-workspace/skills/canonry/references/canonry-cli.md +5 -0
  2. package/assets/assets/{AuditHistoryPanel-C-KSU-dr.js → AuditHistoryPanel-DwJpVWme.js} +1 -1
  3. package/assets/assets/{BacklinksPage-BH4njwCh.js → BacklinksPage-K8FQUBxI.js} +1 -1
  4. package/assets/assets/{ChartPrimitives-BhB9Kxzc.js → ChartPrimitives-6oFKrJFk.js} +1 -1
  5. package/assets/assets/{HistoryPage-BQVNx0eu.js → HistoryPage-DwOAoN1Z.js} +1 -1
  6. package/assets/assets/{ProjectPage-DnkNE1AW.js → ProjectPage-CdgFUk7h.js} +1 -1
  7. package/assets/assets/{RunRow-70N3oGz8.js → RunRow-lt9IS99U.js} +1 -1
  8. package/assets/assets/{RunsPage-CtuKRP0o.js → RunsPage-DitYcIdx.js} +1 -1
  9. package/assets/assets/{SettingsPage-B1ZGnDz8.js → SettingsPage-CAOrh65Q.js} +1 -1
  10. package/assets/assets/{TrafficPage-BOGbXHd9.js → TrafficPage-BqzNvx75.js} +1 -1
  11. package/assets/assets/{TrafficSourceDetailPage-5jj7n7W1.js → TrafficSourceDetailPage-DXbygZUA.js} +1 -1
  12. package/assets/assets/{arrow-left-gOf0lyu3.js → arrow-left-AmG4gtUR.js} +1 -1
  13. package/assets/assets/{extract-error-message-CZKcwJhv.js → extract-error-message-DlVtjoPz.js} +1 -1
  14. package/assets/assets/{index-B_CDPjOg.js → index-BiCDkOH4.js} +3 -3
  15. package/assets/assets/{trash-2-BnFgG3Wq.js → trash-2-gFHWd1A1.js} +1 -1
  16. package/assets/index.html +1 -1
  17. package/dist/{chunk-DN5H2ZN7.js → chunk-A4YBV4Y4.js} +35 -4
  18. package/dist/{chunk-RFLNTI7Y.js → chunk-BLSHHRRU.js} +21 -5
  19. package/dist/{chunk-YPRUBNUK.js → chunk-HQRUFTLN.js} +272 -61
  20. package/dist/{chunk-WA57WG6W.js → chunk-IHRW6WWV.js} +1 -1
  21. package/dist/cli.js +4 -4
  22. package/dist/index.js +4 -4
  23. package/dist/{intelligence-service-WJ2ZR7GF.js → intelligence-service-2WKS3EWJ.js} +2 -2
  24. package/dist/mcp.js +2 -2
  25. package/package.json +8 -8
@@ -1 +1 @@
1
- import{c}from"./index-B_CDPjOg.js";const a=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]],h=c("circle-check",a);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"}]],n=c("circle-question-mark",e);const o=[["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=c("download",o);const t=[["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"}]],r=c("trash-2",t);export{h as C,s as D,r as T,n as a};
1
+ import{c}from"./index-BiCDkOH4.js";const a=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]],h=c("circle-check",a);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"}]],n=c("circle-question-mark",e);const o=[["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=c("download",o);const t=[["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"}]],r=c("trash-2",t);export{h as C,s as D,r as T,n 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-B_CDPjOg.js"></script>
15
+ <script type="module" crossorigin src="./assets/index-BiCDkOH4.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-WA57WG6W.js";
13
+ } from "./chunk-IHRW6WWV.js";
14
14
  import {
15
15
  CC_CACHE_DIR,
16
16
  DUCKDB_SPEC,
@@ -77,6 +77,7 @@ import {
77
77
  groupRunsByCreatedAt,
78
78
  gscCoverageSnapshots,
79
79
  gscDailyTotals,
80
+ gscQueryDailyTotals,
80
81
  gscSearchData,
81
82
  gscUrlInspections,
82
83
  hashAttributes,
@@ -115,7 +116,7 @@ import {
115
116
  siteAuditPages,
116
117
  siteAuditSnapshots,
117
118
  usageCounters
118
- } from "./chunk-YPRUBNUK.js";
119
+ } from "./chunk-HQRUFTLN.js";
119
120
  import {
120
121
  AGENT_MEMORY_VALUE_MAX_BYTES,
121
122
  AGENT_PROVIDER_IDS,
@@ -185,7 +186,7 @@ import {
185
186
  validationError,
186
187
  winnabilityClassLabel,
187
188
  withRetry
188
- } from "./chunk-RFLNTI7Y.js";
189
+ } from "./chunk-BLSHHRRU.js";
189
190
 
190
191
  // src/telemetry.ts
191
192
  import crypto from "crypto";
@@ -3869,6 +3870,36 @@ async function executeGscSync(db, runId, projectId, opts) {
3869
3870
  }).run();
3870
3871
  }
3871
3872
  log2.info("daily-totals.complete", { runId, projectId, rowCount: totalRows.length });
3873
+ const queryTotalRows = await fetchSearchAnalytics(accessToken, propertyId, {
3874
+ startDate,
3875
+ endDate,
3876
+ dimensions: ["date", "query"]
3877
+ });
3878
+ db.delete(gscQueryDailyTotals).where(
3879
+ and2(
3880
+ eq2(gscQueryDailyTotals.projectId, projectId),
3881
+ sql2`${gscQueryDailyTotals.date} >= ${startDate}`,
3882
+ sql2`${gscQueryDailyTotals.date} <= ${endDate}`
3883
+ )
3884
+ ).run();
3885
+ const queryTotalsNow = (/* @__PURE__ */ new Date()).toISOString();
3886
+ for (const row of queryTotalRows) {
3887
+ const [date, query] = row.keys;
3888
+ if (!date || !query) continue;
3889
+ db.insert(gscQueryDailyTotals).values({
3890
+ id: crypto4.randomUUID(),
3891
+ projectId,
3892
+ date,
3893
+ query,
3894
+ clicks: row.clicks,
3895
+ impressions: row.impressions,
3896
+ position: String(row.position),
3897
+ syncedAt: queryTotalsNow,
3898
+ syncRunId: runId,
3899
+ createdAt: queryTotalsNow
3900
+ }).run();
3901
+ }
3902
+ log2.info("query-totals.complete", { runId, projectId, rowCount: queryTotalRows.length });
3872
3903
  const pageClicks = /* @__PURE__ */ new Map();
3873
3904
  for (const row of rows) {
3874
3905
  const page = row.keys[1];
@@ -6936,7 +6967,7 @@ function readStoredGroundingSources(rawResponse) {
6936
6967
  return result;
6937
6968
  }
6938
6969
  async function backfillInsightsCommand(project, opts) {
6939
- const { IntelligenceService: IntelligenceService2 } = await import("./intelligence-service-WJ2ZR7GF.js");
6970
+ const { IntelligenceService: IntelligenceService2 } = await import("./intelligence-service-2WKS3EWJ.js");
6940
6971
  const config = loadConfig();
6941
6972
  const db = createClient(config.database);
6942
6973
  migrate(db);
@@ -5256,15 +5256,30 @@ var socialReferralSectionSchema = z32.object({
5256
5256
  });
5257
5257
  var aiReferralSectionSchema = z32.object({
5258
5258
  totalSessions: z32.number(),
5259
- totalUsers: z32.number(),
5260
5259
  paidSessions: z32.number(),
5261
- paidUsers: z32.number(),
5262
5260
  organicSessions: z32.number(),
5263
- organicUsers: z32.number(),
5261
+ /**
5262
+ * @deprecated Never emitted since 4.127.0 and removed in the next major.
5263
+ *
5264
+ * GA reports `totalUsers` as a COUNT DISTINCT at the grain requested, and
5265
+ * `ga_ai_referrals` is keyed by (date, source, medium, channelGroup,
5266
+ * landingPage, sourceDimension), so summing it re-counted the same visitor on
5267
+ * every extra day, page and channel. Unlike GA daily users, no
5268
+ * un-dimensioned AI-referral fetch exists to ask Google for the true figure,
5269
+ * so the number could not be corrected — only withdrawn. Optional rather than
5270
+ * deleted so existing API / `canonry report --format json` / MCP consumers
5271
+ * keep parsing; they now read `undefined` instead of an inflated number.
5272
+ */
5273
+ totalUsers: z32.number().optional(),
5274
+ /** @deprecated See `totalUsers`. Never emitted since 4.127.0. */
5275
+ paidUsers: z32.number().optional(),
5276
+ /** @deprecated See `totalUsers`. Never emitted since 4.127.0. */
5277
+ organicUsers: z32.number().optional(),
5264
5278
  bySource: z32.array(z32.object({
5265
5279
  source: z32.string(),
5266
5280
  sessions: z32.number(),
5267
- users: z32.number(),
5281
+ /** @deprecated See `totalUsers`. Never emitted since 4.127.0. */
5282
+ users: z32.number().optional(),
5268
5283
  paidSessions: z32.number(),
5269
5284
  organicSessions: z32.number(),
5270
5285
  sharePct: z32.number()
@@ -5273,7 +5288,8 @@ var aiReferralSectionSchema = z32.object({
5273
5288
  topLandingPages: z32.array(z32.object({
5274
5289
  page: z32.string(),
5275
5290
  sessions: z32.number(),
5276
- users: z32.number()
5291
+ /** @deprecated See `totalUsers`. Never emitted since 4.127.0. */
5292
+ users: z32.number().optional()
5277
5293
  }))
5278
5294
  });
5279
5295
  var serverActivitySectionSchema = z32.object({