@canonry/canonry 7.7.0 → 7.8.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/SKILL.md +43 -17
- package/assets/agent-workspace/skills/aero/references/agent-operations.md +4 -1
- package/assets/agent-workspace/skills/aero/references/portfolio-analysis.md +15 -7
- package/assets/agent-workspace/skills/canonry/SKILL.md +4 -1
- package/assets/assets/{AuditHistoryPanel-qumC-I56.js → AuditHistoryPanel-AJlkzSmq.js} +1 -1
- package/assets/assets/{BacklinksPage-BNyYcY5w.js → BacklinksPage-IhPtSh39.js} +1 -1
- package/assets/assets/{HistoryPage-CQfOM6NA.js → HistoryPage-B-vNinvd.js} +1 -1
- package/assets/assets/{MeasurementPropertyPage-D0LTQHL7.js → MeasurementPropertyPage-s1kKo2TD.js} +1 -1
- package/assets/assets/{ProjectPage-QQErJAT8.js → ProjectPage-iH_9g_lU.js} +1 -1
- package/assets/assets/{RunsPage-CniAGDVF.js → RunsPage-BSbEUlNZ.js} +1 -1
- package/assets/assets/{SettingsPage-BPsrE4ao.js → SettingsPage-zHyljW2M.js} +1 -1
- package/assets/assets/SiteHealthSection-AYGPjoka.js +4 -0
- package/assets/assets/{TrafficPage-DXKk92zy.js → TrafficPage-CY_qggoW.js} +1 -1
- package/assets/assets/{TrafficSourceDetailPage-4POLIA_c.js → TrafficSourceDetailPage-aJ2Vk6Pd.js} +1 -1
- package/assets/assets/{extract-error-message-C6t0hB2w.js → extract-error-message-CHEe8sOP.js} +1 -1
- package/assets/assets/index-DfamSNSD.js +86 -0
- package/assets/assets/{react-sigma_core.esm.min-D7GjzWYV.js → react-sigma_core.esm.min-2sZRqoN4.js} +1 -1
- package/assets/assets/{v2-overview-adapter-ChE5k_dV.js → v2-overview-adapter-ZNgNU_Yp.js} +1 -1
- package/assets/index.html +1 -1
- package/dist/{chunk-ODEAE5T5.js → chunk-AAMKTL6B.js} +3 -3
- package/dist/{chunk-WJJTKZKK.js → chunk-DO7XPDG5.js} +5977 -5743
- package/dist/{chunk-75RSUOHZ.js → chunk-KRFTA4I7.js} +1126 -475
- package/dist/{chunk-LFUSODDL.js → chunk-L35TGPAV.js} +444 -158
- package/dist/{chunk-WBTYXLXL.js → chunk-LO56QXPO.js} +5 -4
- package/dist/{chunk-JJXTHJ4E.js → chunk-T2V2PESH.js} +4 -3
- package/dist/{chunk-3DB43KT2.js → chunk-ZLB7WX5D.js} +26 -33
- package/dist/cli.js +67 -28
- package/dist/{demo-server-UWBPY743.js → demo-server-KDMG3APY.js} +4 -4
- package/dist/index.js +6 -6
- package/dist/{intelligence-service-LOH37GPJ.js → intelligence-service-LAXJFE3U.js} +2 -2
- package/dist/mcp.js +4 -4
- package/package.json +7 -7
- package/assets/assets/SiteHealthSection-zW3ykBCu.js +0 -4
- package/assets/assets/index-DBQ-8jB1.js +0 -86
package/dist/cli.js
CHANGED
|
@@ -32,11 +32,11 @@ import {
|
|
|
32
32
|
trackCliCommandFinished,
|
|
33
33
|
trackEvent,
|
|
34
34
|
waitForServerRuntimeStartup
|
|
35
|
-
} from "./chunk-
|
|
35
|
+
} from "./chunk-L35TGPAV.js";
|
|
36
36
|
import {
|
|
37
37
|
autoSyncSkills,
|
|
38
38
|
formatAutoSyncNotice
|
|
39
|
-
} from "./chunk-
|
|
39
|
+
} from "./chunk-AAMKTL6B.js";
|
|
40
40
|
import {
|
|
41
41
|
configExists,
|
|
42
42
|
createApiClient,
|
|
@@ -53,13 +53,13 @@ import {
|
|
|
53
53
|
saveConfig,
|
|
54
54
|
saveConfigPatch,
|
|
55
55
|
shouldPrintServeSkillsNudge
|
|
56
|
-
} from "./chunk-
|
|
56
|
+
} from "./chunk-LO56QXPO.js";
|
|
57
57
|
import {
|
|
58
58
|
DEFAULT_DEMO_TRUSTED_PROXIES,
|
|
59
59
|
trustedProxiesProblem,
|
|
60
60
|
trustedProxyProblem
|
|
61
61
|
} from "./chunk-RB2F4D3Z.js";
|
|
62
|
-
import "./chunk-
|
|
62
|
+
import "./chunk-T2V2PESH.js";
|
|
63
63
|
import {
|
|
64
64
|
CliError,
|
|
65
65
|
EXIT_SYSTEM_ERROR,
|
|
@@ -71,7 +71,7 @@ import {
|
|
|
71
71
|
runMeasurementDraftAction,
|
|
72
72
|
systemError,
|
|
73
73
|
usageError
|
|
74
|
-
} from "./chunk-
|
|
74
|
+
} from "./chunk-ZLB7WX5D.js";
|
|
75
75
|
import {
|
|
76
76
|
CLOUDFLARE_WORKER_BINDINGS,
|
|
77
77
|
CLOUDFLARE_WORKER_GENERATED_MARKER,
|
|
@@ -100,7 +100,7 @@ import {
|
|
|
100
100
|
querySnapshots,
|
|
101
101
|
rawEventSamples,
|
|
102
102
|
runs
|
|
103
|
-
} from "./chunk-
|
|
103
|
+
} from "./chunk-KRFTA4I7.js";
|
|
104
104
|
import {
|
|
105
105
|
AdsDeliverySnapshotStatuses,
|
|
106
106
|
AdsHistoricalCampaignRollupStatuses,
|
|
@@ -155,6 +155,7 @@ import {
|
|
|
155
155
|
buildModelChangeNotice,
|
|
156
156
|
canonicalizeGtmAccountId,
|
|
157
157
|
canonicalizeGtmResourceSelection,
|
|
158
|
+
competitorLandscapeQuerySchema,
|
|
158
159
|
computeCompetitorOverlap,
|
|
159
160
|
contentTargetDismissRequestSchema,
|
|
160
161
|
conversionTrackingContractWriteRequestSchema,
|
|
@@ -228,7 +229,7 @@ import {
|
|
|
228
229
|
visibilityCompareSelectionSchema,
|
|
229
230
|
visibilityReportRequestSchema,
|
|
230
231
|
winnabilityClassSchema
|
|
231
|
-
} from "./chunk-
|
|
232
|
+
} from "./chunk-DO7XPDG5.js";
|
|
232
233
|
|
|
233
234
|
// src/cli.ts
|
|
234
235
|
import { pathToFileURL } from "url";
|
|
@@ -685,8 +686,8 @@ var SENTIMENT_CLI_COMMANDS = [
|
|
|
685
686
|
},
|
|
686
687
|
{
|
|
687
688
|
path: ["sentiment", "compare"],
|
|
688
|
-
usage: "canonry sentiment compare <project> --from-run-id <id> --to-run-id <id> [selection options] [--format json]",
|
|
689
|
-
help: `${selectionHelp} Complete matched coverage and compatible evaluators are required for a directional verdict.`,
|
|
689
|
+
usage: "canonry sentiment compare <project> --from-run-id <id|previous-rated> --to-run-id <id> [selection options] [--format json]",
|
|
690
|
+
help: `${selectionHelp} Use --from-run-id previous-rated to resolve the preceding rated run in the selected scope. Self-comparisons are refused. Complete matched coverage and compatible evaluators are required for a directional verdict.`,
|
|
690
691
|
options: { ...selectionOptions, "from-run-id": stringOption(), "to-run-id": stringOption() },
|
|
691
692
|
run: (input) => compareSentiment(project(input, "compare"), parse(sentimentCompareRequestSchema, {
|
|
692
693
|
...selection(input),
|
|
@@ -778,7 +779,7 @@ function parseDemoTrustedProxies(values) {
|
|
|
778
779
|
async function demoCommand(options) {
|
|
779
780
|
const { host, port } = parseDemoListenOptions(options);
|
|
780
781
|
const trustProxy = parseDemoTrustedProxies(options.trustProxy);
|
|
781
|
-
const { createDemoServer } = await import("./demo-server-
|
|
782
|
+
const { createDemoServer } = await import("./demo-server-KDMG3APY.js");
|
|
782
783
|
const app = await createDemoServer({ trustProxy });
|
|
783
784
|
let stopping = false;
|
|
784
785
|
const stop = () => {
|
|
@@ -1192,7 +1193,7 @@ No DB writes performed. Re-run without --dry-run to apply.`);
|
|
|
1192
1193
|
}
|
|
1193
1194
|
}
|
|
1194
1195
|
async function backfillInsightsCommand(project2, opts) {
|
|
1195
|
-
const { IntelligenceService } = await import("./intelligence-service-
|
|
1196
|
+
const { IntelligenceService } = await import("./intelligence-service-LAXJFE3U.js");
|
|
1196
1197
|
const config = loadConfig();
|
|
1197
1198
|
const db = createClient(config.database);
|
|
1198
1199
|
migrate(db);
|
|
@@ -9246,7 +9247,8 @@ async function showCompetitorLandscape(project2, options) {
|
|
|
9246
9247
|
...options.model !== void 0 ? { model: options.model } : {},
|
|
9247
9248
|
queryClass: options.queryClass,
|
|
9248
9249
|
location: options.location,
|
|
9249
|
-
runId: options.runId
|
|
9250
|
+
runId: options.runId,
|
|
9251
|
+
answers: options.answers
|
|
9250
9252
|
});
|
|
9251
9253
|
if (options.format === "json") {
|
|
9252
9254
|
console.log(JSON.stringify(data, null, 2));
|
|
@@ -9324,7 +9326,7 @@ function printLandscapeRows(heading, rows, showSampleCount = false, context, que
|
|
|
9324
9326
|
// src/cli-commands/competitor.ts
|
|
9325
9327
|
var ADD_USAGE = "canonry competitor add <project> <domain...> [--alias <name>]... [--format json]";
|
|
9326
9328
|
var ALIASES_USAGE = "canonry competitor aliases <project> <domain> [--set <name>]... [--add <name>]... [--remove <name>]... [--clear] [--format json]";
|
|
9327
|
-
var LANDSCAPE_USAGE = "canonry competitor landscape <project> [--window 7d|30d|90d|all] [--group-key <key>|--scope all-markets] [--by-model] [--provider <provider> [--model <id>]] [--query-class all|branded|non-brand] [--location <label>] [--run-id <id>] [--format json|jsonl]";
|
|
9329
|
+
var LANDSCAPE_USAGE = "canonry competitor landscape <project> [--window 7d|30d|90d|all] [--group-key <key>|--scope all-markets] [--by-model] [--provider <provider> [--model <id>]] [--query-class all|branded|non-brand] [--answers all|not-mentioned] [--location <label>] [--run-id <id>] [--format json|jsonl]";
|
|
9328
9330
|
function parseLandscapeScope(value) {
|
|
9329
9331
|
if (value === void 0 || value === "") return void 0;
|
|
9330
9332
|
if (value !== "all-markets") throw usageError(`--scope must be "all-markets" (got "${value}")`, {
|
|
@@ -9451,7 +9453,8 @@ Usage: ${ALIASES_USAGE}`, {
|
|
|
9451
9453
|
model: stringOption(),
|
|
9452
9454
|
"query-class": stringOption(),
|
|
9453
9455
|
location: stringOption(),
|
|
9454
|
-
"run-id": stringOption()
|
|
9456
|
+
"run-id": stringOption(),
|
|
9457
|
+
answers: stringOption()
|
|
9455
9458
|
},
|
|
9456
9459
|
run: async (input) => {
|
|
9457
9460
|
const project2 = requireProject(input, "competitor.landscape", LANDSCAPE_USAGE);
|
|
@@ -9471,7 +9474,10 @@ Usage: ${ALIASES_USAGE}`, {
|
|
|
9471
9474
|
details: { command: "competitor.landscape", usage: LANDSCAPE_USAGE }
|
|
9472
9475
|
});
|
|
9473
9476
|
}
|
|
9477
|
+
const parsedAnswers = competitorLandscapeQuerySchema.safeParse({ answers: getString(input.values, "answers") });
|
|
9478
|
+
if (!parsedAnswers.success) throw usageError("--answers must be all or not-mentioned");
|
|
9474
9479
|
await showCompetitorLandscape(project2, {
|
|
9480
|
+
answers: parsedAnswers.data.answers,
|
|
9475
9481
|
window: getString(input.values, "window"),
|
|
9476
9482
|
groupKey,
|
|
9477
9483
|
scope,
|
|
@@ -11794,12 +11800,16 @@ async function runAdvancedMeasurementOperation(project2, operation, source, form
|
|
|
11794
11800
|
advancedEmptyInputSchema.parse(input);
|
|
11795
11801
|
result = await client.getMeasurementSetup(project2);
|
|
11796
11802
|
break;
|
|
11797
|
-
case "overview":
|
|
11798
|
-
|
|
11803
|
+
case "overview": {
|
|
11804
|
+
const query = measurementOverviewQuerySchema.parse(input);
|
|
11805
|
+
result = await client.getMeasurementOverview(project2, { ...query, compact: typeof input === "object" && input !== null && "compact" in input ? query.compact : true });
|
|
11799
11806
|
break;
|
|
11800
|
-
|
|
11801
|
-
|
|
11807
|
+
}
|
|
11808
|
+
case "portfolio-summary": {
|
|
11809
|
+
const query = measurementPortfolioSummaryQuerySchema.parse(input);
|
|
11810
|
+
result = await client.getMeasurementPortfolioSummary(project2, { ...query, compact: typeof input === "object" && input !== null && "compact" in input ? query.compact : true });
|
|
11802
11811
|
break;
|
|
11812
|
+
}
|
|
11803
11813
|
case "property-questions":
|
|
11804
11814
|
result = await client.getMeasurementPropertyQuestions(project2, measurementPropertyQuestionsQuerySchema.parse(input));
|
|
11805
11815
|
break;
|
|
@@ -18491,12 +18501,16 @@ async function technicalAeoProgress(project2, opts) {
|
|
|
18491
18501
|
console.log(lines.join("\n"));
|
|
18492
18502
|
}
|
|
18493
18503
|
async function technicalAeoCrawl(project2, opts) {
|
|
18494
|
-
const crawl = await getClient27().getTechnicalAeoCrawl(project2, { runId: opts.runId });
|
|
18504
|
+
const crawl = await getClient27().getTechnicalAeoCrawl(project2, { runId: opts.runId, date: opts.date });
|
|
18495
18505
|
if (isMachineFormat(opts.format)) {
|
|
18496
18506
|
console.log(JSON.stringify(crawl, null, 2));
|
|
18497
18507
|
return;
|
|
18498
18508
|
}
|
|
18499
18509
|
if (!crawl.hasCrawlData) {
|
|
18510
|
+
if (opts.date) {
|
|
18511
|
+
console.log([`No persisted site crawl for "${project2}" on ${opts.date}.`, ...availableScanDateLines(crawl.availableScanDates)].join("\n"));
|
|
18512
|
+
return;
|
|
18513
|
+
}
|
|
18500
18514
|
console.log(`No persisted site crawl for "${project2}". Run \`canonry technical-aeo run ${project2}\` first.`);
|
|
18501
18515
|
return;
|
|
18502
18516
|
}
|
|
@@ -18507,6 +18521,7 @@ async function technicalAeoCrawl(project2, opts) {
|
|
|
18507
18521
|
`Links: ${crawl.counts.edges} internal/external observations \xB7 ${crawl.counts.findings} findings`,
|
|
18508
18522
|
`Dead links: ${formatDeadLinkState(crawl.deadLinks)}`
|
|
18509
18523
|
];
|
|
18524
|
+
lines.push(...inventorySummaryLines(crawl.inventorySummary));
|
|
18510
18525
|
if (crawl.termination) lines.push(`Stopped: ${crawl.termination}`);
|
|
18511
18526
|
console.log(lines.join("\n"));
|
|
18512
18527
|
}
|
|
@@ -18618,6 +18633,21 @@ function partialCrawlNote(res) {
|
|
|
18618
18633
|
if (!res.hasCrawlData || res.complete !== false) return null;
|
|
18619
18634
|
return `Partial crawl (${res.termination ?? "incomplete"}): pages and links beyond the crawl budget were not observed, so a missing page or link is not proof it does not exist.`;
|
|
18620
18635
|
}
|
|
18636
|
+
function availableScanDateLines(dates) {
|
|
18637
|
+
if (!dates) return [];
|
|
18638
|
+
return [
|
|
18639
|
+
`Known scan dates: ${dates.totalDates} distinct dates`,
|
|
18640
|
+
`Recent dates: ${dates.recentDates.join(", ") || "none"}`,
|
|
18641
|
+
`Same month and day: ${dates.matchingMonthDayDates.join(", ") || "none"} (${dates.matchingMonthDayTotal} distinct dates)`
|
|
18642
|
+
];
|
|
18643
|
+
}
|
|
18644
|
+
function inventorySummaryLines(summary) {
|
|
18645
|
+
if (!summary) return [];
|
|
18646
|
+
return [
|
|
18647
|
+
`Stored canonical pages: ${summary.total} total \xB7 ${summary.eligible} eligible \xB7 ${summary.excluded} excluded`,
|
|
18648
|
+
...summary.excludedReasons.map((reason) => `Excluded \xB7 ${reason.healthReason}: ${reason.pages}`)
|
|
18649
|
+
];
|
|
18650
|
+
}
|
|
18621
18651
|
async function technicalAeoCrawlPages(project2, opts) {
|
|
18622
18652
|
const res = await getClient27().getTechnicalAeoCrawlPages(project2, opts);
|
|
18623
18653
|
if (opts.format === "jsonl") {
|
|
@@ -18626,6 +18656,11 @@ async function technicalAeoCrawlPages(project2, opts) {
|
|
|
18626
18656
|
project: project2,
|
|
18627
18657
|
runId: res.runId,
|
|
18628
18658
|
complete: res.complete,
|
|
18659
|
+
runSelection: res.runSelection,
|
|
18660
|
+
requestedDate: res.requestedDate,
|
|
18661
|
+
availableScanDates: res.availableScanDates,
|
|
18662
|
+
inventorySummary: res.inventorySummary,
|
|
18663
|
+
healthReasonCounts: res.healthReasonCounts,
|
|
18629
18664
|
termination: res.termination,
|
|
18630
18665
|
total: res.total,
|
|
18631
18666
|
nextCursor: res.nextCursor
|
|
@@ -18638,14 +18673,16 @@ async function technicalAeoCrawlPages(project2, opts) {
|
|
|
18638
18673
|
return;
|
|
18639
18674
|
}
|
|
18640
18675
|
const note = partialCrawlNote(res);
|
|
18676
|
+
const inventoryLines = inventorySummaryLines(res.inventorySummary);
|
|
18641
18677
|
if (res.pages.length === 0) {
|
|
18642
|
-
console.log([`No persisted crawl pages for "${project2}".`, ...note ? [note] : []].join("\n"));
|
|
18678
|
+
console.log([opts.date && !res.hasCrawlData ? `No persisted crawl pages for "${project2}" on ${opts.date}.` : `No persisted crawl pages for "${project2}".`, ...availableScanDateLines(res.availableScanDates), ...inventoryLines, ...note ? [note] : []].join("\n"));
|
|
18643
18679
|
return;
|
|
18644
18680
|
}
|
|
18645
18681
|
const lines = [`${res.pages.length} of ${res.total} crawl page(s)${res.nextCursor ? " (more available)" : ""}:`, ""];
|
|
18646
|
-
lines.push(
|
|
18682
|
+
lines.push(...inventoryLines);
|
|
18683
|
+
lines.push(`${"Depth".padStart(5)} ${"Score".padStart(5)} ${"Page state".padEnd(21)} URL`);
|
|
18647
18684
|
for (const page of res.pages) {
|
|
18648
|
-
lines.push(`${String(page.depth ?? "-").padStart(5)} ${String(page.auditScore ?? "-").padStart(5)} ${page.indexabilityState.slice(0,
|
|
18685
|
+
lines.push(`${String(page.depth ?? "-").padStart(5)} ${String(page.auditScore ?? "-").padStart(5)} ${(page.healthReason ?? page.healthState ?? page.indexabilityState).slice(0, 21).padEnd(21)} ${page.url}`);
|
|
18649
18686
|
}
|
|
18650
18687
|
if (res.nextCursor) lines.push(`
|
|
18651
18688
|
Next cursor: ${res.nextCursor}`);
|
|
@@ -19003,12 +19040,12 @@ var TECHNICAL_AEO_CLI_COMMANDS_BASE = [
|
|
|
19003
19040
|
},
|
|
19004
19041
|
{
|
|
19005
19042
|
path: ["technical-aeo", "crawl"],
|
|
19006
|
-
usage: "canonry technical-aeo crawl <project> [--run-id <id>] [--format json]",
|
|
19007
|
-
options: { "run-id": stringOption() },
|
|
19043
|
+
usage: "canonry technical-aeo crawl <project> [--run-id <id> | --date YYYY-MM-DD] [--format json]",
|
|
19044
|
+
options: { "run-id": stringOption(), date: stringOption() },
|
|
19008
19045
|
run: async (input) => {
|
|
19009
|
-
const usage = "canonry technical-aeo crawl <project> [--run-id <id>] [--format json]";
|
|
19046
|
+
const usage = "canonry technical-aeo crawl <project> [--run-id <id> | --date YYYY-MM-DD] [--format json]";
|
|
19010
19047
|
const project2 = requireProject(input, "technical-aeo.crawl", usage);
|
|
19011
|
-
await technicalAeoCrawl(project2, { runId: getString(input.values, "run-id"), format: input.format });
|
|
19048
|
+
await technicalAeoCrawl(project2, { runId: getString(input.values, "run-id"), date: getString(input.values, "date"), format: input.format });
|
|
19012
19049
|
}
|
|
19013
19050
|
},
|
|
19014
19051
|
{
|
|
@@ -19148,9 +19185,10 @@ Usage: ${usage}`, {
|
|
|
19148
19185
|
},
|
|
19149
19186
|
{
|
|
19150
19187
|
path: ["technical-aeo", "crawl-pages"],
|
|
19151
|
-
usage: "canonry technical-aeo crawl-pages <project> [--run-id <id>] [--inventory-eligible true|false] [--fetch-state <state>] [--indexability-state <state>] [--audit-state <state>] [--sort url|path|score-asc|score-desc] [--cursor <cursor>] [--limit <n>] [--format json|jsonl]",
|
|
19188
|
+
usage: "canonry technical-aeo crawl-pages <project> [--run-id <id> | --date YYYY-MM-DD] [--inventory-eligible true|false] [--fetch-state <state>] [--indexability-state <state>] [--audit-state <state>] [--sort url|path|score-asc|score-desc] [--cursor <cursor>] [--limit <n>] [--format json|jsonl]",
|
|
19152
19189
|
options: {
|
|
19153
19190
|
"run-id": stringOption(),
|
|
19191
|
+
date: stringOption(),
|
|
19154
19192
|
"inventory-eligible": stringOption(),
|
|
19155
19193
|
"fetch-state": stringOption(),
|
|
19156
19194
|
"indexability-state": stringOption(),
|
|
@@ -19160,7 +19198,7 @@ Usage: ${usage}`, {
|
|
|
19160
19198
|
limit: stringOption()
|
|
19161
19199
|
},
|
|
19162
19200
|
run: async (input) => {
|
|
19163
|
-
const usage = "canonry technical-aeo crawl-pages <project> [--run-id <id>] [--inventory-eligible true|false] [--fetch-state <state>] [--indexability-state <state>] [--audit-state <state>] [--sort url|path|score-asc|score-desc] [--cursor <cursor>] [--limit <n>] [--format json|jsonl]";
|
|
19201
|
+
const usage = "canonry technical-aeo crawl-pages <project> [--run-id <id> | --date YYYY-MM-DD] [--inventory-eligible true|false] [--fetch-state <state>] [--indexability-state <state>] [--audit-state <state>] [--sort url|path|score-asc|score-desc] [--cursor <cursor>] [--limit <n>] [--format json|jsonl]";
|
|
19164
19202
|
const project2 = requireProject(input, "technical-aeo.crawl-pages", usage);
|
|
19165
19203
|
const sort = getString(input.values, "sort");
|
|
19166
19204
|
if (sort !== void 0 && !["url", "path", "score-asc", "score-desc"].includes(sort)) {
|
|
@@ -19172,6 +19210,7 @@ Usage: ${usage}`, {
|
|
|
19172
19210
|
}
|
|
19173
19211
|
await technicalAeoCrawlPages(project2, {
|
|
19174
19212
|
runId: getString(input.values, "run-id"),
|
|
19213
|
+
date: getString(input.values, "date"),
|
|
19175
19214
|
inventoryEligible: parseOptionalBoolean(input, "inventory-eligible", { command: "technical-aeo.crawl-pages", usage }),
|
|
19176
19215
|
fetchState: getString(input.values, "fetch-state"),
|
|
19177
19216
|
indexabilityState: getString(input.values, "indexability-state"),
|
|
@@ -5,11 +5,11 @@ import {
|
|
|
5
5
|
computeFactorAverages,
|
|
6
6
|
layoutSiteCrawlGraphInput,
|
|
7
7
|
persistSiteCrawlGraphLayout
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-T2V2PESH.js";
|
|
9
9
|
import {
|
|
10
10
|
PACKAGE_VERSION,
|
|
11
11
|
canonryMcpTools
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-ZLB7WX5D.js";
|
|
13
13
|
import {
|
|
14
14
|
HISTORY_WINDOW_RUNS,
|
|
15
15
|
IntelligenceService,
|
|
@@ -83,7 +83,7 @@ import {
|
|
|
83
83
|
siteCrawlPages,
|
|
84
84
|
siteCrawlSnapshots,
|
|
85
85
|
trafficSources
|
|
86
|
-
} from "./chunk-
|
|
86
|
+
} from "./chunk-KRFTA4I7.js";
|
|
87
87
|
import {
|
|
88
88
|
RunKinds,
|
|
89
89
|
SiteCrawlFetchStates,
|
|
@@ -112,7 +112,7 @@ import {
|
|
|
112
112
|
roundPreservingTotal,
|
|
113
113
|
siteAuditPageFactorSchema,
|
|
114
114
|
wilsonInterval
|
|
115
|
-
} from "./chunk-
|
|
115
|
+
} from "./chunk-DO7XPDG5.js";
|
|
116
116
|
|
|
117
117
|
// src/demo-server.ts
|
|
118
118
|
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-L35TGPAV.js";
|
|
7
7
|
import {
|
|
8
8
|
loadConfig
|
|
9
|
-
} from "./chunk-
|
|
10
|
-
import "./chunk-
|
|
11
|
-
import "./chunk-
|
|
12
|
-
import "./chunk-
|
|
13
|
-
import "./chunk-
|
|
9
|
+
} from "./chunk-LO56QXPO.js";
|
|
10
|
+
import "./chunk-T2V2PESH.js";
|
|
11
|
+
import "./chunk-ZLB7WX5D.js";
|
|
12
|
+
import "./chunk-KRFTA4I7.js";
|
|
13
|
+
import "./chunk-DO7XPDG5.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-AAMKTL6B.js";
|
|
4
4
|
import {
|
|
5
5
|
createApiClient,
|
|
6
6
|
createCanonryMcpServer
|
|
7
|
-
} from "./chunk-
|
|
8
|
-
import "./chunk-
|
|
7
|
+
} from "./chunk-LO56QXPO.js";
|
|
8
|
+
import "./chunk-ZLB7WX5D.js";
|
|
9
9
|
import {
|
|
10
10
|
isReadOnlyKey,
|
|
11
11
|
updateCheckEnvOptOut
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-DO7XPDG5.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": "7.
|
|
3
|
+
"version": "7.8.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": [
|
|
@@ -86,27 +86,27 @@
|
|
|
86
86
|
"tsup": "^8.5.1",
|
|
87
87
|
"tsx": "^4.19.0",
|
|
88
88
|
"@ainyc/canonry-web": "0.0.0",
|
|
89
|
+
"@ainyc/canonry-api-routes": "0.0.0",
|
|
90
|
+
"@ainyc/canonry-api-client": "0.0.0",
|
|
89
91
|
"@ainyc/canonry-config": "0.0.0",
|
|
90
92
|
"@ainyc/canonry-db": "0.0.0",
|
|
91
|
-
"@ainyc/canonry-api-client": "0.0.0",
|
|
92
93
|
"@ainyc/canonry-contracts": "0.0.0",
|
|
93
|
-
"@ainyc/canonry-api-routes": "0.0.0",
|
|
94
|
-
"@ainyc/canonry-integration-cloud-run": "0.0.0",
|
|
95
94
|
"@ainyc/canonry-integration-bing": "0.0.0",
|
|
95
|
+
"@ainyc/canonry-integration-cloud-run": "0.0.0",
|
|
96
96
|
"@ainyc/canonry-integration-cloudflare-worker": "0.0.0",
|
|
97
97
|
"@ainyc/canonry-integration-cloudflare-queue": "0.0.0",
|
|
98
|
-
"@ainyc/canonry-integration-google": "0.0.0",
|
|
99
|
-
"@ainyc/canonry-integration-commoncrawl": "0.0.0",
|
|
100
98
|
"@ainyc/canonry-integration-google-ads": "0.0.0",
|
|
99
|
+
"@ainyc/canonry-integration-commoncrawl": "0.0.0",
|
|
101
100
|
"@ainyc/canonry-integration-google-business-profile": "0.0.0",
|
|
102
101
|
"@ainyc/canonry-integration-google-places": "0.0.0",
|
|
103
102
|
"@ainyc/canonry-integration-google-tag-manager": "0.0.0",
|
|
103
|
+
"@ainyc/canonry-integration-google": "0.0.0",
|
|
104
104
|
"@ainyc/canonry-integration-openai-ads": "0.0.0",
|
|
105
105
|
"@ainyc/canonry-integration-traffic": "0.0.0",
|
|
106
106
|
"@ainyc/canonry-integration-wordpress": "0.0.0",
|
|
107
|
+
"@ainyc/canonry-intelligence": "0.0.0",
|
|
107
108
|
"@ainyc/canonry-provider-cdp": "0.0.0",
|
|
108
109
|
"@ainyc/canonry-provider-claude": "0.0.0",
|
|
109
|
-
"@ainyc/canonry-intelligence": "0.0.0",
|
|
110
110
|
"@ainyc/canonry-provider-gemini": "0.0.0",
|
|
111
111
|
"@ainyc/canonry-provider-local": "0.0.0",
|
|
112
112
|
"@ainyc/canonry-provider-muse": "0.0.0",
|