@canonry/canonry 7.97.8 → 7.98.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 (135) hide show
  1. package/assets/agent-workspace/skills/canonry/references/canonry-cli.md +2 -0
  2. package/assets/assets/{AgentSetupPage-DiX4GptZ.js → AgentSetupPage-h1kJhy9q.js} +1 -1
  3. package/assets/assets/{AuditHistoryPanel-de0zJkNC.js → AuditHistoryPanel-CNUApNiJ.js} +1 -1
  4. package/assets/assets/{BacklinksPage-BFfksR1M.js → BacklinksPage-CpKmlAek.js} +1 -1
  5. package/assets/assets/{HistoryPage-DQnGncRE.js → HistoryPage-DeN79d3c.js} +1 -1
  6. package/assets/assets/{MeasurementPropertyPage-DYCBQSnh.js → MeasurementPropertyPage-CcHnYn81.js} +1 -1
  7. package/assets/assets/{ProjectPage-BwwkYgfJ.js → ProjectPage-Tmuqmust.js} +1 -1
  8. package/assets/assets/{RunsPage-VeWCiQeM.js → RunsPage-BD4k3MjX.js} +1 -1
  9. package/assets/assets/{SettingsPage-BXPhnRMo.js → SettingsPage-BHy30JP5.js} +1 -1
  10. package/assets/assets/{SiteHealthSection-Ch9tNd8P.js → SiteHealthSection-SYdtuGjq.js} +2 -2
  11. package/assets/assets/ToneBadge-Cii5KNtg.js +60 -0
  12. package/assets/assets/{TrafficPage-CIzz7gmK.js → TrafficPage-DuxtRqnc.js} +1 -1
  13. package/assets/assets/{TrafficSourceDetailPage-6IbzMhJ6.js → TrafficSourceDetailPage-DiX1bB02.js} +1 -1
  14. package/assets/assets/{account-context-DIWdmpj6.js → account-context-CdEHcI5S.js} +1 -1
  15. package/assets/assets/{agent-trust-copy-2Os0XoaQ.js → agent-trust-copy-N6WacCSg.js} +1 -1
  16. package/assets/assets/{card-CoYH9h6o.js → card-B1O0SunG.js} +1 -1
  17. package/assets/assets/{format-helpers-cRaGEIxc.js → format-helpers-V8Pyc7cR.js} +1 -1
  18. package/assets/assets/{index-vfNb458q.js → index-BTz-B9hV.js} +4 -4
  19. package/assets/assets/{query-client-Bf1oywTZ.js → query-client-C1ycmW1c.js} +1 -1
  20. package/assets/assets/{react-query-DYI08wkz.js → react-query-DI7VfOND.js} +1 -1
  21. package/assets/assets/{react-sigma_core.esm.min-BEhi6Q9o.js → react-sigma_core.esm.min-f4uuOgrw.js} +1 -1
  22. package/assets/assets/{server-traffic-tgMckYtk.js → server-traffic-CkSCFMnL.js} +1 -1
  23. package/assets/assets/{service-CN0y5nRe.js → service-DSgXWhNq.js} +1 -1
  24. package/assets/index.html +7 -7
  25. package/dist/{ads-F7ACQA6Z.js → ads-PQ4OP6OH.js} +3 -3
  26. package/dist/{agent-FBSRQSUX.js → agent-B6ZPL2HH.js} +7 -7
  27. package/dist/{agent-ask-VYSXDUCL.js → agent-ask-ZUKNXRAX.js} +3 -3
  28. package/dist/{agent-conversations-IKAS3RE6.js → agent-conversations-DJ7WU7PL.js} +3 -3
  29. package/dist/{agent-journeys-L3ABBCNC.js → agent-journeys-LGUI3SQG.js} +3 -3
  30. package/dist/{agent-memory-SKWZDBMQ.js → agent-memory-PWZJ7G5Q.js} +3 -3
  31. package/dist/{agent-providers-JBTFE5TJ.js → agent-providers-TEERDNJT.js} +3 -3
  32. package/dist/{agent-transcript-YGLXXFF7.js → agent-transcript-KDPOPK5Z.js} +3 -3
  33. package/dist/{analytics-ULDRQRRL.js → analytics-NFW5RQRT.js} +3 -3
  34. package/dist/{apply-KC4CCHY5.js → apply-EP4V4UF5.js} +3 -3
  35. package/dist/{backfill-5Y2GMEAH.js → backfill-6UTNNVFO.js} +10 -10
  36. package/dist/{backlinks-NXWU4BPY.js → backlinks-SG5GV5X5.js} +3 -3
  37. package/dist/{bing-E2KM2CW6.js → bing-Q4W24JNC.js} +3 -3
  38. package/dist/{bootstrap-QYWTDUIZ.js → bootstrap-WEMERVNZ.js} +10 -10
  39. package/dist/{cdp-E7WXCN5U.js → cdp-3XKBJGHO.js} +7 -7
  40. package/dist/{chunk-UBF2S3DF.js → chunk-2Q7JEC6N.js} +2 -2
  41. package/dist/{chunk-TUQYYF4G.js → chunk-2XCYEBQV.js} +2 -2
  42. package/dist/{chunk-TUBFKC3O.js → chunk-3BA75QYU.js} +1 -1
  43. package/dist/{chunk-LPSKHUCV.js → chunk-3GMBHGQ5.js} +3 -3
  44. package/dist/{chunk-4VSL2CMF.js → chunk-3JWY65XO.js} +7 -7
  45. package/dist/{chunk-RJNAUQSV.js → chunk-52M2JWCB.js} +1 -1
  46. package/dist/{chunk-7TIX5NHC.js → chunk-64KB6YTG.js} +3 -3
  47. package/dist/{chunk-YO2OW67H.js → chunk-64R66MWZ.js} +3 -3
  48. package/dist/{chunk-RSJBMQMN.js → chunk-BLW327AU.js} +1 -1
  49. package/dist/{chunk-WWGOMPYP.js → chunk-CN6MVUY3.js} +1 -1
  50. package/dist/{chunk-GMCVZPKO.js → chunk-EJZ444VV.js} +1 -1
  51. package/dist/{chunk-KSB3UZMW.js → chunk-ER5ZHAB2.js} +2 -2
  52. package/dist/{chunk-C3LS3ZKI.js → chunk-FQ3L2TIX.js} +1 -1
  53. package/dist/{chunk-JYG3LUXU.js → chunk-IAGC2MGP.js} +357 -357
  54. package/dist/{chunk-5455IRP3.js → chunk-ISIJ2NS4.js} +1 -1
  55. package/dist/{chunk-22LX5CWD.js → chunk-IX5AC3QB.js} +370 -218
  56. package/dist/{chunk-FDVCTZXD.js → chunk-J6MYB3F4.js} +1 -1
  57. package/dist/{chunk-66DTIEWN.js → chunk-KK3Z34AN.js} +28 -1
  58. package/dist/{chunk-7CAOGKRV.js → chunk-MSI4BGFN.js} +3 -3
  59. package/dist/{chunk-FZIYHP67.js → chunk-O22WSFWL.js} +27 -4
  60. package/dist/{chunk-7APKPDOV.js → chunk-OL2L5ANJ.js} +2 -2
  61. package/dist/{chunk-AI2G7QMW.js → chunk-Q5SNOMRB.js} +4 -4
  62. package/dist/{chunk-X4DR2LK7.js → chunk-QSL3FXE4.js} +4 -4
  63. package/dist/{chunk-MA3ZD7TF.js → chunk-RGFIRJ7F.js} +2 -2
  64. package/dist/{chunk-I6G5K5PM.js → chunk-RLKI2QF7.js} +6 -6
  65. package/dist/{chunk-QM4PMS52.js → chunk-RTH5JVC3.js} +1 -1
  66. package/dist/{chunk-NLN7EGU3.js → chunk-SAKH2RRF.js} +5 -5
  67. package/dist/{chunk-Q4KVK426.js → chunk-TNOYUE2L.js} +5 -5
  68. package/dist/{chunk-4OGRTTZX.js → chunk-UXXZXXNG.js} +2 -2
  69. package/dist/{chunk-NPCML7HY.js → chunk-VMGZBH5L.js} +3 -3
  70. package/dist/{chunk-5X2N5OOF.js → chunk-WZSDGC45.js} +1 -1
  71. package/dist/{chunk-7737JZP6.js → chunk-X3UXMHWC.js} +1 -1
  72. package/dist/{chunk-RABCSQBW.js → chunk-YJITDEZR.js} +4 -4
  73. package/dist/{chunk-MAWNTOQE.js → chunk-ZADRESLB.js} +2 -2
  74. package/dist/{chunk-ZN3KIIMP.js → chunk-ZBTUISPG.js} +11 -1
  75. package/dist/{citations-CJ5Y3ZET.js → citations-5OSQ3ZYU.js} +3 -3
  76. package/dist/{cli-catalog-Z4XQIDYU.js → cli-catalog-T5OAVKGS.js} +3 -3
  77. package/dist/{cli-commands-3HZFXKVU.js → cli-commands-VATCVJKW.js} +7 -7
  78. package/dist/cli.js +13 -13
  79. package/dist/{competitor-FC43JBCH.js → competitor-YIKTMTHY.js} +3 -3
  80. package/dist/{content-LS4EAVOS.js → content-DS2LKR7J.js} +3 -3
  81. package/dist/{dashboard-AZUFESTB.js → dashboard-HLVRRRI4.js} +6 -6
  82. package/dist/{demo-LTVTVYGC.js → demo-A5DTVJGK.js} +1 -1
  83. package/dist/{demo-server-WHDXTUWQ.js → demo-server-P2JGAI6C.js} +12 -12
  84. package/dist/{discover-T5D7T5EZ.js → discover-VNZDO2MU.js} +3 -3
  85. package/dist/{discover-eval-FQWKYZD7.js → discover-eval-ON77LUEN.js} +3 -3
  86. package/dist/{doctor-UEFC5WP7.js → doctor-7TNNTI7H.js} +3 -3
  87. package/dist/{evidence-FXGHON3E.js → evidence-E54CNGXS.js} +3 -3
  88. package/dist/{export-cmd-AF6KF2GP.js → export-cmd-XXZ6KLQQ.js} +3 -3
  89. package/dist/{ga-RMYK4AQC.js → ga-ZQB4EJI3.js} +3 -3
  90. package/dist/{gbp-5PAKGLBI.js → gbp-ZQL6NQEK.js} +3 -3
  91. package/dist/{google-6NYRRHIS.js → google-7EIHQGSV.js} +4 -4
  92. package/dist/{google-marketing-6EVLEHKD.js → google-marketing-RSAO4PG7.js} +1 -1
  93. package/dist/{health-cmd-WXDFHL7O.js → health-cmd-R7WPKGWX.js} +3 -3
  94. package/dist/{history-MZWTC4OE.js → history-2CSWSVCY.js} +3 -3
  95. package/dist/index.d.ts +115 -5
  96. package/dist/index.js +25 -25
  97. package/dist/{init-OM64S7AT.js → init-FXZRMXZ3.js} +12 -12
  98. package/dist/{insights-CYE3NXGD.js → insights-EJUL3W6D.js} +3 -3
  99. package/dist/intelligence-service-TKK7O3Z5.js +16 -0
  100. package/dist/{journeys-YISJ3GH4.js → journeys-YUMBANFH.js} +3 -3
  101. package/dist/{keys-L76I5EZI.js → keys-KLOTGT4H.js} +3 -3
  102. package/dist/{keyword-54UML7XE.js → keyword-5NSJFEOI.js} +3 -3
  103. package/dist/{logs-ZG44USRX.js → logs-WW3RLCRG.js} +3 -3
  104. package/dist/{mcp-T7ZNR55S.js → mcp-NTBEIEVX.js} +4 -4
  105. package/dist/mcp.js +9 -9
  106. package/dist/{measurement-plan-E7FAS5V3.js → measurement-plan-BLPAZEXS.js} +5 -5
  107. package/dist/{notify-ZB4V7B4L.js → notify-KAGE6UEN.js} +5 -4
  108. package/dist/{organic-evidence-W5BJ37VR.js → organic-evidence-HTYRXRML.js} +3 -3
  109. package/dist/{overview-MULDZS6B.js → overview-GSJ4GP2T.js} +4 -4
  110. package/dist/{project-LFDGHF3H.js → project-NYUWICVC.js} +3 -3
  111. package/dist/{query-ZV3XX5YW.js → query-3CRRDOHD.js} +3 -3
  112. package/dist/{research-HGAKJGVQ.js → research-ZULVD3TW.js} +3 -3
  113. package/dist/{results-export-5HCHJGBM.js → results-export-STM7SQ4J.js} +3 -3
  114. package/dist/{run-5VYP7S3V.js → run-S4MFU4MK.js} +4 -4
  115. package/dist/{schedule-FD2VIHX7.js → schedule-6W3Q2FUL.js} +3 -3
  116. package/dist/{search-6TJJWFJB.js → search-EKXXN7C4.js} +3 -3
  117. package/dist/{serve-4QZEQUER.js → serve-TFBFPFAQ.js} +26 -26
  118. package/dist/{session-PA4SLGYI.js → session-4B5V3AH6.js} +13 -13
  119. package/dist/{settings-NOXPXCAY.js → settings-VRTDPFR3.js} +3 -3
  120. package/dist/{sitemaps-P52HCBCM.js → sitemaps-R7XFCH6E.js} +3 -3
  121. package/dist/{skills-EBWXL2WN.js → skills-44XYCTVD.js} +2 -2
  122. package/dist/{snapshot-IST2UAPI.js → snapshot-ROAOJI4W.js} +3 -3
  123. package/dist/{src-53VQLBQC.js → src-ZJRIKEDB.js} +4 -2
  124. package/dist/{status-X2RYXIU5.js → status-EN3A2TX5.js} +4 -4
  125. package/dist/{technical-aeo-HRQRU2L3.js → technical-aeo-ZV466F65.js} +3 -3
  126. package/dist/{telemetry-KQATCLNR.js → telemetry-EZHPNZ2A.js} +4 -4
  127. package/dist/{tools-VLQ3GZUE.js → tools-IH4M7AAG.js} +11 -11
  128. package/dist/{traffic-WK6HEQWG.js → traffic-VFLXWB3Z.js} +5 -5
  129. package/dist/{trends-353NF4OU.js → trends-ZXJIX3Z3.js} +3 -3
  130. package/dist/{users-YXBFZHVO.js → users-J2BYEWOE.js} +3 -3
  131. package/dist/{visibility-stats-N4KZ3N4P.js → visibility-stats-AJ7NY2BP.js} +3 -3
  132. package/dist/{wordpress-3IPY5TA3.js → wordpress-U6MS35VE.js} +3 -3
  133. package/package.json +1 -1
  134. package/assets/assets/ToneBadge-JbnFjl09.js +0 -60
  135. package/dist/intelligence-service-ILIYUOKY.js +0 -16
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  cloudflareQueueNameSchema
3
- } from "./chunk-ZN3KIIMP.js";
3
+ } from "./chunk-ZBTUISPG.js";
4
4
 
5
5
  // src/cloudflare-traffic-config.ts
6
6
  function unsupportedDeliveryMode(deliveryMode) {
@@ -20,7 +20,7 @@ import {
20
20
  templateLinkRatio,
21
21
  templateLinkUbiquityAvailable,
22
22
  validationError
23
- } from "./chunk-ZN3KIIMP.js";
23
+ } from "./chunk-ZBTUISPG.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,13 +1,13 @@
1
1
  import {
2
2
  createApiClient
3
- } from "./chunk-7APKPDOV.js";
3
+ } from "./chunk-OL2L5ANJ.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-RJNAUQSV.js";
10
+ } from "./chunk-52M2JWCB.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-ZN3KIIMP.js";
40
+ } from "./chunk-ZBTUISPG.js";
41
41
 
42
42
  // src/commands/measurement-plan.ts
43
43
  import crypto from "crypto";
@@ -17,14 +17,14 @@ import {
17
17
  normalizeTrafficPathPattern,
18
18
  sessionizeJourneyRequests,
19
19
  verifyRequestSignature
20
- } from "./chunk-WWGOMPYP.js";
20
+ } from "./chunk-CN6MVUY3.js";
21
21
  import {
22
22
  currentOutcomeAttribution,
23
23
  getRequestContext,
24
24
  registerRequestContext,
25
25
  requestAuditIdentity,
26
26
  sanitizeRequestContext
27
- } from "./chunk-TUBFKC3O.js";
27
+ } from "./chunk-3BA75QYU.js";
28
28
  import {
29
29
  RawEventSampleEventTypes,
30
30
  SentimentIdempotencyConflict,
@@ -184,7 +184,7 @@ import {
184
184
  userSessions,
185
185
  users,
186
186
  writeNegativeReviewMaxStars
187
- } from "./chunk-66DTIEWN.js";
187
+ } from "./chunk-KK3Z34AN.js";
188
188
  import {
189
189
  ADS_ACTIVATE_SCOPE,
190
190
  ADS_ACTIVATION_ABSOLUTE_MAX_ENTITIES,
@@ -1284,7 +1284,7 @@ import {
1284
1284
  wordpressSchemaDeployResultDtoSchema,
1285
1285
  wordpressSchemaStatusResultDtoSchema,
1286
1286
  wordpressStatusDtoSchema
1287
- } from "./chunk-ZN3KIIMP.js";
1287
+ } from "./chunk-ZBTUISPG.js";
1288
1288
 
1289
1289
  // ../api-routes/src/user-session.ts
1290
1290
  import crypto2 from "crypto";
@@ -10575,11 +10575,34 @@ ${single ? line(single) : bulletList(agents.map(line))}`,
10575
10575
  timestamp: agents.reduce((latest, agent) => agent.lastSeenAt > latest ? agent.lastSeenAt : latest, agents[0]?.lastSeenAt ?? "")
10576
10576
  };
10577
10577
  }
10578
+ function siteHealthView(payload) {
10579
+ const { project, issues } = payload;
10580
+ const pages = (count10) => `${count10} page${count10 === 1 ? "" : "s"}`;
10581
+ const line = (issue) => {
10582
+ const total = issue.affectedPages > issue.newPages ? `, ${issue.affectedPages} in all` : "";
10583
+ const example = issue.examples[0] ? `, e.g. ${snippet(issue.examples[0], 120)}` : "";
10584
+ return `${issue.title}: ${pages(issue.newPages)} new${total}${example}`;
10585
+ };
10586
+ const single = issues.length === 1 ? issues[0] : null;
10587
+ const scope = payload.scanComplete ? "" : " The scan was partial, so other pages may have it too.";
10588
+ return {
10589
+ severity: AlertSeverities.critical,
10590
+ category: CANONRY_ALERT_CATEGORY,
10591
+ title: single ? `${project.name}: ${single.title} on ${pages(single.newPages)}` : `${project.name}: ${issues.length} new Site Health problems`,
10592
+ body: `A site audit found problems that were not reported before.${scope}
10593
+ ${single ? line(single) : bulletList(issues.map(line))}`,
10594
+ fields: [{ label: AlertFieldLabels.next, value: `cnry technical-aeo issues ${project.name} --run-id ${payload.run.id}` }],
10595
+ url: payload.dashboardUrl,
10596
+ footer: project.canonicalDomain,
10597
+ ...payload.run.finishedAt ? { timestamp: payload.run.finishedAt } : {}
10598
+ };
10599
+ }
10578
10600
  function toAlertView(payload) {
10579
10601
  if (isHealth(payload)) return healthView(payload);
10580
10602
  if (payload.event === "review.negative") return reviewView(payload);
10581
10603
  if (payload.event === "review.rating-dropped") return ratingView(payload);
10582
10604
  if (payload.event === "traffic.agent.discovered") return unrecognizedAgentView(payload);
10605
+ if (payload.event === "site-health.issue.new") return siteHealthView(payload);
10583
10606
  return runView(payload);
10584
10607
  }
10585
10608
 
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  loadConfig
3
- } from "./chunk-RSJBMQMN.js";
3
+ } from "./chunk-BLW327AU.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-ZBTUISPG.js";
40
40
 
41
41
  // ../api-client-generated/src/generated/core/bodySerializer.gen.ts
42
42
  var jsonBodySerializer = {
@@ -1,16 +1,16 @@
1
1
  import {
2
2
  runWithUsageTags
3
- } from "./chunk-7APKPDOV.js";
3
+ } from "./chunk-OL2L5ANJ.js";
4
4
  import {
5
5
  CanonryMcpToolNames,
6
6
  canonryMcpTools
7
- } from "./chunk-LPSKHUCV.js";
7
+ } from "./chunk-3GMBHGQ5.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-O22WSFWL.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-ZBTUISPG.js";
27
27
 
28
28
  // src/agent/tools.ts
29
29
  import { Type as Type2 } from "@earendil-works/pi-ai";
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  registeredProviderNames
3
- } from "./chunk-C3LS3ZKI.js";
3
+ } from "./chunk-FQ3L2TIX.js";
4
4
  import {
5
5
  configExists,
6
6
  loadConfigRaw
7
- } from "./chunk-RSJBMQMN.js";
7
+ } from "./chunk-BLW327AU.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-ZJRIKEDB.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-TFBFPFAQ.js");
51
51
  await serveCommand(format);
52
52
  }
53
53
 
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  trackIntegrationConnection
3
- } from "./chunk-RABCSQBW.js";
3
+ } from "./chunk-YJITDEZR.js";
4
4
  import {
5
5
  cliRuntimeContext
6
- } from "./chunk-TUQYYF4G.js";
6
+ } from "./chunk-2XCYEBQV.js";
7
7
 
8
8
  // src/cli-connection-telemetry.ts
9
9
  function trackCliConnection(properties) {
@@ -5,7 +5,7 @@ import {
5
5
  isStoredPageReadTool,
6
6
  isStoredReadTool,
7
7
  truncateToolResult
8
- } from "./chunk-AI2G7QMW.js";
8
+ } from "./chunk-Q5SNOMRB.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-BLW327AU.js";
27
27
  import {
28
28
  CanonryMcpToolNames,
29
29
  canonryMcpTools
30
- } from "./chunk-LPSKHUCV.js";
30
+ } from "./chunk-3GMBHGQ5.js";
31
31
  import {
32
32
  createLogger
33
- } from "./chunk-4OGRTTZX.js";
33
+ } from "./chunk-UXXZXXNG.js";
34
34
  import {
35
35
  agentToolEvents,
36
36
  llmUsageEvents
37
- } from "./chunk-66DTIEWN.js";
37
+ } from "./chunk-KK3Z34AN.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-ZBTUISPG.js";
47
47
 
48
48
  // src/agent/session.ts
49
49
  import fs2 from "fs";
@@ -15,7 +15,7 @@ import {
15
15
  formatCanonryPluginUpdateHint,
16
16
  formatCanonryPluginVersionMismatch,
17
17
  skillsClientSchema
18
- } from "./chunk-ZN3KIIMP.js";
18
+ } from "./chunk-ZBTUISPG.js";
19
19
 
20
20
  // src/commands/skills.ts
21
21
  import crypto from "crypto";
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  pickProjectCitedDomain
3
- } from "./chunk-5455IRP3.js";
3
+ } from "./chunk-ISIJ2NS4.js";
4
4
  import {
5
5
  createLogger
6
- } from "./chunk-4OGRTTZX.js";
6
+ } from "./chunk-UXXZXXNG.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-O22WSFWL.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-KK3Z34AN.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-ZBTUISPG.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,13 +1,13 @@
1
1
  import {
2
2
  createLogger
3
- } from "./chunk-4OGRTTZX.js";
3
+ } from "./chunk-UXXZXXNG.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-O22WSFWL.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-CN6MVUY3.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-KK3Z34AN.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-ZBTUISPG.js";
74
74
 
75
75
  // ../provider-openai/src/normalize.ts
76
76
  import OpenAI from "openai";
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  getRequestContext
3
- } from "./chunk-TUBFKC3O.js";
3
+ } from "./chunk-3BA75QYU.js";
4
4
  import {
5
5
  diagnosticIdentity,
6
6
  redactLogString,
7
7
  redactLogValue
8
- } from "./chunk-ZN3KIIMP.js";
8
+ } from "./chunk-ZBTUISPG.js";
9
9
 
10
10
  // ../api-routes/src/runtime-logger.ts
11
11
  import { format } from "util";
@@ -3,7 +3,7 @@ import {
3
3
  resolveCliAccess,
4
4
  resolveCliAccessForInvocation,
5
5
  windowOptions
6
- } from "./chunk-5X2N5OOF.js";
6
+ } from "./chunk-WZSDGC45.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-ZBTUISPG.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-T5OAVKGS.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
  AppError,
6
6
  parseWindowIn,
7
7
  resolveDateRange
8
- } from "./chunk-ZN3KIIMP.js";
8
+ } from "./chunk-ZBTUISPG.js";
9
9
 
10
10
  // src/cli-access.ts
11
11
  var CLI_ACCESS_BY_ID = Object.freeze({
@@ -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-ZBTUISPG.js";
8
8
 
9
9
  // src/gsc-sitemap-submission.ts
10
10
  function dedupeGscSitemapUrls(urls) {
@@ -2,13 +2,13 @@ import {
2
2
  bucketCliCommandDuration,
3
3
  isTelemetryEnabled,
4
4
  trackEvent
5
- } from "./chunk-TUQYYF4G.js";
5
+ } from "./chunk-2XCYEBQV.js";
6
6
  import {
7
7
  getConfigDir
8
- } from "./chunk-RSJBMQMN.js";
8
+ } from "./chunk-BLW327AU.js";
9
9
  import {
10
10
  currentOutcomeAttribution
11
- } from "./chunk-TUBFKC3O.js";
11
+ } from "./chunk-3BA75QYU.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-ZN3KIIMP.js";
22
+ } from "./chunk-ZBTUISPG.js";
23
23
 
24
24
  // src/outcome-telemetry.ts
25
25
  import fs from "fs";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  createApiClient
3
- } from "./chunk-7APKPDOV.js";
3
+ } from "./chunk-OL2L5ANJ.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-ZN3KIIMP.js";
22
+ } from "./chunk-ZBTUISPG.js";
23
23
 
24
24
  // src/commands/run.ts
25
25
  function getClient() {
@@ -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(),
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  createApiClient
3
- } from "./chunk-7APKPDOV.js";
4
- import "./chunk-RSJBMQMN.js";
3
+ } from "./chunk-OL2L5ANJ.js";
4
+ import "./chunk-BLW327AU.js";
5
5
  import "./chunk-AOJU5LKX.js";
6
6
  import "./chunk-HGMYEDAQ.js";
7
- import "./chunk-ZN3KIIMP.js";
7
+ import "./chunk-ZBTUISPG.js";
8
8
  import "./chunk-MLKGABMK.js";
9
9
 
10
10
  // src/commands/citations.ts
@@ -3,11 +3,11 @@ import {
3
3
  buildCliCatalog,
4
4
  printCliCatalog,
5
5
  renderTopLevelHelp
6
- } from "./chunk-NPCML7HY.js";
7
- import "./chunk-5X2N5OOF.js";
6
+ } from "./chunk-VMGZBH5L.js";
7
+ import "./chunk-WZSDGC45.js";
8
8
  import "./chunk-Z7IUAJOF.js";
9
9
  import "./chunk-HGMYEDAQ.js";
10
- import "./chunk-ZN3KIIMP.js";
10
+ import "./chunk-ZBTUISPG.js";
11
11
  import "./chunk-MLKGABMK.js";
12
12
  export {
13
13
  CLI_ROOT_SUMMARIES,
@@ -1,18 +1,18 @@
1
1
  import {
2
2
  REGISTERED_CLI_COMMANDS
3
- } from "./chunk-JYG3LUXU.js";
3
+ } from "./chunk-IAGC2MGP.js";
4
4
  import "./chunk-6GO5VVAC.js";
5
5
  import "./chunk-VJWDBFSL.js";
6
- import "./chunk-7CAOGKRV.js";
6
+ import "./chunk-MSI4BGFN.js";
7
7
  import "./chunk-TSENU4GG.js";
8
- import "./chunk-7APKPDOV.js";
9
- import "./chunk-RSJBMQMN.js";
10
- import "./chunk-5X2N5OOF.js";
8
+ import "./chunk-OL2L5ANJ.js";
9
+ import "./chunk-BLW327AU.js";
10
+ import "./chunk-WZSDGC45.js";
11
11
  import "./chunk-Z7IUAJOF.js";
12
- import "./chunk-RJNAUQSV.js";
12
+ import "./chunk-52M2JWCB.js";
13
13
  import "./chunk-AOJU5LKX.js";
14
14
  import "./chunk-HGMYEDAQ.js";
15
- import "./chunk-ZN3KIIMP.js";
15
+ import "./chunk-ZBTUISPG.js";
16
16
  import "./chunk-MLKGABMK.js";
17
17
  export {
18
18
  REGISTERED_CLI_COMMANDS
package/dist/cli.js CHANGED
@@ -1,16 +1,16 @@
1
1
  #!/usr/bin/env node --import tsx
2
2
  import {
3
3
  REGISTERED_CLI_COMMANDS
4
- } from "./chunk-JYG3LUXU.js";
4
+ } from "./chunk-IAGC2MGP.js";
5
5
  import "./chunk-6GO5VVAC.js";
6
6
  import {
7
7
  buildSetupState,
8
8
  runPendingServeHandoff
9
- } from "./chunk-X4DR2LK7.js";
9
+ } from "./chunk-QSL3FXE4.js";
10
10
  import "./chunk-VJWDBFSL.js";
11
- import "./chunk-7CAOGKRV.js";
11
+ import "./chunk-MSI4BGFN.js";
12
12
  import "./chunk-TSENU4GG.js";
13
- import "./chunk-C3LS3ZKI.js";
13
+ import "./chunk-FQ3L2TIX.js";
14
14
  import {
15
15
  checkLatestVersionForCli,
16
16
  cliRuntimeContext,
@@ -24,24 +24,24 @@ import {
24
24
  showFirstRunNotice,
25
25
  trackCliCommandFinished,
26
26
  trackEvent
27
- } from "./chunk-TUQYYF4G.js";
27
+ } from "./chunk-2XCYEBQV.js";
28
28
  import {
29
29
  autoSyncSkills,
30
30
  formatAutoSyncNotice
31
- } from "./chunk-7TIX5NHC.js";
32
- import "./chunk-7APKPDOV.js";
33
- import "./chunk-RSJBMQMN.js";
31
+ } from "./chunk-64KB6YTG.js";
32
+ import "./chunk-OL2L5ANJ.js";
33
+ import "./chunk-BLW327AU.js";
34
34
  import {
35
35
  accessFilterFromArgs,
36
36
  dispatchRegisteredCommand,
37
37
  printCliCatalog
38
- } from "./chunk-NPCML7HY.js";
38
+ } from "./chunk-VMGZBH5L.js";
39
39
  import {
40
40
  resolveCliAccess
41
- } from "./chunk-5X2N5OOF.js";
41
+ } from "./chunk-WZSDGC45.js";
42
42
  import "./chunk-Z7IUAJOF.js";
43
- import "./chunk-QM4PMS52.js";
44
- import "./chunk-RJNAUQSV.js";
43
+ import "./chunk-RTH5JVC3.js";
44
+ import "./chunk-52M2JWCB.js";
45
45
  import "./chunk-AOJU5LKX.js";
46
46
  import {
47
47
  CliError,
@@ -52,7 +52,7 @@ import {
52
52
  } from "./chunk-HGMYEDAQ.js";
53
53
  import {
54
54
  OperationAccesses
55
- } from "./chunk-ZN3KIIMP.js";
55
+ } from "./chunk-ZBTUISPG.js";
56
56
  import "./chunk-MLKGABMK.js";
57
57
 
58
58
  // src/cli.ts
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  createApiClient
3
- } from "./chunk-7APKPDOV.js";
4
- import "./chunk-RSJBMQMN.js";
3
+ } from "./chunk-OL2L5ANJ.js";
4
+ import "./chunk-BLW327AU.js";
5
5
  import {
6
6
  emitJsonl
7
7
  } from "./chunk-Z7IUAJOF.js";
@@ -21,7 +21,7 @@ import {
21
21
  normalizeCompetitorDomain,
22
22
  shareOfVoiceLabel,
23
23
  shareOfVoiceReason
24
- } from "./chunk-ZN3KIIMP.js";
24
+ } from "./chunk-ZBTUISPG.js";
25
25
  import "./chunk-MLKGABMK.js";
26
26
 
27
27
  // src/commands/competitor.ts