@canonry/canonry 7.58.5 → 7.60.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 (132) hide show
  1. package/assets/agent-workspace/skills/aero/SKILL.md +2 -1
  2. package/assets/agent-workspace/skills/canonry/references/canonry-cli.md +48 -4
  3. package/assets/agent-workspace/skills/canonry/references/server-side-traffic.md +34 -0
  4. package/assets/assets/{AgentSetupPage-CoD9a386.js → AgentSetupPage-xAe2RSTQ.js} +1 -1
  5. package/assets/assets/{AuditHistoryPanel-DSUKF9GC.js → AuditHistoryPanel-DRGMxc1o.js} +1 -1
  6. package/assets/assets/{BacklinksPage-DIZy0NkW.js → BacklinksPage-OS6r_MtQ.js} +1 -1
  7. package/assets/assets/{HistoryPage-B2Xtxu5L.js → HistoryPage-RDxUN7rD.js} +1 -1
  8. package/assets/assets/{MeasurementPropertyPage-BZmvjMiS.js → MeasurementPropertyPage-BVAmJBKa.js} +1 -1
  9. package/assets/assets/{ProjectPage-DMIoYBCF.js → ProjectPage-BWY9eFFx.js} +1 -1
  10. package/assets/assets/{RunsPage-DtvesLu2.js → RunsPage-Fb7IM6iV.js} +1 -1
  11. package/assets/assets/{SettingsPage-BjE3d5Ae.js → SettingsPage-Dz_agQCf.js} +1 -1
  12. package/assets/assets/{SiteHealthSection-D6RLbM2o.js → SiteHealthSection-TXp2Cszl.js} +2 -2
  13. package/assets/assets/ToneBadge-DZzQvXs_.js +60 -0
  14. package/assets/assets/{TrafficPage-CHZlfMgd.js → TrafficPage-BKfgooKl.js} +1 -1
  15. package/assets/assets/{TrafficSourceDetailPage-Dp7AYvRP.js → TrafficSourceDetailPage-C1HM_4Mh.js} +1 -1
  16. package/assets/assets/{account-context-DHWaWJSr.js → account-context-sj3dKq-a.js} +1 -1
  17. package/assets/assets/{card-im88-x1b.js → card-DKV0mNmm.js} +1 -1
  18. package/assets/assets/{extract-error-message-Bq8oNvfF.js → extract-error-message-Tfdo6vAJ.js} +1 -1
  19. package/assets/assets/{format-helpers-DOEct2q8.js → format-helpers-BagbvnfZ.js} +1 -1
  20. package/assets/assets/{index-CgAMnZFS.js → index-7G0DHKIO.js} +4 -4
  21. package/assets/assets/{query-client-BN_-qp71.js → query-client-7P_Wczfa.js} +1 -1
  22. package/assets/assets/{react-query-P6OZ-MPl.js → react-query-agN8P-yg.js} +1 -1
  23. package/assets/assets/{react-sigma_core.esm.min-TGwpCHs4.js → react-sigma_core.esm.min-CHz1PIYq.js} +1 -1
  24. package/assets/assets/{service-CUJkePNp.js → service-CAV4dMit.js} +1 -1
  25. package/assets/index.html +7 -7
  26. package/dist/{ads-BMBXQB67.js → ads-A42JBQ5Q.js} +3 -3
  27. package/dist/{agent-S6CU36RL.js → agent-ZKKHPMOB.js} +7 -7
  28. package/dist/{agent-ask-XG7WQBX6.js → agent-ask-SMV76QZM.js} +3 -3
  29. package/dist/{agent-conversations-C4QBZAPC.js → agent-conversations-O5QA3MHR.js} +3 -3
  30. package/dist/{agent-memory-I7UJ7MKH.js → agent-memory-ZRJQ6SZU.js} +3 -3
  31. package/dist/{agent-providers-YHRIYJDT.js → agent-providers-EOXIPRXN.js} +3 -3
  32. package/dist/{agent-transcript-2WICUOEW.js → agent-transcript-4TB2VI5E.js} +3 -3
  33. package/dist/{analytics-Y5AGSYWD.js → analytics-KSHS32RJ.js} +3 -3
  34. package/dist/{apply-DLVLMU3O.js → apply-4ZZMONED.js} +3 -3
  35. package/dist/{backfill-SINDWLD3.js → backfill-DJIIN5ZR.js} +9 -9
  36. package/dist/{backlinks-TEZTPNZ5.js → backlinks-XIAPORR5.js} +3 -3
  37. package/dist/{bing-IIA5HLND.js → bing-QDZXI334.js} +3 -3
  38. package/dist/{bootstrap-AKGA3BJI.js → bootstrap-7RAGKHJZ.js} +10 -10
  39. package/dist/{cdp-WWOFWFYU.js → cdp-3OX3WGWN.js} +7 -7
  40. package/dist/{chunk-4P7NK7XM.js → chunk-2IBFY7KQ.js} +2 -2
  41. package/dist/{chunk-SCS7R2ND.js → chunk-3JV3PWNA.js} +128 -1
  42. package/dist/{chunk-QEJBAPDP.js → chunk-4IV4FO3O.js} +2616 -2055
  43. package/dist/{chunk-27SGL3DF.js → chunk-66C7YITH.js} +1 -1
  44. package/dist/{chunk-TH3NNUJW.js → chunk-7HZ7KRHT.js} +5 -1
  45. package/dist/{chunk-O6TF6TPM.js → chunk-7KEIZ5OO.js} +8 -8
  46. package/dist/{chunk-YJPQBJZO.js → chunk-7XSGAPN5.js} +48 -3
  47. package/dist/{chunk-NWYNTYPD.js → chunk-ADY24WBX.js} +4 -4
  48. package/dist/{chunk-N2HCXIQ3.js → chunk-D7ZU5LMK.js} +1 -1
  49. package/dist/{chunk-BP5OKJIC.js → chunk-DUYENNUI.js} +2 -2
  50. package/dist/{chunk-52NCZIAC.js → chunk-FCPIOH6P.js} +1 -1
  51. package/dist/{chunk-CYVQW32W.js → chunk-FKQPVB5B.js} +21 -20
  52. package/dist/{chunk-IFVTHGXG.js → chunk-G7VJEPDZ.js} +2 -2
  53. package/dist/{chunk-U65LWABS.js → chunk-GLFE3Q3C.js} +7 -3
  54. package/dist/{chunk-QSPLYPVA.js → chunk-HGBIJIVM.js} +1 -1
  55. package/dist/{chunk-WLIGKWVB.js → chunk-HV5MGQYI.js} +3 -3
  56. package/dist/{chunk-4UGM5YV4.js → chunk-I32IFAB3.js} +3 -3
  57. package/dist/{chunk-G34BVUMF.js → chunk-IDPAYZHR.js} +1 -1
  58. package/dist/{chunk-Y7NX6EIK.js → chunk-JDL4QAPT.js} +2666 -2407
  59. package/dist/{chunk-5D4RL23M.js → chunk-L7WQTD3D.js} +5 -5
  60. package/dist/{chunk-6IBLGQVZ.js → chunk-NQTUPEBQ.js} +1 -1
  61. package/dist/{chunk-Q4J3XSWE.js → chunk-O7KIDW4H.js} +347 -10
  62. package/dist/{chunk-A5F5E4DL.js → chunk-OA6N3BI7.js} +4 -4
  63. package/dist/{chunk-3U7LL3JM.js → chunk-QCSNNKFI.js} +1 -1
  64. package/dist/{chunk-TVANRUBO.js → chunk-QEG7BSLH.js} +8 -1
  65. package/dist/{chunk-AP7YSOFC.js → chunk-QRC6SDPF.js} +417 -331
  66. package/dist/{chunk-65YQFVJM.js → chunk-RLXNZRHD.js} +5 -5
  67. package/dist/{chunk-F6W7FCS2.js → chunk-SJNF5GN2.js} +26 -2
  68. package/dist/{chunk-JGRUCEL4.js → chunk-TLNHDCJF.js} +2 -2
  69. package/dist/{chunk-L7TKNHEX.js → chunk-UHE4RLFW.js} +1 -1
  70. package/dist/{chunk-YDSY5YJE.js → chunk-XJF7LMGU.js} +4 -4
  71. package/dist/{chunk-ZYL3LCDZ.js → chunk-Z63ZR6AD.js} +1 -1
  72. package/dist/{chunk-KWXARGCT.js → chunk-Z7WG6F7Q.js} +3 -3
  73. package/dist/{chunk-4TM4NXQR.js → chunk-ZK5WIVGA.js} +2 -2
  74. package/dist/{citations-4LVBHTDX.js → citations-L3HFNQVU.js} +3 -3
  75. package/dist/{cli-catalog-PJYR3JHX.js → cli-catalog-DJPRREDK.js} +3 -3
  76. package/dist/{cli-commands-ZPW3OST3.js → cli-commands-4KG4X76Z.js} +7 -7
  77. package/dist/cli.js +14 -14
  78. package/dist/{competitor-T7UXAW4F.js → competitor-Q5LZ26U5.js} +3 -3
  79. package/dist/{content-DFYYGGPI.js → content-WRVFNQSO.js} +3 -3
  80. package/dist/{dashboard-VT3GQRW4.js → dashboard-GBP2T2AG.js} +6 -6
  81. package/dist/{demo-ZBNVULOO.js → demo-JMLMPLJ6.js} +1 -1
  82. package/dist/{demo-server-QUW4TDJL.js → demo-server-AOVPBGZ7.js} +11 -11
  83. package/dist/{discover-QTC5OBQG.js → discover-SKUNZE4Y.js} +3 -3
  84. package/dist/{discover-eval-QQZGUPR6.js → discover-eval-57BEDSQN.js} +3 -3
  85. package/dist/{doctor-VHFDL5MH.js → doctor-DMLJGH6G.js} +3 -3
  86. package/dist/{evidence-4PRFOC2I.js → evidence-J4XF4W7O.js} +3 -3
  87. package/dist/{export-cmd-BQE7BPKZ.js → export-cmd-3JXT2YAP.js} +3 -3
  88. package/dist/{ga-ULY5XDBK.js → ga-KHILAPMC.js} +3 -3
  89. package/dist/{gbp-4WHNZAFY.js → gbp-PHOFQZNT.js} +3 -3
  90. package/dist/{google-O4IVWLSG.js → google-QOLM2NBI.js} +4 -4
  91. package/dist/{google-marketing-DCQDTDDG.js → google-marketing-N37WUWNL.js} +1 -1
  92. package/dist/{health-cmd-I2JTACS7.js → health-cmd-2FUEPUJZ.js} +3 -3
  93. package/dist/{history-LUPHO3P3.js → history-MOSRCLAD.js} +3 -3
  94. package/dist/index.d.ts +818 -64
  95. package/dist/index.js +24 -24
  96. package/dist/{init-C2DLDK6T.js → init-V6ER2PJV.js} +11 -11
  97. package/dist/{insights-GC2W45U4.js → insights-F3MT66IV.js} +3 -3
  98. package/dist/intelligence-service-S5DI74LD.js +15 -0
  99. package/dist/journeys-DNS3EZNK.js +122 -0
  100. package/dist/{keys-DXQBSOBI.js → keys-NPOLKCWZ.js} +3 -3
  101. package/dist/{keyword-2DCR2QCJ.js → keyword-AXEPIJQ7.js} +3 -3
  102. package/dist/{logs-H45QFIEB.js → logs-ECEDVUTX.js} +3 -3
  103. package/dist/{mcp-NXXP6M3C.js → mcp-HUIRIY74.js} +2 -2
  104. package/dist/mcp.js +9 -9
  105. package/dist/{measurement-plan-IG4JUKKW.js → measurement-plan-5Y2IHH43.js} +5 -5
  106. package/dist/{notify-BLLWXMBB.js → notify-PIFCJ7WM.js} +3 -3
  107. package/dist/{organic-evidence-73K7W7SB.js → organic-evidence-S2IE5XV6.js} +3 -3
  108. package/dist/{overview-4TAULPUG.js → overview-TZT7C4U4.js} +4 -4
  109. package/dist/{project-ANX4JTWS.js → project-HIY673Y5.js} +3 -3
  110. package/dist/{query-U3MFTLGR.js → query-FUJIMFJQ.js} +3 -3
  111. package/dist/{research-3YZ6QI67.js → research-ECGEXWID.js} +3 -3
  112. package/dist/{results-export-72OVLKSC.js → results-export-7DRGFNUX.js} +3 -3
  113. package/dist/{run-SI6IL4FC.js → run-4JEDD5VT.js} +4 -4
  114. package/dist/{schedule-FYEHU2VH.js → schedule-NRHQXHTW.js} +3 -3
  115. package/dist/{search-MXDT3DQE.js → search-M7PNZZZL.js} +3 -3
  116. package/dist/{serve-ME2KJ6BG.js → serve-RXLQEALQ.js} +56 -27
  117. package/dist/{session-R3PRJ3RB.js → session-MCSZQR5V.js} +12 -12
  118. package/dist/{settings-ZGS26QOP.js → settings-JXOYI7VV.js} +3 -3
  119. package/dist/{skills-ZMMCKKSA.js → skills-SRUXD2PV.js} +2 -2
  120. package/dist/{snapshot-5AGGUQKE.js → snapshot-7N4BEGGM.js} +3 -3
  121. package/dist/{src-AIM5FPLZ.js → src-ZAAE3NIM.js} +8 -2
  122. package/dist/{status-HVQI4E5X.js → status-5OYYSMAY.js} +4 -4
  123. package/dist/{technical-aeo-S4OFCURE.js → technical-aeo-464OUUWT.js} +3 -3
  124. package/dist/{telemetry-SPSC5MUN.js → telemetry-BZFNXACR.js} +4 -4
  125. package/dist/{tools-VZVQ2CTU.js → tools-YVWC3NTG.js} +11 -11
  126. package/dist/{traffic-5AXVN37M.js → traffic-WXJHRB7H.js} +13 -8
  127. package/dist/{users-WFKSUCGV.js → users-U2UNKGDY.js} +3 -3
  128. package/dist/{visibility-stats-5S26GC27.js → visibility-stats-AHGME46N.js} +3 -3
  129. package/dist/{wordpress-IUPZC7II.js → wordpress-FUVFZKH2.js} +3 -3
  130. package/package.json +1 -1
  131. package/assets/assets/ToneBadge-DYEbxp5S.js +0 -60
  132. 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-FKQPVB5B.js";
7
+ import "./chunk-FCPIOH6P.js";
8
+ import "./chunk-L7WQTD3D.js";
9
+ import "./chunk-OA6N3BI7.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-NQTUPEBQ.js";
13
+ import "./chunk-DUYENNUI.js";
14
+ import "./chunk-XJF7LMGU.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-QCSNNKFI.js";
17
+ import "./chunk-G7VJEPDZ.js";
18
+ import "./chunk-Z7WG6F7Q.js";
19
19
  import "./chunk-NCIPNVD6.js";
20
- import "./chunk-F6W7FCS2.js";
20
+ import "./chunk-SJNF5GN2.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-QEG7BSLH.js";
24
+ import "./chunk-IDPAYZHR.js";
25
+ import "./chunk-ZK5WIVGA.js";
26
+ import "./chunk-7XSGAPN5.js";
27
+ import "./chunk-HGBIJIVM.js";
28
+ import "./chunk-D7ZU5LMK.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-RLXNZRHD.js";
32
+ import "./chunk-UHE4RLFW.js";
33
+ import "./chunk-4IV4FO3O.js";
34
+ import "./chunk-O7KIDW4H.js";
35
+ import "./chunk-66C7YITH.js";
36
+ import "./chunk-3JV3PWNA.js";
37
+ import "./chunk-JDL4QAPT.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-Z63ZR6AD.js";
4
4
  import {
5
5
  trackCliConnection
6
- } from "./chunk-4P7NK7XM.js";
6
+ } from "./chunk-2IBFY7KQ.js";
7
7
  import {
8
8
  buildSetupState,
9
9
  queueServeHandoff
10
- } from "./chunk-NWYNTYPD.js";
10
+ } from "./chunk-ADY24WBX.js";
11
11
  import "./chunk-VJWDBFSL.js";
12
- import "./chunk-YDSY5YJE.js";
13
- import "./chunk-3U7LL3JM.js";
12
+ import "./chunk-XJF7LMGU.js";
13
+ import "./chunk-QCSNNKFI.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-G7VJEPDZ.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-QEG7BSLH.js";
30
30
  import {
31
31
  installSkills
32
- } from "./chunk-G34BVUMF.js";
32
+ } from "./chunk-IDPAYZHR.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-66C7YITH.js";
39
39
  import {
40
40
  apiKeys,
41
41
  createClient,
42
42
  migrate
43
- } from "./chunk-SCS7R2ND.js";
43
+ } from "./chunk-3JV3PWNA.js";
44
44
  import {
45
45
  describeError
46
- } from "./chunk-Y7NX6EIK.js";
46
+ } from "./chunk-JDL4QAPT.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-SJNF5GN2.js";
4
+ import "./chunk-QEG7BSLH.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-JDL4QAPT.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-RLXNZRHD.js";
5
+ import "./chunk-UHE4RLFW.js";
6
+ import "./chunk-4IV4FO3O.js";
7
+ import "./chunk-O7KIDW4H.js";
8
+ import "./chunk-66C7YITH.js";
9
+ import "./chunk-3JV3PWNA.js";
10
+ import "./chunk-JDL4QAPT.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-SJNF5GN2.js";
4
+ import "./chunk-QEG7BSLH.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-JDL4QAPT.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-SJNF5GN2.js";
4
+ import "./chunk-QEG7BSLH.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-JDL4QAPT.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-SJNF5GN2.js";
4
+ import "./chunk-QEG7BSLH.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-JDL4QAPT.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-SJNF5GN2.js";
4
+ import "./chunk-QEG7BSLH.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-JDL4QAPT.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-Z63ZR6AD.js";
6
6
  import "./chunk-VJWDBFSL.js";
7
7
  import "./chunk-HGMYEDAQ.js";
8
- import "./chunk-Y7NX6EIK.js";
8
+ import "./chunk-JDL4QAPT.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-I32IFAB3.js";
4
4
  import {
5
5
  createCanonryMcpServer
6
- } from "./chunk-KWXARGCT.js";
6
+ } from "./chunk-Z7WG6F7Q.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-SJNF5GN2.js";
11
+ import "./chunk-QEG7BSLH.js";
12
+ import "./chunk-IDPAYZHR.js";
13
+ import "./chunk-7XSGAPN5.js";
14
+ import "./chunk-HGBIJIVM.js";
15
+ import "./chunk-D7ZU5LMK.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-JDL4QAPT.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-HV5MGQYI.js";
18
+ import "./chunk-SJNF5GN2.js";
19
+ import "./chunk-QEG7BSLH.js";
20
20
  import "./chunk-Z7IUAJOF.js";
21
- import "./chunk-N2HCXIQ3.js";
21
+ import "./chunk-D7ZU5LMK.js";
22
22
  import "./chunk-AOJU5LKX.js";
23
23
  import "./chunk-HGMYEDAQ.js";
24
- import "./chunk-Y7NX6EIK.js";
24
+ import "./chunk-JDL4QAPT.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-SJNF5GN2.js";
4
+ import "./chunk-QEG7BSLH.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-JDL4QAPT.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-SJNF5GN2.js";
4
+ import "./chunk-QEG7BSLH.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-JDL4QAPT.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-TLNHDCJF.js";
4
4
  import {
5
5
  createApiClient
6
- } from "./chunk-F6W7FCS2.js";
7
- import "./chunk-TVANRUBO.js";
6
+ } from "./chunk-SJNF5GN2.js";
7
+ import "./chunk-QEG7BSLH.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-JDL4QAPT.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-SJNF5GN2.js";
4
+ import "./chunk-QEG7BSLH.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-JDL4QAPT.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-SJNF5GN2.js";
4
+ import "./chunk-QEG7BSLH.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-JDL4QAPT.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-SJNF5GN2.js";
4
+ import "./chunk-QEG7BSLH.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-JDL4QAPT.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-SJNF5GN2.js";
4
+ import "./chunk-QEG7BSLH.js";
5
5
  import "./chunk-AOJU5LKX.js";
6
6
  import "./chunk-HGMYEDAQ.js";
7
- import "./chunk-Y7NX6EIK.js";
7
+ import "./chunk-JDL4QAPT.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-TLNHDCJF.js";
13
+ import "./chunk-SJNF5GN2.js";
14
+ import "./chunk-QEG7BSLH.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-JDL4QAPT.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-SJNF5GN2.js";
4
+ import "./chunk-QEG7BSLH.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-JDL4QAPT.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-SJNF5GN2.js";
4
+ import "./chunk-QEG7BSLH.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-JDL4QAPT.js";
10
10
  import "./chunk-MLKGABMK.js";
11
11
 
12
12
  // src/commands/search.ts