@canonry/canonry 7.94.0 → 7.96.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 (142) hide show
  1. package/assets/agent-workspace/skills/aero/references/ai-traffic-tracking.md +4 -1
  2. package/assets/agent-workspace/skills/canonry/references/ai-traffic-tracking.md +4 -1
  3. package/assets/agent-workspace/skills/canonry/references/canonry-cli.md +12 -4
  4. package/assets/assets/{AgentSetupPage-BlPXN_oH.js → AgentSetupPage-DBiPrrdJ.js} +4 -4
  5. package/assets/assets/{AuditHistoryPanel-N8Z4gng7.js → AuditHistoryPanel-DSnIs064.js} +1 -1
  6. package/assets/assets/{BacklinksPage-DSrgqlkj.js → BacklinksPage-tPiG0nEP.js} +1 -1
  7. package/assets/assets/{HistoryPage-v2jbUkle.js → HistoryPage-sxYHrfNk.js} +1 -1
  8. package/assets/assets/MeasurementPropertyPage-B8EbifR2.js +4 -0
  9. package/assets/assets/ProjectPage-C1_A7iGy.js +11 -0
  10. package/assets/assets/{RunsPage-CXZJDdnr.js → RunsPage-RE6nLBTv.js} +1 -1
  11. package/assets/assets/{SettingsPage-CeLvWs_T.js → SettingsPage-Dn93SUD1.js} +1 -1
  12. package/assets/assets/SiteHealthSection-BEBYoCNu.js +2 -0
  13. package/assets/assets/ToneBadge-DFlmWh2A.js +60 -0
  14. package/assets/assets/{TrafficPage-CEsmS5N1.js → TrafficPage-cNokjIJa.js} +1 -1
  15. package/assets/assets/{TrafficSourceDetailPage-D31g1FXV.js → TrafficSourceDetailPage-DFGbx0zs.js} +1 -1
  16. package/assets/assets/{account-context-CGIyok0O.js → account-context-RM43ek4w.js} +1 -1
  17. package/assets/assets/{agent-trust-copy-B-3akxrd.js → agent-trust-copy-CRZ_oe24.js} +1 -1
  18. package/assets/assets/{card-BMjN_ofC.js → card-GFeSoV1m.js} +1 -1
  19. package/assets/assets/{format-helpers-Blu0QNcd.js → format-helpers-4dA9HFgE.js} +1 -1
  20. package/assets/assets/index-CohgAQ9L.js +60 -0
  21. package/assets/assets/{query-client-DdwTc28X.js → query-client-B3Z7Vqgv.js} +1 -1
  22. package/assets/assets/react-query-HC0PcMhZ.js +1 -0
  23. package/assets/assets/{react-sigma_core.esm.min-5sP0Pb_F.js → react-sigma_core.esm.min-IsYtRW95.js} +1 -1
  24. package/assets/assets/{server-traffic-403Q1CKm.js → server-traffic-BtWOYZXf.js} +1 -1
  25. package/assets/assets/{service-ChEbo8oM.js → service-Bu4M0T0x.js} +1 -1
  26. package/assets/index.html +7 -7
  27. package/dist/{ads-6RVS23I5.js → ads-NS4KNR2U.js} +3 -3
  28. package/dist/{agent-N5LH7QNA.js → agent-773TJYGJ.js} +7 -7
  29. package/dist/{agent-ask-IJV2PWPN.js → agent-ask-MQXNRMAN.js} +3 -3
  30. package/dist/{agent-conversations-STISIDWB.js → agent-conversations-5EEEEWEQ.js} +3 -3
  31. package/dist/{agent-journeys-VCP5MD2W.js → agent-journeys-U5ITMUIM.js} +3 -3
  32. package/dist/{agent-memory-XQQNXRY6.js → agent-memory-6PEE54ST.js} +3 -3
  33. package/dist/{agent-providers-IW2Q6WPP.js → agent-providers-6D76GSYA.js} +3 -3
  34. package/dist/{agent-transcript-5XUCHOOT.js → agent-transcript-6M5RYZIR.js} +3 -3
  35. package/dist/{analytics-RZZZBC4H.js → analytics-WBFQJTHV.js} +3 -3
  36. package/dist/{apply-X5ZTHGSJ.js → apply-AGNDBHNV.js} +3 -3
  37. package/dist/{backfill-ZF6RX27O.js → backfill-ZDPS7VON.js} +10 -10
  38. package/dist/{backlinks-WZ7YUKHH.js → backlinks-TNPNJXPS.js} +3 -3
  39. package/dist/{bing-Z4A5NHOC.js → bing-5WB7JCBP.js} +3 -3
  40. package/dist/{bootstrap-OCJ7EIXK.js → bootstrap-XF77XL7U.js} +10 -10
  41. package/dist/{cdp-YGZFLTFT.js → cdp-NBTJLUPM.js} +7 -7
  42. package/dist/{chunk-RSBIHKHH.js → chunk-24CUAPPY.js} +4 -4
  43. package/dist/{chunk-M6DYUCNB.js → chunk-35AEUG77.js} +1 -1
  44. package/dist/{chunk-S6KJYLOV.js → chunk-377PJ4AT.js} +3 -3
  45. package/dist/{chunk-R7BX2ZSQ.js → chunk-3FHPUOMW.js} +1 -1
  46. package/dist/{chunk-K63XX7VY.js → chunk-4GECW7XZ.js} +3 -3
  47. package/dist/{chunk-3D4VEWDJ.js → chunk-5VLCPNTR.js} +6 -6
  48. package/dist/{chunk-SFNSSHIN.js → chunk-6X24IDPZ.js} +1 -1
  49. package/dist/{chunk-XPBEDIXW.js → chunk-CPJX2RWA.js} +2 -2
  50. package/dist/{chunk-PR5FCYNN.js → chunk-F2O42DSO.js} +21 -21
  51. package/dist/{chunk-D6KTO5TO.js → chunk-FUMYCZ62.js} +1 -1
  52. package/dist/{chunk-ECUJEKIO.js → chunk-G6JSK2RY.js} +1 -1
  53. package/dist/{chunk-YRCKRY3Q.js → chunk-HKUH75YH.js} +2 -2
  54. package/dist/{chunk-XIHIB7VP.js → chunk-HN2YNYPO.js} +7 -7
  55. package/dist/{chunk-IUDXV6PH.js → chunk-I663X7WB.js} +2 -2
  56. package/dist/{chunk-RJLSGCOI.js → chunk-IO4BZLM7.js} +2 -2
  57. package/dist/{chunk-BL4CZJYJ.js → chunk-JGLX5WU6.js} +115 -3
  58. package/dist/{chunk-NUBADAA4.js → chunk-JLC3CCFM.js} +4 -4
  59. package/dist/{chunk-VGAQH7KI.js → chunk-KCKUCJOG.js} +1 -1
  60. package/dist/{chunk-55EFIQP7.js → chunk-LXKWFM74.js} +2 -2
  61. package/dist/{chunk-N6MXZ5SC.js → chunk-MAOKDX3W.js} +5 -5
  62. package/dist/{chunk-UPBQHUE6.js → chunk-MJIL4BWR.js} +3 -3
  63. package/dist/{chunk-BJAOD3NW.js → chunk-N4SEITGT.js} +5 -5
  64. package/dist/{chunk-QDGW75MP.js → chunk-OCXDY2DG.js} +1 -1
  65. package/dist/{chunk-B5JKQXRN.js → chunk-PC7ZUW2H.js} +2 -2
  66. package/dist/{chunk-N7PGV6QQ.js → chunk-PSCXQGJE.js} +1027 -816
  67. package/dist/{chunk-LXJAXAJD.js → chunk-QBIIQF3J.js} +1 -1
  68. package/dist/{chunk-32N7BGTD.js → chunk-S3HNS2YJ.js} +3 -3
  69. package/dist/{chunk-CBNDEKI6.js → chunk-SDCH5EBA.js} +1 -1
  70. package/dist/{chunk-K2JCPF2W.js → chunk-SPWGDODX.js} +368 -368
  71. package/dist/{chunk-LDY66O7A.js → chunk-SXHD2NFT.js} +4 -4
  72. package/dist/{chunk-7JQM46YO.js → chunk-UPALIEP2.js} +2 -2
  73. package/dist/{chunk-NSUB2S4V.js → chunk-W4ZRFNOX.js} +57 -26
  74. package/dist/{chunk-JDOAULVX.js → chunk-XOCSSHYD.js} +1 -1
  75. package/dist/{chunk-FM74QGW5.js → chunk-YL77WFHQ.js} +7 -7
  76. package/dist/{chunk-YGHI3W4D.js → chunk-ZZVRDHSK.js} +1 -1
  77. package/dist/{citations-IUITVPHO.js → citations-MZ6XQDI3.js} +3 -3
  78. package/dist/{cli-catalog-IAPKU2RG.js → cli-catalog-QPB2ADGD.js} +3 -3
  79. package/dist/{cli-commands-FICINBUR.js → cli-commands-RRHOMF6X.js} +7 -7
  80. package/dist/cli.js +13 -13
  81. package/dist/{competitor-U5DMMCIA.js → competitor-VF77UMUR.js} +3 -3
  82. package/dist/{content-ZQIZUNF5.js → content-BINAMQFF.js} +3 -3
  83. package/dist/{dashboard-KPGX4EQT.js → dashboard-OE4BGMKP.js} +6 -6
  84. package/dist/{demo-NEWVCEXD.js → demo-3HVJUP3G.js} +1 -1
  85. package/dist/{demo-server-5GJEGG5K.js → demo-server-BEFPBA7P.js} +14 -14
  86. package/dist/{discover-HSPVFHKK.js → discover-3XUPBCXL.js} +3 -3
  87. package/dist/{discover-eval-BYKPJ3DL.js → discover-eval-3DWJPIU2.js} +3 -3
  88. package/dist/{doctor-CK4BTTWH.js → doctor-KYWVYS74.js} +3 -3
  89. package/dist/{evidence-BX3CWPCT.js → evidence-DCTXENHR.js} +3 -3
  90. package/dist/{export-cmd-QMCRDMPZ.js → export-cmd-E5OUTSMR.js} +3 -3
  91. package/dist/{ga-RMTUMSEJ.js → ga-KY7MHW2G.js} +4 -4
  92. package/dist/{gbp-JK67SYLW.js → gbp-2TJ6JACW.js} +3 -3
  93. package/dist/{google-PJSK6IJV.js → google-BZKYIIA6.js} +4 -4
  94. package/dist/{google-marketing-UQ2FONXU.js → google-marketing-6ACZP4JB.js} +1 -1
  95. package/dist/{health-cmd-ZDXFD53P.js → health-cmd-LCVJY5MG.js} +3 -3
  96. package/dist/{history-OYL7SPEY.js → history-MAZOPZZ5.js} +3 -3
  97. package/dist/index.d.ts +213 -35
  98. package/dist/index.js +25 -25
  99. package/dist/{init-DZUNAQBN.js → init-Z35R7A6X.js} +12 -12
  100. package/dist/{insights-AIBLDPX6.js → insights-PAZHZP74.js} +3 -3
  101. package/dist/intelligence-service-YA7PBFQV.js +16 -0
  102. package/dist/{journeys-EDEET2EC.js → journeys-H6OPK5XY.js} +3 -3
  103. package/dist/{keys-SEZQTYGJ.js → keys-DF6LV4T5.js} +3 -3
  104. package/dist/{keyword-6FJIWTHW.js → keyword-ILICCRQK.js} +3 -3
  105. package/dist/{logs-EML2KKOP.js → logs-PKKCPDIN.js} +3 -3
  106. package/dist/{mcp-AA5QUNBZ.js → mcp-7GVOYYX4.js} +4 -4
  107. package/dist/mcp.js +9 -9
  108. package/dist/{measurement-plan-ALHRGRPH.js → measurement-plan-V7E7UHE2.js} +5 -5
  109. package/dist/{notify-EVTI3SWQ.js → notify-ISU7XBAW.js} +3 -3
  110. package/dist/{organic-evidence-EXQQ6R7H.js → organic-evidence-FIL7YJ4Z.js} +3 -3
  111. package/dist/{overview-5CIFLSDG.js → overview-NVBLGY53.js} +4 -4
  112. package/dist/{project-DNDENHRU.js → project-NSNMLL3Z.js} +3 -3
  113. package/dist/{query-ETMHFVKZ.js → query-TPZUUJ4X.js} +3 -3
  114. package/dist/{research-Q5X46CR5.js → research-WILAIDCK.js} +3 -3
  115. package/dist/{results-export-DZZANVYY.js → results-export-XP7XUKI2.js} +3 -3
  116. package/dist/{run-OQJXRJ42.js → run-L646IKUB.js} +4 -4
  117. package/dist/{schedule-6AI3J2AB.js → schedule-I2LW344O.js} +3 -3
  118. package/dist/{search-7TAJBSHE.js → search-7EBWXQ6X.js} +3 -3
  119. package/dist/{serve-WD44V3TK.js → serve-LNBKTV5N.js} +26 -26
  120. package/dist/{session-LTKCS763.js → session-U2OPQSJE.js} +13 -13
  121. package/dist/{settings-EUMYGNIV.js → settings-IGJ6ZA7C.js} +3 -3
  122. package/dist/{sitemaps-I4QPLAZW.js → sitemaps-B4G4PXIE.js} +3 -3
  123. package/dist/{skills-PTYYU3FR.js → skills-WQXXY2HN.js} +2 -2
  124. package/dist/{snapshot-62FF4GEA.js → snapshot-2TD4WIEO.js} +3 -3
  125. package/dist/{src-LRYXRHLW.js → src-DI4RNYAG.js} +4 -2
  126. package/dist/{status-VRWPYTY3.js → status-SKGGPZFE.js} +4 -4
  127. package/dist/{technical-aeo-OKZW2GAX.js → technical-aeo-AFAXF5M5.js} +3 -3
  128. package/dist/{telemetry-RRTHKD6W.js → telemetry-ZRRX7I75.js} +4 -4
  129. package/dist/{tools-F7WCCKZW.js → tools-RY7ZXQJ5.js} +11 -11
  130. package/dist/{traffic-H6RDZWGG.js → traffic-LA3FZKID.js} +9 -9
  131. package/dist/{trends-RZOQW2LE.js → trends-GUUBTBCO.js} +3 -3
  132. package/dist/{users-KFBCBA3V.js → users-W44TRUSL.js} +3 -3
  133. package/dist/{visibility-stats-53OZR3UN.js → visibility-stats-KMKV4TF5.js} +3 -3
  134. package/dist/{wordpress-2BXU6FDI.js → wordpress-FNLXVJDO.js} +3 -3
  135. package/package.json +1 -1
  136. package/assets/assets/MeasurementPropertyPage-C1eIWJPD.js +0 -4
  137. package/assets/assets/ProjectPage-Ho61hE8f.js +0 -11
  138. package/assets/assets/SiteHealthSection-C2Ys7rzL.js +0 -2
  139. package/assets/assets/ToneBadge-C49669Ol.js +0 -60
  140. package/assets/assets/index-B-t8djQ-.js +0 -60
  141. package/assets/assets/react-query-dnbkXy7A.js +0 -1
  142. package/dist/intelligence-service-YLNZTJQA.js +0 -16
@@ -1,26 +1,26 @@
1
1
  import {
2
2
  trackCliConnection
3
- } from "./chunk-XPBEDIXW.js";
3
+ } from "./chunk-CPJX2RWA.js";
4
4
  import {
5
5
  outcomeFailure
6
- } from "./chunk-RSBIHKHH.js";
7
- import "./chunk-55EFIQP7.js";
6
+ } from "./chunk-24CUAPPY.js";
7
+ import "./chunk-LXKWFM74.js";
8
8
  import {
9
9
  createApiClient
10
- } from "./chunk-IUDXV6PH.js";
10
+ } from "./chunk-I663X7WB.js";
11
11
  import {
12
12
  loadConfig,
13
13
  saveConfigPatch
14
- } from "./chunk-YGHI3W4D.js";
14
+ } from "./chunk-ZZVRDHSK.js";
15
15
  import "./chunk-AOJU5LKX.js";
16
16
  import {
17
17
  CliError,
18
18
  isMachineFormat
19
19
  } from "./chunk-HGMYEDAQ.js";
20
- import "./chunk-CBNDEKI6.js";
20
+ import "./chunk-SDCH5EBA.js";
21
21
  import {
22
22
  describeError
23
- } from "./chunk-NSUB2S4V.js";
23
+ } from "./chunk-W4ZRFNOX.js";
24
24
  import "./chunk-MLKGABMK.js";
25
25
 
26
26
  // src/commands/cdp.ts
@@ -2,13 +2,13 @@ import {
2
2
  bucketCliCommandDuration,
3
3
  isTelemetryEnabled,
4
4
  trackEvent
5
- } from "./chunk-55EFIQP7.js";
5
+ } from "./chunk-LXKWFM74.js";
6
6
  import {
7
7
  getConfigDir
8
- } from "./chunk-YGHI3W4D.js";
8
+ } from "./chunk-ZZVRDHSK.js";
9
9
  import {
10
10
  currentOutcomeAttribution
11
- } from "./chunk-CBNDEKI6.js";
11
+ } from "./chunk-SDCH5EBA.js";
12
12
  import {
13
13
  AGENT_NONE,
14
14
  OutcomeSurfaces,
@@ -19,7 +19,7 @@ import {
19
19
  integrationConnectionPropertiesSchema,
20
20
  normalizeAgentSlug,
21
21
  usageSurfaceSchema
22
- } from "./chunk-NSUB2S4V.js";
22
+ } from "./chunk-W4ZRFNOX.js";
23
23
 
24
24
  // src/outcome-telemetry.ts
25
25
  import fs from "fs";
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-HGMYEDAQ.js";
5
5
  import {
6
6
  describeError
7
- } from "./chunk-NSUB2S4V.js";
7
+ } from "./chunk-W4ZRFNOX.js";
8
8
 
9
9
  // src/gsc-sitemap-submission.ts
10
10
  function dedupeGscSitemapUrls(urls) {
@@ -3,7 +3,7 @@ import {
3
3
  resolveCliAccess,
4
4
  resolveCliAccessForInvocation,
5
5
  windowOptions
6
- } from "./chunk-ECUJEKIO.js";
6
+ } from "./chunk-G6JSK2RY.js";
7
7
  import {
8
8
  emitJsonl
9
9
  } from "./chunk-Z7IUAJOF.js";
@@ -14,7 +14,7 @@ import {
14
14
  } from "./chunk-HGMYEDAQ.js";
15
15
  import {
16
16
  OperationAccesses
17
- } from "./chunk-NSUB2S4V.js";
17
+ } from "./chunk-W4ZRFNOX.js";
18
18
 
19
19
  // src/cli-catalog.ts
20
20
  import { createRequire } from "module";
@@ -111,7 +111,7 @@ async function dispatchRegisteredCommand(args, fallbackFormat, specs) {
111
111
  const accessValue = accessFilterFromArgs(argsWithoutHelp);
112
112
  validateAccessFilter(accessValue);
113
113
  if (fallbackFormat !== "text") {
114
- const { printCliCatalog: printCliCatalog2 } = await import("./cli-catalog-IAPKU2RG.js");
114
+ const { printCliCatalog: printCliCatalog2 } = await import("./cli-catalog-QPB2ADGD.js");
115
115
  const group2 = argsWithoutHelp.find((arg) => !arg.startsWith("--"));
116
116
  printCliCatalog2(specs, fallbackFormat, group2, accessValue);
117
117
  return true;
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  hostMatchesDomain
3
- } from "./chunk-NSUB2S4V.js";
3
+ } from "./chunk-W4ZRFNOX.js";
4
4
 
5
5
  // src/citation-utils.ts
6
6
  function pickProjectCitedDomain(citedDomains, projectDomains) {
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  createApiClient
3
- } from "./chunk-IUDXV6PH.js";
3
+ } from "./chunk-I663X7WB.js";
4
4
  import {
5
5
  emitJsonl
6
6
  } from "./chunk-Z7IUAJOF.js";
7
7
  import {
8
8
  measurementDraftOperationSchema,
9
9
  runMeasurementDraftAction
10
- } from "./chunk-VGAQH7KI.js";
10
+ } from "./chunk-KCKUCJOG.js";
11
11
  import {
12
12
  isMachineFormat,
13
13
  systemError
@@ -37,7 +37,7 @@ import {
37
37
  unattributedAnswersLabel,
38
38
  uncheckedSourcesLabel,
39
39
  visibilityReportRequestSchema
40
- } from "./chunk-NSUB2S4V.js";
40
+ } from "./chunk-W4ZRFNOX.js";
41
41
 
42
42
  // src/commands/measurement-plan.ts
43
43
  import crypto from "crypto";
@@ -5,7 +5,7 @@ import {
5
5
  isStoredPageReadTool,
6
6
  isStoredReadTool,
7
7
  truncateToolResult
8
- } from "./chunk-NUBADAA4.js";
8
+ } from "./chunk-JLC3CCFM.js";
9
9
  import {
10
10
  CANONRY_MCP_TOOLKITS,
11
11
  resolveAeroSkillDir
@@ -23,18 +23,18 @@ import {
23
23
  resolveApiKeyFor,
24
24
  resolveModelForProvider,
25
25
  validateAgentProviderRegistry
26
- } from "./chunk-YGHI3W4D.js";
26
+ } from "./chunk-ZZVRDHSK.js";
27
27
  import {
28
28
  CanonryMcpToolNames,
29
29
  canonryMcpTools
30
- } from "./chunk-XIHIB7VP.js";
30
+ } from "./chunk-HN2YNYPO.js";
31
31
  import {
32
32
  createLogger
33
- } from "./chunk-RJLSGCOI.js";
33
+ } from "./chunk-IO4BZLM7.js";
34
34
  import {
35
35
  agentToolEvents,
36
36
  llmUsageEvents
37
- } from "./chunk-BL4CZJYJ.js";
37
+ } from "./chunk-JGLX5WU6.js";
38
38
  import {
39
39
  MeasurementPortfolioLists,
40
40
  SeoCapabilities,
@@ -43,7 +43,7 @@ import {
43
43
  describeError,
44
44
  validationError,
45
45
  visibilityReportRequestSchema
46
- } from "./chunk-NSUB2S4V.js";
46
+ } from "./chunk-W4ZRFNOX.js";
47
47
 
48
48
  // src/agent/session.ts
49
49
  import fs2 from "fs";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  cloudflareQueueNameSchema
3
- } from "./chunk-NSUB2S4V.js";
3
+ } from "./chunk-W4ZRFNOX.js";
4
4
 
5
5
  // src/cloudflare-traffic-config.ts
6
6
  function unsupportedDeliveryMode(deliveryMode) {
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  trackIntegrationConnection
3
- } from "./chunk-RSBIHKHH.js";
3
+ } from "./chunk-24CUAPPY.js";
4
4
  import {
5
5
  cliRuntimeContext
6
- } from "./chunk-55EFIQP7.js";
6
+ } from "./chunk-LXKWFM74.js";
7
7
 
8
8
  // src/cli-connection-telemetry.ts
9
9
  function trackCliConnection(properties) {
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  answerServiceAdapters,
3
3
  answerServiceDescriptors
4
- } from "./chunk-JDOAULVX.js";
4
+ } from "./chunk-XOCSSHYD.js";
5
5
  import {
6
6
  AeroLlmUsageFeatures,
7
7
  aeroTurnStatus,
@@ -27,14 +27,14 @@ import {
27
27
  resolveConfiguredAgentProvider,
28
28
  resolveSessionProviderAndModel,
29
29
  setAeroSystemPrompt
30
- } from "./chunk-3D4VEWDJ.js";
30
+ } from "./chunk-5VLCPNTR.js";
31
31
  import {
32
32
  AeroToolProfiles,
33
33
  AeroToolScopes,
34
34
  buildAeroStateTools,
35
35
  isAeroToolProfile,
36
36
  truncateToolResult
37
- } from "./chunk-NUBADAA4.js";
37
+ } from "./chunk-JLC3CCFM.js";
38
38
  import {
39
39
  getGoogleAuthConfig,
40
40
  getGoogleConnection,
@@ -53,7 +53,7 @@ import {
53
53
  removeCloudflareTrafficConnection,
54
54
  removeCloudflareTrafficConnectionBySourceId,
55
55
  upsertCloudflareTrafficConnection
56
- } from "./chunk-SFNSSHIN.js";
56
+ } from "./chunk-6X24IDPZ.js";
57
57
  import {
58
58
  claudeAdapter,
59
59
  embedQueries,
@@ -65,7 +65,7 @@ import {
65
65
  openrouterAdapter,
66
66
  perplexityAdapter,
67
67
  startTrafficReclassification
68
- } from "./chunk-N6MXZ5SC.js";
68
+ } from "./chunk-MAOKDX3W.js";
69
69
  import {
70
70
  classifyUsageSurface,
71
71
  createApiUsageTelemetry,
@@ -77,7 +77,7 @@ import {
77
77
  startOutcomeTimer,
78
78
  trackFeatureCompleted,
79
79
  trackInstallState
80
- } from "./chunk-RSBIHKHH.js";
80
+ } from "./chunk-24CUAPPY.js";
81
81
  import {
82
82
  isLoopbackBindHost
83
83
  } from "./chunk-TSENU4GG.js";
@@ -85,7 +85,7 @@ import {
85
85
  isApiProviderRegistrable,
86
86
  isCdpProviderRegistrable,
87
87
  registeredProviderNames
88
- } from "./chunk-D6KTO5TO.js";
88
+ } from "./chunk-FUMYCZ62.js";
89
89
  import {
90
90
  checkLatestVersionForServer,
91
91
  getOrCreateAnonymousId,
@@ -97,17 +97,17 @@ import {
97
97
  recordDashboardEvent,
98
98
  setTelemetryPreference,
99
99
  trackEvent
100
- } from "./chunk-55EFIQP7.js";
100
+ } from "./chunk-LXKWFM74.js";
101
101
  import {
102
102
  createCanonryMcpServer
103
- } from "./chunk-UPBQHUE6.js";
103
+ } from "./chunk-MJIL4BWR.js";
104
104
  import {
105
105
  CANONRY_MCP_TIERS,
106
106
  CANONRY_MCP_TOOLKIT_NAMES
107
107
  } from "./chunk-MTW37GXF.js";
108
108
  import {
109
109
  ApiClient
110
- } from "./chunk-IUDXV6PH.js";
110
+ } from "./chunk-I663X7WB.js";
111
111
  import {
112
112
  AGENT_PROVIDERS,
113
113
  adapterSupportsBatch,
@@ -139,21 +139,21 @@ import {
139
139
  saveConfigPatch,
140
140
  sentimentInstallReadiness,
141
141
  updateSharedProviderExecutionGate
142
- } from "./chunk-YGHI3W4D.js";
142
+ } from "./chunk-ZZVRDHSK.js";
143
143
  import {
144
144
  getBundledSkillSnapshots
145
- } from "./chunk-LXJAXAJD.js";
145
+ } from "./chunk-QBIIQF3J.js";
146
146
  import {
147
147
  computeFactorAverages,
148
148
  deleteSiteCrawlGraphLayout,
149
149
  persistSiteCrawlGraphLayout,
150
150
  prepareSiteCrawlGraphLayout,
151
151
  recordedSharePct
152
- } from "./chunk-B5JKQXRN.js";
152
+ } from "./chunk-PC7ZUW2H.js";
153
153
  import {
154
154
  CanonryMcpToolNames,
155
155
  canonryMcpTools
156
- } from "./chunk-XIHIB7VP.js";
156
+ } from "./chunk-HN2YNYPO.js";
157
157
  import {
158
158
  PACKAGE_VERSION
159
159
  } from "./chunk-AOJU5LKX.js";
@@ -162,16 +162,16 @@ import {
162
162
  } from "./chunk-HGMYEDAQ.js";
163
163
  import {
164
164
  IntelligenceService
165
- } from "./chunk-BJAOD3NW.js";
165
+ } from "./chunk-N4SEITGT.js";
166
166
  import {
167
167
  computeCitedCompetitorDomains,
168
168
  determineCitationState
169
- } from "./chunk-R7BX2ZSQ.js";
169
+ } from "./chunk-3FHPUOMW.js";
170
170
  import {
171
171
  addLogListener,
172
172
  createFastifyLogger,
173
173
  createLogger
174
- } from "./chunk-RJLSGCOI.js";
174
+ } from "./chunk-IO4BZLM7.js";
175
175
  import {
176
176
  BingApiError,
177
177
  CC_CACHE_DIR,
@@ -316,7 +316,7 @@ import {
316
316
  webhookResponseReason,
317
317
  webhookTargetRefusalReason,
318
318
  writeAuditLog
319
- } from "./chunk-N7PGV6QQ.js";
319
+ } from "./chunk-PSCXQGJE.js";
320
320
  import {
321
321
  OperationalLogStore,
322
322
  SentimentIdempotencyConflict,
@@ -413,7 +413,7 @@ import {
413
413
  unrecognizedAgentEventsHourly,
414
414
  unrecognizedAgentNotifyState,
415
415
  usageCounters
416
- } from "./chunk-BL4CZJYJ.js";
416
+ } from "./chunk-JGLX5WU6.js";
417
417
  import {
418
418
  AGENT_MEMORY_VALUE_MAX_BYTES,
419
419
  AI_ENGINE_DOMAINS,
@@ -672,7 +672,7 @@ import {
672
672
  winnabilityClassLabel,
673
673
  withRetry,
674
674
  withSkippedProviders
675
- } from "./chunk-NSUB2S4V.js";
675
+ } from "./chunk-W4ZRFNOX.js";
676
676
 
677
677
  // src/google-marketing-runtime.ts
678
678
  import crypto2 from "crypto";
@@ -5976,7 +5976,7 @@ function nonBlank(value) {
5976
5976
  return trimmed ? trimmed : void 0;
5977
5977
  }
5978
5978
  function resolveBuildCommit(env = process.env) {
5979
- const embedded = true ? "96ebc8a87e470bcd7678a9eb24b79df04cd8ab1e" : void 0;
5979
+ const embedded = true ? "1dd703c9201772a4ab93d09c2e4237547a57ec31" : void 0;
5980
5980
  return nonBlank(embedded) ?? nonBlank(env.CANONRY_COMMIT);
5981
5981
  }
5982
5982
  function resolveInstanceIdentity(env = process.env) {
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  API_PROVIDER_NAMES,
3
3
  ProviderNames
4
- } from "./chunk-NSUB2S4V.js";
4
+ } from "./chunk-W4ZRFNOX.js";
5
5
 
6
6
  // src/provider-registration.ts
7
7
  function isApiProviderRegistrable(name, entry) {
@@ -5,7 +5,7 @@ import {
5
5
  AppError,
6
6
  parseWindowIn,
7
7
  resolveDateRange
8
- } from "./chunk-NSUB2S4V.js";
8
+ } from "./chunk-W4ZRFNOX.js";
9
9
 
10
10
  // src/cli-access.ts
11
11
  var CLI_ACCESS_BY_ID = Object.freeze({
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  createApiClient
3
- } from "./chunk-IUDXV6PH.js";
3
+ } from "./chunk-I663X7WB.js";
4
4
  import {
5
5
  emitJsonl
6
6
  } from "./chunk-Z7IUAJOF.js";
@@ -19,7 +19,7 @@ import {
19
19
  formatMicros,
20
20
  formatRunErrorOneLine,
21
21
  resolveProviderInput
22
- } from "./chunk-NSUB2S4V.js";
22
+ } from "./chunk-W4ZRFNOX.js";
23
23
 
24
24
  // src/commands/run.ts
25
25
  function getClient() {
@@ -2,11 +2,11 @@ import {
2
2
  dedupeGscSitemapUrls,
3
3
  resolveDiscoveredGscSitemapUrls,
4
4
  submitGscSitemapBatches
5
- } from "./chunk-M6DYUCNB.js";
5
+ } from "./chunk-35AEUG77.js";
6
6
  import {
7
7
  measurementDraftOperationSchema,
8
8
  runMeasurementDraftAction
9
- } from "./chunk-VGAQH7KI.js";
9
+ } from "./chunk-KCKUCJOG.js";
10
10
  import {
11
11
  CliError
12
12
  } from "./chunk-HGMYEDAQ.js";
@@ -188,7 +188,7 @@ import {
188
188
  trendSurfaceSchema,
189
189
  visibilityCompareSelectionSchema,
190
190
  visibilityReportRequestSchema
191
- } from "./chunk-NSUB2S4V.js";
191
+ } from "./chunk-W4ZRFNOX.js";
192
192
 
193
193
  // src/mcp/tool-registry.ts
194
194
  import { z as z2 } from "zod";
@@ -602,7 +602,7 @@ async function submitGscSitemapsFromMcp(client, input) {
602
602
  }
603
603
  var gaWindowInputSchema = z2.object({
604
604
  project: projectNameSchema,
605
- window: analyticsWindowSchema.optional(),
605
+ window: z2.enum(WINDOW_SETS.gaTraffic).optional(),
606
606
  startDate: z2.string().optional(),
607
607
  endDate: z2.string().optional()
608
608
  });
@@ -956,7 +956,7 @@ var trafficEventsInputSchema = z2.object({
956
956
  kind: z2.string().refine((value) => parseTrafficEventKindFilter(value) !== null, { message: `kind must be ${TRAFFIC_EVENT_KIND_FILTER_HINT}` }).optional().describe('Filter to "crawler", "ai-user-fetch", "ai-referral", a comma-separated list of them (e.g. "ai-user-fetch,ai-referral"), or "all" (default). Rows, totals and series cover only the kinds asked for.'),
957
957
  sourceId: z2.string().min(1).optional().describe("Restrict to a single traffic source ID."),
958
958
  limit: z2.number().int().positive().max(5e3).optional().describe("Max combined rows. Defaults to 500, max 5000. Totals always reflect the full window."),
959
- granularity: trafficSeriesGranularitySchema.optional().describe("Full-window chart series bucket size: hour (default) or day.")
959
+ granularity: trafficSeriesGranularitySchema.optional().describe("Full-window chart series bucket size: hour (default), day, or month (UTC calendar months).")
960
960
  });
961
961
  var trafficSourceIdInputSchema = z2.object({
962
962
  project: projectNameSchema,
@@ -2767,7 +2767,7 @@ var rawCanonryMcpTools = [
2767
2767
  defineTool({
2768
2768
  name: "canonry_ga_search_landing_pages",
2769
2769
  title: "Get GA4 Google organic search landing pages",
2770
- description: "Read GA4's \"Google organic search traffic: Landing page + query string\" report (Search Console link) as the last GA sync stored it: clicks, impressions, CTR, average position and active users per landing page for the 7, 28 (default) or 90 days ending yesterday in the property time zone. `total` is GA4's own Total row; never sum `rows`. Status `unavailable` means GA4 refused the Search Console metrics (link Search Console in GA4); the previous snapshot is still returned. Stored data only.",
2770
+ description: "Read GA4's \"Google organic search traffic: Landing page + query string\" report (Search Console link) as the last GA sync stored it: clicks, impressions, CTR, average position and active users per landing page for the 7, 28 (default), 90 or 180 days ending yesterday in the property time zone. `total` is GA4's own Total row; never sum `rows`. Status `unavailable` means GA4 refused the Search Console metrics (link Search Console in GA4); the previous snapshot is still returned. Stored data only.",
2771
2771
  access: "read",
2772
2772
  tier: "ga",
2773
2773
  inputSchema: gaSearchLandingPagesInputSchema,
@@ -2858,7 +2858,7 @@ var rawCanonryMcpTools = [
2858
2858
  defineTool({
2859
2859
  name: "canonry_ga_overview",
2860
2860
  title: "Get the GA4 overview",
2861
- description: "Get GA4's overview for a window (7d, 30d or 90d of complete days ending yesterday, as GA4 counts them): users, new users, sessions, organic sessions, views, event count, key events, engagement rate, bounce rate and average engagement time, each against the previous period, plus both periods by day.",
2861
+ description: "Get GA4's overview for a window (7d, 30d, 90d or 180d of complete days ending yesterday, as GA4 counts them): users, new users, sessions, organic sessions, views, event count, key events, engagement rate, bounce rate and average engagement time, each against the previous period, plus both periods by day.",
2862
2862
  access: "read",
2863
2863
  tier: "ga",
2864
2864
  inputSchema: gaOverviewInputSchema,
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  loadConfig
3
- } from "./chunk-YGHI3W4D.js";
3
+ } from "./chunk-ZZVRDHSK.js";
4
4
  import {
5
5
  PACKAGE_VERSION
6
6
  } from "./chunk-AOJU5LKX.js";
@@ -36,7 +36,7 @@ import {
36
36
  sentimentSettingsReadSchema,
37
37
  sentimentSummaryReadSchema,
38
38
  upgradeCommandFor
39
- } from "./chunk-NSUB2S4V.js";
39
+ } from "./chunk-W4ZRFNOX.js";
40
40
 
41
41
  // ../api-client-generated/src/generated/core/bodySerializer.gen.ts
42
42
  var jsonBodySerializer = {
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  getRequestContext
3
- } from "./chunk-CBNDEKI6.js";
3
+ } from "./chunk-SDCH5EBA.js";
4
4
  import {
5
5
  diagnosticIdentity,
6
6
  redactLogString,
7
7
  redactLogValue
8
- } from "./chunk-NSUB2S4V.js";
8
+ } from "./chunk-W4ZRFNOX.js";
9
9
 
10
10
  // ../api-routes/src/runtime-logger.ts
11
11
  import { format } from "util";
@@ -20,7 +20,7 @@ import {
20
20
  templateLinkRatio,
21
21
  templateLinkUbiquityAvailable,
22
22
  validationError
23
- } from "./chunk-NSUB2S4V.js";
23
+ } from "./chunk-W4ZRFNOX.js";
24
24
  import {
25
25
  __export
26
26
  } from "./chunk-MLKGABMK.js";
@@ -91,6 +91,7 @@ __export(schema_exports, {
91
91
  gaSearchLandingPages: () => gaSearchLandingPages,
92
92
  gaSearchLandingWindows: () => gaSearchLandingWindows,
93
93
  gaSocialReferrals: () => gaSocialReferrals,
94
+ gaSyncCoverage: () => gaSyncCoverage,
94
95
  gaTrafficSnapshots: () => gaTrafficSnapshots,
95
96
  gaTrafficSummaries: () => gaTrafficSummaries,
96
97
  gaTrafficWindowSummaries: () => gaTrafficWindowSummaries,
@@ -1981,6 +1982,19 @@ var gaTrafficSnapshots = sqliteTable2("ga_traffic_snapshots", {
1981
1982
  index2("idx_ga_traffic_page_normalized").on(table.projectId, table.date, table.landingPageNormalized),
1982
1983
  index2("idx_ga_traffic_run").on(table.syncRunId)
1983
1984
  ]);
1985
+ var gaSyncCoverage = sqliteTable2("ga_sync_coverage", {
1986
+ projectId: text2("project_id").notNull().references(() => projects.id, { onDelete: "cascade" }),
1987
+ component: text2("component").notNull(),
1988
+ syncRunId: text2("sync_run_id").notNull().references(() => runs.id, { onDelete: "cascade" }),
1989
+ date: text2("date").notNull(),
1990
+ propertyId: text2("property_id").notNull(),
1991
+ definition: text2("definition").notNull(),
1992
+ settled: integer2("settled", { mode: "boolean" }).notNull(),
1993
+ syncedAt: text2("synced_at").notNull()
1994
+ }, (t) => [
1995
+ primaryKey2({ columns: [t.projectId, t.component, t.date] }),
1996
+ index2("idx_ga_sync_coverage_run").on(t.syncRunId)
1997
+ ]);
1984
1998
  var gaDailyTotals = sqliteTable2("ga_daily_totals", {
1985
1999
  id: text2("id").primaryKey(),
1986
2000
  projectId: text2("project_id").notNull().references(() => projects.id, { onDelete: "cascade" }),
@@ -2253,6 +2267,8 @@ var gaSearchLandingWindows = sqliteTable2("ga_search_landing_windows", {
2253
2267
  periodEnd: text2("period_end").notNull(),
2254
2268
  /** GA4 property reporting time zone the period dates are in. */
2255
2269
  timeZone: text2("time_zone"),
2270
+ /** Report definition that produced this snapshot; null legacy snapshots cannot be reused. */
2271
+ reportDefinition: text2("report_definition"),
2256
2272
  totalClicks: integer2("total_clicks").notNull().default(0),
2257
2273
  totalImpressions: integer2("total_impressions").notNull().default(0),
2258
2274
  /** GA4's CTR for the window (0..1); null when there were no impressions. */
@@ -2270,7 +2286,7 @@ var gaSearchLandingWindows = sqliteTable2("ga_search_landing_windows", {
2270
2286
  }, (table) => [
2271
2287
  uniqueIndex2("idx_ga_search_landing_windows_project_window").on(table.projectId, table.windowKey),
2272
2288
  index2("idx_ga_search_landing_windows_run").on(table.syncRunId),
2273
- check("chk_ga_search_landing_windows_window", sql`${table.windowKey} IN ('7d', '28d', '90d')`),
2289
+ check("chk_ga_search_landing_windows_window", sql`${table.windowKey} IN ('7d', '28d', '90d', '180d')`),
2274
2290
  check("chk_ga_search_landing_windows_counts", sql`${table.totalClicks} >= 0 AND ${table.totalImpressions} >= 0 AND ${table.totalActiveUsers} >= 0 AND ${table.reportRowCount} >= 0`),
2275
2291
  check("chk_ga_search_landing_windows_ctr", sql`${table.totalCtr} IS NULL OR (${table.totalCtr} >= 0 AND ${table.totalCtr} <= 1)`)
2276
2292
  ]);
@@ -2292,7 +2308,7 @@ var gaSearchLandingPages = sqliteTable2("ga_search_landing_pages", {
2292
2308
  uniqueIndex2("idx_ga_search_landing_pages_grain").on(table.projectId, table.windowKey, table.landingPage),
2293
2309
  index2("idx_ga_search_landing_pages_order").on(table.projectId, table.windowKey, table.clicks),
2294
2310
  index2("idx_ga_search_landing_pages_run").on(table.syncRunId),
2295
- check("chk_ga_search_landing_pages_window", sql`${table.windowKey} IN ('7d', '28d', '90d')`),
2311
+ check("chk_ga_search_landing_pages_window", sql`${table.windowKey} IN ('7d', '28d', '90d', '180d')`),
2296
2312
  check("chk_ga_search_landing_pages_counts", sql`${table.clicks} >= 0 AND ${table.impressions} >= 0 AND ${table.activeUsers} >= 0`),
2297
2313
  check("chk_ga_search_landing_pages_ctr", sql`${table.ctr} IS NULL OR (${table.ctr} >= 0 AND ${table.ctr} <= 1)`)
2298
2314
  ]);
@@ -8964,6 +8980,101 @@ var MIGRATION_VERSIONS = [
8964
8980
  AND r.created_at < (SELECT strftime('%Y-%m-%dT%H:%M:%fZ', applied_at) FROM _migrations WHERE version = 207)
8965
8981
  )`
8966
8982
  ]
8983
+ },
8984
+ {
8985
+ version: 212,
8986
+ name: "ga-sync-coverage",
8987
+ statements: [
8988
+ `CREATE TABLE IF NOT EXISTS ga_sync_coverage (
8989
+ project_id TEXT NOT NULL REFERENCES projects(id) ON DELETE CASCADE,
8990
+ component TEXT NOT NULL,
8991
+ sync_run_id TEXT NOT NULL REFERENCES runs(id) ON DELETE CASCADE,
8992
+ date TEXT NOT NULL,
8993
+ property_id TEXT NOT NULL,
8994
+ definition TEXT NOT NULL,
8995
+ settled INTEGER NOT NULL,
8996
+ synced_at TEXT NOT NULL,
8997
+ PRIMARY KEY (project_id, component, date)
8998
+ )`,
8999
+ `CREATE INDEX IF NOT EXISTS idx_ga_sync_coverage_run ON ga_sync_coverage(sync_run_id)`
9000
+ ]
9001
+ },
9002
+ {
9003
+ version: 213,
9004
+ name: "ga-search-landing-180-day-windows",
9005
+ // The two tables reference projects/runs, not each other. Rebuilding them
9006
+ // keeps foreign keys enabled and preserves the original sync provenance.
9007
+ // Add the nullable definition first so replay copies it without erasing it.
9008
+ statements: [
9009
+ `ALTER TABLE ga_search_landing_windows ADD COLUMN report_definition TEXT`,
9010
+ `DROP TABLE IF EXISTS ga_search_landing_windows_v213`,
9011
+ `CREATE TABLE ga_search_landing_windows_v213 (
9012
+ id TEXT PRIMARY KEY,
9013
+ project_id TEXT NOT NULL REFERENCES projects(id) ON DELETE CASCADE,
9014
+ property_id TEXT NOT NULL,
9015
+ window_key TEXT NOT NULL CHECK (window_key IN ('7d', '28d', '90d', '180d')),
9016
+ period_start TEXT NOT NULL,
9017
+ period_end TEXT NOT NULL,
9018
+ time_zone TEXT,
9019
+ report_definition TEXT,
9020
+ total_clicks INTEGER NOT NULL DEFAULT 0,
9021
+ total_impressions INTEGER NOT NULL DEFAULT 0,
9022
+ total_ctr REAL CHECK (total_ctr IS NULL OR (total_ctr >= 0 AND total_ctr <= 1)),
9023
+ total_average_position REAL,
9024
+ total_active_users INTEGER NOT NULL DEFAULT 0,
9025
+ report_row_count INTEGER NOT NULL DEFAULT 0,
9026
+ rows_capped INTEGER NOT NULL DEFAULT 0,
9027
+ subject_to_thresholding INTEGER NOT NULL DEFAULT 0,
9028
+ data_loss_from_other_row INTEGER NOT NULL DEFAULT 0,
9029
+ synced_at TEXT NOT NULL,
9030
+ sync_run_id TEXT REFERENCES runs(id) ON DELETE CASCADE,
9031
+ created_at TEXT NOT NULL,
9032
+ CHECK (total_clicks >= 0 AND total_impressions >= 0 AND total_active_users >= 0 AND report_row_count >= 0)
9033
+ )`,
9034
+ `INSERT INTO ga_search_landing_windows_v213 (
9035
+ id, project_id, property_id, window_key, period_start, period_end,
9036
+ time_zone, report_definition, total_clicks, total_impressions, total_ctr,
9037
+ total_average_position, total_active_users, report_row_count, rows_capped,
9038
+ subject_to_thresholding, data_loss_from_other_row, synced_at, sync_run_id, created_at
9039
+ ) SELECT
9040
+ id, project_id, property_id, window_key, period_start, period_end,
9041
+ time_zone, report_definition, total_clicks, total_impressions, total_ctr,
9042
+ total_average_position, total_active_users, report_row_count, rows_capped,
9043
+ subject_to_thresholding, data_loss_from_other_row, synced_at, sync_run_id, created_at
9044
+ FROM ga_search_landing_windows`,
9045
+ `DROP TABLE ga_search_landing_windows`,
9046
+ `ALTER TABLE ga_search_landing_windows_v213 RENAME TO ga_search_landing_windows`,
9047
+ `CREATE UNIQUE INDEX IF NOT EXISTS idx_ga_search_landing_windows_project_window ON ga_search_landing_windows(project_id, window_key)`,
9048
+ `CREATE INDEX IF NOT EXISTS idx_ga_search_landing_windows_run ON ga_search_landing_windows(sync_run_id)`,
9049
+ `DROP TABLE IF EXISTS ga_search_landing_pages_v213`,
9050
+ `CREATE TABLE ga_search_landing_pages_v213 (
9051
+ id TEXT PRIMARY KEY,
9052
+ project_id TEXT NOT NULL REFERENCES projects(id) ON DELETE CASCADE,
9053
+ window_key TEXT NOT NULL CHECK (window_key IN ('7d', '28d', '90d', '180d')),
9054
+ landing_page TEXT NOT NULL,
9055
+ clicks INTEGER NOT NULL DEFAULT 0,
9056
+ impressions INTEGER NOT NULL DEFAULT 0,
9057
+ ctr REAL CHECK (ctr IS NULL OR (ctr >= 0 AND ctr <= 1)),
9058
+ average_position REAL,
9059
+ active_users INTEGER NOT NULL DEFAULT 0,
9060
+ synced_at TEXT NOT NULL,
9061
+ sync_run_id TEXT REFERENCES runs(id) ON DELETE CASCADE,
9062
+ created_at TEXT NOT NULL,
9063
+ CHECK (clicks >= 0 AND impressions >= 0 AND active_users >= 0)
9064
+ )`,
9065
+ `INSERT INTO ga_search_landing_pages_v213 (
9066
+ id, project_id, window_key, landing_page, clicks, impressions, ctr,
9067
+ average_position, active_users, synced_at, sync_run_id, created_at
9068
+ ) SELECT
9069
+ id, project_id, window_key, landing_page, clicks, impressions, ctr,
9070
+ average_position, active_users, synced_at, sync_run_id, created_at
9071
+ FROM ga_search_landing_pages`,
9072
+ `DROP TABLE ga_search_landing_pages`,
9073
+ `ALTER TABLE ga_search_landing_pages_v213 RENAME TO ga_search_landing_pages`,
9074
+ `CREATE UNIQUE INDEX IF NOT EXISTS idx_ga_search_landing_pages_grain ON ga_search_landing_pages(project_id, window_key, landing_page)`,
9075
+ `CREATE INDEX IF NOT EXISTS idx_ga_search_landing_pages_order ON ga_search_landing_pages(project_id, window_key, clicks)`,
9076
+ `CREATE INDEX IF NOT EXISTS idx_ga_search_landing_pages_run ON ga_search_landing_pages(sync_run_id)`
9077
+ ]
8967
9078
  }
8968
9079
  ];
8969
9080
  var AERO_LEDGER_REBUILDS = [
@@ -10450,6 +10561,7 @@ export {
10450
10561
  bingKeywordDemand,
10451
10562
  gaConnections,
10452
10563
  gaTrafficSnapshots,
10564
+ gaSyncCoverage,
10453
10565
  gaDailyTotals,
10454
10566
  gaAcquisitionDaily,
10455
10567
  gaLeadEventsDaily,