@canonry/canonry 7.65.1 → 7.66.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (135) hide show
  1. package/assets/agent-workspace/skills/aero/references/seo-analysis.md +15 -1
  2. package/assets/agent-workspace/skills/canonry/references/canonry-cli.md +1 -1
  3. package/assets/assets/{AgentSetupPage-BDLMjn1I.js → AgentSetupPage-DXFxOJ1W.js} +1 -1
  4. package/assets/assets/{AuditHistoryPanel-qhIB8KRK.js → AuditHistoryPanel-CS8UfTHc.js} +1 -1
  5. package/assets/assets/{BacklinksPage-iWrZ0-Pp.js → BacklinksPage-D5IA2tNY.js} +1 -1
  6. package/assets/assets/{HistoryPage-BP1_GGlT.js → HistoryPage-DsQAUkgR.js} +1 -1
  7. package/assets/assets/MeasurementPropertyPage-CdCnjCaS.js +4 -0
  8. package/assets/assets/ProjectPage-D3oFKnBG.js +9 -0
  9. package/assets/assets/{RunsPage-Ddd2oE1Y.js → RunsPage-BgjN1N3t.js} +1 -1
  10. package/assets/assets/{SettingsPage-D_QdYWDO.js → SettingsPage-BQuqnEvm.js} +1 -1
  11. package/assets/assets/SiteHealthSection-C6QE9xNk.js +2 -0
  12. package/assets/assets/ToneBadge-DNva5_AM.js +60 -0
  13. package/assets/assets/{TrafficPage-VnBUE1S6.js → TrafficPage-BBqpvwl5.js} +2 -2
  14. package/assets/assets/{TrafficSourceDetailPage-CdoL5Dt9.js → TrafficSourceDetailPage-uxd0ojry.js} +1 -1
  15. package/assets/assets/{account-context-CWRd3KeS.js → account-context-wRthfm6K.js} +1 -1
  16. package/assets/assets/{card-Cb_fM36G.js → card-Bq64-UB5.js} +1 -1
  17. package/assets/assets/{extract-error-message-DSIAoHTR.js → extract-error-message-BRDc8As2.js} +1 -1
  18. package/assets/assets/{format-helpers-CxNDa1oa.js → format-helpers-D5wFtgg2.js} +1 -1
  19. package/assets/assets/{index-D6WlecSB.js → index-Ttz5_bL3.js} +13 -13
  20. package/assets/assets/{query-client-DLdAMlsX.js → query-client-IopmAOx0.js} +1 -1
  21. package/assets/assets/react-query-CISHjSch.js +1 -0
  22. package/assets/assets/{react-sigma_core.esm.min-DEG8vFYD.js → react-sigma_core.esm.min-d72rX0Uo.js} +1 -1
  23. package/assets/assets/{service-DKP-BIBy.js → service-DsDxSQuN.js} +1 -1
  24. package/assets/index.html +7 -7
  25. package/dist/{ads-D4WQOT5K.js → ads-IFKZU7SC.js} +3 -3
  26. package/dist/{agent-E3IYC7OJ.js → agent-3KMENHL3.js} +7 -7
  27. package/dist/{agent-ask-ZSKRPB2Z.js → agent-ask-7WVQLLD5.js} +3 -3
  28. package/dist/{agent-conversations-YHPYPQE2.js → agent-conversations-5LR67TBD.js} +3 -3
  29. package/dist/{agent-memory-6OWOOD5O.js → agent-memory-GKUCCKVX.js} +3 -3
  30. package/dist/{agent-providers-7KZK37UO.js → agent-providers-TVCRM3YZ.js} +3 -3
  31. package/dist/{agent-transcript-3O7GPML6.js → agent-transcript-MUTCOOWG.js} +3 -3
  32. package/dist/{analytics-P2LLIUYK.js → analytics-2IXSG5ML.js} +3 -3
  33. package/dist/{apply-VBNNJOCT.js → apply-7RIYK4VC.js} +3 -3
  34. package/dist/{backfill-F5SSURCH.js → backfill-VU3FV6DQ.js} +9 -9
  35. package/dist/{backlinks-4RE3TNNA.js → backlinks-DLSRYEX2.js} +3 -3
  36. package/dist/{bing-V6UN7D44.js → bing-4CXTZUH4.js} +3 -3
  37. package/dist/{bootstrap-SHTSPAI5.js → bootstrap-OOHSBSDQ.js} +10 -10
  38. package/dist/{cdp-GDL2VFI3.js → cdp-Y53SRSRV.js} +7 -7
  39. package/dist/{chunk-ZWZOQNLD.js → chunk-2YBEI6LE.js} +1 -1
  40. package/dist/{chunk-SL3Y7IOX.js → chunk-6ASEI24F.js} +1 -1
  41. package/dist/{chunk-HI2HCYLB.js → chunk-743NYXIK.js} +2 -2
  42. package/dist/{chunk-BV6NXSAH.js → chunk-ALQEGGYM.js} +21 -3
  43. package/dist/{chunk-JSAYC36T.js → chunk-AVQQRTMD.js} +146 -39
  44. package/dist/{chunk-Q2WZAD5W.js → chunk-BCRRAH5C.js} +1 -1
  45. package/dist/{chunk-ZPRJCSSR.js → chunk-CKTA5374.js} +1 -1
  46. package/dist/{chunk-GZPGDAAF.js → chunk-DE2UI37M.js} +2 -2
  47. package/dist/{chunk-2Y7RN5HG.js → chunk-DH5QRKFW.js} +3 -3
  48. package/dist/{chunk-CRKOGLKJ.js → chunk-DVYS2RMM.js} +4 -4
  49. package/dist/{chunk-F7NZEUXP.js → chunk-EIMXB6UH.js} +14 -2
  50. package/dist/{chunk-C2PYKUD3.js → chunk-EYWC24VC.js} +1 -1
  51. package/dist/{chunk-2AROR73F.js → chunk-FG7KMVA6.js} +5 -5
  52. package/dist/{chunk-QNRMYDK6.js → chunk-FNI3QSVD.js} +1 -1
  53. package/dist/{chunk-H6HIJAIU.js → chunk-H37CDAZX.js} +2 -2
  54. package/dist/{chunk-XMKXXWMO.js → chunk-IHOVPHUW.js} +2 -2
  55. package/dist/{chunk-M3OZL6PQ.js → chunk-IPF2S5G2.js} +4 -4
  56. package/dist/{chunk-3QKKHU7D.js → chunk-J5YZXRD5.js} +8 -8
  57. package/dist/{chunk-XOMUSIM7.js → chunk-JALKQREN.js} +1 -1
  58. package/dist/{chunk-Z2EENWM3.js → chunk-JYOMHNRP.js} +182 -20
  59. package/dist/{chunk-66DPEVLJ.js → chunk-K2HDTMRI.js} +3 -3
  60. package/dist/{chunk-2UFA3DYM.js → chunk-L7DQYID4.js} +4 -4
  61. package/dist/{chunk-HO5W6QC7.js → chunk-LBRG6RKI.js} +2 -1
  62. package/dist/{chunk-HPUZMBS6.js → chunk-OSF27DCY.js} +2 -2
  63. package/dist/{chunk-737TOG2F.js → chunk-PFKBQTYD.js} +1 -1
  64. package/dist/{chunk-S4VCXCRQ.js → chunk-QRBZBJ4U.js} +1 -1
  65. package/dist/{chunk-X4AHYJCE.js → chunk-SGZWOUIZ.js} +5 -5
  66. package/dist/{chunk-AE6HJZBU.js → chunk-TJZLICMB.js} +3 -3
  67. package/dist/{chunk-GM5ZOWBK.js → chunk-VGUZPC3I.js} +4 -4
  68. package/dist/{chunk-DQVJB6CZ.js → chunk-WNCOBSPN.js} +82 -8
  69. package/dist/{chunk-LTX3TJ3E.js → chunk-XC44Q5XR.js} +1 -1
  70. package/dist/{chunk-IYB3EGSD.js → chunk-YJYLFIVT.js} +1 -1
  71. package/dist/{chunk-IJKKK7F4.js → chunk-YRX5UOM3.js} +1 -1
  72. package/dist/{chunk-SRTX6XYR.js → chunk-ZRSNMEB3.js} +364 -336
  73. package/dist/{citations-GO4SPZYS.js → citations-ZTQIYYDB.js} +3 -3
  74. package/dist/{cli-catalog-6XYQY3PI.js → cli-catalog-IZJXAHFQ.js} +3 -3
  75. package/dist/{cli-commands-2TZKVGK6.js → cli-commands-XYM2VMAK.js} +7 -7
  76. package/dist/cli.js +13 -13
  77. package/dist/{competitor-JBTKRJ6Y.js → competitor-SIXAPHOM.js} +3 -3
  78. package/dist/{content-LKXXQ7X4.js → content-XPS3D3Y6.js} +3 -3
  79. package/dist/{dashboard-LUA7UX6B.js → dashboard-FMJDM5PA.js} +6 -6
  80. package/dist/{demo-I7JDZJUW.js → demo-QQKSHTPO.js} +1 -1
  81. package/dist/{demo-server-GNGGWERV.js → demo-server-LQ3QXUAS.js} +71 -11
  82. package/dist/{discover-TODAYYJ2.js → discover-K5HFEU2T.js} +3 -3
  83. package/dist/{discover-eval-FWQESEYB.js → discover-eval-6536Z2YN.js} +3 -3
  84. package/dist/{doctor-AXNJT2UC.js → doctor-STNH3PHH.js} +3 -3
  85. package/dist/{evidence-2XGEY4ZC.js → evidence-W2EWKBAV.js} +3 -3
  86. package/dist/{export-cmd-7RMYBIBZ.js → export-cmd-EGHMY3M6.js} +3 -3
  87. package/dist/{ga-HZDIZGCO.js → ga-DVIG3PVW.js} +3 -3
  88. package/dist/{gbp-SMRBWJEL.js → gbp-SNS4XZBO.js} +3 -3
  89. package/dist/{google-2CN345XS.js → google-KGPHZG6E.js} +4 -4
  90. package/dist/{google-marketing-W7T2VTVW.js → google-marketing-VZR6W3L6.js} +1 -1
  91. package/dist/{health-cmd-W7OWZ4ZI.js → health-cmd-2KWO2GOM.js} +3 -3
  92. package/dist/{history-UVNCBHTE.js → history-ZY27B7JE.js} +3 -3
  93. package/dist/index.d.ts +236 -161
  94. package/dist/index.js +24 -24
  95. package/dist/{init-2IWS2R7G.js → init-5TXIKII2.js} +11 -11
  96. package/dist/{insights-PQ52G5LU.js → insights-MUYEOSOG.js} +3 -3
  97. package/dist/intelligence-service-U4NSGZUH.js +15 -0
  98. package/dist/{journeys-3PP5GYVJ.js → journeys-YO54IRVC.js} +3 -3
  99. package/dist/{keys-CWZUX7IQ.js → keys-M4QZGYVJ.js} +3 -3
  100. package/dist/{keyword-5OMMULLY.js → keyword-MU62MGWT.js} +3 -3
  101. package/dist/{logs-3FTE42E3.js → logs-BAQM334Q.js} +3 -3
  102. package/dist/{mcp-FK5DTI7I.js → mcp-LYS5P3PB.js} +2 -2
  103. package/dist/mcp.js +9 -9
  104. package/dist/{measurement-plan-ICO2BQNT.js → measurement-plan-HVSTZWTW.js} +5 -5
  105. package/dist/{notify-ML4PYD3L.js → notify-XSP5JXU3.js} +3 -3
  106. package/dist/{organic-evidence-4U4H3DCR.js → organic-evidence-4HYW4PVO.js} +3 -3
  107. package/dist/{overview-NF427VFO.js → overview-XH72WTZT.js} +4 -4
  108. package/dist/{project-AAO65OF7.js → project-UKH7FTQX.js} +3 -3
  109. package/dist/{query-7ZOUQNF5.js → query-RRD5M4QV.js} +3 -3
  110. package/dist/{research-UQ7AF5N3.js → research-V2IGDUKL.js} +3 -3
  111. package/dist/{results-export-CZCLC4ZH.js → results-export-5FC7ZT6O.js} +3 -3
  112. package/dist/{run-4XJZW52R.js → run-B2A4LMWU.js} +4 -4
  113. package/dist/{schedule-D3E5FDBE.js → schedule-PLY6CHQT.js} +3 -3
  114. package/dist/{search-DYET2IL4.js → search-ACVK3WH5.js} +3 -3
  115. package/dist/{serve-QWMTR3SN.js → serve-2LTQZPEK.js} +25 -25
  116. package/dist/{session-7CW2V5EH.js → session-IHXMPETX.js} +12 -12
  117. package/dist/{settings-ZISHACFX.js → settings-ZHBNX2I5.js} +3 -3
  118. package/dist/{skills-WU6IN3NL.js → skills-KWRTCXTF.js} +2 -2
  119. package/dist/{snapshot-KCKQDJ2W.js → snapshot-GBDCCV6L.js} +3 -3
  120. package/dist/{src-WIOU5G4V.js → src-NOTQWGYV.js} +2 -2
  121. package/dist/{status-CYZFVMYA.js → status-FGDDGBMJ.js} +4 -4
  122. package/dist/{technical-aeo-P5CS22AR.js → technical-aeo-AK4QI63Q.js} +3 -3
  123. package/dist/{telemetry-LPK5F2WU.js → telemetry-6QPWYMCR.js} +4 -4
  124. package/dist/{tools-E3B2GZ6Q.js → tools-PBNTVVN7.js} +11 -11
  125. package/dist/{traffic-5KZYXXIQ.js → traffic-AS4PIOQL.js} +5 -5
  126. package/dist/{users-2F346HIW.js → users-BNYKF35J.js} +3 -3
  127. package/dist/{visibility-stats-ITA6DNF3.js → visibility-stats-TWL3GJMD.js} +3 -3
  128. package/dist/{wordpress-ZHCFT6V3.js → wordpress-XBWXAACD.js} +3 -3
  129. package/package.json +1 -1
  130. package/assets/assets/MeasurementPropertyPage-dxGJ1GF9.js +0 -4
  131. package/assets/assets/ProjectPage-W6oYA85b.js +0 -9
  132. package/assets/assets/SiteHealthSection-DT20rNw-.js +0 -2
  133. package/assets/assets/ToneBadge-CJ6ObMRe.js +0 -60
  134. package/assets/assets/react-query-BktZZtSC.js +0 -1
  135. package/dist/intelligence-service-IAUGKMDO.js +0 -15
package/dist/index.d.ts CHANGED
@@ -1296,6 +1296,7 @@ declare const seoCapabilitySchema: z.ZodEnum<{
1296
1296
  "keyword-metrics": "keyword-metrics";
1297
1297
  "domain-intelligence": "domain-intelligence";
1298
1298
  "ranked-keywords": "ranked-keywords";
1299
+ "market-rankings": "market-rankings";
1299
1300
  }>;
1300
1301
  type SeoCapability = z.infer<typeof seoCapabilitySchema>;
1301
1302
  declare const seoTargetSchema: z.ZodObject<{
@@ -1307,6 +1308,188 @@ declare const seoTargetSchema: z.ZodObject<{
1307
1308
  includeSubdomains: z.ZodBoolean;
1308
1309
  }, z.core.$strict>;
1309
1310
  type SeoTarget = z.infer<typeof seoTargetSchema>;
1311
+ /** The device a Google results page was collected for. Labs datasets do not say, so they read `unspecified`. */
1312
+ declare const seoDeviceSchema: z.ZodEnum<{
1313
+ desktop: "desktop";
1314
+ mobile: "mobile";
1315
+ }>;
1316
+ type SeoDevice = z.infer<typeof seoDeviceSchema>;
1317
+ /** The market and tracked query one market-rankings search answers. */
1318
+ declare const seoMarketRankingContextSchema: z.ZodObject<{
1319
+ marketKey: z.ZodString;
1320
+ marketLabel: z.ZodString;
1321
+ regionKey: z.ZodNullable<z.ZodString>;
1322
+ regionLabel: z.ZodNullable<z.ZodString>;
1323
+ queryId: z.ZodNullable<z.ZodString>;
1324
+ queryText: z.ZodString;
1325
+ queryClass: z.ZodEnum<{
1326
+ branded: "branded";
1327
+ "non-brand": "non-brand";
1328
+ }>;
1329
+ }, z.core.$strict>;
1330
+ type SeoMarketRankingContext = z.infer<typeof seoMarketRankingContextSchema>;
1331
+ declare const seoResultsSchema: z.ZodObject<{
1332
+ keywordMetrics: z.ZodArray<z.ZodObject<{
1333
+ keyword: z.ZodString;
1334
+ searchVolume: z.ZodNullable<z.ZodNumber>;
1335
+ cpcUsd: z.ZodNullable<z.ZodNumber>;
1336
+ adCompetition: z.ZodNullable<z.ZodNumber>;
1337
+ keywordDifficulty: z.ZodNullable<z.ZodNumber>;
1338
+ searchIntent: z.ZodNullable<z.ZodString>;
1339
+ monthlySearches: z.ZodArray<z.ZodObject<{
1340
+ year: z.ZodNumber;
1341
+ month: z.ZodNumber;
1342
+ searchVolume: z.ZodNullable<z.ZodNumber>;
1343
+ }, z.core.$strict>>;
1344
+ coreKeyword: z.ZodNullable<z.ZodString>;
1345
+ provenance: z.ZodObject<{
1346
+ provider: z.ZodEnum<{
1347
+ dataforseo: "dataforseo";
1348
+ }>;
1349
+ dataset: z.ZodString;
1350
+ engine: z.ZodLiteral<"google">;
1351
+ locationCode: z.ZodNumber;
1352
+ languageCode: z.ZodString;
1353
+ device: z.ZodUnion<readonly [z.ZodLiteral<"unspecified">, z.ZodEnum<{
1354
+ desktop: "desktop";
1355
+ mobile: "mobile";
1356
+ }>]>;
1357
+ collectedAt: z.ZodString;
1358
+ sourceUpdatedAt: z.ZodNullable<z.ZodString>;
1359
+ }, z.core.$strict>;
1360
+ }, z.core.$strict>>;
1361
+ domainIntelligence: z.ZodArray<z.ZodObject<{
1362
+ target: z.ZodObject<{
1363
+ kind: z.ZodEnum<{
1364
+ domain: "domain";
1365
+ host: "host";
1366
+ }>;
1367
+ value: z.ZodString;
1368
+ includeSubdomains: z.ZodBoolean;
1369
+ }, z.core.$strict>;
1370
+ organicKeywords: z.ZodNullable<z.ZodNumber>;
1371
+ estimatedOrganicTraffic: z.ZodNullable<z.ZodNumber>;
1372
+ estimatedOrganicTrafficValueUsd: z.ZodNullable<z.ZodNumber>;
1373
+ top1: z.ZodNullable<z.ZodNumber>;
1374
+ top2To3: z.ZodNullable<z.ZodNumber>;
1375
+ top4To10: z.ZodNullable<z.ZodNumber>;
1376
+ top11To20: z.ZodNullable<z.ZodNumber>;
1377
+ provenance: z.ZodObject<{
1378
+ provider: z.ZodEnum<{
1379
+ dataforseo: "dataforseo";
1380
+ }>;
1381
+ dataset: z.ZodString;
1382
+ engine: z.ZodLiteral<"google">;
1383
+ locationCode: z.ZodNumber;
1384
+ languageCode: z.ZodString;
1385
+ device: z.ZodUnion<readonly [z.ZodLiteral<"unspecified">, z.ZodEnum<{
1386
+ desktop: "desktop";
1387
+ mobile: "mobile";
1388
+ }>]>;
1389
+ collectedAt: z.ZodString;
1390
+ sourceUpdatedAt: z.ZodNullable<z.ZodString>;
1391
+ }, z.core.$strict>;
1392
+ }, z.core.$strict>>;
1393
+ rankedKeywords: z.ZodArray<z.ZodObject<{
1394
+ target: z.ZodObject<{
1395
+ kind: z.ZodEnum<{
1396
+ domain: "domain";
1397
+ host: "host";
1398
+ }>;
1399
+ value: z.ZodString;
1400
+ includeSubdomains: z.ZodBoolean;
1401
+ }, z.core.$strict>;
1402
+ keyword: z.ZodString;
1403
+ url: z.ZodNullable<z.ZodString>;
1404
+ rankOrganic: z.ZodNullable<z.ZodNumber>;
1405
+ rankAbsolute: z.ZodNullable<z.ZodNumber>;
1406
+ searchVolume: z.ZodNullable<z.ZodNumber>;
1407
+ estimatedTraffic: z.ZodNullable<z.ZodNumber>;
1408
+ cpcUsd: z.ZodNullable<z.ZodNumber>;
1409
+ keywordDifficulty: z.ZodNullable<z.ZodNumber>;
1410
+ serpFeatures: z.ZodArray<z.ZodString>;
1411
+ provenance: z.ZodObject<{
1412
+ provider: z.ZodEnum<{
1413
+ dataforseo: "dataforseo";
1414
+ }>;
1415
+ dataset: z.ZodString;
1416
+ engine: z.ZodLiteral<"google">;
1417
+ locationCode: z.ZodNumber;
1418
+ languageCode: z.ZodString;
1419
+ device: z.ZodUnion<readonly [z.ZodLiteral<"unspecified">, z.ZodEnum<{
1420
+ desktop: "desktop";
1421
+ mobile: "mobile";
1422
+ }>]>;
1423
+ collectedAt: z.ZodString;
1424
+ sourceUpdatedAt: z.ZodNullable<z.ZodString>;
1425
+ }, z.core.$strict>;
1426
+ }, z.core.$strict>>;
1427
+ marketRankings: z.ZodArray<z.ZodObject<{
1428
+ marketKey: z.ZodString;
1429
+ marketLabel: z.ZodString;
1430
+ regionKey: z.ZodNullable<z.ZodString>;
1431
+ regionLabel: z.ZodNullable<z.ZodString>;
1432
+ queryId: z.ZodNullable<z.ZodString>;
1433
+ queryText: z.ZodString;
1434
+ queryClass: z.ZodEnum<{
1435
+ branded: "branded";
1436
+ "non-brand": "non-brand";
1437
+ }>;
1438
+ searchText: z.ZodString;
1439
+ locationLabel: z.ZodString;
1440
+ target: z.ZodObject<{
1441
+ kind: z.ZodEnum<{
1442
+ domain: "domain";
1443
+ host: "host";
1444
+ }>;
1445
+ value: z.ZodString;
1446
+ includeSubdomains: z.ZodBoolean;
1447
+ }, z.core.$strict>;
1448
+ rankOrganic: z.ZodNullable<z.ZodNumber>;
1449
+ rankAbsolute: z.ZodNullable<z.ZodNumber>;
1450
+ url: z.ZodNullable<z.ZodString>;
1451
+ depth: z.ZodNumber;
1452
+ competitors: z.ZodArray<z.ZodObject<{
1453
+ domain: z.ZodString;
1454
+ rankOrganic: z.ZodNumber;
1455
+ }, z.core.$strict>>;
1456
+ provenance: z.ZodObject<{
1457
+ provider: z.ZodEnum<{
1458
+ dataforseo: "dataforseo";
1459
+ }>;
1460
+ dataset: z.ZodString;
1461
+ engine: z.ZodLiteral<"google">;
1462
+ locationCode: z.ZodNumber;
1463
+ languageCode: z.ZodString;
1464
+ device: z.ZodUnion<readonly [z.ZodLiteral<"unspecified">, z.ZodEnum<{
1465
+ desktop: "desktop";
1466
+ mobile: "mobile";
1467
+ }>]>;
1468
+ collectedAt: z.ZodString;
1469
+ sourceUpdatedAt: z.ZodNullable<z.ZodString>;
1470
+ }, z.core.$strict>;
1471
+ }, z.core.$strict>>;
1472
+ }, z.core.$strict>;
1473
+ type SeoResults = z.infer<typeof seoResultsSchema>;
1474
+ /** SEO results as a task stores them: tasks saved before market rankings existed have no `marketRankings`. */
1475
+ type StoredSeoResults = Omit<SeoResults, 'marketRankings'> & Partial<Pick<SeoResults, 'marketRankings'>>;
1476
+ /** One market and tracked query a market-rankings search answers, with the competitors its row reports. */
1477
+ interface SeoMarketRankingSearchMarket {
1478
+ context: SeoMarketRankingContext;
1479
+ /**
1480
+ * Registrable domains of the competitors tracked for this query in this market: the project's,
1481
+ * plus those pinned to the Advanced groups whose Properties ask it. Markets that share a search
1482
+ * can track different competitors, so each row reports only its own.
1483
+ */
1484
+ competitors: string[];
1485
+ }
1486
+ /** One market-rankings search: how it runs and which markets and queries it answers. */
1487
+ interface SeoMarketRankingSearch {
1488
+ device: SeoDevice;
1489
+ depth: number;
1490
+ locationLabel: string;
1491
+ markets: SeoMarketRankingSearchMarket[];
1492
+ }
1310
1493
  /** Internal adapter boundary. These cost fields never enter customer DTOs. */
1311
1494
  interface SeoAdapterRequest {
1312
1495
  capability: SeoCapability;
@@ -1316,6 +1499,8 @@ interface SeoAdapterRequest {
1316
1499
  languageCode: string;
1317
1500
  limit: number;
1318
1501
  tag: string;
1502
+ /** Market rankings only: `keywords` holds the one search text, searched at `locationCode`. */
1503
+ search?: SeoMarketRankingSearch;
1319
1504
  }
1320
1505
  interface SeoAdapterReceipt {
1321
1506
  remoteTaskId: string | null;
@@ -1395,7 +1580,7 @@ declare const seoProfiles: drizzle_orm_sqlite_core.SQLiteTableWithColumns<{
1395
1580
  data: {
1396
1581
  name: string;
1397
1582
  connectionId: string;
1398
- capabilities: ("keyword-metrics" | "domain-intelligence" | "ranked-keywords")[];
1583
+ capabilities: ("keyword-metrics" | "domain-intelligence" | "ranked-keywords" | "market-rankings")[];
1399
1584
  targets: {
1400
1585
  kind: "domain" | "host";
1401
1586
  value: string;
@@ -1410,6 +1595,16 @@ declare const seoProfiles: drizzle_orm_sqlite_core.SQLiteTableWithColumns<{
1410
1595
  key?: string | undefined;
1411
1596
  expectedPlanRevision?: number | undefined;
1412
1597
  };
1598
+ rankings?: {
1599
+ locations: {
1600
+ key: string;
1601
+ locationCode: number;
1602
+ label: string;
1603
+ }[];
1604
+ depth: number;
1605
+ device: "desktop" | "mobile";
1606
+ searchText: "query" | "query-without-market-region";
1607
+ } | undefined;
1413
1608
  };
1414
1609
  driverParam: string;
1415
1610
  notNull: true;
@@ -1425,7 +1620,7 @@ declare const seoProfiles: drizzle_orm_sqlite_core.SQLiteTableWithColumns<{
1425
1620
  $type: {
1426
1621
  name: string;
1427
1622
  connectionId: string;
1428
- capabilities: ("keyword-metrics" | "domain-intelligence" | "ranked-keywords")[];
1623
+ capabilities: ("keyword-metrics" | "domain-intelligence" | "ranked-keywords" | "market-rankings")[];
1429
1624
  targets: {
1430
1625
  kind: "domain" | "host";
1431
1626
  value: string;
@@ -1440,6 +1635,16 @@ declare const seoProfiles: drizzle_orm_sqlite_core.SQLiteTableWithColumns<{
1440
1635
  key?: string | undefined;
1441
1636
  expectedPlanRevision?: number | undefined;
1442
1637
  };
1638
+ rankings?: {
1639
+ locations: {
1640
+ key: string;
1641
+ locationCode: number;
1642
+ label: string;
1643
+ }[];
1644
+ depth: number;
1645
+ device: "desktop" | "mobile";
1646
+ searchText: "query" | "query-without-market-region";
1647
+ } | undefined;
1443
1648
  };
1444
1649
  }>;
1445
1650
  createdAt: drizzle_orm_sqlite_core.SQLiteColumn<{
@@ -1607,7 +1812,7 @@ declare const seoJobs: drizzle_orm_sqlite_core.SQLiteTableWithColumns<{
1607
1812
  data: {
1608
1813
  name: string;
1609
1814
  connectionId: string;
1610
- capabilities: ("keyword-metrics" | "domain-intelligence" | "ranked-keywords")[];
1815
+ capabilities: ("keyword-metrics" | "domain-intelligence" | "ranked-keywords" | "market-rankings")[];
1611
1816
  targets: {
1612
1817
  kind: "domain" | "host";
1613
1818
  value: string;
@@ -1622,6 +1827,16 @@ declare const seoJobs: drizzle_orm_sqlite_core.SQLiteTableWithColumns<{
1622
1827
  key?: string | undefined;
1623
1828
  expectedPlanRevision?: number | undefined;
1624
1829
  };
1830
+ rankings?: {
1831
+ locations: {
1832
+ key: string;
1833
+ locationCode: number;
1834
+ label: string;
1835
+ }[];
1836
+ depth: number;
1837
+ device: "desktop" | "mobile";
1838
+ searchText: "query" | "query-without-market-region";
1839
+ } | undefined;
1625
1840
  };
1626
1841
  driverParam: string;
1627
1842
  notNull: true;
@@ -1637,7 +1852,7 @@ declare const seoJobs: drizzle_orm_sqlite_core.SQLiteTableWithColumns<{
1637
1852
  $type: {
1638
1853
  name: string;
1639
1854
  connectionId: string;
1640
- capabilities: ("keyword-metrics" | "domain-intelligence" | "ranked-keywords")[];
1855
+ capabilities: ("keyword-metrics" | "domain-intelligence" | "ranked-keywords" | "market-rankings")[];
1641
1856
  targets: {
1642
1857
  kind: "domain" | "host";
1643
1858
  value: string;
@@ -1652,6 +1867,16 @@ declare const seoJobs: drizzle_orm_sqlite_core.SQLiteTableWithColumns<{
1652
1867
  key?: string | undefined;
1653
1868
  expectedPlanRevision?: number | undefined;
1654
1869
  };
1870
+ rankings?: {
1871
+ locations: {
1872
+ key: string;
1873
+ locationCode: number;
1874
+ label: string;
1875
+ }[];
1876
+ depth: number;
1877
+ device: "desktop" | "mobile";
1878
+ searchText: "query" | "query-without-market-region";
1879
+ } | undefined;
1655
1880
  };
1656
1881
  }>;
1657
1882
  scopeSnapshot: drizzle_orm_sqlite_core.SQLiteColumn<{
@@ -2119,82 +2344,7 @@ declare const seoTasks: drizzle_orm_sqlite_core.SQLiteTableWithColumns<{
2119
2344
  tableName: "seo_tasks";
2120
2345
  dataType: "json";
2121
2346
  columnType: "SQLiteTextJson";
2122
- data: {
2123
- keywordMetrics: {
2124
- keyword: string;
2125
- searchVolume: number | null;
2126
- cpcUsd: number | null;
2127
- adCompetition: number | null;
2128
- keywordDifficulty: number | null;
2129
- searchIntent: string | null;
2130
- monthlySearches: {
2131
- year: number;
2132
- month: number;
2133
- searchVolume: number | null;
2134
- }[];
2135
- coreKeyword: string | null;
2136
- provenance: {
2137
- provider: "dataforseo";
2138
- dataset: string;
2139
- engine: "google";
2140
- locationCode: number;
2141
- languageCode: string;
2142
- device: "unspecified";
2143
- collectedAt: string;
2144
- sourceUpdatedAt: string | null;
2145
- };
2146
- }[];
2147
- domainIntelligence: {
2148
- target: {
2149
- kind: "domain" | "host";
2150
- value: string;
2151
- includeSubdomains: boolean;
2152
- };
2153
- organicKeywords: number | null;
2154
- estimatedOrganicTraffic: number | null;
2155
- estimatedOrganicTrafficValueUsd: number | null;
2156
- top1: number | null;
2157
- top2To3: number | null;
2158
- top4To10: number | null;
2159
- top11To20: number | null;
2160
- provenance: {
2161
- provider: "dataforseo";
2162
- dataset: string;
2163
- engine: "google";
2164
- locationCode: number;
2165
- languageCode: string;
2166
- device: "unspecified";
2167
- collectedAt: string;
2168
- sourceUpdatedAt: string | null;
2169
- };
2170
- }[];
2171
- rankedKeywords: {
2172
- target: {
2173
- kind: "domain" | "host";
2174
- value: string;
2175
- includeSubdomains: boolean;
2176
- };
2177
- keyword: string;
2178
- url: string | null;
2179
- rankOrganic: number | null;
2180
- rankAbsolute: number | null;
2181
- searchVolume: number | null;
2182
- estimatedTraffic: number | null;
2183
- cpcUsd: number | null;
2184
- keywordDifficulty: number | null;
2185
- serpFeatures: string[];
2186
- provenance: {
2187
- provider: "dataforseo";
2188
- dataset: string;
2189
- engine: "google";
2190
- locationCode: number;
2191
- languageCode: string;
2192
- device: "unspecified";
2193
- collectedAt: string;
2194
- sourceUpdatedAt: string | null;
2195
- };
2196
- }[];
2197
- };
2347
+ data: StoredSeoResults;
2198
2348
  driverParam: string;
2199
2349
  notNull: true;
2200
2350
  hasDefault: false;
@@ -2206,82 +2356,7 @@ declare const seoTasks: drizzle_orm_sqlite_core.SQLiteTableWithColumns<{
2206
2356
  identity: undefined;
2207
2357
  generated: undefined;
2208
2358
  }, {}, {
2209
- $type: {
2210
- keywordMetrics: {
2211
- keyword: string;
2212
- searchVolume: number | null;
2213
- cpcUsd: number | null;
2214
- adCompetition: number | null;
2215
- keywordDifficulty: number | null;
2216
- searchIntent: string | null;
2217
- monthlySearches: {
2218
- year: number;
2219
- month: number;
2220
- searchVolume: number | null;
2221
- }[];
2222
- coreKeyword: string | null;
2223
- provenance: {
2224
- provider: "dataforseo";
2225
- dataset: string;
2226
- engine: "google";
2227
- locationCode: number;
2228
- languageCode: string;
2229
- device: "unspecified";
2230
- collectedAt: string;
2231
- sourceUpdatedAt: string | null;
2232
- };
2233
- }[];
2234
- domainIntelligence: {
2235
- target: {
2236
- kind: "domain" | "host";
2237
- value: string;
2238
- includeSubdomains: boolean;
2239
- };
2240
- organicKeywords: number | null;
2241
- estimatedOrganicTraffic: number | null;
2242
- estimatedOrganicTrafficValueUsd: number | null;
2243
- top1: number | null;
2244
- top2To3: number | null;
2245
- top4To10: number | null;
2246
- top11To20: number | null;
2247
- provenance: {
2248
- provider: "dataforseo";
2249
- dataset: string;
2250
- engine: "google";
2251
- locationCode: number;
2252
- languageCode: string;
2253
- device: "unspecified";
2254
- collectedAt: string;
2255
- sourceUpdatedAt: string | null;
2256
- };
2257
- }[];
2258
- rankedKeywords: {
2259
- target: {
2260
- kind: "domain" | "host";
2261
- value: string;
2262
- includeSubdomains: boolean;
2263
- };
2264
- keyword: string;
2265
- url: string | null;
2266
- rankOrganic: number | null;
2267
- rankAbsolute: number | null;
2268
- searchVolume: number | null;
2269
- estimatedTraffic: number | null;
2270
- cpcUsd: number | null;
2271
- keywordDifficulty: number | null;
2272
- serpFeatures: string[];
2273
- provenance: {
2274
- provider: "dataforseo";
2275
- dataset: string;
2276
- engine: "google";
2277
- locationCode: number;
2278
- languageCode: string;
2279
- device: "unspecified";
2280
- collectedAt: string;
2281
- sourceUpdatedAt: string | null;
2282
- };
2283
- }[];
2284
- };
2359
+ $type: StoredSeoResults;
2285
2360
  }>;
2286
2361
  reconciliation: drizzle_orm_sqlite_core.SQLiteColumn<{
2287
2362
  name: "reconciliation";
@@ -11879,7 +11954,7 @@ declare const siteAuditSnapshots: drizzle_orm_sqlite_core.SQLiteTableWithColumns
11879
11954
  weight: number;
11880
11955
  sharePct: number | null;
11881
11956
  avgScore: number;
11882
- status: "fail" | "partial" | "pass";
11957
+ status: "partial" | "fail" | "pass";
11883
11958
  pagesPassing: number;
11884
11959
  pagesPartial: number;
11885
11960
  pagesFailing: number;
@@ -11901,7 +11976,7 @@ declare const siteAuditSnapshots: drizzle_orm_sqlite_core.SQLiteTableWithColumns
11901
11976
  weight: number;
11902
11977
  sharePct: number | null;
11903
11978
  avgScore: number;
11904
- status: "fail" | "partial" | "pass";
11979
+ status: "partial" | "fail" | "pass";
11905
11980
  pagesPassing: number;
11906
11981
  pagesPartial: number;
11907
11982
  pagesFailing: number;
@@ -30772,7 +30847,7 @@ declare const adsOperationSteps: drizzle_orm_sqlite_core.SQLiteTableWithColumns<
30772
30847
  tableName: "ads_operation_steps";
30773
30848
  dataType: "string";
30774
30849
  columnType: "SQLiteText";
30775
- data: "unknown" | "active" | "failed" | "pending" | "executing" | "rollback_executing" | "rolled_back" | "rollback_failed";
30850
+ data: "unknown" | "failed" | "active" | "pending" | "executing" | "rollback_executing" | "rolled_back" | "rollback_failed";
30776
30851
  driverParam: string;
30777
30852
  notNull: true;
30778
30853
  hasDefault: false;
@@ -30785,7 +30860,7 @@ declare const adsOperationSteps: drizzle_orm_sqlite_core.SQLiteTableWithColumns<
30785
30860
  generated: undefined;
30786
30861
  }, {}, {
30787
30862
  length: number | undefined;
30788
- $type: "unknown" | "active" | "failed" | "pending" | "executing" | "rollback_executing" | "rolled_back" | "rollback_failed";
30863
+ $type: "unknown" | "failed" | "active" | "pending" | "executing" | "rollback_executing" | "rolled_back" | "rollback_failed";
30789
30864
  }>;
30790
30865
  providerUpdatedAt: drizzle_orm_sqlite_core.SQLiteColumn<{
30791
30866
  name: "provider_updated_at";
@@ -37043,8 +37118,8 @@ type ClassificationConfig = z.infer<typeof classificationConfigSchema>;
37043
37118
  declare const seoInstallConfigSchema: z.ZodObject<{
37044
37119
  enabled: z.ZodBoolean;
37045
37120
  fundingMode: z.ZodEnum<{
37046
- "self-hosted": "self-hosted";
37047
37121
  hosted: "hosted";
37122
+ "self-hosted": "self-hosted";
37048
37123
  }>;
37049
37124
  policy: z.ZodObject<{
37050
37125
  maxRunCostMicros: z.ZodNumber;
package/dist/index.js CHANGED
@@ -3,38 +3,38 @@ import {
3
3
  createGoogleMarketingCredentialStore,
4
4
  createGoogleMarketingRuntime,
5
5
  createServer
6
- } from "./chunk-JSAYC36T.js";
7
- import "./chunk-737TOG2F.js";
8
- import "./chunk-2AROR73F.js";
9
- import "./chunk-CRKOGLKJ.js";
6
+ } from "./chunk-AVQQRTMD.js";
7
+ import "./chunk-PFKBQTYD.js";
8
+ import "./chunk-FG7KMVA6.js";
9
+ import "./chunk-DVYS2RMM.js";
10
10
  import "./chunk-ELCLGWUT.js";
11
11
  import "./chunk-XEBKF4N5.js";
12
- import "./chunk-QNRMYDK6.js";
13
- import "./chunk-HPUZMBS6.js";
14
- import "./chunk-M3OZL6PQ.js";
12
+ import "./chunk-FNI3QSVD.js";
13
+ import "./chunk-OSF27DCY.js";
14
+ import "./chunk-IPF2S5G2.js";
15
15
  import "./chunk-TSENU4GG.js";
16
- import "./chunk-IYB3EGSD.js";
17
- import "./chunk-XMKXXWMO.js";
18
- import "./chunk-GM5ZOWBK.js";
16
+ import "./chunk-YJYLFIVT.js";
17
+ import "./chunk-IHOVPHUW.js";
18
+ import "./chunk-VGUZPC3I.js";
19
19
  import "./chunk-NDTU7FGL.js";
20
- import "./chunk-F7NZEUXP.js";
20
+ import "./chunk-EIMXB6UH.js";
21
21
  import {
22
22
  loadConfig
23
- } from "./chunk-C2PYKUD3.js";
24
- import "./chunk-SL3Y7IOX.js";
25
- import "./chunk-H6HIJAIU.js";
26
- import "./chunk-BV6NXSAH.js";
27
- import "./chunk-ZWZOQNLD.js";
28
- import "./chunk-ZPRJCSSR.js";
23
+ } from "./chunk-EYWC24VC.js";
24
+ import "./chunk-6ASEI24F.js";
25
+ import "./chunk-H37CDAZX.js";
26
+ import "./chunk-ALQEGGYM.js";
27
+ import "./chunk-2YBEI6LE.js";
28
+ import "./chunk-CKTA5374.js";
29
29
  import "./chunk-AOJU5LKX.js";
30
30
  import "./chunk-HGMYEDAQ.js";
31
- import "./chunk-X4AHYJCE.js";
32
- import "./chunk-S4VCXCRQ.js";
33
- import "./chunk-Z2EENWM3.js";
34
- import "./chunk-Q2WZAD5W.js";
35
- import "./chunk-IJKKK7F4.js";
36
- import "./chunk-XOMUSIM7.js";
37
- import "./chunk-DQVJB6CZ.js";
31
+ import "./chunk-SGZWOUIZ.js";
32
+ import "./chunk-QRBZBJ4U.js";
33
+ import "./chunk-JYOMHNRP.js";
34
+ import "./chunk-BCRRAH5C.js";
35
+ import "./chunk-YRX5UOM3.js";
36
+ import "./chunk-JALKQREN.js";
37
+ import "./chunk-WNCOBSPN.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-LTX3TJ3E.js";
3
+ } from "./chunk-XC44Q5XR.js";
4
4
  import {
5
5
  trackCliConnection
6
- } from "./chunk-GZPGDAAF.js";
6
+ } from "./chunk-DE2UI37M.js";
7
7
  import {
8
8
  buildSetupState,
9
9
  queueServeHandoff
10
- } from "./chunk-2UFA3DYM.js";
10
+ } from "./chunk-L7DQYID4.js";
11
11
  import "./chunk-VJWDBFSL.js";
12
- import "./chunk-M3OZL6PQ.js";
13
- import "./chunk-IYB3EGSD.js";
12
+ import "./chunk-IPF2S5G2.js";
13
+ import "./chunk-YJYLFIVT.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-XMKXXWMO.js";
21
+ } from "./chunk-IHOVPHUW.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-C2PYKUD3.js";
29
+ } from "./chunk-EYWC24VC.js";
30
30
  import {
31
31
  installSkills
32
- } from "./chunk-SL3Y7IOX.js";
32
+ } from "./chunk-6ASEI24F.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-IJKKK7F4.js";
38
+ import "./chunk-YRX5UOM3.js";
39
39
  import {
40
40
  apiKeys,
41
41
  createClient,
42
42
  migrate
43
- } from "./chunk-XOMUSIM7.js";
43
+ } from "./chunk-JALKQREN.js";
44
44
  import {
45
45
  describeError
46
- } from "./chunk-DQVJB6CZ.js";
46
+ } from "./chunk-WNCOBSPN.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-F7NZEUXP.js";
4
- import "./chunk-C2PYKUD3.js";
3
+ } from "./chunk-EIMXB6UH.js";
4
+ import "./chunk-EYWC24VC.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-DQVJB6CZ.js";
12
+ import "./chunk-WNCOBSPN.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-SGZWOUIZ.js";
5
+ import "./chunk-QRBZBJ4U.js";
6
+ import "./chunk-JYOMHNRP.js";
7
+ import "./chunk-BCRRAH5C.js";
8
+ import "./chunk-YRX5UOM3.js";
9
+ import "./chunk-JALKQREN.js";
10
+ import "./chunk-WNCOBSPN.js";
11
+ import "./chunk-MLKGABMK.js";
12
+ export {
13
+ HISTORY_WINDOW_RUNS,
14
+ IntelligenceService
15
+ };