@ainyc/canonry 4.62.0 → 4.62.1
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-BemXB6GS.js → BacklinksPage-nntNEmWm.js} +1 -1
- package/assets/assets/{ChartPrimitives-dmrE9jZb.js → ChartPrimitives-Bsg8aPq0.js} +1 -1
- package/assets/assets/{ProjectPage-DqCnHEV2.js → ProjectPage-Jy7qm4wK.js} +1 -1
- package/assets/assets/{RunRow-DoylbyR5.js → RunRow-CFgQnTnH.js} +1 -1
- package/assets/assets/{RunsPage-Dqk6N23k.js → RunsPage-ForYa-YV.js} +1 -1
- package/assets/assets/{SettingsPage-BiHfUMwX.js → SettingsPage-l0-szZR2.js} +1 -1
- package/assets/assets/{TrafficPage-D1kFNV8R.js → TrafficPage-Ds7_1EgS.js} +1 -1
- package/assets/assets/{TrafficSourceDetailPage-DOK7re41.js → TrafficSourceDetailPage-D5LY42UQ.js} +1 -1
- package/assets/assets/{extract-error-message-CD8TzPFm.js → extract-error-message-CHUHxwAN.js} +1 -1
- package/assets/assets/{index-D4km1FDL.js → index-DjZLLCqh.js} +3 -3
- package/assets/assets/{server-traffic-K8586rYW.js → server-traffic-BDFC_oVS.js} +1 -1
- package/assets/assets/{trash-2-D2qhBJ9M.js → trash-2-DvI9ZgWY.js} +1 -1
- package/assets/index.html +1 -1
- package/dist/{chunk-QU62IX7K.js → chunk-EECLXA5D.js} +69 -27
- package/dist/{chunk-URPUUKLC.js → chunk-GWV4FKVY.js} +2 -0
- package/dist/{chunk-4FLI5VSQ.js → chunk-UNDLLHDV.js} +5 -4
- package/dist/{chunk-PITZUUFV.js → chunk-WW6NOJTP.js} +1 -1
- package/dist/cli.js +7 -4
- package/dist/index.js +4 -4
- package/dist/{intelligence-service-AZDX2EBS.js → intelligence-service-I5HMGDKS.js} +2 -2
- package/dist/mcp.js +2 -2
- package/package.json +11 -11
|
@@ -207,7 +207,7 @@ import {
|
|
|
207
207
|
wordpressSchemaDeployResultDtoSchema,
|
|
208
208
|
wordpressSchemaStatusResultDtoSchema,
|
|
209
209
|
wordpressStatusDtoSchema
|
|
210
|
-
} from "./chunk-
|
|
210
|
+
} from "./chunk-GWV4FKVY.js";
|
|
211
211
|
|
|
212
212
|
// src/intelligence-service.ts
|
|
213
213
|
import { eq as eq30, desc as desc15, asc as asc3, and as and23, ne as ne5, or as or5, inArray as inArray11, gte as gte6, lte as lte3 } from "drizzle-orm";
|
|
@@ -25950,6 +25950,9 @@ function verifyIpForRule(ip, ruleId) {
|
|
|
25950
25950
|
|
|
25951
25951
|
// ../integration-traffic/src/rules.ts
|
|
25952
25952
|
var LEGACY_CHATGPT_DOMAIN = "chat.openai.com";
|
|
25953
|
+
var SELF_TRAFFIC_USER_AGENT_PATTERNS = [
|
|
25954
|
+
/AINYC-AEO-Audit\//i
|
|
25955
|
+
];
|
|
25953
25956
|
var DEFAULT_AI_CRAWLER_RULES = [
|
|
25954
25957
|
{
|
|
25955
25958
|
id: "openai-gptbot",
|
|
@@ -26248,6 +26251,11 @@ function utmSourceFromUrl(value) {
|
|
|
26248
26251
|
return null;
|
|
26249
26252
|
}
|
|
26250
26253
|
}
|
|
26254
|
+
function isSelfTraffic(event) {
|
|
26255
|
+
const userAgent = event.userAgent?.trim();
|
|
26256
|
+
if (!userAgent) return false;
|
|
26257
|
+
return SELF_TRAFFIC_USER_AGENT_PATTERNS.some((pattern) => pattern.test(userAgent));
|
|
26258
|
+
}
|
|
26251
26259
|
function classifyCrawler(event) {
|
|
26252
26260
|
const userAgent = event.userAgent?.trim();
|
|
26253
26261
|
if (!userAgent) return null;
|
|
@@ -26450,12 +26458,14 @@ function buildTrafficProbeReport(events, options = {}) {
|
|
|
26450
26458
|
const topAiUserFetchPaths = /* @__PURE__ */ new Map();
|
|
26451
26459
|
const topAiReferrers = /* @__PURE__ */ new Map();
|
|
26452
26460
|
const topAiReferralLandingPaths = /* @__PURE__ */ new Map();
|
|
26461
|
+
const includedEvents = events.filter((event) => !isSelfTraffic(event));
|
|
26462
|
+
const selfTrafficExcluded = events.length - includedEvents.length;
|
|
26453
26463
|
let crawlerHits = 0;
|
|
26454
26464
|
let aiUserFetchHits = 0;
|
|
26455
26465
|
let aiReferralHits = 0;
|
|
26456
26466
|
let unknownHits = 0;
|
|
26457
26467
|
const samples = [];
|
|
26458
|
-
for (const event of
|
|
26468
|
+
for (const event of includedEvents) {
|
|
26459
26469
|
const tsHour = hourBucket(event.observedAt);
|
|
26460
26470
|
const pathNormalized = normalizeTrafficPathPattern(event.path);
|
|
26461
26471
|
const crawler = classifyCrawler(event);
|
|
@@ -26586,7 +26596,8 @@ function buildTrafficProbeReport(events, options = {}) {
|
|
|
26586
26596
|
return {
|
|
26587
26597
|
generatedAt: options.generatedAt ?? (/* @__PURE__ */ new Date()).toISOString(),
|
|
26588
26598
|
totals: {
|
|
26589
|
-
normalizedEvents:
|
|
26599
|
+
normalizedEvents: includedEvents.length,
|
|
26600
|
+
selfTrafficExcluded,
|
|
26590
26601
|
crawlerHits,
|
|
26591
26602
|
aiUserFetchHits,
|
|
26592
26603
|
aiReferralSessions: aiReferralSessions.size,
|
|
@@ -27051,7 +27062,7 @@ async function drainVercelTrafficEvents(options) {
|
|
|
27051
27062
|
const events = [];
|
|
27052
27063
|
const seenEventIds = /* @__PURE__ */ new Set();
|
|
27053
27064
|
if (endMs <= startMs) {
|
|
27054
|
-
return { events, subWindowCount: 0, effectiveStartMs: startMs, retentionClamped: false };
|
|
27065
|
+
return { events, subWindowCount: 0, effectiveStartMs: startMs, retentionClamped: false, truncatedSliceCount: 0, truncatedSliceStartsMs: [] };
|
|
27055
27066
|
}
|
|
27056
27067
|
let cursorMs = startMs;
|
|
27057
27068
|
let spanMs = endMs - startMs;
|
|
@@ -27061,6 +27072,8 @@ async function drainVercelTrafficEvents(options) {
|
|
|
27061
27072
|
let retentionResolved = false;
|
|
27062
27073
|
let floorSpanProbeCountdown = 0;
|
|
27063
27074
|
let floorPageBudgetCountdown = 0;
|
|
27075
|
+
let truncatedSliceCount = 0;
|
|
27076
|
+
const truncatedSliceStartsMs = [];
|
|
27064
27077
|
while (cursorMs < endMs) {
|
|
27065
27078
|
if (subWindowCount >= options.maxSubWindows) {
|
|
27066
27079
|
throw new Error(
|
|
@@ -27103,27 +27116,28 @@ async function drainVercelTrafficEvents(options) {
|
|
|
27103
27116
|
}
|
|
27104
27117
|
continue;
|
|
27105
27118
|
}
|
|
27106
|
-
if (pageBudget
|
|
27107
|
-
|
|
27108
|
-
|
|
27109
|
-
|
|
27119
|
+
if (pageBudget < FLOOR_SLICE_MAX_PAGES) {
|
|
27120
|
+
page = await options.pull({
|
|
27121
|
+
token: options.token,
|
|
27122
|
+
projectId: options.projectId,
|
|
27123
|
+
teamId: options.teamId,
|
|
27124
|
+
environment: options.environment,
|
|
27125
|
+
startDate: cursorMs,
|
|
27126
|
+
endDate: subEndMs,
|
|
27127
|
+
maxPages: FLOOR_SLICE_MAX_PAGES
|
|
27128
|
+
});
|
|
27129
|
+
subWindowCount += 1;
|
|
27130
|
+
floorSpanProbeCountdown = FLOOR_CONGESTION_PROBE_INTERVAL;
|
|
27131
|
+
floorPageBudgetCountdown = FLOOR_CONGESTION_PROBE_INTERVAL;
|
|
27110
27132
|
}
|
|
27111
|
-
page = await options.pull({
|
|
27112
|
-
token: options.token,
|
|
27113
|
-
projectId: options.projectId,
|
|
27114
|
-
teamId: options.teamId,
|
|
27115
|
-
environment: options.environment,
|
|
27116
|
-
startDate: cursorMs,
|
|
27117
|
-
endDate: subEndMs,
|
|
27118
|
-
maxPages: FLOOR_SLICE_MAX_PAGES
|
|
27119
|
-
});
|
|
27120
|
-
subWindowCount += 1;
|
|
27121
|
-
floorSpanProbeCountdown = FLOOR_CONGESTION_PROBE_INTERVAL;
|
|
27122
|
-
floorPageBudgetCountdown = FLOOR_CONGESTION_PROBE_INTERVAL;
|
|
27123
27133
|
if (page.hasMore) {
|
|
27124
|
-
|
|
27125
|
-
|
|
27126
|
-
|
|
27134
|
+
if (options.abortOnTruncation) {
|
|
27135
|
+
throw new Error(
|
|
27136
|
+
`Vercel ${MIN_SUB_WINDOW_MS / 1e3}-second slice starting ${new Date(cursorMs).toISOString()} holds more than ${FLOOR_SLICE_MAX_PAGES} pages and cannot be drained further`
|
|
27137
|
+
);
|
|
27138
|
+
}
|
|
27139
|
+
truncatedSliceCount += 1;
|
|
27140
|
+
truncatedSliceStartsMs.push(cursorMs);
|
|
27127
27141
|
}
|
|
27128
27142
|
}
|
|
27129
27143
|
for (const event of page.events) {
|
|
@@ -27147,7 +27161,7 @@ async function drainVercelTrafficEvents(options) {
|
|
|
27147
27161
|
}
|
|
27148
27162
|
}
|
|
27149
27163
|
}
|
|
27150
|
-
return { events, subWindowCount, effectiveStartMs, retentionClamped };
|
|
27164
|
+
return { events, subWindowCount, effectiveStartMs, retentionClamped, truncatedSliceCount, truncatedSliceStartsMs };
|
|
27151
27165
|
}
|
|
27152
27166
|
|
|
27153
27167
|
// ../api-routes/src/traffic.ts
|
|
@@ -27237,10 +27251,16 @@ async function runBackfillTask(options) {
|
|
|
27237
27251
|
return;
|
|
27238
27252
|
}
|
|
27239
27253
|
const report = buildTrafficProbeReport(allEvents, { sampleLimit: BACKFILL_SAMPLE_LIMIT });
|
|
27254
|
+
if (report.totals.selfTrafficExcluded > 0) {
|
|
27255
|
+
app.log.info(
|
|
27256
|
+
{ sourceId: sourceRow.id, selfTrafficExcluded: report.totals.selfTrafficExcluded },
|
|
27257
|
+
"Backfill dropped Canonry self-traffic before rollup"
|
|
27258
|
+
);
|
|
27259
|
+
}
|
|
27240
27260
|
const finishedAt = (/* @__PURE__ */ new Date()).toISOString();
|
|
27241
27261
|
const windowStartIso = windowStart.toISOString();
|
|
27242
27262
|
const windowEndIso = windowEnd.toISOString();
|
|
27243
|
-
const newSorted = allEvents.
|
|
27263
|
+
const newSorted = allEvents.filter((e) => !isSelfTraffic(e)).sort((a, b) => a.observedAt < b.observedAt ? 1 : a.observedAt > b.observedAt ? -1 : 0).map((e) => e.eventId);
|
|
27244
27264
|
const newRingBuffer = newSorted.slice(0, MAX_TRACKED_EVENT_IDS);
|
|
27245
27265
|
const currentLastSyncedMs = sourceRow.lastSyncedAt ? new Date(sourceRow.lastSyncedAt).getTime() : Number.NEGATIVE_INFINITY;
|
|
27246
27266
|
const nextLastSyncedAt = Math.max(currentLastSyncedMs, windowEnd.getTime()) === windowEnd.getTime() ? windowEndIso : sourceRow.lastSyncedAt;
|
|
@@ -27694,6 +27714,7 @@ async function trafficRoutes(app, opts) {
|
|
|
27694
27714
|
sourceType: sourceRow.sourceType,
|
|
27695
27715
|
sourceId: sourceRow.id,
|
|
27696
27716
|
pulledEvents: 0,
|
|
27717
|
+
selfTrafficExcluded: 0,
|
|
27697
27718
|
crawlerHits: 0,
|
|
27698
27719
|
aiUserFetchHits: 0,
|
|
27699
27720
|
aiReferralHits: 0,
|
|
@@ -27850,6 +27871,16 @@ async function trafficRoutes(app, opts) {
|
|
|
27850
27871
|
if (drained.retentionClamped) {
|
|
27851
27872
|
throw vercelRetentionClampError(windowStart.getTime(), drained.effectiveStartMs);
|
|
27852
27873
|
}
|
|
27874
|
+
if (drained.truncatedSliceCount > 0) {
|
|
27875
|
+
request.log.warn(
|
|
27876
|
+
{
|
|
27877
|
+
sourceId: sourceRow.id,
|
|
27878
|
+
truncatedSlices: drained.truncatedSliceCount,
|
|
27879
|
+
sliceStarts: drained.truncatedSliceStartsMs.map((ms) => new Date(ms).toISOString())
|
|
27880
|
+
},
|
|
27881
|
+
"Vercel drain truncated dense one-second slice(s); ingested a sample and advanced past them"
|
|
27882
|
+
);
|
|
27883
|
+
}
|
|
27853
27884
|
allEvents = drained.events;
|
|
27854
27885
|
} catch (e) {
|
|
27855
27886
|
const msg = e instanceof Error ? e.message : String(e);
|
|
@@ -27863,6 +27894,7 @@ async function trafficRoutes(app, opts) {
|
|
|
27863
27894
|
let sampleRows = 0;
|
|
27864
27895
|
let finishedAt = (/* @__PURE__ */ new Date()).toISOString();
|
|
27865
27896
|
let pulledEventsCount = 0;
|
|
27897
|
+
let selfTrafficExcludedCount = 0;
|
|
27866
27898
|
let crawlerHitsCount = 0;
|
|
27867
27899
|
let aiUserFetchHitsCount = 0;
|
|
27868
27900
|
let aiReferralHitsCount = 0;
|
|
@@ -27872,7 +27904,7 @@ async function trafficRoutes(app, opts) {
|
|
|
27872
27904
|
const previousIds = latestRow.lastEventIds ?? [];
|
|
27873
27905
|
const seenEventIds = new Set(previousIds);
|
|
27874
27906
|
const dedupedEvents = seenEventIds.size === 0 ? allEvents : allEvents.filter((e) => !seenEventIds.has(e.eventId));
|
|
27875
|
-
const newSorted = dedupedEvents.
|
|
27907
|
+
const newSorted = dedupedEvents.filter((e) => !isSelfTraffic(e)).sort((a, b) => a.observedAt < b.observedAt ? 1 : a.observedAt > b.observedAt ? -1 : 0).map((e) => e.eventId);
|
|
27876
27908
|
const merged = [];
|
|
27877
27909
|
const mergedSet = /* @__PURE__ */ new Set();
|
|
27878
27910
|
for (const id of [...newSorted, ...previousIds]) {
|
|
@@ -27885,6 +27917,7 @@ async function trafficRoutes(app, opts) {
|
|
|
27885
27917
|
const report = buildTrafficProbeReport(dedupedEvents, { sampleLimit });
|
|
27886
27918
|
finishedAt = (/* @__PURE__ */ new Date()).toISOString();
|
|
27887
27919
|
pulledEventsCount = report.totals.normalizedEvents;
|
|
27920
|
+
selfTrafficExcludedCount = report.totals.selfTrafficExcluded;
|
|
27888
27921
|
crawlerHitsCount = report.totals.crawlerHits;
|
|
27889
27922
|
aiUserFetchHitsCount = report.totals.aiUserFetchHits;
|
|
27890
27923
|
aiReferralHitsCount = report.totals.aiReferralHits;
|
|
@@ -28043,12 +28076,19 @@ async function trafficRoutes(app, opts) {
|
|
|
28043
28076
|
entityType: "traffic_source",
|
|
28044
28077
|
entityId: sourceRow.id
|
|
28045
28078
|
});
|
|
28079
|
+
if (selfTrafficExcludedCount > 0) {
|
|
28080
|
+
request.log.info(
|
|
28081
|
+
{ sourceId: sourceRow.id, selfTrafficExcluded: selfTrafficExcludedCount },
|
|
28082
|
+
"Dropped Canonry self-traffic before rollup; excluded from pulledEvents"
|
|
28083
|
+
);
|
|
28084
|
+
}
|
|
28046
28085
|
try {
|
|
28047
28086
|
opts.onTrafficSynced?.({
|
|
28048
28087
|
status: "completed",
|
|
28049
28088
|
sourceType: sourceRow.sourceType,
|
|
28050
28089
|
sourceId: sourceRow.id,
|
|
28051
28090
|
pulledEvents: pulledEventsCount,
|
|
28091
|
+
selfTrafficExcluded: selfTrafficExcludedCount,
|
|
28052
28092
|
crawlerHits: crawlerHitsCount,
|
|
28053
28093
|
aiUserFetchHits: aiUserFetchHitsCount,
|
|
28054
28094
|
aiReferralHits: aiReferralHitsCount,
|
|
@@ -28061,6 +28101,7 @@ async function trafficRoutes(app, opts) {
|
|
|
28061
28101
|
runId,
|
|
28062
28102
|
syncedAt: finishedAt,
|
|
28063
28103
|
pulledEvents: pulledEventsCount,
|
|
28104
|
+
selfTrafficExcluded: selfTrafficExcludedCount,
|
|
28064
28105
|
crawlerHits: crawlerHitsCount,
|
|
28065
28106
|
aiUserFetchHits: aiUserFetchHitsCount,
|
|
28066
28107
|
aiReferralHits: aiReferralHitsCount,
|
|
@@ -28210,7 +28251,8 @@ async function trafficRoutes(app, opts) {
|
|
|
28210
28251
|
startDate: chunkStartMs,
|
|
28211
28252
|
endDate: chunkEndMs,
|
|
28212
28253
|
pagesPerSubWindow: BACKFILL_MAX_PAGES,
|
|
28213
|
-
maxSubWindows: VERCEL_MAX_SUB_WINDOWS
|
|
28254
|
+
maxSubWindows: VERCEL_MAX_SUB_WINDOWS,
|
|
28255
|
+
abortOnTruncation: true
|
|
28214
28256
|
});
|
|
28215
28257
|
if (drained.retentionClamped) {
|
|
28216
28258
|
throw vercelRetentionClampError(chunkStartMs, drained.effectiveStartMs);
|
|
@@ -3454,6 +3454,8 @@ var trafficSyncResponseSchema = z24.object({
|
|
|
3454
3454
|
runId: z24.string(),
|
|
3455
3455
|
syncedAt: z24.string(),
|
|
3456
3456
|
pulledEvents: z24.number().int().nonnegative(),
|
|
3457
|
+
/** Self-traffic events (Canonry's own tooling) dropped before rollup. */
|
|
3458
|
+
selfTrafficExcluded: z24.number().int().nonnegative(),
|
|
3457
3459
|
crawlerHits: z24.number().int().nonnegative(),
|
|
3458
3460
|
aiUserFetchHits: z24.number().int().nonnegative(),
|
|
3459
3461
|
aiReferralHits: z24.number().int().nonnegative(),
|
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
loadConfig,
|
|
9
9
|
loadConfigRaw,
|
|
10
10
|
saveConfigPatch
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-WW6NOJTP.js";
|
|
12
12
|
import {
|
|
13
13
|
CC_CACHE_DIR,
|
|
14
14
|
DUCKDB_SPEC,
|
|
@@ -93,7 +93,7 @@ import {
|
|
|
93
93
|
runs,
|
|
94
94
|
schedules,
|
|
95
95
|
usageCounters
|
|
96
|
-
} from "./chunk-
|
|
96
|
+
} from "./chunk-EECLXA5D.js";
|
|
97
97
|
import {
|
|
98
98
|
AGENT_MEMORY_VALUE_MAX_BYTES,
|
|
99
99
|
AGENT_PROVIDER_IDS,
|
|
@@ -141,7 +141,7 @@ import {
|
|
|
141
141
|
skillsClientSchema,
|
|
142
142
|
validationError,
|
|
143
143
|
withRetry
|
|
144
|
-
} from "./chunk-
|
|
144
|
+
} from "./chunk-GWV4FKVY.js";
|
|
145
145
|
|
|
146
146
|
// src/telemetry.ts
|
|
147
147
|
import crypto from "crypto";
|
|
@@ -5616,7 +5616,7 @@ function readStoredGroundingSources(rawResponse) {
|
|
|
5616
5616
|
return result;
|
|
5617
5617
|
}
|
|
5618
5618
|
async function backfillInsightsCommand(project, opts) {
|
|
5619
|
-
const { IntelligenceService: IntelligenceService2 } = await import("./intelligence-service-
|
|
5619
|
+
const { IntelligenceService: IntelligenceService2 } = await import("./intelligence-service-I5HMGDKS.js");
|
|
5620
5620
|
const config = loadConfig();
|
|
5621
5621
|
const db = createClient(config.database);
|
|
5622
5622
|
migrate(db);
|
|
@@ -9987,6 +9987,7 @@ async function createServer(opts) {
|
|
|
9987
9987
|
sourceType: event.sourceType,
|
|
9988
9988
|
sourceId: event.sourceId,
|
|
9989
9989
|
pulledEvents: event.pulledEvents,
|
|
9990
|
+
selfTrafficExcluded: event.selfTrafficExcluded,
|
|
9990
9991
|
crawlerHits: event.crawlerHits,
|
|
9991
9992
|
aiReferralHits: event.aiReferralHits,
|
|
9992
9993
|
durationMs: event.durationMs
|
package/dist/cli.js
CHANGED
|
@@ -27,7 +27,7 @@ import {
|
|
|
27
27
|
setTelemetrySource,
|
|
28
28
|
showFirstRunNotice,
|
|
29
29
|
trackEvent
|
|
30
|
-
} from "./chunk-
|
|
30
|
+
} from "./chunk-UNDLLHDV.js";
|
|
31
31
|
import {
|
|
32
32
|
CliError,
|
|
33
33
|
EXIT_SYSTEM_ERROR,
|
|
@@ -43,7 +43,7 @@ import {
|
|
|
43
43
|
saveConfig,
|
|
44
44
|
saveConfigPatch,
|
|
45
45
|
usageError
|
|
46
|
-
} from "./chunk-
|
|
46
|
+
} from "./chunk-WW6NOJTP.js";
|
|
47
47
|
import {
|
|
48
48
|
apiKeys,
|
|
49
49
|
createClient,
|
|
@@ -51,7 +51,7 @@ import {
|
|
|
51
51
|
projects,
|
|
52
52
|
queries,
|
|
53
53
|
renderReportHtml
|
|
54
|
-
} from "./chunk-
|
|
54
|
+
} from "./chunk-EECLXA5D.js";
|
|
55
55
|
import {
|
|
56
56
|
CcReleaseSyncStatuses,
|
|
57
57
|
CheckScopes,
|
|
@@ -67,7 +67,7 @@ import {
|
|
|
67
67
|
notificationEventSchema,
|
|
68
68
|
providerQuotaPolicySchema,
|
|
69
69
|
resolveProviderInput
|
|
70
|
-
} from "./chunk-
|
|
70
|
+
} from "./chunk-GWV4FKVY.js";
|
|
71
71
|
|
|
72
72
|
// src/cli.ts
|
|
73
73
|
import { pathToFileURL } from "url";
|
|
@@ -3700,6 +3700,9 @@ async function trafficSync(project, opts) {
|
|
|
3700
3700
|
console.log(` Run ID: ${result.runId}`);
|
|
3701
3701
|
console.log(` Window: ${result.windowStart} \u2192 ${result.windowEnd}`);
|
|
3702
3702
|
console.log(` Pulled events: ${result.pulledEvents}`);
|
|
3703
|
+
if (result.selfTrafficExcluded > 0) {
|
|
3704
|
+
console.log(` Self-traffic excl: ${result.selfTrafficExcluded} (Canonry's own tooling, dropped before rollup)`);
|
|
3705
|
+
}
|
|
3703
3706
|
console.log(` Crawler hits: ${result.crawlerHits} (${result.crawlerBucketRows} hourly bucket${result.crawlerBucketRows === 1 ? "" : "s"})`);
|
|
3704
3707
|
console.log(` AI referral hits: ${result.aiReferralHits} (${result.aiReferralBucketRows} hourly bucket${result.aiReferralBucketRows === 1 ? "" : "s"})`);
|
|
3705
3708
|
console.log(` Unknown hits: ${result.unknownHits}`);
|
package/dist/index.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
createServer
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-UNDLLHDV.js";
|
|
4
4
|
import {
|
|
5
5
|
loadConfig
|
|
6
|
-
} from "./chunk-
|
|
7
|
-
import "./chunk-
|
|
8
|
-
import "./chunk-
|
|
6
|
+
} from "./chunk-WW6NOJTP.js";
|
|
7
|
+
import "./chunk-EECLXA5D.js";
|
|
8
|
+
import "./chunk-GWV4FKVY.js";
|
|
9
9
|
export {
|
|
10
10
|
createServer,
|
|
11
11
|
loadConfig
|
package/dist/mcp.js
CHANGED
|
@@ -3,8 +3,8 @@ import {
|
|
|
3
3
|
PACKAGE_VERSION,
|
|
4
4
|
canonryMcpTools,
|
|
5
5
|
createApiClient
|
|
6
|
-
} from "./chunk-
|
|
7
|
-
import "./chunk-
|
|
6
|
+
} from "./chunk-WW6NOJTP.js";
|
|
7
|
+
import "./chunk-GWV4FKVY.js";
|
|
8
8
|
|
|
9
9
|
// src/mcp/cli.ts
|
|
10
10
|
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.62.
|
|
3
|
+
"version": "4.62.1",
|
|
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",
|
|
@@ -62,25 +62,25 @@
|
|
|
62
62
|
"tsup": "^8.5.1",
|
|
63
63
|
"tsx": "^4.19.0",
|
|
64
64
|
"@ainyc/canonry-api-client": "0.0.0",
|
|
65
|
-
"@ainyc/canonry-
|
|
66
|
-
"@ainyc/canonry-config": "0.0.0",
|
|
65
|
+
"@ainyc/canonry-contracts": "0.0.0",
|
|
67
66
|
"@ainyc/canonry-db": "0.0.0",
|
|
68
67
|
"@ainyc/canonry-integration-bing": "0.0.0",
|
|
69
|
-
"@ainyc/canonry-contracts": "0.0.0",
|
|
70
68
|
"@ainyc/canonry-integration-cloud-run": "0.0.0",
|
|
69
|
+
"@ainyc/canonry-config": "0.0.0",
|
|
70
|
+
"@ainyc/canonry-api-routes": "0.0.0",
|
|
71
71
|
"@ainyc/canonry-integration-commoncrawl": "0.0.0",
|
|
72
|
-
"@ainyc/canonry-integration-google
|
|
72
|
+
"@ainyc/canonry-integration-google": "0.0.0",
|
|
73
73
|
"@ainyc/canonry-integration-google-places": "0.0.0",
|
|
74
|
+
"@ainyc/canonry-integration-google-business-profile": "0.0.0",
|
|
74
75
|
"@ainyc/canonry-integration-traffic": "0.0.0",
|
|
75
76
|
"@ainyc/canonry-integration-wordpress": "0.0.0",
|
|
76
|
-
"@ainyc/canonry-integration-google": "0.0.0",
|
|
77
|
-
"@ainyc/canonry-provider-gemini": "0.0.0",
|
|
78
77
|
"@ainyc/canonry-intelligence": "0.0.0",
|
|
79
|
-
"@ainyc/canonry-provider-claude": "0.0.0",
|
|
80
|
-
"@ainyc/canonry-provider-local": "0.0.0",
|
|
81
|
-
"@ainyc/canonry-provider-perplexity": "0.0.0",
|
|
82
78
|
"@ainyc/canonry-provider-cdp": "0.0.0",
|
|
83
|
-
"@ainyc/canonry-provider-
|
|
79
|
+
"@ainyc/canonry-provider-gemini": "0.0.0",
|
|
80
|
+
"@ainyc/canonry-provider-local": "0.0.0",
|
|
81
|
+
"@ainyc/canonry-provider-claude": "0.0.0",
|
|
82
|
+
"@ainyc/canonry-provider-openai": "0.0.0",
|
|
83
|
+
"@ainyc/canonry-provider-perplexity": "0.0.0"
|
|
84
84
|
},
|
|
85
85
|
"scripts": {
|
|
86
86
|
"build": "tsx scripts/copy-agent-assets.ts && tsup && tsx build-web.ts",
|