@canonry/canonry 7.65.0 → 7.66.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/agent-workspace/skills/aero/references/seo-analysis.md +15 -1
- package/assets/agent-workspace/skills/canonry/references/canonry-cli.md +1 -1
- package/assets/assets/{AgentSetupPage-DPHRo4OR.js → AgentSetupPage-DXFxOJ1W.js} +1 -1
- package/assets/assets/{AuditHistoryPanel-qhIB8KRK.js → AuditHistoryPanel-CS8UfTHc.js} +1 -1
- package/assets/assets/{BacklinksPage-iWrZ0-Pp.js → BacklinksPage-D5IA2tNY.js} +1 -1
- package/assets/assets/{HistoryPage-BP1_GGlT.js → HistoryPage-DsQAUkgR.js} +1 -1
- package/assets/assets/MeasurementPropertyPage-CdCnjCaS.js +4 -0
- package/assets/assets/ProjectPage-D3oFKnBG.js +9 -0
- package/assets/assets/{RunsPage-Cc98Px3T.js → RunsPage-BgjN1N3t.js} +1 -1
- package/assets/assets/{SettingsPage-CMyCE-H2.js → SettingsPage-BQuqnEvm.js} +1 -1
- package/assets/assets/SiteHealthSection-C6QE9xNk.js +2 -0
- package/assets/assets/ToneBadge-DNva5_AM.js +60 -0
- package/assets/assets/{TrafficPage-DAef3d2A.js → TrafficPage-BBqpvwl5.js} +2 -2
- package/assets/assets/{TrafficSourceDetailPage-CdoL5Dt9.js → TrafficSourceDetailPage-uxd0ojry.js} +1 -1
- package/assets/assets/{account-context-CWRd3KeS.js → account-context-wRthfm6K.js} +1 -1
- package/assets/assets/{card-Cb_fM36G.js → card-Bq64-UB5.js} +1 -1
- package/assets/assets/{extract-error-message-DSIAoHTR.js → extract-error-message-BRDc8As2.js} +1 -1
- package/assets/assets/{format-helpers-CxNDa1oa.js → format-helpers-D5wFtgg2.js} +1 -1
- package/assets/assets/{index-Da8t1_vu.css → index-C6U4u18w.css} +1 -1
- package/assets/assets/index-Ttz5_bL3.js +60 -0
- package/assets/assets/{query-client-DLdAMlsX.js → query-client-IopmAOx0.js} +1 -1
- package/assets/assets/react-query-CISHjSch.js +1 -0
- package/assets/assets/{react-sigma_core.esm.min-DgK5sRqv.js → react-sigma_core.esm.min-d72rX0Uo.js} +1 -1
- package/assets/assets/{service-Dv9FDyFY.js → service-DsDxSQuN.js} +1 -1
- package/assets/index.html +8 -8
- package/dist/{ads-D4WQOT5K.js → ads-IFKZU7SC.js} +3 -3
- package/dist/{agent-E3IYC7OJ.js → agent-3KMENHL3.js} +7 -7
- package/dist/{agent-ask-ZSKRPB2Z.js → agent-ask-7WVQLLD5.js} +3 -3
- package/dist/{agent-conversations-YHPYPQE2.js → agent-conversations-5LR67TBD.js} +3 -3
- package/dist/{agent-memory-6OWOOD5O.js → agent-memory-GKUCCKVX.js} +3 -3
- package/dist/{agent-providers-7KZK37UO.js → agent-providers-TVCRM3YZ.js} +3 -3
- package/dist/{agent-transcript-3O7GPML6.js → agent-transcript-MUTCOOWG.js} +3 -3
- package/dist/{analytics-P2LLIUYK.js → analytics-2IXSG5ML.js} +3 -3
- package/dist/{apply-VBNNJOCT.js → apply-7RIYK4VC.js} +3 -3
- package/dist/{backfill-F5SSURCH.js → backfill-VU3FV6DQ.js} +9 -9
- package/dist/{backlinks-4RE3TNNA.js → backlinks-DLSRYEX2.js} +3 -3
- package/dist/{bing-V6UN7D44.js → bing-4CXTZUH4.js} +3 -3
- package/dist/{bootstrap-SHTSPAI5.js → bootstrap-OOHSBSDQ.js} +10 -10
- package/dist/{cdp-GDL2VFI3.js → cdp-Y53SRSRV.js} +7 -7
- package/dist/{chunk-ZWZOQNLD.js → chunk-2YBEI6LE.js} +1 -1
- package/dist/{chunk-SL3Y7IOX.js → chunk-6ASEI24F.js} +1 -1
- package/dist/{chunk-HI2HCYLB.js → chunk-743NYXIK.js} +2 -2
- package/dist/{chunk-BV6NXSAH.js → chunk-ALQEGGYM.js} +21 -3
- package/dist/{chunk-GQXSZE2Z.js → chunk-AVQQRTMD.js} +146 -39
- package/dist/{chunk-Q2WZAD5W.js → chunk-BCRRAH5C.js} +1 -1
- package/dist/{chunk-ZPRJCSSR.js → chunk-CKTA5374.js} +1 -1
- package/dist/{chunk-GZPGDAAF.js → chunk-DE2UI37M.js} +2 -2
- package/dist/{chunk-2Y7RN5HG.js → chunk-DH5QRKFW.js} +3 -3
- package/dist/{chunk-CRKOGLKJ.js → chunk-DVYS2RMM.js} +4 -4
- package/dist/{chunk-F7NZEUXP.js → chunk-EIMXB6UH.js} +14 -2
- package/dist/{chunk-C2PYKUD3.js → chunk-EYWC24VC.js} +1 -1
- package/dist/{chunk-2AROR73F.js → chunk-FG7KMVA6.js} +5 -5
- package/dist/{chunk-QNRMYDK6.js → chunk-FNI3QSVD.js} +1 -1
- package/dist/{chunk-H6HIJAIU.js → chunk-H37CDAZX.js} +2 -2
- package/dist/{chunk-XMKXXWMO.js → chunk-IHOVPHUW.js} +2 -2
- package/dist/{chunk-M3OZL6PQ.js → chunk-IPF2S5G2.js} +4 -4
- package/dist/{chunk-3QKKHU7D.js → chunk-J5YZXRD5.js} +8 -8
- package/dist/{chunk-XOMUSIM7.js → chunk-JALKQREN.js} +1 -1
- package/dist/{chunk-Z2EENWM3.js → chunk-JYOMHNRP.js} +182 -20
- package/dist/{chunk-66DPEVLJ.js → chunk-K2HDTMRI.js} +3 -3
- package/dist/{chunk-O3INLME6.js → chunk-L7DQYID4.js} +4 -4
- package/dist/{chunk-HO5W6QC7.js → chunk-LBRG6RKI.js} +2 -1
- package/dist/{chunk-HPUZMBS6.js → chunk-OSF27DCY.js} +2 -2
- package/dist/{chunk-737TOG2F.js → chunk-PFKBQTYD.js} +1 -1
- package/dist/{chunk-S4VCXCRQ.js → chunk-QRBZBJ4U.js} +1 -1
- package/dist/{chunk-X4AHYJCE.js → chunk-SGZWOUIZ.js} +5 -5
- package/dist/{chunk-AE6HJZBU.js → chunk-TJZLICMB.js} +3 -3
- package/dist/{chunk-GM5ZOWBK.js → chunk-VGUZPC3I.js} +4 -4
- package/dist/{chunk-DQVJB6CZ.js → chunk-WNCOBSPN.js} +82 -8
- package/dist/{chunk-LTX3TJ3E.js → chunk-XC44Q5XR.js} +1 -1
- package/dist/{chunk-IYB3EGSD.js → chunk-YJYLFIVT.js} +1 -1
- package/dist/{chunk-IJKKK7F4.js → chunk-YRX5UOM3.js} +1 -1
- package/dist/{chunk-6FN2OQKL.js → chunk-ZRSNMEB3.js} +364 -336
- package/dist/{citations-GO4SPZYS.js → citations-ZTQIYYDB.js} +3 -3
- package/dist/{cli-catalog-6XYQY3PI.js → cli-catalog-IZJXAHFQ.js} +3 -3
- package/dist/{cli-commands-AMURHC27.js → cli-commands-XYM2VMAK.js} +7 -7
- package/dist/cli.js +13 -13
- package/dist/{competitor-JBTKRJ6Y.js → competitor-SIXAPHOM.js} +3 -3
- package/dist/{content-LKXXQ7X4.js → content-XPS3D3Y6.js} +3 -3
- package/dist/{dashboard-LUA7UX6B.js → dashboard-FMJDM5PA.js} +6 -6
- package/dist/{demo-I7JDZJUW.js → demo-QQKSHTPO.js} +1 -1
- package/dist/{demo-server-GNGGWERV.js → demo-server-LQ3QXUAS.js} +71 -11
- package/dist/{discover-TODAYYJ2.js → discover-K5HFEU2T.js} +3 -3
- package/dist/{discover-eval-FWQESEYB.js → discover-eval-6536Z2YN.js} +3 -3
- package/dist/{doctor-AXNJT2UC.js → doctor-STNH3PHH.js} +3 -3
- package/dist/{evidence-2XGEY4ZC.js → evidence-W2EWKBAV.js} +3 -3
- package/dist/{export-cmd-7RMYBIBZ.js → export-cmd-EGHMY3M6.js} +3 -3
- package/dist/{ga-HZDIZGCO.js → ga-DVIG3PVW.js} +3 -3
- package/dist/{gbp-SMRBWJEL.js → gbp-SNS4XZBO.js} +3 -3
- package/dist/{google-2CN345XS.js → google-KGPHZG6E.js} +4 -4
- package/dist/{google-marketing-W7T2VTVW.js → google-marketing-VZR6W3L6.js} +1 -1
- package/dist/{health-cmd-W7OWZ4ZI.js → health-cmd-2KWO2GOM.js} +3 -3
- package/dist/{history-UVNCBHTE.js → history-ZY27B7JE.js} +3 -3
- package/dist/index.d.ts +236 -161
- package/dist/index.js +24 -24
- package/dist/{init-MDGOTK2L.js → init-5TXIKII2.js} +11 -11
- package/dist/{insights-PQ52G5LU.js → insights-MUYEOSOG.js} +3 -3
- package/dist/intelligence-service-U4NSGZUH.js +15 -0
- package/dist/{journeys-3PP5GYVJ.js → journeys-YO54IRVC.js} +3 -3
- package/dist/{keys-CWZUX7IQ.js → keys-M4QZGYVJ.js} +3 -3
- package/dist/{keyword-5OMMULLY.js → keyword-MU62MGWT.js} +3 -3
- package/dist/{logs-3FTE42E3.js → logs-BAQM334Q.js} +3 -3
- package/dist/{mcp-FK5DTI7I.js → mcp-LYS5P3PB.js} +2 -2
- package/dist/mcp.js +9 -9
- package/dist/{measurement-plan-ICO2BQNT.js → measurement-plan-HVSTZWTW.js} +5 -5
- package/dist/{notify-ML4PYD3L.js → notify-XSP5JXU3.js} +3 -3
- package/dist/{organic-evidence-4U4H3DCR.js → organic-evidence-4HYW4PVO.js} +3 -3
- package/dist/{overview-NF427VFO.js → overview-XH72WTZT.js} +4 -4
- package/dist/{project-AAO65OF7.js → project-UKH7FTQX.js} +3 -3
- package/dist/{query-7ZOUQNF5.js → query-RRD5M4QV.js} +3 -3
- package/dist/{research-UQ7AF5N3.js → research-V2IGDUKL.js} +3 -3
- package/dist/{results-export-CZCLC4ZH.js → results-export-5FC7ZT6O.js} +3 -3
- package/dist/{run-4XJZW52R.js → run-B2A4LMWU.js} +4 -4
- package/dist/{schedule-D3E5FDBE.js → schedule-PLY6CHQT.js} +3 -3
- package/dist/{search-DYET2IL4.js → search-ACVK3WH5.js} +3 -3
- package/dist/{serve-R2CI3RWQ.js → serve-2LTQZPEK.js} +25 -25
- package/dist/{session-7CW2V5EH.js → session-IHXMPETX.js} +12 -12
- package/dist/{settings-ZISHACFX.js → settings-ZHBNX2I5.js} +3 -3
- package/dist/{skills-WU6IN3NL.js → skills-KWRTCXTF.js} +2 -2
- package/dist/{snapshot-KCKQDJ2W.js → snapshot-GBDCCV6L.js} +3 -3
- package/dist/{src-WIOU5G4V.js → src-NOTQWGYV.js} +2 -2
- package/dist/{status-CYZFVMYA.js → status-FGDDGBMJ.js} +4 -4
- package/dist/{technical-aeo-P5CS22AR.js → technical-aeo-AK4QI63Q.js} +3 -3
- package/dist/{telemetry-LPK5F2WU.js → telemetry-6QPWYMCR.js} +4 -4
- package/dist/{tools-E3B2GZ6Q.js → tools-PBNTVVN7.js} +11 -11
- package/dist/{traffic-5KZYXXIQ.js → traffic-AS4PIOQL.js} +5 -5
- package/dist/{users-2F346HIW.js → users-BNYKF35J.js} +3 -3
- package/dist/{visibility-stats-ITA6DNF3.js → visibility-stats-TWL3GJMD.js} +3 -3
- package/dist/{wordpress-ZHCFT6V3.js → wordpress-XBWXAACD.js} +3 -3
- package/package.json +1 -1
- package/assets/assets/MeasurementPropertyPage-DfPHZNGo.js +0 -4
- package/assets/assets/ProjectPage-D4n2oqPP.js +0 -9
- package/assets/assets/SiteHealthSection-CGKKUtqQ.js +0 -2
- package/assets/assets/ToneBadge-CJ6ObMRe.js +0 -60
- package/assets/assets/index-DEXKV7TW.js +0 -60
- package/assets/assets/react-query-BktZZtSC.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-EIMXB6UH.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-WNCOBSPN.js";
|
|
23
23
|
|
|
24
24
|
// src/commands/run.ts
|
|
25
25
|
function getClient() {
|
|
@@ -2,11 +2,11 @@ import {
|
|
|
2
2
|
dedupeGscSitemapUrls,
|
|
3
3
|
resolveDiscoveredGscSitemapUrls,
|
|
4
4
|
submitGscSitemapBatches
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-2YBEI6LE.js";
|
|
6
6
|
import {
|
|
7
7
|
measurementDraftOperationSchema,
|
|
8
8
|
runMeasurementDraftAction
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-CKTA5374.js";
|
|
10
10
|
import {
|
|
11
11
|
CliError
|
|
12
12
|
} from "./chunk-HGMYEDAQ.js";
|
|
@@ -141,6 +141,8 @@ import {
|
|
|
141
141
|
seoDomainIntelligenceListSchema,
|
|
142
142
|
seoEvidenceQuerySchema,
|
|
143
143
|
seoKeywordMetricsListSchema,
|
|
144
|
+
seoMarketRankingListSchema,
|
|
145
|
+
seoMarketRankingQuerySchema,
|
|
144
146
|
seoOperatorTaskSchema,
|
|
145
147
|
seoOverviewSchema,
|
|
146
148
|
seoProfileInputSchema,
|
|
@@ -173,7 +175,7 @@ import {
|
|
|
173
175
|
trafficSeriesGranularitySchema,
|
|
174
176
|
visibilityCompareSelectionSchema,
|
|
175
177
|
visibilityReportRequestSchema
|
|
176
|
-
} from "./chunk-
|
|
178
|
+
} from "./chunk-WNCOBSPN.js";
|
|
177
179
|
|
|
178
180
|
// src/mcp/tool-registry.ts
|
|
179
181
|
import { z as z2 } from "zod";
|
|
@@ -1123,6 +1125,7 @@ var sentimentPreviewInputSchema = sentimentBackfillSelectionSchema.safeExtend({
|
|
|
1123
1125
|
var sentimentBackfillInputSchema = sentimentBackfillRequestSchema.extend({ project: projectNameSchema });
|
|
1124
1126
|
var seoIdInputSchema = projectInputSchema.extend({ id: z2.string().min(1) });
|
|
1125
1127
|
var seoEvidenceInputSchema = seoEvidenceQuerySchema.extend({ project: projectNameSchema });
|
|
1128
|
+
var seoMarketRankingInputSchema = seoMarketRankingQuerySchema.extend({ project: projectNameSchema });
|
|
1126
1129
|
var rawCanonryMcpTools = [
|
|
1127
1130
|
defineTool({
|
|
1128
1131
|
name: "canonry_seo_operator_task",
|
|
@@ -1334,6 +1337,21 @@ var rawCanonryMcpTools = [
|
|
|
1334
1337
|
return client.getSeoRankedKeywords(project, query);
|
|
1335
1338
|
}
|
|
1336
1339
|
}),
|
|
1340
|
+
defineTool({
|
|
1341
|
+
name: "canonry_seo_market_rankings",
|
|
1342
|
+
title: "SEO market rankings",
|
|
1343
|
+
description: "Read stored SEO data only. No provider calls. The site's Google position for each tracked non-brand query in each market, searched from that market's location; these are the same tracked queries AI visibility measures, and searchText is the exact text searched. A null rank means not in the checked results (depth), not a failed search. Filter with marketKey or regionKey and keep runId fixed while paging.",
|
|
1344
|
+
access: "read",
|
|
1345
|
+
tier: "seo",
|
|
1346
|
+
inputSchema: seoMarketRankingInputSchema,
|
|
1347
|
+
outputSchema: seoMarketRankingListSchema,
|
|
1348
|
+
annotations: readAnnotations(),
|
|
1349
|
+
openApiOperations: ["GET /api/v1/projects/{name}/seo/market-rankings"],
|
|
1350
|
+
handler: (client, input) => {
|
|
1351
|
+
const { project, ...query } = input;
|
|
1352
|
+
return client.getSeoMarketRankings(project, query);
|
|
1353
|
+
}
|
|
1354
|
+
}),
|
|
1337
1355
|
defineTool({
|
|
1338
1356
|
name: "canonry_sentiment_settings",
|
|
1339
1357
|
title: "Read sentiment readiness and settings",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
answerServiceAdapters,
|
|
3
3
|
answerServiceDescriptors
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-PFKBQTYD.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-FG7KMVA6.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-DVYS2RMM.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-FNI3QSVD.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-OSF27DCY.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-IPF2S5G2.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-YJYLFIVT.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-IHOVPHUW.js";
|
|
99
99
|
import {
|
|
100
100
|
createCanonryMcpServer
|
|
101
|
-
} from "./chunk-
|
|
101
|
+
} from "./chunk-VGUZPC3I.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-EIMXB6UH.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-EYWC24VC.js";
|
|
140
140
|
import {
|
|
141
141
|
getBundledSkillSnapshots
|
|
142
|
-
} from "./chunk-
|
|
142
|
+
} from "./chunk-6ASEI24F.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-H37CDAZX.js";
|
|
150
150
|
import {
|
|
151
151
|
CanonryMcpToolNames,
|
|
152
152
|
canonryMcpTools
|
|
153
|
-
} from "./chunk-
|
|
153
|
+
} from "./chunk-ALQEGGYM.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-SGZWOUIZ.js";
|
|
166
166
|
import {
|
|
167
167
|
computeCitedCompetitorDomains,
|
|
168
168
|
determineCitationState
|
|
169
|
-
} from "./chunk-
|
|
169
|
+
} from "./chunk-QRBZBJ4U.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-JYOMHNRP.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-JALKQREN.js";
|
|
376
376
|
import {
|
|
377
377
|
AGENT_MEMORY_VALUE_MAX_BYTES,
|
|
378
378
|
AI_ENGINE_DOMAINS,
|
|
@@ -597,7 +597,9 @@ import {
|
|
|
597
597
|
sentimentClassifierOutputSchema,
|
|
598
598
|
sentimentEvaluatorProvider,
|
|
599
599
|
sentimentSelectionSchema,
|
|
600
|
+
seoDeviceSchema,
|
|
600
601
|
seoProfileInputSchema,
|
|
602
|
+
seoRankingSettingsSchema,
|
|
601
603
|
serializeForInlineScript,
|
|
602
604
|
serializeRunError,
|
|
603
605
|
shiftIsoCalendarDate,
|
|
@@ -618,7 +620,7 @@ import {
|
|
|
618
620
|
winnabilityClassLabel,
|
|
619
621
|
withRetry,
|
|
620
622
|
withSkippedProviders
|
|
621
|
-
} from "./chunk-
|
|
623
|
+
} from "./chunk-WNCOBSPN.js";
|
|
622
624
|
|
|
623
625
|
// src/google-marketing-runtime.ts
|
|
624
626
|
import crypto2 from "crypto";
|
|
@@ -3342,8 +3344,8 @@ var DataForSeoTransportError = class extends Error {
|
|
|
3342
3344
|
throttle;
|
|
3343
3345
|
retryAfter;
|
|
3344
3346
|
};
|
|
3345
|
-
async function fetchOnce2(credentials,
|
|
3346
|
-
const response = await fetch(`https://api.dataforseo.com/v3
|
|
3347
|
+
async function fetchOnce2(credentials, path6, task, signal) {
|
|
3348
|
+
const response = await fetch(`https://api.dataforseo.com/v3/${path6}`, {
|
|
3347
3349
|
method: "POST",
|
|
3348
3350
|
headers: {
|
|
3349
3351
|
Authorization: `Basic ${Buffer.from(`${credentials.login}:${credentials.password}`).toString("base64")}`,
|
|
@@ -3367,11 +3369,11 @@ async function fetchOnce2(credentials, endpoint, task, signal) {
|
|
|
3367
3369
|
}
|
|
3368
3370
|
return envelope;
|
|
3369
3371
|
}
|
|
3370
|
-
async function dataForSeoFetch(credentials,
|
|
3372
|
+
async function dataForSeoFetch(credentials, path6, task, signal) {
|
|
3371
3373
|
let refusal = null;
|
|
3372
3374
|
return withRetry(() => {
|
|
3373
3375
|
if (signal?.aborted) throw refusal ?? new Error("SEO request was cancelled.");
|
|
3374
|
-
return fetchOnce2(credentials,
|
|
3376
|
+
return fetchOnce2(credentials, path6, task, signal);
|
|
3375
3377
|
}, {
|
|
3376
3378
|
maxRetries: 2,
|
|
3377
3379
|
baseDelayMs: 2e3,
|
|
@@ -3450,18 +3452,82 @@ var resultSchema = z2.object({
|
|
|
3450
3452
|
target: z2.string().optional(),
|
|
3451
3453
|
items: z2.array(z2.unknown()).nullable()
|
|
3452
3454
|
});
|
|
3455
|
+
var serpResultSchema = z2.object({
|
|
3456
|
+
keyword: z2.string(),
|
|
3457
|
+
location_code: z2.number().int(),
|
|
3458
|
+
language_code: z2.string(),
|
|
3459
|
+
datetime: z2.string().nullish(),
|
|
3460
|
+
items: z2.array(z2.unknown()).nullish()
|
|
3461
|
+
});
|
|
3462
|
+
var serpItemTypeSchema = z2.object({ type: z2.string() });
|
|
3463
|
+
var serpItemSchema = z2.object({
|
|
3464
|
+
type: z2.literal("organic"),
|
|
3465
|
+
domain: z2.string().nullish(),
|
|
3466
|
+
url: z2.string().nullish(),
|
|
3467
|
+
rank_group: z2.number().int().positive().nullish(),
|
|
3468
|
+
rank_absolute: z2.number().int().positive().nullish()
|
|
3469
|
+
});
|
|
3453
3470
|
function provenance(request, collectedAt, sourceUpdatedAt) {
|
|
3471
|
+
const serp = request.capability === SeoCapabilities["market-rankings"];
|
|
3454
3472
|
return {
|
|
3455
3473
|
provider: SeoProviders.dataforseo,
|
|
3456
|
-
dataset:
|
|
3474
|
+
dataset: `${serp ? "dataforseo-serp" : "dataforseo-labs"}/google/${request.capability}`,
|
|
3457
3475
|
engine: "google",
|
|
3458
3476
|
locationCode: request.locationCode,
|
|
3459
3477
|
languageCode: request.languageCode,
|
|
3460
|
-
device: "unspecified",
|
|
3478
|
+
device: serp && request.search ? request.search.device : "unspecified",
|
|
3461
3479
|
collectedAt,
|
|
3462
3480
|
sourceUpdatedAt
|
|
3463
3481
|
};
|
|
3464
3482
|
}
|
|
3483
|
+
function hostBelongsTo(host, target) {
|
|
3484
|
+
const value = target.value.toLowerCase();
|
|
3485
|
+
return host === value || target.kind === SeoTargetKinds.domain && target.includeSubdomains && host.endsWith(`.${value}`);
|
|
3486
|
+
}
|
|
3487
|
+
var searchIdentity = (text) => text.replace(/\s+/g, " ").trim().toLowerCase();
|
|
3488
|
+
function marketRankings(rawResult, request, collectedAt) {
|
|
3489
|
+
const search = request.search;
|
|
3490
|
+
const target = request.target;
|
|
3491
|
+
const searchText = request.keywords[0];
|
|
3492
|
+
if (!search || !target || !searchText) throw new Error("Market rankings need a search, a target and search text.");
|
|
3493
|
+
const result = serpResultSchema.parse(rawResult);
|
|
3494
|
+
if (result.location_code !== request.locationCode || result.language_code !== request.languageCode) {
|
|
3495
|
+
throw new Error("SEO provider returned a different market.");
|
|
3496
|
+
}
|
|
3497
|
+
if (searchIdentity(result.keyword) !== searchIdentity(searchText)) throw new Error("SEO provider returned a different search.");
|
|
3498
|
+
const organic = (result.items ?? []).filter((item) => serpItemTypeSchema.safeParse(item).data?.type === "organic").map((item) => serpItemSchema.parse(item)).filter((item) => item.rank_group != null);
|
|
3499
|
+
let best = null;
|
|
3500
|
+
const competitorRanks = /* @__PURE__ */ new Map();
|
|
3501
|
+
const competitors2 = new Set(search.markets.flatMap((market) => market.competitors));
|
|
3502
|
+
for (const item of organic) {
|
|
3503
|
+
const host = item.domain ? normalizeHostname(item.domain) : null;
|
|
3504
|
+
if (!host) continue;
|
|
3505
|
+
if (hostBelongsTo(host, target)) {
|
|
3506
|
+
if (!best || item.rank_group < best.rank_group) best = item;
|
|
3507
|
+
continue;
|
|
3508
|
+
}
|
|
3509
|
+
const domain = registrableDomain(host);
|
|
3510
|
+
const seen = competitorRanks.get(domain);
|
|
3511
|
+
if (domain && competitors2.has(domain) && (seen === void 0 || item.rank_group < seen)) competitorRanks.set(domain, item.rank_group);
|
|
3512
|
+
}
|
|
3513
|
+
const ranked = [...competitorRanks].map(([domain, rankOrganic]) => ({ domain, rankOrganic })).sort((a, b) => a.rankOrganic - b.rankOrganic || compareText(a.domain, b.domain));
|
|
3514
|
+
const source = provenance(request, collectedAt, result.datetime ?? null);
|
|
3515
|
+
return search.markets.map((market) => {
|
|
3516
|
+
const tracked = new Set(market.competitors);
|
|
3517
|
+
return {
|
|
3518
|
+
...market.context,
|
|
3519
|
+
searchText,
|
|
3520
|
+
locationLabel: search.locationLabel,
|
|
3521
|
+
target,
|
|
3522
|
+
rankOrganic: best?.rank_group ?? null,
|
|
3523
|
+
rankAbsolute: best?.rank_absolute ?? null,
|
|
3524
|
+
url: best?.url ?? null,
|
|
3525
|
+
depth: search.depth,
|
|
3526
|
+
competitors: ranked.filter((competitor) => tracked.has(competitor.domain)),
|
|
3527
|
+
provenance: source
|
|
3528
|
+
};
|
|
3529
|
+
});
|
|
3530
|
+
}
|
|
3465
3531
|
function keywordMetrics(item, request, collectedAt) {
|
|
3466
3532
|
return {
|
|
3467
3533
|
keyword: item.keyword,
|
|
@@ -3481,6 +3547,11 @@ function keywordMetrics(item, request, collectedAt) {
|
|
|
3481
3547
|
}
|
|
3482
3548
|
function normalizeDataForSeoResults(rawResults, request, collectedAt) {
|
|
3483
3549
|
const output = emptySeoResults();
|
|
3550
|
+
if (request.capability === SeoCapabilities["market-rankings"]) {
|
|
3551
|
+
if (rawResults.length !== 1) throw new Error("SEO provider returned an unexpected number of results pages.");
|
|
3552
|
+
output.marketRankings.push(...marketRankings(rawResults[0], request, collectedAt));
|
|
3553
|
+
return output;
|
|
3554
|
+
}
|
|
3484
3555
|
for (const raw of rawResults) {
|
|
3485
3556
|
const result = resultSchema.parse(raw);
|
|
3486
3557
|
if (result.location_code !== request.locationCode || result.language_code !== request.languageCode) {
|
|
@@ -3557,12 +3628,53 @@ function normalizeDataForSeoResults(rawResults, request, collectedAt) {
|
|
|
3557
3628
|
|
|
3558
3629
|
// ../integration-dataforseo/src/adapter.ts
|
|
3559
3630
|
var ENDPOINTS = {
|
|
3560
|
-
[SeoCapabilities["keyword-metrics"]]: "keyword_overview",
|
|
3561
|
-
[SeoCapabilities["domain-intelligence"]]: "domain_rank_overview",
|
|
3562
|
-
[SeoCapabilities["ranked-keywords"]]: "ranked_keywords"
|
|
3631
|
+
[SeoCapabilities["keyword-metrics"]]: "dataforseo_labs/google/keyword_overview/live",
|
|
3632
|
+
[SeoCapabilities["domain-intelligence"]]: "dataforseo_labs/google/domain_rank_overview/live",
|
|
3633
|
+
[SeoCapabilities["ranked-keywords"]]: "dataforseo_labs/google/ranked_keywords/live",
|
|
3634
|
+
[SeoCapabilities["market-rankings"]]: "serp/google/organic/live/advanced"
|
|
3563
3635
|
};
|
|
3636
|
+
var MAX_SEARCH_TEXT_LENGTH = 700;
|
|
3564
3637
|
var REQUEST_REFUSALS = /* @__PURE__ */ new Set([4e4, 40006, 40100, 40104, 40200, 40203, 40205, 40206, 40207, 40210, 40501, 40502, 40503, 40506]);
|
|
3638
|
+
function targetHost(target) {
|
|
3639
|
+
const host = target ? normalizeHostname(target.value) : null;
|
|
3640
|
+
if (!target || !host || !registrableDomain(host)) {
|
|
3641
|
+
throw validationError("SEO requires a bare public domain or hostname.");
|
|
3642
|
+
}
|
|
3643
|
+
const domain = registrableDomain(host);
|
|
3644
|
+
if (target.kind === SeoTargetKinds.domain && (host !== domain || !target.includeSubdomains)) {
|
|
3645
|
+
throw validationError("Use the root domain with subdomains included, or choose exact host scope.");
|
|
3646
|
+
}
|
|
3647
|
+
if (target.kind === SeoTargetKinds.host && target.includeSubdomains) {
|
|
3648
|
+
throw validationError("Exact host scope cannot include subdomains.");
|
|
3649
|
+
}
|
|
3650
|
+
return host;
|
|
3651
|
+
}
|
|
3652
|
+
function marketRankingPayload(request) {
|
|
3653
|
+
const search = request.search;
|
|
3654
|
+
const text = request.keywords[0]?.trim() ?? "";
|
|
3655
|
+
if (!search || request.keywords.length !== 1 || !text || text.length > MAX_SEARCH_TEXT_LENGTH) {
|
|
3656
|
+
throw validationError("Market rankings search one tracked query of up to 700 characters at a time.");
|
|
3657
|
+
}
|
|
3658
|
+
if (!seoRankingSettingsSchema.shape.depth.safeParse(search.depth).success || !seoDeviceSchema.safeParse(search.device).success) {
|
|
3659
|
+
throw validationError("Market rankings need a result depth from 10 to 100 in steps of 10 and a device.");
|
|
3660
|
+
}
|
|
3661
|
+
if (search.markets.length === 0) throw validationError("Market rankings need at least one market for each search.");
|
|
3662
|
+
if (!Number.isSafeInteger(request.locationCode) || request.locationCode <= 0 || request.languageCode.length < 2 || request.languageCode.length > 10) {
|
|
3663
|
+
throw validationError("Check the SEO provider location and language.");
|
|
3664
|
+
}
|
|
3665
|
+
if (request.tag.length > 255) throw validationError("SEO task identifier is too long.");
|
|
3666
|
+
targetHost(request.target);
|
|
3667
|
+
return {
|
|
3668
|
+
keyword: text,
|
|
3669
|
+
location_code: request.locationCode,
|
|
3670
|
+
language_code: request.languageCode,
|
|
3671
|
+
device: search.device,
|
|
3672
|
+
depth: search.depth,
|
|
3673
|
+
tag: request.tag
|
|
3674
|
+
};
|
|
3675
|
+
}
|
|
3565
3676
|
function taskPayload(request) {
|
|
3677
|
+
if (request.capability === SeoCapabilities["market-rankings"]) return marketRankingPayload(request);
|
|
3566
3678
|
const parsed = seoProfileInputSchema.pick({ keywords: true, locationCode: true, languageCode: true, limit: true }).safeParse({
|
|
3567
3679
|
keywords: request.keywords,
|
|
3568
3680
|
locationCode: request.locationCode,
|
|
@@ -3579,17 +3691,8 @@ function taskPayload(request) {
|
|
|
3579
3691
|
return { ...common, keywords: request.keywords, include_clickstream_data: false, include_serp_info: true };
|
|
3580
3692
|
}
|
|
3581
3693
|
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
|
-
}
|
|
3694
|
+
const host = targetHost(target);
|
|
3586
3695
|
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
3696
|
switch (request.capability) {
|
|
3594
3697
|
case SeoCapabilities["domain-intelligence"]:
|
|
3595
3698
|
if (target.kind !== SeoTargetKinds.domain) throw validationError("Domain intelligence requires a whole-domain scope.");
|
|
@@ -3613,6 +3716,9 @@ function taskPayload(request) {
|
|
|
3613
3716
|
}
|
|
3614
3717
|
function estimate(request) {
|
|
3615
3718
|
taskPayload(request);
|
|
3719
|
+
if (request.capability === SeoCapabilities["market-rankings"]) {
|
|
3720
|
+
return { maxCostMicros: 2e3 * (request.search.depth / 10), catalogRevision: "dataforseo-google-serp-live-2026-10-25" };
|
|
3721
|
+
}
|
|
3616
3722
|
const rows = request.capability === SeoCapabilities["keyword-metrics"] ? request.keywords.length : request.capability === SeoCapabilities["domain-intelligence"] ? 1 : request.limit;
|
|
3617
3723
|
return { maxCostMicros: 12e3 + 120 * rows, catalogRevision: "dataforseo-google-labs-2026-10-22" };
|
|
3618
3724
|
}
|
|
@@ -3620,6 +3726,7 @@ function appendResults(target, source) {
|
|
|
3620
3726
|
target.keywordMetrics.push(...source.keywordMetrics);
|
|
3621
3727
|
target.domainIntelligence.push(...source.domainIntelligence);
|
|
3622
3728
|
target.rankedKeywords.push(...source.rankedKeywords);
|
|
3729
|
+
target.marketRankings.push(...source.marketRankings);
|
|
3623
3730
|
}
|
|
3624
3731
|
function createDataForSeoAdapter(credentials) {
|
|
3625
3732
|
const auth = { login: credentials.login.trim(), password: credentials.password };
|
|
@@ -5659,7 +5766,7 @@ function nonBlank(value) {
|
|
|
5659
5766
|
return trimmed ? trimmed : void 0;
|
|
5660
5767
|
}
|
|
5661
5768
|
function resolveBuildCommit(env = process.env) {
|
|
5662
|
-
const embedded = true ? "
|
|
5769
|
+
const embedded = true ? "1f62971b3ef629481796f7a7492eb87b0e6e6ee9" : void 0;
|
|
5663
5770
|
return nonBlank(embedded) ?? nonBlank(env.CANONRY_COMMIT);
|
|
5664
5771
|
}
|
|
5665
5772
|
function resolveInstanceIdentity(env = process.env) {
|
|
@@ -23,7 +23,7 @@ import {
|
|
|
23
23
|
measurementDraftUpsertGroupRequestSchema,
|
|
24
24
|
measurementDraftUpsertMarketRequestSchema,
|
|
25
25
|
measurementDraftUpsertTargetRequestSchema
|
|
26
|
-
} from "./chunk-
|
|
26
|
+
} from "./chunk-WNCOBSPN.js";
|
|
27
27
|
|
|
28
28
|
// src/measurement-draft-actions.ts
|
|
29
29
|
import { z } from "zod";
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
trackIntegrationConnection
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-IPF2S5G2.js";
|
|
4
4
|
import {
|
|
5
5
|
cliRuntimeContext
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-IHOVPHUW.js";
|
|
7
7
|
|
|
8
8
|
// src/cli-connection-telemetry.ts
|
|
9
9
|
function trackCliConnection(properties) {
|
|
@@ -2,18 +2,18 @@ import {
|
|
|
2
2
|
configExists,
|
|
3
3
|
loadConfigRaw,
|
|
4
4
|
saveConfigPatch
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-EYWC24VC.js";
|
|
6
6
|
import {
|
|
7
7
|
BUNDLED_SKILL_NAMES,
|
|
8
8
|
installSkills
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-6ASEI24F.js";
|
|
10
10
|
import {
|
|
11
11
|
PACKAGE_VERSION
|
|
12
12
|
} from "./chunk-AOJU5LKX.js";
|
|
13
13
|
import {
|
|
14
14
|
SKILL_MANIFEST_FILENAME,
|
|
15
15
|
SkillsClients
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-WNCOBSPN.js";
|
|
17
17
|
|
|
18
18
|
// src/skills-autosync.ts
|
|
19
19
|
import fs from "fs";
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import {
|
|
2
2
|
runWithUsageTags
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-EIMXB6UH.js";
|
|
4
4
|
import {
|
|
5
5
|
CanonryMcpToolNames,
|
|
6
6
|
canonryMcpTools
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-ALQEGGYM.js";
|
|
8
8
|
import {
|
|
9
9
|
CliError
|
|
10
10
|
} from "./chunk-HGMYEDAQ.js";
|
|
11
11
|
import {
|
|
12
12
|
buildOpenApiDocument
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-JYOMHNRP.js";
|
|
14
14
|
import {
|
|
15
15
|
DEFAULT_COMPETITOR_AUTO_ALIAS_MODE,
|
|
16
16
|
MeasurementPortfolioLists,
|
|
@@ -23,7 +23,7 @@ import {
|
|
|
23
23
|
seoDatasetWithoutVendor,
|
|
24
24
|
seoProviderSchema,
|
|
25
25
|
truncateUtf16
|
|
26
|
-
} from "./chunk-
|
|
26
|
+
} from "./chunk-WNCOBSPN.js";
|
|
27
27
|
|
|
28
28
|
// src/agent/tools.ts
|
|
29
29
|
import { Type as Type2 } from "@earendil-works/pi-ai";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
loadConfig
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-EYWC24VC.js";
|
|
4
4
|
import {
|
|
5
5
|
PACKAGE_VERSION
|
|
6
6
|
} from "./chunk-AOJU5LKX.js";
|
|
@@ -36,7 +36,7 @@ import {
|
|
|
36
36
|
sentimentSettingsReadSchema,
|
|
37
37
|
sentimentSummaryReadSchema,
|
|
38
38
|
upgradeCommandFor
|
|
39
|
-
} from "./chunk-
|
|
39
|
+
} from "./chunk-WNCOBSPN.js";
|
|
40
40
|
|
|
41
41
|
// ../api-client-generated/src/generated/core/bodySerializer.gen.ts
|
|
42
42
|
var jsonBodySerializer = {
|
|
@@ -900,6 +900,11 @@ var getApiV1ProjectsByNameSeoRankedKeywords = (options) => (options.client ?? cl
|
|
|
900
900
|
url: "/api/v1/projects/{name}/seo/ranked-keywords",
|
|
901
901
|
...options
|
|
902
902
|
});
|
|
903
|
+
var getApiV1ProjectsByNameSeoMarketRankings = (options) => (options.client ?? client).get({
|
|
904
|
+
security: [{ scheme: "bearer", type: "http" }],
|
|
905
|
+
url: "/api/v1/projects/{name}/seo/market-rankings",
|
|
906
|
+
...options
|
|
907
|
+
});
|
|
903
908
|
var postApiV1ProjectsByNameSeoRefreshIntents = (options) => (options.client ?? client).post({
|
|
904
909
|
security: [{ scheme: "bearer", type: "http" }],
|
|
905
910
|
url: "/api/v1/projects/{name}/seo/refresh-intents",
|
|
@@ -6188,6 +6193,13 @@ var ApiClient = class {
|
|
|
6188
6193
|
query
|
|
6189
6194
|
}));
|
|
6190
6195
|
}
|
|
6196
|
+
async getSeoMarketRankings(project, query) {
|
|
6197
|
+
return this.invoke(() => getApiV1ProjectsByNameSeoMarketRankings({
|
|
6198
|
+
client: this.heyClient,
|
|
6199
|
+
path: { name: project },
|
|
6200
|
+
query
|
|
6201
|
+
}));
|
|
6202
|
+
}
|
|
6191
6203
|
async getResearchRun(project, runId) {
|
|
6192
6204
|
return this.invoke(
|
|
6193
6205
|
() => getApiV1ProjectsByNameResearchRunsByRunId({
|
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
isStoredPageReadTool,
|
|
6
6
|
isStoredReadTool,
|
|
7
7
|
truncateToolResult
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-DVYS2RMM.js";
|
|
9
9
|
import {
|
|
10
10
|
CANONRY_MCP_TOOLKITS
|
|
11
11
|
} from "./chunk-NDTU7FGL.js";
|
|
@@ -22,15 +22,15 @@ import {
|
|
|
22
22
|
resolveApiKeyFor,
|
|
23
23
|
resolveModelForProvider,
|
|
24
24
|
validateAgentProviderRegistry
|
|
25
|
-
} from "./chunk-
|
|
25
|
+
} from "./chunk-EYWC24VC.js";
|
|
26
26
|
import {
|
|
27
27
|
CanonryMcpToolNames,
|
|
28
28
|
canonryMcpTools
|
|
29
|
-
} from "./chunk-
|
|
29
|
+
} from "./chunk-ALQEGGYM.js";
|
|
30
30
|
import {
|
|
31
31
|
agentToolEvents,
|
|
32
32
|
llmUsageEvents
|
|
33
|
-
} from "./chunk-
|
|
33
|
+
} from "./chunk-JALKQREN.js";
|
|
34
34
|
import {
|
|
35
35
|
MeasurementPortfolioLists,
|
|
36
36
|
agentTurnLimitsSchema,
|
|
@@ -38,7 +38,7 @@ import {
|
|
|
38
38
|
describeError,
|
|
39
39
|
validationError,
|
|
40
40
|
visibilityReportRequestSchema
|
|
41
|
-
} from "./chunk-
|
|
41
|
+
} from "./chunk-WNCOBSPN.js";
|
|
42
42
|
|
|
43
43
|
// src/agent/session.ts
|
|
44
44
|
import fs3 from "fs";
|
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
siteCrawlGraphNodes,
|
|
6
6
|
siteCrawlPages,
|
|
7
7
|
siteCrawlSnapshots
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-JALKQREN.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-WNCOBSPN.js";
|
|
19
19
|
|
|
20
20
|
// src/site-audit-factors.ts
|
|
21
21
|
function recordedSharePct(factor) {
|
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
loadConfig,
|
|
6
6
|
loadConfigRaw,
|
|
7
7
|
saveConfigPatch
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-EYWC24VC.js";
|
|
9
9
|
import {
|
|
10
10
|
CANONRY_NPM_PACKAGE_URL,
|
|
11
11
|
compareSemver,
|
|
@@ -18,7 +18,7 @@ import {
|
|
|
18
18
|
updateCheckEnvOptOut,
|
|
19
19
|
upgradeCaveatFor,
|
|
20
20
|
upgradeCommandFor
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-WNCOBSPN.js";
|
|
22
22
|
|
|
23
23
|
// src/runtime-context.ts
|
|
24
24
|
function cliRuntimeContext(env = process.env, stdio = process) {
|