@canonry/canonry 7.82.0 → 7.83.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/ai-traffic-tracking.md +20 -3
- package/assets/agent-workspace/skills/canonry/references/ai-traffic-tracking.md +20 -3
- package/assets/agent-workspace/skills/canonry/references/canonry-cli.md +35 -2
- package/assets/agent-workspace/skills/canonry/references/server-side-traffic.md +57 -1
- package/assets/assets/{AgentSetupPage-CcjQeUvK.js → AgentSetupPage-B9NOQP8a.js} +6 -6
- package/assets/assets/{AuditHistoryPanel-DgTvt2hQ.js → AuditHistoryPanel-Fvh4WFjq.js} +1 -1
- package/assets/assets/{BacklinksPage-DFQhtk4d.js → BacklinksPage-D1UHFLoV.js} +1 -1
- package/assets/assets/{ChartPrimitives-CfjGDL5d.js → ChartPrimitives-B5L9FUj3.js} +1 -1
- package/assets/assets/{Hint-Ro2RKH6t.js → Hint-CfeZmZig.js} +1 -1
- package/assets/assets/{HistoryPage-CkkWqQol.js → HistoryPage-CBcacDgP.js} +1 -1
- package/assets/assets/{InfoTooltip-CJ3IWqBk.js → InfoTooltip-DrBIPuSU.js} +1 -1
- package/assets/assets/MeasurementPropertyPage-ZuZpurwr.js +4 -0
- package/assets/assets/ProjectPage-BoqDyoGi.js +11 -0
- package/assets/assets/{RunsPage-B4tMl-_9.js → RunsPage-tlCk_gOw.js} +1 -1
- package/assets/assets/{SettingsPage-DmDdf02o.js → SettingsPage-7mRTFLFQ.js} +1 -1
- package/assets/assets/SiteHealthSection-l_A_AmY_.js +2 -0
- package/assets/assets/ToneBadge-CXyUIWzB.js +60 -0
- package/assets/assets/{TrafficPage-C9y8xEr6.js → TrafficPage-DQbBT3TP.js} +2 -2
- package/assets/assets/TrafficSourceDetailPage-D3DwE6Qd.js +1 -0
- package/assets/assets/{account-context-BjM5ZlYl.js → account-context-Bhgg1lEH.js} +1 -1
- package/assets/assets/agent-trust-copy-CKZsKhc0.js +1 -0
- package/assets/assets/{card-CDFncx20.js → card-B16Dvxau.js} +1 -1
- package/assets/assets/{extract-error-message-s3FKmMjt.js → extract-error-message-B5_v_-U8.js} +1 -1
- package/assets/assets/{format-helpers-CYQ-LjnQ.js → format-helpers-Bs9rrO74.js} +1 -1
- package/assets/assets/index-3aBRkQpI.js +60 -0
- package/assets/assets/{index-TBDfE2OO.css → index-BnmWwrZA.css} +1 -1
- package/assets/assets/{query-client-C_dAEVvf.js → query-client-D-tt1sn3.js} +1 -1
- package/assets/assets/react-query-DQr9PoNm.js +1 -0
- package/assets/assets/{react-sigma_core.esm.min-J2l6CcJl.js → react-sigma_core.esm.min-BfZVKh7v.js} +1 -1
- package/assets/assets/{service-BhAtQFOI.js → service-Cmt36bhL.js} +1 -1
- package/assets/assets/{vendor-lucide-BILL9eZH.js → vendor-lucide-CoTHJwai.js} +1 -1
- package/assets/assets/{vendor-markdown-DNTP_967.js → vendor-markdown-cQgSk2i0.js} +1 -1
- package/assets/assets/{vendor-radix-C6jOoh_7.js → vendor-radix-wS8sWIWE.js} +1 -1
- package/assets/assets/{vendor-recharts-PsGDYxIT.js → vendor-recharts-AnNqECZW.js} +1 -1
- package/assets/assets/{vendor-tanstack-BoP7BGaH.js → vendor-tanstack-q5SvZtcv.js} +1 -1
- package/assets/index.html +15 -15
- package/dist/{ads-UDOONRKQ.js → ads-BSVYKQ2L.js} +3 -3
- package/dist/{agent-JTEGEX6X.js → agent-L7VUHOHS.js} +7 -7
- package/dist/{agent-ask-PUV4EVGS.js → agent-ask-A4HQCNLV.js} +3 -3
- package/dist/{agent-conversations-TWTSQHBR.js → agent-conversations-L3TJJKPJ.js} +3 -3
- package/dist/agent-journeys-FEXRAZYN.js +86 -0
- package/dist/{agent-memory-ZJEXAUJB.js → agent-memory-LBTLOHUA.js} +3 -3
- package/dist/{agent-providers-2RQZSGMP.js → agent-providers-X7V2IHRK.js} +3 -3
- package/dist/{agent-transcript-YYS3XBES.js → agent-transcript-YSP2HKUZ.js} +3 -3
- package/dist/{analytics-RLC6PRUZ.js → analytics-FBPHES6M.js} +3 -3
- package/dist/{apply-Z5SSCEJ2.js → apply-PBCXZC5F.js} +3 -3
- package/dist/{backfill-6K2UMALK.js → backfill-NMHO3AIW.js} +9 -9
- package/dist/{backlinks-LDI2VTPT.js → backlinks-QMLTF2VF.js} +3 -3
- package/dist/{bing-SSNMNZEF.js → bing-H65WGTXU.js} +3 -3
- package/dist/{bootstrap-ISRV5I52.js → bootstrap-JAZNMAKP.js} +10 -10
- package/dist/{cdp-WU7QCPQ3.js → cdp-4DAMAHTB.js} +7 -7
- package/dist/{chunk-T76RQIGK.js → chunk-32U5LFIT.js} +4 -4
- package/dist/{chunk-SIRWPXGJ.js → chunk-33EHXZDH.js} +18 -9
- package/dist/{chunk-2GJLKCXL.js → chunk-3UFQI4KL.js} +114 -1
- package/dist/{chunk-5NDUJLUL.js → chunk-4PPF3SIU.js} +7 -7
- package/dist/{chunk-J7EYQFMJ.js → chunk-4XM3T65L.js} +4 -4
- package/dist/{chunk-QHEKMJL4.js → chunk-7Q5BSCKN.js} +2 -2
- package/dist/{chunk-JMUSNZJR.js → chunk-AA6P5NK3.js} +1 -1
- package/dist/{chunk-462CIYLY.js → chunk-CBAYQHNX.js} +1 -1
- package/dist/{chunk-J2DA4LUR.js → chunk-DRZDOL3P.js} +22 -22
- package/dist/{chunk-M7WS2BL3.js → chunk-FICCBAAY.js} +152 -5
- package/dist/{chunk-HDVJNYYE.js → chunk-HIC62JTS.js} +34 -5
- package/dist/{chunk-ZX7XDVPC.js → chunk-IPPNN5KE.js} +18 -2
- package/dist/{chunk-LRFCNERP.js → chunk-JCWXEVYW.js} +3 -3
- package/dist/{chunk-ZR3RYJF3.js → chunk-JECDHS6M.js} +5 -5
- package/dist/{chunk-EIDOBJF2.js → chunk-KCFIQJOL.js} +2 -2
- package/dist/{chunk-2FIDPBWE.js → chunk-KFMU6CLU.js} +1 -1
- package/dist/{chunk-OH42CAWP.js → chunk-LZGVQSZL.js} +1 -1
- package/dist/{chunk-JI7FDO7I.js → chunk-MTW37GXF.js} +1 -1
- package/dist/{chunk-RMZCQUKN.js → chunk-N3PYCQYT.js} +392 -343
- package/dist/{chunk-JDEHNF7K.js → chunk-NCM6PX64.js} +1 -1
- package/dist/{chunk-NPMJFPBM.js → chunk-OIHR2BDK.js} +3042 -2633
- package/dist/{chunk-GKHM5OT6.js → chunk-OMNS42ZQ.js} +2 -2
- package/dist/{chunk-NNUZ37NJ.js → chunk-P76XOEWL.js} +4 -4
- package/dist/{chunk-S6IC7ZK2.js → chunk-PHVIMUAQ.js} +2683 -2474
- package/dist/{chunk-SVF4P6DB.js → chunk-QAJDHHC5.js} +1 -1
- package/dist/{chunk-2PDDTRTG.js → chunk-S5Y633HH.js} +4 -4
- package/dist/{chunk-5K3S74ZX.js → chunk-SEAXXCU6.js} +3 -1
- package/dist/{chunk-4IYFVC22.js → chunk-SKH3N6WI.js} +3 -3
- package/dist/{chunk-VVOCZTNC.js → chunk-SVMTN7MI.js} +2 -2
- package/dist/{chunk-WB6VIQ7L.js → chunk-W5ZBMBBZ.js} +1 -1
- package/dist/{chunk-7ZJHKLTK.js → chunk-WA4FD5Y6.js} +1 -1
- package/dist/{chunk-AAMOBJXJ.js → chunk-WDEDEEWA.js} +1 -1
- package/dist/{chunk-F4FDJI5O.js → chunk-X7U7XYJQ.js} +3 -3
- package/dist/{chunk-DWFVH3E2.js → chunk-Y7WHB65J.js} +2 -2
- package/dist/{chunk-JP4RTZGE.js → chunk-YCRPOY2Y.js} +2 -2
- package/dist/{chunk-VWYB4RA4.js → chunk-YJOGWS7F.js} +2 -2
- package/dist/{citations-X5LS7SZX.js → citations-MNLMO33V.js} +3 -3
- package/dist/{cli-catalog-S4RLOOCK.js → cli-catalog-IKF4A7ZS.js} +3 -3
- package/dist/{cli-commands-BGNM6H6P.js → cli-commands-7UXIHESS.js} +7 -7
- package/dist/cli.js +14 -14
- package/dist/{competitor-O5YXN5SD.js → competitor-5DY5PKNU.js} +3 -3
- package/dist/{content-C6SO5LNZ.js → content-XNK2YY4S.js} +3 -3
- package/dist/{dashboard-3P6FFYCW.js → dashboard-72QZZ5Q6.js} +6 -6
- package/dist/{demo-OJ6C4DU3.js → demo-KD2SLCIP.js} +1 -1
- package/dist/{demo-server-GJXDVREB.js → demo-server-7EYKEN23.js} +12 -12
- package/dist/{discover-Z355GK36.js → discover-D4H4ALIE.js} +3 -3
- package/dist/{discover-eval-6OVS55LV.js → discover-eval-2CID2IBT.js} +3 -3
- package/dist/{doctor-E52VMIEP.js → doctor-OWRQNDWF.js} +3 -3
- package/dist/{evidence-ITVU3HYF.js → evidence-SQX4IMQM.js} +3 -3
- package/dist/{export-cmd-S2UD3ALT.js → export-cmd-73PYMZZ5.js} +3 -3
- package/dist/{ga-T3UEGAZC.js → ga-S6AKEVAL.js} +3 -3
- package/dist/{gbp-3G45OTYX.js → gbp-57J3AXEY.js} +3 -3
- package/dist/{google-YZS4HLN3.js → google-PPU5MJSV.js} +4 -4
- package/dist/{google-marketing-LIV6O63R.js → google-marketing-W4KZ74HX.js} +1 -1
- package/dist/{health-cmd-2FC73XH6.js → health-cmd-QYP4MS3E.js} +3 -3
- package/dist/{history-KLRMAVLG.js → history-MFHBHYH7.js} +3 -3
- package/dist/index.d.ts +683 -11
- package/dist/index.js +26 -26
- package/dist/{init-CTP7OZTR.js → init-R2OT2EC7.js} +12 -12
- package/dist/{insights-KTGRGFAN.js → insights-IIMMXGRO.js} +3 -3
- package/dist/intelligence-service-4D34S2P6.js +16 -0
- package/dist/{journeys-PF2OO5W2.js → journeys-DXXRNANM.js} +6 -5
- package/dist/{keys-7NTJ7TFJ.js → keys-O3T52MLX.js} +3 -3
- package/dist/{keyword-C37ZTBOS.js → keyword-MS23BR7O.js} +3 -3
- package/dist/{logs-GU223TLX.js → logs-SKR5OLTY.js} +3 -3
- package/dist/{mcp-2DZFAHOW.js → mcp-NFC2PBGD.js} +4 -4
- package/dist/mcp.js +10 -10
- package/dist/{measurement-plan-ZSZUAW4Y.js → measurement-plan-Z73LMQYB.js} +5 -5
- package/dist/{notify-GYSA5V67.js → notify-2RUWK2AR.js} +3 -3
- package/dist/{organic-evidence-2NLMSKHX.js → organic-evidence-BGAOEVMZ.js} +3 -3
- package/dist/{overview-NL3B5XME.js → overview-DONWVYZT.js} +4 -4
- package/dist/{project-3THJAPRN.js → project-FFSPWR6R.js} +3 -3
- package/dist/{query-JU5UHTGT.js → query-AXEUWIW3.js} +3 -3
- package/dist/{research-WLS77NOR.js → research-YURAJRCV.js} +3 -3
- package/dist/{results-export-RQKUM5OA.js → results-export-ECSJKZHZ.js} +3 -3
- package/dist/{run-H6BA7COC.js → run-27EXPBE4.js} +4 -4
- package/dist/{schedule-ISTF4OHX.js → schedule-NY55SZZF.js} +3 -3
- package/dist/{search-HIYAHDZR.js → search-RXCBX3ST.js} +3 -3
- package/dist/{serve-5WPYWTOF.js → serve-HWLAUXAU.js} +27 -27
- package/dist/{session-4B5VWFCF.js → session-LBMTUPPY.js} +14 -14
- package/dist/{settings-ZI4UQXJO.js → settings-IPC5SSDU.js} +3 -3
- package/dist/{skills-LN34DUVA.js → skills-Y3VNCWQM.js} +2 -2
- package/dist/{snapshot-BDPWMMDS.js → snapshot-TPDSMADU.js} +3 -3
- package/dist/{src-UENQLEK4.js → src-IDX2F2SR.js} +8 -2
- package/dist/{status-6CIRB7TO.js → status-YSQJBNM7.js} +4 -4
- package/dist/{technical-aeo-L435UGJL.js → technical-aeo-NMUQVIFG.js} +3 -3
- package/dist/{telemetry-VIY5GILS.js → telemetry-OA6W7Q54.js} +4 -4
- package/dist/{tools-LILY27JS.js → tools-LROEIKWI.js} +11 -11
- package/dist/{traffic-KHGUZSP6.js → traffic-ZJHB2TWF.js} +10 -6
- package/dist/{users-KLOJMJSB.js → users-NMWBTCDI.js} +3 -3
- package/dist/{visibility-stats-OG2HEGFX.js → visibility-stats-DE64FVOJ.js} +3 -3
- package/dist/{wordpress-NPVZAUSN.js → wordpress-AJWIJSM7.js} +3 -3
- package/package.json +1 -1
- package/assets/assets/MeasurementPropertyPage-Cwnda2BA.js +0 -4
- package/assets/assets/ProjectPage-C39ua8CG.js +0 -11
- package/assets/assets/SiteHealthSection-CfQePJ7s.js +0 -2
- package/assets/assets/ToneBadge-bXf5LaSI.js +0 -60
- package/assets/assets/TrafficSourceDetailPage-Dklvlek4.js +0 -1
- package/assets/assets/index-qWvnlyfA.js +0 -60
- package/assets/assets/react-query-BKozxbv1.js +0 -1
- package/dist/intelligence-service-YX72V6NG.js +0 -16
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import {
|
|
2
2
|
runWithUsageTags
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-IPPNN5KE.js";
|
|
4
4
|
import {
|
|
5
5
|
CanonryMcpToolNames,
|
|
6
6
|
canonryMcpTools
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-HIC62JTS.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-OIHR2BDK.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-PHVIMUAQ.js";
|
|
27
27
|
|
|
28
28
|
// src/agent/tools.ts
|
|
29
29
|
import { Type as Type2 } from "@earendil-works/pi-ai";
|
|
@@ -4,14 +4,14 @@ import {
|
|
|
4
4
|
} from "./chunk-VJWDBFSL.js";
|
|
5
5
|
import {
|
|
6
6
|
createApiClient
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-IPPNN5KE.js";
|
|
8
8
|
import {
|
|
9
9
|
CliError,
|
|
10
10
|
isMachineFormat
|
|
11
11
|
} from "./chunk-HGMYEDAQ.js";
|
|
12
12
|
import {
|
|
13
13
|
describeError
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-PHVIMUAQ.js";
|
|
15
15
|
|
|
16
16
|
// src/commands/mcp.ts
|
|
17
17
|
import fs from "fs";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
answerServiceAdapters,
|
|
3
3
|
answerServiceDescriptors
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-NCM6PX64.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-4PPF3SIU.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-4XM3T65L.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-QAJDHHC5.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-OMNS42ZQ.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-P76XOEWL.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-AA6P5NK3.js";
|
|
88
88
|
import {
|
|
89
89
|
checkLatestVersionForServer,
|
|
90
90
|
getOrCreateAnonymousId,
|
|
@@ -96,17 +96,17 @@ import {
|
|
|
96
96
|
recordDashboardEvent,
|
|
97
97
|
setTelemetryPreference,
|
|
98
98
|
trackEvent
|
|
99
|
-
} from "./chunk-
|
|
99
|
+
} from "./chunk-YJOGWS7F.js";
|
|
100
100
|
import {
|
|
101
101
|
createCanonryMcpServer
|
|
102
|
-
} from "./chunk-
|
|
102
|
+
} from "./chunk-32U5LFIT.js";
|
|
103
103
|
import {
|
|
104
104
|
CANONRY_MCP_TIERS,
|
|
105
105
|
CANONRY_MCP_TOOLKIT_NAMES
|
|
106
|
-
} from "./chunk-
|
|
106
|
+
} from "./chunk-MTW37GXF.js";
|
|
107
107
|
import {
|
|
108
108
|
ApiClient
|
|
109
|
-
} from "./chunk-
|
|
109
|
+
} from "./chunk-IPPNN5KE.js";
|
|
110
110
|
import {
|
|
111
111
|
AGENT_PROVIDERS,
|
|
112
112
|
adapterSupportsBatch,
|
|
@@ -138,21 +138,21 @@ import {
|
|
|
138
138
|
saveConfigPatch,
|
|
139
139
|
sentimentInstallReadiness,
|
|
140
140
|
updateSharedProviderExecutionGate
|
|
141
|
-
} from "./chunk-
|
|
141
|
+
} from "./chunk-WA4FD5Y6.js";
|
|
142
142
|
import {
|
|
143
143
|
getBundledSkillSnapshots
|
|
144
|
-
} from "./chunk-
|
|
144
|
+
} from "./chunk-CBAYQHNX.js";
|
|
145
145
|
import {
|
|
146
146
|
computeFactorAverages,
|
|
147
147
|
deleteSiteCrawlGraphLayout,
|
|
148
148
|
persistSiteCrawlGraphLayout,
|
|
149
149
|
prepareSiteCrawlGraphLayout,
|
|
150
150
|
recordedSharePct
|
|
151
|
-
} from "./chunk-
|
|
151
|
+
} from "./chunk-Y7WHB65J.js";
|
|
152
152
|
import {
|
|
153
153
|
CanonryMcpToolNames,
|
|
154
154
|
canonryMcpTools
|
|
155
|
-
} from "./chunk-
|
|
155
|
+
} from "./chunk-HIC62JTS.js";
|
|
156
156
|
import {
|
|
157
157
|
PACKAGE_VERSION
|
|
158
158
|
} from "./chunk-AOJU5LKX.js";
|
|
@@ -161,16 +161,16 @@ import {
|
|
|
161
161
|
} from "./chunk-HGMYEDAQ.js";
|
|
162
162
|
import {
|
|
163
163
|
IntelligenceService
|
|
164
|
-
} from "./chunk-
|
|
164
|
+
} from "./chunk-JECDHS6M.js";
|
|
165
165
|
import {
|
|
166
166
|
addLogListener,
|
|
167
167
|
createFastifyLogger,
|
|
168
168
|
createLogger
|
|
169
|
-
} from "./chunk-
|
|
169
|
+
} from "./chunk-SVMTN7MI.js";
|
|
170
170
|
import {
|
|
171
171
|
computeCitedCompetitorDomains,
|
|
172
172
|
determineCitationState
|
|
173
|
-
} from "./chunk-
|
|
173
|
+
} from "./chunk-LZGVQSZL.js";
|
|
174
174
|
import {
|
|
175
175
|
BingApiError,
|
|
176
176
|
CC_CACHE_DIR,
|
|
@@ -291,7 +291,7 @@ import {
|
|
|
291
291
|
webhookResponseReason,
|
|
292
292
|
webhookTargetRefusalReason,
|
|
293
293
|
writeAuditLog
|
|
294
|
-
} from "./chunk-
|
|
294
|
+
} from "./chunk-OIHR2BDK.js";
|
|
295
295
|
import {
|
|
296
296
|
OperationalLogStore,
|
|
297
297
|
SentimentIdempotencyConflict,
|
|
@@ -379,7 +379,7 @@ import {
|
|
|
379
379
|
unrecognizedAgentEventsHourly,
|
|
380
380
|
unrecognizedAgentNotifyState,
|
|
381
381
|
usageCounters
|
|
382
|
-
} from "./chunk-
|
|
382
|
+
} from "./chunk-3UFQI4KL.js";
|
|
383
383
|
import {
|
|
384
384
|
AGENT_MEMORY_VALUE_MAX_BYTES,
|
|
385
385
|
AI_ENGINE_DOMAINS,
|
|
@@ -635,7 +635,7 @@ import {
|
|
|
635
635
|
winnabilityClassLabel,
|
|
636
636
|
withRetry,
|
|
637
637
|
withSkippedProviders
|
|
638
|
-
} from "./chunk-
|
|
638
|
+
} from "./chunk-PHVIMUAQ.js";
|
|
639
639
|
|
|
640
640
|
// src/google-marketing-runtime.ts
|
|
641
641
|
import crypto2 from "crypto";
|
|
@@ -5939,7 +5939,7 @@ function nonBlank(value) {
|
|
|
5939
5939
|
return trimmed ? trimmed : void 0;
|
|
5940
5940
|
}
|
|
5941
5941
|
function resolveBuildCommit(env = process.env) {
|
|
5942
|
-
const embedded = true ? "
|
|
5942
|
+
const embedded = true ? "422c745a4356201c9edcd13c64e567ce2d8afe73" : void 0;
|
|
5943
5943
|
return nonBlank(embedded) ?? nonBlank(env.CANONRY_COMMIT);
|
|
5944
5944
|
}
|
|
5945
5945
|
function resolveInstanceIdentity(env = process.env) {
|
|
@@ -1,14 +1,93 @@
|
|
|
1
1
|
import {
|
|
2
2
|
AI_ENGINE_DOMAINS,
|
|
3
|
+
AgentTrustLevels,
|
|
4
|
+
AgentTrustReasons,
|
|
3
5
|
AiReferralTrafficClasses,
|
|
4
6
|
TrafficEventConfidences,
|
|
5
7
|
TrafficEvidenceKinds,
|
|
8
|
+
TrafficPathClasses,
|
|
6
9
|
TrafficSourceTypes,
|
|
7
10
|
classifyAiReferralTrafficClass,
|
|
8
11
|
classifyJourneyEntry,
|
|
12
|
+
classifyTrafficPath,
|
|
9
13
|
hostMatchesDomain,
|
|
10
14
|
hostOf
|
|
11
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-PHVIMUAQ.js";
|
|
16
|
+
|
|
17
|
+
// ../integration-traffic/src/agent-trust.ts
|
|
18
|
+
var SCANNER_SEGMENTS = /* @__PURE__ */ new Set([
|
|
19
|
+
".git",
|
|
20
|
+
".svn",
|
|
21
|
+
".hg",
|
|
22
|
+
".github",
|
|
23
|
+
".aws",
|
|
24
|
+
".ssh",
|
|
25
|
+
".docker",
|
|
26
|
+
".kube",
|
|
27
|
+
".npmrc",
|
|
28
|
+
".htpasswd",
|
|
29
|
+
".htaccess",
|
|
30
|
+
".ds_store",
|
|
31
|
+
"wp-login.php",
|
|
32
|
+
"xmlrpc.php",
|
|
33
|
+
"phpmyadmin",
|
|
34
|
+
"phpunit",
|
|
35
|
+
"eval-stdin.php"
|
|
36
|
+
]);
|
|
37
|
+
var ENCODED_TRAVERSAL = /(?:%2e%2e|%2e\.|\.%2e)(?:\/|\\|%2f|%5c|$)|\.\.(?:%2f|%5c)|%252e%252e/i;
|
|
38
|
+
var REASON_ORDER = [
|
|
39
|
+
AgentTrustReasons["scanner-path"],
|
|
40
|
+
AgentTrustReasons["unusual-user-agent"],
|
|
41
|
+
AgentTrustReasons["ip-in-published-list"],
|
|
42
|
+
AgentTrustReasons["ip-outside-published-list"],
|
|
43
|
+
AgentTrustReasons["no-ip"],
|
|
44
|
+
AgentTrustReasons["no-published-list"],
|
|
45
|
+
AgentTrustReasons["documented-user-agent"]
|
|
46
|
+
];
|
|
47
|
+
var FAKE_REASONS = /* @__PURE__ */ new Set([
|
|
48
|
+
AgentTrustReasons["scanner-path"],
|
|
49
|
+
AgentTrustReasons["unusual-user-agent"]
|
|
50
|
+
]);
|
|
51
|
+
function isScannerPath(rawPath) {
|
|
52
|
+
const pathOnly = (rawPath.split(/[?#]/)[0] ?? "").toLowerCase();
|
|
53
|
+
if (ENCODED_TRAVERSAL.test(pathOnly)) return true;
|
|
54
|
+
let decoded = pathOnly;
|
|
55
|
+
try {
|
|
56
|
+
decoded = decodeURIComponent(pathOnly);
|
|
57
|
+
} catch {
|
|
58
|
+
}
|
|
59
|
+
for (const segment of decoded.split(/[\\/]+/)) {
|
|
60
|
+
if (!segment) continue;
|
|
61
|
+
if (segment === ".." || segment.endsWith("..")) return true;
|
|
62
|
+
if (SCANNER_SEGMENTS.has(segment) || segment.startsWith("wp-config")) return true;
|
|
63
|
+
if (segment === ".env" || segment.startsWith(".env.") || segment.endsWith(".env")) return true;
|
|
64
|
+
}
|
|
65
|
+
return false;
|
|
66
|
+
}
|
|
67
|
+
function sortAgentTrustReasons(reasons) {
|
|
68
|
+
const present = new Set(reasons);
|
|
69
|
+
return REASON_ORDER.filter((reason) => present.has(reason));
|
|
70
|
+
}
|
|
71
|
+
function ipReason(input) {
|
|
72
|
+
if (input.verification.verified) return AgentTrustReasons["ip-in-published-list"];
|
|
73
|
+
if (input.verification.manifest) return AgentTrustReasons["ip-outside-published-list"];
|
|
74
|
+
return input.listPublished ? AgentTrustReasons["no-ip"] : AgentTrustReasons["no-published-list"];
|
|
75
|
+
}
|
|
76
|
+
function assessAgentTrust(input) {
|
|
77
|
+
const reasons = /* @__PURE__ */ new Set([ipReason(input)]);
|
|
78
|
+
const documented = input.rule.documentedUserAgents;
|
|
79
|
+
if (documented && documented.length > 0) {
|
|
80
|
+
reasons.add(documented.some((pattern) => pattern.test(input.userAgent.trim())) ? AgentTrustReasons["documented-user-agent"] : AgentTrustReasons["unusual-user-agent"]);
|
|
81
|
+
}
|
|
82
|
+
if (isScannerPath(input.path)) reasons.add(AgentTrustReasons["scanner-path"]);
|
|
83
|
+
return { trust: trustFor(reasons), trustReasons: sortAgentTrustReasons(reasons) };
|
|
84
|
+
}
|
|
85
|
+
function trustFor(reasons) {
|
|
86
|
+
if (reasons.has(AgentTrustReasons["ip-in-published-list"])) return AgentTrustLevels.verified;
|
|
87
|
+
for (const reason of reasons) if (FAKE_REASONS.has(reason)) return AgentTrustLevels.likely_fake;
|
|
88
|
+
const unchecked = reasons.has(AgentTrustReasons["no-ip"]) || reasons.has(AgentTrustReasons["no-published-list"]);
|
|
89
|
+
return unchecked && reasons.has(AgentTrustReasons["documented-user-agent"]) ? AgentTrustLevels.likely_real : AgentTrustLevels.unknown;
|
|
90
|
+
}
|
|
12
91
|
|
|
13
92
|
// ../integration-traffic/src/ip-ranges/amazonbot.json
|
|
14
93
|
var amazonbot_default = {
|
|
@@ -13966,6 +14045,10 @@ function verifyIpForRuleDecision(ip, ruleId) {
|
|
|
13966
14045
|
const data = CACHE.get(ruleId);
|
|
13967
14046
|
return data ? decideIpVerification(ip, data) : { verified: false, manifest: null };
|
|
13968
14047
|
}
|
|
14048
|
+
function hasVerificationDataFor(ruleId) {
|
|
14049
|
+
const data = CACHE.get(ruleId);
|
|
14050
|
+
return !!data && data.ranges.length > 0;
|
|
14051
|
+
}
|
|
13969
14052
|
|
|
13970
14053
|
// ../integration-traffic/src/rules.ts
|
|
13971
14054
|
var SELF_TRAFFIC_USER_AGENT_PATTERNS = [
|
|
@@ -14000,7 +14083,10 @@ var DEFAULT_AI_CRAWLER_RULES = [
|
|
|
14000
14083
|
operator: "OpenAI",
|
|
14001
14084
|
product: "ChatGPT-User",
|
|
14002
14085
|
purpose: "user-agent",
|
|
14003
|
-
userAgentPatterns: [/ChatGPT-User\//i]
|
|
14086
|
+
userAgentPatterns: [/ChatGPT-User\//i],
|
|
14087
|
+
// OpenAI's published "full user-agent string". The version may move.
|
|
14088
|
+
// src: https://developers.openai.com/api/docs/bots
|
|
14089
|
+
documentedUserAgents: [/^Mozilla\/5\.0 AppleWebKit\/537\.36 \(KHTML, like Gecko\); compatible; ChatGPT-User\/\d+(?:\.\d+)*; \+https:\/\/openai\.com\/bot$/]
|
|
14004
14090
|
},
|
|
14005
14091
|
{
|
|
14006
14092
|
// Observed MCP requests from ChatGPT integrations use this UA. OpenAI's
|
|
@@ -14165,7 +14251,10 @@ var DEFAULT_AI_CRAWLER_RULES = [
|
|
|
14165
14251
|
operator: "Mistral AI",
|
|
14166
14252
|
product: "MistralAI-User",
|
|
14167
14253
|
purpose: "user-agent",
|
|
14168
|
-
userAgentPatterns: [/MistralAI-User\//i]
|
|
14254
|
+
userAgentPatterns: [/MistralAI-User\//i],
|
|
14255
|
+
// Mistral's published "full user-agent string". The version may move.
|
|
14256
|
+
// src: https://docs.mistral.ai/robots
|
|
14257
|
+
documentedUserAgents: [/^Mozilla\/5\.0 AppleWebKit\/537\.36 \(KHTML, like Gecko; compatible; MistralAI-User\/\d+(?:\.\d+)*; \+https:\/\/docs\.mistral\.ai\/robots\)$/]
|
|
14169
14258
|
},
|
|
14170
14259
|
{
|
|
14171
14260
|
// Mistral's search-index crawler. Unlike the legacy MistralBot UA below,
|
|
@@ -14451,13 +14540,21 @@ function classifyAiUserFetch(event) {
|
|
|
14451
14540
|
if (rule.purpose !== USER_FETCH_PURPOSE) continue;
|
|
14452
14541
|
if (rule.userAgentPatterns.some((pattern) => pattern.test(userAgent))) {
|
|
14453
14542
|
const decision = verifyIpForRuleDecision(event.remoteIp, rule.id);
|
|
14543
|
+
const trust = assessAgentTrust({
|
|
14544
|
+
rule,
|
|
14545
|
+
userAgent,
|
|
14546
|
+
path: event.path,
|
|
14547
|
+
verification: decision,
|
|
14548
|
+
listPublished: hasVerificationDataFor(rule.id)
|
|
14549
|
+
});
|
|
14454
14550
|
return {
|
|
14455
14551
|
botId: rule.id,
|
|
14456
14552
|
operator: rule.operator,
|
|
14457
14553
|
product: rule.product,
|
|
14458
14554
|
verificationStatus: decision.verified ? "verified" : "claimed_unverified",
|
|
14459
14555
|
verificationManifest: decision.manifest,
|
|
14460
|
-
matchedUserAgent: userAgent
|
|
14556
|
+
matchedUserAgent: userAgent,
|
|
14557
|
+
...trust
|
|
14461
14558
|
};
|
|
14462
14559
|
}
|
|
14463
14560
|
}
|
|
@@ -14829,6 +14926,41 @@ function sessionizeJourneyRequests(requests, state, options) {
|
|
|
14829
14926
|
return { visits: [...visits.values()], events, visitors, dropped, capped };
|
|
14830
14927
|
}
|
|
14831
14928
|
|
|
14929
|
+
// ../integration-traffic/src/agent-journeys.ts
|
|
14930
|
+
function extractAgentJourneyRequests(events) {
|
|
14931
|
+
const requests = [];
|
|
14932
|
+
for (const event of events) {
|
|
14933
|
+
if (isSelfTraffic(event)) continue;
|
|
14934
|
+
const agent = classifyAiUserFetch(event);
|
|
14935
|
+
if (!agent || agent.trust === AgentTrustLevels.likely_fake) continue;
|
|
14936
|
+
const timestamp = Date.parse(event.observedAt);
|
|
14937
|
+
if (!Number.isFinite(timestamp)) continue;
|
|
14938
|
+
const path = event.path.split(/[?#]/)[0] || "/";
|
|
14939
|
+
if (classifyTrafficPath(path) === TrafficPathClasses.asset && !/\.json\/?$/i.test(path)) continue;
|
|
14940
|
+
const maskedPath = maskJourneyPath(path);
|
|
14941
|
+
const retainedPath = maskedPath.length > 512 ? `${maskedPath.slice(0, 505)}/:token` : maskedPath;
|
|
14942
|
+
requests.push({
|
|
14943
|
+
sourceEventId: event.eventId,
|
|
14944
|
+
ts: new Date(timestamp).toISOString(),
|
|
14945
|
+
remoteIp: event.remoteIp?.trim() || null,
|
|
14946
|
+
userAgent: agent.matchedUserAgent,
|
|
14947
|
+
agentId: agent.botId,
|
|
14948
|
+
operator: agent.operator,
|
|
14949
|
+
product: agent.product,
|
|
14950
|
+
verificationStatus: agent.verificationStatus,
|
|
14951
|
+
verificationManifest: agent.verificationManifest,
|
|
14952
|
+
trust: agent.trust,
|
|
14953
|
+
trustReasons: agent.trustReasons,
|
|
14954
|
+
host: hostOf(event.host) ?? hostOf(event.requestUrl),
|
|
14955
|
+
path: retainedPath,
|
|
14956
|
+
method: event.method?.trim().toUpperCase() || null,
|
|
14957
|
+
status: event.status,
|
|
14958
|
+
latencyMs: event.latencyMs !== null && Number.isFinite(event.latencyMs) && event.latencyMs >= 0 ? event.latencyMs : null
|
|
14959
|
+
});
|
|
14960
|
+
}
|
|
14961
|
+
return requests;
|
|
14962
|
+
}
|
|
14963
|
+
|
|
14832
14964
|
// ../integration-traffic/src/unlisted-agents.ts
|
|
14833
14965
|
var UNLISTED_AGENT_SKIPPED_EXTENSIONS = [
|
|
14834
14966
|
"avif",
|
|
@@ -15008,6 +15140,9 @@ function sortCrawlerBuckets(a, b) {
|
|
|
15008
15140
|
function sortAiUserFetchBuckets(a, b) {
|
|
15009
15141
|
return a.tsHour.localeCompare(b.tsHour) || a.botId.localeCompare(b.botId) || a.verificationStatus.localeCompare(b.verificationStatus) || (a.verificationManifest?.id ?? "").localeCompare(b.verificationManifest?.id ?? "") || a.pathNormalized.localeCompare(b.pathNormalized) || String(a.status).localeCompare(String(b.status));
|
|
15010
15142
|
}
|
|
15143
|
+
function sortLikelyFakeBuckets(a, b) {
|
|
15144
|
+
return a.tsHour.localeCompare(b.tsHour) || a.botId.localeCompare(b.botId) || a.reason.localeCompare(b.reason);
|
|
15145
|
+
}
|
|
15011
15146
|
function sortReferralBuckets(a, b) {
|
|
15012
15147
|
return a.tsHour.localeCompare(b.tsHour) || a.product.localeCompare(b.product) || a.sourceDomain.localeCompare(b.sourceDomain) || a.landingPathNormalized.localeCompare(b.landingPathNormalized) || String(a.status).localeCompare(String(b.status));
|
|
15013
15148
|
}
|
|
@@ -15020,6 +15155,7 @@ function buildTrafficProbeReport(events, options = {}) {
|
|
|
15020
15155
|
const aiReferralSessionWindowMs = configuredSessionWindowMs > 0 ? configuredSessionWindowMs : DEFAULT_AI_REFERRAL_SESSION_WINDOW_MS;
|
|
15021
15156
|
const crawlerBuckets = /* @__PURE__ */ new Map();
|
|
15022
15157
|
const aiUserFetchBuckets = /* @__PURE__ */ new Map();
|
|
15158
|
+
const likelyFakeBuckets = /* @__PURE__ */ new Map();
|
|
15023
15159
|
const aiReferralBuckets = /* @__PURE__ */ new Map();
|
|
15024
15160
|
const unrecognizedAgentBuckets = /* @__PURE__ */ new Map();
|
|
15025
15161
|
const aiReferralSessions = /* @__PURE__ */ new Map();
|
|
@@ -15033,6 +15169,7 @@ function buildTrafficProbeReport(events, options = {}) {
|
|
|
15033
15169
|
const selfTrafficExcluded = events.length - includedEvents.length;
|
|
15034
15170
|
let crawlerHits = 0;
|
|
15035
15171
|
let aiUserFetchHits = 0;
|
|
15172
|
+
let aiUserFetchLikelyFakeHits = 0;
|
|
15036
15173
|
let aiReferralHits = 0;
|
|
15037
15174
|
let aiReferralPaidSessions = 0;
|
|
15038
15175
|
let aiReferralOrganicSessions = 0;
|
|
@@ -15077,7 +15214,14 @@ function buildTrafficProbeReport(events, options = {}) {
|
|
|
15077
15214
|
else topBots.set(botKey, { fields: { botId: crawler.botId, operator: crawler.operator }, hits: 1 });
|
|
15078
15215
|
incrementBucket(topCrawlerPaths, pathNormalized, { pathNormalized });
|
|
15079
15216
|
}
|
|
15080
|
-
if (aiUserFetch) {
|
|
15217
|
+
if (aiUserFetch?.trust === AgentTrustLevels.likely_fake) {
|
|
15218
|
+
aiUserFetchLikelyFakeHits += 1;
|
|
15219
|
+
const reason = aiUserFetch.trustReasons[0];
|
|
15220
|
+
const key = [tsHour, aiUserFetch.botId, reason].join(" ");
|
|
15221
|
+
const existing = likelyFakeBuckets.get(key);
|
|
15222
|
+
if (existing) existing.hits += 1;
|
|
15223
|
+
else likelyFakeBuckets.set(key, { tsHour, botId: aiUserFetch.botId, operator: aiUserFetch.operator, reason, hits: 1 });
|
|
15224
|
+
} else if (aiUserFetch) {
|
|
15081
15225
|
aiUserFetchHits += 1;
|
|
15082
15226
|
const key = [
|
|
15083
15227
|
tsHour,
|
|
@@ -15200,6 +15344,7 @@ function buildTrafficProbeReport(events, options = {}) {
|
|
|
15200
15344
|
selfTrafficExcluded,
|
|
15201
15345
|
crawlerHits,
|
|
15202
15346
|
aiUserFetchHits,
|
|
15347
|
+
aiUserFetchLikelyFakeHits,
|
|
15203
15348
|
aiReferralSessions: aiReferralSessions.size,
|
|
15204
15349
|
aiReferralPaidSessions,
|
|
15205
15350
|
aiReferralOrganicSessions,
|
|
@@ -15208,6 +15353,7 @@ function buildTrafficProbeReport(events, options = {}) {
|
|
|
15208
15353
|
},
|
|
15209
15354
|
crawlerEventsHourly: [...crawlerBuckets.values()].sort(sortCrawlerBuckets),
|
|
15210
15355
|
aiUserFetchEventsHourly: [...aiUserFetchBuckets.values()].sort(sortAiUserFetchBuckets),
|
|
15356
|
+
aiUserFetchLikelyFakeHourly: [...likelyFakeBuckets.values()].sort(sortLikelyFakeBuckets),
|
|
15211
15357
|
aiReferralEventsHourly: [...aiReferralBuckets.values()].sort(sortReferralBuckets),
|
|
15212
15358
|
unrecognizedAgentEventsHourly: busiestUnrecognizedAgents(unrecognizedAgentBuckets),
|
|
15213
15359
|
topBots: topEntries(topBots, 10),
|
|
@@ -15838,6 +15984,7 @@ export {
|
|
|
15838
15984
|
classifyAiUserFetch,
|
|
15839
15985
|
extractJourneyRequests,
|
|
15840
15986
|
sessionizeJourneyRequests,
|
|
15987
|
+
extractAgentJourneyRequests,
|
|
15841
15988
|
buildTrafficProbeReport,
|
|
15842
15989
|
normalizeCloudflareWorkerEvent,
|
|
15843
15990
|
CLOUDFLARE_WORKER_BINDINGS,
|
|
@@ -2,11 +2,11 @@ import {
|
|
|
2
2
|
dedupeGscSitemapUrls,
|
|
3
3
|
resolveDiscoveredGscSitemapUrls,
|
|
4
4
|
submitGscSitemapBatches
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-W5ZBMBBZ.js";
|
|
6
6
|
import {
|
|
7
7
|
measurementDraftOperationSchema,
|
|
8
8
|
runMeasurementDraftAction
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-KFMU6CLU.js";
|
|
10
10
|
import {
|
|
11
11
|
CliError
|
|
12
12
|
} from "./chunk-HGMYEDAQ.js";
|
|
@@ -42,6 +42,7 @@ import {
|
|
|
42
42
|
adsPauseRequestSchema,
|
|
43
43
|
adsUnresolvedOperationListQuerySchema,
|
|
44
44
|
agentConversationCreateSchema,
|
|
45
|
+
agentJourneysQuerySchema,
|
|
45
46
|
apiKeyDtoSchema,
|
|
46
47
|
auditHistoryQuerySchema,
|
|
47
48
|
backlinkSourceSchema,
|
|
@@ -183,7 +184,7 @@ import {
|
|
|
183
184
|
trafficUnrecognizedAgentsQuerySchema,
|
|
184
185
|
visibilityCompareSelectionSchema,
|
|
185
186
|
visibilityReportRequestSchema
|
|
186
|
-
} from "./chunk-
|
|
187
|
+
} from "./chunk-PHVIMUAQ.js";
|
|
187
188
|
|
|
188
189
|
// src/mcp/tool-registry.ts
|
|
189
190
|
import { z as z2 } from "zod";
|
|
@@ -2920,6 +2921,34 @@ var rawCanonryMcpTools = [
|
|
|
2920
2921
|
return client.trafficListSamples(project, query);
|
|
2921
2922
|
}
|
|
2922
2923
|
}),
|
|
2924
|
+
defineTool({
|
|
2925
|
+
name: "canonry_traffic_agent_journeys",
|
|
2926
|
+
title: "List agent journeys",
|
|
2927
|
+
description: "Read stored user-triggered agent request sequences with trust levels (verified by published IP list, likely real, or unknown), inferred or unlinked correlation, and source/retention/cap limits. Likely fake requests are counted in coverage.likelyFakeRequests, never listed. IP and user-agent grouping does not prove a single user task. Simple and Advanced projects use the same evidence; targetKey filters URL matches against the current plan, not historical task intent. No provider calls or writes.",
|
|
2928
|
+
access: "read",
|
|
2929
|
+
tier: "traffic",
|
|
2930
|
+
inputSchema: agentJourneysQuerySchema.extend({ project: projectNameSchema }),
|
|
2931
|
+
annotations: readAnnotations(),
|
|
2932
|
+
openApiOperations: ["GET /api/v1/projects/{name}/traffic/agent-journeys"],
|
|
2933
|
+
handler: (client, input) => {
|
|
2934
|
+
const { project, ...query } = input;
|
|
2935
|
+
return client.trafficAgentJourneys(project, query);
|
|
2936
|
+
}
|
|
2937
|
+
}),
|
|
2938
|
+
defineTool({
|
|
2939
|
+
name: "canonry_traffic_agent_journey",
|
|
2940
|
+
title: "Read an agent journey",
|
|
2941
|
+
description: "Read the ordered request timeline for an id from canonry_traffic_agent_journeys. Preserve the list window and selectors. Requests include time, host, masked path, method, status, latency, verification, trust level with reasons, and Property attribution. HTTP responses do not prove business outcomes; no prompt, private reasoning or off-site browsing is recorded. No provider calls or writes.",
|
|
2942
|
+
access: "read",
|
|
2943
|
+
tier: "traffic",
|
|
2944
|
+
inputSchema: agentJourneysQuerySchema.extend({ project: projectNameSchema, journeyId: z2.string().min(1) }),
|
|
2945
|
+
annotations: readAnnotations(),
|
|
2946
|
+
openApiOperations: ["GET /api/v1/projects/{name}/traffic/agent-journeys/{journeyId}"],
|
|
2947
|
+
handler: (client, input) => {
|
|
2948
|
+
const { project, journeyId, ...query } = input;
|
|
2949
|
+
return client.trafficAgentJourney(project, journeyId, query);
|
|
2950
|
+
}
|
|
2951
|
+
}),
|
|
2923
2952
|
defineTool({
|
|
2924
2953
|
name: "canonry_traffic_unrecognized_agents",
|
|
2925
2954
|
title: "List unrecognized bots and agents",
|
|
@@ -2951,7 +2980,7 @@ var rawCanonryMcpTools = [
|
|
|
2951
2980
|
defineTool({
|
|
2952
2981
|
name: "canonry_journeys_list",
|
|
2953
2982
|
title: "List AI visitor journeys",
|
|
2954
|
-
description: "List stored AI visitors, newest first AI visit first, with
|
|
2983
|
+
description: "List stored AI visitors, newest first AI visit first, with up to 20 visits from the first AI visit on (entry class and name, landing path, page count; visitCount is the total). Filter by first AI engine or by whether they came back. Visits are 30-minute sessions; visits within 30 days after an AI visit are kept, 180-day retention. A high cappedDays means a user agent many people share; partialSources names sources whose logs miss later visits. No provider call or write.",
|
|
2955
2984
|
access: "read",
|
|
2956
2985
|
tier: "traffic",
|
|
2957
2986
|
inputSchema: journeysQuerySchema.extend({ project: projectNameSchema }),
|
|
@@ -2965,7 +2994,7 @@ var rawCanonryMcpTools = [
|
|
|
2965
2994
|
defineTool({
|
|
2966
2995
|
name: "canonry_journey_get",
|
|
2967
2996
|
title: "Read one AI visitor journey",
|
|
2968
|
-
description: "Read one AI visitor key from canonry_journeys_list: a page of its stored visits in time order (limit 1 to 500, default 100; totalVisits is the total), each with its requests (time, method, path, status, page or data). No provider call or write.",
|
|
2997
|
+
description: "Read one AI visitor key from canonry_journeys_list: a page of its stored visits in time order (limit 1 to 500, default 100; totalVisits is the total), each with its requests (time, method, path, status, page or data). events=pages returns page requests plus every non-GET/HEAD request; each visit keeps its stored requestCount. No provider call or write.",
|
|
2969
2998
|
access: "read",
|
|
2970
2999
|
tier: "traffic",
|
|
2971
3000
|
inputSchema: journeyDetailQuerySchema.extend({ project: projectNameSchema, visitorKey: z2.string().min(1) }),
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
loadConfig
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-WA4FD5Y6.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-PHVIMUAQ.js";
|
|
40
40
|
|
|
41
41
|
// ../api-client-generated/src/generated/core/bodySerializer.gen.ts
|
|
42
42
|
var jsonBodySerializer = {
|
|
@@ -3235,6 +3235,16 @@ var getApiV1ProjectsByNameTrafficSamples = (options) => (options.client ?? clien
|
|
|
3235
3235
|
url: "/api/v1/projects/{name}/traffic/samples",
|
|
3236
3236
|
...options
|
|
3237
3237
|
});
|
|
3238
|
+
var getApiV1ProjectsByNameTrafficAgentJourneys = (options) => (options.client ?? client).get({
|
|
3239
|
+
security: [{ scheme: "bearer", type: "http" }],
|
|
3240
|
+
url: "/api/v1/projects/{name}/traffic/agent-journeys",
|
|
3241
|
+
...options
|
|
3242
|
+
});
|
|
3243
|
+
var getApiV1ProjectsByNameTrafficAgentJourneysByJourneyId = (options) => (options.client ?? client).get({
|
|
3244
|
+
security: [{ scheme: "bearer", type: "http" }],
|
|
3245
|
+
url: "/api/v1/projects/{name}/traffic/agent-journeys/{journeyId}",
|
|
3246
|
+
...options
|
|
3247
|
+
});
|
|
3238
3248
|
var getApiV1ProjectsByNameTrafficUnrecognizedAgents = (options) => (options.client ?? client).get({
|
|
3239
3249
|
security: [{ scheme: "bearer", type: "http" }],
|
|
3240
3250
|
url: "/api/v1/projects/{name}/traffic/unrecognized-agents",
|
|
@@ -6046,6 +6056,12 @@ var ApiClient = class {
|
|
|
6046
6056
|
async trafficListSamples(project, query) {
|
|
6047
6057
|
return this.invoke(() => getApiV1ProjectsByNameTrafficSamples({ client: this.heyClient, path: { name: project }, query }));
|
|
6048
6058
|
}
|
|
6059
|
+
async trafficAgentJourneys(project, query) {
|
|
6060
|
+
return this.invoke(() => getApiV1ProjectsByNameTrafficAgentJourneys({ client: this.heyClient, path: { name: project }, query }));
|
|
6061
|
+
}
|
|
6062
|
+
async trafficAgentJourney(project, journeyId, query) {
|
|
6063
|
+
return this.invoke(() => getApiV1ProjectsByNameTrafficAgentJourneysByJourneyId({ client: this.heyClient, path: { name: project, journeyId }, query }));
|
|
6064
|
+
}
|
|
6049
6065
|
async trafficUnrecognizedAgents(project, query) {
|
|
6050
6066
|
return this.invoke(() => getApiV1ProjectsByNameTrafficUnrecognizedAgents({ client: this.heyClient, path: { name: project }, query }));
|
|
6051
6067
|
}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
2
|
createApiClient
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-IPPNN5KE.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-KFMU6CLU.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-PHVIMUAQ.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
|
createLogger
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-SVMTN7MI.js";
|
|
4
4
|
import {
|
|
5
5
|
pickProjectCitedDomain
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-LZGVQSZL.js";
|
|
7
7
|
import {
|
|
8
8
|
GBP_INSIGHT_PROVIDER,
|
|
9
9
|
PERSISTENT_GAP_THRESHOLD,
|
|
@@ -17,7 +17,7 @@ import {
|
|
|
17
17
|
mergeGscQueryTotalsWithFallback,
|
|
18
18
|
readGscQueryDailyRows,
|
|
19
19
|
readLatestGscDataDate
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-OIHR2BDK.js";
|
|
21
21
|
import {
|
|
22
22
|
competitors,
|
|
23
23
|
gbpDailyMetrics,
|
|
@@ -35,14 +35,14 @@ import {
|
|
|
35
35
|
queries,
|
|
36
36
|
querySnapshots,
|
|
37
37
|
runs
|
|
38
|
-
} from "./chunk-
|
|
38
|
+
} from "./chunk-3UFQI4KL.js";
|
|
39
39
|
import {
|
|
40
40
|
CitationStates,
|
|
41
41
|
RunKinds,
|
|
42
42
|
RunStatuses,
|
|
43
43
|
RunTriggers,
|
|
44
44
|
effectiveDomains
|
|
45
|
-
} from "./chunk-
|
|
45
|
+
} from "./chunk-PHVIMUAQ.js";
|
|
46
46
|
|
|
47
47
|
// src/intelligence-service.ts
|
|
48
48
|
import { eq, desc, asc, and, ne, or, inArray, gte, lte, isNull, sql, exists } from "drizzle-orm";
|