@canonry/canonry 7.65.1 → 7.67.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (138) hide show
  1. package/assets/agent-workspace/skills/aero/references/seo-analysis.md +15 -1
  2. package/assets/agent-workspace/skills/canonry/references/canonry-cli.md +2 -2
  3. package/assets/assets/{AgentSetupPage-BDLMjn1I.js → AgentSetupPage-ORsy3QEa.js} +3 -3
  4. package/assets/assets/{AuditHistoryPanel-qhIB8KRK.js → AuditHistoryPanel-vTHZDbfs.js} +1 -1
  5. package/assets/assets/{BacklinksPage-iWrZ0-Pp.js → BacklinksPage-FqADB5sO.js} +1 -1
  6. package/assets/assets/{HistoryPage-BP1_GGlT.js → HistoryPage-C4l5Toqa.js} +1 -1
  7. package/assets/assets/MeasurementPropertyPage-x8f7xanT.js +4 -0
  8. package/assets/assets/ProjectPage-CG9I2-B4.js +9 -0
  9. package/assets/assets/{RunsPage-Ddd2oE1Y.js → RunsPage-oyhhwAPq.js} +1 -1
  10. package/assets/assets/{SettingsPage-D_QdYWDO.js → SettingsPage-DJc4Di1M.js} +1 -1
  11. package/assets/assets/SiteHealthSection-BvqFg3rG.js +2 -0
  12. package/assets/assets/ToneBadge-CTWpeKu8.js +60 -0
  13. package/assets/assets/{TrafficPage-VnBUE1S6.js → TrafficPage-DAD0FFkL.js} +2 -2
  14. package/assets/assets/TrafficSourceDetailPage-BBEzbawh.js +1 -0
  15. package/assets/assets/{account-context-CWRd3KeS.js → account-context-DMHOefRt.js} +1 -1
  16. package/assets/assets/{card-Cb_fM36G.js → card-Brp6fFNG.js} +1 -1
  17. package/assets/assets/{extract-error-message-DSIAoHTR.js → extract-error-message-5QpQCsGb.js} +1 -1
  18. package/assets/assets/{format-helpers-CxNDa1oa.js → format-helpers-BFM0FRjT.js} +1 -1
  19. package/assets/assets/index-BBNs-RhI.js +60 -0
  20. package/assets/assets/{query-client-DLdAMlsX.js → query-client-BMTW-xss.js} +1 -1
  21. package/assets/assets/react-query-DGmY6hJa.js +1 -0
  22. package/assets/assets/{react-sigma_core.esm.min-DEG8vFYD.js → react-sigma_core.esm.min-C0VjhgDo.js} +1 -1
  23. package/assets/assets/service-DW9u_0aZ.js +1 -0
  24. package/assets/index.html +7 -7
  25. package/dist/{ads-D4WQOT5K.js → ads-BXGEL4WI.js} +3 -3
  26. package/dist/{agent-E3IYC7OJ.js → agent-LFX7GHWD.js} +7 -7
  27. package/dist/{agent-ask-ZSKRPB2Z.js → agent-ask-QJV225AT.js} +3 -3
  28. package/dist/{agent-conversations-YHPYPQE2.js → agent-conversations-2TZDIGA6.js} +3 -3
  29. package/dist/{agent-memory-6OWOOD5O.js → agent-memory-XCY3ZG5C.js} +3 -3
  30. package/dist/{agent-providers-7KZK37UO.js → agent-providers-VS6PH55Y.js} +3 -3
  31. package/dist/{agent-transcript-3O7GPML6.js → agent-transcript-BUUHOTZM.js} +3 -3
  32. package/dist/{analytics-P2LLIUYK.js → analytics-YWJWPUNF.js} +3 -3
  33. package/dist/{apply-VBNNJOCT.js → apply-BMCYFBEJ.js} +3 -3
  34. package/dist/{backfill-F5SSURCH.js → backfill-YBOKT5LT.js} +9 -9
  35. package/dist/{backlinks-4RE3TNNA.js → backlinks-QNNABB4N.js} +3 -3
  36. package/dist/{bing-V6UN7D44.js → bing-KEMXBABP.js} +3 -3
  37. package/dist/{bootstrap-SHTSPAI5.js → bootstrap-X2AADK4M.js} +10 -10
  38. package/dist/{cdp-GDL2VFI3.js → cdp-WVYUEV4U.js} +7 -7
  39. package/dist/{chunk-3QKKHU7D.js → chunk-2X7DFLMD.js} +8 -8
  40. package/dist/{chunk-2AROR73F.js → chunk-32BTTG5N.js} +5 -5
  41. package/dist/{chunk-BV6NXSAH.js → chunk-37R6GTU7.js} +21 -3
  42. package/dist/{chunk-HPUZMBS6.js → chunk-5DMESZDF.js} +2 -2
  43. package/dist/{chunk-XOMUSIM7.js → chunk-6DJN7HCK.js} +83 -11
  44. package/dist/{chunk-SRTX6XYR.js → chunk-AFRCTLUL.js} +370 -337
  45. package/dist/{chunk-Z2EENWM3.js → chunk-AVISYPUU.js} +877 -478
  46. package/dist/{chunk-HI2HCYLB.js → chunk-CBYKQRDH.js} +2 -2
  47. package/dist/{chunk-S4VCXCRQ.js → chunk-EKSXR7RJ.js} +1 -1
  48. package/dist/{chunk-66DPEVLJ.js → chunk-G6PZEDTH.js} +3 -3
  49. package/dist/{chunk-GZPGDAAF.js → chunk-GTPGYFZ4.js} +2 -2
  50. package/dist/{chunk-Q2WZAD5W.js → chunk-HX3WLTZU.js} +1 -1
  51. package/dist/{chunk-JSAYC36T.js → chunk-IEBMODUI.js} +193 -47
  52. package/dist/{chunk-2UFA3DYM.js → chunk-KJLICF53.js} +4 -4
  53. package/dist/{chunk-ZPRJCSSR.js → chunk-LU3M54IY.js} +1 -1
  54. package/dist/{chunk-HO5W6QC7.js → chunk-MD5PHJBX.js} +2 -1
  55. package/dist/{chunk-SL3Y7IOX.js → chunk-MLOGEXIO.js} +1 -1
  56. package/dist/{chunk-LTX3TJ3E.js → chunk-MOJ2XZXK.js} +1 -1
  57. package/dist/{chunk-IYB3EGSD.js → chunk-NHHZQWMI.js} +1 -1
  58. package/dist/{chunk-H6HIJAIU.js → chunk-P74TPIWZ.js} +2 -2
  59. package/dist/{chunk-M3OZL6PQ.js → chunk-RRS7U6HQ.js} +4 -4
  60. package/dist/{chunk-X4AHYJCE.js → chunk-UHLWNU6I.js} +5 -5
  61. package/dist/{chunk-C2PYKUD3.js → chunk-UNCOK6DA.js} +1 -1
  62. package/dist/{chunk-IJKKK7F4.js → chunk-UXTNDZKM.js} +1 -1
  63. package/dist/{chunk-GM5ZOWBK.js → chunk-VR4MYSEH.js} +4 -4
  64. package/dist/{chunk-ZWZOQNLD.js → chunk-WSYLDPYF.js} +1 -1
  65. package/dist/{chunk-AE6HJZBU.js → chunk-WZ4LUM26.js} +3 -3
  66. package/dist/{chunk-DQVJB6CZ.js → chunk-XEGYSZEV.js} +99 -9
  67. package/dist/{chunk-F7NZEUXP.js → chunk-XEPEMON2.js} +14 -2
  68. package/dist/{chunk-CRKOGLKJ.js → chunk-XIA6NWIF.js} +4 -4
  69. package/dist/{chunk-737TOG2F.js → chunk-XMIKSCAO.js} +1 -1
  70. package/dist/{chunk-2Y7RN5HG.js → chunk-Y54PMWBH.js} +3 -3
  71. package/dist/{chunk-QNRMYDK6.js → chunk-YP743QX5.js} +1 -1
  72. package/dist/{chunk-XMKXXWMO.js → chunk-ZGUR4AZM.js} +2 -2
  73. package/dist/{citations-GO4SPZYS.js → citations-ZSI5BOGD.js} +3 -3
  74. package/dist/{cli-catalog-6XYQY3PI.js → cli-catalog-J2HUCGJL.js} +3 -3
  75. package/dist/{cli-commands-2TZKVGK6.js → cli-commands-XFMVFREG.js} +7 -7
  76. package/dist/cli.js +13 -13
  77. package/dist/{competitor-JBTKRJ6Y.js → competitor-WJDN3DLP.js} +3 -3
  78. package/dist/{content-LKXXQ7X4.js → content-K52YV4BK.js} +3 -3
  79. package/dist/{dashboard-LUA7UX6B.js → dashboard-L6RKTP35.js} +6 -6
  80. package/dist/{demo-I7JDZJUW.js → demo-Y7XRD4X4.js} +1 -1
  81. package/dist/{demo-server-GNGGWERV.js → demo-server-QNQX5CNP.js} +73 -11
  82. package/dist/{discover-TODAYYJ2.js → discover-UO5M7HQZ.js} +3 -3
  83. package/dist/{discover-eval-FWQESEYB.js → discover-eval-DN4PS6VN.js} +3 -3
  84. package/dist/{doctor-AXNJT2UC.js → doctor-7UYUXG7J.js} +3 -3
  85. package/dist/{evidence-2XGEY4ZC.js → evidence-DGKN5SGQ.js} +3 -3
  86. package/dist/{export-cmd-7RMYBIBZ.js → export-cmd-QAQWWIRL.js} +3 -3
  87. package/dist/{ga-HZDIZGCO.js → ga-4LGTEA6J.js} +3 -3
  88. package/dist/{gbp-SMRBWJEL.js → gbp-XOLYZ4XC.js} +3 -3
  89. package/dist/{google-2CN345XS.js → google-CAQDCFA6.js} +4 -4
  90. package/dist/{google-marketing-W7T2VTVW.js → google-marketing-HU5I3XPP.js} +1 -1
  91. package/dist/{health-cmd-W7OWZ4ZI.js → health-cmd-3PEB3M45.js} +3 -3
  92. package/dist/{history-UVNCBHTE.js → history-UGUWYPOY.js} +3 -3
  93. package/dist/index.d.ts +342 -161
  94. package/dist/index.js +24 -24
  95. package/dist/{init-2IWS2R7G.js → init-DEW65BLN.js} +11 -11
  96. package/dist/{insights-PQ52G5LU.js → insights-ZC3R4ZYG.js} +3 -3
  97. package/dist/intelligence-service-XRJVXZYI.js +15 -0
  98. package/dist/{journeys-3PP5GYVJ.js → journeys-W6F4BCXF.js} +3 -3
  99. package/dist/{keys-CWZUX7IQ.js → keys-ME7VRF73.js} +3 -3
  100. package/dist/{keyword-5OMMULLY.js → keyword-R3PLGSO5.js} +3 -3
  101. package/dist/{logs-3FTE42E3.js → logs-UM7CWHYB.js} +3 -3
  102. package/dist/{mcp-FK5DTI7I.js → mcp-BUPP5HC6.js} +2 -2
  103. package/dist/mcp.js +9 -9
  104. package/dist/{measurement-plan-ICO2BQNT.js → measurement-plan-R4KZHJII.js} +5 -5
  105. package/dist/{notify-ML4PYD3L.js → notify-4C26D2MY.js} +3 -3
  106. package/dist/{organic-evidence-4U4H3DCR.js → organic-evidence-SLIISYHW.js} +3 -3
  107. package/dist/{overview-NF427VFO.js → overview-JJZZOYQU.js} +4 -4
  108. package/dist/{project-AAO65OF7.js → project-XJH2OECP.js} +3 -3
  109. package/dist/{query-7ZOUQNF5.js → query-ZWAIWIYB.js} +3 -3
  110. package/dist/{research-UQ7AF5N3.js → research-GTVWVZBI.js} +3 -3
  111. package/dist/{results-export-CZCLC4ZH.js → results-export-CPAWO5AV.js} +3 -3
  112. package/dist/{run-4XJZW52R.js → run-RI2BMD7U.js} +4 -4
  113. package/dist/{schedule-D3E5FDBE.js → schedule-HDDWULBX.js} +3 -3
  114. package/dist/{search-DYET2IL4.js → search-TT3Q2BBP.js} +3 -3
  115. package/dist/{serve-QWMTR3SN.js → serve-6JYPUU24.js} +25 -25
  116. package/dist/{session-7CW2V5EH.js → session-DDESFV3N.js} +12 -12
  117. package/dist/{settings-ZISHACFX.js → settings-4AYXYJVA.js} +3 -3
  118. package/dist/{skills-WU6IN3NL.js → skills-UFMLMMY5.js} +2 -2
  119. package/dist/{snapshot-KCKQDJ2W.js → snapshot-KLWQGZB6.js} +3 -3
  120. package/dist/{src-WIOU5G4V.js → src-6IHGEMT2.js} +6 -2
  121. package/dist/{status-CYZFVMYA.js → status-HRIUPGUM.js} +4 -4
  122. package/dist/{technical-aeo-P5CS22AR.js → technical-aeo-HKJQHMMS.js} +3 -3
  123. package/dist/{telemetry-LPK5F2WU.js → telemetry-IS6KZK32.js} +4 -4
  124. package/dist/{tools-E3B2GZ6Q.js → tools-ZNVQFEAX.js} +11 -11
  125. package/dist/{traffic-5KZYXXIQ.js → traffic-PFHFGN44.js} +5 -5
  126. package/dist/{users-2F346HIW.js → users-BSLUSU6W.js} +3 -3
  127. package/dist/{visibility-stats-ITA6DNF3.js → visibility-stats-MPRNHPZW.js} +3 -3
  128. package/dist/{wordpress-ZHCFT6V3.js → wordpress-U5XKHURL.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/TrafficSourceDetailPage-CdoL5Dt9.js +0 -1
  135. package/assets/assets/index-D6WlecSB.js +0 -60
  136. package/assets/assets/react-query-BktZZtSC.js +0 -1
  137. package/assets/assets/service-DKP-BIBy.js +0 -1
  138. 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,256 @@ 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
+ /**
1332
+ * The target's position for one tracked query, searched on Google from the
1333
+ * market's location. In a `completed` or `partial` row a null rank means the
1334
+ * target was not in the checked results (`depth`); a `failed` or `cancelled`
1335
+ * row has no rank because the search returned nothing.
1336
+ */
1337
+ declare const seoMarketRankingSchema: z.ZodObject<{
1338
+ marketKey: z.ZodString;
1339
+ marketLabel: z.ZodString;
1340
+ regionKey: z.ZodNullable<z.ZodString>;
1341
+ regionLabel: z.ZodNullable<z.ZodString>;
1342
+ queryId: z.ZodNullable<z.ZodString>;
1343
+ queryText: z.ZodString;
1344
+ queryClass: z.ZodEnum<{
1345
+ branded: "branded";
1346
+ "non-brand": "non-brand";
1347
+ }>;
1348
+ searchText: z.ZodString;
1349
+ locationLabel: z.ZodString;
1350
+ target: z.ZodObject<{
1351
+ kind: z.ZodEnum<{
1352
+ domain: "domain";
1353
+ host: "host";
1354
+ }>;
1355
+ value: z.ZodString;
1356
+ includeSubdomains: z.ZodBoolean;
1357
+ }, z.core.$strict>;
1358
+ searchStatus: z.ZodEnum<{
1359
+ partial: "partial";
1360
+ failed: "failed";
1361
+ completed: "completed";
1362
+ cancelled: "cancelled";
1363
+ }>;
1364
+ rankOrganic: z.ZodNullable<z.ZodNumber>;
1365
+ rankAbsolute: z.ZodNullable<z.ZodNumber>;
1366
+ url: z.ZodNullable<z.ZodString>;
1367
+ depth: z.ZodNumber;
1368
+ competitors: z.ZodArray<z.ZodObject<{
1369
+ domain: z.ZodString;
1370
+ rankOrganic: z.ZodNumber;
1371
+ }, z.core.$strict>>;
1372
+ provenance: z.ZodNullable<z.ZodObject<{
1373
+ provider: z.ZodEnum<{
1374
+ dataforseo: "dataforseo";
1375
+ }>;
1376
+ dataset: z.ZodString;
1377
+ engine: z.ZodLiteral<"google">;
1378
+ locationCode: z.ZodNumber;
1379
+ languageCode: z.ZodString;
1380
+ device: z.ZodUnion<readonly [z.ZodLiteral<"unspecified">, z.ZodEnum<{
1381
+ desktop: "desktop";
1382
+ mobile: "mobile";
1383
+ }>]>;
1384
+ collectedAt: z.ZodString;
1385
+ sourceUpdatedAt: z.ZodNullable<z.ZodString>;
1386
+ }, z.core.$strict>>;
1387
+ }, z.core.$strict>;
1388
+ type SeoMarketRanking = z.infer<typeof seoMarketRankingSchema>;
1389
+ declare const seoResultsSchema: z.ZodObject<{
1390
+ keywordMetrics: z.ZodArray<z.ZodObject<{
1391
+ keyword: z.ZodString;
1392
+ searchVolume: z.ZodNullable<z.ZodNumber>;
1393
+ cpcUsd: z.ZodNullable<z.ZodNumber>;
1394
+ adCompetition: z.ZodNullable<z.ZodNumber>;
1395
+ keywordDifficulty: z.ZodNullable<z.ZodNumber>;
1396
+ searchIntent: z.ZodNullable<z.ZodString>;
1397
+ monthlySearches: z.ZodArray<z.ZodObject<{
1398
+ year: z.ZodNumber;
1399
+ month: z.ZodNumber;
1400
+ searchVolume: z.ZodNullable<z.ZodNumber>;
1401
+ }, z.core.$strict>>;
1402
+ coreKeyword: z.ZodNullable<z.ZodString>;
1403
+ provenance: z.ZodObject<{
1404
+ provider: z.ZodEnum<{
1405
+ dataforseo: "dataforseo";
1406
+ }>;
1407
+ dataset: z.ZodString;
1408
+ engine: z.ZodLiteral<"google">;
1409
+ locationCode: z.ZodNumber;
1410
+ languageCode: z.ZodString;
1411
+ device: z.ZodUnion<readonly [z.ZodLiteral<"unspecified">, z.ZodEnum<{
1412
+ desktop: "desktop";
1413
+ mobile: "mobile";
1414
+ }>]>;
1415
+ collectedAt: z.ZodString;
1416
+ sourceUpdatedAt: z.ZodNullable<z.ZodString>;
1417
+ }, z.core.$strict>;
1418
+ }, z.core.$strict>>;
1419
+ domainIntelligence: z.ZodArray<z.ZodObject<{
1420
+ target: z.ZodObject<{
1421
+ kind: z.ZodEnum<{
1422
+ domain: "domain";
1423
+ host: "host";
1424
+ }>;
1425
+ value: z.ZodString;
1426
+ includeSubdomains: z.ZodBoolean;
1427
+ }, z.core.$strict>;
1428
+ organicKeywords: z.ZodNullable<z.ZodNumber>;
1429
+ estimatedOrganicTraffic: z.ZodNullable<z.ZodNumber>;
1430
+ estimatedOrganicTrafficValueUsd: z.ZodNullable<z.ZodNumber>;
1431
+ top1: z.ZodNullable<z.ZodNumber>;
1432
+ top2To3: z.ZodNullable<z.ZodNumber>;
1433
+ top4To10: z.ZodNullable<z.ZodNumber>;
1434
+ top11To20: z.ZodNullable<z.ZodNumber>;
1435
+ provenance: z.ZodObject<{
1436
+ provider: z.ZodEnum<{
1437
+ dataforseo: "dataforseo";
1438
+ }>;
1439
+ dataset: z.ZodString;
1440
+ engine: z.ZodLiteral<"google">;
1441
+ locationCode: z.ZodNumber;
1442
+ languageCode: z.ZodString;
1443
+ device: z.ZodUnion<readonly [z.ZodLiteral<"unspecified">, z.ZodEnum<{
1444
+ desktop: "desktop";
1445
+ mobile: "mobile";
1446
+ }>]>;
1447
+ collectedAt: z.ZodString;
1448
+ sourceUpdatedAt: z.ZodNullable<z.ZodString>;
1449
+ }, z.core.$strict>;
1450
+ }, z.core.$strict>>;
1451
+ rankedKeywords: z.ZodArray<z.ZodObject<{
1452
+ target: z.ZodObject<{
1453
+ kind: z.ZodEnum<{
1454
+ domain: "domain";
1455
+ host: "host";
1456
+ }>;
1457
+ value: z.ZodString;
1458
+ includeSubdomains: z.ZodBoolean;
1459
+ }, z.core.$strict>;
1460
+ keyword: z.ZodString;
1461
+ url: z.ZodNullable<z.ZodString>;
1462
+ rankOrganic: z.ZodNullable<z.ZodNumber>;
1463
+ rankAbsolute: z.ZodNullable<z.ZodNumber>;
1464
+ searchVolume: z.ZodNullable<z.ZodNumber>;
1465
+ estimatedTraffic: z.ZodNullable<z.ZodNumber>;
1466
+ cpcUsd: z.ZodNullable<z.ZodNumber>;
1467
+ keywordDifficulty: z.ZodNullable<z.ZodNumber>;
1468
+ serpFeatures: z.ZodArray<z.ZodString>;
1469
+ provenance: z.ZodObject<{
1470
+ provider: z.ZodEnum<{
1471
+ dataforseo: "dataforseo";
1472
+ }>;
1473
+ dataset: z.ZodString;
1474
+ engine: z.ZodLiteral<"google">;
1475
+ locationCode: z.ZodNumber;
1476
+ languageCode: z.ZodString;
1477
+ device: z.ZodUnion<readonly [z.ZodLiteral<"unspecified">, z.ZodEnum<{
1478
+ desktop: "desktop";
1479
+ mobile: "mobile";
1480
+ }>]>;
1481
+ collectedAt: z.ZodString;
1482
+ sourceUpdatedAt: z.ZodNullable<z.ZodString>;
1483
+ }, z.core.$strict>;
1484
+ }, z.core.$strict>>;
1485
+ marketRankings: z.ZodArray<z.ZodObject<{
1486
+ marketKey: z.ZodString;
1487
+ marketLabel: z.ZodString;
1488
+ regionKey: z.ZodNullable<z.ZodString>;
1489
+ regionLabel: z.ZodNullable<z.ZodString>;
1490
+ queryId: z.ZodNullable<z.ZodString>;
1491
+ queryText: z.ZodString;
1492
+ queryClass: z.ZodEnum<{
1493
+ branded: "branded";
1494
+ "non-brand": "non-brand";
1495
+ }>;
1496
+ searchText: z.ZodString;
1497
+ locationLabel: z.ZodString;
1498
+ target: z.ZodObject<{
1499
+ kind: z.ZodEnum<{
1500
+ domain: "domain";
1501
+ host: "host";
1502
+ }>;
1503
+ value: z.ZodString;
1504
+ includeSubdomains: z.ZodBoolean;
1505
+ }, z.core.$strict>;
1506
+ searchStatus: z.ZodEnum<{
1507
+ partial: "partial";
1508
+ failed: "failed";
1509
+ completed: "completed";
1510
+ cancelled: "cancelled";
1511
+ }>;
1512
+ rankOrganic: z.ZodNullable<z.ZodNumber>;
1513
+ rankAbsolute: z.ZodNullable<z.ZodNumber>;
1514
+ url: z.ZodNullable<z.ZodString>;
1515
+ depth: z.ZodNumber;
1516
+ competitors: z.ZodArray<z.ZodObject<{
1517
+ domain: z.ZodString;
1518
+ rankOrganic: z.ZodNumber;
1519
+ }, z.core.$strict>>;
1520
+ provenance: z.ZodNullable<z.ZodObject<{
1521
+ provider: z.ZodEnum<{
1522
+ dataforseo: "dataforseo";
1523
+ }>;
1524
+ dataset: z.ZodString;
1525
+ engine: z.ZodLiteral<"google">;
1526
+ locationCode: z.ZodNumber;
1527
+ languageCode: z.ZodString;
1528
+ device: z.ZodUnion<readonly [z.ZodLiteral<"unspecified">, z.ZodEnum<{
1529
+ desktop: "desktop";
1530
+ mobile: "mobile";
1531
+ }>]>;
1532
+ collectedAt: z.ZodString;
1533
+ sourceUpdatedAt: z.ZodNullable<z.ZodString>;
1534
+ }, z.core.$strict>>;
1535
+ }, z.core.$strict>>;
1536
+ }, z.core.$strict>;
1537
+ type SeoResults = z.infer<typeof seoResultsSchema>;
1538
+ /** A market-rankings row as stored: rows saved before `searchStatus` existed are completed searches without it. */
1539
+ 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'> & {
1542
+ marketRankings?: StoredSeoMarketRanking[];
1543
+ };
1544
+ /** One market and tracked query a market-rankings search answers, with the competitors its row reports. */
1545
+ interface SeoMarketRankingSearchMarket {
1546
+ context: SeoMarketRankingContext;
1547
+ /**
1548
+ * Registrable domains of the competitors tracked for this query in this market: the project's,
1549
+ * plus those pinned to the Advanced groups whose Properties ask it. Markets that share a search
1550
+ * can track different competitors, so each row reports only its own.
1551
+ */
1552
+ competitors: string[];
1553
+ }
1554
+ /** One market-rankings search: how it runs and which markets and queries it answers. */
1555
+ interface SeoMarketRankingSearch {
1556
+ device: SeoDevice;
1557
+ depth: number;
1558
+ locationLabel: string;
1559
+ markets: SeoMarketRankingSearchMarket[];
1560
+ }
1310
1561
  /** Internal adapter boundary. These cost fields never enter customer DTOs. */
1311
1562
  interface SeoAdapterRequest {
1312
1563
  capability: SeoCapability;
@@ -1316,6 +1567,8 @@ interface SeoAdapterRequest {
1316
1567
  languageCode: string;
1317
1568
  limit: number;
1318
1569
  tag: string;
1570
+ /** Market rankings only: `keywords` holds the one search text, searched at `locationCode`. */
1571
+ search?: SeoMarketRankingSearch;
1319
1572
  }
1320
1573
  interface SeoAdapterReceipt {
1321
1574
  remoteTaskId: string | null;
@@ -1395,7 +1648,7 @@ declare const seoProfiles: drizzle_orm_sqlite_core.SQLiteTableWithColumns<{
1395
1648
  data: {
1396
1649
  name: string;
1397
1650
  connectionId: string;
1398
- capabilities: ("keyword-metrics" | "domain-intelligence" | "ranked-keywords")[];
1651
+ capabilities: ("keyword-metrics" | "domain-intelligence" | "ranked-keywords" | "market-rankings")[];
1399
1652
  targets: {
1400
1653
  kind: "domain" | "host";
1401
1654
  value: string;
@@ -1410,6 +1663,16 @@ declare const seoProfiles: drizzle_orm_sqlite_core.SQLiteTableWithColumns<{
1410
1663
  key?: string | undefined;
1411
1664
  expectedPlanRevision?: number | undefined;
1412
1665
  };
1666
+ rankings?: {
1667
+ locations: {
1668
+ key: string;
1669
+ locationCode: number;
1670
+ label: string;
1671
+ }[];
1672
+ depth: number;
1673
+ device: "desktop" | "mobile";
1674
+ searchText: "query" | "query-without-market-region";
1675
+ } | undefined;
1413
1676
  };
1414
1677
  driverParam: string;
1415
1678
  notNull: true;
@@ -1425,7 +1688,7 @@ declare const seoProfiles: drizzle_orm_sqlite_core.SQLiteTableWithColumns<{
1425
1688
  $type: {
1426
1689
  name: string;
1427
1690
  connectionId: string;
1428
- capabilities: ("keyword-metrics" | "domain-intelligence" | "ranked-keywords")[];
1691
+ capabilities: ("keyword-metrics" | "domain-intelligence" | "ranked-keywords" | "market-rankings")[];
1429
1692
  targets: {
1430
1693
  kind: "domain" | "host";
1431
1694
  value: string;
@@ -1440,6 +1703,16 @@ declare const seoProfiles: drizzle_orm_sqlite_core.SQLiteTableWithColumns<{
1440
1703
  key?: string | undefined;
1441
1704
  expectedPlanRevision?: number | undefined;
1442
1705
  };
1706
+ rankings?: {
1707
+ locations: {
1708
+ key: string;
1709
+ locationCode: number;
1710
+ label: string;
1711
+ }[];
1712
+ depth: number;
1713
+ device: "desktop" | "mobile";
1714
+ searchText: "query" | "query-without-market-region";
1715
+ } | undefined;
1443
1716
  };
1444
1717
  }>;
1445
1718
  createdAt: drizzle_orm_sqlite_core.SQLiteColumn<{
@@ -1607,7 +1880,7 @@ declare const seoJobs: drizzle_orm_sqlite_core.SQLiteTableWithColumns<{
1607
1880
  data: {
1608
1881
  name: string;
1609
1882
  connectionId: string;
1610
- capabilities: ("keyword-metrics" | "domain-intelligence" | "ranked-keywords")[];
1883
+ capabilities: ("keyword-metrics" | "domain-intelligence" | "ranked-keywords" | "market-rankings")[];
1611
1884
  targets: {
1612
1885
  kind: "domain" | "host";
1613
1886
  value: string;
@@ -1622,6 +1895,16 @@ declare const seoJobs: drizzle_orm_sqlite_core.SQLiteTableWithColumns<{
1622
1895
  key?: string | undefined;
1623
1896
  expectedPlanRevision?: number | undefined;
1624
1897
  };
1898
+ rankings?: {
1899
+ locations: {
1900
+ key: string;
1901
+ locationCode: number;
1902
+ label: string;
1903
+ }[];
1904
+ depth: number;
1905
+ device: "desktop" | "mobile";
1906
+ searchText: "query" | "query-without-market-region";
1907
+ } | undefined;
1625
1908
  };
1626
1909
  driverParam: string;
1627
1910
  notNull: true;
@@ -1637,7 +1920,7 @@ declare const seoJobs: drizzle_orm_sqlite_core.SQLiteTableWithColumns<{
1637
1920
  $type: {
1638
1921
  name: string;
1639
1922
  connectionId: string;
1640
- capabilities: ("keyword-metrics" | "domain-intelligence" | "ranked-keywords")[];
1923
+ capabilities: ("keyword-metrics" | "domain-intelligence" | "ranked-keywords" | "market-rankings")[];
1641
1924
  targets: {
1642
1925
  kind: "domain" | "host";
1643
1926
  value: string;
@@ -1652,6 +1935,16 @@ declare const seoJobs: drizzle_orm_sqlite_core.SQLiteTableWithColumns<{
1652
1935
  key?: string | undefined;
1653
1936
  expectedPlanRevision?: number | undefined;
1654
1937
  };
1938
+ rankings?: {
1939
+ locations: {
1940
+ key: string;
1941
+ locationCode: number;
1942
+ label: string;
1943
+ }[];
1944
+ depth: number;
1945
+ device: "desktop" | "mobile";
1946
+ searchText: "query" | "query-without-market-region";
1947
+ } | undefined;
1655
1948
  };
1656
1949
  }>;
1657
1950
  scopeSnapshot: drizzle_orm_sqlite_core.SQLiteColumn<{
@@ -2119,82 +2412,7 @@ declare const seoTasks: drizzle_orm_sqlite_core.SQLiteTableWithColumns<{
2119
2412
  tableName: "seo_tasks";
2120
2413
  dataType: "json";
2121
2414
  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
- };
2415
+ data: StoredSeoResults;
2198
2416
  driverParam: string;
2199
2417
  notNull: true;
2200
2418
  hasDefault: false;
@@ -2206,82 +2424,7 @@ declare const seoTasks: drizzle_orm_sqlite_core.SQLiteTableWithColumns<{
2206
2424
  identity: undefined;
2207
2425
  generated: undefined;
2208
2426
  }, {}, {
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
- };
2427
+ $type: StoredSeoResults;
2285
2428
  }>;
2286
2429
  reconciliation: drizzle_orm_sqlite_core.SQLiteColumn<{
2287
2430
  name: "reconciliation";
@@ -2369,6 +2512,25 @@ declare const seoTasks: drizzle_orm_sqlite_core.SQLiteTableWithColumns<{
2369
2512
  }, {}, {
2370
2513
  length: number | undefined;
2371
2514
  }>;
2515
+ retryOf: drizzle_orm_sqlite_core.SQLiteColumn<{
2516
+ name: "retry_of";
2517
+ tableName: "seo_tasks";
2518
+ dataType: "string";
2519
+ columnType: "SQLiteText";
2520
+ data: string;
2521
+ driverParam: string;
2522
+ notNull: false;
2523
+ hasDefault: false;
2524
+ isPrimaryKey: false;
2525
+ isAutoincrement: false;
2526
+ hasRuntimeDefault: false;
2527
+ enumValues: [string, ...string[]];
2528
+ baseColumn: never;
2529
+ identity: undefined;
2530
+ generated: undefined;
2531
+ }, {}, {
2532
+ length: number | undefined;
2533
+ }>;
2372
2534
  };
2373
2535
  dialect: "sqlite";
2374
2536
  }>;
@@ -9232,6 +9394,25 @@ declare const schedules: drizzle_orm_sqlite_core.SQLiteTableWithColumns<{
9232
9394
  }, {}, {
9233
9395
  length: number | undefined;
9234
9396
  }>;
9397
+ enabledAt: drizzle_orm_sqlite_core.SQLiteColumn<{
9398
+ name: "enabled_at";
9399
+ tableName: "schedules";
9400
+ dataType: "string";
9401
+ columnType: "SQLiteText";
9402
+ data: string;
9403
+ driverParam: string;
9404
+ notNull: false;
9405
+ hasDefault: false;
9406
+ isPrimaryKey: false;
9407
+ isAutoincrement: false;
9408
+ hasRuntimeDefault: false;
9409
+ enumValues: [string, ...string[]];
9410
+ baseColumn: never;
9411
+ identity: undefined;
9412
+ generated: undefined;
9413
+ }, {}, {
9414
+ length: number | undefined;
9415
+ }>;
9235
9416
  createdAt: drizzle_orm_sqlite_core.SQLiteColumn<{
9236
9417
  name: "created_at";
9237
9418
  tableName: "schedules";
@@ -11879,7 +12060,7 @@ declare const siteAuditSnapshots: drizzle_orm_sqlite_core.SQLiteTableWithColumns
11879
12060
  weight: number;
11880
12061
  sharePct: number | null;
11881
12062
  avgScore: number;
11882
- status: "fail" | "partial" | "pass";
12063
+ status: "partial" | "fail" | "pass";
11883
12064
  pagesPassing: number;
11884
12065
  pagesPartial: number;
11885
12066
  pagesFailing: number;
@@ -11901,7 +12082,7 @@ declare const siteAuditSnapshots: drizzle_orm_sqlite_core.SQLiteTableWithColumns
11901
12082
  weight: number;
11902
12083
  sharePct: number | null;
11903
12084
  avgScore: number;
11904
- status: "fail" | "partial" | "pass";
12085
+ status: "partial" | "fail" | "pass";
11905
12086
  pagesPassing: number;
11906
12087
  pagesPartial: number;
11907
12088
  pagesFailing: number;
@@ -30772,7 +30953,7 @@ declare const adsOperationSteps: drizzle_orm_sqlite_core.SQLiteTableWithColumns<
30772
30953
  tableName: "ads_operation_steps";
30773
30954
  dataType: "string";
30774
30955
  columnType: "SQLiteText";
30775
- data: "unknown" | "active" | "failed" | "pending" | "executing" | "rollback_executing" | "rolled_back" | "rollback_failed";
30956
+ data: "unknown" | "failed" | "active" | "pending" | "executing" | "rollback_executing" | "rolled_back" | "rollback_failed";
30776
30957
  driverParam: string;
30777
30958
  notNull: true;
30778
30959
  hasDefault: false;
@@ -30785,7 +30966,7 @@ declare const adsOperationSteps: drizzle_orm_sqlite_core.SQLiteTableWithColumns<
30785
30966
  generated: undefined;
30786
30967
  }, {}, {
30787
30968
  length: number | undefined;
30788
- $type: "unknown" | "active" | "failed" | "pending" | "executing" | "rollback_executing" | "rolled_back" | "rollback_failed";
30969
+ $type: "unknown" | "failed" | "active" | "pending" | "executing" | "rollback_executing" | "rolled_back" | "rollback_failed";
30789
30970
  }>;
30790
30971
  providerUpdatedAt: drizzle_orm_sqlite_core.SQLiteColumn<{
30791
30972
  name: "provider_updated_at";
@@ -37043,8 +37224,8 @@ type ClassificationConfig = z.infer<typeof classificationConfigSchema>;
37043
37224
  declare const seoInstallConfigSchema: z.ZodObject<{
37044
37225
  enabled: z.ZodBoolean;
37045
37226
  fundingMode: z.ZodEnum<{
37046
- "self-hosted": "self-hosted";
37047
37227
  hosted: "hosted";
37228
+ "self-hosted": "self-hosted";
37048
37229
  }>;
37049
37230
  policy: z.ZodObject<{
37050
37231
  maxRunCostMicros: z.ZodNumber;