@canonry/canonry 7.97.8 → 7.99.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 (136) hide show
  1. package/assets/agent-workspace/skills/aero/references/site-health.md +11 -1
  2. package/assets/agent-workspace/skills/canonry/references/canonry-cli.md +2 -0
  3. package/assets/assets/{AgentSetupPage-DiX4GptZ.js → AgentSetupPage-yOqSVJ-e.js} +1 -1
  4. package/assets/assets/{AuditHistoryPanel-de0zJkNC.js → AuditHistoryPanel-CiTzFgbw.js} +1 -1
  5. package/assets/assets/{BacklinksPage-BFfksR1M.js → BacklinksPage-DmRdQsFQ.js} +1 -1
  6. package/assets/assets/{HistoryPage-DQnGncRE.js → HistoryPage-DNE76LNh.js} +1 -1
  7. package/assets/assets/{MeasurementPropertyPage-DYCBQSnh.js → MeasurementPropertyPage-Cx64Fnmz.js} +1 -1
  8. package/assets/assets/{ProjectPage-BwwkYgfJ.js → ProjectPage-DNfgC82V.js} +1 -1
  9. package/assets/assets/{RunsPage-VeWCiQeM.js → RunsPage-BmPKBKKr.js} +1 -1
  10. package/assets/assets/{SettingsPage-BXPhnRMo.js → SettingsPage-Dl0TNeVK.js} +1 -1
  11. package/assets/assets/{SiteHealthSection-Ch9tNd8P.js → SiteHealthSection-DxQPaR--.js} +2 -2
  12. package/assets/assets/ToneBadge-BhjTBHi-.js +60 -0
  13. package/assets/assets/{TrafficPage-CIzz7gmK.js → TrafficPage-CJp0pS01.js} +1 -1
  14. package/assets/assets/{TrafficSourceDetailPage-6IbzMhJ6.js → TrafficSourceDetailPage-DKE8tSw5.js} +1 -1
  15. package/assets/assets/{account-context-DIWdmpj6.js → account-context-j3asaevn.js} +1 -1
  16. package/assets/assets/{agent-trust-copy-2Os0XoaQ.js → agent-trust-copy--U_DFYQE.js} +1 -1
  17. package/assets/assets/{card-CoYH9h6o.js → card-CQAQ-c3g.js} +1 -1
  18. package/assets/assets/{format-helpers-cRaGEIxc.js → format-helpers-BPugHeIX.js} +1 -1
  19. package/assets/assets/{index-vfNb458q.js → index-xlDLvgRC.js} +4 -4
  20. package/assets/assets/{query-client-Bf1oywTZ.js → query-client-CwZpfiiD.js} +1 -1
  21. package/assets/assets/{react-query-DYI08wkz.js → react-query-CBpNFR4t.js} +1 -1
  22. package/assets/assets/{react-sigma_core.esm.min-BEhi6Q9o.js → react-sigma_core.esm.min-BAq_-iP1.js} +1 -1
  23. package/assets/assets/{server-traffic-tgMckYtk.js → server-traffic-jKXLZyeC.js} +1 -1
  24. package/assets/assets/{service-CN0y5nRe.js → service-DFumlmXt.js} +1 -1
  25. package/assets/index.html +7 -7
  26. package/dist/{ads-F7ACQA6Z.js → ads-EYDUTG4U.js} +3 -3
  27. package/dist/{agent-FBSRQSUX.js → agent-KTK2IDB3.js} +7 -7
  28. package/dist/{agent-ask-VYSXDUCL.js → agent-ask-KPZOH6RY.js} +3 -3
  29. package/dist/{agent-conversations-IKAS3RE6.js → agent-conversations-BCWA4JJL.js} +3 -3
  30. package/dist/{agent-journeys-L3ABBCNC.js → agent-journeys-UBVLQ7JV.js} +3 -3
  31. package/dist/{agent-memory-SKWZDBMQ.js → agent-memory-24SYEGEX.js} +3 -3
  32. package/dist/{agent-providers-JBTFE5TJ.js → agent-providers-E7EWFE5P.js} +3 -3
  33. package/dist/{agent-transcript-YGLXXFF7.js → agent-transcript-QGJ45NW5.js} +3 -3
  34. package/dist/{analytics-ULDRQRRL.js → analytics-GHVG5CCT.js} +3 -3
  35. package/dist/{apply-KC4CCHY5.js → apply-7YLB2DPH.js} +3 -3
  36. package/dist/{backfill-5Y2GMEAH.js → backfill-WNQ6O5WP.js} +10 -10
  37. package/dist/{backlinks-NXWU4BPY.js → backlinks-ZBZR4D27.js} +3 -3
  38. package/dist/{bing-E2KM2CW6.js → bing-4VBSKPSX.js} +3 -3
  39. package/dist/{bootstrap-QYWTDUIZ.js → bootstrap-7ESCLP2G.js} +10 -10
  40. package/dist/{cdp-E7WXCN5U.js → cdp-WBL6FZTL.js} +7 -7
  41. package/dist/{chunk-KSB3UZMW.js → chunk-2RW5D55K.js} +2 -2
  42. package/dist/{chunk-RSJBMQMN.js → chunk-3MFYM2IS.js} +1 -1
  43. package/dist/{chunk-I6G5K5PM.js → chunk-3MKJ4LP6.js} +6 -6
  44. package/dist/{chunk-TUBFKC3O.js → chunk-3VPBRGPN.js} +1 -1
  45. package/dist/{chunk-7737JZP6.js → chunk-3WDQ5GPO.js} +1 -1
  46. package/dist/{chunk-ZN3KIIMP.js → chunk-47X24IJG.js} +24 -2
  47. package/dist/{chunk-GMCVZPKO.js → chunk-5ZOM5BJS.js} +1 -1
  48. package/dist/{chunk-4VSL2CMF.js → chunk-74V5EPZH.js} +7 -7
  49. package/dist/{chunk-7APKPDOV.js → chunk-AJD252SX.js} +2 -2
  50. package/dist/{chunk-NPCML7HY.js → chunk-AY7SDX6G.js} +3 -3
  51. package/dist/{chunk-TUQYYF4G.js → chunk-C55P75G4.js} +2 -2
  52. package/dist/{chunk-LPSKHUCV.js → chunk-DLOWRO5R.js} +3 -3
  53. package/dist/{chunk-AI2G7QMW.js → chunk-DMPSA7ZS.js} +4 -4
  54. package/dist/{chunk-66DTIEWN.js → chunk-L53ZSQN5.js} +28 -1
  55. package/dist/{chunk-NLN7EGU3.js → chunk-LM7HTNUO.js} +5 -5
  56. package/dist/{chunk-C3LS3ZKI.js → chunk-O6RXNSNW.js} +1 -1
  57. package/dist/{chunk-QM4PMS52.js → chunk-P764TJKQ.js} +1 -1
  58. package/dist/{chunk-FDVCTZXD.js → chunk-PT5HNVCM.js} +1 -1
  59. package/dist/{chunk-Q4KVK426.js → chunk-RRXLJPBN.js} +5 -5
  60. package/dist/{chunk-UBF2S3DF.js → chunk-SY3CWJR4.js} +2 -2
  61. package/dist/{chunk-X4DR2LK7.js → chunk-TVBOK4P2.js} +4 -4
  62. package/dist/{chunk-JYG3LUXU.js → chunk-UPHHKO3L.js} +357 -357
  63. package/dist/{chunk-4OGRTTZX.js → chunk-UY6SKAKW.js} +2 -2
  64. package/dist/{chunk-RABCSQBW.js → chunk-VADVPARO.js} +4 -4
  65. package/dist/{chunk-7TIX5NHC.js → chunk-VOVT2H25.js} +3 -3
  66. package/dist/{chunk-YO2OW67H.js → chunk-WA6APXI6.js} +3 -3
  67. package/dist/{chunk-MAWNTOQE.js → chunk-WXAF7AMC.js} +2 -2
  68. package/dist/{chunk-22LX5CWD.js → chunk-XPIMVXAI.js} +561 -359
  69. package/dist/{chunk-MA3ZD7TF.js → chunk-XQP3XHLJ.js} +2 -2
  70. package/dist/{chunk-RJNAUQSV.js → chunk-YACKJGY4.js} +1 -1
  71. package/dist/{chunk-5455IRP3.js → chunk-YBWATBX4.js} +1 -1
  72. package/dist/{chunk-WWGOMPYP.js → chunk-YEUULP44.js} +1 -1
  73. package/dist/{chunk-5X2N5OOF.js → chunk-YMHN4UIT.js} +1 -1
  74. package/dist/{chunk-FZIYHP67.js → chunk-ZGBLNKFN.js} +31 -5
  75. package/dist/{chunk-7CAOGKRV.js → chunk-ZN2TEBBX.js} +3 -3
  76. package/dist/{citations-CJ5Y3ZET.js → citations-N5MGNKJN.js} +3 -3
  77. package/dist/{cli-catalog-Z4XQIDYU.js → cli-catalog-FFU7PHW7.js} +3 -3
  78. package/dist/{cli-commands-3HZFXKVU.js → cli-commands-AMIDEUO2.js} +7 -7
  79. package/dist/cli.js +13 -13
  80. package/dist/{competitor-FC43JBCH.js → competitor-GRA2GMZR.js} +3 -3
  81. package/dist/{content-LS4EAVOS.js → content-YVAPTIV4.js} +3 -3
  82. package/dist/{dashboard-AZUFESTB.js → dashboard-33ACBR5A.js} +6 -6
  83. package/dist/{demo-LTVTVYGC.js → demo-AGXWBMR6.js} +1 -1
  84. package/dist/{demo-server-WHDXTUWQ.js → demo-server-W4YAC7GT.js} +12 -12
  85. package/dist/{discover-T5D7T5EZ.js → discover-BH33TO4Z.js} +3 -3
  86. package/dist/{discover-eval-FQWKYZD7.js → discover-eval-3CEA6DEE.js} +3 -3
  87. package/dist/{doctor-UEFC5WP7.js → doctor-ZAYTD5PC.js} +3 -3
  88. package/dist/{evidence-FXGHON3E.js → evidence-247GL7UK.js} +3 -3
  89. package/dist/{export-cmd-AF6KF2GP.js → export-cmd-HLKWFI5Q.js} +3 -3
  90. package/dist/{ga-RMYK4AQC.js → ga-BMING57Z.js} +3 -3
  91. package/dist/{gbp-5PAKGLBI.js → gbp-MIB5CXSD.js} +3 -3
  92. package/dist/{google-6NYRRHIS.js → google-5JP6RYAW.js} +4 -4
  93. package/dist/{google-marketing-6EVLEHKD.js → google-marketing-25OBMPS6.js} +1 -1
  94. package/dist/{health-cmd-WXDFHL7O.js → health-cmd-D5XSEL7H.js} +3 -3
  95. package/dist/{history-MZWTC4OE.js → history-6MDRFPQ3.js} +3 -3
  96. package/dist/index.d.ts +122 -12
  97. package/dist/index.js +25 -25
  98. package/dist/{init-OM64S7AT.js → init-RDR75N2Y.js} +12 -12
  99. package/dist/{insights-CYE3NXGD.js → insights-QZVMBGVM.js} +3 -3
  100. package/dist/intelligence-service-KQE7RO5I.js +16 -0
  101. package/dist/{journeys-YISJ3GH4.js → journeys-TABTZDFZ.js} +3 -3
  102. package/dist/{keys-L76I5EZI.js → keys-SL5YF7NQ.js} +3 -3
  103. package/dist/{keyword-54UML7XE.js → keyword-OCDEXRSW.js} +3 -3
  104. package/dist/{logs-ZG44USRX.js → logs-CSC7O364.js} +3 -3
  105. package/dist/{mcp-T7ZNR55S.js → mcp-P725OHAJ.js} +4 -4
  106. package/dist/mcp.js +9 -9
  107. package/dist/{measurement-plan-E7FAS5V3.js → measurement-plan-Z42GBJBO.js} +5 -5
  108. package/dist/{notify-ZB4V7B4L.js → notify-E5JBES4I.js} +5 -4
  109. package/dist/{organic-evidence-W5BJ37VR.js → organic-evidence-CUA3T64O.js} +3 -3
  110. package/dist/{overview-MULDZS6B.js → overview-UKQ52I72.js} +4 -4
  111. package/dist/{project-LFDGHF3H.js → project-2ULM64TV.js} +3 -3
  112. package/dist/{query-ZV3XX5YW.js → query-Y47IEFKJ.js} +3 -3
  113. package/dist/{research-HGAKJGVQ.js → research-DPFQZ3TE.js} +3 -3
  114. package/dist/{results-export-5HCHJGBM.js → results-export-KBHOBQAH.js} +3 -3
  115. package/dist/{run-5VYP7S3V.js → run-4CYHVIIU.js} +4 -4
  116. package/dist/{schedule-FD2VIHX7.js → schedule-GY4P3RON.js} +3 -3
  117. package/dist/{search-6TJJWFJB.js → search-AGVNZMJQ.js} +3 -3
  118. package/dist/{serve-4QZEQUER.js → serve-5LFKIXNL.js} +26 -26
  119. package/dist/{session-PA4SLGYI.js → session-YAYEDM3P.js} +13 -13
  120. package/dist/{settings-NOXPXCAY.js → settings-HUKMWRHY.js} +3 -3
  121. package/dist/{sitemaps-P52HCBCM.js → sitemaps-APTY7U6H.js} +3 -3
  122. package/dist/{skills-EBWXL2WN.js → skills-4BUONEIZ.js} +2 -2
  123. package/dist/{snapshot-IST2UAPI.js → snapshot-BXCWSF5P.js} +3 -3
  124. package/dist/{src-53VQLBQC.js → src-R7XZUX3D.js} +4 -2
  125. package/dist/{status-X2RYXIU5.js → status-SB6HPBYJ.js} +4 -4
  126. package/dist/{technical-aeo-HRQRU2L3.js → technical-aeo-G7UEMWZD.js} +3 -3
  127. package/dist/{telemetry-KQATCLNR.js → telemetry-H4S4Y7YV.js} +4 -4
  128. package/dist/{tools-VLQ3GZUE.js → tools-46XX6I4R.js} +11 -11
  129. package/dist/{traffic-WK6HEQWG.js → traffic-I6WRJN3W.js} +5 -5
  130. package/dist/{trends-353NF4OU.js → trends-AQK3GLWF.js} +3 -3
  131. package/dist/{users-YXBFZHVO.js → users-SNTVY6OB.js} +3 -3
  132. package/dist/{visibility-stats-N4KZ3N4P.js → visibility-stats-44QAD2XS.js} +3 -3
  133. package/dist/{wordpress-3IPY5TA3.js → wordpress-N7LTOW46.js} +3 -3
  134. package/package.json +2 -2
  135. package/assets/assets/ToneBadge-JbnFjl09.js +0 -60
  136. package/dist/intelligence-service-ILIYUOKY.js +0 -16
@@ -1,25 +1,25 @@
1
1
  import {
2
2
  trackCliConnection
3
- } from "./chunk-MA3ZD7TF.js";
3
+ } from "./chunk-XQP3XHLJ.js";
4
4
  import {
5
5
  answerServiceDescriptors
6
- } from "./chunk-GMCVZPKO.js";
6
+ } from "./chunk-5ZOM5BJS.js";
7
7
  import {
8
8
  outcomeFailure
9
- } from "./chunk-RABCSQBW.js";
9
+ } from "./chunk-VADVPARO.js";
10
10
  import {
11
11
  isLoopbackBindHost
12
12
  } from "./chunk-TSENU4GG.js";
13
13
  import {
14
14
  registeredProviderNames
15
- } from "./chunk-C3LS3ZKI.js";
15
+ } from "./chunk-O6RXNSNW.js";
16
16
  import {
17
17
  isTelemetryEnabled,
18
18
  recordInstallRef
19
- } from "./chunk-TUQYYF4G.js";
19
+ } from "./chunk-C55P75G4.js";
20
20
  import {
21
21
  createApiClient
22
- } from "./chunk-7APKPDOV.js";
22
+ } from "./chunk-AJD252SX.js";
23
23
  import {
24
24
  configExists,
25
25
  getAnswerServiceEnv,
@@ -30,7 +30,7 @@ import {
30
30
  loadConfigRaw,
31
31
  saveConfig,
32
32
  withBootstrapProviderDefaults
33
- } from "./chunk-RSJBMQMN.js";
33
+ } from "./chunk-3MFYM2IS.js";
34
34
  import "./chunk-AOJU5LKX.js";
35
35
  import {
36
36
  CliError,
@@ -38,17 +38,17 @@ import {
38
38
  isMachineFormat,
39
39
  systemError
40
40
  } from "./chunk-HGMYEDAQ.js";
41
- import "./chunk-TUBFKC3O.js";
41
+ import "./chunk-3VPBRGPN.js";
42
42
  import {
43
43
  apiKeys,
44
44
  createClient,
45
45
  dashboardSessions,
46
46
  migrate
47
- } from "./chunk-66DTIEWN.js";
47
+ } from "./chunk-L53ZSQN5.js";
48
48
  import {
49
49
  ProviderNames,
50
50
  ProviderReloadErrorReasons
51
- } from "./chunk-ZN3KIIMP.js";
51
+ } from "./chunk-47X24IJG.js";
52
52
  import "./chunk-MLKGABMK.js";
53
53
 
54
54
  // src/commands/bootstrap.ts
@@ -1,26 +1,26 @@
1
1
  import {
2
2
  trackCliConnection
3
- } from "./chunk-MA3ZD7TF.js";
3
+ } from "./chunk-XQP3XHLJ.js";
4
4
  import {
5
5
  outcomeFailure
6
- } from "./chunk-RABCSQBW.js";
7
- import "./chunk-TUQYYF4G.js";
6
+ } from "./chunk-VADVPARO.js";
7
+ import "./chunk-C55P75G4.js";
8
8
  import {
9
9
  createApiClient
10
- } from "./chunk-7APKPDOV.js";
10
+ } from "./chunk-AJD252SX.js";
11
11
  import {
12
12
  loadConfig,
13
13
  saveConfigPatch
14
- } from "./chunk-RSJBMQMN.js";
14
+ } from "./chunk-3MFYM2IS.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-TUBFKC3O.js";
20
+ import "./chunk-3VPBRGPN.js";
21
21
  import {
22
22
  describeError
23
- } from "./chunk-ZN3KIIMP.js";
23
+ } from "./chunk-47X24IJG.js";
24
24
  import "./chunk-MLKGABMK.js";
25
25
 
26
26
  // src/commands/cdp.ts
@@ -4,14 +4,14 @@ import {
4
4
  } from "./chunk-VJWDBFSL.js";
5
5
  import {
6
6
  createApiClient
7
- } from "./chunk-7APKPDOV.js";
7
+ } from "./chunk-AJD252SX.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-ZN3KIIMP.js";
14
+ } from "./chunk-47X24IJG.js";
15
15
 
16
16
  // src/commands/mcp.ts
17
17
  import fs from "fs";
@@ -20,7 +20,7 @@ import {
20
20
  resolveProviderModel,
21
21
  schedulableRunKindSchema,
22
22
  sentimentEvaluatorProviderSchema
23
- } from "./chunk-ZN3KIIMP.js";
23
+ } from "./chunk-47X24IJG.js";
24
24
 
25
25
  // ../config/src/index.ts
26
26
  import { z as z5 } from "zod";
@@ -5,7 +5,7 @@ import {
5
5
  isStoredPageReadTool,
6
6
  isStoredReadTool,
7
7
  truncateToolResult
8
- } from "./chunk-AI2G7QMW.js";
8
+ } from "./chunk-DMPSA7ZS.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-RSJBMQMN.js";
26
+ } from "./chunk-3MFYM2IS.js";
27
27
  import {
28
28
  CanonryMcpToolNames,
29
29
  canonryMcpTools
30
- } from "./chunk-LPSKHUCV.js";
30
+ } from "./chunk-DLOWRO5R.js";
31
31
  import {
32
32
  createLogger
33
- } from "./chunk-4OGRTTZX.js";
33
+ } from "./chunk-UY6SKAKW.js";
34
34
  import {
35
35
  agentToolEvents,
36
36
  llmUsageEvents
37
- } from "./chunk-66DTIEWN.js";
37
+ } from "./chunk-L53ZSQN5.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-ZN3KIIMP.js";
46
+ } from "./chunk-47X24IJG.js";
47
47
 
48
48
  // src/agent/session.ts
49
49
  import fs2 from "fs";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  USAGE_TELEMETRY_HEADERS,
3
3
  redactLogString
4
- } from "./chunk-ZN3KIIMP.js";
4
+ } from "./chunk-47X24IJG.js";
5
5
 
6
6
  // ../api-routes/src/request-context.ts
7
7
  import { AsyncLocalStorage } from "async_hooks";
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-HGMYEDAQ.js";
5
5
  import {
6
6
  describeError
7
- } from "./chunk-ZN3KIIMP.js";
7
+ } from "./chunk-47X24IJG.js";
8
8
 
9
9
  // src/gsc-sitemap-submission.ts
10
10
  function dedupeGscSitemapUrls(urls) {
@@ -401,7 +401,17 @@ var notificationEventSchema = z5.enum([
401
401
  * that window or in the project's first 7 days of recorded traffic never
402
402
  * alert, and nothing is held for a webhook added later.
403
403
  */
404
- "traffic.agent.discovered"
404
+ "traffic.agent.discovered",
405
+ /**
406
+ * A site audit found a critical Site Health problem nobody was told about
407
+ * yet: a critical page defect (no H1, several H1s, no title, a page naming
408
+ * another property) on a page where it was not reported before. Sent only to
409
+ * webhooks that list it, and only when something is new, so a problem that
410
+ * stays unfixed is reported once. A partial scan can add problems but never
411
+ * forgets one; only a complete scan that no longer finds a problem clears
412
+ * it, so the problem is reported again if it comes back.
413
+ */
414
+ "site-health.issue.new"
405
415
  ]);
406
416
  var notificationDtoSchema = z5.object({
407
417
  id: z5.string(),
@@ -8453,11 +8463,23 @@ var siteCrawlAuditFactorSchema = siteAuditPageFactorSchema.extend({
8453
8463
  /** Optional review advice, also present in recommendations; absent on older evidence. */
8454
8464
  advisoryRecommendations: z21.array(z21.string()).optional()
8455
8465
  });
8466
+ var siteCrawlEntityMentionSchema = z21.object({
8467
+ field: z21.string().min(1),
8468
+ /** The FAQ question, for FAQ places. */
8469
+ question: z21.string().optional(),
8470
+ /** The named Property's plan key. */
8471
+ entityKey: z21.string().min(1),
8472
+ entityName: z21.string().min(1),
8473
+ /** Up to 160 characters of the text around the name. */
8474
+ snippet: z21.string()
8475
+ });
8456
8476
  var siteCrawlCriticalDefectSchema = z21.object({
8457
8477
  id: z21.string().min(1),
8458
8478
  severity: z21.enum(["critical", "warning"]),
8459
8479
  detail: z21.string().min(1),
8460
- recommendation: z21.string().min(1)
8480
+ recommendation: z21.string().min(1),
8481
+ /** Each place the page names another Property, at most 25; only on `names-another-entity`. */
8482
+ evidence: z21.array(siteCrawlEntityMentionSchema).optional()
8461
8483
  });
8462
8484
  var siteCrawlPageAuditProvenanceSchema = z21.object({
8463
8485
  project: z21.string(),
@@ -28,7 +28,7 @@ import {
28
28
  unknownUsageObservation,
29
29
  usdToMicros,
30
30
  withRetry
31
- } from "./chunk-ZN3KIIMP.js";
31
+ } from "./chunk-47X24IJG.js";
32
32
 
33
33
  // ../provider-answer-services/src/core/http.ts
34
34
  var MAX_RESPONSE_BYTES = 8 * 1024 * 1024;
@@ -8,23 +8,23 @@ import {
8
8
  reparseStoredResult4,
9
9
  reparseStoredResult5,
10
10
  resolveStoredApiResponse
11
- } from "./chunk-Q4KVK426.js";
11
+ } from "./chunk-RRXLJPBN.js";
12
12
  import {
13
13
  loadConfig
14
- } from "./chunk-RSJBMQMN.js";
14
+ } from "./chunk-3MFYM2IS.js";
15
15
  import {
16
16
  isMachineFormat
17
17
  } from "./chunk-HGMYEDAQ.js";
18
18
  import {
19
19
  determineCitationState
20
- } from "./chunk-5455IRP3.js";
20
+ } from "./chunk-YBWATBX4.js";
21
21
  import {
22
22
  backfillProjectAnswerMentions,
23
23
  competitorIdentityColumns,
24
24
  createRunCompetitorResolver,
25
25
  readMarketCompetitorNames,
26
26
  refreshSnapshotMentionIdentity
27
- } from "./chunk-FZIYHP67.js";
27
+ } from "./chunk-ZGBLNKFN.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-66DTIEWN.js";
41
+ } from "./chunk-L53ZSQN5.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-ZN3KIIMP.js";
54
+ } from "./chunk-47X24IJG.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-ILIYUOKY.js");
432
+ const { IntelligenceService } = await import("./intelligence-service-KQE7RO5I.js");
433
433
  const config = loadConfig();
434
434
  const db = createClient(config.database);
435
435
  migrate(db);
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  loadConfig
3
- } from "./chunk-RSJBMQMN.js";
3
+ } from "./chunk-3MFYM2IS.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-ZN3KIIMP.js";
39
+ } from "./chunk-47X24IJG.js";
40
40
 
41
41
  // ../api-client-generated/src/generated/core/bodySerializer.gen.ts
42
42
  var jsonBodySerializer = {
@@ -3,7 +3,7 @@ import {
3
3
  resolveCliAccess,
4
4
  resolveCliAccessForInvocation,
5
5
  windowOptions
6
- } from "./chunk-5X2N5OOF.js";
6
+ } from "./chunk-YMHN4UIT.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-ZN3KIIMP.js";
17
+ } from "./chunk-47X24IJG.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-Z4XQIDYU.js");
114
+ const { printCliCatalog: printCliCatalog2 } = await import("./cli-catalog-FFU7PHW7.js");
115
115
  const group2 = argsWithoutHelp.find((arg) => !arg.startsWith("--"));
116
116
  printCliCatalog2(specs, fallbackFormat, group2, accessValue);
117
117
  return true;
@@ -5,7 +5,7 @@ import {
5
5
  loadConfig,
6
6
  loadConfigRaw,
7
7
  saveConfigPatch
8
- } from "./chunk-RSJBMQMN.js";
8
+ } from "./chunk-3MFYM2IS.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-ZN3KIIMP.js";
21
+ } from "./chunk-47X24IJG.js";
22
22
 
23
23
  // src/runtime-context.ts
24
24
  function cliRuntimeContext(env = process.env, stdio = process) {
@@ -2,11 +2,11 @@ import {
2
2
  dedupeGscSitemapUrls,
3
3
  resolveDiscoveredGscSitemapUrls,
4
4
  submitGscSitemapBatches
5
- } from "./chunk-7737JZP6.js";
5
+ } from "./chunk-3WDQ5GPO.js";
6
6
  import {
7
7
  measurementDraftOperationSchema,
8
8
  runMeasurementDraftAction
9
- } from "./chunk-RJNAUQSV.js";
9
+ } from "./chunk-YACKJGY4.js";
10
10
  import {
11
11
  CliError
12
12
  } from "./chunk-HGMYEDAQ.js";
@@ -188,7 +188,7 @@ import {
188
188
  trendSurfaceSchema,
189
189
  visibilityCompareSelectionSchema,
190
190
  visibilityReportRequestSchema
191
- } from "./chunk-ZN3KIIMP.js";
191
+ } from "./chunk-47X24IJG.js";
192
192
 
193
193
  // src/mcp/tool-registry.ts
194
194
  import { z as z2 } from "zod";
@@ -1,16 +1,16 @@
1
1
  import {
2
2
  runWithUsageTags
3
- } from "./chunk-7APKPDOV.js";
3
+ } from "./chunk-AJD252SX.js";
4
4
  import {
5
5
  CanonryMcpToolNames,
6
6
  canonryMcpTools
7
- } from "./chunk-LPSKHUCV.js";
7
+ } from "./chunk-DLOWRO5R.js";
8
8
  import {
9
9
  CliError
10
10
  } from "./chunk-HGMYEDAQ.js";
11
11
  import {
12
12
  buildOpenApiDocument
13
- } from "./chunk-FZIYHP67.js";
13
+ } from "./chunk-ZGBLNKFN.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-ZN3KIIMP.js";
26
+ } from "./chunk-47X24IJG.js";
27
27
 
28
28
  // src/agent/tools.ts
29
29
  import { Type as Type2 } from "@earendil-works/pi-ai";
@@ -20,7 +20,7 @@ import {
20
20
  templateLinkRatio,
21
21
  templateLinkUbiquityAvailable,
22
22
  validationError
23
- } from "./chunk-ZN3KIIMP.js";
23
+ } from "./chunk-47X24IJG.js";
24
24
  import {
25
25
  __export
26
26
  } from "./chunk-MLKGABMK.js";
@@ -186,6 +186,7 @@ __export(schema_exports, {
186
186
  siteCrawlPages: () => siteCrawlPages,
187
187
  siteCrawlRunRequests: () => siteCrawlRunRequests,
188
188
  siteCrawlSnapshots: () => siteCrawlSnapshots,
189
+ siteHealthNotifyState: () => siteHealthNotifyState,
189
190
  siteLivenessState: () => siteLivenessState,
190
191
  sitemapListSyncs: () => sitemapListSyncs,
191
192
  trafficEventReceipts: () => trafficEventReceipts,
@@ -1107,6 +1108,15 @@ var doctorHealthState = sqliteTable2("doctor_health_state", {
1107
1108
  /** Urgent delivery histories by notification id and destination, never inherited by replacements. */
1108
1109
  urgentReceipts: text2("urgent_receipts", { mode: "json" }).$type()
1109
1110
  });
1111
+ var siteHealthNotifyState = sqliteTable2("site_health_notify_state", {
1112
+ projectId: text2("project_id").primaryKey().references(() => projects.id, { onDelete: "cascade" }),
1113
+ reportedKeys: text2("reported_keys", { mode: "json" }).$type().notNull().default([]),
1114
+ /** The audit run last applied. */
1115
+ runId: text2("run_id").notNull(),
1116
+ updatedAt: text2("updated_at").notNull(),
1117
+ /** When a subscriber last accepted an alert. Null until then. */
1118
+ notifiedAt: text2("notified_at")
1119
+ });
1110
1120
  var siteLivenessState = sqliteTable2("site_liveness_state", {
1111
1121
  projectId: text2("project_id").primaryKey(),
1112
1122
  /** Last graded probe: ok | fail. Skipped probes are not recorded. */
@@ -9075,6 +9085,22 @@ var MIGRATION_VERSIONS = [
9075
9085
  `CREATE INDEX IF NOT EXISTS idx_ga_search_landing_pages_order ON ga_search_landing_pages(project_id, window_key, clicks)`,
9076
9086
  `CREATE INDEX IF NOT EXISTS idx_ga_search_landing_pages_run ON ga_search_landing_pages(sync_run_id)`
9077
9087
  ]
9088
+ },
9089
+ {
9090
+ version: 214,
9091
+ name: "site-health-notify-state",
9092
+ // What the site-health.issue.new webhook already reported, one row per
9093
+ // project. No backfill: a project without a row reports what its next
9094
+ // audit finds, once.
9095
+ statements: [
9096
+ `CREATE TABLE IF NOT EXISTS site_health_notify_state (
9097
+ project_id TEXT PRIMARY KEY REFERENCES projects(id) ON DELETE CASCADE,
9098
+ reported_keys TEXT NOT NULL DEFAULT '[]',
9099
+ run_id TEXT NOT NULL,
9100
+ updated_at TEXT NOT NULL,
9101
+ notified_at TEXT
9102
+ )`
9103
+ ]
9078
9104
  }
9079
9105
  ];
9080
9106
  var AERO_LEDGER_REBUILDS = [
@@ -10524,6 +10550,7 @@ export {
10524
10550
  schedules,
10525
10551
  insightNotifyState,
10526
10552
  doctorHealthState,
10553
+ siteHealthNotifyState,
10527
10554
  siteLivenessState,
10528
10555
  notifications,
10529
10556
  reviewWebhookDeliveries,
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  pickProjectCitedDomain
3
- } from "./chunk-5455IRP3.js";
3
+ } from "./chunk-YBWATBX4.js";
4
4
  import {
5
5
  createLogger
6
- } from "./chunk-4OGRTTZX.js";
6
+ } from "./chunk-UY6SKAKW.js";
7
7
  import {
8
8
  GBP_INSIGHT_PROVIDER,
9
9
  PERSISTENT_GAP_THRESHOLD,
@@ -17,7 +17,7 @@ import {
17
17
  mergeGscQueryTotalsWithFallback,
18
18
  readGscQueryDailyRows,
19
19
  readLatestGscDataDate
20
- } from "./chunk-FZIYHP67.js";
20
+ } from "./chunk-ZGBLNKFN.js";
21
21
  import {
22
22
  competitors,
23
23
  gbpDailyMetrics,
@@ -35,14 +35,14 @@ import {
35
35
  queries,
36
36
  querySnapshots,
37
37
  runs
38
- } from "./chunk-66DTIEWN.js";
38
+ } from "./chunk-L53ZSQN5.js";
39
39
  import {
40
40
  CitationStates,
41
41
  RunKinds,
42
42
  RunStatuses,
43
43
  RunTriggers,
44
44
  effectiveDomains
45
- } from "./chunk-ZN3KIIMP.js";
45
+ } from "./chunk-47X24IJG.js";
46
46
 
47
47
  // src/intelligence-service.ts
48
48
  import { eq, desc, asc, and, ne, or, inArray, gte, lte, isNull, sql, exists } from "drizzle-orm";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  API_PROVIDER_NAMES,
3
3
  ProviderNames
4
- } from "./chunk-ZN3KIIMP.js";
4
+ } from "./chunk-47X24IJG.js";
5
5
 
6
6
  // src/provider-registration.ts
7
7
  function isApiProviderRegistrable(name, entry) {
@@ -15,7 +15,7 @@ import {
15
15
  formatCanonryPluginUpdateHint,
16
16
  formatCanonryPluginVersionMismatch,
17
17
  skillsClientSchema
18
- } from "./chunk-ZN3KIIMP.js";
18
+ } from "./chunk-47X24IJG.js";
19
19
 
20
20
  // src/commands/skills.ts
21
21
  import crypto from "crypto";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  cloudflareQueueNameSchema
3
- } from "./chunk-ZN3KIIMP.js";
3
+ } from "./chunk-47X24IJG.js";
4
4
 
5
5
  // src/cloudflare-traffic-config.ts
6
6
  function unsupportedDeliveryMode(deliveryMode) {
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  createLogger
3
- } from "./chunk-4OGRTTZX.js";
3
+ } from "./chunk-UY6SKAKW.js";
4
4
  import {
5
5
  addLikelyFakeAgentHits,
6
6
  correctBackgroundCallJourneys,
7
7
  mergeSplitJourneyVisitors,
8
8
  repairAiReferralArrivalsOnStartup,
9
9
  writeUnrecognizedAgentBuckets
10
- } from "./chunk-FZIYHP67.js";
10
+ } from "./chunk-ZGBLNKFN.js";
11
11
  import {
12
12
  AGENT_TRUST_RULES_VERSION,
13
13
  BROWSER_SHAPED_AGENT_MARKERS,
@@ -24,7 +24,7 @@ import {
24
24
  isSelfTraffic,
25
25
  normalizeTrafficPathPattern,
26
26
  unrecognizedAgentName
27
- } from "./chunk-WWGOMPYP.js";
27
+ } from "./chunk-YEUULP44.js";
28
28
  import {
29
29
  RawEventSampleEventTypes,
30
30
  agentJourneyCaptureDays,
@@ -37,7 +37,7 @@ import {
37
37
  rawEventSamples,
38
38
  trafficReclassificationState,
39
39
  unrecognizedAgentEventsHourly
40
- } from "./chunk-66DTIEWN.js";
40
+ } from "./chunk-L53ZSQN5.js";
41
41
  import {
42
42
  AI_ENGINE_DOMAINS,
43
43
  AI_ENGINE_SELF_DOMAINS,
@@ -70,7 +70,7 @@ import {
70
70
  retryAfterDelayMs,
71
71
  usageCount,
72
72
  withRetry
73
- } from "./chunk-ZN3KIIMP.js";
73
+ } from "./chunk-47X24IJG.js";
74
74
 
75
75
  // ../provider-openai/src/normalize.ts
76
76
  import OpenAI from "openai";
@@ -5,7 +5,7 @@ import {
5
5
  siteCrawlGraphNodes,
6
6
  siteCrawlPages,
7
7
  siteCrawlSnapshots
8
- } from "./chunk-66DTIEWN.js";
8
+ } from "./chunk-L53ZSQN5.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-ZN3KIIMP.js";
18
+ } from "./chunk-47X24IJG.js";
19
19
 
20
20
  // src/site-audit-factors.ts
21
21
  function recordedSharePct(factor) {
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  registeredProviderNames
3
- } from "./chunk-C3LS3ZKI.js";
3
+ } from "./chunk-O6RXNSNW.js";
4
4
  import {
5
5
  configExists,
6
6
  loadConfigRaw
7
- } from "./chunk-RSJBMQMN.js";
7
+ } from "./chunk-3MFYM2IS.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-53VQLBQC.js");
31
+ const { createClient, projects, queries: queriesTable } = await import("./src-R7XZUX3D.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-4QZEQUER.js");
50
+ const { serveCommand } = await import("./serve-5LFKIXNL.js");
51
51
  await serveCommand(format);
52
52
  }
53
53