@canonry/canonry 7.84.0 → 7.85.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/aero/references/ai-traffic-tracking.md +2 -1
  2. package/assets/agent-workspace/skills/canonry/references/ai-traffic-tracking.md +2 -1
  3. package/assets/agent-workspace/skills/canonry/references/server-side-traffic.md +31 -7
  4. package/assets/assets/{AgentSetupPage-B9NOQP8a.js → AgentSetupPage-NdqmQkYa.js} +1 -1
  5. package/assets/assets/{AuditHistoryPanel-Fvh4WFjq.js → AuditHistoryPanel-CuqdFCb9.js} +1 -1
  6. package/assets/assets/{BacklinksPage-D1UHFLoV.js → BacklinksPage-CVjZiG1i.js} +1 -1
  7. package/assets/assets/{HistoryPage-CBcacDgP.js → HistoryPage-DRvdgemW.js} +1 -1
  8. package/assets/assets/{MeasurementPropertyPage-ZuZpurwr.js → MeasurementPropertyPage-Bc5EpJFV.js} +1 -1
  9. package/assets/assets/{ProjectPage-BoqDyoGi.js → ProjectPage-CGGBSiK7.js} +1 -1
  10. package/assets/assets/{RunsPage-tlCk_gOw.js → RunsPage-B6_o81G3.js} +1 -1
  11. package/assets/assets/{SettingsPage-7mRTFLFQ.js → SettingsPage-DjmVapHO.js} +1 -1
  12. package/assets/assets/{SiteHealthSection-l_A_AmY_.js → SiteHealthSection-BPPB0D9D.js} +2 -2
  13. package/assets/assets/{ToneBadge-CXyUIWzB.js → ToneBadge-DwUBSAjL.js} +1 -1
  14. package/assets/assets/{TrafficPage-DQbBT3TP.js → TrafficPage-BvbjxOw3.js} +1 -1
  15. package/assets/assets/{TrafficSourceDetailPage-D3DwE6Qd.js → TrafficSourceDetailPage-BGJwxS_Q.js} +1 -1
  16. package/assets/assets/{account-context-Bhgg1lEH.js → account-context-D7M4W4wP.js} +1 -1
  17. package/assets/assets/agent-trust-copy-WXXeDvDs.js +1 -0
  18. package/assets/assets/{card-B16Dvxau.js → card-DULVRmzI.js} +1 -1
  19. package/assets/assets/{extract-error-message-B5_v_-U8.js → extract-error-message-B9-6WgLm.js} +1 -1
  20. package/assets/assets/{format-helpers-Bs9rrO74.js → format-helpers-Cgq0VzXz.js} +1 -1
  21. package/assets/assets/{index-3aBRkQpI.js → index-A-4JN4Pv.js} +4 -4
  22. package/assets/assets/{query-client-D-tt1sn3.js → query-client-1Q6EwPba.js} +1 -1
  23. package/assets/assets/{react-query-DQr9PoNm.js → react-query-D0OiMBt3.js} +1 -1
  24. package/assets/assets/{react-sigma_core.esm.min-BfZVKh7v.js → react-sigma_core.esm.min-CR09uPhZ.js} +1 -1
  25. package/assets/assets/{service-Cmt36bhL.js → service-Bu-7icpb.js} +1 -1
  26. package/assets/index.html +7 -7
  27. package/dist/{ads-KBXA3LV6.js → ads-ETZIGLL5.js} +3 -3
  28. package/dist/{agent-OMNIUTNZ.js → agent-WG2FUC7C.js} +7 -7
  29. package/dist/{agent-ask-3JQNG2PE.js → agent-ask-775XBFOH.js} +3 -3
  30. package/dist/{agent-conversations-KO5PDSM2.js → agent-conversations-AYZ3LQJQ.js} +3 -3
  31. package/dist/{agent-journeys-QL6NG3BE.js → agent-journeys-GWNZG73C.js} +3 -3
  32. package/dist/{agent-memory-2WZ6LVAN.js → agent-memory-E5MRRS5P.js} +3 -3
  33. package/dist/{agent-providers-TABMSD4J.js → agent-providers-DEQZWO2M.js} +3 -3
  34. package/dist/{agent-transcript-YNF63MPR.js → agent-transcript-4AKVVHQC.js} +3 -3
  35. package/dist/{analytics-5FGY3FHC.js → analytics-HSLTWKDA.js} +3 -3
  36. package/dist/{apply-2HX4KYT6.js → apply-4GD7VGG7.js} +3 -3
  37. package/dist/{backfill-ABSW6J3S.js → backfill-LNE2BW34.js} +10 -10
  38. package/dist/{backlinks-7CRPWNNN.js → backlinks-TGE3DWA2.js} +3 -3
  39. package/dist/{bing-IT46EUFH.js → bing-56GNRC55.js} +3 -3
  40. package/dist/{bootstrap-CHOXLC7Q.js → bootstrap-42XCWZTS.js} +10 -10
  41. package/dist/{cdp-HQWKZGVQ.js → cdp-UODIMKE3.js} +7 -7
  42. package/dist/{chunk-EMSZDVDP.js → chunk-2O5XBKEO.js} +5 -5
  43. package/dist/{chunk-O7TWL6ZH.js → chunk-2R6WI237.js} +333 -203
  44. package/dist/{chunk-B42R2SPU.js → chunk-2X6UAPAC.js} +191 -9
  45. package/dist/{chunk-VCUNNS4R.js → chunk-4KK3OTHE.js} +1 -1
  46. package/dist/{chunk-6TLHA6XA.js → chunk-5NEZO3SC.js} +3 -3
  47. package/dist/{chunk-WJITVHAU.js → chunk-6SGHSSWQ.js} +2 -2
  48. package/dist/{chunk-Q57GN464.js → chunk-AICFUZ6X.js} +1 -1
  49. package/dist/{chunk-2MROJL32.js → chunk-BQTXXXUG.js} +1 -1
  50. package/dist/{chunk-5PEVGTNX.js → chunk-C2H5TPKD.js} +338 -338
  51. package/dist/{chunk-LWYALZ6F.js → chunk-D45AMUYA.js} +4 -4
  52. package/dist/{chunk-WR4PA335.js → chunk-DWK6NIJF.js} +1 -1
  53. package/dist/{chunk-YPR2GVJC.js → chunk-GR7VVRNN.js} +1 -1
  54. package/dist/{chunk-3H6FSUKM.js → chunk-IOW23XNK.js} +3 -3
  55. package/dist/{chunk-6SVAUILQ.js → chunk-JVO5GQZH.js} +2912 -2560
  56. package/dist/{chunk-TZCUMC7U.js → chunk-KBLMQDUZ.js} +16 -8
  57. package/dist/{chunk-K3OY52MI.js → chunk-KNKOTLVW.js} +3 -1
  58. package/dist/{chunk-BIGIIVGV.js → chunk-L5R5S57T.js} +55 -1
  59. package/dist/{chunk-GJE3OG4Y.js → chunk-NY252PIY.js} +3 -3
  60. package/dist/{chunk-CEOIGQTS.js → chunk-OHDSI5XS.js} +1 -1
  61. package/dist/{chunk-I642VITF.js → chunk-OS5BVALI.js} +2 -2
  62. package/dist/{chunk-OMUINNSO.js → chunk-PQWZCAVS.js} +1 -1
  63. package/dist/{chunk-D37PJYLD.js → chunk-PX2KVGOJ.js} +1 -1
  64. package/dist/{chunk-ZRL5FO5G.js → chunk-Q7354YI3.js} +3 -3
  65. package/dist/{chunk-LYNYNNOD.js → chunk-QEATYB7C.js} +1 -1
  66. package/dist/{chunk-OBGP3DRQ.js → chunk-RCAB7M6A.js} +2 -2
  67. package/dist/{chunk-43CPBLRJ.js → chunk-SS33RWKG.js} +1 -1
  68. package/dist/{chunk-LHAD6EK3.js → chunk-TPUBPXBN.js} +2 -2
  69. package/dist/{chunk-MZDIWY3K.js → chunk-TVZMFCX2.js} +6 -6
  70. package/dist/{chunk-3EI4FHR5.js → chunk-UMEQ7EYN.js} +4 -4
  71. package/dist/{chunk-AAKRCOQV.js → chunk-UMV4HYHD.js} +2 -2
  72. package/dist/{chunk-6Y75QV2S.js → chunk-VFSHZHZS.js} +2 -2
  73. package/dist/{chunk-LE6ZODCY.js → chunk-X7XKMARG.js} +2 -2
  74. package/dist/{chunk-QLKG7G4Y.js → chunk-YDC2V5FQ.js} +21 -21
  75. package/dist/{chunk-HYEPL5UY.js → chunk-Z53CKLDS.js} +3 -3
  76. package/dist/{chunk-UYR5JI6R.js → chunk-ZXMDIWW6.js} +4 -4
  77. package/dist/{citations-YRBUXEWU.js → citations-RXBPR5MX.js} +3 -3
  78. package/dist/{cli-catalog-JTIC72BY.js → cli-catalog-QVCJWPCI.js} +3 -3
  79. package/dist/{cli-commands-LUGJZGJU.js → cli-commands-ZXR4Z2RW.js} +7 -7
  80. package/dist/cli.js +13 -13
  81. package/dist/{competitor-ZKNDADMJ.js → competitor-MDNNHRSD.js} +3 -3
  82. package/dist/{content-ANRSBG3Y.js → content-D3JZZQ64.js} +3 -3
  83. package/dist/{dashboard-HTJBWAPW.js → dashboard-5S2A46GM.js} +6 -6
  84. package/dist/{demo-V3ODU4JK.js → demo-DQHWRIKR.js} +1 -1
  85. package/dist/{demo-server-QYMT3KT7.js → demo-server-FY2XBSD2.js} +12 -12
  86. package/dist/{discover-DX7KIWHU.js → discover-NVNWHOTZ.js} +3 -3
  87. package/dist/{discover-eval-PXWJYPHE.js → discover-eval-CJB6GYUS.js} +3 -3
  88. package/dist/{doctor-W2MTLKX7.js → doctor-DLSKNC4W.js} +3 -3
  89. package/dist/{evidence-PKKLSVNG.js → evidence-QNJULIXM.js} +3 -3
  90. package/dist/{export-cmd-3PRWU7NH.js → export-cmd-Z2YG2WLK.js} +3 -3
  91. package/dist/{ga-QPH56JDO.js → ga-RSNHBP2B.js} +3 -3
  92. package/dist/{gbp-MJPIQZYZ.js → gbp-ZEV62LSZ.js} +3 -3
  93. package/dist/{google-2XZC7DNJ.js → google-RZHEIKW5.js} +4 -4
  94. package/dist/{google-marketing-EDXL7ODG.js → google-marketing-DYQXPTD3.js} +1 -1
  95. package/dist/{health-cmd-YR2MFYNK.js → health-cmd-6ATPYUYG.js} +3 -3
  96. package/dist/{history-OM4OXDOZ.js → history-KLX6XRY4.js} +3 -3
  97. package/dist/index.d.ts +301 -95
  98. package/dist/index.js +25 -25
  99. package/dist/{init-5FAQPNH4.js → init-5BALV6SU.js} +12 -12
  100. package/dist/{insights-YGMPBDVA.js → insights-ARCEFFK5.js} +3 -3
  101. package/dist/intelligence-service-YJFZ6IBI.js +16 -0
  102. package/dist/{journeys-ZPQCEHXY.js → journeys-WVRQRZQJ.js} +3 -3
  103. package/dist/{keys-YZBRRGYE.js → keys-5KAJFRZZ.js} +3 -3
  104. package/dist/{keyword-HSPNKAJQ.js → keyword-PTUH3TFD.js} +3 -3
  105. package/dist/{logs-NO2N7W34.js → logs-NM7ACXGQ.js} +3 -3
  106. package/dist/{mcp-EAGJ2Y2D.js → mcp-ALRQXYL3.js} +4 -4
  107. package/dist/mcp.js +9 -9
  108. package/dist/{measurement-plan-6VCBAM5B.js → measurement-plan-T52JHK2J.js} +5 -5
  109. package/dist/{notify-SS5H5GRB.js → notify-MJBMRDXD.js} +3 -3
  110. package/dist/{organic-evidence-XOZQXTHF.js → organic-evidence-ZUCQFWD5.js} +3 -3
  111. package/dist/{overview-3PLQYWDY.js → overview-74IHPU2A.js} +4 -4
  112. package/dist/{project-ARUHBFCG.js → project-DKQOPMH6.js} +3 -3
  113. package/dist/{query-4KCFDJ5V.js → query-YDJ5T46L.js} +3 -3
  114. package/dist/{research-3NTYXGWN.js → research-5DU6DFZW.js} +3 -3
  115. package/dist/{results-export-YOQQXBMP.js → results-export-EDVVXKVW.js} +3 -3
  116. package/dist/{run-64UJAPPG.js → run-HRHGSIYE.js} +4 -4
  117. package/dist/{schedule-JN5JE4EK.js → schedule-GZVKQGMP.js} +3 -3
  118. package/dist/{search-2QIHUMR7.js → search-M37GRKVC.js} +3 -3
  119. package/dist/{serve-V2NPNYMP.js → serve-DW6PPZPJ.js} +26 -26
  120. package/dist/{session-347VV5OG.js → session-H427H2SK.js} +13 -13
  121. package/dist/{settings-XM5NGHFW.js → settings-WGS7GP7C.js} +3 -3
  122. package/dist/{skills-4MWWCA36.js → skills-CDDUPMAU.js} +2 -2
  123. package/dist/{snapshot-RWHR3VJ4.js → snapshot-5MAK7PWE.js} +3 -3
  124. package/dist/{src-HUF2NBUG.js → src-FEV4KYXN.js} +6 -2
  125. package/dist/{status-3OI7PTQ5.js → status-EHFOYTXQ.js} +4 -4
  126. package/dist/{technical-aeo-RXHIFLHD.js → technical-aeo-KVY4RQWT.js} +3 -3
  127. package/dist/{telemetry-DZSITJKQ.js → telemetry-7XRRIHVC.js} +4 -4
  128. package/dist/{tools-ZUUOSB75.js → tools-EHONHGB6.js} +11 -11
  129. package/dist/{traffic-KIQBUHJW.js → traffic-TBR6GOWN.js} +5 -5
  130. package/dist/{users-ID4O7NXQ.js → users-YQS4X47Q.js} +3 -3
  131. package/dist/{visibility-stats-X5MTD47P.js → visibility-stats-JXIOSJXC.js} +3 -3
  132. package/dist/{wordpress-WU2HLWIW.js → wordpress-HVOLEPQY.js} +3 -3
  133. package/package.json +1 -1
  134. package/assets/assets/agent-trust-copy-CKZsKhc0.js +0 -1
  135. package/dist/intelligence-service-GCN4S6QT.js +0 -16
@@ -8,23 +8,23 @@ import {
8
8
  reparseStoredResult4,
9
9
  reparseStoredResult5,
10
10
  resolveStoredApiResponse
11
- } from "./chunk-B42R2SPU.js";
11
+ } from "./chunk-2X6UAPAC.js";
12
12
  import {
13
13
  loadConfig
14
- } from "./chunk-WR4PA335.js";
14
+ } from "./chunk-DWK6NIJF.js";
15
15
  import {
16
16
  isMachineFormat
17
17
  } from "./chunk-HGMYEDAQ.js";
18
18
  import {
19
19
  determineCitationState
20
- } from "./chunk-43CPBLRJ.js";
20
+ } from "./chunk-SS33RWKG.js";
21
21
  import {
22
22
  backfillProjectAnswerMentions,
23
23
  competitorIdentityColumns,
24
24
  createRunCompetitorResolver,
25
25
  readMarketCompetitorNames,
26
26
  refreshSnapshotMentionIdentity
27
- } from "./chunk-6SVAUILQ.js";
27
+ } from "./chunk-JVO5GQZH.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-BIGIIVGV.js";
41
+ } from "./chunk-L5R5S57T.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-K3OY52MI.js";
54
+ } from "./chunk-KNKOTLVW.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-GCN4S6QT.js");
432
+ const { IntelligenceService } = await import("./intelligence-service-YJFZ6IBI.js");
433
433
  const config = loadConfig();
434
434
  const db = createClient(config.database);
435
435
  migrate(db);
@@ -811,7 +811,11 @@ async function backfillTrafficClassificationCommand(opts) {
811
811
  samplesRemoved: stored.samples.removed,
812
812
  dryRun: isDryRun,
813
813
  byBot,
814
- unrecognized: stored.unrecognized
814
+ unrecognized: stored.unrecognized,
815
+ agentHits: stored.agentHits,
816
+ agentRequests: stored.agentRequests,
817
+ journeys: stored.journeys,
818
+ journeyMerges: stored.journeyMerges
815
819
  }, isJson);
816
820
  }
817
821
  function emitTrafficClassificationReport(result, isJson) {
@@ -827,6 +831,10 @@ Traffic classification ${result.dryRun ? "preview" : "recovery"} complete.`);
827
831
  console.log(` Unknown before: ${result.unknownBefore}`);
828
832
  console.log(` Unknown after: ${result.unknownAfter}`);
829
833
  console.log(` Unrecognized rows: ${result.unrecognized.examined} examined, ${result.unrecognized.moved} moved to a bot (${result.unrecognized.movedHits} hits), ${result.unrecognized.renamed} renamed, ${result.unrecognized.removed} removed`);
834
+ console.log(` Fake agent hits: ${result.agentHits.moved} hourly rows moved to likely fake (${result.agentHits.movedHits} hits)`);
835
+ console.log(` Agent requests: ${result.agentRequests.removed} removed (${result.agentRequests.probes} asked for a scanner path)`);
836
+ console.log(` Journeys: ${result.journeys.visitorsRemoved} visitors and ${result.journeys.visitsRemoved} visits removed, ${result.journeys.visitsRelanded} visits now start at a different page`);
837
+ console.log(` Split visitors: ${result.journeyMerges.visitorsMerged} joined to the same person's first visitor, seen from another IP (${result.journeyMerges.visitsJoined} visits merged)`);
830
838
  if (Object.keys(result.byBot).length > 0) {
831
839
  console.log(` By bot:`);
832
840
  const sorted = Object.entries(result.byBot).sort(([, a], [, b]) => b - a);
@@ -18827,7 +18827,9 @@ var agentTrustReasonSchema = z57.enum([
18827
18827
  /** The operator publishes a full user-agent string and this one differs from it. */
18828
18828
  "unusual-user-agent",
18829
18829
  /** The path asks for secrets, version-control data, admin logins or traverses directories. */
18830
- "scanner-path"
18830
+ "scanner-path",
18831
+ /** The same client (one IP) asked for scanner paths within a few minutes of this request. */
18832
+ "scanner-burst"
18831
18833
  ]);
18832
18834
  var AgentTrustReasons = agentTrustReasonSchema.enum;
18833
18835
  var trafficVerificationManifestSchema = z57.object({
@@ -20,7 +20,7 @@ import {
20
20
  templateLinkRatio,
21
21
  templateLinkUbiquityAvailable,
22
22
  validationError
23
- } from "./chunk-K3OY52MI.js";
23
+ } from "./chunk-KNKOTLVW.js";
24
24
  import {
25
25
  __export
26
26
  } from "./chunk-MLKGABMK.js";
@@ -47,6 +47,7 @@ __export(schema_exports, {
47
47
  agentJourneyCaptureDays: () => agentJourneyCaptureDays,
48
48
  agentJourneyEvents: () => agentJourneyEvents,
49
49
  agentMemory: () => agentMemory,
50
+ agentScannerClients: () => agentScannerClients,
50
51
  agentSessions: () => agentSessions,
51
52
  agentToolEvents: () => agentToolEvents,
52
53
  aiReferralEventsHourly: () => aiReferralEventsHourly,
@@ -112,6 +113,7 @@ __export(schema_exports, {
112
113
  insightNotifyState: () => insightNotifyState,
113
114
  insights: () => insights,
114
115
  journeyEvents: () => journeyEvents,
116
+ journeyVisitorAliases: () => journeyVisitorAliases,
115
117
  journeyVisitors: () => journeyVisitors,
116
118
  journeyVisits: () => journeyVisits,
117
119
  llmUsageEvents: () => llmUsageEvents,
@@ -2687,6 +2689,15 @@ var journeyVisitors = sqliteTable2("journey_visitors", {
2687
2689
  index2("idx_journey_visitors_project_first_ai").on(table.projectId, table.firstAiAt),
2688
2690
  index2("idx_journey_visitors_last_seen").on(table.lastSeenAt)
2689
2691
  ]);
2692
+ var journeyVisitorAliases = sqliteTable2("journey_visitor_aliases", {
2693
+ projectId: text2("project_id").notNull().references(() => projects.id, { onDelete: "cascade" }),
2694
+ aliasKey: text2("alias_key").notNull(),
2695
+ visitorKey: text2("visitor_key").notNull(),
2696
+ createdAt: text2("created_at").notNull()
2697
+ }, (table) => [
2698
+ primaryKey2({ columns: [table.projectId, table.aliasKey] }),
2699
+ index2("idx_journey_visitor_aliases_visitor").on(table.projectId, table.visitorKey)
2700
+ ]);
2690
2701
  var journeyVisits = sqliteTable2("journey_visits", {
2691
2702
  id: text2("id").primaryKey(),
2692
2703
  projectId: text2("project_id").notNull().references(() => projects.id, { onDelete: "cascade" }),
@@ -2764,6 +2775,17 @@ var agentJourneyCaptureDays = sqliteTable2("agent_journey_capture_days", {
2764
2775
  primaryKey2({ columns: [table.projectId, table.sourceId, table.day] }),
2765
2776
  index2("idx_agent_journey_capture_days_day").on(table.day)
2766
2777
  ]);
2778
+ var agentScannerClients = sqliteTable2("agent_scanner_clients", {
2779
+ projectId: text2("project_id").notNull().references(() => projects.id, { onDelete: "cascade" }),
2780
+ sourceId: text2("source_id").notNull().references(() => trafficSources.id, { onDelete: "cascade" }),
2781
+ clientKey: text2("client_key").notNull(),
2782
+ firstProbeAt: text2("first_probe_at").notNull(),
2783
+ lastProbeAt: text2("last_probe_at").notNull(),
2784
+ updatedAt: text2("updated_at").notNull()
2785
+ }, (table) => [
2786
+ primaryKey2({ columns: [table.projectId, table.sourceId, table.clientKey] }),
2787
+ index2("idx_agent_scanner_clients_source_last").on(table.sourceId, table.lastProbeAt)
2788
+ ]);
2767
2789
  var discoverySessions = sqliteTable2("discovery_sessions", {
2768
2790
  id: text2("id").primaryKey(),
2769
2791
  projectId: text2("project_id").notNull().references(() => projects.id, { onDelete: "cascade" }),
@@ -8557,6 +8579,36 @@ var MIGRATION_VERSIONS = [
8557
8579
  result_json TEXT
8558
8580
  )`
8559
8581
  ]
8582
+ },
8583
+ {
8584
+ version: 205,
8585
+ name: "agent-scanner-clients",
8586
+ statements: [
8587
+ `CREATE TABLE IF NOT EXISTS agent_scanner_clients (
8588
+ project_id TEXT NOT NULL REFERENCES projects(id) ON DELETE CASCADE,
8589
+ source_id TEXT NOT NULL REFERENCES traffic_sources(id) ON DELETE CASCADE,
8590
+ client_key TEXT NOT NULL,
8591
+ first_probe_at TEXT NOT NULL,
8592
+ last_probe_at TEXT NOT NULL,
8593
+ updated_at TEXT NOT NULL,
8594
+ PRIMARY KEY (project_id, source_id, client_key)
8595
+ )`,
8596
+ `CREATE INDEX IF NOT EXISTS idx_agent_scanner_clients_source_last ON agent_scanner_clients(source_id, last_probe_at)`
8597
+ ]
8598
+ },
8599
+ {
8600
+ version: 206,
8601
+ name: "journey-visitor-aliases",
8602
+ statements: [
8603
+ `CREATE TABLE IF NOT EXISTS journey_visitor_aliases (
8604
+ project_id TEXT NOT NULL REFERENCES projects(id) ON DELETE CASCADE,
8605
+ alias_key TEXT NOT NULL,
8606
+ visitor_key TEXT NOT NULL,
8607
+ created_at TEXT NOT NULL,
8608
+ PRIMARY KEY (project_id, alias_key)
8609
+ )`,
8610
+ `CREATE INDEX IF NOT EXISTS idx_journey_visitor_aliases_visitor ON journey_visitor_aliases(project_id, visitor_key)`
8611
+ ]
8560
8612
  }
8561
8613
  ];
8562
8614
  var AERO_LEDGER_REBUILDS = [
@@ -10070,10 +10122,12 @@ export {
10070
10122
  rawEventSamples,
10071
10123
  RawEventSampleEventTypes,
10072
10124
  journeyVisitors,
10125
+ journeyVisitorAliases,
10073
10126
  journeyVisits,
10074
10127
  journeyEvents,
10075
10128
  agentJourneyEvents,
10076
10129
  agentJourneyCaptureDays,
10130
+ agentScannerClients,
10077
10131
  discoverySessions,
10078
10132
  researchRuns,
10079
10133
  researchRunQueries,
@@ -7,12 +7,12 @@ import {
7
7
  import {
8
8
  createApiClient,
9
9
  runWithUsageTags
10
- } from "./chunk-AAKRCOQV.js";
10
+ } from "./chunk-UMV4HYHD.js";
11
11
  import {
12
12
  canonryMcpTools,
13
13
  mcpOutputSchema,
14
14
  toolOperationAccess
15
- } from "./chunk-ZRL5FO5G.js";
15
+ } from "./chunk-Q7354YI3.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-K3OY52MI.js";
28
+ } from "./chunk-KNKOTLVW.js";
29
29
 
30
30
  // src/mcp/server.ts
31
31
  import { randomUUID } from "crypto";
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-HGMYEDAQ.js";
5
5
  import {
6
6
  describeError
7
- } from "./chunk-K3OY52MI.js";
7
+ } from "./chunk-KNKOTLVW.js";
8
8
 
9
9
  // src/gsc-sitemap-submission.ts
10
10
  function dedupeGscSitemapUrls(urls) {
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  createApiClient
3
- } from "./chunk-AAKRCOQV.js";
3
+ } from "./chunk-UMV4HYHD.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-K3OY52MI.js";
22
+ } from "./chunk-KNKOTLVW.js";
23
23
 
24
24
  // src/commands/run.ts
25
25
  function getClient() {
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  API_PROVIDER_NAMES,
3
3
  ProviderNames
4
- } from "./chunk-K3OY52MI.js";
4
+ } from "./chunk-KNKOTLVW.js";
5
5
 
6
6
  // src/provider-registration.ts
7
7
  function isApiProviderRegistrable(name, entry) {
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  USAGE_TELEMETRY_HEADERS,
3
3
  redactLogString
4
- } from "./chunk-K3OY52MI.js";
4
+ } from "./chunk-KNKOTLVW.js";
5
5
 
6
6
  // ../api-routes/src/request-context.ts
7
7
  import { AsyncLocalStorage } from "async_hooks";
@@ -2,11 +2,11 @@ import {
2
2
  dedupeGscSitemapUrls,
3
3
  resolveDiscoveredGscSitemapUrls,
4
4
  submitGscSitemapBatches
5
- } from "./chunk-CEOIGQTS.js";
5
+ } from "./chunk-OHDSI5XS.js";
6
6
  import {
7
7
  measurementDraftOperationSchema,
8
8
  runMeasurementDraftAction
9
- } from "./chunk-LYNYNNOD.js";
9
+ } from "./chunk-QEATYB7C.js";
10
10
  import {
11
11
  CliError
12
12
  } from "./chunk-HGMYEDAQ.js";
@@ -184,7 +184,7 @@ import {
184
184
  trafficUnrecognizedAgentsQuerySchema,
185
185
  visibilityCompareSelectionSchema,
186
186
  visibilityReportRequestSchema
187
- } from "./chunk-K3OY52MI.js";
187
+ } from "./chunk-KNKOTLVW.js";
188
188
 
189
189
  // src/mcp/tool-registry.ts
190
190
  import { z as z2 } from "zod";
@@ -23,7 +23,7 @@ import {
23
23
  measurementDraftUpsertGroupRequestSchema,
24
24
  measurementDraftUpsertMarketRequestSchema,
25
25
  measurementDraftUpsertTargetRequestSchema
26
- } from "./chunk-K3OY52MI.js";
26
+ } from "./chunk-KNKOTLVW.js";
27
27
 
28
28
  // src/measurement-draft-actions.ts
29
29
  import { z } from "zod";
@@ -5,7 +5,7 @@ import {
5
5
  siteCrawlGraphNodes,
6
6
  siteCrawlPages,
7
7
  siteCrawlSnapshots
8
- } from "./chunk-BIGIIVGV.js";
8
+ } from "./chunk-L5R5S57T.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-K3OY52MI.js";
18
+ } from "./chunk-KNKOTLVW.js";
19
19
 
20
20
  // src/site-audit-factors.ts
21
21
  function recordedSharePct(factor) {
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  hostMatchesDomain
3
- } from "./chunk-K3OY52MI.js";
3
+ } from "./chunk-KNKOTLVW.js";
4
4
 
5
5
  // src/citation-utils.ts
6
6
  function pickProjectCitedDomain(citedDomains, projectDomains) {
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  trackIntegrationConnection
3
- } from "./chunk-UYR5JI6R.js";
3
+ } from "./chunk-ZXMDIWW6.js";
4
4
  import {
5
5
  cliRuntimeContext
6
- } from "./chunk-LE6ZODCY.js";
6
+ } from "./chunk-X7XKMARG.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-3EI4FHR5.js";
8
+ } from "./chunk-UMEQ7EYN.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-WR4PA335.js";
26
+ } from "./chunk-DWK6NIJF.js";
27
27
  import {
28
28
  CanonryMcpToolNames,
29
29
  canonryMcpTools
30
- } from "./chunk-ZRL5FO5G.js";
30
+ } from "./chunk-Q7354YI3.js";
31
31
  import {
32
32
  createLogger
33
- } from "./chunk-WJITVHAU.js";
33
+ } from "./chunk-6SGHSSWQ.js";
34
34
  import {
35
35
  agentToolEvents,
36
36
  llmUsageEvents
37
- } from "./chunk-BIGIIVGV.js";
37
+ } from "./chunk-L5R5S57T.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-K3OY52MI.js";
46
+ } from "./chunk-KNKOTLVW.js";
47
47
 
48
48
  // src/agent/session.ts
49
49
  import fs2 from "fs";
@@ -1,16 +1,16 @@
1
1
  import {
2
2
  runWithUsageTags
3
- } from "./chunk-AAKRCOQV.js";
3
+ } from "./chunk-UMV4HYHD.js";
4
4
  import {
5
5
  CanonryMcpToolNames,
6
6
  canonryMcpTools
7
- } from "./chunk-ZRL5FO5G.js";
7
+ } from "./chunk-Q7354YI3.js";
8
8
  import {
9
9
  CliError
10
10
  } from "./chunk-HGMYEDAQ.js";
11
11
  import {
12
12
  buildOpenApiDocument
13
- } from "./chunk-6SVAUILQ.js";
13
+ } from "./chunk-JVO5GQZH.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-K3OY52MI.js";
26
+ } from "./chunk-KNKOTLVW.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-WR4PA335.js";
3
+ } from "./chunk-DWK6NIJF.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-K3OY52MI.js";
39
+ } from "./chunk-KNKOTLVW.js";
40
40
 
41
41
  // ../api-client-generated/src/generated/core/bodySerializer.gen.ts
42
42
  var jsonBodySerializer = {
@@ -4,14 +4,14 @@ import {
4
4
  } from "./chunk-VJWDBFSL.js";
5
5
  import {
6
6
  createApiClient
7
- } from "./chunk-AAKRCOQV.js";
7
+ } from "./chunk-UMV4HYHD.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-K3OY52MI.js";
14
+ } from "./chunk-KNKOTLVW.js";
15
15
 
16
16
  // src/commands/mcp.ts
17
17
  import fs from "fs";
@@ -5,7 +5,7 @@ import {
5
5
  loadConfig,
6
6
  loadConfigRaw,
7
7
  saveConfigPatch
8
- } from "./chunk-WR4PA335.js";
8
+ } from "./chunk-DWK6NIJF.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-K3OY52MI.js";
21
+ } from "./chunk-KNKOTLVW.js";
22
22
 
23
23
  // src/runtime-context.ts
24
24
  function cliRuntimeContext(env = process.env, stdio = process) {
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  answerServiceAdapters,
3
3
  answerServiceDescriptors
4
- } from "./chunk-Q57GN464.js";
4
+ } from "./chunk-AICFUZ6X.js";
5
5
  import {
6
6
  AeroLlmUsageFeatures,
7
7
  aeroTurnStatus,
@@ -27,14 +27,14 @@ import {
27
27
  resolveConfiguredAgentProvider,
28
28
  resolveSessionProviderAndModel,
29
29
  setAeroSystemPrompt
30
- } from "./chunk-MZDIWY3K.js";
30
+ } from "./chunk-TVZMFCX2.js";
31
31
  import {
32
32
  AeroToolProfiles,
33
33
  AeroToolScopes,
34
34
  buildAeroStateTools,
35
35
  isAeroToolProfile,
36
36
  truncateToolResult
37
- } from "./chunk-3EI4FHR5.js";
37
+ } from "./chunk-UMEQ7EYN.js";
38
38
  import {
39
39
  getGoogleAuthConfig,
40
40
  getGoogleConnection,
@@ -53,7 +53,7 @@ import {
53
53
  removeCloudflareTrafficConnection,
54
54
  removeCloudflareTrafficConnectionBySourceId,
55
55
  upsertCloudflareTrafficConnection
56
- } from "./chunk-2MROJL32.js";
56
+ } from "./chunk-BQTXXXUG.js";
57
57
  import {
58
58
  claudeAdapter,
59
59
  embedQueries,
@@ -65,7 +65,7 @@ import {
65
65
  openrouterAdapter,
66
66
  perplexityAdapter,
67
67
  startTrafficReclassification
68
- } from "./chunk-B42R2SPU.js";
68
+ } from "./chunk-2X6UAPAC.js";
69
69
  import {
70
70
  classifyUsageSurface,
71
71
  createApiUsageTelemetry,
@@ -77,7 +77,7 @@ import {
77
77
  startOutcomeTimer,
78
78
  trackFeatureCompleted,
79
79
  trackInstallState
80
- } from "./chunk-UYR5JI6R.js";
80
+ } from "./chunk-ZXMDIWW6.js";
81
81
  import {
82
82
  isLoopbackBindHost
83
83
  } from "./chunk-TSENU4GG.js";
@@ -85,7 +85,7 @@ import {
85
85
  isApiProviderRegistrable,
86
86
  isCdpProviderRegistrable,
87
87
  registeredProviderNames
88
- } from "./chunk-OMUINNSO.js";
88
+ } from "./chunk-PQWZCAVS.js";
89
89
  import {
90
90
  checkLatestVersionForServer,
91
91
  getOrCreateAnonymousId,
@@ -97,17 +97,17 @@ import {
97
97
  recordDashboardEvent,
98
98
  setTelemetryPreference,
99
99
  trackEvent
100
- } from "./chunk-LE6ZODCY.js";
100
+ } from "./chunk-X7XKMARG.js";
101
101
  import {
102
102
  createCanonryMcpServer
103
- } from "./chunk-GJE3OG4Y.js";
103
+ } from "./chunk-NY252PIY.js";
104
104
  import {
105
105
  CANONRY_MCP_TIERS,
106
106
  CANONRY_MCP_TOOLKIT_NAMES
107
107
  } from "./chunk-MTW37GXF.js";
108
108
  import {
109
109
  ApiClient
110
- } from "./chunk-AAKRCOQV.js";
110
+ } from "./chunk-UMV4HYHD.js";
111
111
  import {
112
112
  AGENT_PROVIDERS,
113
113
  adapterSupportsBatch,
@@ -139,21 +139,21 @@ import {
139
139
  saveConfigPatch,
140
140
  sentimentInstallReadiness,
141
141
  updateSharedProviderExecutionGate
142
- } from "./chunk-WR4PA335.js";
142
+ } from "./chunk-DWK6NIJF.js";
143
143
  import {
144
144
  getBundledSkillSnapshots
145
- } from "./chunk-YPR2GVJC.js";
145
+ } from "./chunk-GR7VVRNN.js";
146
146
  import {
147
147
  computeFactorAverages,
148
148
  deleteSiteCrawlGraphLayout,
149
149
  persistSiteCrawlGraphLayout,
150
150
  prepareSiteCrawlGraphLayout,
151
151
  recordedSharePct
152
- } from "./chunk-OBGP3DRQ.js";
152
+ } from "./chunk-RCAB7M6A.js";
153
153
  import {
154
154
  CanonryMcpToolNames,
155
155
  canonryMcpTools
156
- } from "./chunk-ZRL5FO5G.js";
156
+ } from "./chunk-Q7354YI3.js";
157
157
  import {
158
158
  PACKAGE_VERSION
159
159
  } from "./chunk-AOJU5LKX.js";
@@ -162,16 +162,16 @@ import {
162
162
  } from "./chunk-HGMYEDAQ.js";
163
163
  import {
164
164
  IntelligenceService
165
- } from "./chunk-EMSZDVDP.js";
165
+ } from "./chunk-2O5XBKEO.js";
166
166
  import {
167
167
  computeCitedCompetitorDomains,
168
168
  determineCitationState
169
- } from "./chunk-43CPBLRJ.js";
169
+ } from "./chunk-SS33RWKG.js";
170
170
  import {
171
171
  addLogListener,
172
172
  createFastifyLogger,
173
173
  createLogger
174
- } from "./chunk-WJITVHAU.js";
174
+ } from "./chunk-6SGHSSWQ.js";
175
175
  import {
176
176
  BingApiError,
177
177
  CC_CACHE_DIR,
@@ -292,7 +292,7 @@ import {
292
292
  webhookResponseReason,
293
293
  webhookTargetRefusalReason,
294
294
  writeAuditLog
295
- } from "./chunk-6SVAUILQ.js";
295
+ } from "./chunk-JVO5GQZH.js";
296
296
  import {
297
297
  OperationalLogStore,
298
298
  SentimentIdempotencyConflict,
@@ -380,7 +380,7 @@ import {
380
380
  unrecognizedAgentEventsHourly,
381
381
  unrecognizedAgentNotifyState,
382
382
  usageCounters
383
- } from "./chunk-BIGIIVGV.js";
383
+ } from "./chunk-L5R5S57T.js";
384
384
  import {
385
385
  AGENT_MEMORY_VALUE_MAX_BYTES,
386
386
  AI_ENGINE_DOMAINS,
@@ -636,7 +636,7 @@ import {
636
636
  winnabilityClassLabel,
637
637
  withRetry,
638
638
  withSkippedProviders
639
- } from "./chunk-K3OY52MI.js";
639
+ } from "./chunk-KNKOTLVW.js";
640
640
 
641
641
  // src/google-marketing-runtime.ts
642
642
  import crypto2 from "crypto";
@@ -5940,7 +5940,7 @@ function nonBlank(value) {
5940
5940
  return trimmed ? trimmed : void 0;
5941
5941
  }
5942
5942
  function resolveBuildCommit(env = process.env) {
5943
- const embedded = true ? "88b182f4672a0864706cb31d16b494faad16468d" : void 0;
5943
+ const embedded = true ? "ed62f44ef9bf14227395974f927ea4de5e6b1b79" : void 0;
5944
5944
  return nonBlank(embedded) ?? nonBlank(env.CANONRY_COMMIT);
5945
5945
  }
5946
5946
  function resolveInstanceIdentity(env = process.env) {
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  createApiClient
3
- } from "./chunk-AAKRCOQV.js";
3
+ } from "./chunk-UMV4HYHD.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-LYNYNNOD.js";
10
+ } from "./chunk-QEATYB7C.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-K3OY52MI.js";
40
+ } from "./chunk-KNKOTLVW.js";
41
41
 
42
42
  // src/commands/measurement-plan.ts
43
43
  import crypto from "crypto";