@ainyc/canonry 4.115.0 → 4.116.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/{BacklinksPage-DhXsZ8Sb.js → BacklinksPage-Dy6Xc-LT.js} +1 -1
- package/assets/assets/{ChartPrimitives-Cdj0P8uG.js → ChartPrimitives-CHJh5M8x.js} +1 -1
- package/assets/assets/ProjectPage-Bjfa4CI5.js +7 -0
- package/assets/assets/{RunRow-GJ_2CEif.js → RunRow-DmvQnWPf.js} +1 -1
- package/assets/assets/{RunsPage-upaDiLFK.js → RunsPage-BxkxQEKE.js} +1 -1
- package/assets/assets/{SettingsPage-FbmEaN16.js → SettingsPage-DCyqHqDh.js} +1 -1
- package/assets/assets/{TrafficPage-Di0H5JRu.js → TrafficPage-BT_ae5aO.js} +1 -1
- package/assets/assets/{TrafficSourceDetailPage-Bc2mxXSV.js → TrafficSourceDetailPage-Cps-tSHn.js} +1 -1
- package/assets/assets/{arrow-left-yOCIy3_x.js → arrow-left-D8vdqhx4.js} +1 -1
- package/assets/assets/{extract-error-message-tCNIzznL.js → extract-error-message-BOY5txUA.js} +1 -1
- package/assets/assets/{index-Bb5yUz7k.css → index-B4R1-8hR.css} +1 -1
- package/assets/assets/{index-D0ZdnFQf.js → index-DxjY63VC.js} +89 -89
- package/assets/assets/{trash-2-gRyTO-PS.js → trash-2-ap_Fa4zA.js} +1 -1
- package/assets/index.html +2 -2
- package/dist/{chunk-PGVGHGIX.js → chunk-GV665WOU.js} +4 -4
- package/dist/{chunk-VEUBAZRG.js → chunk-IQPMK36Y.js} +1352 -1199
- package/dist/{chunk-MO7GPMNV.js → chunk-RVH6QPTA.js} +1 -1
- package/dist/{chunk-BXNFOGDF.js → chunk-WEAXJ25Y.js} +420 -87
- package/dist/cli.js +57 -9
- package/dist/index.js +4 -4
- package/dist/{intelligence-service-2C7H4C6A.js → intelligence-service-HEN5HLUM.js} +2 -2
- package/dist/mcp.js +2 -2
- package/package.json +7 -7
- package/assets/assets/ProjectPage-DAWtJQ3w.js +0 -7
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-GV665WOU.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-RVH6QPTA.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-WEAXJ25Y.js";
|
|
58
58
|
import {
|
|
59
59
|
BacklinkSources,
|
|
60
60
|
CcReleaseSyncStatuses,
|
|
@@ -80,7 +80,7 @@ import {
|
|
|
80
80
|
providerQuotaPolicySchema,
|
|
81
81
|
resolveProviderInput,
|
|
82
82
|
winnabilityClassSchema
|
|
83
|
-
} from "./chunk-
|
|
83
|
+
} from "./chunk-IQPMK36Y.js";
|
|
84
84
|
|
|
85
85
|
// src/cli.ts
|
|
86
86
|
import { pathToFileURL } from "url";
|
|
@@ -3060,17 +3060,22 @@ async function gaTraffic(project, opts) {
|
|
|
3060
3060
|
if (result.aiSessionsDeduped > 0) {
|
|
3061
3061
|
const share = result.totalSessions > 0 ? Math.round(result.aiSessionsDeduped / result.totalSessions * 100) : 0;
|
|
3062
3062
|
console.log(` AI Sessions (deduped): ${result.aiSessionsDeduped} (${share}% of total)`);
|
|
3063
|
+
if (result.paidAiSessionsDeduped > 0) {
|
|
3064
|
+
console.log(` Paid AI: ${result.paidAiSessionsDeduped} (${result.paidAiSharePctDisplay} of total)`);
|
|
3065
|
+
}
|
|
3063
3066
|
}
|
|
3064
3067
|
console.log();
|
|
3065
3068
|
if (result.aiReferrals.length > 0) {
|
|
3066
3069
|
const attrWidth = 12;
|
|
3070
|
+
const classWidth = 8;
|
|
3067
3071
|
console.log(" AI REFERRAL SOURCES");
|
|
3068
|
-
console.log(` ${"SOURCE".padEnd(25)} ${"MEDIUM".padEnd(15)} ${"ATTRIBUTION".padEnd(attrWidth)} ${"SESSIONS".padEnd(10)}${"USERS".padEnd(8)}`);
|
|
3069
|
-
console.log(` ${"\u2500".repeat(25)} ${"\u2500".repeat(15)} ${"\u2500".repeat(attrWidth)} ${"\u2500".repeat(10)}${"\u2500".repeat(8)}`);
|
|
3072
|
+
console.log(` ${"SOURCE".padEnd(25)} ${"MEDIUM".padEnd(15)} ${"CLASS".padEnd(classWidth)} ${"ATTRIBUTION".padEnd(attrWidth)} ${"SESSIONS".padEnd(10)}${"USERS".padEnd(8)}`);
|
|
3073
|
+
console.log(` ${"\u2500".repeat(25)} ${"\u2500".repeat(15)} ${"\u2500".repeat(classWidth)} ${"\u2500".repeat(attrWidth)} ${"\u2500".repeat(10)}${"\u2500".repeat(8)}`);
|
|
3070
3074
|
for (const ref of result.aiReferrals) {
|
|
3071
3075
|
const dimLabel = ref.sourceDimension === "first_user" ? "first-visit" : ref.sourceDimension === "manual_utm" ? "utm" : "session";
|
|
3076
|
+
const classLabel = ref.trafficClass === "paid" ? "paid" : "organic";
|
|
3072
3077
|
console.log(
|
|
3073
|
-
` ${ref.source.padEnd(25)} ${ref.medium.padEnd(15)} ${dimLabel.padEnd(attrWidth)} ${String(ref.sessions).padEnd(10)}${String(ref.users).padEnd(8)}`
|
|
3078
|
+
` ${ref.source.padEnd(25)} ${ref.medium.padEnd(15)} ${classLabel.padEnd(classWidth)} ${dimLabel.padEnd(attrWidth)} ${String(ref.sessions).padEnd(10)}${String(ref.users).padEnd(8)}`
|
|
3074
3079
|
);
|
|
3075
3080
|
}
|
|
3076
3081
|
console.log();
|
|
@@ -3305,19 +3310,35 @@ async function gaAttribution(project, opts) {
|
|
|
3305
3310
|
organicSessions: traffic.totalOrganicSessions,
|
|
3306
3311
|
aiSessions: traffic.aiSessionsDeduped,
|
|
3307
3312
|
aiUsers: traffic.aiUsersDeduped,
|
|
3313
|
+
paidAiSessions: traffic.paidAiSessionsDeduped,
|
|
3314
|
+
paidAiUsers: traffic.paidAiUsersDeduped,
|
|
3315
|
+
organicAiSessions: traffic.organicAiSessionsDeduped,
|
|
3316
|
+
organicAiUsers: traffic.organicAiUsersDeduped,
|
|
3308
3317
|
aiSessionsBySession: traffic.aiSessionsBySession,
|
|
3309
3318
|
aiUsersBySession: traffic.aiUsersBySession,
|
|
3319
|
+
paidAiSessionsBySession: traffic.paidAiSessionsBySession,
|
|
3320
|
+
paidAiUsersBySession: traffic.paidAiUsersBySession,
|
|
3321
|
+
organicAiSessionsBySession: traffic.organicAiSessionsBySession,
|
|
3322
|
+
organicAiUsersBySession: traffic.organicAiUsersBySession,
|
|
3310
3323
|
socialSessions: traffic.socialSessions,
|
|
3311
3324
|
socialUsers: traffic.socialUsers,
|
|
3312
3325
|
directSessions: traffic.totalDirectSessions,
|
|
3313
3326
|
aiSharePct: traffic.aiSharePct,
|
|
3314
3327
|
aiSharePctBySession: traffic.aiSharePctBySession,
|
|
3328
|
+
paidAiSharePct: traffic.paidAiSharePct,
|
|
3329
|
+
paidAiSharePctBySession: traffic.paidAiSharePctBySession,
|
|
3330
|
+
organicAiSharePct: traffic.organicAiSharePct,
|
|
3331
|
+
organicAiSharePctBySession: traffic.organicAiSharePctBySession,
|
|
3315
3332
|
socialSharePct: traffic.socialSharePct,
|
|
3316
3333
|
organicSharePct: traffic.organicSharePct,
|
|
3317
3334
|
directSharePct: traffic.directSharePct,
|
|
3318
3335
|
organicSharePctDisplay: traffic.organicSharePctDisplay,
|
|
3319
3336
|
aiSharePctDisplay: traffic.aiSharePctDisplay,
|
|
3320
3337
|
aiSharePctBySessionDisplay: traffic.aiSharePctBySessionDisplay,
|
|
3338
|
+
paidAiSharePctDisplay: traffic.paidAiSharePctDisplay,
|
|
3339
|
+
paidAiSharePctBySessionDisplay: traffic.paidAiSharePctBySessionDisplay,
|
|
3340
|
+
organicAiSharePctDisplay: traffic.organicAiSharePctDisplay,
|
|
3341
|
+
organicAiSharePctBySessionDisplay: traffic.organicAiSharePctBySessionDisplay,
|
|
3321
3342
|
socialSharePctDisplay: traffic.socialSharePctDisplay,
|
|
3322
3343
|
directSharePctDisplay: traffic.directSharePctDisplay,
|
|
3323
3344
|
otherSessions: traffic.otherSessions,
|
|
@@ -3345,6 +3366,9 @@ async function gaAttribution(project, opts) {
|
|
|
3345
3366
|
console.log(` Social: ${String(traffic.channelBreakdown.social.sessions).padEnd(6)} (${traffic.channelBreakdown.social.sharePctDisplay.padStart(4)}) ${fmtTrend(trend.social.trend7dPct).padEnd(12)} ${fmtTrend(trend.social.trend30dPct)}`);
|
|
3346
3367
|
console.log(` Direct: ${String(traffic.channelBreakdown.direct.sessions).padEnd(6)} (${traffic.channelBreakdown.direct.sharePctDisplay.padStart(4)}) ${fmtTrend(trend.direct.trend7dPct).padEnd(12)} ${fmtTrend(trend.direct.trend30dPct)}`);
|
|
3347
3368
|
console.log(` AI Referrals: ${String(traffic.channelBreakdown.ai.sessions).padEnd(6)} (${traffic.channelBreakdown.ai.sharePctDisplay.padStart(4)}) ${fmtTrend(trend.ai.trend7dPct).padEnd(12)} ${fmtTrend(trend.ai.trend30dPct)} (lower bound \u2014 sessionSource only; referrer-stripped traffic falls under Direct)`);
|
|
3369
|
+
if (traffic.paidAiSessionsBySession > 0) {
|
|
3370
|
+
console.log(` Paid AI: ${String(traffic.paidAiSessionsBySession).padEnd(6)} (${traffic.paidAiSharePctBySessionDisplay.padStart(4)})`);
|
|
3371
|
+
}
|
|
3348
3372
|
console.log(` Other: ${String(traffic.channelBreakdown.other.sessions).padEnd(6)} (${traffic.channelBreakdown.other.sharePctDisplay.padStart(4)})`);
|
|
3349
3373
|
console.log(` \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500`);
|
|
3350
3374
|
console.log(` Total: ${String(traffic.totalSessions).padEnd(6)} ${fmtTrend(trend.total.trend7dPct).padEnd(12)} ${fmtTrend(trend.total.trend30dPct)}`);
|
|
@@ -3373,19 +3397,35 @@ async function gaAttribution(project, opts) {
|
|
|
3373
3397
|
organicSessions: traffic.totalOrganicSessions,
|
|
3374
3398
|
aiSessions: traffic.aiSessionsDeduped,
|
|
3375
3399
|
aiUsers: traffic.aiUsersDeduped,
|
|
3400
|
+
paidAiSessions: traffic.paidAiSessionsDeduped,
|
|
3401
|
+
paidAiUsers: traffic.paidAiUsersDeduped,
|
|
3402
|
+
organicAiSessions: traffic.organicAiSessionsDeduped,
|
|
3403
|
+
organicAiUsers: traffic.organicAiUsersDeduped,
|
|
3376
3404
|
aiSessionsBySession: traffic.aiSessionsBySession,
|
|
3377
3405
|
aiUsersBySession: traffic.aiUsersBySession,
|
|
3406
|
+
paidAiSessionsBySession: traffic.paidAiSessionsBySession,
|
|
3407
|
+
paidAiUsersBySession: traffic.paidAiUsersBySession,
|
|
3408
|
+
organicAiSessionsBySession: traffic.organicAiSessionsBySession,
|
|
3409
|
+
organicAiUsersBySession: traffic.organicAiUsersBySession,
|
|
3378
3410
|
socialSessions: traffic.socialSessions,
|
|
3379
3411
|
socialUsers: traffic.socialUsers,
|
|
3380
3412
|
directSessions: traffic.totalDirectSessions,
|
|
3381
3413
|
aiSharePct: traffic.aiSharePct,
|
|
3382
3414
|
aiSharePctBySession: traffic.aiSharePctBySession,
|
|
3415
|
+
paidAiSharePct: traffic.paidAiSharePct,
|
|
3416
|
+
paidAiSharePctBySession: traffic.paidAiSharePctBySession,
|
|
3417
|
+
organicAiSharePct: traffic.organicAiSharePct,
|
|
3418
|
+
organicAiSharePctBySession: traffic.organicAiSharePctBySession,
|
|
3383
3419
|
socialSharePct: traffic.socialSharePct,
|
|
3384
3420
|
organicSharePct: traffic.organicSharePct,
|
|
3385
3421
|
directSharePct: traffic.directSharePct,
|
|
3386
3422
|
organicSharePctDisplay: traffic.organicSharePctDisplay,
|
|
3387
3423
|
aiSharePctDisplay: traffic.aiSharePctDisplay,
|
|
3388
3424
|
aiSharePctBySessionDisplay: traffic.aiSharePctBySessionDisplay,
|
|
3425
|
+
paidAiSharePctDisplay: traffic.paidAiSharePctDisplay,
|
|
3426
|
+
paidAiSharePctBySessionDisplay: traffic.paidAiSharePctBySessionDisplay,
|
|
3427
|
+
organicAiSharePctDisplay: traffic.organicAiSharePctDisplay,
|
|
3428
|
+
organicAiSharePctBySessionDisplay: traffic.organicAiSharePctBySessionDisplay,
|
|
3389
3429
|
socialSharePctDisplay: traffic.socialSharePctDisplay,
|
|
3390
3430
|
directSharePctDisplay: traffic.directSharePctDisplay,
|
|
3391
3431
|
otherSessions: traffic.otherSessions,
|
|
@@ -3414,13 +3454,17 @@ async function gaAttribution(project, opts) {
|
|
|
3414
3454
|
console.log(` Social: ${traffic.channelBreakdown.social.sessions} sessions (${traffic.channelBreakdown.social.sharePctDisplay})`);
|
|
3415
3455
|
console.log(` Direct: ${traffic.channelBreakdown.direct.sessions} sessions (${traffic.channelBreakdown.direct.sharePctDisplay})`);
|
|
3416
3456
|
console.log(` AI Referrals: ${traffic.channelBreakdown.ai.sessions} sessions (${traffic.channelBreakdown.ai.sharePctDisplay}) (lower bound \u2014 sessionSource only; referrer-stripped traffic falls under Direct)`);
|
|
3457
|
+
if (traffic.paidAiSessionsBySession > 0) {
|
|
3458
|
+
console.log(` Paid AI: ${traffic.paidAiSessionsBySession} sessions (${traffic.paidAiSharePctBySessionDisplay})`);
|
|
3459
|
+
}
|
|
3417
3460
|
console.log(` Other: ${traffic.channelBreakdown.other.sessions} sessions (${traffic.channelBreakdown.other.sharePctDisplay})`);
|
|
3418
3461
|
if (traffic.aiReferrals.length > 0) {
|
|
3419
3462
|
console.log();
|
|
3420
3463
|
console.log(" AI SOURCES");
|
|
3421
3464
|
for (const ref of traffic.aiReferrals.slice(0, 10)) {
|
|
3422
3465
|
const dimLabel = ref.sourceDimension === "first_user" ? "first-visit" : ref.sourceDimension === "manual_utm" ? "utm" : "session";
|
|
3423
|
-
|
|
3466
|
+
const classLabel = ref.trafficClass === "paid" ? "paid" : "organic";
|
|
3467
|
+
console.log(` ${ref.source.padEnd(25)} ${String(ref.sessions).padEnd(8)} sessions (${classLabel}, ${dimLabel})`);
|
|
3424
3468
|
}
|
|
3425
3469
|
}
|
|
3426
3470
|
if (traffic.aiReferralLandingPages.length > 0) {
|
|
@@ -4654,7 +4698,8 @@ function formatEventLine(event) {
|
|
|
4654
4698
|
event.evidenceType,
|
|
4655
4699
|
event.sourceDomain,
|
|
4656
4700
|
event.landingPathNormalized,
|
|
4657
|
-
`${event.hits} hits
|
|
4701
|
+
`${event.hits} hits`,
|
|
4702
|
+
`(paid ${event.paidHits} \xB7 organic ${event.organicHits} \xB7 unclassified ${event.unknownHits})`
|
|
4658
4703
|
].join(" ");
|
|
4659
4704
|
}
|
|
4660
4705
|
}
|
|
@@ -4699,6 +4744,9 @@ async function trafficEvents(project, opts) {
|
|
|
4699
4744
|
console.log(` Crawler hits total (window): ${result.totals.crawlerHits}`);
|
|
4700
4745
|
console.log(` AI user-fetch hits (window): ${result.totals.aiUserFetchHits}`);
|
|
4701
4746
|
console.log(` AI referral sessions (window): ${result.totals.aiReferralHits}`);
|
|
4747
|
+
console.log(` paid: ${result.totals.aiReferralPaidHits}`);
|
|
4748
|
+
console.log(` organic: ${result.totals.aiReferralOrganicHits}`);
|
|
4749
|
+
console.log(` unclassified: ${result.totals.aiReferralUnknownHits} (ingested before paid/organic classification)`);
|
|
4702
4750
|
console.log("");
|
|
4703
4751
|
if (result.events.length === 0) {
|
|
4704
4752
|
console.log("No events in this window.");
|
package/dist/index.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
createServer
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-GV665WOU.js";
|
|
4
4
|
import {
|
|
5
5
|
loadConfig
|
|
6
|
-
} from "./chunk-
|
|
7
|
-
import "./chunk-
|
|
8
|
-
import "./chunk-
|
|
6
|
+
} from "./chunk-RVH6QPTA.js";
|
|
7
|
+
import "./chunk-WEAXJ25Y.js";
|
|
8
|
+
import "./chunk-IQPMK36Y.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-RVH6QPTA.js";
|
|
7
7
|
import {
|
|
8
8
|
isReadOnlyKey
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-IQPMK36Y.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": "@ainyc/canonry",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.116.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",
|
|
@@ -65,26 +65,26 @@
|
|
|
65
65
|
"@types/node-cron": "^3.0.11",
|
|
66
66
|
"tsup": "^8.5.1",
|
|
67
67
|
"tsx": "^4.19.0",
|
|
68
|
-
"@ainyc/canonry-api-client": "0.0.0",
|
|
69
68
|
"@ainyc/canonry-api-routes": "0.0.0",
|
|
70
69
|
"@ainyc/canonry-config": "0.0.0",
|
|
71
|
-
"@ainyc/canonry-
|
|
70
|
+
"@ainyc/canonry-api-client": "0.0.0",
|
|
72
71
|
"@ainyc/canonry-db": "0.0.0",
|
|
73
72
|
"@ainyc/canonry-integration-bing": "0.0.0",
|
|
73
|
+
"@ainyc/canonry-contracts": "0.0.0",
|
|
74
74
|
"@ainyc/canonry-integration-openai-ads": "0.0.0",
|
|
75
75
|
"@ainyc/canonry-integration-cloud-run": "0.0.0",
|
|
76
76
|
"@ainyc/canonry-integration-google": "0.0.0",
|
|
77
|
+
"@ainyc/canonry-integration-google-business-profile": "0.0.0",
|
|
77
78
|
"@ainyc/canonry-integration-commoncrawl": "0.0.0",
|
|
78
79
|
"@ainyc/canonry-integration-traffic": "0.0.0",
|
|
79
|
-
"@ainyc/canonry-integration-google-places": "0.0.0",
|
|
80
|
-
"@ainyc/canonry-integration-google-business-profile": "0.0.0",
|
|
81
80
|
"@ainyc/canonry-integration-wordpress": "0.0.0",
|
|
82
81
|
"@ainyc/canonry-intelligence": "0.0.0",
|
|
83
82
|
"@ainyc/canonry-provider-cdp": "0.0.0",
|
|
84
|
-
"@ainyc/canonry-provider-local": "0.0.0",
|
|
85
|
-
"@ainyc/canonry-provider-gemini": "0.0.0",
|
|
86
83
|
"@ainyc/canonry-provider-claude": "0.0.0",
|
|
84
|
+
"@ainyc/canonry-integration-google-places": "0.0.0",
|
|
85
|
+
"@ainyc/canonry-provider-local": "0.0.0",
|
|
87
86
|
"@ainyc/canonry-provider-openai": "0.0.0",
|
|
87
|
+
"@ainyc/canonry-provider-gemini": "0.0.0",
|
|
88
88
|
"@ainyc/canonry-provider-perplexity": "0.0.0"
|
|
89
89
|
},
|
|
90
90
|
"scripts": {
|