@canonry/canonry 7.76.2 → 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.
- package/README.md +1 -3
- package/assets/assets/{AgentSetupPage-Dy9_auot.js → AgentSetupPage-BZXWC3x6.js} +4 -4
- package/assets/assets/{AuditHistoryPanel-BVTD5aDT.js → AuditHistoryPanel-DcrUuwRu.js} +1 -1
- package/assets/assets/{BacklinksPage-B3UasiLF.js → BacklinksPage-BSpHJBiy.js} +1 -1
- package/assets/assets/{HistoryPage-BeKtZ449.js → HistoryPage-0a0CK9zF.js} +1 -1
- package/assets/assets/MeasurementPropertyPage-DbfTFN3F.js +4 -0
- package/assets/assets/ProjectPage-D0m-Xpp3.js +9 -0
- package/assets/assets/{RunsPage-bRhgxSV_.js → RunsPage-D0vbz1Ho.js} +1 -1
- package/assets/assets/{SettingsPage-fPEwb0Fh.js → SettingsPage-DjRm5cmn.js} +1 -1
- package/assets/assets/SiteHealthSection-BCdPVFEJ.js +2 -0
- package/assets/assets/{ToneBadge-DfEkyFHe.js → ToneBadge-DSJSzqI6.js} +1 -1
- package/assets/assets/{TrafficPage-CzdZa-dz.js → TrafficPage-Z8Z_z0k9.js} +2 -2
- package/assets/assets/TrafficSourceDetailPage-DJyDO527.js +1 -0
- package/assets/assets/{account-context-C0wMdIfs.js → account-context-zaSxLBst.js} +1 -1
- package/assets/assets/{card-CdfP76v-.js → card-COqALGzB.js} +1 -1
- package/assets/assets/{extract-error-message-D36I9Bna.js → extract-error-message-DKve0SNr.js} +1 -1
- package/assets/assets/{format-helpers-Ja8nzHvN.js → format-helpers-DKrHlaV7.js} +1 -1
- package/assets/assets/index-CKZK95pI.css +1 -0
- package/assets/assets/index-fzqtwr6m.js +60 -0
- package/assets/assets/{query-client-jOrIVlKd.js → query-client-COM9uzxL.js} +1 -1
- package/assets/assets/react-query-BVRWpXWq.js +1 -0
- package/assets/assets/{react-sigma_core.esm.min-D2wEGI_h.js → react-sigma_core.esm.min-e91U3Myi.js} +1 -1
- package/assets/assets/{service-jrrtReGW.js → service-BgFTYqJA.js} +1 -1
- package/assets/canonry-icon-32.png +0 -0
- package/assets/canonry-icon-favicon.svg +10 -0
- package/assets/canonry-icon-touch.png +0 -0
- package/assets/canonry-icon.svg +9 -0
- package/assets/index.html +8 -8
- package/dist/{ads-WMVE7R43.js → ads-M6IAQDG7.js} +2 -2
- package/dist/{agent-VQDHMK4Z.js → agent-X2T5X5K3.js} +5 -5
- package/dist/{agent-ask-BRMDRWBU.js → agent-ask-55LQH4TI.js} +2 -2
- package/dist/{agent-conversations-SIRYGIJM.js → agent-conversations-O6WC2NPV.js} +2 -2
- package/dist/{agent-memory-2DDQQNJZ.js → agent-memory-6DWFMB4I.js} +2 -2
- package/dist/{agent-providers-ZNIQ7XUC.js → agent-providers-Q4YDVQX3.js} +2 -2
- package/dist/{agent-transcript-U2VKTBMV.js → agent-transcript-SJKCP2AO.js} +2 -2
- package/dist/{analytics-OJY5QWTM.js → analytics-4JOQMWH7.js} +2 -2
- package/dist/{apply-6IVQMJSS.js → apply-EAKKKIZD.js} +2 -2
- package/dist/{backfill-REP7PTSI.js → backfill-PASKIVGP.js} +2 -2
- package/dist/{backlinks-AZRCWJVJ.js → backlinks-TICPC323.js} +2 -2
- package/dist/{bing-6K63LZIB.js → bing-MC7TSL4E.js} +2 -2
- package/dist/{bootstrap-NIFFJKIT.js → bootstrap-X2BW64W7.js} +5 -5
- package/dist/{cdp-X73HVPAS.js → cdp-TCJKITCR.js} +5 -5
- package/dist/{chunk-ZWD4W3KU.js → chunk-2BRVGCVU.js} +12 -11
- package/dist/{chunk-MXRCOQT2.js → chunk-2SCPPWRW.js} +1 -1
- package/dist/{chunk-IAOPQ2VO.js → chunk-6EZQHF67.js} +307 -307
- package/dist/{chunk-AQLTYL3Q.js → chunk-B7JHQ3FW.js} +2 -2
- package/dist/{chunk-5W37PWV4.js → chunk-CCNPBUQ5.js} +2 -2
- package/dist/{chunk-4MYZRVJ6.js → chunk-CQMNWC5K.js} +105 -69
- package/dist/{chunk-6NUXSEW6.js → chunk-FXIZBJZ4.js} +1 -1
- package/dist/{chunk-66BZEUOK.js → chunk-H4ANN32B.js} +1 -1
- package/dist/{chunk-ST6FNS6A.js → chunk-JZT3ZRD3.js} +1 -1
- package/dist/{chunk-KNERCHMI.js → chunk-P3BWUKJL.js} +2 -2
- package/dist/{chunk-7LLDLEWJ.js → chunk-TJYS2XCI.js} +2 -2
- package/dist/{chunk-UWPCUAZM.js → chunk-TRW4XLQK.js} +1 -1
- package/dist/{chunk-7KYGOR7N.js → chunk-UB65XBH2.js} +1 -1
- package/dist/{chunk-X2CE5IME.js → chunk-UGNNR7EO.js} +1 -1
- package/dist/{chunk-KXSNV6C3.js → chunk-X7UC755Q.js} +1 -1
- package/dist/{chunk-OT6SUK6X.js → chunk-YMOQSEO3.js} +1 -1
- package/dist/{citations-XJUGQ736.js → citations-IA3OCV53.js} +2 -2
- package/dist/{cli-commands-JFKE3JZB.js → cli-commands-O7BYY3W5.js} +4 -4
- package/dist/cli.js +7 -7
- package/dist/{competitor-5OEWFXMU.js → competitor-4FVAZAQZ.js} +2 -2
- package/dist/{content-TUWBGELB.js → content-OVBF6U7Z.js} +2 -2
- package/dist/{dashboard-3G4P32BY.js → dashboard-UGZSSIWK.js} +1 -1
- package/dist/{discover-WZUOPCBV.js → discover-R5BYAPOU.js} +2 -2
- package/dist/{discover-eval-SICOH7ML.js → discover-eval-3FA4BR2L.js} +2 -2
- package/dist/{doctor-UMSTE4EO.js → doctor-2Q5LVV2P.js} +2 -2
- package/dist/{evidence-NLIQFQAK.js → evidence-LMGRT5IO.js} +2 -2
- package/dist/{export-cmd-U2BFP7VV.js → export-cmd-LBLZ273Z.js} +2 -2
- package/dist/{ga-OCN3UUG2.js → ga-PBIWRU67.js} +2 -2
- package/dist/{gbp-B2YUDH7S.js → gbp-NYG7SW6P.js} +2 -2
- package/dist/{google-EOV6EXSF.js → google-57XEYVOU.js} +2 -2
- package/dist/{health-cmd-UVJAXG5V.js → health-cmd-SJVYQZQL.js} +2 -2
- package/dist/{history-4NOM3SFC.js → history-5XYZNWGP.js} +2 -2
- package/dist/index.d.ts +40 -24
- package/dist/index.js +8 -8
- package/dist/{init-HUMX46OS.js → init-KXR6PJEQ.js} +7 -7
- package/dist/{insights-W2A4O4CO.js → insights-L7OOH34I.js} +2 -2
- package/dist/{journeys-IPOEIDVQ.js → journeys-VXBGDFBO.js} +2 -2
- package/dist/{keys-QK5N2Y46.js → keys-YMB5HAAG.js} +2 -2
- package/dist/{keyword-JMDOXJ54.js → keyword-RZEMKH3K.js} +2 -2
- package/dist/{logs-YVSSVMC7.js → logs-ONZWSYXS.js} +2 -2
- package/dist/{mcp-YEGPIJ6N.js → mcp-KK6EFHAZ.js} +3 -3
- package/dist/mcp.js +4 -4
- package/dist/{measurement-plan-WS44DI53.js → measurement-plan-LE7INWW6.js} +3 -3
- package/dist/{notify-HQRSMWG2.js → notify-T6T5LYRR.js} +2 -2
- package/dist/{organic-evidence-OKXXS7FH.js → organic-evidence-P2GZ766W.js} +2 -2
- package/dist/{overview-6OZ5NFAO.js → overview-P2AILIWJ.js} +3 -3
- package/dist/{project-XCZJDR4E.js → project-7MHQSOJD.js} +2 -2
- package/dist/{query-MCSEFKKF.js → query-EUDMU6L7.js} +2 -2
- package/dist/{research-TM3HHQDB.js → research-4DASCVGY.js} +2 -2
- package/dist/{results-export-C4GFWJ7Y.js → results-export-GKXHX55L.js} +2 -2
- package/dist/{run-JJE45UIV.js → run-6LJGMJ5S.js} +3 -3
- package/dist/{schedule-BPFQPTRI.js → schedule-D74P2BO5.js} +2 -2
- package/dist/{search-YDU2L2R4.js → search-W7AOYWRM.js} +2 -2
- package/dist/{serve-CMWDXN5D.js → serve-UNVCQSRC.js} +13 -11
- package/dist/{session-T3CLSPRC.js → session-6NGNVCKP.js} +4 -4
- package/dist/{settings-3YQ7EBL4.js → settings-LGD64PFE.js} +2 -2
- package/dist/{snapshot-LMM4QTUF.js → snapshot-PDYGSZZH.js} +2 -2
- package/dist/{status-6M7TVQ5U.js → status-UZ4SE7ZP.js} +3 -3
- package/dist/{technical-aeo-UI774MQF.js → technical-aeo-BNH7NV44.js} +2 -2
- package/dist/{telemetry-XJGPXSUI.js → telemetry-UWDS7QNJ.js} +3 -3
- package/dist/{tools-4CCRSYOR.js → tools-EDPBQCI2.js} +3 -3
- package/dist/{traffic-5ETOEJNG.js → traffic-NI6ACQO4.js} +2 -2
- package/dist/{users-LOPUV244.js → users-XTZ65NLC.js} +2 -2
- package/dist/{visibility-stats-ECOEPNTG.js → visibility-stats-EPF6MHYQ.js} +2 -2
- package/dist/{wordpress-DCS3VB6D.js → wordpress-ZACJ3H5M.js} +2 -2
- package/package.json +1 -1
- package/assets/assets/MeasurementPropertyPage-Cm-jzeY8.js +0 -4
- package/assets/assets/ProjectPage-C3iapgWm.js +0 -9
- package/assets/assets/SiteHealthSection-Bk4zrPnb.js +0 -2
- package/assets/assets/TrafficSourceDetailPage-B-7STzgQ.js +0 -1
- package/assets/assets/index-BWMizh5y.js +0 -60
- package/assets/assets/index-Yn3nIj4B.css +0 -1
- package/assets/assets/react-query-BrM5m2wm.js +0 -1
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
isStoredPageReadTool,
|
|
6
6
|
isStoredReadTool,
|
|
7
7
|
truncateToolResult
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-JZT3ZRD3.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-2BRVGCVU.js";
|
|
26
26
|
import {
|
|
27
27
|
CanonryMcpToolNames,
|
|
28
28
|
canonryMcpTools
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
trackIntegrationConnection
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-TJYS2XCI.js";
|
|
4
4
|
import {
|
|
5
5
|
cliRuntimeContext
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-YMOQSEO3.js";
|
|
7
7
|
|
|
8
8
|
// src/cli-connection-telemetry.ts
|
|
9
9
|
function trackCliConnection(properties) {
|
|
@@ -27,14 +27,14 @@ import {
|
|
|
27
27
|
resolveConfiguredAgentProvider,
|
|
28
28
|
resolveSessionProviderAndModel,
|
|
29
29
|
setAeroSystemPrompt
|
|
30
|
-
} from "./chunk-
|
|
30
|
+
} from "./chunk-B7JHQ3FW.js";
|
|
31
31
|
import {
|
|
32
32
|
AeroToolProfiles,
|
|
33
33
|
AeroToolScopes,
|
|
34
34
|
buildAeroStateTools,
|
|
35
35
|
isAeroToolProfile,
|
|
36
36
|
truncateToolResult
|
|
37
|
-
} from "./chunk-
|
|
37
|
+
} from "./chunk-JZT3ZRD3.js";
|
|
38
38
|
import {
|
|
39
39
|
getGoogleAuthConfig,
|
|
40
40
|
getGoogleConnection,
|
|
@@ -76,7 +76,7 @@ import {
|
|
|
76
76
|
startOutcomeTimer,
|
|
77
77
|
trackFeatureCompleted,
|
|
78
78
|
trackInstallState
|
|
79
|
-
} from "./chunk-
|
|
79
|
+
} from "./chunk-TJYS2XCI.js";
|
|
80
80
|
import {
|
|
81
81
|
isLoopbackBindHost
|
|
82
82
|
} from "./chunk-TSENU4GG.js";
|
|
@@ -95,17 +95,17 @@ import {
|
|
|
95
95
|
recordDashboardEvent,
|
|
96
96
|
setTelemetryPreference,
|
|
97
97
|
trackEvent
|
|
98
|
-
} from "./chunk-
|
|
98
|
+
} from "./chunk-YMOQSEO3.js";
|
|
99
99
|
import {
|
|
100
100
|
createCanonryMcpServer
|
|
101
|
-
} from "./chunk-
|
|
101
|
+
} from "./chunk-2SCPPWRW.js";
|
|
102
102
|
import {
|
|
103
103
|
CANONRY_MCP_TIERS,
|
|
104
104
|
CANONRY_MCP_TOOLKIT_NAMES
|
|
105
105
|
} from "./chunk-NDTU7FGL.js";
|
|
106
106
|
import {
|
|
107
107
|
ApiClient
|
|
108
|
-
} from "./chunk-
|
|
108
|
+
} from "./chunk-X7UC755Q.js";
|
|
109
109
|
import {
|
|
110
110
|
AGENT_PROVIDERS,
|
|
111
111
|
adapterSupportsBatch,
|
|
@@ -136,7 +136,7 @@ import {
|
|
|
136
136
|
saveConfigPatch,
|
|
137
137
|
sentimentInstallReadiness,
|
|
138
138
|
updateSharedProviderExecutionGate
|
|
139
|
-
} from "./chunk-
|
|
139
|
+
} from "./chunk-2BRVGCVU.js";
|
|
140
140
|
import {
|
|
141
141
|
getBundledSkillSnapshots
|
|
142
142
|
} from "./chunk-7UVCZZQJ.js";
|
|
@@ -5810,7 +5810,7 @@ function nonBlank(value) {
|
|
|
5810
5810
|
return trimmed ? trimmed : void 0;
|
|
5811
5811
|
}
|
|
5812
5812
|
function resolveBuildCommit(env = process.env) {
|
|
5813
|
-
const embedded = true ? "
|
|
5813
|
+
const embedded = true ? "68e116717d6c9f8e51f1909b38f184f264855ffe" : void 0;
|
|
5814
5814
|
return nonBlank(embedded) ?? nonBlank(env.CANONRY_COMMIT);
|
|
5815
5815
|
}
|
|
5816
5816
|
function resolveInstanceIdentity(env = process.env) {
|
|
@@ -8493,7 +8493,8 @@ async function executeGscSync(db, runId, projectId, opts) {
|
|
|
8493
8493
|
tokenExpiresAt: new Date(Date.now() + tokens.expires_in * 1e3).toISOString(),
|
|
8494
8494
|
updatedAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
8495
8495
|
});
|
|
8496
|
-
|
|
8496
|
+
const persistConfigPatch = opts.saveConfigPatch ?? saveConfigPatch;
|
|
8497
|
+
persistConfigPatch(opts.config);
|
|
8497
8498
|
}
|
|
8498
8499
|
const lagOffset = GSC_DATA_LAG_DAYS;
|
|
8499
8500
|
const endDate = formatIsoDateInTimeZone((/* @__PURE__ */ new Date()).toISOString(), GSC_REPORTING_TIME_ZONE);
|
|
@@ -8918,7 +8919,8 @@ async function executeGbpSync(db, runId, projectId, opts) {
|
|
|
8918
8919
|
tokenExpiresAt: new Date(Date.now() + tokens.expires_in * 1e3).toISOString(),
|
|
8919
8920
|
updatedAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
8920
8921
|
});
|
|
8921
|
-
|
|
8922
|
+
const persistConfigPatch = opts.saveConfigPatch ?? saveConfigPatch;
|
|
8923
|
+
persistConfigPatch(opts.config);
|
|
8922
8924
|
}
|
|
8923
8925
|
let locationRows = db.select().from(gbpLocations).where(and7(eq9(gbpLocations.projectId, projectId), eq9(gbpLocations.selected, true))).all();
|
|
8924
8926
|
if (opts.locationNames?.length) {
|
|
@@ -10349,7 +10351,8 @@ async function executeInspectSitemap(db, runId, projectId, opts) {
|
|
|
10349
10351
|
tokenExpiresAt: new Date(Date.now() + tokens.expires_in * 1e3).toISOString(),
|
|
10350
10352
|
updatedAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
10351
10353
|
});
|
|
10352
|
-
|
|
10354
|
+
const persistConfigPatch = opts.saveConfigPatch ?? saveConfigPatch;
|
|
10355
|
+
persistConfigPatch(opts.config);
|
|
10353
10356
|
}
|
|
10354
10357
|
const sitemapUrl = opts.sitemapUrl || conn.sitemapUrl || `https://${project.canonicalDomain}/sitemap.xml`;
|
|
10355
10358
|
log8.info("sitemap.fetch", { runId, projectId, sitemapUrl });
|
|
@@ -19142,6 +19145,16 @@ function parseDashboardOnboardingMode(value) {
|
|
|
19142
19145
|
function resolveDashboardOnboardingMode(env, config) {
|
|
19143
19146
|
return parseDashboardOnboardingMode(env.CANONRY_ONBOARDING_MODE) ?? config.dashboard?.onboardingMode;
|
|
19144
19147
|
}
|
|
19148
|
+
function parseDashboardBrandMark(value) {
|
|
19149
|
+
const normalized = value?.trim().toLowerCase();
|
|
19150
|
+
return normalized === "mascot" || normalized === "icon" ? normalized : void 0;
|
|
19151
|
+
}
|
|
19152
|
+
function resolveDashboardBrandMark(env, config) {
|
|
19153
|
+
return parseDashboardBrandMark(env.CANONRY_DASHBOARD_BRAND_MARK) ?? parseDashboardBrandMark(config.dashboard?.brandMark) ?? "mascot";
|
|
19154
|
+
}
|
|
19155
|
+
function withIconMarkLinks(html) {
|
|
19156
|
+
return html.replace(/href="(\.?\/)favicon\.svg"/, 'href="$1canonry-icon-favicon.svg"').replace(/href="(\.?\/)favicon-32\.png"/, 'href="$1canonry-icon-32.png"').replace(/href="(\.?\/)apple-touch-icon\.png"/, 'href="$1canonry-icon-touch.png"');
|
|
19157
|
+
}
|
|
19145
19158
|
var API_ADAPTERS = [
|
|
19146
19159
|
geminiAdapter,
|
|
19147
19160
|
openaiAdapter,
|
|
@@ -19281,7 +19294,7 @@ function serializeSessionCookie(opts) {
|
|
|
19281
19294
|
}
|
|
19282
19295
|
return parts.join("; ");
|
|
19283
19296
|
}
|
|
19284
|
-
function applyLegacyCredentials(rows, config) {
|
|
19297
|
+
function applyLegacyCredentials(rows, config, persistConfigPatch = saveConfigPatch) {
|
|
19285
19298
|
let migratedGoogle = 0;
|
|
19286
19299
|
for (const row of rows.google) {
|
|
19287
19300
|
const existing = getGoogleConnection(
|
|
@@ -19305,7 +19318,7 @@ function applyLegacyCredentials(rows, config) {
|
|
|
19305
19318
|
migratedGoogle++;
|
|
19306
19319
|
}
|
|
19307
19320
|
if (migratedGoogle > 0) {
|
|
19308
|
-
|
|
19321
|
+
persistConfigPatch({ google: config.google });
|
|
19309
19322
|
log27.info("credentials.migrated", { type: "google", count: migratedGoogle });
|
|
19310
19323
|
}
|
|
19311
19324
|
let migratedGa4 = 0;
|
|
@@ -19323,7 +19336,7 @@ function applyLegacyCredentials(rows, config) {
|
|
|
19323
19336
|
migratedGa4++;
|
|
19324
19337
|
}
|
|
19325
19338
|
if (migratedGa4 > 0) {
|
|
19326
|
-
|
|
19339
|
+
persistConfigPatch({ ga4: config.ga4 });
|
|
19327
19340
|
log27.info("credentials.migrated", { type: "ga4", count: migratedGa4 });
|
|
19328
19341
|
}
|
|
19329
19342
|
}
|
|
@@ -19520,8 +19533,16 @@ function createGoogleMarketingConfigCredentialStore(input) {
|
|
|
19520
19533
|
};
|
|
19521
19534
|
}
|
|
19522
19535
|
async function createServer(opts) {
|
|
19523
|
-
const runtimeConfigPath = path5.resolve(getConfigPath());
|
|
19536
|
+
const runtimeConfigPath = path5.resolve(opts.configPath ?? getConfigPath());
|
|
19524
19537
|
const runtimeConfigIdentity = runtimePathIdentity(runtimeConfigPath);
|
|
19538
|
+
const persistedConfigPath = opts.configPath === void 0 ? void 0 : runtimeConfigPath;
|
|
19539
|
+
const persistConfigPatch = (patch, options = {}) => {
|
|
19540
|
+
if (persistedConfigPath !== void 0) saveConfigPatch(patch, { ...options, configPath: persistedConfigPath });
|
|
19541
|
+
};
|
|
19542
|
+
const ownsDefaultConfig = persistedConfigPath !== void 0 && runtimeConfigIdentity === runtimePathIdentity(getConfigPath());
|
|
19543
|
+
const coverageRefreshDeps = {
|
|
19544
|
+
executeInspectSitemap: (db, runId, projectId, inspectOpts) => executeInspectSitemap(db, runId, projectId, { ...inspectOpts, saveConfigPatch: persistConfigPatch })
|
|
19545
|
+
};
|
|
19525
19546
|
const runtimeDatabasePath = opts.config.database;
|
|
19526
19547
|
const runtimeDatabaseIdentity = runtimePathIdentity(runtimeDatabasePath);
|
|
19527
19548
|
const embed = resolveEmbedConfig(process.env, opts.config);
|
|
@@ -19586,14 +19607,16 @@ async function createServer(opts) {
|
|
|
19586
19607
|
};
|
|
19587
19608
|
}
|
|
19588
19609
|
opts.config.providers = providers;
|
|
19589
|
-
|
|
19590
|
-
|
|
19591
|
-
|
|
19592
|
-
|
|
19593
|
-
|
|
19594
|
-
|
|
19595
|
-
|
|
19596
|
-
|
|
19610
|
+
if (persistedConfigPath !== void 0) {
|
|
19611
|
+
try {
|
|
19612
|
+
const legacyRows = extractLegacyCredentials(opts.db);
|
|
19613
|
+
applyLegacyCredentials(legacyRows, opts.config, persistConfigPatch);
|
|
19614
|
+
dropLegacyCredentialColumns(opts.db);
|
|
19615
|
+
} catch (err) {
|
|
19616
|
+
log27.warn("credentials.migration.failed", {
|
|
19617
|
+
error: describeError(err)
|
|
19618
|
+
});
|
|
19619
|
+
}
|
|
19597
19620
|
}
|
|
19598
19621
|
log27.info("providers.configured", {
|
|
19599
19622
|
providers: registeredProviderNames({ providers, cdp: opts.config.cdp })
|
|
@@ -19610,8 +19633,9 @@ async function createServer(opts) {
|
|
|
19610
19633
|
const jobRunner = new JobRunner(opts.db, registry, {
|
|
19611
19634
|
// The one-time first-sweep thank-you. Lives on the serve console because
|
|
19612
19635
|
// runs execute here, including the foreground serve that init hands off
|
|
19613
|
-
// to. TTY-gated inside, so supervised deployments never see it.
|
|
19614
|
-
|
|
19636
|
+
// to. TTY-gated inside, so supervised deployments never see it. It marks
|
|
19637
|
+
// the default config.yaml, so only the server running from it asks.
|
|
19638
|
+
...ownsDefaultConfig ? { onFirstActivation: () => maybeShowActivationNotice() } : {}
|
|
19615
19639
|
});
|
|
19616
19640
|
jobRunner.recoverStaleRuns();
|
|
19617
19641
|
const seoRuntime = new SeoRuntime(opts.db, () => loadConfig(runtimeConfigPath).seo, () => {
|
|
@@ -19684,17 +19708,18 @@ async function createServer(opts) {
|
|
|
19684
19708
|
);
|
|
19685
19709
|
const removedGoogleMarketingCredentials = removeLegacyGoogleAdsConnections(opts.config) + removeLegacyGtmConnections(opts.config) + removeOrphanedGoogleAdsConnections(opts.config, liveProjectIds) + removeOrphanedGtmConnections(opts.config, liveProjectIds);
|
|
19686
19710
|
if (removedGoogleMarketingCredentials > 0) {
|
|
19687
|
-
|
|
19711
|
+
persistConfigPatch({
|
|
19688
19712
|
googleAds: opts.config.googleAds,
|
|
19689
19713
|
gtm: opts.config.gtm
|
|
19690
19714
|
});
|
|
19691
19715
|
}
|
|
19692
19716
|
const googleMarketingRuntime = createGoogleMarketingRuntime({
|
|
19693
19717
|
config: opts.config,
|
|
19694
|
-
saveConfigPatch
|
|
19718
|
+
saveConfigPatch: persistConfigPatch
|
|
19695
19719
|
});
|
|
19696
19720
|
const googleMarketingCredentialStore = createGoogleMarketingConfigCredentialStore({
|
|
19697
|
-
config: opts.config
|
|
19721
|
+
config: opts.config,
|
|
19722
|
+
saveConfigPatch: persistConfigPatch
|
|
19698
19723
|
});
|
|
19699
19724
|
const prepareGoogleMarketingCredentialDelete = (projectId) => {
|
|
19700
19725
|
const previousGoogleAdsConnections = opts.config.googleAds?.connections;
|
|
@@ -19707,7 +19732,7 @@ async function createServer(opts) {
|
|
|
19707
19732
|
const removedGtm = removeGtmConnection(opts.config, projectId);
|
|
19708
19733
|
if (!removedGoogleAds && !removedGtm) return void 0;
|
|
19709
19734
|
try {
|
|
19710
|
-
|
|
19735
|
+
persistConfigPatch({
|
|
19711
19736
|
googleAds: opts.config.googleAds,
|
|
19712
19737
|
gtm: opts.config.gtm
|
|
19713
19738
|
});
|
|
@@ -19718,7 +19743,7 @@ async function createServer(opts) {
|
|
|
19718
19743
|
return () => {
|
|
19719
19744
|
restore();
|
|
19720
19745
|
try {
|
|
19721
|
-
|
|
19746
|
+
persistConfigPatch({
|
|
19722
19747
|
googleAds: opts.config.googleAds,
|
|
19723
19748
|
gtm: opts.config.gtm
|
|
19724
19749
|
});
|
|
@@ -19790,7 +19815,8 @@ async function createServer(opts) {
|
|
|
19790
19815
|
}
|
|
19791
19816
|
executeGbpSync(opts.db, runId, projectId, {
|
|
19792
19817
|
...syncOpts,
|
|
19793
|
-
config: opts.config
|
|
19818
|
+
config: opts.config,
|
|
19819
|
+
saveConfigPatch: persistConfigPatch
|
|
19794
19820
|
}).then(() => runCoordinator.onRunCompleted(runId, projectId)).catch((err) => {
|
|
19795
19821
|
app.log.error({ runId, err }, "GBP sync failed");
|
|
19796
19822
|
});
|
|
@@ -19818,12 +19844,12 @@ async function createServer(opts) {
|
|
|
19818
19844
|
},
|
|
19819
19845
|
upsertConnection: (connection) => {
|
|
19820
19846
|
const updated = upsertOpenAiAdsConnection(opts.config, connection);
|
|
19821
|
-
|
|
19847
|
+
persistConfigPatch(opts.config);
|
|
19822
19848
|
return updated;
|
|
19823
19849
|
},
|
|
19824
19850
|
removeConnection: (projectName) => {
|
|
19825
19851
|
const removed = removeOpenAiAdsConnection(opts.config, projectName);
|
|
19826
|
-
if (removed)
|
|
19852
|
+
if (removed) persistConfigPatch(opts.config);
|
|
19827
19853
|
return removed;
|
|
19828
19854
|
}
|
|
19829
19855
|
};
|
|
@@ -20208,7 +20234,7 @@ async function createServer(opts) {
|
|
|
20208
20234
|
} else {
|
|
20209
20235
|
opts.config.bing.connections.push(normalized);
|
|
20210
20236
|
}
|
|
20211
|
-
|
|
20237
|
+
persistConfigPatch(opts.config);
|
|
20212
20238
|
return normalized;
|
|
20213
20239
|
},
|
|
20214
20240
|
updateConnection: (domain, patch) => {
|
|
@@ -20217,7 +20243,7 @@ async function createServer(opts) {
|
|
|
20217
20243
|
);
|
|
20218
20244
|
if (!conn) return void 0;
|
|
20219
20245
|
Object.assign(conn, patch);
|
|
20220
|
-
|
|
20246
|
+
persistConfigPatch(opts.config);
|
|
20221
20247
|
return conn;
|
|
20222
20248
|
},
|
|
20223
20249
|
deleteConnection: (domain) => {
|
|
@@ -20227,7 +20253,7 @@ async function createServer(opts) {
|
|
|
20227
20253
|
);
|
|
20228
20254
|
if (idx < 0) return false;
|
|
20229
20255
|
opts.config.bing.connections.splice(idx, 1);
|
|
20230
|
-
|
|
20256
|
+
persistConfigPatch(opts.config);
|
|
20231
20257
|
return true;
|
|
20232
20258
|
}
|
|
20233
20259
|
};
|
|
@@ -20237,12 +20263,12 @@ async function createServer(opts) {
|
|
|
20237
20263
|
},
|
|
20238
20264
|
upsertConnection: (connection) => {
|
|
20239
20265
|
const updated = upsertGa4Connection(opts.config, connection);
|
|
20240
|
-
|
|
20266
|
+
persistConfigPatch(opts.config);
|
|
20241
20267
|
return updated;
|
|
20242
20268
|
},
|
|
20243
20269
|
deleteConnection: (projectName) => {
|
|
20244
20270
|
const removed = removeGa4Connection(opts.config, projectName);
|
|
20245
|
-
if (removed)
|
|
20271
|
+
if (removed) persistConfigPatch(opts.config);
|
|
20246
20272
|
return removed;
|
|
20247
20273
|
}
|
|
20248
20274
|
};
|
|
@@ -20252,12 +20278,12 @@ async function createServer(opts) {
|
|
|
20252
20278
|
},
|
|
20253
20279
|
upsertConnection: (record) => {
|
|
20254
20280
|
const updated = upsertCloudRunConnection(opts.config, record);
|
|
20255
|
-
|
|
20281
|
+
persistConfigPatch(opts.config);
|
|
20256
20282
|
return updated;
|
|
20257
20283
|
},
|
|
20258
20284
|
deleteConnection: (projectName) => {
|
|
20259
20285
|
const removed = removeCloudRunConnection(opts.config, projectName);
|
|
20260
|
-
if (removed)
|
|
20286
|
+
if (removed) persistConfigPatch(opts.config);
|
|
20261
20287
|
return removed;
|
|
20262
20288
|
}
|
|
20263
20289
|
};
|
|
@@ -20267,7 +20293,7 @@ async function createServer(opts) {
|
|
|
20267
20293
|
},
|
|
20268
20294
|
upsertConnection: (record) => {
|
|
20269
20295
|
const updated = upsertWordpressTrafficConnection(opts.config, record);
|
|
20270
|
-
|
|
20296
|
+
persistConfigPatch(opts.config);
|
|
20271
20297
|
return updated;
|
|
20272
20298
|
},
|
|
20273
20299
|
deleteConnection: (projectName) => {
|
|
@@ -20275,7 +20301,7 @@ async function createServer(opts) {
|
|
|
20275
20301
|
opts.config,
|
|
20276
20302
|
projectName
|
|
20277
20303
|
);
|
|
20278
|
-
if (removed)
|
|
20304
|
+
if (removed) persistConfigPatch(opts.config);
|
|
20279
20305
|
return removed;
|
|
20280
20306
|
}
|
|
20281
20307
|
};
|
|
@@ -20285,12 +20311,12 @@ async function createServer(opts) {
|
|
|
20285
20311
|
},
|
|
20286
20312
|
upsertConnection: (record) => {
|
|
20287
20313
|
const updated = upsertVercelTrafficConnection(opts.config, record);
|
|
20288
|
-
|
|
20314
|
+
persistConfigPatch(opts.config);
|
|
20289
20315
|
return updated;
|
|
20290
20316
|
},
|
|
20291
20317
|
deleteConnection: (projectName) => {
|
|
20292
20318
|
const removed = removeVercelTrafficConnection(opts.config, projectName);
|
|
20293
|
-
if (removed)
|
|
20319
|
+
if (removed) persistConfigPatch(opts.config);
|
|
20294
20320
|
return removed;
|
|
20295
20321
|
}
|
|
20296
20322
|
};
|
|
@@ -20303,12 +20329,12 @@ async function createServer(opts) {
|
|
|
20303
20329
|
},
|
|
20304
20330
|
upsertConnection: (record) => {
|
|
20305
20331
|
const updated = upsertCloudflareTrafficConnection(opts.config, record);
|
|
20306
|
-
|
|
20332
|
+
persistConfigPatch(opts.config);
|
|
20307
20333
|
return updated;
|
|
20308
20334
|
},
|
|
20309
20335
|
deleteConnection: (projectName) => {
|
|
20310
20336
|
const removed = removeCloudflareTrafficConnection(opts.config, projectName);
|
|
20311
|
-
if (removed)
|
|
20337
|
+
if (removed) persistConfigPatch(opts.config);
|
|
20312
20338
|
return removed;
|
|
20313
20339
|
},
|
|
20314
20340
|
deleteConnectionBySourceId: (sourceId) => {
|
|
@@ -20316,7 +20342,7 @@ async function createServer(opts) {
|
|
|
20316
20342
|
opts.config,
|
|
20317
20343
|
sourceId
|
|
20318
20344
|
);
|
|
20319
|
-
if (removed)
|
|
20345
|
+
if (removed) persistConfigPatch(opts.config);
|
|
20320
20346
|
return removed;
|
|
20321
20347
|
}
|
|
20322
20348
|
};
|
|
@@ -20326,7 +20352,7 @@ async function createServer(opts) {
|
|
|
20326
20352
|
getConnection: (domain, connectionType) => getGoogleConnection(opts.config, domain, connectionType),
|
|
20327
20353
|
upsertConnection: (connection) => {
|
|
20328
20354
|
const updated = upsertGoogleConnection(opts.config, connection);
|
|
20329
|
-
|
|
20355
|
+
persistConfigPatch(opts.config);
|
|
20330
20356
|
return updated;
|
|
20331
20357
|
},
|
|
20332
20358
|
updateConnection: (domain, connectionType, patch) => {
|
|
@@ -20336,7 +20362,7 @@ async function createServer(opts) {
|
|
|
20336
20362
|
connectionType,
|
|
20337
20363
|
patch
|
|
20338
20364
|
);
|
|
20339
|
-
if (updated)
|
|
20365
|
+
if (updated) persistConfigPatch(opts.config);
|
|
20340
20366
|
return updated;
|
|
20341
20367
|
},
|
|
20342
20368
|
deleteConnection: (domain, connectionType) => {
|
|
@@ -20345,7 +20371,7 @@ async function createServer(opts) {
|
|
|
20345
20371
|
domain,
|
|
20346
20372
|
connectionType
|
|
20347
20373
|
);
|
|
20348
|
-
if (removed)
|
|
20374
|
+
if (removed) persistConfigPatch(opts.config);
|
|
20349
20375
|
return removed;
|
|
20350
20376
|
}
|
|
20351
20377
|
};
|
|
@@ -20355,17 +20381,17 @@ async function createServer(opts) {
|
|
|
20355
20381
|
},
|
|
20356
20382
|
upsertConnection: (connection) => {
|
|
20357
20383
|
const updated = upsertWordpressConnection(opts.config, connection);
|
|
20358
|
-
|
|
20384
|
+
persistConfigPatch(opts.config);
|
|
20359
20385
|
return updated;
|
|
20360
20386
|
},
|
|
20361
20387
|
updateConnection: (projectName, patch) => {
|
|
20362
20388
|
const updated = patchWordpressConnection(opts.config, projectName, patch);
|
|
20363
|
-
if (updated)
|
|
20389
|
+
if (updated) persistConfigPatch(opts.config);
|
|
20364
20390
|
return updated;
|
|
20365
20391
|
},
|
|
20366
20392
|
deleteConnection: (projectName) => {
|
|
20367
20393
|
const removed = removeWordpressConnection(opts.config, projectName);
|
|
20368
|
-
if (removed)
|
|
20394
|
+
if (removed) persistConfigPatch(opts.config);
|
|
20369
20395
|
return removed;
|
|
20370
20396
|
}
|
|
20371
20397
|
};
|
|
@@ -20388,6 +20414,7 @@ async function createServer(opts) {
|
|
|
20388
20414
|
const dashboardShowLocalAgentSetup = resolveDashboardShowLocalAgentSetup(process.env, opts.config);
|
|
20389
20415
|
const dashboardShowUpdateNotification = resolveDashboardShowUpdateNotification(process.env, opts.config);
|
|
20390
20416
|
const dashboardOnboardingMode = resolveDashboardOnboardingMode(process.env, opts.config);
|
|
20417
|
+
const dashboardBrandMark = resolveDashboardBrandMark(process.env, opts.config);
|
|
20391
20418
|
const researchAllowViewers = resolveResearchAllowViewers(process.env, opts.config);
|
|
20392
20419
|
const researchViewerDailyRunLimit = resolveResearchViewerDailyRunLimit(process.env, opts.config);
|
|
20393
20420
|
app.log.info(
|
|
@@ -20600,7 +20627,7 @@ async function createServer(opts) {
|
|
|
20600
20627
|
diff: { authorizedBy: presentedRootKey ? "root-api-key" : "local-request" }
|
|
20601
20628
|
}));
|
|
20602
20629
|
const created = createSession(defaultKey, true, tx);
|
|
20603
|
-
|
|
20630
|
+
persistConfigPatch(opts.config, { setDashboardPasswordHash: passwordHash });
|
|
20604
20631
|
return created;
|
|
20605
20632
|
});
|
|
20606
20633
|
} catch (err) {
|
|
@@ -20631,18 +20658,20 @@ async function createServer(opts) {
|
|
|
20631
20658
|
password,
|
|
20632
20659
|
opts.config.dashboardPasswordHash
|
|
20633
20660
|
);
|
|
20634
|
-
const onDisk = verification.ok && verification.needsRehash ? loadConfigRaw() : null;
|
|
20661
|
+
const onDisk = verification.ok && verification.needsRehash && persistedConfigPath !== void 0 ? loadConfigRaw(persistedConfigPath) : null;
|
|
20635
20662
|
if (!verification.ok || onDisk && onDisk.dashboardPasswordHash !== opts.config.dashboardPasswordHash) {
|
|
20636
20663
|
return reply.status(401).send({
|
|
20637
20664
|
error: { code: "AUTH_INVALID", message: "Incorrect password" }
|
|
20638
20665
|
});
|
|
20639
20666
|
}
|
|
20640
20667
|
if (verification.needsRehash) {
|
|
20641
|
-
if (fs5.existsSync(
|
|
20668
|
+
if (persistedConfigPath !== void 0 && fs5.existsSync(persistedConfigPath) && (!onDisk || typeof onDisk !== "object" || Array.isArray(onDisk) || !onDisk.apiUrl || !onDisk.database || !onDisk.apiKey)) {
|
|
20642
20669
|
throw new Error("Cannot migrate dashboard password: config.yaml is unreadable or invalid");
|
|
20643
20670
|
}
|
|
20644
20671
|
const migratedHash = hashDashboardPassword(password);
|
|
20645
|
-
|
|
20672
|
+
if (persistedConfigPath !== void 0) {
|
|
20673
|
+
saveConfig({ ...onDisk ?? opts.config, dashboardPasswordHash: migratedHash }, persistedConfigPath);
|
|
20674
|
+
}
|
|
20646
20675
|
opts.config.dashboardPasswordHash = migratedHash;
|
|
20647
20676
|
}
|
|
20648
20677
|
if (!createPasswordSession(reply)) {
|
|
@@ -21057,9 +21086,10 @@ async function createServer(opts) {
|
|
|
21057
21086
|
}
|
|
21058
21087
|
executeGscSync(opts.db, runId, projectId, {
|
|
21059
21088
|
...syncOpts,
|
|
21060
|
-
config: opts.config
|
|
21089
|
+
config: opts.config,
|
|
21090
|
+
saveConfigPatch: persistConfigPatch
|
|
21061
21091
|
}).then(
|
|
21062
|
-
() => maybeRefreshGscCoverage(opts.db, opts.config, projectId,
|
|
21092
|
+
() => maybeRefreshGscCoverage(opts.db, opts.config, projectId, coverageRefreshDeps, Date.now(), {
|
|
21063
21093
|
userInitiated: runWasUserInitiated(opts.db, runId)
|
|
21064
21094
|
})
|
|
21065
21095
|
).catch((err) => {
|
|
@@ -21077,7 +21107,8 @@ async function createServer(opts) {
|
|
|
21077
21107
|
}
|
|
21078
21108
|
executeInspectSitemap(opts.db, runId, projectId, {
|
|
21079
21109
|
...inspectOpts,
|
|
21080
|
-
config: opts.config
|
|
21110
|
+
config: opts.config,
|
|
21111
|
+
saveConfigPatch: persistConfigPatch
|
|
21081
21112
|
}).catch((err) => {
|
|
21082
21113
|
app.log.error({ runId, err }, "Inspect sitemap failed");
|
|
21083
21114
|
});
|
|
@@ -21248,7 +21279,7 @@ async function createServer(opts) {
|
|
|
21248
21279
|
opts.db,
|
|
21249
21280
|
opts.config,
|
|
21250
21281
|
projectId,
|
|
21251
|
-
|
|
21282
|
+
coverageRefreshDeps,
|
|
21252
21283
|
Date.now(),
|
|
21253
21284
|
{ userInitiated: runWasUserInitiated(opts.db, runId) }
|
|
21254
21285
|
);
|
|
@@ -21350,7 +21381,7 @@ async function createServer(opts) {
|
|
|
21350
21381
|
...existing?.pricing ? { pricing: existing.pricing } : {}
|
|
21351
21382
|
};
|
|
21352
21383
|
try {
|
|
21353
|
-
|
|
21384
|
+
persistConfigPatch(fs5.existsSync(runtimeConfigPath) ? { providers: { [name]: opts.config.providers[name] } } : opts.config);
|
|
21354
21385
|
} catch (err) {
|
|
21355
21386
|
app.log.error({ err }, "Failed to save config");
|
|
21356
21387
|
return null;
|
|
@@ -21370,7 +21401,7 @@ async function createServer(opts) {
|
|
|
21370
21401
|
onGoogleSettingsUpdate: (clientId, clientSecret) => {
|
|
21371
21402
|
try {
|
|
21372
21403
|
setGoogleAuthConfig(opts.config, { clientId, clientSecret });
|
|
21373
|
-
|
|
21404
|
+
persistConfigPatch(opts.config);
|
|
21374
21405
|
googleSettingsSummary.configured = true;
|
|
21375
21406
|
return { ...googleSettingsSummary };
|
|
21376
21407
|
} catch (err) {
|
|
@@ -21382,7 +21413,7 @@ async function createServer(opts) {
|
|
|
21382
21413
|
try {
|
|
21383
21414
|
if (!opts.config.bing) opts.config.bing = {};
|
|
21384
21415
|
opts.config.bing.apiKey = apiKey;
|
|
21385
|
-
|
|
21416
|
+
persistConfigPatch(opts.config);
|
|
21386
21417
|
bingSettingsSummary.configured = true;
|
|
21387
21418
|
return { ...bingSettingsSummary };
|
|
21388
21419
|
} catch (err) {
|
|
@@ -21409,7 +21440,7 @@ async function createServer(opts) {
|
|
|
21409
21440
|
const removedGoogleAds = removeGoogleAdsConnection(opts.config, projectId);
|
|
21410
21441
|
const removedGtm = removeGtmConnection(opts.config, projectId);
|
|
21411
21442
|
if (removedGoogleAds || removedGtm) {
|
|
21412
|
-
|
|
21443
|
+
persistConfigPatch({
|
|
21413
21444
|
googleAds: opts.config.googleAds,
|
|
21414
21445
|
gtm: opts.config.gtm
|
|
21415
21446
|
});
|
|
@@ -21427,10 +21458,12 @@ async function createServer(opts) {
|
|
|
21427
21458
|
operatorApiKeyIds,
|
|
21428
21459
|
listOperationalLogs: (query) => operationalLogs.list(query),
|
|
21429
21460
|
getTelemetryStatus,
|
|
21430
|
-
|
|
21461
|
+
// The preference lives in the default config.yaml; a server running from
|
|
21462
|
+
// any other config leaves it alone, and the route answers 501.
|
|
21463
|
+
setTelemetryEnabled: ownsDefaultConfig ? (enabled, attribution) => {
|
|
21431
21464
|
void setTelemetryPreference(enabled, "api", outcomeAttribution(attribution));
|
|
21432
21465
|
opts.config.telemetry = enabled;
|
|
21433
|
-
},
|
|
21466
|
+
} : void 0,
|
|
21434
21467
|
recordOnboardingEvent: (event) => recordDashboardEvent(event),
|
|
21435
21468
|
// Answers false while telemetry is off or the per-process cap is spent, so
|
|
21436
21469
|
// the dashboard stops sending for the session.
|
|
@@ -21441,7 +21474,7 @@ async function createServer(opts) {
|
|
|
21441
21474
|
opts.config.cdp.host = host;
|
|
21442
21475
|
opts.config.cdp.port = port2;
|
|
21443
21476
|
try {
|
|
21444
|
-
|
|
21477
|
+
persistConfigPatch(opts.config);
|
|
21445
21478
|
} catch (err) {
|
|
21446
21479
|
app.log.error({ err }, "Failed to save CDP config");
|
|
21447
21480
|
throw err;
|
|
@@ -21529,6 +21562,9 @@ async function createServer(opts) {
|
|
|
21529
21562
|
if (!dashboardShowUpdateNotification) {
|
|
21530
21563
|
dashboardConfig.showUpdateNotification = false;
|
|
21531
21564
|
}
|
|
21565
|
+
if (dashboardBrandMark === "icon") {
|
|
21566
|
+
dashboardConfig.brandMark = "icon";
|
|
21567
|
+
}
|
|
21532
21568
|
if (dashboardManagedRunKinds.length > 0) {
|
|
21533
21569
|
dashboardConfig.managedRunKinds = dashboardManagedRunKinds;
|
|
21534
21570
|
}
|
|
@@ -21561,7 +21597,7 @@ async function createServer(opts) {
|
|
|
21561
21597
|
}
|
|
21562
21598
|
const configScript = `<script>window.__CANONRY_CONFIG__=${serializeForInlineScript(clientConfig)}</script>`;
|
|
21563
21599
|
const baseTag = `<base href="${basePath ?? "/"}">`;
|
|
21564
|
-
return html.replace("<head>", `<head>${baseTag}`).replace("</head>", `${configScript}</head>`);
|
|
21600
|
+
return (dashboardBrandMark === "icon" ? withIconMarkLinks(html) : html).replace("<head>", `<head>${baseTag}`).replace("</head>", `${configScript}</head>`);
|
|
21565
21601
|
};
|
|
21566
21602
|
const sendSpaDocument = (reply, html) => {
|
|
21567
21603
|
reply.header("Cache-Control", "no-cache, must-revalidate");
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
import {
|
|
5
5
|
configExists,
|
|
6
6
|
loadConfigRaw
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-2BRVGCVU.js";
|
|
8
8
|
|
|
9
9
|
// src/setup-state.ts
|
|
10
10
|
import fs from "fs";
|
|
@@ -47,7 +47,7 @@ function queueServeHandoff() {
|
|
|
47
47
|
async function runPendingServeHandoff(format) {
|
|
48
48
|
if (!pendingServeHandoff) return;
|
|
49
49
|
pendingServeHandoff = false;
|
|
50
|
-
const { serveCommand } = await import("./serve-
|
|
50
|
+
const { serveCommand } = await import("./serve-UNVCQSRC.js");
|
|
51
51
|
await serveCommand(format);
|
|
52
52
|
}
|
|
53
53
|
|
|
@@ -2,10 +2,10 @@ import {
|
|
|
2
2
|
bucketCliCommandDuration,
|
|
3
3
|
isTelemetryEnabled,
|
|
4
4
|
trackEvent
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-YMOQSEO3.js";
|
|
6
6
|
import {
|
|
7
7
|
getConfigDir
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-2BRVGCVU.js";
|
|
9
9
|
import {
|
|
10
10
|
currentOutcomeAttribution
|
|
11
11
|
} from "./chunk-JPOIDGGF.js";
|