@canonry/canonry 7.65.1 → 7.67.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/agent-workspace/skills/aero/references/seo-analysis.md +15 -1
- package/assets/agent-workspace/skills/canonry/references/canonry-cli.md +2 -2
- package/assets/assets/{AgentSetupPage-BDLMjn1I.js → AgentSetupPage-ORsy3QEa.js} +3 -3
- package/assets/assets/{AuditHistoryPanel-qhIB8KRK.js → AuditHistoryPanel-vTHZDbfs.js} +1 -1
- package/assets/assets/{BacklinksPage-iWrZ0-Pp.js → BacklinksPage-FqADB5sO.js} +1 -1
- package/assets/assets/{HistoryPage-BP1_GGlT.js → HistoryPage-C4l5Toqa.js} +1 -1
- package/assets/assets/MeasurementPropertyPage-x8f7xanT.js +4 -0
- package/assets/assets/ProjectPage-CG9I2-B4.js +9 -0
- package/assets/assets/{RunsPage-Ddd2oE1Y.js → RunsPage-oyhhwAPq.js} +1 -1
- package/assets/assets/{SettingsPage-D_QdYWDO.js → SettingsPage-DJc4Di1M.js} +1 -1
- package/assets/assets/SiteHealthSection-BvqFg3rG.js +2 -0
- package/assets/assets/ToneBadge-CTWpeKu8.js +60 -0
- package/assets/assets/{TrafficPage-VnBUE1S6.js → TrafficPage-DAD0FFkL.js} +2 -2
- package/assets/assets/TrafficSourceDetailPage-BBEzbawh.js +1 -0
- package/assets/assets/{account-context-CWRd3KeS.js → account-context-DMHOefRt.js} +1 -1
- package/assets/assets/{card-Cb_fM36G.js → card-Brp6fFNG.js} +1 -1
- package/assets/assets/{extract-error-message-DSIAoHTR.js → extract-error-message-5QpQCsGb.js} +1 -1
- package/assets/assets/{format-helpers-CxNDa1oa.js → format-helpers-BFM0FRjT.js} +1 -1
- package/assets/assets/index-BBNs-RhI.js +60 -0
- package/assets/assets/{query-client-DLdAMlsX.js → query-client-BMTW-xss.js} +1 -1
- package/assets/assets/react-query-DGmY6hJa.js +1 -0
- package/assets/assets/{react-sigma_core.esm.min-DEG8vFYD.js → react-sigma_core.esm.min-C0VjhgDo.js} +1 -1
- package/assets/assets/service-DW9u_0aZ.js +1 -0
- package/assets/index.html +7 -7
- package/dist/{ads-D4WQOT5K.js → ads-BXGEL4WI.js} +3 -3
- package/dist/{agent-E3IYC7OJ.js → agent-LFX7GHWD.js} +7 -7
- package/dist/{agent-ask-ZSKRPB2Z.js → agent-ask-QJV225AT.js} +3 -3
- package/dist/{agent-conversations-YHPYPQE2.js → agent-conversations-2TZDIGA6.js} +3 -3
- package/dist/{agent-memory-6OWOOD5O.js → agent-memory-XCY3ZG5C.js} +3 -3
- package/dist/{agent-providers-7KZK37UO.js → agent-providers-VS6PH55Y.js} +3 -3
- package/dist/{agent-transcript-3O7GPML6.js → agent-transcript-BUUHOTZM.js} +3 -3
- package/dist/{analytics-P2LLIUYK.js → analytics-YWJWPUNF.js} +3 -3
- package/dist/{apply-VBNNJOCT.js → apply-BMCYFBEJ.js} +3 -3
- package/dist/{backfill-F5SSURCH.js → backfill-YBOKT5LT.js} +9 -9
- package/dist/{backlinks-4RE3TNNA.js → backlinks-QNNABB4N.js} +3 -3
- package/dist/{bing-V6UN7D44.js → bing-KEMXBABP.js} +3 -3
- package/dist/{bootstrap-SHTSPAI5.js → bootstrap-X2AADK4M.js} +10 -10
- package/dist/{cdp-GDL2VFI3.js → cdp-WVYUEV4U.js} +7 -7
- package/dist/{chunk-3QKKHU7D.js → chunk-2X7DFLMD.js} +8 -8
- package/dist/{chunk-2AROR73F.js → chunk-32BTTG5N.js} +5 -5
- package/dist/{chunk-BV6NXSAH.js → chunk-37R6GTU7.js} +21 -3
- package/dist/{chunk-HPUZMBS6.js → chunk-5DMESZDF.js} +2 -2
- package/dist/{chunk-XOMUSIM7.js → chunk-6DJN7HCK.js} +83 -11
- package/dist/{chunk-SRTX6XYR.js → chunk-AFRCTLUL.js} +370 -337
- package/dist/{chunk-Z2EENWM3.js → chunk-AVISYPUU.js} +877 -478
- package/dist/{chunk-HI2HCYLB.js → chunk-CBYKQRDH.js} +2 -2
- package/dist/{chunk-S4VCXCRQ.js → chunk-EKSXR7RJ.js} +1 -1
- package/dist/{chunk-66DPEVLJ.js → chunk-G6PZEDTH.js} +3 -3
- package/dist/{chunk-GZPGDAAF.js → chunk-GTPGYFZ4.js} +2 -2
- package/dist/{chunk-Q2WZAD5W.js → chunk-HX3WLTZU.js} +1 -1
- package/dist/{chunk-JSAYC36T.js → chunk-IEBMODUI.js} +193 -47
- package/dist/{chunk-2UFA3DYM.js → chunk-KJLICF53.js} +4 -4
- package/dist/{chunk-ZPRJCSSR.js → chunk-LU3M54IY.js} +1 -1
- package/dist/{chunk-HO5W6QC7.js → chunk-MD5PHJBX.js} +2 -1
- package/dist/{chunk-SL3Y7IOX.js → chunk-MLOGEXIO.js} +1 -1
- package/dist/{chunk-LTX3TJ3E.js → chunk-MOJ2XZXK.js} +1 -1
- package/dist/{chunk-IYB3EGSD.js → chunk-NHHZQWMI.js} +1 -1
- package/dist/{chunk-H6HIJAIU.js → chunk-P74TPIWZ.js} +2 -2
- package/dist/{chunk-M3OZL6PQ.js → chunk-RRS7U6HQ.js} +4 -4
- package/dist/{chunk-X4AHYJCE.js → chunk-UHLWNU6I.js} +5 -5
- package/dist/{chunk-C2PYKUD3.js → chunk-UNCOK6DA.js} +1 -1
- package/dist/{chunk-IJKKK7F4.js → chunk-UXTNDZKM.js} +1 -1
- package/dist/{chunk-GM5ZOWBK.js → chunk-VR4MYSEH.js} +4 -4
- package/dist/{chunk-ZWZOQNLD.js → chunk-WSYLDPYF.js} +1 -1
- package/dist/{chunk-AE6HJZBU.js → chunk-WZ4LUM26.js} +3 -3
- package/dist/{chunk-DQVJB6CZ.js → chunk-XEGYSZEV.js} +99 -9
- package/dist/{chunk-F7NZEUXP.js → chunk-XEPEMON2.js} +14 -2
- package/dist/{chunk-CRKOGLKJ.js → chunk-XIA6NWIF.js} +4 -4
- package/dist/{chunk-737TOG2F.js → chunk-XMIKSCAO.js} +1 -1
- package/dist/{chunk-2Y7RN5HG.js → chunk-Y54PMWBH.js} +3 -3
- package/dist/{chunk-QNRMYDK6.js → chunk-YP743QX5.js} +1 -1
- package/dist/{chunk-XMKXXWMO.js → chunk-ZGUR4AZM.js} +2 -2
- package/dist/{citations-GO4SPZYS.js → citations-ZSI5BOGD.js} +3 -3
- package/dist/{cli-catalog-6XYQY3PI.js → cli-catalog-J2HUCGJL.js} +3 -3
- package/dist/{cli-commands-2TZKVGK6.js → cli-commands-XFMVFREG.js} +7 -7
- package/dist/cli.js +13 -13
- package/dist/{competitor-JBTKRJ6Y.js → competitor-WJDN3DLP.js} +3 -3
- package/dist/{content-LKXXQ7X4.js → content-K52YV4BK.js} +3 -3
- package/dist/{dashboard-LUA7UX6B.js → dashboard-L6RKTP35.js} +6 -6
- package/dist/{demo-I7JDZJUW.js → demo-Y7XRD4X4.js} +1 -1
- package/dist/{demo-server-GNGGWERV.js → demo-server-QNQX5CNP.js} +73 -11
- package/dist/{discover-TODAYYJ2.js → discover-UO5M7HQZ.js} +3 -3
- package/dist/{discover-eval-FWQESEYB.js → discover-eval-DN4PS6VN.js} +3 -3
- package/dist/{doctor-AXNJT2UC.js → doctor-7UYUXG7J.js} +3 -3
- package/dist/{evidence-2XGEY4ZC.js → evidence-DGKN5SGQ.js} +3 -3
- package/dist/{export-cmd-7RMYBIBZ.js → export-cmd-QAQWWIRL.js} +3 -3
- package/dist/{ga-HZDIZGCO.js → ga-4LGTEA6J.js} +3 -3
- package/dist/{gbp-SMRBWJEL.js → gbp-XOLYZ4XC.js} +3 -3
- package/dist/{google-2CN345XS.js → google-CAQDCFA6.js} +4 -4
- package/dist/{google-marketing-W7T2VTVW.js → google-marketing-HU5I3XPP.js} +1 -1
- package/dist/{health-cmd-W7OWZ4ZI.js → health-cmd-3PEB3M45.js} +3 -3
- package/dist/{history-UVNCBHTE.js → history-UGUWYPOY.js} +3 -3
- package/dist/index.d.ts +342 -161
- package/dist/index.js +24 -24
- package/dist/{init-2IWS2R7G.js → init-DEW65BLN.js} +11 -11
- package/dist/{insights-PQ52G5LU.js → insights-ZC3R4ZYG.js} +3 -3
- package/dist/intelligence-service-XRJVXZYI.js +15 -0
- package/dist/{journeys-3PP5GYVJ.js → journeys-W6F4BCXF.js} +3 -3
- package/dist/{keys-CWZUX7IQ.js → keys-ME7VRF73.js} +3 -3
- package/dist/{keyword-5OMMULLY.js → keyword-R3PLGSO5.js} +3 -3
- package/dist/{logs-3FTE42E3.js → logs-UM7CWHYB.js} +3 -3
- package/dist/{mcp-FK5DTI7I.js → mcp-BUPP5HC6.js} +2 -2
- package/dist/mcp.js +9 -9
- package/dist/{measurement-plan-ICO2BQNT.js → measurement-plan-R4KZHJII.js} +5 -5
- package/dist/{notify-ML4PYD3L.js → notify-4C26D2MY.js} +3 -3
- package/dist/{organic-evidence-4U4H3DCR.js → organic-evidence-SLIISYHW.js} +3 -3
- package/dist/{overview-NF427VFO.js → overview-JJZZOYQU.js} +4 -4
- package/dist/{project-AAO65OF7.js → project-XJH2OECP.js} +3 -3
- package/dist/{query-7ZOUQNF5.js → query-ZWAIWIYB.js} +3 -3
- package/dist/{research-UQ7AF5N3.js → research-GTVWVZBI.js} +3 -3
- package/dist/{results-export-CZCLC4ZH.js → results-export-CPAWO5AV.js} +3 -3
- package/dist/{run-4XJZW52R.js → run-RI2BMD7U.js} +4 -4
- package/dist/{schedule-D3E5FDBE.js → schedule-HDDWULBX.js} +3 -3
- package/dist/{search-DYET2IL4.js → search-TT3Q2BBP.js} +3 -3
- package/dist/{serve-QWMTR3SN.js → serve-6JYPUU24.js} +25 -25
- package/dist/{session-7CW2V5EH.js → session-DDESFV3N.js} +12 -12
- package/dist/{settings-ZISHACFX.js → settings-4AYXYJVA.js} +3 -3
- package/dist/{skills-WU6IN3NL.js → skills-UFMLMMY5.js} +2 -2
- package/dist/{snapshot-KCKQDJ2W.js → snapshot-KLWQGZB6.js} +3 -3
- package/dist/{src-WIOU5G4V.js → src-6IHGEMT2.js} +6 -2
- package/dist/{status-CYZFVMYA.js → status-HRIUPGUM.js} +4 -4
- package/dist/{technical-aeo-P5CS22AR.js → technical-aeo-HKJQHMMS.js} +3 -3
- package/dist/{telemetry-LPK5F2WU.js → telemetry-IS6KZK32.js} +4 -4
- package/dist/{tools-E3B2GZ6Q.js → tools-ZNVQFEAX.js} +11 -11
- package/dist/{traffic-5KZYXXIQ.js → traffic-PFHFGN44.js} +5 -5
- package/dist/{users-2F346HIW.js → users-BSLUSU6W.js} +3 -3
- package/dist/{visibility-stats-ITA6DNF3.js → visibility-stats-MPRNHPZW.js} +3 -3
- package/dist/{wordpress-ZHCFT6V3.js → wordpress-U5XKHURL.js} +3 -3
- package/package.json +1 -1
- package/assets/assets/MeasurementPropertyPage-dxGJ1GF9.js +0 -4
- package/assets/assets/ProjectPage-W6oYA85b.js +0 -9
- package/assets/assets/SiteHealthSection-DT20rNw-.js +0 -2
- package/assets/assets/ToneBadge-CJ6ObMRe.js +0 -60
- package/assets/assets/TrafficSourceDetailPage-CdoL5Dt9.js +0 -1
- package/assets/assets/index-D6WlecSB.js +0 -60
- package/assets/assets/react-query-BktZZtSC.js +0 -1
- package/assets/assets/service-DKP-BIBy.js +0 -1
- package/dist/intelligence-service-IAUGKMDO.js +0 -15
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
createApiClient
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-XEPEMON2.js";
|
|
4
4
|
import {
|
|
5
5
|
emitJsonl
|
|
6
6
|
} from "./chunk-Z7IUAJOF.js";
|
|
@@ -19,7 +19,7 @@ import {
|
|
|
19
19
|
formatMicros,
|
|
20
20
|
formatRunErrorOneLine,
|
|
21
21
|
resolveProviderInput
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-XEGYSZEV.js";
|
|
23
23
|
|
|
24
24
|
// src/commands/run.ts
|
|
25
25
|
function getClient() {
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
2
|
createApiClient
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-XEPEMON2.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-LU3M54IY.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-XEGYSZEV.js";
|
|
41
41
|
|
|
42
42
|
// src/commands/measurement-plan.ts
|
|
43
43
|
import crypto from "crypto";
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
trackIntegrationConnection
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-RRS7U6HQ.js";
|
|
4
4
|
import {
|
|
5
5
|
cliRuntimeContext
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-ZGUR4AZM.js";
|
|
7
7
|
|
|
8
8
|
// src/cli-connection-telemetry.ts
|
|
9
9
|
function trackCliConnection(properties) {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
answerServiceAdapters,
|
|
3
3
|
answerServiceDescriptors
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-XMIKSCAO.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-32BTTG5N.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-XIA6NWIF.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-YP743QX5.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-5DMESZDF.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-RRS7U6HQ.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-NHHZQWMI.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-ZGUR4AZM.js";
|
|
99
99
|
import {
|
|
100
100
|
createCanonryMcpServer
|
|
101
|
-
} from "./chunk-
|
|
101
|
+
} from "./chunk-VR4MYSEH.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-XEPEMON2.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-UNCOK6DA.js";
|
|
140
140
|
import {
|
|
141
141
|
getBundledSkillSnapshots
|
|
142
|
-
} from "./chunk-
|
|
142
|
+
} from "./chunk-MLOGEXIO.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-P74TPIWZ.js";
|
|
150
150
|
import {
|
|
151
151
|
CanonryMcpToolNames,
|
|
152
152
|
canonryMcpTools
|
|
153
|
-
} from "./chunk-
|
|
153
|
+
} from "./chunk-37R6GTU7.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-UHLWNU6I.js";
|
|
166
166
|
import {
|
|
167
167
|
computeCitedCompetitorDomains,
|
|
168
168
|
determineCitationState
|
|
169
|
-
} from "./chunk-
|
|
169
|
+
} from "./chunk-EKSXR7RJ.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-AVISYPUU.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-6DJN7HCK.js";
|
|
376
376
|
import {
|
|
377
377
|
AGENT_MEMORY_VALUE_MAX_BYTES,
|
|
378
378
|
AI_ENGINE_DOMAINS,
|
|
@@ -450,6 +450,7 @@ import {
|
|
|
450
450
|
SentimentOutcomes,
|
|
451
451
|
SeoAdapterOutcomes,
|
|
452
452
|
SeoCapabilities,
|
|
453
|
+
SeoMarketRankingSearchStatuses,
|
|
453
454
|
SeoProviders,
|
|
454
455
|
SeoRunStatuses,
|
|
455
456
|
SeoTargetKinds,
|
|
@@ -597,7 +598,9 @@ import {
|
|
|
597
598
|
sentimentClassifierOutputSchema,
|
|
598
599
|
sentimentEvaluatorProvider,
|
|
599
600
|
sentimentSelectionSchema,
|
|
601
|
+
seoDeviceSchema,
|
|
600
602
|
seoProfileInputSchema,
|
|
603
|
+
seoRankingSettingsSchema,
|
|
601
604
|
serializeForInlineScript,
|
|
602
605
|
serializeRunError,
|
|
603
606
|
shiftIsoCalendarDate,
|
|
@@ -618,7 +621,7 @@ import {
|
|
|
618
621
|
winnabilityClassLabel,
|
|
619
622
|
withRetry,
|
|
620
623
|
withSkippedProviders
|
|
621
|
-
} from "./chunk-
|
|
624
|
+
} from "./chunk-XEGYSZEV.js";
|
|
622
625
|
|
|
623
626
|
// src/google-marketing-runtime.ts
|
|
624
627
|
import crypto2 from "crypto";
|
|
@@ -3342,8 +3345,8 @@ var DataForSeoTransportError = class extends Error {
|
|
|
3342
3345
|
throttle;
|
|
3343
3346
|
retryAfter;
|
|
3344
3347
|
};
|
|
3345
|
-
async function fetchOnce2(credentials,
|
|
3346
|
-
const response = await fetch(`https://api.dataforseo.com/v3
|
|
3348
|
+
async function fetchOnce2(credentials, path6, task, signal) {
|
|
3349
|
+
const response = await fetch(`https://api.dataforseo.com/v3/${path6}`, {
|
|
3347
3350
|
method: "POST",
|
|
3348
3351
|
headers: {
|
|
3349
3352
|
Authorization: `Basic ${Buffer.from(`${credentials.login}:${credentials.password}`).toString("base64")}`,
|
|
@@ -3367,11 +3370,11 @@ async function fetchOnce2(credentials, endpoint, task, signal) {
|
|
|
3367
3370
|
}
|
|
3368
3371
|
return envelope;
|
|
3369
3372
|
}
|
|
3370
|
-
async function dataForSeoFetch(credentials,
|
|
3373
|
+
async function dataForSeoFetch(credentials, path6, task, signal) {
|
|
3371
3374
|
let refusal = null;
|
|
3372
3375
|
return withRetry(() => {
|
|
3373
3376
|
if (signal?.aborted) throw refusal ?? new Error("SEO request was cancelled.");
|
|
3374
|
-
return fetchOnce2(credentials,
|
|
3377
|
+
return fetchOnce2(credentials, path6, task, signal);
|
|
3375
3378
|
}, {
|
|
3376
3379
|
maxRetries: 2,
|
|
3377
3380
|
baseDelayMs: 2e3,
|
|
@@ -3450,18 +3453,85 @@ var resultSchema = z2.object({
|
|
|
3450
3453
|
target: z2.string().optional(),
|
|
3451
3454
|
items: z2.array(z2.unknown()).nullable()
|
|
3452
3455
|
});
|
|
3456
|
+
var serpResultSchema = z2.object({
|
|
3457
|
+
keyword: z2.string(),
|
|
3458
|
+
location_code: z2.number().int(),
|
|
3459
|
+
language_code: z2.string(),
|
|
3460
|
+
datetime: z2.string().nullish(),
|
|
3461
|
+
items: z2.array(z2.unknown()).nullish()
|
|
3462
|
+
});
|
|
3463
|
+
var serpItemTypeSchema = z2.object({ type: z2.string() });
|
|
3464
|
+
var serpItemSchema = z2.object({
|
|
3465
|
+
type: z2.literal("organic"),
|
|
3466
|
+
domain: z2.string().nullish(),
|
|
3467
|
+
url: z2.string().nullish(),
|
|
3468
|
+
rank_group: z2.number().int().positive().nullish(),
|
|
3469
|
+
rank_absolute: z2.number().int().positive().nullish()
|
|
3470
|
+
});
|
|
3453
3471
|
function provenance(request, collectedAt, sourceUpdatedAt) {
|
|
3472
|
+
const serp = request.capability === SeoCapabilities["market-rankings"];
|
|
3454
3473
|
return {
|
|
3455
3474
|
provider: SeoProviders.dataforseo,
|
|
3456
|
-
dataset:
|
|
3475
|
+
dataset: `${serp ? "dataforseo-serp" : "dataforseo-labs"}/google/${request.capability}`,
|
|
3457
3476
|
engine: "google",
|
|
3458
3477
|
locationCode: request.locationCode,
|
|
3459
3478
|
languageCode: request.languageCode,
|
|
3460
|
-
device: "unspecified",
|
|
3479
|
+
device: serp && request.search ? request.search.device : "unspecified",
|
|
3461
3480
|
collectedAt,
|
|
3462
3481
|
sourceUpdatedAt
|
|
3463
3482
|
};
|
|
3464
3483
|
}
|
|
3484
|
+
function hostBelongsTo(host, target) {
|
|
3485
|
+
const value = target.value.toLowerCase();
|
|
3486
|
+
return host === value || target.kind === SeoTargetKinds.domain && target.includeSubdomains && host.endsWith(`.${value}`);
|
|
3487
|
+
}
|
|
3488
|
+
var searchIdentity = (text) => text.replace(/\s+/g, " ").trim().toLowerCase();
|
|
3489
|
+
function marketRankings(rawResult, request, collectedAt, partial) {
|
|
3490
|
+
const search = request.search;
|
|
3491
|
+
const target = request.target;
|
|
3492
|
+
const searchText = request.keywords[0];
|
|
3493
|
+
if (!search || !target || !searchText) throw new Error("Market rankings need a search, a target and search text.");
|
|
3494
|
+
const result = serpResultSchema.parse(rawResult);
|
|
3495
|
+
if (result.location_code !== request.locationCode || result.language_code !== request.languageCode) {
|
|
3496
|
+
throw new Error("SEO provider returned a different market.");
|
|
3497
|
+
}
|
|
3498
|
+
if (searchIdentity(result.keyword) !== searchIdentity(searchText)) throw new Error("SEO provider returned a different search.");
|
|
3499
|
+
const organic = (result.items ?? []).filter((item) => serpItemTypeSchema.safeParse(item).data?.type === "organic").map((item) => serpItemSchema.parse(item)).filter((item) => item.rank_group != null);
|
|
3500
|
+
const depth = partial ? Math.min(search.depth, organic.reduce((deepest, item) => Math.max(deepest, item.rank_group), 0)) : search.depth;
|
|
3501
|
+
if (depth === 0) throw new Error("SEO provider returned no organic results for a partly collected search.");
|
|
3502
|
+
let best = null;
|
|
3503
|
+
const competitorRanks = /* @__PURE__ */ new Map();
|
|
3504
|
+
const competitors2 = new Set(search.markets.flatMap((market) => market.competitors));
|
|
3505
|
+
for (const item of organic) {
|
|
3506
|
+
const host = item.domain ? normalizeHostname(item.domain) : null;
|
|
3507
|
+
if (!host) continue;
|
|
3508
|
+
if (hostBelongsTo(host, target)) {
|
|
3509
|
+
if (!best || item.rank_group < best.rank_group) best = item;
|
|
3510
|
+
continue;
|
|
3511
|
+
}
|
|
3512
|
+
const domain = registrableDomain(host);
|
|
3513
|
+
const seen = competitorRanks.get(domain);
|
|
3514
|
+
if (domain && competitors2.has(domain) && (seen === void 0 || item.rank_group < seen)) competitorRanks.set(domain, item.rank_group);
|
|
3515
|
+
}
|
|
3516
|
+
const ranked = [...competitorRanks].map(([domain, rankOrganic]) => ({ domain, rankOrganic })).sort((a, b) => a.rankOrganic - b.rankOrganic || compareText(a.domain, b.domain));
|
|
3517
|
+
const source = provenance(request, collectedAt, result.datetime ?? null);
|
|
3518
|
+
return search.markets.map((market) => {
|
|
3519
|
+
const tracked = new Set(market.competitors);
|
|
3520
|
+
return {
|
|
3521
|
+
...market.context,
|
|
3522
|
+
searchText,
|
|
3523
|
+
locationLabel: search.locationLabel,
|
|
3524
|
+
target,
|
|
3525
|
+
searchStatus: partial ? SeoMarketRankingSearchStatuses.partial : SeoMarketRankingSearchStatuses.completed,
|
|
3526
|
+
rankOrganic: best?.rank_group ?? null,
|
|
3527
|
+
rankAbsolute: best?.rank_absolute ?? null,
|
|
3528
|
+
url: best?.url ?? null,
|
|
3529
|
+
depth,
|
|
3530
|
+
competitors: ranked.filter((competitor) => tracked.has(competitor.domain)),
|
|
3531
|
+
provenance: source
|
|
3532
|
+
};
|
|
3533
|
+
});
|
|
3534
|
+
}
|
|
3465
3535
|
function keywordMetrics(item, request, collectedAt) {
|
|
3466
3536
|
return {
|
|
3467
3537
|
keyword: item.keyword,
|
|
@@ -3479,8 +3549,13 @@ function keywordMetrics(item, request, collectedAt) {
|
|
|
3479
3549
|
provenance: provenance(request, collectedAt, item.keyword_info?.last_updated_time ?? null)
|
|
3480
3550
|
};
|
|
3481
3551
|
}
|
|
3482
|
-
function normalizeDataForSeoResults(rawResults, request, collectedAt) {
|
|
3552
|
+
function normalizeDataForSeoResults(rawResults, request, collectedAt, options = {}) {
|
|
3483
3553
|
const output = emptySeoResults();
|
|
3554
|
+
if (request.capability === SeoCapabilities["market-rankings"]) {
|
|
3555
|
+
if (rawResults.length !== 1) throw new Error("SEO provider returned an unexpected number of results pages.");
|
|
3556
|
+
output.marketRankings.push(...marketRankings(rawResults[0], request, collectedAt, options.partial === true));
|
|
3557
|
+
return output;
|
|
3558
|
+
}
|
|
3484
3559
|
for (const raw of rawResults) {
|
|
3485
3560
|
const result = resultSchema.parse(raw);
|
|
3486
3561
|
if (result.location_code !== request.locationCode || result.language_code !== request.languageCode) {
|
|
@@ -3557,12 +3632,81 @@ function normalizeDataForSeoResults(rawResults, request, collectedAt) {
|
|
|
3557
3632
|
|
|
3558
3633
|
// ../integration-dataforseo/src/adapter.ts
|
|
3559
3634
|
var ENDPOINTS = {
|
|
3560
|
-
[SeoCapabilities["keyword-metrics"]]: "keyword_overview",
|
|
3561
|
-
[SeoCapabilities["domain-intelligence"]]: "domain_rank_overview",
|
|
3562
|
-
[SeoCapabilities["ranked-keywords"]]: "ranked_keywords"
|
|
3635
|
+
[SeoCapabilities["keyword-metrics"]]: "dataforseo_labs/google/keyword_overview/live",
|
|
3636
|
+
[SeoCapabilities["domain-intelligence"]]: "dataforseo_labs/google/domain_rank_overview/live",
|
|
3637
|
+
[SeoCapabilities["ranked-keywords"]]: "dataforseo_labs/google/ranked_keywords/live",
|
|
3638
|
+
[SeoCapabilities["market-rankings"]]: "serp/google/organic/live/advanced"
|
|
3563
3639
|
};
|
|
3640
|
+
var MAX_SEARCH_TEXT_LENGTH = 700;
|
|
3641
|
+
var SURCHARGED_OPERATORS = [
|
|
3642
|
+
"allinanchor:",
|
|
3643
|
+
"allintext:",
|
|
3644
|
+
"allintitle:",
|
|
3645
|
+
"allinurl:",
|
|
3646
|
+
"cache:",
|
|
3647
|
+
"define:",
|
|
3648
|
+
"definition:",
|
|
3649
|
+
"filetype:",
|
|
3650
|
+
"id:",
|
|
3651
|
+
"inanchor:",
|
|
3652
|
+
"info:",
|
|
3653
|
+
"intext:",
|
|
3654
|
+
"intitle:",
|
|
3655
|
+
"inurl:",
|
|
3656
|
+
"link:",
|
|
3657
|
+
"site:"
|
|
3658
|
+
];
|
|
3659
|
+
var OPERATOR_SURCHARGE = 5;
|
|
3660
|
+
function usesSurchargedOperator(searchText) {
|
|
3661
|
+
const text = searchText.toLowerCase();
|
|
3662
|
+
return SURCHARGED_OPERATORS.some((operator) => text.includes(operator));
|
|
3663
|
+
}
|
|
3664
|
+
function serpKeyword(searchText) {
|
|
3665
|
+
return searchText.replaceAll("%", "%25").replaceAll("+", "%2B");
|
|
3666
|
+
}
|
|
3564
3667
|
var REQUEST_REFUSALS = /* @__PURE__ */ new Set([4e4, 40006, 40100, 40104, 40200, 40203, 40205, 40206, 40207, 40210, 40501, 40502, 40503, 40506]);
|
|
3668
|
+
var PARTIAL_RESULTS = 40106;
|
|
3669
|
+
var SEARCH_ENGINE_ERROR = 40101;
|
|
3670
|
+
function targetHost(target) {
|
|
3671
|
+
const host = target ? normalizeHostname(target.value) : null;
|
|
3672
|
+
if (!target || !host || !registrableDomain(host)) {
|
|
3673
|
+
throw validationError("SEO requires a bare public domain or hostname.");
|
|
3674
|
+
}
|
|
3675
|
+
const domain = registrableDomain(host);
|
|
3676
|
+
if (target.kind === SeoTargetKinds.domain && (host !== domain || !target.includeSubdomains)) {
|
|
3677
|
+
throw validationError("Use the root domain with subdomains included, or choose exact host scope.");
|
|
3678
|
+
}
|
|
3679
|
+
if (target.kind === SeoTargetKinds.host && target.includeSubdomains) {
|
|
3680
|
+
throw validationError("Exact host scope cannot include subdomains.");
|
|
3681
|
+
}
|
|
3682
|
+
return host;
|
|
3683
|
+
}
|
|
3684
|
+
function marketRankingPayload(request) {
|
|
3685
|
+
const search = request.search;
|
|
3686
|
+
const text = request.keywords[0]?.trim() ?? "";
|
|
3687
|
+
if (!search || request.keywords.length !== 1 || !text || text.length > MAX_SEARCH_TEXT_LENGTH) {
|
|
3688
|
+
throw validationError("Market rankings search one tracked query of up to 700 characters at a time.");
|
|
3689
|
+
}
|
|
3690
|
+
if (!seoRankingSettingsSchema.shape.depth.safeParse(search.depth).success || !seoDeviceSchema.safeParse(search.device).success) {
|
|
3691
|
+
throw validationError("Market rankings need a result depth from 10 to 100 in steps of 10 and a device.");
|
|
3692
|
+
}
|
|
3693
|
+
if (search.markets.length === 0) throw validationError("Market rankings need at least one market for each search.");
|
|
3694
|
+
if (!Number.isSafeInteger(request.locationCode) || request.locationCode <= 0 || request.languageCode.length < 2 || request.languageCode.length > 10) {
|
|
3695
|
+
throw validationError("Check the SEO provider location and language.");
|
|
3696
|
+
}
|
|
3697
|
+
if (request.tag.length > 255) throw validationError("SEO task identifier is too long.");
|
|
3698
|
+
targetHost(request.target);
|
|
3699
|
+
return {
|
|
3700
|
+
keyword: serpKeyword(text),
|
|
3701
|
+
location_code: request.locationCode,
|
|
3702
|
+
language_code: request.languageCode,
|
|
3703
|
+
device: search.device,
|
|
3704
|
+
depth: search.depth,
|
|
3705
|
+
tag: request.tag
|
|
3706
|
+
};
|
|
3707
|
+
}
|
|
3565
3708
|
function taskPayload(request) {
|
|
3709
|
+
if (request.capability === SeoCapabilities["market-rankings"]) return marketRankingPayload(request);
|
|
3566
3710
|
const parsed = seoProfileInputSchema.pick({ keywords: true, locationCode: true, languageCode: true, limit: true }).safeParse({
|
|
3567
3711
|
keywords: request.keywords,
|
|
3568
3712
|
locationCode: request.locationCode,
|
|
@@ -3579,17 +3723,8 @@ function taskPayload(request) {
|
|
|
3579
3723
|
return { ...common, keywords: request.keywords, include_clickstream_data: false, include_serp_info: true };
|
|
3580
3724
|
}
|
|
3581
3725
|
const target = request.target;
|
|
3582
|
-
const host =
|
|
3583
|
-
if (!target || !host || !registrableDomain(host)) {
|
|
3584
|
-
throw validationError("SEO requires a bare public domain or hostname.");
|
|
3585
|
-
}
|
|
3726
|
+
const host = targetHost(target);
|
|
3586
3727
|
const domain = registrableDomain(host);
|
|
3587
|
-
if (target.kind === SeoTargetKinds.domain && (host !== domain || !target.includeSubdomains)) {
|
|
3588
|
-
throw validationError("Use the root domain with subdomains included, or choose exact host scope.");
|
|
3589
|
-
}
|
|
3590
|
-
if (target.kind === SeoTargetKinds.host && target.includeSubdomains) {
|
|
3591
|
-
throw validationError("Exact host scope cannot include subdomains.");
|
|
3592
|
-
}
|
|
3593
3728
|
switch (request.capability) {
|
|
3594
3729
|
case SeoCapabilities["domain-intelligence"]:
|
|
3595
3730
|
if (target.kind !== SeoTargetKinds.domain) throw validationError("Domain intelligence requires a whole-domain scope.");
|
|
@@ -3613,6 +3748,10 @@ function taskPayload(request) {
|
|
|
3613
3748
|
}
|
|
3614
3749
|
function estimate(request) {
|
|
3615
3750
|
taskPayload(request);
|
|
3751
|
+
if (request.capability === SeoCapabilities["market-rankings"]) {
|
|
3752
|
+
const surcharge = usesSurchargedOperator(request.keywords[0]) ? OPERATOR_SURCHARGE : 1;
|
|
3753
|
+
return { maxCostMicros: 2e3 * (request.search.depth / 10) * surcharge, catalogRevision: "dataforseo-google-serp-live-2026-10-25-operators" };
|
|
3754
|
+
}
|
|
3616
3755
|
const rows = request.capability === SeoCapabilities["keyword-metrics"] ? request.keywords.length : request.capability === SeoCapabilities["domain-intelligence"] ? 1 : request.limit;
|
|
3617
3756
|
return { maxCostMicros: 12e3 + 120 * rows, catalogRevision: "dataforseo-google-labs-2026-10-22" };
|
|
3618
3757
|
}
|
|
@@ -3620,6 +3759,7 @@ function appendResults(target, source) {
|
|
|
3620
3759
|
target.keywordMetrics.push(...source.keywordMetrics);
|
|
3621
3760
|
target.domainIntelligence.push(...source.domainIntelligence);
|
|
3622
3761
|
target.rankedKeywords.push(...source.rankedKeywords);
|
|
3762
|
+
target.marketRankings.push(...source.marketRankings);
|
|
3623
3763
|
}
|
|
3624
3764
|
function createDataForSeoAdapter(credentials) {
|
|
3625
3765
|
const auth = { login: credentials.login.trim(), password: credentials.password };
|
|
@@ -3652,22 +3792,27 @@ function createDataForSeoAdapter(credentials) {
|
|
|
3652
3792
|
statusCode: task.status_code,
|
|
3653
3793
|
costMicros: task.cost == null ? null : dollarsToMicros(task.cost)
|
|
3654
3794
|
}));
|
|
3655
|
-
let
|
|
3795
|
+
let complete = 0;
|
|
3796
|
+
let partial = 0;
|
|
3656
3797
|
for (const task of tasks) {
|
|
3657
|
-
|
|
3798
|
+
const partly = task.status_code === PARTIAL_RESULTS && request.capability === SeoCapabilities["market-rankings"];
|
|
3799
|
+
if (task.status_code !== 2e4 && !partly) continue;
|
|
3658
3800
|
try {
|
|
3659
|
-
appendResults(results, normalizeDataForSeoResults(task.result ?? [], request, fetchedAt2));
|
|
3660
|
-
|
|
3801
|
+
appendResults(results, normalizeDataForSeoResults(task.result ?? [], request, fetchedAt2, { partial: partly }));
|
|
3802
|
+
if (partly) partial++;
|
|
3803
|
+
else complete++;
|
|
3661
3804
|
} catch {
|
|
3662
3805
|
}
|
|
3663
3806
|
}
|
|
3664
|
-
const outcome =
|
|
3807
|
+
const outcome = complete === tasks.length ? SeoAdapterOutcomes.completed : complete + partial > 0 ? SeoAdapterOutcomes.partial : SeoAdapterOutcomes.failed;
|
|
3808
|
+
const retryable = request.capability === SeoCapabilities["market-rankings"] && outcome === SeoAdapterOutcomes.failed && receipts.every((receipt) => receipt.statusCode === SEARCH_ENGINE_ERROR && receipt.costMicros !== null);
|
|
3665
3809
|
return {
|
|
3666
3810
|
outcome,
|
|
3667
3811
|
tasks: receipts,
|
|
3668
3812
|
results,
|
|
3669
3813
|
fetchedAt: fetchedAt2,
|
|
3670
|
-
error: outcome === SeoAdapterOutcomes.completed ? null : "Some SEO provider results could not be collected."
|
|
3814
|
+
error: outcome === SeoAdapterOutcomes.completed ? null : "Some SEO provider results could not be collected.",
|
|
3815
|
+
...retryable ? { retryable: true } : {}
|
|
3671
3816
|
};
|
|
3672
3817
|
} catch (error) {
|
|
3673
3818
|
const unaccepted = error instanceof DataForSeoTransportError && error.unaccepted;
|
|
@@ -3772,7 +3917,7 @@ var SeoRuntime = class {
|
|
|
3772
3917
|
for (const [id, entry] of this.pending) {
|
|
3773
3918
|
try {
|
|
3774
3919
|
if (!entry.settled) {
|
|
3775
|
-
if (!this.repository.settle(id, entry.result, entry.owner)) {
|
|
3920
|
+
if (!this.repository.settle(id, entry.result, entry.owner, this.getRuntime()?.policy)) {
|
|
3776
3921
|
createLogger("SeoRuntime").error("seo.receipt.superseded", { message: "SEO receipt could not replace an already reconciled or differently owned task." });
|
|
3777
3922
|
clearInterval(entry.heartbeat);
|
|
3778
3923
|
this.pending.delete(id);
|
|
@@ -5659,7 +5804,7 @@ function nonBlank(value) {
|
|
|
5659
5804
|
return trimmed ? trimmed : void 0;
|
|
5660
5805
|
}
|
|
5661
5806
|
function resolveBuildCommit(env = process.env) {
|
|
5662
|
-
const embedded = true ? "
|
|
5807
|
+
const embedded = true ? "bc41644d8fe1f58eb00fd3cf4e6fc224834d7d24" : void 0;
|
|
5663
5808
|
return nonBlank(embedded) ?? nonBlank(env.CANONRY_COMMIT);
|
|
5664
5809
|
}
|
|
5665
5810
|
function resolveInstanceIdentity(env = process.env) {
|
|
@@ -13022,6 +13167,7 @@ function ensureDefaultHealthSchedule(db, projectId, now = (/* @__PURE__ */ new D
|
|
|
13022
13167
|
cronExpr: DEFAULT_HEALTH_CRON,
|
|
13023
13168
|
timezone: "UTC",
|
|
13024
13169
|
enabled: true,
|
|
13170
|
+
enabledAt: now,
|
|
13025
13171
|
providers: [],
|
|
13026
13172
|
nextRunAt: nextRunFromCron(DEFAULT_HEALTH_CRON, "UTC"),
|
|
13027
13173
|
createdAt: now,
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
registeredProviderNames
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-NHHZQWMI.js";
|
|
4
4
|
import {
|
|
5
5
|
configExists,
|
|
6
6
|
loadConfigRaw
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-UNCOK6DA.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-6IHGEMT2.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-6JYPUU24.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-XEGYSZEV.js";
|
|
27
27
|
|
|
28
28
|
// src/measurement-draft-actions.ts
|
|
29
29
|
import { z } from "zod";
|
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
AppError,
|
|
6
6
|
parseWindowIn,
|
|
7
7
|
resolveDateRange
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-XEGYSZEV.js";
|
|
9
9
|
|
|
10
10
|
// src/cli-access.ts
|
|
11
11
|
var CLI_ACCESS_BY_ID = Object.freeze({
|
|
@@ -331,6 +331,7 @@ var CLI_ACCESS_BY_ID = Object.freeze({
|
|
|
331
331
|
"seo.context": "stored",
|
|
332
332
|
"seo.domain-intelligence": "stored",
|
|
333
333
|
"seo.keyword-metrics": "stored",
|
|
334
|
+
"seo.market-rankings": "stored",
|
|
334
335
|
"seo.operator.reconcile": "write",
|
|
335
336
|
"seo.operator.task": "stored",
|
|
336
337
|
"seo.overview": "stored",
|
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
siteCrawlGraphNodes,
|
|
6
6
|
siteCrawlPages,
|
|
7
7
|
siteCrawlSnapshots
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-6DJN7HCK.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-XEGYSZEV.js";
|
|
19
19
|
|
|
20
20
|
// src/site-audit-factors.ts
|
|
21
21
|
function recordedSharePct(factor) {
|