@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,7 +1,7 @@
1
1
  import {
2
2
  answerServiceAdapters,
3
3
  answerServiceDescriptors
4
- } from "./chunk-CYQCO5NY.js";
4
+ } from "./chunk-TA4L7U2M.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-E4DUE2PW.js";
30
+ } from "./chunk-NKGQCCUS.js";
31
31
  import {
32
32
  AeroToolProfiles,
33
33
  AeroToolScopes,
34
34
  buildAeroStateTools,
35
35
  isAeroToolProfile,
36
36
  truncateToolResult
37
- } from "./chunk-2KL2XHS6.js";
37
+ } from "./chunk-DF4B6OGX.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-MCQK432C.js";
56
+ } from "./chunk-UG7TZJIG.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-N6AWKBLY.js";
68
+ } from "./chunk-I7DAEE3L.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-OKLDBQYW.js";
80
+ } from "./chunk-DZO6CATO.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-DILCH7RL.js";
88
+ } from "./chunk-LQWMNDZR.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-4A4X7VXE.js";
100
+ } from "./chunk-AFYKUX2X.js";
101
101
  import {
102
102
  createCanonryMcpServer
103
- } from "./chunk-R7K24KY7.js";
103
+ } from "./chunk-7VJJXLRP.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-EGUJNHAZ.js";
110
+ } from "./chunk-F6WNKKGG.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-5KDJJO2N.js";
142
+ } from "./chunk-OOVWMWMT.js";
143
143
  import {
144
144
  getBundledSkillSnapshots
145
- } from "./chunk-D354CQ6T.js";
145
+ } from "./chunk-Q6EZEVXE.js";
146
146
  import {
147
147
  computeFactorAverages,
148
148
  deleteSiteCrawlGraphLayout,
149
149
  persistSiteCrawlGraphLayout,
150
150
  prepareSiteCrawlGraphLayout,
151
151
  recordedSharePct
152
- } from "./chunk-PBOIN52J.js";
152
+ } from "./chunk-N7LRPMWR.js";
153
153
  import {
154
154
  CanonryMcpToolNames,
155
155
  canonryMcpTools
156
- } from "./chunk-O7OZVZWR.js";
156
+ } from "./chunk-WNDBACO7.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-6DIDDYG6.js";
165
+ } from "./chunk-YB2GAK32.js";
166
166
  import {
167
167
  computeCitedCompetitorDomains,
168
168
  determineCitationState
169
- } from "./chunk-TL52ELES.js";
169
+ } from "./chunk-GKX5F7NX.js";
170
170
  import {
171
171
  addLogListener,
172
172
  createFastifyLogger,
173
173
  createLogger
174
- } from "./chunk-BDLC3DFM.js";
174
+ } from "./chunk-XCEA5OMI.js";
175
175
  import {
176
176
  BingApiError,
177
177
  CC_CACHE_DIR,
@@ -268,6 +268,7 @@ import {
268
268
  listMonthlyKeywords,
269
269
  listPlaceActionLinks,
270
270
  listReviews,
271
+ listSitemaps,
271
272
  loadDuckdb,
272
273
  markSessionFailed,
273
274
  measurementRunCompleteness,
@@ -315,7 +316,7 @@ import {
315
316
  webhookResponseReason,
316
317
  webhookTargetRefusalReason,
317
318
  writeAuditLog
318
- } from "./chunk-4VMHN5LL.js";
319
+ } from "./chunk-SDXMG4VX.js";
319
320
  import {
320
321
  OperationalLogStore,
321
322
  SentimentIdempotencyConflict,
@@ -369,6 +370,7 @@ import {
369
370
  gscDataWatermarks,
370
371
  gscQueryDailyTotals,
371
372
  gscSearchData,
373
+ gscSitemaps,
372
374
  gscUrlInspections,
373
375
  gtmConnections,
374
376
  gtmRawSnapshots,
@@ -406,11 +408,12 @@ import {
406
408
  siteCrawlRunRequests,
407
409
  siteCrawlSnapshots,
408
410
  siteLivenessState,
411
+ sitemapListSyncs,
409
412
  trafficSources,
410
413
  unrecognizedAgentEventsHourly,
411
414
  unrecognizedAgentNotifyState,
412
415
  usageCounters
413
- } from "./chunk-ZQGWB7VJ.js";
416
+ } from "./chunk-USHY3SH6.js";
414
417
  import {
415
418
  AGENT_MEMORY_VALUE_MAX_BYTES,
416
419
  AI_ENGINE_DOMAINS,
@@ -667,7 +670,7 @@ import {
667
670
  winnabilityClassLabel,
668
671
  withRetry,
669
672
  withSkippedProviders
670
- } from "./chunk-Q2SJRZA3.js";
673
+ } from "./chunk-ETIIPSWL.js";
671
674
 
672
675
  // src/google-marketing-runtime.ts
673
676
  import crypto2 from "crypto";
@@ -5971,7 +5974,7 @@ function nonBlank(value) {
5971
5974
  return trimmed ? trimmed : void 0;
5972
5975
  }
5973
5976
  function resolveBuildCommit(env = process.env) {
5974
- const embedded = true ? "ecd1f66b433f5d60221d22ded51250c0565edf7b" : void 0;
5977
+ const embedded = true ? "c97db3b634ae1944197825d1b93afaee2b7f41ad" : void 0;
5975
5978
  return nonBlank(embedded) ?? nonBlank(env.CANONRY_COMMIT);
5976
5979
  }
5977
5980
  function resolveInstanceIdentity(env = process.env) {
@@ -8620,6 +8623,64 @@ function googleRunFailure(err) {
8620
8623
 
8621
8624
  // src/gsc-sync.ts
8622
8625
  var log3 = createLogger("GscSync");
8626
+ var GSC_SITEMAP_INDEX_MAX_PER_SYNC = 20;
8627
+ function countOrNull(value) {
8628
+ if (value === void 0 || value === "") return null;
8629
+ const n = Number(value);
8630
+ return Number.isFinite(n) && n >= 0 ? n : null;
8631
+ }
8632
+ function gscSitemapUrlCount(sitemap) {
8633
+ if (!sitemap.contents || sitemap.contents.length === 0) return null;
8634
+ return sitemap.contents.reduce((sum, content) => sum + (countOrNull(content.submitted) ?? 0), 0);
8635
+ }
8636
+ async function syncGscSitemaps(db, projectId, runId, accessToken, propertyId) {
8637
+ const top = await listSitemaps(accessToken, propertyId);
8638
+ const indexes = top.filter((sitemap) => sitemap.isSitemapsIndex);
8639
+ const read = indexes.slice(0, GSC_SITEMAP_INDEX_MAX_PER_SYNC);
8640
+ const files = /* @__PURE__ */ new Map();
8641
+ for (const index of read) files.set(index.path, await listSitemaps(accessToken, propertyId, index.path));
8642
+ const syncedAt = (/* @__PURE__ */ new Date()).toISOString();
8643
+ const toRow = (sitemap, parentUrl) => ({
8644
+ projectId,
8645
+ url: sitemap.path,
8646
+ parentUrl,
8647
+ isIndex: Boolean(sitemap.isSitemapsIndex),
8648
+ isPending: Boolean(sitemap.isPending),
8649
+ type: sitemap.type ?? null,
8650
+ urlCount: gscSitemapUrlCount(sitemap),
8651
+ warnings: countOrNull(sitemap.warnings),
8652
+ errors: countOrNull(sitemap.errors),
8653
+ submittedAt: sitemap.lastSubmitted ?? null,
8654
+ lastDownloadedAt: sitemap.lastDownloaded ?? null,
8655
+ syncRunId: runId,
8656
+ syncedAt
8657
+ });
8658
+ const rows = [
8659
+ ...top.map((sitemap) => toRow(sitemap, null)),
8660
+ ...[...files.entries()].flatMap(([parent, children]) => children.map((child) => toRow({ ...child, isSitemapsIndex: false }, parent)))
8661
+ ];
8662
+ const byUrl = /* @__PURE__ */ new Map();
8663
+ for (const row of rows) if (!byUrl.has(row.url)) byUrl.set(row.url, row);
8664
+ const unread = new Set(indexes.slice(GSC_SITEMAP_INDEX_MAX_PER_SYNC).map((index) => index.path));
8665
+ db.transaction((tx) => {
8666
+ const stored = tx.select({ url: gscSitemaps.url, parentUrl: gscSitemaps.parentUrl }).from(gscSitemaps).where(eq7(gscSitemaps.projectId, projectId)).all();
8667
+ for (const row of stored) {
8668
+ if (byUrl.has(row.url) || row.parentUrl !== null && unread.has(row.parentUrl)) continue;
8669
+ tx.delete(gscSitemaps).where(and5(eq7(gscSitemaps.projectId, projectId), eq7(gscSitemaps.url, row.url))).run();
8670
+ }
8671
+ for (const row of byUrl.values()) {
8672
+ tx.insert(gscSitemaps).values({ id: crypto8.randomUUID(), ...row }).onConflictDoUpdate({
8673
+ target: [gscSitemaps.projectId, gscSitemaps.url],
8674
+ set: { ...row }
8675
+ }).run();
8676
+ }
8677
+ tx.insert(sitemapListSyncs).values({ projectId, engine: "google", syncedAt, syncRunId: runId }).onConflictDoUpdate({
8678
+ target: [sitemapListSyncs.projectId, sitemapListSyncs.engine],
8679
+ set: { syncedAt, syncRunId: runId }
8680
+ }).run();
8681
+ });
8682
+ return { sitemaps: byUrl.size, indexesRead: read.length };
8683
+ }
8623
8684
  async function executeGscSync(db, runId, projectId, opts) {
8624
8685
  const reportOutcome = startRunOutcome(db, runId, FeatureNames.search_console, "sync");
8625
8686
  const now = (/* @__PURE__ */ new Date()).toISOString();
@@ -8775,6 +8836,12 @@ async function executeGscSync(db, runId, projectId, opts) {
8775
8836
  }).run();
8776
8837
  }
8777
8838
  log3.info("query-totals.complete", { runId, projectId, rowCount: queryTotalRows.length });
8839
+ try {
8840
+ const stored = await syncGscSitemaps(db, projectId, runId, accessToken, propertyId);
8841
+ log3.info("sitemaps.complete", { runId, projectId, ...stored });
8842
+ } catch (err) {
8843
+ log3.warn("sitemaps.failed", { runId, projectId, error: describeError(err) });
8844
+ }
8778
8845
  const coverage = writeCoverageSnapshot(db, projectId, runId);
8779
8846
  db.update(runs).set({ status: "completed", finishedAt: (/* @__PURE__ */ new Date()).toISOString() }).where(eq7(runs.id, runId)).run();
8780
8847
  log3.info("sync.completed", { runId, projectId, searchDataRows: rows.length, indexed: coverage.indexed, notIndexed: coverage.notIndexed, unknown: coverage.unknown, verifiedByInspection: coverage.verifiedByInspection });
@@ -11088,6 +11155,7 @@ async function executeBingSync(db, runId, projectId, opts) {
11088
11155
  tx.insert(bingSitemaps).values({ id: crypto15.randomUUID(), projectId, url: feed.Url, ...values }).onConflictDoUpdate({ target: [bingSitemaps.projectId, bingSitemaps.url], set: values }).run();
11089
11156
  }
11090
11157
  tx.delete(bingSitemaps).where(urls.length > 0 ? and9(eq13(bingSitemaps.projectId, projectId), notInArray2(bingSitemaps.url, urls)) : eq13(bingSitemaps.projectId, projectId)).run();
11158
+ tx.insert(sitemapListSyncs).values({ projectId, engine: "bing", syncedAt, syncRunId: runId }).onConflictDoUpdate({ target: [sitemapListSyncs.projectId, sitemapListSyncs.engine], set: { syncedAt, syncRunId: runId } }).run();
11091
11159
  });
11092
11160
  return collected.size;
11093
11161
  });
@@ -23,7 +23,7 @@ import {
23
23
  measurementDraftUpsertGroupRequestSchema,
24
24
  measurementDraftUpsertMarketRequestSchema,
25
25
  measurementDraftUpsertTargetRequestSchema
26
- } from "./chunk-Q2SJRZA3.js";
26
+ } from "./chunk-ETIIPSWL.js";
27
27
 
28
28
  // src/measurement-draft-actions.ts
29
29
  import { z } from "zod";
@@ -15,7 +15,7 @@ import {
15
15
  formatCanonryPluginUpdateHint,
16
16
  formatCanonryPluginVersionMismatch,
17
17
  skillsClientSchema
18
- } from "./chunk-Q2SJRZA3.js";
18
+ } from "./chunk-ETIIPSWL.js";
19
19
 
20
20
  // src/commands/skills.ts
21
21
  import crypto from "crypto";
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  trackIntegrationConnection
3
- } from "./chunk-OKLDBQYW.js";
3
+ } from "./chunk-DZO6CATO.js";
4
4
  import {
5
5
  cliRuntimeContext
6
- } from "./chunk-4A4X7VXE.js";
6
+ } from "./chunk-AFYKUX2X.js";
7
7
 
8
8
  // src/cli-connection-telemetry.ts
9
9
  function trackCliConnection(properties) {
@@ -1,6 +1,6 @@
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";
@@ -19,7 +19,7 @@ import {
19
19
  formatMicros,
20
20
  formatRunErrorOneLine,
21
21
  resolveProviderInput
22
- } from "./chunk-Q2SJRZA3.js";
22
+ } from "./chunk-ETIIPSWL.js";
23
23
 
24
24
  // src/commands/run.ts
25
25
  function getClient() {