@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,16 +1,16 @@
1
1
  import {
2
2
  runWithUsageTags
3
- } from "./chunk-EGUJNHAZ.js";
3
+ } from "./chunk-F6WNKKGG.js";
4
4
  import {
5
5
  CanonryMcpToolNames,
6
6
  canonryMcpTools
7
- } from "./chunk-O7OZVZWR.js";
7
+ } from "./chunk-WNDBACO7.js";
8
8
  import {
9
9
  CliError
10
10
  } from "./chunk-HGMYEDAQ.js";
11
11
  import {
12
12
  buildOpenApiDocument
13
- } from "./chunk-4VMHN5LL.js";
13
+ } from "./chunk-SDXMG4VX.js";
14
14
  import {
15
15
  DEFAULT_COMPETITOR_AUTO_ALIAS_MODE,
16
16
  MeasurementPortfolioLists,
@@ -23,7 +23,7 @@ import {
23
23
  seoDatasetWithoutVendor,
24
24
  seoProviderSchema,
25
25
  truncateUtf16
26
- } from "./chunk-Q2SJRZA3.js";
26
+ } from "./chunk-ETIIPSWL.js";
27
27
 
28
28
  // src/agent/tools.ts
29
29
  import { Type as Type2 } from "@earendil-works/pi-ai";
@@ -2,13 +2,13 @@ import {
2
2
  bucketCliCommandDuration,
3
3
  isTelemetryEnabled,
4
4
  trackEvent
5
- } from "./chunk-4A4X7VXE.js";
5
+ } from "./chunk-AFYKUX2X.js";
6
6
  import {
7
7
  getConfigDir
8
- } from "./chunk-5KDJJO2N.js";
8
+ } from "./chunk-OOVWMWMT.js";
9
9
  import {
10
10
  currentOutcomeAttribution
11
- } from "./chunk-IPOYH4WE.js";
11
+ } from "./chunk-ZV6PMFF4.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-Q2SJRZA3.js";
22
+ } from "./chunk-ETIIPSWL.js";
23
23
 
24
24
  // src/outcome-telemetry.ts
25
25
  import fs from "fs";
@@ -13714,6 +13714,7 @@ var STORED_READ_OPERATIONS = /* @__PURE__ */ new Set([
13714
13714
  "GET /api/v1/projects/{name}/bing/sitemaps",
13715
13715
  "GET /api/v1/projects/{name}/bing/site",
13716
13716
  "GET /api/v1/projects/{name}/bing/keyword-demand",
13717
+ "GET /api/v1/projects/{name}/sitemaps",
13717
13718
  "GET /api/v1/projects/{name}/traffic/sources",
13718
13719
  "GET /api/v1/projects/{name}/traffic/status",
13719
13720
  "GET /api/v1/projects/{name}/traffic/analytics",
@@ -18686,14 +18687,14 @@ function median(values) {
18686
18687
  const middle = Math.floor(sorted.length / 2);
18687
18688
  return sorted.length % 2 === 1 ? sorted[middle] : (sorted[middle - 1] + sorted[middle]) / 2;
18688
18689
  }
18689
- function wilsonInterval(successes, n, z96 = 1.96) {
18690
+ function wilsonInterval(successes, n, z97 = 1.96) {
18690
18691
  if (!Number.isFinite(n) || n <= 0) return null;
18691
18692
  const s = Math.max(0, Math.min(successes, n));
18692
18693
  const p = s / n;
18693
- const z210 = z96 * z96;
18694
+ const z210 = z97 * z97;
18694
18695
  const denom = 1 + z210 / n;
18695
18696
  const center = (p + z210 / (2 * n)) / denom;
18696
- const margin = z96 / denom * Math.sqrt(p * (1 - p) / n + z210 / (4 * n * n));
18697
+ const margin = z97 / denom * Math.sqrt(p * (1 - p) / n + z210 / (4 * n * n));
18697
18698
  return {
18698
18699
  low: round(Math.max(0, center - margin)),
18699
18700
  high: round(Math.min(1, center + margin))
@@ -23678,7 +23679,26 @@ var bingTrafficResponseDtoSchema = z77.object({
23678
23679
  /** Newest stored day for the project, ignoring the window. Null before the first sync. */
23679
23680
  latestAvailableDate: z77.string().nullable(),
23680
23681
  /** Oldest stored day. A window that starts earlier is only partly covered. */
23681
- earliestAvailableDate: z77.string().nullable()
23682
+ earliestAvailableDate: z77.string().nullable(),
23683
+ /**
23684
+ * Least-squares fit per metric over one entry per calendar day in the
23685
+ * window (a day Bing sent no row for counts as zero), so every surface draws
23686
+ * the same line. Null for a metric with fewer than two days.
23687
+ */
23688
+ trends: z77.object({
23689
+ clicks: linearTrendSchema.nullable(),
23690
+ impressions: linearTrendSchema.nullable(),
23691
+ ctr: linearTrendSchema.nullable()
23692
+ }),
23693
+ /**
23694
+ * The window against the equal-length period before it (`prior-window`)
23695
+ * when the stored days reach back that far, else the window's own two
23696
+ * halves (`split-window`). Same shape as the Search Console comparison;
23697
+ * `position` is always null because Bing's daily traffic carries none.
23698
+ * Null when there is no span to split or the window ends after the newest
23699
+ * stored day.
23700
+ */
23701
+ periodComparison: gscPeriodComparisonSchema.nullable()
23682
23702
  });
23683
23703
  var bingSearchTotalsShape = {
23684
23704
  clicks: z77.number().int().nonnegative(),
@@ -23694,11 +23714,34 @@ var bingSearchTotalsShape = {
23694
23714
  var bingQueryTotalsRowDtoSchema = z77.object({ query: z77.string(), ...bingSearchTotalsShape });
23695
23715
  var bingPageTotalsRowDtoSchema = z77.object({ page: z77.string(), ...bingSearchTotalsShape });
23696
23716
  var bingWeeklyTotalsRowDtoSchema = z77.object({ date: z77.string(), ...bingSearchTotalsShape });
23717
+ var bingSearchTotalsDtoSchema = z77.object(bingSearchTotalsShape);
23718
+ var bingSearchComparisonDtoSchema = z77.object({
23719
+ /** Length of each window in calendar days. */
23720
+ days: z77.number().int().positive(),
23721
+ prior: bingSearchTotalsDtoSchema,
23722
+ difference: z77.object({
23723
+ clicks: z77.number().int(),
23724
+ impressions: z77.number().int(),
23725
+ ctr: fraction(),
23726
+ avgImpressionPosition: z77.number().nullable()
23727
+ })
23728
+ });
23697
23729
  var bingSearchListEnvelope = {
23698
23730
  totalMatching: z77.number().int().nonnegative(),
23699
23731
  truncated: z77.boolean(),
23700
23732
  window: bingWindowDtoSchema,
23701
- latestAvailableDate: z77.string().nullable()
23733
+ latestAvailableDate: z77.string().nullable(),
23734
+ /**
23735
+ * The matching rows summed over the window, before paging. Not a site total:
23736
+ * Bing names only some queries (use `/bing/traffic` for the site). Null when
23737
+ * no stored week falls in the window.
23738
+ */
23739
+ totals: bingSearchTotalsDtoSchema.nullable(),
23740
+ /**
23741
+ * `totals` against the equal-length window before it. Null for an open
23742
+ * window (`window=all`), or when the stored weeks do not reach back that far.
23743
+ */
23744
+ comparison: bingSearchComparisonDtoSchema.nullable()
23702
23745
  };
23703
23746
  var bingQueryTotalsResponseDtoSchema = z77.object({
23704
23747
  groupBy: z77.enum(["query", "week"]),
@@ -26497,6 +26540,10 @@ var UI_ACTIONS = [
26497
26540
  "integration.connect",
26498
26541
  "integration.disconnect",
26499
26542
  "traffic.sync",
26543
+ /** A Bing data sync was queued from the dashboard. */
26544
+ "bing.sync",
26545
+ /** A sitemap was submitted to Google or Bing from the dashboard (`integration` says which). */
26546
+ "sitemap.submit",
26500
26547
  "journeys.visitor_open",
26501
26548
  "journeys.visit_open",
26502
26549
  "journeys.agent_open",
@@ -27282,6 +27329,68 @@ function compareSeoKeywordGapsBy(sort) {
27282
27329
  }
27283
27330
  }
27284
27331
 
27332
+ // ../contracts/src/sitemaps.ts
27333
+ import { z as z96 } from "zod";
27334
+ var sitemapEngineSchema = z96.enum(["google", "bing"]);
27335
+ var SitemapEngines = sitemapEngineSchema.enum;
27336
+ var sitemapSourceSchema = z96.enum(["site", "google", "bing"]);
27337
+ var sitemapStateSchema = z96.enum(["ok", "pending", "warnings", "errors", "other"]);
27338
+ var SitemapStates = sitemapStateSchema.enum;
27339
+ var engineSitemapDtoSchema = z96.object({
27340
+ url: z96.string(),
27341
+ /** The index this file was read from; null for a sitemap listed on its own. */
27342
+ parentUrl: z96.string().nullable(),
27343
+ isIndex: z96.boolean(),
27344
+ /** The engine's own type word (Bing: `Sitemap`, `Sitemap Index`, `RSS`; Google: `sitemap`, `rssFeed`). */
27345
+ type: z96.string().nullable(),
27346
+ state: sitemapStateSchema,
27347
+ /** The engine's status as it reads in its own console (Google: Success, Processing, Warnings, Errors; Bing's word as sent). */
27348
+ statusLabel: z96.string(),
27349
+ warnings: z96.number().int().nonnegative().nullable(),
27350
+ errors: z96.number().int().nonnegative().nullable(),
27351
+ /** URLs the engine counted in the sitemap; null when it reported none. */
27352
+ urlCount: z96.number().int().nonnegative().nullable(),
27353
+ /** Null when nobody submitted it: the engine found it itself. */
27354
+ submittedAt: z96.string().nullable(),
27355
+ /** When the engine last read the file (Google: downloaded; Bing: crawled). */
27356
+ lastReadAt: z96.string().nullable()
27357
+ });
27358
+ var sitemapMissingDtoSchema = z96.object({
27359
+ url: z96.string(),
27360
+ /** Where Canonry saw it: the site's own sitemaps, or a submission to the other engine. */
27361
+ foundIn: z96.array(sitemapSourceSchema)
27362
+ });
27363
+ var engineSitemapsDtoSchema = z96.object({
27364
+ /** When this engine's list was last read in full. */
27365
+ syncedAt: z96.string(),
27366
+ /** Every sitemap the engine lists, files inside an index included (`parentUrl`). */
27367
+ sitemaps: z96.array(engineSitemapDtoSchema),
27368
+ /**
27369
+ * Sitemaps the site declares or someone submitted to the other engine that
27370
+ * this engine does not have, by URL. A file inside an index that is itself missing is left
27371
+ * out: adding the index covers it. Google lists only sitemaps inside the
27372
+ * connected property.
27373
+ */
27374
+ missing: z96.array(sitemapMissingDtoSchema)
27375
+ });
27376
+ var sitemapCoverageResponseDtoSchema = z96.object({
27377
+ site: z96.object({
27378
+ /** When the scan behind `sitemaps` ran; null before the first Site Health scan. */
27379
+ scannedAt: z96.string().nullable(),
27380
+ runId: z96.string().nullable(),
27381
+ /** Sitemap files the scan read pages from. An index appears through its files. */
27382
+ sitemaps: z96.array(z96.string())
27383
+ }),
27384
+ /** Null when the engine is not connected or its list was never read. */
27385
+ google: engineSitemapsDtoSchema.nullable(),
27386
+ bing: engineSitemapsDtoSchema.nullable()
27387
+ });
27388
+ var bingSubmitSitemapResponseDtoSchema = z96.object({
27389
+ sitemapUrl: z96.string(),
27390
+ /** Bing accepted the request. It lists a new sitemap after it reads it, so it shows from the next sync. */
27391
+ accepted: z96.literal(true)
27392
+ });
27393
+
27285
27394
  export {
27286
27395
  GBP_POSTS_WRITE_SCOPE,
27287
27396
  GBP_LIVE_READ_SCOPE,
@@ -28614,5 +28723,7 @@ export {
28614
28723
  countMarketRankings,
28615
28724
  groupMarketRankings,
28616
28725
  compareSeoCompetitorsBy,
28617
- compareSeoKeywordGapsBy
28726
+ compareSeoKeywordGapsBy,
28727
+ sitemapCoverageResponseDtoSchema,
28728
+ bingSubmitSitemapResponseDtoSchema
28618
28729
  };
@@ -4,14 +4,14 @@ import {
4
4
  } from "./chunk-VJWDBFSL.js";
5
5
  import {
6
6
  createApiClient
7
- } from "./chunk-EGUJNHAZ.js";
7
+ } from "./chunk-F6WNKKGG.js";
8
8
  import {
9
9
  CliError,
10
10
  isMachineFormat
11
11
  } from "./chunk-HGMYEDAQ.js";
12
12
  import {
13
13
  describeError
14
- } from "./chunk-Q2SJRZA3.js";
14
+ } from "./chunk-ETIIPSWL.js";
15
15
 
16
16
  // src/commands/mcp.ts
17
17
  import fs from "fs";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  loadConfig
3
- } from "./chunk-5KDJJO2N.js";
3
+ } from "./chunk-OOVWMWMT.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-Q2SJRZA3.js";
39
+ } from "./chunk-ETIIPSWL.js";
40
40
 
41
41
  // ../api-client-generated/src/generated/core/bodySerializer.gen.ts
42
42
  var jsonBodySerializer = {
@@ -2713,6 +2713,25 @@ var postApiV1ProjectsByNameBingSync = (options) => (options.client ?? client).po
2713
2713
  url: "/api/v1/projects/{name}/bing/sync",
2714
2714
  ...options
2715
2715
  });
2716
+ var getApiV1ProjectsByNameBingSitemaps = (options) => (options.client ?? client).get({
2717
+ security: [{ scheme: "bearer", type: "http" }],
2718
+ url: "/api/v1/projects/{name}/bing/sitemaps",
2719
+ ...options
2720
+ });
2721
+ var postApiV1ProjectsByNameBingSitemaps = (options) => (options.client ?? client).post({
2722
+ security: [{ scheme: "bearer", type: "http" }],
2723
+ url: "/api/v1/projects/{name}/bing/sitemaps",
2724
+ ...options,
2725
+ headers: {
2726
+ "Content-Type": "application/json",
2727
+ ...options.headers
2728
+ }
2729
+ });
2730
+ var getApiV1ProjectsByNameSitemaps = (options) => (options.client ?? client).get({
2731
+ security: [{ scheme: "bearer", type: "http" }],
2732
+ url: "/api/v1/projects/{name}/sitemaps",
2733
+ ...options
2734
+ });
2716
2735
  var getApiV1ProjectsByNameBingTraffic = (options) => (options.client ?? client).get({
2717
2736
  security: [{ scheme: "bearer", type: "http" }],
2718
2737
  url: "/api/v1/projects/{name}/bing/traffic",
@@ -2733,11 +2752,6 @@ var getApiV1ProjectsByNameBingCrawlStats = (options) => (options.client ?? clien
2733
2752
  url: "/api/v1/projects/{name}/bing/crawl-stats",
2734
2753
  ...options
2735
2754
  });
2736
- var getApiV1ProjectsByNameBingSitemaps = (options) => (options.client ?? client).get({
2737
- security: [{ scheme: "bearer", type: "http" }],
2738
- url: "/api/v1/projects/{name}/bing/sitemaps",
2739
- ...options
2740
- });
2741
2755
  var getApiV1ProjectsByNameBingSite = (options) => (options.client ?? client).get({
2742
2756
  security: [{ scheme: "bearer", type: "http" }],
2743
2757
  url: "/api/v1/projects/{name}/bing/site",
@@ -5880,6 +5894,18 @@ var ApiClient = class {
5880
5894
  })
5881
5895
  );
5882
5896
  }
5897
+ /** The site's sitemaps against what Google and Bing list, with what each engine is missing (stored). */
5898
+ async sitemaps(project) {
5899
+ return this.invoke(
5900
+ () => getApiV1ProjectsByNameSitemaps({ client: this.heyClient, path: { name: project } })
5901
+ );
5902
+ }
5903
+ /** Ask Bing to read a sitemap: adds a new one, rereads a listed one. */
5904
+ async bingSubmitSitemap(project, sitemapUrl) {
5905
+ return this.invoke(
5906
+ () => postApiV1ProjectsByNameBingSitemaps({ client: this.heyClient, path: { name: project }, body: { sitemapUrl } })
5907
+ );
5908
+ }
5883
5909
  async bingSync(project) {
5884
5910
  return this.invoke(
5885
5911
  () => postApiV1ProjectsByNameBingSync({ client: this.heyClient, path: { name: project } })
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  hostMatchesDomain
3
- } from "./chunk-Q2SJRZA3.js";
3
+ } from "./chunk-ETIIPSWL.js";
4
4
 
5
5
  // src/citation-utils.ts
6
6
  function pickProjectCitedDomain(citedDomains, projectDomains) {
@@ -8,23 +8,23 @@ import {
8
8
  reparseStoredResult4,
9
9
  reparseStoredResult5,
10
10
  resolveStoredApiResponse
11
- } from "./chunk-N6AWKBLY.js";
11
+ } from "./chunk-I7DAEE3L.js";
12
12
  import {
13
13
  loadConfig
14
- } from "./chunk-5KDJJO2N.js";
14
+ } from "./chunk-OOVWMWMT.js";
15
15
  import {
16
16
  isMachineFormat
17
17
  } from "./chunk-HGMYEDAQ.js";
18
18
  import {
19
19
  determineCitationState
20
- } from "./chunk-TL52ELES.js";
20
+ } from "./chunk-GKX5F7NX.js";
21
21
  import {
22
22
  backfillProjectAnswerMentions,
23
23
  competitorIdentityColumns,
24
24
  createRunCompetitorResolver,
25
25
  readMarketCompetitorNames,
26
26
  refreshSnapshotMentionIdentity
27
- } from "./chunk-4VMHN5LL.js";
27
+ } from "./chunk-SDXMG4VX.js";
28
28
  import {
29
29
  RawEventSampleEventTypes,
30
30
  auditLog,
@@ -38,7 +38,7 @@ import {
38
38
  querySnapshots,
39
39
  rawEventSamples,
40
40
  runs
41
- } from "./chunk-ZQGWB7VJ.js";
41
+ } from "./chunk-USHY3SH6.js";
42
42
  import {
43
43
  ProviderNames,
44
44
  RetrievalContracts,
@@ -51,7 +51,7 @@ import {
51
51
  extractRecommendedCompetitors,
52
52
  normalizeUrlPath,
53
53
  openRouterRouteModel
54
- } from "./chunk-Q2SJRZA3.js";
54
+ } from "./chunk-ETIIPSWL.js";
55
55
 
56
56
  // src/commands/backfill.ts
57
57
  import { setImmediate as yieldToEventLoop } from "timers/promises";
@@ -429,7 +429,7 @@ No DB writes performed. Re-run without --dry-run to apply.`);
429
429
  }
430
430
  }
431
431
  async function backfillInsightsCommand(project, opts) {
432
- const { IntelligenceService } = await import("./intelligence-service-LCTP5BC7.js");
432
+ const { IntelligenceService } = await import("./intelligence-service-42Q3OVI5.js");
433
433
  const config = loadConfig();
434
434
  const db = createClient(config.database);
435
435
  migrate(db);
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  createLogger
3
- } from "./chunk-BDLC3DFM.js";
3
+ } from "./chunk-XCEA5OMI.js";
4
4
  import {
5
5
  addLikelyFakeAgentHits,
6
6
  correctBackgroundCallJourneys,
7
7
  mergeSplitJourneyVisitors,
8
8
  writeUnrecognizedAgentBuckets
9
- } from "./chunk-4VMHN5LL.js";
9
+ } from "./chunk-SDXMG4VX.js";
10
10
  import {
11
11
  AGENT_TRUST_RULES_VERSION,
12
12
  BROWSER_SHAPED_AGENT_MARKERS,
@@ -23,7 +23,7 @@ import {
23
23
  isSelfTraffic,
24
24
  normalizeTrafficPathPattern,
25
25
  unrecognizedAgentName
26
- } from "./chunk-IR3MYKIA.js";
26
+ } from "./chunk-NPX5SL54.js";
27
27
  import {
28
28
  RawEventSampleEventTypes,
29
29
  agentJourneyCaptureDays,
@@ -36,7 +36,7 @@ import {
36
36
  rawEventSamples,
37
37
  trafficReclassificationState,
38
38
  unrecognizedAgentEventsHourly
39
- } from "./chunk-ZQGWB7VJ.js";
39
+ } from "./chunk-USHY3SH6.js";
40
40
  import {
41
41
  AI_ENGINE_DOMAINS,
42
42
  AI_ENGINE_SELF_DOMAINS,
@@ -69,7 +69,7 @@ import {
69
69
  retryAfterDelayMs,
70
70
  usageCount,
71
71
  withRetry
72
- } from "./chunk-Q2SJRZA3.js";
72
+ } from "./chunk-ETIIPSWL.js";
73
73
 
74
74
  // ../provider-openai/src/normalize.ts
75
75
  import OpenAI from "openai";
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  createApiClient
3
- } from "./chunk-EGUJNHAZ.js";
3
+ } from "./chunk-F6WNKKGG.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-FL76YWYN.js";
10
+ } from "./chunk-PID3C4B7.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-Q2SJRZA3.js";
40
+ } from "./chunk-ETIIPSWL.js";
41
41
 
42
42
  // src/commands/measurement-plan.ts
43
43
  import crypto from "crypto";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  API_PROVIDER_NAMES,
3
3
  ProviderNames
4
- } from "./chunk-Q2SJRZA3.js";
4
+ } from "./chunk-ETIIPSWL.js";
5
5
 
6
6
  // src/provider-registration.ts
7
7
  function isApiProviderRegistrable(name, entry) {
@@ -2,18 +2,18 @@ import {
2
2
  configExists,
3
3
  loadConfigRaw,
4
4
  saveConfigPatch
5
- } from "./chunk-5KDJJO2N.js";
5
+ } from "./chunk-OOVWMWMT.js";
6
6
  import {
7
7
  BUNDLED_SKILL_NAMES,
8
8
  installSkills
9
- } from "./chunk-D354CQ6T.js";
9
+ } from "./chunk-Q6EZEVXE.js";
10
10
  import {
11
11
  PACKAGE_VERSION
12
12
  } from "./chunk-AOJU5LKX.js";
13
13
  import {
14
14
  SKILL_MANIFEST_FILENAME,
15
15
  SkillsClients
16
- } from "./chunk-Q2SJRZA3.js";
16
+ } from "./chunk-ETIIPSWL.js";
17
17
 
18
18
  // src/skills-autosync.ts
19
19
  import fs from "fs";
@@ -5,7 +5,7 @@ import {
5
5
  siteCrawlGraphNodes,
6
6
  siteCrawlPages,
7
7
  siteCrawlSnapshots
8
- } from "./chunk-ZQGWB7VJ.js";
8
+ } from "./chunk-USHY3SH6.js";
9
9
  import {
10
10
  SITE_CRAWL_GRAPH_MAX_EDGES,
11
11
  SITE_CRAWL_GRAPH_MAX_NODES,
@@ -15,7 +15,7 @@ import {
15
15
  factorStatusFromDistribution,
16
16
  factorStatusFromScore,
17
17
  roundPreservingTotal
18
- } from "./chunk-Q2SJRZA3.js";
18
+ } from "./chunk-ETIIPSWL.js";
19
19
 
20
20
  // src/site-audit-factors.ts
21
21
  function recordedSharePct(factor) {
@@ -5,7 +5,7 @@ import {
5
5
  isStoredPageReadTool,
6
6
  isStoredReadTool,
7
7
  truncateToolResult
8
- } from "./chunk-2KL2XHS6.js";
8
+ } from "./chunk-DF4B6OGX.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-5KDJJO2N.js";
26
+ } from "./chunk-OOVWMWMT.js";
27
27
  import {
28
28
  CanonryMcpToolNames,
29
29
  canonryMcpTools
30
- } from "./chunk-O7OZVZWR.js";
30
+ } from "./chunk-WNDBACO7.js";
31
31
  import {
32
32
  createLogger
33
- } from "./chunk-BDLC3DFM.js";
33
+ } from "./chunk-XCEA5OMI.js";
34
34
  import {
35
35
  agentToolEvents,
36
36
  llmUsageEvents
37
- } from "./chunk-ZQGWB7VJ.js";
37
+ } from "./chunk-USHY3SH6.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-Q2SJRZA3.js";
46
+ } from "./chunk-ETIIPSWL.js";
47
47
 
48
48
  // src/agent/session.ts
49
49
  import fs2 from "fs";
@@ -15,7 +15,7 @@ import {
15
15
  hostMatchesDomain,
16
16
  hostOf,
17
17
  isLocationRedirectStatus
18
- } from "./chunk-Q2SJRZA3.js";
18
+ } from "./chunk-ETIIPSWL.js";
19
19
 
20
20
  // ../integration-traffic/src/agent-trust.ts
21
21
  var AGENT_TRUST_RULES_VERSION = 2;
@@ -20,7 +20,7 @@ import {
20
20
  resolveProviderModel,
21
21
  schedulableRunKindSchema,
22
22
  sentimentEvaluatorProviderSchema
23
- } from "./chunk-Q2SJRZA3.js";
23
+ } from "./chunk-ETIIPSWL.js";
24
24
 
25
25
  // ../config/src/index.ts
26
26
  import { z as z5 } from "zod";