@canonry/canonry 7.77.0 → 7.77.2
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 +1 -3
- package/dist/{ads-4WDIF7OK.js → ads-5K5IQDCD.js} +2 -2
- package/dist/{agent-UHSMOPSH.js → agent-Q4PKMBEJ.js} +5 -5
- package/dist/{agent-ask-QYGJQN5T.js → agent-ask-JEPVVW2J.js} +2 -2
- package/dist/{agent-conversations-FVNLFQYS.js → agent-conversations-EHE7QEBC.js} +2 -2
- package/dist/{agent-memory-WBPVEUHN.js → agent-memory-AB72YQET.js} +2 -2
- package/dist/{agent-providers-7BGHHFRV.js → agent-providers-NQ7HJYAQ.js} +2 -2
- package/dist/{agent-transcript-BSTEVSXP.js → agent-transcript-PRTWIQ2A.js} +2 -2
- package/dist/{analytics-VTO2M4BN.js → analytics-IY3J4VZE.js} +2 -2
- package/dist/{apply-IVXI3B65.js → apply-HNOG674K.js} +2 -2
- package/dist/{backfill-PPXOHZR2.js → backfill-TO7TPPO6.js} +2 -2
- package/dist/{backlinks-NSC56WKE.js → backlinks-3NY5GNT4.js} +2 -2
- package/dist/{bing-BUNJKL7J.js → bing-Z7W7U2CT.js} +2 -2
- package/dist/{bootstrap-ZDDSHNJV.js → bootstrap-DXXS3LRH.js} +5 -5
- package/dist/{cdp-ZK7SNTHK.js → cdp-CKPRS6VE.js} +5 -5
- package/dist/{chunk-ZOBE2CMQ.js → chunk-4XVXP6VR.js} +1 -1
- package/dist/{chunk-IQLEMBGA.js → chunk-5LKK2MCJ.js} +2 -2
- package/dist/{chunk-IUVJLNW4.js → chunk-6KPBYCPE.js} +14 -3
- package/dist/{chunk-IFLPQ5RQ.js → chunk-7JC4Z6FQ.js} +12 -8
- package/dist/{chunk-GXJWZOUC.js → chunk-AAUMUHUI.js} +2 -2
- package/dist/{chunk-AWSK2DBU.js → chunk-CHTKK43G.js} +99 -68
- package/dist/{chunk-CKJLL2FQ.js → chunk-CMS4YM5M.js} +1 -1
- package/dist/{chunk-HCYSFU4U.js → chunk-EM2HAM2U.js} +1 -1
- package/dist/{chunk-RHRF7NBX.js → chunk-G26YB6JK.js} +1 -1
- package/dist/{chunk-5QEGJVU5.js → chunk-JEXBP7CR.js} +2 -2
- package/dist/{chunk-GUEB3MPU.js → chunk-JMCURBZG.js} +2 -2
- package/dist/{chunk-WYQQTWUB.js → chunk-JRVKW4OO.js} +1 -1
- package/dist/{chunk-Z7YPLZRD.js → chunk-JZ4UFSVR.js} +1 -1
- package/dist/{chunk-TS2B42RE.js → chunk-LKEFPJQ2.js} +1 -1
- package/dist/{chunk-ZER6XCES.js → chunk-ORZBHCZR.js} +1 -1
- package/dist/{chunk-4HJO7VFM.js → chunk-WFFZAQRG.js} +307 -307
- package/dist/{citations-C2IJ7RHO.js → citations-4AV6HLUZ.js} +2 -2
- package/dist/{cli-commands-DX4ZVGV2.js → cli-commands-NJDUBQ3R.js} +4 -4
- package/dist/cli.js +7 -7
- package/dist/{competitor-H7MYXUC2.js → competitor-SG4N37UD.js} +2 -2
- package/dist/{content-DDL4LI2E.js → content-EDLZAPUV.js} +2 -2
- package/dist/{dashboard-CVJEQ56Q.js → dashboard-5ZFVJPHX.js} +1 -1
- package/dist/{discover-YRCXWFNW.js → discover-7X2WMNFV.js} +2 -2
- package/dist/{discover-eval-QTOKYZWS.js → discover-eval-ECOPSJJ4.js} +2 -2
- package/dist/{doctor-XC3VBBDF.js → doctor-NMFBKNYR.js} +2 -2
- package/dist/{evidence-CKMSRS5C.js → evidence-C52ZPRYB.js} +2 -2
- package/dist/{export-cmd-YXESSTJV.js → export-cmd-2WSEETUC.js} +2 -2
- package/dist/{ga-B45HBSS4.js → ga-YG4O2FT5.js} +2 -2
- package/dist/{gbp-3IWONAO5.js → gbp-BDGV6F74.js} +2 -2
- package/dist/{google-QNIYJEQ6.js → google-P2AX6CUF.js} +2 -2
- package/dist/{health-cmd-WEBLFHNL.js → health-cmd-MIQT2JNL.js} +2 -2
- package/dist/{history-3DS5VTIQ.js → history-3XDDJDAV.js} +2 -2
- package/dist/index.d.ts +76 -65
- package/dist/index.js +8 -8
- package/dist/{init-2ZO6AUFB.js → init-GT3QM7FC.js} +7 -7
- package/dist/{insights-GMTFJXMS.js → insights-ZJUDCBBP.js} +2 -2
- package/dist/{journeys-PSCN4GGH.js → journeys-L2CXQXRP.js} +2 -2
- package/dist/{keys-EBZDFHTP.js → keys-ODRGIQS7.js} +2 -2
- package/dist/{keyword-3WHXQ4UU.js → keyword-LE3CAXO2.js} +2 -2
- package/dist/{logs-QL3JWFOG.js → logs-OXK43XN2.js} +2 -2
- package/dist/{mcp-4BMVUSZU.js → mcp-6OTPCDGW.js} +3 -3
- package/dist/mcp.js +4 -4
- package/dist/{measurement-plan-VJK334AA.js → measurement-plan-NXRCDUYL.js} +3 -3
- package/dist/{notify-U56W2ZAT.js → notify-VNNJTNC6.js} +2 -2
- package/dist/{organic-evidence-ZXQSTOCR.js → organic-evidence-LYDB7IID.js} +2 -2
- package/dist/{overview-GV7FE4HJ.js → overview-2GPPQ6JP.js} +3 -3
- package/dist/{project-WMOIQ32P.js → project-CQJPXC66.js} +2 -2
- package/dist/{query-FWE33SEK.js → query-PPE4EHMY.js} +2 -2
- package/dist/{research-32XG4HOS.js → research-GDYZKQY2.js} +2 -2
- package/dist/{results-export-O43APU4C.js → results-export-OAJHDEIQ.js} +2 -2
- package/dist/{run-4T3D6ZNV.js → run-XDPDQS44.js} +3 -3
- package/dist/{schedule-AMXK44PA.js → schedule-C6SYV54I.js} +2 -2
- package/dist/{search-WVBOZLYM.js → search-DONTDHQK.js} +2 -2
- package/dist/{serve-V67FDERY.js → serve-PJXATOSY.js} +13 -11
- package/dist/{session-SLRAB77J.js → session-PMZV27GX.js} +4 -4
- package/dist/{settings-7L6BSQSY.js → settings-PMATG7GG.js} +2 -2
- package/dist/{snapshot-QUX233WK.js → snapshot-E4GHH6DD.js} +2 -2
- package/dist/{status-UUYDHVVH.js → status-MEGXEEW6.js} +3 -3
- package/dist/{technical-aeo-LHZ7YUTK.js → technical-aeo-GE6KOFKT.js} +2 -2
- package/dist/{telemetry-H2NMJ4KC.js → telemetry-Y63F4XFX.js} +3 -3
- package/dist/{tools-JLNFAHYL.js → tools-V546ALG7.js} +3 -3
- package/dist/{traffic-W7N5E46S.js → traffic-5ELSKXBM.js} +2 -2
- package/dist/{users-OMNV5T6W.js → users-7YK7XYWY.js} +2 -2
- package/dist/{visibility-stats-X2QDF7P6.js → visibility-stats-GYPUKXVS.js} +2 -2
- package/dist/{wordpress-6ZPLTOWU.js → wordpress-WUGJT5NN.js} +2 -2
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -9,9 +9,7 @@ Canonry is an **agent-first (CLI, MCP, API), open-source AEO operating platform
|
|
|
9
9
|
|
|
10
10
|
**Self-hosted, using SQLite, with your own (BYOK) provider keys.** The web UI and your agent see the same evidence.
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
[Live UI Demo](https://custom-demo.canonry.ai/projects/summit-roofing) · [Quick start](#quick-start) · [DataForSEO SEO](#seo-data-with-dataforseo) · [Evidence](#explore-the-evidence) · [Actions](#act-on-the-evidence) · [Integrations](#integrations) · [Docs](#documentation) · [Support](#support)
|
|
12
|
+
[Live UI Demo](https://custom-demo.canonry.ai/projects/summit-roofing) · [Quick start](#quick-start) · [Evidence](#explore-the-evidence) · [Actions](#act-on-the-evidence) · [Integrations](#integrations) · [Docs](#documentation) · [Support](#support)
|
|
15
13
|
|
|
16
14
|
<p align="center">
|
|
17
15
|
<a href="https://raw.githubusercontent.com/Canonry/canonry/main/docs/images/measure-act.svg">
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
2
|
trackCliConnection
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import "./chunk-
|
|
5
|
-
import "./chunk-
|
|
3
|
+
} from "./chunk-AAUMUHUI.js";
|
|
4
|
+
import "./chunk-JEXBP7CR.js";
|
|
5
|
+
import "./chunk-6KPBYCPE.js";
|
|
6
6
|
import {
|
|
7
7
|
createApiClient
|
|
8
|
-
} from "./chunk-
|
|
9
|
-
import "./chunk-
|
|
8
|
+
} from "./chunk-JRVKW4OO.js";
|
|
9
|
+
import "./chunk-7JC4Z6FQ.js";
|
|
10
10
|
import "./chunk-AOJU5LKX.js";
|
|
11
11
|
import {
|
|
12
12
|
isMachineFormat
|
|
@@ -10,9 +10,9 @@ import {
|
|
|
10
10
|
backfillSnapshotAttributionCommand,
|
|
11
11
|
backfillTrafficClassificationCommand,
|
|
12
12
|
replayQueryAuditLog
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-EM2HAM2U.js";
|
|
14
14
|
import "./chunk-C3UFOS7J.js";
|
|
15
|
-
import "./chunk-
|
|
15
|
+
import "./chunk-7JC4Z6FQ.js";
|
|
16
16
|
import "./chunk-HGMYEDAQ.js";
|
|
17
17
|
import "./chunk-XYYWKCJQ.js";
|
|
18
18
|
import {
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
2
|
trackCliConnection
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-AAUMUHUI.js";
|
|
4
4
|
import {
|
|
5
5
|
answerServiceDescriptors
|
|
6
6
|
} from "./chunk-ZXYCPRNY.js";
|
|
7
7
|
import {
|
|
8
8
|
outcomeFailure
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-JEXBP7CR.js";
|
|
10
10
|
import {
|
|
11
11
|
isLoopbackBindHost
|
|
12
12
|
} from "./chunk-TSENU4GG.js";
|
|
@@ -16,10 +16,10 @@ import {
|
|
|
16
16
|
import {
|
|
17
17
|
isTelemetryEnabled,
|
|
18
18
|
recordInstallRef
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-6KPBYCPE.js";
|
|
20
20
|
import {
|
|
21
21
|
createApiClient
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-JRVKW4OO.js";
|
|
23
23
|
import {
|
|
24
24
|
configExists,
|
|
25
25
|
getAnswerServiceEnv,
|
|
@@ -30,7 +30,7 @@ import {
|
|
|
30
30
|
loadConfigRaw,
|
|
31
31
|
saveConfig,
|
|
32
32
|
withBootstrapProviderDefaults
|
|
33
|
-
} from "./chunk-
|
|
33
|
+
} from "./chunk-7JC4Z6FQ.js";
|
|
34
34
|
import "./chunk-AOJU5LKX.js";
|
|
35
35
|
import {
|
|
36
36
|
CliError,
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import {
|
|
2
2
|
trackCliConnection
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-AAUMUHUI.js";
|
|
4
4
|
import {
|
|
5
5
|
outcomeFailure
|
|
6
|
-
} from "./chunk-
|
|
7
|
-
import "./chunk-
|
|
6
|
+
} from "./chunk-JEXBP7CR.js";
|
|
7
|
+
import "./chunk-6KPBYCPE.js";
|
|
8
8
|
import {
|
|
9
9
|
createApiClient
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-JRVKW4OO.js";
|
|
11
11
|
import {
|
|
12
12
|
loadConfig,
|
|
13
13
|
saveConfigPatch
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-7JC4Z6FQ.js";
|
|
15
15
|
import "./chunk-AOJU5LKX.js";
|
|
16
16
|
import {
|
|
17
17
|
CliError,
|
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
isStoredPageReadTool,
|
|
6
6
|
isStoredReadTool,
|
|
7
7
|
truncateToolResult
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-ORZBHCZR.js";
|
|
9
9
|
import {
|
|
10
10
|
CANONRY_MCP_TOOLKITS
|
|
11
11
|
} from "./chunk-NDTU7FGL.js";
|
|
@@ -22,7 +22,7 @@ import {
|
|
|
22
22
|
resolveApiKeyFor,
|
|
23
23
|
resolveModelForProvider,
|
|
24
24
|
validateAgentProviderRegistry
|
|
25
|
-
} from "./chunk-
|
|
25
|
+
} from "./chunk-7JC4Z6FQ.js";
|
|
26
26
|
import {
|
|
27
27
|
CanonryMcpToolNames,
|
|
28
28
|
canonryMcpTools
|
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
loadConfig,
|
|
6
6
|
loadConfigRaw,
|
|
7
7
|
saveConfigPatch
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-7JC4Z6FQ.js";
|
|
9
9
|
import {
|
|
10
10
|
CANONRY_NPM_PACKAGE_URL,
|
|
11
11
|
compareSemver,
|
|
@@ -389,11 +389,11 @@ function getOrCreateAnonymousId() {
|
|
|
389
389
|
try {
|
|
390
390
|
const config = loadConfig();
|
|
391
391
|
if (config.anonymousId) return config.anonymousId;
|
|
392
|
+
if (anonymousIdWriteHolds > 0) return getDeterministicAnonymousId();
|
|
392
393
|
const carried = preConfigAnonymousId?.configPath === getConfigPath() ? preConfigAnonymousId.id : void 0;
|
|
393
394
|
const id = carried ?? crypto.randomUUID();
|
|
394
|
-
config.anonymousId = id;
|
|
395
395
|
try {
|
|
396
|
-
saveConfigPatch(
|
|
396
|
+
saveConfigPatch({ anonymousId: id });
|
|
397
397
|
} catch {
|
|
398
398
|
return getDeterministicAnonymousId();
|
|
399
399
|
}
|
|
@@ -407,6 +407,16 @@ function getOrCreateAnonymousId() {
|
|
|
407
407
|
return fallback;
|
|
408
408
|
}
|
|
409
409
|
var preConfigAnonymousId;
|
|
410
|
+
var anonymousIdWriteHolds = 0;
|
|
411
|
+
function holdAnonymousIdWrites() {
|
|
412
|
+
anonymousIdWriteHolds += 1;
|
|
413
|
+
let held = true;
|
|
414
|
+
return () => {
|
|
415
|
+
if (!held) return;
|
|
416
|
+
held = false;
|
|
417
|
+
anonymousIdWriteHolds -= 1;
|
|
418
|
+
};
|
|
419
|
+
}
|
|
410
420
|
function readEnvAnonymousId() {
|
|
411
421
|
const raw = process.env[ANON_ID_ENV_VAR]?.trim();
|
|
412
422
|
if (!raw) return void 0;
|
|
@@ -600,6 +610,7 @@ export {
|
|
|
600
610
|
getTelemetryStatus,
|
|
601
611
|
isTelemetryEnabled,
|
|
602
612
|
getOrCreateAnonymousId,
|
|
613
|
+
holdAnonymousIdWrites,
|
|
603
614
|
isFirstRun,
|
|
604
615
|
showFirstRunNotice,
|
|
605
616
|
detectAndTrackUpgrade,
|
|
@@ -1011,6 +1011,10 @@ function getConfigDir() {
|
|
|
1011
1011
|
function getConfigPath() {
|
|
1012
1012
|
return path.join(getConfigDir(), "config.yaml");
|
|
1013
1013
|
}
|
|
1014
|
+
var loadedConfigPaths = /* @__PURE__ */ new WeakMap();
|
|
1015
|
+
function loadedConfigPath(config) {
|
|
1016
|
+
return loadedConfigPaths.get(config);
|
|
1017
|
+
}
|
|
1014
1018
|
function loadConfig(configPath = getConfigPath()) {
|
|
1015
1019
|
if (!fs.existsSync(configPath)) {
|
|
1016
1020
|
throw new Error(
|
|
@@ -1159,6 +1163,7 @@ Do not use "canonry init --force" for recovery. It replaces credentials without
|
|
|
1159
1163
|
if (parsedExternalMcp) {
|
|
1160
1164
|
parsed.externalMcpServers = parsedExternalMcp;
|
|
1161
1165
|
}
|
|
1166
|
+
loadedConfigPaths.set(parsed, path.resolve(configPath));
|
|
1162
1167
|
return parsed;
|
|
1163
1168
|
}
|
|
1164
1169
|
function parseExternalMcpEnv(raw) {
|
|
@@ -1183,8 +1188,7 @@ function parseExternalMcpEnv(raw) {
|
|
|
1183
1188
|
}
|
|
1184
1189
|
return servers.length > 0 ? servers : void 0;
|
|
1185
1190
|
}
|
|
1186
|
-
function loadConfigRaw() {
|
|
1187
|
-
const configPath = getConfigPath();
|
|
1191
|
+
function loadConfigRaw(configPath = getConfigPath()) {
|
|
1188
1192
|
if (!fs.existsSync(configPath)) return null;
|
|
1189
1193
|
try {
|
|
1190
1194
|
return parse(fs.readFileSync(configPath, "utf-8")) ?? null;
|
|
@@ -1221,13 +1225,12 @@ function writeConfigAtomically(configPath, contents) {
|
|
|
1221
1225
|
throw error;
|
|
1222
1226
|
}
|
|
1223
1227
|
}
|
|
1224
|
-
function saveConfig(config) {
|
|
1225
|
-
const configDir =
|
|
1228
|
+
function saveConfig(config, configPath = getConfigPath()) {
|
|
1229
|
+
const configDir = path.dirname(configPath);
|
|
1226
1230
|
if (!fs.existsSync(configDir)) {
|
|
1227
1231
|
fs.mkdirSync(configDir, { recursive: true });
|
|
1228
1232
|
}
|
|
1229
|
-
const
|
|
1230
|
-
const onDisk = loadConfigRaw();
|
|
1233
|
+
const onDisk = loadConfigRaw(configPath);
|
|
1231
1234
|
const merged = onDisk ? { ...onDisk } : {};
|
|
1232
1235
|
for (const [key, value] of Object.entries(config)) {
|
|
1233
1236
|
if (value !== void 0) {
|
|
@@ -1250,11 +1253,11 @@ function saveConfig(config) {
|
|
|
1250
1253
|
writeConfigAtomically(configPath, yaml);
|
|
1251
1254
|
}
|
|
1252
1255
|
function saveConfigPatch(patch, options = {}) {
|
|
1253
|
-
const
|
|
1256
|
+
const configPath = options.configPath ?? getConfigPath();
|
|
1257
|
+
const configDir = path.dirname(configPath);
|
|
1254
1258
|
if (!fs.existsSync(configDir)) {
|
|
1255
1259
|
fs.mkdirSync(configDir, { recursive: true });
|
|
1256
1260
|
}
|
|
1257
|
-
const configPath = getConfigPath();
|
|
1258
1261
|
let base = {};
|
|
1259
1262
|
let baseRead = false;
|
|
1260
1263
|
if (fs.existsSync(configPath)) {
|
|
@@ -1356,6 +1359,7 @@ export {
|
|
|
1356
1359
|
providersWithUnsupportedBatch,
|
|
1357
1360
|
getConfigDir,
|
|
1358
1361
|
getConfigPath,
|
|
1362
|
+
loadedConfigPath,
|
|
1359
1363
|
loadConfig,
|
|
1360
1364
|
loadConfigRaw,
|
|
1361
1365
|
saveConfig,
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
trackIntegrationConnection
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-JEXBP7CR.js";
|
|
4
4
|
import {
|
|
5
5
|
cliRuntimeContext
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-6KPBYCPE.js";
|
|
7
7
|
|
|
8
8
|
// src/cli-connection-telemetry.ts
|
|
9
9
|
function trackCliConnection(properties) {
|