@canonry/canonry 7.77.0 → 7.77.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (81) hide show
  1. package/README.md +1 -3
  2. package/dist/{ads-4WDIF7OK.js → ads-M6IAQDG7.js} +2 -2
  3. package/dist/{agent-UHSMOPSH.js → agent-X2T5X5K3.js} +5 -5
  4. package/dist/{agent-ask-QYGJQN5T.js → agent-ask-55LQH4TI.js} +2 -2
  5. package/dist/{agent-conversations-FVNLFQYS.js → agent-conversations-O6WC2NPV.js} +2 -2
  6. package/dist/{agent-memory-WBPVEUHN.js → agent-memory-6DWFMB4I.js} +2 -2
  7. package/dist/{agent-providers-7BGHHFRV.js → agent-providers-Q4YDVQX3.js} +2 -2
  8. package/dist/{agent-transcript-BSTEVSXP.js → agent-transcript-SJKCP2AO.js} +2 -2
  9. package/dist/{analytics-VTO2M4BN.js → analytics-4JOQMWH7.js} +2 -2
  10. package/dist/{apply-IVXI3B65.js → apply-EAKKKIZD.js} +2 -2
  11. package/dist/{backfill-PPXOHZR2.js → backfill-PASKIVGP.js} +2 -2
  12. package/dist/{backlinks-NSC56WKE.js → backlinks-TICPC323.js} +2 -2
  13. package/dist/{bing-BUNJKL7J.js → bing-MC7TSL4E.js} +2 -2
  14. package/dist/{bootstrap-ZDDSHNJV.js → bootstrap-X2BW64W7.js} +5 -5
  15. package/dist/{cdp-ZK7SNTHK.js → cdp-TCJKITCR.js} +5 -5
  16. package/dist/{chunk-IFLPQ5RQ.js → chunk-2BRVGCVU.js} +6 -8
  17. package/dist/{chunk-TS2B42RE.js → chunk-2SCPPWRW.js} +1 -1
  18. package/dist/{chunk-4HJO7VFM.js → chunk-6EZQHF67.js} +307 -307
  19. package/dist/{chunk-IQLEMBGA.js → chunk-B7JHQ3FW.js} +2 -2
  20. package/dist/{chunk-GXJWZOUC.js → chunk-CCNPBUQ5.js} +2 -2
  21. package/dist/{chunk-AWSK2DBU.js → chunk-CQMNWC5K.js} +90 -68
  22. package/dist/{chunk-CKJLL2FQ.js → chunk-FXIZBJZ4.js} +1 -1
  23. package/dist/{chunk-HCYSFU4U.js → chunk-H4ANN32B.js} +1 -1
  24. package/dist/{chunk-ZER6XCES.js → chunk-JZT3ZRD3.js} +1 -1
  25. package/dist/{chunk-GUEB3MPU.js → chunk-P3BWUKJL.js} +2 -2
  26. package/dist/{chunk-5QEGJVU5.js → chunk-TJYS2XCI.js} +2 -2
  27. package/dist/{chunk-Z7YPLZRD.js → chunk-TRW4XLQK.js} +1 -1
  28. package/dist/{chunk-RHRF7NBX.js → chunk-UB65XBH2.js} +1 -1
  29. package/dist/{chunk-ZOBE2CMQ.js → chunk-UGNNR7EO.js} +1 -1
  30. package/dist/{chunk-WYQQTWUB.js → chunk-X7UC755Q.js} +1 -1
  31. package/dist/{chunk-IUVJLNW4.js → chunk-YMOQSEO3.js} +1 -1
  32. package/dist/{citations-C2IJ7RHO.js → citations-IA3OCV53.js} +2 -2
  33. package/dist/{cli-commands-DX4ZVGV2.js → cli-commands-O7BYY3W5.js} +4 -4
  34. package/dist/cli.js +7 -7
  35. package/dist/{competitor-H7MYXUC2.js → competitor-4FVAZAQZ.js} +2 -2
  36. package/dist/{content-DDL4LI2E.js → content-OVBF6U7Z.js} +2 -2
  37. package/dist/{dashboard-CVJEQ56Q.js → dashboard-UGZSSIWK.js} +1 -1
  38. package/dist/{discover-YRCXWFNW.js → discover-R5BYAPOU.js} +2 -2
  39. package/dist/{discover-eval-QTOKYZWS.js → discover-eval-3FA4BR2L.js} +2 -2
  40. package/dist/{doctor-XC3VBBDF.js → doctor-2Q5LVV2P.js} +2 -2
  41. package/dist/{evidence-CKMSRS5C.js → evidence-LMGRT5IO.js} +2 -2
  42. package/dist/{export-cmd-YXESSTJV.js → export-cmd-LBLZ273Z.js} +2 -2
  43. package/dist/{ga-B45HBSS4.js → ga-PBIWRU67.js} +2 -2
  44. package/dist/{gbp-3IWONAO5.js → gbp-NYG7SW6P.js} +2 -2
  45. package/dist/{google-QNIYJEQ6.js → google-57XEYVOU.js} +2 -2
  46. package/dist/{health-cmd-WEBLFHNL.js → health-cmd-SJVYQZQL.js} +2 -2
  47. package/dist/{history-3DS5VTIQ.js → history-5XYZNWGP.js} +2 -2
  48. package/dist/index.d.ts +77 -67
  49. package/dist/index.js +8 -8
  50. package/dist/{init-2ZO6AUFB.js → init-KXR6PJEQ.js} +7 -7
  51. package/dist/{insights-GMTFJXMS.js → insights-L7OOH34I.js} +2 -2
  52. package/dist/{journeys-PSCN4GGH.js → journeys-VXBGDFBO.js} +2 -2
  53. package/dist/{keys-EBZDFHTP.js → keys-YMB5HAAG.js} +2 -2
  54. package/dist/{keyword-3WHXQ4UU.js → keyword-RZEMKH3K.js} +2 -2
  55. package/dist/{logs-QL3JWFOG.js → logs-ONZWSYXS.js} +2 -2
  56. package/dist/{mcp-4BMVUSZU.js → mcp-KK6EFHAZ.js} +3 -3
  57. package/dist/mcp.js +4 -4
  58. package/dist/{measurement-plan-VJK334AA.js → measurement-plan-LE7INWW6.js} +3 -3
  59. package/dist/{notify-U56W2ZAT.js → notify-T6T5LYRR.js} +2 -2
  60. package/dist/{organic-evidence-ZXQSTOCR.js → organic-evidence-P2GZ766W.js} +2 -2
  61. package/dist/{overview-GV7FE4HJ.js → overview-P2AILIWJ.js} +3 -3
  62. package/dist/{project-WMOIQ32P.js → project-7MHQSOJD.js} +2 -2
  63. package/dist/{query-FWE33SEK.js → query-EUDMU6L7.js} +2 -2
  64. package/dist/{research-32XG4HOS.js → research-4DASCVGY.js} +2 -2
  65. package/dist/{results-export-O43APU4C.js → results-export-GKXHX55L.js} +2 -2
  66. package/dist/{run-4T3D6ZNV.js → run-6LJGMJ5S.js} +3 -3
  67. package/dist/{schedule-AMXK44PA.js → schedule-D74P2BO5.js} +2 -2
  68. package/dist/{search-WVBOZLYM.js → search-W7AOYWRM.js} +2 -2
  69. package/dist/{serve-V67FDERY.js → serve-UNVCQSRC.js} +13 -11
  70. package/dist/{session-SLRAB77J.js → session-6NGNVCKP.js} +4 -4
  71. package/dist/{settings-7L6BSQSY.js → settings-LGD64PFE.js} +2 -2
  72. package/dist/{snapshot-QUX233WK.js → snapshot-PDYGSZZH.js} +2 -2
  73. package/dist/{status-UUYDHVVH.js → status-UZ4SE7ZP.js} +3 -3
  74. package/dist/{technical-aeo-LHZ7YUTK.js → technical-aeo-BNH7NV44.js} +2 -2
  75. package/dist/{telemetry-H2NMJ4KC.js → telemetry-UWDS7QNJ.js} +3 -3
  76. package/dist/{tools-JLNFAHYL.js → tools-EDPBQCI2.js} +3 -3
  77. package/dist/{traffic-W7N5E46S.js → traffic-NI6ACQO4.js} +2 -2
  78. package/dist/{users-OMNV5T6W.js → users-XTZ65NLC.js} +2 -2
  79. package/dist/{visibility-stats-X2QDF7P6.js → visibility-stats-EPF6MHYQ.js} +2 -2
  80. package/dist/{wordpress-6ZPLTOWU.js → wordpress-ZACJ3H5M.js} +2 -2
  81. 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
- **[DataForSEO integration](#seo-data-with-dataforseo):** Explore Google keyword metrics, organic rankings, and domain estimates through the dashboard, CLI, MCP, and API.
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,7 +1,7 @@
1
1
  import {
2
2
  createApiClient
3
- } from "./chunk-WYQQTWUB.js";
4
- import "./chunk-IFLPQ5RQ.js";
3
+ } from "./chunk-X7UC755Q.js";
4
+ import "./chunk-2BRVGCVU.js";
5
5
  import {
6
6
  emitJsonl
7
7
  } from "./chunk-Z7IUAJOF.js";
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  trackCliConnection
3
- } from "./chunk-GXJWZOUC.js";
4
- import "./chunk-5QEGJVU5.js";
5
- import "./chunk-IUVJLNW4.js";
3
+ } from "./chunk-CCNPBUQ5.js";
4
+ import "./chunk-TJYS2XCI.js";
5
+ import "./chunk-YMOQSEO3.js";
6
6
  import {
7
7
  createApiClient
8
- } from "./chunk-WYQQTWUB.js";
9
- import "./chunk-IFLPQ5RQ.js";
8
+ } from "./chunk-X7UC755Q.js";
9
+ import "./chunk-2BRVGCVU.js";
10
10
  import "./chunk-AOJU5LKX.js";
11
11
  import {
12
12
  isMachineFormat
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  createApiClient
3
- } from "./chunk-WYQQTWUB.js";
4
- import "./chunk-IFLPQ5RQ.js";
3
+ } from "./chunk-X7UC755Q.js";
4
+ import "./chunk-2BRVGCVU.js";
5
5
  import "./chunk-AOJU5LKX.js";
6
6
  import {
7
7
  CliError,
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  createApiClient
3
- } from "./chunk-WYQQTWUB.js";
4
- import "./chunk-IFLPQ5RQ.js";
3
+ } from "./chunk-X7UC755Q.js";
4
+ import "./chunk-2BRVGCVU.js";
5
5
  import "./chunk-AOJU5LKX.js";
6
6
  import {
7
7
  CliError,
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  createApiClient
3
- } from "./chunk-WYQQTWUB.js";
4
- import "./chunk-IFLPQ5RQ.js";
3
+ } from "./chunk-X7UC755Q.js";
4
+ import "./chunk-2BRVGCVU.js";
5
5
  import {
6
6
  emitJsonl
7
7
  } from "./chunk-Z7IUAJOF.js";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  createApiClient
3
- } from "./chunk-WYQQTWUB.js";
4
- import "./chunk-IFLPQ5RQ.js";
3
+ } from "./chunk-X7UC755Q.js";
4
+ import "./chunk-2BRVGCVU.js";
5
5
  import {
6
6
  emitJsonl
7
7
  } from "./chunk-Z7IUAJOF.js";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  createApiClient
3
- } from "./chunk-WYQQTWUB.js";
4
- import "./chunk-IFLPQ5RQ.js";
3
+ } from "./chunk-X7UC755Q.js";
4
+ import "./chunk-2BRVGCVU.js";
5
5
  import "./chunk-AOJU5LKX.js";
6
6
  import {
7
7
  CliError,
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  createApiClient
3
- } from "./chunk-WYQQTWUB.js";
4
- import "./chunk-IFLPQ5RQ.js";
3
+ } from "./chunk-X7UC755Q.js";
4
+ import "./chunk-2BRVGCVU.js";
5
5
  import "./chunk-AOJU5LKX.js";
6
6
  import {
7
7
  CliError,
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  createApiClient
3
- } from "./chunk-WYQQTWUB.js";
4
- import "./chunk-IFLPQ5RQ.js";
3
+ } from "./chunk-X7UC755Q.js";
4
+ import "./chunk-2BRVGCVU.js";
5
5
  import "./chunk-AOJU5LKX.js";
6
6
  import {
7
7
  CliError,
@@ -10,9 +10,9 @@ import {
10
10
  backfillSnapshotAttributionCommand,
11
11
  backfillTrafficClassificationCommand,
12
12
  replayQueryAuditLog
13
- } from "./chunk-HCYSFU4U.js";
13
+ } from "./chunk-H4ANN32B.js";
14
14
  import "./chunk-C3UFOS7J.js";
15
- import "./chunk-IFLPQ5RQ.js";
15
+ import "./chunk-2BRVGCVU.js";
16
16
  import "./chunk-HGMYEDAQ.js";
17
17
  import "./chunk-XYYWKCJQ.js";
18
18
  import {
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  createApiClient
3
- } from "./chunk-WYQQTWUB.js";
4
- import "./chunk-IFLPQ5RQ.js";
3
+ } from "./chunk-X7UC755Q.js";
4
+ import "./chunk-2BRVGCVU.js";
5
5
  import {
6
6
  emitJsonl
7
7
  } from "./chunk-Z7IUAJOF.js";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  createApiClient
3
- } from "./chunk-WYQQTWUB.js";
4
- import "./chunk-IFLPQ5RQ.js";
3
+ } from "./chunk-X7UC755Q.js";
4
+ import "./chunk-2BRVGCVU.js";
5
5
  import {
6
6
  emitJsonl
7
7
  } from "./chunk-Z7IUAJOF.js";
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  trackCliConnection
3
- } from "./chunk-GXJWZOUC.js";
3
+ } from "./chunk-CCNPBUQ5.js";
4
4
  import {
5
5
  answerServiceDescriptors
6
6
  } from "./chunk-ZXYCPRNY.js";
7
7
  import {
8
8
  outcomeFailure
9
- } from "./chunk-5QEGJVU5.js";
9
+ } from "./chunk-TJYS2XCI.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-IUVJLNW4.js";
19
+ } from "./chunk-YMOQSEO3.js";
20
20
  import {
21
21
  createApiClient
22
- } from "./chunk-WYQQTWUB.js";
22
+ } from "./chunk-X7UC755Q.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-IFLPQ5RQ.js";
33
+ } from "./chunk-2BRVGCVU.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-GXJWZOUC.js";
3
+ } from "./chunk-CCNPBUQ5.js";
4
4
  import {
5
5
  outcomeFailure
6
- } from "./chunk-5QEGJVU5.js";
7
- import "./chunk-IUVJLNW4.js";
6
+ } from "./chunk-TJYS2XCI.js";
7
+ import "./chunk-YMOQSEO3.js";
8
8
  import {
9
9
  createApiClient
10
- } from "./chunk-WYQQTWUB.js";
10
+ } from "./chunk-X7UC755Q.js";
11
11
  import {
12
12
  loadConfig,
13
13
  saveConfigPatch
14
- } from "./chunk-IFLPQ5RQ.js";
14
+ } from "./chunk-2BRVGCVU.js";
15
15
  import "./chunk-AOJU5LKX.js";
16
16
  import {
17
17
  CliError,
@@ -1183,8 +1183,7 @@ function parseExternalMcpEnv(raw) {
1183
1183
  }
1184
1184
  return servers.length > 0 ? servers : void 0;
1185
1185
  }
1186
- function loadConfigRaw() {
1187
- const configPath = getConfigPath();
1186
+ function loadConfigRaw(configPath = getConfigPath()) {
1188
1187
  if (!fs.existsSync(configPath)) return null;
1189
1188
  try {
1190
1189
  return parse(fs.readFileSync(configPath, "utf-8")) ?? null;
@@ -1221,13 +1220,12 @@ function writeConfigAtomically(configPath, contents) {
1221
1220
  throw error;
1222
1221
  }
1223
1222
  }
1224
- function saveConfig(config) {
1225
- const configDir = getConfigDir();
1223
+ function saveConfig(config, configPath = getConfigPath()) {
1224
+ const configDir = path.dirname(configPath);
1226
1225
  if (!fs.existsSync(configDir)) {
1227
1226
  fs.mkdirSync(configDir, { recursive: true });
1228
1227
  }
1229
- const configPath = getConfigPath();
1230
- const onDisk = loadConfigRaw();
1228
+ const onDisk = loadConfigRaw(configPath);
1231
1229
  const merged = onDisk ? { ...onDisk } : {};
1232
1230
  for (const [key, value] of Object.entries(config)) {
1233
1231
  if (value !== void 0) {
@@ -1250,11 +1248,11 @@ function saveConfig(config) {
1250
1248
  writeConfigAtomically(configPath, yaml);
1251
1249
  }
1252
1250
  function saveConfigPatch(patch, options = {}) {
1253
- const configDir = getConfigDir();
1251
+ const configPath = options.configPath ?? getConfigPath();
1252
+ const configDir = path.dirname(configPath);
1254
1253
  if (!fs.existsSync(configDir)) {
1255
1254
  fs.mkdirSync(configDir, { recursive: true });
1256
1255
  }
1257
- const configPath = getConfigPath();
1258
1256
  let base = {};
1259
1257
  let baseRead = false;
1260
1258
  if (fs.existsSync(configPath)) {
@@ -6,7 +6,7 @@ import {
6
6
  import {
7
7
  createApiClient,
8
8
  runWithUsageTags
9
- } from "./chunk-WYQQTWUB.js";
9
+ } from "./chunk-X7UC755Q.js";
10
10
  import {
11
11
  canonryMcpTools,
12
12
  mcpOutputSchema,