@canonry/canonry 4.131.0 → 4.132.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/canonry/references/canonry-cli.md +7 -0
- package/assets/assets/{AuditHistoryPanel-yJXZMO5t.js → AuditHistoryPanel-Carj_FCP.js} +1 -1
- package/assets/assets/{BacklinksPage-6VTLbAYx.js → BacklinksPage-CqOTDVIn.js} +1 -1
- package/assets/assets/{ChartPrimitives-D5YGiDLi.js → ChartPrimitives-EuQ82l0S.js} +1 -1
- package/assets/assets/{HistoryPage-BxdTM6-R.js → HistoryPage-D6XQfiLX.js} +1 -1
- package/assets/assets/{ProjectPage-BJKxZPRO.js → ProjectPage-Dswa9Ah6.js} +1 -1
- package/assets/assets/{RunRow-DTrAO7tE.js → RunRow-ThryEZFR.js} +1 -1
- package/assets/assets/{RunsPage-CHU0DQGl.js → RunsPage-RFs2WkTC.js} +1 -1
- package/assets/assets/{SettingsPage-bOIwju6t.js → SettingsPage-DoUccn9s.js} +1 -1
- package/assets/assets/{TrafficPage-BKvuR482.js → TrafficPage-CVvSDZPY.js} +1 -1
- package/assets/assets/{TrafficSourceDetailPage-3-iUTgQg.js → TrafficSourceDetailPage-BTUQUBeS.js} +1 -1
- package/assets/assets/{arrow-left-BXSfGhr6.js → arrow-left-BoCNqusn.js} +1 -1
- package/assets/assets/{extract-error-message-DEAY62LS.js → extract-error-message-BsfOVrKi.js} +1 -1
- package/assets/assets/{index-CfjIYitV.js → index-jJurRky0.js} +85 -85
- package/assets/assets/{trash-2-O1wo9IX1.js → trash-2-BPb4368K.js} +1 -1
- package/assets/index.html +1 -1
- package/dist/{chunk-73HPY6XQ.js → chunk-5FWAPJFX.js} +45 -1
- package/dist/{chunk-3WBAJKRR.js → chunk-7BD2ZOPV.js} +86 -0
- package/dist/{chunk-ZXVWL5HX.js → chunk-QIJKS5KN.js} +743 -301
- package/dist/{chunk-5GQ6FF5R.js → chunk-RWTOEEG3.js} +4 -4
- package/dist/cli.js +67 -5
- package/dist/index.js +4 -4
- package/dist/{intelligence-service-YJKQQYJQ.js → intelligence-service-RU2ACYPY.js} +2 -2
- package/dist/mcp.js +2 -2
- package/package.json +8 -8
|
@@ -10,7 +10,7 @@ import {
|
|
|
10
10
|
loadConfig,
|
|
11
11
|
loadConfigRaw,
|
|
12
12
|
saveConfigPatch
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-5FWAPJFX.js";
|
|
14
14
|
import {
|
|
15
15
|
CC_CACHE_DIR,
|
|
16
16
|
DUCKDB_SPEC,
|
|
@@ -118,7 +118,7 @@ import {
|
|
|
118
118
|
siteAuditPages,
|
|
119
119
|
siteAuditSnapshots,
|
|
120
120
|
usageCounters
|
|
121
|
-
} from "./chunk-
|
|
121
|
+
} from "./chunk-QIJKS5KN.js";
|
|
122
122
|
import {
|
|
123
123
|
AGENT_MEMORY_VALUE_MAX_BYTES,
|
|
124
124
|
AGENT_PROVIDER_IDS,
|
|
@@ -191,7 +191,7 @@ import {
|
|
|
191
191
|
validationError,
|
|
192
192
|
winnabilityClassLabel,
|
|
193
193
|
withRetry
|
|
194
|
-
} from "./chunk-
|
|
194
|
+
} from "./chunk-7BD2ZOPV.js";
|
|
195
195
|
|
|
196
196
|
// src/telemetry.ts
|
|
197
197
|
import crypto from "crypto";
|
|
@@ -7000,7 +7000,7 @@ function readStoredGroundingSources(rawResponse) {
|
|
|
7000
7000
|
return result;
|
|
7001
7001
|
}
|
|
7002
7002
|
async function backfillInsightsCommand(project, opts) {
|
|
7003
|
-
const { IntelligenceService: IntelligenceService2 } = await import("./intelligence-service-
|
|
7003
|
+
const { IntelligenceService: IntelligenceService2 } = await import("./intelligence-service-RU2ACYPY.js");
|
|
7004
7004
|
const config = loadConfig();
|
|
7005
7005
|
const db = createClient(config.database);
|
|
7006
7006
|
migrate(db);
|
package/dist/cli.js
CHANGED
|
@@ -29,7 +29,7 @@ import {
|
|
|
29
29
|
setTelemetrySource,
|
|
30
30
|
showFirstRunNotice,
|
|
31
31
|
trackEvent
|
|
32
|
-
} from "./chunk-
|
|
32
|
+
} from "./chunk-RWTOEEG3.js";
|
|
33
33
|
import {
|
|
34
34
|
CliError,
|
|
35
35
|
EXIT_SYSTEM_ERROR,
|
|
@@ -46,7 +46,7 @@ import {
|
|
|
46
46
|
saveConfig,
|
|
47
47
|
saveConfigPatch,
|
|
48
48
|
usageError
|
|
49
|
-
} from "./chunk-
|
|
49
|
+
} from "./chunk-5FWAPJFX.js";
|
|
50
50
|
import {
|
|
51
51
|
apiKeys,
|
|
52
52
|
createClient,
|
|
@@ -54,7 +54,7 @@ import {
|
|
|
54
54
|
projects,
|
|
55
55
|
queries,
|
|
56
56
|
renderReportHtml
|
|
57
|
-
} from "./chunk-
|
|
57
|
+
} from "./chunk-QIJKS5KN.js";
|
|
58
58
|
import {
|
|
59
59
|
AdsOperationKinds,
|
|
60
60
|
AdsOperationStates,
|
|
@@ -97,7 +97,7 @@ import {
|
|
|
97
97
|
providerQuotaPolicySchema,
|
|
98
98
|
resolveProviderInput,
|
|
99
99
|
winnabilityClassSchema
|
|
100
|
-
} from "./chunk-
|
|
100
|
+
} from "./chunk-7BD2ZOPV.js";
|
|
101
101
|
|
|
102
102
|
// src/cli.ts
|
|
103
103
|
import { pathToFileURL } from "url";
|
|
@@ -3937,6 +3937,47 @@ async function gaTraffic(project, opts) {
|
|
|
3937
3937
|
Last synced: ${result.lastSyncedAt}`);
|
|
3938
3938
|
}
|
|
3939
3939
|
}
|
|
3940
|
+
async function gaMeasurementAnalysis(project, opts) {
|
|
3941
|
+
const client = getClient7();
|
|
3942
|
+
const params = {};
|
|
3943
|
+
if (opts?.window) params.window = opts.window;
|
|
3944
|
+
if (opts?.hostScope) params.hostScope = opts.hostScope;
|
|
3945
|
+
if (opts?.pathPrefix) params.pathPrefix = opts.pathPrefix;
|
|
3946
|
+
if (opts?.limit) params.limit = String(opts.limit);
|
|
3947
|
+
const result = await client.gaMeasurementAnalysis(
|
|
3948
|
+
project,
|
|
3949
|
+
Object.keys(params).length > 0 ? params : void 0
|
|
3950
|
+
);
|
|
3951
|
+
if (isMachineFormat(opts?.format)) {
|
|
3952
|
+
console.log(JSON.stringify(result, null, 2));
|
|
3953
|
+
return;
|
|
3954
|
+
}
|
|
3955
|
+
console.log(`GA4 Measurement Analysis for "${project}" (${result.window})
|
|
3956
|
+
`);
|
|
3957
|
+
console.log(` Acquisition: ${result.acquisition.status}`);
|
|
3958
|
+
if (result.acquisition.error) console.log(` Error: ${result.acquisition.error}`);
|
|
3959
|
+
for (const period of result.acquisition.periods) {
|
|
3960
|
+
console.log(` ${period.label.padEnd(8)} ${period.sessions} sessions ${period.startDate} to ${period.endDate}`);
|
|
3961
|
+
}
|
|
3962
|
+
if (result.acquisition.channels.length > 0) {
|
|
3963
|
+
console.log(" Native channels (latest cohort)");
|
|
3964
|
+
for (const channel of result.acquisition.channels) {
|
|
3965
|
+
console.log(` ${channel.channelGroup}: ${channel.periods.at(-1)?.sessions ?? 0}`);
|
|
3966
|
+
}
|
|
3967
|
+
}
|
|
3968
|
+
console.log(` Leads: ${result.leads.status}${result.leads.attributionScope ? ` (${result.leads.attributionScope} attribution)` : ""}`);
|
|
3969
|
+
if (result.leads.error) console.log(` Error: ${result.leads.error}`);
|
|
3970
|
+
for (const period of result.leads.periods) {
|
|
3971
|
+
console.log(` ${period.label.padEnd(8)} ${period.eventCount} leads ${period.startDate} to ${period.endDate}`);
|
|
3972
|
+
}
|
|
3973
|
+
console.log(` Search demand: ${result.searchDemand.status}`);
|
|
3974
|
+
for (const period of result.searchDemand.periods) {
|
|
3975
|
+
console.log(` ${period.label.padEnd(8)} ${period.propertyClicks} clicks / ${period.propertyImpressions} impressions (${period.brandedClicks} branded clicks / ${period.brandedImpressions} branded impressions; ${period.nonBrandedClicks} reported non-brand clicks / ${period.nonBrandedImpressions} reported non-brand impressions; ${period.unreportedClicks} unreported clicks / ${period.unreportedImpressions} unreported impressions)`);
|
|
3976
|
+
}
|
|
3977
|
+
if (!result.leads.hostAndPathFiltersApplied && result.leads.attributionScope === "channel") {
|
|
3978
|
+
console.log(" Note: lead attribution is channel-level; host and path filters do not apply to leads.");
|
|
3979
|
+
}
|
|
3980
|
+
}
|
|
3940
3981
|
async function gaAiReferralHistory(project, opts) {
|
|
3941
3982
|
const client = getClient7();
|
|
3942
3983
|
const result = await client.gaAiReferralHistory(project, opts?.window ? { window: opts.window } : void 0);
|
|
@@ -4367,6 +4408,27 @@ var GA_CLI_COMMANDS = [
|
|
|
4367
4408
|
});
|
|
4368
4409
|
}
|
|
4369
4410
|
},
|
|
4411
|
+
{
|
|
4412
|
+
path: ["ga", "measurement-analysis"],
|
|
4413
|
+
usage: "canonry ga measurement-analysis <project> [--window 30d|60d|90d] [--host-scope marketing|all] [--path-prefix /path] [--limit 100] [--format json]",
|
|
4414
|
+
options: {
|
|
4415
|
+
window: stringOption(),
|
|
4416
|
+
"host-scope": stringOption(),
|
|
4417
|
+
"path-prefix": stringOption(),
|
|
4418
|
+
limit: stringOption()
|
|
4419
|
+
},
|
|
4420
|
+
run: async (input) => {
|
|
4421
|
+
const project = requireProject(input, "ga.measurement-analysis", "canonry ga measurement-analysis <project> [--window 30d|60d|90d] [--format json]");
|
|
4422
|
+
const limitValue = getString(input.values, "limit");
|
|
4423
|
+
await gaMeasurementAnalysis(project, {
|
|
4424
|
+
window: getString(input.values, "window"),
|
|
4425
|
+
hostScope: getString(input.values, "host-scope"),
|
|
4426
|
+
pathPrefix: getString(input.values, "path-prefix"),
|
|
4427
|
+
limit: limitValue ? parseInt(limitValue, 10) : void 0,
|
|
4428
|
+
format: input.format
|
|
4429
|
+
});
|
|
4430
|
+
}
|
|
4431
|
+
},
|
|
4370
4432
|
{
|
|
4371
4433
|
path: ["ga", "traffic"],
|
|
4372
4434
|
usage: "canonry ga traffic <project> [--limit 50] [--window 30d] [--format json]",
|
|
@@ -4471,7 +4533,7 @@ var GA_CLI_COMMANDS = [
|
|
|
4471
4533
|
unknownSubcommand(input.positionals[0], {
|
|
4472
4534
|
command: "ga",
|
|
4473
4535
|
usage: "canonry ga <subcommand> <project> [args]",
|
|
4474
|
-
available: ["connect", "disconnect", "status", "sync", "traffic", "coverage", "ai-referral-history", "social-referral-history", "session-history", "social-referral-summary", "attribution"]
|
|
4536
|
+
available: ["connect", "disconnect", "status", "sync", "measurement-analysis", "traffic", "coverage", "ai-referral-history", "social-referral-history", "session-history", "social-referral-summary", "attribution"]
|
|
4475
4537
|
});
|
|
4476
4538
|
}
|
|
4477
4539
|
}
|
package/dist/index.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
createServer
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-RWTOEEG3.js";
|
|
4
4
|
import {
|
|
5
5
|
loadConfig
|
|
6
|
-
} from "./chunk-
|
|
7
|
-
import "./chunk-
|
|
8
|
-
import "./chunk-
|
|
6
|
+
} from "./chunk-5FWAPJFX.js";
|
|
7
|
+
import "./chunk-QIJKS5KN.js";
|
|
8
|
+
import "./chunk-7BD2ZOPV.js";
|
|
9
9
|
export {
|
|
10
10
|
createServer,
|
|
11
11
|
loadConfig
|
package/dist/mcp.js
CHANGED
|
@@ -3,10 +3,10 @@ import {
|
|
|
3
3
|
PACKAGE_VERSION,
|
|
4
4
|
canonryMcpTools,
|
|
5
5
|
createApiClient
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-5FWAPJFX.js";
|
|
7
7
|
import {
|
|
8
8
|
isReadOnlyKey
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-7BD2ZOPV.js";
|
|
10
10
|
|
|
11
11
|
// src/mcp/cli.ts
|
|
12
12
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@canonry/canonry",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.132.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Agent-first open-source AEO operating platform - track how answer engines cite your domain",
|
|
6
6
|
"license": "FSL-1.1-ALv2",
|
|
@@ -66,23 +66,23 @@
|
|
|
66
66
|
"tsup": "^8.5.1",
|
|
67
67
|
"tsx": "^4.19.0",
|
|
68
68
|
"@ainyc/canonry-api-client": "0.0.0",
|
|
69
|
-
"@ainyc/canonry-contracts": "0.0.0",
|
|
70
69
|
"@ainyc/canonry-api-routes": "0.0.0",
|
|
71
|
-
"@ainyc/canonry-config": "0.0.0",
|
|
72
70
|
"@ainyc/canonry-db": "0.0.0",
|
|
71
|
+
"@ainyc/canonry-config": "0.0.0",
|
|
72
|
+
"@ainyc/canonry-contracts": "0.0.0",
|
|
73
73
|
"@ainyc/canonry-integration-bing": "0.0.0",
|
|
74
74
|
"@ainyc/canonry-integration-openai-ads": "0.0.0",
|
|
75
|
-
"@ainyc/canonry-integration-
|
|
75
|
+
"@ainyc/canonry-integration-commoncrawl": "0.0.0",
|
|
76
76
|
"@ainyc/canonry-integration-google": "0.0.0",
|
|
77
77
|
"@ainyc/canonry-integration-google-business-profile": "0.0.0",
|
|
78
|
-
"@ainyc/canonry-integration-
|
|
78
|
+
"@ainyc/canonry-integration-cloud-run": "0.0.0",
|
|
79
79
|
"@ainyc/canonry-integration-traffic": "0.0.0",
|
|
80
|
-
"@ainyc/canonry-integration-commoncrawl": "0.0.0",
|
|
81
|
-
"@ainyc/canonry-intelligence": "0.0.0",
|
|
82
80
|
"@ainyc/canonry-integration-wordpress": "0.0.0",
|
|
81
|
+
"@ainyc/canonry-intelligence": "0.0.0",
|
|
82
|
+
"@ainyc/canonry-integration-google-places": "0.0.0",
|
|
83
|
+
"@ainyc/canonry-provider-cdp": "0.0.0",
|
|
83
84
|
"@ainyc/canonry-provider-claude": "0.0.0",
|
|
84
85
|
"@ainyc/canonry-provider-gemini": "0.0.0",
|
|
85
|
-
"@ainyc/canonry-provider-cdp": "0.0.0",
|
|
86
86
|
"@ainyc/canonry-provider-local": "0.0.0",
|
|
87
87
|
"@ainyc/canonry-provider-perplexity": "0.0.0",
|
|
88
88
|
"@ainyc/canonry-provider-openai": "0.0.0"
|