@canonry/canonry 7.58.5 → 7.59.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 (131) hide show
  1. package/assets/agent-workspace/skills/canonry/references/canonry-cli.md +30 -0
  2. package/assets/agent-workspace/skills/canonry/references/server-side-traffic.md +31 -0
  3. package/assets/assets/{AgentSetupPage-CoD9a386.js → AgentSetupPage-DH2Mi2Q7.js} +1 -1
  4. package/assets/assets/{AuditHistoryPanel-DSUKF9GC.js → AuditHistoryPanel-DVIQR5y5.js} +1 -1
  5. package/assets/assets/{BacklinksPage-DIZy0NkW.js → BacklinksPage-DFFeaSbH.js} +1 -1
  6. package/assets/assets/{HistoryPage-B2Xtxu5L.js → HistoryPage-BxDhO9rm.js} +1 -1
  7. package/assets/assets/{MeasurementPropertyPage-BZmvjMiS.js → MeasurementPropertyPage-B0AkDYxY.js} +1 -1
  8. package/assets/assets/{ProjectPage-DMIoYBCF.js → ProjectPage-6_HOcytx.js} +1 -1
  9. package/assets/assets/{RunsPage-DtvesLu2.js → RunsPage-BUK5EqC6.js} +1 -1
  10. package/assets/assets/{SettingsPage-BjE3d5Ae.js → SettingsPage-CuBUZ4TN.js} +1 -1
  11. package/assets/assets/{SiteHealthSection-D6RLbM2o.js → SiteHealthSection-CoyiSleA.js} +2 -2
  12. package/assets/assets/ToneBadge-Du4fOtJa.js +60 -0
  13. package/assets/assets/{TrafficPage-CHZlfMgd.js → TrafficPage-BE9Ay-x-.js} +1 -1
  14. package/assets/assets/{TrafficSourceDetailPage-Dp7AYvRP.js → TrafficSourceDetailPage-kW0DFcwB.js} +1 -1
  15. package/assets/assets/{account-context-DHWaWJSr.js → account-context-IN6VE8PV.js} +1 -1
  16. package/assets/assets/{card-im88-x1b.js → card-DiBSxANp.js} +1 -1
  17. package/assets/assets/{extract-error-message-Bq8oNvfF.js → extract-error-message-_H20efSf.js} +1 -1
  18. package/assets/assets/{format-helpers-DOEct2q8.js → format-helpers-DKjsmbxo.js} +1 -1
  19. package/assets/assets/{index-CgAMnZFS.js → index-B1kVq-wC.js} +4 -4
  20. package/assets/assets/{query-client-BN_-qp71.js → query-client-BXS2w17E.js} +1 -1
  21. package/assets/assets/{react-query-P6OZ-MPl.js → react-query-B8oOFCyW.js} +1 -1
  22. package/assets/assets/{react-sigma_core.esm.min-TGwpCHs4.js → react-sigma_core.esm.min-Bf_kjp11.js} +1 -1
  23. package/assets/assets/{service-CUJkePNp.js → service-D9noo7pB.js} +1 -1
  24. package/assets/index.html +7 -7
  25. package/dist/{ads-BMBXQB67.js → ads-6NAIIZGO.js} +3 -3
  26. package/dist/{agent-S6CU36RL.js → agent-LISFS4WR.js} +7 -7
  27. package/dist/{agent-ask-XG7WQBX6.js → agent-ask-JJM34LMD.js} +3 -3
  28. package/dist/{agent-conversations-C4QBZAPC.js → agent-conversations-4JNBIBVR.js} +3 -3
  29. package/dist/{agent-memory-I7UJ7MKH.js → agent-memory-I2M7TIWO.js} +3 -3
  30. package/dist/{agent-providers-YHRIYJDT.js → agent-providers-3ZX3RETW.js} +3 -3
  31. package/dist/{agent-transcript-2WICUOEW.js → agent-transcript-OYK4O5XV.js} +3 -3
  32. package/dist/{analytics-Y5AGSYWD.js → analytics-7HW2FSST.js} +3 -3
  33. package/dist/{apply-DLVLMU3O.js → apply-S2OC6S65.js} +3 -3
  34. package/dist/{backfill-SINDWLD3.js → backfill-EUHHN4VT.js} +9 -9
  35. package/dist/{backlinks-TEZTPNZ5.js → backlinks-AY5EMVN4.js} +3 -3
  36. package/dist/{bing-IIA5HLND.js → bing-KJW2LYAT.js} +3 -3
  37. package/dist/{bootstrap-AKGA3BJI.js → bootstrap-3R4AMSY4.js} +10 -10
  38. package/dist/{cdp-WWOFWFYU.js → cdp-URC66DX5.js} +7 -7
  39. package/dist/{chunk-ZYL3LCDZ.js → chunk-3WRDJJOY.js} +1 -1
  40. package/dist/{chunk-65YQFVJM.js → chunk-B4N5L6NF.js} +5 -5
  41. package/dist/{chunk-N2HCXIQ3.js → chunk-EED2QEE7.js} +1 -1
  42. package/dist/{chunk-IFVTHGXG.js → chunk-EJZ4TQQR.js} +2 -2
  43. package/dist/{chunk-TVANRUBO.js → chunk-FA7RDZ43.js} +8 -1
  44. package/dist/{chunk-AP7YSOFC.js → chunk-GS6IH7CI.js} +404 -330
  45. package/dist/{chunk-CYVQW32W.js → chunk-HKLI6ZFP.js} +21 -20
  46. package/dist/{chunk-Y7NX6EIK.js → chunk-HUO3YPKB.js} +2650 -2405
  47. package/dist/{chunk-BP5OKJIC.js → chunk-JLDTGMVQ.js} +2 -2
  48. package/dist/{chunk-3U7LL3JM.js → chunk-KCO3PGDZ.js} +1 -1
  49. package/dist/{chunk-27SGL3DF.js → chunk-KLPRF4PA.js} +1 -1
  50. package/dist/{chunk-QSPLYPVA.js → chunk-LJRXJHWJ.js} +1 -1
  51. package/dist/{chunk-YJPQBJZO.js → chunk-LWKHCQ46.js} +48 -3
  52. package/dist/{chunk-4P7NK7XM.js → chunk-MTKXD4WY.js} +2 -2
  53. package/dist/{chunk-JGRUCEL4.js → chunk-O7BPIPJB.js} +2 -2
  54. package/dist/{chunk-4UGM5YV4.js → chunk-ON7D53WE.js} +3 -3
  55. package/dist/{chunk-5D4RL23M.js → chunk-OTQFHUIH.js} +5 -5
  56. package/dist/{chunk-A5F5E4DL.js → chunk-PDS77GLS.js} +4 -4
  57. package/dist/{chunk-NWYNTYPD.js → chunk-PP7HR4II.js} +4 -4
  58. package/dist/{chunk-O6TF6TPM.js → chunk-PSRJYRAD.js} +8 -8
  59. package/dist/{chunk-F6W7FCS2.js → chunk-PTKFLEVN.js} +26 -2
  60. package/dist/{chunk-52NCZIAC.js → chunk-PZUMERGZ.js} +1 -1
  61. package/dist/{chunk-SCS7R2ND.js → chunk-QF5C3JXL.js} +128 -1
  62. package/dist/{chunk-WLIGKWVB.js → chunk-RFXO5GPB.js} +3 -3
  63. package/dist/{chunk-U65LWABS.js → chunk-SEBIXQEN.js} +7 -3
  64. package/dist/{chunk-G34BVUMF.js → chunk-SXDAIG5W.js} +1 -1
  65. package/dist/{chunk-Q4J3XSWE.js → chunk-TJ4UAO7R.js} +317 -7
  66. package/dist/{chunk-YDSY5YJE.js → chunk-TKX4G4NV.js} +4 -4
  67. package/dist/{chunk-L7TKNHEX.js → chunk-VRI3UDRA.js} +1 -1
  68. package/dist/{chunk-KWXARGCT.js → chunk-VWO4WRQM.js} +3 -3
  69. package/dist/{chunk-QEJBAPDP.js → chunk-WSFCQQ7F.js} +2557 -2046
  70. package/dist/{chunk-6IBLGQVZ.js → chunk-WUVX5HBI.js} +1 -1
  71. package/dist/{chunk-4TM4NXQR.js → chunk-X3UXPAT7.js} +2 -2
  72. package/dist/{chunk-TH3NNUJW.js → chunk-Y54KA37X.js} +5 -1
  73. package/dist/{citations-4LVBHTDX.js → citations-DAXUWNKQ.js} +3 -3
  74. package/dist/{cli-catalog-PJYR3JHX.js → cli-catalog-ORQPYKHI.js} +3 -3
  75. package/dist/{cli-commands-ZPW3OST3.js → cli-commands-SDTHXYWU.js} +7 -7
  76. package/dist/cli.js +14 -14
  77. package/dist/{competitor-T7UXAW4F.js → competitor-QPL47DA6.js} +3 -3
  78. package/dist/{content-DFYYGGPI.js → content-V5NLV3AH.js} +3 -3
  79. package/dist/{dashboard-VT3GQRW4.js → dashboard-CZEO2UTG.js} +6 -6
  80. package/dist/{demo-ZBNVULOO.js → demo-JZS5DBSR.js} +1 -1
  81. package/dist/{demo-server-QUW4TDJL.js → demo-server-OAYVJVGC.js} +11 -11
  82. package/dist/{discover-QTC5OBQG.js → discover-TEEHJPLW.js} +3 -3
  83. package/dist/{discover-eval-QQZGUPR6.js → discover-eval-4I25W4VL.js} +3 -3
  84. package/dist/{doctor-VHFDL5MH.js → doctor-VR6YKJSW.js} +3 -3
  85. package/dist/{evidence-4PRFOC2I.js → evidence-SISRJ4YZ.js} +3 -3
  86. package/dist/{export-cmd-BQE7BPKZ.js → export-cmd-L5LKHKBY.js} +3 -3
  87. package/dist/{ga-ULY5XDBK.js → ga-WQQVWU5Q.js} +3 -3
  88. package/dist/{gbp-4WHNZAFY.js → gbp-XKRX7ZJY.js} +3 -3
  89. package/dist/{google-O4IVWLSG.js → google-TUEMVVGE.js} +4 -4
  90. package/dist/{google-marketing-DCQDTDDG.js → google-marketing-JWAJXNWR.js} +1 -1
  91. package/dist/{health-cmd-I2JTACS7.js → health-cmd-2OQEIQMG.js} +3 -3
  92. package/dist/{history-LUPHO3P3.js → history-33VEX442.js} +3 -3
  93. package/dist/index.d.ts +817 -63
  94. package/dist/index.js +24 -24
  95. package/dist/{init-C2DLDK6T.js → init-QMLVST26.js} +11 -11
  96. package/dist/{insights-GC2W45U4.js → insights-6VIXDNVK.js} +3 -3
  97. package/dist/intelligence-service-NFBPBKI7.js +15 -0
  98. package/dist/journeys-7YJLJ34F.js +122 -0
  99. package/dist/{keys-DXQBSOBI.js → keys-I7Z5CGEQ.js} +3 -3
  100. package/dist/{keyword-2DCR2QCJ.js → keyword-OPTT3EXO.js} +3 -3
  101. package/dist/{logs-H45QFIEB.js → logs-35L2ZWRO.js} +3 -3
  102. package/dist/{mcp-NXXP6M3C.js → mcp-JWB42VTJ.js} +2 -2
  103. package/dist/mcp.js +9 -9
  104. package/dist/{measurement-plan-IG4JUKKW.js → measurement-plan-UWA2N6FO.js} +5 -5
  105. package/dist/{notify-BLLWXMBB.js → notify-FE7FSXDB.js} +3 -3
  106. package/dist/{organic-evidence-73K7W7SB.js → organic-evidence-34EKPGKI.js} +3 -3
  107. package/dist/{overview-4TAULPUG.js → overview-HPY5I6ZT.js} +4 -4
  108. package/dist/{project-ANX4JTWS.js → project-5CCX7VNR.js} +3 -3
  109. package/dist/{query-U3MFTLGR.js → query-VV4TRRDX.js} +3 -3
  110. package/dist/{research-3YZ6QI67.js → research-62VXIO2O.js} +3 -3
  111. package/dist/{results-export-72OVLKSC.js → results-export-QZQTNXMB.js} +3 -3
  112. package/dist/{run-SI6IL4FC.js → run-MYWJ2MPB.js} +4 -4
  113. package/dist/{schedule-FYEHU2VH.js → schedule-YC76OSAK.js} +3 -3
  114. package/dist/{search-MXDT3DQE.js → search-J2J7BXBL.js} +3 -3
  115. package/dist/{serve-ME2KJ6BG.js → serve-LESJD7GM.js} +56 -27
  116. package/dist/{session-R3PRJ3RB.js → session-2MU6LLLC.js} +12 -12
  117. package/dist/{settings-ZGS26QOP.js → settings-QIMV3UYB.js} +3 -3
  118. package/dist/{skills-ZMMCKKSA.js → skills-3HOQ77ON.js} +2 -2
  119. package/dist/{snapshot-5AGGUQKE.js → snapshot-XL3KO4OW.js} +3 -3
  120. package/dist/{src-AIM5FPLZ.js → src-CLICUC3F.js} +8 -2
  121. package/dist/{status-HVQI4E5X.js → status-CKAJEBHG.js} +4 -4
  122. package/dist/{technical-aeo-S4OFCURE.js → technical-aeo-CW7WNDUU.js} +3 -3
  123. package/dist/{telemetry-SPSC5MUN.js → telemetry-GPP5XD7R.js} +4 -4
  124. package/dist/{tools-VZVQ2CTU.js → tools-UNFFO5HO.js} +11 -11
  125. package/dist/{traffic-5AXVN37M.js → traffic-LALKHOSD.js} +5 -5
  126. package/dist/{users-WFKSUCGV.js → users-NQG7Y3GC.js} +3 -3
  127. package/dist/{visibility-stats-5S26GC27.js → visibility-stats-RJHXNYBM.js} +3 -3
  128. package/dist/{wordpress-IUPZC7II.js → wordpress-VLHQ6P47.js} +3 -3
  129. package/package.json +1 -1
  130. package/assets/assets/ToneBadge-DYEbxp5S.js +0 -60
  131. package/dist/intelligence-service-R5BRSQKI.js +0 -15
package/dist/index.js CHANGED
@@ -3,38 +3,38 @@ import {
3
3
  createGoogleMarketingCredentialStore,
4
4
  createGoogleMarketingRuntime,
5
5
  createServer
6
- } from "./chunk-CYVQW32W.js";
7
- import "./chunk-52NCZIAC.js";
8
- import "./chunk-5D4RL23M.js";
9
- import "./chunk-A5F5E4DL.js";
6
+ } from "./chunk-HKLI6ZFP.js";
7
+ import "./chunk-PZUMERGZ.js";
8
+ import "./chunk-OTQFHUIH.js";
9
+ import "./chunk-PDS77GLS.js";
10
10
  import "./chunk-ELCLGWUT.js";
11
11
  import "./chunk-XEBKF4N5.js";
12
- import "./chunk-6IBLGQVZ.js";
13
- import "./chunk-BP5OKJIC.js";
14
- import "./chunk-YDSY5YJE.js";
12
+ import "./chunk-WUVX5HBI.js";
13
+ import "./chunk-JLDTGMVQ.js";
14
+ import "./chunk-TKX4G4NV.js";
15
15
  import "./chunk-TSENU4GG.js";
16
- import "./chunk-3U7LL3JM.js";
17
- import "./chunk-IFVTHGXG.js";
18
- import "./chunk-KWXARGCT.js";
16
+ import "./chunk-KCO3PGDZ.js";
17
+ import "./chunk-EJZ4TQQR.js";
18
+ import "./chunk-VWO4WRQM.js";
19
19
  import "./chunk-NCIPNVD6.js";
20
- import "./chunk-F6W7FCS2.js";
20
+ import "./chunk-PTKFLEVN.js";
21
21
  import {
22
22
  loadConfig
23
- } from "./chunk-TVANRUBO.js";
24
- import "./chunk-G34BVUMF.js";
25
- import "./chunk-4TM4NXQR.js";
26
- import "./chunk-YJPQBJZO.js";
27
- import "./chunk-QSPLYPVA.js";
28
- import "./chunk-N2HCXIQ3.js";
23
+ } from "./chunk-FA7RDZ43.js";
24
+ import "./chunk-SXDAIG5W.js";
25
+ import "./chunk-X3UXPAT7.js";
26
+ import "./chunk-LWKHCQ46.js";
27
+ import "./chunk-LJRXJHWJ.js";
28
+ import "./chunk-EED2QEE7.js";
29
29
  import "./chunk-AOJU5LKX.js";
30
30
  import "./chunk-HGMYEDAQ.js";
31
- import "./chunk-65YQFVJM.js";
32
- import "./chunk-L7TKNHEX.js";
33
- import "./chunk-QEJBAPDP.js";
34
- import "./chunk-Q4J3XSWE.js";
35
- import "./chunk-27SGL3DF.js";
36
- import "./chunk-SCS7R2ND.js";
37
- import "./chunk-Y7NX6EIK.js";
31
+ import "./chunk-B4N5L6NF.js";
32
+ import "./chunk-VRI3UDRA.js";
33
+ import "./chunk-WSFCQQ7F.js";
34
+ import "./chunk-TJ4UAO7R.js";
35
+ import "./chunk-KLPRF4PA.js";
36
+ import "./chunk-QF5C3JXL.js";
37
+ import "./chunk-HUO3YPKB.js";
38
38
  import "./chunk-MLKGABMK.js";
39
39
  export {
40
40
  GoogleMarketingRuntimeError,
@@ -1,16 +1,16 @@
1
1
  import {
2
2
  installMcp
3
- } from "./chunk-ZYL3LCDZ.js";
3
+ } from "./chunk-3WRDJJOY.js";
4
4
  import {
5
5
  trackCliConnection
6
- } from "./chunk-4P7NK7XM.js";
6
+ } from "./chunk-MTKXD4WY.js";
7
7
  import {
8
8
  buildSetupState,
9
9
  queueServeHandoff
10
- } from "./chunk-NWYNTYPD.js";
10
+ } from "./chunk-PP7HR4II.js";
11
11
  import "./chunk-VJWDBFSL.js";
12
- import "./chunk-YDSY5YJE.js";
13
- import "./chunk-3U7LL3JM.js";
12
+ import "./chunk-TKX4G4NV.js";
13
+ import "./chunk-KCO3PGDZ.js";
14
14
  import {
15
15
  cliRuntimeContext,
16
16
  installAttribution,
@@ -18,7 +18,7 @@ import {
18
18
  recordInstallRef,
19
19
  showFirstRunNotice,
20
20
  trackEvent
21
- } from "./chunk-IFVTHGXG.js";
21
+ } from "./chunk-EJZ4TQQR.js";
22
22
  import {
23
23
  configExists,
24
24
  getBootstrapEnv,
@@ -26,24 +26,24 @@ import {
26
26
  getConfigPath,
27
27
  saveConfig,
28
28
  withBootstrapProviderDefaults
29
- } from "./chunk-TVANRUBO.js";
29
+ } from "./chunk-FA7RDZ43.js";
30
30
  import {
31
31
  installSkills
32
- } from "./chunk-G34BVUMF.js";
32
+ } from "./chunk-SXDAIG5W.js";
33
33
  import "./chunk-AOJU5LKX.js";
34
34
  import {
35
35
  CliError,
36
36
  isMachineFormat
37
37
  } from "./chunk-HGMYEDAQ.js";
38
- import "./chunk-27SGL3DF.js";
38
+ import "./chunk-KLPRF4PA.js";
39
39
  import {
40
40
  apiKeys,
41
41
  createClient,
42
42
  migrate
43
- } from "./chunk-SCS7R2ND.js";
43
+ } from "./chunk-QF5C3JXL.js";
44
44
  import {
45
45
  describeError
46
- } from "./chunk-Y7NX6EIK.js";
46
+ } from "./chunk-HUO3YPKB.js";
47
47
  import "./chunk-MLKGABMK.js";
48
48
 
49
49
  // src/commands/init.ts
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  createApiClient
3
- } from "./chunk-F6W7FCS2.js";
4
- import "./chunk-TVANRUBO.js";
3
+ } from "./chunk-PTKFLEVN.js";
4
+ import "./chunk-FA7RDZ43.js";
5
5
  import {
6
6
  emitJsonl
7
7
  } from "./chunk-Z7IUAJOF.js";
@@ -9,7 +9,7 @@ import "./chunk-AOJU5LKX.js";
9
9
  import {
10
10
  isMachineFormat
11
11
  } from "./chunk-HGMYEDAQ.js";
12
- import "./chunk-Y7NX6EIK.js";
12
+ import "./chunk-HUO3YPKB.js";
13
13
  import "./chunk-MLKGABMK.js";
14
14
 
15
15
  // src/commands/insights.ts
@@ -0,0 +1,15 @@
1
+ import {
2
+ HISTORY_WINDOW_RUNS,
3
+ IntelligenceService
4
+ } from "./chunk-B4N5L6NF.js";
5
+ import "./chunk-VRI3UDRA.js";
6
+ import "./chunk-WSFCQQ7F.js";
7
+ import "./chunk-TJ4UAO7R.js";
8
+ import "./chunk-KLPRF4PA.js";
9
+ import "./chunk-QF5C3JXL.js";
10
+ import "./chunk-HUO3YPKB.js";
11
+ import "./chunk-MLKGABMK.js";
12
+ export {
13
+ HISTORY_WINDOW_RUNS,
14
+ IntelligenceService
15
+ };
@@ -0,0 +1,122 @@
1
+ import {
2
+ createApiClient
3
+ } from "./chunk-PTKFLEVN.js";
4
+ import "./chunk-FA7RDZ43.js";
5
+ import {
6
+ emitJsonl
7
+ } from "./chunk-Z7IUAJOF.js";
8
+ import "./chunk-AOJU5LKX.js";
9
+ import {
10
+ isMachineFormat,
11
+ usageError
12
+ } from "./chunk-HGMYEDAQ.js";
13
+ import {
14
+ JOURNEY_MAX_REQUESTS_PER_VISITOR_DAY,
15
+ formatPercent,
16
+ formatValidationIssues,
17
+ journeyDetailQuerySchema,
18
+ journeySummaryQuerySchema,
19
+ journeysQuerySchema
20
+ } from "./chunk-HUO3YPKB.js";
21
+ import "./chunk-MLKGABMK.js";
22
+
23
+ // src/commands/journeys.ts
24
+ function parse(schema, input) {
25
+ const parsed = schema.safeParse(input);
26
+ if (parsed.success) return parsed.data;
27
+ throw usageError(formatValidationIssues(parsed.error.issues), {
28
+ details: { issues: parsed.error.issues.map(({ path, message }) => ({ path, message })) }
29
+ });
30
+ }
31
+ function compact(input) {
32
+ return Object.fromEntries(Object.entries(input).filter(([, value]) => value !== void 0));
33
+ }
34
+ var minute = (ts) => `${ts.slice(0, 16).replace("T", " ")}Z`;
35
+ var day = (ts) => ts.slice(0, 10);
36
+ function entryLabel(visit) {
37
+ const name = visit.entryName && visit.entryName !== visit.entryClass ? ` ${visit.entryName}` : "";
38
+ return `${visit.entryClass}${name}${visit.paid && visit.entryClass !== "paid" ? " (paid)" : ""}`;
39
+ }
40
+ function printPartialSources(sources) {
41
+ for (const source of sources) console.log(`Partial source ${source.sourceId} (${source.sourceType}): ${source.reason}`);
42
+ }
43
+ var UA_NOTE = "Visitors keyed by user agent only (sources without an IP, such as Vercel) can merge different people on the same device and browser version.";
44
+ async function journeysSummary(project, opts) {
45
+ const query = parse(journeySummaryQuerySchema, compact({ since: opts.since, until: opts.until }));
46
+ const result = await createApiClient().journeysSummary(project, query);
47
+ if (isMachineFormat(opts.format)) {
48
+ console.log(JSON.stringify(result, null, 2));
49
+ return;
50
+ }
51
+ console.log(`AI visitor journeys for "${project}", first AI visit ${day(result.windowStart)} to ${day(result.windowEnd)}`);
52
+ console.log(`AI visitors: ${result.aiVisitors} (IP and user agent ${result.keyBasis.ipUa}, user agent only ${result.keyBasis.ua})`);
53
+ console.log(`AI visits: ${result.aiVisits}`);
54
+ const rate = formatPercent(result.returnRate);
55
+ const median = result.medianDaysToReturn === null ? "" : `, median ${result.medianDaysToReturn.toFixed(1)} days to return`;
56
+ console.log(`Came back later: ${result.returningVisitors} (${rate})${median}`);
57
+ const via = Object.entries(result.returnedVia).filter(([, n]) => n > 0).sort((a, b) => b[1] - a[1]);
58
+ if (via.length > 0) console.log(`Later visits by entry: ${via.map(([cls, n]) => `${cls} ${n}`).join(", ")}`);
59
+ for (const row of result.byEngine) console.log(` ${row.engine}: ${row.visitors} visitors, ${row.returningVisitors} came back`);
60
+ console.log(`Visits are kept for ${result.lookbackDays} days after each AI visit. ${result.keyBasis.ua > 0 ? UA_NOTE : ""}`.trim());
61
+ printPartialSources(result.partialSources);
62
+ }
63
+ async function journeysList(project, opts) {
64
+ const query = parse(journeysQuerySchema, compact({
65
+ since: opts.since,
66
+ until: opts.until,
67
+ engine: opts.engine,
68
+ returned: opts.returned === void 0 ? void 0 : String(opts.returned),
69
+ limit: opts.limit,
70
+ offset: opts.offset
71
+ }));
72
+ const result = await createApiClient().journeysList(project, query);
73
+ if (isMachineFormat(opts.format)) {
74
+ if (opts.format === "jsonl") emitJsonl(result.visitors.map((visitor) => ({ project, windowStart: result.windowStart, windowEnd: result.windowEnd, ...visitor })));
75
+ else console.log(JSON.stringify(result, null, 2));
76
+ return;
77
+ }
78
+ console.log(`AI visitors for "${project}": ${result.visitors.length} of ${result.totalVisitors}, first AI visit ${day(result.windowStart)} to ${day(result.windowEnd)}`);
79
+ for (const visitor of result.visitors) {
80
+ const back = visitor.returned ? `back via ${visitor.returnChannels.join(", ")}` : "no later visit";
81
+ const device = visitor.keyBasis === "ua" ? `${visitor.device} (UA only)` : visitor.device;
82
+ console.log([minute(visitor.firstAiAt), visitor.firstAiEngine, device, `${visitor.visitCount} visits`, back, visitor.visitorKey].join(" "));
83
+ }
84
+ if (result.offset + result.visitors.length < result.totalVisitors) {
85
+ console.log(`More: --offset ${result.offset + result.visitors.length}`);
86
+ }
87
+ if (result.visitors.some((visitor) => visitor.keyBasis === "ua")) console.log(UA_NOTE);
88
+ printPartialSources(result.partialSources);
89
+ }
90
+ async function journeyShow(project, visitorKey, opts) {
91
+ const query = parse(journeyDetailQuerySchema, compact({ limit: opts.limit, offset: opts.offset }));
92
+ const result = await createApiClient().journeyGet(project, visitorKey, query);
93
+ if (isMachineFormat(opts.format)) {
94
+ console.log(JSON.stringify(result, null, 2));
95
+ return;
96
+ }
97
+ const { visitor } = result;
98
+ console.log(`Visitor ${visitor.visitorKey} (${visitor.keyBasis === "ua" ? "user agent only" : "IP and user agent"})`);
99
+ console.log(`Device: ${visitor.device}`);
100
+ console.log(`User agent: ${visitor.userAgent ?? "-"}`);
101
+ console.log(`First AI visit: ${minute(visitor.firstAiAt)} from ${visitor.firstAiEngine}. Latest AI visit: ${minute(visitor.lastAiAt)}. Last seen: ${minute(visitor.lastSeenAt)}`);
102
+ for (const visit of result.visits) {
103
+ console.log("");
104
+ console.log(`${minute(visit.startedAt)} to ${minute(visit.endedAt)} ${entryLabel(visit)} lands ${visit.landingPath} ${visit.pageCount} pages, ${visit.requestCount} requests`);
105
+ for (const event of visit.events) {
106
+ console.log(` ${event.ts.slice(11, 19)} ${event.method ?? "-"} ${event.status ?? "-"} ${event.aiTouch ? "[ai] " : ""}${event.kind === "data" ? "[data] " : ""}${event.path}`);
107
+ }
108
+ }
109
+ if (visitor.cappedDays > 0) console.log(`
110
+ Reached the ${JOURNEY_MAX_REQUESTS_PER_VISITOR_DAY}-requests-per-day cap on ${visitor.cappedDays} day(s); requests over it were not stored.`);
111
+ if (result.offset + result.visits.length < result.totalVisits) {
112
+ console.log(`
113
+ Showing visits ${result.offset + 1} to ${result.offset + result.visits.length} of ${result.totalVisits}. More: --offset ${result.offset + result.visits.length}`);
114
+ }
115
+ if (visitor.keyBasis === "ua") console.log(`
116
+ ${UA_NOTE}`);
117
+ }
118
+ export {
119
+ journeyShow,
120
+ journeysList,
121
+ journeysSummary
122
+ };
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  createApiClient
3
- } from "./chunk-F6W7FCS2.js";
4
- import "./chunk-TVANRUBO.js";
3
+ } from "./chunk-PTKFLEVN.js";
4
+ import "./chunk-FA7RDZ43.js";
5
5
  import {
6
6
  emitJsonl
7
7
  } from "./chunk-Z7IUAJOF.js";
@@ -13,7 +13,7 @@ import {
13
13
  import {
14
14
  READ_ONLY_SCOPE,
15
15
  formatIsoDate
16
- } from "./chunk-Y7NX6EIK.js";
16
+ } from "./chunk-HUO3YPKB.js";
17
17
  import "./chunk-MLKGABMK.js";
18
18
 
19
19
  // src/commands/keys.ts
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  createApiClient
3
- } from "./chunk-F6W7FCS2.js";
4
- import "./chunk-TVANRUBO.js";
3
+ } from "./chunk-PTKFLEVN.js";
4
+ import "./chunk-FA7RDZ43.js";
5
5
  import {
6
6
  emitJsonl
7
7
  } from "./chunk-Z7IUAJOF.js";
@@ -10,7 +10,7 @@ import {
10
10
  CliError,
11
11
  isMachineFormat
12
12
  } from "./chunk-HGMYEDAQ.js";
13
- import "./chunk-Y7NX6EIK.js";
13
+ import "./chunk-HUO3YPKB.js";
14
14
  import "./chunk-MLKGABMK.js";
15
15
 
16
16
  // src/commands/keyword.ts
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  createApiClient
3
- } from "./chunk-F6W7FCS2.js";
4
- import "./chunk-TVANRUBO.js";
3
+ } from "./chunk-PTKFLEVN.js";
4
+ import "./chunk-FA7RDZ43.js";
5
5
  import "./chunk-AOJU5LKX.js";
6
6
  import {
7
7
  isMachineFormat,
@@ -9,7 +9,7 @@ import {
9
9
  } from "./chunk-HGMYEDAQ.js";
10
10
  import {
11
11
  logQuerySchema
12
- } from "./chunk-Y7NX6EIK.js";
12
+ } from "./chunk-HUO3YPKB.js";
13
13
  import "./chunk-MLKGABMK.js";
14
14
 
15
15
  // src/commands/logs.ts
@@ -2,10 +2,10 @@ import {
2
2
  installMcp,
3
3
  printMcpConfig,
4
4
  renderClientSnippet
5
- } from "./chunk-ZYL3LCDZ.js";
5
+ } from "./chunk-3WRDJJOY.js";
6
6
  import "./chunk-VJWDBFSL.js";
7
7
  import "./chunk-HGMYEDAQ.js";
8
- import "./chunk-Y7NX6EIK.js";
8
+ import "./chunk-HUO3YPKB.js";
9
9
  import "./chunk-MLKGABMK.js";
10
10
  export {
11
11
  installMcp,
package/dist/mcp.js CHANGED
@@ -1,24 +1,24 @@
1
1
  import {
2
2
  autoSyncSkills
3
- } from "./chunk-4UGM5YV4.js";
3
+ } from "./chunk-ON7D53WE.js";
4
4
  import {
5
5
  createCanonryMcpServer
6
- } from "./chunk-KWXARGCT.js";
6
+ } from "./chunk-VWO4WRQM.js";
7
7
  import "./chunk-NCIPNVD6.js";
8
8
  import {
9
9
  createApiClient
10
- } from "./chunk-F6W7FCS2.js";
11
- import "./chunk-TVANRUBO.js";
12
- import "./chunk-G34BVUMF.js";
13
- import "./chunk-YJPQBJZO.js";
14
- import "./chunk-QSPLYPVA.js";
15
- import "./chunk-N2HCXIQ3.js";
10
+ } from "./chunk-PTKFLEVN.js";
11
+ import "./chunk-FA7RDZ43.js";
12
+ import "./chunk-SXDAIG5W.js";
13
+ import "./chunk-LWKHCQ46.js";
14
+ import "./chunk-LJRXJHWJ.js";
15
+ import "./chunk-EED2QEE7.js";
16
16
  import "./chunk-AOJU5LKX.js";
17
17
  import "./chunk-HGMYEDAQ.js";
18
18
  import {
19
19
  isReadOnlyKey,
20
20
  updateCheckEnvOptOut
21
- } from "./chunk-Y7NX6EIK.js";
21
+ } from "./chunk-HUO3YPKB.js";
22
22
  import "./chunk-MLKGABMK.js";
23
23
 
24
24
  // src/mcp/cli.ts
@@ -14,14 +14,14 @@ import {
14
14
  showMeasurementProperty,
15
15
  showMeasurementPropertyEvidence,
16
16
  showMeasurementReport
17
- } from "./chunk-WLIGKWVB.js";
18
- import "./chunk-F6W7FCS2.js";
19
- import "./chunk-TVANRUBO.js";
17
+ } from "./chunk-RFXO5GPB.js";
18
+ import "./chunk-PTKFLEVN.js";
19
+ import "./chunk-FA7RDZ43.js";
20
20
  import "./chunk-Z7IUAJOF.js";
21
- import "./chunk-N2HCXIQ3.js";
21
+ import "./chunk-EED2QEE7.js";
22
22
  import "./chunk-AOJU5LKX.js";
23
23
  import "./chunk-HGMYEDAQ.js";
24
- import "./chunk-Y7NX6EIK.js";
24
+ import "./chunk-HUO3YPKB.js";
25
25
  import "./chunk-MLKGABMK.js";
26
26
  export {
27
27
  ADVANCED_MEASUREMENT_OPERATIONS,
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  createApiClient
3
- } from "./chunk-F6W7FCS2.js";
4
- import "./chunk-TVANRUBO.js";
3
+ } from "./chunk-PTKFLEVN.js";
4
+ import "./chunk-FA7RDZ43.js";
5
5
  import {
6
6
  emitJsonl
7
7
  } from "./chunk-Z7IUAJOF.js";
@@ -12,7 +12,7 @@ import {
12
12
  } from "./chunk-HGMYEDAQ.js";
13
13
  import {
14
14
  notificationEventSchema
15
- } from "./chunk-Y7NX6EIK.js";
15
+ } from "./chunk-HUO3YPKB.js";
16
16
  import "./chunk-MLKGABMK.js";
17
17
 
18
18
  // src/commands/notify.ts
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  createApiClient
3
- } from "./chunk-F6W7FCS2.js";
4
- import "./chunk-TVANRUBO.js";
3
+ } from "./chunk-PTKFLEVN.js";
4
+ import "./chunk-FA7RDZ43.js";
5
5
  import "./chunk-AOJU5LKX.js";
6
6
  import {
7
7
  isMachineFormat
8
8
  } from "./chunk-HGMYEDAQ.js";
9
- import "./chunk-Y7NX6EIK.js";
9
+ import "./chunk-HUO3YPKB.js";
10
10
  import "./chunk-MLKGABMK.js";
11
11
 
12
12
  // src/commands/organic-evidence.ts
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  runAdmissionLines
3
- } from "./chunk-JGRUCEL4.js";
3
+ } from "./chunk-O7BPIPJB.js";
4
4
  import {
5
5
  createApiClient
6
- } from "./chunk-F6W7FCS2.js";
7
- import "./chunk-TVANRUBO.js";
6
+ } from "./chunk-PTKFLEVN.js";
7
+ import "./chunk-FA7RDZ43.js";
8
8
  import "./chunk-Z7IUAJOF.js";
9
9
  import "./chunk-AOJU5LKX.js";
10
10
  import {
@@ -12,7 +12,7 @@ import {
12
12
  } from "./chunk-HGMYEDAQ.js";
13
13
  import {
14
14
  formatPercent
15
- } from "./chunk-Y7NX6EIK.js";
15
+ } from "./chunk-HUO3YPKB.js";
16
16
  import "./chunk-MLKGABMK.js";
17
17
 
18
18
  // src/commands/overview.ts
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  createApiClient
3
- } from "./chunk-F6W7FCS2.js";
4
- import "./chunk-TVANRUBO.js";
3
+ } from "./chunk-PTKFLEVN.js";
4
+ import "./chunk-FA7RDZ43.js";
5
5
  import {
6
6
  emitJsonl
7
7
  } from "./chunk-Z7IUAJOF.js";
@@ -23,7 +23,7 @@ import {
23
23
  normalizeProjectDomain,
24
24
  resolveNegativeReviewMaxStars,
25
25
  resolveProjectQualifiedAliases
26
- } from "./chunk-Y7NX6EIK.js";
26
+ } from "./chunk-HUO3YPKB.js";
27
27
  import "./chunk-MLKGABMK.js";
28
28
 
29
29
  // src/commands/project.ts
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  createApiClient
3
- } from "./chunk-F6W7FCS2.js";
4
- import "./chunk-TVANRUBO.js";
3
+ } from "./chunk-PTKFLEVN.js";
4
+ import "./chunk-FA7RDZ43.js";
5
5
  import {
6
6
  emitJsonl
7
7
  } from "./chunk-Z7IUAJOF.js";
@@ -12,7 +12,7 @@ import {
12
12
  } from "./chunk-HGMYEDAQ.js";
13
13
  import {
14
14
  reportedQueryClasses
15
- } from "./chunk-Y7NX6EIK.js";
15
+ } from "./chunk-HUO3YPKB.js";
16
16
  import "./chunk-MLKGABMK.js";
17
17
 
18
18
  // src/commands/query.ts
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  createApiClient
3
- } from "./chunk-F6W7FCS2.js";
4
- import "./chunk-TVANRUBO.js";
3
+ } from "./chunk-PTKFLEVN.js";
4
+ import "./chunk-FA7RDZ43.js";
5
5
  import {
6
6
  emitJsonl
7
7
  } from "./chunk-Z7IUAJOF.js";
@@ -18,7 +18,7 @@ import {
18
18
  answerCompletionLabel,
19
19
  answerCostBasisLabel,
20
20
  researchBatchCreateSchema
21
- } from "./chunk-Y7NX6EIK.js";
21
+ } from "./chunk-HUO3YPKB.js";
22
22
  import "./chunk-MLKGABMK.js";
23
23
 
24
24
  // src/commands/research.ts
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  createApiClient
3
- } from "./chunk-F6W7FCS2.js";
4
- import "./chunk-TVANRUBO.js";
3
+ } from "./chunk-PTKFLEVN.js";
4
+ import "./chunk-FA7RDZ43.js";
5
5
  import "./chunk-AOJU5LKX.js";
6
6
  import "./chunk-HGMYEDAQ.js";
7
- import "./chunk-Y7NX6EIK.js";
7
+ import "./chunk-HUO3YPKB.js";
8
8
  import "./chunk-MLKGABMK.js";
9
9
 
10
10
  // src/commands/results-export.ts
@@ -9,13 +9,13 @@ import {
9
9
  showRunCompleteness,
10
10
  triggerRun,
11
11
  triggerRunAll
12
- } from "./chunk-JGRUCEL4.js";
13
- import "./chunk-F6W7FCS2.js";
14
- import "./chunk-TVANRUBO.js";
12
+ } from "./chunk-O7BPIPJB.js";
13
+ import "./chunk-PTKFLEVN.js";
14
+ import "./chunk-FA7RDZ43.js";
15
15
  import "./chunk-Z7IUAJOF.js";
16
16
  import "./chunk-AOJU5LKX.js";
17
17
  import "./chunk-HGMYEDAQ.js";
18
- import "./chunk-Y7NX6EIK.js";
18
+ import "./chunk-HUO3YPKB.js";
19
19
  import "./chunk-MLKGABMK.js";
20
20
  export {
21
21
  cancelRun,
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  createApiClient
3
- } from "./chunk-F6W7FCS2.js";
4
- import "./chunk-TVANRUBO.js";
3
+ } from "./chunk-PTKFLEVN.js";
4
+ import "./chunk-FA7RDZ43.js";
5
5
  import {
6
6
  emitJsonl
7
7
  } from "./chunk-Z7IUAJOF.js";
@@ -9,7 +9,7 @@ import "./chunk-AOJU5LKX.js";
9
9
  import {
10
10
  isMachineFormat
11
11
  } from "./chunk-HGMYEDAQ.js";
12
- import "./chunk-Y7NX6EIK.js";
12
+ import "./chunk-HUO3YPKB.js";
13
13
  import "./chunk-MLKGABMK.js";
14
14
 
15
15
  // src/commands/schedule.ts
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  createApiClient
3
- } from "./chunk-F6W7FCS2.js";
4
- import "./chunk-TVANRUBO.js";
3
+ } from "./chunk-PTKFLEVN.js";
4
+ import "./chunk-FA7RDZ43.js";
5
5
  import "./chunk-AOJU5LKX.js";
6
6
  import {
7
7
  isMachineFormat
8
8
  } from "./chunk-HGMYEDAQ.js";
9
- import "./chunk-Y7NX6EIK.js";
9
+ import "./chunk-HUO3YPKB.js";
10
10
  import "./chunk-MLKGABMK.js";
11
11
 
12
12
  // src/commands/search.ts