@ainyc/canonry 4.186.8 → 4.187.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/assets/assets/{AuditHistoryPanel-9q5v4zHj.js → AuditHistoryPanel-G2iVWlbn.js} +1 -1
- package/assets/assets/{BacklinksPage-C2QVWfQf.js → BacklinksPage-B13UlDT7.js} +1 -1
- package/assets/assets/{HistoryPage-oLCQA7-T.js → HistoryPage-DZoRKfzJ.js} +1 -1
- package/assets/assets/{MeasurementPropertyPage-DUYt5ceA.js → MeasurementPropertyPage-DNxsAgEA.js} +1 -1
- package/assets/assets/ProjectPage-BdfsfLkU.js +9 -0
- package/assets/assets/{RunRow-kaFXI_VP.js → RunRow-C9u35nrm.js} +1 -1
- package/assets/assets/{RunsPage-CQizRJxf.js → RunsPage-DST-BpAu.js} +1 -1
- package/assets/assets/{SettingsPage-BHh4Y7Qg.js → SettingsPage-BC05JomS.js} +1 -1
- package/assets/assets/SiteHealthSection-DIeYA2HJ.js +4 -0
- package/assets/assets/{TrafficPage-B3N0r5gW.js → TrafficPage-DezdhoxL.js} +1 -1
- package/assets/assets/{TrafficSourceDetailPage-C27GkPF4.js → TrafficSourceDetailPage-C0FIPjXi.js} +1 -1
- package/assets/assets/{extract-error-message-DlmIEdy_.js → extract-error-message-B5OYNTJO.js} +1 -1
- package/assets/assets/{index-DVa1lkiE.js → index-DJWMbOc5.js} +24 -24
- package/assets/assets/{react-sigma_core.esm.min-BBOzBU_n.js → react-sigma_core.esm.min-B06R8tYw.js} +1 -1
- package/assets/index.html +1 -1
- package/dist/{chunk-42P3CXIH.js → chunk-5BUAG4CN.js} +28 -3
- package/dist/{chunk-YYNL73BT.js → chunk-B7WQ5Z4L.js} +48 -9
- package/dist/{chunk-7CG3QE4N.js → chunk-EMSDPSQM.js} +130 -68
- package/dist/{chunk-7TYSFZEG.js → chunk-IPALTNIE.js} +2 -2
- package/dist/{chunk-CFJHRXZ3.js → chunk-LNBX7RTN.js} +556 -536
- package/dist/cli.js +5 -5
- package/dist/index.d.ts +12 -2
- package/dist/index.js +4 -4
- package/dist/{intelligence-service-KBHLNDGO.js → intelligence-service-UZGA24EF.js} +2 -2
- package/dist/mcp.js +3 -3
- package/package.json +12 -12
- package/assets/assets/ProjectPage-Dsao_AiN.js +0 -9
- package/assets/assets/SiteHealthSection-DjmPK0Tg.js +0 -4
package/assets/assets/{react-sigma_core.esm.min-BBOzBU_n.js → react-sigma_core.esm.min-B06R8tYw.js}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{g as Bt,t as S,r as C}from"./vendor-tanstack-CYBjbqVr.js";import{e as Ht,G as Wt}from"./SiteHealthSection-
|
|
1
|
+
import{g as Bt,t as S,r as C}from"./vendor-tanstack-CYBjbqVr.js";import{e as Ht,G as Wt}from"./SiteHealthSection-DIeYA2HJ.js";import"./index-DJWMbOc5.js";import"./vendor-radix-BpmvLvpp.js";import"./vendor-recharts-FA0uySU7.js";import"./vendor-lucide-BovNTc41.js";import"./vendor-markdown-9tTeP8v7.js";import"./vendor-yaml-GWJz5H2G.js";import"./ChartPrimitives-DLEICrrL.js";function Vt(r,n){if(typeof r!="object"||!r)return r;var i=r[Symbol.toPrimitive];if(i!==void 0){var e=i.call(r,n);if(typeof e!="object")return e;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(r)}function ae(r){var n=Vt(r,"string");return typeof n=="symbol"?n:n+""}function A(r,n){if(!(r instanceof n))throw new TypeError("Cannot call a class as a function")}function He(r,n){for(var i=0;i<n.length;i++){var e=n[i];e.enumerable=e.enumerable||!1,e.configurable=!0,"value"in e&&(e.writable=!0),Object.defineProperty(r,ae(e.key),e)}}function L(r,n,i){return n&&He(r.prototype,n),i&&He(r,i),Object.defineProperty(r,"prototype",{writable:!1}),r}function Q(r){return Q=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(n){return n.__proto__||Object.getPrototypeOf(n)},Q(r)}function yt(){try{var r=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch{}return(yt=function(){return!!r})()}function jt(r){if(r===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return r}function Zt(r,n){if(n&&(typeof n=="object"||typeof n=="function"))return n;if(n!==void 0)throw new TypeError("Derived constructors may only return object or undefined");return jt(r)}function I(r,n,i){return n=Q(n),Zt(r,yt()?Reflect.construct(n,i||[],Q(r).constructor):n.apply(r,i))}function xe(r,n){return xe=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(i,e){return i.__proto__=e,i},xe(r,n)}function G(r,n){if(typeof n!="function"&&n!==null)throw new TypeError("Super expression must either be null or a function");r.prototype=Object.create(n&&n.prototype,{constructor:{value:r,writable:!0,configurable:!0}}),Object.defineProperty(r,"prototype",{writable:!1}),n&&xe(r,n)}function qt(r){if(Array.isArray(r))return r}function Yt(r,n){var i=r==null?null:typeof Symbol<"u"&&r[Symbol.iterator]||r["@@iterator"];if(i!=null){var e,t,a,o,s=[],l=!0,h=!1;try{if(a=(i=i.call(r)).next,n===0){if(Object(i)!==i)return;l=!1}else for(;!(l=(e=a.call(i)).done)&&(s.push(e.value),s.length!==n);l=!0);}catch(u){h=!0,t=u}finally{try{if(!l&&i.return!=null&&(o=i.return(),Object(o)!==o))return}finally{if(h)throw t}}return s}}function Se(r,n){(n==null||n>r.length)&&(n=r.length);for(var i=0,e=Array(n);i<n;i++)e[i]=r[i];return e}function Tt(r,n){if(r){if(typeof r=="string")return Se(r,n);var i={}.toString.call(r).slice(8,-1);return i==="Object"&&r.constructor&&(i=r.constructor.name),i==="Map"||i==="Set"?Array.from(r):i==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?Se(r,n):void 0}}function Xt(){throw new TypeError(`Invalid attempt to destructure non-iterable instance.
|
|
2
2
|
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function ee(r,n){return qt(r)||Yt(r,n)||Tt(r,n)||Xt()}var pe={black:"#000000",silver:"#C0C0C0",gray:"#808080",grey:"#808080",white:"#FFFFFF",maroon:"#800000",red:"#FF0000",purple:"#800080",fuchsia:"#FF00FF",green:"#008000",lime:"#00FF00",olive:"#808000",yellow:"#FFFF00",navy:"#000080",blue:"#0000FF",teal:"#008080",aqua:"#00FFFF",darkblue:"#00008B",mediumblue:"#0000CD",darkgreen:"#006400",darkcyan:"#008B8B",deepskyblue:"#00BFFF",darkturquoise:"#00CED1",mediumspringgreen:"#00FA9A",springgreen:"#00FF7F",cyan:"#00FFFF",midnightblue:"#191970",dodgerblue:"#1E90FF",lightseagreen:"#20B2AA",forestgreen:"#228B22",seagreen:"#2E8B57",darkslategray:"#2F4F4F",darkslategrey:"#2F4F4F",limegreen:"#32CD32",mediumseagreen:"#3CB371",turquoise:"#40E0D0",royalblue:"#4169E1",steelblue:"#4682B4",darkslateblue:"#483D8B",mediumturquoise:"#48D1CC",indigo:"#4B0082",darkolivegreen:"#556B2F",cadetblue:"#5F9EA0",cornflowerblue:"#6495ED",rebeccapurple:"#663399",mediumaquamarine:"#66CDAA",dimgray:"#696969",dimgrey:"#696969",slateblue:"#6A5ACD",olivedrab:"#6B8E23",slategray:"#708090",slategrey:"#708090",lightslategray:"#778899",lightslategrey:"#778899",mediumslateblue:"#7B68EE",lawngreen:"#7CFC00",chartreuse:"#7FFF00",aquamarine:"#7FFFD4",skyblue:"#87CEEB",lightskyblue:"#87CEFA",blueviolet:"#8A2BE2",darkred:"#8B0000",darkmagenta:"#8B008B",saddlebrown:"#8B4513",darkseagreen:"#8FBC8F",lightgreen:"#90EE90",mediumpurple:"#9370DB",darkviolet:"#9400D3",palegreen:"#98FB98",darkorchid:"#9932CC",yellowgreen:"#9ACD32",sienna:"#A0522D",brown:"#A52A2A",darkgray:"#A9A9A9",darkgrey:"#A9A9A9",lightblue:"#ADD8E6",greenyellow:"#ADFF2F",paleturquoise:"#AFEEEE",lightsteelblue:"#B0C4DE",powderblue:"#B0E0E6",firebrick:"#B22222",darkgoldenrod:"#B8860B",mediumorchid:"#BA55D3",rosybrown:"#BC8F8F",darkkhaki:"#BDB76B",mediumvioletred:"#C71585",indianred:"#CD5C5C",peru:"#CD853F",chocolate:"#D2691E",tan:"#D2B48C",lightgray:"#D3D3D3",lightgrey:"#D3D3D3",thistle:"#D8BFD8",orchid:"#DA70D6",goldenrod:"#DAA520",palevioletred:"#DB7093",crimson:"#DC143C",gainsboro:"#DCDCDC",plum:"#DDA0DD",burlywood:"#DEB887",lightcyan:"#E0FFFF",lavender:"#E6E6FA",darksalmon:"#E9967A",violet:"#EE82EE",palegoldenrod:"#EEE8AA",lightcoral:"#F08080",khaki:"#F0E68C",aliceblue:"#F0F8FF",honeydew:"#F0FFF0",azure:"#F0FFFF",sandybrown:"#F4A460",wheat:"#F5DEB3",beige:"#F5F5DC",whitesmoke:"#F5F5F5",mintcream:"#F5FFFA",ghostwhite:"#F8F8FF",salmon:"#FA8072",antiquewhite:"#FAEBD7",linen:"#FAF0E6",lightgoldenrodyellow:"#FAFAD2",oldlace:"#FDF5E6",magenta:"#FF00FF",deeppink:"#FF1493",orangered:"#FF4500",tomato:"#FF6347",hotpink:"#FF69B4",coral:"#FF7F50",darkorange:"#FF8C00",lightsalmon:"#FFA07A",orange:"#FFA500",lightpink:"#FFB6C1",pink:"#FFC0CB",gold:"#FFD700",peachpuff:"#FFDAB9",navajowhite:"#FFDEAD",moccasin:"#FFE4B5",bisque:"#FFE4C4",mistyrose:"#FFE4E1",blanchedalmond:"#FFEBCD",papayawhip:"#FFEFD5",lavenderblush:"#FFF0F5",seashell:"#FFF5EE",cornsilk:"#FFF8DC",lemonchiffon:"#FFFACD",floralwhite:"#FFFAF0",snow:"#FFFAFA",lightyellow:"#FFFFE0",ivory:"#FFFFF0"},Ct=new Int8Array(4),be=new Int32Array(Ct.buffer,0,1),$t=new Float32Array(Ct.buffer,0,1),Kt=/^\s*rgba?\s*\(/,Jt=/^\s*rgba?\s*\(\s*([0-9]*)\s*,\s*([0-9]*)\s*,\s*([0-9]*)(?:\s*,\s*(.*)?)?\)\s*$/;function Qt(r){var n=0,i=0,e=0,t=1;if(r[0]==="#")r.length===4?(n=parseInt(r.charAt(1)+r.charAt(1),16),i=parseInt(r.charAt(2)+r.charAt(2),16),e=parseInt(r.charAt(3)+r.charAt(3),16)):(n=parseInt(r.charAt(1)+r.charAt(2),16),i=parseInt(r.charAt(3)+r.charAt(4),16),e=parseInt(r.charAt(5)+r.charAt(6),16)),r.length===9&&(t=parseInt(r.charAt(7)+r.charAt(8),16)/255);else if(Kt.test(r)){var a=r.match(Jt);a&&(n=+a[1],i=+a[2],e=+a[3],a[4]&&(t=+a[4]))}return{r:n,g:i,b:e,a:t}}var J={};for(var le in pe)J[le]=oe(pe[le]),J[pe[le]]=J[le];function Rt(r,n,i,e,t){return be[0]=e<<24|i<<16|n<<8|r,be[0]=be[0]&4278190079,$t[0]}function oe(r){if(r=r.toLowerCase(),typeof J[r]<"u")return J[r];var n=Qt(r),i=n.r,e=n.g,t=n.b,a=n.a;a=a*255|0;var o=Rt(i,e,t,a);return J[r]=o,o}var Ee={};function _t(r){if(typeof Ee[r]<"u")return Ee[r];var n=(r&16711680)>>>16,i=(r&65280)>>>8,e=r&255,t=255,a=Rt(n,i,e,t);return Ee[r]=a,a}function We(r,n,i,e){return i+(n<<8)+(r<<16)}function Ve(r,n,i,e,t,a){var o=Math.floor(i/a*t),s=Math.floor(r.drawingBufferHeight/a-e/a*t),l=new Uint8Array(4);r.bindFramebuffer(r.FRAMEBUFFER,n),r.readPixels(o,s,1,1,r.RGBA,r.UNSIGNED_BYTE,l);var h=ee(l,4),u=h[0],d=h[1],f=h[2],g=h[3];return[u,d,f,g]}function c(r,n,i){return(n=ae(n))in r?Object.defineProperty(r,n,{value:i,enumerable:!0,configurable:!0,writable:!0}):r[n]=i,r}function je(r,n){var i=Object.keys(r);if(Object.getOwnPropertySymbols){var e=Object.getOwnPropertySymbols(r);n&&(e=e.filter(function(t){return Object.getOwnPropertyDescriptor(r,t).enumerable})),i.push.apply(i,e)}return i}function b(r){for(var n=1;n<arguments.length;n++){var i=arguments[n]!=null?arguments[n]:{};n%2?je(Object(i),!0).forEach(function(e){c(r,e,i[e])}):Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(i)):je(Object(i)).forEach(function(e){Object.defineProperty(r,e,Object.getOwnPropertyDescriptor(i,e))})}return r}function ei(r,n){for(;!{}.hasOwnProperty.call(r,n)&&(r=Q(r))!==null;);return r}function Ae(){return Ae=typeof Reflect<"u"&&Reflect.get?Reflect.get.bind():function(r,n,i){var e=ei(r,n);if(e){var t=Object.getOwnPropertyDescriptor(e,n);return t.get?t.get.call(arguments.length<3?r:i):t.value}},Ae.apply(null,arguments)}function wt(r,n,i,e){var t=Ae(Q(r.prototype),n,i);return typeof t=="function"?function(a){return t.apply(i,a)}:t}function ti(r){return r.normalized?1:r.size}function ye(r){var n=0;return r.forEach(function(i){return n+=ti(i)}),n}function xt(r,n,i){var e=r==="VERTEX"?n.VERTEX_SHADER:n.FRAGMENT_SHADER,t=n.createShader(e);if(t===null)throw new Error("loadShader: error while creating the shader");n.shaderSource(t,i),n.compileShader(t);var a=n.getShaderParameter(t,n.COMPILE_STATUS);if(!a){var o=n.getShaderInfoLog(t);throw n.deleteShader(t),new Error(`loadShader: error while compiling the shader:
|
|
3
3
|
`.concat(o,`
|
|
4
4
|
`).concat(i))}return t}function ii(r,n){return xt("VERTEX",r,n)}function ri(r,n){return xt("FRAGMENT",r,n)}function ni(r,n){var i=r.createProgram();if(i===null)throw new Error("loadProgram: error while creating the program.");var e,t;for(e=0,t=n.length;e<t;e++)r.attachShader(i,n[e]);r.linkProgram(i);var a=r.getProgramParameter(i,r.LINK_STATUS);if(!a){var o=r.getProgramInfoLog(i);throw r.deleteProgram(i),new Error("loadProgram: error while linking the program: ".concat(o))}return i}function Ze(r){var n=r.gl,i=r.buffer,e=r.program,t=r.vertexShader,a=r.fragmentShader;n.deleteShader(t),n.deleteShader(a),n.deleteProgram(e),n.deleteBuffer(i)}var qe=`#define PICKING_MODE
|
package/assets/index.html
CHANGED
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
<link rel="icon" type="image/png" sizes="32x32" href="./favicon-32.png" />
|
|
13
13
|
<link rel="apple-touch-icon" href="./apple-touch-icon.png" />
|
|
14
14
|
<title>Canonry</title>
|
|
15
|
-
<script type="module" crossorigin src="./assets/index-
|
|
15
|
+
<script type="module" crossorigin src="./assets/index-DJWMbOc5.js"></script>
|
|
16
16
|
<link rel="modulepreload" crossorigin href="./assets/vendor-tanstack-CYBjbqVr.js">
|
|
17
17
|
<link rel="modulepreload" crossorigin href="./assets/vendor-radix-BpmvLvpp.js">
|
|
18
18
|
<link rel="modulepreload" crossorigin href="./assets/vendor-recharts-FA0uySU7.js">
|
|
@@ -2,6 +2,7 @@ import {
|
|
|
2
2
|
AGENT_MEMORY_KEY_MAX_LENGTH,
|
|
3
3
|
AGENT_MEMORY_VALUE_MAX_BYTES,
|
|
4
4
|
CodingAgents,
|
|
5
|
+
DEFAULT_VIEWER_RESEARCH_DAILY_RUN_LIMIT,
|
|
5
6
|
DISCOVERY_MAX_PROBES_CAP,
|
|
6
7
|
DISCOVERY_PROBE_CONCURRENCY_CAP,
|
|
7
8
|
GOOGLE_MARKETING_STORED_SNAPSHOT_PAGE_MAX,
|
|
@@ -97,7 +98,7 @@ import {
|
|
|
97
98
|
trafficEventKindSchema,
|
|
98
99
|
trafficSeriesGranularitySchema,
|
|
99
100
|
visibilityReportRequestSchema
|
|
100
|
-
} from "./chunk-
|
|
101
|
+
} from "./chunk-LNBX7RTN.js";
|
|
101
102
|
|
|
102
103
|
// src/cli-error.ts
|
|
103
104
|
function isMachineFormat(format) {
|
|
@@ -169,6 +170,9 @@ import { parse, stringify } from "yaml";
|
|
|
169
170
|
// ../config/src/index.ts
|
|
170
171
|
import { z } from "zod";
|
|
171
172
|
var dashboardManagedSweepsSchema = z.boolean().nullish();
|
|
173
|
+
var researchAllowViewersSchema = z.boolean().nullish();
|
|
174
|
+
var researchViewerDailyRunLimitSchema = z.number().int().positive().nullish();
|
|
175
|
+
var dashboardManagedRunKindsSchema = z.array(schedulableRunKindSchema).nullish();
|
|
172
176
|
var envSchema = z.object({
|
|
173
177
|
DATABASE_URL: z.string().default("postgresql://aeo:aeo@postgres:5432/aeo_platform"),
|
|
174
178
|
API_PORT: z.coerce.number().int().positive().default(3e3),
|
|
@@ -209,7 +213,9 @@ var envSchema = z.object({
|
|
|
209
213
|
// Secret for HMAC-signing Google OAuth state parameters. Required for
|
|
210
214
|
// cloud deployments that mount googleRoutes; the plugin refuses to register
|
|
211
215
|
// without it (see packages/api-routes/src/google.ts).
|
|
212
|
-
GOOGLE_STATE_SECRET: z.string().optional()
|
|
216
|
+
GOOGLE_STATE_SECRET: z.string().optional(),
|
|
217
|
+
CANONRY_RESEARCH_ALLOW_VIEWERS: z.string().optional(),
|
|
218
|
+
CANONRY_RESEARCH_VIEWER_DAILY_RUN_LIMIT: z.coerce.number().int().positive().default(DEFAULT_VIEWER_RESEARCH_DAILY_RUN_LIMIT)
|
|
213
219
|
});
|
|
214
220
|
var bootstrapEnvSchema = z.object({
|
|
215
221
|
CANONRY_API_KEY: z.string().optional(),
|
|
@@ -396,6 +402,24 @@ Do not use "canonry init --force" for recovery. It replaces credentials without
|
|
|
396
402
|
message: `Invalid config at ${configPath}: dashboard.managedSweeps must be true, false, or left blank.`
|
|
397
403
|
});
|
|
398
404
|
}
|
|
405
|
+
if (!researchAllowViewersSchema.safeParse(parsed.research?.allowViewers).success) {
|
|
406
|
+
throw new CliError({
|
|
407
|
+
code: "CONFIG_INVALID",
|
|
408
|
+
message: `Invalid config at ${configPath}: research.allowViewers must be true, false, or left blank.`
|
|
409
|
+
});
|
|
410
|
+
}
|
|
411
|
+
if (!dashboardManagedRunKindsSchema.safeParse(parsed.dashboard?.managedRunKinds).success) {
|
|
412
|
+
throw new CliError({
|
|
413
|
+
code: "CONFIG_INVALID",
|
|
414
|
+
message: `Invalid config at ${configPath}: dashboard.managedRunKinds must be a list of schedulable run kinds.`
|
|
415
|
+
});
|
|
416
|
+
}
|
|
417
|
+
if (!researchViewerDailyRunLimitSchema.safeParse(parsed.research?.viewerDailyRunLimit).success) {
|
|
418
|
+
throw new CliError({
|
|
419
|
+
code: "CONFIG_INVALID",
|
|
420
|
+
message: `Invalid config at ${configPath}: research.viewerDailyRunLimit must be a positive integer or left blank.`
|
|
421
|
+
});
|
|
422
|
+
}
|
|
399
423
|
if (parsed.geminiApiKey && !parsed.providers?.gemini) {
|
|
400
424
|
parsed.providers = {
|
|
401
425
|
...parsed.providers,
|
|
@@ -12544,7 +12568,7 @@ Two signals, never interchangeable:
|
|
|
12544
12568
|
- cited = the domain appears in the SOURCE links behind the answer.
|
|
12545
12569
|
A model can do either, both or neither. Never compute one from the other, and never report a number for one under the other's name.
|
|
12546
12570
|
|
|
12547
|
-
Sweeps and
|
|
12571
|
+
Sweeps, probes, and research runs spend provider quota and write rows. Get explicit approval before any run, apply, or other mutation.
|
|
12548
12572
|
|
|
12549
12573
|
Most reads are free. Five ads reads are NOT: canonry_ads_account, canonry_ads_geo_search, canonry_ads_live_delivery, canonry_ads_conversion_pixels and canonry_ads_conversion_event_settings call the provider live and spend against the advertiser account. They are marked read, so nothing in the tool list warns you. Get approval for those exactly as for a mutation.
|
|
12550
12574
|
|
|
@@ -13004,6 +13028,7 @@ function parseSkillsClient(value) {
|
|
|
13004
13028
|
}
|
|
13005
13029
|
|
|
13006
13030
|
export {
|
|
13031
|
+
dashboardManagedRunKindsSchema,
|
|
13007
13032
|
getBootstrapEnv,
|
|
13008
13033
|
isMachineFormat,
|
|
13009
13034
|
EXIT_USER_ERROR,
|
|
@@ -2,16 +2,18 @@ import {
|
|
|
2
2
|
ApiClient,
|
|
3
3
|
CANONRY_MCP_TOOLKIT_NAMES,
|
|
4
4
|
CanonryMcpToolNames,
|
|
5
|
+
CliError,
|
|
5
6
|
canonryMcpTools,
|
|
6
7
|
configExists,
|
|
7
8
|
createCanonryMcpServer,
|
|
9
|
+
dashboardManagedRunKindsSchema,
|
|
8
10
|
getBundledSkillSnapshots,
|
|
9
11
|
getConfigPath,
|
|
10
12
|
isMachineFormat,
|
|
11
13
|
loadConfig,
|
|
12
14
|
loadConfigRaw,
|
|
13
15
|
saveConfigPatch
|
|
14
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-5BUAG4CN.js";
|
|
15
17
|
import {
|
|
16
18
|
CC_CACHE_DIR,
|
|
17
19
|
DUCKDB_SPEC,
|
|
@@ -158,7 +160,7 @@ import {
|
|
|
158
160
|
siteCrawlSnapshots,
|
|
159
161
|
toAlertView,
|
|
160
162
|
usageCounters
|
|
161
|
-
} from "./chunk-
|
|
163
|
+
} from "./chunk-EMSDPSQM.js";
|
|
162
164
|
import {
|
|
163
165
|
AGENT_MEMORY_VALUE_MAX_BYTES,
|
|
164
166
|
AGENT_PROVIDER_IDS,
|
|
@@ -170,6 +172,7 @@ import {
|
|
|
170
172
|
BacklinkSources,
|
|
171
173
|
CITED_URL_CAPTURE_VERSION,
|
|
172
174
|
CcReleaseSyncStatuses,
|
|
175
|
+
DEFAULT_VIEWER_RESEARCH_DAILY_RUN_LIMIT,
|
|
173
176
|
DiscoveryCompetitorTypes,
|
|
174
177
|
GOOGLE_ADS_CAMPAIGN_METRICS_MAX_CAMPAIGNS,
|
|
175
178
|
GOOGLE_ADS_CAMPAIGN_METRICS_MAX_DAYS,
|
|
@@ -299,7 +302,7 @@ import {
|
|
|
299
302
|
validationError,
|
|
300
303
|
winnabilityClassLabel,
|
|
301
304
|
withRetry
|
|
302
|
-
} from "./chunk-
|
|
305
|
+
} from "./chunk-LNBX7RTN.js";
|
|
303
306
|
|
|
304
307
|
// src/telemetry.ts
|
|
305
308
|
import crypto from "crypto";
|
|
@@ -11921,7 +11924,7 @@ function readStoredGroundingSources(rawResponse) {
|
|
|
11921
11924
|
return result;
|
|
11922
11925
|
}
|
|
11923
11926
|
async function backfillInsightsCommand(project, opts) {
|
|
11924
|
-
const { IntelligenceService: IntelligenceService2 } = await import("./intelligence-service-
|
|
11927
|
+
const { IntelligenceService: IntelligenceService2 } = await import("./intelligence-service-UZGA24EF.js");
|
|
11925
11928
|
const config = loadConfig();
|
|
11926
11929
|
const db = createClient(config.database);
|
|
11927
11930
|
migrate(db);
|
|
@@ -16929,14 +16932,40 @@ function parseBooleanEnv(value) {
|
|
|
16929
16932
|
if (normalized === "0" || normalized === "false" || normalized === "no") return false;
|
|
16930
16933
|
return void 0;
|
|
16931
16934
|
}
|
|
16935
|
+
function parsePositiveIntegerEnv(value) {
|
|
16936
|
+
const normalized = value?.trim();
|
|
16937
|
+
if (!normalized || !/^\d+$/.test(normalized)) return void 0;
|
|
16938
|
+
const parsed = Number(normalized);
|
|
16939
|
+
return Number.isSafeInteger(parsed) && parsed > 0 ? parsed : void 0;
|
|
16940
|
+
}
|
|
16932
16941
|
function resolveDashboardRequirePassword(env, config) {
|
|
16933
16942
|
return parseBooleanEnv(env.CANONRY_DASHBOARD_REQUIRE_PASSWORD) ?? config.dashboard?.requirePassword ?? true;
|
|
16934
16943
|
}
|
|
16935
16944
|
function resolveDashboardShowResourceLinks(env, config) {
|
|
16936
16945
|
return parseBooleanEnv(env.CANONRY_DASHBOARD_SHOW_RESOURCE_LINKS) ?? config.dashboard?.showResourceLinks ?? true;
|
|
16937
16946
|
}
|
|
16938
|
-
function
|
|
16939
|
-
|
|
16947
|
+
function resolveDashboardManagedRunKinds(env, config) {
|
|
16948
|
+
const configured = dashboardManagedRunKindsSchema.safeParse(config.dashboard?.managedRunKinds);
|
|
16949
|
+
if (!configured.success) {
|
|
16950
|
+
throw new CliError({ code: "CONFIG_INVALID", message: "dashboard.managedRunKinds must be a list of schedulable run kinds." });
|
|
16951
|
+
}
|
|
16952
|
+
const envValue = env.CANONRY_DASHBOARD_MANAGED_RUN_KINDS?.trim();
|
|
16953
|
+
if (envValue) {
|
|
16954
|
+
const parsed = dashboardManagedRunKindsSchema.safeParse(envValue.split(",").map((kind) => kind.trim()));
|
|
16955
|
+
if (!parsed.success) {
|
|
16956
|
+
throw new CliError({ code: "CONFIG_INVALID", message: "CANONRY_DASHBOARD_MANAGED_RUN_KINDS must be a comma-separated list of schedulable run kinds." });
|
|
16957
|
+
}
|
|
16958
|
+
return [...new Set(parsed.data)];
|
|
16959
|
+
}
|
|
16960
|
+
const legacyEnv = parseBooleanEnv(env.CANONRY_DASHBOARD_MANAGED_SWEEPS);
|
|
16961
|
+
if (legacyEnv !== void 0) return legacyEnv ? [SchedulableRunKinds["answer-visibility"]] : [];
|
|
16962
|
+
return [...new Set(configured.data ?? (config.dashboard?.managedSweeps ? [SchedulableRunKinds["answer-visibility"]] : []))];
|
|
16963
|
+
}
|
|
16964
|
+
function resolveResearchAllowViewers(env, config) {
|
|
16965
|
+
return parseBooleanEnv(env.CANONRY_RESEARCH_ALLOW_VIEWERS) ?? config.research?.allowViewers ?? false;
|
|
16966
|
+
}
|
|
16967
|
+
function resolveResearchViewerDailyRunLimit(env, config) {
|
|
16968
|
+
return parsePositiveIntegerEnv(env.CANONRY_RESEARCH_VIEWER_DAILY_RUN_LIMIT) ?? config.research?.viewerDailyRunLimit ?? DEFAULT_VIEWER_RESEARCH_DAILY_RUN_LIMIT;
|
|
16940
16969
|
}
|
|
16941
16970
|
function resolveDashboardShowUpdateNotification(env, config) {
|
|
16942
16971
|
return parseBooleanEnv(env.CANONRY_DASHBOARD_SHOW_UPDATE_NOTIFICATION) ?? config.dashboard?.showUpdateNotification ?? true;
|
|
@@ -17247,6 +17276,7 @@ function createGoogleMarketingConfigCredentialStore(input) {
|
|
|
17247
17276
|
};
|
|
17248
17277
|
}
|
|
17249
17278
|
async function createServer(opts) {
|
|
17279
|
+
const dashboardManagedRunKinds = resolveDashboardManagedRunKinds(process.env, opts.config);
|
|
17250
17280
|
const logger = opts.logger === false ? false : process.stdout.isTTY ? {
|
|
17251
17281
|
transport: {
|
|
17252
17282
|
target: "pino-pretty",
|
|
@@ -18069,8 +18099,9 @@ async function createServer(opts) {
|
|
|
18069
18099
|
const dashboardRequirePassword = resolveDashboardRequirePassword(process.env, opts.config);
|
|
18070
18100
|
const dashboardShowResourceLinks = resolveDashboardShowResourceLinks(process.env, opts.config);
|
|
18071
18101
|
const dashboardShowUpdateNotification = resolveDashboardShowUpdateNotification(process.env, opts.config);
|
|
18072
|
-
const dashboardManagedSweeps = resolveDashboardManagedSweeps(process.env, opts.config);
|
|
18073
18102
|
const dashboardOnboardingMode = resolveDashboardOnboardingMode(process.env, opts.config);
|
|
18103
|
+
const researchAllowViewers = resolveResearchAllowViewers(process.env, opts.config);
|
|
18104
|
+
const researchViewerDailyRunLimit = resolveResearchViewerDailyRunLimit(process.env, opts.config);
|
|
18074
18105
|
app.log.info(
|
|
18075
18106
|
{ dashboardRequirePassword },
|
|
18076
18107
|
"Dashboard password gate resolved"
|
|
@@ -18393,6 +18424,8 @@ async function createServer(opts) {
|
|
|
18393
18424
|
// was previously reachable only from tests, so a source losing ground could
|
|
18394
18425
|
// not be rescued without shipping code. Unset keeps the built-in default.
|
|
18395
18426
|
vercelSyncDeadlineMs: resolveVercelSyncDeadlineMs(process.env),
|
|
18427
|
+
researchAllowViewers,
|
|
18428
|
+
researchViewerDailyRunLimit,
|
|
18396
18429
|
// Local-only Aero agent routes. Registered here so they inherit api-routes'
|
|
18397
18430
|
// auth plugin — bare `registerAgentRoutes(app, ...)` would skip auth.
|
|
18398
18431
|
credentials: credentialChecker,
|
|
@@ -18960,8 +18993,8 @@ async function createServer(opts) {
|
|
|
18960
18993
|
if (!dashboardShowUpdateNotification) {
|
|
18961
18994
|
dashboardConfig.showUpdateNotification = false;
|
|
18962
18995
|
}
|
|
18963
|
-
if (
|
|
18964
|
-
dashboardConfig.
|
|
18996
|
+
if (dashboardManagedRunKinds.length > 0) {
|
|
18997
|
+
dashboardConfig.managedRunKinds = dashboardManagedRunKinds;
|
|
18965
18998
|
}
|
|
18966
18999
|
if (!agentEnabled) {
|
|
18967
19000
|
dashboardConfig.showAgentBar = false;
|
|
@@ -18969,6 +19002,12 @@ async function createServer(opts) {
|
|
|
18969
19002
|
if (Object.keys(dashboardConfig).length > 0) {
|
|
18970
19003
|
clientConfig.dashboard = dashboardConfig;
|
|
18971
19004
|
}
|
|
19005
|
+
if (researchAllowViewers) {
|
|
19006
|
+
clientConfig.research = {
|
|
19007
|
+
allowViewers: true,
|
|
19008
|
+
viewerDailyRunLimit: researchViewerDailyRunLimit
|
|
19009
|
+
};
|
|
19010
|
+
}
|
|
18972
19011
|
if (embed.enabled) {
|
|
18973
19012
|
const embedClient = embedClientConfigForRequest(embed, projectTabsOverride, themeOverride, renderTokenOverride);
|
|
18974
19013
|
if (embedClient) clientConfig.embed = embedClient;
|