seo 0.3.0 → 0.4.1

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.
package/dist/index.d.ts CHANGED
@@ -42,13 +42,6 @@ declare const tokenStoreSchema: z.ZodObject<{
42
42
  type StoredTokenStore = z.infer<typeof tokenStoreSchema>;
43
43
  //#endregion
44
44
  //#region packages/core/src/types/config.d.ts
45
- declare const siteSchema: z.ZodObject<{
46
- siteUrl: z.ZodString;
47
- displayName: z.ZodOptional<z.ZodString>;
48
- permission: z.ZodOptional<z.ZodString>;
49
- addedAt: z.ZodOptional<z.ZodNumber>;
50
- isDefault: z.ZodOptional<z.ZodBoolean>;
51
- }, z.core.$strip>;
52
45
  declare const providerPreferenceSchema: z.ZodEnum<{
53
46
  cheap: "cheap";
54
47
  authoritative: "authoritative";
@@ -69,102 +62,7 @@ declare const analyticsConnectionSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
69
62
  providerId: z.ZodString;
70
63
  account: z.ZodRecord<z.ZodString, z.ZodString>;
71
64
  }, z.core.$strip>], "provider">;
72
- declare const analyticsConnectionsSchema: z.ZodDefault<z.ZodObject<{
73
- selected: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
74
- google: "google";
75
- clicky: "clicky";
76
- }>, z.ZodString]>>;
77
- google: z.ZodOptional<z.ZodObject<{
78
- propertyId: z.ZodString;
79
- }, z.core.$strip>>;
80
- clicky: z.ZodOptional<z.ZodObject<{
81
- siteId: z.ZodString;
82
- }, z.core.$strip>>;
83
- extensions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
84
- account: z.ZodRecord<z.ZodString, z.ZodString>;
85
- }, z.core.$strict>>>;
86
- }, z.core.$strip>>;
87
- declare const clientProfileSchema: z.ZodObject<{
88
- id: z.ZodString;
89
- name: z.ZodString;
90
- siteUrl: z.ZodString;
91
- startUrl: z.ZodOptional<z.ZodString>;
92
- watchUrls: z.ZodDefault<z.ZodArray<z.ZodString>>;
93
- brandTerms: z.ZodDefault<z.ZodArray<z.ZodString>>;
94
- analytics: z.ZodDefault<z.ZodObject<{
95
- selected: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
96
- google: "google";
97
- clicky: "clicky";
98
- }>, z.ZodString]>>;
99
- google: z.ZodOptional<z.ZodObject<{
100
- propertyId: z.ZodString;
101
- }, z.core.$strip>>;
102
- clicky: z.ZodOptional<z.ZodObject<{
103
- siteId: z.ZodString;
104
- }, z.core.$strip>>;
105
- extensions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
106
- account: z.ZodRecord<z.ZodString, z.ZodString>;
107
- }, z.core.$strict>>>;
108
- }, z.core.$strip>>;
109
- googleAccounts: z.ZodOptional<z.ZodObject<{
110
- searchConsole: z.ZodOptional<z.ZodString>;
111
- googleAnalytics: z.ZodOptional<z.ZodString>;
112
- }, z.core.$strip>>;
113
- technicalWeekday: z.ZodOptional<z.ZodNumber>;
114
- isDefault: z.ZodOptional<z.ZodBoolean>;
115
- createdAt: z.ZodNumber;
116
- updatedAt: z.ZodNumber;
117
- }, z.core.$strip>;
118
65
  declare const configSchema: z.ZodObject<{
119
- defaultSite: z.ZodOptional<z.ZodString>;
120
- sites: z.ZodDefault<z.ZodArray<z.ZodObject<{
121
- siteUrl: z.ZodString;
122
- displayName: z.ZodOptional<z.ZodString>;
123
- permission: z.ZodOptional<z.ZodString>;
124
- addedAt: z.ZodOptional<z.ZodNumber>;
125
- isDefault: z.ZodOptional<z.ZodBoolean>;
126
- }, z.core.$strip>>>;
127
- clients: z.ZodDefault<z.ZodArray<z.ZodObject<{
128
- id: z.ZodString;
129
- name: z.ZodString;
130
- siteUrl: z.ZodString;
131
- startUrl: z.ZodOptional<z.ZodString>;
132
- watchUrls: z.ZodDefault<z.ZodArray<z.ZodString>>;
133
- brandTerms: z.ZodDefault<z.ZodArray<z.ZodString>>;
134
- analytics: z.ZodDefault<z.ZodObject<{
135
- selected: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
136
- google: "google";
137
- clicky: "clicky";
138
- }>, z.ZodString]>>;
139
- google: z.ZodOptional<z.ZodObject<{
140
- propertyId: z.ZodString;
141
- }, z.core.$strip>>;
142
- clicky: z.ZodOptional<z.ZodObject<{
143
- siteId: z.ZodString;
144
- }, z.core.$strip>>;
145
- extensions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
146
- account: z.ZodRecord<z.ZodString, z.ZodString>;
147
- }, z.core.$strict>>>;
148
- }, z.core.$strip>>;
149
- googleAccounts: z.ZodOptional<z.ZodObject<{
150
- searchConsole: z.ZodOptional<z.ZodString>;
151
- googleAnalytics: z.ZodOptional<z.ZodString>;
152
- }, z.core.$strip>>;
153
- technicalWeekday: z.ZodOptional<z.ZodNumber>;
154
- isDefault: z.ZodOptional<z.ZodBoolean>;
155
- createdAt: z.ZodNumber;
156
- updatedAt: z.ZodNumber;
157
- }, z.core.$strip>>>;
158
- analytics: z.ZodDefault<z.ZodObject<{
159
- google: z.ZodDefault<z.ZodObject<{
160
- defaultPropertyId: z.ZodOptional<z.ZodString>;
161
- propertyMappings: z.ZodDefault<z.ZodArray<z.ZodObject<{
162
- siteUrl: z.ZodString;
163
- propertyId: z.ZodString;
164
- addedAt: z.ZodOptional<z.ZodNumber>;
165
- }, z.core.$strip>>>;
166
- }, z.core.$strip>>;
167
- }, z.core.$strip>>;
168
66
  providers: z.ZodDefault<z.ZodObject<{
169
67
  dataForSeoLogin: z.ZodOptional<z.ZodString>;
170
68
  dataForSeoPassword: z.ZodOptional<z.ZodString>;
@@ -181,11 +79,10 @@ declare const configSchema: z.ZodObject<{
181
79
  sharedClientId: z.ZodOptional<z.ZodString>;
182
80
  sharedClientSecret: z.ZodOptional<z.ZodString>;
183
81
  }, z.core.$strip>>;
184
- }, z.core.$strip>;
82
+ }, z.core.$loose>;
185
83
  type AppConfig = z.infer<typeof configSchema>;
186
84
  type AnalyticsConnection = z.infer<typeof analyticsConnectionSchema>;
187
85
  type AnalyticsProvider = z.infer<typeof analyticsProviderSchema>;
188
- type ClientProfile = z.infer<typeof clientProfileSchema>;
189
86
  //#endregion
190
87
  //#region packages/core/src/extract/canonical.d.ts
191
88
  type CanonicalSource = 'html-head' | 'html-body' | 'http-header';
@@ -1074,7 +971,7 @@ declare const RULE_DEFINITIONS: readonly [{
1074
971
  readonly howToVerify: "Re-run the crawl with the same GSC property and review the query, sampled text, and any deliberate wording changes together.";
1075
972
  readonly agentHints: {
1076
973
  readonly evidenceFields: ["page.topQuery", "issue.evidence.missingTerms", "issue.evidence.coverage"];
1077
- readonly suggestedCommands: ["seo crawl <url> --project <id> --json"];
974
+ readonly suggestedCommands: ["seo crawl <url> --site <site> --json"];
1078
975
  };
1079
976
  }, {
1080
977
  readonly id: "image_missing_alt";
@@ -2516,91 +2413,6 @@ declare function contentOptimizationReport(input: {
2516
2413
  js?: boolean | 'auto';
2517
2414
  }): Promise<ContentOptimizationReport>;
2518
2415
  //#endregion
2519
- //#region packages/core/src/analyze/monitoring/sitemaps.d.ts
2520
- type SitemapInvalidLoc = {
2521
- sitemapUrl: string;
2522
- kind: 'url' | 'sitemap';
2523
- value: string;
2524
- };
2525
- type SitemapLastmodObservation = {
2526
- sitemapUrl: string;
2527
- kind: 'url' | 'sitemap';
2528
- loc: string;
2529
- value: string;
2530
- };
2531
- type SitemapDocument = {
2532
- url: string;
2533
- finalUrl?: string;
2534
- redirected?: true;
2535
- dataStatus: 'complete' | 'partial' | 'unavailable';
2536
- status?: number;
2537
- contentType?: string;
2538
- compression: 'gzip' | 'none';
2539
- bytes?: number;
2540
- uncompressedBytes?: number;
2541
- root?: 'urlset' | 'sitemapindex';
2542
- warning?: string;
2543
- };
2544
- type SitemapFetchResult = {
2545
- sitemapUrl: string;
2546
- dataStatus: 'complete' | 'partial';
2547
- urls: string[];
2548
- nestedSitemaps: string[];
2549
- source: {
2550
- sitemapsFetched: number;
2551
- urlLocs: number;
2552
- sitemapLocs: number;
2553
- duplicateUrlLocs: number;
2554
- duplicateSitemapLocs: number;
2555
- invalidLocs: {
2556
- count: number;
2557
- samples: SitemapInvalidLoc[];
2558
- };
2559
- lastmods: {
2560
- trust: 'unverified';
2561
- observed: number;
2562
- parseable: number;
2563
- malformed: {
2564
- count: number;
2565
- samples: SitemapLastmodObservation[];
2566
- };
2567
- future: {
2568
- count: number;
2569
- samples: SitemapLastmodObservation[];
2570
- };
2571
- };
2572
- documents: SitemapDocument[];
2573
- };
2574
- truncation: {
2575
- possiblyTruncated: boolean;
2576
- urlLimitExceeded: boolean;
2577
- nestedSitemapLimitExceeded: boolean;
2578
- omittedUrlsAtLeast: number;
2579
- unprocessedSitemaps: number;
2580
- limits: {
2581
- urls: number;
2582
- sitemaps: number;
2583
- };
2584
- };
2585
- warnings: string[];
2586
- };
2587
- type BoundedSitemapInventory = {
2588
- urls: string[];
2589
- truncation: {
2590
- possiblyTruncated: boolean;
2591
- sourceTruncated: boolean;
2592
- inventoryLimitExceeded: boolean;
2593
- omittedUrlsAtLeast: number;
2594
- limit: number;
2595
- };
2596
- };
2597
- declare function boundedSitemapInventory(results: Array<Pick<SitemapFetchResult, 'urls' | 'truncation'>>, limit: number): BoundedSitemapInventory;
2598
- declare function fetchSitemapUrls(input: {
2599
- sitemapUrl: string;
2600
- limit?: number;
2601
- maxNested?: number;
2602
- }): Promise<SitemapFetchResult>;
2603
- //#endregion
2604
2416
  //#region packages/core/src/analyze/monitoring/types.d.ts
2605
2417
  type CrawlPageSnapshot = {
2606
2418
  url: string;
@@ -2829,242 +2641,91 @@ type CrawlRequestObservation = CrawlResponseObservation | {
2829
2641
  error: string;
2830
2642
  extraction: 'not-applicable';
2831
2643
  };
2832
- type CrawlRun = {
2833
- id: string;
2834
- site: string;
2835
- startUrl: string;
2836
- createdAt: string;
2837
- limit: number;
2838
- urlCount: number;
2839
- };
2840
- type CrawlDiffItem = {
2841
- url: string;
2842
- kind: 'added' | 'removed' | 'changed';
2843
- changes: string[];
2844
- before?: Partial<CrawlPageSnapshot>;
2845
- after?: Partial<CrawlPageSnapshot>;
2846
- recommendation?: CrawlDiffRecommendation;
2847
- };
2848
- type CrawlDiffRecommendation = {
2849
- severity: 'high' | 'medium' | 'low';
2850
- category: 'status' | 'indexability' | 'canonical' | 'metadata' | 'content' | 'inventory';
2851
- title: string;
2852
- action: string;
2853
- confidence: 'high' | 'medium' | 'low';
2644
+ //#endregion
2645
+ //#region packages/core/src/analyze/monitoring/sitemaps.d.ts
2646
+ type SitemapInvalidLoc = {
2647
+ sitemapUrl: string;
2648
+ kind: 'url' | 'sitemap';
2649
+ value: string;
2854
2650
  };
2855
- type CrawlDiffReport = {
2856
- run: CrawlRun;
2857
- previousRun?: CrawlRun;
2858
- summary: {
2859
- crawled: number;
2860
- added: number;
2861
- removed: number;
2862
- changed: number;
2863
- newErrors: number;
2864
- indexabilityFlips: number;
2865
- highPriorityRecommendations: number;
2866
- };
2867
- recommendations: Array<CrawlDiffRecommendation & {
2868
- url: string;
2869
- }>;
2870
- items: CrawlDiffItem[];
2871
- warnings: string[];
2651
+ type SitemapLastmodObservation = {
2652
+ sitemapUrl: string;
2653
+ kind: 'url' | 'sitemap';
2654
+ loc: string;
2655
+ value: string;
2872
2656
  };
2873
- type IndexWatchIssueCode = 'canonical_mismatch' | 'indexing_blocked_header' | 'indexing_blocked_meta' | 'inspection_failed' | 'inspection_quota_blocked' | 'page_fetch_failed' | 'robots_disallowed' | 'verdict_excluded' | 'verdict_invalid';
2874
- type IndexWatchChangeKind = 'baseline' | 'changed' | 'not-comparable' | 'recovery' | 'regression' | 'unchanged';
2875
- type IndexWatchChange = {
2876
- field: 'googleCanonical' | 'indexingState' | 'pageFetchState' | 'robotsTxtState' | 'userCanonical' | 'verdict';
2877
- before?: string;
2878
- after?: string;
2879
- };
2880
- type IndexWatchPrevious = {
2881
- inspectedAt: string;
2882
- verdict?: string;
2883
- coverageState?: string;
2884
- indexingState?: string;
2885
- robotsTxtState?: string;
2886
- pageFetchState?: string;
2887
- googleCanonical?: string;
2888
- userCanonical?: string;
2889
- lastCrawlTime?: string;
2890
- };
2891
- type IndexWatchItem = {
2892
- rootSite: string;
2893
- property: string;
2657
+ type SitemapDocument = {
2894
2658
  url: string;
2895
- inspectedAt: string;
2896
- inspectionStatus: 'deferred' | 'failed' | 'quota-blocked' | 'succeeded';
2897
- requestSent: boolean;
2898
- indexStatus: 'excluded' | 'indexed' | 'invalid' | 'unknown';
2899
- verdict?: string;
2900
- coverageState?: string;
2901
- indexingState?: string;
2902
- robotsTxtState?: string;
2903
- pageFetchState?: string;
2904
- googleCanonical?: string;
2905
- userCanonical?: string;
2906
- lastCrawlTime?: string;
2907
- previous?: IndexWatchPrevious;
2908
- issueCodes: IndexWatchIssueCode[];
2909
- currentIssue: boolean;
2910
- severity: 'high' | 'medium' | 'none';
2911
- changes: IndexWatchChange[];
2912
- changeKind: IndexWatchChangeKind;
2913
- changed: boolean;
2914
- regression: boolean;
2915
- recovery: boolean;
2916
- alert: boolean;
2917
- errorCode?: string;
2918
- errorMessage?: string;
2919
- retryAt?: string;
2920
- };
2921
- type IndexWatchReport = {
2922
- schemaVersion: 1;
2923
- methodology: 'index-watch-v2';
2924
- site: string;
2925
- generatedAt: string;
2659
+ finalUrl?: string;
2660
+ redirected?: true;
2661
+ dataStatus: 'complete' | 'partial' | 'unavailable';
2662
+ status?: number;
2663
+ contentType?: string;
2664
+ compression: 'gzip' | 'none';
2665
+ bytes?: number;
2666
+ uncompressedBytes?: number;
2667
+ root?: 'urlset' | 'sitemapindex';
2668
+ warning?: string;
2669
+ };
2670
+ type SitemapFetchResult = {
2671
+ sitemapUrl: string;
2926
2672
  dataStatus: 'complete' | 'partial';
2673
+ urls: string[];
2674
+ nestedSitemaps: string[];
2927
2675
  source: {
2928
- type: 'url-inspection-indexed-snapshot';
2929
- property: string;
2930
- dailyLimit: number;
2931
- languageCode?: string;
2676
+ sitemapsFetched: number;
2677
+ urlLocs: number;
2678
+ sitemapLocs: number;
2679
+ duplicateUrlLocs: number;
2680
+ duplicateSitemapLocs: number;
2681
+ invalidLocs: {
2682
+ count: number;
2683
+ samples: SitemapInvalidLoc[];
2684
+ };
2685
+ lastmods: {
2686
+ trust: 'unverified';
2687
+ observed: number;
2688
+ parseable: number;
2689
+ malformed: {
2690
+ count: number;
2691
+ samples: SitemapLastmodObservation[];
2692
+ };
2693
+ future: {
2694
+ count: number;
2695
+ samples: SitemapLastmodObservation[];
2696
+ };
2697
+ };
2698
+ documents: SitemapDocument[];
2932
2699
  };
2933
- summary: {
2934
- requested: number;
2935
- unique: number;
2936
- attempted: number;
2937
- inspected: number;
2938
- failed: number;
2939
- quotaBlocked: number;
2940
- deferred: number;
2941
- currentIssues: number;
2942
- changed: number;
2943
- regressions: number;
2944
- recoveries: number;
2945
- alerts: number;
2700
+ truncation: {
2701
+ possiblyTruncated: boolean;
2702
+ urlLimitExceeded: boolean;
2703
+ nestedSitemapLimitExceeded: boolean;
2704
+ omittedUrlsAtLeast: number;
2705
+ unprocessedSitemaps: number;
2706
+ limits: {
2707
+ urls: number;
2708
+ sitemaps: number;
2709
+ };
2946
2710
  };
2947
- caveats: string[];
2948
2711
  warnings: string[];
2949
- items: IndexWatchItem[];
2950
- };
2951
- type IndexMonitorPropertyRun = {
2952
- property: string;
2953
- inventoryUrls: number;
2954
- selectedUrls: number;
2955
- attempted: number;
2956
- inspected: number;
2957
- failed: number;
2958
- quotaBlocked: number;
2959
- deferred: number;
2960
- currentIssues: number;
2961
- changed: number;
2962
- regressions: number;
2963
- recoveries: number;
2964
- alerts: number;
2965
- sampleUrls: string[];
2966
2712
  };
2967
- type IndexMonitorReport = {
2968
- schemaVersion: 1;
2969
- methodology: 'index-monitor-v2';
2970
- site: string;
2971
- generatedAt: string;
2972
- dataStatus: 'complete' | 'partial';
2973
- source: {
2974
- type: 'sitemap-url-inspection-indexed-snapshot';
2975
- sitemaps: string[];
2976
- maxUrls: number;
2977
- dailyLimit: number;
2978
- inspectLimit: number;
2979
- staleAfterDays: number;
2980
- failureRetryHours: number;
2713
+ type BoundedSitemapInventory = {
2714
+ urls: string[];
2715
+ truncation: {
2981
2716
  possiblyTruncated: boolean;
2717
+ sourceTruncated: boolean;
2982
2718
  inventoryLimitExceeded: boolean;
2983
2719
  omittedUrlsAtLeast: number;
2984
- discoveredUrls: number;
2985
- invalidUrls: number;
2986
- };
2987
- summary: {
2988
- inventoryUrls: number;
2989
- properties: number;
2990
- dailyCapacity: number;
2991
- neverAttempted: number;
2992
- neverSucceeded: number;
2993
- retryWaiting: number;
2994
- fresh: number;
2995
- stale: number;
2996
- due: number;
2997
- selected: number;
2998
- unselectedDue: number;
2999
- attempted: number;
3000
- inspected: number;
3001
- failed: number;
3002
- quotaBlocked: number;
3003
- deferred: number;
3004
- currentIssues: number;
3005
- changed: number;
3006
- regressions: number;
3007
- recoveries: number;
3008
- alerts: number;
3009
- skipped: number;
2720
+ limit: number;
3010
2721
  };
3011
- properties: IndexMonitorPropertyRun[];
3012
- items: IndexWatchItem[];
3013
- caveats: string[];
3014
- warnings: string[];
3015
- };
3016
- type CrawlRunRow = {
3017
- id: string;
3018
- site_url: string;
3019
- start_url: string;
3020
- created_at: number;
3021
- limit_count: number;
3022
- url_count: number;
3023
- };
3024
- type CrawlPageRow = {
3025
- run_id: string;
3026
- url: string;
3027
- final_url: string;
3028
- status: number;
3029
- title?: string | null;
3030
- meta_description?: string | null;
3031
- canonical?: string | null;
3032
- meta_robots?: string | null;
3033
- x_robots_tag?: string | null;
3034
- h1?: string | null;
3035
- indexable: number;
3036
- word_count: number;
3037
- content_hash: string;
3038
- outgoing_internal_count: number;
3039
- snapshot_json?: string | null;
3040
- };
3041
- type IndexWatchRow = {
3042
- id?: string;
3043
- root_site_url?: string | null;
3044
- property_site_url?: string | null;
3045
- verdict?: string | null;
3046
- coverage_state?: string | null;
3047
- indexing_state?: string | null;
3048
- robots_txt_state?: string | null;
3049
- page_fetch_state?: string | null;
3050
- google_canonical?: string | null;
3051
- user_canonical?: string | null;
3052
- last_crawl_time?: string | null;
3053
- error_code?: string | null;
3054
- error_message?: string | null;
3055
- inspection_status?: string | null;
3056
- inspected_at?: number | null;
3057
- };
3058
- type LatestCrawlSummaryRow = CrawlRunRow & {
3059
- status_errors: number;
3060
- non_indexable: number;
3061
- recommendation_count: number;
3062
- high_recommendation_count: number;
3063
- top_recommendation_url?: string | null;
3064
- top_recommendation_title?: string | null;
3065
- top_recommendation_action?: string | null;
3066
- top_recommendation_severity?: string | null;
3067
2722
  };
2723
+ declare function boundedSitemapInventory(results: Array<Pick<SitemapFetchResult, 'urls' | 'truncation'>>, limit: number): BoundedSitemapInventory;
2724
+ declare function fetchSitemapUrls(input: {
2725
+ sitemapUrl: string;
2726
+ limit?: number;
2727
+ maxNested?: number;
2728
+ }): Promise<SitemapFetchResult>;
3068
2729
  //#endregion
3069
2730
  //#region packages/core/src/analyze/crawler/crawl-skip-reasons.d.ts
3070
2731
  declare const CRAWL_SKIP_REASONS: readonly ["asset-url", "configured-exclusion", "duplicate-normalization", "invalid-url", "memory-pressure", "off-origin", "origin-backpressure", "queue-safety-limit", "robots-disallowed", "robots-uncertain", "legacy-unclassified"];
@@ -3150,7 +2811,6 @@ type CrawlConfig = {
3150
2811
  type CrawlConfigInput = Omit<Partial<CrawlConfig>, 'url' | 'js'> & {
3151
2812
  url: string;
3152
2813
  js?: JavaScriptRenderingInput;
3153
- projectId?: string;
3154
2814
  site?: string;
3155
2815
  searchMetricsLimit?: number;
3156
2816
  googleAnalyticsPropertyId?: string;
@@ -3350,7 +3010,6 @@ type CrawlAccessSummary = {
3350
3010
  type CrawlReport = {
3351
3011
  id: string;
3352
3012
  definitionId: string;
3353
- projectId?: string;
3354
3013
  site?: string;
3355
3014
  googleAnalyticsPropertyId?: string;
3356
3015
  analyticsConnection?: AnalyticsConnection;
@@ -3403,7 +3062,6 @@ declare function createCrawlReport(input: {
3403
3062
  additionalIssues?: CrawlIssue[];
3404
3063
  linkGraph?: CrawlLinkGraph;
3405
3064
  ai?: CrawlAiSignals;
3406
- projectId?: string;
3407
3065
  site?: string;
3408
3066
  googleAnalyticsPropertyId?: string;
3409
3067
  analyticsConnection?: AnalyticsConnection;
@@ -3419,469 +3077,17 @@ declare function createCrawlReport(input: {
3419
3077
  }): CrawlReport;
3420
3078
  declare function normalizeLoadedCrawlReport(report: CrawlReport): CrawlReport;
3421
3079
  //#endregion
3422
- //#region packages/core/src/analyze/crawler/affected-urls.d.ts
3423
- type AffectedUrlFilters = {
3424
- ruleId?: string;
3425
- category?: string;
3426
- severity?: string;
3427
- limit?: number;
3428
- };
3429
- type AffectedUrl = {
3430
- url: string;
3431
- ruleId: RuleId;
3432
- title: string;
3433
- category: RuleCategory;
3434
- severity: RuleSeverity;
3435
- detail?: string;
3436
- evidence?: Record<string, unknown>;
3437
- clicks: number;
3438
- impressions: number;
3439
- sessions: number;
3440
- };
3441
- type AffectedUrlSelection = {
3442
- totalMatchedRows: number;
3443
- returnedRows: number;
3444
- limit: number;
3445
- truncated: boolean;
3446
- };
3447
- type AffectedUrlResult = {
3448
- affectedUrls: AffectedUrl[];
3449
- selection: AffectedUrlSelection;
3450
- };
3451
- declare function affectedUrls(report: CrawlReport, filters?: AffectedUrlFilters): AffectedUrl[];
3452
- declare function selectAffectedUrls(report: CrawlReport, filters?: AffectedUrlFilters): AffectedUrlResult;
3453
- //#endregion
3454
3080
  //#region packages/core/src/analyze/crawler/audit.d.ts
3455
3081
  declare function auditCrawlRequests(requests: CrawlRequestObservation[]): CrawlIssue[];
3456
3082
  declare function auditCrawlPages(pages: CrawlPageSnapshot[], opts?: {
3457
3083
  startUrl?: string;
3458
3084
  }): CrawlIssue[];
3459
3085
  //#endregion
3460
- //#region packages/core/src/analyze/crawler/report-store.d.ts
3461
- declare const CRAWL_REPORT_STORAGE_VERSION = 6;
3462
- declare const AUTOMATIC_BASELINE_SITE_RETENTION = 2;
3463
- declare const AUTOMATIC_BASELINE_TOTAL_RETENTION = 50;
3464
- type CrawlReportSaveOptions = {
3465
- retention?: 'saved' | 'baseline';
3466
- };
3467
- type CrawlReportMeta = {
3468
- id: string;
3469
- configHash: string;
3470
- site?: string;
3471
- url: string;
3472
- status: CrawlReport['status'];
3473
- totalPages: number;
3474
- issueCount: number;
3475
- createdAt: string;
3476
- storageVersion: number;
3477
- };
3478
- type CrawlReportStorageEnvelope = {
3479
- kind: 'seo.crawl_report';
3480
- version: typeof CRAWL_REPORT_STORAGE_VERSION;
3481
- savedAt: string;
3482
- tenant?: {
3483
- projectId?: string;
3484
- site?: string;
3485
- };
3486
- report: CrawlReport;
3487
- };
3488
- type CrawlReportStoreAdapter = {
3489
- save: (report: CrawlReport, options?: CrawlReportSaveOptions) => CrawlReportMeta;
3490
- list: (input?: {
3491
- site?: string;
3492
- limit?: number;
3493
- }) => CrawlReportMeta[];
3494
- load: (id: string) => CrawlReport | undefined;
3495
- delete: (id: string) => boolean;
3496
- latest: (site?: string) => CrawlReport | undefined;
3497
- };
3498
- declare const sqliteCrawlReportStore: CrawlReportStoreAdapter;
3499
- declare const crawlReportStore: CrawlReportStoreAdapter;
3500
- declare function saveCrawlReport(report: CrawlReport, store?: CrawlReportStoreAdapter, options?: CrawlReportSaveOptions): CrawlReportMeta;
3501
- declare function listCrawlReports(input?: {
3502
- site?: string;
3503
- limit?: number;
3504
- }, store?: CrawlReportStoreAdapter): CrawlReportMeta[];
3505
- declare function loadCrawlReport(id: string, store?: CrawlReportStoreAdapter): CrawlReport | undefined;
3506
- declare function deleteCrawlReport(id: string, store?: CrawlReportStoreAdapter): boolean;
3507
- declare function latestCrawlReport(site?: string, store?: CrawlReportStoreAdapter): CrawlReport | undefined;
3508
- //#endregion
3509
- //#region packages/core/src/fetch/crawler-identity.d.ts
3510
- declare const SEO_CRAWLER_TOKEN = "SEO-Skill";
3511
- declare const SEO_CRAWLER_USER_AGENT: string;
3512
- declare const SEO_CRAWLER_IDENTITY: CrawlerIdentity;
3513
- //#endregion
3514
- //#region packages/core/src/fetch/http-client.d.ts
3515
- type HttpProfile = 'browser' | 'bot';
3516
- declare class ResponseSizeLimitError extends Error {
3517
- readonly maxBytes: number;
3518
- constructor(maxBytes: number, label?: string);
3519
- }
3520
- /** @deprecated Use SEO_CRAWLER_USER_AGENT. */
3521
- declare const BROWSER_USER_AGENT: string;
3522
- declare function requestHeaders(profile: HttpProfile): Headers$1;
3523
- declare function publicHttpFetch(url: string, input?: RequestInit$1 & {
3524
- profile?: HttpProfile;
3525
- }): Promise<import("undici").Response>;
3526
- declare function readBoundedResponseText(response: Awaited<ReturnType<typeof publicHttpFetch>>, maxBytes: number, label?: string): Promise<string>;
3527
- //#endregion
3528
- //#region packages/core/src/provider-extensions/contracts.d.ts
3529
- declare const providerExtensionIdSchema: z.ZodString;
3530
- declare const providerPackageNameSchema: z.ZodString;
3531
- declare const providerExactVersionSchema: z.ZodString;
3532
- declare const providerIntegritySchema: z.ZodString;
3533
- declare const providerKindSchema: z.ZodEnum<{
3534
- "local-search": "local-search";
3535
- "traffic-analytics": "traffic-analytics";
3536
- "search-results": "search-results";
3537
- "keyword-data": "keyword-data";
3538
- "domain-data": "domain-data";
3539
- "link-data": "link-data";
3540
- "ai-data": "ai-data";
3541
- other: "other";
3542
- }>;
3543
- declare const providerConnectionFieldSchema: z.ZodObject<{
3544
- id: z.ZodString;
3545
- label: z.ZodString;
3546
- description: z.ZodOptional<z.ZodString>;
3547
- kind: z.ZodEnum<{
3548
- account: "account";
3549
- secret: "secret";
3550
- }>;
3551
- required: z.ZodOptional<z.ZodBoolean>;
3552
- envVar: z.ZodOptional<z.ZodString>;
3553
- }, z.core.$strict>;
3554
- declare const providerPackageManifestSchema: z.ZodObject<{
3555
- apiVersion: z.ZodLiteral<1>;
3556
- providers: z.ZodArray<z.ZodString>;
3557
- }, z.core.$strict>;
3558
- declare const installedProviderPackageSchema: z.ZodObject<{
3559
- id: z.ZodString;
3560
- package: z.ZodString;
3561
- version: z.ZodString;
3562
- integrity: z.ZodString;
3563
- enabled: z.ZodBoolean;
3564
- installedAt: z.ZodString;
3565
- }, z.core.$strict>;
3566
- declare const installedProviderPackagesSchema: z.ZodObject<{
3567
- schemaVersion: z.ZodLiteral<1>;
3568
- packages: z.ZodArray<z.ZodObject<{
3569
- id: z.ZodString;
3570
- package: z.ZodString;
3571
- version: z.ZodString;
3572
- integrity: z.ZodString;
3573
- enabled: z.ZodBoolean;
3574
- installedAt: z.ZodString;
3575
- }, z.core.$strict>>;
3576
- }, z.core.$strict>;
3577
- declare const providerRegistrationSchema: z.ZodObject<{
3578
- id: z.ZodString;
3579
- displayName: z.ZodString;
3580
- description: z.ZodString;
3581
- kinds: z.ZodArray<z.ZodEnum<{
3582
- "local-search": "local-search";
3583
- "traffic-analytics": "traffic-analytics";
3584
- "search-results": "search-results";
3585
- "keyword-data": "keyword-data";
3586
- "domain-data": "domain-data";
3587
- "link-data": "link-data";
3588
- "ai-data": "ai-data";
3589
- other: "other";
3590
- }>>;
3591
- connection: z.ZodCustom<SeoProviderConnectionAdapter, SeoProviderConnectionAdapter>;
3592
- capabilities: z.ZodArray<z.ZodType<SeoProviderCapabilityAdapter, unknown, z.core.$ZodTypeInternals<SeoProviderCapabilityAdapter, unknown>>>;
3593
- actions: z.ZodOptional<z.ZodArray<z.ZodCustom<SeoProviderActionAdapter, SeoProviderActionAdapter>>>;
3594
- }, z.core.$strict>;
3595
- type ProviderPackageManifest = z.infer<typeof providerPackageManifestSchema>;
3596
- type InstalledProviderPackage = z.infer<typeof installedProviderPackageSchema>;
3597
- type InstalledProviderPackages = z.infer<typeof installedProviderPackagesSchema>;
3598
- //#endregion
3599
- //#region packages/core/src/provider-extensions/registry.d.ts
3600
- type RegisteredProviderExtension = SeoProviderRegistration & {
3601
- package: string;
3602
- version: string;
3603
- };
3604
- declare class ProviderExtensionRegistry {
3605
- #private;
3606
- hostFor(input: {
3607
- package: string;
3608
- version: string;
3609
- }): SeoProviderHost;
3610
- get(id: string): RegisteredProviderExtension | undefined;
3611
- capability<TId extends SeoProviderCapabilityId>(providerId: string, capabilityId: TId): Extract<SeoProviderCapabilityAdapter, {
3612
- id: TId;
3613
- }> | undefined;
3614
- providersFor(capabilityId: SeoProviderCapabilityId): RegisteredProviderExtension[];
3615
- action(providerId: string, actionId: string): SeoProviderActionAdapter | undefined;
3616
- list(): RegisteredProviderExtension[];
3617
- }
3618
- //#endregion
3619
- //#region packages/core/src/provider-extensions/loader.d.ts
3620
- type ImportedProviderModule = {
3621
- default?: unknown;
3622
- };
3623
- type ProviderExtensionLoadFailure = {
3624
- id: string;
3625
- package: string;
3626
- message: string;
3627
- };
3628
- type LoadedProviderExtensions = {
3629
- registry: ProviderExtensionRegistry;
3630
- failures: ProviderExtensionLoadFailure[];
3631
- };
3632
- type ProviderExtensionLoaderOptions = {
3633
- registry?: ProviderExtensionRegistry;
3634
- packagesDir?: string;
3635
- installed?: readonly InstalledProviderPackage[];
3636
- importModule?: (url: string) => Promise<ImportedProviderModule>;
3637
- };
3638
- declare function loadProviderPackage(input: {
3639
- package: string;
3640
- version: string;
3641
- }, options: {
3642
- packagesDir: string;
3643
- importModule?: (url: string) => Promise<ImportedProviderModule>;
3644
- }): Promise<RegisteredProviderExtension[]>;
3645
- declare function loadInstalledProviderExtensions(options?: ProviderExtensionLoaderOptions): Promise<LoadedProviderExtensions>;
3646
- //#endregion
3647
- //#region packages/core/src/providers/imports/research-columns.d.ts
3648
- declare const RESEARCH_IMPORT_COLUMN_KEYS: readonly ["keyword", "url", "position", "absolutePosition", "searchVolume", "keywordDifficulty", "cpc", "paidCompetition", "intent", "resultCount", "estimatedTraffic", "resultType", "searchVolumeUpdatedAt"];
3649
- type ResearchImportColumn = (typeof RESEARCH_IMPORT_COLUMN_KEYS)[number];
3650
- type ResearchImportColumns = Partial<Record<ResearchImportColumn, string>>;
3651
- declare function normalizedResearchColumnName(value: string): string;
3652
- declare function researchImportColumns(value: ResearchImportColumns | undefined): ResearchImportColumns | undefined;
3653
- declare function validateResearchImportColumnSources(columns: ResearchImportColumns | undefined, includedFields: Iterable<string>): void;
3654
- //#endregion
3655
- //#region packages/core/src/providers/contracts.d.ts
3656
- declare const providerIdSchema: z.ZodString;
3657
- type ProviderId = z.infer<typeof providerIdSchema>;
3658
- type ExternalServiceId = string;
3659
- declare const providerCapabilitySchema: z.ZodEnum<{
3660
- "serp-snapshot": "serp-snapshot";
3661
- "keyword-metrics": "keyword-metrics";
3662
- "keyword-discovery": "keyword-discovery";
3663
- "domain-overview": "domain-overview";
3664
- "ranked-keywords": "ranked-keywords";
3665
- "relevant-pages": "relevant-pages";
3666
- "serp-competitors": "serp-competitors";
3667
- "link-summary": "link-summary";
3668
- "referring-domains": "referring-domains";
3669
- backlinks: "backlinks";
3670
- "domain-rating": "domain-rating";
3671
- "local-search": "local-search";
3672
- "ai-mentions": "ai-mentions";
3673
- "ai-prompt-observation": "ai-prompt-observation";
3674
- }>;
3675
- type ProviderCapability = z.infer<typeof providerCapabilitySchema>;
3676
- type ProviderValue<T> = {
3677
- state: 'observed';
3678
- value: T;
3679
- } | {
3680
- state: 'missing' | 'unavailable' | 'invalid';
3681
- value: null;
3682
- reason: string;
3683
- };
3684
- type ProviderWarning = {
3685
- code: string;
3686
- message: string;
3687
- field?: string;
3688
- row?: number;
3689
- };
3690
- type ProviderImportEvidence = {
3691
- provider: ProviderId;
3692
- path: string;
3693
- format: 'csv' | 'json' | 'jsonl';
3694
- encoding: 'utf-8' | 'utf-16be' | 'utf-16le';
3695
- delimiter: ',' | ';' | '\t' | null;
3696
- columnMapping: ResearchImportColumns | null;
3697
- sha256: string;
3698
- exportedAt: string;
3699
- importedAt: string;
3700
- includedFields: string[];
3701
- fileBytes: number;
3702
- bytesRead: number;
3703
- fileRows: number;
3704
- suppliedRows: number;
3705
- validRows: number;
3706
- filteredRows: number;
3707
- invalidRows: number;
3708
- duplicateRows: number;
3709
- capped: boolean;
3710
- rowLimit: number;
3711
- };
3712
- type KeywordMetric = {
3713
- keyword: string;
3714
- monthlySearchVolume: ProviderValue<number>;
3715
- monthlySearches: ProviderValue<KeywordMonthlySearch[]>;
3716
- searchVolumeUpdatedAt: ProviderValue<string>;
3717
- cpcUsd: ProviderValue<number>;
3718
- paidCompetition: ProviderValue<number>;
3719
- keywordDifficulty: ProviderValue<number>;
3720
- intent: ProviderValue<string>;
3721
- resultCount: ProviderValue<number>;
3722
- };
3723
- type KeywordMonthlySearch = {
3724
- year: number;
3725
- month: number;
3726
- searchVolume: number;
3727
- };
3728
- //#endregion
3729
- //#region packages/core/src/providers/transport.d.ts
3730
- type ProviderFetch = (url: string | URL, init?: RequestInit$1) => Promise<Response$1>;
3731
- type ProviderRequestInput = {
3732
- provider: ExternalServiceId;
3733
- operation: string;
3734
- url: string | URL;
3735
- init?: RequestInit$1;
3736
- fetch: ProviderFetch;
3737
- maxResponseBytes: number;
3738
- timeoutMs: number;
3739
- retry?: 'never' | 'safe';
3740
- retryDelayMs?: number;
3741
- onResponse?: (response: Response$1) => void;
3742
- };
3743
- declare function providerRequestText(input: ProviderRequestInput): Promise<string>;
3744
- declare function providerRequestJson<T>(input: ProviderRequestInput & {
3745
- schema: z.ZodType<T>;
3746
- }): Promise<T>;
3747
- //#endregion
3748
- //#region packages/core/src/provider-extensions/runtime.d.ts
3749
- type ProviderRuntimeOptions = {
3750
- fetch?: ProviderFetch;
3751
- maxRequests?: number;
3752
- now?: () => Date;
3753
- };
3754
- declare function normalizeProviderExtensionAccount(provider: Pick<SeoProviderRegistration, 'displayName' | 'connection'>, account: Readonly<Record<string, string>>): Record<string, string>;
3755
- declare function loadProviderExtensions(): Promise<LoadedProviderExtensions>;
3756
- declare function safeProviderAdapterError(providerId: string, error: unknown, credentials: Readonly<Record<string, string>>): Error;
3757
- declare function runtimeForProvider(provider: string, options?: ProviderRuntimeOptions): SeoProviderRuntime;
3758
- declare function verifyProviderExtension(input: {
3759
- providerId: string;
3760
- account: Readonly<Record<string, string>>;
3761
- credentials: Readonly<Record<string, string>>;
3762
- runtime?: ProviderRuntimeOptions;
3763
- }): Promise<void>;
3764
- //#endregion
3765
- //#region packages/core/src/provider-extensions/analytics.d.ts
3766
- type AnalyticsProviderRuntimeOptions = ProviderRuntimeOptions;
3767
- declare function verifyAnalyticsProvider(input: {
3768
- providerId: string;
3769
- account: Readonly<Record<string, string>>;
3770
- credentials: Readonly<Record<string, string>>;
3771
- runtime?: AnalyticsProviderRuntimeOptions;
3772
- }): Promise<void>;
3773
- declare function runAnalyticsProviderLandingPages(input: {
3774
- providerId: string;
3775
- account: Readonly<Record<string, string>>;
3776
- credentials?: Readonly<Record<string, string>>;
3777
- startDate: string;
3778
- endDate: string;
3779
- limit: number;
3780
- refresh?: boolean;
3781
- runtime?: AnalyticsProviderRuntimeOptions;
3782
- }): Promise<SeoLandingPageVisitsResult>;
3783
- //#endregion
3784
- //#region packages/core/src/analyze/workflows/analytics-value.d.ts
3785
- type LandingPageValue = {
3786
- sessions: number;
3787
- totalUsers?: number;
3788
- conversions?: number;
3789
- };
3790
- type LandingPageValueSource = {
3791
- provider?: string;
3792
- observedMetrics?: Array<'sessions' | 'totalUsers' | 'conversions'>;
3793
- dataStatus?: 'complete' | 'partial';
3794
- returnedRows: number;
3795
- availableRows?: number;
3796
- retainedRowLimit: number;
3797
- retainedRowLimitReached: boolean;
3798
- qualityWarnings?: string[];
3799
- };
3800
- type LandingPageValueResult = {
3801
- values: Map<string, LandingPageValue>;
3802
- source?: LandingPageValueSource;
3803
- warning?: string;
3804
- };
3805
- type LandingPageValueDependencies = {
3806
- runGa4Report: typeof runGa4Report;
3807
- analyticsLandingPages: typeof runAnalyticsProviderLandingPages;
3808
- };
3809
- declare function landingValueForUrl(values: Map<string, LandingPageValue>, url: string): LandingPageValue | undefined;
3810
- declare function fetchLandingPageValues(input: {
3811
- connection?: AnalyticsConnection;
3812
- propertyId?: string;
3813
- startDate: string;
3814
- endDate: string;
3815
- limit?: number;
3816
- refresh?: boolean;
3817
- }, dependencies?: Partial<LandingPageValueDependencies>): Promise<LandingPageValueResult>;
3818
- //#endregion
3819
- //#region packages/core/src/analyze/crawler/site-crawl-dependencies.d.ts
3820
- type ResolvedCrawlSiteDependencies = {
3821
- fetchPage: typeof crawlOne;
3822
- fetchStatusPage: typeof crawlStatusOnly;
3823
- fetchSitemapUrls: typeof fetchSitemapUrls;
3824
- fetch: typeof publicHttpFetch;
3825
- queryPageMetrics: typeof queryPageMetrics;
3826
- queryPageTopQuery: typeof queryPageTopQuery;
3827
- queryPagesMetrics?: typeof queryPagesMetrics;
3828
- queryPagesTopQueries?: typeof queryPagesTopQueries;
3829
- queryPagesMetricsBatch?: typeof queryPagesMetricsBatch;
3830
- queryPagesTopQueriesBatch?: typeof queryPagesTopQueriesBatch;
3831
- fetchLandingPageValues: typeof fetchLandingPageValues;
3832
- landingValueForUrl: typeof landingValueForUrl;
3833
- now: () => Date;
3834
- memoryUsage: () => Pick<NodeJS.MemoryUsage, 'rss' | 'heapUsed' | 'external'>;
3835
- totalMemory: () => number;
3836
- };
3837
- type CrawlSiteDependencies = Partial<ResolvedCrawlSiteDependencies>;
3838
- //#endregion
3839
- //#region packages/core/src/analyze/crawler/site-crawl.d.ts
3840
- declare function crawlSite(input: CrawlConfigInput, dependencies?: CrawlSiteDependencies): Promise<CrawlReport>;
3841
- //#endregion
3842
- //#region packages/core/src/analyze/crawler/baseline.d.ts
3843
- declare const REPORT_BASELINE_MAX_PAGES = 100;
3844
- declare const REPORT_BASELINE_MAX_DEPTH = 4;
3845
- declare const REPORT_BASELINE_MAX_AGE_MS: number;
3846
- type TechnicalBaselineStatus = 'created' | 'refreshed' | 'reused' | 'skipped' | 'unavailable';
3847
- type TechnicalBaseline = {
3848
- status: TechnicalBaselineStatus;
3849
- report?: CrawlReport;
3850
- reason?: string;
3851
- };
3852
- type ResolveTechnicalBaselineInput = {
3853
- /** Stable local identity used to find and save the crawl baseline. */
3854
- site: string;
3855
- /** Optional verified Search Console property used for Google data joins. */
3856
- searchSite?: string;
3857
- url?: string;
3858
- projectId?: string;
3859
- googleAnalyticsPropertyId?: string;
3860
- analyticsConnection?: CrawlConfigInput['analyticsConnection'];
3861
- crawl?: boolean;
3862
- refresh?: boolean;
3863
- maxPages?: number;
3864
- maxDepth?: number;
3865
- maxAgeMs?: number;
3866
- };
3867
- type TechnicalBaselineDependencies = {
3868
- latestCrawlReport: typeof latestCrawlReport;
3869
- crawlSite: typeof crawlSite;
3870
- saveCrawlReport: typeof saveCrawlReport;
3871
- now: () => Date;
3872
- };
3873
- declare function isCompatibleTechnicalBaseline(report: CrawlReport, input: Pick<ResolveTechnicalBaselineInput, 'url' | 'maxPages' | 'maxDepth' | 'googleAnalyticsPropertyId' | 'analyticsConnection'>): boolean;
3874
- declare function isCurrentTechnicalBaseline(report: CrawlReport, input: Pick<ResolveTechnicalBaselineInput, 'maxAgeMs'> & {
3875
- now: Date;
3876
- }): boolean;
3877
- declare function resolveTechnicalBaseline(input: ResolveTechnicalBaselineInput, dependencies?: TechnicalBaselineDependencies): Promise<TechnicalBaseline>;
3878
- //#endregion
3879
3086
  //#region packages/core/src/analyze/crawler/top-fixes.d.ts
3880
3087
  type TopFixFilters = {
3881
3088
  category?: RuleCategory | string;
3882
3089
  severity?: RuleSeverity | string;
3883
3090
  url?: string;
3884
- projectId?: string;
3885
3091
  limit?: number;
3886
3092
  recommendation?: RuleRecommendation;
3887
3093
  };
@@ -3921,136 +3127,6 @@ declare function renderCrawlJunit(report: CrawlReport): string;
3921
3127
  declare function renderCrawlHtml(report: CrawlReport, fixes?: TopFix[]): string;
3922
3128
  declare function renderCrawlMarkdownTickets(report: CrawlReport, fixes?: TopFix[]): string;
3923
3129
  //#endregion
3924
- //#region packages/core/src/analyze/crawler/history-provenance.d.ts
3925
- type CrawlSnapshotCaps = {
3926
- maxPages: number;
3927
- maxDepth: number;
3928
- timeoutMs: number;
3929
- searchConsolePageLimit?: number;
3930
- searchConsoleRetainedRowLimit?: number;
3931
- analyticsRetainedRowLimit?: number;
3932
- };
3933
- type CrawlSnapshotRequestScope = {
3934
- startUrl: string;
3935
- mode: CrawlConfig['mode'];
3936
- explicitUrls: string[];
3937
- include: string[];
3938
- exclude: string[];
3939
- respectRobots: boolean;
3940
- useSitemap: boolean;
3941
- checkExternal: boolean;
3942
- js: CrawlConfig['js'];
3943
- };
3944
- type CrawlSnapshotCompleteness = {
3945
- status: 'complete' | 'partial' | 'failed';
3946
- truncated: boolean;
3947
- reasons: string[];
3948
- requestEvidenceStatus: CrawlReport['requestEvidenceStatus'];
3949
- pageLimitReached: boolean;
3950
- skippedUrls: number;
3951
- skipReasons: CrawlSkipReasonCount[];
3952
- skippedUrlsByImpact: CrawlSkippedUrlsByImpact;
3953
- failedRequests: number;
3954
- abortedRequests: number;
3955
- extractionFailures: number;
3956
- dataSources?: CrawlReportDataSources;
3957
- };
3958
- type CrawlSnapshotInput = {
3959
- id: string;
3960
- definitionId: string;
3961
- generatedAt: string;
3962
- projectId?: string;
3963
- site?: string;
3964
- googleAnalyticsPropertyId?: string;
3965
- analyticsConnection?: CrawlReport['analyticsConnection'];
3966
- url: string;
3967
- status: CrawlReport['status'];
3968
- configHash: string;
3969
- config: CrawlConfig;
3970
- caps: CrawlSnapshotCaps;
3971
- requestScope: CrawlSnapshotRequestScope;
3972
- requestEvidenceStatus: CrawlReport['requestEvidenceStatus'];
3973
- dataSources?: CrawlReportDataSources;
3974
- warnings: string[];
3975
- caveats: string[];
3976
- completeness: CrawlSnapshotCompleteness;
3977
- summary: CrawlReportSummary;
3978
- };
3979
- type CrawlComparisonMetadata = {
3980
- before: CrawlSnapshotInput;
3981
- after: CrawlSnapshotInput;
3982
- comparability: {
3983
- status: 'comparable' | 'review-required';
3984
- sameDefinitionId: boolean;
3985
- sameConfigHash: boolean;
3986
- sameSite: boolean;
3987
- sameStartUrl: boolean;
3988
- sameMode: boolean;
3989
- sameRequestScope: boolean;
3990
- sameCaps: boolean;
3991
- };
3992
- completeness: {
3993
- status: 'complete' | 'partial' | 'failed';
3994
- truncated: boolean;
3995
- before: CrawlSnapshotCompleteness;
3996
- after: CrawlSnapshotCompleteness;
3997
- };
3998
- caveats: string[];
3999
- };
4000
- //#endregion
4001
- //#region packages/core/src/analyze/crawler/history.d.ts
4002
- type CrawlSnapshotPageChange = {
4003
- url: string;
4004
- kind: 'added' | 'removed' | 'changed';
4005
- changes: string[];
4006
- before?: Pick<CrawlPageSnapshot, 'url' | 'finalUrl' | 'status' | 'title' | 'metaDescription' | 'canonical' | 'h1' | 'indexable' | 'wordCount'>;
4007
- after?: Pick<CrawlPageSnapshot, 'url' | 'finalUrl' | 'status' | 'title' | 'metaDescription' | 'canonical' | 'h1' | 'indexable' | 'wordCount'>;
4008
- };
4009
- type CrawlSnapshotIssueChange = {
4010
- ruleId: string;
4011
- title: string;
4012
- severity: string;
4013
- category: string;
4014
- before: number;
4015
- after: number;
4016
- delta: number;
4017
- };
4018
- type CrawlSnapshotDiffReport = {
4019
- schemaVersion: 1;
4020
- before: CrawlComparisonMetadata['before'];
4021
- after: CrawlComparisonMetadata['after'];
4022
- comparability: CrawlComparisonMetadata['comparability'];
4023
- completeness: CrawlComparisonMetadata['completeness'];
4024
- caveats: string[];
4025
- summary: {
4026
- pageDelta: number;
4027
- issueDelta: number;
4028
- addedPages: number;
4029
- removedPages: number;
4030
- changedPages: number;
4031
- newStatusErrors: number;
4032
- fixedStatusErrors: number;
4033
- indexabilityFlips: number;
4034
- titleChanges: number;
4035
- contentChanges: number;
4036
- issueGroupsWorse: number;
4037
- issueGroupsBetter: number;
4038
- };
4039
- headline: string;
4040
- topActions: Array<{
4041
- title: string;
4042
- plainEnglish: string;
4043
- action: string;
4044
- urls?: string[];
4045
- }>;
4046
- pageChanges: CrawlSnapshotPageChange[];
4047
- issueChanges: CrawlSnapshotIssueChange[];
4048
- };
4049
- declare function compareCrawlReports(input: {
4050
- before: CrawlReport;
4051
- after: CrawlReport;
4052
- }): CrawlSnapshotDiffReport;
4053
- //#endregion
4054
3130
  //#region packages/core/src/analyze/crawler/schemas.d.ts
4055
3131
  declare const crawlerRuleSeveritySchema: z.ZodEnum<{
4056
3132
  high: "high";
@@ -5141,7 +4217,6 @@ declare const crawlReportSummarySchema: z.ZodObject<{
5141
4217
  declare const crawlReportSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
5142
4218
  id: z.ZodString;
5143
4219
  definitionId: z.ZodString;
5144
- projectId: z.ZodOptional<z.ZodString>;
5145
4220
  site: z.ZodOptional<z.ZodString>;
5146
4221
  googleAnalyticsPropertyId: z.ZodOptional<z.ZodString>;
5147
4222
  analyticsConnection: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
@@ -6384,7 +5459,6 @@ declare const crawlReportSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
6384
5459
  }, z.core.$strip>, z.ZodObject<{
6385
5460
  id: z.ZodString;
6386
5461
  definitionId: z.ZodString;
6387
- projectId: z.ZodOptional<z.ZodString>;
6388
5462
  site: z.ZodOptional<z.ZodString>;
6389
5463
  googleAnalyticsPropertyId: z.ZodOptional<z.ZodString>;
6390
5464
  analyticsConnection: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
@@ -7627,7 +6701,6 @@ declare const crawlReportSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
7627
6701
  }, z.core.$strip>, z.ZodObject<{
7628
6702
  id: z.ZodString;
7629
6703
  definitionId: z.ZodString;
7630
- projectId: z.ZodOptional<z.ZodString>;
7631
6704
  site: z.ZodOptional<z.ZodString>;
7632
6705
  googleAnalyticsPropertyId: z.ZodOptional<z.ZodString>;
7633
6706
  analyticsConnection: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
@@ -8872,7 +7945,6 @@ declare const crawlerSchemas: {
8872
7945
  crawlReport: z.ZodDiscriminatedUnion<[z.ZodObject<{
8873
7946
  id: z.ZodString;
8874
7947
  definitionId: z.ZodString;
8875
- projectId: z.ZodOptional<z.ZodString>;
8876
7948
  site: z.ZodOptional<z.ZodString>;
8877
7949
  googleAnalyticsPropertyId: z.ZodOptional<z.ZodString>;
8878
7950
  analyticsConnection: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
@@ -10115,7 +9187,6 @@ declare const crawlerSchemas: {
10115
9187
  }, z.core.$strip>, z.ZodObject<{
10116
9188
  id: z.ZodString;
10117
9189
  definitionId: z.ZodString;
10118
- projectId: z.ZodOptional<z.ZodString>;
10119
9190
  site: z.ZodOptional<z.ZodString>;
10120
9191
  googleAnalyticsPropertyId: z.ZodOptional<z.ZodString>;
10121
9192
  analyticsConnection: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
@@ -11358,7 +10429,6 @@ declare const crawlerSchemas: {
11358
10429
  }, z.core.$strip>, z.ZodObject<{
11359
10430
  id: z.ZodString;
11360
10431
  definitionId: z.ZodString;
11361
- projectId: z.ZodOptional<z.ZodString>;
11362
10432
  site: z.ZodOptional<z.ZodString>;
11363
10433
  googleAnalyticsPropertyId: z.ZodOptional<z.ZodString>;
11364
10434
  analyticsConnection: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
@@ -13529,7 +12599,6 @@ declare const crawlerJsonSchemas: {
13529
12599
  crawlReport: z.core.ZodStandardJSONSchemaPayload<z.ZodDiscriminatedUnion<[z.ZodObject<{
13530
12600
  id: z.ZodString;
13531
12601
  definitionId: z.ZodString;
13532
- projectId: z.ZodOptional<z.ZodString>;
13533
12602
  site: z.ZodOptional<z.ZodString>;
13534
12603
  googleAnalyticsPropertyId: z.ZodOptional<z.ZodString>;
13535
12604
  analyticsConnection: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
@@ -14772,7 +13841,6 @@ declare const crawlerJsonSchemas: {
14772
13841
  }, z.core.$strip>, z.ZodObject<{
14773
13842
  id: z.ZodString;
14774
13843
  definitionId: z.ZodString;
14775
- projectId: z.ZodOptional<z.ZodString>;
14776
13844
  site: z.ZodOptional<z.ZodString>;
14777
13845
  googleAnalyticsPropertyId: z.ZodOptional<z.ZodString>;
14778
13846
  analyticsConnection: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
@@ -16015,7 +15083,6 @@ declare const crawlerJsonSchemas: {
16015
15083
  }, z.core.$strip>, z.ZodObject<{
16016
15084
  id: z.ZodString;
16017
15085
  definitionId: z.ZodString;
16018
- projectId: z.ZodOptional<z.ZodString>;
16019
15086
  site: z.ZodOptional<z.ZodString>;
16020
15087
  googleAnalyticsPropertyId: z.ZodOptional<z.ZodString>;
16021
15088
  analyticsConnection: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
@@ -18183,6 +17250,339 @@ declare const crawlerJsonSchemas: {
18183
17250
  }, z.core.$strip>>;
18184
17251
  };
18185
17252
  //#endregion
17253
+ //#region packages/core/src/fetch/crawler-identity.d.ts
17254
+ declare const SEO_CRAWLER_TOKEN = "SEO-Skill";
17255
+ declare const SEO_CRAWLER_USER_AGENT: string;
17256
+ declare const SEO_CRAWLER_IDENTITY: CrawlerIdentity;
17257
+ //#endregion
17258
+ //#region packages/core/src/fetch/http-client.d.ts
17259
+ type HttpProfile = 'browser' | 'bot';
17260
+ declare class ResponseSizeLimitError extends Error {
17261
+ readonly maxBytes: number;
17262
+ constructor(maxBytes: number, label?: string);
17263
+ }
17264
+ /** @deprecated Use SEO_CRAWLER_USER_AGENT. */
17265
+ declare const BROWSER_USER_AGENT: string;
17266
+ declare function requestHeaders(profile: HttpProfile): Headers$1;
17267
+ declare function publicHttpFetch(url: string, input?: RequestInit$1 & {
17268
+ profile?: HttpProfile;
17269
+ }): Promise<import("undici").Response>;
17270
+ declare function readBoundedResponseText(response: Awaited<ReturnType<typeof publicHttpFetch>>, maxBytes: number, label?: string): Promise<string>;
17271
+ //#endregion
17272
+ //#region packages/core/src/provider-extensions/contracts.d.ts
17273
+ declare const providerExtensionIdSchema: z.ZodString;
17274
+ declare const providerPackageNameSchema: z.ZodString;
17275
+ declare const providerExactVersionSchema: z.ZodString;
17276
+ declare const providerIntegritySchema: z.ZodString;
17277
+ declare const providerKindSchema: z.ZodEnum<{
17278
+ "traffic-analytics": "traffic-analytics";
17279
+ "search-results": "search-results";
17280
+ "keyword-data": "keyword-data";
17281
+ "domain-data": "domain-data";
17282
+ "link-data": "link-data";
17283
+ "local-search": "local-search";
17284
+ "ai-data": "ai-data";
17285
+ other: "other";
17286
+ }>;
17287
+ declare const providerConnectionFieldSchema: z.ZodObject<{
17288
+ id: z.ZodString;
17289
+ label: z.ZodString;
17290
+ description: z.ZodOptional<z.ZodString>;
17291
+ kind: z.ZodEnum<{
17292
+ account: "account";
17293
+ secret: "secret";
17294
+ }>;
17295
+ required: z.ZodOptional<z.ZodBoolean>;
17296
+ envVar: z.ZodOptional<z.ZodString>;
17297
+ }, z.core.$strict>;
17298
+ declare const providerPackageManifestSchema: z.ZodObject<{
17299
+ apiVersion: z.ZodLiteral<1>;
17300
+ providers: z.ZodArray<z.ZodString>;
17301
+ }, z.core.$strict>;
17302
+ declare const installedProviderPackageSchema: z.ZodObject<{
17303
+ id: z.ZodString;
17304
+ package: z.ZodString;
17305
+ version: z.ZodString;
17306
+ integrity: z.ZodString;
17307
+ enabled: z.ZodBoolean;
17308
+ installedAt: z.ZodString;
17309
+ }, z.core.$strict>;
17310
+ declare const installedProviderPackagesSchema: z.ZodObject<{
17311
+ schemaVersion: z.ZodLiteral<1>;
17312
+ packages: z.ZodArray<z.ZodObject<{
17313
+ id: z.ZodString;
17314
+ package: z.ZodString;
17315
+ version: z.ZodString;
17316
+ integrity: z.ZodString;
17317
+ enabled: z.ZodBoolean;
17318
+ installedAt: z.ZodString;
17319
+ }, z.core.$strict>>;
17320
+ }, z.core.$strict>;
17321
+ declare const providerRegistrationSchema: z.ZodObject<{
17322
+ id: z.ZodString;
17323
+ displayName: z.ZodString;
17324
+ description: z.ZodString;
17325
+ kinds: z.ZodArray<z.ZodEnum<{
17326
+ "traffic-analytics": "traffic-analytics";
17327
+ "search-results": "search-results";
17328
+ "keyword-data": "keyword-data";
17329
+ "domain-data": "domain-data";
17330
+ "link-data": "link-data";
17331
+ "local-search": "local-search";
17332
+ "ai-data": "ai-data";
17333
+ other: "other";
17334
+ }>>;
17335
+ connection: z.ZodCustom<SeoProviderConnectionAdapter, SeoProviderConnectionAdapter>;
17336
+ capabilities: z.ZodArray<z.ZodType<SeoProviderCapabilityAdapter, unknown, z.core.$ZodTypeInternals<SeoProviderCapabilityAdapter, unknown>>>;
17337
+ actions: z.ZodOptional<z.ZodArray<z.ZodCustom<SeoProviderActionAdapter, SeoProviderActionAdapter>>>;
17338
+ }, z.core.$strict>;
17339
+ type ProviderPackageManifest = z.infer<typeof providerPackageManifestSchema>;
17340
+ type InstalledProviderPackage = z.infer<typeof installedProviderPackageSchema>;
17341
+ type InstalledProviderPackages = z.infer<typeof installedProviderPackagesSchema>;
17342
+ //#endregion
17343
+ //#region packages/core/src/provider-extensions/registry.d.ts
17344
+ type RegisteredProviderExtension = SeoProviderRegistration & {
17345
+ package: string;
17346
+ version: string;
17347
+ };
17348
+ declare class ProviderExtensionRegistry {
17349
+ #private;
17350
+ hostFor(input: {
17351
+ package: string;
17352
+ version: string;
17353
+ }): SeoProviderHost;
17354
+ get(id: string): RegisteredProviderExtension | undefined;
17355
+ capability<TId extends SeoProviderCapabilityId>(providerId: string, capabilityId: TId): Extract<SeoProviderCapabilityAdapter, {
17356
+ id: TId;
17357
+ }> | undefined;
17358
+ providersFor(capabilityId: SeoProviderCapabilityId): RegisteredProviderExtension[];
17359
+ action(providerId: string, actionId: string): SeoProviderActionAdapter | undefined;
17360
+ list(): RegisteredProviderExtension[];
17361
+ }
17362
+ //#endregion
17363
+ //#region packages/core/src/provider-extensions/loader.d.ts
17364
+ type ImportedProviderModule = {
17365
+ default?: unknown;
17366
+ };
17367
+ type ProviderExtensionLoadFailure = {
17368
+ id: string;
17369
+ package: string;
17370
+ message: string;
17371
+ };
17372
+ type LoadedProviderExtensions = {
17373
+ registry: ProviderExtensionRegistry;
17374
+ failures: ProviderExtensionLoadFailure[];
17375
+ };
17376
+ type ProviderExtensionLoaderOptions = {
17377
+ registry?: ProviderExtensionRegistry;
17378
+ packagesDir?: string;
17379
+ installed?: readonly InstalledProviderPackage[];
17380
+ importModule?: (url: string) => Promise<ImportedProviderModule>;
17381
+ };
17382
+ declare function loadProviderPackage(input: {
17383
+ package: string;
17384
+ version: string;
17385
+ }, options: {
17386
+ packagesDir: string;
17387
+ importModule?: (url: string) => Promise<ImportedProviderModule>;
17388
+ }): Promise<RegisteredProviderExtension[]>;
17389
+ declare function loadInstalledProviderExtensions(options?: ProviderExtensionLoaderOptions): Promise<LoadedProviderExtensions>;
17390
+ //#endregion
17391
+ //#region packages/core/src/providers/imports/research-columns.d.ts
17392
+ declare const RESEARCH_IMPORT_COLUMN_KEYS: readonly ["keyword", "url", "position", "absolutePosition", "searchVolume", "keywordDifficulty", "cpc", "paidCompetition", "intent", "resultCount", "estimatedTraffic", "resultType", "searchVolumeUpdatedAt"];
17393
+ type ResearchImportColumn = (typeof RESEARCH_IMPORT_COLUMN_KEYS)[number];
17394
+ type ResearchImportColumns = Partial<Record<ResearchImportColumn, string>>;
17395
+ declare function normalizedResearchColumnName(value: string): string;
17396
+ declare function researchImportColumns(value: ResearchImportColumns | undefined): ResearchImportColumns | undefined;
17397
+ declare function validateResearchImportColumnSources(columns: ResearchImportColumns | undefined, includedFields: Iterable<string>): void;
17398
+ //#endregion
17399
+ //#region packages/core/src/providers/contracts.d.ts
17400
+ declare const providerIdSchema: z.ZodString;
17401
+ type ProviderId = z.infer<typeof providerIdSchema>;
17402
+ type ExternalServiceId = string;
17403
+ declare const providerCapabilitySchema: z.ZodEnum<{
17404
+ "local-search": "local-search";
17405
+ "serp-snapshot": "serp-snapshot";
17406
+ "keyword-metrics": "keyword-metrics";
17407
+ "keyword-discovery": "keyword-discovery";
17408
+ "domain-overview": "domain-overview";
17409
+ "ranked-keywords": "ranked-keywords";
17410
+ "relevant-pages": "relevant-pages";
17411
+ "serp-competitors": "serp-competitors";
17412
+ "link-summary": "link-summary";
17413
+ "referring-domains": "referring-domains";
17414
+ backlinks: "backlinks";
17415
+ "domain-rating": "domain-rating";
17416
+ "ai-mentions": "ai-mentions";
17417
+ "ai-prompt-observation": "ai-prompt-observation";
17418
+ }>;
17419
+ type ProviderCapability = z.infer<typeof providerCapabilitySchema>;
17420
+ type ProviderValue<T> = {
17421
+ state: 'observed';
17422
+ value: T;
17423
+ } | {
17424
+ state: 'missing' | 'unavailable' | 'invalid';
17425
+ value: null;
17426
+ reason: string;
17427
+ };
17428
+ type ProviderWarning = {
17429
+ code: string;
17430
+ message: string;
17431
+ field?: string;
17432
+ row?: number;
17433
+ };
17434
+ type ProviderImportEvidence = {
17435
+ provider: ProviderId;
17436
+ path: string;
17437
+ format: 'csv' | 'json' | 'jsonl';
17438
+ encoding: 'utf-8' | 'utf-16be' | 'utf-16le';
17439
+ delimiter: ',' | ';' | '\t' | null;
17440
+ columnMapping: ResearchImportColumns | null;
17441
+ sha256: string;
17442
+ exportedAt: string;
17443
+ importedAt: string;
17444
+ includedFields: string[];
17445
+ fileBytes: number;
17446
+ bytesRead: number;
17447
+ fileRows: number;
17448
+ suppliedRows: number;
17449
+ validRows: number;
17450
+ filteredRows: number;
17451
+ invalidRows: number;
17452
+ duplicateRows: number;
17453
+ capped: boolean;
17454
+ rowLimit: number;
17455
+ };
17456
+ type KeywordMetric = {
17457
+ keyword: string;
17458
+ monthlySearchVolume: ProviderValue<number>;
17459
+ monthlySearches: ProviderValue<KeywordMonthlySearch[]>;
17460
+ searchVolumeUpdatedAt: ProviderValue<string>;
17461
+ cpcUsd: ProviderValue<number>;
17462
+ paidCompetition: ProviderValue<number>;
17463
+ keywordDifficulty: ProviderValue<number>;
17464
+ intent: ProviderValue<string>;
17465
+ resultCount: ProviderValue<number>;
17466
+ };
17467
+ type KeywordMonthlySearch = {
17468
+ year: number;
17469
+ month: number;
17470
+ searchVolume: number;
17471
+ };
17472
+ //#endregion
17473
+ //#region packages/core/src/providers/transport.d.ts
17474
+ type ProviderFetch = (url: string | URL, init?: RequestInit$1) => Promise<Response$1>;
17475
+ type ProviderRequestInput = {
17476
+ provider: ExternalServiceId;
17477
+ operation: string;
17478
+ url: string | URL;
17479
+ init?: RequestInit$1;
17480
+ fetch: ProviderFetch;
17481
+ maxResponseBytes: number;
17482
+ timeoutMs: number;
17483
+ retry?: 'never' | 'safe';
17484
+ retryDelayMs?: number;
17485
+ onResponse?: (response: Response$1) => void;
17486
+ };
17487
+ declare function providerRequestText(input: ProviderRequestInput): Promise<string>;
17488
+ declare function providerRequestJson<T>(input: ProviderRequestInput & {
17489
+ schema: z.ZodType<T>;
17490
+ }): Promise<T>;
17491
+ //#endregion
17492
+ //#region packages/core/src/provider-extensions/runtime.d.ts
17493
+ type ProviderRuntimeOptions = {
17494
+ fetch?: ProviderFetch;
17495
+ maxRequests?: number;
17496
+ now?: () => Date;
17497
+ };
17498
+ declare function normalizeProviderExtensionAccount(provider: Pick<SeoProviderRegistration, 'displayName' | 'connection'>, account: Readonly<Record<string, string>>): Record<string, string>;
17499
+ declare function loadProviderExtensions(): Promise<LoadedProviderExtensions>;
17500
+ declare function safeProviderAdapterError(providerId: string, error: unknown, credentials: Readonly<Record<string, string>>): Error;
17501
+ declare function runtimeForProvider(provider: string, options?: ProviderRuntimeOptions): SeoProviderRuntime;
17502
+ declare function verifyProviderExtension(input: {
17503
+ providerId: string;
17504
+ account: Readonly<Record<string, string>>;
17505
+ credentials: Readonly<Record<string, string>>;
17506
+ runtime?: ProviderRuntimeOptions;
17507
+ }): Promise<void>;
17508
+ //#endregion
17509
+ //#region packages/core/src/provider-extensions/analytics.d.ts
17510
+ type AnalyticsProviderRuntimeOptions = ProviderRuntimeOptions;
17511
+ declare function verifyAnalyticsProvider(input: {
17512
+ providerId: string;
17513
+ account: Readonly<Record<string, string>>;
17514
+ credentials: Readonly<Record<string, string>>;
17515
+ runtime?: AnalyticsProviderRuntimeOptions;
17516
+ }): Promise<void>;
17517
+ declare function runAnalyticsProviderLandingPages(input: {
17518
+ providerId: string;
17519
+ account: Readonly<Record<string, string>>;
17520
+ credentials?: Readonly<Record<string, string>>;
17521
+ startDate: string;
17522
+ endDate: string;
17523
+ limit: number;
17524
+ refresh?: boolean;
17525
+ runtime?: AnalyticsProviderRuntimeOptions;
17526
+ }): Promise<SeoLandingPageVisitsResult>;
17527
+ //#endregion
17528
+ //#region packages/core/src/analyze/workflows/analytics-value.d.ts
17529
+ type LandingPageValue = {
17530
+ sessions: number;
17531
+ totalUsers?: number;
17532
+ conversions?: number;
17533
+ };
17534
+ type LandingPageValueSource = {
17535
+ provider?: string;
17536
+ observedMetrics?: Array<'sessions' | 'totalUsers' | 'conversions'>;
17537
+ dataStatus?: 'complete' | 'partial';
17538
+ returnedRows: number;
17539
+ availableRows?: number;
17540
+ retainedRowLimit: number;
17541
+ retainedRowLimitReached: boolean;
17542
+ qualityWarnings?: string[];
17543
+ };
17544
+ type LandingPageValueResult = {
17545
+ values: Map<string, LandingPageValue>;
17546
+ source?: LandingPageValueSource;
17547
+ warning?: string;
17548
+ };
17549
+ type LandingPageValueDependencies = {
17550
+ runGa4Report: typeof runGa4Report;
17551
+ analyticsLandingPages: typeof runAnalyticsProviderLandingPages;
17552
+ };
17553
+ declare function landingValueForUrl(values: Map<string, LandingPageValue>, url: string): LandingPageValue | undefined;
17554
+ declare function fetchLandingPageValues(input: {
17555
+ connection?: AnalyticsConnection;
17556
+ propertyId?: string;
17557
+ startDate: string;
17558
+ endDate: string;
17559
+ limit?: number;
17560
+ refresh?: boolean;
17561
+ }, dependencies?: Partial<LandingPageValueDependencies>): Promise<LandingPageValueResult>;
17562
+ //#endregion
17563
+ //#region packages/core/src/analyze/crawler/site-crawl-dependencies.d.ts
17564
+ type ResolvedCrawlSiteDependencies = {
17565
+ fetchPage: typeof crawlOne;
17566
+ fetchStatusPage: typeof crawlStatusOnly;
17567
+ fetchSitemapUrls: typeof fetchSitemapUrls;
17568
+ fetch: typeof publicHttpFetch;
17569
+ queryPageMetrics: typeof queryPageMetrics;
17570
+ queryPageTopQuery: typeof queryPageTopQuery;
17571
+ queryPagesMetrics?: typeof queryPagesMetrics;
17572
+ queryPagesTopQueries?: typeof queryPagesTopQueries;
17573
+ queryPagesMetricsBatch?: typeof queryPagesMetricsBatch;
17574
+ queryPagesTopQueriesBatch?: typeof queryPagesTopQueriesBatch;
17575
+ fetchLandingPageValues: typeof fetchLandingPageValues;
17576
+ landingValueForUrl: typeof landingValueForUrl;
17577
+ now: () => Date;
17578
+ memoryUsage: () => Pick<NodeJS.MemoryUsage, 'rss' | 'heapUsed' | 'external'>;
17579
+ totalMemory: () => number;
17580
+ };
17581
+ type CrawlSiteDependencies = Partial<ResolvedCrawlSiteDependencies>;
17582
+ //#endregion
17583
+ //#region packages/core/src/analyze/crawler/site-crawl.d.ts
17584
+ declare function crawlSite(input: CrawlConfigInput, dependencies?: CrawlSiteDependencies): Promise<CrawlReport>;
17585
+ //#endregion
18186
17586
  //#region packages/core/src/analyze/query-quality.d.ts
18187
17587
  type QueryFlag = 'likely-automated' | 'navigational-other';
18188
17588
  declare const QUERY_FLAG_METHOD: {
@@ -19649,194 +19049,6 @@ declare function findOverlappingSearchUpdates(input: {
19649
19049
  paddingDays?: number;
19650
19050
  }): SearchUpdate[];
19651
19051
  //#endregion
19652
- //#region packages/core/src/analyze/experiments/types.d.ts
19653
- type ContentGroupDimension = 'page' | 'query';
19654
- type ContentGroupMatchType = 'equals' | 'contains' | 'regex';
19655
- type ContentGroup = {
19656
- id: string;
19657
- site: string;
19658
- name: string;
19659
- dimension: ContentGroupDimension;
19660
- matchType: ContentGroupMatchType;
19661
- pattern: string;
19662
- createdAt: string;
19663
- };
19664
- type ChangeScope = 'site' | 'page' | 'query' | 'group';
19665
- type SeoChange = {
19666
- id: string;
19667
- site: string;
19668
- scope: ChangeScope;
19669
- target: string;
19670
- title: string;
19671
- description?: string;
19672
- changedAt: string;
19673
- createdAt: string;
19674
- };
19675
- type TestMetrics = {
19676
- clicks: number;
19677
- impressions: number;
19678
- ctr: number;
19679
- position: number;
19680
- };
19681
- type AnalyticsTestMetrics = {
19682
- sessions: number;
19683
- engagedSessions: number;
19684
- conversions: number;
19685
- totalRevenue: number;
19686
- };
19687
- type MetricDelta = {
19688
- clicks: number | null;
19689
- clickPct: number | null;
19690
- impressions: number | null;
19691
- impressionPct: number | null;
19692
- ctr: number | null;
19693
- position: number | null;
19694
- };
19695
- type AnalyticsMetricDelta = {
19696
- sessions: number;
19697
- sessionPct: number | null;
19698
- engagedSessions: number;
19699
- engagedSessionPct: number | null;
19700
- conversions: number;
19701
- conversionPct: number | null;
19702
- totalRevenue: number;
19703
- revenuePct: number | null;
19704
- };
19705
- type ChangeMeasurement = {
19706
- schemaVersion: 1;
19707
- methodology: 'equal-finalized-calendar-windows-v1';
19708
- dataStatus: 'complete' | 'partial';
19709
- change: SeoChange;
19710
- window: {
19711
- requestedDays: number;
19712
- effectiveDays: number;
19713
- afterWindowTruncated: boolean;
19714
- gscTimezone: 'America/Los_Angeles';
19715
- availableDateWindow: {
19716
- earliestDate: string;
19717
- latestFinalDate: string;
19718
- };
19719
- };
19720
- source: {
19721
- searchAnalytics: {
19722
- status: 'complete' | 'partial';
19723
- completeness: 'date-aggregates' | 'retained-query-date-aggregates';
19724
- dimensions: ['date'];
19725
- searchType: 'web';
19726
- dataState: 'final';
19727
- before: {
19728
- calls: number;
19729
- rowsFetched: number;
19730
- returnedRows: number;
19731
- invalidRows: number;
19732
- duplicateRows: number;
19733
- };
19734
- after: {
19735
- calls: number;
19736
- rowsFetched: number;
19737
- returnedRows: number;
19738
- invalidRows: number;
19739
- duplicateRows: number;
19740
- };
19741
- control?: {
19742
- status: 'complete' | 'partial';
19743
- completeness: 'date-aggregates' | 'retained-query-date-aggregates';
19744
- before: ChangeMeasurement['source']['searchAnalytics']['before'];
19745
- after: ChangeMeasurement['source']['searchAnalytics']['after'];
19746
- };
19747
- warnings: string[];
19748
- };
19749
- analytics?: {
19750
- status: 'complete' | 'partial';
19751
- before: {
19752
- rows: number;
19753
- rowCount: number;
19754
- timeZone?: string;
19755
- currencyCode?: string;
19756
- };
19757
- after: {
19758
- rows: number;
19759
- rowCount: number;
19760
- timeZone?: string;
19761
- currencyCode?: string;
19762
- };
19763
- warnings: string[];
19764
- };
19765
- };
19766
- before: {
19767
- startDate: string;
19768
- endDate: string;
19769
- metrics: TestMetrics | null;
19770
- };
19771
- after: {
19772
- startDate: string;
19773
- endDate: string;
19774
- metrics: TestMetrics | null;
19775
- };
19776
- delta: MetricDelta;
19777
- analytics?: {
19778
- propertyId: string;
19779
- before: {
19780
- startDate: string;
19781
- endDate: string;
19782
- metrics: AnalyticsTestMetrics;
19783
- };
19784
- after: {
19785
- startDate: string;
19786
- endDate: string;
19787
- metrics: AnalyticsTestMetrics;
19788
- };
19789
- delta: AnalyticsMetricDelta;
19790
- note: string;
19791
- };
19792
- control?: {
19793
- change: SeoChange;
19794
- before: {
19795
- startDate: string;
19796
- endDate: string;
19797
- metrics: TestMetrics | null;
19798
- };
19799
- after: {
19800
- startDate: string;
19801
- endDate: string;
19802
- metrics: TestMetrics | null;
19803
- };
19804
- delta: MetricDelta;
19805
- adjusted: {
19806
- methodology: 'control-ratio-counterfactual-v1';
19807
- clickDelta: number | null;
19808
- clickPctPoints: number | null;
19809
- impressionDelta: number | null;
19810
- impressionPctPoints: number | null;
19811
- };
19812
- note: string;
19813
- };
19814
- verdict: 'positive' | 'negative' | 'mixed' | 'flat' | 'not-enough-data';
19815
- confidence: 'high' | 'medium' | 'low';
19816
- note: string;
19817
- warnings: string[];
19818
- caveats: string[];
19819
- };
19820
- type ContentGroupRow = {
19821
- id: string;
19822
- site_url: string;
19823
- name: string;
19824
- dimension: ContentGroupDimension;
19825
- match_type: ContentGroupMatchType;
19826
- pattern: string;
19827
- created_at: number;
19828
- };
19829
- type ChangeRow = {
19830
- id: string;
19831
- site_url: string;
19832
- scope: ChangeScope;
19833
- target: string;
19834
- title: string;
19835
- description?: string | null;
19836
- changed_at: string;
19837
- created_at: number;
19838
- };
19839
- //#endregion
19840
19052
  //#region packages/core/src/analyze/traffic-anomaly-analysis.d.ts
19841
19053
  interface TrafficAnomaly {
19842
19054
  site: string;
@@ -19851,10 +19063,42 @@ interface TrafficAnomaly {
19851
19063
  comparisonTotal: number;
19852
19064
  percentChange: number | null;
19853
19065
  zScore: number | null;
19854
- significanceMethod: 'z-score' | 'outside-flat-baseline' | 'none';
19066
+ significanceMethod: 'z-score' | 'outside-flat-baseline' | 'step-change' | 'none';
19855
19067
  direction: 'drop' | 'spike' | 'normal';
19856
19068
  significant: boolean;
19069
+ /**
19070
+ * How the comparison was chosen. `step-change`: the daily series has a
19071
+ * sustained level change, so the baseline is every day before it and the
19072
+ * comparison is every day from it. `recent-window`: no step change, so the
19073
+ * last recentDays are compared with the days before them. Optional only
19074
+ * for older fixtures.
19075
+ */
19076
+ detection?: 'step-change' | 'recent-window';
19077
+ /** First observed day at the new level for a step change, else null. */
19078
+ changeDate?: string | null;
19857
19079
  }
19080
+ /** The step-change heuristic and its thresholds, returned with the report. */
19081
+ declare const STEP_CHANGE_RULES: {
19082
+ readonly method: "best-split";
19083
+ readonly description: "Heuristic. The change date is the split of the daily series where the mean before and the mean after differ most, weighted by segment length. It counts as a step change only when it is sudden and sustained. Sudden: the median of up to localDays observed days after the date differs from the median of up to localDays days before it by at least minLocalShiftInStdDevs pooled within-segment standard deviations, so one unusual day is not a step and a slow trend is not a step. Sustained: the mean of every day from the date differs from the mean before it by a z-score of at least minZScore, stricter than the recent-window test because the date is chosen from the data. These tests use daily values capped at the capDays and 1 - capDays quantiles, so one spike day cannot hide a lasting step. Otherwise the last recentDays are compared with the days before them.";
19084
+ readonly minDaysBefore: 7;
19085
+ readonly minDaysAfter: 3;
19086
+ readonly localDays: 7;
19087
+ readonly minLocalShiftInStdDevs: 2;
19088
+ readonly minZScore: 3;
19089
+ readonly capDays: 0.05;
19090
+ };
19091
+ type TrafficAnomalyDetection = typeof STEP_CHANGE_RULES & {
19092
+ recentDays: number;
19093
+ };
19094
+ /**
19095
+ * The dates to check against Google updates (before padding): the change
19096
+ * date of the first significant step change, else the comparison window.
19097
+ */
19098
+ declare function changeWindow(anomalies: TrafficAnomaly[]): {
19099
+ start: string;
19100
+ end: string;
19101
+ } | undefined;
19858
19102
  interface TrafficAnomalyCoverage {
19859
19103
  status: 'complete' | 'partial';
19860
19104
  requestedStart: string;
@@ -19865,6 +19109,10 @@ interface TrafficAnomalyCoverage {
19865
19109
  duplicateRows: number;
19866
19110
  expectedDays: number;
19867
19111
  missingDays: number;
19112
+ /**
19113
+ * The recent-window split (last recentDays against the days before). A
19114
+ * metric with a step change uses its own dates, shown on its anomaly row.
19115
+ */
19868
19116
  baseline: {
19869
19117
  start: string;
19870
19118
  end: string;
@@ -19904,6 +19152,8 @@ interface TrafficAnomalyReport {
19904
19152
  /** Row and day counts behind the anomaly test. Optional only for older fixtures. */
19905
19153
  selection?: TrafficAnomalySelection;
19906
19154
  coverage?: TrafficAnomalyCoverage;
19155
+ /** Detection method and thresholds. Optional only for older fixtures. */
19156
+ detection?: TrafficAnomalyDetection;
19907
19157
  }
19908
19158
  interface UpdateCorrelationReport {
19909
19159
  site: string;
@@ -19925,19 +19175,9 @@ interface UpdateCorrelationReport {
19925
19175
  };
19926
19176
  }
19927
19177
  type UpdateConfounder = {
19928
- source: 'change-log' | 'manual';
19178
+ source: 'manual';
19929
19179
  title: string;
19930
- date?: string;
19931
- scope?: ChangeScope;
19932
- target?: string;
19933
- description?: string;
19934
19180
  };
19935
- declare function changesInWindow(input: {
19936
- changes: SeoChange[];
19937
- startDate?: string;
19938
- endDate?: string;
19939
- paddingDays: number;
19940
- }): SeoChange[];
19941
19181
  declare function interpretUpdateCorrelation(input: {
19942
19182
  site: string;
19943
19183
  anomalies: TrafficAnomaly[];
@@ -19957,6 +19197,7 @@ declare function analyzeTrafficAnomalyRows(input: {
19957
19197
  }): {
19958
19198
  anomalies: TrafficAnomaly[];
19959
19199
  coverage: TrafficAnomalyCoverage;
19200
+ detection: TrafficAnomalyDetection;
19960
19201
  };
19961
19202
  //#endregion
19962
19203
  //#region packages/core/src/analyze/traffic-anomaly-report.d.ts
@@ -19984,7 +19225,6 @@ declare function updateCorrelation(input: {
19984
19225
  endDate?: string;
19985
19226
  paddingDays?: number;
19986
19227
  knownConfounders?: string[];
19987
- includeChangeLog?: boolean;
19988
19228
  refresh?: boolean;
19989
19229
  trafficAnomalies?: TrafficAnomaly[];
19990
19230
  }): Promise<UpdateCorrelationReport>;
@@ -20065,57 +19305,6 @@ declare function diagnoseProperty(input: {
20065
19305
  progress?: ProgressReporter;
20066
19306
  }, dependencies?: Partial<DiagnosePropertyDependencies>): Promise<DiagnosePropertyReport>;
20067
19307
  //#endregion
20068
- //#region packages/core/src/analyze/experiments/change-log.d.ts
20069
- declare function recordChange(input: {
20070
- site: string;
20071
- scope: ChangeScope;
20072
- target: string;
20073
- title: string;
20074
- description?: string;
20075
- changedAt: string;
20076
- }): SeoChange;
20077
- declare function listChanges(input?: {
20078
- site?: string;
20079
- limit?: number;
20080
- }): SeoChange[];
20081
- declare function getChange(id: string): SeoChange | undefined;
20082
- declare function deleteChange(id: string): boolean;
20083
- //#endregion
20084
- //#region packages/core/src/analyze/experiments/content-groups.d.ts
20085
- declare function createContentGroup(input: {
20086
- site: string;
20087
- name: string;
20088
- dimension?: ContentGroupDimension;
20089
- matchType?: ContentGroupMatchType;
20090
- pattern: string;
20091
- }): ContentGroup;
20092
- declare function listContentGroups(site?: string): ContentGroup[];
20093
- declare function getContentGroup(id: string): ContentGroup | undefined;
20094
- declare function deleteContentGroup(id: string): boolean;
20095
- //#endregion
20096
- //#region packages/core/src/analyze/experiments/measure-change.d.ts
20097
- type MeasureChangeDependencies = {
20098
- searchAnalytics: typeof querySearchAnalytics;
20099
- googleAnalyticsReport: typeof runGa4Report;
20100
- contentGroup: typeof getContentGroup;
20101
- now: () => Date;
20102
- };
20103
- declare function measureChange(input: {
20104
- id?: string;
20105
- site?: string;
20106
- scope?: ChangeScope;
20107
- target?: string;
20108
- title?: string;
20109
- changedAt?: string;
20110
- googleAnalyticsPropertyId?: string;
20111
- controlScope?: ChangeScope;
20112
- controlTarget?: string;
20113
- controlTitle?: string;
20114
- beforeDays?: number;
20115
- afterDays?: number;
20116
- refresh?: boolean;
20117
- }, dependencies?: MeasureChangeDependencies): Promise<ChangeMeasurement>;
20118
- //#endregion
20119
19308
  //#region packages/core/src/analyze/internal-links-types.d.ts
20120
19309
  type InternalLinkMatchKind = 'exact-query' | 'lexical-review';
20121
19310
  interface InternalLinkQueryMatch {
@@ -20346,50 +19535,6 @@ interface InternalLinksDependencies {
20346
19535
  }
20347
19536
  declare function internalLinksReport(input: InternalLinksInput, dependencies?: InternalLinksDependencies): Promise<InternalLinksReport>;
20348
19537
  //#endregion
20349
- //#region packages/core/src/analyze/monitoring/crawl-diff.d.ts
20350
- declare function compareCrawlPages(input: {
20351
- current: CrawlPageSnapshot[];
20352
- previous: CrawlPageSnapshot[];
20353
- }): CrawlDiffItem[];
20354
- declare function crawlDiff(input: {
20355
- startUrl: string;
20356
- site?: string;
20357
- limit?: number;
20358
- refresh?: boolean;
20359
- js?: boolean | 'auto';
20360
- }): Promise<CrawlDiffReport>;
20361
- //#endregion
20362
- //#region packages/core/src/analyze/monitoring/crawl-recommendations.d.ts
20363
- declare function recommendCrawlDiffItem(item: CrawlDiffItem): CrawlDiffRecommendation | undefined;
20364
- declare function attachCrawlRecommendations(items: CrawlDiffItem[]): CrawlDiffItem[];
20365
- declare function topCrawlRecommendations(items: CrawlDiffItem[]): Array<CrawlDiffRecommendation & {
20366
- url: string;
20367
- }>;
20368
- //#endregion
20369
- //#region packages/core/src/analyze/monitoring/crawl-store.d.ts
20370
- declare const CRAWL_RUN_RETENTION = 20;
20371
- declare function getPreviousRun(input: {
20372
- site: string;
20373
- startUrl: string;
20374
- currentRunId: string;
20375
- }): CrawlRun | undefined;
20376
- declare function getRunPages(runId: string): Map<string, CrawlPageSnapshot>;
20377
- declare function insertCrawlRun(run: CrawlRun, pages: CrawlPageSnapshot[], recommendations?: Array<CrawlDiffRecommendation & {
20378
- url: string;
20379
- }>): void;
20380
- declare function latestCrawlSummaries(site: string, limit?: number): Array<CrawlRun & {
20381
- statusErrors: number;
20382
- nonIndexable: number;
20383
- recommendations: number;
20384
- highPriorityRecommendations: number;
20385
- topRecommendation?: {
20386
- url: string;
20387
- title: string;
20388
- action: string;
20389
- severity: string;
20390
- };
20391
- }>;
20392
- //#endregion
20393
19538
  //#region packages/core/src/analyze/url-templates.d.ts
20394
19539
  type PseoTemplateCluster = {
20395
19540
  id: string;
@@ -20563,7 +19708,8 @@ type SearchAnalytics = typeof querySearchAnalytics;
20563
19708
  type FetchSitemap = typeof fetchSitemapUrls;
20564
19709
  type IndexCoverageReportInput = {
20565
19710
  site: string;
20566
- crawlReportId?: string;
19711
+ /** Start URL for the crawl. Defaults to the property's home page. */
19712
+ url?: string;
20567
19713
  sitemaps?: string[];
20568
19714
  days?: number;
20569
19715
  rowLimit?: number;
@@ -20597,189 +19743,13 @@ type IndexCoverageReport = IndexCoverageSignalsReport & {
20597
19743
  };
20598
19744
  };
20599
19745
  type IndexCoverageReportDependencies = {
20600
- loadCrawl: (id: string) => CrawlReport | undefined;
20601
- latestCrawl: (site: string) => CrawlReport | undefined;
19746
+ crawl: (input: CrawlConfigInput) => Promise<CrawlReport>;
20602
19747
  searchAnalytics: SearchAnalytics;
20603
19748
  fetchSitemap: FetchSitemap;
20604
19749
  now: () => Date;
20605
19750
  };
20606
19751
  declare function indexCoverageSignals(input: IndexCoverageReportInput, dependencies?: IndexCoverageReportDependencies): Promise<IndexCoverageReport>;
20607
19752
  //#endregion
20608
- //#region packages/core/src/analyze/monitoring/index-monitor.d.ts
20609
- type DueUrl = {
20610
- url: string;
20611
- lastInspectedAt?: number;
20612
- dueReason: 'never-attempted' | 'never-succeeded' | 'stale';
20613
- };
20614
- type DueIndexUrl = DueUrl & {
20615
- property: string;
20616
- };
20617
- type DueIndexSelection = {
20618
- selected: DueIndexUrl[];
20619
- summary: {
20620
- neverAttempted: number;
20621
- neverSucceeded: number;
20622
- retryWaiting: number;
20623
- fresh: number;
20624
- stale: number;
20625
- due: number;
20626
- unselectedDue: number;
20627
- };
20628
- };
20629
- declare function planDueIndexUrls(input: {
20630
- site: string;
20631
- urls: string[];
20632
- accountProperties: string[];
20633
- dailyLimit: number;
20634
- inspectLimit: number;
20635
- staleAfterDays?: number;
20636
- failureRetryHours?: number;
20637
- now?: Date;
20638
- }): DueIndexSelection;
20639
- declare function selectDueIndexUrls(input: Parameters<typeof planDueIndexUrls>[0]): DueIndexUrl[];
20640
- declare function indexMonitor(input: {
20641
- site: string;
20642
- sitemaps: string[];
20643
- properties?: string[];
20644
- dailyLimit?: number;
20645
- inspectLimit?: number;
20646
- maxUrls?: number;
20647
- languageCode?: string;
20648
- refresh?: boolean;
20649
- }): Promise<IndexMonitorReport>;
20650
- //#endregion
20651
- //#region packages/core/src/analyze/monitoring/index-plan.d.ts
20652
- type IndexPlanProperty = {
20653
- property: string;
20654
- urlCount: number;
20655
- dailyLimit: number;
20656
- cycleDays: number;
20657
- sampleUrls: string[];
20658
- };
20659
- type IndexPlanSuggestion = {
20660
- property: string;
20661
- urlCount: number;
20662
- currentProperty: string;
20663
- estimatedCycleDays: number;
20664
- sampleUrls: string[];
20665
- reason: string;
20666
- };
20667
- type IndexCoveragePlan = {
20668
- site: string;
20669
- generatedAt: string;
20670
- summary: {
20671
- sitemapUrls: number;
20672
- urlCount: number;
20673
- properties: number;
20674
- dailyCapacity: number;
20675
- estimatedCycleDays: number;
20676
- targetCycleDays: number;
20677
- suggestedProperties: number;
20678
- };
20679
- properties: IndexPlanProperty[];
20680
- suggestions: IndexPlanSuggestion[];
20681
- warnings: string[];
20682
- };
20683
- type IndexPropertyUrlAllocation = {
20684
- property: string;
20685
- urls: string[];
20686
- };
20687
- type IndexCoveragePlanInput = {
20688
- site: string;
20689
- urls: string[];
20690
- sitemaps?: string[];
20691
- accountProperties: string[];
20692
- dailyLimit?: number;
20693
- targetCycleDays?: number;
20694
- suggestionLimit?: number;
20695
- warnings?: string[];
20696
- };
20697
- declare function propertyMatchesUrl(property: string, url: string): boolean;
20698
- declare function allocateIndexUrlsToProperties(input: {
20699
- site: string;
20700
- urls: string[];
20701
- accountProperties: string[];
20702
- }): IndexPropertyUrlAllocation[];
20703
- declare function indexCoveragePlan(input: {
20704
- site: string;
20705
- sitemaps: string[];
20706
- properties?: string[];
20707
- dailyLimit?: number;
20708
- targetCycleDays?: number;
20709
- maxUrls?: number;
20710
- suggestionLimit?: number;
20711
- refresh?: boolean;
20712
- }): Promise<IndexCoveragePlan>;
20713
- declare function planIndexCoverageFromUrls(input: IndexCoveragePlanInput): IndexCoveragePlan;
20714
- //#endregion
20715
- //#region packages/core/src/storage/sqlite.d.ts
20716
- type TransactionFunction = (...params: never[]) => unknown;
20717
- declare class Statement {
20718
- private readonly statement;
20719
- constructor(statement: Libsql.Statement);
20720
- run(...params: unknown[]): SqliteDatabase.RunResult;
20721
- get(...params: unknown[]): unknown;
20722
- all(...params: unknown[]): unknown[];
20723
- }
20724
- declare class SqliteDatabase {
20725
- private readonly database;
20726
- constructor(filename: string | Buffer);
20727
- prepare(source: string): Statement;
20728
- transaction<F extends TransactionFunction>(fn: F): Libsql.Transaction<F>;
20729
- exec(source: string): this;
20730
- pragma(source: string): unknown;
20731
- close(): this;
20732
- }
20733
- declare namespace SqliteDatabase {
20734
- type Database = SqliteDatabase;
20735
- type RunResult = {
20736
- changes: number;
20737
- lastInsertRowid: number | bigint;
20738
- };
20739
- }
20740
- //#endregion
20741
- //#region packages/core/src/storage/database.d.ts
20742
- declare function ensurePrivateDatabaseFiles(path: string): void;
20743
- declare function getDb(): SqliteDatabase.Database;
20744
- declare function noteCacheWrite(sizeBytes?: number, database?: SqliteDatabase.Database): void;
20745
- declare function checkDatabaseReadiness(): {
20746
- dbPath: string;
20747
- };
20748
- declare function hashKey(parts: unknown[]): string;
20749
- declare function getCacheStats(): CacheStats;
20750
- declare function clearCache(provider?: 'gsc' | 'google-analytics' | 'dataforseo' | 'ahrefs' | 'clicky' | 'http', olderThanMs?: number): number;
20751
- //#endregion
20752
- //#region packages/core/src/analyze/monitoring/index-watch.d.ts
20753
- declare const INDEX_WATCH_ATTEMPT_RETENTION = 20;
20754
- type InspectUrl = (input: UrlInspectionRequest) => Promise<UrlInspectionResult>;
20755
- type IndexWatchStore = {
20756
- latest(rootSite: string, url: string): IndexWatchPrevious | undefined;
20757
- insert(item: IndexWatchItem): void;
20758
- };
20759
- type IndexWatchDependencies = {
20760
- inspectUrl: InspectUrl;
20761
- now: () => Date;
20762
- store: IndexWatchStore;
20763
- };
20764
- declare function pruneIndexWatchSnapshots(rootSite: string, url: string, database?: ReturnType<typeof getDb>): number;
20765
- declare function indexWatch(input: {
20766
- site: string;
20767
- rootSite?: string;
20768
- urls: string[];
20769
- languageCode?: string;
20770
- dailyLimit?: number;
20771
- continueOnPropertyError?: boolean;
20772
- }, dependencies?: IndexWatchDependencies): Promise<IndexWatchReport>;
20773
- declare function latestIndexWatchSummary(site: string): {
20774
- inspectedUrls: number;
20775
- earliestInspectedAt?: string;
20776
- latestInspectedAt?: string;
20777
- currentIssues: number;
20778
- failed: number;
20779
- nonPass: number;
20780
- blocked: number;
20781
- };
20782
- //#endregion
20783
19753
  //#region packages/core/src/analyze/monitoring/redirect-trace.d.ts
20784
19754
  type RedirectTraceStep = {
20785
19755
  url: string;
@@ -20867,63 +19837,6 @@ declare function linkRecover(input: {
20867
19837
  js?: boolean | 'auto';
20868
19838
  }): Promise<LinkRecoverReport>;
20869
19839
  //#endregion
20870
- //#region packages/core/src/analyze/monitoring/link-recover-store.d.ts
20871
- declare const LINK_RECOVER_RUN_RETENTION = 20;
20872
- type LinkRecoverSummary = {
20873
- id: string;
20874
- site: string;
20875
- createdAt: string;
20876
- range: {
20877
- startDate: string;
20878
- endDate: string;
20879
- days: number;
20880
- };
20881
- checked: number;
20882
- recoverable: number;
20883
- high: number;
20884
- medium: number;
20885
- low: number;
20886
- clicksAtRisk: number;
20887
- impressionsAtRisk: number;
20888
- topIssue?: string;
20889
- topUrl?: string;
20890
- topAction?: string;
20891
- repeatedUrls: number;
20892
- repeatedTopUrl?: string;
20893
- };
20894
- declare function insertLinkRecoverRun(report: LinkRecoverReport): string;
20895
- declare function latestLinkRecoverSummary(site: string): LinkRecoverSummary | undefined;
20896
- declare function getRepeatedLinkRecoverUrls(site: string, runLimit?: number): Array<{
20897
- url: string;
20898
- seenCount: number;
20899
- }>;
20900
- //#endregion
20901
- //#region packages/core/src/analyze/monitoring/status.d.ts
20902
- type CheckStatus = 'clear' | 'attention' | 'stale' | 'not-run';
20903
- type MonitoringStatusCheck = {
20904
- name: 'crawl' | 'index' | 'link-recovery';
20905
- status: CheckStatus;
20906
- lastRunAt?: string;
20907
- summary: string;
20908
- action?: string;
20909
- };
20910
- type MonitoringStatusReport = {
20911
- site: string;
20912
- generatedAt: string;
20913
- health: CheckStatus;
20914
- summary: {
20915
- checks: number;
20916
- attention: number;
20917
- stale: number;
20918
- notRun: number;
20919
- };
20920
- checks: MonitoringStatusCheck[];
20921
- };
20922
- declare function monitoringStatus(input: {
20923
- site: string;
20924
- staleAfterDays?: number;
20925
- }): MonitoringStatusReport;
20926
- //#endregion
20927
19840
  //#region packages/core/src/analyze/performance-types.d.ts
20928
19841
  type PerformanceRating = 'good' | 'needs-work' | 'poor' | 'unknown';
20929
19842
  type PerformanceMetric = {
@@ -21152,45 +20065,11 @@ declare function buildQueryClusterReportFromRows(input: {
21152
20065
  limit?: number;
21153
20066
  }): QueryClusterReport;
21154
20067
  //#endregion
21155
- //#region packages/core/src/errors.d.ts
21156
- type SeoErrorCode = 'ACCESS_DENIED' | 'AUTH_CONFIG_REQUIRED' | 'AUTH_EXPIRED' | 'AUTH_REQUIRED' | 'INSUFFICIENT_DATA' | 'INTERNAL_ERROR' | 'INVALID_INPUT' | 'OPTIONAL_PROVIDER_UNAVAILABLE' | 'PROPERTY_NOT_FOUND' | 'PROVIDER_UNAVAILABLE' | 'RATE_LIMITED';
21157
- declare class SeoError extends Error {
21158
- readonly code: SeoErrorCode;
21159
- readonly exitCode: number;
21160
- readonly retryable: boolean;
21161
- constructor(code: SeoErrorCode, message: string);
21162
- }
21163
- declare function toSeoError(error: unknown): SeoError;
21164
- declare function isSkippableReportError(error: unknown): boolean;
21165
- declare function seoErrorEnvelope(error: unknown): {
21166
- ok: false;
21167
- error: {
21168
- code: SeoErrorCode;
21169
- message: string;
21170
- retryable: boolean;
21171
- };
21172
- };
21173
- //#endregion
21174
20068
  //#region packages/core/src/analyze/reports/types.d.ts
21175
20069
  type NarrativeSection = {
21176
20070
  title: string;
21177
20071
  bullets: string[];
21178
20072
  };
21179
- type ChangeMeasurementAttempt = {
21180
- status: 'measured';
21181
- dataStatus: ChangeMeasurement['dataStatus'];
21182
- change: SeoChange;
21183
- measurement: ChangeMeasurement;
21184
- } | {
21185
- status: 'failed';
21186
- dataStatus: 'unavailable';
21187
- change: SeoChange;
21188
- error: {
21189
- code: SeoErrorCode;
21190
- message: string;
21191
- retryable: boolean;
21192
- };
21193
- };
21194
20073
  type ReportNarrative = {
21195
20074
  site: string;
21196
20075
  generatedAt: string;
@@ -21209,13 +20088,6 @@ type ReportNarrative = {
21209
20088
  action: string;
21210
20089
  }>;
21211
20090
  diagnosis: DiagnosePropertyReport;
21212
- changeMeasurements: ChangeMeasurement[];
21213
- changeMeasurementAttempts: ChangeMeasurementAttempt[];
21214
- monitoring: {
21215
- crawlRuns: ReturnType<typeof latestCrawlSummaries>;
21216
- indexWatch: ReturnType<typeof latestIndexWatchSummary>;
21217
- linkRecover: ReturnType<typeof latestLinkRecoverSummary>;
21218
- };
21219
20091
  };
21220
20092
  //#endregion
21221
20093
  //#region packages/core/src/analyze/reports/narrative.d.ts
@@ -21226,7 +20098,6 @@ declare function reportNarrative(input: {
21226
20098
  startDate?: string;
21227
20099
  endDate?: string;
21228
20100
  limit?: number;
21229
- changeLimit?: number;
21230
20101
  brandTerms?: string[];
21231
20102
  includeBrand?: boolean;
21232
20103
  verifyContent?: boolean;
@@ -21480,32 +20351,6 @@ declare function refreshPrioritiesWorkflow(input: {
21480
20351
  diagnosis: Awaited<ReturnType<typeof diagnoseProperty>>;
21481
20352
  }>>;
21482
20353
  //#endregion
21483
- //#region packages/core/src/analyze/workflows/technical-watch.d.ts
21484
- type TechnicalWatchIndexOutput = Awaited<ReturnType<typeof indexWatch>> | Awaited<ReturnType<typeof indexMonitor>>;
21485
- declare function technicalWatchWorkflow(input: {
21486
- site: string;
21487
- startUrl?: string;
21488
- urls?: string[];
21489
- sitemaps?: string[];
21490
- properties?: string[];
21491
- limit?: number;
21492
- refresh?: boolean;
21493
- js?: boolean | 'auto';
21494
- languageCode?: string;
21495
- dailyLimit?: number;
21496
- inspectLimit?: number;
21497
- maxUrls?: number;
21498
- recoverLinks?: boolean;
21499
- recoverDays?: number;
21500
- recoverLimit?: number;
21501
- recoverMinClicks?: number;
21502
- recoverMinImpressions?: number;
21503
- }): Promise<WorkflowReport<{
21504
- crawl?: Awaited<ReturnType<typeof crawlDiff>>;
21505
- index?: TechnicalWatchIndexOutput;
21506
- recovery?: Awaited<ReturnType<typeof linkRecover>>;
21507
- }>>;
21508
- //#endregion
21509
20354
  //#region packages/core/src/analyze/workflows/segments.d.ts
21510
20355
  type WorkflowSegmentCoverage = {
21511
20356
  evidenceScope: 'matched-retained-segments';
@@ -21575,7 +20420,6 @@ declare function updatePostmortemWorkflow(input: {
21575
20420
  brandTerms?: string[];
21576
20421
  includeBrand?: boolean;
21577
20422
  knownConfounders?: string[];
21578
- includeChangeLog?: boolean;
21579
20423
  refresh?: boolean;
21580
20424
  }, dependencies?: {
21581
20425
  updateCorrelation?: typeof updateCorrelation;
@@ -21674,36 +20518,28 @@ declare function readClickySiteKey(siteIdValue: string, input?: {
21674
20518
  declare function writeClickySiteKey(siteIdValue: string, siteKeyValue: string): Promise<Exclude<ProviderSecretSource, 'environment'>>;
21675
20519
  declare function deleteClickySiteKey(siteIdValue: string): Promise<void>;
21676
20520
  //#endregion
21677
- //#region packages/core/src/clients.d.ts
21678
- type ClientProfileInput = {
21679
- id?: string;
21680
- name?: string;
21681
- siteUrl: string;
21682
- startUrl?: string;
21683
- watchUrls?: string[];
21684
- brandTerms?: string[];
21685
- analytics?: ClientProfile['analytics'];
21686
- googleAccounts?: ClientProfile['googleAccounts'];
21687
- technicalWeekday?: number;
21688
- isDefault?: boolean;
21689
- };
21690
- type ClientProfileUpdate = Omit<ClientProfileInput, 'id' | 'siteUrl'> & {
21691
- siteUrl?: string;
21692
- };
21693
- declare function googleAnalyticsPropertyId(client: Pick<ClientProfile, 'analytics'> | undefined): string | undefined;
21694
- declare function analyticsConnection(client: Pick<ClientProfile, 'analytics' | 'googleAccounts'> | undefined): AnalyticsConnection | undefined;
21695
- declare function listClients(): ClientProfile[];
21696
- declare function getClient(idOrName?: string): ClientProfile | undefined;
21697
- declare function saveClient(input: ClientProfileInput): ClientProfile;
21698
- declare function updateClient(idOrName: string, update: ClientProfileUpdate): ClientProfile;
21699
- declare function setClientAnalyticsConnection(idOrName: string, connection: AnalyticsConnection): ClientProfile;
21700
- declare function removeClientAnalyticsConnection(idOrName: string, provider: Exclude<AnalyticsConnection['provider'], 'extension'> | `extension:${string}`): ClientProfile;
21701
- declare function deleteClient(idOrName: string): boolean;
21702
- declare function setDefaultClient(idOrName: string): ClientProfile;
21703
- //#endregion
21704
20521
  //#region packages/core/src/bing/api.d.ts
21705
20522
  type BingCall = (method: string, params?: Record<string, string>) => Promise<unknown>;
21706
20523
  //#endregion
20524
+ //#region packages/core/src/errors.d.ts
20525
+ type SeoErrorCode = 'ACCESS_DENIED' | 'AUTH_CONFIG_REQUIRED' | 'AUTH_EXPIRED' | 'AUTH_REQUIRED' | 'INSUFFICIENT_DATA' | 'INTERNAL_ERROR' | 'INVALID_INPUT' | 'OPTIONAL_PROVIDER_UNAVAILABLE' | 'PROPERTY_NOT_FOUND' | 'PROVIDER_UNAVAILABLE' | 'RATE_LIMITED';
20526
+ declare class SeoError extends Error {
20527
+ readonly code: SeoErrorCode;
20528
+ readonly exitCode: number;
20529
+ readonly retryable: boolean;
20530
+ constructor(code: SeoErrorCode, message: string);
20531
+ }
20532
+ declare function toSeoError(error: unknown): SeoError;
20533
+ declare function isSkippableReportError(error: unknown): boolean;
20534
+ declare function seoErrorEnvelope(error: unknown): {
20535
+ ok: false;
20536
+ error: {
20537
+ code: SeoErrorCode;
20538
+ message: string;
20539
+ retryable: boolean;
20540
+ };
20541
+ };
20542
+ //#endregion
21707
20543
  //#region packages/core/src/google/api.d.ts
21708
20544
  type GoogleFetch = (url: string, init?: RequestInit) => Promise<Response>;
21709
20545
  type GoogleCallOptions = {
@@ -21799,14 +20635,6 @@ type CommandDeps = {
21799
20635
  now?: () => Date;
21800
20636
  };
21801
20637
  //#endregion
21802
- //#region packages/core/src/gsc/auth/account-context.d.ts
21803
- type GoogleAccountContext = {
21804
- searchConsole?: string;
21805
- googleAnalytics?: string;
21806
- };
21807
- declare function selectGoogleAccounts(accounts: GoogleAccountContext | undefined): void;
21808
- declare function selectedGoogleAccount(source: keyof GoogleAccountContext): string | undefined;
21809
- //#endregion
21810
20638
  //#region packages/core/src/storage/config.d.ts
21811
20639
  type TokenStorageMode = 'keychain' | 'file';
21812
20640
  type TokenStorageStatus = {
@@ -21942,6 +20770,43 @@ declare function resolveLocalSite(site: string, options?: {
21942
20770
  declare function localError(error: unknown): unknown;
21943
20771
  declare function localGoogleFetch(account?: string): Promise<GoogleFetch>;
21944
20772
  //#endregion
20773
+ //#region packages/core/src/storage/sqlite.d.ts
20774
+ type TransactionFunction = (...params: never[]) => unknown;
20775
+ declare class Statement {
20776
+ private readonly statement;
20777
+ constructor(statement: Libsql.Statement);
20778
+ run(...params: unknown[]): SqliteDatabase.RunResult;
20779
+ get(...params: unknown[]): unknown;
20780
+ all(...params: unknown[]): unknown[];
20781
+ }
20782
+ declare class SqliteDatabase {
20783
+ private readonly database;
20784
+ constructor(filename: string | Buffer);
20785
+ prepare(source: string): Statement;
20786
+ transaction<F extends TransactionFunction>(fn: F): Libsql.Transaction<F>;
20787
+ exec(source: string): this;
20788
+ pragma(source: string): unknown;
20789
+ close(): this;
20790
+ }
20791
+ declare namespace SqliteDatabase {
20792
+ type Database = SqliteDatabase;
20793
+ type RunResult = {
20794
+ changes: number;
20795
+ lastInsertRowid: number | bigint;
20796
+ };
20797
+ }
20798
+ //#endregion
20799
+ //#region packages/core/src/storage/database.d.ts
20800
+ declare function ensurePrivateDatabaseFiles(path: string): void;
20801
+ declare function getDb(): SqliteDatabase.Database;
20802
+ declare function noteCacheWrite(sizeBytes?: number, database?: SqliteDatabase.Database): void;
20803
+ declare function checkDatabaseReadiness(): {
20804
+ dbPath: string;
20805
+ };
20806
+ declare function hashKey(parts: unknown[]): string;
20807
+ declare function getCacheStats(): CacheStats;
20808
+ declare function clearCache(provider?: 'gsc' | 'google-analytics' | 'dataforseo' | 'ahrefs' | 'clicky' | 'http', olderThanMs?: number): number;
20809
+ //#endregion
21945
20810
  //#region packages/core/src/doctor.d.ts
21946
20811
  type DoctorCheck = {
21947
20812
  id: string;
@@ -21976,21 +20841,6 @@ declare function refreshPrioritiesCsvFiles(report: WorkflowReport<{
21976
20841
  diagnosis: DiagnosePropertyReport;
21977
20842
  }>): CsvFile[];
21978
20843
  //#endregion
21979
- //#region packages/core/src/export/report-html.d.ts
21980
- type ReportHtmlView = 'client' | 'analyst';
21981
- type ReportHtmlSection = {
21982
- title: string;
21983
- summary?: string;
21984
- items: string[];
21985
- };
21986
- type ReportHtmlInput = {
21987
- report: ReportNarrative;
21988
- title?: string;
21989
- view?: ReportHtmlView;
21990
- additionalSections?: ReportHtmlSection[];
21991
- };
21992
- declare function renderReportHtml(input: ReportHtmlInput): string;
21993
- //#endregion
21994
20844
  //#region packages/core/src/export/update-postmortem.d.ts
21995
20845
  type PostmortemCsvReport = WorkflowReport<{
21996
20846
  update: {
@@ -22687,5 +21537,5 @@ declare function isoDate(daysAgo?: number): string;
22687
21537
  //#region packages/core/src/version.d.ts
22688
21538
  declare const SEO_VERSION: string;
22689
21539
  //#endregion
22690
- export { AHREFS_API_KEY_ENV, AHREFS_API_KEY_SECRET, AI_REFERRAL_SOURCES, AI_REFERRAL_SOURCES_VERSION, ANALYTICS_PROVIDER_IDS, AUDIT_PAGE_RULE_IDS, AUTOMATIC_BASELINE_SITE_RETENTION, AUTOMATIC_BASELINE_TOTAL_RETENTION, AccessBlockEvidence, AffectedUrl, AffectedUrlFilters, AffectedUrlResult, AffectedUrlSelection, AgentFinding, AgentFindingStatus, AgentFindings, AgentFixFinding, AgentReportInventory, AgentReportOptions, AgentReviewFinding, AhrefsClient, AhrefsClientOptions, AhrefsLimitsAndUsage, type AiReferralDataSource, type AiReferralMetrics, type AiReferralQueryEvidence, type AiReferralReport, type AiReferralSourceDefinition, AnalyticsConnection, AnalyticsMetricDelta, AnalyticsProvider, AnalyticsProviderDetails, AnalyticsProviderRuntimeOptions, AnalyticsTestMetrics, type AnalyzeCannibalImportRowsInput, type AnalyzeCannibalRowsInput, type AnalyzeDecayInput, type AnalyzeQuickWinsInput, type AnalyzeSecondPageInput, type AnalyzeStrikingDistanceInput, AppConfig, AuditPageDependencies, AuditPageReport, AuthorizedGoogleClient, BING_API_KEY_ENV, BING_API_KEY_SECRET, BROWSER_USER_AGENT, BoundedSitemapInventory, BrandTermCandidate, CANNIBAL_MAXIMUM_DOMINANT_SHARE, CANNIBAL_MINIMUM_PAGE_SHARE, CLICKY_SITEKEY_ENV, CLICKY_SITE_KEYS_SECRET, CRAWL_REPORT_STORAGE_VERSION, CRAWL_RUN_RETENTION, CRAWL_SKIP_REASONS, CTR_DEFAULT_LIMIT, CTR_MAX_LIMIT, CTR_MAX_MIN_IMPRESSIONS, CacheStats, type CannibalAnalysis, CannibalDependencies, type CannibalImportAnalysis, CannibalImportDependencies, type CannibalImportItem, type CannibalImportPage, type CannibalImportReport, CannibalImportReportInput, type CannibalImportSelection, type CannibalItem, type CannibalPage, type CannibalReport, CannibalReportInput, CannibalSearchConsoleInput, type CannibalSelection, type CannibalSuppression, type CannibalSuppressionReason, ChangeMeasurement, ChangeMeasurementAttempt, ChangeRow, ChangeScope, ClientProfile, ClientProfileInput, ClientProfileUpdate, ContentExtractionDiagnostics, ContentExtractor, ContentGroup, ContentGroupDimension, ContentGroupMatchType, ContentGroupRow, ContentOptimizationIntent, ContentOptimizationReport, CoverageField, CrawlAccessSummary, CrawlAiBotAccess, CrawlAiResourceSignal, CrawlAiSignals, CrawlAnalyticsDataSource, CrawlConfig, CrawlConfigInput, CrawlDataSourceStatus, CrawlDataSourceWindow, CrawlDiffItem, CrawlDiffRecommendation, CrawlDiffReport, CrawlExternalLinkVerification, CrawlFetchRateConfig, CrawlImplementationQueueInput, CrawlImplementationQueueItem, CrawlImplementationQueueOutput, CrawlIssue, CrawlIssueGroup, CrawlLinkGraph, CrawlMode, CrawlOneResult, CrawlOutputFormat, CrawlPageRow, CrawlPageSnapshot, CrawlReport, CrawlReportDataSources, CrawlReportMeta, CrawlReportSaveOptions, CrawlReportStorageEnvelope, CrawlReportStoreAdapter, CrawlReportSummary, CrawlRequestObservation, CrawlResponseObservation, CrawlRun, CrawlRunRow, CrawlRunStats, CrawlSearchDataSource, type CrawlSiteChecks, type CrawlSiteDependencies, CrawlSitemapDiscovery, CrawlSkipImpact, CrawlSkipReason, CrawlSkipReasonCount, CrawlSkippedUrlsByImpact, CrawlSnapshotDiffReport, CrawlSnapshotIssueChange, CrawlSnapshotPageChange, CrawlStatusEvent, CrawlStatusHandler, type CrawlStatusPhase, CrawlStrategy, CrawlerIdentity, CredentialsProvider, CreditUsage, CsvFile, CsvRow, CsvValue, type CtrUnderperformer, CtrUnderperformerDependencies, type CtrUnderperformerSelection, CtrUnderperformersInput, CtrUnderperformersReport, DATAFORSEO_CREDENTIAL_SECRET, DATAFORSEO_LOGIN_ENV, DATAFORSEO_PASSWORD_ENV, DEFAULT_SEARCH_CONSOLE_EXPORT_ROW_LIMIT, DEFAULT_UNREACHED_PAGE_LIMIT, type DataForSeoAccountSnapshot, DataForSeoClient, type DataForSeoClientOptions, DataForSeoCredentials, type DecayAnalysis, type DecayComparison, type DecayDiagnosis, type DecayGroup, type DecayItem, type DecayMetrics, type DecayReport, type DecaySelection, type DecaySignal, DecayingDependencies, DecayingReportInput, DiagnosePropertyDependencies, DiagnosePropertyReport, DiagnosisDataStatus, DiagnosisPriority, DoctorCheck, DueIndexSelection, DueIndexUrl, EffectiveSnippetControl, ExternalLinkCheck, ExternalLinkCheckAttempt, ExternalLinkCheckState, ExternalServiceId, ExtractedLinkLocation, ExtractedPage, FetchPageDependencies, type FetchPageOptions, type FetchRateControls, GSC_FINAL_DATA_LAG_DAYS, GSC_TIME_ZONE, type Ga4AccountSummary, Ga4DataStream, type Ga4PropertySummary, Ga4ReportRequest, Ga4RunReportResult, Ga4WebStreamCandidate, Ga4WebStreamMatch, type GoogleAccessTokenClient, GoogleAccountContext, GoogleApiError, GoogleCallOptions, GoogleFetch, GoogleRichResultAssessment, GoogleRichResultAssessmentSelection, GoogleRichResultAssessmentStatus, GscRow, HttpProfile, INCIDENTS_URL, INDEX_WATCH_ATTEMPT_RETENTION, INTERNAL_LINK_LEXICAL_TARGET_LIMIT, INTERNAL_LINK_MATCH_EVIDENCE_LIMIT, IndexCoverageBoundedSection, IndexCoverageCandidateItem, IndexCoverageControlReason, IndexCoverageControlledItem, IndexCoverageCrawlInput, IndexCoverageInput, IndexCoverageInventoryItem, IndexCoveragePlan, IndexCoveragePlanInput, IndexCoverageReport, IndexCoverageReportDependencies, IndexCoverageReportInput, IndexCoverageSearchConsoleInput, IndexCoverageSearchVisibilityItem, IndexCoverageSignalsReport, IndexCoverageSitemapInput, IndexCoverageSourceCompleteness, IndexCoverageSourceEvidence, IndexCoverageSourceMembership, IndexCoverageTemplateReview, IndexMonitorPropertyRun, IndexMonitorReport, IndexPlanProperty, IndexPlanSuggestion, IndexPropertyUrlAllocation, IndexWatchChange, IndexWatchChangeKind, IndexWatchDependencies, IndexWatchIssueCode, IndexWatchItem, IndexWatchPrevious, IndexWatchReport, IndexWatchRow, IndexWatchStore, InstalledProviderPackage, InstalledProviderPackages, type InternalLinkCandidate, type InternalLinkMatchKind, type InternalLinkOpportunity, type InternalLinkQueryMatch, InternalLinksAnalysis, InternalLinksAnalysisInput, InternalLinksDependencies, InternalLinksInput, type InternalLinksReport, type InternalLinksSelection, type InternalLinksWarning, type JavaScriptRenderingInput, type JavaScriptRenderingMode, JsonFileStorageAdapter, KeywordMetric, KeywordMonthlySearch, LINK_RECOVER_RUN_RETENTION, LOCAL_BING_CONNECT, LOCAL_SIGN_IN, LOG_MAX_AGE_MS, LOG_MAX_FILE_BYTES, LOG_MAX_TOTAL_BYTES, LatestCrawlSummaryRow, LighthouseFailureCode, LinkRecoverItem, LinkRecoverReport, LinkRecoverSummary, LoadedProviderExtensions, LocalCredentialsProvider, LogPruneResult, MANAGED_PROVIDER_SECRET_NAMES, MAX_CRAWL_CONCURRENCY, MAX_CRAWL_DEPTH, MAX_CRAWL_PAGES, MAX_CRAWL_TIMEOUT_MS, MAX_SEARCH_CONSOLE_EXPORT_FILES, MAX_SEARCH_CONSOLE_EXPORT_ROW_LIMIT, MeasureChangeDependencies, MetricDelta, MonitoringStatusCheck, MonitoringStatusReport, NarrativeSection, type OAuthClientConfig, OpportunityBenchmarkRow, PROVIDER_SECRET_NAMES, PageExtractor, PageFetchDiagnostics, PageFetchResult, PageFetcher, type PageOpportunityAnalysis, type PageOpportunityAnalysisInput, type PageOpportunityBenchmark, PageOpportunityInput, type PageOpportunityItem, PageOpportunityReport, type PageOpportunitySelection, type PageOpportunityType, type PageOpportunityVerification, type PageRenderer, PageSearchMetrics, PageTopQuery, PartialDiagnosisReason, PerformanceAuditReport, PerformanceFieldData, PerformanceFieldMetric, PerformanceMetric, PerformanceRating, PositionBenchmark, Presentation, PresentationChart, PresentationScalar, PresentationTable, PresentationTableColumn, PriorityQueueItem, ProgressReporter, ProviderActionResult, ProviderCapability, ProviderError, ProviderErrorCode, ProviderExtensionLoadFailure, ProviderExtensionLoaderOptions, ProviderExtensionRegistry, ProviderFetch, ProviderId, ProviderImportEvidence, ProviderInstallerOptions, ProviderPackageCommand, ProviderPackageCommandResult, ProviderPackageManifest, ProviderPackageRelease, ProviderRequestInput, ProviderRuntimeOptions, ProviderSecret, ProviderSecretSource, ProviderValue, ProviderWarning, QueryCluster, type QueryClusterPage, QueryClusterReport, type QueryClusterRow, QueryClusterSourceRow, QueryContentClassification, QueryContentCoverage, QueryContentSignal, QueryContentVerifier, QueryFieldCoverage, type QuickWinAnalysis, type QuickWinGroup, type QuickWinItem, type QuickWinSelection, type QuickWinTemplateRecommendation, QuickWinsDependencies, QuickWinsInput, QuickWinsReport, REPORT_BASELINE_MAX_AGE_MS, REPORT_BASELINE_MAX_DEPTH, REPORT_BASELINE_MAX_PAGES, RESEARCH_IMPORT_COLUMN_KEYS, Recommendation, RedirectTraceIssue, RedirectTraceReport, RedirectTraceStep, RegisteredProviderExtension, RenderingDocumentDifference, RenderingDocumentField, RenderingDocumentSnapshot, ReportHtmlInput, ReportHtmlSection, ReportHtmlView, ReportNarrative, ResearchImportColumn, ResearchImportColumns, ResolveTechnicalBaselineInput, ResponseSizeLimitError, RobotsDirective, RuleCategory, RuleId, RuleInfo, RuleRecommendation, RuleSeverity, SEO_CRAWLER_IDENTITY, SEO_CRAWLER_TOKEN, SEO_CRAWLER_USER_AGENT, SEO_PROVIDER_API_VERSION, SEO_VERSION, SERP_TITLE_REFERENCE_WIDTH_PX, SERP_TITLE_WIDTH_PROFILE, SearchAnalyticsOptions, SearchAnalyticsQuery, SearchAnalyticsRequest, SearchAnalyticsResult, SearchConsoleExportEvidence, SearchConsoleExportFileImport, SearchConsoleExportPageRow, SearchConsoleExportQueryRow, SearchConsoleExportReconciliation, SearchConsoleSite, SearchDateWindow, SearchPageBatch, type SearchStatusIncident, type SearchUpdate, type SecondPageAnalysis, SecondPageDependencies, SecondPageInput, type SecondPageItem, type SecondPageQuery, type SecondPageRecommendation, type SecondPageReport, type SecondPageSelection, type SegmentDimension, SegmentImpactDependencies, SegmentImpactInput, type SegmentImpactItem, type SegmentImpactReport, type SegmentImpactSelection, type SegmentPeriodEvidence, type SegmentRange, SeoAnalyticsConnection, SeoAnalyticsLandingPageResult, SeoChange, SeoCliPathOptions, SeoCliPaths, SeoError, SeoErrorCode, SeoLandingPageVisitRow, SeoLandingPageVisitsCapability, SeoLandingPageVisitsResult, SeoProviderActionAdapter, SeoProviderActivate, SeoProviderApiVersion, SeoProviderCapabilityAdapter, SeoProviderCapabilityId, SeoProviderConnection, SeoProviderConnectionAdapter, SeoProviderConnectionField, SeoProviderHost, SeoProviderJson, SeoProviderJsonSchema, SeoProviderKind, SeoProviderRegistration, SeoProviderRequest, SeoProviderRuntime, SeoSearchMarket, SeoSerpLocalPackResult, SeoSerpOrganicResult, SeoSerpSnapshotCapability, SeoSerpSnapshotResult, ServiceAccountAccessTokenClient, ServiceAccountConfig, ServiceAccountStatus, SessionLedger, SitemapDocument, SitemapFetchResult, SitemapInvalidLoc, SitemapLastmodObservation, SkippedDiagnosisSection, SnippetControlEvidence, StorageAdapter, StoredAhrefsApiKey, StoredClickySiteKey, StoredDataForSeoCredentials, StoredTokenStore, StoredTokens, type StrikingDistanceAnalysis, type StrikingDistanceAnalysisGroup, type StrikingDistanceAnalysisItem, StrikingDistanceDependencies, StrikingDistanceInput, StrikingDistanceItem, StrikingDistanceReport, TELEMETRY_AGENTS, TELEMETRY_ENDPOINT, TELEMETRY_ERROR_CATEGORIES, TELEMETRY_EVENTS, TELEMETRY_FAILURE_CONTEXTS, TELEMETRY_FAILURE_REASONS, TELEMETRY_NOTICE, TELEMETRY_OPERATIONS, TELEMETRY_REPORTS, TELEMETRY_SCHEMA_VERSION, TELEMETRY_TIMEOUT_MS, TechnicalBaseline, TechnicalBaselineDependencies, TechnicalBaselineStatus, TelemetryAgent, TelemetryDisableReason, type TelemetryErrorCategory, TelemetryEvent, type TelemetryFailureClassification, type TelemetryFailureContext, type TelemetryFailureReason, type TelemetryOperation, TelemetryOptions, TelemetryPayload, TelemetryReport, TelemetryState, TelemetryStatus, TemplateAwareReport, TestMetrics, TitleWidthEstimate, TokenStorageMode, TokenStorageStatus, TopFix, TopFixFilters, TrafficAnomaly, TrafficAnomalyCoverage, TrafficAnomalyDependencies, TrafficAnomalyInput, TrafficAnomalyReport, TrafficAnomalySelection, type UnmatchedSegment, UpdateConfounder, UpdateCorrelationReport, UrlInspectionRequest, UrlInspectionResult, VerifyQueryContentInput, WorkflowAction, WorkflowReport, WorkflowStep, affectedUrls, agentActionsView, aiReferralSourceForValue, aiReferralsReport, allocateIndexUrlsToProperties, analyticsConnection, analyticsConnectionLabel, analyticsConnectionProviderId, analyticsConnectionSchema, analyticsConnectionsSchema, analyticsProviderDetails, analyticsProviderSchema, analyzeAiReferralRows, analyzeCannibalImportRows, analyzeCannibalRows, analyzeCtrUnderperformersFromRows, analyzeDecay, analyzeIndexCoverageSignals, analyzeInternalLinksFromRows, analyzePageOpportunitiesFromRows, analyzeQueryClustersFromRows, analyzeQuickWinsFromRows, analyzeSecondPageRows, analyzeSegmentRows, analyzeStrikingDistanceRows, analyzeTrafficAnomalyRows, assertCrawlConfigLimits, assertUrlMatchesGscProperty, attachCrawlRecommendations, auditCrawlPages, auditCrawlRequests, auditPage, authStatus, bearerFetch, boundedSitemapInventory, buildAgentFindings, buildQueryClusterReportFromRows, buildTelemetryPayload, cannibalImportReport, cannibalReport, cannibalReportWith, changesInWindow, checkDatabaseReadiness, classifyTelemetryFailure, clearCache, clientProfileSchema, clusterQueryRows, combineRobotsValues, compareCrawlPages, compareCrawlReports, compareSegmentRows, configSchema, contentCoverageRecommendation, contentCoverageType, contentOptimizationFromPageOpportunities, contentOptimizationReport, countLabel, crawlConfigHash, crawlConfigSchema, crawlDefinitionId, crawlDiff, crawlFixToQueueItem, crawlImplementationQueueWorkflow, crawlIssueGroupSchema, crawlIssueSchema, crawlOne, crawlPageSnapshotSchema, crawlReportSchema, crawlReportStore, crawlReportSummarySchema, crawlRequestObservationSchema, crawlRunId, crawlSite, crawlSkipImpact, crawlSkipReasonCountsFromRecord, crawlStatusOnly, crawlTopFixSchema, crawlerJsonSchemas, crawlerRuleCategorySchema, crawlerRuleIdSchema, crawlerRuleInfoSchema, crawlerRuleRecommendationSchema, crawlerRuleSeveritySchema, crawlerSchemas, createAuthorizedClient, createContentGroup, createCrawlReport, createCtrBenchmarkContext, createGoogleAccessTokenClient, createLogger, createPageRenderer, ctrUnderperformersReport, ctrUnderperformersReportWith, decayClusterDrafts, decayComparisonRange, decayingReport, decayingReportWith, deleteAhrefsApiKey, deleteBingApiKey, deleteChange, deleteClickySiteKey, deleteClient, deleteContentGroup, deleteCrawlReport, deleteDataForSeoCredentials, deleteManagedProviderSecrets, deleteProviderExtensionAccount, deleteProviderExtensionCredentials, deleteProviderSecret, deleteTokens, deriveBrandTerms, describeInstalledProviderExtension, detectBrandTerms, detectTelemetryAgent, diagnoseCsvFiles, diagnoseProperty, diagnosePropertyWorkflow, effectiveRobotsDirectives, effectiveSnippetControl, ensurePrivateDatabaseFiles, ensureSeoCliDirs, estimateSerpTitleWidth, expectedCtrForPosition, explainRule, fetchCruxFieldData, fetchPage, fetchPageStatus, fetchSearchStatusIncidents, fetchSitemapUrls, fileSize, finalGscDateRange, findOverlappingSearchUpdates, formatRelativeExpiry, ga4MatchReason, ga4PropertyIdFromName, ga4ReportQualityWarnings, ga4RequestCanUseCache, ga4RowsToObjects, getAuthModeStatus, getCacheStats, getChange, getClient, getClientConfig, getContentGroup, getDb, getPreviousRun, getPrivacySnapshot, getRepeatedLinkRecoverUrls, getRunPages, getSeoCliPaths, getServiceAccountConfig, getServiceAccountStatus, getTelemetryStatus, getTokenStorageStatus, googleAnalyticsPropertyId, googleJson, groupCrawlIssues, hasMetaRobotsDirective, hasRule, hasXRobotsDirective, hashKey, indexCoveragePlan, indexCoverageSignals, indexMonitor, indexWatch, inferTemplateMovement, initializeTelemetry, insertCrawlRun, insertLinkRecoverRun, inspectProviderPackage, inspectSearchConsoleUrl, inspectUrl, installProviderPackage, installedProviderPackageSchema, installedProviderPackagesSchema, internalLinksReport, interpretUpdateCorrelation, isBrandQuery, isCompatibleTechnicalBaseline, isCurrentTechnicalBaseline, isSkippableReportError, isTelemetryCi, isTelemetryOperation, isTelemetryReport, isoDate, isoWeek, latestCrawlReport, latestCrawlSummaries, latestFinalGscDate, latestIndexWatchSummary, latestLinkRecoverSummary, linkRecover, linkRecoverRecommendation, listAnalyticsAccounts, listChanges, listClients, listContentGroups, listCrawlReports, listGa4AccountSummaries, listGa4DataStreams, listGoogleAccounts, listInstalledProviderExtensions, listRules, listSearchConsoleSites, listSearchUpdates, listSites, loadCrawlReport, loadInstalledProviderExtensions, loadProviderExtensions, loadProviderPackage, loadSearchConsoleExport, localBing, localCredentialsProvider, localError, localGoogleFetch, localResearchKeys, loginWithLoopback, makeRunId, matchGa4WebStreams, measureChange, measureCoverage, metaRobotsDirectives, migrateLegacyMacConfig, missingOAuthClientMessage, missingSharedClientLoginMessage, monitoringStatus, nodeCommandDeps, normalizeBrandText, normalizeClickySiteId, normalizeClickySiteKey, normalizeCrawlConfig, normalizeCrawlSkipReasonCounts, normalizeForCoverage, normalizeHttpUrl, normalizeJavaScriptRenderingMode, normalizeLoadedCrawlReport, normalizeProviderExtensionAccount, normalizedResearchColumnName, noteCacheWrite, pageEvidenceRecommendation, pageOpportunitiesReport, parseOlderThan, performanceAudit, performanceReportIsCacheable, planDueIndexUrls, planIndexCoverageFromUrls, plural, propertyMatchesUrl, providerCapabilitySchema, providerConnectionFieldSchema, providerExactVersionSchema, providerExtensionIdSchema, providerIdSchema, providerIntegritySchema, providerKindSchema, providerPackageManifestSchema, providerPackageNameSchema, providerPreferenceSchema, providerRegistrationSchema, providerRequestJson, providerRequestText, pruneIndexWatchSnapshots, pruneLogs, publicHttpFetch, queryClusterReport, queryClusterTokens, queryContentCoverageFromPage, queryContentFieldsFromPage, queryFieldCoverage, queryOpportunityRecommendation, queryPageMetrics, queryPageTopQuery, queryPagesMetrics, queryPagesMetricsBatch, queryPagesTopQueries, queryPagesTopQueriesBatch, querySearchAnalytics, quickWinsCsvRows, quickWinsReport, quickWinsReportWith, readAhrefsApiKey, readAllTokens, readBingApiKey, readBoundedResponseText, readClickySiteKey, readConfig, readDataForSeoCredentials, readInstalledProviderPackages, readJson, readJsonOrUndefined, readOauthClient, readProviderExtensionAccount, readProviderExtensionCredentials, readProviderSecret, readTokens, recommendCrawlDiffItem, recommendationForRule, reconcileExportPagesWithCrawl, recordChange, redirectTrace, refreshAuthToken, refreshPrioritiesCsvFiles, refreshPrioritiesWorkflow, registrableDomain, removeClientAnalyticsConnection, removeInstalledProviderPackage, renderCrawlCsv, renderCrawlHtml, renderCrawlJunit, renderCrawlMarkdownTickets, renderCrawlPagesCsv, renderCrawlPretty, renderCsv, renderPresentationTablesMarkdown, renderReportHtml, renderWorkflowMarkdown, reportNarrative, requestHeaders, requirePageVerification, researchImportColumns, resetSeoData, resolveLocalSite, resolveSegmentRanges, resolveSeoCliPaths, resolveTechnicalBaseline, reviewObservations, roundedPosition, runAnalyticsProviderLandingPages, runAnalyticsReport, runDoctor, runGa4Report, runProviderExtensionAction, runtimeForProvider, safeProviderAdapterError, saveClient, saveCrawlReport, saveInstalledProviderPackage, searchAnalyticsRows, searchUpdatesFromIncidents, secondPage, secondPageWith, segmentComparisonRange, segmentImpact, segmentRangeDays, selectAffectedUrls, selectDueIndexUrls, selectGoogleAccounts, selectedGoogleAccount, seoErrorEnvelope, sessionSourceInListFilter, setActiveGoogleAccount, setClientAnalyticsConnection, setDefaultClient, setTelemetryEnabled, setTokenStorageMode, shiftIsoDate, shouldExcludeBrandQuery, siteSchema, sqliteCrawlReportStore, strikingDistance, strikingDistanceWith, summarizeCrawlReport, pageTechnicalSignals as technicalPageSignals, technicalWatchWorkflow, telemetryErrorCategory, toSeoError, tokenSchema, tokenStoreSchema, topCrawlRecommendations, topFixes, trackTelemetryCommandFailed, trackTelemetryReportComplete, trackTelemetryReportFailed, trackTelemetryReportStart, trackTelemetrySetupComplete, trafficAnomaly, trafficAnomalyWith, unavailableSegmentImpactReport, unicodeTokens, uninstallProviderExtension, updateClient, updateCorrelation, updatePostmortemCsvFiles, updatePostmortemWorkflow, validateResearchImportColumnSources, verifyAnalyticsProvider, verifyProviderExtension, verifyQueryContent, verifyQueryContentWith, withAgentReportContract, workflowPresentation, writeAhrefsApiKey, writeBingApiKey, writeClickySiteKey, writeConfig, writeDataForSeoCredentials, writeInstalledProviderPackages, writeOauthClient, writeProviderExtensionAccount, writeProviderExtensionCredentials, writeProviderSecret, writeTokens, xRobotsDirectives };
21540
+ export { AHREFS_API_KEY_ENV, AHREFS_API_KEY_SECRET, AI_REFERRAL_SOURCES, AI_REFERRAL_SOURCES_VERSION, ANALYTICS_PROVIDER_IDS, AUDIT_PAGE_RULE_IDS, AccessBlockEvidence, AgentFinding, AgentFindingStatus, AgentFindings, AgentFixFinding, AgentReportInventory, AgentReportOptions, AgentReviewFinding, AhrefsClient, AhrefsClientOptions, AhrefsLimitsAndUsage, type AiReferralDataSource, type AiReferralMetrics, type AiReferralQueryEvidence, type AiReferralReport, type AiReferralSourceDefinition, AnalyticsConnection, AnalyticsProvider, AnalyticsProviderDetails, AnalyticsProviderRuntimeOptions, type AnalyzeCannibalImportRowsInput, type AnalyzeCannibalRowsInput, type AnalyzeDecayInput, type AnalyzeQuickWinsInput, type AnalyzeSecondPageInput, type AnalyzeStrikingDistanceInput, AppConfig, AuditPageDependencies, AuditPageReport, AuthorizedGoogleClient, BING_API_KEY_ENV, BING_API_KEY_SECRET, BROWSER_USER_AGENT, BoundedSitemapInventory, BrandTermCandidate, CANNIBAL_MAXIMUM_DOMINANT_SHARE, CANNIBAL_MINIMUM_PAGE_SHARE, CLICKY_SITEKEY_ENV, CLICKY_SITE_KEYS_SECRET, CRAWL_SKIP_REASONS, CTR_DEFAULT_LIMIT, CTR_MAX_LIMIT, CTR_MAX_MIN_IMPRESSIONS, CacheStats, type CannibalAnalysis, CannibalDependencies, type CannibalImportAnalysis, CannibalImportDependencies, type CannibalImportItem, type CannibalImportPage, type CannibalImportReport, CannibalImportReportInput, type CannibalImportSelection, type CannibalItem, type CannibalPage, type CannibalReport, CannibalReportInput, CannibalSearchConsoleInput, type CannibalSelection, type CannibalSuppression, type CannibalSuppressionReason, ContentExtractionDiagnostics, ContentExtractor, ContentOptimizationIntent, ContentOptimizationReport, CoverageField, CrawlAccessSummary, CrawlAiBotAccess, CrawlAiResourceSignal, CrawlAiSignals, CrawlAnalyticsDataSource, CrawlConfig, CrawlConfigInput, CrawlDataSourceStatus, CrawlDataSourceWindow, CrawlExternalLinkVerification, CrawlFetchRateConfig, CrawlImplementationQueueInput, CrawlImplementationQueueItem, CrawlImplementationQueueOutput, CrawlIssue, CrawlIssueGroup, CrawlLinkGraph, CrawlMode, CrawlOneResult, CrawlOutputFormat, CrawlPageSnapshot, CrawlReport, CrawlReportDataSources, CrawlReportSummary, CrawlRequestObservation, CrawlResponseObservation, CrawlRunStats, CrawlSearchDataSource, type CrawlSiteChecks, type CrawlSiteDependencies, CrawlSitemapDiscovery, CrawlSkipImpact, CrawlSkipReason, CrawlSkipReasonCount, CrawlSkippedUrlsByImpact, CrawlStatusEvent, CrawlStatusHandler, type CrawlStatusPhase, CrawlStrategy, CrawlerIdentity, CredentialsProvider, CreditUsage, CsvFile, CsvRow, CsvValue, type CtrUnderperformer, CtrUnderperformerDependencies, type CtrUnderperformerSelection, CtrUnderperformersInput, CtrUnderperformersReport, DATAFORSEO_CREDENTIAL_SECRET, DATAFORSEO_LOGIN_ENV, DATAFORSEO_PASSWORD_ENV, DEFAULT_SEARCH_CONSOLE_EXPORT_ROW_LIMIT, DEFAULT_UNREACHED_PAGE_LIMIT, type DataForSeoAccountSnapshot, DataForSeoClient, type DataForSeoClientOptions, DataForSeoCredentials, type DecayAnalysis, type DecayComparison, type DecayDiagnosis, type DecayGroup, type DecayItem, type DecayMetrics, type DecayReport, type DecaySelection, type DecaySignal, DecayingDependencies, DecayingReportInput, DiagnosePropertyDependencies, DiagnosePropertyReport, DiagnosisDataStatus, DiagnosisPriority, DoctorCheck, EffectiveSnippetControl, ExternalLinkCheck, ExternalLinkCheckAttempt, ExternalLinkCheckState, ExternalServiceId, ExtractedLinkLocation, ExtractedPage, FetchPageDependencies, type FetchPageOptions, type FetchRateControls, GSC_FINAL_DATA_LAG_DAYS, GSC_TIME_ZONE, type Ga4AccountSummary, Ga4DataStream, type Ga4PropertySummary, Ga4ReportRequest, Ga4RunReportResult, Ga4WebStreamCandidate, Ga4WebStreamMatch, type GoogleAccessTokenClient, GoogleApiError, GoogleCallOptions, GoogleFetch, GoogleRichResultAssessment, GoogleRichResultAssessmentSelection, GoogleRichResultAssessmentStatus, GscRow, HttpProfile, INCIDENTS_URL, INTERNAL_LINK_LEXICAL_TARGET_LIMIT, INTERNAL_LINK_MATCH_EVIDENCE_LIMIT, IndexCoverageBoundedSection, IndexCoverageCandidateItem, IndexCoverageControlReason, IndexCoverageControlledItem, IndexCoverageCrawlInput, IndexCoverageInput, IndexCoverageInventoryItem, IndexCoverageReport, IndexCoverageReportDependencies, IndexCoverageReportInput, IndexCoverageSearchConsoleInput, IndexCoverageSearchVisibilityItem, IndexCoverageSignalsReport, IndexCoverageSitemapInput, IndexCoverageSourceCompleteness, IndexCoverageSourceEvidence, IndexCoverageSourceMembership, IndexCoverageTemplateReview, InstalledProviderPackage, InstalledProviderPackages, type InternalLinkCandidate, type InternalLinkMatchKind, type InternalLinkOpportunity, type InternalLinkQueryMatch, InternalLinksAnalysis, InternalLinksAnalysisInput, InternalLinksDependencies, InternalLinksInput, type InternalLinksReport, type InternalLinksSelection, type InternalLinksWarning, type JavaScriptRenderingInput, type JavaScriptRenderingMode, JsonFileStorageAdapter, KeywordMetric, KeywordMonthlySearch, LOCAL_BING_CONNECT, LOCAL_SIGN_IN, LOG_MAX_AGE_MS, LOG_MAX_FILE_BYTES, LOG_MAX_TOTAL_BYTES, LighthouseFailureCode, LinkRecoverItem, LinkRecoverReport, LoadedProviderExtensions, LocalCredentialsProvider, LogPruneResult, MANAGED_PROVIDER_SECRET_NAMES, MAX_CRAWL_CONCURRENCY, MAX_CRAWL_DEPTH, MAX_CRAWL_PAGES, MAX_CRAWL_TIMEOUT_MS, MAX_SEARCH_CONSOLE_EXPORT_FILES, MAX_SEARCH_CONSOLE_EXPORT_ROW_LIMIT, NarrativeSection, type OAuthClientConfig, OpportunityBenchmarkRow, PROVIDER_SECRET_NAMES, PageExtractor, PageFetchDiagnostics, PageFetchResult, PageFetcher, type PageOpportunityAnalysis, type PageOpportunityAnalysisInput, type PageOpportunityBenchmark, PageOpportunityInput, type PageOpportunityItem, PageOpportunityReport, type PageOpportunitySelection, type PageOpportunityType, type PageOpportunityVerification, type PageRenderer, PageSearchMetrics, PageTopQuery, PartialDiagnosisReason, PerformanceAuditReport, PerformanceFieldData, PerformanceFieldMetric, PerformanceMetric, PerformanceRating, PositionBenchmark, Presentation, PresentationChart, PresentationScalar, PresentationTable, PresentationTableColumn, PriorityQueueItem, ProgressReporter, ProviderActionResult, ProviderCapability, ProviderError, ProviderErrorCode, ProviderExtensionLoadFailure, ProviderExtensionLoaderOptions, ProviderExtensionRegistry, ProviderFetch, ProviderId, ProviderImportEvidence, ProviderInstallerOptions, ProviderPackageCommand, ProviderPackageCommandResult, ProviderPackageManifest, ProviderPackageRelease, ProviderRequestInput, ProviderRuntimeOptions, ProviderSecret, ProviderSecretSource, ProviderValue, ProviderWarning, QueryCluster, type QueryClusterPage, QueryClusterReport, type QueryClusterRow, QueryClusterSourceRow, QueryContentClassification, QueryContentCoverage, QueryContentSignal, QueryContentVerifier, QueryFieldCoverage, type QuickWinAnalysis, type QuickWinGroup, type QuickWinItem, type QuickWinSelection, type QuickWinTemplateRecommendation, QuickWinsDependencies, QuickWinsInput, QuickWinsReport, RESEARCH_IMPORT_COLUMN_KEYS, Recommendation, RedirectTraceIssue, RedirectTraceReport, RedirectTraceStep, RegisteredProviderExtension, RenderingDocumentDifference, RenderingDocumentField, RenderingDocumentSnapshot, ReportNarrative, ResearchImportColumn, ResearchImportColumns, ResponseSizeLimitError, RobotsDirective, RuleCategory, RuleId, RuleInfo, RuleRecommendation, RuleSeverity, SEO_CRAWLER_IDENTITY, SEO_CRAWLER_TOKEN, SEO_CRAWLER_USER_AGENT, SEO_PROVIDER_API_VERSION, SEO_VERSION, SERP_TITLE_REFERENCE_WIDTH_PX, SERP_TITLE_WIDTH_PROFILE, STEP_CHANGE_RULES, SearchAnalyticsOptions, SearchAnalyticsQuery, SearchAnalyticsRequest, SearchAnalyticsResult, SearchConsoleExportEvidence, SearchConsoleExportFileImport, SearchConsoleExportPageRow, SearchConsoleExportQueryRow, SearchConsoleExportReconciliation, SearchConsoleSite, SearchDateWindow, SearchPageBatch, type SearchStatusIncident, type SearchUpdate, type SecondPageAnalysis, SecondPageDependencies, SecondPageInput, type SecondPageItem, type SecondPageQuery, type SecondPageRecommendation, type SecondPageReport, type SecondPageSelection, type SegmentDimension, SegmentImpactDependencies, SegmentImpactInput, type SegmentImpactItem, type SegmentImpactReport, type SegmentImpactSelection, type SegmentPeriodEvidence, type SegmentRange, SeoAnalyticsConnection, SeoAnalyticsLandingPageResult, SeoCliPathOptions, SeoCliPaths, SeoError, SeoErrorCode, SeoLandingPageVisitRow, SeoLandingPageVisitsCapability, SeoLandingPageVisitsResult, SeoProviderActionAdapter, SeoProviderActivate, SeoProviderApiVersion, SeoProviderCapabilityAdapter, SeoProviderCapabilityId, SeoProviderConnection, SeoProviderConnectionAdapter, SeoProviderConnectionField, SeoProviderHost, SeoProviderJson, SeoProviderJsonSchema, SeoProviderKind, SeoProviderRegistration, SeoProviderRequest, SeoProviderRuntime, SeoSearchMarket, SeoSerpLocalPackResult, SeoSerpOrganicResult, SeoSerpSnapshotCapability, SeoSerpSnapshotResult, ServiceAccountAccessTokenClient, ServiceAccountConfig, ServiceAccountStatus, SessionLedger, SitemapDocument, SitemapFetchResult, SitemapInvalidLoc, SitemapLastmodObservation, SkippedDiagnosisSection, SnippetControlEvidence, StorageAdapter, StoredAhrefsApiKey, StoredClickySiteKey, StoredDataForSeoCredentials, StoredTokenStore, StoredTokens, type StrikingDistanceAnalysis, type StrikingDistanceAnalysisGroup, type StrikingDistanceAnalysisItem, StrikingDistanceDependencies, StrikingDistanceInput, StrikingDistanceItem, StrikingDistanceReport, TELEMETRY_AGENTS, TELEMETRY_ENDPOINT, TELEMETRY_ERROR_CATEGORIES, TELEMETRY_EVENTS, TELEMETRY_FAILURE_CONTEXTS, TELEMETRY_FAILURE_REASONS, TELEMETRY_NOTICE, TELEMETRY_OPERATIONS, TELEMETRY_REPORTS, TELEMETRY_SCHEMA_VERSION, TELEMETRY_TIMEOUT_MS, TelemetryAgent, TelemetryDisableReason, type TelemetryErrorCategory, TelemetryEvent, type TelemetryFailureClassification, type TelemetryFailureContext, type TelemetryFailureReason, type TelemetryOperation, TelemetryOptions, TelemetryPayload, TelemetryReport, TelemetryState, TelemetryStatus, TemplateAwareReport, TitleWidthEstimate, TokenStorageMode, TokenStorageStatus, TopFix, TopFixFilters, TrafficAnomaly, TrafficAnomalyCoverage, TrafficAnomalyDependencies, TrafficAnomalyDetection, TrafficAnomalyInput, TrafficAnomalyReport, TrafficAnomalySelection, type UnmatchedSegment, UpdateConfounder, UpdateCorrelationReport, UrlInspectionRequest, UrlInspectionResult, VerifyQueryContentInput, WorkflowAction, WorkflowReport, WorkflowStep, agentActionsView, aiReferralSourceForValue, aiReferralsReport, analyticsConnectionLabel, analyticsConnectionProviderId, analyticsConnectionSchema, analyticsProviderDetails, analyticsProviderSchema, analyzeAiReferralRows, analyzeCannibalImportRows, analyzeCannibalRows, analyzeCtrUnderperformersFromRows, analyzeDecay, analyzeIndexCoverageSignals, analyzeInternalLinksFromRows, analyzePageOpportunitiesFromRows, analyzeQueryClustersFromRows, analyzeQuickWinsFromRows, analyzeSecondPageRows, analyzeSegmentRows, analyzeStrikingDistanceRows, analyzeTrafficAnomalyRows, assertCrawlConfigLimits, assertUrlMatchesGscProperty, auditCrawlPages, auditCrawlRequests, auditPage, authStatus, bearerFetch, boundedSitemapInventory, buildAgentFindings, buildQueryClusterReportFromRows, buildTelemetryPayload, cannibalImportReport, cannibalReport, cannibalReportWith, changeWindow, checkDatabaseReadiness, classifyTelemetryFailure, clearCache, clusterQueryRows, combineRobotsValues, compareSegmentRows, configSchema, contentCoverageRecommendation, contentCoverageType, contentOptimizationFromPageOpportunities, contentOptimizationReport, countLabel, crawlConfigHash, crawlConfigSchema, crawlDefinitionId, crawlFixToQueueItem, crawlImplementationQueueWorkflow, crawlIssueGroupSchema, crawlIssueSchema, crawlOne, crawlPageSnapshotSchema, crawlReportSchema, crawlReportSummarySchema, crawlRequestObservationSchema, crawlRunId, crawlSite, crawlSkipImpact, crawlSkipReasonCountsFromRecord, crawlStatusOnly, crawlTopFixSchema, crawlerJsonSchemas, crawlerRuleCategorySchema, crawlerRuleIdSchema, crawlerRuleInfoSchema, crawlerRuleRecommendationSchema, crawlerRuleSeveritySchema, crawlerSchemas, createAuthorizedClient, createCrawlReport, createCtrBenchmarkContext, createGoogleAccessTokenClient, createLogger, createPageRenderer, ctrUnderperformersReport, ctrUnderperformersReportWith, decayClusterDrafts, decayComparisonRange, decayingReport, decayingReportWith, deleteAhrefsApiKey, deleteBingApiKey, deleteClickySiteKey, deleteDataForSeoCredentials, deleteManagedProviderSecrets, deleteProviderExtensionAccount, deleteProviderExtensionCredentials, deleteProviderSecret, deleteTokens, deriveBrandTerms, describeInstalledProviderExtension, detectBrandTerms, detectTelemetryAgent, diagnoseCsvFiles, diagnoseProperty, diagnosePropertyWorkflow, effectiveRobotsDirectives, effectiveSnippetControl, ensurePrivateDatabaseFiles, ensureSeoCliDirs, estimateSerpTitleWidth, expectedCtrForPosition, explainRule, fetchCruxFieldData, fetchPage, fetchPageStatus, fetchSearchStatusIncidents, fetchSitemapUrls, fileSize, finalGscDateRange, findOverlappingSearchUpdates, formatRelativeExpiry, ga4MatchReason, ga4PropertyIdFromName, ga4ReportQualityWarnings, ga4RequestCanUseCache, ga4RowsToObjects, getAuthModeStatus, getCacheStats, getClientConfig, getDb, getPrivacySnapshot, getSeoCliPaths, getServiceAccountConfig, getServiceAccountStatus, getTelemetryStatus, getTokenStorageStatus, googleJson, groupCrawlIssues, hasMetaRobotsDirective, hasRule, hasXRobotsDirective, hashKey, indexCoverageSignals, inferTemplateMovement, initializeTelemetry, inspectProviderPackage, inspectSearchConsoleUrl, inspectUrl, installProviderPackage, installedProviderPackageSchema, installedProviderPackagesSchema, internalLinksReport, interpretUpdateCorrelation, isBrandQuery, isSkippableReportError, isTelemetryCi, isTelemetryOperation, isTelemetryReport, isoDate, isoWeek, latestFinalGscDate, linkRecover, linkRecoverRecommendation, listAnalyticsAccounts, listGa4AccountSummaries, listGa4DataStreams, listGoogleAccounts, listInstalledProviderExtensions, listRules, listSearchConsoleSites, listSearchUpdates, listSites, loadInstalledProviderExtensions, loadProviderExtensions, loadProviderPackage, loadSearchConsoleExport, localBing, localCredentialsProvider, localError, localGoogleFetch, localResearchKeys, loginWithLoopback, makeRunId, matchGa4WebStreams, measureCoverage, metaRobotsDirectives, migrateLegacyMacConfig, missingOAuthClientMessage, missingSharedClientLoginMessage, nodeCommandDeps, normalizeBrandText, normalizeClickySiteId, normalizeClickySiteKey, normalizeCrawlConfig, normalizeCrawlSkipReasonCounts, normalizeForCoverage, normalizeHttpUrl, normalizeJavaScriptRenderingMode, normalizeLoadedCrawlReport, normalizeProviderExtensionAccount, normalizedResearchColumnName, noteCacheWrite, pageEvidenceRecommendation, pageOpportunitiesReport, parseOlderThan, performanceAudit, performanceReportIsCacheable, plural, providerCapabilitySchema, providerConnectionFieldSchema, providerExactVersionSchema, providerExtensionIdSchema, providerIdSchema, providerIntegritySchema, providerKindSchema, providerPackageManifestSchema, providerPackageNameSchema, providerPreferenceSchema, providerRegistrationSchema, providerRequestJson, providerRequestText, pruneLogs, publicHttpFetch, queryClusterReport, queryClusterTokens, queryContentCoverageFromPage, queryContentFieldsFromPage, queryFieldCoverage, queryOpportunityRecommendation, queryPageMetrics, queryPageTopQuery, queryPagesMetrics, queryPagesMetricsBatch, queryPagesTopQueries, queryPagesTopQueriesBatch, querySearchAnalytics, quickWinsCsvRows, quickWinsReport, quickWinsReportWith, readAhrefsApiKey, readAllTokens, readBingApiKey, readBoundedResponseText, readClickySiteKey, readConfig, readDataForSeoCredentials, readInstalledProviderPackages, readJson, readJsonOrUndefined, readOauthClient, readProviderExtensionAccount, readProviderExtensionCredentials, readProviderSecret, readTokens, recommendationForRule, reconcileExportPagesWithCrawl, redirectTrace, refreshAuthToken, refreshPrioritiesCsvFiles, refreshPrioritiesWorkflow, registrableDomain, removeInstalledProviderPackage, renderCrawlCsv, renderCrawlHtml, renderCrawlJunit, renderCrawlMarkdownTickets, renderCrawlPagesCsv, renderCrawlPretty, renderCsv, renderPresentationTablesMarkdown, renderWorkflowMarkdown, reportNarrative, requestHeaders, requirePageVerification, researchImportColumns, resetSeoData, resolveLocalSite, resolveSegmentRanges, resolveSeoCliPaths, reviewObservations, roundedPosition, runAnalyticsProviderLandingPages, runAnalyticsReport, runDoctor, runGa4Report, runProviderExtensionAction, runtimeForProvider, safeProviderAdapterError, saveInstalledProviderPackage, searchAnalyticsRows, searchUpdatesFromIncidents, secondPage, secondPageWith, segmentComparisonRange, segmentImpact, segmentRangeDays, seoErrorEnvelope, sessionSourceInListFilter, setActiveGoogleAccount, setTelemetryEnabled, setTokenStorageMode, shiftIsoDate, shouldExcludeBrandQuery, strikingDistance, strikingDistanceWith, summarizeCrawlReport, pageTechnicalSignals as technicalPageSignals, telemetryErrorCategory, toSeoError, tokenSchema, tokenStoreSchema, topFixes, trackTelemetryCommandFailed, trackTelemetryReportComplete, trackTelemetryReportFailed, trackTelemetryReportStart, trackTelemetrySetupComplete, trafficAnomaly, trafficAnomalyWith, unavailableSegmentImpactReport, unicodeTokens, uninstallProviderExtension, updateCorrelation, updatePostmortemCsvFiles, updatePostmortemWorkflow, validateResearchImportColumnSources, verifyAnalyticsProvider, verifyProviderExtension, verifyQueryContent, verifyQueryContentWith, withAgentReportContract, workflowPresentation, writeAhrefsApiKey, writeBingApiKey, writeClickySiteKey, writeConfig, writeDataForSeoCredentials, writeInstalledProviderPackages, writeOauthClient, writeProviderExtensionAccount, writeProviderExtensionCredentials, writeProviderSecret, writeTokens, xRobotsDirectives };
22691
21541
  //# sourceMappingURL=index.d.ts.map