@canonry/canonry 7.67.0 → 7.68.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/agent-workspace/skills/aero/references/seo-analysis.md +10 -2
- package/assets/agent-workspace/skills/canonry/references/canonry-cli.md +1 -1
- package/assets/assets/{AgentSetupPage-ORsy3QEa.js → AgentSetupPage-DyssdZ1J.js} +3 -3
- package/assets/assets/{AuditHistoryPanel-vTHZDbfs.js → AuditHistoryPanel-Bma4Q6p0.js} +1 -1
- package/assets/assets/{BacklinksPage-FqADB5sO.js → BacklinksPage-C3GoO2Wf.js} +1 -1
- package/assets/assets/{HistoryPage-C4l5Toqa.js → HistoryPage-6iYvYCL7.js} +1 -1
- package/assets/assets/MeasurementPropertyPage-CjI5eB3b.js +4 -0
- package/assets/assets/ProjectPage-GYIgNPxn.js +9 -0
- package/assets/assets/{RunsPage-oyhhwAPq.js → RunsPage-Cw0GTxgx.js} +1 -1
- package/assets/assets/{SettingsPage-DJc4Di1M.js → SettingsPage-Cvg8BvZn.js} +1 -1
- package/assets/assets/SiteHealthSection-vejp2Igj.js +2 -0
- package/assets/assets/ToneBadge-c2bgjqqz.js +60 -0
- package/assets/assets/{TrafficPage-DAD0FFkL.js → TrafficPage-BUb0xr-b.js} +1 -1
- package/assets/assets/{TrafficSourceDetailPage-BBEzbawh.js → TrafficSourceDetailPage-DmrtEYs8.js} +1 -1
- package/assets/assets/{account-context-DMHOefRt.js → account-context-qhg8esXw.js} +1 -1
- package/assets/assets/{card-Brp6fFNG.js → card-BNthgfAY.js} +1 -1
- package/assets/assets/{extract-error-message-5QpQCsGb.js → extract-error-message-DuYEL09s.js} +1 -1
- package/assets/assets/{format-helpers-BFM0FRjT.js → format-helpers-6v-a8B3S.js} +1 -1
- package/assets/assets/index-BUigRGam.js +60 -0
- package/assets/assets/{index-C6U4u18w.css → index-CqNwsqjm.css} +1 -1
- package/assets/assets/{query-client-BMTW-xss.js → query-client-COFiuVJB.js} +1 -1
- package/assets/assets/react-query-ZdpN7cFt.js +1 -0
- package/assets/assets/{react-sigma_core.esm.min-C0VjhgDo.js → react-sigma_core.esm.min-EbeNATny.js} +1 -1
- package/assets/assets/{service-DW9u_0aZ.js → service-DGFjEsYR.js} +1 -1
- package/assets/index.html +8 -8
- package/dist/{ads-BXGEL4WI.js → ads-AHM5LMVT.js} +3 -3
- package/dist/{agent-LFX7GHWD.js → agent-2FSGY7SD.js} +7 -7
- package/dist/{agent-ask-QJV225AT.js → agent-ask-GIK7T2HD.js} +3 -3
- package/dist/{agent-conversations-2TZDIGA6.js → agent-conversations-JEIFZHT3.js} +3 -3
- package/dist/{agent-memory-XCY3ZG5C.js → agent-memory-JC3JJXON.js} +3 -3
- package/dist/{agent-providers-VS6PH55Y.js → agent-providers-JRL3VZA7.js} +3 -3
- package/dist/{agent-transcript-BUUHOTZM.js → agent-transcript-ZQDNW3IE.js} +3 -3
- package/dist/{analytics-YWJWPUNF.js → analytics-HMYE6EIX.js} +3 -3
- package/dist/{apply-BMCYFBEJ.js → apply-F5CHVFC3.js} +3 -3
- package/dist/{backfill-YBOKT5LT.js → backfill-JZDQKZHY.js} +9 -9
- package/dist/{backlinks-QNNABB4N.js → backlinks-L7XEHBAP.js} +3 -3
- package/dist/{bing-KEMXBABP.js → bing-XTMKLVRJ.js} +3 -3
- package/dist/{bootstrap-X2AADK4M.js → bootstrap-AEHBYC77.js} +10 -10
- package/dist/{cdp-WVYUEV4U.js → cdp-SSIHU3PU.js} +7 -7
- package/dist/{chunk-MLOGEXIO.js → chunk-2D7O5UHJ.js} +1 -1
- package/dist/{chunk-MD5PHJBX.js → chunk-33LH4ZGF.js} +2 -1
- package/dist/{chunk-VR4MYSEH.js → chunk-4KMUJOYL.js} +4 -4
- package/dist/{chunk-WSYLDPYF.js → chunk-5SK27UE7.js} +1 -1
- package/dist/{chunk-AVISYPUU.js → chunk-6W3ENB2X.js} +61 -7
- package/dist/{chunk-ZGUR4AZM.js → chunk-7AXVACK6.js} +2 -2
- package/dist/{chunk-WZ4LUM26.js → chunk-7NMCRHQL.js} +3 -3
- package/dist/{chunk-UXTNDZKM.js → chunk-7SGZHGZ2.js} +1 -1
- package/dist/{chunk-6DJN7HCK.js → chunk-ARIYTYOM.js} +1 -1
- package/dist/{chunk-XMIKSCAO.js → chunk-ARYBII44.js} +1 -1
- package/dist/{chunk-CBYKQRDH.js → chunk-CZUPNWLH.js} +2 -2
- package/dist/{chunk-XEPEMON2.js → chunk-FDRZQH3Y.js} +14 -2
- package/dist/{chunk-5DMESZDF.js → chunk-IVBJEVHS.js} +2 -2
- package/dist/{chunk-HX3WLTZU.js → chunk-J4CNNYRQ.js} +1 -1
- package/dist/{chunk-Y54PMWBH.js → chunk-JPVG5LIE.js} +3 -3
- package/dist/{chunk-EKSXR7RJ.js → chunk-K2P2XO6P.js} +1 -1
- package/dist/{chunk-AFRCTLUL.js → chunk-K54WGCZV.js} +404 -340
- package/dist/{chunk-KJLICF53.js → chunk-LABVR6K7.js} +4 -4
- package/dist/{chunk-YP743QX5.js → chunk-LTMQ4MHF.js} +1 -1
- package/dist/{chunk-UNCOK6DA.js → chunk-MVRPFLEL.js} +1 -1
- package/dist/{chunk-LU3M54IY.js → chunk-PAVSKSKA.js} +1 -1
- package/dist/{chunk-IEBMODUI.js → chunk-QXCQSRHL.js} +20 -20
- package/dist/{chunk-G6PZEDTH.js → chunk-R42VEDCB.js} +3 -3
- package/dist/{chunk-P74TPIWZ.js → chunk-RNA6ZCM6.js} +2 -2
- package/dist/{chunk-32BTTG5N.js → chunk-U3EJ5RW7.js} +12 -6
- package/dist/{chunk-GTPGYFZ4.js → chunk-V6ALEP33.js} +2 -2
- package/dist/{chunk-XEGYSZEV.js → chunk-VPZMSV3Q.js} +235 -6
- package/dist/{chunk-XIA6NWIF.js → chunk-W7PA35VJ.js} +4 -4
- package/dist/{chunk-NHHZQWMI.js → chunk-XMXYUP7X.js} +1 -1
- package/dist/{chunk-2X7DFLMD.js → chunk-Y42G2YKT.js} +8 -8
- package/dist/{chunk-37R6GTU7.js → chunk-YIIIYNPW.js} +22 -4
- package/dist/{chunk-MOJ2XZXK.js → chunk-ZD5G5QEV.js} +1 -1
- package/dist/{chunk-UHLWNU6I.js → chunk-ZU6X4SN2.js} +5 -5
- package/dist/{chunk-RRS7U6HQ.js → chunk-ZUXFHO4T.js} +4 -4
- package/dist/{citations-ZSI5BOGD.js → citations-NIFKIG6Y.js} +3 -3
- package/dist/{cli-catalog-J2HUCGJL.js → cli-catalog-ONYERYPV.js} +3 -3
- package/dist/{cli-commands-XFMVFREG.js → cli-commands-LWI2NEWW.js} +7 -7
- package/dist/cli.js +13 -13
- package/dist/{competitor-WJDN3DLP.js → competitor-NSUSTLNW.js} +3 -3
- package/dist/{content-K52YV4BK.js → content-W5VYYMAW.js} +3 -3
- package/dist/{dashboard-L6RKTP35.js → dashboard-NNA3P645.js} +6 -6
- package/dist/{demo-Y7XRD4X4.js → demo-5M4YGVV4.js} +1 -1
- package/dist/{demo-server-QNQX5CNP.js → demo-server-FDR4RKLM.js} +12 -11
- package/dist/{discover-UO5M7HQZ.js → discover-VCKMXFOR.js} +3 -3
- package/dist/{discover-eval-DN4PS6VN.js → discover-eval-CPVP7EK5.js} +3 -3
- package/dist/{doctor-7UYUXG7J.js → doctor-EVCP6PDM.js} +3 -3
- package/dist/{evidence-DGKN5SGQ.js → evidence-ZWRGNZWN.js} +3 -3
- package/dist/{export-cmd-QAQWWIRL.js → export-cmd-AM6SIRUW.js} +3 -3
- package/dist/{ga-4LGTEA6J.js → ga-6J67NDMZ.js} +3 -3
- package/dist/{gbp-XOLYZ4XC.js → gbp-ERTWK26L.js} +3 -3
- package/dist/{google-CAQDCFA6.js → google-O6VQFK4L.js} +4 -4
- package/dist/{google-marketing-HU5I3XPP.js → google-marketing-OEW2YGUR.js} +1 -1
- package/dist/{health-cmd-3PEB3M45.js → health-cmd-OPGK37MK.js} +3 -3
- package/dist/{history-UGUWYPOY.js → history-WTU4ETCU.js} +3 -3
- package/dist/index.d.ts +5 -5
- package/dist/index.js +24 -24
- package/dist/{init-DEW65BLN.js → init-WTAVKFGR.js} +11 -11
- package/dist/{insights-ZC3R4ZYG.js → insights-LPEDLSEV.js} +3 -3
- package/dist/intelligence-service-4OO2VQ2I.js +15 -0
- package/dist/{journeys-W6F4BCXF.js → journeys-TWVQNRLT.js} +3 -3
- package/dist/{keys-ME7VRF73.js → keys-C6FPREBZ.js} +3 -3
- package/dist/{keyword-R3PLGSO5.js → keyword-PBSE65DK.js} +3 -3
- package/dist/{logs-UM7CWHYB.js → logs-62RUOAKT.js} +3 -3
- package/dist/{mcp-BUPP5HC6.js → mcp-P4LNENKX.js} +2 -2
- package/dist/mcp.js +9 -9
- package/dist/{measurement-plan-R4KZHJII.js → measurement-plan-HKW3IVIE.js} +5 -5
- package/dist/{notify-4C26D2MY.js → notify-A3I3G7NK.js} +3 -3
- package/dist/{organic-evidence-SLIISYHW.js → organic-evidence-OFUJBDCK.js} +3 -3
- package/dist/{overview-JJZZOYQU.js → overview-NSRODN2X.js} +4 -4
- package/dist/{project-XJH2OECP.js → project-B5G2HEAB.js} +3 -3
- package/dist/{query-ZWAIWIYB.js → query-UQHJVYUJ.js} +3 -3
- package/dist/{research-GTVWVZBI.js → research-ZWBJDLJY.js} +3 -3
- package/dist/{results-export-CPAWO5AV.js → results-export-FOJYT4MK.js} +3 -3
- package/dist/{run-RI2BMD7U.js → run-ZIUQ2TNN.js} +4 -4
- package/dist/{schedule-HDDWULBX.js → schedule-B5CORKGT.js} +3 -3
- package/dist/{search-TT3Q2BBP.js → search-2XCZKP6A.js} +3 -3
- package/dist/{serve-6JYPUU24.js → serve-3BSLRICO.js} +25 -25
- package/dist/{session-DDESFV3N.js → session-PILSYOTX.js} +12 -12
- package/dist/{settings-4AYXYJVA.js → settings-Y3LVGZH4.js} +3 -3
- package/dist/{skills-UFMLMMY5.js → skills-6E3RVQAQ.js} +2 -2
- package/dist/{snapshot-KLWQGZB6.js → snapshot-RAV2HCL7.js} +3 -3
- package/dist/{src-6IHGEMT2.js → src-VUD6WO5N.js} +2 -2
- package/dist/{status-HRIUPGUM.js → status-2WCUV6C2.js} +4 -4
- package/dist/{technical-aeo-HKJQHMMS.js → technical-aeo-2TJEHHBR.js} +3 -3
- package/dist/{telemetry-IS6KZK32.js → telemetry-LQAD26UJ.js} +4 -4
- package/dist/{tools-ZNVQFEAX.js → tools-U6VGYZV2.js} +11 -11
- package/dist/{traffic-PFHFGN44.js → traffic-3TBXSHPV.js} +5 -5
- package/dist/{users-BSLUSU6W.js → users-2HDDA5GT.js} +3 -3
- package/dist/{visibility-stats-MPRNHPZW.js → visibility-stats-HSGT3OL3.js} +3 -3
- package/dist/{wordpress-U5XKHURL.js → wordpress-ALODIEFK.js} +3 -3
- package/package.json +1 -1
- package/assets/assets/MeasurementPropertyPage-x8f7xanT.js +0 -4
- package/assets/assets/ProjectPage-CG9I2-B4.js +0 -9
- package/assets/assets/SiteHealthSection-BvqFg3rG.js +0 -2
- package/assets/assets/ToneBadge-CTWpeKu8.js +0 -60
- package/assets/assets/index-BBNs-RhI.js +0 -60
- package/assets/assets/react-query-DGmY6hJa.js +0 -1
- package/dist/intelligence-service-XRJVXZYI.js +0 -15
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
registeredProviderNames
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-XMXYUP7X.js";
|
|
4
4
|
import {
|
|
5
5
|
configExists,
|
|
6
6
|
loadConfigRaw
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-MVRPFLEL.js";
|
|
8
8
|
|
|
9
9
|
// src/setup-state.ts
|
|
10
10
|
import fs from "fs";
|
|
@@ -28,7 +28,7 @@ async function buildSetupState() {
|
|
|
28
28
|
}
|
|
29
29
|
if (dbPath && fs.existsSync(dbPath)) {
|
|
30
30
|
try {
|
|
31
|
-
const { createClient, projects, queries: queriesTable } = await import("./src-
|
|
31
|
+
const { createClient, projects, queries: queriesTable } = await import("./src-VUD6WO5N.js");
|
|
32
32
|
const db = createClient(dbPath);
|
|
33
33
|
project_count = db.select({ id: projects.id }).from(projects).all().length;
|
|
34
34
|
const firstQuery = db.select({ id: queriesTable.id }).from(queriesTable).limit(1).all();
|
|
@@ -47,7 +47,7 @@ function queueServeHandoff() {
|
|
|
47
47
|
async function runPendingServeHandoff(format) {
|
|
48
48
|
if (!pendingServeHandoff) return;
|
|
49
49
|
pendingServeHandoff = false;
|
|
50
|
-
const { serveCommand } = await import("./serve-
|
|
50
|
+
const { serveCommand } = await import("./serve-3BSLRICO.js");
|
|
51
51
|
await serveCommand(format);
|
|
52
52
|
}
|
|
53
53
|
|
|
@@ -23,7 +23,7 @@ import {
|
|
|
23
23
|
measurementDraftUpsertGroupRequestSchema,
|
|
24
24
|
measurementDraftUpsertMarketRequestSchema,
|
|
25
25
|
measurementDraftUpsertTargetRequestSchema
|
|
26
|
-
} from "./chunk-
|
|
26
|
+
} from "./chunk-VPZMSV3Q.js";
|
|
27
27
|
|
|
28
28
|
// src/measurement-draft-actions.ts
|
|
29
29
|
import { z } from "zod";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
answerServiceAdapters,
|
|
3
3
|
answerServiceDescriptors
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-ARYBII44.js";
|
|
5
5
|
import {
|
|
6
6
|
AeroLlmUsageFeatures,
|
|
7
7
|
aeroTurnStatus,
|
|
@@ -27,14 +27,14 @@ import {
|
|
|
27
27
|
resolveConfiguredAgentProvider,
|
|
28
28
|
resolveSessionProviderAndModel,
|
|
29
29
|
setAeroSystemPrompt
|
|
30
|
-
} from "./chunk-
|
|
30
|
+
} from "./chunk-U3EJ5RW7.js";
|
|
31
31
|
import {
|
|
32
32
|
AeroToolProfiles,
|
|
33
33
|
AeroToolScopes,
|
|
34
34
|
buildAeroStateTools,
|
|
35
35
|
isAeroToolProfile,
|
|
36
36
|
truncateToolResult
|
|
37
|
-
} from "./chunk-
|
|
37
|
+
} from "./chunk-W7PA35VJ.js";
|
|
38
38
|
import {
|
|
39
39
|
getGoogleAuthConfig,
|
|
40
40
|
getGoogleConnection,
|
|
@@ -53,7 +53,7 @@ import {
|
|
|
53
53
|
removeCloudflareTrafficConnection,
|
|
54
54
|
removeCloudflareTrafficConnectionBySourceId,
|
|
55
55
|
upsertCloudflareTrafficConnection
|
|
56
|
-
} from "./chunk-
|
|
56
|
+
} from "./chunk-LTMQ4MHF.js";
|
|
57
57
|
import {
|
|
58
58
|
claudeAdapter,
|
|
59
59
|
embedQueries,
|
|
@@ -64,7 +64,7 @@ import {
|
|
|
64
64
|
openaiAdapter,
|
|
65
65
|
openrouterAdapter,
|
|
66
66
|
perplexityAdapter
|
|
67
|
-
} from "./chunk-
|
|
67
|
+
} from "./chunk-IVBJEVHS.js";
|
|
68
68
|
import {
|
|
69
69
|
classifyUsageSurface,
|
|
70
70
|
createApiUsageTelemetry,
|
|
@@ -76,7 +76,7 @@ import {
|
|
|
76
76
|
startOutcomeTimer,
|
|
77
77
|
trackFeatureCompleted,
|
|
78
78
|
trackInstallState
|
|
79
|
-
} from "./chunk-
|
|
79
|
+
} from "./chunk-ZUXFHO4T.js";
|
|
80
80
|
import {
|
|
81
81
|
isLoopbackBindHost
|
|
82
82
|
} from "./chunk-TSENU4GG.js";
|
|
@@ -84,7 +84,7 @@ import {
|
|
|
84
84
|
isApiProviderRegistrable,
|
|
85
85
|
isCdpProviderRegistrable,
|
|
86
86
|
registeredProviderNames
|
|
87
|
-
} from "./chunk-
|
|
87
|
+
} from "./chunk-XMXYUP7X.js";
|
|
88
88
|
import {
|
|
89
89
|
checkLatestVersionForServer,
|
|
90
90
|
getOrCreateAnonymousId,
|
|
@@ -95,17 +95,17 @@ import {
|
|
|
95
95
|
recordDashboardEvent,
|
|
96
96
|
setTelemetryPreference,
|
|
97
97
|
trackEvent
|
|
98
|
-
} from "./chunk-
|
|
98
|
+
} from "./chunk-7AXVACK6.js";
|
|
99
99
|
import {
|
|
100
100
|
createCanonryMcpServer
|
|
101
|
-
} from "./chunk-
|
|
101
|
+
} from "./chunk-4KMUJOYL.js";
|
|
102
102
|
import {
|
|
103
103
|
CANONRY_MCP_TIERS,
|
|
104
104
|
CANONRY_MCP_TOOLKIT_NAMES
|
|
105
105
|
} from "./chunk-NDTU7FGL.js";
|
|
106
106
|
import {
|
|
107
107
|
ApiClient
|
|
108
|
-
} from "./chunk-
|
|
108
|
+
} from "./chunk-FDRZQH3Y.js";
|
|
109
109
|
import {
|
|
110
110
|
AGENT_PROVIDERS,
|
|
111
111
|
adapterSupportsBatch,
|
|
@@ -136,21 +136,21 @@ import {
|
|
|
136
136
|
saveConfigPatch,
|
|
137
137
|
sentimentInstallReadiness,
|
|
138
138
|
updateSharedProviderExecutionGate
|
|
139
|
-
} from "./chunk-
|
|
139
|
+
} from "./chunk-MVRPFLEL.js";
|
|
140
140
|
import {
|
|
141
141
|
getBundledSkillSnapshots
|
|
142
|
-
} from "./chunk-
|
|
142
|
+
} from "./chunk-2D7O5UHJ.js";
|
|
143
143
|
import {
|
|
144
144
|
computeFactorAverages,
|
|
145
145
|
deleteSiteCrawlGraphLayout,
|
|
146
146
|
persistSiteCrawlGraphLayout,
|
|
147
147
|
prepareSiteCrawlGraphLayout,
|
|
148
148
|
recordedSharePct
|
|
149
|
-
} from "./chunk-
|
|
149
|
+
} from "./chunk-RNA6ZCM6.js";
|
|
150
150
|
import {
|
|
151
151
|
CanonryMcpToolNames,
|
|
152
152
|
canonryMcpTools
|
|
153
|
-
} from "./chunk-
|
|
153
|
+
} from "./chunk-YIIIYNPW.js";
|
|
154
154
|
import {
|
|
155
155
|
PACKAGE_VERSION
|
|
156
156
|
} from "./chunk-AOJU5LKX.js";
|
|
@@ -162,11 +162,11 @@ import {
|
|
|
162
162
|
addLogListener,
|
|
163
163
|
createFastifyLogger,
|
|
164
164
|
createLogger
|
|
165
|
-
} from "./chunk-
|
|
165
|
+
} from "./chunk-ZU6X4SN2.js";
|
|
166
166
|
import {
|
|
167
167
|
computeCitedCompetitorDomains,
|
|
168
168
|
determineCitationState
|
|
169
|
-
} from "./chunk-
|
|
169
|
+
} from "./chunk-K2P2XO6P.js";
|
|
170
170
|
import {
|
|
171
171
|
BingApiError,
|
|
172
172
|
CC_CACHE_DIR,
|
|
@@ -286,7 +286,7 @@ import {
|
|
|
286
286
|
webhookResponseReason,
|
|
287
287
|
webhookTargetRefusalReason,
|
|
288
288
|
writeAuditLog
|
|
289
|
-
} from "./chunk-
|
|
289
|
+
} from "./chunk-6W3ENB2X.js";
|
|
290
290
|
import {
|
|
291
291
|
OperationalLogStore,
|
|
292
292
|
SentimentIdempotencyConflict,
|
|
@@ -372,7 +372,7 @@ import {
|
|
|
372
372
|
siteLivenessState,
|
|
373
373
|
trafficSources,
|
|
374
374
|
usageCounters
|
|
375
|
-
} from "./chunk-
|
|
375
|
+
} from "./chunk-ARIYTYOM.js";
|
|
376
376
|
import {
|
|
377
377
|
AGENT_MEMORY_VALUE_MAX_BYTES,
|
|
378
378
|
AI_ENGINE_DOMAINS,
|
|
@@ -621,7 +621,7 @@ import {
|
|
|
621
621
|
winnabilityClassLabel,
|
|
622
622
|
withRetry,
|
|
623
623
|
withSkippedProviders
|
|
624
|
-
} from "./chunk-
|
|
624
|
+
} from "./chunk-VPZMSV3Q.js";
|
|
625
625
|
|
|
626
626
|
// src/google-marketing-runtime.ts
|
|
627
627
|
import crypto2 from "crypto";
|
|
@@ -5804,7 +5804,7 @@ function nonBlank(value) {
|
|
|
5804
5804
|
return trimmed ? trimmed : void 0;
|
|
5805
5805
|
}
|
|
5806
5806
|
function resolveBuildCommit(env = process.env) {
|
|
5807
|
-
const embedded = true ? "
|
|
5807
|
+
const embedded = true ? "4030f8c56ac36f1152e96e1f1d51596dcb592e84" : void 0;
|
|
5808
5808
|
return nonBlank(embedded) ?? nonBlank(env.CANONRY_COMMIT);
|
|
5809
5809
|
}
|
|
5810
5810
|
function resolveInstanceIdentity(env = process.env) {
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
2
|
createApiClient
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-FDRZQH3Y.js";
|
|
4
4
|
import {
|
|
5
5
|
emitJsonl
|
|
6
6
|
} from "./chunk-Z7IUAJOF.js";
|
|
7
7
|
import {
|
|
8
8
|
measurementDraftOperationSchema,
|
|
9
9
|
runMeasurementDraftAction
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-PAVSKSKA.js";
|
|
11
11
|
import {
|
|
12
12
|
isMachineFormat,
|
|
13
13
|
systemError
|
|
@@ -37,7 +37,7 @@ import {
|
|
|
37
37
|
unattributedAnswersLabel,
|
|
38
38
|
uncheckedSourcesLabel,
|
|
39
39
|
visibilityReportRequestSchema
|
|
40
|
-
} from "./chunk-
|
|
40
|
+
} from "./chunk-VPZMSV3Q.js";
|
|
41
41
|
|
|
42
42
|
// src/commands/measurement-plan.ts
|
|
43
43
|
import crypto from "crypto";
|
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
siteCrawlGraphNodes,
|
|
6
6
|
siteCrawlPages,
|
|
7
7
|
siteCrawlSnapshots
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-ARIYTYOM.js";
|
|
9
9
|
import {
|
|
10
10
|
SITE_CRAWL_GRAPH_MAX_EDGES,
|
|
11
11
|
SITE_CRAWL_GRAPH_MAX_NODES,
|
|
@@ -15,7 +15,7 @@ import {
|
|
|
15
15
|
factorStatusFromDistribution,
|
|
16
16
|
factorStatusFromScore,
|
|
17
17
|
roundPreservingTotal
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-VPZMSV3Q.js";
|
|
19
19
|
|
|
20
20
|
// src/site-audit-factors.ts
|
|
21
21
|
function recordedSharePct(factor) {
|
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
isStoredPageReadTool,
|
|
6
6
|
isStoredReadTool,
|
|
7
7
|
truncateToolResult
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-W7PA35VJ.js";
|
|
9
9
|
import {
|
|
10
10
|
CANONRY_MCP_TOOLKITS
|
|
11
11
|
} from "./chunk-NDTU7FGL.js";
|
|
@@ -22,23 +22,24 @@ import {
|
|
|
22
22
|
resolveApiKeyFor,
|
|
23
23
|
resolveModelForProvider,
|
|
24
24
|
validateAgentProviderRegistry
|
|
25
|
-
} from "./chunk-
|
|
25
|
+
} from "./chunk-MVRPFLEL.js";
|
|
26
26
|
import {
|
|
27
27
|
CanonryMcpToolNames,
|
|
28
28
|
canonryMcpTools
|
|
29
|
-
} from "./chunk-
|
|
29
|
+
} from "./chunk-YIIIYNPW.js";
|
|
30
30
|
import {
|
|
31
31
|
agentToolEvents,
|
|
32
32
|
llmUsageEvents
|
|
33
|
-
} from "./chunk-
|
|
33
|
+
} from "./chunk-ARIYTYOM.js";
|
|
34
34
|
import {
|
|
35
35
|
MeasurementPortfolioLists,
|
|
36
|
+
SeoCapabilities,
|
|
36
37
|
agentTurnLimitsSchema,
|
|
37
38
|
agentVisibilityEvidence,
|
|
38
39
|
describeError,
|
|
39
40
|
validationError,
|
|
40
41
|
visibilityReportRequestSchema
|
|
41
|
-
} from "./chunk-
|
|
42
|
+
} from "./chunk-VPZMSV3Q.js";
|
|
42
43
|
|
|
43
44
|
// src/agent/session.ts
|
|
44
45
|
import fs3 from "fs";
|
|
@@ -765,14 +766,19 @@ async function readAeroViewEvidence(options) {
|
|
|
765
766
|
const base = `/${(options.basePath ?? "").replace(/^\/+|\/+$/g, "")}`.replace(/\/$/, "");
|
|
766
767
|
if (context?.view === "seo") {
|
|
767
768
|
const overview = await client.getSeoOverview(projectName, { profileId: context.seoProfileId, runId: context.seoRunId });
|
|
769
|
+
const evidence2 = overview.evidenceRun;
|
|
770
|
+
const marketRankings = evidence2?.capabilities.includes(SeoCapabilities["market-rankings"]) ? await client.getSeoMarketRankingSummary(projectName, { profileId: evidence2.profileId, runId: evidence2.id, regionKey: context.seoRegionKey, marketKey: context.seoMarketKey }) : void 0;
|
|
768
771
|
const search = new URLSearchParams(context.seoProfileId ? { seoProfileId: context.seoProfileId } : {});
|
|
769
772
|
if (context.seoRunId) search.set("seoRunId", context.seoRunId);
|
|
773
|
+
if (context.seoRegionKey) search.set("seoRegion", context.seoRegionKey);
|
|
774
|
+
if (context.seoMarketKey) search.set("seoMarket", context.seoMarketKey);
|
|
770
775
|
return {
|
|
771
776
|
context,
|
|
772
777
|
retrievedAt: (/* @__PURE__ */ new Date()).toISOString(),
|
|
773
778
|
source: { label: "Open SEO data", href: `${base}/projects/${encodeURIComponent(projectName)}/seo-data?${search}` },
|
|
774
779
|
overview,
|
|
775
|
-
|
|
780
|
+
...marketRankings ? { marketRankings } : {},
|
|
781
|
+
interpretation: "Stored third-party SEO estimates. Preserve profile, scope, locale, dataset and collection date. Estimates are not Search Console observations or AI citation and mention coverage. Missing or partial data is not zero. This read does not refresh data." + (marketRankings ? " Market rankings are observed Google positions of tracked non-brand queries, counted by rank band for the region or market on screen; a failed or unsearched query has no rank. Read its rows with canonry_seo_market_rankings and the same keys." : "")
|
|
776
782
|
};
|
|
777
783
|
}
|
|
778
784
|
if (context?.view === "site-health") {
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
trackIntegrationConnection
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-ZUXFHO4T.js";
|
|
4
4
|
import {
|
|
5
5
|
cliRuntimeContext
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-7AXVACK6.js";
|
|
7
7
|
|
|
8
8
|
// src/cli-connection-telemetry.ts
|
|
9
9
|
function trackCliConnection(properties) {
|
|
@@ -13366,6 +13366,7 @@ var STORED_READ_OPERATIONS = /* @__PURE__ */ new Set([
|
|
|
13366
13366
|
"GET /api/v1/projects/{name}/seo/domain-intelligence",
|
|
13367
13367
|
"GET /api/v1/projects/{name}/seo/ranked-keywords",
|
|
13368
13368
|
"GET /api/v1/projects/{name}/seo/market-rankings",
|
|
13369
|
+
"GET /api/v1/projects/{name}/seo/market-rankings/summary",
|
|
13369
13370
|
"GET /api/v1/projects/{name}/gbp/local-post-attempt",
|
|
13370
13371
|
"GET /api/v1/openapi.json",
|
|
13371
13372
|
"GET /api/v1/screenshots/{snapshotId}",
|
|
@@ -21386,6 +21387,7 @@ var seoMarketRankingContextSchema = z66.object({
|
|
|
21386
21387
|
queryText: z66.string(),
|
|
21387
21388
|
queryClass: queryClassSchema
|
|
21388
21389
|
}).strict();
|
|
21390
|
+
var seoMarketRankingCompetitorSchema = z66.object({ domain: z66.string(), rankOrganic: z66.number().int().positive() }).strict();
|
|
21389
21391
|
var seoMarketRankingSearchStatusSchema = z66.enum(["completed", "partial", "failed", "cancelled"]);
|
|
21390
21392
|
var SeoMarketRankingSearchStatuses = seoMarketRankingSearchStatusSchema.enum;
|
|
21391
21393
|
var seoMarketRankingSchema = seoMarketRankingContextSchema.extend({
|
|
@@ -21399,11 +21401,18 @@ var seoMarketRankingSchema = seoMarketRankingContextSchema.extend({
|
|
|
21399
21401
|
url: z66.string().nullable(),
|
|
21400
21402
|
/** Organic results the search checked: the requested depth, less when partial, 0 when it failed or never ran. */
|
|
21401
21403
|
depth: z66.number().int().nonnegative(),
|
|
21402
|
-
/** Tracked competitors found in the same results
|
|
21403
|
-
competitors: z66.array(
|
|
21404
|
+
/** Tracked competitors found in the same results at their best organic position, best first. */
|
|
21405
|
+
competitors: z66.array(seoMarketRankingCompetitorSchema),
|
|
21404
21406
|
/** Where the results came from; null when the search returned none. */
|
|
21405
21407
|
provenance: seoProvenanceSchema.nullable()
|
|
21406
21408
|
}).strict();
|
|
21409
|
+
var seoMarketRankingOutcomeSchema = z66.enum(["page-1", "ranks-11-20", "ranks-21-plus", "not-ranked", "partly-checked", "failed", "cancelled"]);
|
|
21410
|
+
var SeoMarketRankingOutcomes = seoMarketRankingOutcomeSchema.enum;
|
|
21411
|
+
var seoMarketRankingRowSchema = seoMarketRankingSchema.extend({
|
|
21412
|
+
outcome: seoMarketRankingOutcomeSchema,
|
|
21413
|
+
/** A tracked competitor ranks above the target in these results, or ranks while the target is not in them. */
|
|
21414
|
+
rivalAhead: z66.boolean()
|
|
21415
|
+
}).strict();
|
|
21407
21416
|
var seoResultsSchema = z66.object({
|
|
21408
21417
|
keywordMetrics: z66.array(seoKeywordMetricsSchema),
|
|
21409
21418
|
domainIntelligence: z66.array(seoDomainIntelligenceSchema),
|
|
@@ -21488,11 +21497,57 @@ var seoPageShape = {
|
|
|
21488
21497
|
var seoKeywordMetricsListSchema = z66.object({ ...seoPageShape, items: z66.array(seoKeywordMetricsSchema) }).strict();
|
|
21489
21498
|
var seoDomainIntelligenceListSchema = z66.object({ ...seoPageShape, items: z66.array(seoDomainIntelligenceSchema) }).strict();
|
|
21490
21499
|
var seoRankedKeywordListSchema = z66.object({ ...seoPageShape, items: z66.array(seoRankedKeywordSchema) }).strict();
|
|
21500
|
+
var seoMarketRankingFilterSchema = z66.enum(["needs-work", "page-1", "ranks-11-20", "ranks-21-plus", "not-ranked", "partly-checked", "rival-ahead", "failed", "cancelled"]);
|
|
21501
|
+
var SeoMarketRankingFilters = seoMarketRankingFilterSchema.enum;
|
|
21502
|
+
var seoMarketRankingSortSchema = z66.enum(["market", "rank", "-rank", "query", "-query"]);
|
|
21503
|
+
var SeoMarketRankingSorts = seoMarketRankingSortSchema.enum;
|
|
21491
21504
|
var seoMarketRankingQuerySchema = seoEvidenceQuerySchema.extend({
|
|
21505
|
+
marketKey: z66.string().min(1).max(200).optional(),
|
|
21506
|
+
regionKey: z66.string().min(1).max(200).optional(),
|
|
21507
|
+
outcome: seoMarketRankingFilterSchema.optional(),
|
|
21508
|
+
/** Case-insensitive text found in the query, its searched text or its market label. */
|
|
21509
|
+
q: z66.string().trim().min(1).max(200).optional(),
|
|
21510
|
+
sort: seoMarketRankingSortSchema.optional()
|
|
21511
|
+
}).strict();
|
|
21512
|
+
var seoMarketRankingListSchema = z66.object({ ...seoPageShape, items: z66.array(seoMarketRankingRowSchema) }).strict();
|
|
21513
|
+
var seoMarketRankingCountsSchema = z66.object({
|
|
21514
|
+
queries: z66.number().int().nonnegative(),
|
|
21515
|
+
page1: z66.number().int().nonnegative(),
|
|
21516
|
+
ranks11To20: z66.number().int().nonnegative(),
|
|
21517
|
+
ranks21Plus: z66.number().int().nonnegative(),
|
|
21518
|
+
/** Not in the requested depth: only searches that checked all of it, never a partial one. */
|
|
21519
|
+
notRanked: z66.number().int().nonnegative(),
|
|
21520
|
+
/** A partial search that did not reach the site; ranks past what it checked are unknown. */
|
|
21521
|
+
partlyChecked: z66.number().int().nonnegative(),
|
|
21522
|
+
failed: z66.number().int().nonnegative(),
|
|
21523
|
+
cancelled: z66.number().int().nonnegative(),
|
|
21524
|
+
needsWork: z66.number().int().nonnegative(),
|
|
21525
|
+
/** Rows where a tracked competitor ranks above the target; overlaps the outcome counts. */
|
|
21526
|
+
rivalAhead: z66.number().int().nonnegative()
|
|
21527
|
+
}).strict();
|
|
21528
|
+
var seoMarketRankingGroupKindSchema = z66.enum(["region", "market"]);
|
|
21529
|
+
var SeoMarketRankingGroupKinds = seoMarketRankingGroupKindSchema.enum;
|
|
21530
|
+
var seoMarketRankingGroupSchema = z66.object({
|
|
21531
|
+
key: z66.string(),
|
|
21532
|
+
label: z66.string(),
|
|
21533
|
+
kind: seoMarketRankingGroupKindSchema,
|
|
21534
|
+
counts: seoMarketRankingCountsSchema
|
|
21535
|
+
}).strict();
|
|
21536
|
+
var seoMarketRankingSummaryQuerySchema = seoEvidenceQuerySchema.pick({ profileId: true, runId: true }).extend({
|
|
21492
21537
|
marketKey: z66.string().min(1).max(200).optional(),
|
|
21493
21538
|
regionKey: z66.string().min(1).max(200).optional()
|
|
21494
21539
|
}).strict();
|
|
21495
|
-
var
|
|
21540
|
+
var seoMarketRankingSummarySchema = z66.object({
|
|
21541
|
+
runId: z66.string().nullable(),
|
|
21542
|
+
depth: z66.number().int().positive().nullable(),
|
|
21543
|
+
regionKey: z66.string().nullable(),
|
|
21544
|
+
marketKey: z66.string().nullable(),
|
|
21545
|
+
/** Names of the selected region and market; null when none is selected or the refresh has no rows for it. */
|
|
21546
|
+
regionLabel: z66.string().nullable(),
|
|
21547
|
+
marketLabel: z66.string().nullable(),
|
|
21548
|
+
totals: seoMarketRankingCountsSchema,
|
|
21549
|
+
groups: z66.array(seoMarketRankingGroupSchema)
|
|
21550
|
+
}).strict();
|
|
21496
21551
|
var seoOverviewSchema = z66.object({
|
|
21497
21552
|
status: seoStatusSchema,
|
|
21498
21553
|
profiles: z66.array(seoProfileSchema),
|
|
@@ -21509,6 +21564,7 @@ var seoOverviewSchema = z66.object({
|
|
|
21509
21564
|
keywordMetricsCount: z66.number().int().nonnegative(),
|
|
21510
21565
|
domainIntelligenceCount: z66.number().int().nonnegative(),
|
|
21511
21566
|
rankedKeywordCount: z66.number().int().nonnegative(),
|
|
21567
|
+
/** Rows the market-rankings read returns for the evidence refresh, searches that failed or never ran included. */
|
|
21512
21568
|
marketRankingCount: z66.number().int().nonnegative()
|
|
21513
21569
|
}).strict();
|
|
21514
21570
|
var seoMicrosSchema = z66.number().int().min(0).max(Number.MAX_SAFE_INTEGER);
|
|
@@ -23311,11 +23367,11 @@ function resolveModelPrice(provider, model, overrides) {
|
|
|
23311
23367
|
}
|
|
23312
23368
|
return null;
|
|
23313
23369
|
}
|
|
23314
|
-
function estimateAnswerCostMicros(usage, price,
|
|
23370
|
+
function estimateAnswerCostMicros(usage, price, tier2) {
|
|
23315
23371
|
const cachedInputRate = price.cachedInputPerMTok ?? DEFAULT_CACHED_INPUT_MULTIPLIER * price.inputPerMTok;
|
|
23316
23372
|
const cacheWriteRate = price.cacheWritePerMTok ?? DEFAULT_CACHE_WRITE_MULTIPLIER * price.inputPerMTok;
|
|
23317
23373
|
const tokenMicros = usage.inputTokens * price.inputPerMTok + usage.cachedInputTokens * cachedInputRate + usage.cacheWriteTokens * cacheWriteRate + usage.outputTokens * price.outputPerMTok;
|
|
23318
|
-
const tierMultiplier =
|
|
23374
|
+
const tierMultiplier = tier2 === PricingTiers.batch ? price.batchTokenDiscount ?? DEFAULT_BATCH_TOKEN_DISCOUNT : 1;
|
|
23319
23375
|
const billedSearchUnits = price.searchUnit === SearchUnits.prompt ? usage.searchCount > 0 ? 1 : 0 : usage.searchCount;
|
|
23320
23376
|
const searchMicros = billedSearchUnits * (price.searchPer1k ?? 0) * 1e3;
|
|
23321
23377
|
return Math.round(tokenMicros * tierMultiplier + searchMicros);
|
|
@@ -23821,6 +23877,9 @@ var agentViewContextSchema = z82.object({
|
|
|
23821
23877
|
view: z82.enum(["project", "visibility", "property", "queries", "site-health", "seo"]),
|
|
23822
23878
|
seoProfileId: z82.string().trim().min(1).max(128).optional(),
|
|
23823
23879
|
seoRunId: z82.string().trim().min(1).max(128).optional(),
|
|
23880
|
+
/** The market-rankings region and market the SEO view is narrowed to. */
|
|
23881
|
+
seoRegionKey: z82.string().trim().min(1).max(200).optional(),
|
|
23882
|
+
seoMarketKey: z82.string().trim().min(1).max(200).optional(),
|
|
23824
23883
|
unavailableReason: z82.string().trim().min(1).max(512).optional(),
|
|
23825
23884
|
selection: visibilityReportRequestSchema.optional(),
|
|
23826
23885
|
page: z82.object({
|
|
@@ -23830,6 +23889,7 @@ var agentViewContextSchema = z82.object({
|
|
|
23830
23889
|
}).strict().superRefine((value, ctx) => {
|
|
23831
23890
|
if (value.seoProfileId && value.view !== "seo") ctx.addIssue({ code: "custom", message: "SEO profile context requires the SEO view." });
|
|
23832
23891
|
if (value.seoRunId && value.view !== "seo") ctx.addIssue({ code: "custom", message: "SEO run context requires the SEO view." });
|
|
23892
|
+
if ((value.seoRegionKey || value.seoMarketKey) && value.view !== "seo") ctx.addIssue({ code: "custom", message: "SEO market context requires the SEO view." });
|
|
23833
23893
|
if (value.page && value.view !== "site-health") ctx.addIssue({ code: "custom", message: "Page context requires Site Health." });
|
|
23834
23894
|
if (value.selection && !["visibility", "property", "queries"].includes(value.view)) ctx.addIssue({ code: "custom", message: "Measurement selection requires a measurement view." });
|
|
23835
23895
|
});
|
|
@@ -26152,6 +26212,162 @@ var cliCatalogSchema = z92.object({
|
|
|
26152
26212
|
}))
|
|
26153
26213
|
});
|
|
26154
26214
|
|
|
26215
|
+
// ../contracts/src/seo-market-rankings.ts
|
|
26216
|
+
var PAGE_ONE_LAST_RANK = 10;
|
|
26217
|
+
var CLOSE_LAST_RANK = 20;
|
|
26218
|
+
function bestCompetitorRank(competitors) {
|
|
26219
|
+
return competitors.reduce((best, competitor) => best === null || competitor.rankOrganic < best ? competitor.rankOrganic : best, null);
|
|
26220
|
+
}
|
|
26221
|
+
function outcomeOf(row) {
|
|
26222
|
+
switch (row.searchStatus) {
|
|
26223
|
+
case SeoMarketRankingSearchStatuses.failed:
|
|
26224
|
+
return SeoMarketRankingOutcomes.failed;
|
|
26225
|
+
case SeoMarketRankingSearchStatuses.cancelled:
|
|
26226
|
+
return SeoMarketRankingOutcomes.cancelled;
|
|
26227
|
+
case SeoMarketRankingSearchStatuses.completed:
|
|
26228
|
+
case SeoMarketRankingSearchStatuses.partial: {
|
|
26229
|
+
const rank = row.rankOrganic;
|
|
26230
|
+
if (rank === null) return row.searchStatus === SeoMarketRankingSearchStatuses.partial ? SeoMarketRankingOutcomes["partly-checked"] : SeoMarketRankingOutcomes["not-ranked"];
|
|
26231
|
+
if (rank <= PAGE_ONE_LAST_RANK) return SeoMarketRankingOutcomes["page-1"];
|
|
26232
|
+
return rank <= CLOSE_LAST_RANK ? SeoMarketRankingOutcomes["ranks-11-20"] : SeoMarketRankingOutcomes["ranks-21-plus"];
|
|
26233
|
+
}
|
|
26234
|
+
default: {
|
|
26235
|
+
const unknown = row.searchStatus;
|
|
26236
|
+
return unknown;
|
|
26237
|
+
}
|
|
26238
|
+
}
|
|
26239
|
+
}
|
|
26240
|
+
function marketRankingRow(row) {
|
|
26241
|
+
const best = bestCompetitorRank(row.competitors);
|
|
26242
|
+
return { ...row, outcome: outcomeOf(row), rivalAhead: best !== null && (row.rankOrganic === null || best < row.rankOrganic) };
|
|
26243
|
+
}
|
|
26244
|
+
function matchesMarketRankingFilter(row, filter) {
|
|
26245
|
+
switch (filter) {
|
|
26246
|
+
case SeoMarketRankingFilters["needs-work"]:
|
|
26247
|
+
return row.outcome === SeoMarketRankingOutcomes["ranks-11-20"] || row.outcome === SeoMarketRankingOutcomes["ranks-21-plus"] || row.outcome === SeoMarketRankingOutcomes["not-ranked"] || row.outcome === SeoMarketRankingOutcomes["partly-checked"];
|
|
26248
|
+
case SeoMarketRankingFilters["rival-ahead"]:
|
|
26249
|
+
return row.rivalAhead;
|
|
26250
|
+
case SeoMarketRankingFilters["page-1"]:
|
|
26251
|
+
case SeoMarketRankingFilters["ranks-11-20"]:
|
|
26252
|
+
case SeoMarketRankingFilters["ranks-21-plus"]:
|
|
26253
|
+
case SeoMarketRankingFilters["not-ranked"]:
|
|
26254
|
+
case SeoMarketRankingFilters["partly-checked"]:
|
|
26255
|
+
case SeoMarketRankingFilters.failed:
|
|
26256
|
+
case SeoMarketRankingFilters.cancelled:
|
|
26257
|
+
return row.outcome === filter;
|
|
26258
|
+
default: {
|
|
26259
|
+
const unknown = filter;
|
|
26260
|
+
return unknown;
|
|
26261
|
+
}
|
|
26262
|
+
}
|
|
26263
|
+
}
|
|
26264
|
+
function matchesMarketRankingText(row, text) {
|
|
26265
|
+
const needle = text.trim().toLowerCase();
|
|
26266
|
+
return !needle || [row.queryText, row.searchText, row.marketLabel].some((value) => value.toLowerCase().includes(needle));
|
|
26267
|
+
}
|
|
26268
|
+
var byMarket = (a, b) => compareText(a.regionLabel ?? "", b.regionLabel ?? "") || compareText(a.marketLabel, b.marketLabel) || compareText(a.searchText, b.searchText) || compareText(a.queryText, b.queryText);
|
|
26269
|
+
var byQuery = (a, b) => compareText(a.queryText.toLowerCase(), b.queryText.toLowerCase()) || byMarket(a, b);
|
|
26270
|
+
function tier(row) {
|
|
26271
|
+
switch (row.outcome) {
|
|
26272
|
+
case SeoMarketRankingOutcomes["page-1"]:
|
|
26273
|
+
case SeoMarketRankingOutcomes["ranks-11-20"]:
|
|
26274
|
+
case SeoMarketRankingOutcomes["ranks-21-plus"]:
|
|
26275
|
+
return 0;
|
|
26276
|
+
case SeoMarketRankingOutcomes["partly-checked"]:
|
|
26277
|
+
return 1;
|
|
26278
|
+
case SeoMarketRankingOutcomes["not-ranked"]:
|
|
26279
|
+
return 2;
|
|
26280
|
+
case SeoMarketRankingOutcomes.failed:
|
|
26281
|
+
return 3;
|
|
26282
|
+
case SeoMarketRankingOutcomes.cancelled:
|
|
26283
|
+
return 4;
|
|
26284
|
+
default: {
|
|
26285
|
+
const unknown = row.outcome;
|
|
26286
|
+
return unknown;
|
|
26287
|
+
}
|
|
26288
|
+
}
|
|
26289
|
+
}
|
|
26290
|
+
function worst(row) {
|
|
26291
|
+
const order = tier(row);
|
|
26292
|
+
return order === 2 ? 0 : order === 0 ? 2 : order;
|
|
26293
|
+
}
|
|
26294
|
+
var unranked = (row) => tier(row) === 1 || tier(row) === 2;
|
|
26295
|
+
var rivalOrder = (a, b) => (bestCompetitorRank(a.competitors) ?? Number.MAX_SAFE_INTEGER) - (bestCompetitorRank(b.competitors) ?? Number.MAX_SAFE_INTEGER);
|
|
26296
|
+
function compareMarketRankingsBy(sort) {
|
|
26297
|
+
switch (sort) {
|
|
26298
|
+
case SeoMarketRankingSorts.market:
|
|
26299
|
+
return byMarket;
|
|
26300
|
+
case SeoMarketRankingSorts.query:
|
|
26301
|
+
return byQuery;
|
|
26302
|
+
case SeoMarketRankingSorts["-query"]:
|
|
26303
|
+
return (a, b) => byQuery(b, a);
|
|
26304
|
+
case SeoMarketRankingSorts.rank:
|
|
26305
|
+
return (a, b) => tier(a) - tier(b) || (a.rankOrganic !== null && b.rankOrganic !== null ? a.rankOrganic - b.rankOrganic : 0) || (unranked(a) ? rivalOrder(a, b) : 0) || byQuery(a, b);
|
|
26306
|
+
case SeoMarketRankingSorts["-rank"]:
|
|
26307
|
+
return (a, b) => worst(a) - worst(b) || (a.rankOrganic !== null && b.rankOrganic !== null ? b.rankOrganic - a.rankOrganic : 0) || (unranked(a) ? rivalOrder(a, b) : 0) || byQuery(a, b);
|
|
26308
|
+
default: {
|
|
26309
|
+
const unknown = sort;
|
|
26310
|
+
return unknown;
|
|
26311
|
+
}
|
|
26312
|
+
}
|
|
26313
|
+
}
|
|
26314
|
+
function marketRankingBands(depth, totals) {
|
|
26315
|
+
const fills = (count3, firstRank) => depth === null || depth >= firstRank || (totals?.[count3] ?? 0) > 0;
|
|
26316
|
+
const bands = [{ count: "page1", filter: SeoMarketRankingFilters["page-1"], label: "Page 1" }];
|
|
26317
|
+
if (fills("ranks11To20", 11)) bands.push({ count: "ranks11To20", filter: SeoMarketRankingFilters["ranks-11-20"], label: "11-20" });
|
|
26318
|
+
if (fills("ranks21Plus", 21)) bands.push({ count: "ranks21Plus", filter: SeoMarketRankingFilters["ranks-21-plus"], label: depth === null || depth <= 21 ? "21 and deeper" : `21-${depth}` });
|
|
26319
|
+
bands.push({ count: "notRanked", filter: SeoMarketRankingFilters["not-ranked"], label: depth === null ? "Not ranked" : `Not in top ${depth}` });
|
|
26320
|
+
return bands;
|
|
26321
|
+
}
|
|
26322
|
+
function countMarketRankings(rows) {
|
|
26323
|
+
const counts = { queries: rows.length, page1: 0, ranks11To20: 0, ranks21Plus: 0, notRanked: 0, partlyChecked: 0, failed: 0, cancelled: 0, needsWork: 0, rivalAhead: 0 };
|
|
26324
|
+
for (const row of rows) {
|
|
26325
|
+
switch (row.outcome) {
|
|
26326
|
+
case SeoMarketRankingOutcomes["page-1"]:
|
|
26327
|
+
counts.page1++;
|
|
26328
|
+
break;
|
|
26329
|
+
case SeoMarketRankingOutcomes["ranks-11-20"]:
|
|
26330
|
+
counts.ranks11To20++;
|
|
26331
|
+
break;
|
|
26332
|
+
case SeoMarketRankingOutcomes["ranks-21-plus"]:
|
|
26333
|
+
counts.ranks21Plus++;
|
|
26334
|
+
break;
|
|
26335
|
+
case SeoMarketRankingOutcomes["not-ranked"]:
|
|
26336
|
+
counts.notRanked++;
|
|
26337
|
+
break;
|
|
26338
|
+
case SeoMarketRankingOutcomes["partly-checked"]:
|
|
26339
|
+
counts.partlyChecked++;
|
|
26340
|
+
break;
|
|
26341
|
+
case SeoMarketRankingOutcomes.failed:
|
|
26342
|
+
counts.failed++;
|
|
26343
|
+
break;
|
|
26344
|
+
case SeoMarketRankingOutcomes.cancelled:
|
|
26345
|
+
counts.cancelled++;
|
|
26346
|
+
break;
|
|
26347
|
+
default: {
|
|
26348
|
+
const unknown = row.outcome;
|
|
26349
|
+
return unknown;
|
|
26350
|
+
}
|
|
26351
|
+
}
|
|
26352
|
+
if (row.rivalAhead) counts.rivalAhead++;
|
|
26353
|
+
}
|
|
26354
|
+
counts.needsWork = counts.ranks11To20 + counts.ranks21Plus + counts.notRanked + counts.partlyChecked;
|
|
26355
|
+
return counts;
|
|
26356
|
+
}
|
|
26357
|
+
function groupMarketRankings(rows, scope) {
|
|
26358
|
+
if (scope.marketKey !== void 0) return [];
|
|
26359
|
+
const groups = /* @__PURE__ */ new Map();
|
|
26360
|
+
for (const row of rows) {
|
|
26361
|
+
const region = scope.regionKey === void 0 && row.regionKey !== null;
|
|
26362
|
+
const key = region ? row.regionKey : row.marketKey;
|
|
26363
|
+
const id2 = `${region ? "region" : "market"}\0${key}`;
|
|
26364
|
+
const group = groups.get(id2) ?? { key, label: region ? row.regionLabel ?? key : row.marketLabel, kind: region ? SeoMarketRankingGroupKinds.region : SeoMarketRankingGroupKinds.market, rows: [] };
|
|
26365
|
+
group.rows.push(row);
|
|
26366
|
+
groups.set(id2, group);
|
|
26367
|
+
}
|
|
26368
|
+
return [...groups.values()].map((group) => ({ key: group.key, label: group.label, kind: group.kind, counts: countMarketRankings(group.rows) })).sort((a, b) => b.counts.ranks11To20 - a.counts.ranks11To20 || b.counts.ranks21Plus - a.counts.ranks21Plus || compareText(a.label, b.label) || compareText(a.key, b.key));
|
|
26369
|
+
}
|
|
26370
|
+
|
|
26155
26371
|
export {
|
|
26156
26372
|
apiKeyDtoSchema,
|
|
26157
26373
|
apiKeyListDtoSchema,
|
|
@@ -27387,6 +27603,7 @@ export {
|
|
|
27387
27603
|
seoQuoteSchema,
|
|
27388
27604
|
seoSyncInputSchema,
|
|
27389
27605
|
SeoMarketRankingSearchStatuses,
|
|
27606
|
+
SeoMarketRankingOutcomes,
|
|
27390
27607
|
emptySeoResults,
|
|
27391
27608
|
seoSearchTextForQuery,
|
|
27392
27609
|
seoRunSchema,
|
|
@@ -27396,11 +27613,23 @@ export {
|
|
|
27396
27613
|
seoKeywordMetricsListSchema,
|
|
27397
27614
|
seoDomainIntelligenceListSchema,
|
|
27398
27615
|
seoRankedKeywordListSchema,
|
|
27616
|
+
seoMarketRankingFilterSchema,
|
|
27617
|
+
seoMarketRankingSortSchema,
|
|
27618
|
+
SeoMarketRankingSorts,
|
|
27399
27619
|
seoMarketRankingQuerySchema,
|
|
27400
27620
|
seoMarketRankingListSchema,
|
|
27621
|
+
seoMarketRankingSummaryQuerySchema,
|
|
27622
|
+
seoMarketRankingSummarySchema,
|
|
27401
27623
|
seoOverviewSchema,
|
|
27402
27624
|
seoOperatorTaskSchema,
|
|
27403
27625
|
seoReconcileInputSchema,
|
|
27404
27626
|
seoReconcileResultSchema,
|
|
27405
|
-
SeoAdapterOutcomes
|
|
27627
|
+
SeoAdapterOutcomes,
|
|
27628
|
+
marketRankingRow,
|
|
27629
|
+
matchesMarketRankingFilter,
|
|
27630
|
+
matchesMarketRankingText,
|
|
27631
|
+
compareMarketRankingsBy,
|
|
27632
|
+
marketRankingBands,
|
|
27633
|
+
countMarketRankings,
|
|
27634
|
+
groupMarketRankings
|
|
27406
27635
|
};
|