@canonry/canonry 7.89.0 → 7.90.1

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 (141) hide show
  1. package/assets/agent-workspace/skills/canonry/references/canonry-cli.md +12 -0
  2. package/assets/assets/{AgentSetupPage-BU1supL8.js → AgentSetupPage-BSfsbQXZ.js} +1 -1
  3. package/assets/assets/{AuditHistoryPanel-D7or_J3j.js → AuditHistoryPanel-YrEggsyA.js} +1 -1
  4. package/assets/assets/{BacklinksPage-SOls3ew4.js → BacklinksPage-vXUxxplH.js} +1 -1
  5. package/assets/assets/{HistoryPage-LNKtQ6a8.js → HistoryPage-VJ_JQ7R3.js} +1 -1
  6. package/assets/assets/MeasurementPropertyPage-BHPa2zdE.js +4 -0
  7. package/assets/assets/ProjectPage-C1AI_aAQ.js +11 -0
  8. package/assets/assets/{RunsPage-B8zUD2gr.js → RunsPage-DKIktkY1.js} +1 -1
  9. package/assets/assets/SettingsPage-CTXfqNZs.js +1 -0
  10. package/assets/assets/SiteHealthSection-CRwvLfHd.js +2 -0
  11. package/assets/assets/{ToneBadge-DawS8vMp.js → ToneBadge-B3rD6bDF.js} +5 -5
  12. package/assets/assets/{TrafficPage-DJUqxtrQ.js → TrafficPage-C4R3X5lf.js} +4 -4
  13. package/assets/assets/{TrafficSourceDetailPage-OVY_L73m.js → TrafficSourceDetailPage-C79eQilP.js} +1 -1
  14. package/assets/assets/{account-context-DoI9S9qY.js → account-context-GstYbqpX.js} +1 -1
  15. package/assets/assets/{agent-trust-copy-CZpfPr4M.js → agent-trust-copy-Ca4ys8J2.js} +1 -1
  16. package/assets/assets/{card-ClURYmZN.js → card-CgdGerYK.js} +1 -1
  17. package/assets/assets/{format-helpers-CscAFAMJ.js → format-helpers-ByAY4dv0.js} +1 -1
  18. package/assets/assets/index-DdG9gR0r.js +60 -0
  19. package/assets/assets/query-client-DjRrRIsq.js +1 -0
  20. package/assets/assets/react-query-B8JD_K7g.js +1 -0
  21. package/assets/assets/{react-sigma_core.esm.min-6J0MSvMJ.js → react-sigma_core.esm.min-BoCIEnkF.js} +1 -1
  22. package/assets/assets/{server-traffic-C-_D6pdo.js → server-traffic-Bt9bexaP.js} +1 -1
  23. package/assets/assets/{service-C7qDx_qB.js → service-SgtD5EOS.js} +1 -1
  24. package/assets/index.html +7 -7
  25. package/dist/{ads-XEW2LBKV.js → ads-6BAITIBY.js} +3 -3
  26. package/dist/{agent-VYADMMPT.js → agent-BE3D65U4.js} +7 -7
  27. package/dist/{agent-ask-4G57GM3S.js → agent-ask-TT6BAV2T.js} +3 -3
  28. package/dist/{agent-conversations-MRKRCXQI.js → agent-conversations-GJDAWU36.js} +3 -3
  29. package/dist/{agent-journeys-WEUEYRMK.js → agent-journeys-UEL27GNY.js} +3 -3
  30. package/dist/{agent-memory-YLAOXQQ6.js → agent-memory-PB74OP46.js} +3 -3
  31. package/dist/{agent-providers-AWKQRJDZ.js → agent-providers-5WFMNRRK.js} +3 -3
  32. package/dist/{agent-transcript-HXYFVCUD.js → agent-transcript-IAGB3JXG.js} +3 -3
  33. package/dist/{analytics-5G5G5OJU.js → analytics-5BVE7KUN.js} +3 -3
  34. package/dist/{apply-FCKZG7A2.js → apply-YJJWQ4JX.js} +3 -3
  35. package/dist/{backfill-3CTZHCJS.js → backfill-6OLGZIEV.js} +10 -10
  36. package/dist/{backlinks-Q53JT63C.js → backlinks-4JK26OIO.js} +3 -3
  37. package/dist/{bing-FOY2UVIM.js → bing-NZYYPB2M.js} +12 -3
  38. package/dist/{bootstrap-FXIT7LDW.js → bootstrap-6KHK63W3.js} +10 -10
  39. package/dist/{cdp-WWQW3LIZ.js → cdp-PTXWVX6T.js} +7 -7
  40. package/dist/{chunk-ZYEWB5BK.js → chunk-2UULABPI.js} +7 -3
  41. package/dist/{chunk-JLBJEQPV.js → chunk-7ASKZHS4.js} +1 -1
  42. package/dist/{chunk-S7D2ELTC.js → chunk-7VJJXLRP.js} +3 -3
  43. package/dist/{chunk-WPTCWNA6.js → chunk-AFYKUX2X.js} +2 -2
  44. package/dist/{chunk-7522CQ2E.js → chunk-CHTADAEC.js} +4 -4
  45. package/dist/{chunk-GDEYX6E3.js → chunk-DF4B6OGX.js} +4 -4
  46. package/dist/{chunk-RE24YYIY.js → chunk-DZO6CATO.js} +4 -4
  47. package/dist/{chunk-YKLYWVLL.js → chunk-ETIIPSWL.js} +71 -4
  48. package/dist/{chunk-UIULMWJX.js → chunk-F442MSX2.js} +2 -2
  49. package/dist/{chunk-TCANF22P.js → chunk-F6WNKKGG.js} +33 -7
  50. package/dist/{chunk-DPKA5CWK.js → chunk-GKX5F7NX.js} +1 -1
  51. package/dist/{chunk-X6XFWQCE.js → chunk-HUQDD26S.js} +7 -7
  52. package/dist/{chunk-4INNOSWU.js → chunk-I7DAEE3L.js} +5 -5
  53. package/dist/{chunk-5GQ2AGWS.js → chunk-L2MDMZFT.js} +3 -3
  54. package/dist/{chunk-3H5VURTU.js → chunk-LQWMNDZR.js} +1 -1
  55. package/dist/{chunk-2BZJ4W27.js → chunk-LTZNUDSI.js} +3 -3
  56. package/dist/{chunk-EWR25OVQ.js → chunk-N7LRPMWR.js} +2 -2
  57. package/dist/{chunk-GSNKBXGN.js → chunk-NKGQCCUS.js} +6 -6
  58. package/dist/{chunk-VL4AZGUA.js → chunk-NPX5SL54.js} +1 -1
  59. package/dist/{chunk-A6DKZ4KQ.js → chunk-OOVWMWMT.js} +1 -1
  60. package/dist/{chunk-DX46HM7S.js → chunk-PID3C4B7.js} +1 -1
  61. package/dist/{chunk-MXGME7NG.js → chunk-Q6EZEVXE.js} +1 -1
  62. package/dist/{chunk-J7V7TYX7.js → chunk-QLVTMPFW.js} +2 -2
  63. package/dist/{chunk-MNLQY5WG.js → chunk-QWNDNZJ3.js} +2 -2
  64. package/dist/{chunk-HSOZSLIZ.js → chunk-SDXMG4VX.js} +1064 -873
  65. package/dist/{chunk-WHN4RF2Y.js → chunk-T7OH3YPX.js} +395 -362
  66. package/dist/{chunk-3IC7PRTW.js → chunk-TA4L7U2M.js} +1 -1
  67. package/dist/{chunk-ZX4TZNP4.js → chunk-UG7TZJIG.js} +1 -1
  68. package/dist/{chunk-ZEWOPHTA.js → chunk-USHY3SH6.js} +62 -1
  69. package/dist/{chunk-VBM6T5ZP.js → chunk-WNDBACO7.js} +25 -3
  70. package/dist/{chunk-WE6FSG7J.js → chunk-WYMBWCG5.js} +3 -1
  71. package/dist/{chunk-Y35D3ZCH.js → chunk-XCEA5OMI.js} +2 -2
  72. package/dist/{chunk-KAGMYJYG.js → chunk-YB2GAK32.js} +5 -5
  73. package/dist/{chunk-IK3PYAQU.js → chunk-YFZHRYCM.js} +94 -21
  74. package/dist/{chunk-YW2IQEWS.js → chunk-ZV6PMFF4.js} +1 -1
  75. package/dist/{citations-ZZ6ODCGZ.js → citations-WX4VO6ZI.js} +3 -3
  76. package/dist/{cli-catalog-HEX47BKL.js → cli-catalog-BTRNR2UP.js} +3 -3
  77. package/dist/{cli-commands-6OLN355M.js → cli-commands-EXWAMK7Z.js} +7 -7
  78. package/dist/cli.js +13 -13
  79. package/dist/{competitor-6MRHORU2.js → competitor-HZRZWCEN.js} +3 -3
  80. package/dist/{content-S2UOGTLN.js → content-NOZDHI3M.js} +3 -3
  81. package/dist/{dashboard-J4H3FVKH.js → dashboard-TZLWHXP4.js} +6 -6
  82. package/dist/{demo-7PJJQMLO.js → demo-2PYBQD47.js} +1 -1
  83. package/dist/{demo-server-55I5LNNS.js → demo-server-JEQNGMMV.js} +12 -12
  84. package/dist/{discover-O4NFDHGP.js → discover-A2XFXHOC.js} +3 -3
  85. package/dist/{discover-eval-PE2MW42B.js → discover-eval-A6SBUYXF.js} +3 -3
  86. package/dist/{doctor-GT4MMJQJ.js → doctor-GZACELPF.js} +3 -3
  87. package/dist/{evidence-Z344KVJX.js → evidence-RVFMUWIL.js} +3 -3
  88. package/dist/{export-cmd-Z6WWLI6H.js → export-cmd-X2TFZGNJ.js} +3 -3
  89. package/dist/{ga-SXIGAF5F.js → ga-TOT3V67A.js} +3 -3
  90. package/dist/{gbp-CSLWSEKF.js → gbp-KP4YZU6S.js} +3 -3
  91. package/dist/{google-EAQJ46AR.js → google-GCFSTV5N.js} +4 -4
  92. package/dist/{google-marketing-NVKB4NLG.js → google-marketing-ANS65KQN.js} +1 -1
  93. package/dist/{health-cmd-6IYRMZS3.js → health-cmd-UKMNLU6D.js} +3 -3
  94. package/dist/{history-KLZI7IKJ.js → history-TWGYSAZZ.js} +3 -3
  95. package/dist/index.d.ts +395 -37
  96. package/dist/index.js +25 -25
  97. package/dist/{init-LFLCM6KJ.js → init-2WZWYSDW.js} +12 -12
  98. package/dist/{insights-C7NN64E2.js → insights-7IOC7WIR.js} +3 -3
  99. package/dist/intelligence-service-42Q3OVI5.js +16 -0
  100. package/dist/{journeys-C34YDOM6.js → journeys-NWKT45PT.js} +3 -3
  101. package/dist/{keys-4RDLFHXO.js → keys-ZZYZUHUK.js} +3 -3
  102. package/dist/{keyword-BZEJEYAG.js → keyword-F6EIX5KM.js} +3 -3
  103. package/dist/{logs-5FPZRSZM.js → logs-B45FXS6E.js} +3 -3
  104. package/dist/{mcp-574UA5Y3.js → mcp-WPNCNWA5.js} +4 -4
  105. package/dist/mcp.js +9 -9
  106. package/dist/{measurement-plan-2H4KHD2Y.js → measurement-plan-QT5HJ3KC.js} +5 -5
  107. package/dist/{notify-TFXL4CSH.js → notify-Z3LIF3SO.js} +3 -3
  108. package/dist/{organic-evidence-R55KSYFN.js → organic-evidence-R5TM7XUB.js} +3 -3
  109. package/dist/{overview-NJTCLHAB.js → overview-6TZHJLQN.js} +4 -4
  110. package/dist/{project-PV36DZDG.js → project-VMPVOQ2A.js} +3 -3
  111. package/dist/{query-5SVITJ4K.js → query-EXSH5QP7.js} +3 -3
  112. package/dist/{research-JSET5FNY.js → research-6R6BEL4X.js} +3 -3
  113. package/dist/{results-export-5EFMXTPG.js → results-export-ZJRL3ECU.js} +3 -3
  114. package/dist/{run-NOSOG3YH.js → run-C4VXAJE3.js} +4 -4
  115. package/dist/{schedule-I3ACQC2C.js → schedule-KC6ETWMO.js} +3 -3
  116. package/dist/{search-EE53K7J5.js → search-SUR6BEQD.js} +3 -3
  117. package/dist/{serve-SDU77HVC.js → serve-VVG3VYMU.js} +26 -26
  118. package/dist/{session-FYZCUPVX.js → session-D42KUKCZ.js} +13 -13
  119. package/dist/{settings-CEI7EKPO.js → settings-LTCG3D5B.js} +3 -3
  120. package/dist/sitemaps-YMTZLF5S.js +46 -0
  121. package/dist/{skills-TRTFFZU3.js → skills-THMG3L64.js} +2 -2
  122. package/dist/{snapshot-2RXVTDTZ.js → snapshot-ZEVB3EE4.js} +3 -3
  123. package/dist/{src-DYJHW2HG.js → src-HPVSTXVF.js} +6 -2
  124. package/dist/{status-2VHBSIRY.js → status-LPCPTWKO.js} +4 -4
  125. package/dist/{technical-aeo-3OMGT4ZT.js → technical-aeo-J6LNT45B.js} +3 -3
  126. package/dist/{telemetry-5F4EHGR2.js → telemetry-BPY34GDV.js} +4 -4
  127. package/dist/{tools-C3IIMXBJ.js → tools-K3G43ESI.js} +11 -11
  128. package/dist/{traffic-S3VUYBG6.js → traffic-BOIFAPAR.js} +5 -5
  129. package/dist/{trends-RQ4B2QWA.js → trends-A2MDRSQQ.js} +3 -3
  130. package/dist/{users-T6OOG5YB.js → users-VJOQODJK.js} +3 -3
  131. package/dist/{visibility-stats-2O24MQCV.js → visibility-stats-YNMJYASA.js} +3 -3
  132. package/dist/{wordpress-SDENOBFI.js → wordpress-BWG6D7VH.js} +3 -3
  133. package/package.json +1 -1
  134. package/assets/assets/MeasurementPropertyPage-CTZzlHWE.js +0 -4
  135. package/assets/assets/ProjectPage-D79zuY-M.js +0 -11
  136. package/assets/assets/SettingsPage-BOQgT_7N.js +0 -1
  137. package/assets/assets/SiteHealthSection-G3_MShnD.js +0 -2
  138. package/assets/assets/index-y0Wx0ZWq.js +0 -60
  139. package/assets/assets/query-client-Dm_GqsTu.js +0 -1
  140. package/assets/assets/react-query-BwhgbuS1.js +0 -1
  141. package/dist/intelligence-service-ENI35JFR.js +0 -16
@@ -1,26 +1,26 @@
1
1
  import {
2
2
  trackCliConnection
3
- } from "./chunk-J7V7TYX7.js";
3
+ } from "./chunk-QLVTMPFW.js";
4
4
  import {
5
5
  outcomeFailure
6
- } from "./chunk-RE24YYIY.js";
7
- import "./chunk-WPTCWNA6.js";
6
+ } from "./chunk-DZO6CATO.js";
7
+ import "./chunk-AFYKUX2X.js";
8
8
  import {
9
9
  createApiClient
10
- } from "./chunk-TCANF22P.js";
10
+ } from "./chunk-F6WNKKGG.js";
11
11
  import {
12
12
  loadConfig,
13
13
  saveConfigPatch
14
- } from "./chunk-A6DKZ4KQ.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-YW2IQEWS.js";
20
+ import "./chunk-ZV6PMFF4.js";
21
21
  import {
22
22
  describeError
23
- } from "./chunk-YKLYWVLL.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-WE6FSG7J.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-YKLYWVLL.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-HEX47BKL.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-YKLYWVLL.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-TCANF22P.js";
10
+ } from "./chunk-F6WNKKGG.js";
11
11
  import {
12
12
  canonryMcpTools,
13
13
  mcpOutputSchema,
14
14
  toolOperationAccess
15
- } from "./chunk-VBM6T5ZP.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-YKLYWVLL.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-A6DKZ4KQ.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-YKLYWVLL.js";
21
+ } from "./chunk-ETIIPSWL.js";
22
22
 
23
23
  // src/runtime-context.ts
24
24
  function cliRuntimeContext(env = process.env, stdio = process) {
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  registeredProviderNames
3
- } from "./chunk-3H5VURTU.js";
3
+ } from "./chunk-LQWMNDZR.js";
4
4
  import {
5
5
  configExists,
6
6
  loadConfigRaw
7
- } from "./chunk-A6DKZ4KQ.js";
7
+ } from "./chunk-OOVWMWMT.js";
8
8
 
9
9
  // src/setup-state.ts
10
10
  import fs from "fs";
@@ -28,7 +28,7 @@ async function buildSetupState() {
28
28
  }
29
29
  if (dbPath && fs.existsSync(dbPath)) {
30
30
  try {
31
- const { createClient, projects, queries: queriesTable } = await import("./src-DYJHW2HG.js");
31
+ const { createClient, projects, queries: queriesTable } = await import("./src-HPVSTXVF.js");
32
32
  const db = createClient(dbPath);
33
33
  project_count = db.select({ id: projects.id }).from(projects).all().length;
34
34
  const firstQuery = db.select({ id: queriesTable.id }).from(queriesTable).limit(1).all();
@@ -47,7 +47,7 @@ function queueServeHandoff() {
47
47
  async function runPendingServeHandoff(format) {
48
48
  if (!pendingServeHandoff) return;
49
49
  pendingServeHandoff = false;
50
- const { serveCommand } = await import("./serve-SDU77HVC.js");
50
+ const { serveCommand } = await import("./serve-VVG3VYMU.js");
51
51
  await serveCommand(format);
52
52
  }
53
53
 
@@ -1,16 +1,16 @@
1
1
  import {
2
2
  runWithUsageTags
3
- } from "./chunk-TCANF22P.js";
3
+ } from "./chunk-F6WNKKGG.js";
4
4
  import {
5
5
  CanonryMcpToolNames,
6
6
  canonryMcpTools
7
- } from "./chunk-VBM6T5ZP.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-HSOZSLIZ.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-YKLYWVLL.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-WPTCWNA6.js";
5
+ } from "./chunk-AFYKUX2X.js";
6
6
  import {
7
7
  getConfigDir
8
- } from "./chunk-A6DKZ4KQ.js";
8
+ } from "./chunk-OOVWMWMT.js";
9
9
  import {
10
10
  currentOutcomeAttribution
11
- } from "./chunk-YW2IQEWS.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-YKLYWVLL.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))
@@ -26541,6 +26542,8 @@ var UI_ACTIONS = [
26541
26542
  "traffic.sync",
26542
26543
  /** A Bing data sync was queued from the dashboard. */
26543
26544
  "bing.sync",
26545
+ /** A sitemap was submitted to Google or Bing from the dashboard (`integration` says which). */
26546
+ "sitemap.submit",
26544
26547
  "journeys.visitor_open",
26545
26548
  "journeys.visit_open",
26546
26549
  "journeys.agent_open",
@@ -27326,6 +27329,68 @@ function compareSeoKeywordGapsBy(sort) {
27326
27329
  }
27327
27330
  }
27328
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
+
27329
27394
  export {
27330
27395
  GBP_POSTS_WRITE_SCOPE,
27331
27396
  GBP_LIVE_READ_SCOPE,
@@ -28658,5 +28723,7 @@ export {
28658
28723
  countMarketRankings,
28659
28724
  groupMarketRankings,
28660
28725
  compareSeoCompetitorsBy,
28661
- compareSeoKeywordGapsBy
28726
+ compareSeoKeywordGapsBy,
28727
+ sitemapCoverageResponseDtoSchema,
28728
+ bingSubmitSitemapResponseDtoSchema
28662
28729
  };
@@ -4,14 +4,14 @@ import {
4
4
  } from "./chunk-VJWDBFSL.js";
5
5
  import {
6
6
  createApiClient
7
- } from "./chunk-TCANF22P.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-YKLYWVLL.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-A6DKZ4KQ.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-YKLYWVLL.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-YKLYWVLL.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-4INNOSWU.js";
11
+ } from "./chunk-I7DAEE3L.js";
12
12
  import {
13
13
  loadConfig
14
- } from "./chunk-A6DKZ4KQ.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-DPKA5CWK.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-HSOZSLIZ.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-ZEWOPHTA.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-YKLYWVLL.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-ENI35JFR.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-Y35D3ZCH.js";
3
+ } from "./chunk-XCEA5OMI.js";
4
4
  import {
5
5
  addLikelyFakeAgentHits,
6
6
  correctBackgroundCallJourneys,
7
7
  mergeSplitJourneyVisitors,
8
8
  writeUnrecognizedAgentBuckets
9
- } from "./chunk-HSOZSLIZ.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-VL4AZGUA.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-ZEWOPHTA.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-YKLYWVLL.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-TCANF22P.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-DX46HM7S.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-YKLYWVLL.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-YKLYWVLL.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-A6DKZ4KQ.js";
5
+ } from "./chunk-OOVWMWMT.js";
6
6
  import {
7
7
  BUNDLED_SKILL_NAMES,
8
8
  installSkills
9
- } from "./chunk-MXGME7NG.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-YKLYWVLL.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-ZEWOPHTA.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-YKLYWVLL.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-GDEYX6E3.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-A6DKZ4KQ.js";
26
+ } from "./chunk-OOVWMWMT.js";
27
27
  import {
28
28
  CanonryMcpToolNames,
29
29
  canonryMcpTools
30
- } from "./chunk-VBM6T5ZP.js";
30
+ } from "./chunk-WNDBACO7.js";
31
31
  import {
32
32
  createLogger
33
- } from "./chunk-Y35D3ZCH.js";
33
+ } from "./chunk-XCEA5OMI.js";
34
34
  import {
35
35
  agentToolEvents,
36
36
  llmUsageEvents
37
- } from "./chunk-ZEWOPHTA.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-YKLYWVLL.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-YKLYWVLL.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-YKLYWVLL.js";
23
+ } from "./chunk-ETIIPSWL.js";
24
24
 
25
25
  // ../config/src/index.ts
26
26
  import { z as z5 } from "zod";
@@ -23,7 +23,7 @@ import {
23
23
  measurementDraftUpsertGroupRequestSchema,
24
24
  measurementDraftUpsertMarketRequestSchema,
25
25
  measurementDraftUpsertTargetRequestSchema
26
- } from "./chunk-YKLYWVLL.js";
26
+ } from "./chunk-ETIIPSWL.js";
27
27
 
28
28
  // src/measurement-draft-actions.ts
29
29
  import { z } from "zod";