@canonry/canonry 7.92.0 → 7.93.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 (138) hide show
  1. package/assets/agent-workspace/skills/canonry/references/server-side-traffic.md +2 -0
  2. package/assets/assets/{AgentSetupPage-Dr5ZoPYi.js → AgentSetupPage-D53_2n_4.js} +1 -1
  3. package/assets/assets/{AuditHistoryPanel-Dc8pGeZT.js → AuditHistoryPanel-BFRuRv_c.js} +1 -1
  4. package/assets/assets/{BacklinksPage-zEaP7G6s.js → BacklinksPage-DpSbhjVf.js} +1 -1
  5. package/assets/assets/{HistoryPage-9OaxBSY8.js → HistoryPage-1z0GDe6W.js} +1 -1
  6. package/assets/assets/{MeasurementPropertyPage-k_mqkoWn.js → MeasurementPropertyPage-Dzjx179C.js} +1 -1
  7. package/assets/assets/{ProjectPage-vgHaFT7S.js → ProjectPage-BgPs3YQG.js} +1 -1
  8. package/assets/assets/{RunsPage-CXkefezd.js → RunsPage-DpsqauyB.js} +1 -1
  9. package/assets/assets/{SettingsPage-C8FUNUN5.js → SettingsPage-ChIbt7x6.js} +1 -1
  10. package/assets/assets/{SiteHealthSection-C94uYTE3.js → SiteHealthSection-B-79VmOp.js} +2 -2
  11. package/assets/assets/{ToneBadge-COrS2zpP.js → ToneBadge-Cx8uzsd6.js} +1 -1
  12. package/assets/assets/{TrafficPage-KlGx3-bc.js → TrafficPage-yoq0n5vi.js} +1 -1
  13. package/assets/assets/TrafficSourceDetailPage-eCf7k39J.js +1 -0
  14. package/assets/assets/{account-context-F2VRKRtu.js → account-context-vYgW6LGe.js} +1 -1
  15. package/assets/assets/{agent-trust-copy-Hb775a57.js → agent-trust-copy-CJ7pZlY5.js} +1 -1
  16. package/assets/assets/{card-P1VA-JnV.js → card-CArOADSj.js} +1 -1
  17. package/assets/assets/{format-helpers-COfTmLRL.js → format-helpers-kCHfk00b.js} +1 -1
  18. package/assets/assets/{index-DHrWeA6k.js → index-9HU3ZsRh.js} +4 -4
  19. package/assets/assets/index-DsdpvA7m.css +1 -0
  20. package/assets/assets/{query-client-BHtq57Sw.js → query-client-DWFpwopf.js} +1 -1
  21. package/assets/assets/{react-query-IhpEAOba.js → react-query-DdeD3n1W.js} +1 -1
  22. package/assets/assets/{react-sigma_core.esm.min-B4NX5_aX.js → react-sigma_core.esm.min-CaW_CBlP.js} +1 -1
  23. package/assets/assets/server-traffic-B1Fb2oFZ.js +1 -0
  24. package/assets/assets/{service-m9l8my0x.js → service-Cu6wI40I.js} +1 -1
  25. package/assets/index.html +8 -8
  26. package/dist/{ads-LRHVFP2J.js → ads-X3VXFPB7.js} +3 -3
  27. package/dist/{agent-P7HWL7VX.js → agent-VVPPGM2P.js} +7 -7
  28. package/dist/{agent-ask-S374MIJS.js → agent-ask-FJVCKO3R.js} +3 -3
  29. package/dist/{agent-conversations-3SSKVUYG.js → agent-conversations-5YXYDZEK.js} +3 -3
  30. package/dist/{agent-journeys-ZEO7Z4QR.js → agent-journeys-DBMYKLJX.js} +3 -3
  31. package/dist/{agent-memory-E5YVW5WY.js → agent-memory-7HOF4LNF.js} +3 -3
  32. package/dist/{agent-providers-BWWB42XJ.js → agent-providers-AO25NSCX.js} +3 -3
  33. package/dist/{agent-transcript-YG7TTHWS.js → agent-transcript-IRZ2QDU7.js} +3 -3
  34. package/dist/{analytics-AIKX4BUM.js → analytics-RH5NXDQX.js} +3 -3
  35. package/dist/{apply-5MPSMIKM.js → apply-XNTW4GYA.js} +3 -3
  36. package/dist/{backfill-BUTFX4KY.js → backfill-O6BON2NA.js} +10 -10
  37. package/dist/{backlinks-L6BYIJIK.js → backlinks-VHK5TJU4.js} +3 -3
  38. package/dist/{bing-E4ZSEVQV.js → bing-A4SQ5MIN.js} +3 -3
  39. package/dist/{bootstrap-V7OE6XXB.js → bootstrap-I2NLTHBM.js} +10 -10
  40. package/dist/{cdp-LWNX6UZF.js → cdp-LAD7DM6U.js} +7 -7
  41. package/dist/{chunk-7PKMRO33.js → chunk-2OJJPSFS.js} +4 -4
  42. package/dist/{chunk-EWZOL56J.js → chunk-2ORBI7PS.js} +3 -3
  43. package/dist/{chunk-QER7MSUH.js → chunk-3SVI6OY3.js} +7 -7
  44. package/dist/{chunk-4HLR3DRQ.js → chunk-4CPCYR5M.js} +1 -1
  45. package/dist/{chunk-UMTYAPCQ.js → chunk-4UA2Y24K.js} +6 -5
  46. package/dist/{chunk-4QYGB5IC.js → chunk-5LLEZ6YL.js} +1 -1
  47. package/dist/{chunk-76KBMLPR.js → chunk-5X6CWQ6P.js} +1 -1
  48. package/dist/{chunk-WTZZOUOJ.js → chunk-67WZEUEE.js} +5 -5
  49. package/dist/{chunk-ZTCQVHQV.js → chunk-7BEQY4YS.js} +2 -2
  50. package/dist/{chunk-N2EWSWZD.js → chunk-7RWVMCMK.js} +1 -1
  51. package/dist/{chunk-AUC47DFW.js → chunk-AAUJZ43Q.js} +1 -1
  52. package/dist/{chunk-BTYOU24P.js → chunk-BOUEM6D6.js} +2 -2
  53. package/dist/{chunk-ZPVJ5PVB.js → chunk-CM3BXAMM.js} +2 -2
  54. package/dist/{chunk-3WWSOWXP.js → chunk-CWEEHODU.js} +2 -2
  55. package/dist/{chunk-FYYOX7UY.js → chunk-GO5OUMY5.js} +13 -1
  56. package/dist/{chunk-7534NXSP.js → chunk-GS3KXIFK.js} +1 -1
  57. package/dist/{chunk-H3PWMM4K.js → chunk-HE4ZCVSF.js} +1 -1
  58. package/dist/{chunk-P6ZDIVFZ.js → chunk-IFVVXGLK.js} +1 -1
  59. package/dist/{chunk-K7ZG6K7J.js → chunk-J6QOUWDQ.js} +1 -1
  60. package/dist/{chunk-QWEAORJG.js → chunk-LWVLQCQH.js} +28 -24
  61. package/dist/{chunk-YX33HYHZ.js → chunk-N6CIAFEO.js} +358 -358
  62. package/dist/{chunk-TY5YTNLU.js → chunk-OLEMJTEJ.js} +2 -2
  63. package/dist/{chunk-BZGAMJG2.js → chunk-ON4G7RCY.js} +5 -5
  64. package/dist/{chunk-CIP3CE2C.js → chunk-QBMMHMDZ.js} +3 -3
  65. package/dist/{chunk-DEFHTBJV.js → chunk-QXT6QVBE.js} +1 -1
  66. package/dist/{chunk-O7D7KV75.js → chunk-SNQVHD2O.js} +3 -3
  67. package/dist/{chunk-GIF3HZKN.js → chunk-SOJIEKH6.js} +70 -22
  68. package/dist/{chunk-WONUYAKB.js → chunk-U3DFWCTU.js} +4 -4
  69. package/dist/{chunk-JZVTSC2V.js → chunk-U3KBGIJ6.js} +2 -2
  70. package/dist/{chunk-GNHXSSQM.js → chunk-UPUJSQ2U.js} +2 -2
  71. package/dist/{chunk-XYQMPYWE.js → chunk-VFYZVQVX.js} +1 -1
  72. package/dist/{chunk-T5DH6FEH.js → chunk-VNPYFXO5.js} +1 -1
  73. package/dist/{chunk-D2RMGUAK.js → chunk-VYZIXIDN.js} +6 -6
  74. package/dist/{chunk-73PWU5XA.js → chunk-WCUXKDJZ.js} +4 -4
  75. package/dist/{chunk-U3T37P7H.js → chunk-YUHP5IUB.js} +3 -3
  76. package/dist/{citations-BYSB6NON.js → citations-D2ZLKEAZ.js} +3 -3
  77. package/dist/{cli-catalog-CFCLMVSK.js → cli-catalog-ZJX65B35.js} +3 -3
  78. package/dist/{cli-commands-OPH4K73Q.js → cli-commands-BSX2GGJL.js} +7 -7
  79. package/dist/cli.js +13 -13
  80. package/dist/{competitor-DUYU7EL7.js → competitor-GMBE6HDJ.js} +3 -3
  81. package/dist/{content-OGURKOCE.js → content-V7VKNFRA.js} +3 -3
  82. package/dist/{dashboard-QX4IBLGW.js → dashboard-DOIM7F3F.js} +6 -6
  83. package/dist/{demo-SZ5CPFPS.js → demo-TKNEM6WC.js} +1 -1
  84. package/dist/{demo-server-JIEIMLLU.js → demo-server-K6LAEKGV.js} +12 -12
  85. package/dist/{discover-SHUCBUDJ.js → discover-TALBBFX7.js} +3 -3
  86. package/dist/{discover-eval-3ZTYLTGU.js → discover-eval-2R3F3C7O.js} +3 -3
  87. package/dist/{doctor-FRSV5GAR.js → doctor-UW7QBZR3.js} +3 -3
  88. package/dist/{evidence-7UJHNILW.js → evidence-CMXDXINS.js} +3 -3
  89. package/dist/{export-cmd-2DAWSD52.js → export-cmd-HO6K6ZDO.js} +3 -3
  90. package/dist/{ga-K2EVI3KO.js → ga-VSS5Z44P.js} +3 -3
  91. package/dist/{gbp-NXFINC7N.js → gbp-RYMAOVON.js} +3 -3
  92. package/dist/{google-J4T52EIG.js → google-RZQSM3VZ.js} +4 -4
  93. package/dist/{google-marketing-PZGKZPEB.js → google-marketing-ULMGHDFF.js} +1 -1
  94. package/dist/{health-cmd-5IHX5GRQ.js → health-cmd-5AJLSCWH.js} +3 -3
  95. package/dist/{history-IVO5IVH2.js → history-ZEWDWGKK.js} +3 -3
  96. package/dist/index.d.ts +88 -88
  97. package/dist/index.js +25 -25
  98. package/dist/{init-EMXK7MX6.js → init-NAMFIDDT.js} +12 -12
  99. package/dist/{insights-SPA2BVMV.js → insights-F747HGKV.js} +3 -3
  100. package/dist/intelligence-service-7FVMY2WA.js +16 -0
  101. package/dist/{journeys-7FAHZRGP.js → journeys-IN6PKYC6.js} +3 -3
  102. package/dist/{keys-PPBHRYPZ.js → keys-JPOCEVCO.js} +3 -3
  103. package/dist/{keyword-C4ULYIWF.js → keyword-P6EYHLKS.js} +3 -3
  104. package/dist/{logs-X7NQN4UT.js → logs-3WC6OWDD.js} +3 -3
  105. package/dist/{mcp-ERMFW6WJ.js → mcp-LU6BKIGI.js} +4 -4
  106. package/dist/mcp.js +9 -9
  107. package/dist/{measurement-plan-7IPWYNIC.js → measurement-plan-G4E42X4M.js} +5 -5
  108. package/dist/{notify-AC4ZHLUK.js → notify-ADPO6H5M.js} +3 -3
  109. package/dist/{organic-evidence-GDDMNJHN.js → organic-evidence-6C4ADEAQ.js} +3 -3
  110. package/dist/{overview-7VCUIYQE.js → overview-NLKLGTIL.js} +4 -4
  111. package/dist/{project-N4RGX5CT.js → project-4QVFGUPT.js} +3 -3
  112. package/dist/{query-Y7LGD6PG.js → query-6JVOPG7E.js} +3 -3
  113. package/dist/{research-WTZO3D7B.js → research-NG2HHDTB.js} +3 -3
  114. package/dist/{results-export-BYUFBWEK.js → results-export-RUBBBAKB.js} +3 -3
  115. package/dist/{run-SXMD6GW5.js → run-4ZM7F4T4.js} +4 -4
  116. package/dist/{schedule-UQFPQBHI.js → schedule-NYJD7QNS.js} +3 -3
  117. package/dist/{search-EJUJRZEE.js → search-Z5TMFDQD.js} +3 -3
  118. package/dist/{serve-3CD4TSE7.js → serve-ZHUBM33Q.js} +26 -26
  119. package/dist/{session-N77UGPQB.js → session-VNIHR75J.js} +13 -13
  120. package/dist/{settings-ZBP3KDJK.js → settings-2YWI2XEK.js} +3 -3
  121. package/dist/{sitemaps-KVROUSLB.js → sitemaps-PPRANFJS.js} +3 -3
  122. package/dist/{skills-AGAHFQD5.js → skills-WKAHQ42S.js} +2 -2
  123. package/dist/{snapshot-WDK6ZSJA.js → snapshot-J2RMG6IC.js} +3 -3
  124. package/dist/{src-XGUBO65J.js → src-ZNFSBJSC.js} +2 -2
  125. package/dist/{status-IFUJIB73.js → status-S7WMZ437.js} +4 -4
  126. package/dist/{technical-aeo-6KR3YH4X.js → technical-aeo-NKCIAWHJ.js} +3 -3
  127. package/dist/{telemetry-EZNMZMH6.js → telemetry-DT4BLD5L.js} +4 -4
  128. package/dist/{tools-BNRDF6UZ.js → tools-22WRA2TI.js} +11 -11
  129. package/dist/{traffic-7OSHD23C.js → traffic-HTBFYDKA.js} +10 -8
  130. package/dist/{trends-I3NWFNHX.js → trends-SHT3BBXE.js} +3 -3
  131. package/dist/{users-VBLZGMML.js → users-BV6QFK4Q.js} +3 -3
  132. package/dist/{visibility-stats-6YAV2MTM.js → visibility-stats-TGCKVC7I.js} +3 -3
  133. package/dist/{wordpress-EM3S3NDA.js → wordpress-LYXQ3AWR.js} +3 -3
  134. package/package.json +1 -1
  135. package/assets/assets/TrafficSourceDetailPage-BMs9kd7S.js +0 -1
  136. package/assets/assets/index-Bhpq6fUo.css +0 -1
  137. package/assets/assets/server-traffic-ykAWQo0I.js +0 -1
  138. package/dist/intelligence-service-CJNCXI4C.js +0 -16
@@ -1,25 +1,25 @@
1
1
  import {
2
2
  trackCliConnection
3
- } from "./chunk-ZTCQVHQV.js";
3
+ } from "./chunk-7BEQY4YS.js";
4
4
  import {
5
5
  answerServiceDescriptors
6
- } from "./chunk-DEFHTBJV.js";
6
+ } from "./chunk-QXT6QVBE.js";
7
7
  import {
8
8
  outcomeFailure
9
- } from "./chunk-WONUYAKB.js";
9
+ } from "./chunk-U3DFWCTU.js";
10
10
  import {
11
11
  isLoopbackBindHost
12
12
  } from "./chunk-TSENU4GG.js";
13
13
  import {
14
14
  registeredProviderNames
15
- } from "./chunk-N2EWSWZD.js";
15
+ } from "./chunk-7RWVMCMK.js";
16
16
  import {
17
17
  isTelemetryEnabled,
18
18
  recordInstallRef
19
- } from "./chunk-TY5YTNLU.js";
19
+ } from "./chunk-OLEMJTEJ.js";
20
20
  import {
21
21
  createApiClient
22
- } from "./chunk-ZPVJ5PVB.js";
22
+ } from "./chunk-CM3BXAMM.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-4QYGB5IC.js";
33
+ } from "./chunk-5LLEZ6YL.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-K7ZG6K7J.js";
41
+ import "./chunk-J6QOUWDQ.js";
42
42
  import {
43
43
  apiKeys,
44
44
  createClient,
45
45
  dashboardSessions,
46
46
  migrate
47
- } from "./chunk-H3PWMM4K.js";
47
+ } from "./chunk-HE4ZCVSF.js";
48
48
  import {
49
49
  ProviderNames,
50
50
  ProviderReloadErrorReasons
51
- } from "./chunk-FYYOX7UY.js";
51
+ } from "./chunk-GO5OUMY5.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-ZTCQVHQV.js";
3
+ } from "./chunk-7BEQY4YS.js";
4
4
  import {
5
5
  outcomeFailure
6
- } from "./chunk-WONUYAKB.js";
7
- import "./chunk-TY5YTNLU.js";
6
+ } from "./chunk-U3DFWCTU.js";
7
+ import "./chunk-OLEMJTEJ.js";
8
8
  import {
9
9
  createApiClient
10
- } from "./chunk-ZPVJ5PVB.js";
10
+ } from "./chunk-CM3BXAMM.js";
11
11
  import {
12
12
  loadConfig,
13
13
  saveConfigPatch
14
- } from "./chunk-4QYGB5IC.js";
14
+ } from "./chunk-5LLEZ6YL.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-K7ZG6K7J.js";
20
+ import "./chunk-J6QOUWDQ.js";
21
21
  import {
22
22
  describeError
23
- } from "./chunk-FYYOX7UY.js";
23
+ } from "./chunk-GO5OUMY5.js";
24
24
  import "./chunk-MLKGABMK.js";
25
25
 
26
26
  // src/commands/cdp.ts
@@ -1,16 +1,16 @@
1
1
  import {
2
2
  runWithUsageTags
3
- } from "./chunk-ZPVJ5PVB.js";
3
+ } from "./chunk-CM3BXAMM.js";
4
4
  import {
5
5
  CanonryMcpToolNames,
6
6
  canonryMcpTools
7
- } from "./chunk-UMTYAPCQ.js";
7
+ } from "./chunk-4UA2Y24K.js";
8
8
  import {
9
9
  CliError
10
10
  } from "./chunk-HGMYEDAQ.js";
11
11
  import {
12
12
  buildOpenApiDocument
13
- } from "./chunk-QWEAORJG.js";
13
+ } from "./chunk-LWVLQCQH.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-FYYOX7UY.js";
26
+ } from "./chunk-GO5OUMY5.js";
27
27
 
28
28
  // src/agent/tools.ts
29
29
  import { Type as Type2 } from "@earendil-works/pi-ai";
@@ -2,18 +2,18 @@ import {
2
2
  configExists,
3
3
  loadConfigRaw,
4
4
  saveConfigPatch
5
- } from "./chunk-4QYGB5IC.js";
5
+ } from "./chunk-5LLEZ6YL.js";
6
6
  import {
7
7
  BUNDLED_SKILL_NAMES,
8
8
  installSkills
9
- } from "./chunk-T5DH6FEH.js";
9
+ } from "./chunk-VNPYFXO5.js";
10
10
  import {
11
11
  PACKAGE_VERSION
12
12
  } from "./chunk-AOJU5LKX.js";
13
13
  import {
14
14
  SKILL_MANIFEST_FILENAME,
15
15
  SkillsClients
16
- } from "./chunk-FYYOX7UY.js";
16
+ } from "./chunk-GO5OUMY5.js";
17
17
 
18
18
  // src/skills-autosync.ts
19
19
  import fs from "fs";
@@ -8,23 +8,23 @@ import {
8
8
  reparseStoredResult4,
9
9
  reparseStoredResult5,
10
10
  resolveStoredApiResponse
11
- } from "./chunk-BZGAMJG2.js";
11
+ } from "./chunk-ON4G7RCY.js";
12
12
  import {
13
13
  loadConfig
14
- } from "./chunk-4QYGB5IC.js";
14
+ } from "./chunk-5LLEZ6YL.js";
15
15
  import {
16
16
  isMachineFormat
17
17
  } from "./chunk-HGMYEDAQ.js";
18
18
  import {
19
19
  determineCitationState
20
- } from "./chunk-AUC47DFW.js";
20
+ } from "./chunk-AAUJZ43Q.js";
21
21
  import {
22
22
  backfillProjectAnswerMentions,
23
23
  competitorIdentityColumns,
24
24
  createRunCompetitorResolver,
25
25
  readMarketCompetitorNames,
26
26
  refreshSnapshotMentionIdentity
27
- } from "./chunk-QWEAORJG.js";
27
+ } from "./chunk-LWVLQCQH.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-H3PWMM4K.js";
41
+ } from "./chunk-HE4ZCVSF.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-FYYOX7UY.js";
54
+ } from "./chunk-GO5OUMY5.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-CJNCXI4C.js");
432
+ const { IntelligenceService } = await import("./intelligence-service-7FVMY2WA.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
  cloudflareQueueNameSchema
3
- } from "./chunk-FYYOX7UY.js";
3
+ } from "./chunk-GO5OUMY5.js";
4
4
 
5
5
  // src/cloudflare-traffic-config.ts
6
6
  function unsupportedDeliveryMode(deliveryMode) {
@@ -2,11 +2,11 @@ import {
2
2
  dedupeGscSitemapUrls,
3
3
  resolveDiscoveredGscSitemapUrls,
4
4
  submitGscSitemapBatches
5
- } from "./chunk-76KBMLPR.js";
5
+ } from "./chunk-5X6CWQ6P.js";
6
6
  import {
7
7
  measurementDraftOperationSchema,
8
8
  runMeasurementDraftAction
9
- } from "./chunk-XYQMPYWE.js";
9
+ } from "./chunk-VFYZVQVX.js";
10
10
  import {
11
11
  CliError
12
12
  } from "./chunk-HGMYEDAQ.js";
@@ -28,6 +28,7 @@ import {
28
28
  SENTIMENT_QUERY_PAGE_MAX,
29
29
  SEO_RUN_SCOPE,
30
30
  SEO_WRITE_SCOPE,
31
+ TRAFFIC_EVENT_KIND_FILTER_HINT,
31
32
  WINDOW_SETS,
32
33
  adsActivateTreeRequestSchema,
33
34
  adsAdCreateRequestSchema,
@@ -103,6 +104,7 @@ import {
103
104
  operationAccess,
104
105
  operationalLogListReadSchema,
105
106
  organicEvidencePeriodSchema,
107
+ parseTrafficEventKindFilter,
106
108
  projectConfigSchema,
107
109
  projectPatchRequestSchema,
108
110
  projectUpsertRequestSchema,
@@ -180,14 +182,13 @@ import {
180
182
  trafficConnectCloudRunRequestSchema,
181
183
  trafficConnectVercelRequestSchema,
182
184
  trafficConnectWordpressRequestSchema,
183
- trafficEventKindSchema,
184
185
  trafficSamplesQuerySchema,
185
186
  trafficSeriesGranularitySchema,
186
187
  trafficUnrecognizedAgentsQuerySchema,
187
188
  trendSurfaceSchema,
188
189
  visibilityCompareSelectionSchema,
189
190
  visibilityReportRequestSchema
190
- } from "./chunk-FYYOX7UY.js";
191
+ } from "./chunk-GO5OUMY5.js";
191
192
 
192
193
  // src/mcp/tool-registry.ts
193
194
  import { z as z2 } from "zod";
@@ -952,7 +953,7 @@ var trafficEventsInputSchema = z2.object({
952
953
  project: projectNameSchema,
953
954
  since: z2.string().optional().describe("ISO 8601 lower bound. Defaults to 24h ago when omitted."),
954
955
  until: z2.string().optional().describe("ISO 8601 upper bound. Defaults to now when omitted."),
955
- kind: z2.union([trafficEventKindSchema, z2.literal("all")]).optional().describe('Filter to one traffic kind; "all" (default) returns every kind.'),
956
+ kind: z2.string().refine((value) => parseTrafficEventKindFilter(value) !== null, { message: `kind must be ${TRAFFIC_EVENT_KIND_FILTER_HINT}` }).optional().describe('Filter to "crawler", "ai-user-fetch", "ai-referral", a comma-separated list of them (e.g. "ai-user-fetch,ai-referral"), or "all" (default). Rows, totals and series cover only the kinds asked for.'),
956
957
  sourceId: z2.string().min(1).optional().describe("Restrict to a single traffic source ID."),
957
958
  limit: z2.number().int().positive().max(5e3).optional().describe("Max combined rows. Defaults to 500, max 5000. Totals always reflect the full window."),
958
959
  granularity: trafficSeriesGranularitySchema.optional().describe("Full-window chart series bucket size: hour (default) or day.")
@@ -20,7 +20,7 @@ import {
20
20
  resolveProviderModel,
21
21
  schedulableRunKindSchema,
22
22
  sentimentEvaluatorProviderSchema
23
- } from "./chunk-FYYOX7UY.js";
23
+ } from "./chunk-GO5OUMY5.js";
24
24
 
25
25
  // ../config/src/index.ts
26
26
  import { z as z5 } from "zod";
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-HGMYEDAQ.js";
5
5
  import {
6
6
  describeError
7
- } from "./chunk-FYYOX7UY.js";
7
+ } from "./chunk-GO5OUMY5.js";
8
8
 
9
9
  // src/gsc-sitemap-submission.ts
10
10
  function dedupeGscSitemapUrls(urls) {
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  pickProjectCitedDomain
3
- } from "./chunk-AUC47DFW.js";
3
+ } from "./chunk-AAUJZ43Q.js";
4
4
  import {
5
5
  createLogger
6
- } from "./chunk-BTYOU24P.js";
6
+ } from "./chunk-BOUEM6D6.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-QWEAORJG.js";
20
+ } from "./chunk-LWVLQCQH.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-H3PWMM4K.js";
38
+ } from "./chunk-HE4ZCVSF.js";
39
39
  import {
40
40
  CitationStates,
41
41
  RunKinds,
42
42
  RunStatuses,
43
43
  RunTriggers,
44
44
  effectiveDomains
45
- } from "./chunk-FYYOX7UY.js";
45
+ } from "./chunk-GO5OUMY5.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,9 +1,9 @@
1
1
  import {
2
2
  trackIntegrationConnection
3
- } from "./chunk-WONUYAKB.js";
3
+ } from "./chunk-U3DFWCTU.js";
4
4
  import {
5
5
  cliRuntimeContext
6
- } from "./chunk-TY5YTNLU.js";
6
+ } from "./chunk-OLEMJTEJ.js";
7
7
 
8
8
  // src/cli-connection-telemetry.ts
9
9
  function trackCliConnection(properties) {
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  API_PROVIDER_NAMES,
3
3
  ProviderNames
4
- } from "./chunk-FYYOX7UY.js";
4
+ } from "./chunk-GO5OUMY5.js";
5
5
 
6
6
  // src/provider-registration.ts
7
7
  function isApiProviderRegistrable(name, entry) {
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  hostMatchesDomain
3
- } from "./chunk-FYYOX7UY.js";
3
+ } from "./chunk-GO5OUMY5.js";
4
4
 
5
5
  // src/citation-utils.ts
6
6
  function pickProjectCitedDomain(citedDomains, projectDomains) {
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  getRequestContext
3
- } from "./chunk-K7ZG6K7J.js";
3
+ } from "./chunk-J6QOUWDQ.js";
4
4
  import {
5
5
  diagnosticIdentity,
6
6
  redactLogString,
7
7
  redactLogValue
8
- } from "./chunk-FYYOX7UY.js";
8
+ } from "./chunk-GO5OUMY5.js";
9
9
 
10
10
  // ../api-routes/src/runtime-logger.ts
11
11
  import { format } from "util";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  loadConfig
3
- } from "./chunk-4QYGB5IC.js";
3
+ } from "./chunk-5LLEZ6YL.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-FYYOX7UY.js";
39
+ } from "./chunk-GO5OUMY5.js";
40
40
 
41
41
  // ../api-client-generated/src/generated/core/bodySerializer.gen.ts
42
42
  var jsonBodySerializer = {
@@ -5,7 +5,7 @@ import {
5
5
  siteCrawlGraphNodes,
6
6
  siteCrawlPages,
7
7
  siteCrawlSnapshots
8
- } from "./chunk-H3PWMM4K.js";
8
+ } from "./chunk-HE4ZCVSF.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-FYYOX7UY.js";
18
+ } from "./chunk-GO5OUMY5.js";
19
19
 
20
20
  // src/site-audit-factors.ts
21
21
  function recordedSharePct(factor) {
@@ -19214,6 +19214,17 @@ var trafficStatusResponseSchema = z57.object({
19214
19214
  });
19215
19215
  var trafficEventKindSchema = z57.enum(["crawler", "ai-user-fetch", "ai-referral"]);
19216
19216
  var TrafficEventKinds = trafficEventKindSchema.enum;
19217
+ var TRAFFIC_EVENT_KIND_FILTER_HINT = `all, or one or more (comma-separated) of: ${trafficEventKindSchema.options.join(", ")}`;
19218
+ function parseTrafficEventKindFilter(value) {
19219
+ if (value === "all") return [...trafficEventKindSchema.options];
19220
+ const kinds = [];
19221
+ for (const member of value.split(",").map((part) => part.trim()).filter(Boolean)) {
19222
+ const parsed = trafficEventKindSchema.safeParse(member);
19223
+ if (!parsed.success) return null;
19224
+ if (!kinds.includes(parsed.data)) kinds.push(parsed.data);
19225
+ }
19226
+ return kinds.length > 0 ? kinds : null;
19227
+ }
19217
19228
  var trafficSeriesGranularitySchema = z57.enum(["hour", "day"]);
19218
19229
  var TrafficSeriesGranularities = trafficSeriesGranularitySchema.enum;
19219
19230
  var trafficSeriesPointSchema = z57.object({
@@ -28478,8 +28489,9 @@ export {
28478
28489
  trafficSourceListResponseSchema,
28479
28490
  trafficSourceDetailDtoSchema,
28480
28491
  trafficStatusResponseSchema,
28481
- trafficEventKindSchema,
28482
28492
  TrafficEventKinds,
28493
+ TRAFFIC_EVENT_KIND_FILTER_HINT,
28494
+ parseTrafficEventKindFilter,
28483
28495
  trafficSeriesGranularitySchema,
28484
28496
  TrafficSeriesGranularities,
28485
28497
  trafficEventsResponseSchema,
@@ -15,7 +15,7 @@ import {
15
15
  hostMatchesDomain,
16
16
  hostOf,
17
17
  isLocationRedirectStatus
18
- } from "./chunk-FYYOX7UY.js";
18
+ } from "./chunk-GO5OUMY5.js";
19
19
 
20
20
  // ../integration-traffic/src/agent-trust.ts
21
21
  var AGENT_TRUST_RULES_VERSION = 2;
@@ -20,7 +20,7 @@ import {
20
20
  templateLinkRatio,
21
21
  templateLinkUbiquityAvailable,
22
22
  validationError
23
- } from "./chunk-FYYOX7UY.js";
23
+ } from "./chunk-GO5OUMY5.js";
24
24
  import {
25
25
  __export
26
26
  } from "./chunk-MLKGABMK.js";
@@ -5,7 +5,7 @@ import {
5
5
  AppError,
6
6
  parseWindowIn,
7
7
  resolveDateRange
8
- } from "./chunk-FYYOX7UY.js";
8
+ } from "./chunk-GO5OUMY5.js";
9
9
 
10
10
  // src/cli-access.ts
11
11
  var CLI_ACCESS_BY_ID = Object.freeze({
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  USAGE_TELEMETRY_HEADERS,
3
3
  redactLogString
4
- } from "./chunk-FYYOX7UY.js";
4
+ } from "./chunk-GO5OUMY5.js";
5
5
 
6
6
  // ../api-routes/src/request-context.ts
7
7
  import { AsyncLocalStorage } from "async_hooks";
@@ -15,14 +15,14 @@ import {
15
15
  normalizeCloudflareWorkerEvent,
16
16
  sessionizeJourneyRequests,
17
17
  verifyRequestSignature
18
- } from "./chunk-7534NXSP.js";
18
+ } from "./chunk-GS3KXIFK.js";
19
19
  import {
20
20
  currentOutcomeAttribution,
21
21
  getRequestContext,
22
22
  registerRequestContext,
23
23
  requestAuditIdentity,
24
24
  sanitizeRequestContext
25
- } from "./chunk-K7ZG6K7J.js";
25
+ } from "./chunk-J6QOUWDQ.js";
26
26
  import {
27
27
  RawEventSampleEventTypes,
28
28
  SentimentIdempotencyConflict,
@@ -180,7 +180,7 @@ import {
180
180
  userSessions,
181
181
  users,
182
182
  writeNegativeReviewMaxStars
183
- } from "./chunk-H3PWMM4K.js";
183
+ } from "./chunk-HE4ZCVSF.js";
184
184
  import {
185
185
  ADS_ACTIVATE_SCOPE,
186
186
  ADS_ACTIVATION_ABSOLUTE_MAX_ENTITIES,
@@ -415,6 +415,7 @@ import {
415
415
  SiteCrawlUrlVersionFilters,
416
416
  SiteHealthLinkKinds,
417
417
  SiteHealthTemplateDetections,
418
+ TRAFFIC_EVENT_KIND_FILTER_HINT,
418
419
  TREND_SURFACE_DEFAULT_WINDOW,
419
420
  TrafficEventConfidences,
420
421
  TrafficEventKinds,
@@ -1002,6 +1003,7 @@ import {
1002
1003
  parseRunError,
1003
1004
  parseStoredMeasurementPlanAnyVersion,
1004
1005
  parseTrafficAnalyticsPeriod,
1006
+ parseTrafficEventKindFilter,
1005
1007
  parseWindow,
1006
1008
  parseWindowIn,
1007
1009
  percentOf,
@@ -1275,7 +1277,7 @@ import {
1275
1277
  wordpressSchemaDeployResultDtoSchema,
1276
1278
  wordpressSchemaStatusResultDtoSchema,
1277
1279
  wordpressStatusDtoSchema
1278
- } from "./chunk-FYYOX7UY.js";
1280
+ } from "./chunk-GO5OUMY5.js";
1279
1281
 
1280
1282
  // ../api-routes/src/user-session.ts
1281
1283
  import crypto2 from "crypto";
@@ -43859,7 +43861,7 @@ var routeCatalog = [
43859
43861
  nameParameter,
43860
43862
  { name: "since", in: "query", description: "ISO-8601 window start (defaults to 24h ago).", schema: stringSchema },
43861
43863
  { name: "until", in: "query", description: "ISO-8601 window end (defaults to now).", schema: stringSchema },
43862
- { name: "kind", in: "query", description: 'Filter to "crawler", "ai-user-fetch", "ai-referral", or "all" (default).', schema: stringSchema },
43864
+ { name: "kind", in: "query", description: 'Filter to "crawler", "ai-user-fetch", "ai-referral", a comma-separated list of them (e.g. "ai-user-fetch,ai-referral"), or "all" (default). Rows, totals and series cover only the kinds asked for.', schema: stringSchema },
43863
43865
  { name: "limit", in: "query", description: "Max newest combined detail rows in the events array (default 500, max 5000).", schema: stringSchema },
43864
43866
  { name: "sourceId", in: "query", description: "Restrict to a single traffic source.", schema: stringSchema },
43865
43867
  { name: "granularity", in: "query", description: 'Full-window series bucket size: "hour" (default) or "day".', schema: { type: "string", enum: ["hour", "day"] } }
@@ -57650,11 +57652,14 @@ var BingApiError = class extends Error {
57650
57652
  * callers do not have to parse prose.
57651
57653
  */
57652
57654
  isThrottle;
57653
- constructor(message, status, bingErrorCode = null) {
57655
+ /** Only the retry header is retained; never retain response credentials. */
57656
+ headers;
57657
+ constructor(message, status, bingErrorCode = null, retryAfter) {
57654
57658
  super(message);
57655
57659
  this.name = "BingApiError";
57656
57660
  this.status = status;
57657
57661
  this.bingErrorCode = bingErrorCode;
57662
+ this.headers = retryAfter == null ? void 0 : { "retry-after": retryAfter };
57658
57663
  this.isThrottle = status === 429 || bingErrorCode != null && BING_THROTTLE_ERROR_CODES.has(bingErrorCode);
57659
57664
  }
57660
57665
  };
@@ -57748,14 +57753,14 @@ async function bingFetchOnce(apiKey, endpoint, opts) {
57748
57753
  }
57749
57754
  if (res.status === 429) {
57750
57755
  bingClientLog("error", "http.rate-limited", { endpoint, method, httpStatus: 429 });
57751
- throw new BingApiError("Bing API rate limit exceeded", 429);
57756
+ throw new BingApiError("Bing API rate limit exceeded", 429, null, res.headers.get("retry-after"));
57752
57757
  }
57753
57758
  if (!res.ok) {
57754
57759
  const body = await res.text();
57755
57760
  let detail = body.length <= 500 ? body : `${body.slice(0, 500)}... [truncated]`;
57756
57761
  detail = detail.replace(new RegExp(escapeRegExp(apiKey), "g"), "***");
57757
57762
  const bingErrorCode = parseBingErrorCode(body);
57758
- const err = new BingApiError(`Bing API error (${res.status}): ${detail}`, res.status, bingErrorCode);
57763
+ const err = new BingApiError(`Bing API error (${res.status}): ${detail}`, res.status, bingErrorCode, res.headers.get("retry-after"));
57759
57764
  bingClientLog("error", err.isThrottle ? "http.throttled" : "http.error", {
57760
57765
  endpoint,
57761
57766
  method,
@@ -57793,9 +57798,13 @@ function throttleCooldownRemainingMs(apiKey) {
57793
57798
  }
57794
57799
  return remaining;
57795
57800
  }
57796
- function openThrottleCooldown(apiKey) {
57797
- throttleCooldownUntil.set(cooldownKey(apiKey), cooldownNow() + BING_THROTTLE_COOLDOWN_MS);
57798
- bingClientLog("error", "http.cooldown-open", { cooldownMs: BING_THROTTLE_COOLDOWN_MS });
57801
+ function openThrottleCooldown(apiKey, err) {
57802
+ const cooldownMs = Math.max(BING_THROTTLE_COOLDOWN_MS, retryAfterDelayMs(err) ?? 0);
57803
+ const key = cooldownKey(apiKey);
57804
+ const now = cooldownNow();
57805
+ const retryAt = Math.max(throttleCooldownUntil.get(key) ?? 0, now + cooldownMs);
57806
+ throttleCooldownUntil.set(key, retryAt);
57807
+ bingClientLog("error", "http.cooldown-open", { cooldownMs: retryAt - now });
57799
57808
  }
57800
57809
  async function bingFetch(apiKey, endpoint, opts) {
57801
57810
  const isIdempotent = opts?.idempotent ?? (opts?.method ?? "GET") === "GET";
@@ -57827,7 +57836,7 @@ async function bingFetch(apiKey, endpoint, opts) {
57827
57836
  }
57828
57837
  });
57829
57838
  } catch (err) {
57830
- if (err instanceof BingApiError && err.isThrottle) openThrottleCooldown(apiKey);
57839
+ if (err instanceof BingApiError && err.isThrottle) openThrottleCooldown(apiKey, err);
57831
57840
  throw err;
57832
57841
  }
57833
57842
  }
@@ -68447,16 +68456,11 @@ async function trafficRoutes(app, opts) {
68447
68456
  throw validationError('"since" must be \u2264 "until"');
68448
68457
  }
68449
68458
  const kindParam = request.query?.kind;
68450
- let kind = "all";
68451
- if (kindParam !== void 0) {
68452
- if (kindParam === "all" || kindParam === TrafficEventKinds.crawler || kindParam === TrafficEventKinds["ai-user-fetch"] || kindParam === TrafficEventKinds["ai-referral"]) {
68453
- kind = kindParam;
68454
- } else {
68455
- throw validationError(
68456
- `"kind" must be one of: all, ${TrafficEventKinds.crawler}, ${TrafficEventKinds["ai-user-fetch"]}, ${TrafficEventKinds["ai-referral"]}`
68457
- );
68458
- }
68459
+ const kindList = kindParam === void 0 ? parseTrafficEventKindFilter("all") : typeof kindParam === "string" ? parseTrafficEventKindFilter(kindParam) : null;
68460
+ if (!kindList) {
68461
+ throw validationError(`"kind" must be ${TRAFFIC_EVENT_KIND_FILTER_HINT}`);
68459
68462
  }
68463
+ const kinds = new Set(kindList);
68460
68464
  const limitParam = request.query?.limit;
68461
68465
  const requestedLimit = limitParam ? parseInt(limitParam, 10) : 500;
68462
68466
  if (!Number.isFinite(requestedLimit) || requestedLimit <= 0) {
@@ -68487,7 +68491,7 @@ async function trafficRoutes(app, opts) {
68487
68491
  let aiReferralLandedHits = 0;
68488
68492
  let totalEventRows = 0;
68489
68493
  const seriesByBucket = /* @__PURE__ */ new Map();
68490
- if (kind === "all" || kind === TrafficEventKinds.crawler) {
68494
+ if (kinds.has(TrafficEventKinds.crawler)) {
68491
68495
  const crawlerFilters = [
68492
68496
  eq89(crawlerEventsHourly.projectId, project.id),
68493
68497
  gte24(crawlerEventsHourly.tsHour, sinceIso),
@@ -68562,7 +68566,7 @@ async function trafficRoutes(app, opts) {
68562
68566
  });
68563
68567
  }
68564
68568
  }
68565
- if (kind === "all" || kind === TrafficEventKinds["ai-user-fetch"]) {
68569
+ if (kinds.has(TrafficEventKinds["ai-user-fetch"])) {
68566
68570
  const userFetchFilters = [
68567
68571
  eq89(aiUserFetchEventsHourly.projectId, project.id),
68568
68572
  gte24(aiUserFetchEventsHourly.tsHour, sinceIso),
@@ -68601,7 +68605,7 @@ async function trafficRoutes(app, opts) {
68601
68605
  });
68602
68606
  }
68603
68607
  }
68604
- if (kind === "all" || kind === TrafficEventKinds["ai-referral"]) {
68608
+ if (kinds.has(TrafficEventKinds["ai-referral"])) {
68605
68609
  const aiFilters = [
68606
68610
  eq89(aiReferralEventsHourly.projectId, project.id),
68607
68611
  gte24(aiReferralEventsHourly.tsHour, sinceIso),