@canonry/canonry 7.98.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.
Files changed (182) hide show
  1. package/README.md +18 -16
  2. package/assets/agent-workspace/AGENTS.md +13 -6
  3. package/assets/agent-workspace/skills/aero/SKILL.md +45 -26
  4. package/assets/agent-workspace/skills/aero/references/agent-operations.md +47 -12
  5. package/assets/agent-workspace/skills/aero/references/memory-patterns.md +1 -1
  6. package/assets/agent-workspace/skills/aero/references/orchestration.md +9 -9
  7. package/assets/agent-workspace/skills/aero/references/reporting.md +8 -4
  8. package/assets/agent-workspace/skills/aero/references/seo-analysis.md +2 -2
  9. package/assets/agent-workspace/skills/aero/references/site-health.md +34 -23
  10. package/assets/agent-workspace/skills/aero/soul.md +2 -2
  11. package/assets/agent-workspace/skills/canonry/SKILL.md +37 -7
  12. package/assets/agent-workspace/skills/canonry/references/aeo-analysis.md +14 -11
  13. package/assets/agent-workspace/skills/canonry/references/canonry-cli.md +122 -53
  14. package/assets/assets/AccessControls-DzO5Y8v9.js +2 -0
  15. package/assets/assets/AgentSetupPage-DWWovaCw.js +36 -0
  16. package/assets/assets/AuditHistoryPanel-BG-n1i8c.js +1 -0
  17. package/assets/assets/BacklinksPage-D6wdOMXt.js +1 -0
  18. package/assets/assets/ChartPrimitives-CtKdkn64.js +3 -0
  19. package/assets/assets/Hint-3TTi0MgX.js +1 -0
  20. package/assets/assets/{HistoryPage-DeN79d3c.js → HistoryPage-B_ReWHbL.js} +1 -1
  21. package/assets/assets/InfoTooltip-D29JcNMW.js +1 -0
  22. package/assets/assets/MeasurementPropertyPage-zdyLL-kl.js +4 -0
  23. package/assets/assets/ProjectPage-KZNKXR4w.js +15 -0
  24. package/assets/assets/RunsPage-DxN0xXQh.js +1 -0
  25. package/assets/assets/ServerTrafficSection-CvISj5pf.js +40 -0
  26. package/assets/assets/SettingsPage-CpRpBlMV.js +1 -0
  27. package/assets/assets/ToneBadge-DcwPruHr.js +60 -0
  28. package/assets/assets/TrafficPage-zk6zMZyz.js +1 -0
  29. package/assets/assets/TrafficSourceDetailPage-DJtsI06Z.js +1 -0
  30. package/assets/assets/{account-context-CdEHcI5S.js → account-context-CoJVqEXZ.js} +1 -1
  31. package/assets/assets/{agent-trust-copy-N6WacCSg.js → agent-trust-copy-BIXDMtBm.js} +1 -1
  32. package/assets/assets/{card-B1O0SunG.js → card-Dwmc7Srx.js} +1 -1
  33. package/assets/assets/index-fh1T5JQY.css +1 -0
  34. package/assets/assets/index-mqc2mWUR.js +42 -0
  35. package/assets/assets/query-client-Tg1fZu4i.js +1 -0
  36. package/assets/assets/react-query-BqcEEfEO.js +1 -0
  37. package/assets/assets/{react-sigma_core.esm.min-f4uuOgrw.js → react-sigma_core.esm.min-D1q0DR_j.js} +3 -3
  38. package/assets/assets/{server-traffic-CkSCFMnL.js → server-traffic-Djnh_9f0.js} +1 -1
  39. package/assets/assets/service-BQjBdN4O.js +1 -0
  40. package/assets/assets/use-tooltip-position-BOzm-6Wy.js +1 -0
  41. package/assets/assets/vendor-lucide-iE5MEh2-.js +1 -0
  42. package/assets/assets/{vendor-markdown-BDQ1GKGP.js → vendor-markdown-BBGbNklj.js} +1 -1
  43. package/assets/assets/{vendor-radix-BGYlvS2l.js → vendor-radix-DKCt5Z_h.js} +1 -1
  44. package/assets/assets/{vendor-recharts-DhEHcK3G.js → vendor-recharts-D3MLFU3q.js} +1 -1
  45. package/assets/assets/{vendor-tanstack-BNuZ37rE.js → vendor-tanstack-B90HW50P.js} +2 -2
  46. package/assets/index.html +16 -15
  47. package/dist/{ads-PQ4OP6OH.js → ads-FVPZ6R6Z.js} +3 -3
  48. package/dist/{agent-B6ZPL2HH.js → agent-2LPU2E5I.js} +7 -7
  49. package/dist/{agent-ask-ZUKNXRAX.js → agent-ask-5ODREK6D.js} +3 -3
  50. package/dist/{agent-conversations-DJ7WU7PL.js → agent-conversations-SNLOOJEM.js} +3 -3
  51. package/dist/{agent-journeys-LGUI3SQG.js → agent-journeys-XDXVL6PK.js} +3 -3
  52. package/dist/{agent-memory-PWZJ7G5Q.js → agent-memory-NKAI2S3U.js} +3 -3
  53. package/dist/{agent-providers-TEERDNJT.js → agent-providers-R5L7A72X.js} +3 -3
  54. package/dist/{agent-transcript-KDPOPK5Z.js → agent-transcript-C5WAGYVC.js} +3 -3
  55. package/dist/{analytics-NFW5RQRT.js → analytics-EJVOLIQL.js} +33 -13
  56. package/dist/{apply-EP4V4UF5.js → apply-I6JOM247.js} +3 -3
  57. package/dist/{backfill-6UTNNVFO.js → backfill-UVUR36IB.js} +10 -10
  58. package/dist/{backlinks-SG5GV5X5.js → backlinks-3VMVACWN.js} +3 -3
  59. package/dist/{bing-Q4W24JNC.js → bing-R5RL3PW2.js} +3 -3
  60. package/dist/{bootstrap-WEMERVNZ.js → bootstrap-GMMSDTNO.js} +12 -12
  61. package/dist/{cdp-3XKBJGHO.js → cdp-FJKUXHEY.js} +7 -7
  62. package/dist/{chunk-KK3Z34AN.js → chunk-2DV7F6XA.js} +91 -2
  63. package/dist/{chunk-MTW37GXF.js → chunk-2FWYWGIR.js} +2 -2
  64. package/dist/{chunk-Q5SNOMRB.js → chunk-56VVRWJM.js} +14 -5
  65. package/dist/{chunk-52M2JWCB.js → chunk-7BEGCVVB.js} +1 -1
  66. package/dist/{chunk-WZSDGC45.js → chunk-7BH53MOB.js} +27 -2
  67. package/dist/{chunk-IX5AC3QB.js → chunk-7J2RIIYU.js} +1450 -1067
  68. package/dist/{chunk-UXXZXXNG.js → chunk-7SNMIXEQ.js} +2 -2
  69. package/dist/{chunk-2XCYEBQV.js → chunk-AMGM55CP.js} +2 -2
  70. package/dist/{chunk-MSI4BGFN.js → chunk-AYKTVQF7.js} +13 -5
  71. package/dist/{chunk-3JWY65XO.js → chunk-BKDRT4VS.js} +7 -7
  72. package/dist/{chunk-FQ3L2TIX.js → chunk-COHSL6KW.js} +1 -1
  73. package/dist/{chunk-X3UXMHWC.js → chunk-DGDLLRS4.js} +1 -1
  74. package/dist/{chunk-YJITDEZR.js → chunk-DHIB7EIA.js} +4 -4
  75. package/dist/{chunk-BLW327AU.js → chunk-EE3QTCLS.js} +18 -6
  76. package/dist/{chunk-3GMBHGQ5.js → chunk-F46TBLXK.js} +204 -94
  77. package/dist/{chunk-RTH5JVC3.js → chunk-FBO25TA3.js} +1 -1
  78. package/dist/{chunk-2Q7JEC6N.js → chunk-FZ3MUTU3.js} +2 -2
  79. package/dist/{chunk-64R66MWZ.js → chunk-G6QN4VFS.js} +16 -10
  80. package/dist/{chunk-ISIJ2NS4.js → chunk-HBHLYWKE.js} +9 -6
  81. package/dist/{chunk-EJZ444VV.js → chunk-HL2LGRTI.js} +8 -6
  82. package/dist/chunk-J6536OL6.js +31 -0
  83. package/dist/{chunk-RLKI2QF7.js → chunk-KVRX7YIH.js} +20 -10
  84. package/dist/{chunk-3BA75QYU.js → chunk-LJO2BKWU.js} +1 -1
  85. package/dist/{chunk-CN6MVUY3.js → chunk-LNVFERI4.js} +1 -1
  86. package/dist/{chunk-ZADRESLB.js → chunk-NQYJHKML.js} +39 -7
  87. package/dist/{chunk-IAGC2MGP.js → chunk-O5UFAXUI.js} +646 -588
  88. package/dist/{chunk-RGFIRJ7F.js → chunk-O6APBEJE.js} +2 -2
  89. package/dist/{chunk-ZBTUISPG.js → chunk-O7S7OHLE.js} +9399 -8388
  90. package/dist/{chunk-ER5ZHAB2.js → chunk-QS5DWJDI.js} +2 -2
  91. package/dist/{chunk-QSL3FXE4.js → chunk-RBG2QXQM.js} +4 -4
  92. package/dist/{chunk-SAKH2RRF.js → chunk-SWZXHHAG.js} +16 -8
  93. package/dist/{chunk-VMGZBH5L.js → chunk-T7UDY7W3.js} +26 -11
  94. package/dist/{chunk-OL2L5ANJ.js → chunk-UGO2FO6V.js} +119 -55
  95. package/dist/{chunk-J6MYB3F4.js → chunk-VHULVUDL.js} +1 -1
  96. package/dist/{chunk-O22WSFWL.js → chunk-YGAQQSCL.js} +56339 -54966
  97. package/dist/{chunk-TNOYUE2L.js → chunk-YIIRS7V7.js} +98 -65
  98. package/dist/{chunk-64KB6YTG.js → chunk-YU2WX7RD.js} +3 -3
  99. package/dist/{citations-5OSQ3ZYU.js → citations-LOEQRDUB.js} +21 -10
  100. package/dist/{cli-catalog-T5OAVKGS.js → cli-catalog-5RXNUFBS.js} +3 -3
  101. package/dist/{cli-commands-VATCVJKW.js → cli-commands-HE2BQY3Y.js} +7 -7
  102. package/dist/cli.js +22 -17
  103. package/dist/{competitor-YIKTMTHY.js → competitor-PIX2BHJW.js} +3 -3
  104. package/dist/{content-DS2LKR7J.js → content-PJGW4WZF.js} +3 -3
  105. package/dist/{dashboard-HLVRRRI4.js → dashboard-7OKBD4MG.js} +6 -6
  106. package/dist/{demo-A5DTVJGK.js → demo-SCOFAWFM.js} +1 -1
  107. package/dist/{demo-server-P2JGAI6C.js → demo-server-SJPI6RSL.js} +38 -36
  108. package/dist/{discover-VNZDO2MU.js → discover-I3WL2QUN.js} +10 -8
  109. package/dist/{discover-eval-ON77LUEN.js → discover-eval-YRECOIP5.js} +3 -3
  110. package/dist/{doctor-7TNNTI7H.js → doctor-F4J6LILX.js} +3 -3
  111. package/dist/{evidence-E54CNGXS.js → evidence-MYQTCY4V.js} +25 -10
  112. package/dist/{export-cmd-XXZ6KLQQ.js → export-cmd-3SUFOJM6.js} +3 -3
  113. package/dist/{ga-ZQB4EJI3.js → ga-VA6FYK4L.js} +3 -3
  114. package/dist/{gbp-ZQL6NQEK.js → gbp-DI6ZVFHL.js} +3 -3
  115. package/dist/{google-7EIHQGSV.js → google-UVKWJCD2.js} +4 -4
  116. package/dist/{google-marketing-RSAO4PG7.js → google-marketing-S63HN733.js} +1 -1
  117. package/dist/{health-cmd-R7WPKGWX.js → health-cmd-DOZXGI46.js} +16 -9
  118. package/dist/{history-2CSWSVCY.js → history-UTJTUDYK.js} +3 -3
  119. package/dist/index.d.ts +204 -12
  120. package/dist/index.js +26 -26
  121. package/dist/{init-FXZRMXZ3.js → init-IVJSS33J.js} +19 -19
  122. package/dist/{insights-EJUL3W6D.js → insights-UHCVCZ76.js} +3 -3
  123. package/dist/intelligence-service-3EENJ5DS.js +16 -0
  124. package/dist/{journeys-YUMBANFH.js → journeys-XIT7WDM2.js} +3 -3
  125. package/dist/{keys-KLOTGT4H.js → keys-MQKW4JUI.js} +3 -3
  126. package/dist/{keyword-5NSJFEOI.js → keyword-EASMKYZ3.js} +3 -3
  127. package/dist/{logs-WW3RLCRG.js → logs-ZHZ6XM55.js} +3 -3
  128. package/dist/{mcp-NTBEIEVX.js → mcp-ECVT2YGU.js} +4 -4
  129. package/dist/mcp.js +10 -10
  130. package/dist/{measurement-plan-BLPAZEXS.js → measurement-plan-7FQKUOMR.js} +5 -5
  131. package/dist/{notify-KAGE6UEN.js → notify-TC7ARC6W.js} +3 -3
  132. package/dist/{organic-evidence-HTYRXRML.js → organic-evidence-M34MWJXE.js} +7 -4
  133. package/dist/overview-P6BRMXJN.js +314 -0
  134. package/dist/{project-NYUWICVC.js → project-WZ2YXFPJ.js} +4 -4
  135. package/dist/project-setup-WV6SPGIV.js +176 -0
  136. package/dist/{query-3CRRDOHD.js → query-WAFJKDHG.js} +3 -3
  137. package/dist/{research-ZULVD3TW.js → research-B5ZPQX7R.js} +3 -3
  138. package/dist/{results-export-STM7SQ4J.js → results-export-NIZV6R3K.js} +3 -3
  139. package/dist/{run-S4MFU4MK.js → run-ICLPZ7QT.js} +7 -4
  140. package/dist/{schedule-6W3Q2FUL.js → schedule-4C44LQ7R.js} +22 -3
  141. package/dist/{search-EKXXN7C4.js → search-UJM7KII3.js} +11 -4
  142. package/dist/{serve-TFBFPFAQ.js → serve-A6UIO6WP.js} +30 -29
  143. package/dist/{session-4B5V3AH6.js → session-RTE22GQT.js} +14 -14
  144. package/dist/settings-BOF5Z7ML.js +211 -0
  145. package/dist/{sitemaps-R7XFCH6E.js → sitemaps-BM7S76H2.js} +4 -4
  146. package/dist/{skills-44XYCTVD.js → skills-X5SR4HRO.js} +2 -2
  147. package/dist/{snapshot-ROAOJI4W.js → snapshot-KLKE37VY.js} +4 -4
  148. package/dist/{src-ZJRIKEDB.js → src-EKLG5A6O.js} +4 -2
  149. package/dist/{status-EN3A2TX5.js → status-OYG57DWU.js} +6 -5
  150. package/dist/{technical-aeo-ZV466F65.js → technical-aeo-KWVWOOTI.js} +23 -23
  151. package/dist/{telemetry-EZHPNZ2A.js → telemetry-KGE6FF3Y.js} +4 -4
  152. package/dist/{tools-IH4M7AAG.js → tools-4R33AZQ3.js} +11 -11
  153. package/dist/{traffic-VFLXWB3Z.js → traffic-SVMOKCSS.js} +7 -11
  154. package/dist/{trends-ZXJIX3Z3.js → trends-RGAKGX3L.js} +4 -4
  155. package/dist/{users-J2BYEWOE.js → users-47WKA2TO.js} +3 -3
  156. package/dist/{visibility-stats-AJ7NY2BP.js → visibility-stats-DTGQJPNV.js} +9 -5
  157. package/dist/{wordpress-U6MS35VE.js → wordpress-2CNUX4UE.js} +3 -3
  158. package/package.json +2 -2
  159. package/assets/assets/AgentSetupPage-h1kJhy9q.js +0 -18
  160. package/assets/assets/AuditHistoryPanel-CNUApNiJ.js +0 -1
  161. package/assets/assets/BacklinksPage-CpKmlAek.js +0 -1
  162. package/assets/assets/ChartPrimitives-CvK6CQrj.js +0 -1
  163. package/assets/assets/Hint-c4a4W87X.js +0 -1
  164. package/assets/assets/InfoTooltip-Drnst4ML.js +0 -1
  165. package/assets/assets/MeasurementPropertyPage-CcHnYn81.js +0 -4
  166. package/assets/assets/ProjectPage-Tmuqmust.js +0 -11
  167. package/assets/assets/RunsPage-BD4k3MjX.js +0 -1
  168. package/assets/assets/SettingsPage-BHy30JP5.js +0 -1
  169. package/assets/assets/SiteHealthSection-SYdtuGjq.js +0 -2
  170. package/assets/assets/ToneBadge-Cii5KNtg.js +0 -60
  171. package/assets/assets/TrafficPage-DuxtRqnc.js +0 -40
  172. package/assets/assets/TrafficSourceDetailPage-DiX1bB02.js +0 -1
  173. package/assets/assets/format-helpers-V8Pyc7cR.js +0 -3
  174. package/assets/assets/index-BAxHW-1G.css +0 -1
  175. package/assets/assets/index-BTz-B9hV.js +0 -60
  176. package/assets/assets/query-client-C1ycmW1c.js +0 -1
  177. package/assets/assets/react-query-DI7VfOND.js +0 -1
  178. package/assets/assets/service-DSgXWhNq.js +0 -1
  179. package/assets/assets/vendor-lucide-DuOM7wVi.js +0 -1
  180. package/dist/intelligence-service-TKK7O3Z5.js +0 -16
  181. package/dist/overview-GSJ4GP2T.js +0 -213
  182. package/dist/settings-VRTDPFR3.js +0 -119
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  getRequestContext
3
- } from "./chunk-3BA75QYU.js";
3
+ } from "./chunk-LJO2BKWU.js";
4
4
  import {
5
5
  diagnosticIdentity,
6
6
  redactLogString,
7
7
  redactLogValue
8
- } from "./chunk-ZBTUISPG.js";
8
+ } from "./chunk-O7S7OHLE.js";
9
9
 
10
10
  // ../api-routes/src/runtime-logger.ts
11
11
  import { format } from "util";
@@ -5,7 +5,7 @@ import {
5
5
  loadConfig,
6
6
  loadConfigRaw,
7
7
  saveConfigPatch
8
- } from "./chunk-BLW327AU.js";
8
+ } from "./chunk-EE3QTCLS.js";
9
9
  import {
10
10
  CANONRY_NPM_PACKAGE_URL,
11
11
  compareSemver,
@@ -18,7 +18,7 @@ import {
18
18
  updateCheckEnvOptOut,
19
19
  upgradeCaveatFor,
20
20
  upgradeCommandFor
21
- } from "./chunk-ZBTUISPG.js";
21
+ } from "./chunk-O7S7OHLE.js";
22
22
 
23
23
  // src/runtime-context.ts
24
24
  function cliRuntimeContext(env = process.env, stdio = process) {
@@ -1,21 +1,23 @@
1
1
  import {
2
2
  createApiClient
3
- } from "./chunk-OL2L5ANJ.js";
3
+ } from "./chunk-UGO2FO6V.js";
4
4
  import {
5
5
  emitJsonl
6
6
  } from "./chunk-Z7IUAJOF.js";
7
7
  import {
8
8
  measurementDraftOperationSchema,
9
9
  runMeasurementDraftAction
10
- } from "./chunk-52M2JWCB.js";
10
+ } from "./chunk-7BEGCVVB.js";
11
11
  import {
12
12
  isMachineFormat,
13
13
  systemError
14
14
  } from "./chunk-HGMYEDAQ.js";
15
15
  import {
16
+ CITATION_NOT_MEASURED_REASON,
16
17
  MeasurementEvidenceShapes,
17
18
  MentionIdentities,
18
19
  UNATTRIBUTED_MENTION_REASON,
20
+ citationNotMeasuredLabel,
19
21
  formatPercent,
20
22
  measurementChangesQuerySchema,
21
23
  measurementDataQualityQuerySchema,
@@ -37,7 +39,7 @@ import {
37
39
  unattributedAnswersLabel,
38
40
  uncheckedSourcesLabel,
39
41
  visibilityReportRequestSchema
40
- } from "./chunk-ZBTUISPG.js";
42
+ } from "./chunk-O7S7OHLE.js";
41
43
 
42
44
  // src/commands/measurement-plan.ts
43
45
  import crypto from "crypto";
@@ -356,13 +358,16 @@ var METRIC_REASONS = {
356
358
  no_population: "not measured (no questions of this type)",
357
359
  evidence_incomplete: "not measured (evidence incomplete)",
358
360
  identity_ambiguous: `not measured (${UNATTRIBUTED_MENTION_REASON.toLowerCase()})`,
359
- not_applicable: "not measured (not applicable)"
361
+ not_applicable: "not measured (not applicable)",
362
+ citation_not_measured: "not measured (the engines return no sources)"
360
363
  };
361
364
  function unattributedText(metric) {
362
365
  return metric.state === "available" ? unattributedAnswersLabel(metric) : null;
363
366
  }
364
367
  function uncheckedText(metric) {
365
- return metric.state === "available" ? uncheckedSourcesLabel(metric) : null;
368
+ if (metric.state !== "available") return null;
369
+ const notes = [uncheckedSourcesLabel(metric), citationNotMeasuredLabel(metric)].filter((note) => note !== null);
370
+ return notes.length === 0 ? null : notes.join(" \xB7 ");
366
371
  }
367
372
  function metricWithNote(metric, note) {
368
373
  return `${metricText(metric)}${note ? ` \xB7 ${note}` : ""}`;
@@ -494,6 +499,9 @@ function printMeasurementPropertyEvidence(response) {
494
499
  if (differentSubject > 0) {
495
500
  lines.push("\xB7 different subject: the answer uses this Property's name, but sentiment found it is about something else, so it is not counted as mentioned.");
496
501
  }
502
+ if (page.items.some((item) => item.citationMeasured === false)) {
503
+ lines.push(`Cited "not measured" on an answer whose engine returns no sources: ${CITATION_NOT_MEASURED_REASON}`);
504
+ }
497
505
  } else {
498
506
  lines.push(`${"Match".padEnd(14)}${"Engine".padEnd(12)}${"Question".padEnd(40)}URL`);
499
507
  for (const item of page.items) {
@@ -8,23 +8,23 @@ import {
8
8
  reparseStoredResult4,
9
9
  reparseStoredResult5,
10
10
  resolveStoredApiResponse
11
- } from "./chunk-TNOYUE2L.js";
11
+ } from "./chunk-YIIRS7V7.js";
12
12
  import {
13
13
  loadConfig
14
- } from "./chunk-BLW327AU.js";
14
+ } from "./chunk-EE3QTCLS.js";
15
15
  import {
16
16
  isMachineFormat
17
17
  } from "./chunk-HGMYEDAQ.js";
18
18
  import {
19
19
  determineCitationState
20
- } from "./chunk-ISIJ2NS4.js";
20
+ } from "./chunk-HBHLYWKE.js";
21
21
  import {
22
22
  backfillProjectAnswerMentions,
23
23
  competitorIdentityColumns,
24
24
  createRunCompetitorResolver,
25
25
  readMarketCompetitorNames,
26
26
  refreshSnapshotMentionIdentity
27
- } from "./chunk-O22WSFWL.js";
27
+ } from "./chunk-YGAQQSCL.js";
28
28
  import {
29
29
  RawEventSampleEventTypes,
30
30
  auditLog,
@@ -38,7 +38,7 @@ import {
38
38
  querySnapshots,
39
39
  rawEventSamples,
40
40
  runs
41
- } from "./chunk-KK3Z34AN.js";
41
+ } from "./chunk-2DV7F6XA.js";
42
42
  import {
43
43
  ProviderNames,
44
44
  RetrievalContracts,
@@ -51,7 +51,7 @@ import {
51
51
  extractRecommendedCompetitors,
52
52
  normalizeUrlPath,
53
53
  openRouterRouteModel
54
- } from "./chunk-ZBTUISPG.js";
54
+ } from "./chunk-O7S7OHLE.js";
55
55
 
56
56
  // src/commands/backfill.ts
57
57
  import { setImmediate as yieldToEventLoop } from "timers/promises";
@@ -429,7 +429,7 @@ No DB writes performed. Re-run without --dry-run to apply.`);
429
429
  }
430
430
  }
431
431
  async function backfillInsightsCommand(project, opts) {
432
- const { IntelligenceService } = await import("./intelligence-service-TKK7O3Z5.js");
432
+ const { IntelligenceService } = await import("./intelligence-service-3EENJ5DS.js");
433
433
  const config = loadConfig();
434
434
  const db = createClient(config.database);
435
435
  migrate(db);
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  API_PROVIDER_NAMES,
3
3
  ProviderNames
4
- } from "./chunk-ZBTUISPG.js";
4
+ } from "./chunk-O7S7OHLE.js";
5
5
 
6
6
  // src/provider-registration.ts
7
7
  function isApiProviderRegistrable(name, entry) {
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-HGMYEDAQ.js";
5
5
  import {
6
6
  describeError
7
- } from "./chunk-ZBTUISPG.js";
7
+ } from "./chunk-O7S7OHLE.js";
8
8
 
9
9
  // src/gsc-sitemap-submission.ts
10
10
  function dedupeGscSitemapUrls(urls) {
@@ -2,13 +2,13 @@ import {
2
2
  bucketCliCommandDuration,
3
3
  isTelemetryEnabled,
4
4
  trackEvent
5
- } from "./chunk-2XCYEBQV.js";
5
+ } from "./chunk-AMGM55CP.js";
6
6
  import {
7
7
  getConfigDir
8
- } from "./chunk-BLW327AU.js";
8
+ } from "./chunk-EE3QTCLS.js";
9
9
  import {
10
10
  currentOutcomeAttribution
11
- } from "./chunk-3BA75QYU.js";
11
+ } from "./chunk-LJO2BKWU.js";
12
12
  import {
13
13
  AGENT_NONE,
14
14
  OutcomeSurfaces,
@@ -19,7 +19,7 @@ import {
19
19
  integrationConnectionPropertiesSchema,
20
20
  normalizeAgentSlug,
21
21
  usageSurfaceSchema
22
- } from "./chunk-ZBTUISPG.js";
22
+ } from "./chunk-O7S7OHLE.js";
23
23
 
24
24
  // src/outcome-telemetry.ts
25
25
  import fs from "fs";
@@ -9,6 +9,7 @@ import {
9
9
  LlmCapabilities,
10
10
  OPENROUTER_MODEL_PATTERN,
11
11
  ProviderIds,
12
+ ProviderNames,
12
13
  SENTIMENT_MODEL,
13
14
  SENTIMENT_OPENROUTER_MODEL,
14
15
  agentProviderIdSchema,
@@ -20,7 +21,7 @@ import {
20
21
  resolveProviderModel,
21
22
  schedulableRunKindSchema,
22
23
  sentimentEvaluatorProviderSchema
23
- } from "./chunk-ZBTUISPG.js";
24
+ } from "./chunk-O7S7OHLE.js";
24
25
 
25
26
  // ../config/src/index.ts
26
27
  import { z as z5 } from "zod";
@@ -1018,11 +1019,10 @@ function loadedConfigPath(config) {
1018
1019
  }
1019
1020
  function loadConfig(configPath = getConfigPath()) {
1020
1021
  if (!fs.existsSync(configPath)) {
1021
- throw new Error(
1022
- `Config not found at ${configPath}.
1023
- Run "canonry bootstrap" to create the local Page Health runtime; provider credentials are optional.
1024
- Use "canonry init" instead only when you want interactive provider/OAuth provisioning.`
1025
- );
1022
+ const message = `Config not found at ${configPath}.
1023
+ Run "canonry bootstrap" to create the local Agent Readiness runtime; provider credentials are optional.
1024
+ Use "canonry init" instead only when you want interactive provider/OAuth provisioning.`;
1025
+ throw new CliError({ code: "CONFIG_REQUIRED", message, displayMessage: message, details: { configPath } });
1026
1026
  }
1027
1027
  const raw = fs.readFileSync(configPath, "utf-8");
1028
1028
  const parsed = parse(raw);
@@ -1287,6 +1287,17 @@ function saveConfigPatch(patch, options = {}) {
1287
1287
  merged.providers[key] = { ...baseEntry, ...patchEntry };
1288
1288
  }
1289
1289
  }
1290
+ if (options.providerReplacement) {
1291
+ const { name, entry } = options.providerReplacement;
1292
+ merged.providers = { ...merged.providers };
1293
+ if (entry === null) delete merged.providers[name];
1294
+ else merged.providers[name] = entry;
1295
+ if (name === ProviderNames.gemini) {
1296
+ delete merged.geminiApiKey;
1297
+ delete merged.geminiModel;
1298
+ delete merged.geminiQuota;
1299
+ }
1300
+ }
1290
1301
  const yaml = stringify(merged);
1291
1302
  writeConfigAtomically(configPath, yaml);
1292
1303
  }
@@ -1352,6 +1363,7 @@ export {
1352
1363
  refreshAgentModels,
1353
1364
  validateAgentProviderRegistry,
1354
1365
  resolveApiKeyFor,
1366
+ resolveApiKeySource,
1355
1367
  agentProviderApiKeyEnvVar,
1356
1368
  buildAgentProvidersResponse,
1357
1369
  providerConfigFromEntry,