@canonry/canonry 5.14.0 → 5.15.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/{AuditHistoryPanel-DWDOPf8c.js → AuditHistoryPanel-BZJn-wvp.js} +1 -1
- package/assets/assets/{BacklinksPage-DGxq-iU6.js → BacklinksPage-DsQAKO31.js} +1 -1
- package/assets/assets/{HistoryPage-DR91m-gT.js → HistoryPage-DWn459Gu.js} +1 -1
- package/assets/assets/{MeasurementPropertyPage-a8poltfM.js → MeasurementPropertyPage-D6pUcBiT.js} +1 -1
- package/assets/assets/{ProjectPage-CCCJE7rA.js → ProjectPage-D-lDBpPV.js} +1 -1
- package/assets/assets/{RunRow-Xe63DyPK.js → RunRow-BJxx50Ar.js} +1 -1
- package/assets/assets/{RunsPage-DK119ZZw.js → RunsPage-DvoNDx6z.js} +1 -1
- package/assets/assets/{SettingsPage-G461foD-.js → SettingsPage-DXbhM5Lv.js} +1 -1
- package/assets/assets/{SiteHealthSection-CJnHkGM2.js → SiteHealthSection-4mMfc6Rb.js} +3 -3
- package/assets/assets/{TrafficPage-AsWgc7Ot.js → TrafficPage-EYSxLxkQ.js} +1 -1
- package/assets/assets/{TrafficSourceDetailPage-D10yBQoD.js → TrafficSourceDetailPage-DY4sV_BX.js} +1 -1
- package/assets/assets/{extract-error-message-PP4HD_Dp.js → extract-error-message-BMpWRqf9.js} +1 -1
- package/assets/assets/{index-CCIeAE4J.js → index-KCAlcuMN.js} +22 -22
- package/assets/assets/{react-sigma_core.esm.min-CkyyYkKU.js → react-sigma_core.esm.min-CHepSGqZ.js} +1 -1
- package/assets/assets/{v2-overview-adapter-DW-In1hp.js → v2-overview-adapter-CpM-FjB_.js} +1 -1
- package/assets/index.html +1 -1
- package/dist/{chunk-RGMUT5KY.js → chunk-3YAPVVFN.js} +106 -39
- package/dist/{chunk-4LPV6ZZY.js → chunk-CDQDPUY4.js} +2 -2
- package/dist/{chunk-SOLFOKZF.js → chunk-JO5HHEJV.js} +2 -2
- package/dist/{chunk-45EGDRVF.js → chunk-L36TC6LB.js} +62 -7
- package/dist/{chunk-S6LJSUZO.js → chunk-SJ7ZOFL5.js} +74 -29
- package/dist/{chunk-2W6GCJ3O.js → chunk-ZGZSROSR.js} +1 -1
- package/dist/cli.js +7 -7
- package/dist/{demo-server-H4ZFIIIB.js → demo-server-QLQUVMKJ.js} +3 -3
- package/dist/index.js +5 -5
- package/dist/{intelligence-service-CJKOXPOP.js → intelligence-service-EAUKUVVM.js} +2 -2
- package/dist/mcp.js +3 -3
- package/package.json +11 -11
|
@@ -17,12 +17,12 @@ import {
|
|
|
17
17
|
resolveOperatorApiKeyIds,
|
|
18
18
|
runWithUsageTags,
|
|
19
19
|
saveConfigPatch
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-ZGZSROSR.js";
|
|
21
21
|
import {
|
|
22
22
|
deleteSiteCrawlGraphLayout,
|
|
23
23
|
persistSiteCrawlGraphLayout,
|
|
24
24
|
prepareSiteCrawlGraphLayout
|
|
25
|
-
} from "./chunk-
|
|
25
|
+
} from "./chunk-CDQDPUY4.js";
|
|
26
26
|
import {
|
|
27
27
|
PACKAGE_VERSION
|
|
28
28
|
} from "./chunk-AOJU5LKX.js";
|
|
@@ -184,7 +184,7 @@ import {
|
|
|
184
184
|
siteLivenessState,
|
|
185
185
|
toAlertView,
|
|
186
186
|
usageCounters
|
|
187
|
-
} from "./chunk-
|
|
187
|
+
} from "./chunk-3YAPVVFN.js";
|
|
188
188
|
import {
|
|
189
189
|
AGENT_MEMORY_VALUE_MAX_BYTES,
|
|
190
190
|
AGENT_NONE,
|
|
@@ -345,7 +345,7 @@ import {
|
|
|
345
345
|
visibilityReportRequestSchema,
|
|
346
346
|
winnabilityClassLabel,
|
|
347
347
|
withRetry
|
|
348
|
-
} from "./chunk-
|
|
348
|
+
} from "./chunk-L36TC6LB.js";
|
|
349
349
|
|
|
350
350
|
// src/runtime-context.ts
|
|
351
351
|
function cliRuntimeContext(env = process.env, stdio = process) {
|
|
@@ -6491,7 +6491,7 @@ function nonBlank(value) {
|
|
|
6491
6491
|
return trimmed ? trimmed : void 0;
|
|
6492
6492
|
}
|
|
6493
6493
|
function resolveBuildCommit(env = process.env) {
|
|
6494
|
-
const embedded = true ? "
|
|
6494
|
+
const embedded = true ? "979d2ea6821a78ddc2d2df35600c4b208e4ecff7" : void 0;
|
|
6495
6495
|
return nonBlank(embedded) ?? nonBlank(env.CANONRY_COMMIT);
|
|
6496
6496
|
}
|
|
6497
6497
|
function resolveInstanceIdentity(env = process.env) {
|
|
@@ -6966,8 +6966,9 @@ var JobRunner = class {
|
|
|
6966
6966
|
}
|
|
6967
6967
|
log2.info("run.dispatch", { runId, providerCount: activeProviders.length, providers: activeProviders.map((p) => p.adapter.name) });
|
|
6968
6968
|
const projectCompetitors = this.db.select().from(competitors).where(eq2(competitors.projectId, projectId)).all();
|
|
6969
|
-
const
|
|
6970
|
-
const
|
|
6969
|
+
const competitorDomains = projectCompetitors.map((c) => c.domain);
|
|
6970
|
+
const resolveCompetitors = createRunCompetitorResolver(this.db, competitorDomains);
|
|
6971
|
+
const competitorsFor = (executionId) => resolveCompetitors(existingRun.measurementPlanVersionId, executionId);
|
|
6971
6972
|
const allDomains = effectiveDomains({
|
|
6972
6973
|
canonicalDomain: project.canonicalDomain,
|
|
6973
6974
|
ownedDomains: project.ownedDomains
|
|
@@ -7170,8 +7171,7 @@ var JobRunner = class {
|
|
|
7170
7171
|
const slotContext = {
|
|
7171
7172
|
runId,
|
|
7172
7173
|
allDomains,
|
|
7173
|
-
|
|
7174
|
-
competitorAliases: runCompetitors.aliases,
|
|
7174
|
+
competitorsFor,
|
|
7175
7175
|
allBrandNames,
|
|
7176
7176
|
executionGates,
|
|
7177
7177
|
providerDispatchCounts,
|
|
@@ -7429,8 +7429,8 @@ var JobRunner = class {
|
|
|
7429
7429
|
else providerErrors.set(provider, `No ${provider} provider is configured on this instance, so its missing answers did not run.`);
|
|
7430
7430
|
}
|
|
7431
7431
|
const projectCompetitors = this.db.select().from(competitors).where(eq2(competitors.projectId, projectId)).all();
|
|
7432
|
-
const
|
|
7433
|
-
const
|
|
7432
|
+
const resolveCompetitors = createRunCompetitorResolver(this.db, projectCompetitors.map((c) => c.domain));
|
|
7433
|
+
const competitorsFor = (executionId) => resolveCompetitors(run.measurementPlanVersionId, executionId);
|
|
7434
7434
|
const allDomains = effectiveDomains({ canonicalDomain: project.canonicalDomain, ownedDomains: project.ownedDomains });
|
|
7435
7435
|
const allBrandNames = effectiveBrandNames({ displayName: project.displayName, aliases: project.aliases });
|
|
7436
7436
|
const todayPeriod = getCurrentUsageDay();
|
|
@@ -7484,8 +7484,7 @@ var JobRunner = class {
|
|
|
7484
7484
|
const ctx = {
|
|
7485
7485
|
runId,
|
|
7486
7486
|
allDomains,
|
|
7487
|
-
|
|
7488
|
-
competitorAliases: runCompetitors.aliases,
|
|
7487
|
+
competitorsFor,
|
|
7489
7488
|
allBrandNames,
|
|
7490
7489
|
executionGates,
|
|
7491
7490
|
providerDispatchCounts,
|
|
@@ -7585,6 +7584,7 @@ var JobRunner = class {
|
|
|
7585
7584
|
async executePlanSlot(ctx, registeredProvider, unit) {
|
|
7586
7585
|
const { adapter, config: providerConfig } = registeredProvider;
|
|
7587
7586
|
const providerName = adapter.name;
|
|
7587
|
+
const { domains: competitorDomains, aliases: competitorAliases } = ctx.competitorsFor(unit.executionId);
|
|
7588
7588
|
const gate = ctx.executionGates.get(providerName);
|
|
7589
7589
|
if (!gate) {
|
|
7590
7590
|
throw new Error(`Missing execution gate for provider ${providerName}`);
|
|
@@ -7602,7 +7602,7 @@ var JobRunner = class {
|
|
|
7602
7602
|
{
|
|
7603
7603
|
query: unit.queryText,
|
|
7604
7604
|
canonicalDomains: ctx.allDomains,
|
|
7605
|
-
competitorDomains
|
|
7605
|
+
competitorDomains,
|
|
7606
7606
|
location: requestedContext ?? void 0
|
|
7607
7607
|
},
|
|
7608
7608
|
config
|
|
@@ -7639,14 +7639,14 @@ var JobRunner = class {
|
|
|
7639
7639
|
ctx.allBrandNames,
|
|
7640
7640
|
ctx.allDomains
|
|
7641
7641
|
);
|
|
7642
|
-
const overlap = computeCompetitorOverlap(normalized,
|
|
7642
|
+
const overlap = computeCompetitorOverlap(normalized, competitorDomains, competitorAliases);
|
|
7643
7643
|
const extractedCompetitors = extractRecommendedCompetitors(
|
|
7644
7644
|
normalized.answerText,
|
|
7645
7645
|
ctx.allDomains,
|
|
7646
7646
|
normalized.citedDomains,
|
|
7647
|
-
|
|
7647
|
+
competitorDomains,
|
|
7648
7648
|
ctx.allBrandNames,
|
|
7649
|
-
|
|
7649
|
+
competitorAliases
|
|
7650
7650
|
);
|
|
7651
7651
|
const snapshotId = crypto6.randomUUID();
|
|
7652
7652
|
let screenshotRelPath = null;
|
|
@@ -8607,6 +8607,30 @@ function validateChatCardCreative(value) {
|
|
|
8607
8607
|
validateId(value.file_id, "Ad creative file id");
|
|
8608
8608
|
validateHttpUrl(value.target_url, "Ad creative target URL");
|
|
8609
8609
|
}
|
|
8610
|
+
var MAX_QUERY_STRING_TEMPLATE_LENGTH = 1e3;
|
|
8611
|
+
function validateLandingPageConfiguration(value, label) {
|
|
8612
|
+
if (value === void 0 || value === null) return;
|
|
8613
|
+
validateRequestObject(value, `${label} landing_page_configuration`);
|
|
8614
|
+
const template = value.query_string_template;
|
|
8615
|
+
if (template === null) return;
|
|
8616
|
+
if (typeof template !== "string" || template.trim().length === 0 || template.length > MAX_QUERY_STRING_TEMPLATE_LENGTH) {
|
|
8617
|
+
throw new OpenAiAdsApiError(
|
|
8618
|
+
`${label} query_string_template must be 1-${MAX_QUERY_STRING_TEMPLATE_LENGTH} characters`,
|
|
8619
|
+
400
|
|
8620
|
+
);
|
|
8621
|
+
}
|
|
8622
|
+
if (/\s/.test(template) || template.startsWith("?") || template.startsWith("&")) {
|
|
8623
|
+
throw new OpenAiAdsApiError(
|
|
8624
|
+
`${label} query_string_template must be a bare query string without whitespace or a leading ? or &`,
|
|
8625
|
+
400
|
|
8626
|
+
);
|
|
8627
|
+
}
|
|
8628
|
+
}
|
|
8629
|
+
function parseLandingPageQueryStringTemplate(value) {
|
|
8630
|
+
if (!isRecord(value)) return null;
|
|
8631
|
+
const template = value.query_string_template;
|
|
8632
|
+
return typeof template === "string" && template.trim().length > 0 ? template : null;
|
|
8633
|
+
}
|
|
8610
8634
|
function validateCreateCampaignRequest(request) {
|
|
8611
8635
|
validateRequestObject(request, "Campaign create request");
|
|
8612
8636
|
validateEntityName(request.name, "Campaign name");
|
|
@@ -8616,6 +8640,7 @@ function validateCreateCampaignRequest(request) {
|
|
|
8616
8640
|
validateCampaignTimestamp(request.end_time, "Campaign end_time");
|
|
8617
8641
|
validateCampaignBidding(request);
|
|
8618
8642
|
validateCampaignTargeting(request.targeting);
|
|
8643
|
+
validateLandingPageConfiguration(request.landing_page_configuration, "Campaign create request");
|
|
8619
8644
|
}
|
|
8620
8645
|
function validateUpdateCampaignRequest(request) {
|
|
8621
8646
|
validatePublicUpdateRequest(request, "Campaign update request");
|
|
@@ -8624,6 +8649,7 @@ function validateUpdateCampaignRequest(request) {
|
|
|
8624
8649
|
validateCampaignTimestamp(request.start_time, "Campaign start_time");
|
|
8625
8650
|
validateCampaignTimestamp(request.end_time, "Campaign end_time");
|
|
8626
8651
|
validateCampaignTargeting(request.targeting);
|
|
8652
|
+
validateLandingPageConfiguration(request.landing_page_configuration, "Campaign update request");
|
|
8627
8653
|
}
|
|
8628
8654
|
function validateCreateAdGroupRequest(request) {
|
|
8629
8655
|
validateRequestObject(request, "Ad group create request");
|
|
@@ -8632,12 +8658,14 @@ function validateCreateAdGroupRequest(request) {
|
|
|
8632
8658
|
validatePausedCreateStatus(request.status, "Ad group create request");
|
|
8633
8659
|
validateContextHints(request.context_hints);
|
|
8634
8660
|
validateBiddingConfig(request.bidding_config);
|
|
8661
|
+
validateLandingPageConfiguration(request.landing_page_configuration, "Ad group create request");
|
|
8635
8662
|
}
|
|
8636
8663
|
function validateUpdateAdGroupRequest(request) {
|
|
8637
8664
|
validatePublicUpdateRequest(request, "Ad group update request");
|
|
8638
8665
|
if (request.name !== void 0) validateEntityName(request.name, "Ad group name");
|
|
8639
8666
|
validateContextHints(request.context_hints);
|
|
8640
8667
|
if (request.bidding_config !== void 0) validateBiddingConfig(request.bidding_config);
|
|
8668
|
+
validateLandingPageConfiguration(request.landing_page_configuration, "Ad group update request");
|
|
8641
8669
|
}
|
|
8642
8670
|
function validateCreateAdRequest(request) {
|
|
8643
8671
|
validateRequestObject(request, "Ad create request");
|
|
@@ -8645,11 +8673,13 @@ function validateCreateAdRequest(request) {
|
|
|
8645
8673
|
validateEntityName(request.name, "Ad name");
|
|
8646
8674
|
validatePausedCreateStatus(request.status, "Ad create request");
|
|
8647
8675
|
validateChatCardCreative(request.creative);
|
|
8676
|
+
validateLandingPageConfiguration(request.landing_page_configuration, "Ad create request");
|
|
8648
8677
|
}
|
|
8649
8678
|
function validateUpdateAdRequest(request) {
|
|
8650
8679
|
validatePublicUpdateRequest(request, "Ad update request");
|
|
8651
8680
|
if (request.name !== void 0) validateEntityName(request.name, "Ad name");
|
|
8652
8681
|
if (request.creative !== void 0) validateChatCardCreative(request.creative);
|
|
8682
|
+
validateLandingPageConfiguration(request.landing_page_configuration, "Ad update request");
|
|
8653
8683
|
}
|
|
8654
8684
|
function adsClientLog(level, action, ctx) {
|
|
8655
8685
|
const entry = {
|
|
@@ -9094,6 +9124,7 @@ async function executeAdsSync(db, runId, projectId, opts) {
|
|
|
9094
9124
|
lifetimeSpendLimitMicros: campaign.budget?.lifetime_spend_limit_micros ?? null,
|
|
9095
9125
|
conversionEventSettingIds: campaign.conversion_event_setting_ids ?? [],
|
|
9096
9126
|
targeting: campaign.targeting,
|
|
9127
|
+
landingPageQueryStringTemplate: parseLandingPageQueryStringTemplate(campaign.landing_page_configuration),
|
|
9097
9128
|
upstreamCreatedAt: campaign.created_at,
|
|
9098
9129
|
upstreamUpdatedAt: campaign.updated_at,
|
|
9099
9130
|
syncRunId: runId,
|
|
@@ -9110,6 +9141,7 @@ async function executeAdsSync(db, runId, projectId, opts) {
|
|
|
9110
9141
|
billingEventType: group.bidding_config?.billing_event_type ?? null,
|
|
9111
9142
|
maxBidMicros: group.bidding_config?.max_bid_micros ?? null,
|
|
9112
9143
|
contextHints: group.context_hints,
|
|
9144
|
+
landingPageQueryStringTemplate: parseLandingPageQueryStringTemplate(group.landing_page_configuration),
|
|
9113
9145
|
upstreamCreatedAt: group.created_at,
|
|
9114
9146
|
upstreamUpdatedAt: group.updated_at,
|
|
9115
9147
|
syncRunId: runId,
|
|
@@ -9124,6 +9156,7 @@ async function executeAdsSync(db, runId, projectId, opts) {
|
|
|
9124
9156
|
status: ad.status,
|
|
9125
9157
|
creative: ad.creative,
|
|
9126
9158
|
reviewStatus: ad.review_status ?? ad.review?.status ?? null,
|
|
9159
|
+
landingPageQueryStringTemplate: parseLandingPageQueryStringTemplate(ad.landing_page_configuration),
|
|
9127
9160
|
upstreamCreatedAt: ad.created_at,
|
|
9128
9161
|
upstreamUpdatedAt: ad.updated_at,
|
|
9129
9162
|
syncRunId: runId,
|
|
@@ -11603,6 +11636,7 @@ async function backfillAnswerVisibilityCommand(opts) {
|
|
|
11603
11636
|
const snapshotRows = db.select({
|
|
11604
11637
|
id: querySnapshots.id,
|
|
11605
11638
|
runId: querySnapshots.runId,
|
|
11639
|
+
executionId: querySnapshots.measurementExecutionId,
|
|
11606
11640
|
provider: querySnapshots.provider,
|
|
11607
11641
|
citationState: querySnapshots.citationState,
|
|
11608
11642
|
answerMentioned: querySnapshots.answerMentioned,
|
|
@@ -11643,7 +11677,7 @@ async function backfillAnswerVisibilityCommand(opts) {
|
|
|
11643
11677
|
};
|
|
11644
11678
|
const nextCitationState = determineCitationState(normalized, projectDomains);
|
|
11645
11679
|
const nextCitedDomains = reparsedResult.citedDomains;
|
|
11646
|
-
const runCompetitors = competitorsForRun(planVersionByRun.get(snapshot.runId));
|
|
11680
|
+
const runCompetitors = competitorsForRun(planVersionByRun.get(snapshot.runId), snapshot.executionId);
|
|
11647
11681
|
const nextCompetitorOverlap = computeCompetitorOverlap(normalized, runCompetitors.domains, runCompetitors.aliases);
|
|
11648
11682
|
const nextRecommendedCompetitors = extractRecommendedCompetitors(
|
|
11649
11683
|
normalized.answerText,
|
|
@@ -11902,6 +11936,7 @@ function backfillProjectAnswerMentions(db, projectId, opts) {
|
|
|
11902
11936
|
const snapshotRows = db.select({
|
|
11903
11937
|
id: querySnapshots.id,
|
|
11904
11938
|
runId: querySnapshots.runId,
|
|
11939
|
+
executionId: querySnapshots.measurementExecutionId,
|
|
11905
11940
|
provider: querySnapshots.provider,
|
|
11906
11941
|
answerMentioned: querySnapshots.answerMentioned,
|
|
11907
11942
|
answerText: querySnapshots.answerText,
|
|
@@ -11927,7 +11962,7 @@ function backfillProjectAnswerMentions(db, projectId, opts) {
|
|
|
11927
11962
|
retrievalStatus: "unknown",
|
|
11928
11963
|
searchQueries: []
|
|
11929
11964
|
};
|
|
11930
|
-
const runCompetitors = competitorsForRun(planVersionByRun.get(snapshot.runId));
|
|
11965
|
+
const runCompetitors = competitorsForRun(planVersionByRun.get(snapshot.runId), snapshot.executionId);
|
|
11931
11966
|
const nextCompetitorOverlap = computeCompetitorOverlap(normalized, runCompetitors.domains, runCompetitors.aliases);
|
|
11932
11967
|
const nextRecommendedCompetitors = extractRecommendedCompetitors(
|
|
11933
11968
|
answerText,
|
|
@@ -12032,7 +12067,7 @@ function readStoredGroundingSources(rawResponse) {
|
|
|
12032
12067
|
return result2;
|
|
12033
12068
|
}
|
|
12034
12069
|
async function backfillInsightsCommand(project, opts) {
|
|
12035
|
-
const { IntelligenceService: IntelligenceService2 } = await import("./intelligence-service-
|
|
12070
|
+
const { IntelligenceService: IntelligenceService2 } = await import("./intelligence-service-EAUKUVVM.js");
|
|
12036
12071
|
const config = loadConfig();
|
|
12037
12072
|
const db = createClient(config.database);
|
|
12038
12073
|
migrate(db);
|
|
@@ -18485,7 +18520,8 @@ async function createServer(opts) {
|
|
|
18485
18520
|
lifetimeSpendLimitMicros: entity.budget?.lifetime_spend_limit_micros ?? null,
|
|
18486
18521
|
locationIds: entity.targeting?.locations?.include?.map((location) => location.id) ?? [],
|
|
18487
18522
|
biddingType: entity.bidding_type,
|
|
18488
|
-
conversionEventSettingIds: entity.conversion_event_setting_ids
|
|
18523
|
+
conversionEventSettingIds: entity.conversion_event_setting_ids,
|
|
18524
|
+
landingPageQueryStringTemplate: parseLandingPageQueryStringTemplate(entity.landing_page_configuration)
|
|
18489
18525
|
});
|
|
18490
18526
|
const adsAdGroupEntityResult = (entity, campaignId) => ({
|
|
18491
18527
|
...adsEntityResult(entity),
|
|
@@ -18493,12 +18529,15 @@ async function createServer(opts) {
|
|
|
18493
18529
|
campaignId: campaignId ?? null,
|
|
18494
18530
|
contextHints: entity.context_hints,
|
|
18495
18531
|
maxBidMicros: entity.bidding_config?.max_bid_micros ?? null,
|
|
18496
|
-
billingEventType: entity.bidding_config?.billing_event_type ?? null
|
|
18532
|
+
billingEventType: entity.bidding_config?.billing_event_type ?? null,
|
|
18533
|
+
landingPageQueryStringTemplate: parseLandingPageQueryStringTemplate(entity.landing_page_configuration)
|
|
18497
18534
|
});
|
|
18498
18535
|
const adsAdEntityResult = (entity, adGroupId) => ({
|
|
18499
18536
|
...adsEntityResult(entity),
|
|
18500
|
-
adGroupId: adGroupId ?? null
|
|
18537
|
+
adGroupId: adGroupId ?? null,
|
|
18538
|
+
landingPageQueryStringTemplate: parseLandingPageQueryStringTemplate(entity.landing_page_configuration)
|
|
18501
18539
|
});
|
|
18540
|
+
const landingPageConfigurationUpdate = (template) => template === void 0 ? void 0 : template === null ? null : { query_string_template: template };
|
|
18502
18541
|
const adsOperator = {
|
|
18503
18542
|
uploadImage: async (apiKey, imageUrl) => {
|
|
18504
18543
|
const result2 = await uploadImageFromUrl(apiKey, imageUrl);
|
|
@@ -18515,7 +18554,8 @@ async function createServer(opts) {
|
|
|
18515
18554
|
budget: { lifetime_spend_limit_micros: input.lifetimeSpendLimitMicros },
|
|
18516
18555
|
bidding_type: input.biddingType,
|
|
18517
18556
|
conversion_event_setting_ids: input.conversionEventSettingIds,
|
|
18518
|
-
targeting: { locations: { include: input.locationIds.map((id) => ({ id })) } }
|
|
18557
|
+
targeting: { locations: { include: input.locationIds.map((id) => ({ id })) } },
|
|
18558
|
+
landing_page_configuration: input.landingPageQueryStringTemplate === void 0 ? void 0 : { query_string_template: input.landingPageQueryStringTemplate }
|
|
18519
18559
|
})),
|
|
18520
18560
|
updateCampaign: async (apiKey, id, input) => adsCampaignEntityResult(await updateCampaign(apiKey, id, {
|
|
18521
18561
|
name: input.name,
|
|
@@ -18523,7 +18563,8 @@ async function createServer(opts) {
|
|
|
18523
18563
|
start_time: input.startTime,
|
|
18524
18564
|
end_time: input.endTime,
|
|
18525
18565
|
budget: input.lifetimeSpendLimitMicros === void 0 ? void 0 : { lifetime_spend_limit_micros: input.lifetimeSpendLimitMicros },
|
|
18526
|
-
targeting: input.locationIds === void 0 ? void 0 : { locations: { include: input.locationIds.map((locationId) => ({ id: locationId })) } }
|
|
18566
|
+
targeting: input.locationIds === void 0 ? void 0 : { locations: { include: input.locationIds.map((locationId) => ({ id: locationId })) } },
|
|
18567
|
+
landing_page_configuration: landingPageConfigurationUpdate(input.landingPageQueryStringTemplate)
|
|
18527
18568
|
})),
|
|
18528
18569
|
activateCampaign: async (apiKey, id) => adsCampaignEntityResult(await activateCampaign(apiKey, id)),
|
|
18529
18570
|
pauseCampaign: async (apiKey, id) => adsCampaignEntityResult(await pauseCampaign(apiKey, id)),
|
|
@@ -18539,7 +18580,8 @@ async function createServer(opts) {
|
|
|
18539
18580
|
bidding_config: {
|
|
18540
18581
|
billing_event_type: input.billingEventType,
|
|
18541
18582
|
max_bid_micros: input.maxBidMicros
|
|
18542
|
-
}
|
|
18583
|
+
},
|
|
18584
|
+
landing_page_configuration: input.landingPageQueryStringTemplate === void 0 ? void 0 : { query_string_template: input.landingPageQueryStringTemplate }
|
|
18543
18585
|
})),
|
|
18544
18586
|
updateAdGroup: async (apiKey, id, input) => {
|
|
18545
18587
|
let biddingConfig;
|
|
@@ -18556,7 +18598,8 @@ async function createServer(opts) {
|
|
|
18556
18598
|
name: input.name,
|
|
18557
18599
|
description: input.description,
|
|
18558
18600
|
context_hints: input.contextHints,
|
|
18559
|
-
bidding_config: biddingConfig
|
|
18601
|
+
bidding_config: biddingConfig,
|
|
18602
|
+
landing_page_configuration: landingPageConfigurationUpdate(input.landingPageQueryStringTemplate)
|
|
18560
18603
|
}));
|
|
18561
18604
|
},
|
|
18562
18605
|
activateAdGroup: async (apiKey, id) => adsAdGroupEntityResult(await activateAdGroup(apiKey, id)),
|
|
@@ -18574,7 +18617,8 @@ async function createServer(opts) {
|
|
|
18574
18617
|
body: input.creative.body,
|
|
18575
18618
|
target_url: input.creative.targetUrl,
|
|
18576
18619
|
file_id: input.creative.fileId
|
|
18577
|
-
}
|
|
18620
|
+
},
|
|
18621
|
+
landing_page_configuration: input.landingPageQueryStringTemplate === void 0 ? void 0 : { query_string_template: input.landingPageQueryStringTemplate }
|
|
18578
18622
|
})),
|
|
18579
18623
|
updateAd: async (apiKey, id, input) => adsAdEntityResult(await updateAd(apiKey, id, {
|
|
18580
18624
|
name: input.name,
|
|
@@ -18584,7 +18628,8 @@ async function createServer(opts) {
|
|
|
18584
18628
|
body: input.creative.body,
|
|
18585
18629
|
target_url: input.creative.targetUrl,
|
|
18586
18630
|
file_id: input.creative.fileId
|
|
18587
|
-
} : void 0
|
|
18631
|
+
} : void 0,
|
|
18632
|
+
landing_page_configuration: landingPageConfigurationUpdate(input.landingPageQueryStringTemplate)
|
|
18588
18633
|
})),
|
|
18589
18634
|
activateAd: async (apiKey, id) => adsAdEntityResult(await activateAd(apiKey, id)),
|
|
18590
18635
|
pauseAd: async (apiKey, id) => adsAdEntityResult(await pauseAd(apiKey, id)),
|
package/dist/cli.js
CHANGED
|
@@ -35,11 +35,11 @@ import {
|
|
|
35
35
|
trackCliCommandFinished,
|
|
36
36
|
trackEvent,
|
|
37
37
|
waitForServerRuntimeStartup
|
|
38
|
-
} from "./chunk-
|
|
38
|
+
} from "./chunk-SJ7ZOFL5.js";
|
|
39
39
|
import {
|
|
40
40
|
autoSyncSkills,
|
|
41
41
|
formatAutoSyncNotice
|
|
42
|
-
} from "./chunk-
|
|
42
|
+
} from "./chunk-JO5HHEJV.js";
|
|
43
43
|
import {
|
|
44
44
|
CliError,
|
|
45
45
|
EXIT_SYSTEM_ERROR,
|
|
@@ -66,13 +66,13 @@ import {
|
|
|
66
66
|
shouldPrintServeSkillsNudge,
|
|
67
67
|
systemError,
|
|
68
68
|
usageError
|
|
69
|
-
} from "./chunk-
|
|
69
|
+
} from "./chunk-ZGZSROSR.js";
|
|
70
70
|
import {
|
|
71
71
|
DEFAULT_DEMO_TRUSTED_PROXIES,
|
|
72
72
|
trustedProxiesProblem,
|
|
73
73
|
trustedProxyProblem
|
|
74
74
|
} from "./chunk-RB2F4D3Z.js";
|
|
75
|
-
import "./chunk-
|
|
75
|
+
import "./chunk-CDQDPUY4.js";
|
|
76
76
|
import "./chunk-AOJU5LKX.js";
|
|
77
77
|
import {
|
|
78
78
|
CLOUDFLARE_WORKER_BINDINGS,
|
|
@@ -88,7 +88,7 @@ import {
|
|
|
88
88
|
queries,
|
|
89
89
|
renderReportHtml,
|
|
90
90
|
runs
|
|
91
|
-
} from "./chunk-
|
|
91
|
+
} from "./chunk-3YAPVVFN.js";
|
|
92
92
|
import {
|
|
93
93
|
AdsDeliverySnapshotStatuses,
|
|
94
94
|
AdsHistoricalCampaignRollupStatuses,
|
|
@@ -173,7 +173,7 @@ import {
|
|
|
173
173
|
snapshotProviderModeSchema,
|
|
174
174
|
visibilityReportRequestSchema,
|
|
175
175
|
winnabilityClassSchema
|
|
176
|
-
} from "./chunk-
|
|
176
|
+
} from "./chunk-L36TC6LB.js";
|
|
177
177
|
|
|
178
178
|
// src/cli.ts
|
|
179
179
|
import { pathToFileURL } from "url";
|
|
@@ -438,7 +438,7 @@ function parseDemoTrustedProxies(values) {
|
|
|
438
438
|
async function demoCommand(options) {
|
|
439
439
|
const { host, port } = parseDemoListenOptions(options);
|
|
440
440
|
const trustProxy = parseDemoTrustedProxies(options.trustProxy);
|
|
441
|
-
const { createDemoServer } = await import("./demo-server-
|
|
441
|
+
const { createDemoServer } = await import("./demo-server-QLQUVMKJ.js");
|
|
442
442
|
const app = await createDemoServer({ trustProxy });
|
|
443
443
|
let stopping = false;
|
|
444
444
|
const stop = () => {
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
import {
|
|
5
5
|
layoutSiteCrawlGraphInput,
|
|
6
6
|
persistSiteCrawlGraphLayout
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-CDQDPUY4.js";
|
|
8
8
|
import {
|
|
9
9
|
PACKAGE_VERSION
|
|
10
10
|
} from "./chunk-AOJU5LKX.js";
|
|
@@ -83,7 +83,7 @@ import {
|
|
|
83
83
|
siteCrawlPages,
|
|
84
84
|
siteCrawlSnapshots,
|
|
85
85
|
trafficSources
|
|
86
|
-
} from "./chunk-
|
|
86
|
+
} from "./chunk-3YAPVVFN.js";
|
|
87
87
|
import {
|
|
88
88
|
RunKinds,
|
|
89
89
|
SiteCrawlFetchStates,
|
|
@@ -104,7 +104,7 @@ import {
|
|
|
104
104
|
measurementPlanV2Schema,
|
|
105
105
|
placementLinkDecision,
|
|
106
106
|
siteAuditPageFactorSchema
|
|
107
|
-
} from "./chunk-
|
|
107
|
+
} from "./chunk-L36TC6LB.js";
|
|
108
108
|
|
|
109
109
|
// src/demo-server.ts
|
|
110
110
|
import { dirname, join as join2 } from "path";
|
package/dist/index.js
CHANGED
|
@@ -3,14 +3,14 @@ import {
|
|
|
3
3
|
createGoogleMarketingCredentialStore,
|
|
4
4
|
createGoogleMarketingRuntime,
|
|
5
5
|
createServer
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-SJ7ZOFL5.js";
|
|
7
7
|
import {
|
|
8
8
|
loadConfig
|
|
9
|
-
} from "./chunk-
|
|
10
|
-
import "./chunk-
|
|
9
|
+
} from "./chunk-ZGZSROSR.js";
|
|
10
|
+
import "./chunk-CDQDPUY4.js";
|
|
11
11
|
import "./chunk-AOJU5LKX.js";
|
|
12
|
-
import "./chunk-
|
|
13
|
-
import "./chunk-
|
|
12
|
+
import "./chunk-3YAPVVFN.js";
|
|
13
|
+
import "./chunk-L36TC6LB.js";
|
|
14
14
|
export {
|
|
15
15
|
GoogleMarketingRuntimeError,
|
|
16
16
|
createGoogleMarketingCredentialStore,
|
package/dist/mcp.js
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import {
|
|
2
2
|
autoSyncSkills
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-JO5HHEJV.js";
|
|
4
4
|
import {
|
|
5
5
|
createApiClient,
|
|
6
6
|
createCanonryMcpServer
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-ZGZSROSR.js";
|
|
8
8
|
import "./chunk-AOJU5LKX.js";
|
|
9
9
|
import {
|
|
10
10
|
isReadOnlyKey,
|
|
11
11
|
updateCheckEnvOptOut
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-L36TC6LB.js";
|
|
13
13
|
|
|
14
14
|
// src/mcp/cli.ts
|
|
15
15
|
import { randomUUID } from "crypto";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@canonry/canonry",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.15.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Self-hosted AI visibility (AEO) platform: track how ChatGPT, Claude, Gemini, and Perplexity cite your domain, join it with Search Console, GA4, server-side traffic, and paid media, and fix what you find through agent tools (CLI, REST, MCP). Local SQLite.",
|
|
6
6
|
"keywords": [
|
|
@@ -89,29 +89,29 @@
|
|
|
89
89
|
"@ainyc/canonry-web": "0.0.0",
|
|
90
90
|
"@ainyc/canonry-api-client": "0.0.0",
|
|
91
91
|
"@ainyc/canonry-api-routes": "0.0.0",
|
|
92
|
-
"@ainyc/canonry-config": "0.0.0",
|
|
93
|
-
"@ainyc/canonry-contracts": "0.0.0",
|
|
94
92
|
"@ainyc/canonry-db": "0.0.0",
|
|
93
|
+
"@ainyc/canonry-contracts": "0.0.0",
|
|
94
|
+
"@ainyc/canonry-config": "0.0.0",
|
|
95
95
|
"@ainyc/canonry-integration-bing": "0.0.0",
|
|
96
96
|
"@ainyc/canonry-integration-cloud-run": "0.0.0",
|
|
97
97
|
"@ainyc/canonry-integration-cloudflare-queue": "0.0.0",
|
|
98
|
-
"@ainyc/canonry-integration-commoncrawl": "0.0.0",
|
|
99
98
|
"@ainyc/canonry-integration-cloudflare-worker": "0.0.0",
|
|
99
|
+
"@ainyc/canonry-integration-google": "0.0.0",
|
|
100
100
|
"@ainyc/canonry-integration-google-ads": "0.0.0",
|
|
101
|
+
"@ainyc/canonry-integration-commoncrawl": "0.0.0",
|
|
101
102
|
"@ainyc/canonry-integration-google-business-profile": "0.0.0",
|
|
102
|
-
"@ainyc/canonry-integration-google": "0.0.0",
|
|
103
103
|
"@ainyc/canonry-integration-google-places": "0.0.0",
|
|
104
|
-
"@ainyc/canonry-integration-traffic": "0.0.0",
|
|
105
104
|
"@ainyc/canonry-integration-google-tag-manager": "0.0.0",
|
|
105
|
+
"@ainyc/canonry-integration-openai-ads": "0.0.0",
|
|
106
106
|
"@ainyc/canonry-intelligence": "0.0.0",
|
|
107
|
-
"@ainyc/canonry-provider-cdp": "0.0.0",
|
|
108
107
|
"@ainyc/canonry-integration-wordpress": "0.0.0",
|
|
109
|
-
"@ainyc/canonry-provider-
|
|
108
|
+
"@ainyc/canonry-provider-cdp": "0.0.0",
|
|
109
|
+
"@ainyc/canonry-integration-traffic": "0.0.0",
|
|
110
110
|
"@ainyc/canonry-provider-gemini": "0.0.0",
|
|
111
111
|
"@ainyc/canonry-provider-local": "0.0.0",
|
|
112
|
-
"@ainyc/canonry-provider-
|
|
113
|
-
"@ainyc/canonry-
|
|
114
|
-
"@ainyc/canonry-provider-
|
|
112
|
+
"@ainyc/canonry-provider-claude": "0.0.0",
|
|
113
|
+
"@ainyc/canonry-provider-openai": "0.0.0",
|
|
114
|
+
"@ainyc/canonry-provider-perplexity": "0.0.0"
|
|
115
115
|
},
|
|
116
116
|
"scripts": {
|
|
117
117
|
"build": "pnpm run build:cli && pnpm run build:web",
|