@canonry/canonry 7.88.0 → 7.90.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 (154) hide show
  1. package/assets/agent-workspace/skills/canonry/references/canonry-cli.md +16 -4
  2. package/assets/assets/{AgentSetupPage-DV06oPTd.js → AgentSetupPage-oSoM5flN.js} +6 -6
  3. package/assets/assets/AuditHistoryPanel-YrEggsyA.js +1 -0
  4. package/assets/assets/{BacklinksPage-Dw0wgYlg.js → BacklinksPage-vXUxxplH.js} +1 -1
  5. package/assets/assets/{ChartPrimitives-4D5wgAn5.js → ChartPrimitives-Cs2iavxU.js} +1 -1
  6. package/assets/assets/{Hint-CfeZmZig.js → Hint-uoVNfr0U.js} +1 -1
  7. package/assets/assets/{HistoryPage-DsDx15am.js → HistoryPage-VJ_JQ7R3.js} +1 -1
  8. package/assets/assets/{InfoTooltip-DrBIPuSU.js → InfoTooltip-CNLlIWeP.js} +1 -1
  9. package/assets/assets/MeasurementPropertyPage-BZKiS1V0.js +4 -0
  10. package/assets/assets/ProjectPage-p-rDlzSq.js +11 -0
  11. package/assets/assets/{RunsPage-BggqKbOG.js → RunsPage-CjkPCc9Z.js} +1 -1
  12. package/assets/assets/{SettingsPage-B7ns_ECx.js → SettingsPage-BNHMlx6C.js} +1 -1
  13. package/assets/assets/SiteHealthSection-BZhulwSy.js +2 -0
  14. package/assets/assets/{ToneBadge-B8hKcr8p.js → ToneBadge-B3rD6bDF.js} +6 -6
  15. package/assets/assets/TrafficPage-Dr8NTQpA.js +40 -0
  16. package/assets/assets/TrafficSourceDetailPage-C79eQilP.js +1 -0
  17. package/assets/assets/{account-context-pzV-boTi.js → account-context-GstYbqpX.js} +1 -1
  18. package/assets/assets/agent-trust-copy-Ca4ys8J2.js +1 -0
  19. package/assets/assets/{card-Mu_5i5fM.js → card-CgdGerYK.js} +1 -1
  20. package/assets/assets/{format-helpers-C8QYorwm.js → format-helpers-ByAY4dv0.js} +2 -2
  21. package/assets/assets/{index-BOUrrC9J.css → index-Bhpq6fUo.css} +1 -1
  22. package/assets/assets/index-BrHemYsG.js +60 -0
  23. package/assets/assets/query-client-DjRrRIsq.js +1 -0
  24. package/assets/assets/react-query-B8JD_K7g.js +1 -0
  25. package/assets/assets/{react-sigma_core.esm.min-BfnfPCis.js → react-sigma_core.esm.min-OHqBWE8n.js} +1 -1
  26. package/assets/assets/server-traffic-Bt9bexaP.js +1 -0
  27. package/assets/assets/{service-B85wjZQP.js → service-SgtD5EOS.js} +1 -1
  28. package/assets/assets/{vendor-lucide-CoTHJwai.js → vendor-lucide-Bo69m9KC.js} +1 -1
  29. package/assets/assets/{vendor-markdown-cQgSk2i0.js → vendor-markdown-BiRP51B0.js} +1 -1
  30. package/assets/assets/{vendor-radix-wS8sWIWE.js → vendor-radix-PQeN8gOe.js} +1 -1
  31. package/assets/assets/{vendor-recharts-AnNqECZW.js → vendor-recharts-CY6tH-r6.js} +1 -1
  32. package/assets/assets/{vendor-tanstack-q5SvZtcv.js → vendor-tanstack-tBjrfzKu.js} +1 -1
  33. package/assets/index.html +15 -15
  34. package/dist/{ads-4TAIMWZC.js → ads-6BAITIBY.js} +3 -3
  35. package/dist/{agent-C7NKP2TO.js → agent-BE3D65U4.js} +7 -7
  36. package/dist/{agent-ask-EPH5FDM6.js → agent-ask-TT6BAV2T.js} +3 -3
  37. package/dist/{agent-conversations-LPBBVRKK.js → agent-conversations-GJDAWU36.js} +3 -3
  38. package/dist/{agent-journeys-MBORINJA.js → agent-journeys-UEL27GNY.js} +3 -3
  39. package/dist/{agent-memory-NJIZO75R.js → agent-memory-PB74OP46.js} +3 -3
  40. package/dist/{agent-providers-ZQVUOCX6.js → agent-providers-5WFMNRRK.js} +3 -3
  41. package/dist/{agent-transcript-67HFY5GT.js → agent-transcript-IAGB3JXG.js} +3 -3
  42. package/dist/{analytics-TUO6BVB6.js → analytics-5BVE7KUN.js} +3 -3
  43. package/dist/{apply-V7A5O7YS.js → apply-YJJWQ4JX.js} +3 -3
  44. package/dist/{backfill-PGKYR6NA.js → backfill-6OLGZIEV.js} +10 -10
  45. package/dist/{backlinks-5GGPQNR4.js → backlinks-4JK26OIO.js} +3 -3
  46. package/dist/{bing-PQOLIW2X.js → bing-NZYYPB2M.js} +43 -8
  47. package/dist/{bootstrap-IH3XX6PI.js → bootstrap-6KHK63W3.js} +10 -10
  48. package/dist/{cdp-B3PFQ5RB.js → cdp-PTXWVX6T.js} +7 -7
  49. package/dist/{chunk-EL4HRIID.js → chunk-2UULABPI.js} +7 -3
  50. package/dist/{chunk-PZLEKWYA.js → chunk-7ASKZHS4.js} +1 -1
  51. package/dist/{chunk-R7K24KY7.js → chunk-7VJJXLRP.js} +3 -3
  52. package/dist/{chunk-4A4X7VXE.js → chunk-AFYKUX2X.js} +2 -2
  53. package/dist/{chunk-EYSQMZ6L.js → chunk-C2XWWIJZ.js} +413 -376
  54. package/dist/{chunk-2KL2XHS6.js → chunk-DF4B6OGX.js} +4 -4
  55. package/dist/{chunk-OKLDBQYW.js → chunk-DZO6CATO.js} +4 -4
  56. package/dist/{chunk-Q2SJRZA3.js → chunk-ETIIPSWL.js} +117 -6
  57. package/dist/{chunk-5WWEZ26Y.js → chunk-F442MSX2.js} +2 -2
  58. package/dist/{chunk-EGUJNHAZ.js → chunk-F6WNKKGG.js} +33 -7
  59. package/dist/{chunk-TL52ELES.js → chunk-GKX5F7NX.js} +1 -1
  60. package/dist/{chunk-LBZYPZAA.js → chunk-HUQDD26S.js} +7 -7
  61. package/dist/{chunk-N6AWKBLY.js → chunk-I7DAEE3L.js} +5 -5
  62. package/dist/{chunk-FNQFM3TK.js → chunk-L2MDMZFT.js} +3 -3
  63. package/dist/{chunk-DILCH7RL.js → chunk-LQWMNDZR.js} +1 -1
  64. package/dist/{chunk-FLJVGHTQ.js → chunk-LTZNUDSI.js} +3 -3
  65. package/dist/{chunk-PBOIN52J.js → chunk-N7LRPMWR.js} +2 -2
  66. package/dist/{chunk-E4DUE2PW.js → chunk-NKGQCCUS.js} +6 -6
  67. package/dist/{chunk-IR3MYKIA.js → chunk-NPX5SL54.js} +1 -1
  68. package/dist/{chunk-5KDJJO2N.js → chunk-OOVWMWMT.js} +1 -1
  69. package/dist/{chunk-DVWAA3ES.js → chunk-OVUFIG22.js} +89 -21
  70. package/dist/{chunk-FL76YWYN.js → chunk-PID3C4B7.js} +1 -1
  71. package/dist/{chunk-D354CQ6T.js → chunk-Q6EZEVXE.js} +1 -1
  72. package/dist/{chunk-UVXQQZB5.js → chunk-QLVTMPFW.js} +2 -2
  73. package/dist/{chunk-4T2VZPDG.js → chunk-QWNDNZJ3.js} +2 -2
  74. package/dist/{chunk-4VMHN5LL.js → chunk-SDXMG4VX.js} +1159 -899
  75. package/dist/{chunk-CYQCO5NY.js → chunk-TA4L7U2M.js} +1 -1
  76. package/dist/{chunk-MCQK432C.js → chunk-UG7TZJIG.js} +1 -1
  77. package/dist/{chunk-ZQGWB7VJ.js → chunk-USHY3SH6.js} +62 -1
  78. package/dist/{chunk-O7OZVZWR.js → chunk-WNDBACO7.js} +43 -13
  79. package/dist/{chunk-MEN27RAJ.js → chunk-WYMBWCG5.js} +3 -1
  80. package/dist/{chunk-BDLC3DFM.js → chunk-XCEA5OMI.js} +2 -2
  81. package/dist/{chunk-6DIDDYG6.js → chunk-YB2GAK32.js} +5 -5
  82. package/dist/{chunk-TAQHHXBC.js → chunk-YPJCZD5H.js} +4 -4
  83. package/dist/{chunk-IPOYH4WE.js → chunk-ZV6PMFF4.js} +1 -1
  84. package/dist/{citations-J3IGPX4L.js → citations-WX4VO6ZI.js} +3 -3
  85. package/dist/{cli-catalog-2PCRGKPH.js → cli-catalog-BTRNR2UP.js} +3 -3
  86. package/dist/{cli-commands-4MUJZCZO.js → cli-commands-5ISZA43S.js} +7 -7
  87. package/dist/cli.js +13 -13
  88. package/dist/{competitor-X7Q2AZGL.js → competitor-HZRZWCEN.js} +3 -3
  89. package/dist/{content-HTR3PJPX.js → content-NOZDHI3M.js} +3 -3
  90. package/dist/{dashboard-LSO57ZEE.js → dashboard-TZLWHXP4.js} +6 -6
  91. package/dist/{demo-P25N4SKK.js → demo-2PYBQD47.js} +1 -1
  92. package/dist/{demo-server-6Z5XSHFS.js → demo-server-JEQNGMMV.js} +12 -12
  93. package/dist/{discover-KE6TQPOC.js → discover-A2XFXHOC.js} +3 -3
  94. package/dist/{discover-eval-XKOYGCRW.js → discover-eval-A6SBUYXF.js} +3 -3
  95. package/dist/{doctor-RL2J54I3.js → doctor-GZACELPF.js} +3 -3
  96. package/dist/{evidence-CYJ4AKUZ.js → evidence-RVFMUWIL.js} +3 -3
  97. package/dist/{export-cmd-2YM3PXCW.js → export-cmd-X2TFZGNJ.js} +3 -3
  98. package/dist/{ga-XAB66MJO.js → ga-TOT3V67A.js} +3 -3
  99. package/dist/{gbp-CDGBLRVV.js → gbp-KP4YZU6S.js} +3 -3
  100. package/dist/{google-XHCUKQ3J.js → google-GCFSTV5N.js} +4 -4
  101. package/dist/{google-marketing-ZR6NTWEY.js → google-marketing-ANS65KQN.js} +1 -1
  102. package/dist/{health-cmd-VS3EIFJD.js → health-cmd-UKMNLU6D.js} +3 -3
  103. package/dist/{history-YIGYYNZJ.js → history-TWGYSAZZ.js} +3 -3
  104. package/dist/index.d.ts +402 -44
  105. package/dist/index.js +25 -25
  106. package/dist/{init-ST3BXHQF.js → init-K4623VOY.js} +12 -12
  107. package/dist/{insights-KZS6TYYL.js → insights-7IOC7WIR.js} +3 -3
  108. package/dist/intelligence-service-42Q3OVI5.js +16 -0
  109. package/dist/{journeys-USOPWGW5.js → journeys-NWKT45PT.js} +3 -3
  110. package/dist/{keys-XY7LSM3S.js → keys-ZZYZUHUK.js} +3 -3
  111. package/dist/{keyword-PKBFHHF5.js → keyword-F6EIX5KM.js} +3 -3
  112. package/dist/{logs-PROW5TQJ.js → logs-B45FXS6E.js} +3 -3
  113. package/dist/{mcp-OQGC62QU.js → mcp-WPNCNWA5.js} +4 -4
  114. package/dist/mcp.js +9 -9
  115. package/dist/{measurement-plan-AI4NNBTO.js → measurement-plan-QT5HJ3KC.js} +5 -5
  116. package/dist/{notify-6HRPNJZ5.js → notify-Z3LIF3SO.js} +3 -3
  117. package/dist/{organic-evidence-IXCSUGGY.js → organic-evidence-R5TM7XUB.js} +3 -3
  118. package/dist/{overview-2WS3CFHK.js → overview-6TZHJLQN.js} +4 -4
  119. package/dist/{project-ENUZG62V.js → project-VMPVOQ2A.js} +3 -3
  120. package/dist/{query-WE3ZWTIB.js → query-EXSH5QP7.js} +3 -3
  121. package/dist/{research-DZSD5UZ2.js → research-6R6BEL4X.js} +3 -3
  122. package/dist/{results-export-JMUMYNUE.js → results-export-ZJRL3ECU.js} +3 -3
  123. package/dist/{run-QXOO7CRK.js → run-C4VXAJE3.js} +4 -4
  124. package/dist/{schedule-3RJKGUDN.js → schedule-KC6ETWMO.js} +3 -3
  125. package/dist/{search-SGS4H7I4.js → search-SUR6BEQD.js} +3 -3
  126. package/dist/{serve-T24QKEUY.js → serve-TVODHNFU.js} +26 -26
  127. package/dist/{session-HPH2A4AZ.js → session-D42KUKCZ.js} +13 -13
  128. package/dist/{settings-K44RK2TW.js → settings-LTCG3D5B.js} +3 -3
  129. package/dist/sitemaps-YMTZLF5S.js +46 -0
  130. package/dist/{skills-HGPPGBXG.js → skills-THMG3L64.js} +2 -2
  131. package/dist/{snapshot-FEHHQRY3.js → snapshot-ZEVB3EE4.js} +3 -3
  132. package/dist/{src-4PAYI7GE.js → src-HPVSTXVF.js} +6 -2
  133. package/dist/{status-L5HVFWTS.js → status-LPCPTWKO.js} +4 -4
  134. package/dist/{technical-aeo-Z43UCW6E.js → technical-aeo-J6LNT45B.js} +3 -3
  135. package/dist/{telemetry-D47SSSG7.js → telemetry-BPY34GDV.js} +4 -4
  136. package/dist/{tools-WCWUY2ZJ.js → tools-K3G43ESI.js} +11 -11
  137. package/dist/{traffic-5KH62P43.js → traffic-BOIFAPAR.js} +5 -5
  138. package/dist/{trends-RMAXZKRO.js → trends-A2MDRSQQ.js} +3 -3
  139. package/dist/{users-WT54XNEI.js → users-VJOQODJK.js} +3 -3
  140. package/dist/{visibility-stats-HU62U5MA.js → visibility-stats-YNMJYASA.js} +3 -3
  141. package/dist/{wordpress-BDAKQ4MU.js → wordpress-BWG6D7VH.js} +3 -3
  142. package/package.json +1 -1
  143. package/assets/assets/AuditHistoryPanel-C1JnxBFK.js +0 -1
  144. package/assets/assets/MeasurementPropertyPage-Bkxt3QcY.js +0 -4
  145. package/assets/assets/ProjectPage-CzrD1lpf.js +0 -11
  146. package/assets/assets/SiteHealthSection-B2YibqCs.js +0 -2
  147. package/assets/assets/TrafficPage-DRTbgzKI.js +0 -40
  148. package/assets/assets/TrafficSourceDetailPage-sgLE2gdJ.js +0 -1
  149. package/assets/assets/agent-trust-copy-DBtiOpFu.js +0 -1
  150. package/assets/assets/extract-error-message-D_ptq0tW.js +0 -1
  151. package/assets/assets/index-fN5qDR8H.js +0 -60
  152. package/assets/assets/query-client-CdG4DC3B.js +0 -1
  153. package/assets/assets/react-query-CxeygwoL.js +0 -1
  154. package/dist/intelligence-service-LCTP5BC7.js +0 -16
@@ -1,14 +1,14 @@
1
1
  import {
2
2
  createApiClient
3
- } from "./chunk-EGUJNHAZ.js";
4
- import "./chunk-5KDJJO2N.js";
3
+ } from "./chunk-F6WNKKGG.js";
4
+ import "./chunk-OOVWMWMT.js";
5
5
  import "./chunk-AOJU5LKX.js";
6
6
  import {
7
7
  CliError,
8
8
  isMachineFormat,
9
9
  printCliError
10
10
  } from "./chunk-HGMYEDAQ.js";
11
- import "./chunk-Q2SJRZA3.js";
11
+ import "./chunk-ETIIPSWL.js";
12
12
  import "./chunk-MLKGABMK.js";
13
13
 
14
14
  // src/commands/agent-transcript.ts
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  createApiClient
3
- } from "./chunk-EGUJNHAZ.js";
4
- import "./chunk-5KDJJO2N.js";
3
+ } from "./chunk-F6WNKKGG.js";
4
+ import "./chunk-OOVWMWMT.js";
5
5
  import "./chunk-AOJU5LKX.js";
6
6
  import {
7
7
  CliError,
@@ -13,7 +13,7 @@ import {
13
13
  formatPercent,
14
14
  formatSignedPointDelta,
15
15
  queryClassFilterSchema
16
- } from "./chunk-Q2SJRZA3.js";
16
+ } from "./chunk-ETIIPSWL.js";
17
17
  import "./chunk-MLKGABMK.js";
18
18
 
19
19
  // src/commands/analytics.ts
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  createApiClient
3
- } from "./chunk-EGUJNHAZ.js";
4
- import "./chunk-5KDJJO2N.js";
3
+ } from "./chunk-F6WNKKGG.js";
4
+ import "./chunk-OOVWMWMT.js";
5
5
  import "./chunk-AOJU5LKX.js";
6
6
  import {
7
7
  CliError,
@@ -10,7 +10,7 @@ import {
10
10
  } from "./chunk-HGMYEDAQ.js";
11
11
  import {
12
12
  describeError
13
- } from "./chunk-Q2SJRZA3.js";
13
+ } from "./chunk-ETIIPSWL.js";
14
14
  import "./chunk-MLKGABMK.js";
15
15
 
16
16
  // src/commands/apply.ts
@@ -10,20 +10,20 @@ import {
10
10
  backfillSnapshotAttributionCommand,
11
11
  backfillTrafficClassificationCommand,
12
12
  replayQueryAuditLog
13
- } from "./chunk-LBZYPZAA.js";
14
- import "./chunk-N6AWKBLY.js";
15
- import "./chunk-5KDJJO2N.js";
13
+ } from "./chunk-HUQDD26S.js";
14
+ import "./chunk-I7DAEE3L.js";
15
+ import "./chunk-OOVWMWMT.js";
16
16
  import "./chunk-HGMYEDAQ.js";
17
- import "./chunk-TL52ELES.js";
18
- import "./chunk-BDLC3DFM.js";
17
+ import "./chunk-GKX5F7NX.js";
18
+ import "./chunk-XCEA5OMI.js";
19
19
  import {
20
20
  backfillProjectAnswerMentions,
21
21
  backfillProjectAnswerMentionsInChunks
22
- } from "./chunk-4VMHN5LL.js";
23
- import "./chunk-IR3MYKIA.js";
24
- import "./chunk-IPOYH4WE.js";
25
- import "./chunk-ZQGWB7VJ.js";
26
- import "./chunk-Q2SJRZA3.js";
22
+ } from "./chunk-SDXMG4VX.js";
23
+ import "./chunk-NPX5SL54.js";
24
+ import "./chunk-ZV6PMFF4.js";
25
+ import "./chunk-USHY3SH6.js";
26
+ import "./chunk-ETIIPSWL.js";
27
27
  import "./chunk-MLKGABMK.js";
28
28
  export {
29
29
  activeQueriesAt,
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  createApiClient
3
- } from "./chunk-EGUJNHAZ.js";
4
- import "./chunk-5KDJJO2N.js";
3
+ } from "./chunk-F6WNKKGG.js";
4
+ import "./chunk-OOVWMWMT.js";
5
5
  import {
6
6
  emitJsonl
7
7
  } from "./chunk-Z7IUAJOF.js";
@@ -17,7 +17,7 @@ import {
17
17
  backlinkSourceSchema,
18
18
  formatPercent,
19
19
  formatRunErrorOneLine
20
- } from "./chunk-Q2SJRZA3.js";
20
+ } from "./chunk-ETIIPSWL.js";
21
21
  import "./chunk-MLKGABMK.js";
22
22
 
23
23
  // src/commands/backlinks.ts
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  createApiClient
3
- } from "./chunk-EGUJNHAZ.js";
4
- import "./chunk-5KDJJO2N.js";
3
+ } from "./chunk-F6WNKKGG.js";
4
+ import "./chunk-OOVWMWMT.js";
5
5
  import {
6
6
  emitJsonl
7
7
  } from "./chunk-Z7IUAJOF.js";
@@ -14,7 +14,7 @@ import {
14
14
  describeError,
15
15
  formatPercent,
16
16
  formatRunErrorOneLine
17
- } from "./chunk-Q2SJRZA3.js";
17
+ } from "./chunk-ETIIPSWL.js";
18
18
  import "./chunk-MLKGABMK.js";
19
19
 
20
20
  // src/commands/bing.ts
@@ -423,6 +423,14 @@ function printJson(format, payload, jsonlRows) {
423
423
  }
424
424
  return false;
425
425
  }
426
+ async function bingSubmitSitemap(project, sitemapUrl, opts) {
427
+ const result = await getClient().bingSubmitSitemap(project, sitemapUrl);
428
+ if (isMachineFormat(opts.format)) {
429
+ console.log(JSON.stringify(result, null, 2));
430
+ return;
431
+ }
432
+ console.log(`Bing accepted ${result.sitemapUrl}. A new sitemap shows in "canonry sitemaps ${project}" after the next Bing sync.`);
433
+ }
426
434
  async function bingSync(project, opts) {
427
435
  const client = getClient();
428
436
  const run = await client.bingSync(project);
@@ -452,16 +460,30 @@ async function bingSync(project, opts) {
452
460
  }
453
461
  console.log(current.status === "partial" ? `Bing data sync finished with some sections missing: ${current.error ? formatRunErrorOneLine(current.error) : "see the run for details"}` : "Bing data sync completed.");
454
462
  }
463
+ function windowOption(value) {
464
+ return value === void 0 ? void 0 : value;
465
+ }
466
+ function trafficComparisonLines(comparison) {
467
+ if (!comparison) return [" No comparison period."];
468
+ const basis = comparison.basis === "split-window" ? `last ${comparison.days} days vs the ${comparison.days} days before, inside this window` : `vs prior ${comparison.days} days`;
469
+ const pct = (ratio) => ratio === null ? "n/a" : `${ratio >= 0 ? "+" : ""}${formatPercent(ratio)}`;
470
+ return [
471
+ ` Change, ${basis}:`,
472
+ ` clicks ${pct(comparison.change.clicks)} (${comparison.prior.clicks} -> ${comparison.trailing.clicks})`,
473
+ ` impressions ${pct(comparison.change.impressions)} (${comparison.prior.impressions} -> ${comparison.trailing.impressions})`
474
+ ];
475
+ }
455
476
  async function bingTraffic(project, opts) {
456
477
  const client = getClient();
457
- const result = await client.bingTraffic(project, { startDate: opts.startDate, endDate: opts.endDate, days: opts.days });
478
+ const result = await client.bingTraffic(project, { startDate: opts.startDate, endDate: opts.endDate, days: opts.days, window: windowOption(opts.window) });
458
479
  if (printJson(opts.format, result, result.rows.map((row) => ({ project, ...row })))) return;
459
480
  if (result.rows.length === 0) {
460
481
  console.log('No stored Bing traffic. Run "canonry bing sync <project>" first.');
461
482
  return;
462
483
  }
463
- console.log(`Bing search traffic, ${windowLabel(result.window)}: ${result.totals.clicks} clicks, ${result.totals.impressions} impressions, ${formatPercent(result.totals.ctr)} CTR
464
- `);
484
+ console.log(`Bing search traffic, ${windowLabel(result.window)}: ${result.totals.clicks} clicks, ${result.totals.impressions} impressions, ${formatPercent(result.totals.ctr)} CTR`);
485
+ for (const line of trafficComparisonLines(result.periodComparison)) console.log(line);
486
+ console.log("");
465
487
  console.log(` ${pad("DATE", 12)}${pad("CLICKS", 9)}${pad("IMPR", 10)}CTR`);
466
488
  for (const row of result.rows) {
467
489
  console.log(` ${pad(row.date, 12)}${pad(row.clicks, 9)}${pad(row.impressions, 10)}${formatPercent(row.ctr)}`);
@@ -473,7 +495,9 @@ async function bingQueries(project, opts) {
473
495
  startDate: opts.startDate,
474
496
  endDate: opts.endDate,
475
497
  days: opts.days,
498
+ window: windowOption(opts.window),
476
499
  query: opts.query,
500
+ match: opts.exact ? "exact" : void 0,
477
501
  groupBy: opts.groupBy,
478
502
  limit: opts.limit,
479
503
  offset: opts.offset
@@ -488,7 +512,9 @@ async function bingPages(project, opts) {
488
512
  startDate: opts.startDate,
489
513
  endDate: opts.endDate,
490
514
  days: opts.days,
515
+ window: windowOption(opts.window),
491
516
  page: opts.page,
517
+ match: opts.exact ? "exact" : void 0,
492
518
  groupBy: opts.groupBy,
493
519
  limit: opts.limit,
494
520
  offset: opts.offset
@@ -516,8 +542,16 @@ function printWeeklyTable(noun, groupBy, keyed, weekly, meta) {
516
542
  return;
517
543
  }
518
544
  const width = noun === "page" ? 60 : 42;
519
- console.log(`Bing ${noun} stats, ${windowLabel(meta.window)} (${meta.totalMatching} ${noun === "page" ? "pages" : "queries"}; Bing reports these per week):
520
- `);
545
+ console.log(`Bing ${noun} stats, ${windowLabel(meta.window)} (${meta.totalMatching} ${noun === "page" ? "pages" : "queries"}; Bing reports these per week):`);
546
+ if (meta.totals) {
547
+ console.log(` All matching: ${meta.totals.clicks} clicks, ${meta.totals.impressions} impressions, position ${position(meta.totals.avgImpressionPosition)}`);
548
+ }
549
+ if (meta.comparison) {
550
+ const change = meta.comparison.difference;
551
+ const signed = (n) => `${n >= 0 ? "+" : ""}${n}`;
552
+ console.log(` vs prior ${meta.comparison.days} days: clicks ${signed(change.clicks)}, impressions ${signed(change.impressions)}, position ${change.avgImpressionPosition === null ? "n/a" : signed(change.avgImpressionPosition)}`);
553
+ }
554
+ console.log("");
521
555
  console.log(` ${pad(noun.toUpperCase(), width)}${pad("CLICKS", 9)}${pad("IMPR", 10)}${pad("CTR", 9)}${pad("POS", 7)}WEEKS`);
522
556
  for (const row of keyed) {
523
557
  console.log(` ${pad(row.key, width)}${pad(row.clicks, 9)}${pad(row.impressions, 10)}${pad(formatPercent(row.ctr), 9)}${pad(position(row.avgImpressionPosition), 7)}${row.weeks}`);
@@ -752,6 +786,7 @@ export {
752
786
  bingSitemaps,
753
787
  bingSites,
754
788
  bingStatus,
789
+ bingSubmitSitemap,
755
790
  bingSync,
756
791
  bingTraffic,
757
792
  bingUrlChildren,
@@ -1,25 +1,25 @@
1
1
  import {
2
2
  trackCliConnection
3
- } from "./chunk-UVXQQZB5.js";
3
+ } from "./chunk-QLVTMPFW.js";
4
4
  import {
5
5
  answerServiceDescriptors
6
- } from "./chunk-CYQCO5NY.js";
6
+ } from "./chunk-TA4L7U2M.js";
7
7
  import {
8
8
  outcomeFailure
9
- } from "./chunk-OKLDBQYW.js";
9
+ } from "./chunk-DZO6CATO.js";
10
10
  import {
11
11
  isLoopbackBindHost
12
12
  } from "./chunk-TSENU4GG.js";
13
13
  import {
14
14
  registeredProviderNames
15
- } from "./chunk-DILCH7RL.js";
15
+ } from "./chunk-LQWMNDZR.js";
16
16
  import {
17
17
  isTelemetryEnabled,
18
18
  recordInstallRef
19
- } from "./chunk-4A4X7VXE.js";
19
+ } from "./chunk-AFYKUX2X.js";
20
20
  import {
21
21
  createApiClient
22
- } from "./chunk-EGUJNHAZ.js";
22
+ } from "./chunk-F6WNKKGG.js";
23
23
  import {
24
24
  configExists,
25
25
  getAnswerServiceEnv,
@@ -30,7 +30,7 @@ import {
30
30
  loadConfigRaw,
31
31
  saveConfig,
32
32
  withBootstrapProviderDefaults
33
- } from "./chunk-5KDJJO2N.js";
33
+ } from "./chunk-OOVWMWMT.js";
34
34
  import "./chunk-AOJU5LKX.js";
35
35
  import {
36
36
  CliError,
@@ -38,17 +38,17 @@ import {
38
38
  isMachineFormat,
39
39
  systemError
40
40
  } from "./chunk-HGMYEDAQ.js";
41
- import "./chunk-IPOYH4WE.js";
41
+ import "./chunk-ZV6PMFF4.js";
42
42
  import {
43
43
  apiKeys,
44
44
  createClient,
45
45
  dashboardSessions,
46
46
  migrate
47
- } from "./chunk-ZQGWB7VJ.js";
47
+ } from "./chunk-USHY3SH6.js";
48
48
  import {
49
49
  ProviderNames,
50
50
  ProviderReloadErrorReasons
51
- } from "./chunk-Q2SJRZA3.js";
51
+ } from "./chunk-ETIIPSWL.js";
52
52
  import "./chunk-MLKGABMK.js";
53
53
 
54
54
  // src/commands/bootstrap.ts
@@ -1,26 +1,26 @@
1
1
  import {
2
2
  trackCliConnection
3
- } from "./chunk-UVXQQZB5.js";
3
+ } from "./chunk-QLVTMPFW.js";
4
4
  import {
5
5
  outcomeFailure
6
- } from "./chunk-OKLDBQYW.js";
7
- import "./chunk-4A4X7VXE.js";
6
+ } from "./chunk-DZO6CATO.js";
7
+ import "./chunk-AFYKUX2X.js";
8
8
  import {
9
9
  createApiClient
10
- } from "./chunk-EGUJNHAZ.js";
10
+ } from "./chunk-F6WNKKGG.js";
11
11
  import {
12
12
  loadConfig,
13
13
  saveConfigPatch
14
- } from "./chunk-5KDJJO2N.js";
14
+ } from "./chunk-OOVWMWMT.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-IPOYH4WE.js";
20
+ import "./chunk-ZV6PMFF4.js";
21
21
  import {
22
22
  describeError
23
- } from "./chunk-Q2SJRZA3.js";
23
+ } from "./chunk-ETIIPSWL.js";
24
24
  import "./chunk-MLKGABMK.js";
25
25
 
26
26
  // src/commands/cdp.ts
@@ -3,7 +3,7 @@ import {
3
3
  resolveCliAccess,
4
4
  resolveCliAccessForInvocation,
5
5
  windowOptions
6
- } from "./chunk-MEN27RAJ.js";
6
+ } from "./chunk-WYMBWCG5.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-Q2SJRZA3.js";
17
+ } from "./chunk-ETIIPSWL.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-2PCRGKPH.js");
114
+ const { printCliCatalog: printCliCatalog2 } = await import("./cli-catalog-BTRNR2UP.js");
115
115
  const group2 = argsWithoutHelp.find((arg) => !arg.startsWith("--"));
116
116
  printCliCatalog2(specs, fallbackFormat, group2, accessValue);
117
117
  return true;
@@ -418,6 +418,10 @@ var CLI_ROOT_SUMMARIES = {
418
418
  "section": "Monitoring",
419
419
  "summary": "Show the stored figures behind a dashboard trend card"
420
420
  },
421
+ "sitemaps": {
422
+ "section": "Monitoring",
423
+ "summary": "Compare the site's sitemaps with what Google and Bing list"
424
+ },
421
425
  "visibility-compare": {
422
426
  "section": "Monitoring",
423
427
  "summary": "Compare stored mention and citation results"
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-HGMYEDAQ.js";
5
5
  import {
6
6
  describeError
7
- } from "./chunk-Q2SJRZA3.js";
7
+ } from "./chunk-ETIIPSWL.js";
8
8
 
9
9
  // src/gsc-sitemap-submission.ts
10
10
  function dedupeGscSitemapUrls(urls) {
@@ -7,12 +7,12 @@ import {
7
7
  import {
8
8
  createApiClient,
9
9
  runWithUsageTags
10
- } from "./chunk-EGUJNHAZ.js";
10
+ } from "./chunk-F6WNKKGG.js";
11
11
  import {
12
12
  canonryMcpTools,
13
13
  mcpOutputSchema,
14
14
  toolOperationAccess
15
- } from "./chunk-O7OZVZWR.js";
15
+ } from "./chunk-WNDBACO7.js";
16
16
  import {
17
17
  PACKAGE_VERSION
18
18
  } from "./chunk-AOJU5LKX.js";
@@ -25,7 +25,7 @@ import {
25
25
  isReadOnlyKey,
26
26
  restrictedWriteScopes,
27
27
  upgradeCaveatFor
28
- } from "./chunk-Q2SJRZA3.js";
28
+ } from "./chunk-ETIIPSWL.js";
29
29
 
30
30
  // src/mcp/server.ts
31
31
  import { randomUUID } from "crypto";
@@ -5,7 +5,7 @@ import {
5
5
  loadConfig,
6
6
  loadConfigRaw,
7
7
  saveConfigPatch
8
- } from "./chunk-5KDJJO2N.js";
8
+ } from "./chunk-OOVWMWMT.js";
9
9
  import {
10
10
  CANONRY_NPM_PACKAGE_URL,
11
11
  compareSemver,
@@ -18,7 +18,7 @@ import {
18
18
  updateCheckEnvOptOut,
19
19
  upgradeCaveatFor,
20
20
  upgradeCommandFor
21
- } from "./chunk-Q2SJRZA3.js";
21
+ } from "./chunk-ETIIPSWL.js";
22
22
 
23
23
  // src/runtime-context.ts
24
24
  function cliRuntimeContext(env = process.env, stdio = process) {