@canonry/canonry 7.78.0 → 7.78.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.
Files changed (89) hide show
  1. package/dist/{ads-MIR5MCHL.js → ads-MNMND5VH.js} +2 -2
  2. package/dist/{agent-IXRL5RBI.js → agent-4KNDL3D3.js} +5 -5
  3. package/dist/{agent-ask-K42H6H2T.js → agent-ask-32RTOL2M.js} +2 -2
  4. package/dist/{agent-conversations-2T3W4DHO.js → agent-conversations-BXVWHUZC.js} +2 -2
  5. package/dist/{agent-memory-LJBNSTSP.js → agent-memory-7R7UVFS5.js} +2 -2
  6. package/dist/{agent-providers-QR4LY3AP.js → agent-providers-QGVLCCH4.js} +2 -2
  7. package/dist/{agent-transcript-JIHJWHV6.js → agent-transcript-7Y6BJCIT.js} +2 -2
  8. package/dist/{analytics-JRV7DBBU.js → analytics-YOGEHW6J.js} +2 -2
  9. package/dist/{apply-ZFWDSAV4.js → apply-TB3MF3PH.js} +2 -2
  10. package/dist/{backfill-LU2AQIPY.js → backfill-IRVLT6VT.js} +5 -5
  11. package/dist/{backlinks-NAC2373F.js → backlinks-6GTL324T.js} +2 -2
  12. package/dist/{bing-L3LDBJOC.js → bing-OMQACSDY.js} +2 -2
  13. package/dist/{bootstrap-I6DA4KWB.js → bootstrap-WZ6YDQIG.js} +6 -6
  14. package/dist/{cdp-4F74XLTH.js → cdp-3WBLAWOL.js} +5 -5
  15. package/dist/{chunk-SAHH2FXO.js → chunk-2EWZ3DJ4.js} +1 -1
  16. package/dist/{chunk-VLOCDWCS.js → chunk-3QJWOF2B.js} +3 -2
  17. package/dist/{chunk-6PRFVLIK.js → chunk-4GEEYY3N.js} +1 -1
  18. package/dist/{chunk-UH44UCRM.js → chunk-5NBXPO4G.js} +1 -1
  19. package/dist/{chunk-L2KMR7CM.js → chunk-72YPSNCG.js} +1 -1
  20. package/dist/{chunk-L6F2HOQH.js → chunk-7HE4LAJY.js} +5 -5
  21. package/dist/{chunk-C5WSQXP5.js → chunk-7OAXEMOF.js} +1 -1
  22. package/dist/{chunk-RSVANBNW.js → chunk-BKOG3GEI.js} +1 -1
  23. package/dist/{chunk-EHXNYXAS.js → chunk-BLZCNL3B.js} +1 -1
  24. package/dist/{chunk-ZUC7CJVD.js → chunk-BTMLE3EN.js} +2 -2
  25. package/dist/{chunk-EFMZSYRD.js → chunk-COUM462G.js} +16 -13
  26. package/dist/{chunk-JEUL5QZP.js → chunk-GEHRGKQT.js} +3 -3
  27. package/dist/{chunk-WXIL2EFM.js → chunk-IYMTQHPD.js} +2 -2
  28. package/dist/{chunk-367K6XVX.js → chunk-KF7I7FBI.js} +2 -2
  29. package/dist/{chunk-SOQVI7EZ.js → chunk-LBNUTWPK.js} +1 -1
  30. package/dist/{chunk-6P6YBNKN.js → chunk-OES6PSQK.js} +3 -3
  31. package/dist/{chunk-6VBLPCCX.js → chunk-PH4AESRE.js} +2 -0
  32. package/dist/{chunk-UQOC5ZQE.js → chunk-PLLDJUG2.js} +2 -2
  33. package/dist/{chunk-M3BUP6XD.js → chunk-PRCBHOVR.js} +43 -7
  34. package/dist/{chunk-QXSOXDUR.js → chunk-R26CF4WT.js} +1 -1
  35. package/dist/{chunk-WCFANFR2.js → chunk-UHCOJCT3.js} +308 -308
  36. package/dist/{citations-2XELMCCV.js → citations-PGG7JEIN.js} +2 -2
  37. package/dist/{cli-commands-WCOAB6XU.js → cli-commands-NGXSLPIA.js} +4 -4
  38. package/dist/cli.js +7 -7
  39. package/dist/{competitor-IK4GYTZO.js → competitor-B3CZOKZU.js} +2 -2
  40. package/dist/{content-SMQPJXPC.js → content-Z4XJMZB4.js} +2 -2
  41. package/dist/{dashboard-EE24ROVG.js → dashboard-6MMYA2GG.js} +3 -3
  42. package/dist/{demo-7XH2N65A.js → demo-3R2SHQPO.js} +1 -1
  43. package/dist/{demo-server-CVB65UYW.js → demo-server-ISJOEJN5.js} +4 -4
  44. package/dist/{discover-3KHUCVE7.js → discover-OT3K7KQK.js} +2 -2
  45. package/dist/{discover-eval-DOEP4ZQ7.js → discover-eval-DN4J4KD5.js} +2 -2
  46. package/dist/{doctor-3T6RKSE7.js → doctor-UDF6OCSR.js} +2 -2
  47. package/dist/{evidence-4NFL5KM3.js → evidence-Z364UFOD.js} +2 -2
  48. package/dist/{export-cmd-BQC6XLJ7.js → export-cmd-K27XN4G5.js} +2 -2
  49. package/dist/{ga-HBRA4UUK.js → ga-Q2CELDLG.js} +2 -2
  50. package/dist/{gbp-2WMBTDJV.js → gbp-V2APGSIQ.js} +2 -2
  51. package/dist/{google-JFUE4BNJ.js → google-WFHYA3QT.js} +2 -2
  52. package/dist/{health-cmd-7BMVCCG2.js → health-cmd-RGFAJ4YP.js} +2 -2
  53. package/dist/{history-QA4ZXCVH.js → history-RUSU66BZ.js} +2 -2
  54. package/dist/index.d.ts +10 -7
  55. package/dist/index.js +13 -13
  56. package/dist/{init-O4G2MDMC.js → init-SMBVJSP6.js} +8 -8
  57. package/dist/{insights-K4UX2PSI.js → insights-4IFQLPS3.js} +2 -2
  58. package/dist/{intelligence-service-D7DS4UKT.js → intelligence-service-MPNONLCW.js} +3 -3
  59. package/dist/{journeys-UWEWJXGT.js → journeys-PTC2QY57.js} +2 -2
  60. package/dist/{keys-CL5YYE7Q.js → keys-JASXI2SR.js} +2 -2
  61. package/dist/{keyword-IFCC5IZT.js → keyword-SK2HJXCJ.js} +2 -2
  62. package/dist/{logs-2A3HBUBK.js → logs-AS5I5V2A.js} +2 -2
  63. package/dist/{mcp-B6L7PKZ4.js → mcp-BQSOYHEX.js} +3 -3
  64. package/dist/mcp.js +4 -4
  65. package/dist/{measurement-plan-GYSO6CXX.js → measurement-plan-LZYYH3OD.js} +3 -3
  66. package/dist/{notify-XM23I2B3.js → notify-JM6252F6.js} +2 -2
  67. package/dist/{organic-evidence-U7HZMXKP.js → organic-evidence-L3Y6RZIH.js} +2 -2
  68. package/dist/{overview-TSAK5DQP.js → overview-VIF2GXYW.js} +3 -3
  69. package/dist/{project-L7DLDEPI.js → project-FQEPFPRD.js} +2 -2
  70. package/dist/{query-FM5HDHO4.js → query-VKRESS6B.js} +2 -2
  71. package/dist/{research-7G5JU44N.js → research-6A6QWKN3.js} +2 -2
  72. package/dist/{results-export-JJDGG6ZP.js → results-export-VUB2ZD5B.js} +2 -2
  73. package/dist/{run-ZVIQVG23.js → run-PG5GYZT7.js} +3 -3
  74. package/dist/{schedule-TV7LWSYI.js → schedule-EBGOLCQZ.js} +2 -2
  75. package/dist/{search-7KRZLZ6S.js → search-NS4XPZRL.js} +2 -2
  76. package/dist/{serve-WSOG525W.js → serve-J7WR3J6I.js} +14 -14
  77. package/dist/{session-OUGQSGVV.js → session-FBHHWILQ.js} +6 -6
  78. package/dist/{settings-AOXQJOHN.js → settings-LNCAYCDF.js} +2 -2
  79. package/dist/{snapshot-B44CXKFU.js → snapshot-LX7OR7SO.js} +2 -2
  80. package/dist/{src-IBGSUYEG.js → src-AQ5MHQGQ.js} +1 -1
  81. package/dist/{status-RNBSFZ6Q.js → status-DQ6FNWUT.js} +3 -3
  82. package/dist/{technical-aeo-UAOKK5QH.js → technical-aeo-5GU2IY6W.js} +2 -2
  83. package/dist/{telemetry-55PUOMA7.js → telemetry-QK2GPII3.js} +3 -3
  84. package/dist/{tools-HRGP4FXN.js → tools-3ACR2D2V.js} +5 -5
  85. package/dist/{traffic-M4OHG5JW.js → traffic-2JFQKVAX.js} +2 -2
  86. package/dist/{users-GU7MULRM.js → users-7OJ2RGV3.js} +2 -2
  87. package/dist/{visibility-stats-4IDTDXDC.js → visibility-stats-VR25XMMY.js} +2 -2
  88. package/dist/{wordpress-CYXB4R5Y.js → wordpress-JYXTF4PL.js} +2 -2
  89. package/package.json +1 -1
@@ -157,7 +157,7 @@ import {
157
157
  userSessions,
158
158
  users,
159
159
  writeNegativeReviewMaxStars
160
- } from "./chunk-6VBLPCCX.js";
160
+ } from "./chunk-PH4AESRE.js";
161
161
  import {
162
162
  ADS_ACTIVATE_SCOPE,
163
163
  ADS_ACTIVATION_ABSOLUTE_MAX_ENTITIES,
@@ -7957,6 +7957,8 @@ h1 { margin: 0; font-size: 24px; line-height: 32px; font-weight: 600; letter-spa
7957
7957
  p { margin: 0; overflow-wrap: anywhere; }
7958
7958
  .intro { color: var(--secondary); margin-top: 8px; }
7959
7959
  strong { color: var(--text); font-weight: 550; }
7960
+ a { color: var(--text); text-decoration: underline; text-decoration-color: var(--border-strong); text-underline-offset: 3px; }
7961
+ a:hover { text-decoration-color: var(--text); }
7960
7962
  .err { margin-top: 16px; color: var(--negative); }
7961
7963
  .warn { margin-top: 16px; padding: 12px; border: 1px solid var(--caution-border); border-radius: 6px; background: var(--caution-surface); color: var(--caution); font-size: 13px; line-height: 20px; }
7962
7964
  .grant { margin: 24px 0 0; padding: 16px 0 20px; border-top: 1px solid var(--border); border-bottom: 1px solid var(--border); font-size: 13px; line-height: 20px; }
@@ -7979,7 +7981,7 @@ button { min-height: 36px; border: 1px solid transparent; border-radius: 6px; pa
7979
7981
  .secondary { border-color: var(--border); background: var(--surface); color: var(--text); }
7980
7982
  .secondary:hover { background: var(--hover); border-color: var(--border-strong); }
7981
7983
  .secondary:active { background: var(--border); }
7982
- :where(input, button):focus-visible { outline: 2px solid var(--focus); outline-offset: 3px; }
7984
+ :where(input, button, a):focus-visible { outline: 2px solid var(--focus); outline-offset: 3px; }
7983
7985
  @media (max-width: 480px) {
7984
7986
  main { padding: 32px 16px; align-items: flex-start; }
7985
7987
  .panel { padding: 24px; }
@@ -8004,11 +8006,11 @@ function fontFace(fontUrl) {
8004
8006
  src: url('${fontUrl}') format('woff2');
8005
8007
  }`;
8006
8008
  }
8007
- function gatePage(title, body, fontUrl) {
8009
+ function gatePage(title, body, fontUrl, head = "") {
8008
8010
  return `<!doctype html>
8009
8011
  <html lang="en"><head>
8010
8012
  <meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1">
8011
- <meta name="color-scheme" content="dark"><meta name="theme-color" content="#0a0a0a">
8013
+ <meta name="color-scheme" content="dark"><meta name="theme-color" content="#0a0a0a">${head}
8012
8014
  <title>${title} \xB7 Canonry</title>
8013
8015
  <style>${fontFace(fontUrl)}${styles}</style>
8014
8016
  </head><body><main><div class="gate">
@@ -8043,6 +8045,18 @@ ${o.scope.split(/\s+/).includes(RESEARCH_RUN_SCOPE) ? `<p class="warn">Run resea
8043
8045
  <div class="actions"><button class="primary" type="submit" name="approve" value="yes">Allow</button><button class="secondary" type="submit" name="approve" value="no">Deny</button></div>
8044
8046
  </form>`, o.fontUrl);
8045
8047
  }
8048
+ function renderAuthorizationHandoff(o) {
8049
+ const target = escapeHtml(o.target);
8050
+ const title = o.approved ? "Access allowed" : "Access denied";
8051
+ return gatePage(
8052
+ title,
8053
+ `<h1 id="gate-title">${title}</h1>
8054
+ <p class="intro">Returning you to <strong>${escapeHtml(o.clientName)}</strong>. If nothing happens, <a href="${target}" rel="noreferrer">continue</a>.</p>`,
8055
+ o.fontUrl,
8056
+ `
8057
+ <meta http-equiv="refresh" content="0;url=${target}">`
8058
+ );
8059
+ }
8046
8060
 
8047
8061
  // ../api-routes/src/oauth.ts
8048
8062
  var CODE_TTL_MS = 6e4;
@@ -8100,6 +8114,12 @@ function sendGatePage(reply, html) {
8100
8114
  "frame-ancestors 'none'; default-src 'none'; style-src 'unsafe-inline'; font-src 'self'; form-action 'self'"
8101
8115
  ).header("x-frame-options", "DENY").header("referrer-policy", "same-origin").header("cache-control", "no-store").type("text/html").send(html);
8102
8116
  }
8117
+ function sendHandoffPage(reply, html) {
8118
+ return reply.header(
8119
+ "content-security-policy",
8120
+ "frame-ancestors 'none'; default-src 'none'; style-src 'unsafe-inline'; font-src 'self'; form-action 'none'; base-uri 'none'"
8121
+ ).header("x-frame-options", "DENY").header("referrer-policy", "no-referrer").header("cache-control", "no-store").type("text/html").send(html);
8122
+ }
8103
8123
  var CONSENT_SECRET = crypto10.randomBytes(32);
8104
8124
  function registerOAuthRoutes(app, opts) {
8105
8125
  void app.register(async (scope) => {
@@ -8126,6 +8146,12 @@ function registerOAuthRoutesIn(app, opts) {
8126
8146
  function consentToken(userId, clientId, redirectUri, scope) {
8127
8147
  return crypto10.createHmac("sha256", CONSENT_SECRET).update([userId, clientId, redirectUri, scope].join("\0")).digest("base64url");
8128
8148
  }
8149
+ function selfRegistered(client) {
8150
+ if (client.registration !== "dynamic") return false;
8151
+ const gateway = opts.gatewayClient;
8152
+ const vouched = gateway !== void 0 && client.id === gateway.id && client.redirectUris.length > 0 && client.redirectUris.every((uri) => URL.canParse(uri) && new URL(uri).origin === gateway.origin);
8153
+ return !vouched;
8154
+ }
8129
8155
  function authorizationServerMetadata() {
8130
8156
  return {
8131
8157
  issuer,
@@ -8201,7 +8227,7 @@ function registerOAuthRoutesIn(app, opts) {
8201
8227
  return sendGatePage(reply, renderConsentPage({
8202
8228
  action: request.url,
8203
8229
  clientName: client.name,
8204
- selfRegistered: client.registration === "dynamic",
8230
+ selfRegistered: selfRegistered(client),
8205
8231
  redirectUri,
8206
8232
  scope: grantedScope,
8207
8233
  userName: user.name,
@@ -8239,7 +8265,12 @@ function registerOAuthRoutesIn(app, opts) {
8239
8265
  const denied = new URL(redirectUri);
8240
8266
  denied.searchParams.set("error", "access_denied");
8241
8267
  if (q.state) denied.searchParams.set("state", q.state);
8242
- return reply.redirect(denied.toString());
8268
+ return sendHandoffPage(reply, renderAuthorizationHandoff({
8269
+ target: denied.toString(),
8270
+ approved: false,
8271
+ clientName: client.name,
8272
+ fontUrl: opts.fontUrl
8273
+ }));
8243
8274
  }
8244
8275
  const code = newToken();
8245
8276
  const now = /* @__PURE__ */ new Date();
@@ -8258,7 +8289,12 @@ function registerOAuthRoutesIn(app, opts) {
8258
8289
  target.searchParams.set("code", code);
8259
8290
  if (q.state) target.searchParams.set("state", q.state);
8260
8291
  target.searchParams.set("iss", issuer);
8261
- return reply.redirect(target.toString());
8292
+ return sendHandoffPage(reply, renderAuthorizationHandoff({
8293
+ target: target.toString(),
8294
+ approved: true,
8295
+ clientName: client.name,
8296
+ fontUrl: opts.fontUrl
8297
+ }));
8262
8298
  });
8263
8299
  const registrations = /* @__PURE__ */ new Map();
8264
8300
  let registrationsThisWindow = [];
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-VJWDBFSL.js";
5
5
  import {
6
6
  createApiClient
7
- } from "./chunk-C5WSQXP5.js";
7
+ } from "./chunk-7OAXEMOF.js";
8
8
  import {
9
9
  CliError,
10
10
  isMachineFormat