@canonry/canonry 7.77.2 → 7.78.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 (139) hide show
  1. package/assets/agent-workspace/skills/aero/references/seo-analysis.md +13 -2
  2. package/assets/agent-workspace/skills/canonry/references/canonry-cli.md +4 -2
  3. package/assets/assets/{AgentSetupPage-BZXWC3x6.js → AgentSetupPage-BGdvyQFL.js} +4 -4
  4. package/assets/assets/{AuditHistoryPanel-DcrUuwRu.js → AuditHistoryPanel-Bb5wq-Bk.js} +1 -1
  5. package/assets/assets/{BacklinksPage-BSpHJBiy.js → BacklinksPage-i1cfxTDj.js} +1 -1
  6. package/assets/assets/{HistoryPage-0a0CK9zF.js → HistoryPage-C2NRdNrn.js} +1 -1
  7. package/assets/assets/MeasurementPropertyPage-CwPuJMBy.js +4 -0
  8. package/assets/assets/ProjectPage-Bbnbg7c9.js +11 -0
  9. package/assets/assets/{RunsPage-D0vbz1Ho.js → RunsPage-CJHJ7kHk.js} +1 -1
  10. package/assets/assets/{SettingsPage-DjRm5cmn.js → SettingsPage-r8VrtFyJ.js} +1 -1
  11. package/assets/assets/SiteHealthSection-D1oSuo9O.js +2 -0
  12. package/assets/assets/ToneBadge-CUe-WrzN.js +60 -0
  13. package/assets/assets/{TrafficPage-Z8Z_z0k9.js → TrafficPage-DY2ykwH1.js} +1 -1
  14. package/assets/assets/TrafficSourceDetailPage-D3KHgRvF.js +1 -0
  15. package/assets/assets/{account-context-zaSxLBst.js → account-context-B50QqDEA.js} +1 -1
  16. package/assets/assets/{card-COqALGzB.js → card-BE2fqwVq.js} +1 -1
  17. package/assets/assets/{extract-error-message-DKve0SNr.js → extract-error-message-xuN_xeRJ.js} +1 -1
  18. package/assets/assets/{format-helpers-DKrHlaV7.js → format-helpers-CiC6gALY.js} +1 -1
  19. package/assets/assets/{index-CKZK95pI.css → index-CHHZDc6d.css} +1 -1
  20. package/assets/assets/{index-fzqtwr6m.js → index-Dfm8z5cG.js} +23 -23
  21. package/assets/assets/{query-client-COM9uzxL.js → query-client-C5GhDMY7.js} +1 -1
  22. package/assets/assets/react-query-CmHyfYFq.js +1 -0
  23. package/assets/assets/{react-sigma_core.esm.min-e91U3Myi.js → react-sigma_core.esm.min-Bjdtl0TQ.js} +1 -1
  24. package/assets/assets/{service-BgFTYqJA.js → service-B2i_ZzWP.js} +1 -1
  25. package/assets/index.html +8 -8
  26. package/dist/{ads-5K5IQDCD.js → ads-MIR5MCHL.js} +3 -3
  27. package/dist/{agent-Q4PKMBEJ.js → agent-IXRL5RBI.js} +7 -7
  28. package/dist/{agent-ask-JEPVVW2J.js → agent-ask-K42H6H2T.js} +3 -3
  29. package/dist/{agent-conversations-EHE7QEBC.js → agent-conversations-2T3W4DHO.js} +3 -3
  30. package/dist/{agent-memory-AB72YQET.js → agent-memory-LJBNSTSP.js} +3 -3
  31. package/dist/{agent-providers-NQ7HJYAQ.js → agent-providers-QR4LY3AP.js} +3 -3
  32. package/dist/{agent-transcript-PRTWIQ2A.js → agent-transcript-JIHJWHV6.js} +3 -3
  33. package/dist/{analytics-IY3J4VZE.js → analytics-JRV7DBBU.js} +3 -3
  34. package/dist/{apply-HNOG674K.js → apply-ZFWDSAV4.js} +3 -3
  35. package/dist/{backfill-TO7TPPO6.js → backfill-LU2AQIPY.js} +9 -9
  36. package/dist/{backlinks-3NY5GNT4.js → backlinks-NAC2373F.js} +3 -3
  37. package/dist/{bing-Z7W7U2CT.js → bing-L3LDBJOC.js} +3 -3
  38. package/dist/{bootstrap-DXXS3LRH.js → bootstrap-I6DA4KWB.js} +10 -10
  39. package/dist/{cdp-CKPRS6VE.js → cdp-4F74XLTH.js} +7 -7
  40. package/dist/{chunk-AAUMUHUI.js → chunk-367K6XVX.js} +2 -2
  41. package/dist/{chunk-JPOIDGGF.js → chunk-3MGM3U6V.js} +1 -1
  42. package/dist/{chunk-2BDWXHYF.js → chunk-45RGH7XI.js} +3 -3
  43. package/dist/{chunk-RPJJOBKN.js → chunk-6ACWXQNZ.js} +3 -1
  44. package/dist/{chunk-5LKK2MCJ.js → chunk-6P6YBNKN.js} +7 -7
  45. package/dist/{chunk-6KPBYCPE.js → chunk-6PRFVLIK.js} +2 -2
  46. package/dist/{chunk-D5XPB7MM.js → chunk-6VBLPCCX.js} +1 -1
  47. package/dist/{chunk-5QR7D4RQ.js → chunk-7HB6QLX4.js} +1 -1
  48. package/dist/{chunk-7UVCZZQJ.js → chunk-AI44ZCMK.js} +1 -1
  49. package/dist/{chunk-JRVKW4OO.js → chunk-C5WSQXP5.js} +26 -2
  50. package/dist/{chunk-CHTKK43G.js → chunk-EFMZSYRD.js} +149 -24
  51. package/dist/{chunk-CMS4YM5M.js → chunk-EHXNYXAS.js} +3 -3
  52. package/dist/{chunk-2WBT6TEJ.js → chunk-FCYGY4FT.js} +1 -1
  53. package/dist/{chunk-XYYWKCJQ.js → chunk-JERATA5R.js} +1 -1
  54. package/dist/{chunk-JMCURBZG.js → chunk-JEUL5QZP.js} +4 -4
  55. package/dist/{chunk-PSNTEGNY.js → chunk-KZB6HLFT.js} +1 -1
  56. package/dist/{chunk-4XVXP6VR.js → chunk-L2KMR7CM.js} +2 -2
  57. package/dist/{chunk-EM2HAM2U.js → chunk-L6F2HOQH.js} +8 -8
  58. package/dist/{chunk-GDKMVOZI.js → chunk-M3BUP6XD.js} +104 -13
  59. package/dist/{chunk-4QHTXT4A.js → chunk-MUYTDD35.js} +40 -4
  60. package/dist/{chunk-TESDUMVK.js → chunk-O4WBYEGV.js} +1 -1
  61. package/dist/{chunk-FCGYYZHL.js → chunk-PM2DB3HE.js} +164 -10
  62. package/dist/{chunk-JZ4UFSVR.js → chunk-QXSOXDUR.js} +2 -2
  63. package/dist/{chunk-LKEFPJQ2.js → chunk-RSVANBNW.js} +4 -4
  64. package/dist/{chunk-G26YB6JK.js → chunk-SAHH2FXO.js} +3 -3
  65. package/dist/{chunk-46KV7CZU.js → chunk-SOQVI7EZ.js} +2 -2
  66. package/dist/{chunk-Z2FY6AGZ.js → chunk-TZRYVW75.js} +2 -2
  67. package/dist/{chunk-C3UFOS7J.js → chunk-UH44UCRM.js} +2 -2
  68. package/dist/{chunk-JEXBP7CR.js → chunk-UQOC5ZQE.js} +4 -4
  69. package/dist/{chunk-7JC4Z6FQ.js → chunk-VLOCDWCS.js} +1 -1
  70. package/dist/{chunk-WFFZAQRG.js → chunk-WCFANFR2.js} +371 -340
  71. package/dist/{chunk-ZXYCPRNY.js → chunk-WSWHLKKJ.js} +1 -1
  72. package/dist/{chunk-NDTU7FGL.js → chunk-WVCDUKJ2.js} +1 -1
  73. package/dist/{chunk-ORZBHCZR.js → chunk-WXIL2EFM.js} +4 -4
  74. package/dist/{chunk-JSCO223C.js → chunk-ZHFE6J3A.js} +1 -1
  75. package/dist/{chunk-HD2VVIPD.js → chunk-ZUC7CJVD.js} +5 -5
  76. package/dist/{citations-4AV6HLUZ.js → citations-2XELMCCV.js} +3 -3
  77. package/dist/{cli-catalog-ZVFLJXID.js → cli-catalog-KC6JYHSW.js} +3 -3
  78. package/dist/{cli-commands-NJDUBQ3R.js → cli-commands-WCOAB6XU.js} +7 -7
  79. package/dist/cli.js +13 -13
  80. package/dist/{competitor-SG4N37UD.js → competitor-IK4GYTZO.js} +3 -3
  81. package/dist/{content-EDLZAPUV.js → content-SMQPJXPC.js} +3 -3
  82. package/dist/{dashboard-5ZFVJPHX.js → dashboard-EE24ROVG.js} +6 -6
  83. package/dist/{demo-5CU3JDHC.js → demo-7XH2N65A.js} +1 -1
  84. package/dist/{demo-server-43QV3UKM.js → demo-server-CVB65UYW.js} +12 -12
  85. package/dist/{discover-7X2WMNFV.js → discover-3KHUCVE7.js} +3 -3
  86. package/dist/{discover-eval-ECOPSJJ4.js → discover-eval-DOEP4ZQ7.js} +3 -3
  87. package/dist/{doctor-NMFBKNYR.js → doctor-3T6RKSE7.js} +3 -3
  88. package/dist/{evidence-C52ZPRYB.js → evidence-4NFL5KM3.js} +3 -3
  89. package/dist/{export-cmd-2WSEETUC.js → export-cmd-BQC6XLJ7.js} +3 -3
  90. package/dist/{ga-YG4O2FT5.js → ga-HBRA4UUK.js} +3 -3
  91. package/dist/{gbp-BDGV6F74.js → gbp-2WMBTDJV.js} +3 -3
  92. package/dist/{google-P2AX6CUF.js → google-JFUE4BNJ.js} +4 -4
  93. package/dist/{google-marketing-XPE6CVQI.js → google-marketing-5ROIKBC7.js} +1 -1
  94. package/dist/{health-cmd-MIQT2JNL.js → health-cmd-7BMVCCG2.js} +3 -3
  95. package/dist/{history-3XDDJDAV.js → history-QA4ZXCVH.js} +3 -3
  96. package/dist/index.d.ts +198 -6
  97. package/dist/index.js +26 -26
  98. package/dist/{init-GT3QM7FC.js → init-O4G2MDMC.js} +12 -12
  99. package/dist/{insights-ZJUDCBBP.js → insights-K4UX2PSI.js} +3 -3
  100. package/dist/intelligence-service-D7DS4UKT.js +16 -0
  101. package/dist/{journeys-L2CXQXRP.js → journeys-UWEWJXGT.js} +3 -3
  102. package/dist/{keys-ODRGIQS7.js → keys-CL5YYE7Q.js} +3 -3
  103. package/dist/{keyword-LE3CAXO2.js → keyword-IFCC5IZT.js} +3 -3
  104. package/dist/{logs-OXK43XN2.js → logs-2A3HBUBK.js} +3 -3
  105. package/dist/{mcp-6OTPCDGW.js → mcp-B6L7PKZ4.js} +4 -4
  106. package/dist/mcp.js +10 -10
  107. package/dist/{measurement-plan-NXRCDUYL.js → measurement-plan-GYSO6CXX.js} +5 -5
  108. package/dist/{notify-VNNJTNC6.js → notify-XM23I2B3.js} +3 -3
  109. package/dist/{organic-evidence-LYDB7IID.js → organic-evidence-U7HZMXKP.js} +3 -3
  110. package/dist/{overview-2GPPQ6JP.js → overview-TSAK5DQP.js} +4 -4
  111. package/dist/{project-CQJPXC66.js → project-L7DLDEPI.js} +3 -3
  112. package/dist/{query-PPE4EHMY.js → query-FM5HDHO4.js} +3 -3
  113. package/dist/{research-GDYZKQY2.js → research-7G5JU44N.js} +3 -3
  114. package/dist/{results-export-OAJHDEIQ.js → results-export-JJDGG6ZP.js} +3 -3
  115. package/dist/{run-XDPDQS44.js → run-ZVIQVG23.js} +4 -4
  116. package/dist/{schedule-C6SYV54I.js → schedule-TV7LWSYI.js} +3 -3
  117. package/dist/{search-DONTDHQK.js → search-7KRZLZ6S.js} +3 -3
  118. package/dist/{serve-PJXATOSY.js → serve-WSOG525W.js} +27 -27
  119. package/dist/{session-PMZV27GX.js → session-OUGQSGVV.js} +14 -14
  120. package/dist/{settings-PMATG7GG.js → settings-AOXQJOHN.js} +3 -3
  121. package/dist/{skills-CYHWYN42.js → skills-DWXA55QA.js} +2 -2
  122. package/dist/{snapshot-E4GHH6DD.js → snapshot-B44CXKFU.js} +3 -3
  123. package/dist/{src-SXB3MOP3.js → src-IBGSUYEG.js} +2 -2
  124. package/dist/{status-MEGXEEW6.js → status-RNBSFZ6Q.js} +4 -4
  125. package/dist/{technical-aeo-GE6KOFKT.js → technical-aeo-UAOKK5QH.js} +3 -3
  126. package/dist/{telemetry-Y63F4XFX.js → telemetry-55PUOMA7.js} +4 -4
  127. package/dist/{tools-V546ALG7.js → tools-HRGP4FXN.js} +11 -11
  128. package/dist/{traffic-5ELSKXBM.js → traffic-M4OHG5JW.js} +5 -5
  129. package/dist/{users-7YK7XYWY.js → users-GU7MULRM.js} +3 -3
  130. package/dist/{visibility-stats-GYPUKXVS.js → visibility-stats-4IDTDXDC.js} +3 -3
  131. package/dist/{wordpress-WUGJT5NN.js → wordpress-CYXB4R5Y.js} +3 -3
  132. package/package.json +1 -1
  133. package/assets/assets/MeasurementPropertyPage-DbfTFN3F.js +0 -4
  134. package/assets/assets/ProjectPage-D0m-Xpp3.js +0 -9
  135. package/assets/assets/SiteHealthSection-BCdPVFEJ.js +0 -2
  136. package/assets/assets/ToneBadge-DSJSzqI6.js +0 -60
  137. package/assets/assets/TrafficSourceDetailPage-DJyDO527.js +0 -1
  138. package/assets/assets/react-query-BVRWpXWq.js +0 -1
  139. package/dist/intelligence-service-NXZYQJBH.js +0 -16
package/dist/index.d.ts CHANGED
@@ -1297,6 +1297,8 @@ declare const seoCapabilitySchema: z.ZodEnum<{
1297
1297
  "domain-intelligence": "domain-intelligence";
1298
1298
  "ranked-keywords": "ranked-keywords";
1299
1299
  "market-rankings": "market-rankings";
1300
+ "competitor-discovery": "competitor-discovery";
1301
+ "keyword-gaps": "keyword-gaps";
1300
1302
  }>;
1301
1303
  type SeoCapability = z.infer<typeof seoCapabilitySchema>;
1302
1304
  declare const seoTargetSchema: z.ZodObject<{
@@ -1314,6 +1316,92 @@ declare const seoDeviceSchema: z.ZodEnum<{
1314
1316
  mobile: "mobile";
1315
1317
  }>;
1316
1318
  type SeoDevice = z.infer<typeof seoDeviceSchema>;
1319
+ /** A competing domain observed in the provider's organic search database for this target and locale. */
1320
+ declare const seoCompetitorSchema: z.ZodObject<{
1321
+ target: z.ZodObject<{
1322
+ kind: z.ZodEnum<{
1323
+ domain: "domain";
1324
+ host: "host";
1325
+ }>;
1326
+ value: z.ZodString;
1327
+ includeSubdomains: z.ZodBoolean;
1328
+ }, z.core.$strict>;
1329
+ domain: z.ZodString;
1330
+ sharedKeywords: z.ZodNullable<z.ZodNumber>;
1331
+ averagePosition: z.ZodNullable<z.ZodNumber>;
1332
+ organicKeywords: z.ZodNullable<z.ZodNumber>;
1333
+ estimatedOrganicTraffic: z.ZodNullable<z.ZodNumber>;
1334
+ provenance: z.ZodObject<{
1335
+ provider: z.ZodEnum<{
1336
+ dataforseo: "dataforseo";
1337
+ }>;
1338
+ dataset: z.ZodString;
1339
+ engine: z.ZodLiteral<"google">;
1340
+ locationCode: z.ZodNumber;
1341
+ languageCode: z.ZodString;
1342
+ device: z.ZodUnion<readonly [z.ZodLiteral<"unspecified">, z.ZodEnum<{
1343
+ desktop: "desktop";
1344
+ mobile: "mobile";
1345
+ }>]>;
1346
+ collectedAt: z.ZodString;
1347
+ sourceUpdatedAt: z.ZodNullable<z.ZodString>;
1348
+ }, z.core.$strict>;
1349
+ }, z.core.$strict>;
1350
+ type SeoCompetitor = z.infer<typeof seoCompetitorSchema>;
1351
+ declare const seoKeywordGapModeSchema: z.ZodEnum<{
1352
+ shared: "shared";
1353
+ missing: "missing";
1354
+ }>;
1355
+ type SeoKeywordGapMode = z.infer<typeof seoKeywordGapModeSchema>;
1356
+ /** Missing means absent from the provider's database result for this pair, never a fresh Google rank check. */
1357
+ declare const seoKeywordGapSchema: z.ZodObject<{
1358
+ target: z.ZodObject<{
1359
+ kind: z.ZodEnum<{
1360
+ domain: "domain";
1361
+ host: "host";
1362
+ }>;
1363
+ value: z.ZodString;
1364
+ includeSubdomains: z.ZodBoolean;
1365
+ }, z.core.$strict>;
1366
+ competitor: z.ZodObject<{
1367
+ kind: z.ZodEnum<{
1368
+ domain: "domain";
1369
+ host: "host";
1370
+ }>;
1371
+ value: z.ZodString;
1372
+ includeSubdomains: z.ZodBoolean;
1373
+ }, z.core.$strict>;
1374
+ keyword: z.ZodString;
1375
+ targetRankOrganic: z.ZodNullable<z.ZodNumber>;
1376
+ competitorRankOrganic: z.ZodNumber;
1377
+ targetUrl: z.ZodNullable<z.ZodString>;
1378
+ competitorUrl: z.ZodNullable<z.ZodString>;
1379
+ searchVolume: z.ZodNullable<z.ZodNumber>;
1380
+ keywordDifficulty: z.ZodNullable<z.ZodNumber>;
1381
+ cpcUsd: z.ZodNullable<z.ZodNumber>;
1382
+ kind: z.ZodEnum<{
1383
+ shared: "shared";
1384
+ missing: "missing";
1385
+ outranked: "outranked";
1386
+ }>;
1387
+ rankGap: z.ZodNullable<z.ZodNumber>;
1388
+ provenance: z.ZodObject<{
1389
+ provider: z.ZodEnum<{
1390
+ dataforseo: "dataforseo";
1391
+ }>;
1392
+ dataset: z.ZodString;
1393
+ engine: z.ZodLiteral<"google">;
1394
+ locationCode: z.ZodNumber;
1395
+ languageCode: z.ZodString;
1396
+ device: z.ZodUnion<readonly [z.ZodLiteral<"unspecified">, z.ZodEnum<{
1397
+ desktop: "desktop";
1398
+ mobile: "mobile";
1399
+ }>]>;
1400
+ collectedAt: z.ZodString;
1401
+ sourceUpdatedAt: z.ZodNullable<z.ZodString>;
1402
+ }, z.core.$strict>;
1403
+ }, z.core.$strict>;
1404
+ type SeoKeywordGap = z.infer<typeof seoKeywordGapSchema>;
1317
1405
  /** The market and tracked query one market-rankings search answers. */
1318
1406
  declare const seoMarketRankingContextSchema: z.ZodObject<{
1319
1407
  marketKey: z.ZodString;
@@ -1533,13 +1621,92 @@ declare const seoResultsSchema: z.ZodObject<{
1533
1621
  sourceUpdatedAt: z.ZodNullable<z.ZodString>;
1534
1622
  }, z.core.$strict>>;
1535
1623
  }, z.core.$strict>>;
1624
+ competitors: z.ZodArray<z.ZodObject<{
1625
+ target: z.ZodObject<{
1626
+ kind: z.ZodEnum<{
1627
+ domain: "domain";
1628
+ host: "host";
1629
+ }>;
1630
+ value: z.ZodString;
1631
+ includeSubdomains: z.ZodBoolean;
1632
+ }, z.core.$strict>;
1633
+ domain: z.ZodString;
1634
+ sharedKeywords: z.ZodNullable<z.ZodNumber>;
1635
+ averagePosition: z.ZodNullable<z.ZodNumber>;
1636
+ organicKeywords: z.ZodNullable<z.ZodNumber>;
1637
+ estimatedOrganicTraffic: z.ZodNullable<z.ZodNumber>;
1638
+ provenance: z.ZodObject<{
1639
+ provider: z.ZodEnum<{
1640
+ dataforseo: "dataforseo";
1641
+ }>;
1642
+ dataset: z.ZodString;
1643
+ engine: z.ZodLiteral<"google">;
1644
+ locationCode: z.ZodNumber;
1645
+ languageCode: z.ZodString;
1646
+ device: z.ZodUnion<readonly [z.ZodLiteral<"unspecified">, z.ZodEnum<{
1647
+ desktop: "desktop";
1648
+ mobile: "mobile";
1649
+ }>]>;
1650
+ collectedAt: z.ZodString;
1651
+ sourceUpdatedAt: z.ZodNullable<z.ZodString>;
1652
+ }, z.core.$strict>;
1653
+ }, z.core.$strict>>;
1654
+ keywordGaps: z.ZodArray<z.ZodObject<{
1655
+ target: z.ZodObject<{
1656
+ kind: z.ZodEnum<{
1657
+ domain: "domain";
1658
+ host: "host";
1659
+ }>;
1660
+ value: z.ZodString;
1661
+ includeSubdomains: z.ZodBoolean;
1662
+ }, z.core.$strict>;
1663
+ competitor: z.ZodObject<{
1664
+ kind: z.ZodEnum<{
1665
+ domain: "domain";
1666
+ host: "host";
1667
+ }>;
1668
+ value: z.ZodString;
1669
+ includeSubdomains: z.ZodBoolean;
1670
+ }, z.core.$strict>;
1671
+ keyword: z.ZodString;
1672
+ targetRankOrganic: z.ZodNullable<z.ZodNumber>;
1673
+ competitorRankOrganic: z.ZodNumber;
1674
+ targetUrl: z.ZodNullable<z.ZodString>;
1675
+ competitorUrl: z.ZodNullable<z.ZodString>;
1676
+ searchVolume: z.ZodNullable<z.ZodNumber>;
1677
+ keywordDifficulty: z.ZodNullable<z.ZodNumber>;
1678
+ cpcUsd: z.ZodNullable<z.ZodNumber>;
1679
+ kind: z.ZodEnum<{
1680
+ shared: "shared";
1681
+ missing: "missing";
1682
+ outranked: "outranked";
1683
+ }>;
1684
+ rankGap: z.ZodNullable<z.ZodNumber>;
1685
+ provenance: z.ZodObject<{
1686
+ provider: z.ZodEnum<{
1687
+ dataforseo: "dataforseo";
1688
+ }>;
1689
+ dataset: z.ZodString;
1690
+ engine: z.ZodLiteral<"google">;
1691
+ locationCode: z.ZodNumber;
1692
+ languageCode: z.ZodString;
1693
+ device: z.ZodUnion<readonly [z.ZodLiteral<"unspecified">, z.ZodEnum<{
1694
+ desktop: "desktop";
1695
+ mobile: "mobile";
1696
+ }>]>;
1697
+ collectedAt: z.ZodString;
1698
+ sourceUpdatedAt: z.ZodNullable<z.ZodString>;
1699
+ }, z.core.$strict>;
1700
+ }, z.core.$strict>>;
1536
1701
  }, z.core.$strict>;
1537
1702
  type SeoResults = z.infer<typeof seoResultsSchema>;
1538
1703
  /** A market-rankings row as stored: rows saved before `searchStatus` existed are completed searches without it. */
1539
1704
  type StoredSeoMarketRanking = Omit<SeoMarketRanking, 'searchStatus'> & Partial<Pick<SeoMarketRanking, 'searchStatus'>>;
1540
- /** SEO results as a task stores them: tasks saved before market rankings existed have no `marketRankings`. */
1541
- type StoredSeoResults = Omit<SeoResults, 'marketRankings'> & {
1705
+ /** Stored tasks can predate market rankings, competitor discovery, or keyword-gap datasets. */
1706
+ type StoredSeoResults = Omit<SeoResults, 'marketRankings' | 'competitors' | 'keywordGaps'> & {
1542
1707
  marketRankings?: StoredSeoMarketRanking[];
1708
+ competitors?: SeoCompetitor[];
1709
+ keywordGaps?: SeoKeywordGap[];
1543
1710
  };
1544
1711
  /** One market and tracked query a market-rankings search answers, with the competitors its row reports. */
1545
1712
  interface SeoMarketRankingSearchMarket {
@@ -1569,6 +1736,11 @@ interface SeoAdapterRequest {
1569
1736
  tag: string;
1570
1737
  /** Market rankings only: `keywords` holds the one search text, searched at `locationCode`. */
1571
1738
  search?: SeoMarketRankingSearch;
1739
+ /** Keyword gaps only: one frozen target/competitor comparison and one disjoint database population. */
1740
+ comparison?: {
1741
+ competitor: SeoTarget;
1742
+ mode: SeoKeywordGapMode;
1743
+ };
1572
1744
  }
1573
1745
  interface SeoAdapterReceipt {
1574
1746
  remoteTaskId: string | null;
@@ -1648,7 +1820,7 @@ declare const seoProfiles: drizzle_orm_sqlite_core.SQLiteTableWithColumns<{
1648
1820
  data: {
1649
1821
  name: string;
1650
1822
  connectionId: string;
1651
- capabilities: ("keyword-metrics" | "domain-intelligence" | "ranked-keywords" | "market-rankings")[];
1823
+ capabilities: ("keyword-metrics" | "domain-intelligence" | "ranked-keywords" | "market-rankings" | "competitor-discovery" | "keyword-gaps")[];
1652
1824
  targets: {
1653
1825
  kind: "domain" | "host";
1654
1826
  value: string;
@@ -1663,6 +1835,11 @@ declare const seoProfiles: drizzle_orm_sqlite_core.SQLiteTableWithColumns<{
1663
1835
  key?: string | undefined;
1664
1836
  expectedPlanRevision?: number | undefined;
1665
1837
  };
1838
+ competitors?: {
1839
+ kind: "domain" | "host";
1840
+ value: string;
1841
+ includeSubdomains: boolean;
1842
+ }[] | undefined;
1666
1843
  rankings?: {
1667
1844
  locations: {
1668
1845
  key: string;
@@ -1688,7 +1865,7 @@ declare const seoProfiles: drizzle_orm_sqlite_core.SQLiteTableWithColumns<{
1688
1865
  $type: {
1689
1866
  name: string;
1690
1867
  connectionId: string;
1691
- capabilities: ("keyword-metrics" | "domain-intelligence" | "ranked-keywords" | "market-rankings")[];
1868
+ capabilities: ("keyword-metrics" | "domain-intelligence" | "ranked-keywords" | "market-rankings" | "competitor-discovery" | "keyword-gaps")[];
1692
1869
  targets: {
1693
1870
  kind: "domain" | "host";
1694
1871
  value: string;
@@ -1703,6 +1880,11 @@ declare const seoProfiles: drizzle_orm_sqlite_core.SQLiteTableWithColumns<{
1703
1880
  key?: string | undefined;
1704
1881
  expectedPlanRevision?: number | undefined;
1705
1882
  };
1883
+ competitors?: {
1884
+ kind: "domain" | "host";
1885
+ value: string;
1886
+ includeSubdomains: boolean;
1887
+ }[] | undefined;
1706
1888
  rankings?: {
1707
1889
  locations: {
1708
1890
  key: string;
@@ -1880,7 +2062,7 @@ declare const seoJobs: drizzle_orm_sqlite_core.SQLiteTableWithColumns<{
1880
2062
  data: {
1881
2063
  name: string;
1882
2064
  connectionId: string;
1883
- capabilities: ("keyword-metrics" | "domain-intelligence" | "ranked-keywords" | "market-rankings")[];
2065
+ capabilities: ("keyword-metrics" | "domain-intelligence" | "ranked-keywords" | "market-rankings" | "competitor-discovery" | "keyword-gaps")[];
1884
2066
  targets: {
1885
2067
  kind: "domain" | "host";
1886
2068
  value: string;
@@ -1895,6 +2077,11 @@ declare const seoJobs: drizzle_orm_sqlite_core.SQLiteTableWithColumns<{
1895
2077
  key?: string | undefined;
1896
2078
  expectedPlanRevision?: number | undefined;
1897
2079
  };
2080
+ competitors?: {
2081
+ kind: "domain" | "host";
2082
+ value: string;
2083
+ includeSubdomains: boolean;
2084
+ }[] | undefined;
1898
2085
  rankings?: {
1899
2086
  locations: {
1900
2087
  key: string;
@@ -1920,7 +2107,7 @@ declare const seoJobs: drizzle_orm_sqlite_core.SQLiteTableWithColumns<{
1920
2107
  $type: {
1921
2108
  name: string;
1922
2109
  connectionId: string;
1923
- capabilities: ("keyword-metrics" | "domain-intelligence" | "ranked-keywords" | "market-rankings")[];
2110
+ capabilities: ("keyword-metrics" | "domain-intelligence" | "ranked-keywords" | "market-rankings" | "competitor-discovery" | "keyword-gaps")[];
1924
2111
  targets: {
1925
2112
  kind: "domain" | "host";
1926
2113
  value: string;
@@ -1935,6 +2122,11 @@ declare const seoJobs: drizzle_orm_sqlite_core.SQLiteTableWithColumns<{
1935
2122
  key?: string | undefined;
1936
2123
  expectedPlanRevision?: number | undefined;
1937
2124
  };
2125
+ competitors?: {
2126
+ kind: "domain" | "host";
2127
+ value: string;
2128
+ includeSubdomains: boolean;
2129
+ }[] | undefined;
1938
2130
  rankings?: {
1939
2131
  locations: {
1940
2132
  key: string;
package/dist/index.js CHANGED
@@ -3,39 +3,39 @@ import {
3
3
  createGoogleMarketingCredentialStore,
4
4
  createGoogleMarketingRuntime,
5
5
  createServer
6
- } from "./chunk-CHTKK43G.js";
7
- import "./chunk-ZXYCPRNY.js";
8
- import "./chunk-5LKK2MCJ.js";
9
- import "./chunk-ORZBHCZR.js";
6
+ } from "./chunk-EFMZSYRD.js";
7
+ import "./chunk-WSWHLKKJ.js";
8
+ import "./chunk-6P6YBNKN.js";
9
+ import "./chunk-WXIL2EFM.js";
10
10
  import "./chunk-ELCLGWUT.js";
11
11
  import "./chunk-XEBKF4N5.js";
12
- import "./chunk-PSNTEGNY.js";
13
- import "./chunk-C3UFOS7J.js";
14
- import "./chunk-JEXBP7CR.js";
12
+ import "./chunk-KZB6HLFT.js";
13
+ import "./chunk-UH44UCRM.js";
14
+ import "./chunk-UQOC5ZQE.js";
15
15
  import "./chunk-TSENU4GG.js";
16
- import "./chunk-2WBT6TEJ.js";
17
- import "./chunk-6KPBYCPE.js";
18
- import "./chunk-LKEFPJQ2.js";
19
- import "./chunk-NDTU7FGL.js";
20
- import "./chunk-JRVKW4OO.js";
16
+ import "./chunk-FCYGY4FT.js";
17
+ import "./chunk-6PRFVLIK.js";
18
+ import "./chunk-RSVANBNW.js";
19
+ import "./chunk-WVCDUKJ2.js";
20
+ import "./chunk-C5WSQXP5.js";
21
21
  import {
22
22
  loadConfig
23
- } from "./chunk-7JC4Z6FQ.js";
24
- import "./chunk-7UVCZZQJ.js";
25
- import "./chunk-46KV7CZU.js";
26
- import "./chunk-4QHTXT4A.js";
27
- import "./chunk-JSCO223C.js";
28
- import "./chunk-5QR7D4RQ.js";
23
+ } from "./chunk-VLOCDWCS.js";
24
+ import "./chunk-AI44ZCMK.js";
25
+ import "./chunk-SOQVI7EZ.js";
26
+ import "./chunk-MUYTDD35.js";
27
+ import "./chunk-ZHFE6J3A.js";
28
+ import "./chunk-7HB6QLX4.js";
29
29
  import "./chunk-AOJU5LKX.js";
30
30
  import "./chunk-HGMYEDAQ.js";
31
- import "./chunk-HD2VVIPD.js";
32
- import "./chunk-Z2FY6AGZ.js";
33
- import "./chunk-XYYWKCJQ.js";
34
- import "./chunk-GDKMVOZI.js";
35
- import "./chunk-TESDUMVK.js";
36
- import "./chunk-JPOIDGGF.js";
37
- import "./chunk-D5XPB7MM.js";
38
- import "./chunk-FCGYYZHL.js";
31
+ import "./chunk-ZUC7CJVD.js";
32
+ import "./chunk-TZRYVW75.js";
33
+ import "./chunk-JERATA5R.js";
34
+ import "./chunk-M3BUP6XD.js";
35
+ import "./chunk-O4WBYEGV.js";
36
+ import "./chunk-3MGM3U6V.js";
37
+ import "./chunk-6VBLPCCX.js";
38
+ import "./chunk-PM2DB3HE.js";
39
39
  import "./chunk-MLKGABMK.js";
40
40
  export {
41
41
  GoogleMarketingRuntimeError,
@@ -1,16 +1,16 @@
1
1
  import {
2
2
  installMcp
3
- } from "./chunk-JZ4UFSVR.js";
3
+ } from "./chunk-QXSOXDUR.js";
4
4
  import {
5
5
  trackCliConnection
6
- } from "./chunk-AAUMUHUI.js";
6
+ } from "./chunk-367K6XVX.js";
7
7
  import {
8
8
  buildSetupState,
9
9
  queueServeHandoff
10
- } from "./chunk-JMCURBZG.js";
10
+ } from "./chunk-JEUL5QZP.js";
11
11
  import "./chunk-VJWDBFSL.js";
12
- import "./chunk-JEXBP7CR.js";
13
- import "./chunk-2WBT6TEJ.js";
12
+ import "./chunk-UQOC5ZQE.js";
13
+ import "./chunk-FCYGY4FT.js";
14
14
  import {
15
15
  cliRuntimeContext,
16
16
  installAttribution,
@@ -18,8 +18,8 @@ import {
18
18
  recordInstallRef,
19
19
  showFirstRunNotice,
20
20
  trackEvent
21
- } from "./chunk-6KPBYCPE.js";
22
- import "./chunk-JRVKW4OO.js";
21
+ } from "./chunk-6PRFVLIK.js";
22
+ import "./chunk-C5WSQXP5.js";
23
23
  import {
24
24
  configExists,
25
25
  getBootstrapEnv,
@@ -27,24 +27,24 @@ import {
27
27
  getConfigPath,
28
28
  saveConfig,
29
29
  withBootstrapProviderDefaults
30
- } from "./chunk-7JC4Z6FQ.js";
30
+ } from "./chunk-VLOCDWCS.js";
31
31
  import {
32
32
  installSkills
33
- } from "./chunk-7UVCZZQJ.js";
33
+ } from "./chunk-AI44ZCMK.js";
34
34
  import "./chunk-AOJU5LKX.js";
35
35
  import {
36
36
  CliError,
37
37
  isMachineFormat
38
38
  } from "./chunk-HGMYEDAQ.js";
39
- import "./chunk-JPOIDGGF.js";
39
+ import "./chunk-3MGM3U6V.js";
40
40
  import {
41
41
  apiKeys,
42
42
  createClient,
43
43
  migrate
44
- } from "./chunk-D5XPB7MM.js";
44
+ } from "./chunk-6VBLPCCX.js";
45
45
  import {
46
46
  describeError
47
- } from "./chunk-FCGYYZHL.js";
47
+ } from "./chunk-PM2DB3HE.js";
48
48
  import "./chunk-MLKGABMK.js";
49
49
 
50
50
  // src/commands/init.ts
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  createApiClient
3
- } from "./chunk-JRVKW4OO.js";
4
- import "./chunk-7JC4Z6FQ.js";
3
+ } from "./chunk-C5WSQXP5.js";
4
+ import "./chunk-VLOCDWCS.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-FCGYYZHL.js";
12
+ import "./chunk-PM2DB3HE.js";
13
13
  import "./chunk-MLKGABMK.js";
14
14
 
15
15
  // src/commands/insights.ts
@@ -0,0 +1,16 @@
1
+ import {
2
+ HISTORY_WINDOW_RUNS,
3
+ IntelligenceService
4
+ } from "./chunk-ZUC7CJVD.js";
5
+ import "./chunk-TZRYVW75.js";
6
+ import "./chunk-JERATA5R.js";
7
+ import "./chunk-M3BUP6XD.js";
8
+ import "./chunk-O4WBYEGV.js";
9
+ import "./chunk-3MGM3U6V.js";
10
+ import "./chunk-6VBLPCCX.js";
11
+ import "./chunk-PM2DB3HE.js";
12
+ import "./chunk-MLKGABMK.js";
13
+ export {
14
+ HISTORY_WINDOW_RUNS,
15
+ IntelligenceService
16
+ };
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  createApiClient
3
- } from "./chunk-JRVKW4OO.js";
4
- import "./chunk-7JC4Z6FQ.js";
3
+ } from "./chunk-C5WSQXP5.js";
4
+ import "./chunk-VLOCDWCS.js";
5
5
  import {
6
6
  emitJsonl
7
7
  } from "./chunk-Z7IUAJOF.js";
@@ -17,7 +17,7 @@ import {
17
17
  journeyDetailQuerySchema,
18
18
  journeySummaryQuerySchema,
19
19
  journeysQuerySchema
20
- } from "./chunk-FCGYYZHL.js";
20
+ } from "./chunk-PM2DB3HE.js";
21
21
  import "./chunk-MLKGABMK.js";
22
22
 
23
23
  // src/commands/journeys.ts
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  createApiClient
3
- } from "./chunk-JRVKW4OO.js";
4
- import "./chunk-7JC4Z6FQ.js";
3
+ } from "./chunk-C5WSQXP5.js";
4
+ import "./chunk-VLOCDWCS.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-FCGYYZHL.js";
16
+ } from "./chunk-PM2DB3HE.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-JRVKW4OO.js";
4
- import "./chunk-7JC4Z6FQ.js";
3
+ } from "./chunk-C5WSQXP5.js";
4
+ import "./chunk-VLOCDWCS.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-FCGYYZHL.js";
13
+ import "./chunk-PM2DB3HE.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-JRVKW4OO.js";
4
- import "./chunk-7JC4Z6FQ.js";
3
+ } from "./chunk-C5WSQXP5.js";
4
+ import "./chunk-VLOCDWCS.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-FCGYYZHL.js";
12
+ } from "./chunk-PM2DB3HE.js";
13
13
  import "./chunk-MLKGABMK.js";
14
14
 
15
15
  // src/commands/logs.ts
@@ -3,13 +3,13 @@ import {
3
3
  printMcpConfig,
4
4
  renderClientSnippet,
5
5
  showMcpProfile
6
- } from "./chunk-JZ4UFSVR.js";
6
+ } from "./chunk-QXSOXDUR.js";
7
7
  import "./chunk-VJWDBFSL.js";
8
- import "./chunk-JRVKW4OO.js";
9
- import "./chunk-7JC4Z6FQ.js";
8
+ import "./chunk-C5WSQXP5.js";
9
+ import "./chunk-VLOCDWCS.js";
10
10
  import "./chunk-AOJU5LKX.js";
11
11
  import "./chunk-HGMYEDAQ.js";
12
- import "./chunk-FCGYYZHL.js";
12
+ import "./chunk-PM2DB3HE.js";
13
13
  import "./chunk-MLKGABMK.js";
14
14
  export {
15
15
  installMcp,
package/dist/mcp.js CHANGED
@@ -1,25 +1,25 @@
1
1
  import {
2
2
  autoSyncSkills
3
- } from "./chunk-CMS4YM5M.js";
3
+ } from "./chunk-EHXNYXAS.js";
4
4
  import {
5
5
  createCanonryMcpServer
6
- } from "./chunk-LKEFPJQ2.js";
7
- import "./chunk-NDTU7FGL.js";
6
+ } from "./chunk-RSVANBNW.js";
7
+ import "./chunk-WVCDUKJ2.js";
8
8
  import {
9
9
  createApiClient
10
- } from "./chunk-JRVKW4OO.js";
11
- import "./chunk-7JC4Z6FQ.js";
12
- import "./chunk-7UVCZZQJ.js";
13
- import "./chunk-4QHTXT4A.js";
14
- import "./chunk-JSCO223C.js";
15
- import "./chunk-5QR7D4RQ.js";
10
+ } from "./chunk-C5WSQXP5.js";
11
+ import "./chunk-VLOCDWCS.js";
12
+ import "./chunk-AI44ZCMK.js";
13
+ import "./chunk-MUYTDD35.js";
14
+ import "./chunk-ZHFE6J3A.js";
15
+ import "./chunk-7HB6QLX4.js";
16
16
  import "./chunk-AOJU5LKX.js";
17
17
  import "./chunk-HGMYEDAQ.js";
18
18
  import {
19
19
  describeError,
20
20
  isReadOnlyKey,
21
21
  updateCheckEnvOptOut
22
- } from "./chunk-FCGYYZHL.js";
22
+ } from "./chunk-PM2DB3HE.js";
23
23
  import "./chunk-MLKGABMK.js";
24
24
 
25
25
  // src/mcp/cli.ts
@@ -14,14 +14,14 @@ import {
14
14
  showMeasurementProperty,
15
15
  showMeasurementPropertyEvidence,
16
16
  showMeasurementReport
17
- } from "./chunk-G26YB6JK.js";
18
- import "./chunk-JRVKW4OO.js";
19
- import "./chunk-7JC4Z6FQ.js";
17
+ } from "./chunk-SAHH2FXO.js";
18
+ import "./chunk-C5WSQXP5.js";
19
+ import "./chunk-VLOCDWCS.js";
20
20
  import "./chunk-Z7IUAJOF.js";
21
- import "./chunk-5QR7D4RQ.js";
21
+ import "./chunk-7HB6QLX4.js";
22
22
  import "./chunk-AOJU5LKX.js";
23
23
  import "./chunk-HGMYEDAQ.js";
24
- import "./chunk-FCGYYZHL.js";
24
+ import "./chunk-PM2DB3HE.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-JRVKW4OO.js";
4
- import "./chunk-7JC4Z6FQ.js";
3
+ } from "./chunk-C5WSQXP5.js";
4
+ import "./chunk-VLOCDWCS.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-FCGYYZHL.js";
15
+ } from "./chunk-PM2DB3HE.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-JRVKW4OO.js";
4
- import "./chunk-7JC4Z6FQ.js";
3
+ } from "./chunk-C5WSQXP5.js";
4
+ import "./chunk-VLOCDWCS.js";
5
5
  import "./chunk-AOJU5LKX.js";
6
6
  import {
7
7
  isMachineFormat
8
8
  } from "./chunk-HGMYEDAQ.js";
9
- import "./chunk-FCGYYZHL.js";
9
+ import "./chunk-PM2DB3HE.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-4XVXP6VR.js";
3
+ } from "./chunk-L2KMR7CM.js";
4
4
  import {
5
5
  createApiClient
6
- } from "./chunk-JRVKW4OO.js";
7
- import "./chunk-7JC4Z6FQ.js";
6
+ } from "./chunk-C5WSQXP5.js";
7
+ import "./chunk-VLOCDWCS.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-FCGYYZHL.js";
15
+ } from "./chunk-PM2DB3HE.js";
16
16
  import "./chunk-MLKGABMK.js";
17
17
 
18
18
  // src/commands/overview.ts