@canonry/canonry 7.68.2 → 7.70.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/assets/AgentSetupPage-BSHWZvRa.js +17 -0
- package/assets/assets/AuditHistoryPanel-CkOJ_9_W.js +1 -0
- package/assets/assets/BacklinksPage-DrWQ2idL.js +1 -0
- package/assets/assets/ChartPrimitives-CfjGDL5d.js +1 -0
- package/assets/assets/{Hint-C0TmIzHX.js → Hint-Ro2RKH6t.js} +1 -1
- package/assets/assets/{HistoryPage-DMU_b4kk.js → HistoryPage-XQL_fdA9.js} +1 -1
- package/assets/assets/{InfoTooltip-BbdxCAup.js → InfoTooltip-CJ3IWqBk.js} +1 -1
- package/assets/assets/MeasurementPropertyPage-Z7HN9XvJ.js +4 -0
- package/assets/assets/ProjectPage-DCOhyc0W.js +9 -0
- package/assets/assets/RunsPage-DDlvUciW.js +1 -0
- package/assets/assets/SettingsPage-CajGcfAQ.js +1 -0
- package/assets/assets/SiteHealthSection-Ch56JPKl.js +2 -0
- package/assets/assets/{ToneBadge-B8lm5z8O.js → ToneBadge-enK5ryht.js} +2 -2
- package/assets/assets/TrafficPage-BlRi6C8Y.js +40 -0
- package/assets/assets/TrafficSourceDetailPage-DiUYQhDR.js +1 -0
- package/assets/assets/{account-context-VRNXJv_l.js → account-context-gUhEyKww.js} +1 -1
- package/assets/assets/card-BPDsfFv5.js +1 -0
- package/assets/assets/{extract-error-message-Ba5pz5dQ.js → extract-error-message-YbSa8SSn.js} +1 -1
- package/assets/assets/{format-helpers-C2il_710.js → format-helpers-B-WHGMGn.js} +1 -1
- package/assets/assets/index-CONZUwQB.css +1 -0
- package/assets/assets/index-CigLVn5A.js +60 -0
- package/assets/assets/{query-client-DyFmy9AJ.js → query-client-DScmA_aM.js} +1 -1
- package/assets/assets/{react-query-BcEtnzKt.js → react-query-gGXPkSlb.js} +1 -1
- package/assets/assets/{react-sigma_core.esm.min-Cd5EDtIB.js → react-sigma_core.esm.min-CtveVGNY.js} +1 -1
- package/assets/assets/service--FVsrK0Z.js +1 -0
- package/assets/assets/{vendor-lucide-4KkDquAu.js → vendor-lucide-BILL9eZH.js} +1 -1
- package/assets/assets/{vendor-markdown-9SSeLNHZ.js → vendor-markdown-DNTP_967.js} +1 -1
- package/assets/assets/{vendor-radix-BuErWiA2.js → vendor-radix-C6jOoh_7.js} +1 -1
- package/assets/assets/{vendor-recharts-qIim36Mt.js → vendor-recharts-PsGDYxIT.js} +1 -1
- package/assets/assets/{vendor-tanstack-pEsPGDvT.js → vendor-tanstack-BoP7BGaH.js} +1 -1
- package/assets/index.html +36 -16
- package/dist/{ads-4NQ5BO2A.js → ads-UTME46NF.js} +3 -3
- package/dist/{agent-SR7IUYLK.js → agent-PYDTNLR4.js} +7 -7
- package/dist/{agent-ask-F3T4GB33.js → agent-ask-NA4QFFM6.js} +3 -3
- package/dist/{agent-conversations-D54I2N5I.js → agent-conversations-3S56EX4U.js} +3 -3
- package/dist/{agent-memory-BWUJGV3E.js → agent-memory-D2RT5TVJ.js} +3 -3
- package/dist/{agent-providers-WNKOKIZY.js → agent-providers-5C2DRUR3.js} +3 -3
- package/dist/{agent-transcript-GM22FSJK.js → agent-transcript-SY5BZPO3.js} +3 -3
- package/dist/{analytics-RLLQBQOK.js → analytics-GUENANBB.js} +3 -3
- package/dist/{apply-RGJKLQKC.js → apply-R5K6RGEH.js} +3 -3
- package/dist/{backfill-GRVBAKFQ.js → backfill-B2EXGQCW.js} +9 -9
- package/dist/{backlinks-VE2JOWKE.js → backlinks-X55GUIQL.js} +3 -3
- package/dist/{bing-BUSRXSSR.js → bing-5NTEC247.js} +3 -3
- package/dist/{bootstrap-5KXIZP4O.js → bootstrap-UDEEVI4Z.js} +10 -10
- package/dist/{cdp-RR5HU43T.js → cdp-WWVZ6IBS.js} +7 -7
- package/dist/{chunk-4Q64QWKU.js → chunk-3LTLLHCD.js} +4 -4
- package/dist/{chunk-YTYOUQQ7.js → chunk-3QHKN3JY.js} +31 -23
- package/dist/{chunk-535S4WXN.js → chunk-3ZF3T3OG.js} +1 -1
- package/dist/{chunk-KXJDLN64.js → chunk-42JQQZZQ.js} +5 -5
- package/dist/{chunk-6R76X2XV.js → chunk-6JGQT4OH.js} +25 -2
- package/dist/{chunk-D33TZL7S.js → chunk-6RI7JFFI.js} +1 -1
- package/dist/{chunk-34GYS64G.js → chunk-7W4KNDAW.js} +2 -2
- package/dist/{chunk-CUR2SI66.js → chunk-BGTJTKOJ.js} +2 -2
- package/dist/{chunk-JZRCF3IX.js → chunk-BRT5GE3Z.js} +5 -5
- package/dist/{chunk-ROCSYWLF.js → chunk-CNSLBHFP.js} +1 -1
- package/dist/{chunk-TPZ6RLGX.js → chunk-CSDDKEL6.js} +1 -1
- package/dist/{chunk-LX5IQZHL.js → chunk-DW3KF33I.js} +4 -4
- package/dist/{chunk-35XANOXF.js → chunk-EIRIZPR6.js} +2 -2
- package/dist/{chunk-7PPEX3GD.js → chunk-HZ55UIKM.js} +4 -4
- package/dist/{chunk-D4TXUHVA.js → chunk-JGO7LGVN.js} +60 -10
- package/dist/{chunk-MDJG5NPR.js → chunk-JNRMODJS.js} +1 -1
- package/dist/{chunk-FLCTZSLI.js → chunk-KDV5NQZH.js} +1 -1
- package/dist/{chunk-BVEACCUM.js → chunk-MBNXKKOD.js} +2 -2
- package/dist/{chunk-T742QYXD.js → chunk-NHF3OGZN.js} +3 -3
- package/dist/{chunk-UHDLVX3T.js → chunk-OQR4F7WF.js} +2 -2
- package/dist/{chunk-AGHKWDUB.js → chunk-PHHQVV3G.js} +3 -3
- package/dist/{chunk-4PDSDRB2.js → chunk-PJYXLC3D.js} +1 -1
- package/dist/{chunk-CQVK5RLO.js → chunk-QBR7BWO6.js} +8 -8
- package/dist/{chunk-4KVUUBKF.js → chunk-QNSMMQJY.js} +3 -3
- package/dist/{chunk-R5YKG2YP.js → chunk-R7RTWOOV.js} +1 -1
- package/dist/{chunk-4U3HIUCW.js → chunk-RJSJNR76.js} +3 -3
- package/dist/{chunk-XU7GZ544.js → chunk-RPYSCFFA.js} +1 -1
- package/dist/{chunk-2M27P4W5.js → chunk-RSK7E53V.js} +1 -1
- package/dist/{chunk-HF7ONR3Z.js → chunk-RVEXUQHP.js} +2 -2
- package/dist/{chunk-ON2RUGPD.js → chunk-SFMCFMJR.js} +1 -1
- package/dist/{chunk-VXBAMLKH.js → chunk-SSNKQTRX.js} +3 -3
- package/dist/{chunk-5TCY7FYS.js → chunk-ULUKHNE4.js} +1 -1
- package/dist/{chunk-JQGH3D7W.js → chunk-WOETP6NH.js} +334 -334
- package/dist/{chunk-QZUEQP5G.js → chunk-XOCF2U54.js} +1 -1
- package/dist/{citations-IYQAT5QA.js → citations-ILU2CNT2.js} +3 -3
- package/dist/{cli-catalog-U5ZXWV7J.js → cli-catalog-ZBTUYNJA.js} +3 -3
- package/dist/{cli-commands-MMMD7K74.js → cli-commands-672L7BFD.js} +7 -7
- package/dist/cli.js +13 -13
- package/dist/{competitor-RRISAXMS.js → competitor-NXSL3AWD.js} +3 -3
- package/dist/{content-NBEVQ7CZ.js → content-TGWYXNBI.js} +3 -3
- package/dist/{dashboard-EMHIZOZ4.js → dashboard-IDCQTIYG.js} +6 -6
- package/dist/{demo-57LZOEH6.js → demo-6X6IDMPT.js} +1 -1
- package/dist/{demo-server-EGKJKILE.js → demo-server-HKJWIYPQ.js} +11 -11
- package/dist/{discover-L5EFJ6AD.js → discover-NW7NKL2Z.js} +3 -3
- package/dist/{discover-eval-6JJZLKRJ.js → discover-eval-2BVYL62I.js} +3 -3
- package/dist/{doctor-QBTFEURQ.js → doctor-6I3LPYM7.js} +3 -3
- package/dist/{evidence-I5MK557J.js → evidence-ZTAMPBEP.js} +3 -3
- package/dist/{export-cmd-36EZW5ZP.js → export-cmd-4CXUQVYT.js} +3 -3
- package/dist/{ga-7GUXDQ3L.js → ga-2YXMDGHQ.js} +3 -3
- package/dist/{gbp-W7YHYMB7.js → gbp-LTPPWTUR.js} +3 -3
- package/dist/{google-OXQFPJ76.js → google-KTUJ4D3T.js} +4 -4
- package/dist/{google-marketing-TKCACXPQ.js → google-marketing-FAKTAI5S.js} +1 -1
- package/dist/{health-cmd-PG3ST3S6.js → health-cmd-C75E3NPQ.js} +3 -3
- package/dist/{history-NWLOV4HF.js → history-HE734BPT.js} +3 -3
- package/dist/index.d.ts +71 -71
- package/dist/index.js +24 -24
- package/dist/{init-3I6WH2FY.js → init-M73CSTWU.js} +11 -11
- package/dist/{insights-2XU6EXSV.js → insights-4GUVXY2V.js} +3 -3
- package/dist/intelligence-service-PAMFRLPE.js +15 -0
- package/dist/{journeys-LIZVLLV5.js → journeys-BZCKKFG7.js} +3 -3
- package/dist/{keys-M4WPOLHC.js → keys-CMN3FUDW.js} +3 -3
- package/dist/{keyword-TETX5PQP.js → keyword-QUM65R7C.js} +3 -3
- package/dist/{logs-BI4265UF.js → logs-HH7EP7YK.js} +3 -3
- package/dist/{mcp-RA6NUGQM.js → mcp-76T6WX4K.js} +2 -2
- package/dist/mcp.js +9 -9
- package/dist/{measurement-plan-LM5GXYNS.js → measurement-plan-2D2KQLTW.js} +5 -5
- package/dist/{notify-BFKYHACB.js → notify-VP5YYBJO.js} +3 -3
- package/dist/{organic-evidence-RUBPJCQ4.js → organic-evidence-EAUZJVET.js} +3 -3
- package/dist/{overview-6WOQ7K7F.js → overview-MCX3OHXK.js} +4 -4
- package/dist/{project-2DMAPH2U.js → project-HMELPKXT.js} +3 -3
- package/dist/{query-SAWKYRSY.js → query-J7UTKCY5.js} +3 -3
- package/dist/{research-J4J527SF.js → research-O4FYADRL.js} +3 -3
- package/dist/{results-export-SESXZCWZ.js → results-export-4JHIHSWW.js} +3 -3
- package/dist/{run-XTG3RSBA.js → run-YJ3Y7FIE.js} +4 -4
- package/dist/{schedule-WQUD7BAI.js → schedule-6SXEB245.js} +3 -3
- package/dist/{search-QNYEHVCA.js → search-MVL346VH.js} +3 -3
- package/dist/{serve-7SCK3TEE.js → serve-GSPGAHMD.js} +25 -25
- package/dist/{session-KB3HFDGB.js → session-KFFTQBJU.js} +12 -12
- package/dist/{settings-P5E7KIOV.js → settings-UKVP6TDD.js} +3 -3
- package/dist/{skills-YQDZ6EOW.js → skills-DF336KFJ.js} +2 -2
- package/dist/{snapshot-LMBEQKXR.js → snapshot-YKWGIRTM.js} +3 -3
- package/dist/{src-X4GNC6AB.js → src-WDWTA7ON.js} +2 -2
- package/dist/{status-4G7OU4RY.js → status-4PDQOFYS.js} +4 -4
- package/dist/{technical-aeo-TBCA6DF2.js → technical-aeo-XJRWNW24.js} +3 -3
- package/dist/{telemetry-JGUQ6S45.js → telemetry-TXB7NGPP.js} +4 -4
- package/dist/{tools-FB7DZH74.js → tools-5DBHZB4K.js} +11 -11
- package/dist/{traffic-U6MUCCBI.js → traffic-AP22ENAC.js} +5 -5
- package/dist/{users-P7BMJH2I.js → users-44XJB4ZN.js} +3 -3
- package/dist/{visibility-stats-3BJR34GR.js → visibility-stats-5DMILJO6.js} +3 -3
- package/dist/{wordpress-X5FQOR5K.js → wordpress-P6J44TMN.js} +3 -3
- package/package.json +1 -1
- package/assets/assets/AgentSetupPage-8oLO0OyH.js +0 -17
- package/assets/assets/AuditHistoryPanel-DXXGdrLo.js +0 -1
- package/assets/assets/BacklinksPage-CEJPc6fQ.js +0 -1
- package/assets/assets/ChartPrimitives-CksxPvHn.js +0 -1
- package/assets/assets/MeasurementPropertyPage--nWpGvGH.js +0 -4
- package/assets/assets/ProjectPage-of9Q7JDS.js +0 -9
- package/assets/assets/RunsPage-BAs6sABy.js +0 -1
- package/assets/assets/SettingsPage-DcSDIWnl.js +0 -1
- package/assets/assets/SiteHealthSection-DS4icWI5.js +0 -2
- package/assets/assets/TrafficPage-CxFJj1rx.js +0 -40
- package/assets/assets/TrafficSourceDetailPage-C2pV1K3V.js +0 -1
- package/assets/assets/card-CPDjkZ38.js +0 -1
- package/assets/assets/index-CqNwsqjm.css +0 -1
- package/assets/assets/index-XtskVqLa.js +0 -60
- package/assets/assets/service-CREaLXip.js +0 -1
- package/dist/intelligence-service-VUOMVRAD.js +0 -15
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
isStoredPageReadTool,
|
|
6
6
|
isStoredReadTool,
|
|
7
7
|
truncateToolResult
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-DW3KF33I.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-6RI7JFFI.js";
|
|
26
26
|
import {
|
|
27
27
|
CanonryMcpToolNames,
|
|
28
28
|
canonryMcpTools
|
|
29
|
-
} from "./chunk-
|
|
29
|
+
} from "./chunk-QNSMMQJY.js";
|
|
30
30
|
import {
|
|
31
31
|
agentToolEvents,
|
|
32
32
|
llmUsageEvents
|
|
33
|
-
} from "./chunk-
|
|
33
|
+
} from "./chunk-XOCF2U54.js";
|
|
34
34
|
import {
|
|
35
35
|
MeasurementPortfolioLists,
|
|
36
36
|
SeoCapabilities,
|
|
@@ -39,7 +39,7 @@ import {
|
|
|
39
39
|
describeError,
|
|
40
40
|
validationError,
|
|
41
41
|
visibilityReportRequestSchema
|
|
42
|
-
} from "./chunk-
|
|
42
|
+
} from "./chunk-6JGQT4OH.js";
|
|
43
43
|
|
|
44
44
|
// src/agent/session.ts
|
|
45
45
|
import fs3 from "fs";
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import {
|
|
2
2
|
runWithUsageTags
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-BGTJTKOJ.js";
|
|
4
4
|
import {
|
|
5
5
|
CanonryMcpToolNames,
|
|
6
6
|
canonryMcpTools
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-QNSMMQJY.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-JGO7LGVN.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-6JGQT4OH.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
|
parseJsonColumn
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-XOCF2U54.js";
|
|
4
4
|
import {
|
|
5
5
|
AI_ENGINE_DOMAINS,
|
|
6
6
|
AI_ENGINE_SELF_DOMAINS,
|
|
@@ -26,7 +26,7 @@ import {
|
|
|
26
26
|
retryAfterDelayMs,
|
|
27
27
|
usageCount,
|
|
28
28
|
withRetry
|
|
29
|
-
} from "./chunk-
|
|
29
|
+
} from "./chunk-6JGQT4OH.js";
|
|
30
30
|
|
|
31
31
|
// ../provider-openai/src/normalize.ts
|
|
32
32
|
import OpenAI from "openai";
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
registeredProviderNames
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-3ZF3T3OG.js";
|
|
4
4
|
import {
|
|
5
5
|
configExists,
|
|
6
6
|
loadConfigRaw
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-6RI7JFFI.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-WDWTA7ON.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-GSPGAHMD.js");
|
|
51
51
|
await serveCommand(format);
|
|
52
52
|
}
|
|
53
53
|
|
|
@@ -9,14 +9,14 @@ import {
|
|
|
9
9
|
normalizeCloudflareWorkerEvent,
|
|
10
10
|
sessionizeJourneyRequests,
|
|
11
11
|
verifyRequestSignature
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-CNSLBHFP.js";
|
|
13
13
|
import {
|
|
14
14
|
currentOutcomeAttribution,
|
|
15
15
|
getRequestContext,
|
|
16
16
|
registerRequestContext,
|
|
17
17
|
requestAuditIdentity,
|
|
18
18
|
sanitizeRequestContext
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-KDV5NQZH.js";
|
|
20
20
|
import {
|
|
21
21
|
SentimentIdempotencyConflict,
|
|
22
22
|
SentimentRepository,
|
|
@@ -156,7 +156,7 @@ import {
|
|
|
156
156
|
userSessions,
|
|
157
157
|
users,
|
|
158
158
|
writeNegativeReviewMaxStars
|
|
159
|
-
} from "./chunk-
|
|
159
|
+
} from "./chunk-XOCF2U54.js";
|
|
160
160
|
import {
|
|
161
161
|
ADS_ACTIVATE_SCOPE,
|
|
162
162
|
ADS_ACTIVATION_ABSOLUTE_MAX_ENTITIES,
|
|
@@ -234,6 +234,8 @@ import {
|
|
|
234
234
|
DiscoveryCompetitorTypes,
|
|
235
235
|
DiscoveryPromoteCompetitorSkipReasons,
|
|
236
236
|
DiscoverySessionStatuses,
|
|
237
|
+
EMBED_QUERIES_WRITE_SCOPE,
|
|
238
|
+
EMBED_QUERY_LIMIT_HEADER,
|
|
237
239
|
FeatureNames,
|
|
238
240
|
GA4_AI_ASSISTANT_CHANNEL_GROUP,
|
|
239
241
|
GA_OVERVIEW_HISTORY_DAYS,
|
|
@@ -609,6 +611,7 @@ import {
|
|
|
609
611
|
domainClassificationsResponseDtoSchema,
|
|
610
612
|
effectiveBrandNames,
|
|
611
613
|
effectiveDomains,
|
|
614
|
+
embedQueryLimitReached,
|
|
612
615
|
emptyCitationVisibility,
|
|
613
616
|
emptySentimentCounts,
|
|
614
617
|
escapeLikePattern,
|
|
@@ -925,6 +928,7 @@ import {
|
|
|
925
928
|
organicEvidenceDtoSchema,
|
|
926
929
|
outcomeSurfaceSchema,
|
|
927
930
|
parseBoundedRate,
|
|
931
|
+
parseEmbedQueryLimit,
|
|
928
932
|
parseInclusiveEndMs,
|
|
929
933
|
parseMeasurementDraftEtagVersion,
|
|
930
934
|
parseMeasurementRunManifestV1,
|
|
@@ -1188,7 +1192,7 @@ import {
|
|
|
1188
1192
|
wordpressSchemaDeployResultDtoSchema,
|
|
1189
1193
|
wordpressSchemaStatusResultDtoSchema,
|
|
1190
1194
|
wordpressStatusDtoSchema
|
|
1191
|
-
} from "./chunk-
|
|
1195
|
+
} from "./chunk-6JGQT4OH.js";
|
|
1192
1196
|
|
|
1193
1197
|
// ../api-routes/src/user-session.ts
|
|
1194
1198
|
import crypto2 from "crypto";
|
|
@@ -6285,17 +6289,25 @@ function isTechnicalAeoRead(request, url) {
|
|
|
6285
6289
|
}
|
|
6286
6290
|
return rest === "technical-aeo" || rest === "technical-aeo/pages" || rest === "technical-aeo/trend" || rest === "technical-aeo/crawl" || rest === "technical-aeo/graph" || rest === "technical-aeo/subgraph" || rest === "technical-aeo/path" || rest === "technical-aeo/changes" || rest === "technical-aeo/crawl/pages/audit" || rest === "technical-aeo/crawl/pages" || rest === "technical-aeo/runs" || rest === "technical-aeo/structure" || rest === "technical-aeo/internal-links" || rest === "technical-aeo/internal-links/neighbors" || rest === "technical-aeo/dead-links";
|
|
6287
6291
|
}
|
|
6292
|
+
function isEmbedQueryWrite(request) {
|
|
6293
|
+
return request.routeOptions.config.writeScope === EMBED_QUERIES_WRITE_SCOPE && (principalScopes(request) ?? []).includes(EMBED_QUERIES_WRITE_SCOPE);
|
|
6294
|
+
}
|
|
6295
|
+
function isEmbedQueryRead(request, url) {
|
|
6296
|
+
if (parseEmbedQueryLimit(request.headers[EMBED_QUERY_LIMIT_HEADER]) === void 0) return false;
|
|
6297
|
+
return projectRouteRest(url) === "query-tracking";
|
|
6298
|
+
}
|
|
6288
6299
|
function enforceEmbedProjectTabs(request, configuredTabs) {
|
|
6289
6300
|
const policy = requestEmbedProjectTabs(request, configuredTabs);
|
|
6290
6301
|
if (policy === void 0) return;
|
|
6291
6302
|
if (request.method === "OPTIONS") return;
|
|
6292
6303
|
const { tabs } = policy;
|
|
6293
|
-
if (policy.fromEmbedSurface && WRITE_METHODS2.has(request.method)) {
|
|
6304
|
+
if (policy.fromEmbedSurface && WRITE_METHODS2.has(request.method) && !isEmbedQueryWrite(request)) {
|
|
6294
6305
|
throw forbidden("This endpoint is not available in embed mode.");
|
|
6295
6306
|
}
|
|
6296
6307
|
if (WRITE_METHODS2.has(request.method)) return;
|
|
6297
6308
|
const url = request.url.split("?")[0];
|
|
6298
6309
|
if (isProjectShellRead(request, url)) return;
|
|
6310
|
+
if (isEmbedQueryRead(request, url)) return;
|
|
6299
6311
|
if (tabs.includes("overview") && isOverviewRead(url)) return;
|
|
6300
6312
|
if (tabs.includes("technical-aeo") && isTechnicalAeoRead(request, url)) return;
|
|
6301
6313
|
throw forbidden("This endpoint is not available for the configured embed tabs.");
|
|
@@ -24929,6 +24941,31 @@ function readVisibilityComparisonRuns(db, projectId, since, until, includeEviden
|
|
|
24929
24941
|
// ../api-routes/src/query-tracking.ts
|
|
24930
24942
|
import crypto24 from "crypto";
|
|
24931
24943
|
import { and as and33, desc as desc17, eq as eq41, inArray as inArray22, isNotNull as isNotNull5, isNull as isNull8, ne as ne8 } from "drizzle-orm";
|
|
24944
|
+
|
|
24945
|
+
// ../api-routes/src/embed-queries.ts
|
|
24946
|
+
function embedQueryWriteLimit(request) {
|
|
24947
|
+
const principal = request.principal;
|
|
24948
|
+
const scopes = principal?.scopes ?? request.apiKey?.scopes ?? [];
|
|
24949
|
+
if (!scopes.includes(EMBED_QUERIES_WRITE_SCOPE)) return void 0;
|
|
24950
|
+
if (scopes.includes(WILDCARD_SCOPE) || scopes.includes(MEASUREMENT_PLAN_WRITE_SCOPE)) return void 0;
|
|
24951
|
+
const projectId = principal?.kind === "api-key" ? principal.projectId : request.apiKey?.projectId;
|
|
24952
|
+
if (!projectId) throw forbidden("An embedded query key must be scoped to one project.");
|
|
24953
|
+
const limit = parseEmbedQueryLimit(request.headers[EMBED_QUERY_LIMIT_HEADER]);
|
|
24954
|
+
if (limit === void 0) throw forbidden("An embedded query change needs the dashboard query limit.");
|
|
24955
|
+
return limit;
|
|
24956
|
+
}
|
|
24957
|
+
function assertEmbedQueryChange(mutation) {
|
|
24958
|
+
const plain = mutation.additions.length + mutation.removals.length === 1 && (mutation.edits ?? []).length === 0 && mutation.additions.every((addition) => addition.input.source === "manual" && addition.audience === void 0 && addition.contexts === void 0 && addition.queryClass === void 0) && mutation.removals.every((removal) => removal.queryId !== void 0 && removal.audience === void 0);
|
|
24959
|
+
if (!plain) throw forbidden("An embedded dashboard can add or remove one query at a time.");
|
|
24960
|
+
}
|
|
24961
|
+
function assertEmbedQueryWorkspace(mode) {
|
|
24962
|
+
if (mode !== "simple") throw forbidden("Your agency manages the queries for this project.");
|
|
24963
|
+
}
|
|
24964
|
+
function assertWithinEmbedQueryLimit(before, after, limit) {
|
|
24965
|
+
if (after > limit && after > before) throw embedQueryLimitReached(limit, after);
|
|
24966
|
+
}
|
|
24967
|
+
|
|
24968
|
+
// ../api-routes/src/query-tracking.ts
|
|
24932
24969
|
var SOURCE_LIMIT = 100;
|
|
24933
24970
|
var MAX_REVIEW_AGE_MS = 15 * 60 * 1e3;
|
|
24934
24971
|
var MAX_REVIEW_FUTURE_SKEW_MS = 60 * 1e3;
|
|
@@ -26345,17 +26382,21 @@ async function queryTrackingRoutes(app, opts = {}) {
|
|
|
26345
26382
|
const project = resolveProject(app.db, request.params.name);
|
|
26346
26383
|
return workspaceDto(app.db, readWorkspace(app.db, project), opts);
|
|
26347
26384
|
});
|
|
26348
|
-
app.post("/projects/:name/query-tracking/preview", async (request) => {
|
|
26349
|
-
|
|
26385
|
+
app.post("/projects/:name/query-tracking/preview", { config: { writeScope: EMBED_QUERIES_WRITE_SCOPE } }, async (request) => {
|
|
26386
|
+
const embedLimit = embedQueryWriteLimit(request);
|
|
26387
|
+
if (embedLimit === void 0) requireScope(request, MEASUREMENT_PLAN_WRITE_SCOPE);
|
|
26350
26388
|
const parsed = queryTrackingPreviewRequestSchema.safeParse(request.body);
|
|
26351
26389
|
if (!parsed.success) throw validationError("Invalid query tracking preview payload", { issues: parsed.error.issues });
|
|
26390
|
+
if (embedLimit !== void 0) assertEmbedQueryChange(parsed.data);
|
|
26352
26391
|
const project = resolveProject(app.db, request.params.name);
|
|
26353
26392
|
const state = readWorkspace(app.db, project);
|
|
26393
|
+
if (embedLimit !== void 0) assertEmbedQueryWorkspace(state.mode);
|
|
26354
26394
|
if (parsed.data.expectedWorkspaceVersion !== state.workspaceVersion) {
|
|
26355
26395
|
throw queryTrackingPreviewStale(parsed.data.expectedWorkspaceVersion, state.workspaceVersion);
|
|
26356
26396
|
}
|
|
26357
26397
|
const reviewedAt = (/* @__PURE__ */ new Date()).toISOString();
|
|
26358
26398
|
const candidate = buildCandidate(app.db, state, parsed.data, opts, reviewedAt);
|
|
26399
|
+
if (embedLimit !== void 0) assertWithinEmbedQueryLimit(state.queryRows.length, candidate.queryRows.size, embedLimit);
|
|
26359
26400
|
return queryTrackingPreviewResponseSchema.parse({
|
|
26360
26401
|
mode: state.mode,
|
|
26361
26402
|
workspaceVersion: state.workspaceVersion,
|
|
@@ -26367,10 +26408,12 @@ async function queryTrackingRoutes(app, opts = {}) {
|
|
|
26367
26408
|
workload: candidate.workload
|
|
26368
26409
|
});
|
|
26369
26410
|
});
|
|
26370
|
-
app.post("/projects/:name/query-tracking/commit", async (request, reply) => {
|
|
26371
|
-
|
|
26411
|
+
app.post("/projects/:name/query-tracking/commit", { config: { writeScope: EMBED_QUERIES_WRITE_SCOPE } }, async (request, reply) => {
|
|
26412
|
+
const embedLimit = embedQueryWriteLimit(request);
|
|
26413
|
+
if (embedLimit === void 0) requireScope(request, MEASUREMENT_PLAN_WRITE_SCOPE);
|
|
26372
26414
|
const parsed = queryTrackingCommitRequestSchema.safeParse(request.body);
|
|
26373
26415
|
if (!parsed.success) throw validationError("Invalid query tracking commit payload", { issues: parsed.error.issues });
|
|
26416
|
+
if (embedLimit !== void 0) assertEmbedQueryChange(parsed.data);
|
|
26374
26417
|
const project = resolveProject(app.db, request.params.name);
|
|
26375
26418
|
const lookup = { operation: "query-tracking.commit", key: parsed.data.previewToken, checksum: requestChecksum(parsed.data) };
|
|
26376
26419
|
const replay = replayReceipt(app.db, project.id, lookup, reply);
|
|
@@ -26382,6 +26425,7 @@ async function queryTrackingRoutes(app, opts = {}) {
|
|
|
26382
26425
|
const currentProject = tx.select().from(projects).where(eq41(projects.id, project.id)).get();
|
|
26383
26426
|
if (!currentProject) throw notFound("Project", project.name);
|
|
26384
26427
|
const state = readWorkspace(tx, currentProject);
|
|
26428
|
+
if (embedLimit !== void 0) assertEmbedQueryWorkspace(state.mode);
|
|
26385
26429
|
if (parsed.data.expectedWorkspaceVersion !== state.workspaceVersion) {
|
|
26386
26430
|
throw queryTrackingPreviewStale(parsed.data.expectedWorkspaceVersion, state.workspaceVersion);
|
|
26387
26431
|
}
|
|
@@ -26389,6 +26433,7 @@ async function queryTrackingRoutes(app, opts = {}) {
|
|
|
26389
26433
|
if (parsed.data.previewToken !== mutationPreviewToken(candidate, parsed.data, reviewedAt)) {
|
|
26390
26434
|
throw queryTrackingPreviewStale(parsed.data.expectedWorkspaceVersion, state.workspaceVersion);
|
|
26391
26435
|
}
|
|
26436
|
+
if (embedLimit !== void 0) assertWithinEmbedQueryLimit(state.queryRows.length, candidate.queryRows.size, embedLimit);
|
|
26392
26437
|
if (!candidate.diff.noOp && !rowsEqual(new Map(state.queryRows.map((row) => [row.id, row])), candidate.queryRows)) {
|
|
26393
26438
|
assertNoActivePlanlessSweep(tx, { projectId: project.id, projectName: project.name });
|
|
26394
26439
|
}
|
|
@@ -26401,7 +26446,12 @@ async function queryTrackingRoutes(app, opts = {}) {
|
|
|
26401
26446
|
actor: "api",
|
|
26402
26447
|
action: "query-tracking.updated",
|
|
26403
26448
|
entityType: "query",
|
|
26404
|
-
diff: {
|
|
26449
|
+
diff: {
|
|
26450
|
+
added: candidate.diff.added.length,
|
|
26451
|
+
removed: candidate.diff.removed.length,
|
|
26452
|
+
reused: candidate.diff.reused.length,
|
|
26453
|
+
...embedLimit !== void 0 ? { via: "embed" } : {}
|
|
26454
|
+
}
|
|
26405
26455
|
}));
|
|
26406
26456
|
active = null;
|
|
26407
26457
|
} else if (!candidate.diff.noOp) {
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
trackIntegrationConnection
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-3LTLLHCD.js";
|
|
4
4
|
import {
|
|
5
5
|
cliRuntimeContext
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-RVEXUQHP.js";
|
|
7
7
|
|
|
8
8
|
// src/cli-connection-telemetry.ts
|
|
9
9
|
function trackCliConnection(properties) {
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
resolveCliAccess,
|
|
4
4
|
resolveCliAccessForInvocation,
|
|
5
5
|
windowOptions
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-PJYXLC3D.js";
|
|
7
7
|
import {
|
|
8
8
|
emitJsonl
|
|
9
9
|
} from "./chunk-Z7IUAJOF.js";
|
|
@@ -14,7 +14,7 @@ import {
|
|
|
14
14
|
} from "./chunk-HGMYEDAQ.js";
|
|
15
15
|
import {
|
|
16
16
|
OperationAccesses
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-6JGQT4OH.js";
|
|
18
18
|
|
|
19
19
|
// src/cli-catalog.ts
|
|
20
20
|
import { createRequire } from "module";
|
|
@@ -111,7 +111,7 @@ async function dispatchRegisteredCommand(args, fallbackFormat, specs) {
|
|
|
111
111
|
const accessValue = accessFilterFromArgs(argsWithoutHelp);
|
|
112
112
|
validateAccessFilter(accessValue);
|
|
113
113
|
if (fallbackFormat !== "text") {
|
|
114
|
-
const { printCliCatalog: printCliCatalog2 } = await import("./cli-catalog-
|
|
114
|
+
const { printCliCatalog: printCliCatalog2 } = await import("./cli-catalog-ZBTUYNJA.js");
|
|
115
115
|
const group2 = argsWithoutHelp.find((arg) => !arg.startsWith("--"));
|
|
116
116
|
printCliCatalog2(specs, fallbackFormat, group2, accessValue);
|
|
117
117
|
return true;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
createApiClient
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-BGTJTKOJ.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-6JGQT4OH.js";
|
|
23
23
|
|
|
24
24
|
// src/commands/run.ts
|
|
25
25
|
function getClient() {
|
|
@@ -6,12 +6,12 @@ import {
|
|
|
6
6
|
import {
|
|
7
7
|
createApiClient,
|
|
8
8
|
runWithUsageTags
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-BGTJTKOJ.js";
|
|
10
10
|
import {
|
|
11
11
|
canonryMcpTools,
|
|
12
12
|
mcpOutputSchema,
|
|
13
13
|
toolOperationAccess
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-QNSMMQJY.js";
|
|
15
15
|
import {
|
|
16
16
|
PACKAGE_VERSION
|
|
17
17
|
} from "./chunk-AOJU5LKX.js";
|
|
@@ -24,7 +24,7 @@ import {
|
|
|
24
24
|
isReadOnlyKey,
|
|
25
25
|
restrictedWriteScopes,
|
|
26
26
|
upgradeCaveatFor
|
|
27
|
-
} from "./chunk-
|
|
27
|
+
} from "./chunk-6JGQT4OH.js";
|
|
28
28
|
|
|
29
29
|
// src/mcp/server.ts
|
|
30
30
|
import { randomUUID } from "crypto";
|
|
@@ -7,27 +7,27 @@ import {
|
|
|
7
7
|
reparseStoredResult4,
|
|
8
8
|
reparseStoredResult5,
|
|
9
9
|
resolveStoredApiResponse
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-EIRIZPR6.js";
|
|
11
11
|
import {
|
|
12
12
|
loadConfig
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-6RI7JFFI.js";
|
|
14
14
|
import {
|
|
15
15
|
isMachineFormat
|
|
16
16
|
} from "./chunk-HGMYEDAQ.js";
|
|
17
17
|
import {
|
|
18
18
|
determineCitationState
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-R7RTWOOV.js";
|
|
20
20
|
import {
|
|
21
21
|
backfillProjectAnswerMentions,
|
|
22
22
|
competitorIdentityColumns,
|
|
23
23
|
createRunCompetitorResolver,
|
|
24
24
|
readMarketCompetitorNames,
|
|
25
25
|
refreshSnapshotMentionIdentity
|
|
26
|
-
} from "./chunk-
|
|
26
|
+
} from "./chunk-JGO7LGVN.js";
|
|
27
27
|
import {
|
|
28
28
|
classifyAiUserFetch,
|
|
29
29
|
classifyCrawler
|
|
30
|
-
} from "./chunk-
|
|
30
|
+
} from "./chunk-CNSLBHFP.js";
|
|
31
31
|
import {
|
|
32
32
|
aiUserFetchEventsHourly,
|
|
33
33
|
auditLog,
|
|
@@ -42,7 +42,7 @@ import {
|
|
|
42
42
|
querySnapshots,
|
|
43
43
|
rawEventSamples,
|
|
44
44
|
runs
|
|
45
|
-
} from "./chunk-
|
|
45
|
+
} from "./chunk-XOCF2U54.js";
|
|
46
46
|
import {
|
|
47
47
|
ProviderNames,
|
|
48
48
|
RetrievalContracts,
|
|
@@ -59,7 +59,7 @@ import {
|
|
|
59
59
|
extractRecommendedCompetitors,
|
|
60
60
|
normalizeUrlPath,
|
|
61
61
|
openRouterRouteModel
|
|
62
|
-
} from "./chunk-
|
|
62
|
+
} from "./chunk-6JGQT4OH.js";
|
|
63
63
|
|
|
64
64
|
// src/commands/backfill.ts
|
|
65
65
|
import { setImmediate as yieldToEventLoop } from "timers/promises";
|
|
@@ -437,7 +437,7 @@ No DB writes performed. Re-run without --dry-run to apply.`);
|
|
|
437
437
|
}
|
|
438
438
|
}
|
|
439
439
|
async function backfillInsightsCommand(project, opts) {
|
|
440
|
-
const { IntelligenceService } = await import("./intelligence-service-
|
|
440
|
+
const { IntelligenceService } = await import("./intelligence-service-PAMFRLPE.js");
|
|
441
441
|
const config = loadConfig();
|
|
442
442
|
const db = createClient(config.database);
|
|
443
443
|
migrate(db);
|
|
@@ -2,11 +2,11 @@ import {
|
|
|
2
2
|
dedupeGscSitemapUrls,
|
|
3
3
|
resolveDiscoveredGscSitemapUrls,
|
|
4
4
|
submitGscSitemapBatches
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-CSDDKEL6.js";
|
|
6
6
|
import {
|
|
7
7
|
measurementDraftOperationSchema,
|
|
8
8
|
runMeasurementDraftAction
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-ULUKHNE4.js";
|
|
10
10
|
import {
|
|
11
11
|
CliError
|
|
12
12
|
} from "./chunk-HGMYEDAQ.js";
|
|
@@ -177,7 +177,7 @@ import {
|
|
|
177
177
|
trafficSeriesGranularitySchema,
|
|
178
178
|
visibilityCompareSelectionSchema,
|
|
179
179
|
visibilityReportRequestSchema
|
|
180
|
-
} from "./chunk-
|
|
180
|
+
} from "./chunk-6JGQT4OH.js";
|
|
181
181
|
|
|
182
182
|
// src/mcp/tool-registry.ts
|
|
183
183
|
import { z as z2 } from "zod";
|
|
@@ -2,18 +2,18 @@ import {
|
|
|
2
2
|
configExists,
|
|
3
3
|
loadConfigRaw,
|
|
4
4
|
saveConfigPatch
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-6RI7JFFI.js";
|
|
6
6
|
import {
|
|
7
7
|
BUNDLED_SKILL_NAMES,
|
|
8
8
|
installSkills
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-JNRMODJS.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-6JGQT4OH.js";
|
|
17
17
|
|
|
18
18
|
// src/skills-autosync.ts
|
|
19
19
|
import fs from "fs";
|
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
loadConfig,
|
|
6
6
|
loadConfigRaw,
|
|
7
7
|
saveConfigPatch
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-6RI7JFFI.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-6JGQT4OH.js";
|
|
22
22
|
|
|
23
23
|
// src/runtime-context.ts
|
|
24
24
|
function cliRuntimeContext(env = process.env, stdio = process) {
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
2
|
createApiClient
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-BGTJTKOJ.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-ULUKHNE4.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-6JGQT4OH.js";
|
|
41
41
|
|
|
42
42
|
// src/commands/measurement-plan.ts
|
|
43
43
|
import crypto from "crypto";
|
|
@@ -23,7 +23,7 @@ import {
|
|
|
23
23
|
measurementDraftUpsertGroupRequestSchema,
|
|
24
24
|
measurementDraftUpsertMarketRequestSchema,
|
|
25
25
|
measurementDraftUpsertTargetRequestSchema
|
|
26
|
-
} from "./chunk-
|
|
26
|
+
} from "./chunk-6JGQT4OH.js";
|
|
27
27
|
|
|
28
28
|
// src/measurement-draft-actions.ts
|
|
29
29
|
import { z } from "zod";
|