@canonry/canonry 7.60.0 → 7.61.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 +1 -0
- package/assets/assets/{AgentSetupPage-xAe2RSTQ.js → AgentSetupPage-CCMNQwRE.js} +1 -1
- package/assets/assets/{AuditHistoryPanel-DRGMxc1o.js → AuditHistoryPanel-B8mIRI3I.js} +1 -1
- package/assets/assets/{BacklinksPage-OS6r_MtQ.js → BacklinksPage-BNLyIR97.js} +1 -1
- package/assets/assets/{HistoryPage-RDxUN7rD.js → HistoryPage-DSr9KE16.js} +1 -1
- package/assets/assets/InfoTooltip-BbdxCAup.js +1 -0
- package/assets/assets/{MeasurementPropertyPage-BVAmJBKa.js → MeasurementPropertyPage-BTg-SFW7.js} +1 -1
- package/assets/assets/{ProjectPage-BWY9eFFx.js → ProjectPage-SqE0fkEq.js} +7 -7
- package/assets/assets/{RunsPage-Fb7IM6iV.js → RunsPage-gJR17ho1.js} +1 -1
- package/assets/assets/{SettingsPage-Dz_agQCf.js → SettingsPage-DY5f_oN4.js} +1 -1
- package/assets/assets/{SiteHealthSection-TXp2Cszl.js → SiteHealthSection-BYx91hP-.js} +2 -2
- package/assets/assets/ToneBadge-C3S7aVf3.js +60 -0
- package/assets/assets/{TrafficPage-BKfgooKl.js → TrafficPage-CCXH5nhh.js} +1 -1
- package/assets/assets/{TrafficSourceDetailPage-C1HM_4Mh.js → TrafficSourceDetailPage-DTjCsu4-.js} +1 -1
- package/assets/assets/{account-context-sj3dKq-a.js → account-context-DozTQM44.js} +1 -1
- package/assets/assets/{card-DKV0mNmm.js → card-D8MU7RYV.js} +1 -1
- package/assets/assets/{extract-error-message-Tfdo6vAJ.js → extract-error-message-CsVYPTyt.js} +1 -1
- package/assets/assets/{format-helpers-BagbvnfZ.js → format-helpers-CWBooMJJ.js} +1 -1
- package/assets/assets/{index-7G0DHKIO.js → index-D5o-caTl.js} +4 -4
- package/assets/assets/index-DqhMdZUM.css +1 -0
- package/assets/assets/{query-client-7P_Wczfa.js → query-client-DbxlHfUm.js} +1 -1
- package/assets/assets/{react-query-agN8P-yg.js → react-query-D4ZSMg7h.js} +1 -1
- package/assets/assets/{react-sigma_core.esm.min-CHz1PIYq.js → react-sigma_core.esm.min-CSRp4hew.js} +1 -1
- package/assets/assets/{service-CAV4dMit.js → service-CYzJmCXU.js} +1 -1
- package/assets/index.html +9 -9
- package/dist/{ads-A42JBQ5Q.js → ads-BGCHIYH7.js} +3 -3
- package/dist/{agent-ZKKHPMOB.js → agent-JPTVPRNF.js} +7 -7
- package/dist/{agent-ask-SMV76QZM.js → agent-ask-BUA2AOYT.js} +3 -3
- package/dist/{agent-conversations-O5QA3MHR.js → agent-conversations-GLTN6QIK.js} +3 -3
- package/dist/{agent-memory-ZRJQ6SZU.js → agent-memory-XON2PCI3.js} +3 -3
- package/dist/{agent-providers-EOXIPRXN.js → agent-providers-QVF3QILF.js} +3 -3
- package/dist/{agent-transcript-4TB2VI5E.js → agent-transcript-LZI4PBF4.js} +3 -3
- package/dist/{analytics-KSHS32RJ.js → analytics-Y7ZAOJIG.js} +30 -8
- package/dist/{apply-4ZZMONED.js → apply-VPBTAFUO.js} +3 -3
- package/dist/{backfill-DJIIN5ZR.js → backfill-OI5UPJOS.js} +9 -9
- package/dist/{backlinks-XIAPORR5.js → backlinks-O6MOB6BM.js} +3 -3
- package/dist/{bing-QDZXI334.js → bing-T4FGT4QG.js} +3 -3
- package/dist/{bootstrap-7RAGKHJZ.js → bootstrap-NAAROTPL.js} +10 -10
- package/dist/{cdp-3OX3WGWN.js → cdp-ZYDKLCJM.js} +7 -7
- package/dist/{chunk-TLNHDCJF.js → chunk-2E4GJQJ4.js} +2 -2
- package/dist/{chunk-HGBIJIVM.js → chunk-2H3E7BDF.js} +1 -1
- package/dist/{chunk-66C7YITH.js → chunk-5JFEK7IL.js} +1 -1
- package/dist/{chunk-FCPIOH6P.js → chunk-5ZINPM6W.js} +1 -1
- package/dist/{chunk-DUYENNUI.js → chunk-7FTOEVLL.js} +2 -2
- package/dist/{chunk-7KEIZ5OO.js → chunk-AAKVFLL3.js} +8 -8
- package/dist/{chunk-RLXNZRHD.js → chunk-BOIZ6IET.js} +5 -5
- package/dist/{chunk-ZK5WIVGA.js → chunk-D7DOTPNP.js} +2 -2
- package/dist/{chunk-7XSGAPN5.js → chunk-GDVMHIY4.js} +7 -6
- package/dist/{chunk-QEG7BSLH.js → chunk-HF4ARGGH.js} +1 -1
- package/dist/{chunk-QRC6SDPF.js → chunk-HQKTZH7L.js} +338 -336
- package/dist/{chunk-O7KIDW4H.js → chunk-JHYLKXUV.js} +1 -1
- package/dist/{chunk-QCSNNKFI.js → chunk-K2TRV65V.js} +1 -1
- package/dist/{chunk-I32IFAB3.js → chunk-L3W6UCTQ.js} +3 -3
- package/dist/{chunk-D7ZU5LMK.js → chunk-M6KKI7FB.js} +1 -1
- package/dist/{chunk-Z63ZR6AD.js → chunk-MIV52IYY.js} +1 -1
- package/dist/{chunk-ADY24WBX.js → chunk-MSEOZUBH.js} +4 -4
- package/dist/{chunk-4IV4FO3O.js → chunk-O5WQN3GW.js} +36 -11
- package/dist/{chunk-7HZ7KRHT.js → chunk-OFV6CZ2K.js} +1 -1
- package/dist/{chunk-Z7WG6F7Q.js → chunk-OQDVG7K7.js} +3 -3
- package/dist/{chunk-UHE4RLFW.js → chunk-OTOVHA7D.js} +1 -1
- package/dist/{chunk-3JV3PWNA.js → chunk-ST7JA3UW.js} +1 -1
- package/dist/{chunk-IDPAYZHR.js → chunk-TD623G6F.js} +1 -1
- package/dist/{chunk-G7VJEPDZ.js → chunk-TQLXCGRD.js} +2 -2
- package/dist/{chunk-XJF7LMGU.js → chunk-UQVOB3OH.js} +4 -4
- package/dist/{chunk-HV5MGQYI.js → chunk-UX6KFIIE.js} +3 -3
- package/dist/{chunk-JDL4QAPT.js → chunk-V3XAJCO3.js} +7 -0
- package/dist/{chunk-GLFE3Q3C.js → chunk-VMXMJWTB.js} +3 -3
- package/dist/{chunk-FKQPVB5B.js → chunk-WWPADIGG.js} +20 -20
- package/dist/{chunk-2IBFY7KQ.js → chunk-XKAH5XYT.js} +2 -2
- package/dist/{chunk-SJNF5GN2.js → chunk-XRQCRDTF.js} +5 -4
- package/dist/{chunk-OA6N3BI7.js → chunk-YEH26F57.js} +4 -4
- package/dist/{chunk-NQTUPEBQ.js → chunk-YGHUT4F7.js} +1 -1
- package/dist/{chunk-L7WQTD3D.js → chunk-YWQCJQPV.js} +5 -5
- package/dist/{citations-L3HFNQVU.js → citations-6SR5QG7C.js} +3 -3
- package/dist/{cli-catalog-DJPRREDK.js → cli-catalog-VILBDFBX.js} +3 -3
- package/dist/{cli-commands-4KG4X76Z.js → cli-commands-BCYMNTYY.js} +7 -7
- package/dist/cli.js +13 -13
- package/dist/{competitor-Q5LZ26U5.js → competitor-XQESNR2X.js} +3 -3
- package/dist/{content-WRVFNQSO.js → content-B6H2Y6NI.js} +3 -3
- package/dist/{dashboard-GBP2T2AG.js → dashboard-NW3HWXVM.js} +6 -6
- package/dist/{demo-JMLMPLJ6.js → demo-3CB6CWSG.js} +1 -1
- package/dist/{demo-server-AOVPBGZ7.js → demo-server-EGSJGYN5.js} +11 -11
- package/dist/{discover-SKUNZE4Y.js → discover-W5R7QVT4.js} +3 -3
- package/dist/{discover-eval-57BEDSQN.js → discover-eval-KXTQYYAT.js} +3 -3
- package/dist/{doctor-DMLJGH6G.js → doctor-BVQ5G5FY.js} +3 -3
- package/dist/{evidence-J4XF4W7O.js → evidence-R2OHKHMB.js} +3 -3
- package/dist/{export-cmd-3JXT2YAP.js → export-cmd-2D42QGE6.js} +3 -3
- package/dist/{ga-KHILAPMC.js → ga-FE7E7FK5.js} +3 -3
- package/dist/{gbp-PHOFQZNT.js → gbp-ML4MJFMR.js} +3 -3
- package/dist/{google-QOLM2NBI.js → google-3D52XYTJ.js} +4 -4
- package/dist/{google-marketing-N37WUWNL.js → google-marketing-GDMMQVC5.js} +1 -1
- package/dist/{health-cmd-2FUEPUJZ.js → health-cmd-QEW6GNJP.js} +3 -3
- package/dist/{history-MOSRCLAD.js → history-O7CL762R.js} +3 -3
- package/dist/index.d.ts +7 -7
- package/dist/index.js +24 -24
- package/dist/{init-V6ER2PJV.js → init-N3WI6WIQ.js} +11 -11
- package/dist/{insights-F3MT66IV.js → insights-RBORMIBR.js} +3 -3
- package/dist/intelligence-service-GIQUBLBU.js +15 -0
- package/dist/{journeys-DNS3EZNK.js → journeys-62MQCBGH.js} +3 -3
- package/dist/{keys-NPOLKCWZ.js → keys-A7PCG4S7.js} +3 -3
- package/dist/{keyword-AXEPIJQ7.js → keyword-IU6OBCF6.js} +3 -3
- package/dist/{logs-ECEDVUTX.js → logs-FJJDRRGT.js} +3 -3
- package/dist/{mcp-HUIRIY74.js → mcp-RJFSEI5Q.js} +2 -2
- package/dist/mcp.js +9 -9
- package/dist/{measurement-plan-5Y2IHH43.js → measurement-plan-M65GWWVK.js} +5 -5
- package/dist/{notify-PIFCJ7WM.js → notify-E555NEWB.js} +3 -3
- package/dist/{organic-evidence-S2IE5XV6.js → organic-evidence-L3HSIHKB.js} +3 -3
- package/dist/{overview-TZT7C4U4.js → overview-DIUMXQHP.js} +4 -4
- package/dist/{project-HIY673Y5.js → project-BTRIU4ZZ.js} +3 -3
- package/dist/{query-FUJIMFJQ.js → query-ODGT6LCA.js} +3 -3
- package/dist/{research-ECGEXWID.js → research-CFOCCZYJ.js} +3 -3
- package/dist/{results-export-7DRGFNUX.js → results-export-ZCVCABTY.js} +3 -3
- package/dist/{run-4JEDD5VT.js → run-ALQMFZPA.js} +4 -4
- package/dist/{schedule-NRHQXHTW.js → schedule-RJHQG6BO.js} +3 -3
- package/dist/{search-M7PNZZZL.js → search-EQGSYWF7.js} +3 -3
- package/dist/{serve-RXLQEALQ.js → serve-EHPDSJSX.js} +25 -25
- package/dist/{session-MCSZQR5V.js → session-3H6V5DGU.js} +12 -12
- package/dist/{settings-JXOYI7VV.js → settings-SMD7F2W3.js} +3 -3
- package/dist/{skills-SRUXD2PV.js → skills-KQYUUDBA.js} +2 -2
- package/dist/{snapshot-7N4BEGGM.js → snapshot-S4UZAST6.js} +3 -3
- package/dist/{src-ZAAE3NIM.js → src-QZCOCSQQ.js} +2 -2
- package/dist/{status-5OYYSMAY.js → status-PA5W33LR.js} +4 -4
- package/dist/{technical-aeo-464OUUWT.js → technical-aeo-LLK37ELV.js} +3 -3
- package/dist/{telemetry-BZFNXACR.js → telemetry-OLKQFAOR.js} +4 -4
- package/dist/{tools-YVWC3NTG.js → tools-56M7FYOA.js} +11 -11
- package/dist/{traffic-WXJHRB7H.js → traffic-WKFMJIBP.js} +5 -5
- package/dist/{users-U2UNKGDY.js → users-GZ4SIIZ7.js} +3 -3
- package/dist/{visibility-stats-AHGME46N.js → visibility-stats-4VK55MH2.js} +3 -3
- package/dist/{wordpress-FUVFZKH2.js → wordpress-H6SNWN7D.js} +3 -3
- package/package.json +1 -1
- package/assets/assets/InfoTooltip-DV3_9Qp1.js +0 -1
- package/assets/assets/ToneBadge-DZzQvXs_.js +0 -60
- package/assets/assets/index-DElT2Fss.css +0 -1
- package/dist/intelligence-service-S5DI74LD.js +0 -15
|
@@ -2,18 +2,18 @@ import {
|
|
|
2
2
|
configExists,
|
|
3
3
|
loadConfigRaw,
|
|
4
4
|
saveConfigPatch
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-HF4ARGGH.js";
|
|
6
6
|
import {
|
|
7
7
|
BUNDLED_SKILL_NAMES,
|
|
8
8
|
installSkills
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-TD623G6F.js";
|
|
10
10
|
import {
|
|
11
11
|
PACKAGE_VERSION
|
|
12
12
|
} from "./chunk-AOJU5LKX.js";
|
|
13
13
|
import {
|
|
14
14
|
SKILL_MANIFEST_FILENAME,
|
|
15
15
|
SkillsClients
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-V3XAJCO3.js";
|
|
17
17
|
|
|
18
18
|
// src/skills-autosync.ts
|
|
19
19
|
import fs from "fs";
|
|
@@ -23,7 +23,7 @@ import {
|
|
|
23
23
|
measurementDraftUpsertGroupRequestSchema,
|
|
24
24
|
measurementDraftUpsertMarketRequestSchema,
|
|
25
25
|
measurementDraftUpsertTargetRequestSchema
|
|
26
|
-
} from "./chunk-
|
|
26
|
+
} from "./chunk-V3XAJCO3.js";
|
|
27
27
|
|
|
28
28
|
// src/measurement-draft-actions.ts
|
|
29
29
|
import { z } from "zod";
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
registeredProviderNames
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-K2TRV65V.js";
|
|
4
4
|
import {
|
|
5
5
|
configExists,
|
|
6
6
|
loadConfigRaw
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-HF4ARGGH.js";
|
|
8
8
|
|
|
9
9
|
// src/setup-state.ts
|
|
10
10
|
import fs from "fs";
|
|
@@ -28,7 +28,7 @@ async function buildSetupState() {
|
|
|
28
28
|
}
|
|
29
29
|
if (dbPath && fs.existsSync(dbPath)) {
|
|
30
30
|
try {
|
|
31
|
-
const { createClient, projects, queries: queriesTable } = await import("./src-
|
|
31
|
+
const { createClient, projects, queries: queriesTable } = await import("./src-QZCOCSQQ.js");
|
|
32
32
|
const db = createClient(dbPath);
|
|
33
33
|
project_count = db.select({ id: projects.id }).from(projects).all().length;
|
|
34
34
|
const firstQuery = db.select({ id: queriesTable.id }).from(queriesTable).limit(1).all();
|
|
@@ -47,7 +47,7 @@ function queueServeHandoff() {
|
|
|
47
47
|
async function runPendingServeHandoff(format) {
|
|
48
48
|
if (!pendingServeHandoff) return;
|
|
49
49
|
pendingServeHandoff = false;
|
|
50
|
-
const { serveCommand } = await import("./serve-
|
|
50
|
+
const { serveCommand } = await import("./serve-EHPDSJSX.js");
|
|
51
51
|
await serveCommand(format);
|
|
52
52
|
}
|
|
53
53
|
|
|
@@ -9,14 +9,14 @@ import {
|
|
|
9
9
|
normalizeCloudflareWorkerEvent,
|
|
10
10
|
sessionizeJourneyRequests,
|
|
11
11
|
verifyRequestSignature
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-JHYLKXUV.js";
|
|
13
13
|
import {
|
|
14
14
|
currentOutcomeAttribution,
|
|
15
15
|
getRequestContext,
|
|
16
16
|
registerRequestContext,
|
|
17
17
|
requestAuditIdentity,
|
|
18
18
|
sanitizeRequestContext
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-5JFEK7IL.js";
|
|
20
20
|
import {
|
|
21
21
|
SentimentIdempotencyConflict,
|
|
22
22
|
SentimentRepository,
|
|
@@ -154,7 +154,7 @@ import {
|
|
|
154
154
|
userSessions,
|
|
155
155
|
users,
|
|
156
156
|
writeNegativeReviewMaxStars
|
|
157
|
-
} from "./chunk-
|
|
157
|
+
} from "./chunk-ST7JA3UW.js";
|
|
158
158
|
import {
|
|
159
159
|
ADS_ACTIVATE_SCOPE,
|
|
160
160
|
ADS_ACTIVATION_ABSOLUTE_MAX_ENTITIES,
|
|
@@ -939,6 +939,7 @@ import {
|
|
|
939
939
|
providerSummaryEntryDtoSchema,
|
|
940
940
|
providersFailing,
|
|
941
941
|
qualifiedNameIncludesName,
|
|
942
|
+
queryClassFilterSchema,
|
|
942
943
|
queryDtoSchema,
|
|
943
944
|
queryGenerateRequestSchema,
|
|
944
945
|
queryGenerateResponseSchema,
|
|
@@ -1156,7 +1157,7 @@ import {
|
|
|
1156
1157
|
wordpressSchemaDeployResultDtoSchema,
|
|
1157
1158
|
wordpressSchemaStatusResultDtoSchema,
|
|
1158
1159
|
wordpressStatusDtoSchema
|
|
1159
|
-
} from "./chunk-
|
|
1160
|
+
} from "./chunk-V3XAJCO3.js";
|
|
1160
1161
|
|
|
1161
1162
|
// ../api-routes/src/user-session.ts
|
|
1162
1163
|
import crypto2 from "crypto";
|
|
@@ -27368,6 +27369,22 @@ async function analyticsRoutes(app) {
|
|
|
27368
27369
|
const project = resolveProject(app.db, request.params.name);
|
|
27369
27370
|
const classifyQuery = projectQueryClassifier(project);
|
|
27370
27371
|
const mentionShareScope = classifyQuery ? "non-brand" : "pooled";
|
|
27372
|
+
const parsedQueryClass = queryClassFilterSchema.safeParse(request.query.queryClass ?? "all");
|
|
27373
|
+
if (!parsedQueryClass.success) {
|
|
27374
|
+
throw validationError('"queryClass" must be one of: all, branded, non-brand', { issues: parsedQueryClass.error.issues });
|
|
27375
|
+
}
|
|
27376
|
+
const queryClass = parsedQueryClass.data;
|
|
27377
|
+
if (queryClass !== "all" && activeMeasurementPlan(app.db, project.id)?.plan.schemaVersion === 2) {
|
|
27378
|
+
throw validationError(
|
|
27379
|
+
`Query class "${queryClass}" on a published measurement plan follows its assignments. Read the split from GET /projects/${project.name}/visibility-report, or omit queryClass for pooled trends.`
|
|
27380
|
+
);
|
|
27381
|
+
}
|
|
27382
|
+
if (queryClass !== "all" && !classifyQuery) {
|
|
27383
|
+
throw validationError(
|
|
27384
|
+
`Query class "${queryClass}" needs a brand name or alias on this project. Add one, or omit queryClass for pooled trends.`
|
|
27385
|
+
);
|
|
27386
|
+
}
|
|
27387
|
+
const inQueryClass = (text) => queryClass === "all" || classifyQuery(text) === queryClass;
|
|
27371
27388
|
const window2 = parseWindow(request.query.window);
|
|
27372
27389
|
const cutoff = windowCutoff(window2);
|
|
27373
27390
|
const projectRuns = app.db.select().from(runs).where(and37(
|
|
@@ -27381,6 +27398,7 @@ async function analyticsRoutes(app) {
|
|
|
27381
27398
|
return reply.send({
|
|
27382
27399
|
window: window2,
|
|
27383
27400
|
mentionShareScope,
|
|
27401
|
+
queryClass,
|
|
27384
27402
|
buckets: [],
|
|
27385
27403
|
overall: { citationRate: 0, cited: 0, total: 0, mentionRate: 0, mentionedCount: 0 },
|
|
27386
27404
|
byProvider: {},
|
|
@@ -27437,7 +27455,7 @@ async function analyticsRoutes(app) {
|
|
|
27437
27455
|
// this far when its text matched the basket, so its key is never empty.)
|
|
27438
27456
|
basketKey: normalizeQueryText(s.queryText ?? (s.queryId ? queryTextById.get(s.queryId) ?? "" : "")) || s.queryId || "",
|
|
27439
27457
|
runBasketRevision: runBasketRevision.get(s.runId) ?? null
|
|
27440
|
-
}));
|
|
27458
|
+
})).filter((s) => queryClass === "all" || s.queryClass === queryClass);
|
|
27441
27459
|
const mentionShareCompetitors2 = mentionShareCompetitors(
|
|
27442
27460
|
app.db.select(competitorIdentityColumns).from(competitors).where(eq46(competitors.projectId, project.id)).orderBy(competitors.domain).all()
|
|
27443
27461
|
);
|
|
@@ -27603,17 +27621,17 @@ async function analyticsRoutes(app) {
|
|
|
27603
27621
|
const trend = computeTrend(buckets, "citationRate");
|
|
27604
27622
|
const mentionTrend = computeTrend(buckets, "mentionRate");
|
|
27605
27623
|
const windowChange = computeWindowChange(buckets);
|
|
27606
|
-
const queryChanges = computeQueryChanges(projectQueries, cutoff);
|
|
27624
|
+
const queryChanges = computeQueryChanges(projectQueries.filter((q) => inQueryClass(q.query)), cutoff);
|
|
27607
27625
|
const basketChanges = basketRevisions.slice(1).map((rev, i) => {
|
|
27608
27626
|
const previous = new Set(basketRevisions[i].members);
|
|
27609
27627
|
const current = new Set(rev.members);
|
|
27610
27628
|
return {
|
|
27611
27629
|
revision: rev.revision,
|
|
27612
27630
|
at: rev.createdAt,
|
|
27613
|
-
added: rev.members.filter((m) => !previous.has(m)),
|
|
27614
|
-
removed: basketRevisions[i].members.filter((m) => !current.has(m))
|
|
27631
|
+
added: rev.members.filter((m) => !previous.has(m) && inQueryClass(m)),
|
|
27632
|
+
removed: basketRevisions[i].members.filter((m) => !current.has(m) && inQueryClass(m))
|
|
27615
27633
|
};
|
|
27616
|
-
}).filter((change) => !cutoff || change.at >= cutoff);
|
|
27634
|
+
}).filter((change) => queryClass === "all" || change.added.length + change.removed.length > 0).filter((change) => !cutoff || change.at >= cutoff);
|
|
27617
27635
|
const executionIdentityChanges = [];
|
|
27618
27636
|
let previousExecutionChecksum = null;
|
|
27619
27637
|
for (const run of projectRuns) {
|
|
@@ -27624,7 +27642,7 @@ async function analyticsRoutes(app) {
|
|
|
27624
27642
|
}
|
|
27625
27643
|
previousExecutionChecksum = identity.checksum;
|
|
27626
27644
|
}
|
|
27627
|
-
return reply.send({ window: window2, mentionShareScope, buckets, overall, byProvider, trend, mentionTrend, windowChange, queryChanges, basketChanges, executionIdentityChanges, referenceBasketRevision: latestBasket?.revision ?? null, modelAttribution, servedModelAttribution, modelServiceMismatch, modelPointerChanges, competitorIdentityChangedAt: readCompetitorIdentityChangedAt(app.db, project.id), competitorSetChangedAt: readCompetitorSetChangedAt(app.db, project.id) });
|
|
27645
|
+
return reply.send({ window: window2, mentionShareScope, queryClass, buckets, overall, byProvider, trend, mentionTrend, windowChange, queryChanges, basketChanges, executionIdentityChanges, referenceBasketRevision: latestBasket?.revision ?? null, modelAttribution, servedModelAttribution, modelServiceMismatch, modelPointerChanges, competitorIdentityChangedAt: readCompetitorIdentityChangedAt(app.db, project.id), competitorSetChangedAt: readCompetitorSetChangedAt(app.db, project.id) });
|
|
27628
27646
|
});
|
|
27629
27647
|
app.get("/projects/:name/analytics/gaps", async (request, reply) => {
|
|
27630
27648
|
const project = resolveProject(app.db, request.params.name);
|
|
@@ -34290,6 +34308,12 @@ var sourcesQueryClassParameter = {
|
|
|
34290
34308
|
description: "Restrict to branded or non-brand answers. With an active v2 measurement plan the class comes from each run's frozen plan assignments (the same answers as the competitor landscape at scope=all-markets); otherwise from the project's brand-name classifier over the query text. Answers neither basis can place are excluded and counted in unclassifiedAnswers. Defaults to all, which pools both classes.",
|
|
34291
34309
|
schema: { type: "string", enum: ["all", "branded", "non-brand"] }
|
|
34292
34310
|
};
|
|
34311
|
+
var metricsQueryClassParameter = {
|
|
34312
|
+
name: "queryClass",
|
|
34313
|
+
in: "query",
|
|
34314
|
+
description: "Restrict every rate, bucket, change and query-set event to branded or non-brand answers, classified from the query text by the project's brand names (the same split mention share uses). Mention share stays non-brand, so it is empty under branded. Bucket boundaries do not move with the class, so the two classes plot on the same dates. 400 when the project has no brand name or alias to classify with, or has a published v2 measurement plan (its classes live on the plan assignments; read the split from the visibility report). Defaults to all, which pools both classes.",
|
|
34315
|
+
schema: { type: "string", enum: ["all", "branded", "non-brand"] }
|
|
34316
|
+
};
|
|
34293
34317
|
var sourcesIncludeByQueryParameter = {
|
|
34294
34318
|
name: "includeByQuery",
|
|
34295
34319
|
in: "query",
|
|
@@ -36804,9 +36828,10 @@ var routeCatalog = [
|
|
|
36804
36828
|
path: "/api/v1/projects/{name}/analytics/metrics",
|
|
36805
36829
|
summary: "Get citation trend analytics",
|
|
36806
36830
|
tags: ["analytics"],
|
|
36807
|
-
parameters: [nameParameter, analyticsWindowParameter],
|
|
36831
|
+
parameters: [nameParameter, analyticsWindowParameter, metricsQueryClassParameter],
|
|
36808
36832
|
responses: {
|
|
36809
36833
|
200: jsonResponse("Citation metrics returned.", "BrandMetricsDto"),
|
|
36834
|
+
400: errorResponse("Invalid query parameters."),
|
|
36810
36835
|
404: errorResponse("Project not found.")
|
|
36811
36836
|
}
|
|
36812
36837
|
},
|
|
@@ -6,12 +6,12 @@ import {
|
|
|
6
6
|
import {
|
|
7
7
|
createApiClient,
|
|
8
8
|
runWithUsageTags
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-XRQCRDTF.js";
|
|
10
10
|
import {
|
|
11
11
|
canonryMcpTools,
|
|
12
12
|
mcpOutputSchema,
|
|
13
13
|
toolOperationAccess
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-GDVMHIY4.js";
|
|
15
15
|
import {
|
|
16
16
|
PACKAGE_VERSION
|
|
17
17
|
} from "./chunk-AOJU5LKX.js";
|
|
@@ -24,7 +24,7 @@ import {
|
|
|
24
24
|
isReadOnlyKey,
|
|
25
25
|
restrictedWriteScopes,
|
|
26
26
|
upgradeCaveatFor
|
|
27
|
-
} from "./chunk-
|
|
27
|
+
} from "./chunk-V3XAJCO3.js";
|
|
28
28
|
|
|
29
29
|
// src/mcp/server.ts
|
|
30
30
|
import { randomUUID } from "crypto";
|
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
loadConfig,
|
|
6
6
|
loadConfigRaw,
|
|
7
7
|
saveConfigPatch
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-HF4ARGGH.js";
|
|
9
9
|
import {
|
|
10
10
|
CANONRY_NPM_PACKAGE_URL,
|
|
11
11
|
compareSemver,
|
|
@@ -18,7 +18,7 @@ import {
|
|
|
18
18
|
updateCheckEnvOptOut,
|
|
19
19
|
upgradeCaveatFor,
|
|
20
20
|
upgradeCommandFor
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-V3XAJCO3.js";
|
|
22
22
|
|
|
23
23
|
// src/runtime-context.ts
|
|
24
24
|
function cliRuntimeContext(env = process.env, stdio = process) {
|
|
@@ -2,13 +2,13 @@ import {
|
|
|
2
2
|
bucketCliCommandDuration,
|
|
3
3
|
isTelemetryEnabled,
|
|
4
4
|
trackEvent
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-TQLXCGRD.js";
|
|
6
6
|
import {
|
|
7
7
|
getConfigDir
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-HF4ARGGH.js";
|
|
9
9
|
import {
|
|
10
10
|
currentOutcomeAttribution
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-5JFEK7IL.js";
|
|
12
12
|
import {
|
|
13
13
|
AGENT_NONE,
|
|
14
14
|
OutcomeSurfaces,
|
|
@@ -19,7 +19,7 @@ import {
|
|
|
19
19
|
integrationConnectionPropertiesSchema,
|
|
20
20
|
normalizeAgentSlug,
|
|
21
21
|
usageSurfaceSchema
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-V3XAJCO3.js";
|
|
23
23
|
|
|
24
24
|
// src/outcome-telemetry.ts
|
|
25
25
|
import fs from "fs";
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
2
|
createApiClient
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-XRQCRDTF.js";
|
|
4
4
|
import {
|
|
5
5
|
emitJsonl
|
|
6
6
|
} from "./chunk-Z7IUAJOF.js";
|
|
7
7
|
import {
|
|
8
8
|
measurementDraftOperationSchema,
|
|
9
9
|
runMeasurementDraftAction
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-M6KKI7FB.js";
|
|
11
11
|
import {
|
|
12
12
|
isMachineFormat,
|
|
13
13
|
systemError
|
|
@@ -37,7 +37,7 @@ import {
|
|
|
37
37
|
unattributedAnswersLabel,
|
|
38
38
|
uncheckedSourcesLabel,
|
|
39
39
|
visibilityReportRequestSchema
|
|
40
|
-
} from "./chunk-
|
|
40
|
+
} from "./chunk-V3XAJCO3.js";
|
|
41
41
|
|
|
42
42
|
// src/commands/measurement-plan.ts
|
|
43
43
|
import crypto from "crypto";
|
|
@@ -10901,6 +10901,13 @@ var brandMetricsDtoSchema = z26.object({
|
|
|
10901
10901
|
window: metricsWindowSchema,
|
|
10902
10902
|
/** Scope that applies even when `buckets` is empty. `pooled` means classification was unavailable. */
|
|
10903
10903
|
mentionShareScope: z26.enum(["non-brand", "pooled"]),
|
|
10904
|
+
/**
|
|
10905
|
+
* The answers every rate, bucket, change and query-set event in this response
|
|
10906
|
+
* reads: `branded` or `non-brand` only, or `all` for both pooled. Mention
|
|
10907
|
+
* share is always non-brand, so it is empty under `branded`. A server that
|
|
10908
|
+
* predates the field read `all`.
|
|
10909
|
+
*/
|
|
10910
|
+
queryClass: queryClassFilterSchema.default("all"),
|
|
10904
10911
|
buckets: z26.array(timeBucketSchema),
|
|
10905
10912
|
overall: providerMetricSchema,
|
|
10906
10913
|
byProvider: z26.record(z26.string(), providerMetricSchema),
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
resolveCliAccess,
|
|
4
4
|
resolveCliAccessForInvocation,
|
|
5
5
|
windowOptions
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-OFV6CZ2K.js";
|
|
7
7
|
import {
|
|
8
8
|
emitJsonl
|
|
9
9
|
} from "./chunk-Z7IUAJOF.js";
|
|
@@ -14,7 +14,7 @@ import {
|
|
|
14
14
|
} from "./chunk-HGMYEDAQ.js";
|
|
15
15
|
import {
|
|
16
16
|
OperationAccesses
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-V3XAJCO3.js";
|
|
18
18
|
|
|
19
19
|
// src/cli-catalog.ts
|
|
20
20
|
import { createRequire } from "module";
|
|
@@ -111,7 +111,7 @@ async function dispatchRegisteredCommand(args, fallbackFormat, specs) {
|
|
|
111
111
|
const accessValue = accessFilterFromArgs(argsWithoutHelp);
|
|
112
112
|
validateAccessFilter(accessValue);
|
|
113
113
|
if (fallbackFormat !== "text") {
|
|
114
|
-
const { printCliCatalog: printCliCatalog2 } = await import("./cli-catalog-
|
|
114
|
+
const { printCliCatalog: printCliCatalog2 } = await import("./cli-catalog-VILBDFBX.js");
|
|
115
115
|
const group2 = argsWithoutHelp.find((arg) => !arg.startsWith("--"));
|
|
116
116
|
printCliCatalog2(specs, fallbackFormat, group2, accessValue);
|
|
117
117
|
return true;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
answerServiceAdapters,
|
|
3
3
|
answerServiceDescriptors
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-5ZINPM6W.js";
|
|
5
5
|
import {
|
|
6
6
|
AeroLlmUsageFeatures,
|
|
7
7
|
aeroTurnStatus,
|
|
@@ -27,14 +27,14 @@ import {
|
|
|
27
27
|
resolveConfiguredAgentProvider,
|
|
28
28
|
resolveSessionProviderAndModel,
|
|
29
29
|
setAeroSystemPrompt
|
|
30
|
-
} from "./chunk-
|
|
30
|
+
} from "./chunk-YWQCJQPV.js";
|
|
31
31
|
import {
|
|
32
32
|
AeroToolProfiles,
|
|
33
33
|
AeroToolScopes,
|
|
34
34
|
buildAeroStateTools,
|
|
35
35
|
isAeroToolProfile,
|
|
36
36
|
truncateToolResult
|
|
37
|
-
} from "./chunk-
|
|
37
|
+
} from "./chunk-YEH26F57.js";
|
|
38
38
|
import {
|
|
39
39
|
getGoogleAuthConfig,
|
|
40
40
|
getGoogleConnection,
|
|
@@ -53,7 +53,7 @@ import {
|
|
|
53
53
|
removeCloudflareTrafficConnection,
|
|
54
54
|
removeCloudflareTrafficConnectionBySourceId,
|
|
55
55
|
upsertCloudflareTrafficConnection
|
|
56
|
-
} from "./chunk-
|
|
56
|
+
} from "./chunk-YGHUT4F7.js";
|
|
57
57
|
import {
|
|
58
58
|
claudeAdapter,
|
|
59
59
|
embedQueries,
|
|
@@ -64,7 +64,7 @@ import {
|
|
|
64
64
|
openaiAdapter,
|
|
65
65
|
openrouterAdapter,
|
|
66
66
|
perplexityAdapter
|
|
67
|
-
} from "./chunk-
|
|
67
|
+
} from "./chunk-7FTOEVLL.js";
|
|
68
68
|
import {
|
|
69
69
|
classifyUsageSurface,
|
|
70
70
|
createApiUsageTelemetry,
|
|
@@ -76,7 +76,7 @@ import {
|
|
|
76
76
|
startOutcomeTimer,
|
|
77
77
|
trackFeatureCompleted,
|
|
78
78
|
trackInstallState
|
|
79
|
-
} from "./chunk-
|
|
79
|
+
} from "./chunk-UQVOB3OH.js";
|
|
80
80
|
import {
|
|
81
81
|
isLoopbackBindHost
|
|
82
82
|
} from "./chunk-TSENU4GG.js";
|
|
@@ -84,7 +84,7 @@ import {
|
|
|
84
84
|
isApiProviderRegistrable,
|
|
85
85
|
isCdpProviderRegistrable,
|
|
86
86
|
registeredProviderNames
|
|
87
|
-
} from "./chunk-
|
|
87
|
+
} from "./chunk-K2TRV65V.js";
|
|
88
88
|
import {
|
|
89
89
|
checkLatestVersionForServer,
|
|
90
90
|
getOrCreateAnonymousId,
|
|
@@ -95,17 +95,17 @@ import {
|
|
|
95
95
|
recordDashboardEvent,
|
|
96
96
|
setTelemetryPreference,
|
|
97
97
|
trackEvent
|
|
98
|
-
} from "./chunk-
|
|
98
|
+
} from "./chunk-TQLXCGRD.js";
|
|
99
99
|
import {
|
|
100
100
|
createCanonryMcpServer
|
|
101
|
-
} from "./chunk-
|
|
101
|
+
} from "./chunk-OQDVG7K7.js";
|
|
102
102
|
import {
|
|
103
103
|
CANONRY_MCP_TIERS,
|
|
104
104
|
CANONRY_MCP_TOOLKIT_NAMES
|
|
105
105
|
} from "./chunk-NCIPNVD6.js";
|
|
106
106
|
import {
|
|
107
107
|
ApiClient
|
|
108
|
-
} from "./chunk-
|
|
108
|
+
} from "./chunk-XRQCRDTF.js";
|
|
109
109
|
import {
|
|
110
110
|
AGENT_PROVIDERS,
|
|
111
111
|
adapterSupportsBatch,
|
|
@@ -136,21 +136,21 @@ import {
|
|
|
136
136
|
saveConfigPatch,
|
|
137
137
|
sentimentInstallReadiness,
|
|
138
138
|
updateSharedProviderExecutionGate
|
|
139
|
-
} from "./chunk-
|
|
139
|
+
} from "./chunk-HF4ARGGH.js";
|
|
140
140
|
import {
|
|
141
141
|
getBundledSkillSnapshots
|
|
142
|
-
} from "./chunk-
|
|
142
|
+
} from "./chunk-TD623G6F.js";
|
|
143
143
|
import {
|
|
144
144
|
computeFactorAverages,
|
|
145
145
|
deleteSiteCrawlGraphLayout,
|
|
146
146
|
persistSiteCrawlGraphLayout,
|
|
147
147
|
prepareSiteCrawlGraphLayout,
|
|
148
148
|
recordedSharePct
|
|
149
|
-
} from "./chunk-
|
|
149
|
+
} from "./chunk-D7DOTPNP.js";
|
|
150
150
|
import {
|
|
151
151
|
CanonryMcpToolNames,
|
|
152
152
|
canonryMcpTools
|
|
153
|
-
} from "./chunk-
|
|
153
|
+
} from "./chunk-GDVMHIY4.js";
|
|
154
154
|
import {
|
|
155
155
|
PACKAGE_VERSION
|
|
156
156
|
} from "./chunk-AOJU5LKX.js";
|
|
@@ -162,11 +162,11 @@ import {
|
|
|
162
162
|
addLogListener,
|
|
163
163
|
createFastifyLogger,
|
|
164
164
|
createLogger
|
|
165
|
-
} from "./chunk-
|
|
165
|
+
} from "./chunk-BOIZ6IET.js";
|
|
166
166
|
import {
|
|
167
167
|
computeCitedCompetitorDomains,
|
|
168
168
|
determineCitationState
|
|
169
|
-
} from "./chunk-
|
|
169
|
+
} from "./chunk-OTOVHA7D.js";
|
|
170
170
|
import {
|
|
171
171
|
BingApiError,
|
|
172
172
|
CC_CACHE_DIR,
|
|
@@ -285,7 +285,7 @@ import {
|
|
|
285
285
|
webhookResponseReason,
|
|
286
286
|
webhookTargetRefusalReason,
|
|
287
287
|
writeAuditLog
|
|
288
|
-
} from "./chunk-
|
|
288
|
+
} from "./chunk-O5WQN3GW.js";
|
|
289
289
|
import {
|
|
290
290
|
OperationalLogStore,
|
|
291
291
|
SentimentIdempotencyConflict,
|
|
@@ -371,7 +371,7 @@ import {
|
|
|
371
371
|
siteLivenessState,
|
|
372
372
|
trafficSources,
|
|
373
373
|
usageCounters
|
|
374
|
-
} from "./chunk-
|
|
374
|
+
} from "./chunk-ST7JA3UW.js";
|
|
375
375
|
import {
|
|
376
376
|
AGENT_MEMORY_VALUE_MAX_BYTES,
|
|
377
377
|
AI_ENGINE_DOMAINS,
|
|
@@ -616,7 +616,7 @@ import {
|
|
|
616
616
|
winnabilityClassLabel,
|
|
617
617
|
withRetry,
|
|
618
618
|
withSkippedProviders
|
|
619
|
-
} from "./chunk-
|
|
619
|
+
} from "./chunk-V3XAJCO3.js";
|
|
620
620
|
|
|
621
621
|
// src/google-marketing-runtime.ts
|
|
622
622
|
import crypto2 from "crypto";
|
|
@@ -5657,7 +5657,7 @@ function nonBlank(value) {
|
|
|
5657
5657
|
return trimmed ? trimmed : void 0;
|
|
5658
5658
|
}
|
|
5659
5659
|
function resolveBuildCommit(env = process.env) {
|
|
5660
|
-
const embedded = true ? "
|
|
5660
|
+
const embedded = true ? "3886e8422690ca49ad59926c7cbdb958646e4f6f" : void 0;
|
|
5661
5661
|
return nonBlank(embedded) ?? nonBlank(env.CANONRY_COMMIT);
|
|
5662
5662
|
}
|
|
5663
5663
|
function resolveInstanceIdentity(env = process.env) {
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
trackIntegrationConnection
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-UQVOB3OH.js";
|
|
4
4
|
import {
|
|
5
5
|
cliRuntimeContext
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-TQLXCGRD.js";
|
|
7
7
|
|
|
8
8
|
// src/cli-connection-telemetry.ts
|
|
9
9
|
function trackCliConnection(properties) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
loadConfig
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-HF4ARGGH.js";
|
|
4
4
|
import {
|
|
5
5
|
PACKAGE_VERSION
|
|
6
6
|
} from "./chunk-AOJU5LKX.js";
|
|
@@ -36,7 +36,7 @@ import {
|
|
|
36
36
|
sentimentSettingsReadSchema,
|
|
37
37
|
sentimentSummaryReadSchema,
|
|
38
38
|
upgradeCommandFor
|
|
39
|
-
} from "./chunk-
|
|
39
|
+
} from "./chunk-V3XAJCO3.js";
|
|
40
40
|
|
|
41
41
|
// ../api-client-generated/src/generated/core/bodySerializer.gen.ts
|
|
42
42
|
var jsonBodySerializer = {
|
|
@@ -4677,12 +4677,13 @@ var ApiClient = class {
|
|
|
4677
4677
|
);
|
|
4678
4678
|
}
|
|
4679
4679
|
// ── Analytics ───────────────────────────────────────────────────────────
|
|
4680
|
-
|
|
4680
|
+
/** `queryClass` reads branded or non-brand answers only; omitted pools both (server default). */
|
|
4681
|
+
async getAnalyticsMetrics(project, window, queryClass) {
|
|
4681
4682
|
return this.invoke(
|
|
4682
4683
|
() => getApiV1ProjectsByNameAnalyticsMetrics({
|
|
4683
4684
|
client: this.heyClient,
|
|
4684
4685
|
path: { name: project },
|
|
4685
|
-
query: { window }
|
|
4686
|
+
query: { window, queryClass }
|
|
4686
4687
|
})
|
|
4687
4688
|
);
|
|
4688
4689
|
}
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import {
|
|
2
2
|
runWithUsageTags
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-XRQCRDTF.js";
|
|
4
4
|
import {
|
|
5
5
|
CanonryMcpToolNames,
|
|
6
6
|
canonryMcpTools
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-GDVMHIY4.js";
|
|
8
8
|
import {
|
|
9
9
|
CliError
|
|
10
10
|
} from "./chunk-HGMYEDAQ.js";
|
|
11
11
|
import {
|
|
12
12
|
buildOpenApiDocument
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-O5WQN3GW.js";
|
|
14
14
|
import {
|
|
15
15
|
DEFAULT_COMPETITOR_AUTO_ALIAS_MODE,
|
|
16
16
|
MeasurementPortfolioLists,
|
|
@@ -20,7 +20,7 @@ import {
|
|
|
20
20
|
formatPercent,
|
|
21
21
|
ratioUnitSchema,
|
|
22
22
|
truncateUtf16
|
|
23
|
-
} from "./chunk-
|
|
23
|
+
} from "./chunk-V3XAJCO3.js";
|
|
24
24
|
|
|
25
25
|
// src/agent/tools.ts
|
|
26
26
|
import { Type as Type2 } from "@earendil-works/pi-ai";
|