@canonry/canonry 7.86.0 → 7.87.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 (143) hide show
  1. package/assets/agent-workspace/skills/canonry/references/canonry-cli.md +21 -1
  2. package/assets/agent-workspace/skills/canonry/references/server-side-traffic.md +10 -6
  3. package/assets/assets/{AgentSetupPage-0f7Ca4IZ.js → AgentSetupPage-_ZP3F_zA.js} +4 -4
  4. package/assets/assets/{AuditHistoryPanel-BAQuFTNl.js → AuditHistoryPanel-9B0XpYsN.js} +1 -1
  5. package/assets/assets/{BacklinksPage-BK2bn9Xg.js → BacklinksPage-CsvVgXTZ.js} +1 -1
  6. package/assets/assets/{ChartPrimitives-B5L9FUj3.js → ChartPrimitives-4D5wgAn5.js} +1 -1
  7. package/assets/assets/{HistoryPage-ZBfL9nGw.js → HistoryPage-BCxpCul0.js} +1 -1
  8. package/assets/assets/{MeasurementPropertyPage-DDSOq4aU.js → MeasurementPropertyPage-BObvWjVx.js} +4 -4
  9. package/assets/assets/ProjectPage-y378tOaT.js +11 -0
  10. package/assets/assets/{RunsPage-ke0wMYLg.js → RunsPage-CfQ_kqlu.js} +1 -1
  11. package/assets/assets/{SettingsPage-Bbi-sTBk.js → SettingsPage-PIgRvqJc.js} +1 -1
  12. package/assets/assets/SiteHealthSection-DuUE1cB0.js +2 -0
  13. package/assets/assets/ToneBadge-BgTLSTKp.js +60 -0
  14. package/assets/assets/{TrafficPage-nXixENx9.js → TrafficPage-B_YunwjH.js} +1 -1
  15. package/assets/assets/TrafficSourceDetailPage-C51W87fU.js +1 -0
  16. package/assets/assets/{account-context-BmN431xn.js → account-context-CVjb3ZSn.js} +1 -1
  17. package/assets/assets/agent-trust-copy-BlpC8jo5.js +1 -0
  18. package/assets/assets/{card-DUTMWeHB.js → card-BnVez9nG.js} +1 -1
  19. package/assets/assets/{extract-error-message-BFaIHLqb.js → extract-error-message-Dqirbrl0.js} +1 -1
  20. package/assets/assets/{format-helpers-D1w2yznw.js → format-helpers-DVXZD864.js} +1 -1
  21. package/assets/assets/{index-DIHdWY7b.css → index-BOUrrC9J.css} +1 -1
  22. package/assets/assets/index-CsvEqhK4.js +60 -0
  23. package/assets/assets/query-client-CVc7wMKJ.js +1 -0
  24. package/assets/assets/react-query-CSlTSOjz.js +1 -0
  25. package/assets/assets/{react-sigma_core.esm.min-cvMDhRNS.js → react-sigma_core.esm.min-CVfGIEIE.js} +3 -3
  26. package/assets/assets/{service-CvCKbPnf.js → service-BGqeyqhZ.js} +1 -1
  27. package/assets/index.html +9 -9
  28. package/dist/{ads-7IJTHW6T.js → ads-ZUZWSIBV.js} +3 -3
  29. package/dist/{agent-4UC2X7O2.js → agent-YDS3WY7B.js} +7 -7
  30. package/dist/{agent-ask-SVPU2WQU.js → agent-ask-7VUPXTXL.js} +3 -3
  31. package/dist/{agent-conversations-PJQRY5RX.js → agent-conversations-WPEBK3BS.js} +3 -3
  32. package/dist/{agent-journeys-JOD5DQ6G.js → agent-journeys-H5CCYLNB.js} +3 -3
  33. package/dist/{agent-memory-KTMZMUYF.js → agent-memory-CNPKPIWD.js} +3 -3
  34. package/dist/{agent-providers-VEBB3WEW.js → agent-providers-U7FLJO5I.js} +3 -3
  35. package/dist/{agent-transcript-RRZJCMK2.js → agent-transcript-VY3BQNPU.js} +3 -3
  36. package/dist/{analytics-EZV4XJKR.js → analytics-PYUNO7C2.js} +3 -3
  37. package/dist/{apply-NP7ORQS4.js → apply-YNBEYC2G.js} +3 -3
  38. package/dist/{backfill-7T6VFPWT.js → backfill-PNHBAV5N.js} +10 -10
  39. package/dist/{backlinks-KTEJM2IP.js → backlinks-LVHZ2MQ7.js} +3 -3
  40. package/dist/{bing-TC54HJUB.js → bing-A2MUG6AV.js} +3 -3
  41. package/dist/{bootstrap-UDSN22NT.js → bootstrap-AZYQXBHN.js} +10 -10
  42. package/dist/{cdp-IZSHF3MS.js → cdp-HCYY4SXR.js} +7 -7
  43. package/dist/{chunk-IILPHGRC.js → chunk-2AXFKYJU.js} +2 -2
  44. package/dist/{chunk-U3QNTJBP.js → chunk-2FJB3CSS.js} +1 -1
  45. package/dist/{chunk-HHMOUS26.js → chunk-2I22IUA3.js} +5 -5
  46. package/dist/{chunk-KEIKD6JQ.js → chunk-3KK6FWDF.js} +1 -1
  47. package/dist/{chunk-STHWLBYT.js → chunk-4FWDITQG.js} +1 -1
  48. package/dist/{chunk-3K3QBKNC.js → chunk-4LNZTL7M.js} +3 -3
  49. package/dist/{chunk-Z5LJI5XK.js → chunk-6F5ULQDY.js} +4 -4
  50. package/dist/{chunk-OXI45LZP.js → chunk-BJHHD7VE.js} +2 -2
  51. package/dist/{chunk-TTXBQCE6.js → chunk-BKZ6PQAE.js} +21 -21
  52. package/dist/{chunk-EX6GVZAE.js → chunk-CBWGUGME.js} +2 -1
  53. package/dist/{chunk-LJ6VNMCY.js → chunk-CR54BCUP.js} +7 -7
  54. package/dist/{chunk-CBNFWSWU.js → chunk-DOPUEXMC.js} +2 -2
  55. package/dist/{chunk-RI2ZT3OR.js → chunk-ECZGTJIQ.js} +6 -6
  56. package/dist/{chunk-KUVTXIFX.js → chunk-F643WELJ.js} +1913 -1743
  57. package/dist/{chunk-5WEGX3H7.js → chunk-FAMCDCVK.js} +1 -1
  58. package/dist/{chunk-5ZAQVRFL.js → chunk-G44S34CE.js} +2 -2
  59. package/dist/{chunk-UTG6UUGK.js → chunk-GBWCEOZR.js} +1 -1
  60. package/dist/{chunk-E6IZVSRY.js → chunk-GDU6IMGB.js} +2 -2
  61. package/dist/{chunk-RR76O744.js → chunk-GXTCDNX7.js} +1 -1
  62. package/dist/{chunk-JAK37YKH.js → chunk-IBGZ6D6R.js} +2 -2
  63. package/dist/{chunk-WVMWY4SE.js → chunk-ICS2WJ7H.js} +3 -3
  64. package/dist/{chunk-2J5EUXO2.js → chunk-IK7QEKKD.js} +1 -1
  65. package/dist/{chunk-X3EU4UPS.js → chunk-INH773FB.js} +3 -3
  66. package/dist/{chunk-5KHF5FV5.js → chunk-J7ITGXCS.js} +4 -4
  67. package/dist/{chunk-BLGYC2K7.js → chunk-JAYUWQAV.js} +1 -1
  68. package/dist/{chunk-GO4RP6XE.js → chunk-JDTKG7KJ.js} +7 -3
  69. package/dist/{chunk-F5SQITTJ.js → chunk-MNLAIB67.js} +1 -1
  70. package/dist/{chunk-SUSQEH2D.js → chunk-O26FQ7RI.js} +1 -1
  71. package/dist/{chunk-4EKPEVJ2.js → chunk-RHOIR5QY.js} +5 -5
  72. package/dist/{chunk-UPFWF6TF.js → chunk-RSPOFH66.js} +4 -4
  73. package/dist/{chunk-VBW33U4E.js → chunk-TEQF4ZJA.js} +22 -2
  74. package/dist/{chunk-AZP37FMA.js → chunk-TN53B5AB.js} +28 -3
  75. package/dist/{chunk-ZFL5DOGJ.js → chunk-UXSWQAVZ.js} +395 -342
  76. package/dist/{chunk-MJE3SGFW.js → chunk-VDYXB6SV.js} +1 -1
  77. package/dist/{chunk-DU4QEC65.js → chunk-W7DHXSXN.js} +281 -53
  78. package/dist/{citations-TOZK6OFP.js → citations-3EZTHA65.js} +3 -3
  79. package/dist/{cli-catalog-LNWBJNOD.js → cli-catalog-CBTM3JKP.js} +3 -3
  80. package/dist/{cli-commands-3HX4JSDX.js → cli-commands-62QECRBV.js} +7 -7
  81. package/dist/cli.js +13 -13
  82. package/dist/{competitor-54HLL354.js → competitor-VH4TXJLT.js} +3 -3
  83. package/dist/{content-ZIGSMH5U.js → content-TSMNHXJZ.js} +3 -3
  84. package/dist/{dashboard-YJH6IQGK.js → dashboard-4HOXCUQE.js} +6 -6
  85. package/dist/{demo-ZYK5XCP3.js → demo-IY7Y7KR3.js} +1 -1
  86. package/dist/{demo-server-LZ6MWJ2S.js → demo-server-BLLSDILQ.js} +13 -12
  87. package/dist/{discover-22QKOFIM.js → discover-XTJXTKCI.js} +3 -3
  88. package/dist/{discover-eval-6IFCCH2S.js → discover-eval-IVQI5YEW.js} +3 -3
  89. package/dist/{doctor-WLLBFOJU.js → doctor-SJ4SHSQO.js} +3 -3
  90. package/dist/{evidence-7VHTWNZW.js → evidence-C6T556YH.js} +3 -3
  91. package/dist/{export-cmd-5RZ3QDFH.js → export-cmd-JQZ5ZRSI.js} +3 -3
  92. package/dist/{ga-LPI3CWY4.js → ga-W2WHVRHN.js} +3 -3
  93. package/dist/{gbp-YBOMWR75.js → gbp-3AZIV5WF.js} +3 -3
  94. package/dist/{google-N42X5FBH.js → google-3CKWPZT7.js} +4 -4
  95. package/dist/{google-marketing-SO4B7Z7L.js → google-marketing-PJBGQYYW.js} +1 -1
  96. package/dist/{health-cmd-W7RQWCEB.js → health-cmd-4JTQMCXM.js} +3 -3
  97. package/dist/{history-SDRTOIDZ.js → history-TXUJFEO2.js} +3 -3
  98. package/dist/index.js +25 -25
  99. package/dist/{init-DPXOGP3P.js → init-JY76QAOC.js} +12 -12
  100. package/dist/{insights-636LLPVG.js → insights-XZQO4B45.js} +3 -3
  101. package/dist/intelligence-service-GJYBEHJE.js +16 -0
  102. package/dist/{journeys-NIXKVYA4.js → journeys-VFIV5JYV.js} +3 -3
  103. package/dist/{keys-U2JR56TX.js → keys-PV23G4LW.js} +3 -3
  104. package/dist/{keyword-GLRK2ZHR.js → keyword-D76KBIV5.js} +3 -3
  105. package/dist/{logs-ENACGWGS.js → logs-DYDZ6IEJ.js} +3 -3
  106. package/dist/{mcp-DST2XTP2.js → mcp-GAR5LDQD.js} +4 -4
  107. package/dist/mcp.js +9 -9
  108. package/dist/{measurement-plan-Y3SA4ZQC.js → measurement-plan-K24EOGMI.js} +5 -5
  109. package/dist/{notify-ZYXJQUHU.js → notify-XQHMPDQQ.js} +3 -3
  110. package/dist/{organic-evidence-NSX7VCNW.js → organic-evidence-UHHE7AO4.js} +3 -3
  111. package/dist/{overview-UO6Z64IT.js → overview-AUZ3XRS5.js} +4 -4
  112. package/dist/{project-BHXUPHQA.js → project-FUCPU2BD.js} +3 -3
  113. package/dist/{query-GDRAKEN5.js → query-HRMSXDKL.js} +3 -3
  114. package/dist/{research-YIOQ7WVP.js → research-R23XLZJ3.js} +3 -3
  115. package/dist/{results-export-KXMCAEHJ.js → results-export-N6IV3KG4.js} +3 -3
  116. package/dist/{run-6PN5GOVE.js → run-CJLG5EXH.js} +4 -4
  117. package/dist/{schedule-5B67GLAM.js → schedule-IPDCQ2I5.js} +3 -3
  118. package/dist/{search-BMVPCN2V.js → search-ZU4AKJ76.js} +3 -3
  119. package/dist/{serve-HB7DI7OC.js → serve-ZQXMTDE7.js} +26 -26
  120. package/dist/{session-3RTDTW6Z.js → session-MGOUDLXN.js} +13 -13
  121. package/dist/{settings-FJEYHYRH.js → settings-4FS5NRKP.js} +3 -3
  122. package/dist/{skills-6E7IUQUO.js → skills-GSFHACGN.js} +2 -2
  123. package/dist/{snapshot-BJQ7WPJZ.js → snapshot-4NUVPDK3.js} +3 -3
  124. package/dist/{src-QU75IDHI.js → src-SJYGA7NH.js} +2 -2
  125. package/dist/{status-3GHFPN54.js → status-ASBLMFP2.js} +4 -4
  126. package/dist/{technical-aeo-76JRC66W.js → technical-aeo-QXHRBGYY.js} +3 -3
  127. package/dist/{telemetry-KB73JBDZ.js → telemetry-J2I577I3.js} +4 -4
  128. package/dist/{tools-6VWDHNPZ.js → tools-ZWFLE5UR.js} +11 -11
  129. package/dist/{traffic-XB7MZJ23.js → traffic-B7Q4WPOV.js} +5 -5
  130. package/dist/trends-YOLCJBNM.js +56 -0
  131. package/dist/{users-HYBG3J72.js → users-LPSCZV3M.js} +3 -3
  132. package/dist/{visibility-stats-ZDB2LMRJ.js → visibility-stats-JJQTZSSK.js} +3 -3
  133. package/dist/{wordpress-SXKR6XNT.js → wordpress-4IKDT5KT.js} +3 -3
  134. package/package.json +1 -1
  135. package/assets/assets/ProjectPage-8cVgOm5o.js +0 -11
  136. package/assets/assets/SiteHealthSection-eKxTDUE2.js +0 -2
  137. package/assets/assets/ToneBadge-WAMyKadz.js +0 -60
  138. package/assets/assets/TrafficSourceDetailPage-ir5zJU_l.js +0 -1
  139. package/assets/assets/agent-trust-copy-zfx8m-cx.js +0 -1
  140. package/assets/assets/index-C5r0VqgO.js +0 -60
  141. package/assets/assets/query-client-DrIawr39.js +0 -1
  142. package/assets/assets/react-query-DQuOVjDi.js +0 -1
  143. package/dist/intelligence-service-JRVESWU2.js +0 -16
@@ -15,7 +15,7 @@ import {
15
15
  formatCanonryPluginUpdateHint,
16
16
  formatCanonryPluginVersionMismatch,
17
17
  skillsClientSchema
18
- } from "./chunk-KUVTXIFX.js";
18
+ } from "./chunk-F643WELJ.js";
19
19
 
20
20
  // src/commands/skills.ts
21
21
  import crypto from "crypto";
@@ -5,7 +5,7 @@ import {
5
5
  siteCrawlGraphNodes,
6
6
  siteCrawlPages,
7
7
  siteCrawlSnapshots
8
- } from "./chunk-SUSQEH2D.js";
8
+ } from "./chunk-O26FQ7RI.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-KUVTXIFX.js";
18
+ } from "./chunk-F643WELJ.js";
19
19
 
20
20
  // src/site-audit-factors.ts
21
21
  function recordedSharePct(factor) {
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  USAGE_TELEMETRY_HEADERS,
3
3
  redactLogString
4
- } from "./chunk-KUVTXIFX.js";
4
+ } from "./chunk-F643WELJ.js";
5
5
 
6
6
  // ../api-routes/src/request-context.ts
7
7
  import { AsyncLocalStorage } from "async_hooks";
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  trackIntegrationConnection
3
- } from "./chunk-Z5LJI5XK.js";
3
+ } from "./chunk-6F5ULQDY.js";
4
4
  import {
5
5
  cliRuntimeContext
6
- } from "./chunk-CBNFWSWU.js";
6
+ } from "./chunk-DOPUEXMC.js";
7
7
 
8
8
  // src/cli-connection-telemetry.ts
9
9
  function trackCliConnection(properties) {
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-HGMYEDAQ.js";
5
5
  import {
6
6
  describeError
7
- } from "./chunk-KUVTXIFX.js";
7
+ } from "./chunk-F643WELJ.js";
8
8
 
9
9
  // src/gsc-sitemap-submission.ts
10
10
  function dedupeGscSitemapUrls(urls) {
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  getRequestContext
3
- } from "./chunk-UTG6UUGK.js";
3
+ } from "./chunk-GBWCEOZR.js";
4
4
  import {
5
5
  diagnosticIdentity,
6
6
  redactLogString,
7
7
  redactLogValue
8
- } from "./chunk-KUVTXIFX.js";
8
+ } from "./chunk-F643WELJ.js";
9
9
 
10
10
  // ../api-routes/src/runtime-logger.ts
11
11
  import { format } from "util";
@@ -7,12 +7,12 @@ import {
7
7
  import {
8
8
  createApiClient,
9
9
  runWithUsageTags
10
- } from "./chunk-VBW33U4E.js";
10
+ } from "./chunk-TEQF4ZJA.js";
11
11
  import {
12
12
  canonryMcpTools,
13
13
  mcpOutputSchema,
14
14
  toolOperationAccess
15
- } from "./chunk-AZP37FMA.js";
15
+ } from "./chunk-TN53B5AB.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-KUVTXIFX.js";
28
+ } from "./chunk-F643WELJ.js";
29
29
 
30
30
  // src/mcp/server.ts
31
31
  import { randomUUID } from "crypto";
@@ -28,7 +28,7 @@ import {
28
28
  unknownUsageObservation,
29
29
  usdToMicros,
30
30
  withRetry
31
- } from "./chunk-KUVTXIFX.js";
31
+ } from "./chunk-F643WELJ.js";
32
32
 
33
33
  // ../provider-answer-services/src/core/http.ts
34
34
  var MAX_RESPONSE_BYTES = 8 * 1024 * 1024;
@@ -2,18 +2,18 @@ import {
2
2
  configExists,
3
3
  loadConfigRaw,
4
4
  saveConfigPatch
5
- } from "./chunk-U3QNTJBP.js";
5
+ } from "./chunk-2FJB3CSS.js";
6
6
  import {
7
7
  BUNDLED_SKILL_NAMES,
8
8
  installSkills
9
- } from "./chunk-5WEGX3H7.js";
9
+ } from "./chunk-FAMCDCVK.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-KUVTXIFX.js";
16
+ } from "./chunk-F643WELJ.js";
17
17
 
18
18
  // src/skills-autosync.ts
19
19
  import fs from "fs";
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  registeredProviderNames
3
- } from "./chunk-KEIKD6JQ.js";
3
+ } from "./chunk-3KK6FWDF.js";
4
4
  import {
5
5
  configExists,
6
6
  loadConfigRaw
7
- } from "./chunk-U3QNTJBP.js";
7
+ } from "./chunk-2FJB3CSS.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-QU75IDHI.js");
31
+ const { createClient, projects, queries: queriesTable } = await import("./src-SJYGA7NH.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-HB7DI7OC.js");
50
+ const { serveCommand } = await import("./serve-ZQXMTDE7.js");
51
51
  await serveCommand(format);
52
52
  }
53
53
 
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  hostMatchesDomain
3
- } from "./chunk-KUVTXIFX.js";
3
+ } from "./chunk-F643WELJ.js";
4
4
 
5
5
  // src/citation-utils.ts
6
6
  function pickProjectCitedDomain(citedDomains, projectDomains) {
@@ -3,7 +3,7 @@ import {
3
3
  resolveCliAccess,
4
4
  resolveCliAccessForInvocation,
5
5
  windowOptions
6
- } from "./chunk-EX6GVZAE.js";
6
+ } from "./chunk-CBWGUGME.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-KUVTXIFX.js";
17
+ } from "./chunk-F643WELJ.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-LNWBJNOD.js");
114
+ const { printCliCatalog: printCliCatalog2 } = await import("./cli-catalog-CBTM3JKP.js");
115
115
  const group2 = argsWithoutHelp.find((arg) => !arg.startsWith("--"));
116
116
  printCliCatalog2(specs, fallbackFormat, group2, accessValue);
117
117
  return true;
@@ -414,6 +414,10 @@ var CLI_ROOT_SUMMARIES = {
414
414
  "section": "Monitoring",
415
415
  "summary": "Show stored mention and citation statistics"
416
416
  },
417
+ "trends": {
418
+ "section": "Monitoring",
419
+ "summary": "Show the stored figures behind a dashboard trend card"
420
+ },
417
421
  "visibility-compare": {
418
422
  "section": "Monitoring",
419
423
  "summary": "Compare stored mention and citation results"
@@ -23,7 +23,7 @@ import {
23
23
  measurementDraftUpsertGroupRequestSchema,
24
24
  measurementDraftUpsertMarketRequestSchema,
25
25
  measurementDraftUpsertTargetRequestSchema
26
- } from "./chunk-KUVTXIFX.js";
26
+ } from "./chunk-F643WELJ.js";
27
27
 
28
28
  // src/measurement-draft-actions.ts
29
29
  import { z } from "zod";
@@ -20,7 +20,7 @@ import {
20
20
  templateLinkRatio,
21
21
  templateLinkUbiquityAvailable,
22
22
  validationError
23
- } from "./chunk-KUVTXIFX.js";
23
+ } from "./chunk-F643WELJ.js";
24
24
  import {
25
25
  __export
26
26
  } from "./chunk-MLKGABMK.js";
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  createLogger
3
- } from "./chunk-JAK37YKH.js";
3
+ } from "./chunk-IBGZ6D6R.js";
4
4
  import {
5
5
  addLikelyFakeAgentHits,
6
6
  correctBackgroundCallJourneys,
7
7
  mergeSplitJourneyVisitors,
8
8
  writeUnrecognizedAgentBuckets
9
- } from "./chunk-DU4QEC65.js";
9
+ } from "./chunk-W7DHXSXN.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-MJE3SGFW.js";
26
+ } from "./chunk-VDYXB6SV.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-SUSQEH2D.js";
39
+ } from "./chunk-O26FQ7RI.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-KUVTXIFX.js";
72
+ } from "./chunk-F643WELJ.js";
73
73
 
74
74
  // ../provider-openai/src/normalize.ts
75
75
  import OpenAI from "openai";
@@ -1,16 +1,16 @@
1
1
  import {
2
2
  runWithUsageTags
3
- } from "./chunk-VBW33U4E.js";
3
+ } from "./chunk-TEQF4ZJA.js";
4
4
  import {
5
5
  CanonryMcpToolNames,
6
6
  canonryMcpTools
7
- } from "./chunk-AZP37FMA.js";
7
+ } from "./chunk-TN53B5AB.js";
8
8
  import {
9
9
  CliError
10
10
  } from "./chunk-HGMYEDAQ.js";
11
11
  import {
12
12
  buildOpenApiDocument
13
- } from "./chunk-DU4QEC65.js";
13
+ } from "./chunk-W7DHXSXN.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-KUVTXIFX.js";
26
+ } from "./chunk-F643WELJ.js";
27
27
 
28
28
  // src/agent/tools.ts
29
29
  import { Type as Type2 } from "@earendil-works/pi-ai";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  loadConfig
3
- } from "./chunk-U3QNTJBP.js";
3
+ } from "./chunk-2FJB3CSS.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-KUVTXIFX.js";
39
+ } from "./chunk-F643WELJ.js";
40
40
 
41
41
  // ../api-client-generated/src/generated/core/bodySerializer.gen.ts
42
42
  var jsonBodySerializer = {
@@ -3323,6 +3323,11 @@ var getApiV1ProjectsByNameTechnicalAeoTrend = (options) => (options.client ?? cl
3323
3323
  url: "/api/v1/projects/{name}/technical-aeo/trend",
3324
3324
  ...options
3325
3325
  });
3326
+ var getApiV1ProjectsByNameTrends = (options) => (options.client ?? client).get({
3327
+ security: [{ scheme: "bearer", type: "http" }],
3328
+ url: "/api/v1/projects/{name}/trends",
3329
+ ...options
3330
+ });
3326
3331
  var getApiV1ProjectsByNameTechnicalAeoCrawl = (options) => (options.client ?? client).get({
3327
3332
  security: [{ scheme: "bearer", type: "http" }],
3328
3333
  url: "/api/v1/projects/{name}/technical-aeo/crawl",
@@ -6368,6 +6373,21 @@ var ApiClient = class {
6368
6373
  })
6369
6374
  );
6370
6375
  }
6376
+ /** One dashboard trend card: figures, their readings over the window, and each change. */
6377
+ async getTrends(project, opts) {
6378
+ return this.invoke(
6379
+ () => getApiV1ProjectsByNameTrends({
6380
+ client: this.heyClient,
6381
+ path: { name: project },
6382
+ query: {
6383
+ surface: opts.surface,
6384
+ ...opts.window ? { window: opts.window } : {},
6385
+ ...opts.startDate ? { startDate: opts.startDate } : {},
6386
+ ...opts.endDate ? { endDate: opts.endDate } : {}
6387
+ }
6388
+ })
6389
+ );
6390
+ }
6371
6391
  async getTechnicalAeoTrend(project, opts) {
6372
6392
  return this.invoke(
6373
6393
  () => getApiV1ProjectsByNameTechnicalAeoTrend({
@@ -2,11 +2,11 @@ import {
2
2
  dedupeGscSitemapUrls,
3
3
  resolveDiscoveredGscSitemapUrls,
4
4
  submitGscSitemapBatches
5
- } from "./chunk-RR76O744.js";
5
+ } from "./chunk-GXTCDNX7.js";
6
6
  import {
7
7
  measurementDraftOperationSchema,
8
8
  runMeasurementDraftAction
9
- } from "./chunk-F5SQITTJ.js";
9
+ } from "./chunk-MNLAIB67.js";
10
10
  import {
11
11
  CliError
12
12
  } from "./chunk-HGMYEDAQ.js";
@@ -96,6 +96,7 @@ import {
96
96
  measurementQueryTemplateApplyRequestSchema,
97
97
  measurementQueryTemplateUpsertRequestSchema,
98
98
  measurementQuestionResultQuerySchema,
99
+ metricsWindowSchema,
99
100
  notificationCreateRequestSchema,
100
101
  notificationEventSchema,
101
102
  operationAccess,
@@ -182,9 +183,10 @@ import {
182
183
  trafficSamplesQuerySchema,
183
184
  trafficSeriesGranularitySchema,
184
185
  trafficUnrecognizedAgentsQuerySchema,
186
+ trendSurfaceSchema,
185
187
  visibilityCompareSelectionSchema,
186
188
  visibilityReportRequestSchema
187
- } from "./chunk-KUVTXIFX.js";
189
+ } from "./chunk-F643WELJ.js";
188
190
 
189
191
  // src/mcp/tool-registry.ts
190
192
  import { z as z2 } from "zod";
@@ -967,6 +969,13 @@ var technicalAeoTrendInputSchema = z2.object({
967
969
  project: projectNameSchema,
968
970
  limit: z2.number().int().positive().max(365).optional()
969
971
  });
972
+ var trendsInputSchema = z2.object({
973
+ project: projectNameSchema,
974
+ surface: trendSurfaceSchema.describe("Which card: index-coverage (Google and Bing indexed pages by day), site-health (site score and pages checked per scan), backlinks (referring domains, linking hosts and top-10 concentration per Common Crawl release, crawler and proxy hosts left out)."),
975
+ window: metricsWindowSchema.optional().describe("Window ending on the latest reading. Defaults to 90d for index-coverage and all otherwise. Leave it out when you pass startDate or endDate."),
976
+ startDate: calendarDateSchema.optional().describe("First calendar day (YYYY-MM-DD) of your own range instead of a window."),
977
+ endDate: calendarDateSchema.optional().describe("Last calendar day (YYYY-MM-DD) of your own range instead of a window.")
978
+ });
970
979
  var crawlRunIdSchema = runIdSchema.optional().describe(
971
980
  "Historical crawl-bearing site-audit run ID. Omit for the newest scan with a crawl, complete or stopped at its budget."
972
981
  );
@@ -4233,6 +4242,22 @@ var rawCanonryMcpTools = [
4233
4242
  openApiOperations: ["GET /api/v1/projects/{name}/technical-aeo/trend"],
4234
4243
  handler: (client, input) => client.getTechnicalAeoTrend(input.project, input.limit !== void 0 ? { limit: input.limit } : void 0)
4235
4244
  }),
4245
+ defineTool({
4246
+ name: "canonry_trends",
4247
+ title: "Get a dashboard trend card",
4248
+ description: `Read the figures a dashboard tab leads with, from stored data: each figure's latest reading, its change since the first reading in the window (change.basis says from which date), and its readings over the window. Use for "are indexed pages, the site score or referring domains going up?". Dates before a figure's recordedFrom were never recorded, not zero.`,
4249
+ access: "read",
4250
+ tier: "monitoring",
4251
+ inputSchema: trendsInputSchema,
4252
+ annotations: readAnnotations(),
4253
+ openApiOperations: ["GET /api/v1/projects/{name}/trends"],
4254
+ handler: (client, input) => client.getTrends(input.project, {
4255
+ surface: input.surface,
4256
+ ...input.window ? { window: input.window } : {},
4257
+ ...input.startDate ? { startDate: input.startDate } : {},
4258
+ ...input.endDate ? { endDate: input.endDate } : {}
4259
+ })
4260
+ }),
4236
4261
  defineTool({
4237
4262
  name: "canonry_technical_aeo_crawl",
4238
4263
  title: "Get persisted Technical AEO crawl",