@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,211 @@
|
|
|
1
|
+
import {
|
|
2
|
+
setGoogleAuthConfig
|
|
3
|
+
} from "./chunk-ELCLGWUT.js";
|
|
4
|
+
import {
|
|
5
|
+
createApiClient
|
|
6
|
+
} from "./chunk-UGO2FO6V.js";
|
|
7
|
+
import {
|
|
8
|
+
getConfigPath,
|
|
9
|
+
loadConfig,
|
|
10
|
+
saveConfigPatch
|
|
11
|
+
} from "./chunk-EE3QTCLS.js";
|
|
12
|
+
import "./chunk-AOJU5LKX.js";
|
|
13
|
+
import {
|
|
14
|
+
CliError,
|
|
15
|
+
EXIT_SYSTEM_ERROR,
|
|
16
|
+
isMachineFormat
|
|
17
|
+
} from "./chunk-HGMYEDAQ.js";
|
|
18
|
+
import {
|
|
19
|
+
ProviderConnectionTestStatuses,
|
|
20
|
+
formatDurationSeconds
|
|
21
|
+
} from "./chunk-O7S7OHLE.js";
|
|
22
|
+
import "./chunk-MLKGABMK.js";
|
|
23
|
+
|
|
24
|
+
// src/commands/settings.ts
|
|
25
|
+
function getClient() {
|
|
26
|
+
return createApiClient();
|
|
27
|
+
}
|
|
28
|
+
async function setProvider(name, opts) {
|
|
29
|
+
const client = getClient();
|
|
30
|
+
const { format, ...payload } = opts;
|
|
31
|
+
const result = await client.updateProvider(name, payload);
|
|
32
|
+
if (isMachineFormat(format)) {
|
|
33
|
+
console.log(JSON.stringify(result, null, 2));
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
console.log(`Provider ${result.name} updated successfully.`);
|
|
37
|
+
if (result.model) {
|
|
38
|
+
console.log(` Model: ${result.model}`);
|
|
39
|
+
}
|
|
40
|
+
if (result.quota) {
|
|
41
|
+
console.log(` Quota: ${result.quota.maxConcurrency} concurrent \xB7 ${result.quota.maxRequestsPerMinute}/min \xB7 ${result.quota.maxRequestsPerDay}/day`);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
function printConnection(connection) {
|
|
45
|
+
console.log(`${connection.displayName}: ${connection.configured ? "configured" : "not configured"}`);
|
|
46
|
+
if (connection.baseUrl) console.log(` Endpoint: ${connection.baseUrl}`);
|
|
47
|
+
console.log(` API key: ${connection.apiKeyConfigured ? "saved" : "not saved"}`);
|
|
48
|
+
if (connection.effectiveModel) console.log(` Model: ${connection.effectiveModel}${connection.model ? " (custom)" : " (inherited)"}`);
|
|
49
|
+
if (connection.configured && connection.lastTest !== void 0) console.log(` Last test: ${lastTestLine(connection.name, connection.lastTest)}`);
|
|
50
|
+
if (connection.capabilities.quota) {
|
|
51
|
+
for (const [key, value] of Object.entries(connection.quota.effective)) {
|
|
52
|
+
console.log(` ${key}: ${value} (${Object.hasOwn(connection.quota.overrides, key) ? "custom" : "inherited"})`);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
console.log(` Used by ${connection.usage.projectCount} projects:`);
|
|
56
|
+
for (const project of connection.usage.projects) console.log(` ${project.displayName} (${project.name}): ${project.providers.join(", ")} \xB7 ${project.sources.join(", ")}`);
|
|
57
|
+
const unknown = connection.usage.unknown;
|
|
58
|
+
if (unknown) {
|
|
59
|
+
console.log(` Usage unknown for ${unknown.projectCount} ${unknown.projectCount === 1 ? "project" : "projects"} (saved settings could not be read):`);
|
|
60
|
+
for (const project of unknown.projects) console.log(` ${project.displayName} (${project.name}): ${project.sources.join(", ")}`);
|
|
61
|
+
}
|
|
62
|
+
for (const use of connection.hostUses) console.log(` Host use: ${use}`);
|
|
63
|
+
for (const blocker of connection.blockers) console.log(` Blocked: ${blocker.message}`);
|
|
64
|
+
if (connection.hostManaged.vertex) console.log(` Vertex AI (host managed): ${connection.hostManaged.vertex.project} \xB7 ${connection.hostManaged.vertex.region ?? "default region"}`);
|
|
65
|
+
if (connection.hostManaged.batch) console.log(` Batch (host managed): ${JSON.stringify(connection.hostManaged.batch)}`);
|
|
66
|
+
if (connection.hostManaged.pricing) console.log(` Pricing (host managed): ${JSON.stringify(connection.hostManaged.pricing)}`);
|
|
67
|
+
console.log(` Revision: ${connection.revision}`);
|
|
68
|
+
console.log(` Impact revision: ${connection.impactRevision}`);
|
|
69
|
+
}
|
|
70
|
+
async function showProviderSettings(name, format) {
|
|
71
|
+
const connection = await getClient().getProviderSettings(name);
|
|
72
|
+
if (isMachineFormat(format)) console.log(JSON.stringify(connection, null, 2));
|
|
73
|
+
else printConnection(connection);
|
|
74
|
+
}
|
|
75
|
+
async function disconnectProvider(name, opts) {
|
|
76
|
+
const client = getClient();
|
|
77
|
+
const preview = await client.getProviderSettings(name);
|
|
78
|
+
if (!opts.confirm) {
|
|
79
|
+
if (isMachineFormat(opts.format)) console.log(JSON.stringify(preview, null, 2));
|
|
80
|
+
else {
|
|
81
|
+
printConnection(preview);
|
|
82
|
+
console.log("\nDisconnect removes the saved connection. Project selections and history are retained; the vendor key is not revoked.");
|
|
83
|
+
console.log(`Run canonry settings disconnect-provider ${name} --confirm --if-impact-revision ${preview.impactRevision} to disconnect.`);
|
|
84
|
+
}
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
const result = await client.disconnectProvider(name, { expectedImpactRevision: opts.expectedImpactRevision ?? preview.impactRevision });
|
|
88
|
+
if (isMachineFormat(opts.format)) console.log(JSON.stringify(result, null, 2));
|
|
89
|
+
else console.log(`Provider ${result.displayName} disconnected. Project selections and history were retained.`);
|
|
90
|
+
}
|
|
91
|
+
async function showSettings(format) {
|
|
92
|
+
const client = getClient();
|
|
93
|
+
const settings = await client.getSettings();
|
|
94
|
+
if (isMachineFormat(format)) {
|
|
95
|
+
console.log(JSON.stringify(settings, null, 2));
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
console.log("Provider settings:\n");
|
|
99
|
+
for (const provider of settings.providers) {
|
|
100
|
+
const status = provider.configured ? "configured" : "not configured";
|
|
101
|
+
console.log(` ${provider.name.padEnd(10)} ${status}`);
|
|
102
|
+
if (provider.configured) {
|
|
103
|
+
const modelLabel = provider.model ? provider.model : provider.defaultModel ? `${provider.defaultModel} (default)` : "(default)";
|
|
104
|
+
console.log(` Model: ${modelLabel}`);
|
|
105
|
+
if (provider.quota) {
|
|
106
|
+
console.log(` Quota: ${provider.quota.maxConcurrency} concurrent \xB7 ${provider.quota.maxRequestsPerMinute}/min \xB7 ${provider.quota.maxRequestsPerDay}/day`);
|
|
107
|
+
}
|
|
108
|
+
const lastTest = settings.providerConnections?.find((connection) => connection.name === provider.name)?.lastTest;
|
|
109
|
+
if (lastTest !== void 0) console.log(` Last test: ${lastTestLine(provider.name, lastTest)}`);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
const services = settings.providerCatalog.filter((entry) => entry.kind === "answer-service" && entry.connection === entry.name);
|
|
113
|
+
if (services.length > 0) {
|
|
114
|
+
console.log("\nSearch answer services (run only where a project or request names a profile):\n");
|
|
115
|
+
for (const service of services) {
|
|
116
|
+
const configured = settings.providers.some((provider) => provider.name === service.name && provider.configured);
|
|
117
|
+
const keyEnv = (service.settingsFields ?? []).map((field) => field.env).filter((env) => Boolean(env));
|
|
118
|
+
console.log(` ${service.displayName} (${service.name}): ${configured ? "configured" : "not configured"}${service.keyCheck === "saved-not-verified" ? ", key not verified until first use" : ""}${keyEnv.length > 0 ? `, key from ${keyEnv.join(" or ")} at bootstrap` : ""}`);
|
|
119
|
+
for (const profile of service.profiles ?? []) {
|
|
120
|
+
console.log(` ${profile.route.padEnd(28)} ${profile.workflows.join(", ")} ${profile.description}`);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
console.log("\nGoogle OAuth:\n");
|
|
125
|
+
console.log(` ${settings.google.configured ? "configured" : "not configured"}`);
|
|
126
|
+
}
|
|
127
|
+
async function reloadProviders(format) {
|
|
128
|
+
const result = await getClient().reloadProviders();
|
|
129
|
+
if (isMachineFormat(format)) {
|
|
130
|
+
console.log(JSON.stringify(result, null, 2));
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
console.log("Saved provider configuration is now active on the server.");
|
|
134
|
+
for (const provider of result.providers) {
|
|
135
|
+
console.log(` ${provider.name}: ${provider.configured ? "configured" : "not configured"}`);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
function testStatusLabel(status) {
|
|
139
|
+
switch (status) {
|
|
140
|
+
case ProviderConnectionTestStatuses.connected:
|
|
141
|
+
return "connected";
|
|
142
|
+
case ProviderConnectionTestStatuses.failed:
|
|
143
|
+
return "failed";
|
|
144
|
+
case ProviderConnectionTestStatuses["not-verified"]:
|
|
145
|
+
return "saved, not verified";
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
function lastTestLine(name, lastTest) {
|
|
149
|
+
if (!lastTest) return `none since these settings changed; run "canonry settings provider test ${name}"`;
|
|
150
|
+
const detail = lastTest.status === ProviderConnectionTestStatuses.connected ? "" : ` (${lastTest.message})`;
|
|
151
|
+
return `${testStatusLabel(lastTest.status)} at ${lastTest.checkedAt}${detail}`;
|
|
152
|
+
}
|
|
153
|
+
async function testProvider(name, format) {
|
|
154
|
+
const result = await getClient().testProvider(name);
|
|
155
|
+
if (isMachineFormat(format)) {
|
|
156
|
+
console.log(JSON.stringify(result, null, 2));
|
|
157
|
+
} else {
|
|
158
|
+
console.log(`${result.displayName}: ${testStatusLabel(result.status)}`);
|
|
159
|
+
if (result.model) console.log(` Model: ${result.model}`);
|
|
160
|
+
console.log(` Result: ${result.message}`);
|
|
161
|
+
console.log(` Checked: ${result.checkedAt} (${formatDurationSeconds(result.durationMs / 1e3)})`);
|
|
162
|
+
}
|
|
163
|
+
if (!result.ok) {
|
|
164
|
+
throw new CliError({
|
|
165
|
+
code: "PROVIDER_TEST_FAILED",
|
|
166
|
+
message: `${result.displayName} connection test failed: ${result.message}`,
|
|
167
|
+
displayMessage: `Error: the ${result.displayName} connection test failed. Fix the saved key or endpoint with "canonry settings provider ${result.provider}", then test again.`,
|
|
168
|
+
details: { provider: result.provider, status: result.status },
|
|
169
|
+
exitCode: EXIT_SYSTEM_ERROR
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
async function setGoogleAuth(opts) {
|
|
174
|
+
if (opts.target === "server") {
|
|
175
|
+
const result = await getClient().updateGoogleSettings({
|
|
176
|
+
clientId: opts.clientId,
|
|
177
|
+
clientSecret: opts.clientSecret
|
|
178
|
+
});
|
|
179
|
+
if (isMachineFormat(opts.format)) {
|
|
180
|
+
console.log(JSON.stringify(result, null, 2));
|
|
181
|
+
return;
|
|
182
|
+
}
|
|
183
|
+
console.log("Google OAuth credentials updated on the server.");
|
|
184
|
+
return;
|
|
185
|
+
}
|
|
186
|
+
const config = loadConfig();
|
|
187
|
+
setGoogleAuthConfig(config, {
|
|
188
|
+
clientId: opts.clientId,
|
|
189
|
+
clientSecret: opts.clientSecret
|
|
190
|
+
});
|
|
191
|
+
saveConfigPatch(config);
|
|
192
|
+
if (isMachineFormat(opts.format)) {
|
|
193
|
+
console.log(JSON.stringify({
|
|
194
|
+
configured: true,
|
|
195
|
+
configPath: getConfigPath(),
|
|
196
|
+
restartRequired: true
|
|
197
|
+
}, null, 2));
|
|
198
|
+
return;
|
|
199
|
+
}
|
|
200
|
+
console.log(`Google OAuth credentials saved to ${getConfigPath()}.`);
|
|
201
|
+
console.log("Restart the local server if it is already running.");
|
|
202
|
+
}
|
|
203
|
+
export {
|
|
204
|
+
disconnectProvider,
|
|
205
|
+
reloadProviders,
|
|
206
|
+
setGoogleAuth,
|
|
207
|
+
setProvider,
|
|
208
|
+
showProviderSettings,
|
|
209
|
+
showSettings,
|
|
210
|
+
testProvider
|
|
211
|
+
};
|
|
@@ -1,12 +1,12 @@
|
|
|
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 "./chunk-
|
|
9
|
+
import "./chunk-O7S7OHLE.js";
|
|
10
10
|
import "./chunk-MLKGABMK.js";
|
|
11
11
|
|
|
12
12
|
// src/commands/sitemaps.ts
|
|
@@ -34,7 +34,7 @@ async function sitemapsCommand(project, opts) {
|
|
|
34
34
|
return;
|
|
35
35
|
}
|
|
36
36
|
const lines = [
|
|
37
|
-
result.site.scannedAt ? `Site: ${result.site.sitemaps.length} sitemap file${result.site.sitemaps.length === 1 ? "" : "s"} in the
|
|
37
|
+
result.site.scannedAt ? `Site: ${result.site.sitemaps.length} sitemap file${result.site.sitemaps.length === 1 ? "" : "s"} in the Agent Readiness audit scan of ${result.site.scannedAt}` : "Site: no Agent Readiness audit scan yet, so only the engines are compared."
|
|
38
38
|
];
|
|
39
39
|
for (const engine of opts.engine ? [opts.engine] : ["google", "bing"]) {
|
|
40
40
|
lines.push("", ...engineLines(ENGINE_NAMES[engine], result[engine]));
|
|
@@ -9,13 +9,13 @@ import {
|
|
|
9
9
|
parseSkillsClient,
|
|
10
10
|
resolveBundledSkillsRoot,
|
|
11
11
|
shouldPrintServeSkillsNudge
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-FBO25TA3.js";
|
|
13
13
|
import "./chunk-AOJU5LKX.js";
|
|
14
14
|
import "./chunk-HGMYEDAQ.js";
|
|
15
15
|
import {
|
|
16
16
|
CodingAgents,
|
|
17
17
|
SkillsClients
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-O7S7OHLE.js";
|
|
19
19
|
import "./chunk-MLKGABMK.js";
|
|
20
20
|
export {
|
|
21
21
|
BUNDLED_SKILL_NAMES,
|
|
@@ -3,15 +3,15 @@ import {
|
|
|
3
3
|
} from "./chunk-XEBKF4N5.js";
|
|
4
4
|
import {
|
|
5
5
|
createApiClient
|
|
6
|
-
} from "./chunk-
|
|
7
|
-
import "./chunk-
|
|
6
|
+
} from "./chunk-UGO2FO6V.js";
|
|
7
|
+
import "./chunk-EE3QTCLS.js";
|
|
8
8
|
import "./chunk-AOJU5LKX.js";
|
|
9
9
|
import {
|
|
10
10
|
isMachineFormat
|
|
11
11
|
} from "./chunk-HGMYEDAQ.js";
|
|
12
12
|
import {
|
|
13
13
|
factorStatusFromScore
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-O7S7OHLE.js";
|
|
15
15
|
import "./chunk-MLKGABMK.js";
|
|
16
16
|
|
|
17
17
|
// src/commands/snapshot.ts
|
|
@@ -406,7 +406,7 @@ function formatSnapshotMarkdown(report) {
|
|
|
406
406
|
lines.push("");
|
|
407
407
|
lines.push(`**Domain:** ${report.domain}`);
|
|
408
408
|
lines.push(`**Generated:** ${new Date(report.generatedAt).toLocaleString("en-US", { year: "numeric", month: "long", day: "numeric", hour: "numeric", minute: "2-digit" })}`);
|
|
409
|
-
lines.push(`**
|
|
409
|
+
lines.push(`**Agent Readiness score:** ${report.audit.overallScore}/100`);
|
|
410
410
|
lines.push("");
|
|
411
411
|
lines.push("## Visibility Gap (Citations + Mentions)");
|
|
412
412
|
lines.push("");
|
|
@@ -131,6 +131,7 @@ import {
|
|
|
131
131
|
projects,
|
|
132
132
|
providerBatchRequests,
|
|
133
133
|
providerBatches,
|
|
134
|
+
providerConnectionTests,
|
|
134
135
|
queries,
|
|
135
136
|
queryBasketVersions,
|
|
136
137
|
querySnapshots,
|
|
@@ -188,10 +189,10 @@ import {
|
|
|
188
189
|
userSessions,
|
|
189
190
|
users,
|
|
190
191
|
writeNegativeReviewMaxStars
|
|
191
|
-
} from "./chunk-
|
|
192
|
+
} from "./chunk-2DV7F6XA.js";
|
|
192
193
|
import {
|
|
193
194
|
emptySeoResults
|
|
194
|
-
} from "./chunk-
|
|
195
|
+
} from "./chunk-O7S7OHLE.js";
|
|
195
196
|
import "./chunk-MLKGABMK.js";
|
|
196
197
|
export {
|
|
197
198
|
MIGRATION_VERSIONS,
|
|
@@ -327,6 +328,7 @@ export {
|
|
|
327
328
|
projects,
|
|
328
329
|
providerBatchRequests,
|
|
329
330
|
providerBatches,
|
|
331
|
+
providerConnectionTests,
|
|
330
332
|
queries,
|
|
331
333
|
queryBasketVersions,
|
|
332
334
|
querySnapshots,
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
runAdmissionLines
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-NQYJHKML.js";
|
|
4
|
+
import "./chunk-J6536OL6.js";
|
|
4
5
|
import {
|
|
5
6
|
createApiClient
|
|
6
|
-
} from "./chunk-
|
|
7
|
-
import "./chunk-
|
|
7
|
+
} from "./chunk-UGO2FO6V.js";
|
|
8
|
+
import "./chunk-EE3QTCLS.js";
|
|
8
9
|
import {
|
|
9
10
|
emitJsonl
|
|
10
11
|
} from "./chunk-Z7IUAJOF.js";
|
|
@@ -16,7 +17,7 @@ import {
|
|
|
16
17
|
import {
|
|
17
18
|
HostedMcpStatuses,
|
|
18
19
|
HostedMcpUnavailableReasons
|
|
19
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-O7S7OHLE.js";
|
|
20
21
|
import "./chunk-MLKGABMK.js";
|
|
21
22
|
|
|
22
23
|
// src/commands/status.ts
|
|
@@ -121,7 +122,7 @@ async function showStatus(project, format, options = {}) {
|
|
|
121
122
|
} else {
|
|
122
123
|
const projectArg = /^[\w.-]+$/.test(project) ? project : `'${project.replaceAll("'", `'\\''`)}'`;
|
|
123
124
|
console.log(`
|
|
124
|
-
No runs yet.
|
|
125
|
+
No runs yet. Run an Agent Readiness audit scan with "canonry agent-readiness run ${projectArg}", or run an AI Visibility sweep after adding a provider.`);
|
|
125
126
|
}
|
|
126
127
|
const admission = runAdmissionLines(project, latest.admission, latest.manualAdmission);
|
|
127
128
|
if (admission.length > 0) console.log(`
|
|
@@ -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";
|
|
@@ -13,7 +13,7 @@ import {
|
|
|
13
13
|
RatioUnits,
|
|
14
14
|
SiteAuditIssueRecommendationScopes,
|
|
15
15
|
formatPercent
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-O7S7OHLE.js";
|
|
17
17
|
import "./chunk-MLKGABMK.js";
|
|
18
18
|
|
|
19
19
|
// src/commands/technical-aeo.ts
|
|
@@ -39,7 +39,7 @@ async function technicalAeoIssues(project, opts) {
|
|
|
39
39
|
lines.push("", `[${issue.disposition}${severity}] ${issue.code} \xB7 ${issue.affectedPages} page(s)`, issue.message);
|
|
40
40
|
lines.push(`Issue: ${issue.id}${issue.stableIdentity ? "" : " (identity is specific to this scan)"}`);
|
|
41
41
|
for (const example of issue.examples) lines.push(` ${example.url}`);
|
|
42
|
-
if (issue.examplesTruncated) lines.push("More affected pages are available with
|
|
42
|
+
if (issue.examplesTruncated) lines.push("More affected pages are available with canonry agent-readiness issue-pages.");
|
|
43
43
|
if (issue.messageTruncated) lines.push("The saved message is shortened; inspect the affected pages for context.");
|
|
44
44
|
}
|
|
45
45
|
if (res.nextCursor) lines.push("", `Next cursor: ${res.nextCursor}`);
|
|
@@ -89,13 +89,13 @@ async function technicalAeoScore(project, opts) {
|
|
|
89
89
|
}
|
|
90
90
|
if (!score.hasData) {
|
|
91
91
|
console.log(
|
|
92
|
-
`No
|
|
92
|
+
`No Agent Readiness audit scan yet for "${project}". Run \`canonry agent-readiness run ${project}\` to start one.`
|
|
93
93
|
);
|
|
94
94
|
return;
|
|
95
95
|
}
|
|
96
96
|
const lines = [];
|
|
97
97
|
const delta = score.deltaScore == null ? "" : ` (${score.deltaScore >= 0 ? "+" : ""}${score.deltaScore} vs prev)`;
|
|
98
|
-
lines.push(`
|
|
98
|
+
lines.push(`Agent Readiness: ${score.aggregateScore}/100${delta}`);
|
|
99
99
|
lines.push(
|
|
100
100
|
`Audited ${score.pagesAudited} page(s) \xB7 ${score.pagesSkipped} skipped \xB7 ${score.pagesErrored} errored \xB7 sitemap ${score.sitemapUrl}`
|
|
101
101
|
);
|
|
@@ -129,7 +129,7 @@ async function technicalAeoPages(project, opts) {
|
|
|
129
129
|
return;
|
|
130
130
|
}
|
|
131
131
|
if (res.pages.length === 0) {
|
|
132
|
-
console.log(`No audited pages for "${project}". Run \`canonry
|
|
132
|
+
console.log(`No audited pages for "${project}". Run \`canonry agent-readiness run ${project}\` first.`);
|
|
133
133
|
return;
|
|
134
134
|
}
|
|
135
135
|
const lines = [];
|
|
@@ -154,7 +154,7 @@ async function technicalAeoTrend(project, opts) {
|
|
|
154
154
|
return;
|
|
155
155
|
}
|
|
156
156
|
if (res.points.length === 0) {
|
|
157
|
-
console.log(`No
|
|
157
|
+
console.log(`No Agent Readiness audit scans yet for "${project}". Run \`canonry agent-readiness run ${project}\` first.`);
|
|
158
158
|
return;
|
|
159
159
|
}
|
|
160
160
|
const lines = [];
|
|
@@ -171,7 +171,7 @@ async function technicalAeoProgress(project, opts) {
|
|
|
171
171
|
return;
|
|
172
172
|
}
|
|
173
173
|
const lines = [
|
|
174
|
-
`
|
|
174
|
+
`Agent Readiness audit scan progress: ${progress.phase} (${progress.status})`,
|
|
175
175
|
`Run: ${progress.runId}`
|
|
176
176
|
];
|
|
177
177
|
if (progress.attempt) {
|
|
@@ -198,14 +198,14 @@ async function technicalAeoCrawl(project, opts) {
|
|
|
198
198
|
console.log([`No persisted site crawl for "${project}" on ${opts.date}.`, ...availableScanDateLines(crawl.availableScanDates)].join("\n"));
|
|
199
199
|
return;
|
|
200
200
|
}
|
|
201
|
-
console.log(`No persisted site crawl for "${project}". Run \`canonry
|
|
201
|
+
console.log(`No persisted site crawl for "${project}". Run \`canonry agent-readiness run ${project}\` first.`);
|
|
202
202
|
return;
|
|
203
203
|
}
|
|
204
204
|
const lines = [
|
|
205
205
|
`Site crawl: ${crawl.complete ? "complete" : "partial"} (${crawl.runStatus ?? "unknown"})`,
|
|
206
206
|
`Root: ${crawl.rootUrl ?? "-"}`,
|
|
207
207
|
`Pages: ${crawl.counts.pagesFetched} fetched \xB7 ${crawl.counts.pagesDiscovered} discovered \xB7 ${crawl.counts.pagesEligible} eligible`,
|
|
208
|
-
`Links: ${crawl.counts.edges} internal/external observations \xB7 ${crawl.counts.findings} findings`,
|
|
208
|
+
`Links: ${crawl.counts.edges} internal/external observations${crawl.counts.internalLinks != null ? ` \xB7 ${crawl.counts.internalLinks} internal links on the site map` : ""} \xB7 ${crawl.counts.findings} findings`,
|
|
209
209
|
`Dead links: ${formatDeadLinkState(crawl.deadLinks)}`
|
|
210
210
|
];
|
|
211
211
|
lines.push(...inventorySummaryLines(crawl.inventorySummary));
|
|
@@ -219,17 +219,17 @@ async function technicalAeoSubgraph(project, opts) {
|
|
|
219
219
|
return;
|
|
220
220
|
}
|
|
221
221
|
if (!res.hasCrawlData) {
|
|
222
|
-
console.log(`No persisted
|
|
222
|
+
console.log(`No persisted Agent Readiness crawl for "${project}". Run \`canonry agent-readiness run ${project}\` first.`);
|
|
223
223
|
return;
|
|
224
224
|
}
|
|
225
225
|
if (res.state !== "ready") {
|
|
226
|
-
console.log(`
|
|
226
|
+
console.log(`Agent Readiness subgraph details are unavailable for crawl ${res.runId ?? "-"}.`);
|
|
227
227
|
return;
|
|
228
228
|
}
|
|
229
229
|
const focus = res.focusUrl ?? res.focusNodeKey ?? "crawl root";
|
|
230
230
|
const totalQualifier = res.countAccuracy === "lower-bound" ? "at least " : "";
|
|
231
231
|
const lines = [
|
|
232
|
-
`
|
|
232
|
+
`Agent Readiness subgraph: ${focus} (${res.hops} hop${res.hops === 1 ? "" : "s"})`,
|
|
233
233
|
`${res.nodes.length} of ${totalQualifier}${res.totalNodes} node(s) \xB7 ${res.edges.length} of ${totalQualifier}${res.totalEdges} edge(s)`,
|
|
234
234
|
`Crawl: ${res.complete ? "complete" : `partial (${res.termination ?? "incomplete"})`}`
|
|
235
235
|
];
|
|
@@ -245,11 +245,11 @@ async function technicalAeoPath(project, opts) {
|
|
|
245
245
|
return;
|
|
246
246
|
}
|
|
247
247
|
if (res.state === "no-crawl") {
|
|
248
|
-
console.log(`No persisted
|
|
248
|
+
console.log(`No persisted Agent Readiness crawl for "${project}". Run \`canonry agent-readiness run ${project}\` first.`);
|
|
249
249
|
return;
|
|
250
250
|
}
|
|
251
251
|
if (res.state === "details-unavailable") {
|
|
252
|
-
console.log(`
|
|
252
|
+
console.log(`Agent Readiness path details are unavailable for crawl ${res.runId ?? "-"}.`);
|
|
253
253
|
return;
|
|
254
254
|
}
|
|
255
255
|
if (res.state === "unreachable") {
|
|
@@ -283,15 +283,15 @@ async function technicalAeoChanges(project, opts) {
|
|
|
283
283
|
return;
|
|
284
284
|
}
|
|
285
285
|
if (res.state === "unavailable") {
|
|
286
|
-
console.log(`
|
|
286
|
+
console.log(`Agent Readiness changes unavailable: ${res.reason.replaceAll("-", " ")}.`);
|
|
287
287
|
return;
|
|
288
288
|
}
|
|
289
289
|
if (res.state === "incompatible") {
|
|
290
|
-
console.log(`
|
|
290
|
+
console.log(`Agent Readiness changes unavailable: snapshots use incompatible ${res.mismatchedVersions.join(", ")} versions.`);
|
|
291
291
|
return;
|
|
292
292
|
}
|
|
293
293
|
const lines = [
|
|
294
|
-
`
|
|
294
|
+
`Agent Readiness changes: ${res.fromRunId} \u2192 ${res.toRunId}`,
|
|
295
295
|
`Filters: ${res.filters.scope} \xB7 ${res.filters.change}`
|
|
296
296
|
];
|
|
297
297
|
if (res.summaryState === "exact" && res.summary !== null && res.total !== null) {
|
|
@@ -391,7 +391,7 @@ async function technicalAeoPageAudit(project, opts) {
|
|
|
391
391
|
return;
|
|
392
392
|
}
|
|
393
393
|
if (res.state === "no-crawl") {
|
|
394
|
-
console.log(`No persisted
|
|
394
|
+
console.log(`No persisted Agent Readiness crawl for "${project}". Run \`canonry agent-readiness run ${project}\` first.`);
|
|
395
395
|
return;
|
|
396
396
|
}
|
|
397
397
|
const provenance = [`Run: ${res.runId} \xB7 ${res.complete ? "complete" : "partial"}`];
|
|
@@ -586,14 +586,14 @@ async function technicalAeoRun(project, opts) {
|
|
|
586
586
|
return;
|
|
587
587
|
}
|
|
588
588
|
console.log(
|
|
589
|
-
`
|
|
589
|
+
`Agent Readiness audit scan started (run ${runId}, status ${status}). Use \`canonry agent-readiness progress ${project} --run-id ${runId}\` to check status, or pass --wait.`
|
|
590
590
|
);
|
|
591
591
|
return;
|
|
592
592
|
}
|
|
593
593
|
const terminal = /* @__PURE__ */ new Set(["completed", "partial", "failed", "cancelled"]);
|
|
594
594
|
const start = Date.now();
|
|
595
595
|
const timeoutMs = 15 * 60 * 1e3;
|
|
596
|
-
if (!isMachineFormat(opts.format)) process.stderr.write("
|
|
596
|
+
if (!isMachineFormat(opts.format)) process.stderr.write("Scanning");
|
|
597
597
|
let final = status;
|
|
598
598
|
while (!terminal.has(final) && Date.now() - start < timeoutMs) {
|
|
599
599
|
await new Promise((r) => setTimeout(r, 2e3));
|
|
@@ -606,7 +606,7 @@ async function technicalAeoRun(project, opts) {
|
|
|
606
606
|
console.log(JSON.stringify({ runId, status: final }, null, 2));
|
|
607
607
|
return;
|
|
608
608
|
}
|
|
609
|
-
console.log(`
|
|
609
|
+
console.log(`Agent Readiness audit scan ${final} (run ${runId}).`);
|
|
610
610
|
}
|
|
611
611
|
export {
|
|
612
612
|
technicalAeoChanges,
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import {
|
|
2
2
|
getTelemetryStatus,
|
|
3
3
|
setTelemetryPreference
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-AMGM55CP.js";
|
|
5
5
|
import {
|
|
6
6
|
createApiClient
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-UGO2FO6V.js";
|
|
8
8
|
import {
|
|
9
9
|
configExists,
|
|
10
10
|
getConfigPath
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-EE3QTCLS.js";
|
|
12
12
|
import "./chunk-AOJU5LKX.js";
|
|
13
13
|
import {
|
|
14
14
|
CliError,
|
|
@@ -17,7 +17,7 @@ import {
|
|
|
17
17
|
} from "./chunk-HGMYEDAQ.js";
|
|
18
18
|
import {
|
|
19
19
|
normalizeTelemetryStatus
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-O7S7OHLE.js";
|
|
21
21
|
import "./chunk-MLKGABMK.js";
|
|
22
22
|
|
|
23
23
|
// src/commands/telemetry.ts
|
|
@@ -11,19 +11,19 @@ import {
|
|
|
11
11
|
buildAllTools,
|
|
12
12
|
buildReadTools,
|
|
13
13
|
isAeroToolProfile
|
|
14
|
-
} from "./chunk-
|
|
15
|
-
import "./chunk-
|
|
16
|
-
import "./chunk-
|
|
17
|
-
import "./chunk-
|
|
18
|
-
import "./chunk-
|
|
19
|
-
import "./chunk-
|
|
14
|
+
} from "./chunk-56VVRWJM.js";
|
|
15
|
+
import "./chunk-UGO2FO6V.js";
|
|
16
|
+
import "./chunk-EE3QTCLS.js";
|
|
17
|
+
import "./chunk-F46TBLXK.js";
|
|
18
|
+
import "./chunk-DGDLLRS4.js";
|
|
19
|
+
import "./chunk-7BEGCVVB.js";
|
|
20
20
|
import "./chunk-AOJU5LKX.js";
|
|
21
21
|
import "./chunk-HGMYEDAQ.js";
|
|
22
|
-
import "./chunk-
|
|
23
|
-
import "./chunk-
|
|
24
|
-
import "./chunk-
|
|
25
|
-
import "./chunk-
|
|
26
|
-
import "./chunk-
|
|
22
|
+
import "./chunk-YGAQQSCL.js";
|
|
23
|
+
import "./chunk-LNVFERI4.js";
|
|
24
|
+
import "./chunk-LJO2BKWU.js";
|
|
25
|
+
import "./chunk-2DV7F6XA.js";
|
|
26
|
+
import "./chunk-O7S7OHLE.js";
|
|
27
27
|
import "./chunk-MLKGABMK.js";
|
|
28
28
|
export {
|
|
29
29
|
AERO_ADS_OPERATOR_CONTEXT_TOOL_NAME,
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
2
|
getCloudflareTrafficConnectionBySourceId
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-VHULVUDL.js";
|
|
4
4
|
import {
|
|
5
5
|
createApiClient
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-UGO2FO6V.js";
|
|
7
7
|
import {
|
|
8
8
|
loadConfigRaw
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-EE3QTCLS.js";
|
|
10
10
|
import {
|
|
11
11
|
emitJsonl
|
|
12
12
|
} from "./chunk-Z7IUAJOF.js";
|
|
@@ -23,7 +23,7 @@ import {
|
|
|
23
23
|
DEFAULT_BOT_LIST,
|
|
24
24
|
generateWorkerScript,
|
|
25
25
|
generateWranglerToml
|
|
26
|
-
} from "./chunk-
|
|
26
|
+
} from "./chunk-LNVFERI4.js";
|
|
27
27
|
import {
|
|
28
28
|
RunStatuses,
|
|
29
29
|
TRAFFIC_EVENT_KIND_FILTER_HINT,
|
|
@@ -33,11 +33,12 @@ import {
|
|
|
33
33
|
formatValidationIssues,
|
|
34
34
|
parseTrafficAnalyticsPeriod,
|
|
35
35
|
parseTrafficEventKindFilter,
|
|
36
|
+
redactKnownSecrets,
|
|
36
37
|
referralAssessmentQuerySchema,
|
|
37
38
|
trafficSamplesQuerySchema,
|
|
38
39
|
trafficSeriesGranularitySchema,
|
|
39
40
|
trafficUnrecognizedAgentsQuerySchema
|
|
40
|
-
} from "./chunk-
|
|
41
|
+
} from "./chunk-O7S7OHLE.js";
|
|
41
42
|
import "./chunk-MLKGABMK.js";
|
|
42
43
|
|
|
43
44
|
// src/commands/traffic.ts
|
|
@@ -214,12 +215,7 @@ function assertCloudflareArtifactsDoNotContainSecrets(contents, secrets) {
|
|
|
214
215
|
}
|
|
215
216
|
}
|
|
216
217
|
function redactCloudflareSecrets(message, secrets) {
|
|
217
|
-
|
|
218
|
-
const secretValues = "apiToken" in secrets ? [secrets.apiToken] : [secrets.bearerToken, secrets.hmacSecret];
|
|
219
|
-
for (const secret of secretValues) {
|
|
220
|
-
if (secret) redacted = redacted.replaceAll(secret, "[REDACTED]");
|
|
221
|
-
}
|
|
222
|
-
return redacted;
|
|
218
|
+
return redactKnownSecrets(message, "apiToken" in secrets ? [secrets.apiToken] : [secrets.bearerToken, secrets.hmacSecret]);
|
|
223
219
|
}
|
|
224
220
|
async function runWrangler(command, args, opts) {
|
|
225
221
|
await new Promise((resolve, reject) => {
|
|
@@ -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 "./chunk-AOJU5LKX.js";
|
|
6
6
|
import {
|
|
7
7
|
isMachineFormat
|
|
@@ -11,13 +11,13 @@ import {
|
|
|
11
11
|
TrendUnits,
|
|
12
12
|
formatPercent,
|
|
13
13
|
formatSignedPointDelta
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-O7S7OHLE.js";
|
|
15
15
|
import "./chunk-MLKGABMK.js";
|
|
16
16
|
|
|
17
17
|
// src/commands/trends.ts
|
|
18
18
|
var SURFACE_TITLES = {
|
|
19
19
|
"index-coverage": "Index coverage",
|
|
20
|
-
"site-health": "
|
|
20
|
+
"site-health": "Agent Readiness",
|
|
21
21
|
backlinks: "Backlinks"
|
|
22
22
|
};
|
|
23
23
|
function formatReading(figure, value) {
|