@canonry/canonry 7.99.0 → 7.100.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/README.md +18 -16
- package/assets/agent-workspace/AGENTS.md +13 -6
- package/assets/agent-workspace/skills/aero/SKILL.md +45 -26
- package/assets/agent-workspace/skills/aero/references/agent-operations.md +47 -12
- package/assets/agent-workspace/skills/aero/references/memory-patterns.md +1 -1
- package/assets/agent-workspace/skills/aero/references/orchestration.md +9 -9
- package/assets/agent-workspace/skills/aero/references/reporting.md +8 -4
- package/assets/agent-workspace/skills/aero/references/seo-analysis.md +2 -2
- package/assets/agent-workspace/skills/aero/references/site-health.md +23 -22
- package/assets/agent-workspace/skills/aero/soul.md +2 -2
- package/assets/agent-workspace/skills/canonry/SKILL.md +37 -7
- package/assets/agent-workspace/skills/canonry/references/aeo-analysis.md +14 -11
- package/assets/agent-workspace/skills/canonry/references/canonry-cli.md +122 -53
- package/assets/assets/AccessControls-DzO5Y8v9.js +2 -0
- package/assets/assets/AgentSetupPage-DWWovaCw.js +36 -0
- package/assets/assets/AuditHistoryPanel-BG-n1i8c.js +1 -0
- package/assets/assets/BacklinksPage-D6wdOMXt.js +1 -0
- package/assets/assets/ChartPrimitives-CtKdkn64.js +3 -0
- package/assets/assets/Hint-3TTi0MgX.js +1 -0
- package/assets/assets/{HistoryPage-DNE76LNh.js → HistoryPage-B_ReWHbL.js} +1 -1
- package/assets/assets/InfoTooltip-D29JcNMW.js +1 -0
- package/assets/assets/MeasurementPropertyPage-zdyLL-kl.js +4 -0
- package/assets/assets/ProjectPage-KZNKXR4w.js +15 -0
- package/assets/assets/RunsPage-DxN0xXQh.js +1 -0
- package/assets/assets/ServerTrafficSection-CvISj5pf.js +40 -0
- package/assets/assets/SettingsPage-CpRpBlMV.js +1 -0
- package/assets/assets/ToneBadge-DcwPruHr.js +60 -0
- package/assets/assets/TrafficPage-zk6zMZyz.js +1 -0
- package/assets/assets/TrafficSourceDetailPage-DJtsI06Z.js +1 -0
- package/assets/assets/{account-context-j3asaevn.js → account-context-CoJVqEXZ.js} +1 -1
- package/assets/assets/{agent-trust-copy--U_DFYQE.js → agent-trust-copy-BIXDMtBm.js} +1 -1
- package/assets/assets/{card-CQAQ-c3g.js → card-Dwmc7Srx.js} +1 -1
- package/assets/assets/index-fh1T5JQY.css +1 -0
- package/assets/assets/index-mqc2mWUR.js +42 -0
- package/assets/assets/query-client-Tg1fZu4i.js +1 -0
- package/assets/assets/react-query-BqcEEfEO.js +1 -0
- package/assets/assets/{react-sigma_core.esm.min-BAq_-iP1.js → react-sigma_core.esm.min-D1q0DR_j.js} +3 -3
- package/assets/assets/{server-traffic-jKXLZyeC.js → server-traffic-Djnh_9f0.js} +1 -1
- package/assets/assets/service-BQjBdN4O.js +1 -0
- package/assets/assets/use-tooltip-position-BOzm-6Wy.js +1 -0
- package/assets/assets/vendor-lucide-iE5MEh2-.js +1 -0
- package/assets/assets/{vendor-markdown-BDQ1GKGP.js → vendor-markdown-BBGbNklj.js} +1 -1
- package/assets/assets/{vendor-radix-BGYlvS2l.js → vendor-radix-DKCt5Z_h.js} +1 -1
- package/assets/assets/{vendor-recharts-DhEHcK3G.js → vendor-recharts-D3MLFU3q.js} +1 -1
- package/assets/assets/{vendor-tanstack-BNuZ37rE.js → vendor-tanstack-B90HW50P.js} +2 -2
- package/assets/index.html +16 -15
- package/dist/{ads-EYDUTG4U.js → ads-FVPZ6R6Z.js} +3 -3
- package/dist/{agent-KTK2IDB3.js → agent-2LPU2E5I.js} +7 -7
- package/dist/{agent-ask-KPZOH6RY.js → agent-ask-5ODREK6D.js} +3 -3
- package/dist/{agent-conversations-BCWA4JJL.js → agent-conversations-SNLOOJEM.js} +3 -3
- package/dist/{agent-journeys-UBVLQ7JV.js → agent-journeys-XDXVL6PK.js} +3 -3
- package/dist/{agent-memory-24SYEGEX.js → agent-memory-NKAI2S3U.js} +3 -3
- package/dist/{agent-providers-E7EWFE5P.js → agent-providers-R5L7A72X.js} +3 -3
- package/dist/{agent-transcript-QGJ45NW5.js → agent-transcript-C5WAGYVC.js} +3 -3
- package/dist/{analytics-GHVG5CCT.js → analytics-EJVOLIQL.js} +33 -13
- package/dist/{apply-7YLB2DPH.js → apply-I6JOM247.js} +3 -3
- package/dist/{backfill-WNQ6O5WP.js → backfill-UVUR36IB.js} +10 -10
- package/dist/{backlinks-ZBZR4D27.js → backlinks-3VMVACWN.js} +3 -3
- package/dist/{bing-4VBSKPSX.js → bing-R5RL3PW2.js} +3 -3
- package/dist/{bootstrap-7ESCLP2G.js → bootstrap-GMMSDTNO.js} +12 -12
- package/dist/{cdp-WBL6FZTL.js → cdp-FJKUXHEY.js} +7 -7
- package/dist/{chunk-L53ZSQN5.js → chunk-2DV7F6XA.js} +91 -2
- package/dist/{chunk-MTW37GXF.js → chunk-2FWYWGIR.js} +2 -2
- package/dist/{chunk-DMPSA7ZS.js → chunk-56VVRWJM.js} +14 -5
- package/dist/{chunk-YACKJGY4.js → chunk-7BEGCVVB.js} +1 -1
- package/dist/{chunk-YMHN4UIT.js → chunk-7BH53MOB.js} +27 -2
- package/dist/{chunk-XPIMVXAI.js → chunk-7J2RIIYU.js} +1366 -1033
- package/dist/{chunk-UY6SKAKW.js → chunk-7SNMIXEQ.js} +2 -2
- package/dist/{chunk-C55P75G4.js → chunk-AMGM55CP.js} +2 -2
- package/dist/{chunk-ZN2TEBBX.js → chunk-AYKTVQF7.js} +13 -5
- package/dist/{chunk-74V5EPZH.js → chunk-BKDRT4VS.js} +7 -7
- package/dist/{chunk-O6RXNSNW.js → chunk-COHSL6KW.js} +1 -1
- package/dist/{chunk-3WDQ5GPO.js → chunk-DGDLLRS4.js} +1 -1
- package/dist/{chunk-VADVPARO.js → chunk-DHIB7EIA.js} +4 -4
- package/dist/{chunk-3MFYM2IS.js → chunk-EE3QTCLS.js} +18 -6
- package/dist/{chunk-DLOWRO5R.js → chunk-F46TBLXK.js} +204 -94
- package/dist/{chunk-P764TJKQ.js → chunk-FBO25TA3.js} +1 -1
- package/dist/{chunk-SY3CWJR4.js → chunk-FZ3MUTU3.js} +2 -2
- package/dist/{chunk-WA6APXI6.js → chunk-G6QN4VFS.js} +16 -10
- package/dist/{chunk-YBWATBX4.js → chunk-HBHLYWKE.js} +9 -6
- package/dist/{chunk-5ZOM5BJS.js → chunk-HL2LGRTI.js} +8 -6
- package/dist/chunk-J6536OL6.js +31 -0
- package/dist/{chunk-3MKJ4LP6.js → chunk-KVRX7YIH.js} +20 -10
- package/dist/{chunk-3VPBRGPN.js → chunk-LJO2BKWU.js} +1 -1
- package/dist/{chunk-YEUULP44.js → chunk-LNVFERI4.js} +1 -1
- package/dist/{chunk-WXAF7AMC.js → chunk-NQYJHKML.js} +39 -7
- package/dist/{chunk-UPHHKO3L.js → chunk-O5UFAXUI.js} +646 -588
- package/dist/{chunk-XQP3XHLJ.js → chunk-O6APBEJE.js} +2 -2
- package/dist/{chunk-47X24IJG.js → chunk-O7S7OHLE.js} +9393 -8394
- package/dist/{chunk-2RW5D55K.js → chunk-QS5DWJDI.js} +2 -2
- package/dist/{chunk-TVBOK4P2.js → chunk-RBG2QXQM.js} +4 -4
- package/dist/{chunk-LM7HTNUO.js → chunk-SWZXHHAG.js} +16 -8
- package/dist/{chunk-AY7SDX6G.js → chunk-T7UDY7W3.js} +26 -11
- package/dist/{chunk-AJD252SX.js → chunk-UGO2FO6V.js} +119 -55
- package/dist/{chunk-PT5HNVCM.js → chunk-VHULVUDL.js} +1 -1
- package/dist/{chunk-ZGBLNKFN.js → chunk-YGAQQSCL.js} +56303 -54933
- package/dist/{chunk-RRXLJPBN.js → chunk-YIIRS7V7.js} +98 -65
- package/dist/{chunk-VOVT2H25.js → chunk-YU2WX7RD.js} +3 -3
- package/dist/{citations-N5MGNKJN.js → citations-LOEQRDUB.js} +21 -10
- package/dist/{cli-catalog-FFU7PHW7.js → cli-catalog-5RXNUFBS.js} +3 -3
- package/dist/{cli-commands-AMIDEUO2.js → cli-commands-HE2BQY3Y.js} +7 -7
- package/dist/cli.js +22 -17
- package/dist/{competitor-GRA2GMZR.js → competitor-PIX2BHJW.js} +3 -3
- package/dist/{content-YVAPTIV4.js → content-PJGW4WZF.js} +3 -3
- package/dist/{dashboard-33ACBR5A.js → dashboard-7OKBD4MG.js} +6 -6
- package/dist/{demo-AGXWBMR6.js → demo-SCOFAWFM.js} +1 -1
- package/dist/{demo-server-W4YAC7GT.js → demo-server-SJPI6RSL.js} +38 -36
- package/dist/{discover-BH33TO4Z.js → discover-I3WL2QUN.js} +10 -8
- package/dist/{discover-eval-3CEA6DEE.js → discover-eval-YRECOIP5.js} +3 -3
- package/dist/{doctor-ZAYTD5PC.js → doctor-F4J6LILX.js} +3 -3
- package/dist/{evidence-247GL7UK.js → evidence-MYQTCY4V.js} +25 -10
- package/dist/{export-cmd-HLKWFI5Q.js → export-cmd-3SUFOJM6.js} +3 -3
- package/dist/{ga-BMING57Z.js → ga-VA6FYK4L.js} +3 -3
- package/dist/{gbp-MIB5CXSD.js → gbp-DI6ZVFHL.js} +3 -3
- package/dist/{google-5JP6RYAW.js → google-UVKWJCD2.js} +4 -4
- package/dist/{google-marketing-25OBMPS6.js → google-marketing-S63HN733.js} +1 -1
- package/dist/{health-cmd-D5XSEL7H.js → health-cmd-DOZXGI46.js} +16 -9
- package/dist/{history-6MDRFPQ3.js → history-UTJTUDYK.js} +3 -3
- package/dist/index.d.ts +211 -19
- package/dist/index.js +26 -26
- package/dist/{init-RDR75N2Y.js → init-IVJSS33J.js} +19 -19
- package/dist/{insights-QZVMBGVM.js → insights-UHCVCZ76.js} +3 -3
- package/dist/intelligence-service-3EENJ5DS.js +16 -0
- package/dist/{journeys-TABTZDFZ.js → journeys-XIT7WDM2.js} +3 -3
- package/dist/{keys-SL5YF7NQ.js → keys-MQKW4JUI.js} +3 -3
- package/dist/{keyword-OCDEXRSW.js → keyword-EASMKYZ3.js} +3 -3
- package/dist/{logs-CSC7O364.js → logs-ZHZ6XM55.js} +3 -3
- package/dist/{mcp-P725OHAJ.js → mcp-ECVT2YGU.js} +4 -4
- package/dist/mcp.js +10 -10
- package/dist/{measurement-plan-Z42GBJBO.js → measurement-plan-7FQKUOMR.js} +5 -5
- package/dist/{notify-E5JBES4I.js → notify-TC7ARC6W.js} +3 -3
- package/dist/{organic-evidence-CUA3T64O.js → organic-evidence-M34MWJXE.js} +7 -4
- package/dist/overview-P6BRMXJN.js +314 -0
- package/dist/{project-2ULM64TV.js → project-WZ2YXFPJ.js} +4 -4
- package/dist/project-setup-WV6SPGIV.js +176 -0
- package/dist/{query-Y47IEFKJ.js → query-WAFJKDHG.js} +3 -3
- package/dist/{research-DPFQZ3TE.js → research-B5ZPQX7R.js} +3 -3
- package/dist/{results-export-KBHOBQAH.js → results-export-NIZV6R3K.js} +3 -3
- package/dist/{run-4CYHVIIU.js → run-ICLPZ7QT.js} +7 -4
- package/dist/{schedule-GY4P3RON.js → schedule-4C44LQ7R.js} +22 -3
- package/dist/{search-AGVNZMJQ.js → search-UJM7KII3.js} +11 -4
- package/dist/{serve-5LFKIXNL.js → serve-A6UIO6WP.js} +30 -29
- package/dist/{session-YAYEDM3P.js → session-RTE22GQT.js} +14 -14
- package/dist/settings-BOF5Z7ML.js +211 -0
- package/dist/{sitemaps-APTY7U6H.js → sitemaps-BM7S76H2.js} +4 -4
- package/dist/{skills-4BUONEIZ.js → skills-X5SR4HRO.js} +2 -2
- package/dist/{snapshot-BXCWSF5P.js → snapshot-KLKE37VY.js} +4 -4
- package/dist/{src-R7XZUX3D.js → src-EKLG5A6O.js} +4 -2
- package/dist/{status-SB6HPBYJ.js → status-OYG57DWU.js} +6 -5
- package/dist/{technical-aeo-G7UEMWZD.js → technical-aeo-KWVWOOTI.js} +23 -23
- package/dist/{telemetry-H4S4Y7YV.js → telemetry-KGE6FF3Y.js} +4 -4
- package/dist/{tools-46XX6I4R.js → tools-4R33AZQ3.js} +11 -11
- package/dist/{traffic-I6WRJN3W.js → traffic-SVMOKCSS.js} +7 -11
- package/dist/{trends-AQK3GLWF.js → trends-RGAKGX3L.js} +4 -4
- package/dist/{users-SNTVY6OB.js → users-47WKA2TO.js} +3 -3
- package/dist/{visibility-stats-44QAD2XS.js → visibility-stats-DTGQJPNV.js} +9 -5
- package/dist/{wordpress-N7LTOW46.js → wordpress-2CNUX4UE.js} +3 -3
- package/package.json +1 -1
- package/assets/assets/AgentSetupPage-yOqSVJ-e.js +0 -18
- package/assets/assets/AuditHistoryPanel-CiTzFgbw.js +0 -1
- package/assets/assets/BacklinksPage-DmRdQsFQ.js +0 -1
- package/assets/assets/ChartPrimitives-CvK6CQrj.js +0 -1
- package/assets/assets/Hint-c4a4W87X.js +0 -1
- package/assets/assets/InfoTooltip-Drnst4ML.js +0 -1
- package/assets/assets/MeasurementPropertyPage-Cx64Fnmz.js +0 -4
- package/assets/assets/ProjectPage-DNfgC82V.js +0 -11
- package/assets/assets/RunsPage-BmPKBKKr.js +0 -1
- package/assets/assets/SettingsPage-Dl0TNeVK.js +0 -1
- package/assets/assets/SiteHealthSection-DxQPaR--.js +0 -2
- package/assets/assets/ToneBadge-BhjTBHi-.js +0 -60
- package/assets/assets/TrafficPage-CJp0pS01.js +0 -40
- package/assets/assets/TrafficSourceDetailPage-DKE8tSw5.js +0 -1
- package/assets/assets/format-helpers-BPugHeIX.js +0 -3
- package/assets/assets/index-BAxHW-1G.css +0 -1
- package/assets/assets/index-xlDLvgRC.js +0 -60
- package/assets/assets/query-client-CwZpfiiD.js +0 -1
- package/assets/assets/react-query-CBpNFR4t.js +0 -1
- package/assets/assets/service-DFumlmXt.js +0 -1
- package/assets/assets/vendor-lucide-DuOM7wVi.js +0 -1
- package/dist/intelligence-service-KQE7RO5I.js +0 -16
- package/dist/overview-UKQ52I72.js +0 -213
- package/dist/settings-HUKMWRHY.js +0 -119
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
import {
|
|
2
|
+
createApiClient
|
|
3
|
+
} from "./chunk-UGO2FO6V.js";
|
|
4
|
+
import "./chunk-EE3QTCLS.js";
|
|
5
|
+
import "./chunk-AOJU5LKX.js";
|
|
6
|
+
import {
|
|
7
|
+
isMachineFormat
|
|
8
|
+
} from "./chunk-HGMYEDAQ.js";
|
|
9
|
+
import {
|
|
10
|
+
AiVisibilitySetupBlockers,
|
|
11
|
+
ProjectSetupNextActions,
|
|
12
|
+
SITE_AUDIT_ONBOARDING_PAGE_LIMIT,
|
|
13
|
+
SetupTrackStates,
|
|
14
|
+
defaultProviderDisplayName,
|
|
15
|
+
providerConnectionName,
|
|
16
|
+
providerFailureRemedy,
|
|
17
|
+
shellQuote,
|
|
18
|
+
siteAuditRunPhaseSchema
|
|
19
|
+
} from "./chunk-O7S7OHLE.js";
|
|
20
|
+
import "./chunk-MLKGABMK.js";
|
|
21
|
+
|
|
22
|
+
// src/commands/project-setup.ts
|
|
23
|
+
var TRACK_STATE_LABELS = {
|
|
24
|
+
[SetupTrackStates.not_started]: "Not started",
|
|
25
|
+
[SetupTrackStates.queued]: "Queued",
|
|
26
|
+
[SetupTrackStates.running]: "Running",
|
|
27
|
+
[SetupTrackStates.completed]: "Complete",
|
|
28
|
+
[SetupTrackStates.partial]: "Partial results",
|
|
29
|
+
[SetupTrackStates.failed]: "Failed",
|
|
30
|
+
[SetupTrackStates.cancelled]: "Cancelled"
|
|
31
|
+
};
|
|
32
|
+
var TRACK_NAME_WIDTH = "Agent Readiness".length + 3;
|
|
33
|
+
async function showProjectSetup(name, format) {
|
|
34
|
+
const setup = await createApiClient().getProjectSetup(name);
|
|
35
|
+
if (isMachineFormat(format)) {
|
|
36
|
+
console.log(JSON.stringify(setup, null, 2));
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
for (const line of projectSetupLines(setup)) console.log(line);
|
|
40
|
+
}
|
|
41
|
+
function projectSetupLines(setup) {
|
|
42
|
+
const { agentReadiness, aiVisibility } = setup.tracks;
|
|
43
|
+
const brand = setup.project.displayName ?? setup.project.name;
|
|
44
|
+
const rows = [
|
|
45
|
+
{ name: "Agent Readiness", state: agentReadiness.state, lines: agentReadinessLines(agentReadiness) },
|
|
46
|
+
{ name: "AI Visibility", state: aiVisibility.state, lines: aiVisibilityLines(aiVisibility) }
|
|
47
|
+
];
|
|
48
|
+
const badgeWidth = Math.max(...rows.map((row) => TRACK_STATE_LABELS[row.state].length)) + 3;
|
|
49
|
+
const continuation = " ".repeat(2 + TRACK_NAME_WIDTH + badgeWidth);
|
|
50
|
+
return [
|
|
51
|
+
`${brand} (${setup.project.canonicalDomain})${setup.complete ? " \xB7 setup complete" : ""}`,
|
|
52
|
+
...rows.flatMap((row) => row.lines.map((line, index) => index === 0 ? ` ${row.name.padEnd(TRACK_NAME_WIDTH)}${TRACK_STATE_LABELS[row.state].padEnd(badgeWidth)}${line}` : `${continuation}${line}`)),
|
|
53
|
+
`Next: ${nextStep(setup)}`
|
|
54
|
+
];
|
|
55
|
+
}
|
|
56
|
+
function agentReadinessLines(track) {
|
|
57
|
+
switch (track.state) {
|
|
58
|
+
case SetupTrackStates.not_started:
|
|
59
|
+
return [`Reads up to ${SITE_AUDIT_ONBOARDING_PAGE_LIMIT} public pages. No AI engine needed.`];
|
|
60
|
+
case SetupTrackStates.queued:
|
|
61
|
+
return ["Waiting to start"];
|
|
62
|
+
case SetupTrackStates.running: {
|
|
63
|
+
const progress = track.progress;
|
|
64
|
+
if (progress?.phase === siteAuditRunPhaseSchema.enum.checking) {
|
|
65
|
+
return [`Checking pages \xB7 ${progress.pagesChecked}${progress.pageLimit === null ? "" : ` of up to ${progress.pageLimit}`}`];
|
|
66
|
+
}
|
|
67
|
+
return [`Finding pages${progress?.pagesFound == null ? "" : ` \xB7 ${progress.pagesFound} found`}`];
|
|
68
|
+
}
|
|
69
|
+
case SetupTrackStates.completed:
|
|
70
|
+
case SetupTrackStates.partial:
|
|
71
|
+
return [track.result?.score == null ? "No page was scored." : `Score ${track.result.score}/100 \xB7 ${track.result.pagesScored} ${track.result.pagesScored === 1 ? "page" : "pages"} scored`];
|
|
72
|
+
case SetupTrackStates.failed:
|
|
73
|
+
return [`The scan did not finish.${track.error ? ` ${track.error}` : ""}`];
|
|
74
|
+
case SetupTrackStates.cancelled:
|
|
75
|
+
return ["The scan was cancelled."];
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
function blockerLine(blocker) {
|
|
79
|
+
switch (blocker) {
|
|
80
|
+
case AiVisibilitySetupBlockers.no_engine:
|
|
81
|
+
return "Needs an AI engine.";
|
|
82
|
+
case AiVisibilitySetupBlockers.no_queries:
|
|
83
|
+
return "Add queries to check.";
|
|
84
|
+
case AiVisibilitySetupBlockers.plan_unpublished:
|
|
85
|
+
return "Publish the Advanced Measurement plan before the first check.";
|
|
86
|
+
case AiVisibilitySetupBlockers.engines_failing:
|
|
87
|
+
return "Every AI engine it would ask keeps failing on its account.";
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
function trackedQueriesLine(queries) {
|
|
91
|
+
const classes = [`${queries.nonBrand} non-brand`, `${queries.branded} branded`];
|
|
92
|
+
if (queries.unclassified > 0) classes.push(`${queries.unclassified} without a class`);
|
|
93
|
+
return `${queries.total} ${queries.total === 1 ? "query" : "queries"} tracked: ${classes.join(", ")}`;
|
|
94
|
+
}
|
|
95
|
+
function signalCounts(counts) {
|
|
96
|
+
if (counts.totalQueries === 0) return "none in this check";
|
|
97
|
+
const citedTotal = counts.totalQueries - (counts.citationNotMeasuredQueries ?? 0);
|
|
98
|
+
const cited = citedTotal === 0 ? "citations not measured" : `cited in ${counts.citedQueries} of ${citedTotal}`;
|
|
99
|
+
return `mentioned in ${counts.mentionedQueries} of ${counts.totalQueries}, ${cited}`;
|
|
100
|
+
}
|
|
101
|
+
function resultLines(result, isBaseline) {
|
|
102
|
+
const lines = [`${isBaseline ? "Baseline" : "Latest check"} \xB7 ${result.answers} ${result.answers === 1 ? "answer" : "answers"} from ${result.engines} ${result.engines === 1 ? "engine" : "engines"}`];
|
|
103
|
+
if (result.queryCountsByClass) {
|
|
104
|
+
lines.push(`Non-brand queries: ${signalCounts(result.queryCountsByClass.nonBrand)}`);
|
|
105
|
+
lines.push(`Branded queries: ${signalCounts(result.queryCountsByClass.branded)}`);
|
|
106
|
+
if (result.queryCountsByClass.unclassifiedQueries > 0) {
|
|
107
|
+
const unclassified = result.queryCountsByClass.unclassifiedQueries;
|
|
108
|
+
lines.push(`${unclassified} ${unclassified === 1 ? "query" : "queries"} without a class, counted in neither`);
|
|
109
|
+
}
|
|
110
|
+
} else if (result.queryCounts) {
|
|
111
|
+
lines.push(`All queries, pooled (no query has a class): ${signalCounts(result.queryCounts)}`);
|
|
112
|
+
}
|
|
113
|
+
return lines;
|
|
114
|
+
}
|
|
115
|
+
function failureLines(track) {
|
|
116
|
+
return Object.entries(track.providerFailures ?? {}).map(([engine, failure]) => `${engine}: ${failure.failedQueries} ${failure.failedQueries === 1 ? "query" : "queries"} failed${failure.stopped ? ", so this check stopped asking it" : ""}. ${failure.message}`);
|
|
117
|
+
}
|
|
118
|
+
function aiVisibilityLines(track) {
|
|
119
|
+
switch (track.state) {
|
|
120
|
+
case SetupTrackStates.not_started:
|
|
121
|
+
if (track.blockedBy) return [blockerLine(track.blockedBy)];
|
|
122
|
+
return [track.engines.length > 0 ? `Ready to ask ${track.engines.join(", ")}` : "Ready to check", trackedQueriesLine(track.queries)];
|
|
123
|
+
case SetupTrackStates.queued:
|
|
124
|
+
return ["Waiting to start", ...failureLines(track)];
|
|
125
|
+
case SetupTrackStates.running: {
|
|
126
|
+
const saved = track.progress?.answersSaved ?? 0;
|
|
127
|
+
const planned = track.progress?.answersPlanned ?? null;
|
|
128
|
+
const engines = track.engines.length > 0 ? `Asking ${track.engines.join(", ")}` : "Asking engines";
|
|
129
|
+
return [
|
|
130
|
+
planned === null ? `${engines} \xB7 ${saved} ${saved === 1 ? "answer" : "answers"} saved` : `${engines} \xB7 ${saved} of ${planned} ${planned === 1 ? "answer" : "answers"} saved`,
|
|
131
|
+
...failureLines(track)
|
|
132
|
+
];
|
|
133
|
+
}
|
|
134
|
+
case SetupTrackStates.completed:
|
|
135
|
+
case SetupTrackStates.partial:
|
|
136
|
+
return track.result ? resultLines(track.result, track.runId !== null && track.runId === track.baselineRunId) : ["Result unavailable"];
|
|
137
|
+
case SetupTrackStates.failed: {
|
|
138
|
+
const engines = track.failedEngines ?? [];
|
|
139
|
+
if (engines.length === 0) return [`The check did not finish.${track.error ? ` ${track.error}` : ""}`];
|
|
140
|
+
return ["The check did not finish.", ...engines.flatMap((engine) => {
|
|
141
|
+
const remedy = providerFailureRemedy(engine.code, defaultProviderDisplayName(providerConnectionName(engine.provider)));
|
|
142
|
+
return [`${engine.provider}: ${engine.message}`, ...remedy ? [remedy] : []];
|
|
143
|
+
})];
|
|
144
|
+
}
|
|
145
|
+
case SetupTrackStates.cancelled:
|
|
146
|
+
return ["The check was cancelled.", ...track.blockedBy ? [blockerLine(track.blockedBy)] : []];
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
function nextStep(setup) {
|
|
150
|
+
const project = shellQuote(setup.project.name);
|
|
151
|
+
const scan = `cnry agent-readiness run ${project} --max-pages ${SITE_AUDIT_ONBOARDING_PAGE_LIMIT}`;
|
|
152
|
+
const aiVisibility = setup.tracks.aiVisibility;
|
|
153
|
+
switch (setup.nextAction) {
|
|
154
|
+
case ProjectSetupNextActions.run_agent_readiness:
|
|
155
|
+
return `run the Agent Readiness audit scan: ${scan}`;
|
|
156
|
+
case ProjectSetupNextActions.retry_agent_readiness:
|
|
157
|
+
return `run the audit scan again: ${scan}`;
|
|
158
|
+
case ProjectSetupNextActions.connect_engine:
|
|
159
|
+
return "connect an AI engine: cnry settings provider <name> --api-key <key>";
|
|
160
|
+
case ProjectSetupNextActions.add_queries:
|
|
161
|
+
return `add queries: cnry query add ${project} "<query>"`;
|
|
162
|
+
case ProjectSetupNextActions.publish_plan:
|
|
163
|
+
return `publish the Advanced Measurement draft: cnry measurement-plan advanced ${project} draft-action <json>, with action "publish"`;
|
|
164
|
+
case ProjectSetupNextActions.run_ai_visibility:
|
|
165
|
+
return `run the AI Visibility check (cnry run preview ${project} shows what it will ask): cnry run ${project}`;
|
|
166
|
+
case ProjectSetupNextActions.repair_ai_visibility:
|
|
167
|
+
return aiVisibility.state === SetupTrackStates.failed && aiVisibility.runId ? `see why the check failed, then fix the engine: cnry run show ${shellQuote(aiVisibility.runId)}` : "fix the failing engine's key, access or billing, then save it: cnry settings provider <name> --api-key <key>";
|
|
168
|
+
case ProjectSetupNextActions.wait:
|
|
169
|
+
return `wait for the work in progress, then check again: cnry project setup ${project}`;
|
|
170
|
+
case ProjectSetupNextActions.open_project:
|
|
171
|
+
return `read the results: cnry overview ${project}`;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
export {
|
|
175
|
+
showProjectSetup
|
|
176
|
+
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
createApiClient
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import "./chunk-
|
|
3
|
+
} from "./chunk-UGO2FO6V.js";
|
|
4
|
+
import "./chunk-EE3QTCLS.js";
|
|
5
5
|
import {
|
|
6
6
|
emitJsonl
|
|
7
7
|
} from "./chunk-Z7IUAJOF.js";
|
|
@@ -12,7 +12,7 @@ import {
|
|
|
12
12
|
} from "./chunk-HGMYEDAQ.js";
|
|
13
13
|
import {
|
|
14
14
|
reportedQueryClasses
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-O7S7OHLE.js";
|
|
16
16
|
import "./chunk-MLKGABMK.js";
|
|
17
17
|
|
|
18
18
|
// src/commands/query.ts
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
createApiClient
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import "./chunk-
|
|
3
|
+
} from "./chunk-UGO2FO6V.js";
|
|
4
|
+
import "./chunk-EE3QTCLS.js";
|
|
5
5
|
import {
|
|
6
6
|
emitJsonl
|
|
7
7
|
} from "./chunk-Z7IUAJOF.js";
|
|
@@ -18,7 +18,7 @@ import {
|
|
|
18
18
|
answerCompletionLabel,
|
|
19
19
|
answerCostBasisLabel,
|
|
20
20
|
researchBatchCreateSchema
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-O7S7OHLE.js";
|
|
22
22
|
import "./chunk-MLKGABMK.js";
|
|
23
23
|
|
|
24
24
|
// src/commands/research.ts
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
createApiClient
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import "./chunk-
|
|
3
|
+
} from "./chunk-UGO2FO6V.js";
|
|
4
|
+
import "./chunk-EE3QTCLS.js";
|
|
5
5
|
import "./chunk-AOJU5LKX.js";
|
|
6
6
|
import "./chunk-HGMYEDAQ.js";
|
|
7
|
-
import "./chunk-
|
|
7
|
+
import "./chunk-O7S7OHLE.js";
|
|
8
8
|
import "./chunk-MLKGABMK.js";
|
|
9
9
|
|
|
10
10
|
// src/commands/results-export.ts
|
|
@@ -2,6 +2,7 @@ import {
|
|
|
2
2
|
cancelRun,
|
|
3
3
|
fillRun,
|
|
4
4
|
listRuns,
|
|
5
|
+
previewRun,
|
|
5
6
|
printRunDetail,
|
|
6
7
|
providerAccountStreakLine,
|
|
7
8
|
runAdmissionLines,
|
|
@@ -9,18 +10,20 @@ import {
|
|
|
9
10
|
showRunCompleteness,
|
|
10
11
|
triggerRun,
|
|
11
12
|
triggerRunAll
|
|
12
|
-
} from "./chunk-
|
|
13
|
-
import "./chunk-
|
|
14
|
-
import "./chunk-
|
|
13
|
+
} from "./chunk-NQYJHKML.js";
|
|
14
|
+
import "./chunk-J6536OL6.js";
|
|
15
|
+
import "./chunk-UGO2FO6V.js";
|
|
16
|
+
import "./chunk-EE3QTCLS.js";
|
|
15
17
|
import "./chunk-Z7IUAJOF.js";
|
|
16
18
|
import "./chunk-AOJU5LKX.js";
|
|
17
19
|
import "./chunk-HGMYEDAQ.js";
|
|
18
|
-
import "./chunk-
|
|
20
|
+
import "./chunk-O7S7OHLE.js";
|
|
19
21
|
import "./chunk-MLKGABMK.js";
|
|
20
22
|
export {
|
|
21
23
|
cancelRun,
|
|
22
24
|
fillRun,
|
|
23
25
|
listRuns,
|
|
26
|
+
previewRun,
|
|
24
27
|
printRunDetail,
|
|
25
28
|
providerAccountStreakLine,
|
|
26
29
|
runAdmissionLines,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
createApiClient
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import "./chunk-
|
|
3
|
+
} from "./chunk-UGO2FO6V.js";
|
|
4
|
+
import "./chunk-EE3QTCLS.js";
|
|
5
5
|
import {
|
|
6
6
|
emitJsonl
|
|
7
7
|
} from "./chunk-Z7IUAJOF.js";
|
|
@@ -10,10 +10,28 @@ import {
|
|
|
10
10
|
isMachineFormat,
|
|
11
11
|
usageError
|
|
12
12
|
} from "./chunk-HGMYEDAQ.js";
|
|
13
|
-
import
|
|
13
|
+
import {
|
|
14
|
+
formatZonedTimestamp,
|
|
15
|
+
schedulePreviewRequestSchema
|
|
16
|
+
} from "./chunk-O7S7OHLE.js";
|
|
14
17
|
import "./chunk-MLKGABMK.js";
|
|
15
18
|
|
|
16
19
|
// src/commands/schedule.ts
|
|
20
|
+
async function previewSchedule(project, timing, format) {
|
|
21
|
+
const parsed = schedulePreviewRequestSchema.safeParse(timing);
|
|
22
|
+
if (!parsed.success) throw usageError("Invalid schedule timing", { message: parsed.error.issues.map((issue) => issue.message).join("; ") });
|
|
23
|
+
const preview = await getClient().previewSchedule(project, parsed.data);
|
|
24
|
+
if (format === "jsonl") {
|
|
25
|
+
emitJsonl([preview]);
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
if (format === "json") {
|
|
29
|
+
console.log(JSON.stringify(preview, null, 2));
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
console.log(`Next run: ${preview.nextRunAt ? formatZonedTimestamp(preview.nextRunAt, preview.timezone) : "No future occurrence"}`);
|
|
33
|
+
console.log("Preview only. No schedule was saved or enabled.");
|
|
34
|
+
}
|
|
17
35
|
async function listSchedules(project, format) {
|
|
18
36
|
const schedules = await getClient().listSchedules(project);
|
|
19
37
|
if (format === "jsonl") {
|
|
@@ -185,6 +203,7 @@ export {
|
|
|
185
203
|
enableSchedule,
|
|
186
204
|
formatNextRun,
|
|
187
205
|
listSchedules,
|
|
206
|
+
previewSchedule,
|
|
188
207
|
printSchedule,
|
|
189
208
|
removeSchedule,
|
|
190
209
|
setSchedule,
|
|
@@ -1,15 +1,22 @@
|
|
|
1
1
|
import {
|
|
2
2
|
createApiClient
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import "./chunk-
|
|
3
|
+
} from "./chunk-UGO2FO6V.js";
|
|
4
|
+
import "./chunk-EE3QTCLS.js";
|
|
5
5
|
import "./chunk-AOJU5LKX.js";
|
|
6
6
|
import {
|
|
7
7
|
isMachineFormat
|
|
8
8
|
} from "./chunk-HGMYEDAQ.js";
|
|
9
|
-
import
|
|
9
|
+
import {
|
|
10
|
+
CitationStates
|
|
11
|
+
} from "./chunk-O7S7OHLE.js";
|
|
10
12
|
import "./chunk-MLKGABMK.js";
|
|
11
13
|
|
|
12
14
|
// src/commands/search.ts
|
|
15
|
+
var CITATION_STATE_LABEL = {
|
|
16
|
+
[CitationStates.cited]: "cited",
|
|
17
|
+
[CitationStates["not-cited"]]: "not-cited",
|
|
18
|
+
[CitationStates["not-measured"]]: "citation not measured"
|
|
19
|
+
};
|
|
13
20
|
async function searchProject(project, opts) {
|
|
14
21
|
const client = createApiClient();
|
|
15
22
|
const result = await client.searchProject(project, { q: opts.query, limit: opts.limit });
|
|
@@ -25,7 +32,7 @@ async function searchProject(project, opts) {
|
|
|
25
32
|
}
|
|
26
33
|
for (const hit of result.hits) {
|
|
27
34
|
if (hit.kind === "snapshot") {
|
|
28
|
-
console.log(` [snapshot] ${hit.query} (${hit.provider}, ${hit.citationState}) \u2014 ${hit.matchedField}`);
|
|
35
|
+
console.log(` [snapshot] ${hit.query} (${hit.provider}, ${CITATION_STATE_LABEL[hit.citationState]}) \u2014 ${hit.matchedField}`);
|
|
29
36
|
console.log(` ${hit.snippet}`);
|
|
30
37
|
console.log(` run=${hit.runId} at ${hit.createdAt}`);
|
|
31
38
|
} else {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
backfillAiReferralPaths,
|
|
3
3
|
backfillNormalizedPaths
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-BKDRT4VS.js";
|
|
5
5
|
import {
|
|
6
6
|
operatorHttpUrl
|
|
7
7
|
} from "./chunk-6GO5VVAC.js";
|
|
@@ -9,24 +9,24 @@ import {
|
|
|
9
9
|
allowsKeylessFirstRunSetup,
|
|
10
10
|
createServer,
|
|
11
11
|
waitForServerRuntimeStartup
|
|
12
|
-
} from "./chunk-
|
|
13
|
-
import "./chunk-
|
|
14
|
-
import "./chunk-
|
|
15
|
-
import "./chunk-
|
|
12
|
+
} from "./chunk-7J2RIIYU.js";
|
|
13
|
+
import "./chunk-KVRX7YIH.js";
|
|
14
|
+
import "./chunk-HL2LGRTI.js";
|
|
15
|
+
import "./chunk-56VVRWJM.js";
|
|
16
16
|
import "./chunk-ELCLGWUT.js";
|
|
17
17
|
import "./chunk-XEBKF4N5.js";
|
|
18
|
-
import "./chunk-
|
|
19
|
-
import "./chunk-
|
|
18
|
+
import "./chunk-VHULVUDL.js";
|
|
19
|
+
import "./chunk-YIIRS7V7.js";
|
|
20
20
|
import {
|
|
21
21
|
trackFeatureCompleted
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-DHIB7EIA.js";
|
|
23
23
|
import {
|
|
24
24
|
isLoopbackBindHost,
|
|
25
25
|
resolveServePort
|
|
26
26
|
} from "./chunk-TSENU4GG.js";
|
|
27
27
|
import {
|
|
28
28
|
registeredProviderNames
|
|
29
|
-
} from "./chunk-
|
|
29
|
+
} from "./chunk-COHSL6KW.js";
|
|
30
30
|
import {
|
|
31
31
|
cliRuntimeContext,
|
|
32
32
|
getPrintedUpdateAvailable,
|
|
@@ -34,45 +34,45 @@ import {
|
|
|
34
34
|
isTelemetryEnabled,
|
|
35
35
|
setTelemetrySource,
|
|
36
36
|
trackEvent
|
|
37
|
-
} from "./chunk-
|
|
38
|
-
import "./chunk-
|
|
39
|
-
import "./chunk-
|
|
40
|
-
import "./chunk-
|
|
37
|
+
} from "./chunk-AMGM55CP.js";
|
|
38
|
+
import "./chunk-G6QN4VFS.js";
|
|
39
|
+
import "./chunk-2FWYWGIR.js";
|
|
40
|
+
import "./chunk-UGO2FO6V.js";
|
|
41
41
|
import {
|
|
42
42
|
getConfigDir,
|
|
43
43
|
getConfigPath,
|
|
44
44
|
loadConfig,
|
|
45
45
|
saveConfigPatch
|
|
46
|
-
} from "./chunk-
|
|
46
|
+
} from "./chunk-EE3QTCLS.js";
|
|
47
47
|
import {
|
|
48
48
|
getMissingUserSkillsNudge,
|
|
49
49
|
shouldPrintServeSkillsNudge
|
|
50
|
-
} from "./chunk-
|
|
51
|
-
import "./chunk-
|
|
52
|
-
import "./chunk-
|
|
53
|
-
import "./chunk-
|
|
54
|
-
import "./chunk-
|
|
50
|
+
} from "./chunk-FBO25TA3.js";
|
|
51
|
+
import "./chunk-FZ3MUTU3.js";
|
|
52
|
+
import "./chunk-F46TBLXK.js";
|
|
53
|
+
import "./chunk-DGDLLRS4.js";
|
|
54
|
+
import "./chunk-7BEGCVVB.js";
|
|
55
55
|
import "./chunk-AOJU5LKX.js";
|
|
56
56
|
import {
|
|
57
57
|
CliError,
|
|
58
58
|
isMachineFormat
|
|
59
59
|
} from "./chunk-HGMYEDAQ.js";
|
|
60
|
-
import "./chunk-
|
|
61
|
-
import "./chunk-
|
|
62
|
-
import "./chunk-
|
|
60
|
+
import "./chunk-SWZXHHAG.js";
|
|
61
|
+
import "./chunk-HBHLYWKE.js";
|
|
62
|
+
import "./chunk-7SNMIXEQ.js";
|
|
63
63
|
import {
|
|
64
64
|
refreshSnapshotMentionIdentity,
|
|
65
65
|
snapshotsWithSentimentResults
|
|
66
|
-
} from "./chunk-
|
|
67
|
-
import "./chunk-
|
|
68
|
-
import "./chunk-
|
|
66
|
+
} from "./chunk-YGAQQSCL.js";
|
|
67
|
+
import "./chunk-LNVFERI4.js";
|
|
68
|
+
import "./chunk-LJO2BKWU.js";
|
|
69
69
|
import {
|
|
70
70
|
createClient,
|
|
71
71
|
dataRepairCompletions,
|
|
72
72
|
migrate,
|
|
73
73
|
projects,
|
|
74
74
|
runs
|
|
75
|
-
} from "./chunk-
|
|
75
|
+
} from "./chunk-2DV7F6XA.js";
|
|
76
76
|
import {
|
|
77
77
|
OutcomeReasonCodes,
|
|
78
78
|
OutcomeTriggers,
|
|
@@ -82,7 +82,7 @@ import {
|
|
|
82
82
|
URL_PATH_NORMALIZATION_VERSION,
|
|
83
83
|
classifyOutcomeError,
|
|
84
84
|
describeError
|
|
85
|
-
} from "./chunk-
|
|
85
|
+
} from "./chunk-O7S7OHLE.js";
|
|
86
86
|
import "./chunk-MLKGABMK.js";
|
|
87
87
|
|
|
88
88
|
// src/commands/serve.ts
|
|
@@ -482,10 +482,11 @@ function readServeOpenState(db) {
|
|
|
482
482
|
}
|
|
483
483
|
function buildServeOpenLine(input) {
|
|
484
484
|
if (input.projectCount === 0) {
|
|
485
|
-
return `Open ${input.url}/setup to
|
|
485
|
+
return `Open ${input.url}/setup to set up your first project: a free Agent Readiness audit scan, then AI Visibility.`;
|
|
486
486
|
}
|
|
487
487
|
if (!input.hasSiteAudit && input.firstProjectName) {
|
|
488
|
-
|
|
488
|
+
const firstRun = input.projectCount === 1 ? "&onboarding=first-run" : "";
|
|
489
|
+
return `Open ${input.url}/setup?project=${encodeURIComponent(input.firstProjectName)}${firstRun} to run its first Agent Readiness audit scan.`;
|
|
489
490
|
}
|
|
490
491
|
return `Open ${input.url}`;
|
|
491
492
|
}
|
|
@@ -9,28 +9,28 @@ import {
|
|
|
9
9
|
resolveAeroModel,
|
|
10
10
|
resolveConfiguredAgentProvider,
|
|
11
11
|
resolveSessionProviderAndModel
|
|
12
|
-
} from "./chunk-
|
|
13
|
-
import "./chunk-
|
|
12
|
+
} from "./chunk-KVRX7YIH.js";
|
|
13
|
+
import "./chunk-56VVRWJM.js";
|
|
14
14
|
import {
|
|
15
15
|
resolveAeroSkillDir
|
|
16
|
-
} from "./chunk-
|
|
17
|
-
import "./chunk-
|
|
16
|
+
} from "./chunk-2FWYWGIR.js";
|
|
17
|
+
import "./chunk-UGO2FO6V.js";
|
|
18
18
|
import {
|
|
19
19
|
AgentProviders,
|
|
20
20
|
coerceAgentProvider,
|
|
21
21
|
listAgentProviders
|
|
22
|
-
} from "./chunk-
|
|
23
|
-
import "./chunk-
|
|
24
|
-
import "./chunk-
|
|
25
|
-
import "./chunk-
|
|
22
|
+
} from "./chunk-EE3QTCLS.js";
|
|
23
|
+
import "./chunk-F46TBLXK.js";
|
|
24
|
+
import "./chunk-DGDLLRS4.js";
|
|
25
|
+
import "./chunk-7BEGCVVB.js";
|
|
26
26
|
import "./chunk-AOJU5LKX.js";
|
|
27
27
|
import "./chunk-HGMYEDAQ.js";
|
|
28
|
-
import "./chunk-
|
|
29
|
-
import "./chunk-
|
|
30
|
-
import "./chunk-
|
|
31
|
-
import "./chunk-
|
|
32
|
-
import "./chunk-
|
|
33
|
-
import "./chunk-
|
|
28
|
+
import "./chunk-7SNMIXEQ.js";
|
|
29
|
+
import "./chunk-YGAQQSCL.js";
|
|
30
|
+
import "./chunk-LNVFERI4.js";
|
|
31
|
+
import "./chunk-LJO2BKWU.js";
|
|
32
|
+
import "./chunk-2DV7F6XA.js";
|
|
33
|
+
import "./chunk-O7S7OHLE.js";
|
|
34
34
|
import "./chunk-MLKGABMK.js";
|
|
35
35
|
export {
|
|
36
36
|
AgentProviders,
|